Hi,
A follow-up on the Altair ROMs:
The three ROMs are key parts of how MITS and other Altair 8800 systems booted or initialized programs in the mid-1970s.
Background: Altair ROM Memory Map
On the MITS Altair 8800 and 8800B, ROMs were often located at the very top of the 64 KB address space.
Here’s how these fit together:
ROM Start Address Typical Size End Address Function
Turnkey Monitor FD00h 256 bytes (1 page) FDFFh Front-panel replacement; run/boot control
Multi-Boot Loader (MBL) FE00h 256 bytes FEFFh Chooses which boot device or port to load from
Disk Boot Loader (DBL) FF00h 256 bytes FFFFh CP/M or BASIC disk boot loader
That topmost region (FD00–FFFF) is 768 bytes — it contains all three ROMs in sequence in later Altair systems with the “Turnkey Module.”
1. Turnkey Monitor (FD00h)
Purpose:
The Turnkey Monitor ROM was designed to allow an Altair to start up and run programs automatically without using the front panel switches — hence the term “turnkey,” as in “turn the key and it runs.”
Functions:
• Initialize system hardware (I/O ports, bus, etc.)
• Provide a small command prompt or menu (in some versions)
• Read a boot command or jump address from a fixed location or switch setting
• Jump to the Multi-Boot Loader (FE00h) if configured to do so
• Optionally allow serial console input (via 88-2SIO or 88-ACR interface)
Behavior:
When the Altair is powered up, if the CPU reset vector points to FD00h, the Turnkey Monitor executes immediately.
It typically checks switch settings or a configuration byte to determine the next action — either:
• Run user code from a specific address, or
• Chain into the MBL at FE00h.
2. Multi-Boot Loader (MBL) — FE00h
Purpose:
The MITS Multi-Boot Loader is a general-purpose loader that supports multiple I/O devices — cassette, paper tape, serial line, or disk — depending on the hardware configuration switches.
Functions:
• Polls or reads a configuration word (from front panel or switch byte)
• Depending on setting, it can:
o Load from cassette (via 88-ACR)
o Load from paper tape reader (via 88-PIO or 88-2SIO)
o Boot from disk controller (by jumping to DBL at FF00h)
• Loads a program into RAM (often starting at address 0000h)
• Transfers control to the loaded program
Behavior Example:
If switch setting = “Disk Boot,”
→ MBL jumps to FF00h to run the Disk Boot Loader (DBL).
If switch setting = “Paper Tape,”
→ MBL reads bytes from paper tape reader and loads into memory, then starts it.
3. Disk Boot Loader (DBL) — FF00h
Purpose:
The Disk Boot Loader was the final-stage loader used when a floppy disk system (like the MITS 88-DCDD or 88-DCDD-II controller) was installed.
Functions:
• Initialize the disk controller I/O ports
• Load the boot sector (typically track 0, sector 1) into RAM (usually at address 0000h)
• Transfer control to the boot sector code — for example:
o CP/M system loader
o Disk BASIC
o MITS DOS
o Other operating environments
Behavior Example:
Reset → FD00h (Turnkey Monitor)
→ FE00h (MBL)
→ FF00h (DBL)
→ 0000h (boot sector in RAM)
→ OS loads & runs
Typical ROM Chain on an 8800 Turnkey System
Power On → CPU starts at FD00h (Turnkey Monitor)
↓
Turnkey Monitor selects boot mode (or always jumps to FE00h)
↓
Multi-Boot Loader decides device type (disk, tape, serial)
↓
If disk chosen → jump to FF00h (Disk Boot Loader)
↓
Disk Boot Loader loads sector 0 from disk to RAM at 0000h
↓
Transfer to 0000h — operating system (CP/M, BASIC, etc.) runs
Summary Table
ROM Address Size Function
Turnkey Monitor FD00h 256 bytes Initializes system; may auto-jump to MBL
Multi-Boot Loader (MBL) FE00h 256 bytes Selects boot device (disk, tape, serial)
Disk Boot Loader (DBL) FF00h 256 bytes Loads boot sector from disk into RAM
.