开源DOS操作系统-FreeDOS


微软在开发出Win95后停止了DOS的独立发展,但在Win95出现之前,微软已经明显地加强了Windows的开发而减慢了DOS的发展,并在Windows中采取一些不光彩的手段去排斥打击其他的DOS系统如DR-DOS等,以确保MS-DOS的统治地位,维护自己的商业利益。比如当在DR-DOS中运行Win3.x时,肯定不时会出现所谓的“错误”信息,采用GPL协议授权。

FreeDOS is a free DOS-compatible operating system that can be used to play games, run legacy software, or support embedded systems. FreeDOS is basically like the old MS-DOS, but better! For example, FreeDOS lets you access FAT32 file systems and use large disk support (LBA) — a feature not available in MS-DOS, and only included in Windows 95 and newer.
FreeDOS最初是设计作为MS-DOS的自由软件替代,但20年后的今天FreeDOS已经超越了MS-DOS,加入了新的功能,简化了使用,至今人们仍然在嵌入式设备上使用FreeDOS,在上面运行商业软件,或者在虚拟机里玩DOS游戏。
微软的专横做法当然引起了许多人的不满,许多团体甚至个人,包括大名鼎鼎的IBM公司都纷纷投入到开发兼容DOS的行列这中,意图打破微软对DOS的垄断局面。同时由于DOS的开放性和大家对DOS强大实用的功能的认识,DOS的种类不断增加,目前至少有20种,如PC-DOS、ROM-DOS、PTS- DOS、FreeDOS等,而新的功能,新的理念更是层出不穷。这里我们就为大家介绍一下最具代表性的FreeDOS。

FreeDOS工程(The FreeDOS Project)建立于1994年,由著名程序员Jim发起,并很快得到了众多使用者和程序开发者的响应。FreeDOS工程的目标是建立一个完整的、自 由开放的并且与MS-DOS完全兼容的新型DOS操作系统,这个DOS系统属于全人类。由于它是建立著名的GNU GPL(GNU通用公共许可证)协议下的自由软件,得到来自世界各地众多优秀程序员的支持,现在一直在不断的发展着,而且参加的人越来越多,通过互联网联 合起来朝着他们的目标去努力,充分体现了自由开放和团结的精神。现在FreeDOS的版本号已经发展到7.0,目前最新版本是Beta 8 H1,于今年9月推出。目前为它设计的DOS软件正在源源不断的推出和发展,不仅有各种外部命令,还有许多其它的增强程序和附件,而且质量既高也很实用, 往往超过MS-DOS中的同类命令。例如在它上面开发的Cute Mouse,就是目前DOS下最好(体积最小,功能最强)的鼠标驱动程序。而ATTRIB、XCOPY等众多外部命令,不仅比MS-DOS的同类命令效率 要高,而且体积不到后者的二分之一甚至几分之一。尤其重要的是,作为自由软件,它的源代码是完全公开的,显然对于需要学习和借鉴的国人,这是最好不过的事了。
FreeDOS与MS-DOS是完全兼容的,因此为它开发的软件基本上都可以直接移植过来在MS-DOS等DOS下使用。而我们国内外已经开发的绝大多数DOS软件也可以在它上面正常的运行。它的功能也十分强大,比如同样支持FAT32分区和大硬盘,部分功能已经远远超过MS-DOS。还有许多其它非常实 用的功能,如内置DOSKEY支持、支持极大的内存(最大高达4G)等。至于更多的功能,如长文件名功能等等,现在正在大家不断的努力下开发着,相信不久后就会成为现实。不仅如此,它的系统启动文件也比MS-DOS等小巧得多。它的核心文件只有一个,再加上一个SYS文件和一个命令处理器 COMMAND.COM文件,总共才130K,放在启动盘中是十分合适的。
不过与MS-DOS等DOS一样,上面介绍的FreeDOS是16位的。由于现在32位的操作系统逐渐成了大势所趋,因此为了跟上时代的发展,人们又开发了32位的FreeDOS操作系统,即内核为32位的FreeDOS版本FreeDOS 32,并再次得到了众多的支持。虽然目前它还不是很成熟,但它一直在发展着,而且毫无疑问,32位的FreeDOS有着划时代的意义,标志着DOS逐渐向 32位的内核的方向发展了。
尤其是在国外,不少人认为,FreeDOS将为DOS带来新的生机和气象,因此对此感兴趣和参加的人越来越多。无数的优秀程序员投入其中不断为 FreeDOS的发展添砖加瓦。目前,自由的FreeDOS越来越受到人们的关注,比如著名的Dell电脑公司就即将为它生产的部分电脑直接提供 FreeDOS操作系统。
DOS操作系统的历史简述
1973年:博士毕业的加里·基尔代尔Gary Kildall为英特尔刚推出的八位元处理器8008写出第一个微处理器的高阶语言PL/M(Programming Language for Microcomputers),接着为升级版的8080写出CP/M(Control Program for Microcomputers),可以控制IBM刚发明的软盘机,成为史上第一个磁盘操作系统(Disk Operating System),为今天广为使用的A盘、B盘和C盘(CD-ROM)编写了驱动程序。
1974年:加里·基尔代尔Gary Kildall帮助创建了硅谷最富盛名的“家酿俱乐部”(Home Brew Club),成为计算机业余爱好者交流的天堂,是硅谷点燃PC革命的中心。
1975年初:MITS电脑公司推出基于8080芯片的Altair 8800微机,这是人类历史上第一台PC(个人电脑)。
1976年:加里·基尔代尔Gary Kildall辞职创办Digital Research公司,正式开卖操作系统CP/M。它很快成为Intel 8080芯片的标准操作系统。为满足不同品牌机,加里·基尔代尔开发出不同版本的CP/M,此时他想到如果让CP/M架在一个专门控制输入/输出的程序BIOS(BASIC Input/Output System)上面,就不用修改CP/M,只须修改BIOS。BIOS让CP/M席卷使用英特尔处理器的电脑市场。加里·基尔代尔Gary Kildall发明第一个微处理器的高阶语言、发明第一个磁盘操作系统DOS、发明第一个BIOS。1994年7月,年仅52岁的加里·基尔代尔在加州蒙特利的寓所里,头部撞地,三日后不治身亡。一代大师凄凉离世,彻底告别了他爱恨交加的电脑业。“DOS之父”加里·基尔代尔Gary Kildall很快被历史遗忘了。

