The Altair 8800 panel, on one page
Sixteen switches along the bottom, and every one of them is a bit. Up is 1, down is 0. The eight on the right, A7 to A0, are the data switches: they are what DEPOSIT writes. All sixteen are the address switches: they are what EXAMINE looks at. The left eight, A15 to A8, double as the sense switches, and a program reads them with IN 377.
Addresses are read as two bytes, high then low, three octal digits each: address 000 000 is the first byte of memory and 377 377 is the last. Front panel work is done in octal because the switches are grouped in threes on the panel itself.
| D7 0 | D6 0 | D5 1 | D4 1 | D3 1 | D2 0 | D1 1 | D0 0 |
| 2 bits → 0 | 3 bits → 7 | 3 bits → 2 | |||||
So the top octal digit of a byte is never more than 3. A byte whose first digit is 4 has been misread.
The control switches
| Up / down | What it does |
|---|---|
| OFF / ON | Down is on. Memory wakes holding a random pattern and loses it all on the way back up. It stays put. |
| STOP / RUN | Down runs, up stops. Only RESET works while it is running. It springs back. |
| SINGLE STEP / SLOW | Up runs one instruction. Down is this page’s own addition, a few instructions a second. It springs back. |
| EXAMINE / EXAMINE NEXT | Up shows what is at the address switches. Down moves on one address. It springs back. |
| DEPOSIT / DEPOSIT NEXT | Up writes the eight data switches there. Down moves on one, then writes. It springs back. |
| RESET / CLR | Up sends the program counter to zero. Down clears the boards in the cage. It springs back. |
| PROTECT / UNPROTECT | Up write-protects the board holding the address on show. Down releases it. It springs back. |
| AUX / AUX | Never wired to anything. The panel says so by drawing both of them black. It springs back. |
| AUX / AUX | Never wired either, like the one beside it. It springs back. |
The lamps
| Lamp | Lit when |
|---|---|
| INTE | Interrupts are enabled. |
| PROT | The memory on show is write-protected. |
| MEMR | The processor is reading memory. |
| INP | It is reading an input port. |
| M1 | This is the first cycle of an instruction: the byte on the data lamps is an opcode. |
| OUT | It is writing to an output port. |
| HLTA | It has halted. Only RESET or an interrupt gets it going again. |
| STACK | The address on show is a stack address. |
| WO | Low while the processor writes. It is lit for a read, which is most of the time. |
| INT | An interrupt is being acknowledged. |
One to try
| Address | Byte | Instruction |
|---|---|---|
| 000 000 | 072 | LDA 0010h |
| 000 001 | 020 | |
| 000 002 | 000 | |
| 000 003 | 107 | MOV B,A |
| 000 004 | 072 | LDA 0011h |
| 000 005 | 021 | |
| 000 006 | 000 | |
| 000 007 | 200 | ADD B |
| 000 010 | 062 | STA 0012h |
| 000 011 | 022 | |
| 000 012 | 000 | |
| 000 013 | 166 | HLT |
| 000 020 | 002 | DB 2 |
| 000 021 | 002 | DB 2 |
Putting a program in
- Power on, stop the machine, then RESET.
- Set the address switches to the first address and press EXAMINE.
- Set the eight data switches to the first byte and press DEPOSIT.
- Set the next byte and press DEPOSIT NEXT. Repeat to the end.
- Then go back: first address, EXAMINE, read the data lamps against the listing, EXAMINE NEXT through the lot. MITS gave that check five of the twenty-one steps in their own loading procedure (Altair BASIC Reference Manual, 1975, Appendix A), because one wrong byte in twenty gives a program that does something else and no clue which byte.
- RESET, then RUN.