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 訪問。 |