83 lines
2.5 KiB
Markdown
83 lines
2.5 KiB
Markdown
# 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
|
|
- [ ] Play with JSDoc
|
|
|
|
## 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
|
|
|
|
- [ ] look at use of `*` or `.` in assembly
|
|
- [What does "jmp *" mean in 6502 assembly?](https://retrocomputing.stackexchange.com/questions/7998/what-does-jmp-mean-in-6502-assembly)
|
|
|
|
### 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 |