$ IMSAI 8080 Emulator

View on GitHub →

A Rust emulator for the IMSAI 8080, the 1975 S-100 bus computer made famous in the movie WarGames. Emulates the Intel 8080 CPU, 64KB RAM, Tarbell FD1771 floppy disk controller, and IMSAI SIO-2 dual serial board with 8251A UARTs. Two front ends: a raylib interactive front panel GUI with toggle switches and LEDs, and a CLI terminal mode.

IMSAI 8080 Emulator front panel GUI

### hardware emulated

  • - Intel 8080 CPU - Full instruction set emulation
  • - 64KB RAM - Initialized to 0xFF on power-up (floating bus)
  • - Tarbell 1011 FDC - WD FD1771, 8" SSSD format (ports 0x48-0x4B)
  • - IMSAI SIO-2 - Dual 8251A UART serial board (ports 0x00-0x03)
  • - S-100 Bus - Port-mapped I/O dispatch to inline cards (no dynamic dispatch)
  • - Front Panel - Toggle switches, LEDs, EXAMINE/DEPOSIT/RUN/STOP

### running

front panel gui

cargo run --bin imsai-gui

terminal mode

cargo run --bin imsai-cli -- --program programs/hello-world.json

### controls

Mouse on switches - Toggle address/data bits
RUN/STOP or F5 - Start/stop CPU
STEP - Single instruction
EXAMINE / DEPOSIT - Read/write memory at address switches
F2 - Load program (.json picker)
F3 - Save memory to file
F4 - Mount disk image into drive A (.img/.dsk picker)
R - Cold reset (when stopped)
Ctrl+K - Command mode (CLI: load, mount, reset, quit)
Ctrl+D - Exit (CLI)

### requirements

Rust toolchain (1.80+)
raylib development libraries (for GUI)

ubuntu/debian

sudo apt install libraylib-dev

arch linux

sudo pacman -S raylib

macos

brew install raylib