# To do ## Research - [ ] Learn how the C64's PC gets initialized (what is the initial value? how is it set?) - [ ] Review CHIP-8 - read about the spec / ISA - read these, and add them to the bibliography: - Steve Losh: https://stevelosh.com/blog/2016/12/chip8-input/ - https://tonisagrista.com/blog/2021/chip8-spec/ ## Documentation - [ ] Improve docs for flags register ## Design - [ ] Add a flag for bank-switching to the ~zero-page - [ ] Move the initial IP value, to eliminate the gap between it and the keypad pointer - see paper notes - [ ] Consider adding a VIP-style keypad-based machine code monitor - [ ] reconsider ISA order in light of supercat comment here - [Why didn't the 6503 have increment/decrement opcodes for A?](https://retrocomputing.stackexchange.com/questions/13023/why-didnt-the-6502-have-increment-decrement-opcodes-for-a) ### Assembler ### For consideration - [ ] Subroutine stack - [ ] [Extended system (secret bonus operations)](2023-08-07--dev-notes.md) ## Programming - [ ] Write some more complex test programs - [ ] Display (hex) numbers - [ ] Greater than - [ ] Minimal LOGO-ish interpreter for turtle graphics ## Run-scripts - [ ] Replace with running `./cpu.js` and `./assembler.js` diretly ## Simulator ### Assembler - [ ] Return pure machine code when printing to stdout (and not in debug mode) - [ ] Pass asm line thru to cpu to print when debugging - asm: create a second array that stores every line with code (nor blank or comment only lines) + its line number - cpu: accept an optional debugging array, print line # and statement - [ ] Validate labels ### CPU - [ ] Add a mode that prints the display as text, but still animates - [ ] Make single-stepping work with simulated keypad - [ ] Allow running pre-compiled machine code I'm thinking of an interface like this... $ ./cpu.js -mc code.bin $ ./cpu.js code.asm $ ./cpu.js --debug code.asm Full list of flags I want: -d --debug -s --singlestep -p --prettydisplay -mc --machinecode ### Possible under-the-hood improvements - [ ] Do a proper binary version... (or lose the typed arrays?) - [ ] Extract debugging to its own module - [ ] DRY out addition and subtraction