1980年8月:Seattle Computer Products(SCP)公司的24岁程序员Tim Paterson完成原始的操作系统,取名QDOS(简易的操作系统、Quick and Dirty Operating System)。充分借鉴CP/M,用户界面和编程接口几乎完全一样,这使得CP/M上的应用程序,可以直接在QDOS上运行。他做出的最大改变,就是为QDOS引入了微软公司BASIC解释器的FAT文件系统。
1980年10月:IBM决定推出基于Intel 8086芯片的PC,找到Digital Research公司,要求获得授权使用CP/M系统,协议没有谈成。IBM又去找微软,微软没有操作系统产品,但是Bill Gates知道SCP公司正在开发QDOS。微软支付2.5万美元,获得SCP的QDOS使用许可。IBM和微软签署合同:IBM一次性以约8万美元的价格为即将生产的PC购买微软MS-DOS操作系统的永久使用权。同时IBM还有权使用微软的BASIC编程语言、该公司的所有其它编程语言以及它开发的一些新的应用程序。作为对其放弃MS-DOS(现在应该称为IBM PC-DOS)永久使用权的交换,盖茨坚持保留将MS-DOS出售给其他公司的权利。
1981年7月:微软Bill Gates意识到未来PC市场的巨大规模,决定不再使用许可证模式,直接花费5-7万美元买下QDOS。
1981年7月27日:协议达成,QDOS成了微软的财产,正式改为MS-DOS。微软定义DOS“磁盘操作系统Disk Operating System”。1981年7月27日就是微软公司DOS操作系统的诞生纪念日。
1981年7月:为IBM PC配套的操作系统MS DOS 1.0诞生

1981年8月12日:IBM正式推出个人电脑产品IBM PC,使用MS-DOS 1.14版

1982年5月:微软为IBM的IBM PC发布MS-DOS 1.1,支持320KB双面软驱。
1982年6月:MS-DOS 1.25发布,只有7个文件,包括最初的MS-DOS命令行外壳,支持双面软盘,可运行在IBM兼容计算机上。
1983年3月:MS-DOS 2.0版发布,一次重大改版,正式采用文件配置表格式,大量使用具有UNIX特性的Handle式文件操作方式。支持10 MB硬盘, 一个树状子目录, 和360 KB 软盘。
1983年8月:中国国产微机操作系统CCDOS诞生,电子部六所的严援朝牵头开发,支持汉字存储和显示。





1984年:IBM推出下一代个人电脑IBM PC/AT,操作系统是MS-DOS 3.0版。
1984年11月:微软发表 MS-DOS 3.1,增加对网络的支持。
1988年:MS-DOS 4.0版发布,开始支持鼠标和图形界面。微软已经准备终结DOS这个产品了,微软公开表态,用户可以考虑放弃DOS,转而使用由IBM和微软共同开发的OS/2操作系统。
1988年:中国希望公司发布超级组合式中文平台UCDOS。此后,该软件一度成为我国DOS平台市场份额最大的中文操作系统。
1991年:MS-DOS 5.0版发布,内置QBasic编程环境。这是MS-DOS最后一次作为单独产品出现。
1993年:MS-DOS 6.0版发布,具备磁盘压缩技术。
1995年:MS-DOS 7.0版支持FAT32文件系统,它随同Windows 95一起发布。

