$ IMSAI 8080 Emulator
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.
### 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