From c8c188e55aed5165864e0e02306a87aea37c99bf Mon Sep 17 00:00:00 2001 From: n loewen Date: Sat, 2 Sep 2023 16:45:38 -0400 Subject: [PATCH] assembler - Move 'main' up top --- src/assembler.js | 57 ++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/src/assembler.js b/src/assembler.js index 6262a59..5df973b 100755 --- a/src/assembler.js +++ b/src/assembler.js @@ -9,11 +9,37 @@ const DBG = require('./dbg.js'); const CFG = require('./machine.config.js'); -// Configure pseudo-ops: +/** MAIN **/ + +// Handle command-line options... +const opts = new Opter(process.argv); +opts.synonymize('-d', '--debug'); +opts.requireOption('-i', 'Input file required (-i prog.asm)'); +opts.requireOptionArgument('-i', 1, 1, 'Input file required (-i prog.asm)'); +opts.requireOptionArgument('-o', 1, 1, 'Missing output file name (-o prog.asm)'); + +const inputFilename = opts.opts.i[0]; +const inputFile_str = fs.readFileSync(inputFilename, 'utf8'); + +let outputFileProvided = opts.contains('-o'); +let returnOnStdout = !outputFileProvided; +let outputFilename = outputFileProvided ? opts.opts.o[0] : null; + +let outputWithMetadata = opts.contains('--debug'); + +// Initialize debugger... +const dbg = returnOnStdout ? new DBG('none') : new DBG('nitpick'); + +// Assemble...! +assemble(inputFile_str, outputFilename, outputWithMetadata); + + +/** Configure pseudo-ops **/ const ASM_IP_LABEL = '*'; const ASM_CONSTANT_PREFIX = '#'; const ASM_LABEL_PREFIX = '@'; +/** Configure mnemonics **/ const mnemonicsWithOptionalArgs = ['end', 'nop']; const mnemonics2opcodes = { end: { direct: 0, indirect: 0 }, @@ -402,32 +428,6 @@ function stripWhitespaceFromEnds(line) { return line; } - -/** MAIN **/ - -// Handle command-line options... -const opts = new Opter(process.argv); -opts.synonymize('-d', '--debug'); -opts.requireOption('-i', 'Input file required (-i prog.asm)'); -opts.requireOptionArgument('-i', 1, 1, 'Input file required (-i prog.asm)'); -opts.requireOptionArgument('-o', 1, 1, 'Missing output file name (-o prog.asm)'); - -const inputFilename = opts.opts.i[0]; -const inputFile_str = fs.readFileSync(inputFilename, 'utf8'); - -let outputFileProvided = opts.contains('-o'); -let returnOnStdout = !outputFileProvided; -let outputFilename = outputFileProvided ? opts.opts.o[0] : null; - -let outputWithMetadata = opts.contains('--debug'); - -// Initialize debugger... -const dbg = returnOnStdout ? new DBG('none') : new DBG('nitpick'); - -// Assemble...! -assemble(inputFile_str, outputFilename, outputWithMetadata); - - /** * Assemble source code into machine code. * If 'includeMetadata' is true, a JSON object containing @@ -450,4 +450,5 @@ function assemble(sourceCode, outputFile='out.txt', includeMetadata=false) { const debugJSON = JSON.stringify(out); fs.writeFileSync(outputFile, debugJSON); } -} \ No newline at end of file +} +