2000年9月14日:MS-DOS最后一个版本8.0版发布,只用于Windows XP系统的启动盘。至此,微软的DOS开发正式宣告全部结束。
2014年3月:微软通过计算机历史博物馆放出了MS-DOS 1.25、2.0两个早期版本的源代码。
2018年:微软宣布在GitHub上重新开源MS-DOS 1.25、2.0,相比原来的可下载压缩文件更容易查找、阅读和引用。不过微软强调,本次开源只为历史参考目的,让那些对早年PC操作系统感兴趣的用户去重新探索和试验,代码不会再做任何改动,大家也不要提出修改请求。微软同时透露,MS-DOS 1.25、2.0的所有源代码都是用8086汇编码写的,其中86-DOS的代码最初完成于1980年12月29日。
微软开源 MS-DOS 4.0 版系统源代码
微软于2024年4月下旬宣布与 IBM 合作,在 MIT 许可下发布 MS-DOS 4.00 的源代码。
2014 年 3 月,微软曾向计算机历史博物馆发布了 MS-DOS 1.25 和 2.0 版的源代码。其中 MS-DOS 1.25 代码可追溯到 1983 年 5 月 9 日左右,由 7 个源文件组成,其中包括最初的 MS-DOS Command-Line shell – COMMAND.ASM!
MS-DOS 2.0 大约可追溯到 1983 年 8 月 3 日,在复杂性(和团队规模)方面有了长足的发展,由 100 个 .ASM 文件组成。而 MS-DOS 4.0 则发布于 1988 年,由微软与 IBM 合作开发了部分代码。
公告称,一位名叫 Connor “Starfrost” Hyde 的年轻英国研究员最近与微软前首席技术官 Ray Ozzie 就他收藏的一些软件进行了通信。在这些软盘中,Ray 发现了他在 Lotus 时发送的未公布版 DOS 4.0 测试版二进制文件。
因此 Starfrost 联系了微软开源项目办公室(OSPO),探索发布 DOS 4 源代码的可能性。微软开发者社区副总裁 Scott Hanselman 在互联网档案管理员兼爱好者 Jeff Sponaugle 的帮助下,对这些原始磁盘进行了成像,并仔细扫描了 “Ozzie Drop” 中的原始印刷文档。
“微软和 IBM 的朋友们都认为这是一段值得分享的操作系统历史。”
Jeff Wilcox 和 OSPO 访问了 Microsoft Archives,虽然没有找到 MT-DOS 的完整源代码,但确实找到了 MS DOS 4.00 源代码,以及一些额外的 beta 二进制文件、文档的 PDF 和磁盘镜像。
微软方面表示将继续探索这些档案,如果有更多新发现,后续或将继续进行更新。 更多详情可查看此处。
在 FreeDOS 上使用 C 语言编程
C 语言是一种简单易懂的编程语言,在编写有用的程序时,这给予开发者很大的灵活性。实际上,很多 FreeDOS 的核心实用程序都是使用 C 语言和汇编语言编写的。因此 FreeDOS 的 v1.3 RC4 包含一个 C 语言可能并不出人意料,此外还有其它编程语言的编译器。FreeDOS 的 1.3 RC4 LiveCD 包含两个 C 编译器:Bruce's C 编译器(一个简单的 C 编译器)和 OpenWatcom C 编译器 。在 Bonus CD 上也可以找到 DJGPP(一款基于 GNU 的 GCC 的 32 位 C 编译器)和 GCC 的 IA-16 移植(需要 386 或更好的 CPU 来编译,但是,生成的程序可以在低端系统上运行)。
在 FreeDOS 上使用 C 语言编程与在 Linux 上使用 C 语言编程非常类似,但是有两个例外:
1.需要知道你使用了多少内存。Linux 允许程序使用很多内存,但是 FreeDOS 有很多限制。DOS 程序只使用四种(大、中、紧凑和小)中的其中一种,具体取决于它们需要多少内存。
2.可以直接访问控制台终端。在 Linux 上可以创建文本模式的程序,使用一个诸如 ncurses 之类的库来绘制终端屏幕。但 DOS 允许程序访问控制台终端和视频硬件。这为编写更有趣的程序提供了极大的灵活性。
在 GCC 的 IA-16 移植或 OpenWatcom 中编写 C 程序,具体取决于正在编写的是哪种程序。OpenWatcom C 编译器更容易安装,因为它只是个单一的软件包。这就是为什么在 FreeDOS 的 LiveCD 中提供 OpenWatcom 的原因,在安装 FreeDOS v1.3 RC4 时,如果选择 “完全的安装(包括安装应用程序和游戏)(Full installation including applications and games)”,那么也自动地安装 OpenWatcom。如果选择安装 “纯 DOS 系统(Plain DOS system)”,那么将需要使用 FDIMPLES 软件包管理器来安装 OpenWatcom C 编译器。

在 FreeDOS 1.3 RC4 上安装 OpenWatcom
在 DOS 上使用 C 语言编程
可以在 openwatcom 网站上找到文档和库指南,以学习 OpenWatcom C 编译器所提供的独特的关于 DOS 的 C 语言编程库。简单描述几个最有用的函数:
来自conio.h头文件:
int getch(void):从键盘上获取一个按下的单个按键
int getche(void):从键盘上获取一个按下的单个按键,并回显该按键
来自graph.h头文件:
_settextcolor(short color):设置打印文本时的颜色
_setbkcolor(short color):设置打印文本时的背景颜色
_settextposition(short y, short x):移动光标到行y和 列x
_outtext(char _FAR *string):从当前光标位置开始,直接将一串字符打印到屏幕
DOS 只支持 8 种背景颜色。可以使用值 0(黑色)到 15(亮白色)来具体指定文本颜色,以及使用值 0(黑色)到 7(白色)来具体指定背景颜色:
0:黑色、1:蓝色、2:绿色、3:品蓝色、4:红色、5:品红色、6:棕色、7:白色、8:亮黑色、9:亮蓝色、10:亮绿色、11:亮品蓝色、12:亮红色、13:亮品红色、14:黄色、15:亮白色
一个花哨的 “Hello world” 程序
很多新开发者学习编写的第一个程序是为用户打印 “Hello world” 。可以使用 DOS 的conio和graphics库来制作一个更有趣的程序,并使用彩虹般的颜色打印 “Hello world” 。在这个实例中将遍历每种文本颜色,从 0(黑色)到15(亮白色)。随着打印每一行,都将为下一行缩进一个空格。在完成后将等待用户按下任意按键,然后将重置屏幕并退出。可以使用任何文本编辑器来编写你的 C 源文件代码。让人很容易在程序源文件代码中看到关键字、字符串(C 语言中没有直接的字符串)、变量。

