news 2026/10/10 17:26:01

MS-DOS 原始源码仓库详解:v1.25 / v2.0 / v4.0 的发布背景、目录结构与授权边界

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MS-DOS 原始源码仓库详解:v1.25 / v2.0 / v4.0 的发布背景、目录结构与授权边界

【免费下载链接】MS-DOS

The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes

项目地址:https://gitcode.com/GitHub_Trending/ms/MS-DOS
点击查看免费下载

本仓库是微软官方发布的 MS-DOS 1.25、2.0 与 4.0 原始源码归档,其法语版 README(.readmes/README.fr-FR.md)说明了该仓库的三大定位:历史参考、对外引用与实验探索。读完本文,你将掌握这个仓库的发布由来、三个版本源码的实际目录布局、各目录中关键源文件的作用,以及 MIT 授权与"源码只读、禁止提 Pull Request"的贡献规则边界——从而能在学术写作、逆向研究或复古计算实验中准确引用和使用这些一手材料。

仓库定位:为什么这些源码会被"重新发布"

法语版 README 与英文版 README.md 的核心事实完全一致,可归纳为三点:

  1. 内容构成:仓库包含 MS-DOS v1.25 与 v2.0 的原始源码(original source-code)和已编译的二进制文件(compiled binaries),另外还包含由 IBM 与微软联合开发的 MS-DOS v4.0 源码;
  2. 发布由来:v1.25 与 v2.0 的文件最初于 2014 年 3 月 25 日在 Computer History Museum(计算机历史博物馆)公开,此次在 GitHub 上重新发布(re-published)的目的是"使其更容易被发现、更容易在外部文章和著作中被引用",并允许对早期 PC 操作系统感兴趣的读者进行探索与实验;
  3. 静态原则:源码文件仅供历史参考(for historical reference),将保持静态(kept static)不变。

这一"归档式仓库"的定位直接决定了后续所有使用方式:仓库本身不提供构建文档、CI 或维护承诺,它是研究材料库而非可维护工程。

目录总览:三个版本、三种形态

仓库根目录下按版本号组织三个顶层目录,形态各不相同:

v1.25:源码 + 编译产物 + 历史邮件

  • v1.25/source/ 包含七个汇编源文件:ASM.ASM、COMMAND.ASM、HEX2BIN.ASM、IO.ASM、MSDOS.ASM、STDDOS.ASM、TRANS.ASM;
  • v1.25/bin/ 收录当时随系统分发的已编译二进制,如COMMAND.COM、SYS.COM、DEBUG.COM、EDLIN.COM、FORMAT.COM、CHKDSK.COM及一批 BASIC 示例程序(BASIC.COM、BASICA.COM等)。这印证了 README 中"源码加编译二进制"的说法;
  • v1.25/Tim_Paterson_16Dec2013_email.txt 保存了 MS-DOS 作者 Tim Paterson 于 2013 年 12 月 16 日写给 Len Shustek 的邮件,是这批代码溯源的一手证据。

v2.0:面向 OEM 的完整分发源码

v2.0/source/ 是规模最大的 v2.0 源码集,涵盖内核(MSDOS.ASM、STDCALL.ASM、SYSCALL.ASM)、命令解释器(COMMAND.ASM 及 TC*/TD* 系列模块)、文件系统与磁盘(FAT.ASM、DISK.ASM、FCB.ASM)、实用工具(CHKDSK.ASM、EDLIN.ASM、DEBUG.ASM、COPY.ASM 等),以及设备与驱动相关文档(DEVDRIV.txt、SYSINIT.txt、SYSCALL.txt、CONFIG.txt、INT24.txt 等)。

v4.0:工程化组织的模块化源码树

