[← Home](../README.md) · [Boot Sequence](README.md) # Early Startup Control — Boot Menu, Display Mode, Recovery ## Overview The **Early Startup Control** (ESC) menu is a built-in boot manager available on all Amigas with Kickstart 2.0+. It provides boot device selection, display mode override, and emergency recovery options. It appears when both mouse buttons are held during the early boot phase — before the OS loads from disk. --- ## Activation ### How to Trigger Hold **both mouse buttons** (left + right) immediately after power-on or during the Ctrl-Amiga-Amiga reset sequence. The timing window is: | Kickstart | When to Hold | Visual Cue | |---|---|---| | 2.0–3.0 | During boot color sequence | Before "Insert Disk" or disk activity | | 3.1 | During the hand/checkmark animation | While the Amiga hand appears | | 3.1.4 / 3.2 | Same as 3.1 | Same timing window | > **Tip**: Hold both buttons before powering on — this guarantees you catch the window. Release them once the menu appears. ### Not Available On - Kickstart 1.2 / 1.3 (no boot menu feature) - Any system where the ROM is corrupted (red screen before menu) - Systems with custom boot ROMs that bypass standard init --- ## Menu Layout ### OS 3.1 Early Startup Control ``` ╔══════════════════════════════════════════╗ ║ EARLY STARTUP CONTROL ║ ║ ║ ║ Boot Options: ║ ║ ○ Boot With No Startup-Sequence ║ ║ ● Boot Standard ║ ║ ║ ║ Boot Device: ║ ║ ● DF0: (pri 5) ║ ║ ○ DH0: (pri 0) ║ ║ ○ DH1: (pri -5) ║ ║ ║ ║ Display Mode: ║ ║ ● PAL ○ NTSC ║ ║ ║ ║ [ BOOT ] ║ ╚══════════════════════════════════════════╝ ``` ### OS 3.2 Early Startup Control OS 3.2 adds additional options: ``` ╔══════════════════════════════════════════╗ ║ EARLY STARTUP CONTROL ║ ║ ║ ║ Boot Options: ║ ║ ○ Boot With No Startup-Sequence ║ ║ ● Boot Standard ║ ║ ○ Boot (Debug) ║ ║ ║ ║ Boot Device: ║ ║ ● DF0: (pri 5) ║ ║ ○ DH0: (pri 0) "System3.1" ║ ║ ○ DH1: (pri -5) "Work" ║ ║ ○ CD0: (pri -20) ║ ║ ║ ║ Display Mode: ║ ║ ○ PAL ○ NTSC ● Best Available ║ ║ ║ ║ ROM Modules: ║ ║ [x] Enable SetPatch ║ ║ [x] Enable 68040.library ║ ║ ║ ║ [ BOOT ] ║ ╚══════════════════════════════════════════╝ ``` --- ## Menu Options ### Boot Options | Option | Effect | |---|---| | **Boot Standard** | Normal boot — executes S:Startup-Sequence | | **Boot With No Startup-Sequence** | Boots to a CLI prompt. S:Startup-Sequence is NOT executed. Assigns (SYS:, C:, etc.) are still set. | | **Boot (Debug)** | (OS 3.2) Boots with debugging enabled — serial debug output, extended logging | ### Boot Device Selection Lists all devices registered with `AddBootNode()`: - Floppy drives: DF0:, DF1: (always present if trackdisk.device loaded) - Hard disk partitions: DH0:, DH1:, etc. (from RDB on SCSI/IDE) - CD-ROM: CD0: (if device driver available) - Network: (if SANA-II device registered as bootable) Select a device and click BOOT — the system uses that device as `SYS:` regardless of configured boot priority. ### Display Mode | Option | Effect | |---|---| | **PAL** | Force PAL display (50 Hz, 283 visible lines) | | **NTSC** | Force NTSC display (60 Hz, 241 visible lines) | | **Best Available** | (OS 3.2) Auto-detect from hardware and monitor | > **Why this matters**: If someone changes the display mode to a setting their monitor can't sync to (e.g., PAL on an NTSC-only monitor), the screen goes blank. The ESC menu renders using the most basic display mode, so it's always visible — even when the configured mode is incompatible. --- ## How It Works Internally ### Detection ```c /* During boot, before strap runs: */ /* intuition.library checks both mouse buttons via CIA-A/B port registers */ UBYTE ciaA_pra = ciaa.ciapra; /* CIA-A Port A — mouse button 1 (bit 6) */ UBYTE potgor = custom.potgor; /* POT port — mouse button 2 (bit 10) */ BOOL leftButton = !(ciaA_pra & 0x40); /* Active low */ BOOL rightButton = !(potgor & 0x0400); /* Active low */ if (leftButton && rightButton) { /* Both buttons held — enter Early Startup Control */ ShowBootMenu(); } ``` ### Display The ESC menu uses the lowest-level graphics possible: - Opens a 640×200 (or 640×256 PAL) 2-color screen - Uses the Topaz 8 ROM font (always available — no disk access needed) - Renders using direct `RastPort` calls — no windows, no layers - Mouse pointer uses hardware sprite 0 ### Boot Menu Rendering Order 1. `graphics.library` init completes → display hardware ready 2. `intuition.library` init completes → input handling ready 3. Check mouse buttons 4. If held: create the boot menu screen 5. Wait for user selection + BOOT button 6. Close screen, continue boot with selected options --- ## Recovery Scenarios ### Corrupted Startup-Sequence ``` Problem: System hangs during boot — bad script Fix: 1. Hold both mouse buttons → ESC menu 2. Select "Boot With No Startup-Sequence" 3. Boot → CLI prompt appears 4. Edit the script: ED S:Startup-Sequence 5. Reboot normally ``` ### Wrong Display Mode (No Picture) ``` Problem: Changed to PAL on NTSC monitor (or vice versa) — screen blank Fix: 1. Power off 2. Hold both mouse buttons, power on 3. ESC menu appears (uses safe display mode) 4. Select correct display mode (PAL/NTSC) 5. Click BOOT ``` ### Boot from Floppy Instead of Hard Disk ``` Problem: Hard disk is corrupted, need to boot from floppy Fix: 1. Insert bootable Workbench floppy in DF0: 2. Hold both mouse buttons during boot 3. Select DF0: as boot device 4. Click BOOT 5. System boots from floppy — hard disk accessible as DH0: ``` ### Assign Loops / Infinite Requester ``` Problem: Startup-Sequence has an Assign to a missing volume → "Please insert volume X" in infinite loop Fix: 1. ESC menu → "Boot With No Startup-Sequence" 2. Fix the Assign in S:Startup-Sequence 3. Or: Add NOREQ flag to the problematic Assign Assign >NIL: WORK: DH1: ``` ### Hard Disk Not Appearing in Boot Menu ``` Problem: DH0: doesn't show in the ESC boot device list Possible causes: 1. IDE/SCSI device not detected — check cables 2. No valid RDB (Rigid Disk Block) — use HDToolBox 3. Boot priority not set — use HDToolBox to set BootPri 4. Partition table corrupt — try mounting from floppy boot ``` ### Testing Multiple OS Versions ``` Scenario: Two OS versions on different partitions 1. Install OS 3.1 on DH0: (BootPri 0) 2. Install OS 3.2 on DH1: (BootPri -5) 3. Normal boot → DH0: (OS 3.1) 4. ESC menu → select DH1: → boots OS 3.2 5. Or: change BootPri in HDToolBox to swap default ``` --- ## Keyboard Alternative On Amiga 1000 (no right mouse button connector) or when mouse is unavailable: - Some A1000 models use a key combination instead of mouse buttons - External button boxes connected to the joystick port can substitute - DiagROM provides keyboard-driven boot menu alternatives --- ## References - RKRM: Early Startup chapter - OS 3.1 AmigaGuide: `System/BootMenu` - OS 3.2 Release Notes: new ESC menu options - See also: [DOS Boot](dos_boot.md) — what happens after device selection - See also: [Cold Boot](cold_boot.md) — hardware init before ESC menu - See also: [Kickstart Boot Diagnostics](kickstart-boot-diagnostics.md) — POST color codes if boot fails before ESC menu