diff --git a/display.js b/display.js index a051282..5ac78f0 100644 --- a/display.js +++ b/display.js @@ -1,9 +1,23 @@ const { POINTER_TO_START_OF_DISPLAY_MEM } = require('./machine.config'); const { num2hex } = require('./logging.js'); -exports.printDisplay = (mem) => { +const printDisplay = (mem) => { const disp = mem[POINTER_TO_START_OF_DISPLAY_MEM]; + console.log("DISP", disp); for (let i = disp; i < disp + 16; i += 4) { console.log(`${num2hex(mem[i])} ${num2hex(mem[i+1])} ${num2hex(mem[i+2])} ${num2hex(mem[i+3])}`); } +} + +const prettyPrintDisplay = (mem) => { + const disp = mem[POINTER_TO_START_OF_DISPLAY_MEM]; + const num2pic = (n) => n > 0 ? '⚫' : '⚪'; + for (let i = disp; i < disp + 16; i += 4) { + console.log(`${num2pic(mem[i])}${num2pic(mem[i+1])}${num2pic(mem[i+2])}${num2pic(mem[i+3])}`); + } +} + +module.exports = { + "printDisplay": printDisplay, + "prettyPrintDisplay": prettyPrintDisplay, } \ No newline at end of file diff --git a/simulator.js b/simulator.js index f521f03..b7a194d 100644 --- a/simulator.js +++ b/simulator.js @@ -198,7 +198,11 @@ exports.runProgram = async (code, debug = false) => { async function logCPUState(debug = false) { console.group(`Step`); if (!debug) console.clear(); - display.printDisplay(CPU.memory); + if (debug) { + display.printDisplay(CPU.memory); + } else { + display.prettyPrintDisplay(CPU.memory); + } console.log(); console.log('Mnemonic:', CPU.currentInstruction.mnemonic); console.log(`Machine: $${num2hex(CPU.currentInstruction.opcode)} $${num2hex(CPU.currentInstruction.argument)}`);