diff --git a/src/assembler.js b/src/assembler.js index d30c41c..d054906 100644 --- a/src/assembler.js +++ b/src/assembler.js @@ -1,9 +1,5 @@ const { logMemory, num2hex } = require('./logging.js'); -const { - INITIAL_IP_ADDRESS, - DISPLAY_ADDR, - POINTER_TO_DISPLAY, -} = require('./machine.config.js'); +const CFG = require('./machine.config.js'); // 1 = verbose // 2 = what i'm currently focusing on @@ -203,7 +199,7 @@ function decodeInstructions(source) { if (lines[idOfFirstLineWithCode].operation.startsWith(ASM_IP_LABEL)) { IP = parseInt(lines[idOfFirstLineWithCode].argument); } else { - IP = INITIAL_IP_ADDRESS; + IP = CFG.initialIP; } // Initialize arrays to collect assembled code @@ -214,7 +210,7 @@ function decodeInstructions(source) { let debugInfo = {}; // Initialize memory-mapped IO -- TODO this should probably be in the CPU, not here - machineCode[POINTER_TO_DISPLAY] = DISPLAY_ADDR; + machineCode[CFG.pointerToDisplay] = CFG.displayAddr; // Initialize arrays that collect code references that // have to be revisited after our first pass through the source diff --git a/src/cardiograph.js b/src/cardiograph.js index 68ddf59..35dc9e9 100644 --- a/src/cardiograph.js +++ b/src/cardiograph.js @@ -13,7 +13,7 @@ const io = require('./io.js'); const inputFile_str = fs.readFileSync(filename, 'utf8'); let assemblerOutput = assembler.assemble(inputFile_str); -let cpu = new CPU(CFG.INITIAL_IP_ADDRESS, CFG.DEFAULT_CYCLE_LIMIT); +let cpu = new CPU(CFG.initialIP, CFG.defaultCycleLimit); cpu.loadMemory(assemblerOutput.machineCode); cpu.loadSourceInfo(assemblerOutput.debugInfo); diff --git a/src/io.js b/src/io.js index 364bd12..0bd3b24 100644 --- a/src/io.js +++ b/src/io.js @@ -4,7 +4,7 @@ const CFG = require('./machine.config.js'); const { num2hex } = require('./logging.js'); function readKeyMem(mem) { - return mem[CFG.KEYPAD_ADDR]; + return mem[CFG.keypadAddr]; } function getKeypadInput(cpu) { @@ -16,8 +16,8 @@ function getKeypadInput(cpu) { // TODO: is it possible to turn this off again? if (key.sequence === '\x03') process.exit(); let name = key.name.toUpperCase(); - if (name in CFG.KEY_MAP) { - cpu.memory[CFG.KEYPAD_ADDR] = CFG.KEY_MAP[name]; + if (name in CFG.keyMap) { + cpu.memory[CFG.keypadAddr] = CFG.keyMap[name]; } }); } @@ -29,7 +29,7 @@ function getKeypadInput(cpu) { * @param {Boolean} pretty - Display pixels using black and white emoji circles **/ function showDisplay(mem, pretty=false) { - const disp = mem[CFG.POINTER_TO_DISPLAY]; + const disp = mem[CFG.pointerToDisplay]; const num2pic = (n) => n > 0 ? '⚫' : '⚪'; let fmt = (n) => num2hex(n); if (pretty) fmt = (n) => num2pic(n); diff --git a/src/machine.config.js b/src/machine.config.js index 190ead1..7ced02f 100644 --- a/src/machine.config.js +++ b/src/machine.config.js @@ -1,13 +1,13 @@ module.exports = { - "INITIAL_IP_ADDRESS": 29, + "initialIP": 29, // Use these in CPU: - "DISPLAY_ADDR": 0, - "KEYPAD_ADDR": 27, + "displayAddr": 0, + "keypadAddr": 27, // Store the `DISPLAY_ADDR` at this address when assembling: - "POINTER_TO_DISPLAY": 26, + "pointerToDisplay": 26, - "KEY_MAP": { + "keyMap": { // Same layout as COSMAC VIP / CHIP-8 // (This object maps qwerty keys to hex keys // so that they are arranged in the same layout @@ -27,5 +27,5 @@ module.exports = { // max number of times to step the CPU, // to stop endless loops // 0 = infinite - "DEFAULT_CYCLE_LIMIT": 2048, + "defaultCycleLimit": 2048, } \ No newline at end of file