一颗 1980 年代的低成本视频芯片组,今天还能挖出官方手册没写的功能。
GitHub 作者 schlae 公开了 IBM MCGA 两颗门阵列芯片的逆向工程资料。重点不是怀旧,而是一个反常点:IBM 手册里标成 Reserved 的位,在硅片里并不一定沉默。至少有一部分,是真的连着电路、能改变行为。
这件事影响的人不算多,但很具体:复古计算玩家会多一个校准硬件行为的依据;模拟器作者可以修正边界模式;硬件维修和保存的人能少猜几个寄存器;研究芯片设计史的人,则看到一份比手册更接近实物的证据。
MCGA 是什么,这次拆到了哪里
MCGA,全称 Multi-Color Graphics Array,是 IBM PS/2 Model 25 和 Model 30 使用的低成本视频芯片组。
它不是 VGA 的完整替代品,也别把它硬接到现代 GPU 祖先叙事里。它更像 IBM 当年给特定低端 PS/2 机器配的一套视频方案:够用、集成、节省成本。
这次逆向的对象,是 MCGA 芯片组里的两颗门阵列。
| 芯片 | 作用 | 这次成果 | 边界 |
|---|---|---|---|
| 72X8300 内存控制门阵列 | 类似 MC6845 的同步发生器,管理显存、字符 RAM、时钟选择等 | Seiko SLA6430 版本已逆向,含 4342 个基本单元 | 不代表所有版本完整复原 |
| 72X8205 视频格式化门阵列 | 解码 ISA 内存和 IO 地址,管理 RAMDAC,生成图形与文本像素数据 | Seiko SLA6330 版本已逆向,含 3312 个基本单元 | IBM 内部门阵列版本因开盖时顶层金属被去除,无法提取完整网表 |
这里最重要的限制要先钉住:这不是 IBM 官方开源,也不是官方补档。它是个人/民间逆向项目。
也不能写成“两颗芯片所有版本都被完整复原”。材料里很清楚,IBM 内部门阵列版本受开盖损伤影响,完整网表拿不到。逆向的价值恰恰在这里:它不靠口号,而靠能确认多少就说多少。
手册写 Reserved,硅片未必真的空着
最抓人的发现,是 MCGA 可以通过外部 HSYNC 和 VSYNC 做 genlock。
相关信号接到视频接口的 ID0、ID1 引脚;启用控制位在寄存器 0x12 的 bit 3。问题在于,IBM PS/2 Model 30 技术参考手册里,这个位标的是 Reserved。
这就很有意思。
Reserved 在厂商文档里常常像一块黑布。它可能代表未开放,可能代表工厂测试,可能代表未来扩展,也可能只是“不打算告诉你”。这次至少证明,MCGA 里有一块黑布下面确实有东西。
其他发现更硬核,但对写模拟器、修机器、读旧板子的人更有用。
| 位置 | 发现 | 对谁有用 |
|---|---|---|
| 0x12 bit 3 | 可启用外部 HSYNC/VSYNC genlock,手册标为 Reserved | 模拟器作者、硬件验证者可补边界行为 |
| 0x10 bit 3 | Compatibility 只影响 80x25 文本模式 | 避免把它误当成泛化兼容开关 |
| 0x10 bit 2 | 可在 25.175MHz 与 14.318MHz 时钟间切换 | 解释部分时钟与显示模式行为 |
| 0x20 | 制造测试模式寄存器 | 帮助识别工厂测试路径,不宜当普通功能滥用 |
| 72X8205 的 0x18/0x19 | 制造测试寄存器访问入口 | 可观察 RAMDAC、VRAM 等内部路径数据 |
| 0x1A bit 0/1 | 未文档化扩展模式位 | 作用仍未完全确认 |
动作层面很直接。
做模拟器的人,可以把这些寄存器位纳入测试项,但不能把 unknown 位当成已知功能。修 PS/2 Model 25/30 的人,可以用测试寄存器和时钟行为去缩小故障范围,但也要小心:制造测试模式不是用户功能,误用可能带来误判。
硬件逆向读者最该看的是方法,而不是只看结论。Seiko 版本能提取出网表,IBM 内部门阵列版本却因为顶层金属丢失而断线。这说明老芯片保存不是“有实物就行”。保存得晚一点、拆得粗一点,信息就真的没了。
项目材料里仍有 unknown 和 not fully understood。这一点反而增加可信度。好的逆向不负责把所有洞填满,它负责把已知边界画准。
这不是怀旧,是给封闭硬件补账
我更在意的不是 MCGA 到底多强。它并不强。它只是 IBM 给低端 PS/2 做的一套视频方案。
真正重要的是:官方文档并不等于完整技术史。
产品手册服务的是当时的开发者、维修者和商业节奏。它会省略内部测试路径,会隐藏未开放功能,会把复杂实现压成几个寄存器表。等产品停产,工程师离开,内部资料散掉,后来的人再读手册,读到的往往是删节本。
“纸上得来终觉浅”。放在芯片史里,这句话一点不虚。寄存器表只能告诉你厂商愿意写什么;硅片连接才告诉你工程上实际做了什么。
这类逆向对复古计算圈的价值,不是把老机器捧成神物,而是减少误读。
对模拟器作者,价值是更接近实机。某些文本模式、时钟选择、保留位行为,过去可能只能凭经验猜,现在有硅片证据可对照。
对硬件维修者,价值是少走弯路。制造测试寄存器和内部路径暴露出来后,故障定位多了几条线索。但限制也在这里:这些路径本来给工厂用,不能假装它们是完整诊断工具。
对技术档案和开源硬件保存的人,价值更直白:别等到“以后再说”。老芯片的知识不是躺在仓库里自动保鲜。封装、金属层、照片、网表、注释、测试程序,少一环都可能断。
接下来最该观察的,不是 GitHub 上多几个 star。
更有意义的变量有三个:这些网表和寄存器发现是否被模拟器、文档库、维修资料吸收;unknown 位是否能被更多实机测试收窄;其他 MCGA 版本有没有机会在损伤更小的样本上复核。
如果这三件事往前走,这个项目就不只是一次漂亮的拆芯片。它会变成一块可复用的技术档案。
历史上很多技术遗产都是这样留下来的。铁路、电报、早期计算机、街机板卡,官方文件通常先服务运营,后来才被研究者重新整理。今天换成门阵列和寄存器,本质没变:商业周期结束后,知识债还在。
MCGA 不是什么被埋没的王者。它普通,才更说明问题。大公司做产品,文档留一半,时间吃掉另一半,最后靠少数执拗的人从硅片里把账翻出来。
这一次,手册少说的话,硅片补了一句。