使用 C 语言编写一个简单的测试程序
在使用 OpenWatcom 编译前,将需要设置 DOS 的编译环境,以便该编译器可以找到它的支持文件。OpenWatcom C 编译器软件包中包含了一个做这件事的设置:\DEVEL\OW\OWSETENV.BAT。运行这个批处理文件可以自动为 OpenWatcom 设置环境变量。在开发环境准备好后,可以使用 OpenWatcom 编译器来编译这个 “Hello world” 程序。已经将该 C 源文件文件保存为TEST.C,因此可以输入WCL TEST.C来编译和连接该程序为一个名称为TEST.EXE的 DOS 可执行文件。在其输出信息中将看到WCL实际上调用 OpenWatcom C 编译器(WCC)来编译,并调用 OpenWatcom 链接器(WLINK)来执行对象/目标(object) 链接阶段:

使用 OpenWatcom 编译测试文件
OpenWatcom 会打印一些无关的输出信息,这可能会使发现错误和警告变得困难。为了告诉编译器来抑制这些大量的额外信息,请在编译时使用/Q(“Quiet”)选项:

使用 OpenWatcom 编译
在编译 C 源文件文件时,如果没有看到任何错误信息,那么就可以运行你的 DOS 程序了。这个 “Hello World” 示例的程序名称是TEST.EXE。在 DOS 命令行中输入TEST来运行新的程序,应该会看到这个非常漂亮的输出:

运行测试程序
C 语言是一种非常高效的编程语言,在像 DOS 之类的资源有限的系统上进行编程也可以很好的工作。在 DOS 上可以使用 C 语言来做更多的事。如果是 C 语言的初学者,那么可以在 FreeDOS 网站的自学电子书来自主学习 C 语言。
最新版本:1.3
2022年2月下旬,FreeDOS 的作者 Jim Hall 正式发布了其 1.3 版本。该版本包含了自 1.2 版本(2016 年发布)以来的新功能和改进,其中包括:
新的 FreeCOM 0.85a
新的 Kernel 2043 和支持 FAT32 的 8086 版本
软盘版本(Floppy Edition)使用了压缩,仅需以往一半的空间
网络支持已恢复
新增一些程序和游戏
现有软件包更新
NLS 更新与改进
改进启动媒体和安装系统的 CD 初始化
改进安装流程等
系统要求:
DOS 兼容系统(Intel + BIOS 或支持 Legacy 的 UEFI)
至少 20MB 可用磁盘空间
更多详情可查看主页。
最新版本:1.4
距离 v1.3 版本发布 3 年后,v1.4 现已于2025年4月上旬发布。新版本包含了大量的更新内容,一些更改包括:
FreeCOM 是 FreeDOS command.com shell。0.86 版包含大量新修复、兼容性改进和翻译。
Xcopy 是一个标准的 DOS 命令,用于复制目录树。版本 1.8b 重新设计了递归复制,以减少使用过多的堆栈空间,并且在基于 Open Watcom 构建时使用更大的堆栈大小。
Move 将文件或目录从一个位置移动到另一个位置。3.4 版更新了堆栈使用限制,减少了递归移动时堆栈溢出的可能性。
Fdisk 是管理固定磁盘(硬盘)的程序。版本 1.4.3 收集了自 FreeDOS 1.3 以来的几项重要更改,包括修复在处理多个分区时可能导致数据问题的严重错误。
mTCP 是一套适用于运行 DOS 的个人计算机的 TCP/IP 应用程序。FreeDOS 1.4 中的版本进行了许多改进,以提高可靠性。
FDHelp 是主要帮助系统的内容。版本 1.1.0 从头开始重写,并在多位译者的帮助下翻译成了其他语言。
此外,还有一些更新内容未包含在 FreeDOS 1.4 发行版中。例如,一些程序在最终 FreeDOS 1.4 发行版发布前几天发布了更新,如 Blocek 文本编辑器(版本 1.76),但由于时间太晚,未能将其包含在内。这些程序将包含在即将发布的每月测试版本中。
FreeDOS 内核仍与 FreeDOS 1.3 相同,因为新内核尚未准备就绪。当新内核可用时,开发团队计划将其纳入每月测试版本。目前,FreeDOS 1.4 无法在增强模式下运行 Windows for Workgroups,但可以在标准模式下运行 Windows 3.1。
Streamlined packages
在此过程中进行了一些软件包清理。鉴于 Seal 和 oZone 存在很多错误,项目团队决定从新发行版中删除它们。但用户仍然可以找到基于 DOS 时代经典 GEM 桌面的 OpenGEM。OpenGEM 假定它从 “root” 目录运行。在有人自愿修复此问题之前,项目团队在用户运行 OpenGEM 时添加了一个 “helper”,提供了可以模拟 “root” 驱动器的 SWSUBST 命令。还用另一个程序 DOSVIEW 替换了 BMP2PNG 程序。DOSVIEW 是一个图像查看器,支持多种图像格式;还可以在图像格式之间进行转换,包括 BMP 和 PNG。(DOSVIEW 还支持 PCX、TGA、JPG、TIF、GIF、PNM、PBM、PGM、PPM、PSD 和 PIC 格式等。)更多详情可查看官方发行公告。
官方主页:http://www.freedos.org/

