RetroComputerInstructionManual

The Altair 8800 front panel

A distinguishing feature of the Altair and IMSAI computers is their primary user interface - the front panel covered in LEDs and switches.

Although initially overwhelming, there is a logical pattern to the designs which you’ll soon come to understand and appreciate. They provide a unique look into the working of the computer in a way that no modern system can offer.

An Altair 8800

There are four sets of LEDs on the Altair front panel:

LED Description
Status Located in the top left, these ten LEDS describe the current state of the processor
WAIT/HLDA Located just under the Status LEDs, these LEDs let you know if the computer is running (WAIT will be off), and if a HOLD has been acknowledged .
Data Located in the right right, these eight LEDs can signify the byte stored at a specific address.
Address Located in the middle of the panel, these sixteen LEDs represent an address in memory, from 0000h to FFFFh

Status LEDs

Altair status leds

LED Description
INTE An interrupt has been enabled.
PROT The memory currently referenced by the program counter is read only. Rarely used by an Altair-Duino.
MEMR The address bus will be used to specify the memory to be read.
INP The address refers to an input device.
M1 The CPU is processing the first part of an instruction.
OUT The address refers to an output device.
HLTA The assembly instruction HALT has been executed, and acknowledged.
STACK The address bus holds the Stack Pointer’s push-down stack address.
WO The operation being executed is a Write or Output operation.
INT An interrupt request has been acknowledged.

WAIT/HLDA LEDs

Altair status leds

LED Description
WAIT The computer is not currently executing code.
HLDA A HOLD has been acknowledged.

Data LEDs

Altair data leds

When the computer is not running, the WAIT light is on, and EXAMINE or EXAMINE NEXT has been toggled, these LEDs represent the data stored at the current address.

Address LEDs

Altair address leds

When the computer is not running, the WAIT light is on, and EXAMINE or EXAMINE NEXT, or DEPOSIT or DEPOSIT NEXT, or RESET has been toggled, these LEDs represent the current address.

Why are they numbered to A15 to A0, and not A16 to A1? Because programmers love to count from 0: Memory maps (0000h), scores in video games, array indices - everything starts at zero.

Altair control switches

Altair control switches

Button Action
STOP/RUN Start or stop the computer from executing code at the current address.
SINGLE STEP If the computer is not currently running code, the WAIT light will be on, and SINGLE STEP will execute the next instruction in memory. Some systems have a SLOW option when toggled down, which repeatedly steps through code.
EXAMINE Set the program counter to the address set by the 16 switches, and display the byte at this address.
EXAMINE NEXT Increment the program counter by 1, and display the byte at this updated address.
DEPOSIT Write the byte represented by the right-most switches into the memory at the current address.
DEPOSIT NEXT Increment the program counter by 1, and write the byte represented by the switches into this updated address.
RESET Set the program counter to zero. If the computer is still running code, it will continue at address 0.
CLR Send a clear command to external equipment - unsupported by default on Altair-Duino/IMSAI8080esp systems.
PROTECT/UNPROTECT Mark a section of memory as read only. Unsupported by default on most Altair-Duino systems.
AUX1 Action depends on specific hardware installed. On Altair-Duino used to select various options.
AUX2 Action depends on specific hardware installed. On Altair-Duino used to select various options.

Altair Address, Data and Sense switches

Altair control switches

These switches serve multiple purposes.

Specify an address

If the computer is not currently running code (the WAIT LED is on) then you can use these sixteen switches to select the address of the program counter. When all are down, the address is 0000h. When all are up, it’s FFFFh.

Typically you would set the switches to specify an address, and then toggle EXAMINE. The address LEDs will change to reflect the same address, amd the data LEDs will display the byte at that address.

Specify data

With an address set, you might want to write a new value at that location. At this point you can use the eight right-most switches to specify the value, and then toggle DEPOSIT or DEPOSIT NEXT. The position of the switches will define the byte that is now written to memory.

Sense

If a program is running, the eight left-most switches can be used to provide into into the computer. The computer can use IN FFh to read the current state as an 8-bit number.

Examples

This can be rather confusing, so let’s look at some very specific examples.

Example 1 - Start at memory address and count upwards

Example 2 - Read the contents of memory

Example 3 - Writing to memory and confirming the data is correct.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0

Remember your binary?

7 6 5 4 3 2 1 0
128 64 32 16 8 4 2 1

Let’s set two toggle switches to create a value of 3.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1