MS-DOS 7 系统编程入门/配置命令
第 4 章 配置命令
MS-DOS 7 的加载配置由三个非格式化文本文件中的配置选项规定,这些文件必须存在于可启动磁盘的根目录中:MSDOS.SYS (5.01-01)、CONFIG.SYS (9.01-01) 和 AUTOEXEC.BAT (9.01-02)。
其中,CONFIG.SYS 文件在早期版本的 DOS 中有着最长的历史。它定义了许多非常重要的参数和一组在启动时要加载的软件驱动程序。CONFIG.SYS 中的每一行都是对 IO.SYS 加载程序 (5.01-01) 的命令。加载程序对命令的解释与最著名的命令解释程序 COMMAND.COM (6.04) 有很大不同。CONFIG.SYS 文件中必须有其他命令和其他语法。
虽然几个配置命令 (4.02、4.24、4.25) 与 COMMAND.COM 解释程序执行的命令相同,但 IO.SYS 加载程序以不同的方式处理它们。加载程序不允许省略文件的后缀,不执行重定向,不将变量的值替换为它们的名字。CONFIG.SYS 中命令的执行顺序不仅取决于行的顺序,还取决于命令的优先级 (有关详细信息,请参见 4.15 和 4.25)。有一组命令 (4.19、4.20、4.21、4.29) 只能在菜单和子菜单块中指定,而在这些块中不能使用其他命令 (除了 4.23)。
几个命令 (4.01、4.04、4.11、4.13、4.18、4.28) 在早期版本的 MS-DOS 中没有等效项;一些其他命令 (4.08、4.30) 在 MS-DOS 7 中有所改变,添加了新的参数。在 MS-DOS 7 中,继承的配置命令调用加载过程的方式有所不同——默认情况下是加载到常规内存以外:DEVICE 的执行方式与 DEVICEHIGH 相同,BUFFERS 的执行方式与 BUFFERSHIGH 相同,等等。如果某个驱动程序必须加载到常规内存中,则应通过在 DOS 命令 (4.08) 中指定 NOAUTO
参数来丢弃隐式默认值。这些和其他配置命令及其被 IO.SYS 加载程序解释的特殊之处在下面的文章中进行了详细说明。
ACCDATE 命令 (ACCess DATE) 启用或禁用将最后访问日期写入与访问文件相关的目录条目 (A.09-1)。默认情况下,最后访问日期在硬盘驱动器中注册,但不会写入软盘。在命令行中,在 ACCDATE 命令名称之后,可以指定任何数量的磁盘的字母名称,后跟加号 (= 允许注册) 或减号 (= 禁止注册),例如
ACCDATE C+ D- E- RWhen
访问日期注册被禁用,磁盘访问操作执行得更快。
BREAK 命令影响一个二进制标志的状态,该标志控制磁盘访问拦截。默认情况下,BREAK 标志被关闭,然后只在 CON 驱动程序寻址操作期间检查 BREAK 和 CTRL-C 键 (1.03)。因此,用户只能在当前过程处理 CON 驱动程序时暂停或终止其执行:将输出发送到屏幕或等待键盘输入。
可以使用以下命令打开 BREAK 标志:
BREAK ON
从那时起,BREAK 和 CTRL-C 键也将被检查,以确保磁盘访问操作能够正确进行。这使得有机会在当前过程处理磁盘驱动器时暂停或终止其执行。额外的检查使磁盘操作速度略慢。要禁用检查,应使用以下命令关闭 BREAK 标志:
BREAK OFF
IO.SYS 加载程序的任务成功完成之后,BREAK 命令仍然受到命令解释程序 COMMAND.COM (3.01) 的支持。
BUFFERS 命令为 512 字节长的缓冲区预留内存,这些缓冲区作为从磁盘读取的扇区的缓存。默认情况下,MS-DOS 7 安排 30 个主缓冲区和 0 个辅助缓冲区。BUFFERS 命令可以启用 1 到 99 个主缓冲区和 0 到 8 个辅助缓冲区。当 DBLBUFF.SYS 驱动程序 (5.06-02) 需要安排双缓冲区时,需要辅助缓冲区。例如,命令 BUFFERS=12,6
为 12 个主缓冲区和 6 个辅助缓冲区预留 9 kb 的内存。当缓冲区数量少于 30 时,磁盘读写操作可能会变慢。但是,当安装 SMARTDRV.EXE 驱动程序 (5.06-01) 时,缓冲区数量可以减少到 10。
- 注释
- 默认情况下,缓冲区是在常规内存的 640 kb 边界之外创建的,但可以在 640 kb 以下安排,如果在 DOS 命令 (4.08) 中指定了
NOAUTO
参数,并且如果 UMB 区域中的地址空间不足或不可用 (可用性条件在 4.07 中)。在任何情况下都不会显示错误消息。 - 在一些计算机中,DMA 控制器无法访问 UMB 区域或其部分,即使 UMB 区域被 UMBPCI.SYS 驱动程序 (5.04-04) 全部打开。在这样的计算机中,最好在 UMB 区域之外安排缓冲区:在常规内存中或在 1088 kb 之外的空间中,由 EMM386.EXE 驱动程序 (5.04-02) 打开。有时,这个问题可以通过与 UMBPCI.SYS 一起提供的辅助 LOWDMA.SYS 驱动程序来解决。
BUFFERSHIGH 命令几乎等同于 BUFFERS 命令 (4.03),除了 BUFFERSHIGH 命令试图在常规内存之外安排缓冲区,即使在 DOS 命令 (4.08) 中存在 NOAUTO
参数。文章 4.03 中的所有其他信息同样适用于 BUFFERSHIGH 命令。
4.05 COUNTRY – 加载国家适配数据
[edit | edit source]COUNTRY 命令将国家适应数据从 COUNTRY.SYS 数据文件(5.02-01)选择性地复制到内部 DOS 数据表(A.02-4, A.02-5)中。因此,DOS 设置将适应特定国家/地区的本地化规则。除了其他功能外,国家/地区适应还允许访问文件名中包含特定国家/地区字符的文件和目录。以下是一个使用 COUNTRY 命令的示例:
COUNTRY=007,866,C:\DOS\DRV\Country.sys
其中
007 |
– | 国家代码,特别是俄罗斯 |
866 |
– | 包含俄语字符集的代码页编号 |
C:\DOS\DRV\ – Country.sys 文件路径示例 |
- 注释
- 有关其他国家/地区代码和代码页编号,请参见附录 A.02-2
4.06 DEVICE – 加载设备驱动程序
[edit | edit source]DEVICE 命令用于加载具有特殊格式标头(A.05-1)的驱动程序,这些驱动程序应在 DOS 系统结构安排尚未完成时加载到内存中。最常见(但不一定)这些驱动程序使用 .SYS
后缀。带有 .COM
和 .EXE
后缀的驱动程序可能没有特殊标头,因此此类驱动程序不应由 DEVICE 命令加载,而应由 INSTALL 命令(4.15)加载。
以下是一个使用 DEVICE 命令加载带有 .SYS
后缀的驱动程序的示例:
DEVICE=C:\DOS\DRV\Himem.sys /EISA /V
其中
Himem.sys – 驱动程序名称示例 |
C:\DOS\DRV\ – 驱动程序路径示例 |
/EISA /V – 驱动程序参数组示例;它必须符合此特定驱动程序的参数规范。 |
以下是用 DEVICE 命令加载另一个驱动程序的另一个示例:
DEVICE?=\DOS\DRV\Emm386.exe RAM /V
除了驱动程序本身之外,后一个字符串还显示了两个差异。首先,没有磁盘字母名称前缀的路径(\DOS\DRV\
)适合从任何磁盘加载,即使磁盘字母名称事先未知。第二个区别是附加到 DEVICE 命令后的可选问号“?”。此标记强制 IO.SYS 加载程序暂停进一步执行并显示该行,然后询问用户是否要加载指定的驱动程序。
[Enter=Y, Esc=N]?
因此,DEVICE 命令可用于创建选择性加载配置。
- 注释
- 默认情况下,驱动程序加载到常规内存之外(640 kb 以上),但如果在 DOS 命令(4.08)中指定了
NOAUTO
参数,并且 UMB 区域中的地址空间不足或不可用(可用性条件在 4.07 中),则驱动程序可以加载到 640 kb 以下。在任何情况下,都不会显示错误消息。 - DEVICE 命令无法参与 UMB 内存区域中的地址空间优化过程。如果此功能很重要,则应改用 DEVICEHIGH 命令(4.07)。
4.07 DEVICEHIGH – 通过 UMB 地址空间加载驱动程序
[edit | edit source]DEVICEHIGH 的主要目的与 DEVICE 命令(4.06)几乎相同,但 DEVICEHIGH 尝试将驱动程序加载到常规内存之外,即使在 DOS 命令(4.08)中存在 NOAUTO
参数也是如此。当然,必须事先使 UMB 区域地址空间可用。因此必须满足以下条件:
- 计算机必须配备 80386 或更新的处理器;
- 必须在 DOS 命令(4.08)中指定
UMB
参数; - 必须通过 DEVICE 命令加载 HIMEM.SYS 驱动程序(5.04-01);
- 必须通过 DEVICE 命令在 CONFIG.SYS 文件的下一行加载 EMM386.EXE(5.04-02)或 UMBPCI.SYS(5.04-04)驱动程序。
当以最简单的形式使用 DEVICEHIGH 命令时,例如
DEVICEHIGH=C:\DOS\DRV\Setver.exe
指定的驱动程序(Setver.exe)将被加载,以便可以通过 UMB 区域中具有最大空闲地址空间块的那部分进行寻址,前提是此空闲块足以容纳指定的驱动程序。
与 DEVICE 命令一样,DEVICEHIGH 命令也可以附加一个问号:DEVICEHIGH?=...
。这将导致显示该行,然后执行将暂停,并为用户提供选择是否加载显示的驱动程序的机会。
DEVICEHIGH 命令提供了指定 UMB 地址空间的特定区域以访问加载的驱动程序的机会,例如
DEVICEHIGH /L:1,15792 =C:\DOS\DRV\Display.sys CON=(EGA,,1)
其中
/L:1 |
– | UMB 地址空间区域编号示例:它可以在执行带有 /F 参数的 MEM.EXE 实用程序(6.17)显示的列表中找到。 |
15792 |
– | 分配给指定驱动程序的可选地址空间大小(通常与驱动程序的文件大小不相等)。 |
如果特定驱动程序由可以从 UMB 地址空间的不同区域寻址的多个部分组成,则可以在一个命令中分配多个地址空间区域,每个区域都有或没有大小规范,例如 /L:2;3
或 /L:2,12192;3,3600
请注意,大小以逗号开头,不同的区域规范以分号分隔。
如果指定了分配区域的大小,则 DEVICEHIGH 命令可以接受可选的 /S
选项开关。
DEVICEHIGH /L:1,35008 /S =C:\DOS\DRV\MOUSE.SYS
/S
参数表示分配的 UMB 块应截断为指定的大小。这会导致最有效的地址空间使用率,但不保证不会崩溃,如果大小规范不完全正确。除非通过 MEMMAKER.EXE 实用程序(5.04-03)执行内存分配优化过程,否则不应指定块大小和 /S
参数。此过程的结果是,/S
和 /L
参数以及确切的区域规范将自动写入带有 DEVICEHIGH 命令的每一行。
- 注释
- 如果 UMB 区域中的地址空间不足或不可用,则 DEVICEHIGH 命令将把驱动程序加载到常规内存中(640 kb 以下),并且不会显示任何错误消息。
4.08 DOS – 介绍 DOS 加载选项
[edit | edit source]默认情况下,MS-DOS 7 的核心加载到常规内存中。如果 HIMEM.SYS 驱动程序已安装,则 DOS 的核心可以加载到 1024–1088 kb 的高内存区域。为此,CONFIG.SYS 文件必须包含一行命令
DOS=HIGH
此外,如果 UMB 地址空间可用,无论是通过 EMM386.EXE 驱动程序(5.04-02)还是通过 UMBPCI.SYS 驱动程序(5.04-04),都允许 MS-DOS 7 使用 UMB 空间来寻址 DOS 的系统结构和驱动程序。这是通过命令实现的
DOS=UMB
在 MS-DOS 7 中,引入了另一个可选参数 NOAUTO
,这意味着 IO.SYS 加载程序必须禁用其对隐式加载多个驱动程序(HIMEM.SYS、DBLBUFF.SYS、IFSHLP.SYS、DBLSPACE.SYS)以及通过普通加载命令 DEVICE、INSTALL 和其他一些命令(4.03、4.06、4.10、4.12、4.15、4.17、4.27)加载到 640 kb 之外的默认设置。实际上,NOAUTO
使得能够将 MS-DOS 7 配置为一个独立的操作系统。DOS 命令的所有参数都可以在一行中指定
DOS=HIGH,UMB,NOAUTO
- 注释
- DOS 命令接受另一个参数
SINGLE
,它允许加载 MS-DOS 7,而其他情况下会加载 Windows 95/98 操作系统。但是,这种加载 MS-DOS 7 的方法会导致对用户提出不合适的问题,并且会增加陷入重启的风险。因此,应该首选其他加载 MS-DOS 7 的方法,这些方法在文章 1.03 中列出。
4.09 DRIVPARM – 替换驱动器参数
[edit | edit source]DRIVPARM 命令(DRIVe PARaMeters)是一种方法,用于提供对那些无法被 PC 的 BIOS 正确识别的存储介质的访问。实际上,这些设备是在 1996 年 MS-DOS 7 发布时已知的,但对 1990 年代初或更早生产的过时计算机的 BIOS 来说是未知的。以下是用 DRIVPARM 命令访问旧 PC 中的 3.5 英寸软驱的示例,该 PC 的 BIOS 只支持 5.25 英寸软驱
DRIVPARM /D:1 /c /f:7 /h:2 /i /s:18 /t:80
其中
/D:1 |
– | 指定物理驱动器编号,“1” 表示驱动器 B:,“0” 用于驱动器 A:,“2” 用于驱动器 C:,依此类推。 | ||||||||||||||||
/c |
– | 可选参数,允许检测可移动介质更改。对于不可移动介质,应改为指定“/n ”参数。 | ||||||||||||||||
/f:7 |
– | 定义驱动器类型编号
| ||||||||||||||||
/h:2 |
– | 定义磁头数量,双面软盘的默认值为 2。 | ||||||||||||||||
/i |
– | 如果 BIOS 不支持 3.5 英寸驱动器,则支持这些驱动器。 | ||||||||||||||||
/s:18 |
– | 指定每磁道扇区数
| ||||||||||||||||
/t:80 |
– | 指定磁道数
|
- 注释
/f
和/s
参数的默认设置对应于具有 9 个扇区每磁道的 5.25 英寸软盘。
FCBS 命令(文件控制块)为指定数量的文件控制块保留内存 – 从 1 到 255,每个长 80 字节。FCBS 是一个过时的形式,仅提供对当前目录中打开文件的访问。FCBS 不能应用于具有 FAT32 文件系统的介质。现代 DOS 程序使用“文件句柄”(4.12)而不是 FCBS。尽管如此,MS-DOS 7 仍然支持 FCBS,因为它们被一些过时的程序和网络服务(INTERLNK.EXE、SHARE.EXE 等)使用。在大多数情况下,默认值 FCBS=4
就足够了。
- 注释
- 默认情况下,FCBS 的空间在传统内存之外(高于 640kb)被保留,但如果在 DOS 命令(4.08)中指定了
NOAUTO
参数,并且如果 UMB 区域中的地址空间不足或不可用(可用性条件 - 在 4.07 中),则可能会在 640kb 以下被保留。在任何情况下都不会显示错误消息。 - FCBS 规范不限制可用的“未打开”文件控制块(A.09-5)的数量,这些块在 PSP(A.07-1)内部使用,以及一些文件搜索过程。
FCBSHIGH 命令几乎等效于 FCBS 命令(4.10),只是 FCBSHIGH 命令尝试在传统内存之外安排文件控制块,即使在 DOS 命令(4.08)中存在 NOAUTO
参数。文章 4.10 中的所有其他信息同样适用于 FCBSHIGH 命令。
FILES 命令为指定数量的系统文件表条目(SFT,A.01-4)保留地址空间。每个条目定义打开对象的狀態 - 文件或通道,并定义此对象与其数字引用的关联,即用于寻址对象的“句柄”。默认情况下,SFT 中有 60 个条目。这个条目数量通常过高。对于普通工作,您可能需要
FILES=30
具有 30 个条目的 SFT 占用大约 1800 字节。对于操作大型数据库,应将 SFT 条目数量增加到 40。
- 注释
- 默认情况下,SFT 条目的空间在传统内存之外(高于 640kb)被保留,但如果在 DOS 命令(4.08)中指定了
NOAUTO
参数,并且如果 UMB 区域中的地址空间不足或不可用(可用性条件在 4.07 中),则可能会在 640kb 以下被保留。在任何情况下都不会显示错误消息。
FILESHIGH 命令几乎等效于 FILES 命令(4.12),只是 FILESHIGH 命令尝试在传统内存之外安排 SFT 条目,即使在 DOS 命令(4.08)中存在 NOAUTO
参数。文章 4.12 中的所有其他信息同样适用于 FILESHIGH 命令。
INCLUDE 命令将一个命名的命令块插入要执行的配置命令的通用序列中。插入的命令块可以放置在同一 CONFIG.SYS 文件内的其他位置,但必须在其第一行中通过唯一的块名称宣布 - 一个词或一个数字,用方括号括起来,例如,[L055]
(示例取自 9.09-01)。块的末尾必须用类似的行标记,其中包含下一个块的名称。如果不需要指定其他块,则应在之后指定带有保留名称 [common]
的行。所有跟随此名称的行后面的命令(如果有)将在每个指定的配置中执行。
为了执行命令,特别是块 [L055]
的命令,在 CONFIG.SYS 文件中的所需位置必须有一行
INCLUDE=L055
请注意,块的名称应在等号右侧指定,不包括方括号。
如果相同命令块应该在几个加载配置中执行,那么每个配置规范都必须包含带有 INCLUDE 命令的相同行。将重复命令序列隔离到单独的块中使 CONFIG.SYS 文件的结构更简单,更清晰。文章 9.04-01、9.09-01 和 9.11-03 展示了这种 CONFIG.SYS 文件结构的示例。
INSTALL 命令用于加载程序的驻留模块以及那些没有特殊标头(A.05-1)的驱动程序,因此不能使用 DEVICE(4.06)或 DEVICEHIGH(4.07)命令加载。最常情况下,这些驱动程序用后缀 .COM
或 .EXE
标记。要使用 INSTALL 命令加载的驱动程序和实用程序必须满足以下条件
- 它们不需要环境空间 ;
- 它们不能发送处理严重错误的调用 ;
- 它们不能依赖于 COMMAND.COM 解释器在那个时候还没有加载的服务。
这些条件在很大程度上由那些设计为从 AUTOEXEC.BAT 文件或命令行加载的驱动程序和 TSR 实用程序满足。从 CONFIG.SYS 文件使用 INSTALL 命令加载被认为更可靠,并占用更少的内存空间。
带有 INSTALL 命令的行在所有带有 DEVICE、DEVICEHIGH 和 SET 命令的行之后解释,但在带有 SHELL 命令的行之前,即使 CONFIG.SYS 文件中的行顺序不同。行顺序和执行顺序之间的矛盾会导致混乱,因此应避免。优选的行顺序必须对应于执行顺序。
以下是用 INSTALL 命令的行示例
INSTALL=\DOS\DRV\Mkecdex.com /B /L:0
在所示行中,等号右侧是驱动程序的路径、驱动程序的名称以及一组参数。就像 DEVICE 命令(4.06)一样,INSTALL 可以附加一个问号(INSTALL?=...),让用户可以在屏幕上看到该行并做出选择([Enter=Y, Esc=N]
)是执行该行还是跳过它。
INSTALL 命令可用于临时加载那些将在其任务结束后卸载的模块。此类操作的特殊之处在于 DOS 仅在传统内存中(低于 640kb)自动释放占用的内存空间。当在 DOS 命令(4.08)中指定了 NOAUTO
参数时,INSTALL 将将模块加载到传统内存中,因此您可以负担得起命令解释器模块的临时加载,以便暂停执行一段时间并有机会读取显示的消息
INSTALL=C:\Command.com /low /c pause
文章 9.09-01 中展示了使用 INSTALL 命令临时加载命令解释器的另一个示例。
- 注释
- 与 DEVICEHIGH 命令不同,INSTALL 命令不参与由 MEMMAKER.EXE(5.04-03)执行的内存分配优化过程。由于这个原因,INSTALL 命令不允许使用辅助参数
/L
和/S
(4.07)影响内存分配。 - 默认情况下,驱动程序和 TSR 模块在传统内存之外(高于 640kb)被加载,但如果在 DOS 命令(4.08)中指定了
NOAUTO
参数,并且如果 UMB 区域中的地址空间不足或不可用(可用性条件在 4.07 中),则可能会在 640kb 以下被加载。在任何情况下都不会显示错误消息。
INSTALLHIGH 几乎等同于 INSTALL 命令 (4.15),区别在于 INSTALLHIGH 命令试图加载驱动程序和 TSR 模块到常规内存之外,即使在 DOS 命令 (4.08) 中存在 NOAUTO
参数。 INSTALLHIGH 命令不应用于加载那些在其任务完成后需要卸载的模块。 4.15 中的所有其他信息同样适用于 INSTALLHIGH 命令。
LASTDRIVE 命令定义了 DOS CDS 表 (A.03-03) 中的条目数量。CDS 表中的条目存储了逻辑磁盘的当前目录名称,包括真实磁盘和虚拟磁盘。 在启动时,MS-DOS 7 为每个由 PC BIOS 系统识别的逻辑磁盘创建一个有效的 CDS 条目记录,然后将 CDS 结构附加到虚拟条目 (预留) 。最后一个条目对应于由 LASTDRIVE 命令指定的最后一个磁盘的字母名称。默认情况下,MS-DOS 7 假设
LASTDRIVE=Z
这样的 CDS 表包含 26 个条目,占用 2288 字节。如果您认为这过于占用空间,您可以使用 LASTDRIVE 命令指定其他磁盘的字母名称,但无论如何,必须为所有逻辑磁盘提供足够的 CDS 条目,包括那些将在安装 CD-ROM 驱动程序、网络服务等之后变得可访问的磁盘。
- 注释
- 默认情况下,CDS 表排列在常规内存之外 (超过 640 kb),但如果在 DOS 命令 (4.08) 中指定了
NOAUTO
参数,以及如果 UMB 区域中的地址空间不足或不可用 (4.07 中的可用性条件),则可以排列在 640 kb 之下。无论如何,都不会显示任何错误消息。
LASTDRIVEHIGH 几乎等同于 LASTDRIVE 命令 (4.17),区别在于 LASTDRIVEHIGH 命令试图在常规内存之外排列 CDS 表,即使在 DOS 命令 (4.08) 中存在 NOAUTO
参数。 4.17 中的所有其他信息同样适用于 LASTDRIVEHIGH 命令。
MENUCOLOR 命令只能在那些名为 [menu]
的配置命令块或在其父菜单或子菜单中被宣布为子菜单的命令块中被可选使用。每个菜单或子菜单的颜色调色板都可以通过一个单独的 MENUCOLOR 命令设置,该命令在该菜单或子菜单中指定。默认颜色设置等同于命令
MENUCOLOR=7,0
在所示的示例中,第一个数字表示文本颜色的代码 (7 – 白色),第二个数字 (逗号之后) 表示背景颜色的代码 (0 – 黑色)。您可以选择其他颜色。所有允许的颜色代码及其含义都列在附录 A.10-5 中。
MENUDEFAULT 命令只能在那些名为 [menu]
的配置命令块或在其父菜单或子菜单中被宣布为子菜单的命令块中使用。MENUDEFAULT 命令放置在菜单块的最后一行,并定义在用户在规定时间内没有做出选择的情况下应该自动选择的菜单项,例如
MENUDEFAULT=L007,20
在所示的示例中,等号之后的第一组字符表示配置块 [L007]
的名称,该配置块将被默认选中,逗号后面的数字表示在自动默认选择进行之前等待用户选择的 20 秒。允许 0 到 99 秒的延迟。带有 MENUDEFAULT 命令的配置菜单示例显示在文章 9.04-01、9.09-01、9.11-03 中。
MENUITEM 命令可以在 CONFIG.SYS 文件的第一个命令块 (名为 [menu]
) 中使用,也可以在其父菜单或子菜单中被宣布为子菜单的那些块中使用。菜单或子菜单中呈现的每个选项必须与相应的配置命令块关联,并且必须被赋予一个可以理解的标题。这正是 MENUITEM 命令所做的,例如
MENUITEM=L007, Relocate DOS to 5600 kb RAM-disk R:
在上面的示例中,"L007" 是一个命令块的名称 (取自 9.09-01),该命令块必须存在于 CONFIG.SYS 文件中,并且必须在 CONFIG.SYS 文件中以方括号 (2.03-05) 中包含相同名称 [L007]
的标题行。所示命令行中的其余部分 (逗号之后) 是一个标题文本,在屏幕上表示该菜单条目。标题文本可以包含单词之间的空格,但不允许使用方括号 [ ]、分号 ( ; ) 和斜杠 ( / \ ) 。
在解释菜单块期间,IO.SYS 加载程序创建一个名为 CONFIG 的环境变量,并将选定的配置块的名称 (在所示示例中为 L007) 作为其值分配给它。该值可以稍后用于根据选定的配置调整 AUTOEXEC.BAT 文件 (或任何其他批处理文件) 的执行。
- 注释
- 每个菜单块中的 MENUITEM 和 SUBMENU (4.29) 命令总数不能超过 9 个。
为了访问磁盘,DOS 必须指定起始扇区和要读取 (或写入) 的扇区数量。在 1980 年代早期生产的旧式 PC 中,磁盘驱动器和 BIOS 版本一次在一个磁道内执行访问操作,因此起始扇区号和要访问的扇区数量的总和不能超过磁道上的扇区总数 (否则进程将“回绕”到同一磁道的开头)。为了适应过时的硬件,MS-DOS 7 也无法实现多磁道寻址,因此 CONFIG.SYS 文件必须包含一行
MULTITRACK OFF
自 1980 年代后期以来,所有磁盘驱动器和 BIOS 版本都能够防止上述回绕:访问会自动切换到下一磁道。这提供了一个机会,可以在一次操作中寻址多个磁道,并使磁盘访问速度更快。MS-DOS 7 执行多磁道访问,并且实际上将 MULTITRACK ON 选项作为默认选项。因此,现在几乎总是省略 MULTITRACK 命令。
NUMLOCK 命令 (数字小键盘锁) 定义了数字小键盘 (标准键盘的右侧边缘) 的状态。最常见的是 NUMLOCK 开关保持 OFF,然后数字小键盘键会复制键盘主体部分中的键的功能 (箭头、PgUp – PgDn 等)。如果要避免其他状态,CONFIG.SYS 文件必须包含命令
NUMLOCK OFF
为了启用数字和算术符号的输入,NUMLOCK 状态应该使用命令反转
NUMLOCK ON
NUMLOCK 开关的任一状态都适合在配置菜单中选择项目。当 NUMLOCK 关闭时,您可以使用箭头键上下滚动选择,但当 NUMLOCK 设置为 ON 时,您可以通过数字小键盘输入数字来选择配置菜单中的项目。
- 注释
- NUMLOCK 开关状态会影响由 INT 16\AX=10h (8.01-83) 返回的键代码。有关更多信息,请参阅附录 A.02-1 的注释 6。
REM 命令 (REMark) 强制 IO.SYS 加载程序忽略直到行尾的所有后续单词。REM 命令的主要目的是提供一个机会来指定不应在屏幕上显示的注释。在任何命令行的开头插入 REM 命令,可以使 IO.SYS 加载程序在解释 CONFIG.SYS 文件时跳过该行。
- 注释
- 在解释 CONFIG.SYS 文件中的行时,IO.SYS 加载程序不会提供其同义词 REM 命令 (3.24) 为 COMMAND.COM 解释器提供的那些额外机会。
CONFIG.SYS 文件中的 SET 命令用于分配或重新定义环境变量的值,例如
SET Var_Name=New_Var_Value
其中
Var_name – 环境变量的名称示例;它必须以字母开头,并且可以包含数字。 |
New_Var_Value - 环境变量名称对应的字符串值示例;它不能包含等号。如果值中有空格,在值前面或后面(直到行尾标记)有空格,这些空格都将包含在分配的值中。 |
CONFIG.SYS 文件中由 IO.SYS 执行的 SET 命令与 COMMAND.COM 解释器从命令行或批处理文件执行的同义命令 (3.25) 的效果略有不同。区别在于
- 在 CONFIG.SYS 文件中使用时不带变量参数,SET 命令不会显示当前环境。
- 在 CONFIG.SYS 文件中,SET 命令后加一个问号 (
SET?=...
) 会导致执行停止,并显示一个查询[Enter=Y, Esc=N]
,从而允许用户选择是否执行该行。 - CONFIG.SYS 文件中的 SET 命令在所有 DEVICE 和 DEVICEHIGH 命令执行后,但在执行 INSTALL、INSTALLHIGH 和 SHELL 命令之前执行。因此,在 CONFIG.SYS 文件中最好按此顺序排列这些行。
- CONFIG.SYS 文件中的别名 (2.03-03)、重定向 (2.04-02 – 2.04-05) 和值替换不会执行。因此,任何重定向和替换符号都可以包含在 CONFIG.SYS 文件中 SET 命令分配的变量值中。
SHELL 命令用于启动一个可执行文件,该文件不会将控制权返还给 IO.SYS 加载器。这就是为什么 SHELL 命令在 CONFIG.SYS 文件中最后执行,并且最好将其指定在最后一行。使用 SHELL 命令加载的可执行文件可能是另一个操作系统的加载器(如 LINUX 操作系统的 LOADLIN.EXE),也可能是一个命令解释器,在 IO.SYS 加载器完成其工作后接管 PC 的控制权。以下是一个将控制权传递给 NDOS.COM 命令解释器的示例
SHELL=C:\DOS\NU\Ndos.com /f @C:\DOS\NU\Ndos.ini
其中
C:\DOS\NU\ |
– | 是命令解释器文件路径的示例 ; |
/f @C:\DOS\NU\Ndos.ini - NDOS.COM 命令解释器的参数字符串示例。 |
如果 CONFIG.SYS 文件中没有 SHELL 命令,IO.SYS 加载器将尝试在当前磁盘的根目录中找到 MS-DOS 专有的命令解释器 - COMMAND.COM。在这种情况下,COMMAND.COM 解释器将使用默认参数启动。不过,最好显式指定参数,例如
SHELL=Command.com A:\ /e:1008 /p
在后一个示例中,解释器名称前面没有路径表示它位于当前目录中。COMMAND.COM 解释器的参数分配将在 6.04 中详细描述。在文章 9.01-01、9.04-01 和 9.09-01 中展示了将控制权传递给 COMMAND.COM 解释器的其他示例。
CONFIG.SYS 文件中的 STACKS 命令指定用于处理嵌套中断的辅助 DOS 堆栈的数量。STACKS 命令的参数定义了辅助堆栈的数量以及每个堆栈分配的地址空间大小。默认参数等效于命令
STACKS=9,256
其中
9 |
– | 辅助堆栈的数量(允许 8 到 64 和 0); |
256 |
– | 每个辅助堆栈的大小(以字节为单位)(允许 32 到 512 和 0)。 |
由于每个堆栈溢出故障都会强制重新启动 PC 并可能导致数据丢失,因此辅助堆栈的实际大小不应小于默认值。
- 注释
- 默认情况下,辅助堆栈位于常规内存之外(高于 640 kb),但如果在 DOS 命令 (4.08) 中指定了
NOAUTO
参数,以及如果 UMB 区域中的地址空间不足或不可用(可用性条件在 4.07 中),则可以位于 640 kb 以下。无论哪种情况,都不会显示任何错误消息。
STACKSHIGH 几乎等效于 STACKS 命令 (4.27),不同之处在于 STACKSHIGH 尝试在常规内存之外排列辅助堆栈,即使在 DOS 命令 (4.08) 中存在 NOAUTO
参数。文章 4.27 中的所有其他信息都同样适用于 STACKSHIGH 命令。
SUBMENU 命令宣布菜单项,就像 MENUITEM 命令 (4.21) 一样,但与后者不同,SUBMENU 命令强制将相应的命令块视为子菜单。当然,SUBMENU 命令本身只能在名为 [menu]
或在父菜单或子菜单中宣布为子菜单的那些配置命令块中使用,例如
SUBMENU=6000, Relocation to RAM-disk
在所示示例中,“6000” 表示相应配置块的名称,逗号后的单词表示所提议菜单项的标题文本。该文本受到与 MENUITEM 命令 (4.21) 中文本相同的限制。子菜单配置块(在所示示例中名为 [6000]
)必须具有与主菜单块相同的结构,并且可以包含最多 9 个条目,每个条目由带有 MENUITEM 或 SUBMENU 命令的单独一行表示。子菜单块的主要特定特征是其名称:它必须是唯一的,并且必须与保留名称 [menu]
和 [common]
不同。
SWITCHES 命令允许指定最多四个可选配置项,例如
SWITCHES= /K /N /F /E:64
其中
/K |
– | 使为 86 键键盘设计的旧程序能够与更新的“增强型”101/108 键键盘兼容。 |
/N |
– | 禁用使用 F5 和 F6 键跳过执行配置文件 (CONFIG.SYS 和 AUTOEXEC.BAT) 的机会。 |
/F |
– | 排除显示消息“Starting WINDOWS…”后两秒的延迟。 |
/E:64 |
– | 分配 64 字节的常规内存(允许 48 到 1024 字节)作为 EBIOS(BIOS 系统扩展)的“句柄”,使 LBA 能够访问 HDD(参见 A.13-6 的注释 4)。如果省略 /E 开关后面的数字,则将加载整个 EBIOS 代码(如果需要)到常规内存中。在现代 PC 中,不需要 /E 参数,因为其主 BIOS 系统支持 LBA 访问。 |