网页里跑一台 Altair 8800,不算稀奇。

稀奇的是,S-100 Virtual Workbench 不是让你点一下“启动 CP/M”,而是让你把 Intel 8080、RAM、串口卡、软驱控制器一张张拖进 S-100 插槽。机器不是被端上来给你看,而是被你拼出来。

这就是它最有意思的地方:它把早期个人计算机的骨架重新摆到台面上。总线怎么连,I/O 端口怎么占,内存怎么映射,BIOS 为什么要适配具体控制器,页面里都能看到线索。

它模拟的不是一台终端,而是一套 S-100 机器

项目页面显示,S-100 Virtual Workbench 支持把板卡拖拽到 S-100 插槽中。默认示例是一台 Altair 8800 CP/M 2.2 机箱,已经插好 CPU、内存、串口和软驱控制器,并挂载 AltairCPM22.dsk

默认配置大致是这样:

模块默认示例读者该看什么
CPUIntel 80808080 指令、RST 中断、HOLD/HLDA 总线仲裁
内存RAM Card地址范围、MEMR/MEMW 响应
串口MITS 88-2SIOCP/M 控制台,Channel A 使用 0x10/0x11
软驱MITS 88-DCDD挂载 AltairCPM22.dsk,服务 Altair CP/M 2.2

它的板卡库还包括 Zilog Z80、ROM、通用 SIO、WD1771 风格 FDC、WD1793 FDC、Cromemco Dazzler 彩色图形卡、Processor Technology VDM-1 文本显示卡、SOL-20 板载 I/O。

这类信息对普通用户可能偏硬。但对复古计算机和 CP/M/S-100 爱好者,它正好切中痛点:你可以不只看系统启动,还能追问系统为什么能启动。

CPU 放哪里,内存占哪段地址,串口挂哪个端口,软驱控制器暴露哪些寄存器,视频卡如何映射到内存。早期微机的麻烦,也正是它的教育价值。

真正的价值,是把硬件边界露出来

普通复古模拟器常见的路径,是给你一个已经能跑的 CP/M 镜像。你看到的是结果:提示符出现了,命令能执行,老系统活了。

S-100 Virtual Workbench 的重点不在结果,而在过程。

路线你看到什么学到什么
普通 CP/M 镜像一个可用终端CP/M 命令和老软件体验
S-100 虚拟工作台板卡、插槽、端口、映射、控制信号机器如何被组合出来

这个差别很大。

CP/M 不是凭空运行的。它需要 BIOS 知道控制台在哪里,磁盘控制器怎么读写,内存布局能不能容纳系统,I/O 端口有没有冲突。这里面没有玄学,只有地址、寄存器、总线信号和适配代码。

项目材料提到的 8080 指令、Z80 扩展指令、内存映射 I/O、RST 中断、HOLD/HLDA 总线仲裁、WD1771/WD1793 类软驱接口,正好把这些边界摊开了。

我更在意的是,它给学习者提供了一条很具体的路径:

  • 想学 CP/M 的人,不必只背系统史,可以从控制台 I/O 和磁盘接口看起。
  • 想补计算机组成的程序员,可以拿地址映射、端口访问、中断和总线仲裁做实验对象。
  • 想讲课的硬件学习者,可以用它演示“为什么一块板卡插错地址,系统就不是原来的系统”。

这比“体验一下古董系统”更扎实。

当然,限制也要说清。现在能看到的材料只支持把它称作网页项目或虚拟工作台。不能把它说成成熟商业平台,也不能默认它已经精确复刻所有 S-100 硬件时序。

接下来最该观察的变量很具体:板卡配置能不能稳定保存,调试信息能不能更细,BIOS/ROM 适配是否方便修改,软驱和视频卡的行为是否足够可验证。看这些,才知道它会停在展示玩具,还是长成教学工具。

越黑箱,越需要这种旧课

今天的计算机越来越不像一台“机器”。手机、浏览器、云服务、AI 平台,都把内部结构包得很厚。封装提高效率,也削弱理解。

这不是坏事。没人希望每次写程序都从总线讲起。

但代价也摆在那儿:很多人会调 API,会部署服务,会拼模型能力,却说不清一个字符怎样进系统,一个扇区怎样进内存,一个显示字节怎样变成屏幕上的文本。

古人说“格物致知”。放在这里并不玄。你得先看见“物”,才知道知识落在哪里。

S-100 时代的个人计算机有一种粗粝的透明感。CPU、RAM、ROM、串口、软驱、显卡都可以是一块板。机器能不能工作,不是一个品牌承诺,而是一组可检查的连接关系。

这和今天不完全一样。今天的复杂度高得多,封装也有现实必要。只是历史常常这样回声:技术越成熟,控制权越集中;系统越好用,边界越隐身。

S-100 Virtual Workbench 的价值,就在于给了一次反向观看。它不负责让你回到 1970 年代,也不负责替代真实硬件。它只是把“计算机如何成为计算机”这件事,从黑盒里拖出来。

对复古玩家,它是更细的玩具。对学习者,它是更好的剖面。对长期写软件的人,它提醒一件朴素的事:界面不是机器,终端也不是系统。下面那层骨架,才决定一切。