FreeDOS is a free DOS-compatible operating system that can be used to play games, run legacy software, or support embedded systems. FreeDOS is basically like the old MS-DOS, but better! For example, FreeDOS lets you access FAT32 file systems and use large disk support (LBA) — a feature not available in MS-DOS, and only included in Windows 95 and newer.
FreeDOS最初是设计作为MS-DOS的自由软件替代,但20年后的今天FreeDOS已经超越了MS-DOS,加入了新的功能,简化了使用,至今人们仍然在嵌入式设备上使用FreeDOS,在上面运行商业软件,或者在虚拟机里玩DOS游戏。
微软的专横做法当然引起了许多人的不满,许多团体甚至个人,包括大名鼎鼎的IBM公司都纷纷投入到开发兼容DOS的行列这中,意图打破微软对DOS的垄断局面。同时由于DOS的开放性和大家对DOS强大实用的功能的认识,DOS的种类不断增加,目前至少有20种,如PC-DOS、ROM-DOS、PTS- DOS、FreeDOS等,而新的功能,新的理念更是层出不穷。这里我们就为大家介绍一下最具代表性的FreeDOS。

FreeDOS工程(The FreeDOS Project)建立于1994年,由著名程序员Jim发起,并很快得到了众多使用者和程序开发者的响应。FreeDOS工程的目标是建立一个完整的、自 由开放的并且与MS-DOS完全兼容的新型DOS操作系统,这个DOS系统属于全人类。由于它是建立著名的GNU GPL(GNU通用公共许可证)协议下的自由软件,得到来自世界各地众多优秀程序员的支持,现在一直在不断的发展着,而且参加的人越来越多,通过互联网联 合起来朝着他们的目标去努力,充分体现了自由开放和团结的精神。现在FreeDOS的版本号已经发展到7.0,目前最新版本是Beta 8 H1,于今年9月推出。目前为它设计的DOS软件正在源源不断的推出和发展,不仅有各种外部命令,还有许多其它的增强程序和附件,而且质量既高也很实用, 往往超过MS-DOS中的同类命令。例如在它上面开发的Cute Mouse,就是目前DOS下最好(体积最小,功能最强)的鼠标驱动程序。而ATTRIB、XCOPY等众多外部命令,不仅比MS-DOS的同类命令效率 要高,而且体积不到后者的二分之一甚至几分之一。尤其重要的是,作为自由软件,它的源代码是完全公开的,显然对于需要学习和借鉴的国人,这是最好不过的事了。
FreeDOS与MS-DOS是完全兼容的,因此为它开发的软件基本上都可以直接移植过来在MS-DOS等DOS下使用。而我们国内外已经开发的绝大多数DOS软件也可以在它上面正常的运行。它的功能也十分强大,比如同样支持FAT32分区和大硬盘,部分功能已经远远超过MS-DOS。还有许多其它非常实 用的功能,如内置DOSKEY支持、支持极大的内存(最大高达4G)等。至于更多的功能,如长文件名功能等等,现在正在大家不断的努力下开发着,相信不久后就会成为现实。不仅如此,它的系统启动文件也比MS-DOS等小巧得多。它的核心文件只有一个,再加上一个SYS文件和一个命令处理器 COMMAND.COM文件,总共才130K,放在启动盘中是十分合适的。
不过与MS-DOS等DOS一样,上面介绍的FreeDOS是16位的。由于现在32位的操作系统逐渐成了大势所趋,因此为了跟上时代的发展,人们又开发了32位的FreeDOS操作系统,即内核为32位的FreeDOS版本FreeDOS 32,并再次得到了众多的支持。虽然目前它还不是很成熟,但它一直在发展着,而且毫无疑问,32位的FreeDOS有着划时代的意义,标志着DOS逐渐向 32位的内核的方向发展了。
尤其是在国外,不少人认为,FreeDOS将为DOS带来新的生机和气象,因此对此感兴趣和参加的人越来越多。无数的优秀程序员投入其中不断为 FreeDOS的发展添砖加瓦。目前,自由的FreeDOS越来越受到人们的关注,比如著名的Dell电脑公司就即将为它生产的部分电脑直接提供 FreeDOS操作系统。
DOS操作系统的历史简述
1973年:博士毕业的加里·基尔代尔Gary Kildall为英特尔刚推出的八位元处理器8008写出第一个微处理器的高阶语言PL/M(Programming Language for Microcomputers),接着为升级版的8080写出CP/M(Control Program for Microcomputers),可以控制IBM刚发明的软盘机,成为史上第一个磁盘操作系统(Disk Operating System),为今天广为使用的A盘、B盘和C盘(CD-ROM)编写了驱动程序。
1974年:加里·基尔代尔Gary Kildall帮助创建了硅谷最富盛名的“家酿俱乐部”(Home Brew Club),成为计算机业余爱好者交流的天堂,是硅谷点燃PC革命的中心。
1975年初:MITS电脑公司推出基于8080芯片的Altair 8800微机,这是人类历史上第一台PC(个人电脑)。
1976年:加里·基尔代尔Gary Kildall辞职创办Digital Research公司,正式开卖操作系统CP/M。它很快成为Intel 8080芯片的标准操作系统。为满足不同品牌机,加里·基尔代尔开发出不同版本的CP/M,此时他想到如果让CP/M架在一个专门控制输入/输出的程序BIOS(BASIC Input/Output System)上面,就不用修改CP/M,只须修改BIOS。BIOS让CP/M席卷使用英特尔处理器的电脑市场。加里·基尔代尔Gary Kildall发明第一个微处理器的高阶语言、发明第一个磁盘操作系统DOS、发明第一个BIOS。1994年7月,年仅52岁的加里·基尔代尔在加州蒙特利的寓所里,头部撞地,三日后不治身亡。一代大师凄凉离世,彻底告别了他爱恨交加的电脑业。“DOS之父”加里·基尔代尔Gary Kildall很快被历史遗忘了。

