Introduction
Welcome to the SLP-8008 emulator, a faithful implementation of the Intel 8008 microprocessor for the Emulator.ca modem network. The 8008 holds a singular distinction in computing history: it was the world's first 8-bit microprocessor, the chip that made the personal computer revolution conceivable.
The 8008 Legacy
In 1972, Intel released the 8008---a chip originally designed as a terminal controller for Computer Terminal Corporation (later Datapoint). What emerged was something far more significant: a general-purpose 8-bit processor capable of running arbitrary programmes stored in memory. For the first time, a complete CPU existed on a single silicon die that could process data eight bits at a time.
The 8008 was modest by later standards---a 0.5 MHz clock, 14-bit address space (16 kilobytes), and an internal 8-level hardware stack---but it was revolutionary in its time. Notable systems built around the 8008 include:
- Mark-8 (1974) - One of the earliest home computer kits, published in Radio-Electronics magazine
- Micral N (1973) - Considered by many to be the first commercially available microcomputer
- SCELBI-8H (1974) - An early American hobbyist computer kit
- Custom terminals and controllers - The 8008's original intended market
The 8008's instruction set and register architecture directly influenced its successor, the Intel 8080, which in turn shaped the Z80 and the entire x86 lineage. Every modern PC traces its ancestry back to this humble 18-pin chip.
This 8008 emulator implements the complete documented instruction set. It provides 16KB of memory (the full 14-bit address space), BIOS support, and UART I/O for serial communication over the modem link.
Quick Start
Dial 555-8008 to see the Intel 8008 in action. The system loads a pre-compiled "Hello World" programme, executes it on the emulated 8008, and displays the output through the simulated UART. No interaction is required---simply connect and watch.
Getting Connected
To access the SLP-8008 system, configure your modem and dial:
ATDT555-8008
Upon successful connection, you will see the system banner followed by programme output:
CODE_FENCE_0
The demonstration loads the BIOS at address 0x0000, then loads the hello.bin test programme at 0x0100. Execution begins at the BIOS cold start vector, which initialises the system and transfers control to the test programme. After the programme outputs its message, the CPU executes a HLT instruction and the connection closes.
Terminal Settings
Configure your terminal software as follows:
- Terminal emulation: VT100 or ANSI
- Data bits: 8
- Parity: None
- Stop bits: 1
- Flow control: Hardware (RTS/CTS)
This service runs a pre-compiled hello world programme to demonstrate 8008 emulation. The programme executes automatically upon connection. The line disconnects after completion.
Architecture Overview
The Intel 8008 is an 8-bit microprocessor with a 14-bit address bus, providing access to 16 kilobytes of memory. Despite its simplicity, it established the register architecture pattern that would persist through the 8080, Z80, and x86 families.
Registers
The 8008 contains seven 8-bit registers:
+---+
| A | Accumulator
+---+
| B | General purpose
+---+
| C | General purpose
+---+
| D | General purpose
+---+
| E | General purpose
+---+
| H | High byte of memory pointer
+---+
| L | Low byte of memory pointer
+---+
A (Accumulator): The primary register for arithmetic and logical operations.
H and L: Together form a 14-bit memory pointer. Many instructions use the pair (HL) to reference memory indirectly---a convention that would carry forward to the 8080 and Z80.
B, C, D, E: General-purpose registers for data manipulation.
Flags
The 8008 maintains four condition flags:
| Flag | Description |
|---|---|
| Carry | Set on arithmetic carry or borrow |
| Zero | Set when result is zero |
| Sign | Set when result bit 7 is 1 (negative) |
| Parity | Set when result has even parity |
Memory Map
+------------------+ 0x3FFF (16383)
| |
| RAM |
| (15.75 KB) |
| |
+------------------+ 0x0100 (256)
| BIOS/ROM |
| (256 bytes) |
+------------------+ 0x0000 (0)
The 8008's 14-bit program counter limits the address space to 16KB. The BIOS occupies the first 256 bytes, and programmes load at 0x0100.
Internal Stack
Unlike its successors, the 8008 uses an internal hardware stack of eight levels. There is no stack pointer register exposed to the programmer, and no general-purpose PUSH/POP instructions. This limits subroutine nesting to eight levels deep---a constraint that required careful programme design.
I/O
The 8008 communicates with the outside world through IN and OUT instructions. In this implementation, the UART peripheral provides serial I/O for communication over the modem link.
What the Demo Does
The hello world demonstration exercises several key aspects of the 8008 emulator:
BIOS Initialisation - The BIOS at address 0x0000 performs system setup and jumps to the programme entry point at 0x0100.
String Output - The test programme iterates through a message string stored in memory, sending each character to the UART output port.
UART Communication - Characters written to the UART appear on your terminal through the modem connection, demonstrating the complete data path from CPU register to your screen.
HLT Instruction - After the message is displayed, the programme executes a HLT instruction, which halts the processor. The emulator detects this and cleanly terminates the session.
The entire programme executes in milliseconds of emulated time, though the output trickles through at modem speed---an authentic touch that would have been familiar to anyone using an 8008-based terminal in 1973.
See Also
- SLP-8080 (555-8080) - Intel 8080 emulator, the 8008's direct successor
- SLP-8088 (555-8088) - Intel 8088 emulator, the IBM PC processor
- SLP-Z80 (555-4355) - Zilog Z80 emulator, the 8080's most famous descendant
- SLP-6502 (555-6502) - MOS 6502/C64 graphics demonstration
- SLP-BASIC (555-0300) - High-level BASIC programming