docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
[← Home ](../README.md ) · [Boot Sequence ](README.md )
# Cold Boot — Power-On to Kickstart
## Overview
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
When the Amiga powers on or is reset (Ctrl-Amiga-Amiga), the 68000 CPU begins execution from the ROM. The boot process progresses from raw hardware initialization through to a fully running AmigaOS desktop in approximately 3– 8 seconds. This document covers everything that happens from the moment power is applied to the moment the Kickstart ROM hands control to the OS initialization code.
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
---
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
## Boot Timeline
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
```mermaid
graph TB
POWER["⚡ Power On / Reset"] --> CPU["68k reads reset vectors< br / > $000000: SSP< br / > $000004: PC → ROM entry"]
CPU --> CHKSUM["ROM Checksum< br / > Sum all longwords = $FFFFFFFF?"]
CHKSUM -->|FAIL| RED["🔴 Red Screen< br / > System halts"]
CHKSUM -->|PASS| HWRESET["Hardware Reset< br / > Disable DMA, interrupts< br / > Reset custom chips, CIAs"]
HWRESET --> MEMDET["Memory Detection< br / > Size Chip RAM< br / > Probe expansion"]
MEMDET -->|FAIL| YELLOW["🟡 Yellow Screen< br / > RAM test fail"]
MEMDET -->|PASS| EXEC["ExecBase Creation< br / > Store pointer at $4"]
EXEC --> CAPTURE["Check ColdCapture< br / > vector ($2A)"]
CAPTURE --> RESIDENT["ROM Scan< br / > Find $4AFC RomTags"]
RESIDENT --> INIT["Initialize Residents< br / > by priority"]
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
style POWER fill:#e8f4fd ,stroke:#2196f3 ,color:#333
style RED fill:#ffcdd2 ,stroke:#e53935 ,color:#333
style YELLOW fill:#fff9c4 ,stroke:#f9a825 ,color:#333
style EXEC fill:#e8f5e9 ,stroke:#4caf50 ,color:#333
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
---
## Step 1: CPU Reset Vector Fetch
The 68000 CPU has a hardwired reset sequence:
1. Enters supervisor mode, sets interrupt mask to level 7 (all masked)
2. Reads a longword from address `$000000` → loads into SSP (Supervisor Stack Pointer)
3. Reads a longword from address `$000004` → loads into PC (Program Counter)
4. Begins executing from the PC address
On the Amiga, addresses `$000000– $000007` map to Kickstart ROM during reset (via the OVL — overlay — signal from Gary/Gayle). Once the boot code runs a few instructions, it clears the OVL pin, remapping `$000000` to Chip RAM.
```asm
; ROM at $F80000 (512 KB Kickstart):
$F80000: dc.l $00000400 ; Initial SSP = $400 (supervisor stack in low memory)
$F80004: dc.l $F80008 ; Initial PC = next instruction in ROM
; First instruction executed:
$F80008: LEA $F80000,A0 ; Load ROM base
... ; Begin boot sequence
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### The OVL (Overlay) Mechanism
| State | Address $000000 maps to | Purpose |
|---|---|---|
| OVL = 1 (reset) | ROM ($F80000) | CPU reads SSP/PC from ROM |
| OVL = 0 (cleared) | Chip RAM | Normal operation — exception vectors in RAM |
The boot code clears OVL by writing to CIA-A PRA (bit 0) within the first few instructions, switching $000000 back to Chip RAM. This allows the OS to install its own exception vectors.
---
## Step 2: ROM Checksum Verification
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
Immediately after gaining control, the boot code verifies ROM integrity:
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
```c
/* ROM checksum algorithm */
ULONG checksum = 0;
ULONG *rom = (ULONG * )ROM_BASE;
ULONG rom_size = ROM_SIZE / 4; /* longword count */
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
for (ULONG i = 0; i < rom_size ; i + + )
{
ULONG old = checksum;
checksum += rom[i];
if (checksum < old ) / * carry occurred * /
checksum++; /* add carry back (ones' complement addition) */
}
if (checksum != 0xFFFFFFFF)
{
/* FAIL — display solid red screen */
custom.color[0] = 0x0F00; /* Red background */
for (;;) ; /* Halt — no recovery */
}
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### Checksum Details
| ROM Type | Size | Base Address | Checksum Location |
|---|---|---|---|
| Kickstart 1.x | 256 KB | `$FC0000` | `$FFFFE8` (last LW before vectors) |
| Kickstart 2.0+ | 512 KB | `$F80000` | `$FFFFF8` |
| Kickstart 3.1 | 512 KB | `$F80000` | `$FFFFF8` |
The checksum is a **ones' complement additive checksum** — the sum of all longwords in the ROM, including carries, must equal `$FFFFFFFF` . The ROM builder calculates a complement value and places it near the end of the ROM image to ensure this.
> **For FPGA developers**: If your ROM image produces a red screen, the checksum is wrong. Recalculate it with the complement value at the correct offset for your ROM size.
---
## Step 3: Hardware Reset
The boot code puts all hardware into a known safe state:
```asm
; Disable everything before touching any hardware
MOVE.W #$7FFF,INTENA ; Clear all interrupt enable bits
MOVE.W #$7FFF,INTREQ ; Clear all pending interrupt requests
MOVE.W #$7FFF,DMACON ; Disable all DMA channels
MOVE.W #$7FFF,ADKCON ; Clear audio/disk control
; Reset CIA chips
MOVE.B #$00,CIAA_CRA ; Stop CIA-A Timer A
MOVE.B #$00,CIAA_CRB ; Stop CIA-A Timer B
MOVE.B #$00,CIAB_CRA ; Stop CIA-B Timer A
MOVE.B #$00,CIAB_CRB ; Stop CIA-B Timer B
MOVE.B #$7F,CIAA_ICR ; Disable all CIA-A interrupts
MOVE.B #$7F,CIAB_ICR ; Disable all CIA-B interrupts
; Set CIA-A port directions
MOVE.B #$03,CIAA_DDRA ; PA0=OVL(out), PA1=LED(out), rest input
MOVE.B #$FF,CIAA_DDRB ; Port B = parallel data (output)
; Clear OVL — remap $000000 to Chip RAM
BCLR #0 ,CIAA_PRA ; Clear OVL bit → Chip RAM now at $0
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### Hardware State After Reset
| Subsystem | State | Register |
|---|---|---|
| All DMA | Disabled | DMACON = $0000 |
| All interrupts | Disabled | INTENA = $0000 |
| All interrupt requests | Cleared | INTREQ = $0000 |
| CIA timers | Stopped | CRA/CRB = $00 |
| Blitter | Idle | — |
| Copper | Idle | — |
| Audio | Silent | — |
| Floppy motor | Off | — |
| Video | Black screen | COLOR00 = $000 |
---
## Step 4: Memory Detection
The ROM probes for available memory by writing test patterns and reading them back:
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### Chip RAM Detection
```c
/* Test pattern write/read at progressively higher addresses */
/* Typical patterns: $AAAAAAAA / $55555555 (alternating bits) */
ULONG chip_size = 0;
ULONG test_addrs[] = { 0x040000, 0x080000, 0x100000, 0x200000 }; /* 256K, 512K, 1M, 2M */
for (int i = 0; i < 4 ; i + + )
{
volatile ULONG *p = (ULONG * )test_addrs[i];
*p = 0xAAAAAAAA;
if (*p == 0xAAAAAAAA)
{
*p = 0x55555555;
if (*p == 0x55555555)
chip_size = test_addrs[i];
}
}
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### Memory Probing Order
| Step | Address Range | Memory Type | How Detected |
|---|---|---|---|
| 1 | `$000000– $03FFFF` | Chip RAM (256 KB min) | Test patterns |
| 2 | `$040000– $07FFFF` | Chip RAM (512 KB) | Test patterns |
| 3 | `$080000– $0FFFFF` | Chip RAM (1 MB) | Test patterns |
| 4 | `$100000– $1FFFFF` | Chip RAM (2 MB) | Test patterns |
| 5 | `$C00000– $C7FFFF` | Ranger/Slow RAM (A500) | Test patterns |
| 6 | `$200000– $9FFFFF` | Fast RAM (trapdoor/PCMCIA) | Test patterns |
| 7 | `$E80000– $EFFFFF` | Zorro II Autoconfig | Autoconfig protocol |
| 8 | `$07000000+` | Zorro III (32-bit) | Autoconfig protocol |
### Autoconfig (Zorro II/III)
Expansion boards are detected via the **Autoconfig** protocol:
```c
/* Autoconfig space: $E80000 */
/* Read manufacturer ID, product ID, board size from config registers */
/* Assign board a base address */
/* AddMemList() to register any RAM found on the board */
struct ConfigDev *cd;
while ((cd = FindConfigDev(cd, -1, -1)) != NULL)
{
if (cd->cd_Rom.er_Type & ERTF_MEMLIST)
{
/* This board has RAM — add to system memory pool */
AddMemList(cd->cd_BoardSize, MEMF_FAST | MEMF_PUBLIC,
0, cd->cd_BoardAddr, "expansion memory");
}
}
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
## Step 5: ROM Self-Test and Diagnostic Indicators
The Amiga has a multi-layered diagnostic system that uses screen colours, power LED patterns, and keyboard LED blink codes to communicate status. Understanding these signals is essential for FPGA core development and hardware debugging.
### Normal Boot Colour Sequence
A healthy boot cycles through these colours rapidly (total < 1 second on 68000 ) :
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
┌─────────┐ ┌──────────┐ ┌───────────┐ ┌───────────┐ ┌──────────┐ ┌─────────┐
│ BLACK │───→│ DARK GREY│───→│ MED GREY │───→│LIGHT GREY │───→│ WHITE │───→│ GREEN │
│ $000 │ │ $444 │ │ $888 │ │ $AAA │ │ $FFF │ │ $0F0 │
│ CPU init│ │ ROM OK │ │ RAM sized │ │ Exec init │ │ Residents│ │ DOS boot│
└─────────┘ └──────────┘ └───────────┘ └───────────┘ └──────────┘ └─────────┘
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
If the sequence **stops** at any colour, that colour identifies the failure point.
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### Screen Colour Diagnostic Table
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
| Colour | Hex | Phase | Indicates | What Failed |
|---|---|---|---|---|
| Black (stuck) | `$000` | Pre-init | CPU not executing | No clock, dead CPU, no ROM addressing |
| Dark grey | `$444` | Post-checksum | ROM checksum passed | (Normal — transient) |
| Medium grey | `$888` | Memory test | Chip RAM sized OK | (Normal — transient) |
| Light grey | `$AAA` | Exec init | ExecBase created | (Normal — transient) |
| White | `$FFF` | Resident scan | Modules initializing | (Normal — transient) |
| Green flash | `$0F0` | DOS boot | dos.library starting | (Normal — transient) |
| **Red** (stuck) | `$F00` | **Checksum** | **ROM checksum failed** | Bad ROM chip, wrong image, bit rot |
| **Yellow** (stuck) | `$FF0` | **RAM test** | **Chip RAM failed** | Dead RAM chips, Agnus addressing fault |
| **Green** (stuck) | `$0F0` | **Custom chips** | **Chipset failure** | Denise, Paula, or Agnus not responding |
| **Blue** (stuck) | `$00F` | **Exception** | **Alert / Guru** | CPU exception before handler installed |
| **Magenta** (stuck) | `$F0F` | **Exception** | **Hardware trap** | Unexpected interrupt or bus error |
| **Cyan** (stuck) | `$0FF` | **Misc** | **CIA or clock** | Timer initialization failure |
### How the ROM Sets Diagnostic Colours
```asm
; The boot code writes COLOR00 at each milestone:
; After ROM checksum passes:
MOVE.W #$0444,$DFF180 ; Dark grey → "ROM OK"
; After Chip RAM test passes:
MOVE.W #$0888,$DFF180 ; Medium grey → "RAM OK"
; On failure — set error colour and halt:
RomChecksumFailed:
MOVE.W #$0F00,$DFF180 ; Red screen
.hang:
BRA.S .hang ; Infinite loop — no recovery
RamTestFailed:
MOVE.W #$0FF0,$DFF180 ; Yellow screen
.hang:
BRA.S .hang
```
### Power LED Behaviour
| Pattern | Meaning |
|---|---|
| Solid ON | Normal operation |
| Slow blink (~1 Hz) | Low memory condition (filter signal) |
| Fast blink (~4 Hz) | Critical failure during boot |
| OFF | Power supply failure or CPU not running |
| Dim | Audio filter enabled (normal — controlled by CIA-A PA1) |
> **Note**: The power LED's brightness is controlled by CIA-A PRA bit 1. The LED is active-low — writing 0 turns it ON, writing 1 turns it OFF. The "dim" state is actually the audio low-pass filter indicator.
### Keyboard LED Blink Codes
The Amiga keyboard has its own 6500/1 microcontroller that performs a self-test on power-up. Failures are reported via the Caps Lock LED:
| Blinks | Failure |
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
|---|---|
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
| 1 | Keyboard ROM checksum error |
| 2 | Keyboard RAM test failed |
| 3 | Watchdog timer failure |
| 4 | Short circuit between key matrix lines |
| None (LED off) | Keyboard OK — or keyboard not connected |
The keyboard communicates with the main system via a synchronous serial protocol through CIA-A. If the keyboard passes self-test, it sends a power-up key stream (`$FD` = initiate power-up, then `$FE` = terminate power-up).
### Normal vs Abnormal Boot Behaviour
**Normal boot** (A500/A1200 with Kickstart 3.1):
```
0 ms: Black screen
~5 ms: Dark grey (ROM checksum calculating)
~600 ms: Medium grey (checksum done, RAM test running)
~650 ms: Light grey (ExecBase init)
~700 ms: White (resident scan starting)
~900 ms: Colors flash rapidly (graphics.library init, display setup)
~1.2 s: Kickstart hand/checkmark animation appears
~1.5 s: Green (dos.library booting)
~2.0 s: Insert Disk screen (A500) or boot from HD (A1200)
~3-8 s: Workbench desktop appears
```
**Abnormal indicators — troubleshooting guide:**
| Symptom | Diagnosis | Action |
|---|---|---|
| Solid black, no LED | No power or CPU not clocking | Check PSU, clock crystal, CPU socket |
| Solid red screen | ROM checksum fail | Reseat ROM chips; verify ROM image (FPGA) |
| Solid yellow screen | All Chip RAM failed | Check Agnus chip (provides RAM addressing); reseat RAM |
| Flashing red/yellow alternating | Intermittent RAM | Replace RAM chips; check address bus traces |
| Solid green screen | Custom chipset failure | Test Denise, Paula; check crystal oscillator |
| Blue screen with Guru | OS exception during init | Check for corrupted ROM modules; RAM address issues |
| White screen, hangs | Resident module crash | A specific library/device init is failing — try DiagROM |
| Boot logo appears but hangs | Trackdisk/filesystem issue | Check DF0: drive; boot without startup-sequence |
| Keyboard Caps Lock blinking | Keyboard failure | Keyboard self-test failed — replace keyboard controller |
| Screen rolls vertically | Wrong display mode | Check PAL/NTSC crystal; Agnus chip matches motherboard |
| Garbled display | Denise/Lisa failure | Check video output chip; RAM addressing |
| Audio noise/hum during boot | Paula or filter issue | Normal during init; persistent = check audio circuit |
### DiagROM — Alternative Diagnostic ROM
For machines that can't boot Kickstart, **DiagROM** (by Diagrom.com) is a replacement ROM that provides comprehensive hardware testing:
- Tests CPU instructions and addressing modes
- Tests all Chip RAM with multiple patterns (march test, checkerboard)
- Tests custom chips individually (Agnus, Denise, Paula)
- Tests CIA timer accuracy
- Outputs diagnostics via serial port (for headless debugging)
- Tests keyboard, mouse, joystick
- Provides audio test tones
> **For FPGA developers**: DiagROM is the gold standard for verifying your core's hardware implementation. If DiagROM passes all tests, your custom chip implementations are correct.
---
## Step 6: ColdCapture / CoolCapture / WarmCapture
Before and after ExecBase creation, the boot code checks three capture vectors. These are hooks that allow persistent code (memory-resident programs, hardware debuggers) to survive resets:
| Vector | ExecBase Offset | When Called | Typical Use |
|---|---|---|---|
| `ColdCapture` | `$002A` | Before ExecBase init | Hardware debuggers (e.g., Action Replay), MMU setup |
| `CoolCapture` | `$002E` | After ExecBase init, before residents | Virus code (!), system patches, RAM disk preservation |
| `WarmCapture` | `$0032` | During warm reset (Ctrl-A-A) | Preserve state across resets |
### How Captures Survive Reset
Captures are stored in ExecBase, which is in Chip RAM. During a warm reset, the boot code:
1. Reads the old ExecBase pointer from `$4`
2. Validates the old ExecBase (checksum `ChkBase` at offset `$26` )
3. If valid, reads `ColdCapture` /`CoolCapture` /`WarmCapture` from the old ExecBase
4. Calls them at the appropriate time
During a **cold** reset (power cycle), RAM contents are undefined — captures are lost. But on a warm reset (Ctrl-Amiga-Amiga), RAM is preserved, so captures persist.
```c
/* Typical ColdCapture installer (e.g., a trainer or freezer cartridge) */
SysBase->ColdCapture = MyColdHandler;
SumKickData(); /* Update ExecBase checksums so it survives reset */
```
> **Security note**: The `CoolCapture` vector was historically exploited by boot block viruses to survive warm resets. AntiVirus tools check this vector.
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
---
## ROM Layout
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
### 256 KB ROM (Kickstart 1.2/1.3)
```
$FC0000 ┌─────────────────────────┐
│ Reset vectors (SSP, PC) │ 8 bytes
$FC0008 ├─────────────────────────┤
│ ROM header │ 24 bytes
│ - version │
│ - ROM size │
$FC0020 ├─────────────────────────┤
│ exec.library RomTag │ ← First resident module
├─────────────────────────┤
│ expansion.library │
├─────────────────────────┤
│ ... more residents ... │
├─────────────────────────┤
│ Boot code │
├─────────────────────────┤
│ Diagnostic code │
├─────────────────────────┤
$FFFFE8 │ Checksum complement │ 4 bytes
$FFFFFC │ ROM end marker │ 4 bytes
$FFFFFF └─────────────────────────┘
```
### 512 KB ROM (Kickstart 2.0– 3.2)
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
$F80000 ┌─────────────────────────┐
│ Reset vectors (SSP, PC) │ 8 bytes
$F80008 ├─────────────────────────┤
│ ROM header │ 24 bytes
$F80020 ├─────────────────────────┤
│ exec.library RomTag │ ← First resident
├─────────────────────────┤
│ expansion.library │
│ graphics.library │
│ layers.library │
│ intuition.library │
│ dos.library │
│ cia.resource │
│ timer.device │
│ keyboard.device │
│ input.device │
│ trackdisk.device │
│ console.device │
│ gameport.device │
│ audio.device │
│ ramlib │
│ strap (bootstrap) │
│ ... more ... │
├─────────────────────────┤
│ Fonts (topaz 8/9) │
├─────────────────────────┤
$FFFFF8 │ Checksum complement │ 4 bytes
$FFFFFC │ ROM end marker │ 4 bytes
$FFFFFF └─────────────────────────┘
```
### ROM Header
```c
/* At ROM_BASE + 8 */
struct RomHeader {
UWORD rh_Magic; /* $1114 or $1111 */
UWORD rh_SizeKB; /* ROM size in KB (256 or 512) */
UWORD rh_Flags; /* ROM type flags */
UWORD rh_Version; /* Kickstart version */
/* ... */
};
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
---
## Cold Boot vs Warm Reset
| Aspect | Cold Boot (Power On) | Warm Reset (Ctrl-A-A) |
|---|---|---|
| RAM contents | Undefined (random) | Preserved |
| ColdCapture | Lost | Survives (if ExecBase valid) |
| CoolCapture | Lost | Survives |
| WarmCapture | Lost | Survives |
| ROM checksum | Always performed | Always performed |
| Memory detection | Full probe | May skip if ExecBase valid |
| Boot device | Highest priority | Highest priority |
| Timing | 3– 8 seconds | 2– 5 seconds |
### Forcing a Cold Boot
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
Power cycle (turn off/on) → guaranteed cold start
Ctrl-A-A with both mouse buttons → invokes Early Startup Control
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
```
---
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
## Timing
Approximate boot timing on a 7.09 MHz 68000 (A500):
| Phase | Duration | Notes |
|---|---|---|
| Reset vector fetch | ~1 µs | Hardware |
| ROM checksum (256 KB) | ~300 ms | 64K longword additions |
| ROM checksum (512 KB) | ~600 ms | 128K longword additions |
| Hardware reset | ~5 ms | Register writes |
| Chip RAM detection | ~50 ms | Pattern tests |
| Expansion autoconfig | ~100 ms | Per-board |
| ExecBase creation | ~10 ms | Memory allocation + init |
| Resident scan | ~200 ms | ROM scan for $4AFC |
| Resident initialization | ~1– 3 s | Library/device init |
| **Total to DOS prompt** | ** ~3– 5 s** | A500 with floppy |
| **Total to Workbench** | ** ~5– 8 s** | Including LoadWB |
On a 68040/50 MHz (A4000): checksum is ~10× faster, total boot ~2– 4 s to Workbench.
---
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
## References
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
- Motorola: *MC68000 Family Programmer's Reference Manual* — reset processing
docs(amiga): complete AmigaOS 3.1/3.2 developer reference — 172 files across 17 sections
Comprehensive technical documentation covering:
- Hardware: OCS/ECS/AGA custom chip registers, Copper & Blitter deep dives
- Boot sequence: cold boot through startup-sequence
- Binary format: HUNK executable spec, relocation, debug info
- Linking & ABI: .fd files, LVO tables, register calling conventions
- Exec kernel: tasks, interrupts, memory, signals, semaphores
- AmigaDOS: file I/O, FFS/OFS layout, CLI/Shell scripting
- Graphics: planar bitmaps, Copper programming, HAM/EHB modes
- Intuition: screens, windows, IDCMP, BOOPSI
- Devices: trackdisk, SCSI, serial, timer, audio, keyboard
- Libraries: utility, expansion, IFFParse, locale, ARexx
- Networking: bsdsocket API, SANA-II, TCP/IP stack comparison
- Toolchain: GCC, vasm/vlink, SAS/C, NDK, debugging
- Reverse engineering: IDA/Ghidra setup, compiler fingerprints, case studies
- CPU & MMU: 68040/060 emulation libs, PMMU, cache management
- Driver development: SANA-II, Picasso96/RTG, AHI audio
All files include breadcrumb navigation. No local paths or proprietary content.
2026-04-23 12:16:52 -04:00
- RKRM: *Hardware Reference Manual* — reset chapter
boot_sequence: enrich all articles + new kickstart_rom.md
New: kickstart_rom.md (ROM structure, module inventory, tools, custom ROMs)
Enriched: cold_boot (diagnostics, LED codes, troubleshooting),
kickstart_init (ExecBase creation, ROM scan, 4-phase init),
dos_boot (strap, boot block, Startup-Sequence), early_startup (recovery)
Updated: 02_boot_sequence/README.md, root README.md
2026-04-23 18:12:45 -04:00
- NDK39: `exec/execbase.h` — ColdCapture, CoolCapture, WarmCapture fields
- See also: [Kickstart Init ](kickstart_init.md ) — ExecBase creation and resident module init
- See also: [Address Space ](../01_hardware/common/address_space.md ) — memory map