Memory Map

The MFS-16 has a 32-bit address bus used to address ROM, RAM and I/O. The start and end addresses are inclusive.

In total, the MFS-16 has 8 MiB of ROM, 8 MiB of RAM, and 150 KiB of VRAM.

Words and double words are stored as little-endian in ROM and RAM.

StartEndSizeDescription
0x0000_00000x007F_FFFF8 MiBRead-only memory (ROM). Used for loaded programs currently being executed.
0x0080_00000x00FF_FFFF8 MiBRandom-access memory (RAM). General-purpose memory which can be read from or written to.
0x0100_00000x0102_5800150 KiBVideo RAM (VRAM). Used for setting the pixels of the screen.
0xFFFF_FFBA0xFFFF_FFBA1 BError register. Write-only. Each bit corresponds to a triggered non-fatal error.
0xFFFF_FFBB0xFFFF_FFBB1 BManual frame update address. Write-only. Write to this address to send a manual frame update.
0xFFFF_FFBC0xFFFF_FFBC1 BDisable manual frame updates address. Write-only. Write to this address to disable manual frame updates.
0xFFFF_FFBD0xFFFF_FFBD1 BEnable manual frame updates address. Write-only. Write to this address to enable manual frame updates.
0xFFFF_FFBE0xFFFF_FFFD64 BKeyboard register. Read-only. Each bit corresponds to a keyboard key. A bit is set when its key is being pressed, and vice versa.
0xFFFF_FFFE0xFFFF_FFFE1 BInterrupt enable register. Each bit corresponds to a different interrupt. If an interrupt's bit is set, then it can be triggered.
0xFFFF_FFFF0xFFFF_FFFF1 BInterrupt register. Each bit corresponds to a different interrupt. If an interrupt's bit is set, then it has been triggered.