MartyPC Logo
MartyPC is a cross-platform emulator of early PCs written in Rust. It supports Windows, Linux, and macOS, emulating several 8088-based systems, including the IBM PC, XT, PCJr, and Tandy 1000.
For a comprehensive guide on using MartyPC, click here.
You can find builds through periodic releases. For the latest automatic builds, check the Actions tab under the Artifacts for each workflow run. (Note: You must be logged in to GitHub to download Artifacts).
MartyPC began as a hobby project to explore the process of writing an emulator from scratch while learning Rust. Initially, the goals were modest, but the project evolved to offer advanced functionality and accuracy, making it a valuable tool for retro PC development. MartyPC is particularly useful for programmers working with the Intel 8088, offering precise cycle-by-cycle execution analysis.
Started in April 2022, MartyPC's 8088 CPU emulation was enhanced to achieve cycle-accuracy by November 2022. This was validated against a real 8088 CPU connected to an Arduino MEGA microcontroller. More details can be found in the Arduino8088 project and this blog post.
In June 2024, the 8088 test suite was updated to support the prefetch queue, leading to further accuracy improvements. MartyPC now passes the 8088 V2 Test Suite with 99.9997% cycle-accuracy.
Extensive research has also been conducted to enhance peripheral emulation, including the 8253 timer chip, DMA timings, and building a bus sniffer. MartyPC can accurately run the PC demo 8088 MPH and Area 5150.
You can run MartyPC directly in your browser using WebAssembly builds:
MartyPC offers extensive features for accurate emulation and debugging:
CPUs:
Video Cards:
Storage Devices:
System Hardware:
Add-on Cards:
Input Devices:
MartyPC supports custom machine configurations via profiles and overlays, similar to installing extension cards. The debugging GUI includes instruction disassembly, CPU state, memory viewer, and peripheral states. Breakpoints and instruction/cycle-based logging are supported.
MartyPC supports multi-window operation and includes a basic, configurable CRT shader with plans for more shader support.
For more images, visit the Screenshot Gallery.