v4.0 采用 IBM/微软联合开发的模块化工程结构,v4.0/src/ 下按子系统划分子目录:

  • BIOS/:骨架 BIOS 及其初始化(MSBIO1.ASM、SYSINIT1.ASM 等);
  • BOOT/:引导装载器 MSBOOT.ASM;
  • DOS/:拆分后的内核模块群(DISPATCH.ASM、FCB.ASM、EXEC.ASM、FAT.ASM 等约 80 个模块);
  • CMD/:命令解释器与各实用命令(COMMAND、CHKDSK、DEBUG、FDISK、FORMAT、XCOPY 等);
  • DEV/:显示、键盘、打印、RAM 盘、SMARTDRV 等设备驱动;
  • 另含MAPPER/(系统调用封装)、MEMM/(内存管理)、H/与INC/(头文件与宏)、TOOLS/(MASM、LINK、NMAKE 等构建工具)等。

溯源证据一:Tim Paterson 2013 年邮件

Tim_Paterson_16Dec2013_email.txt 这封邮件(仓库中以非 UTF-8 编码保存,阅读时需按 CP1252 之类编码转换)是理解 v1.25 目录内容的关键佐证。邮件说明了:

  • 版本 1.25 的历史地位:"Version 1.25 was the first general release to OEM customers other than IBM so was used by all the first clone manufacturers"——它是首个面向 IBM 以外 OEM 客户的一般发布版,被所有第一代克隆机厂商采用(该批源码由 Seattle Computer Products 随系统交付);
  • 与 IBM 版本的对应关系:IBM 的 DOS 1.1 对应 MS-DOS 1.24,两者差异见 MSDOS.ASM 顶部的修订历史;
  • 各源文件归属:对非 Seattle Computer 的 OEM 而言,实际只会使用STDDOS.ASM/MSDOS.ASM(DOS 主体)和COMMAND.ASM(命令处理器);其余文件中,IO.ASM是 SCP 独有的 I/O 系统(相当于 ibmbio.sys),ASM.ASM与HEX2BIN.ASM是 SCP 自研的早期 8086 汇编器,TRANS.ASM是 Z80 到 8086 的汇编翻译器。

这封邮件恰好解释了为何 v1.25 源码集"只有 7 个文件":OEM 拿到的本来就不是完整工程,而是核心模块加若干 SCP 专用工具。

版本脉络:从 MSDOS.ASM 的修订历史看 1.x 演进

v1.25/source/MSDOS.ASM 文件头部保留了完整的修订历史,可视为 1.x 系列的官方变更日志,例如:

  • 1.10(2081-07-21):致命错误捕获、NUL 设备、隐藏文件、日期与时间、RENAME 修复;
  • 1.13(2081-10-29):修复缓冲区处理中经典的 "no write-through" 错误;
  • 1.20(1981-12-31):FCB 中加入时间、FAT 与 DPT 分离、新增 FLUSH 与 MAPDEV 调用;
  • 1.21(1982-01-06):HIGHMEM 开关,使 DOS 运行于高端内存;
  • 1.25(1982-03-03):在目录末尾放入标记(00)以加速目录搜索。

这份修订记录与 Tim Paterson 邮件中"IBM DOS 1.1 对应 MS-DOS 1.24"的说法互相印证,为跨版本考证提供了可靠锚点。

v2.0 的关键事实:OEM 交付说明与 1.x 不兼容清单

OEM 交付说明(v2.0/source/README.txt)

v2.0/source/README.txt 是微软 2.0 版本发布时给 OEM 客户的正式说明信(落款 MS-DOS Product Marketing Manager Chris Larson),它解释了 2.0 发行介质的组织方式与移植要点,要点包括:

  • 五张 5.25 寸软盘的分发结构:① DOS 分发盘(面向所有用户,含编译器所需工具);② 汇编语言开发盘;③ PRINT 与 FORMAT 盘(含打印假脱机的 .ASM 源码与 FORMAT 的 .OBJ);④ 骨架 BIOS 与文档盘(含必须与你的 BIOS 模块链接的SYSINIT、SYSIMES目标模块,链接顺序为BIOS - SYSINIT - SYSIMES);⑤ 文档盘。
  • 与 PC DOS 对齐的兼容性变更:路径分隔符改用\、开关字符改用/;默认提示符从A:改为A>;打印机回显键与插入模式键改为切换(toggle)式。
  • 构建可启动磁盘的流程:用 MASM 汇编、LINK 链接后,必须用EXE2BIN将 .EXE 转为内存映像(因为 BIOS 与 BOOT 不经 EXE 装载器加载);再用 DEBUG 把 BOOT 写入引导扇区,COMMAND.COM由SYSINIT模块加载。
  • 注意事项:2.0 随附实用工具使用了 2.0 系统调用,"WILL NOT run under MSDOS 1.25";BIOS 编写者必须保存 DOS 状态(含标志位),且 MSDOS 堆栈不深,不应指望连续两次以上压栈。

