Memory map
68000 address space
| Address | Area | |
|---|---|---|
$000000 | $3FFFFF | Cartridge slot |
$400000 | $7FFFFF | Expansion slot |
$A00000 | $A0FFFF | Z80 bus |
$A10000 | $A10FFF | I/O, etc. |
$A11000 | $A11FFF | Z80 bus control |
$A12000 | $A120FF | Expansion slot extra |
$A13000 | $A130FF | Cartridge slot extra |
$A14000 | $A14FFF | TMSS ports |
$C00000 | $DFFFFF | VDP |
$E00000 | $FFFFFF | Work RAM |
VDP ports
Note: all VDP ports are mirrored every other word, e.g. control
port is at both $C00004 and $C00006. This
allows them to be accessed by longword (which the VDP will see as two
word accesses).
PSG is normally accessed by byte, so you'll generally see
$C00011 instead.
| Address | Description |
|---|---|
$C00000 | VDP data port |
$C00004 | VDP control port |
$C00008 | VDP HV counter |
$C0000C | VDP HV counter |
$C00010 | PSG port |
$C00014 | PSG port |
$C00018 | VDP debug address port |
$C0001C | VDP debug data port |
Accessing address range $C00020 to $C0003F
hangs up.
VDP mirrors every $40 up to $DFFFFF.