MartyPC 是一个用 Rust 编写的跨平台早期 PC 模拟器,支持 Windows、Linux 与 macOS,可模拟 IBM PC、XT、PCJr 与 Tandy 1000 等基于 8088 CPU 的系统。项目本周登上 HN 热榜,并新上线了网页版,无需安装即可在浏览器里体验。
从学 Rust 的业余项目到硬核调试工具
作者 dbalsom 2022 年 4 月启动该项目,初衷只是”边学 Rust 边从零写一个模拟器”,如今功能远超预期。它的定位是复古 PC 开发辅助工具:内置大量调试与日志设施,写 8088 软件的开发者可以逐周期观察代码执行。目前 GitHub 上已收获 891 星。
周期级精确:用真芯片对拍验证
MartyPC 最硬核之处在于 CPU 模拟精度。2022 年 11 月起,作者用 Arduino MEGA 连接一颗真实的 8088 芯片,让模拟器与真芯片逐周期同步执行并比对结果;2024 年 6 月又扩展测试套件覆盖指令预取队列,修正了大量周期误差。如今它通过 8088 V2 测试套件,周期精度达 99.9997%。外设模拟同样较真:作者用示波器研究 DMA 时序,甚至自制逻辑分析仪总线嗅探器解剖 IBM 5150。
精度带来了实打实的成果:2023 年 4 月,MartyPC 成功运行了传奇 PC demo《8088 MPH》;同年 5 月,它成为首个能完整模拟《Area 5150》全部效果的 PC 模拟器。
社区反响
HN 讨论(55+ 评论)中,有用户调侃”为什么标题从不说’用 C 写的'”回应 Rust 情结;有人误以为它模拟的是 FM Towns Marty 而失望;还有用户报告了 backslash 键被映射成 backspace 的小 bug——正是这类细节让模拟器爱好者乐此不疲。
原文: MartyPC 官网 / GitHub 仓库
HN 讨论: 链接