PCjs Machines – 在浏览器中模拟经典 IBM PC、DEC 小型计算机、计算器和游戏
PCjs Machines – 在浏览器中模拟经典 IBM PC、DEC 小型计算机、计算器和游戏
PCjs Machines 将 1970‑1990 年代的计算带入浏览器
PCjs Machines 让任何人都可以在现代网页浏览器中启动功能完整的 IBM PC 兼容机、DEC 小型计算机、经典计算器和街机游戏,保留原始体验,无需安装遗留硬件或操作系统。
该项目由 Jeff Parsons 在 GitHub 上维护(MIT 许可证),提供了大量的硬件、操作系统、应用程序和文档的仿真目录。
你今天可以运行的内容
- IBM PC 兼容机 – 从最初的 Model 5150 到 AT、XT、AT‑兼容的 COMPAQ 机器,甚至 IBM PS/2 型号。每台机器都可以使用 CGA、EGA、VGA 或单色图形启动,许多还包含完整的 BIOS 源码。
- DEC 小型计算机 – PDP‑10 KA10/KL10、PDP‑11/20/45/70,配备多种操作系统(RT‑11、RSTS/E、UNIX 变种)和诊断磁带。
- 可编程计算器 – TI‑57、TI‑55、TI‑42 和 Ohio Scientific Challenger 1P,内置 BASIC 程序和诊断工具。
- 街机经典 – 《Space Invaders》(1978)在其原始硬件配置下运行。
- 软件库 – 超过 200 款作品,涵盖早期 PC‑DOS 实用工具(DONKEY.BAS、VisiCalc)到 Windows 95、MS‑DOS 游戏(Wolfenstein 3D、Dune II)、生产力套件(Lotus 1‑2‑3、Microsoft Word)以及经典文字冒险(Zork I‑III、The Hitchhiker’s Guide to the Galaxy)。
- 开发工具 – 原始编译器和汇编器(Turbo Pascal、Microsoft C、Borland Sidekick、IBM Macro Assembler)均可运行,使得在浏览器中进行历史软件开发成为可能。
所有这些都可以通过站点上的 PCjs Explorer 树访问,您可以展开分类、随机选择机器,或深入到具体的 ROM 和磁盘映像。
为什么它对保存和教育很重要
- 真实的硬件行为 – JavaScript CPU 核心仿真时序、I/O 端口和视频内存布局,程序与仿真硬件的交互方式与原机完全相同。
- 零安装访问 – 用户只需现代浏览器,无需虚拟机镜像、启动介质或遗留操作系统。
- 开源透明 – 源代码(https://github.com/jeffpar/pcjs)公开可用,开发者可以审计、扩展或将仿真器移植到其他平台。
- 教育价值 – 学生可以在不需要稀缺或易损的实体硬件的情况下,探索早期操作系统、汇编语言和 GUI 的演进。
来自 Hacker News 的社区亮点
mk_stjames: “我在 PCjs 中的 Windows 3.1 里创建了一个 VB 程序,导出 .exe 和 vbrun100.dll,拷贝到真实的 1992 年软盘上,并在一台复古的 486 DX 上运行。整个链路——现代 Mac → JavaScript 仿真器 → 软盘 → 1992 年硬件——运行得毫无瑕疵。”
这展示了 PCjs 跨越数十年计算的桥梁能力,使现代开发者能够生成能够在真实复古机器上运行的软件。
glimshe: “PCjs 上的 Visicalc(1981)展示了真正的革命是什么样子。”
该评论强调了 PCjs 上软件的历史意义;这不仅是怀旧,更是突破性应用的活生生博物馆。
drivers99: “探索 IBM PC 启动盘可以工作,但音乐有卡顿。”
用户报告了轻微的仿真不完美,这在用 JavaScript 重现模拟声音硬件的复杂性时是可以预期的。
CharlesW: “等不及要让孩子们坐在全屏的《Oregon Trail》和《King’s Quest》面前了。”
PCjs 让经典游戏瞬间可供新一代玩家玩耍。
martin_drapeau: “Dune II、Wolfenstein 3D 和 Commander Keen——全部是我曾经玩过的游戏。非常棒!”
这些标题的广度涵盖了早期 90 年代的标志性 PC 游戏,保存了一个互动娱乐的时代。
入门指南
- 访问 https://www.pcjs.org/ – 首页显示徽标和导航链接(About、Blog、Explorer、Repository、Tools)。
- 打开 Explorer – 点击 Expand All 浏览完整硬件树,或使用 Surprise Me 随机选择一台机器。
- 选择机器 – 例如,选择 IBM → PC (Model 5150) → VGA Display 启动一台带 VGA 图形的完整仿真 IBM PC。
- 加载软件 – 点击任意软件缩略图(如 Microsoft Windows 3.1 或 Zork I),系统会自动挂载相应的磁盘映像。
- 交互 – 仿真器提供键盘和鼠标输入,大多数机器还能通过浏览器的音频 API 播放原始声音。
技术基础
- CPU 核心 – 使用纯 JavaScript/TypeScript 编写,仿真器实现了 8088/8086、80286、80386、80486、8080、6502 和 PDP‑11 指令集。
- 内存与 I/O – 内存映射与原始硬件一致,支持 DMA、中断控制器和外设端口。
- 图形 – 文本模式 CGA/EGA/VGA 与光栅图形在 HTML5 canvas 上渲染;颜色调色板匹配原始硬件规格。
- 存储 – 磁盘映像以 JSON 描述符存储,仿真器按需读取,实现快速加载且无网络延迟。
- 可扩展性 – 通过定义描述 CPU 类型、RAM 大小、ROM 文件和外设的 JSON 清单即可添加新机器。
限制与未来方向
- 音频保真度 – 某些程序(如 Dune II)出现音量或时序问题;鼓励社区贡献声卡模型。
- 外设支持 – 并非所有遗留外设(如早期调制解调器、专用显卡)目前都有仿真。
- 低端设备性能 – 虽然现代桌面能够流畅运行仿真,但老旧智能手机可能会出现卡顿。
- 文档缺口 – 虽然站点链接了大量手册和数据表,但某些冷门硬件配置仍缺乏详细说明。
贡献方式
项目欢迎各种贡献:
- 代码 – Fork 代码库,改进 CPU 核心、添加新设备或修复 bug。
- 内容 – 提交额外的磁盘映像、手册或软件包,需符合相应的公有领域或共享软件许可证。
- 测试 – 在多个浏览器上运行现有测试套件(CPU 测试、VGA Black Book 测试),并报告回归问题。
结论
PCjs Machines 提供了一个全面的、基于浏览器的平台,让人们能够体验、保存并学习个人计算机历史的全谱——从第一台 IBM PC 到早期 Windows,从 DEC 小型计算机到经典街机游戏。其开源特性和庞大的软件档案使其成为爱好者、教育工作者以及任何想重温塑造当今数字世界的计算时代的人的宝贵资源。