77 lines
3.3 KiB
Markdown
77 lines
3.3 KiB
Markdown
# Dev notes - 2023-08-21
|
|
|
|
## Goals for today
|
|
|
|
- graphic design
|
|
- [x] graphics: 80 col card template
|
|
- see below
|
|
- printing
|
|
- [x] print: paper tape template
|
|
- [x] print: colour coding forms
|
|
- [x] print: 80 col card template
|
|
|
|
- [ ] see code/design commentary below...
|
|
|
|
- (consider python (microbit) version of simulator)
|
|
- maybe ask for e's input
|
|
|
|
## Memory map re-think
|
|
|
|
### CPU start-up
|
|
|
|
When starting up, the CPU executes a `JMP $FF`.
|
|
|
|
Put differently: it starts executing instructions at the address contained in `$FF`.
|
|
|
|
### Cardiograph memory map
|
|
|
|
```
|
|
00-19 - display (5x5)
|
|
1A - pointer to display memory
|
|
1B - keypad: value of latest key pressed
|
|
1C - reserved for future use (bank switching flag)
|
|
1D-FE - free
|
|
```
|
|
|
|
## References re: where do CPU instruction pointers start, and how are they set?
|
|
|
|
- ["Memory Map Requirements", in *6502 PRIMER: Building your own 6502 computer*](http://wilsonminesco.com/6502primer/MemMapReqs.html)
|
|
- "Reset (RST): When the 6502's RST input gets pulled low and then brought back high, the 6502 starts its reset process, and gets the address to start executing program instructions from $FFFC-FFFD. Notice it does not start executing at address $FFFC, but reads it to get the beginning address of the routine where it should start executing. That routine will normally have to be in ROM."
|
|
- [What address does the x86 begin executing at?](https://stackoverflow.com/questions/4004493/what-address-does-the-x86-begin-executing-at)
|
|
- "The `cs` (code selector) register is set to `0xffff` and `ip` (instruction pointer) is set to `0x0000`."
|
|
- [Why is the first BIOS instruction located at 0xFFFFFFF0 ("top" of RAM)?](https://superuser.com/questions/988473/why-is-the-first-bios-instruction-located-at-0xfffffff0-top-of-ram) (x86)
|
|
|
|
## Imported notes from earlier
|
|
|
|
### 2023-08-18 cardiograph loose thoughts
|
|
|
|
- use binary encoded punch cards for cardiog progs in machine code
|
|
- try making a microbit based emulator
|
|
- (microbit + hex keypad)
|
|
- (machine code monitor like VIP…)
|
|
- (+ tape input??)
|
|
- a4 template with full size 80 col card
|
|
- snake
|
|
- [/] add simulator todo: 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
|
|
- readme:
|
|
- [x] readme: rename (or split up?) mem map / peripherals section
|
|
- [x] ? readme: put 2 keypad charts side by side (they would fit on my phone)
|
|
- [/] see paper notes on mem map
|
|
|
|
|
|
## 2023-08-19
|
|
|
|
[/] 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)
|
|
|
|
- [/] 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)
|
|
|
|
|
|
## 2023-07-17 - cardiograph - worksheet for hand-assembling code… + other docs
|
|
|
|
- [ ] docs/graphics: machine code quick ref (ops + short explanations + mnems)
|
|
- [ ] docs/graphics: assembly quick ref (as above, plus assembler-specific syntax like constants)
|
|
- [ ] docs/graphics: worksheet for hand-assembling |