# To do - [ ] Figure out why $00 contains $20 ## 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/ ## Misc - [ ] Play with JSDoc ## Design - [ ] Add keypad to memory map - [ ] [Replace CHP/CFC with FHP/FTG](2023-08-07--dev-notes.md) - [ ] Add a flag for bank-switching to the ~zero-page ### 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 ## Run-scripts - [ ] Change interface to run in non-debug mode by default, and use a flag to select debug mode: - `./run-cpu.js foo.asm` - `./run-cpu.js --debug foo.asm` - `./run-cpu.js -d foo.asm` ## Simulator - [ ] rewrite to call things 'opcodes' and 'operands' ### Assembler - [ ] Pad up to 256 bytes - [ ] Validate labels - [ ] Return pure machine code when printing to stdout (and not in debug mode) ### CPU - [ ] Add single-stepping ### Under-the-hood improvements - [ ] Do a proper binary version... (or lose the typed arrays?) - [ ] Extract debugging to its own module