amiga-bootcamp/02_boot_sequence/early_startup.md
2026-06-02 11:57:54 -04:00

254 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[← 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.03.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