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
.