added a basic interface for interacting with the emulator

This commit is contained in:
Preston Skupinski 2011-07-10 20:43:03 -04:00
parent dbe014ada1
commit 5ada2b1daa
3 changed files with 119 additions and 12 deletions

12
README
View File

@ -1,15 +1,3 @@
This project's goal is to fully emulate the 65816 microprocessor in JavaScript. It would be awesome if at some point it could emulate an entire system such as the SNES, but that is something to consider later on.
You call the execute function of the cpu object with a raw hex string representing the program you wish to emulate and it will execute those instructions as close to the 65816 as possible.
Short examples to try out:
var cpu = new CPU_65816();
cpu.execute("18fbc230a9ff0185ff64ffa5ff");
cpu.r.a should be 0 after executing this.
cpu.execute("18fbc230a9ff01a0010099fea5ff");
cpu.r.a should be 511 after executing this.

View File

@ -1,6 +1,107 @@
<html>
<script src="cpu.js">
</script>
<script src="lib/jquery-1.6.2.min.js">
</script>
<script>
var cpu;
$(document).ready(function() {
cpu = new CPU_65816();
updateFields();
$("#execute").click(function() {
cpu.execute($("#hex").val());
updateFields();
});
$("#reset").click(function() {
cpu = new CPU_65816();
$("#hex").val("");
updateFields();
});
});
function updateFields() {
$("#registerA").text(cpu.r.a.toString(16));
$("#registerB").text(cpu.r.b.toString(16));
$("#registerX").text(cpu.r.x.toString(16));
$("#registerY").text(cpu.r.y.toString(16));
$("#registerD").text(cpu.r.d.toString(16));
$("#registerS").text(cpu.r.s.toString(16));
$("#registerPC").text(cpu.r.pc.toString(16));
$("#registerDBR").text(cpu.r.dbr.toString(16));
$("#registerK").text(cpu.r.k.toString(16));
$("#registerPFlagE").text(cpu.p.e);
$("#registerPFlagC").text(cpu.p.c);
$("#registerPFlagZ").text(cpu.p.z);
$("#registerPFlagI").text(cpu.p.i);
$("#registerPFlagD").text(cpu.p.d);
$("#registerPFlagX").text(cpu.p.x);
$("#registerPFlagM").text(cpu.p.m);
$("#registerPFlagV").text(cpu.p.v);
$("#registerPFlagN").text(cpu.p.n);
}
</script>
<style>
.row {
width:100%;
float:left;
}
.label {
float:left;
width:40px;
}
.value {
float:left;
}
.left {
float:left;
width:50%;
}
.right {
float:left;
width:50%;
}
#hex {
height:140px;
width:400px;
}
</style>
<body>
<div class="left">
<div class="left">
<h3>Registers</h3>
<div class="row"><div class="label">a</div><div id="registerA" class="value"></div></div>
<div class="row"><div class="label">b</div><div id="registerB" class="value"></div></div>
<div class="row"><div class="label">x</div><div id="registerX" class="value"></div></div>
<div class="row"><div class="label">y</div><div id="registerY" class="value"></div></div>
<div class="row"><div class="label">d</div><div id="registerD" class="value"></div></div>
<div class="row"><div class="label">s</div><div id="registerS" class="value"></div></div>
<div class="row"><div class="label">pc</div><div id="registerPC" class="value"></div></div>
<div class="row"><div class="label">dbr</div><div id="registerDBR" class="value"></div></div>
<div class="row"><div class="label">k</div><div id="registerK" class="value"></div></div>
</div>
<div class="right">
<h3>P Register Flags</h3>
<div class="row"><div class="label">e</div><div id="registerPFlagE" class="value"></div></div>
<div class="row"><div class="label">c</div><div id="registerPFlagC" class="value"></div></div>
<div class="row"><div class="label">z</div><div id="registerPFlagZ" class="value"></div></div>
<div class="row"><div class="label">i</div><div id="registerPFlagI" class="value"></div></div>
<div class="row"><div class="label">d</div><div id="registerPFlagD" class="value"></div></div>
<div class="row"><div class="label">x</div><div id="registerPFlagX" class="value"></div></div>
<div class="row"><div class="label">m</div><div id="registerPFlagM" class="value"></div></div>
<div class="row"><div class="label">v</div><div id="registerPFlagV" class="value"></div></div>
<div class="row"><div class="label">n</div><div id="registerPFlagN" class="value"></div></div>
</div>
</div>
<div class="right">
<h3>Enter your program in hex here:</h3><textarea id="hex"></textarea>
<br/>
<button id="execute">Execute</button>
<button id="reset">Reset</button>
<!--
<button id="stop">Stop</button>
<button id="pause">Pause</button>
<button id="step">Step</button>
-->
</div>
</body>
</html>

18
lib/jquery-1.6.2.min.js vendored Normal file

File diff suppressed because one or more lines are too long