导读:微软在 DOS 操作系统诞生 45 周年之际,正式开源了86-DOS 1.00 源代码。这是 IBM PC 历史上首个正式落地的 DOS 版本。
在以往的岁月里——近20余年来,微软曾有几次发布其得以发家的 MS-DOS 系统的源代码。
4月29日,微软(Microsoft)又将目光投向了更久远的过去,发布了“迄今为止发现的最早的 DOS 源代码”,其名字叫做86-DOS,包含相关文档与程序员开发笔记。
1980 年,微软拿到了为 IBM PC 开发操作系统的订单,时任 CEO 的比尔·盖茨面对的是近乎不可能完成的交付周期。他没有选择从零开发,而是花了约 $75000,从西雅图计算机产品公司(Seattle Computer Products)和 86-DOS 作者 Tim Paterson 手中买下了系统的全部版权。
这笔交易帮微软踩中了 IBM-PC 的风口,解决了当时的交付危机,更成了微软日后成长为全球科技巨头的关键转折点。
早期 86-DOS 的运行环境极其严苛,例如只能在 160KB 容量的软盘上运行,底层架构完全不支持 HDD 硬盘。

就是这样一个粗糙又简陋的系统,后来成了 MS-DOS 的底层核心。MS-DOS 随后横扫个人电脑市场,是 1980 年代到 1990 年代初,统治力最强的 PC 操作系统。在此次开源之前,外界能合法获取的最古老 DOS 版本是 MS-DOS 1.25 和 MS-DOS 2.0。
微软为此次开源这样解释道:“此次工作为MS-DOS/PC-DOS的诞生过程提供了罕见的见解,以及当时操作系统开发是如何进行的,而不是后来的重构版本。”
; 86-DOS High-performance operating system for the 8086 version 1.00 04/28/81
; by Tim Paterson
; ****************** Revision History *************************
; >> EVERY change must noted below!! <<
;
; 0.34 12/29/80 General release, updating all past customers
; 0.42 02/25/81 32-byte directory entries added
; 0.56 03/23/81 Variable record and sector sizes
; 0.60 03/27/81 Ctrl-C exit changes, including register save on user stack
; 0.74 04/15/81 Recognize I/O devices with file names
; 0.75 04/17/81 Improve and correct buffer handling
; 0.76 04/23/81 Correct directory size when not 2^N entries
; 0.80 04/27/81 Add console input without echo, Functions 7 & 8
; 1.00 04/28/81 Renumber for general release
;
; *************************************************************
; Use the switch below to generate code to accept the old 16-byte
; directory entry as well as the new 32-byte entry.
SMALLDIR: EQU 1 ;1 to enable, 0 to disable
; Turn on switch below to allow testing disk code with DEBUG. It sets
; up a different stack for disk I/O (functions > 11) than that used for
; character I/O which effectively makes the DOS re-entrant.
DSKTEST: EQU 0 ;1 to enable, 0 to disable
; Interrupt Entry Points:
; INTBASE: ABORT
; INTBASE+4: COMMAND
; INTBASE+8: BASE EXIT ADDRESS
; INTBASE+C: CONTROL-C ABORT
; INTBASE+10H: FATAL ERROR ABORT
; INTBASE+14H: BIOS DISK READ
; INTBASE+18H: BIOS DISK WRITE
; INTBASE+40H: Long jump to CALL entry point
MAXCALL:EQU 36
MAXCOM: EQU 41
ESCCH: EQU 1BH
INTBASE:EQU 80H
INTTAB: EQU 20H
ENTRYPOINTSEG: EQU 0CH
ENTRYPOINT: EQU INTBASE+40H
CONTC: EQU INTTAB+3
EXIT: EQU INTBASE+8
LONGJUMP:EQU 0EAH
LONGCALL:EQU 9AH
MAXDIF: EQU 0FFFH
SAVEXIT:EQU 10
微软的资深工程师和OSPO主任 Stacey Haffner 和 Scott Hanselman 在他们共同撰写的关于此次发布的博文中如此写道:
今天发布的源代码年代久远,甚至早于 MS-DOS 品牌的诞生,其中包括“86-DOS 1.00 内核的源代码、PC-DOS 1.00 内核的多个开发快照,以及一些知名的实用程序,例如 CHKDSK”,这些源代码年代久远,此前从未以数字形式保存。
此次公开的源码清单包含 3 个核心部分:
- 86-DOS 1.00 内核
- PC-DOS 1.00 内核的早期开发快照
- 经典系统工具(如CHKDSK)
除了底层代码,清单还附带了 Tim Paterson 的私人手写笔记,极大还原了当时的开发背景。这些手稿是研究 DOS 历史的核心一手资料,记录了 3 个维度的细节:
- 核心代码重构与变更的时间线
- 各项新特性的确切完工节点
- 开发阶段遇到的系统报错与技术缺陷
上述所有资料均由 Tim Paterson 老先生无偿捐赠,后续还会在 Interim Computer Museum 面向公众展示。

86-DOS的作者:Tim Paterson
“由 Yufeng Gao 与 Rich Cini 领导的一支由历史学家和存储专家组成的团队”,自称为“DOS 反汇编小组”,包括法律审查、档案工作和技术验证等流程。然后从 Paterson 提供的纸质打印件中一丝不苟地转录并扫描了源代码。
但是由于现代 OCR 软件难以识别几十年前的打印机输出质量,这个过程变得非常艰难。
GitHub 地址如下:
https://github.com/DOS-History/Paterson-Listings/tree/main
源代码包包含原始汇编语言文件、链接脚本和设备驱动程序实现,这些实现与1980年西雅图计算机产品公司使用的目录结构相同。微软提供了现代构建工具和交叉汇编器,可以在当代系统上编译源代码,并附有详细文档解释构建过程和依赖关系。
研究人员可以在保持与原始8086汇编语法和调用规范兼容的同时,使用现代开发环境来检查代码。该版本包含了调试符号和注释源代码,这些在原始商业发行版中未提供,提供了对开发者意图和设计理由的洞见。
而教育机构可以将源代码整合进计算机科学课程,微软提供教学材料和实验练习,展示使用真实历史代码展示操作系统的基本概念。公司还发布了预配置的虚拟机镜像,配备适当的开发工具,供希望在不搭建时代开发环境的情况下尝试代码的学生和研究人员使用。
微软决定开源这段历史代码,反映了公司在首席执行官Satya Nadella领导下实现的转型,既拥抱开源原则,又保护了计算遗产。
作者:手扶拖拉斯基
这是一部浓缩的计算机科学发展史,一部有趣的科学家人物传记,一部绝佳的人生发展读物——《改变世界的程序员》正式上市,收获现在开始↓