一位大师正在向他的新手解释 编程之道 的本质。“道体现在所有的软件中——无论多么微不足道,”大师说。
“道在手持计算器里吗?”新手问。
“在,”回答传来。
“道在电子游戏里吗?”新手继续问道。
“它甚至在电子游戏里,”大师说。
“那么,道在个人电脑的 DOS 里吗?”
大师咳嗽了一下,稍微移动了一下位置。“今天的课程到此为止,”他说。
编程之道, Geoffrey James, InfoBooks, 1987
计算过去仅限于昂贵的大型机和“大型机”计算机系统,如 PDP11。但微处理器的出现带来了 20 世纪 70 年代的计算革命。你终于可以在家里拥有一台电脑了——“个人电脑”时代到来了!
我记得最早的个人电脑包括 Commodore、TRS-80 和 Apple。个人电脑变得如此热门,以至于 IBM 决定进入市场。经过快速的开发周期,IBM 于 1981 年 8 月发布了 IBM 5150 个人电脑(最初的“IBM PC”)。
从头开始创建一台计算机并非易事,因此 IBM 著名地使用了“现成的”硬件来构建 PC,并从外部开发商处获得了其他组件的许可。其中之一就是操作系统,从微软获得许可。反过来,微软从 Seattle Computer Products 收购了 86-DOS,应用了各种更新,并与 IBM PC 一起推出了新版本,即 IBM PC-DOS。
早期 DOS
在内存中运行最多 640 千字节,DOS 实际上只能管理硬件并允许用户启动应用程序。因此,PC-DOS 1.0 命令行非常薄弱,只包括几个命令来设置日期和时间、管理文件、控制终端和格式化软盘。DOS 还包括一个 BASIC 语言解释器,这是当时所有个人电脑的标准功能。
直到 PC-DOS 2.0,DOS 才变得更有趣,添加了新的命令行命令,并包括了其他有用的工具。但对我来说,直到 1991 年的 MS-DOS 5.0,DOS 才开始感觉“现代”。微软在这个版本中彻底修改了 DOS,更新了许多命令,并将古老的 Edlin 编辑器替换为一个新的全屏编辑器,该编辑器更加用户友好。DOS 5 还包括我喜欢的其他功能,例如基于 Microsoft QuickBASIC Compiler 的新 BASIC 解释器,简称为 QBASIC。如果你玩过 DOS 上的 Gorillas 游戏,它可能是在 MS-DOS 5.0 上运行的。
尽管进行了这些升级,我仍然对 DOS 命令行不完全满意。DOS 从未远离最初的设计,这被证明是有限制的。DOS 为用户提供了一些工具来从命令行执行某些操作——否则,你应该使用 DOS 命令行来启动应用程序。微软认为用户会将大部分时间花在一些关键应用程序上,例如文字处理器或电子表格。
但开发人员想要一个更强大的 DOS,因此一个子行业应运而生,提供简洁的工具和程序。有些是全屏应用程序,但更多的是增强 DOS 命令环境的命令行实用程序。当我学习了一点 C 编程后,我开始编写自己的实用程序来扩展或替换 DOS 命令行。尽管 MS-DOS 的基础相当有限,但我发现第三方实用程序加上我自己的实用程序,创建了一个强大的 DOS 命令行。
FreeDOS
1994 年初,我开始在科技杂志上看到许多微软高管的采访,他们说下一个版本的 Windows 将完全摆脱 DOS。我以前用过 Windows——但如果你还记得那个时代,你会知道 Windows 3.1 不是一个很棒的平台。Windows 3.1 笨拙且存在错误——如果应用程序崩溃,可能会导致整个 Windows 系统崩溃。我也不喜欢 Windows 图形用户界面。我更喜欢在命令行而不是用鼠标来完成我的工作。
我考虑了 Windows,并决定,“如果 Windows 3.2 或 Windows 4.0 与 Windows 3.1 非常相似,我就不想碰它。”但是我的选择是什么呢?我当时已经尝试过 Linux,并认为 Linux 很棒——但 Linux 没有任何应用程序。我的文字处理器、电子表格和其他程序都在 DOS 上。我需要 DOS。
然后我有了个想法!我想,“如果开发人员可以通过互联网共同编写一个完整的 Unix 操作系统,那么我们肯定可以对 DOS 做同样的事情。”毕竟,与 Unix 相比,DOS 是一个相当简单的操作系统。DOS 一次运行一个任务(单任务),并且具有更简单的内存模型。编写我们自己的 DOS 应该不那么困难。
因此,在 1994 年 6 月 29 日,我在名为 Usenet 的留言板网络上的 comp.os.msdos.apps
上 发布了一个公告。
PD-DOS 项目公告
几个月前,我发布了有关启动公共域版本的 DOS 的文章。当时对此的一般支持很强烈,许多人同意“开始编写!”的说法。所以,我已经...
宣布首次努力生产 PD-DOS。我已经编写了一份“宣言”,描述了该项目的目标和工作大纲,以及一个“任务清单”,其中准确地显示了需要编写的内容。我将在此处发布这些内容,并进行讨论。
* 关于名称的说明——我希望这个新的 DOS 能够被每个人使用,并且天真地认为当每个人都可以使用它时,它就是“公共领域”。我很快意识到两者之间的区别,我们将“PD-DOS”重命名为“Free-DOS”——后来去掉了连字符,成为“FreeDOS”。
一些开发人员联系了我,提供了他们创建的实用程序来替换或增强 DOS 命令行,类似于我自己的努力。我们集中了我们的实用程序,并创建了一个有用的系统,我们在 1994 年 9 月发布了“Alpha 1”,距离宣布该项目仅几个月。当时的开发速度非常快,我们在 1994 年 12 月发布了“Alpha 2”,1995 年 1 月发布了“Alpha 3”,1995 年 6 月发布了“Alpha 4”。
现代 DOS
从那时起,我们一直专注于使 FreeDOS 成为“现代”DOS。这种现代化主要集中在创建一个丰富的命令行环境。是的,DOS 仍然需要支持应用程序,但我们认为 FreeDOS 也需要一个强大的命令行环境。这就是为什么 FreeDOS 包含数十个有用的工具,包括导航目录、管理文件、播放音乐、连接网络等命令,以及一系列类似 Unix 的实用程序,例如 less
、du
、head
、tail
、sed
和 tr
。
虽然 FreeDOS 的开发速度有所放缓,但它并没有停止。开发人员继续为 FreeDOS 编写新程序,并为 FreeDOS 添加新功能。我特别对 FreeDOS 1.3 RC4(即将推出的 FreeDOS 1.3 的最新候选版本)的几个重大新增功能感到兴奋。
- Mateusz Viste 创建了一个名为 Ancient Machine Book (AMB) 的新电子书阅读器,我们已将其用作 FreeDOS 1.3 RC4 中的新帮助系统
- Rask Ingemann Lambertsen、Andrew Jenner、TK Chia 等人正在更新 IA-16 版本的 GCC,包括一个新的libi86 库,该库提供与 Borland Turbo C++ 编译器的 C 库的某种程度的兼容性
- Jason Hood 更新了一个可卸载的 CD-ROM 重定向器,以替代微软的 MSCDEX,支持多达 10 个驱动器
- SuperIlu 创建了 DOjS,这是一个 Javascript 开发画布,具有集成的编辑器、图形和声音输出以及鼠标、键盘和操纵杆输入
- Japheth 创建了一个 DOS32PAE 扩展器,能够通过 PAE 分页使用大量的内存
尽管 FreeDOS 上进行了所有新的开发,但我们仍然忠于我们的 DOS 根源。当我们继续朝着 FreeDOS 1.3 “最终版”努力时,我们秉承以下几个核心假设,包括
- 兼容性是关键——如果 FreeDOS 无法运行经典的 DOS 应用程序,它就不是真正的“DOS”。虽然我们提供了许多出色的开源工具、应用程序和游戏,但您也可以运行您的旧版 DOS 应用程序。
- 继续在旧 PC 上运行(XT、'286、'386 等)——FreeDOS 1.3 将保持 16 位 Intel,但将在可能的情况下支持具有扩展驱动程序支持的新硬件。因此,我们将继续专注于单用户命令行环境。
- FreeDOS 是开源软件——我一直说,如果人们无法访问、研究和修改源代码,FreeDOS 就不是“免费 DOS”。FreeDOS 1.3 将尽可能多地包含使用已识别的开源许可证的软件。但 DOS 实际上早于 GNU 通用公共许可证 (1989) 和开源定义 (1998),因此某些 DOS 软件可能使用其自己的“带源代码免费”许可证,该许可证不是标准的“开源”许可证。当我们考虑要包含在 FreeDOS 中的软件包时,我们会继续评估任何许可证,以确保它们是足够“开源”的,即使它们没有得到官方认可。
我们欢迎您帮助使 FreeDOS 变得伟大!请加入我们的邮件列表——我们欢迎所有新人和贡献者。我们通过邮件列表进行沟通,但该列表的容量相当小,因此不太可能填满您的收件箱。
请访问 FreeDOS 网站:www.freedos.org。
1 条评论