| .00000 | .10000 | .20000 | .30000 | .40000 | .50000 | .60000 | .70000 | .80000 | .90000 | .A0000 | .B0000 | .C0000 | .D0000 | .E0000 | .F0000 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0..... | Work Ram / Program Rom** | |||||||||||||||
| 1..... | Dual-Port Ram | |||||||||||||||
| 2..... | Otis Registers | Esp Registers | Duart Registers | |||||||||||||
| 3..... | Otis Voices' Banks | Volume Registers | ||||||||||||||
| 4..... | ||||||||||||||||
| 5..... | ||||||||||||||||
| 6..... | ||||||||||||||||
| 7..... | ||||||||||||||||
| 8..... | ||||||||||||||||
| 9..... | ||||||||||||||||
| A..... | ||||||||||||||||
| B..... | ||||||||||||||||
| C..... | Program Rom* (maximum size?) | |||||||||||||||
| D..... | ||||||||||||||||
| E..... | ||||||||||||||||
| F..... | Work Ram | |||||||||||||||
The actual (non-mirrored) size of each region is shown in green, if visible
| Name | Address Bits | Address Spaces | Width | Start | Real Size |
|---|---|---|---|---|---|
| Program Rom** | [ | supervisor program* | 16-bit | ||
| Program Rom | [ | data, program* | 16-bit | ||
| Work Ram | [ [ | data, user program? | 16-bit | ||
| Dual-Port Ram | [ | data/? | 8-bit (even) | ||
| Otis Registers | [ | data/? | 16-bit | ||
| Esp Registers | [ | data/? | 8-bit (odd) | ||
| Duart Registers | [ | data/? | 8-bit (odd) | ||
| Otis Voices' Banks | [ | data/? | 8-bit (odd) | ||
| Volume Registers | [ | data/? | 8-bit (even) |
*The size and mapping of program rom depends on the cartridge.
**In supervisor program space, the program roms, instead of ram, are available at address 0 (in addition to their normal location)
address bits legend:
0/1.aA
Accessing unmapped addresses will freeze the cpu, not trigger a bus error
Ram is mirrored to the top of address space because they wanted all of it to be accessable via signed 16-bit offsets from $0