1980年8月:Seattle Computer Products(SCP)公司的24岁程序员Tim Paterson完成原始的操作系统,取名QDOS(简易的操作系统、Quick and Dirty Operating System)。充分借鉴CP/M,用户界面和编程接口几乎完全一样,这使得CP/M上的应用程序,可以直接在QDOS上运行。他做出的最大改变,就是为QDOS引入了微软公司BASIC解释器的FAT文件系统。
1980年10月:IBM决定推出基于Intel 8086芯片的PC,找到Digital Research公司,要求获得授权使用CP/M系统,协议没有谈成。IBM又去找微软,微软没有操作系统产品,但是Bill Gates知道SCP公司正在开发QDOS。微软支付2.5万美元,获得SCP的QDOS使用许可。IBM和微软签署合同:IBM一次性以约8万美元的价格为即将生产的PC购买微软MS-DOS操作系统的永久使用权。同时IBM还有权使用微软的BASIC编程语言、该公司的所有其它编程语言以及它开发的一些新的应用程序。作为对其放弃MS-DOS(现在应该称为IBM PC-DOS)永久使用权的交换,盖茨坚持保留将MS-DOS出售给其他公司的权利。
1981年7月:微软Bill Gates意识到未来PC市场的巨大规模,决定不再使用许可证模式,直接花费5-7万美元买下QDOS。
1981年7月27日:协议达成,QDOS成了微软的财产,正式改为MS-DOS。微软定义DOS“磁盘操作系统Disk Operating System”。1981年7月27日就是微软公司DOS操作系统的诞生纪念日。
1981年7月:为IBM PC配套的操作系统MS DOS 1.0诞生

1981年8月12日:IBM正式推出个人电脑产品IBM PC,使用MS-DOS 1.14版

1982年5月:微软为IBM的IBM PC发布MS-DOS 1.1,支持320KB双面软驱。
1982年6月:MS-DOS 1.25发布,只有7个文件,包括最初的MS-DOS命令行外壳,支持双面软盘,可运行在IBM兼容计算机上。
1983年3月:MS-DOS 2.0版发布,一次重大改版,正式采用文件配置表格式,大量使用具有UNIX特性的Handle式文件操作方式。支持10 MB硬盘, 一个树状子目录, 和360 KB 软盘。
1983年8月:中国国产微机操作系统CCDOS诞生,电子部六所的严援朝牵头开发,支持汉字存储和显示。





1984年:IBM推出下一代个人电脑IBM PC/AT,操作系统是MS-DOS 3.0版。
1984年11月:微软发表 MS-DOS 3.1,增加对网络的支持。
1988年:MS-DOS 4.0版发布,开始支持鼠标和图形界面。微软已经准备终结DOS这个产品了,微软公开表态,用户可以考虑放弃DOS,转而使用由IBM和微软共同开发的OS/2操作系统。
1988年:中国希望公司发布超级组合式中文平台UCDOS。此后,该软件一度成为我国DOS平台市场份额最大的中文操作系统。
1991年:MS-DOS 5.0版发布,内置QBasic编程环境。这是MS-DOS最后一次作为单独产品出现。
1993年:MS-DOS 6.0版发布,具备磁盘压缩技术。
1995年:MS-DOS 7.0版支持FAT32文件系统,它随同Windows 95一起发布。

