Amiga Address Space
Overview
The Amiga uses a 24-bit physical address bus on OCS/ECS machines (68000/68020 effective), giving 16 MB of addressable space.
AGA machines with 68030/040/060 and 32-bit-clean software can address the full 4 GB, but Chip RAM and custom registers remain in the lower 16 MB.
Memory Map โ 24-bit (OCS/ECS: A1000, A500, A500+, A2000, A600, A3000, CDTV)
| Address Range | Size | Region |
|---|---|---|
$000000โ$1FFFFF |
2 MB max | Chip RAM (512 KB on OCS A500, 1โ2 MB on ECS) |
$200000โ$9FFFFF |
8 MB | Fast RAM (Zorro II autoconfig expansion) |
$A00000โ$BEFFFF |
~2 MB | Zorro II I/O space |
$BFD000โ$BFDFFF |
4 KB | CIA-B (8520 โ keyboard, floppy motor, disk side select) |
$BFE001โ$BFE1FF |
512 B | CIA-A (8520 โ parallel port, serial flags, timers) |
$C00000โ$C7FFFF |
512 KB | Slow RAM ("Ranger" โ on Chip bus, not DMA-visible) |
$C80000โ$CFFFFF |
512 KB | Zorro II expansion I/O (boards) |
$D00000โ$D7FFFF |
512 KB | Zorro II expansion I/O |
$D80000โ$DBFFFF |
256 KB | Reserved / board-specific |
$DC0000โ$DCFFFF |
64 KB | Real-Time Clock (MSM6242B / RF5C01A) |
$DD0000โ$DEFFFF |
128 KB | Reserved |
$DF0000โ$DFFFFF |
64 KB | Custom chip registers ($DFF000โ$DFF1FE) |
$E00000โ$E7FFFF |
512 KB | Kick memory (WCS / Ranger slow RAM mirror) |
$E80000โ$EFFFFF |
512 KB | Autoconfig space (Zorro II probe) |
$F00000โ$F7FFFF |
512 KB | Extended Kickstart ROM (OS 3.1: second 256 KB) |
$F80000โ$FFFFFF |
512 KB | Kickstart ROM (primary, mirrored at top of 16 MB) |
Memory Map โ 32-bit (AGA: A1200, A4000, CD32)
| Address Range | Size | Region |
|---|---|---|
$000000โ$1FFFFF |
2 MB | Chip RAM |
$200000โ$07FFFFFF |
up to 126 MB | Fast RAM (on-board via Ramsey on A4000; trapdoor/PCMCIA on A1200) |
$A00000โ$BEFFFF |
~2 MB | Zorro II I/O |
$BFD000 |
โ | CIA-B |
$BFE001 |
โ | CIA-A |
$C00000โ$CFFFFF |
1 MB | Slow RAM / board I/O |
$D80000โ$D8FFFF |
64 KB | IDE / Gayle (A1200/A4000) |
$DA0000โ$DA3FFF |
16 KB | PCMCIA attribute memory (A1200) |
$DC0000 |
โ | Real-Time Clock |
$DFF000โ$DFFFFF |
64 KB | Custom chip registers |
$E00000โ$E7FFFF |
512 KB | Kick mirror / WCS |
$F00000โ$F7FFFF |
512 KB | Extended Kickstart ROM |
$F80000โ$FFFFFF |
512 KB | Kickstart ROM |
$01000000+ |
up to 1.75 GB | Zorro III expansion (32-bit, A3000/A4000 only) |
Per-Model Address Space Variations
The maps above show the common layout. Several models have unique regions:
A1000 โ Writable Control Store (WCS)
| Address Range | Size | Region |
|---|---|---|
$F80000โ$FFFFFF |
512 KB | WCS RAM โ Kickstart is loaded from floppy into this RAM at boot (A1000 has no ROM-based Kickstart) |
$FC0000โ$FFFFFF |
256 KB | Bootstrap ROM (256-byte boot loader that loads Kickstart into WCS) |
The A1000 is the only model where Kickstart lives in RAM, not ROM. If power is lost, Kickstart must be reloaded from the Kickstart floppy. The WCS is write-protected after loading via a hardware latch.
A2000 โ Zorro II Bus and CPU Slot
| Address Range | Size | Region |
|---|---|---|
$200000โ$9FFFFF |
8 MB | Zorro II Fast RAM (5 expansion slots, autoconfig) |
$E80000โ$EFFFFF |
512 KB | Autoconfig space โ probed at boot for each Zorro II card |
| CPU slot | โ | Directly wired 68000 socket โ accepts accelerators (GVP G-Force, A2630) |
The A2000 is the canonical "big-box" expandable Amiga. Its 5 Zorro II slots provide 8 MB of Fast RAM address space. Some later A2000 revisions (rev 6+) support Super Agnus for 2 MB Chip RAM.
CDTV โ CD-ROM Controller and NVRAM
| Address Range | Size | Region |
|---|---|---|
$000000โ$0FFFFF |
1 MB | Chip RAM (stock, expandable to 2 MB with Super Agnus mod) |
$E00000โ$E3FFFF |
256 KB | CDTV Extended ROM (CD filesystem, player software, DMAC) |
$E40000โ$E7FFFF |
256 KB | CDTV Extended ROM (second bank) |
$DC0000โ$DC003F |
64 B | Real-Time Clock (Oki MSM6242B) |
$E90000โ$E9FFFF |
64 KB | DMAC (WD33C93 SCSI DMA controller for CD-ROM) |
$F00000โ$F3FFFF |
256 KB | CDTV NVRAM (battery-backed, stores bookmarks and saves) |
The CDTV is essentially an A500 with a CD-ROM drive, IR remote, and NVRAM in a consumer set-top box form factor. It uses the OCS chipset (original Agnus) with 1 MB Chip RAM. The DMAC at $E90000 handles DMA transfers between the CD-ROM's SCSI interface and memory.
CD32 โ Akiko Chip and Flash ROM
| Address Range | Size | Region |
|---|---|---|
$000000โ$1FFFFF |
2 MB | Chip RAM (fixed) |
$B80000โ$B8FFFF |
64 KB | Akiko custom chip (chunky-to-planar conversion, CD-ROM controller, NVRAM interface) |
$DC0000โ$DC003F |
64 B | Real-Time Clock |
$DFF000โ$DFFFFF |
64 KB | Custom chip registers (AGA โ Alice/Lisa) |
$E00000โ$E7FFFF |
512 KB | CD32 Extended ROM (CD filesystem, boot, CDDA player) |
$F00000โ$F7FFFF |
512 KB | CD32 flash ROM (firmware, SysInfo) |
$F80000โ$FFFFFF |
512 KB | Kickstart 3.1 ROM |
The CD32's unique feature is the Akiko chip at $B80000, which provides:
- Chunky-to-Planar (C2P) conversion: a hardware DMA engine that converts linear 8-bit pixel arrays to planar bitplane format โ the single most sought-after feature for game ports
- CD-ROM controller: handles the double-speed CD drive directly
- NVRAM interface: 1 KB battery-backed storage for game saves
[!NOTE] The CD32 has no Zorro slots, no CPU slot, no trapdoor connector, and no PCMCIA port. The only expansion path is the (rare) FMV module slot or the SX-1/SX-32 expansion unit that adds a keyboard port, IDE, and PCMCIA.
Memory Type Classification
AmigaOS classifies memory by access flags used in AllocMem():
| MEMF Flag | Value | Description |
|---|---|---|
MEMF_ANY |
0 | No constraint |
MEMF_PUBLIC |
1<<0 | Accessible to all tasks and DMA |
MEMF_CHIP |
1<<1 | Chip RAM โ accessible to custom chips (DMA) |
MEMF_FAST |
1<<2 | Fast RAM โ CPU-only, no DMA, faster |
MEMF_LOCAL |
1<<8 | Not mapped out (always present) |
MEMF_24BITDMA |
1<<9 | Addressable within 24-bit space |
MEMF_CLEAR |
1<<16 | Zero-fill before returning |
MEMF_REVERSE |
1<<17 | Allocate from top of memory |
MEMF_LARGEST |
1<<18 | Return size of largest free block |
MEMF_TOTAL |
1<<19 | Return total memory of type |
Chip RAM Requirement
Custom chip DMA can only access Chip RAM (MEMF_CHIP). This means:
- Graphics bitmaps rendered by Blitter/Copper must be in Chip RAM
- Audio sample data must be in Chip RAM
- Copper lists must be in Chip RAM
- Sprite data must be in Chip RAM
Fast RAM is CPU-only โ generally used for code, non-DMA data structures, and stacks.
Diagram
flowchart TB
chip["Chip RAM<br/>$000000โ$1FFFFF<br/>(DMA accessible)"]
fast["Fast RAM<br/>$200000โ$9FFFFF<br/>(CPU only, faster)"]
zio["Zorro II I/O<br/>$A00000โ$BEFFFF"]
cia["CIA-A/B<br/>$BFD000 / $BFE001"]
slow["Slow / Ranger RAM<br/>$C00000โ$C7FFFF"]
custom["Custom Registers<br/>$DFF000โ$DFFFFF"]
rom["Kickstart ROM<br/>$F80000โ$FFFFFF"]
chip --- fast --- zio --- cia --- slow --- custom --- rom
style chip fill:#2d6a4f,color:#fff
style fast fill:#1b4332,color:#fff
style slow fill:#774936,color:#fff
style custom fill:#e63946,color:#fff
style rom fill:#457b9d,color:#fff
style zio fill:#264653,color:#fff
style cia fill:#264653,color:#fff
Key Chip RAM Addresses
| Address | Content |
|---|---|
| $000000โ$000400 | Exception vector table (copied from ROM) |
| $000004 | SysBase pointer (exec library base) |
| $000100 | Copper list scratch area (boot) |
| $000400โ$001000 | Reserved by OS |
| $001000+ | Free Chip RAM (AvailMem result) |
[!WARNING] Writing to $000000โ$000400 corrupts the exception table. Writing to $000004 corrupts
SysBase. These addresses must never be allocated by user code; exec reserves them.
References
- NDK39:
exec/memory.hโ MEMF_ flag definitions - ADCD 2.1 Hardware Manual: memory map chapter
- Commodore A1200/A4000 Technical Reference Manuals (local archive)
- See also: memory_types.md โ Chip RAM vs Fast RAM vs Slow RAM, DMA accessibility, per-model configurations
- See also: chip_ram_expansion.md โ 2 MB Chip RAM with Super Agnus
- See also: bus_architecture.md โ Bus mechanics, register access patterns, cross-domain transfers