mirror of
https://github.com/pskupinski/65816.js.git
synced 2024-06-03 09:29:41 +00:00
added a basic interface for interacting with the emulator
This commit is contained in:
parent
dbe014ada1
commit
5ada2b1daa
12
README
12
README
|
@ -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.
|
||||
|
|
101
index.html
101
index.html
|
@ -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
18
lib/jquery-1.6.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user