Synth Daily

微软公开 45 年前 DOS 源码:当年的代码是一摞打印纸

微软公开了目前已知的最早 DOS 源代码,这些代码来自 45 年前的纸质打印稿。内容讲述了 86-DOS 如何从一个工程师的临时项目演变为 MS-DOS 的基石,以及微软如何通过低价收购获得了它。整个过程也揭示了将这些古老的纸质代码数字化所面临的挑战,包括 OCR 错误、格式恢复,并发现公开的版本存在部分缺失和后续修复的痕迹。

86-DOS 的诞生:一个临时的解决方案

1980 年,一家名为 Seattle Computer Products (SCP) 的公司在销售基于 Intel 8086 的电脑板卡,但由于缺乏配套的操作系统,机器销量不佳。当时唯一的软件是微软写的 BASIC,用户无法方便地管理文件或运行程序。

为了解决这个问题,公司工程师 Tim Paterson 用几个月时间快速开发了一个新系统。

  • 最初名称: QDOS (Quick and Dirty Operating System),意为“快速又粗糙的操作系统”。
  • 后来更名: 86-DOS。
  • 核心目的: 它原本只是一个为了“先让机器能用起来”的临时方案。

这个临时项目,却刚好赶上了 IBM PC 诞生前夜,并最终改变了个人电脑的历史。

微软的收购之路

当时,IBM 正在开发第一代个人电脑(IBM PC),急需一个操作系统,而微软自己并没有。于是,微软找到了 SCP。

  • 1980 年 12 月: 微软以 2.5 万美元 的价格,购买了 86-DOS 的非独占许可证。
  • 1981 年 5 月: 微软聘请了 86-DOS 的作者 Tim Paterson,将该系统移植到 IBM PC 上。
  • 1981 年 7 月: 微软以 5 万美元 的价格,从 SCP 购买了 86-DOS 的全部版权。

随后,微软将 86-DOS 授权给 IBM,后者演变为 PC-DOS 1.0。微软自己则保留了向其他公司出售该系统的权利,这便是 MS-DOS 的开端。

后来 SCP 公司起诉微软,称其在收购时故意隐瞒了 IBM 这个大客户,从而以极低的价格拿走了系统。双方最终在 1986 年庭外和解,微软向 SCP 额外支付了约 92.5 万美元

从纸张到代码的挑战

这次公开的 45 年前源代码并非数字文件,而是保存在一摞摞连续的打印纸上。将其整理成现代的 GitHub 仓库,面临着巨大困难。

这些打印稿包含了源码、汇编列表、调试记录,以及大量手写的修改痕迹。整理过程如下:

  1. 扫描: 将古老的纸质打印稿重新扫描成图片。
  2. OCR 识别: 使用光学字符识别技术将图片转为文本。由于年代久远,纸张模糊,导致大量识别错误(如 0O:;)。
  3. 人工校对: 团队需要逐行进行人工校对和修复。

一个更麻烦的问题是空格和对齐

早期汇编代码非常依赖固定列宽,指令、参数、注释通常都要严格对齐。一旦 OCR 把空格、Tab 或字符间距识别错位,整段代码的布局就会乱掉。

不完整的“原始”代码

在分析源码时,研究人员发现了一些有趣的事实:

  • 存在缺失: 代码中有些地方会突然少掉几行,或注释中断。这被推测是在早年通过串口传输源码时发生的错误,而非 OCR 识别问题。
  • 被修复过: 这次公开的“86-DOS 1.00”版本,实际上已经修复了某个已知的 Bug,功能上更接近后来的 1.01 版本。这意味着它可能不是最原始的 1.00 版本。

一个时代的印记

参与项目的研究人员表示,最特别的经历是能与那些亲历 PC 革命早期的人交流。

当年的很多开发者,并不觉得自己正在“创造历史”。这些项目对他们来说,更像是一份工作、一个项目,或者一种兴趣爱好。

那时候还没有 Git、GitHub 和云同步,很多源码真正留下来的方式,只是一摞摞连续打印纸。谁也没想到,45 年后,人们还会重新翻出这些泛黄的纸张,试图拼凑出 DOS 最早的历史。