Move pretty-printed "Running at..." header to logging.js + re-arrange logging.js exports

This commit is contained in:
n loewen 2023-08-02 14:05:59 +01:00
parent 16cc806a3c
commit f05a85cd0d
2 changed files with 27 additions and 19 deletions

View File

@ -1,4 +1,4 @@
exports.logMemory = (x) => { const logMemory = (x) => {
console.log(`┌────────┬────────┬────────┐`); console.log(`┌────────┬────────┬────────┐`);
console.log(`│ addr │ op │ arg │`); console.log(`│ addr │ op │ arg │`);
console.log(`├────────┼────────┼────────┤`); console.log(`├────────┼────────┼────────┤`);
@ -11,6 +11,20 @@ exports.logMemory = (x) => {
console.log(`└────────┴────────┴────────┘`); console.log(`└────────┴────────┴────────┘`);
} }
const num2hex = (num) => num.toString(16).toUpperCase().padStart(2, "0"); const logRunningHeader = () => {
console.log();
let time = new Date();
console.log( `┌─────────────────────┐`);
console.log( `│ Running at ${time.toLocaleTimeString('en-GB')}` );
console.log( `└─────────────────────┘`);
}
exports.num2hex = num2hex; const num2hex = (num) => num.toString(16).toUpperCase().padStart(2, "0");
const hex2num = (hex) => parseInt(hex, 16);
module.exports = {
"logMemory": logMemory,
"logRunningHeader": logRunningHeader,
"num2hex": num2hex,
"hex2num": hex2num,
}

View File

@ -1,4 +1,5 @@
const { INITIAL_IP_ADDRESS, CYCLE_LIMIT } = require('./machine.config'); const { INITIAL_IP_ADDRESS, CYCLE_LIMIT } = require('./machine.config');
const { logRunningHeader, num2hex } = require('./logging.js');
const display = require('./display.js'); const display = require('./display.js');
// STATE // STATE
@ -76,7 +77,14 @@ const Instructions = {
sub_lit: (lit) => { // TODO: carry flag sub_lit: (lit) => { // TODO: carry flag
console.log("SUB lit"); console.log("SUB lit");
CPU.Acc = CPU.Acc - lit; let sum = CPU.Acc - lit;
if (sum < 0) {
CPU.CF = 1;
CPU.Acc = (sum % 15) + 1; // FIXME ???
} else {
CPU.CF = 0;
CPU.Acc = sum;
}
CPU.IP = CPU.IP += 2; CPU.IP = CPU.IP += 2;
}, },
@ -192,18 +200,4 @@ function logCPUState() {
console.log(); console.log();
console.log( `IP: ${CPU.IP} Acc: ${CPU.Acc} CF: ${CPU.CF}  ${CPU.running ? "running" : "halted" }` ); console.log( `IP: ${CPU.IP} Acc: ${CPU.Acc} CF: ${CPU.CF}  ${CPU.running ? "running" : "halted" }` );
console.log(); console.log();
}; };
// FUNCTIONS FOR DISPLAYING DATA
function num2hex(num) { return num.toString(16) };
function hex2num(hex) { return parseInt(hex, 16) };
function logRunningHeader() {
console.log();
let time = new Date();
console.log( `┌─────────────────────┐`);
console.log( `│ Running at ${time.toLocaleTimeString('en-GB')}` );
console.log( `└─────────────────────┘`);
}