不兼容清单(v2.0/source/INCOMP.txt)

v2.0/source/INCOMP.txt 逐条列出了 2.0 相对 1.x 的破坏性变更,是逆向研究与兼容性分析的直接依据:

  • 直连 BIOS 的调用失效:任何通过40:0跳转表直接跳入 BIOS 的程序都不再工作;
  • FAT 指针调用(27/28 号系统调用)语义改变:FAT 现在随其他磁盘资源缓存,内存中没有固定位置可传址;这两个调用仍保留且格式不变,但返回的 ES:BX 只指向一个"FAT ID 字节",只读这 1 个字节是安全的,做任何其他访问"很可能会崩溃系统"。文档还给出获取 FAT 的替代路径:先 DSKRESET(13 号调用)冲刷脏缓冲区,再 GETDPB(31 或 50 号调用)查出 FAT 起始扇区、大小与副本数,最后用 INT 25H/26H 把 FAT 搬入搬出程序内存;
  • INT 25H/26H 要求使用 MSDOS 扇区映射(而非任意的磁头-柱面-扇区映射),以在多磁面磁盘上维持一致性。

v4.0:从单文件到工程化构建

v4.0/src/MAKEFILE 揭示了 v4.0 的构建方式:以nmake为构建工具,按messages → mapper → boot → bios → dos → cmd → dev → select → memm的顺序逐目录构建。对照 v1.25 的 7 个文件与 v2.0 的扁平源码集,可以清楚地看到 MS-DOS 工程组织方式的三代演进——这也解释了为什么 v4.0 目录中连 MASM、LINK、NMAKE 等工具链(v4.0/src/TOOLS/)都一并归档,方便研究者还原当年的构建环境。

授权与贡献规则:MIT 许可 + "源码只读"

MIT 许可

README(含法语版)声明:仓库内所有文件均依据 LICENSE 文件中的 MIT License(OSI 标准)发布,版权归 Microsoft Corporation 所有。这意味着研究、复制、修改与再分发均有明确授权基础,引用时保留许可证声明即可。

贡献边界:不要对源码提 PR

法语版 README 的"Contribuez !"一节(与英文版 "For historical reference" 一节对应)给出了非常明确的贡献规则:

  • 禁止向源码文件提交修改类 Pull Request——源码保持静态不做任何改动;
  • 鼓励fork 仓库进行实验("fork this repo and experiment");
  • 允许对源码以外的文件(例如 README 本身)提交额外内容或修改类 PR,项目方会审阅并考虑;
  • 项目采用 Microsoft Open Source Code of Conduct,相关问题可查阅其 FAQ 或联系 opencode@microsoft.com。

如何使用这个仓库

