cardiograph-computer/run-cpu.js

33 lines
897 B
JavaScript
Executable File

#!/usr/bin/env node
// Run: `./run-cpu.js run assembly.asm`
// Debug: `./run-cpu.js debug assembly.asm`
// TODO: allow running pre-compiled machine code.
//
// i'm thinking of an interface like this...
//
// $ ./run-cpu -mc code.bin
// $ ./run-cpu code.asm
// $ ./run-cpu --debug code.asm
const fs = require('fs');
const computer = require('./simulator.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 machineCode;
if (mode === "debug") {
logRunningHeader();
machineCode = assembler.assemble(inputFile_str);
computer.runProgram(machineCode, true);
} else {
machineCode = assembler.assemble(inputFile_str);
computer.runProgram(machineCode, false);
}