BOOT Loaders ???

8 views
Skip to first unread message

Walt Perko

unread,
Oct 8, 2025, 8:12:34 PMOct 8
to Altair 8800
Hi, 

Here's a question for a ZOOM ... 

I'm watching Mike Douglas' Serial CP/M demo ... 

He's talking about an EPROM on his CompuPro RAM17 board and how he has all the MITS Altair ROMs in the one EPROM ...  

Not knowing what all these ROM images are, it would be nice to know what they are, the addresses they typically start at in the EPROM and if move to RUN ... and what each ROM image does.  


.


Patrick Linstruth

unread,
Oct 10, 2025, 5:33:30 AMOct 10
to Altair 8800
All of the standard Altair ROMs:

Turnkey Monitor @ FD00
Multi-Boot Loader (MBL) @ FE00
Disk Boot Loader (DBL) @ FF00


--
You received this message because you are subscribed to the Google Groups "Altair 8800" group.
To unsubscribe from this group and stop receiving emails from it, send an email to Altair-8800...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/Altair-8800/58ff30b0-ccef-473a-8e24-ed90fa0d98fen%40googlegroups.com.

Walt Perko

unread,
Oct 11, 2025, 4:12:42 PMOct 11
to Altair 8800
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


.
Reply all
Reply to author
Forward
0 new messages