Added line controller to RAM

This commit is contained in:
MatCat 2021-04-07 01:51:21 -07:00
parent 44cdd9c219
commit 1a61c1d43b
3 changed files with 10 additions and 7 deletions

View File

@ -50,10 +50,10 @@
<span id="TEXT_OUT" style="border: 1px solid black; min-width: 48em; min-height: 2.2em; display: inline-block;"></span> <span id="TEXT_OUT" style="border: 1px solid black; min-width: 48em; min-height: 2.2em; display: inline-block;"></span>
</div> </div>
<div> <div>
<span>RAM : [<span id="Address_BUS"></span>]</span><br /><span id="RAM"></brspan> <span>RAM : [<span id="Address_BUS"></span>] <span>Lines: </span><input id="ramlines" type="number" value="4" size="4" min="1" max="1024" /></span><br /><span id="RAM"></span>
</div> </div>
<div> <div>
<span>RAM (STACK): </span><br /><span id="STACK-RAM"></brspan> <span>RAM (STACK): </span><br /><span id="STACK-RAM"></span>
</div> </div>
<script src="js/cpu.js"></script> <script src="js/cpu.js"></script>

View File

@ -70,6 +70,7 @@ const OECONTROL_RO = 0b11111 // RAM to DATABUS Enable
let intval = null; let intval = null;
let breakpt = null; let breakpt = null;
let ramlines = {value: 1};
function stringToRAM(rstring,ram,address) { function stringToRAM(rstring,ram,address) {
for (let a = 0; a < rstring.length; a++) { for (let a = 0; a < rstring.length; a++) {
@ -182,15 +183,15 @@ function printTextOut(ram,startaddr,endaddr) {
} }
} }
function printRAM(ram,lines = 4) { function printRAM(ram) {
let addrSpan = lines; let addrSpan = parseInt(ramlines.value);
let startADDR = (cpu.ADDRBUS & 0xfff0) - ((addrSpan*16)/2); let startADDR = (cpu.ADDRBUS & 0xfff0) - ((Math.ceil(addrSpan/2)*16));
if (startADDR < 0) startADDR = 0; if (startADDR < 0) startADDR = 0;
if (startADDR > 0xFEFF) startADDR = (0xFF00 + (addrSpan*16)); if (startADDR > 0xFEFF) startADDR = (0xFF00 + (addrSpan*16));
let sp_ram = document.getElementById("RAM"); let sp_ram = document.getElementById("RAM");
let ramtext = "ADDR&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;&nbsp;&nbsp;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;F<br />"; let ramtext = "ADDR&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;&nbsp;&nbsp;&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;F<br />";
for (let a = startADDR; a < (startADDR+(addrSpan*16)); a+=16) { for (let a = startADDR; a < (startADDR+(addrSpan*16)); a+=16) {
ramtext += "0x" + formatHex(a,4) + ": "; ramtext += "0x" + formatHex(a,6) + ": ";
for (let b = 0; b < 16; b++) { for (let b = 0; b < 16; b++) {
if (cpu.ADDRBUS === (a)+b) { if (cpu.ADDRBUS === (a)+b) {
let bgcolor = "#ffff55"; let bgcolor = "#ffff55";

View File

@ -51,6 +51,7 @@ let btn_runtil = document.getElementById("btn_runtil");
let brkpt = document.getElementById("addrbrk"); let brkpt = document.getElementById("addrbrk");
let clkinterval = document.getElementById("clkinterval"); let clkinterval = document.getElementById("clkinterval");
let clkcycles = document.getElementById("clkcycles"); let clkcycles = document.getElementById("clkcycles");
ramlines = document.getElementById("ramlines");
let btn_rst = document.getElementById("btn_rst"); let btn_rst = document.getElementById("btn_rst");
let clk_counter = document.getElementById("clk_counter"); let clk_counter = document.getElementById("clk_counter");
let clk_count = 0; let clk_count = 0;
@ -65,6 +66,7 @@ btn_clk.addEventListener('mouseup', function(evt) {
cpu.CLOCK(false); cpu.CLOCK(false);
}); });
btn_runtil.addEventListener('click', function(evt) { btn_runtil.addEventListener('click', function(evt) {
let addr = parseInt("0x" + brkpt.value); let addr = parseInt("0x" + brkpt.value);
let cpi = parseInt(clkcycles.value); let cpi = parseInt(clkcycles.value);