Back

Audio Cpu Memory Map

Visual Summary

.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. (very small regions are indicated by a triangle in the corner).

Address Map

NameAddress BitsAddress
Spaces
WidthStartReal Size
Program Rom**[0000 0?aa aaaa aaaa aaaa aaaA]*supervisor program*16-bit$000000
Program Rom[1100 0?aa aaaa aaaa aaaa aaaA]*data, program*16-bit$C00000
Work Ram[0000 0... aaaa aaaa aaaa aaaA]
[1111 1... aaaa aaaa aaaa aaaA]
data, user program?16-bit$000000
Dual-Port Ram[0001 01.. .... aaaa aaaa aaa0]data/?8-bit (even)$140000
Otis Registers[0010 00.. .... .... ...a aaaA]data/?16-bit$200000
Esp Registers[0010 01.. .... ...a aaaa aaa1]data/?8-bit (odd)$240000
Duart Registers[0010 10.. .... .... ...a aaa1]data/?8-bit (odd)$280000
Otis Voices' Banks[0011 00.. .... .... ..aa aaa1]data/?8-bit (odd)$300000
Volume Registers[0011 01.. .... .... .... ..a0]data/?8-bit (even)$340000

*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). (This was done to allow reading the pc reset vector at startup).

address bits legend:

0/1
mapping bit (must match)
.
doesn't matter
a
"real" address bit
A
address bit that just selects a byte within the data bus

Notes

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.