40 lines
1.2 KiB
Markdown
40 lines
1.2 KiB
Markdown
# [DRAFT] Design for the _MicroCardiograph_ microprocessor trainer
|
||
|
||
The MicroCardiograph uses memory-mapped IO.
|
||
|
||
## Memory map
|
||
|
||
| Address | Used for... |
|
||
|----------|-----------------------------------------------|
|
||
| 00 to 19 | display (5x5) |
|
||
| 1A | pointer to display memory |
|
||
| 1B | keypad: value of latest key pressed |
|
||
| 1C | reserved for future use (bank switching flag) |
|
||
| 1D | initial IP |
|
||
| 1D to FE | free |
|
||
| FF | * ROM (unwriteable) pointer to initial IP |
|
||
|
||
\* Not implemented yet
|
||
|
||
|
||
## Peripherals
|
||
|
||
### Keypad
|
||
|
||
The value of the latest keypress on a hex keypad is stored at `$1B`.
|
||
|
||
The keypad uses the same layout as the COSMAC VIP (and CHIP-8). The CPU simulator maps those keys onto a Qwerty set:
|
||
|
||
`1` `2` `3` `C` = `1` `2` `3` `4`
|
||
`4` `5` `6` `D` = `Q` `W` `E` `R`
|
||
`7` `8` `9` `E` = `A` `S` `D` `F`
|
||
`A` `0` `B` `F` = `Z` `X` `C` `V`
|
||
|
||
The arrow keys are also mapped onto the hex keypad:
|
||
|
||
` ` `5` ` ` = ` ` `↑` ` `
|
||
`7` `8` `9` = `←` `↓` `→`
|
||
|
||
### Keypad as monitor input
|
||
|
||
TODO |