diff --git a/src/run-cpu.js b/src/run-cpu.js deleted file mode 100755 index face7d4..0000000 --- a/src/run-cpu.js +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env node - -// Usage: ./run-cpu.js -f code.asm [--debug] [--step] [--pretty] - -const fs = require('fs'); -const computer = require('./cpu.js'); -const assembler = require('./assembler.js'); -const { logRunningHeader } = require('./logging.js'); - -// Load file... - -let filename; -try { - filename = getArgumentValue('-f', `Missing filename`); -} catch (error) { - console.error(error.message); - process.exit() -} - -const inputFile_str = fs.readFileSync(filename, 'utf8'); - - -// Check optional arguments... - -let debug = false; -let singleStep = false; -let prettyPrint = false; -process.argv.forEach((arg) => { if (arg === '--debug') { debug = true } }); -process.argv.forEach((arg) => { if (arg === '--step') { singleStep = true } }); -process.argv.forEach((arg) => { if (arg === '--pretty') { prettyPrint = true } }); - -let speed = null; -process.argv.forEach((arg, index) => { - if (arg === '--speed' && process.argv.length > (index -1)) { - speed = parseInt(process.argv[index + 1]); - } -}); - - -let assemblerOutput = assembler.assemble(inputFile_str); -logRunningHeader(); -computer.runProgram( - assemblerOutput.machineCode, - assemblerOutput.debugInfo, - debug, - singleStep, - prettyPrint, - speed -); - - -// CLI args TODO -// - check if value is the name of another arg -// - usage info -// - catch nonexistant flags - -/** - * @param {string} flag - The command line flag, eg. '-f' - * @param {string} errorMessage - The error to throw if a value isn't found - * @returns {string} - **/ -function getArgumentValue(flag, errorMessage) { - let value = null; - process.argv.forEach((arg, index) => { - if (arg === flag && process.argv.length > (index -1)) { - value = process.argv[index + 1]; - } - }); - if (!value) throw new Error(errorMessage); - return value; -}