Skip to content

Memory Mapping

RegionStartEndSizeNotes
Boot ROM0x0000_0000--Initial boot code
Main RAM0x8C00_00000x8CFF_FFFF16 MBOS + apps + heap
Cached ROM0x8000_00000x81FF_FFFF512 MBCached access
MCS FS0x8E00_0000--Filesystem (avoid overwriting!)
Uncached ROM0xA000_00000xA1FF_FFFF512 MBDirect, no cache
CPG0xA415_00000xA415_FFFF64 KBClock control
Touch?0xA405_0100--Touch register at 0xA405_01F3
Display DMAC0xB400_0000--Display DMA controller
XRAM0xE500_70000xE500_90008 KBFast data RAM (Bank 1)
YRAM0xE501_70000xE501_90008 KBFast data RAM (Bank 2)
IL Memory0xE520_00000xE520_400016 KBFast instruction RAM
Direct I/O0xFEC0_00000xFEFF_FFFF4 MBHardware registers
RS Memory0xFD80_00000xFD80_07FF2 KBCRITICAL. Retained during standby

Here’s some informations gathered about the mapping :

  • boot rom is at 0x0000_0000, it’s taken from the first part of the flashed rom

  • bootloader is at 0x0000_0300 with the LV777 then CASIOABS at 0x0000_3380

  • Clock Pulse Generator (CPG) is at 0xA415_0000 to 0xA415_FFFF

  • 0xA405_0100 may be the touchscreen, where 0xA405_01F3 changes when screen it touched

  • RAM is 0x8c00_0000 to 0x8cff_ffff

  • MCS starts at 0x8e00_0000

  • Cached ROM is 0x8000_0000 to 0x81ff_ffff

  • Uncached ROM is 0xa000_0000 to 0xa1ff_ffff

  • Display DMAC start at 0xb400_0000

  • There are some “direct Io” from 0xFEC0_0000 to 0xFEFF_FFFF

When loading a .bin program, it is copied at 0x8cff_0000 and the PC jump to this offset

For hollyhock, we usually use the end of the ram, that space is usually occupied by the mcs file system, but if it’s not fully full, then it should work. Just note that the hollyhock launcher is running from ram, so it can’t overwrite itself…8C00_0000 to 8CFF_FFFF is ram, we use 8CFE_0000 for the launcher (from the run.bin file) and 8CFF_0000 for programs, just look at the launcher how big it is, you can squeeze out a bit if you start your program at 8CFE_8000