---
title: 微软公开 45 年前 DOS 源码：当年的代码是一摞打印纸
date: 2026-05-30T07:53:44Z
modified: 2026-05-30T07:53:52Z
permalink: "https://www.appinn.com/microsoft-open-45-year-old-dos-source-code-paper-listing/"
type: post
status: publish
excerpt: ""
categories:
  - 这是什么
tags:
  - 这是什么
  - DOS
  - 微软
featured_image: "https://www.appinn.com/wp-content/uploads/2026/05/Copy-of-appinn-homework-29.jpg"
author: 青小蛙
timestamp: 2026-05-30T07:53:52Z
---

早些时候，微软发布了一篇名为《[续写早期 DOS 开发的故事](https://opensource.microsoft.com/blog/2026/04/28/continuing-the-story-of-early-dos-development/)》的文章，公开了目前发现的最早的 DOS 源代码。来自 45 年前的纸质打印稿。@[Appinn](https://www.appinn.com/microsoft-open-45-year-old-dos-source-code-paper-listing.md)

![](https://www.appinn.com/wp-content/uploads/2026/05/Copy-of-appinn-homework-29.jpg)

## 目录

- [86-DOS 1.00 是什么？](#86-dos-1-00-是什么？)
- [微软如何买到了 DOS？](#微软)
- [86-DOS 与 PC-DOS](#86-dos-与-pc-dos)
- [45 年前的源代码是如何整理出来的？](#45-年前的源代码是如何整理出来的？)
    - [Tim Paterson 的打印稿](#tim-paterson-的打印稿)
    - [OCR、空格与源码恢复](#ocr、空格与源码恢复)
    - [缺失的一块](#缺失的一块)
    - [被修复过的 1.00](#修复)
- [当代码还保存在打印纸上](#rich-cini-说)



## 86-DOS 1.00 是什么？

1980 年，一家叫 **Seattle Computer Products**（SCP）的小公司正在卖基于 Intel 8086 的电脑板卡。

机器有了，但没有系统。

当时他们手里唯一能配套卖的软件，只有微软帮忙写的 BASIC-86。但用户既没法方便地管理文件，也没法正常加载和运行软件，所以机器一直卖得不太好。

（早期计算机，开机直接进入 BASIC，并没有操作系统的概念）

后来，公司里的工程师 Tim Paterson 干脆自己动手，用几个月时间快速写了一个新系统，最早叫 QDOS（Quick and Dirty Operating System），后来改名成 86-DOS。

它原本只是一个为了“先让机器能用起来”的临时方案，却刚好赶上了 IBM PC 诞生前夜。

## 微软如何买到了 DOS？

那时候，IBM 正在开发第一代 IBM PC，而微软自己又没有现成的操作系统，于是微软找上了 Seattle Computer Products，获得了 86-DOS 的授权，后来又直接买下了全部权利。

- 1980年12月，微软以2.5万美元的价格从西雅图计算机产品公司，购买了86-DOS的非独占许可证。
- 1981年5月，微软聘请蒂姆·帕特森（Tim Paterson）将该系统移植到IBM PC上。
- 1981 年 7 月，微软以 5 万美元的价格从 SCP 购买了 86-DOS 的全部版权。
- 微软随后把 86-DOS 授权给 IBM，并最终演变成 PC DOS 1.0。
- 该许可证还允许微软将 DOS 出售给其他公司（这又是另外一个故事了）

另外，后来 SCP 认为，微软在购买 86-DOS 全部权利时，故意隐瞒了 IBM 已经是大客户这件事，因此用很低的价格（5 万美元）拿走了系统，于是起诉了微软。

1986 年，陪审团已经开始讨论结果时，双方庭外和解，微软向 SCP 支付了约 92.5 万美元，作为交换，微软彻底拿回 DOS 相关授权问题。

再往后，86-DOS 被改造成 IBM PC 使用的 PC-DOS，并逐渐发展成后来的 MS-DOS。

## 86-DOS 与 PC-DOS

参与恢复与校对的 **Rich Cini** 在对比源码时发现，86-DOS 与后来的 PC-DOS 之间，其实并不像很多人想象中那样“完全不同”。很多代码、结构甚至注释，都能直接对应上。

当年的源码保存方式和今天完全不同，很多资料并不是磁盘文件，而是打印出来保存的 listing。部分源码后来又经过传输、复制和重新打印，因此不同版本之间会出现细微差异。

![](https://www.appinn.com/wp-content/uploads/2026/05/ChatGPT-Image-2026-5-27-17_28_56.avif)

## 45 年前的源代码是如何整理出来的？

45 年，已经非常久远了。青小蛙遇到这个情况，肯定是要计算一下的：2026-45=1981。

这次微软公开在 GitHub 的核心代码几乎都是 Intel 8086 汇编写的，源码文件以 .ASM 为主。

![](https://www.appinn.com/wp-content/uploads/2026/05/86-DOS-artifact-and-IBM-PC.avif)

![](https://www.appinn.com/wp-content/uploads/2026/05/th_pcimage1.avif)

**这些代码并没有保存在硬盘中，而是保存在打印纸上。**

### Tim Paterson 的打印稿

86-DOS 作者 Tim Paterson 当年保留下来的，是一摞摞连续的打印纸。打印出来的包括源码、汇编列表、调试记录，还有大量手写修改痕迹。

DOS History（DOS 历史）保存团队重新扫描这些老打印稿，再通过 OCR 把图片转成文本。但由于年代太久，很多字符已经模糊，OCR 识别错误也不少，比如 0 和 O、1 和 I、: 和 ;，于是又需要人工逐行校对、修复。

![](https://www.appinn.com/wp-content/uploads/2026/05/68747470733a2f2f617263686976652e6f72672f646f776e6c6f61642f7061746572736f6e5f6c697374696e67732f696d616765732f7061746572736f6e5f70686f746f2e6a7067-1.avif)

蒂姆-帕特森（Tim Paterson）在他的工作室里与一堆 DOS 稿纸。

### OCR、空格与源码恢复

还有个更麻烦的问题：空格。当这些老打印稿重新整理成源码文件时，空格在哪里，有几个，都是问题。

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

比如下面的指令、参数、注释，都要严格对齐（现代显示都很难对齐啊）：


LABEL     MOV AX,BX
                 INT 21H  


而 1980 年代的打印稿，又大量使用固定空格进行排版。甚至连当年开发过程中划掉的代码、临时修改、注释痕迹，也尽量保留了下来。

最后，他们才把这些资料重新整理成今天的 GitHub 仓库。

- 项目地址：[https://github.com/DOS-History/Paterson-Listings/](https://github.com/DOS-History/Paterson-Listings/)

**这次公开的，是“目前发现的最早 DOS 源代码”。**

![](https://www.appinn.com/wp-content/uploads/2026/05/listings.avif)

![](https://www.appinn.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-12.31.06-2x.avif)### 缺失的一块

Rich Cini 在分析源码时发现，部分内容存在缺失：有些地方会突然少掉几行代码，部分注释也出现了中断。

他认为这些缺失不像 OCR 识别错误，更像是在早年源码传输过程中就已经出现的问题。并推测当年 SCP 向 Microsoft 传输源码时，可能发生过串口传输错误。

### 被修复过的 1.00

Rich Cini 还发现，这次公开的“86-DOS 1.00”内核，其实已经修复了 STORE Bug，因此功能上更接近后来的 1.01。这部分代码修改时间，可能已经晚于最初的 1.00 版本。

## 当代码还保存在打印纸上

Rich Cini 说，对他来说，最特别的，是能与那些亲历 PC 革命早期的人交流。当年的很多开发者，并不觉得自己正在“创造历史”。

这些项目对他们来说，更像是一份工作、一个项目，或者一种兴趣爱好。

那时候还没有 Git、GitHub 和云同步，很多源码真正留下来的方式，只是一摞摞连续打印纸。

谁也没想到，45 年后，人们还会重新翻出这些打印稿、软盘和 listing，试着把 DOS 最早的开发历史重新拼回来。

---

原文：https://www.appinn.com/microsoft-open-45-year-old-dos-source-code-paper-listing/

参考链接：

1. [Tim Paterson’s DOS Source Listings](https://github.com/DOS-History/Paterson-Listings/)
2. [Continuing the story of early DOS development](https://opensource.microsoft.com/blog/2026/04/28/continuing-the-story-of-early-dos-development/)
3. [Tim Paterson’s DOS Source Listings and Other Things](http://cini.classiccmp.org/recoveryblog.htm)
4. [86-DOS](https://en.wikipedia.org/wiki/86-DOS)

## Topics

**分类目录:** [这是什么](https://www.appinn.com/category/%e8%bf%99%e6%98%af%e4%bb%80%e4%b9%88/?output_format=md)

**标签:** [DOS](https://www.appinn.com/tag/dos/?output_format=md), [微软](https://www.appinn.com/tag/%e5%be%ae%e8%bd%af/?output_format=md)