diff options
author | WlodekM <[email protected]> | 2025-04-03 11:51:48 +0300 |
---|---|---|
committer | WlodekM <[email protected]> | 2025-04-03 11:51:48 +0300 |
commit | 60732c4d90abe71d990ca00894f41b5078857a60 (patch) | |
tree | 0a25e544946ed4f99f6eae37b382987e737942d4 /runtime.ts | |
parent | 8005bf4f12c6f9315d269905cc2de32bf6182513 (diff) |
readme
Diffstat (limited to 'runtime.ts')
-rw-r--r-- | runtime.ts | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/runtime.ts b/runtime.ts index d400031..2e6723f 100644 --- a/runtime.ts +++ b/runtime.ts @@ -1,5 +1,6 @@ import The65c02, { BitField, Pin } from "./65c02.ts"; import matrix from "./opcode_matrix.json" with { type: "json" }; +import { parseArgs } from "jsr:@std/cli/parse-args"; // the thing used for ram const ram = new Uint8Array(2**16); @@ -16,17 +17,24 @@ const cpu = new The65c02(function (this: The65c02) { await cpu.loadInstructions() +const args = parseArgs(Deno.args) + +const binStart = parseInt(args.b ?? args.binStart ?? '8000', 16) + +if (Number.isNaN(binStart)) + throw 'binStart is NaN!' + // mem address $0000 -ram[0xFFFC] = 0x00 -ram[0xFFFD] = 0x00 +ram[0xFFFC] = binStart & 0x00FF +ram[0xFFFD] = binStart & 0xFF00 // read code from file -const code = Deno.readFileSync('a.out') +const code = Deno.readFileSync(args._.toString() || 'msbasic/tmp/eater.bin') // write code to ram before execution for (let offset = 0; offset < code.length; offset++) { const byte = code[offset]; - ram[0x0000 + offset] = byte; + ram[binStart + offset] = byte; } // pull RESB low to reset the 65c02 @@ -102,7 +110,7 @@ while (!cpu.io.interruptRequest.high) { } else if (i[0] == 's'.charCodeAt(0)) { console.log('stack:') for (let i = 0; i < cpu.stackPointer.num(); i++) { - console.log(` ${i.toString(16).padStart(2, '0')} ${ram[0x01FF - i].toString(2).padStart(8, '0')} (0x${ram[0x01FF - i].toString(16).padStart(4, '0')} ${ram[0x01FF - i]})`) + console.log(` ${i.toString(16).padStart(2, '0')} ${ram[0x01FF - i].toString(2).padStart(8, '0')} (0x${ram[0x01FF - i].toString(16).padStart(4, '0')} ${ram[0x01FF - i].toString().padStart(3)})`) } } else if (i[0] == 'k'.charCodeAt(0)) { const num = +(new TextDecoder().decode(i.slice(1, 7)).replaceAll('\0', '')); |