- Detailed Prizm memory map
- 19 Jul 2013 09:18:19 am
- Last edited by gbl08ma on 05 Nov 2013 11:59:23 am; edited 6 times in total
This is a compilation of all the documented Prizm memory regions so far, along with an explanation of what they are and how the OS uses them.
Addresses listed are the cacheable ones where possible (switch the 0x8 for 0xA for non-cacheable addresses).
This will go into the wiki once I am more sure of the correctness of this information.
(Sources: Simon Lothar's documents, WikiPrizm and my own investigation)
0x80000000 to 0x81FFFFFF (32 Mbytes) - Flash, where the OS is and where the 16 MB storage memory is (uses the Fugue FAT filesystem)
0x88000000 to 0x881FFFFF (2 Mbytes - 2097151 bytes) - RAM
0xAB800000 to 0xABD0FFFF (64048 byes) - Main Memory backup area (this is strange because it doesn't seem to be in flash, nor in RAM...)
0x80B60000 to 0x80B74461 - Section of flash where the language add-ins get copied when selected. The end address might vary depending on the file size?
0xFD800000 to 0xFD803FF8 (16376 bytes) - RS memory. This area is changed by the OS, but not on app change. Survives power-off and reboots. Stores some OS settings (link cable type, Fkey label color, frame color, and possibly things like battery type, brightness and poweroff timeout too) so not the whole of it is available for use in the add-ins, even though all of it is writable (writing some settings leads to OS weirdness/crash). Looks like none of the RS memory is safe for use because the flash access code goes there on poweroff. If that code is corrupted or accessed improperly, serious problems may occur!
0xE5200000 to 0xE5200FFF (4096 bytes) - IL memory. Writable and doesn't seem to be used by the OS. I don't know about reboot and power off survival. Simon's docs say this is 16 KB but I could only write to the first 4 KB.
0xE5007000 to 0xE5008FFF (8192 bytes) - first "additional On-Chip-RAM-area". Writable. I don't know about power off and reboot but this apparently isn't used by the OS.
0xE5017000 to 0xE5018FFF (8192 bytes) - second "additional On-Chip-RAM-area". Like above.
0xA413FEC0 - RTC
On Simon's docs, the page "fx-MPUs" has more addresses of modules on the SH microprocessors used in Casio calculators. These shouldn't be of much use for those just looking for persistent RAM areas or just a few more bytes to use as a buffer.
Sum of so-far-known memory regions usable as buffers by add-ins (excluding VRAM): 679936 bytes. The biggest continuous region is still the add-in stack.
Please let me know if there is any wrong data so I can fix it. Also, please report if you think you know about another memory region (or about other uses for the already documented regions). There are still many areas in RAM which are yet to be properly documented.
Addresses listed are the cacheable ones where possible (switch the 0x8 for 0xA for non-cacheable addresses).
This will go into the wiki once I am more sure of the correctness of this information.
(Sources: Simon Lothar's documents, WikiPrizm and my own investigation)
0x80000000 to 0x81FFFFFF (32 Mbytes) - Flash, where the OS is and where the 16 MB storage memory is (uses the Fugue FAT filesystem)
0x88000000 to 0x881FFFFF (2 Mbytes - 2097151 bytes) - RAM
- Inside the RAM:
0x88000000 to 0x880287FF (165888 bytes) - VRAM
(somewhere in here, or perhaps taking the full range between VRAM and SaveVRAM, go the buffers where pieces of VRAM are saved when MsgBoxPush is called)
0x880A2AD5 to 0x880CB2D5 (165888 bytes) - SaveVRAM/LoadVRAM
(somewhere in here, go buffers related to file - either Fugue FAT functions, or things related to file sorting for display (after lookup), or to file lookup)
0x880D35D0 to 0x880E3000 (64048 byes) - Main Memory
0x880F0000 to 0x8815FFFF (458752 bytes) - System stack
0x88160000 to 0x881DFFFF (524288 bytes) - Add-in RAM (static and stack)
0x881E0000 to 0x881FFFFF (131072 bytes) - heap (use with malloc and free syscalls)
Sum of known areas in RAM: 1509936 bytes (72% of the total RAM area)
0xAB800000 to 0xABD0FFFF (64048 byes) - Main Memory backup area (this is strange because it doesn't seem to be in flash, nor in RAM...)
0x80B60000 to 0x80B74461 - Section of flash where the language add-ins get copied when selected. The end address might vary depending on the file size?
0xFD800000 to 0xFD803FF8 (16376 bytes) - RS memory. This area is changed by the OS, but not on app change. Survives power-off and reboots. Stores some OS settings (link cable type, Fkey label color, frame color, and possibly things like battery type, brightness and poweroff timeout too) so not the whole of it is available for use in the add-ins, even though all of it is writable (writing some settings leads to OS weirdness/crash). Looks like none of the RS memory is safe for use because the flash access code goes there on poweroff. If that code is corrupted or accessed improperly, serious problems may occur!
0xE5200000 to 0xE5200FFF (4096 bytes) - IL memory. Writable and doesn't seem to be used by the OS. I don't know about reboot and power off survival. Simon's docs say this is 16 KB but I could only write to the first 4 KB.
0xE5007000 to 0xE5008FFF (8192 bytes) - first "additional On-Chip-RAM-area". Writable. I don't know about power off and reboot but this apparently isn't used by the OS.
0xE5017000 to 0xE5018FFF (8192 bytes) - second "additional On-Chip-RAM-area". Like above.
0xA413FEC0 - RTC
On Simon's docs, the page "fx-MPUs" has more addresses of modules on the SH microprocessors used in Casio calculators. These shouldn't be of much use for those just looking for persistent RAM areas or just a few more bytes to use as a buffer.
Sum of so-far-known memory regions usable as buffers by add-ins (excluding VRAM): 679936 bytes. The biggest continuous region is still the add-in stack.
Please let me know if there is any wrong data so I can fix it. Also, please report if you think you know about another memory region (or about other uses for the already documented regions). There are still many areas in RAM which are yet to be properly documented.