8608/memoryMap.md
2024-02-16 17:00:29 -05:00

1.8 KiB

Boot ROM

Execution starts here, at address $0000.
The main program is located here, or the OS bootloader if an OS is present.

GPIO

Contains hardware multiplication ($0400 * $0401 -> $0400) and division ($0402 / $0403 -> $0402 r $0403), popcount ($0404 -> $0404), and a timer ($0405).
Value written to timer register = number of game ticks (32 ms) between interrupt triggers.
Write 0 to disable.

Keyboard

Read address $0500 to get the next key event
7-bit Windows VKey code, MSB 1 = press, 0 = release
Returns 0 if buffer is empty. Write 1 to $0500 to enable keyboard interrupts, 0 to disable.

Serial Peripheral Interface

Not yet implemented.

Robot Controller

Write to $0701 to control the robot. Each bit is an action - MSB to LSB: Plant brick, destroy brick, move forward, backward, left, right, up, down.
Write a 6-bit color ID to $0700 to set the color of the bricks the robot plants.
Read $0700 to get the color of the brick the robot is on. MSB = brick exists. Returns 0 if no brick.

Text Display

Write ASCII values to $0800 to $0BFF to display characters at certain positions on screen.
$0800 is top left, $0BFF is bottom right, rows are 64 bytes.

Text Display Color

Write 6-bit color IDs to $0C00 to $0FFF to set the color of characters on screen.
MSB = whether to invert character mask (i.e. for highlighting).

System RAM

The OS may use this memory for the stack, system variables, etc.
If no OS is present, this memory can be used for any purpose, etc.
Located at $1000 to $1FFF.

User ROM

User program and data can go here.
If no OS is present, the boot ROM will need to jump into this code.
Located at $2000 to $2FFF.

User RAM

Your code can use this memory for variables, arrays, a heap, etc.
Located at $3000 to $3FFF.