2000年9月14日:MS-DOS最后一个版本8.0版发布,只用于Windows XP系统的启动盘。至此,微软的DOS开发正式宣告全部结束。
2014年3月:微软通过计算机历史博物馆放出了MS-DOS 1.25、2.0两个早期版本的源代码。
2018年:微软宣布在GitHub上重新开源MS-DOS 1.25、2.0,相比原来的可下载压缩文件更容易查找、阅读和引用。不过微软强调,本次开源只为历史参考目的,让那些对早年PC操作系统感兴趣的用户去重新探索和试验,代码不会再做任何改动,大家也不要提出修改请求。微软同时透露,MS-DOS 1.25、2.0的所有源代码都是用8086汇编码写的,其中86-DOS的代码最初完成于1980年12月29日。
微软开源 MS-DOS 4.0 版系统源代码
微软于2024年4月下旬宣布与 IBM 合作,在 MIT 许可下发布 MS-DOS 4.00 的源代码。
2014 年 3 月,微软曾向计算机历史博物馆发布了 MS-DOS 1.25 和 2.0 版的源代码。其中 MS-DOS 1.25 代码可追溯到 1983 年 5 月 9 日左右,由 7 个源文件组成,其中包括最初的 MS-DOS Command-Line shell – COMMAND.ASM!
MS-DOS 2.0 大约可追溯到 1983 年 8 月 3 日,在复杂性(和团队规模)方面有了长足的发展,由 100 个 .ASM 文件组成。而 MS-DOS 4.0 则发布于 1988 年,由微软与 IBM 合作开发了部分代码。
公告称,一位名叫 Connor “Starfrost” Hyde 的年轻英国研究员最近与微软前首席技术官 Ray Ozzie 就他收藏的一些软件进行了通信。在这些软盘中,Ray 发现了他在 Lotus 时发送的未公布版 DOS 4.0 测试版二进制文件。
因此 Starfrost 联系了微软开源项目办公室(OSPO),探索发布 DOS 4 源代码的可能性。微软开发者社区副总裁 Scott Hanselman 在互联网档案管理员兼爱好者 Jeff Sponaugle 的帮助下,对这些原始磁盘进行了成像,并仔细扫描了 “Ozzie Drop” 中的原始印刷文档。
“微软和 IBM 的朋友们都认为这是一段值得分享的操作系统历史。”
Jeff Wilcox 和 OSPO 访问了 Microsoft Archives,虽然没有找到 MT-DOS 的完整源代码,但确实找到了 MS DOS 4.00 源代码,以及一些额外的 beta 二进制文件、文档的 PDF 和磁盘镜像。
微软方面表示将继续探索这些档案,如果有更多新发现,后续或将继续进行更新。 更多详情可查看此处。
在 FreeDOS 上使用 C 语言编程
C 语言是一种简单易懂的编程语言,在编写有用的程序时,这给予开发者很大的灵活性。实际上,很多 FreeDOS 的核心实用程序都是使用 C 语言和汇编语言编写的。因此 FreeDOS 的 v1.3 RC4 包含一个 C 语言可能并不出人意料,此外还有其它编程语言的编译器。FreeDOS 的 1.3 RC4 LiveCD 包含两个 C 编译器:Bruce's C 编译器(一个简单的 C 编译器)和 OpenWatcom C 编译器 。在 Bonus CD 上也可以找到 DJGPP(一款基于 GNU 的 GCC 的 32 位 C 编译器)和 GCC 的 IA-16 移植(需要 386 或更好的 CPU 来编译,但是,生成的程序可以在低端系统上运行)。
在 FreeDOS 上使用 C 语言编程与在 Linux 上使用 C 语言编程非常类似,但是有两个例外:
1.需要知道你使用了多少内存。Linux 允许程序使用很多内存,但是 FreeDOS 有很多限制。DOS 程序只使用四种(大、中、紧凑和小)中的其中一种,具体取决于它们需要多少内存。
2.可以直接访问控制台终端。在 Linux 上可以创建文本模式的程序,使用一个诸如 ncurses 之类的库来绘制终端屏幕。但 DOS 允许程序访问控制台终端和视频硬件。这为编写更有趣的程序提供了极大的灵活性。
在 GCC 的 IA-16 移植或 OpenWatcom 中编写 C 程序,具体取决于正在编写的是哪种程序。OpenWatcom C 编译器更容易安装,因为它只是个单一的软件包。这就是为什么在 FreeDOS 的 LiveCD 中提供 OpenWatcom 的原因,在安装 FreeDOS v1.3 RC4 时,如果选择 “完全的安装(包括安装应用程序和游戏)(Full installation including applications and games)”,那么也自动地安装 OpenWatcom。如果选择安装 “纯 DOS 系统(Plain DOS system)”,那么将需要使用 FDIMPLES 软件包管理器来安装 OpenWatcom C 编译器。

在 FreeDOS 1.3 RC4 上安装 OpenWatcom
在 DOS 上使用 C 语言编程
可以在 openwatcom 网站上找到文档和库指南,以学习 OpenWatcom C 编译器所提供的独特的关于 DOS 的 C 语言编程库。简单描述几个最有用的函数:
来自conio.h头文件:
int getch(void):从键盘上获取一个按下的单个按键
int getche(void):从键盘上获取一个按下的单个按键,并回显该按键
来自graph.h头文件:
_settextcolor(short color):设置打印文本时的颜色
_setbkcolor(short color):设置打印文本时的背景颜色
_settextposition(short y, short x):移动光标到行y和 列x
_outtext(char _FAR *string):从当前光标位置开始,直接将一串字符打印到屏幕
DOS 只支持 8 种背景颜色。可以使用值 0(黑色)到 15(亮白色)来具体指定文本颜色,以及使用值 0(黑色)到 7(白色)来具体指定背景颜色:
0:黑色、1:蓝色、2:绿色、3:品蓝色、4:红色、5:品红色、6:棕色、7:白色、8:亮黑色、9:亮蓝色、10:亮绿色、11:亮品蓝色、12:亮红色、13:亮品红色、14:黄色、15:亮白色
一个花哨的 “Hello world” 程序
很多新开发者学习编写的第一个程序是为用户打印 “Hello world” 。可以使用 DOS 的conio和graphics库来制作一个更有趣的程序,并使用彩虹般的颜色打印 “Hello world” 。在这个实例中将遍历每种文本颜色,从 0(黑色)到15(亮白色)。随着打印每一行,都将为下一行缩进一个空格。在完成后将等待用户按下任意按键,然后将重置屏幕并退出。可以使用任何文本编辑器来编写你的 C 源文件代码。让人很容易在程序源文件代码中看到关键字、字符串(C 语言中没有直接的字符串)、变量。

