#!/usr/bin/env node // Run: `./run-cpu.js run assembly.asm` // Debug: `./run-cpu.js debug assembly.asm` // Run with single-stepping: `./run-cpu.js step assembly.asm` // Debug with single-stepping: `./run-cpu.js stepdebug assembly.asm` const fs = require('fs'); const computer = require('./cpu.js'); const assembler = require('./assembler.js'); const { logRunningHeader, logMemory } = require('./logging.js'); const mode = process.argv[2]; // console.log(`Reading ${filename}`); const filename = process.argv[3]; const inputFile_str = fs.readFileSync(filename, 'utf8'); let assemblerOutput = assembler.assemble(inputFile_str); if (mode === "debug") { logRunningHeader(); computer.runProgram(assemblerOutput.machineCode, assemblerOutput.debugInfo, true); } else if (mode === "stepdebug") { logRunningHeader(); computer.singleStepProgram(assemblerOutput.machineCode, assemblerOutput.debugInfo, true); } else if (mode === "step") { computer.singleStepProgram(assemblerOutput.machineCode, assemblerOutput.debugInfo, false); } else { computer.runProgram(assemblerOutput.machineCode, assemblerOutput.debugInfo, false, 200); }