A terminal-driven emulator for several vintage computer systems, featuring a lightweight interactive console loop.
- Motorola 6809: A powerful 8-bit (with 16-bit features) microprocessor.
- MITS Altair 680: A compact 6800-based computer.
- Kaypro II: A Z80-based CP/M machine.
To build and run the emulator, you will need:
clang/clang++makeobjdump(Linux) orotool(Darwin)
Build the emulator from the repository root:
makeThis will produce the following outputs in the build-emu/ directory:
emu: The main emulator binary.emu.lst: A disassembly listing of the emulator itself.
To clean the build artifacts:
make cleanOr for a full cleanup:
make spotlessRun the default system (currently 6809):
./build-emu/emuShow the help message and a list of supported systems:
./build-emu/emu -hRun a specific system with a custom ROM:
# 6809 with BASIC
./build-emu/emu -s 6809 -r test/BASIC.HEX
# Altair 680 with mits680b ROM
./build-emu/emu -s altair680 -r mits680b.bin
# Kaypro II with system ROM
./build-emu/emu -s kaypro -r rom/kaypro/kayproii_u47.binThe emulator runs in a raw terminal mode.
- Use
Ctrl-Dto exit the interactive console loop and shut down the emulator cleanly.
cpu/: CPU core implementations (6800, 6809, Z80).dev/: Emulated devices (Memory, UARTs, etc.).system/: Concrete system implementations and the system factory.console.cpp: Terminal handling and interactive loop.libihex/: Submodule for Intel HEX file support.test/: ROMs, test scripts, and assembly code for verification.