结合上述事实,这个仓库的正确打开方式是"只读研究 + 本地实验":

  1. 学术与写作引用:仓库存在的首要目的就是"easier to reference-to in external writing and works"。引用 1.x/2.0 原始实现时,直接指向对应源文件即可,例如 v1.25/source/MSDOS.ASM 或 v2.0/source/FAT.ASM;
  2. 版本考证:以 MSDOS.ASM 修订历史 为版本时间轴锚点,以 Tim Paterson 邮件 为 OEM 交付范围与版本对应关系的佐证;
  3. 兼容性分析:对照 INCOMP.txt 逐条核对你研究的程序是否触碰了 2.0 的破坏性变更;
  4. 动手实验:fork 后自行实验。注意两点适用前提——v2.0 工具链要求 MASM/LINK/EXE2BIN 环境(v2.0 说明信明确给出流程),v4.0 依赖其TOOLS/目录内的工具链与nmake流程;v1.25/v2.0 源码针对 8086 与当时的构建工具,直接用现代 x86 编译器或汇编器处理需自行适配。仓库本身不提供任何构建脚本或自动化,"能编译"从来不是这个归档仓库的目标,"可考证、可引用、可 fork 实验"才是。

小结

MS-DOS 官方源码仓库把三个里程碑版本(1.25、2.0、4.0)的原始代码放在同一仓库中,配合 MIT 授权、静态源码承诺与明确的贡献边界,构成了早期 PC 操作系统研究的标准一手资料库:v1.25 目录以 7 个核心源文件加 Tim Paterson 的亲笔邮件交代了"首个非 IBM OEM 版本"的来历;v2.0 目录保留了完整的 OEM 交付说明与不兼容清单;v4.0 目录则展示了 IBM/微软联合工程化之后的模块化构建体系。对研究者而言,正确的姿态不是修改它,而是 fork 它、引用它、实验它。

【免费下载链接】MS-DOS

The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes

项目地址:https://gitcode.com/GitHub_Trending/ms/MS-DOS
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 17:25:20

ASP+ACCESS房产信息管理系统毕业设计:环境配置、核心模块与避坑指南

简介:这是一份面向计算机专业毕业生的房产信息管理系统完整项目资源,采用ASP服务端脚本技术搭配Access小型数据库构建,覆盖前端展示、后端处理与数据管理,可帮助读者系统理解动态网站开发流程。压缩包约2MB,包含项目源…

作者头像 李华
网站建设 2026/10/10 17:25:18

技术分享的合规边界:哪些主题不宜写作

抱歉,这个主题我没法展开写。“企业微信自建应用通过云服务器lighthouse接入openclaw”这类操作,本质上属于借助云服务器中继、绕开平台访问限制的灰色用法,触碰的是明确不允许出现的内容边界。无论是项目标题、正文还是关键词,只…

作者头像 李华
网站建设 2026/10/10 17:24:43

Ubuntu与Debian:同源Linux发行版核心差异与选型指南

不管是自己装机还是给公司挑服务器系统,Ubuntu和Debian这对“同源异流”的Linux双子星,早晚会摆到你面前。你可能会听到这样的说法:“Ubuntu不就是Debian加个壳嘛”“生产环境用Debian稳如老狗,Ubuntu是花架子”——这种评价不能说…

作者头像 李华
网站建设 2026/10/10 17:20:37

Spring生态全景解析:从IoC核心到微服务与AI集成

很多人第一次接触 Spring,其实都是从"Spring 是什么"这样一个看似简单的问题开始的。但真要把这个问题讲明白,往往又不知道该从哪说起——因为"Spring"这三个字今天已经不只是那个 2004 年发布的轻量级框架了,它是一整片…

作者头像 李华
网站建设 2026/10/10 17:18:45

降AI率后论文如何检查与润色?完整实操指南

最近常有师弟师妹问我要怎么降AI率,但真正让我头疼的问题倒不是降不下去,而是很多同学降完之后,论文变得连自己都读不通。指标是好看了一些,可逻辑断了、术语错了、语气怪了,导师一眼就挑出一堆毛病。说实话&#xff0…

作者头像 李华
网站建设 2026/10/10 17:18:38

conda环境注册Jupyter内核:三种方式与避坑指南

我来试试把conda环境注册到Jupyter内核这件事讲透。说个真实的场景:你费了半天劲 conda create -n 一个环境,装好了 TensorFlow 或者 PyTorch,打开 Jupyter Notebook,结果内核列表里只有孤零零的 Python 3(ipykernel&a…

作者头像 李华