当我第一次开始使用 DOS 时,我喜欢使用 DOS 自带的 BASIC 语言编写游戏和其他有趣的程序。 后来,我学习了 C 编程语言。
我立刻爱上了用 C 语言工作! 它是一种直接的编程语言,为我编写有用的程序提供了极大的灵活性。 事实上,FreeDOS 的许多核心实用程序都是用 C 和汇编语言编写的。
因此,FreeDOS 1.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 语言编程相同,但有两个例外:
- 您需要注意您使用的内存量。 Linux 允许程序使用大量内存,但 FreeDOS 的内存更有限。 因此,DOS 程序根据需要的内存量使用四种内存模型之一(大、中、紧凑和小)。
- 您可以直接访问控制台。 在 Linux 上,您可以创建文本模式模式程序,使用像 ncurses 这样的库绘制到终端屏幕。 但是 DOS 允许程序访问控制台和视频硬件。 这为编写更有趣的程序提供了极大的灵活性。
我喜欢用 GCC 的 IA-16 端口或 OpenWatcom 编写我的 C 程序,具体取决于我正在处理的程序。 OpenWatcom C 编译器更容易安装,因为它只有一个软件包。 这就是为什么我们在 FreeDOS LiveCD 上提供 OpenWatcom 的原因,这样如果您在安装 FreeDOS 1.3 RC4 时选择“完整安装,包括应用程序和游戏”,您可以自动安装它。 如果您选择安装“纯 DOS 系统”,则需要稍后使用 FDIMPLES 包管理器安装 OpenWatcom C 编译器。

opensource.com
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 仅支持十六种文本颜色和八种背景颜色。 您可以使用值 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 源代码。 我喜欢使用几种不同的编辑器,包括FreeDOS Edit 和Freemacs,但最近我一直在使用FED 编辑器,因为它提供了语法高亮显示,使查看程序源代码中的关键字、字符串和变量更容易。

在使用 OpenWatcom 编译之前,您需要设置 DOS环境变量 以便 OpenWatcom 可以找到其支持文件。 OpenWatcom C 编译器软件包包含一个为您执行此操作的设置批处理文件,即 \DEVEL\OW\OWSETENV.BAT
。 运行此批处理文件以自动为 OpenWatcom 设置您的环境。
一旦您的环境准备就绪,您可以使用 OpenWatcom 编译器来编译这个 “Hello world” 程序。 我已将我的 C 源文件保存为 TEST.C
,因此我可以键入 WCL TEST.C
来编译并将程序链接到名为 TEST.EXE
的 DOS 可执行文件。 在来自 OpenWatcom 的输出消息中,您可以看到 WCL
实际上调用 OpenWatcom C 编译器 (WCC
) 进行编译,并调用 OpenWatcom 链接器 (WLINK
) 执行对象链接阶段

OpenWatcom 打印一些无关的输出,这可能会使您难以发现错误或警告。 要告诉编译器抑制大多数这些额外的消息,请在编译时使用 /Q
(“安静”)选项

如果在编译 C 源文件时没有看到任何错误消息,您现在可以运行您的 DOS 程序了。 这个 “Hello world” 示例是 TEST.EXE
。 在 DOS 命令行中输入 TEST
以运行新程序,您应该会看到非常漂亮的输出

C 是一种非常高效的编程语言,非常适合在像 DOS 这样的资源受限的系统上编写程序。 通过在 DOS 上用 C 语言编程,您可以做更多的事情。 如果您是 C 语言的新手,您可以通过在 FreeDOS 网站上阅读我们的自定进度的电子书《Writing FreeDOS Programs in C》以及 FreeDOS YouTube 频道上的配套 “how-to” 视频系列来学习 C 语言。
1 条评论