使用 C 语言编写一个简单的测试程序
在使用 OpenWatcom 编译前,将需要设置 DOS 的编译环境,以便该编译器可以找到它的支持文件。OpenWatcom C 编译器软件包中包含了一个做这件事的设置:\DEVEL\OW\OWSETENV.BAT。运行这个批处理文件可以自动为 OpenWatcom 设置环境变量。在开发环境准备好后,可以使用 OpenWatcom 编译器来编译这个 “Hello world” 程序。已经将该 C 源文件文件保存为TEST.C,因此可以输入WCL TEST.C来编译和连接该程序为一个名称为TEST.EXE的 DOS 可执行文件。在其输出信息中将看到WCL实际上调用 OpenWatcom C 编译器(WCC)来编译,并调用 OpenWatcom 链接器(WLINK)来执行对象/目标(object) 链接阶段:

使用 OpenWatcom 编译测试文件
OpenWatcom 会打印一些无关的输出信息,这可能会使发现错误和警告变得困难。为了告诉编译器来抑制这些大量的额外信息,请在编译时使用/Q(“Quiet”)选项:

使用 OpenWatcom 编译
在编译 C 源文件文件时,如果没有看到任何错误信息,那么就可以运行你的 DOS 程序了。这个 “Hello World” 示例的程序名称是TEST.EXE。在 DOS 命令行中输入TEST来运行新的程序,应该会看到这个非常漂亮的输出:

运行测试程序
C 语言是一种非常高效的编程语言,在像 DOS 之类的资源有限的系统上进行编程也可以很好的工作。在 DOS 上可以使用 C 语言来做更多的事。如果是 C 语言的初学者,那么可以在 FreeDOS 网站的自学电子书来自主学习 C 语言。
最新版本:1.3
2022年2月下旬,FreeDOS 的作者 Jim Hall 正式发布了其 1.3 版本。该版本包含了自 1.2 版本(2016 年发布)以来的新功能和改进,其中包括:
新的 FreeCOM 0.85a
新的 Kernel 2043 和支持 FAT32 的 8086 版本
软盘版本(Floppy Edition)使用了压缩,仅需以往一半的空间
网络支持已恢复
新增一些程序和游戏
现有软件包更新
NLS 更新与改进
改进启动媒体和安装系统的 CD 初始化
改进安装流程等
系统要求:
DOS 兼容系统(Intel + BIOS 或支持 Legacy 的 UEFI)
至少 20MB 可用磁盘空间
更多详情可查看主页。
最新版本:1.4
距离 v1.3 版本发布 3 年后,v1.4 现已于2025年4月上旬发布。新版本包含了大量的更新内容,一些更改包括:
FreeCOM 是 FreeDOS command.com shell。0.86 版包含大量新修复、兼容性改进和翻译。
Xcopy 是一个标准的 DOS 命令,用于复制目录树。版本 1.8b 重新设计了递归复制,以减少使用过多的堆栈空间,并且在基于 Open Watcom 构建时使用更大的堆栈大小。
Move 将文件或目录从一个位置移动到另一个位置。3.4 版更新了堆栈使用限制,减少了递归移动时堆栈溢出的可能性。
Fdisk 是管理固定磁盘(硬盘)的程序。版本 1.4.3 收集了自 FreeDOS 1.3 以来的几项重要更改,包括修复在处理多个分区时可能导致数据问题的严重错误。
mTCP 是一套适用于运行 DOS 的个人计算机的 TCP/IP 应用程序。FreeDOS 1.4 中的版本进行了许多改进,以提高可靠性。
FDHelp 是主要帮助系统的内容。版本 1.1.0 从头开始重写,并在多位译者的帮助下翻译成了其他语言。
此外,还有一些更新内容未包含在 FreeDOS 1.4 发行版中。例如,一些程序在最终 FreeDOS 1.4 发行版发布前几天发布了更新,如 Blocek 文本编辑器(版本 1.76),但由于时间太晚,未能将其包含在内。这些程序将包含在即将发布的每月测试版本中。
FreeDOS 内核仍与 FreeDOS 1.3 相同,因为新内核尚未准备就绪。当新内核可用时,开发团队计划将其纳入每月测试版本。目前,FreeDOS 1.4 无法在增强模式下运行 Windows for Workgroups,但可以在标准模式下运行 Windows 3.1。
Streamlined packages
在此过程中进行了一些软件包清理。鉴于 Seal 和 oZone 存在很多错误,项目团队决定从新发行版中删除它们。但用户仍然可以找到基于 DOS 时代经典 GEM 桌面的 OpenGEM。OpenGEM 假定它从 “root” 目录运行。在有人自愿修复此问题之前,项目团队在用户运行 OpenGEM 时添加了一个 “helper”,提供了可以模拟 “root” 驱动器的 SWSUBST 命令。还用另一个程序 DOSVIEW 替换了 BMP2PNG 程序。DOSVIEW 是一个图像查看器,支持多种图像格式;还可以在图像格式之间进行转换,包括 BMP 和 PNG。(DOSVIEW 还支持 PCX、TGA、JPG、TIF、GIF、PNM、PBM、PGM、PPM、PSD 和 PIC 格式等。)更多详情可查看官方发行公告。
官方主页:http://www.freedos.org/