MS-DOS 7 系統程式設計入門/精選驅動程式
第 5 章 為 MS-DOS 7 選擇驅動程式
驅動程式是包含可執行駐留程式碼的檔案。駐留程式碼是適應寫入 RAM(隨機存取儲存器)並留在那裡,等待在某些場合被請求的程式碼。當這個特定的場合發生時,驅動程式的程式碼被執行,執行其任務,然後再次被留下等待下一個請求。這種行動方式類似於作業系統核心的“生命”。MS-DOS 將有限數量的核心功能與驅動程式提供的各種功能擴充套件相結合。正確選擇和更新驅動程式是 DOS 在不斷變化的 PC 硬體中生存的重要因素。
驅動程式可以以包含特殊標頭的檔案(A.05-1)的形式呈現,通常以 *.SYS 字尾標記,或者以包含 TSR(終止並駐留)部分的普通可執行檔案 (*.COM 或 *.EXE) 的形式呈現。帶有 *.SYS 字尾的驅動程式必須透過配置檔案 CONFIG.SYS 的行中的 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入。CONFIG.SYS 檔案的組成示例在文章 9.01-01、9.04-01 和 9.09-01 中顯示。透過 DEVICE 或 DEVICEHIGH 命令載入提供了更多機會來影響 DOS 系統結構的構建,因為此時它尚未完成。
帶有 *.COM 和 *.EXE 字尾的驅動程式通常從 CONFIG.SYS 檔案中透過 INSTALL(4.15)或 INSTALLHIGH(4.16)命令,或從 AUTOEXEC.BAT 檔案(9.01-02、9.04-02、9.09-02),或從命令列 - 直接或使用 LH 命令(3.17)載入。從 CONFIG.SYS 檔案中載入較不容易受到相互軟體干擾,因此被認為更安全。另一方面,INSTALL 和 INSTALLHIGH 命令不能參與 MEMMAKER.EXE 最佳化程式的記憶體最佳化過程。如果記憶體最佳化很重要,則應優先考慮從 AUTOEXEC.BAT 檔案使用 LH 命令載入。
為 MS-DOS 7 提供的主要驅動程式組是那些在 WINDOWS-95/98 作業系統版本中以及在它的救援軟盤中提供的驅動程式。在標準作業系統安裝的情況下,為 MS-DOS 7 提供的所有驅動程式都在 \WINDOWS 和 \WINDOWS\COMMAND 目錄中。但是,如果 MS-DOS 7 作為獨立作業系統安裝,最好為驅動程式安排一個單獨的目錄,例如 C:\DOS\DRV。此路徑在大多數提供的示例中顯示。當您打算在實踐中遵循這些示例時,重要的是要記住:您指定的路徑不一定是 C:\DOS\DRV,它必須是確切地指向您特定計算機中每個特定驅動程式的路徑。
除了 “原生” 的微軟碟機動程式之外,自 1995 年以來,其他軟體供應商和 PC 硬體製造商也為 MS-DOS 7 開發了許多驅動程式。現有的驅動程式非常多,這裡只能描述其中的一部分。以下文字不包括對其他微軟碟機動程式的描述(這些驅動程式可以在 Windows 95 軟體版本提供的 MSDOSDRV.TXT 中找到),也不包括對某些非通用裝置(MO、PD 和 ZIP 驅動器、LS120 軟盤、磁帶機等)的驅動程式的描述。優先考慮那些對於修復工作最必要的驅動程式。
在用於載入 Windows 95/98 或 MS-DOS 7 的磁碟的根目錄中,有兩個隱藏的系統檔案:IO.SYS 和 MSDOS.SYS。這些檔案從作業系統安裝時就存在,它們實現了作業系統的載入。檔案 IO.SYS 將 MS-DOS 7 的核心與直譯器和 DOS 載入器結合在一起。MSDOS.SYS 檔案包含一組載入引數。如果您沒有這些檔案,您可以從帶有 Windows 95/98 版本的磁碟中獲取它們,或者您也可以從網際網路網站 http://www.micosyen.com/msdos.php 下載它們,例如打包在 DOS7.ZIP 存檔中。
為了使磁碟可以使用 MS-DOS 7 啟動,必須存在上述系統檔案,但這還不夠。引導扇區的可執行程式碼不會“知道”應該將控制權轉移到哪裡,除非引導扇區中寫入了載入程式的名稱。這就是為什麼複製系統檔案與引導扇區更新相結合,在 SYS.COM 工具(6.24)的聯合任務中。
獲得對引導過程的控制後,DOS 載入器從 MSDOS.SYS 檔案中讀取載入引數。這些引數定義了文章 1.02 中描述的備選方案,並且還定義了要載入的作業系統:MS-DOS 7 或 WINDOWS-95/98。如果 MSDOS.SYS 檔案的 HRS 屬性(H = 隱藏、R = 只讀、S = 系統)被 ATTRIB.EXE 工具(6.01)移除,則 MSDOS.SYS 成為一個普通的非格式化文字檔案,可以使用編輯器工具開啟、更改和重寫,例如使用 EDIT.COM(6.09)。
MSDOS.SYS 檔案中可能沒有指定幾個甚至所有引數,在這種情況下,省略的引數將被賦予預設值。與其他系統檔案不同,MSDOS.SYS 不會被 SYS.COM 工具複製,而是會重新建立為空,這不會妨礙 WINDOWS-95/98 作業系統的正常載入。但是,至少一些預設引數的值不適合,如果您打算將 MS-DOS 7 作為獨立作業系統載入。下面提供的 MSDOS.SYS 檔案示例中顯示了所有引數的適當值。
[Paths] WinDir=C:\WINDOWS ; path for environmental variables TMP, TEMP and PATH WinBootDir=C:\WINDOWS ; path for environmental variable WINBOOTDIR HostWinBootDrv=C ; announcement of the disk used to boot the PC [Options] Logo=0 ; hide loading messages under logo (= 1) or not (= 0) BootMenu=0 ; display Windows’s boot menu (= 1) or not (= 0) BootMenuDelay=20 ; delay in seconds of default menu item choice BootMenuDefault=1 ; menu item number to be chosen as default BootKeys=1 ; enable (= 1) or disable (= 0) the "hot keys" F5, ; Shift-F5, F6, F8 and Shift-F8, described in article 1.02 BootDelay=2 ; waiting time (in seconds) for "hot key" keystroke BootMulti=0 ; disable the F4 key (1.02) for previous DOS version BootWin=1 ; load MS-DOS 7 and Windows (= 1) or previous DOS (= 0) BootSafe=0 ; load Windows in ordinary (= 0) or in safe mode (= 1) BootWarn=0 ; don’t warn about loading Windows in safe mode BootGUI=0 ; load Windows with its GUI (= 1) or MS-DOS 7 (= 0) LoadTop=0 ; load Command.com and Dblspace.bin below 640 kb AutoScan=0 ; Scandisk.exe automatic launching conditions: ; – never launch automatically (= 0), ; – launch after each identified failure (= 1) ; – launch during each PC loading procedure (= 2) DBLSpace=0 DRVSpace=0 ; don’t load compression on-the-fly drivers. Otherwise ; value = 1 may be specified for one such driver only Network=0 ; load (= 1) or don’t load (= 0) network support DoubleBuffer=0 ; cancel default loading of Dblbuff.sys driver (5.06-02) DisableLog=1 ; don’t write loading report into Bootlog.txt file.
MSDOS.SYS 檔案的每一行都會被直譯器讀取,並整合到同一個 IO.SYS 檔案中。直譯器會忽略所有以分號開頭的行,這就是為什麼這些行被用來插入註釋的原因。當然,包含註釋的行可以省略,但有一個反對這樣做。為了與舊的防毒軟體相容,隱藏的系統檔案的大小必須不小於 1024 位元組。對於大多數現代防毒軟體來說,這個限制並不重要。
MSDOS.SYS 檔案示例中顯示的所有引數值都與第 9.01、9.04、9.09 和 9.11 文章中介紹的配置檔案變體相容。[PATHS] 部分中的設定僅供 WINDOWS 作業系統考慮。對於 MS-DOS 7,環境變數的相應值應該被忽略或在稍後解釋第二個配置檔案 AUTOEXEC.BAT 時重新分配。[OPTIONS] 部分中的大部分引數也可以省略。不過,顯示的完整引數列表將幫助您決定是否應該指定任何特定引數以及應該賦予其哪個值。在準備您自己的 MSDOS.SYS 檔案版本後,不要忘記恢復其原始屬性 HRS(隱藏、只讀、系統)。
根據準備好的引數,DOS 載入程式會載入 MS-DOS 7 的核心。核心負責系統 DOS 服務和第 8.02 部分中描述的主要 INT 21 處理程式。最後一個載入程式的任務是執行來自配置檔案 CONFIG.SYS 的命令,這些命令定義了大多數驅動程式的載入。CONFIG.SYS 檔案的幾個變體在第 9.01-01、9.04-01 和 9.09-01 文章中顯示。後面的 MS-DOS 7 從未呼叫 IO.SYS 檔案執行,但它的存在仍然是必要的,因為每次您需要使任何其他磁碟可啟動時,都要複製它。
- 註釋
- 在早期版本的 MS-DOS 中,MSDOS.SYS 檔案不是文字檔案,它包含 DOS 的核心,幾乎像普通的驅動程式一樣被載入。
- 在 2001 年,MS-DOS 7 的核心出現了一個錯誤:它沒有正確處理 HDD 的 LBA 錯誤。因此,微軟釋出了一個修補後的核心檔案 IO.SYS,位於 SFX 存檔 311561usa8.exe 中。後者可以從 http://support.microsoft.com/kb/311561/en-us?spid=6519&sid=global 下載。WINRAR 版本 3.2(或更高版本)將 311561usa8.exe 解壓縮為 CAB 存檔。兩個 IO.SYS 檔案子版本隱藏在其中,暱稱分別為 Winboot.98s 和 Winboot.98g。如果 VER 命令(3.32)報告版本 4.10.2222,則 IO.SYS 應透過重新命名 Winboot.98s 獲得。如果報告的版本為 4.10.1998,則 Winboot.98g 應以類似方式重新命名並用作 IO.SYS。
5.01-02 DOS 版本號替換:驅動程式 SETVER.EXE
[edit | edit source]作業系統版本的演變帶來了一個難題:應用程式程式是為以前的 DOS 版本開發的。任何應用程式與未來作業系統版本的相容性是一個信仰問題,而不是預測問題。微軟建議透過 INT 21\AH=30h(8.02-22)將實際的 DOS 版本號告知明確相容的應用程式程式,而不是實際的版本號。SETVER.EXE 就是這樣一個驅動程式,它負責透過替換 DOS 版本號來欺騙應用程式程式。
在標準安裝 WINDOWS-95/98 的情況下,SETVER.EXE 驅動程式位於 \WINDOWS 目錄中。但是,如果您想單獨使用 MS-DOS 7,最好在其他 DOS 驅動程式的公共目錄中擁有 SETVER.EXE 的副本。它必須由 CONFIG.SYS 檔案的某一行中的 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入
DEVICEHIGH=C:\DOS\DRV\Setver.exe
其中
C:\DOS\DRV\– 是儲存在 DOS 驅動程式的單獨目錄中的 SETVER.EXE 驅動程式的路徑示例。
只有當此程式的名稱及其所需的 DOS 版本號預先註冊在載入的 SETVER.EXE 驅動程式的 TSR 模組內的內部版本表中時,應用程式程式才會收到替換的 DOS 版本號。雖然這種替換不能保證正確的結果,但大多數舊程式能夠在 MS-DOS 7 中正常執行。SETVER.EXE 驅動程式可以從命令列執行,就像一個普通的實用程式一樣,例如,為了顯示其簡短的幫助文字
Setver.exe /?
從命令列執行時不帶引數,SETVER.EXE 驅動程式會顯示其內部版本表。最初,版本表並不為空:它的條目反映了微軟的建議。為了將版本表附加一個條目,您應該鍵入
Setver.exe Qbasic.exe 6.22
其中
Qbasic.exe – 要“欺騙”的實用程式的名稱示例。該名稱必須具有後綴 *.COM 或 *.EXE。 | ||
6.22 |
– | 所需 DOS 版本號的示例。 |
從內部版本表中刪除相同條目的命令需要 /D 引數,看起來像
Setver.exe Qbasic.exe /D
對內部表執行任何操作後,SETVER.EXE 驅動程式會留下以下錯誤級別值之一(有關錯誤級別的更多資訊,請參見 3.15-03 和 9.07-03)
| 0 | – 成功完成 |
| 1 | – 無效的命令列開關規範 |
| 2 | – 無效的檔名規範 |
| 3 | – 記憶體不足以執行命令 |
| 4 | – 無效的版本號格式 |
| 5 | – 指定的條目在版本表中未找到 |
| 8 | – 命令列中的引數太多 |
| 9 | – 缺少一個或多個必需的引數 |
| 10 | – 讀取版本表時檢測到錯誤 |
| 11 | – 版本表已損壞 |
| 13 | – 版本表中沒有為新條目分配更多空間 |
| 14 | – 寫入包含新表的 SETVER.EXE 時發生錯誤 |
所有影響內部表內容的成功操作都以相同的方式完成:磁碟上的以前內部表將被其更新的變體覆蓋,其中包含已更改的條目。但是,將更改寫入磁碟上的檔案不足以使其生效。當更改的版本表從檔案傳輸到驅動程式的 TSR 模組中時,它們才會生效,該模組由 DEVICE 或 DEVICEHIGH 命令載入到記憶體中。這就是為什麼這些更改僅在 PC 重新啟動後才會生效的原因。
5.02 國家適應驅動程式
[edit | edit source]5.02-01 COUNTRY.SYS – 規範資料檔案
[edit | edit source]在標準安裝 WINDOWS-95/98 作業系統的情況下,COUNTRY.SYS 檔案位於 \WINDOWS\COMMAND 目錄中。COUNTRY.SYS 實際上是一組資料表,其中一個表需要使用特殊 COUNTRY 命令(4.05)從 CONFIG.SYS 檔案載入,例如
COUNTRY=007,866,C:\DOS\DRV\Country.sys
其中
007 |
– | 國家程式碼(A.02-2),特別是對於俄羅斯; |
866 |
– | 內碼表編號(A.02-2),為俄羅斯定義字元集; |
C:\DOS\DRV\ – 複製到 DOS 驅動程式的公共目錄中的 COUNTRY.SYS 檔案的路徑示例。 | ||
載入後,來自 COUNTRY.SYS 的資料會更改幾個與國家/地區特定的約定相關的內部 DOS 設定,這些約定涉及顯示時間、日期、貨幣和標點符號、字元排序以及對名稱字元集(A.02-5)的國家/地區限制。後一項功能尤為重要,因為否則,其名稱中包含國家/地區字元的檔案可能無法訪問。
5.02-02 DISPLAY.SYS – 字元生成器驅動程式
[edit | edit source]DISPLAY.SYS 驅動程式為一個或多個國家/地區內碼表表準備記憶體緩衝區,指定字元集和輪廓(A.02-2)。通常,DISPLAY.SYS 驅動程式位於 \WINDOWS\COMMAND 目錄中。此驅動程式必須由 CONFIG.SYS 檔案中的一行中的 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入
DEVICE=C:\DOS\DRV\Display.sys CON=(EGA,866,2,1)
其中
C:\DOS\DRV\ – 複製到 DOS 驅動程式的專用目錄中的 DISPLAY.SYS 驅動程式的路徑示例。 | ||||||||
CON |
– | (控制檯)– 指定顯示器作為輸出裝置(沒有替代方案)。 | ||||||
EGA |
– | 表示 PC 配備了 EGA、VGA 或 SVGA 顯示卡;EGA 型別的替代方案是
當省略顯示卡型別時,DISPLAY.SYS 驅動程式會嘗試確定它,但這會留下出錯的可能性。 | ||||||
866 |
– | 主內碼表編號(A.02-2),特別是對於俄羅斯。每個 EGA.CPI、EGA2.CPI、EGA3.CPI 和 ISO.CPI 檔案中都提供了一些內碼表。稍後,MODE.COM 實用程式(6.18)可以用來選擇適當的內碼表並將其寫入 DISPLAY.SYS 驅動程式準備的記憶體緩衝區中。 | ||||||
2 |
– | 除了為前一個內碼表編號指定的那個為字元集準備的記憶體緩衝區之外,要準備的記憶體緩衝區的數量。對於 EGA、VGA 和 SVGA 顯示卡,允許使用 0 到 6 個輔助緩衝區,對於 LCD 影片模組,不超過 1 個,對於 CGA 和 MDA 顯示卡,僅 0 個。 | ||||||
1 |
– | 每個內碼表的硬體支援的字型的數量。此編號可以與前面的逗號一起省略。預設值為 LCD 型別的 1 和 EGA、VGA 和 SVGA 顯示卡的 2。 | ||||||
- 註釋
- 括號內的所有引數都可以省略(括號留空),然後 DISPLAY.SYS 驅動程式會指定預設設定。
- DISPLAY.SYS 驅動程式的 TSR 模組將開啟以與透過 INT 2F\AX=AD00-AD03h(8.03-26、8.03-27)進行互動的程式進行互動。
5.02-03 NLSFUNC.EXE – 內碼表切換
[edit | edit source]NLSFUNC.EXE 驅動程式啟用 CHCP 命令(3.04)以在不同的內碼表之間切換,並與其他國家/地區設定的更改協調。通常,此驅動程式位於 \WINDOWS\COMMAND 目錄中。NLSFUNC.EXE 驅動程式可以直接載入,也可以使用 LH 命令(3.17)從命令列或 AUTOEXEC.BAT 檔案載入,或者從 CONFIG.SYS 檔案使用 INSTALL(4.15)或 INSTALLHIGH(4.16)命令載入,例如
INSTALLHIGH=C:\DOS\DRV\Nlsfunc.exe C:\DOS\DRV\Country.sys
其中
C:\DOS\DRV\ – 複製到 DOS 驅動程式的公共目錄中的 NLSFUNC.EXE 驅動程式的路徑示例。 |
C:\DOS\DRV\Country.sys – 具有國家/地區規範資料的檔案的路徑和名稱示例(5.02-01)。 |
- 註釋
- 在美式英語和任何其他國家/地區表示法之間切換不會暗示更改內碼表:美式英語表示法可以在任何單個國家/地區內碼表(A.02-02)中訪問。
- 可以使用 MODE.COM 實用程式(6.18-03)在不同的國家/地區內碼表之間切換。後者通常更受歡迎,因為 MODE.COM 不是 TSR 程式,並且會在終止後釋放已佔用的記憶體。
微軟的鍵盤驅動程式 KEYB.COM 提供了對鍵盤佈局的控制。通常它可以在 \WINDOWS\COMMAND 目錄中找到。KEYB.COM 驅動程式可以從 AUTOEXEC.BAT 檔案直接載入,也可以使用 LH 命令 (3.17) 載入,或者從 CONFIG.SYS 檔案使用 INSTALL (4.16) 或 INSTALLHIGH (4.17) 命令載入,例如
INSTALL=C:\DOS\DRV\Keyb.com UK,850,C:\DOS\DRV\Keybrd3.sys /E /ID:168
其中
C:\DOS\DRV\ – 複製到 DOS 驅動程式通用目錄中的 KEYB.COM 驅動程式的路徑示例。 | ||
UK |
– | 國家鍵盤佈局程式碼的兩位字母示例 (其他佈局程式碼見附錄 A.02-2)。 |
850 |
– | 國家內碼表編號的示例 (A.02-2)。當僅在此處指定時,它不會在顯示內碼表透過 CHCP 命令更改後自動更改。如果首選內碼表的同步更改(在顯示和鍵盤上),則此處應省略內碼表編號,但兩個包含的逗號必須保持不變 (. . .UK, ,C:\DOS\DRV\Keybrd3.sys. . .)。 |
C:\DOS\DRV\KEYBRD3.SYS – 鍵盤資料檔案的路徑和名稱示例。每個這樣的檔案包含多個國家佈局表 (A.02-2)。 | ||
/E |
– | 此引數指定鍵盤佈局應適應“增強型” 101/108 鍵鍵盤。 |
/ID:168 |
– | 特定鍵盤子型別的識別符號,僅在使用多個鍵盤佈局的國家/地區需要 (A.02-2)。大多數國家/地區,包括俄羅斯,只使用一種鍵盤佈局,因此應省略子型別識別符號 /ID。 |
載入後,KEYB.COM 驅動程式將啟用以下“熱”鍵組合
| CTRL-RightSHIFT – 鍵入 128-255 範圍內的符號,每個選定的國家內碼表都有特定符號; |
| CTRL-LeftSHIFT – 鍵入 032-127 範圍內的符號(英文字母、數字和標點符號),所有內碼表都通用; |
| CTRL-ALT-F1 – 啟用原始美式內碼表 437(所選國家內碼表將被停用); |
| CTRL-ALT-F2 – 從美式內碼表 437 返回到所選國家內碼表; |
| CTRL-ALT-F7 – 啟用打字機鍵盤模式,如果載入的鍵盤佈局表支援該模式。 |
所有這些“熱”鍵切換都伴有糟糕的蜂鳴聲,而且沒有簡單的方法可以消除它。
- 註釋
- KEYB.COM 驅動程式的 TSR 模組透過 INT 2F\AX=AD80h-AD83h (8.03-28, 8.03-30) 對程式開啟以進行互動。
KEYRUS.COM 驅動程式 (由 D.Gurtjak,Donetzk 編寫) 是一個鍵盤和字元生成驅動程式組合。它在俄羅斯使用者中很受歡迎,因為它最初提供內部 866 (俄語) 內碼表和俄語鍵盤佈局。但 KEYRUS.COM 的原始版本也包含補充程式,這些程式使使用者能夠編寫、安裝和啟用任何內碼表和任何鍵盤佈局。KEYRUS.COM 驅動程式可以從許多俄羅斯網際網路網站免費下載。最後一個版本 8.0b (1994) 打包在 keyrus8b.zip 存檔中,可從作者網站 http://www.gurtjak.skif.net/pages/programs.htm 獲取。
KEYRUS.COM 驅動程式可以使用 INSTALL (4.15) 或 INSTALLHIGH (4.16) 命令從 CONFIG.SYS 檔案載入,也可以從命令列或 AUTOEXEC.BAT 檔案的某一行載入 - 直接載入或使用 LH 命令 (3.17) 載入,例如
LH C:\DOS\DRV\Keyrus.com
當預設設定不足時,應在同一命令列中的驅動程式名稱後面指定選項。由於選項可能很多,因此可以在單獨的檔案中指定它們;此檔案的任意名稱必須以符號“@” (at) 開頭。
LH C:\DOS\DRV\Keyrus.com @Opt_file.ext
KEYRUS.COM 不會載入,也不會影響它已載入的 TSR 部分,當它在命令列中執行以顯示預設選項 Keyrus /? 時,或使用 Keyrus /FILES 提取內部字型和鍵盤佈局時,或更改預設規範時,在這種情況下,驅動程式名稱 (KEYRUS.COM) 必須後跟一組選項,而該組中的最後一個選項必須是 /SAVE。
KEYRUS.COM 驅動程式由三個 TSR 模組組成:鍵盤模組、字元生成模組和介面模組。每個模組都接受自己的一組選項。如果未另行指定,則 KEYRUS.COM 接受選項“ON”而不是選項“OFF”(反之亦然),在下面示例中的所有地方始終是允許的,並會導致相反的結果。
鍵盤模組的選項有:
/KEYBOARD=Off – 不載入鍵盤模組,使用 BIOS 的佈局。 |
/BASE_KEYS – 啟用鍵重新分配 (預設值為 OFF)。 |
/KEYS=filename.ext – 從檔案中獲取鍵盤佈局。此檔案 (長度為 212 或 318 位元組) 可以由 KEYEDIT 實用程式建立,該實用程式與驅動程式一起提供。當 KEYRUS.COM 使用 /SAVE 選項啟動時,指定的 檔案不會載入,而是成為 KEYRUS 的內部預設佈局。 |
/BUFFER=ON – 將鍵盤緩衝區擴充套件到 31 個字元。 |
/FAST=ON,10,1 – 設定鍵盤速度 (0 – 最快,然後是 1, 2, 4, 8, 10, 13, 16, 20, 31 – 最慢) 和延遲時間,從 0 (0,25 秒) 到 3 (1 秒)。 |
/RUSALT=ON – 在按下 ALT 鍵時,啟用在任何國家鍵盤佈局中鍵入符號 [ ] ; ' , . /。 |
/BEEP=OFF,rus – 在 RUS (任何國家) 鍵盤佈局中,按鍵時沒有蜂鳴聲。可以指定 LAT (拉丁) 和 ALT (偽圖形) 佈局來代替 RUS。 |
/CLICK=OFF,rus – 在 RUS (任何國家) 鍵盤佈局中,按鍵時沒有點選聲。可以指定 LAT (拉丁) 和 ALT (偽圖形) 佈局來代替 RUS。 |
/LAMP=ON,rus – 在 RUS (任何國家) 鍵盤佈局中,ScrollLock 燈亮起。可以指定 LAT (拉丁) 和 ALT (偽圖形) 佈局來代替 RUS。 |
/COLOR=0,2 – 使用邊框顏色指示鍵盤佈局。左側顏色程式碼 (0 = 黑色) 用於 RUS (任何國家) 鍵盤佈局。右側顏色程式碼 (2 = 深綠色) 用於 ALT (偽圖形) 鍵盤佈局。其他允許的顏色程式碼見附錄 A.10-5。 |
/ALT=87,4 – 設定用於切換到偽圖形鍵盤佈局的“熱”鍵。Shift 4 和掃描碼 87 表示使用 CTRL-F11 鍵組合進行切換。 [注 3][注 4] /ALT=OFF 表示無法訪問偽圖形鍵盤佈局。 |
/SCAN=54,4 – 設定用於切換到 RUS (任何國家) 鍵盤佈局的“熱”鍵。Shift 4 和掃描碼 54 表示使用 CTRL-RightSHIFT 鍵組合進行切換。 [注 3][注 4] |
/LAT=42,4 – 設定用於切換到拉丁鍵盤佈局的“熱”鍵。Shift 4 和掃描碼 42 表示使用 CTRL-LeftSHIFT 鍵組合進行切換。 [注 3][注 4] /LAT=OFF 表示使用一個“熱”鍵來切換到國家鍵盤佈局並返回。 |
/MODESHIFT=87,1 – 設定一個“熱”鍵,用於在按下此“熱”鍵時臨時切換鍵盤佈局。Shift 1 和掃描碼 87 對應於 RightSHIFT-F11 鍵組合。 [注 3][注 4] /MODESHIFT=OFF 停用臨時切換。 |
/CLRSCAN=ON – 將所有“熱”鍵重置為原始預設值。重新配置“熱”鍵需要載入 KEYRUS 的介面模組。掛鉤的“熱”鍵必須選擇,以便不會被駐留外殼或其他 TSR 攔截。 |
字元生成器的模組接受以下選項
/BLANK=ON,9,ON,ON – 在空閒 9 分鐘後清空螢幕;第二個“ON”用於感知滑鼠的移動,最右邊的“ON”用於感知螢幕輸出。 | ||
/SWITCH=22,6 – 設定一個“熱”鍵,用於將字元生成器切換到 DOS 的預設內碼表 437;掃描碼 22 對應於字母“U”,Shift 6 表示同時按下 CTRL 和 LeftSHIFT 鍵。 [注 3][注 4] 內碼表切換不會影響鍵盤佈局。 /SWITCH=OFF 表示無法訪問內碼表 437。 | ||
/EGA |
– | 假設 PC 配備了與 EGA 相容的顯示卡。可以指定 /VGA 來代替 /EGA,以假設 PC 配備了與 VGA 相容的顯示卡。/EGA 和 /VGA 選項都不會被 /SAVE 操作儲存。 |
/8x8=ON |
– | 為 80x43、80x50 和類似的文字影片模式載入 8x8 字型。此選項可以設定為 OFF 和 AUTO,後者表示根據軟體請求載入。 |
/8x14=ON |
– | 載入 8x14 字型 (由 MS WORD for DOS 使用)。此選項也可以設定為 OFF 和 AUTO,就像 /8x8 選項一樣。 |
/8x16=ON |
– | 為 80x25 主 DOS 影片模式 03 載入 8x16 字型。此選項也可以設定為 OFF 和 AUTO,就像 /8x8 選項一樣。 |
/FULL |
– | 載入所有 3 種內部字型。 |
/ROM |
– | 不載入內部字型,使用 DOS 的預設字型。 |
/FONT=filename.ext – 載入單獨檔案中給出的外部字型;當與 /SAVE 選項一起使用時,字型不會載入到記憶體中,而是被接受為 KEYRUS 驅動程式的預設內部字型。 | ||
/DELETEFONT – 刪除最近安裝的字型。 | ||
/COMPRESS=OFF – 不壓縮字型 (ON 僅適用於文字影片模式)。為圖形影片模式和 Windows 作業系統的“DOS 視窗”選擇 OFF。 | ||
/ALL |
– | 載入所有符號 0-255。這意味著沒有字型壓縮(/COMPRESS=OFF)。 |
/128 |
– | 載入符號 128-255。這意味著沒有字型壓縮(/COMPRESS=OFF)。 |
/RANGE=128-175,224-239 - 載入兩個指定範圍內的符號,如示例所示。 | ||
/RUSSIAN |
– | 載入與上面示例相同的範圍,但使用字型壓縮(/COMPRESS=ON)。要關閉壓縮,必須顯式指定選項 /COMPRESS=OFF。 |
KEYRUS.COM 驅動程式的介面模組接受以下選項集
/ANYWAY |
– | 允許將驅動程式的 TSR 模組再次載入到記憶體中。 |
/DELAY_INIT - 暫停驅動程式的 TSR 模組的初始化,直到從命令列啟動 KEYRUS.COM 驅動程式。 | ||
/INTERFACE=OFF - 使介面模組保持非活動狀態。當處於非活動狀態時,可程式設計重新配置被停用,KEYRUS.COM 驅動程式無法檢測到其 TSR 模組在記憶體中的存在,也無法從記憶體中解除安裝它們。 | ||
/RELEASE |
– | 從記憶體中解除安裝 KEYRUS.COM 驅動程式的 TSR 模組。此操作需要介面模組處於活動狀態(預設情況下為 /INTERFACE=ON)。 |
- 註釋
- KEYRUS.COM 驅動程式與 Microsoft 的驅動程式 DISPLAY.SYS(5.02-02)和 KEYB.COM(5.02-04)以及 Microsoft 的鍵盤佈局表 KEYB*.SYS(A.02-2)不相容。如果您打算載入 KEYRUS.COM 驅動程式,則不應使用這些檔案。
- KEYRUS.COM 驅動程式的駐留介面模組透過 INT 2F\AX=4352h(8.03-24)與程式互動。
- ^ a b c d e 此處的移位是右 SHIFT 鍵數字 1、左 SHIFT 鍵數字 2、CTRL 鍵數字 4、ALT 鍵數字 8、ScrollLock 開關數字 16、NumLock 開關數字 32、CapsLock 開關數字 64 和 Insert 開關數字 128 的總和(參見 8.01-85,AL 中返回的位元組)。例如,移位 12 表示在按下由其掃描碼定義的主“熱鍵”時按住 CTRL 和 ALT 鍵。
- ^ a b c d e KEYRUS.COM 驅動程式接受十進位制掃描碼,因此必須將表 A.02-1 中第二列中的十六進位制值轉換為十進位制形式。除此之外,KEYRUS.COM 無法正確區分帶有和不帶有字首 E0h 的掃描碼。
- 在 Windows-95/98 作業系統的“DOS 視窗”中,KEYRUS.COM 驅動程式僅在文字影片模式下才能正常執行,也就是說,當使用 ALT-ENTER 鍵將此“DOS 視窗”擴充套件到整個螢幕時。Windows 2000/XP 作業系統的“DOS 視窗”也可以由 KEYRUS.COM 驅動程式提供服務,但在這種情況下,它必須從位於 \WINDOWS\SYSTEM32 目錄中的 CONFIG.NT 檔案或 AUTOEXEC.NT 檔案載入。
當滿足四個條件時,滑鼠指向裝置的功能變得可用。首先,您必須有一個能夠執行所需功能的滑鼠,並且可以連線到您的計算機。其次,您必須載入一個驅動程式,該驅動程式支援使用適當連線型別的滑鼠執行所需功能。第三,所需的函式必須由要使用這些函式的程式呼叫。第四,驅動程式和程式都必須能夠在計算機中安裝的作業系統下執行。
關於滑鼠指向裝置,MS-DOS 7 作業系統似乎不一致。一方面,Windows-95/98 版本沒有為 MS-DOS 7 提供滑鼠驅動程式。另一方面,例如,編輯實用程式 EDIT.COM(6.09)需要滑鼠的功能,並且來自以前版本的 DOS 的滑鼠驅動程式在 MS-DOS 7 下可以正常執行。所有這些用於 DOS 的滑鼠驅動程式都以相同的方式與應用程式互動,透過中斷 INT 33(8.03-31 – 8.03-55)。
滑鼠指向裝置連線到 PC 的方式由埠地址(A.14-1)和中斷請求線路號(IRQ)定義。下面描述的滑鼠驅動程式能夠搜尋所有相關埠和 IRQ 號的所有滑鼠指向裝置。儘管連線規範不是必需的,但它仍然可以給出以避免搜尋並使載入更快。
進入新千年後,出現了另一種型別的“滑鼠”——那些使用 USB 埠連線的“滑鼠”。這種“滑鼠”依賴於指向裝置 BIOS 介面(INT15\AX=C2xx)以及驅動程式與該介面的互動(5.03-3)。在 BIOS 系統無法響應 INT15\AX=C2xx 呼叫的舊式 PC 中,可以透過選擇適合 USB 控制器(5.07-05)的驅動程式來提供必要的支援,然後任何滑鼠驅動程式都能夠滿足透過 USB 埠連線的滑鼠。
GMOUSE.COM 驅動程式包含在具有知名商標 GENIUS 的滑鼠指向裝置的軟體包中,該商標屬於 KYE Systems Corporation。此驅動程式也可以在包含驅動程式集合的光碟中找到。GMOUSE.COM 驅動程式的 10.20 版本(1996 年)打包到 GMOUSE.ZIP 存檔中,可以從網際網路網站 http://www.dosbootsector.narod.ru/drivers.htm 免費下載。GMOUSE.COM 驅動程式可以從命令列或 AUTOEXEC.BAT 檔案中直接載入,也可以透過 LH 命令(3.17)載入,或者可以透過 CONFIG.SYS 檔案中的 INSTALL(4.15)或 INSTALLHIGH(4.16)命令載入,例如
INSTALLHIGH=C:\DOS\DRV\Gmouse.com
其中
C:\DOS\DRV\- GMOUSE.COM 驅動程式路徑的示例。
通常 GMOUSE.COM 驅動程式不需要引數規範,但它仍然可以接受以下任何一個相互排斥的引數
/1 |
- 滑鼠透過序列埠 COM1 連線 |
/2 |
- 滑鼠透過序列埠 COM2 連線 |
/3 |
- 滑鼠透過序列埠 COM3 連線 |
/4 |
- 滑鼠透過序列埠 COM4 連線 |
/P |
- 滑鼠透過 PS2 埠連線。 |
/P2 |
- 2 鍵滑鼠,透過 PS2 埠連線。 |
/P3 |
- 3 鍵滑鼠,透過 PS2 埠連線。 |
/U |
- 從記憶體中解除安裝 GMOUSE.COM 驅動程式。 |
/? |
- 顯示簡短幫助。 |
列出的引數也適用於 GMOUSE.COM 驅動程式的較新版本,這些版本增加了檔案大小和一些多餘的功能,例如根據載入的內碼表自動確定訊息的語言。與較新版本相反,GMOUSE.COM 驅動程式的 10.20 版本可以從一個特殊的引數檔案 GMOUSE.INI 中接受更多引數,如果該引數檔案與驅動程式位於同一目錄中。
- 註釋
- 如果在載入過程中,例如,為了讀取顯示的訊息,搜尋滑鼠指向裝置的操作被 BREAK 鍵中斷,那麼在按下任何其他鍵後,GMOUSE.COM 驅動程式將無法恢復搜尋,並且 PC 將被掛起。
- 當滑鼠指向裝置連線到埠 COM3 或 COM4 時,GMOUSE.COM 驅動程式不提供與 Windows 作業系統的相容性。
MOUSE.COM 名稱是幾種滑鼠驅動程式的通用名稱,這些驅動程式是在不同時間由不同的作者編寫的。這裡描述的是 Microsoft 的 MOUSE.COM 驅動程式的 8.20 版本(檔案大小為 37681 位元組,檔案日期為 1993 年 6 月 29 日)。它包含在 MS-DOS 6.22 版本中,但也被發現與 MS-DOS 7 相容。包含 MOUSE.COM 驅動程式的存檔 MOUSE.ZIP 可以從網際網路網站 http://www.computerhope.com/download/hardware.htm#05 下載。MOUSE.COM 驅動程式可以從 CONFIG.SYS 檔案中使用 INSTALL(4.15)或 INSTALLHIGH(4.16)命令安裝,或者從 AUTOEXEC.BAT 檔案中直接或使用 LH 命令(3.17)安裝,或者稍後從命令列安裝
C:\DOS\DRV\Mouse.com /C1 /R1 /S50 /P2 /N50 /Y
其中
C:\DOS\DRV\ - MOUSE.COM 驅動程式路徑的示例。 | |||||||||||||||||
/C1 |
– | 選擇 COM1 埠。除了 /C1 之外,還可能有
| |||||||||||||||
/R1 |
– | 指定中斷速率 30 Hz(預設值)。備選方案是
| |||||||||||||||
/S50 |
– | 指定靈敏度;/S 之後的數字允許在 0-100 範圍內,50 為預設值。除了 /S50 之外,還可能有單獨的 /H50 - 水平靈敏度和 /V50 - 垂直靈敏度規範。 | |||||||||||||||
/P2 |
– | 慢速加速配置檔案號。備選方案是
| |||||||||||||||
/N50 |
– | /N 之後的數字指定游標重繪速率(允許 0-255)。 | |||||||||||||||
/Y |
– | 使用硬體游標功能。 | |||||||||||||||
在大多數情況下,所有可選規範都不需要,因為預設值就足夠了,而且驅動程式能夠搜尋所有相關埠的滑鼠指向裝置。
為了停用滑鼠,您可以透過使用單個 OFF 引數啟動驅動程式來解除安裝它
C:\DOS\DRV\Mouse.com OFF
CTMOUSE.EXE 驅動程式自 2002 年起作為 FreeDOS 專案的一部分開發,但它與 MS-DOS 7 相容。CTMOUSE.EXE 的 2.1 版本(日期為 2007 年),打包在 CTMOUS21.ZIP 檔案中,可以從網際網路網站 http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/mouse/ 下載。另一個可以找到此驅動程式的最新版本的地址是 http://cutemouse.sourceforge.net/ 。
在功能上,CTMOUSE.EXE 與其他 DOS 滑鼠驅動程式類似,但它佔用更少的記憶體並支援配備滾輪的指點裝置。此驅動程式的另一個重要功能是它與指點裝置 BIOS 介面(INT15\AX=C2xx)的互動。因此,它提供了在現代 PC 中滿足 USB 滑鼠的更好機會。CTMOUSE.EXE 驅動程式具有一組詳細的預設設定,在大多數情況下使命令列引數變得不必要。它可以從命令列或從 AUTOEXEC.BAT 檔案載入 - 直接或透過 LH 命令(3.17),或者從 CONFIG.SYS 檔案透過 INSTALL(4.15)或 INSTALLHIGH(4.16)命令載入,例如
INSTALL=\DOS\DRV\Ctmouse.exe /S14 /3 /R33 /N
其中
\DOS\DRV\ – Ctmouse.exe 驅動程式的路徑示例。 | ||
/S14 |
– | 僅透過序列埠搜尋滑鼠指點裝置。第一個數字表示序列埠號(=COM1);第二個表示中斷請求線路號(=IRQ 4)。如果沒有指定 /S 引數,驅動程式將首先檢查 PS2 埠,然後檢查所有序列埠。 |
/3 |
– | 啟用滑鼠的第三個按鈕。此功能不適用於滑鼠系統型別的滑鼠以及使用滾輪而不是中間按鈕的滑鼠。 |
/R33 |
– | 靈敏度設定:第一個數字是水平靈敏度等級;第二個數字是垂直靈敏度等級。如果只指定一個數字,它將應用於兩個座標。/R 的預設值為 33。 |
/N |
– | 即使已載入滑鼠驅動程式,也要載入 Ctmouse.exe 驅動程式。此引數允許組合批處理檔案,以便在解除安裝 Ctmouse.exe 驅動程式後,配置恢復到其原始狀態,無論此狀態是什麼。 |
除了顯示的引數外,Ctmouse.exe 驅動程式還可以接受以下選項
/? |
– 顯示簡短幫助; |
/P |
– 僅檢查 PS2 埠; |
/Y |
– 不要搜尋滑鼠系統型別的“滑鼠”; |
/V |
– 反轉搜尋順序:首先檢查序列埠; |
/O |
– 停用滑鼠滾輪檢測; |
/L |
– 為左撇子調整按鈕順序; |
/B |
– 如果已經載入了某個滑鼠驅動程式,則不要載入 Ctmouse.exe; |
/W |
– 將 Ctmouse.exe 載入到傳統記憶體中; |
/U |
– 從記憶體中解除安裝 CTMOUSE.EXE 驅動程式(如果驅動程式的功能被攔截,則無法執行此操作)。 |
在 AT 相容計算機中,640–1024 kb 記憶體區域是硬體指定用於特殊用途的,例如 BIOS 程式碼“影子”、影片記憶體的“視窗”、頁面幀“視窗”等(有關更多詳細資訊,請參閱 A.12-1 的註釋 2 和 3)。由於 16 位定址以及 640–1024 kb 記憶體區域的特殊狀態,DOS 程式可訪問的記憶體空間受到很大限制。自 1980 年代初以來,所有領先軟體公司的研究人員都試圖克服記憶體空間限制。如今,許多獨立軟體供應商正在繼續這些嘗試。以下文章介紹了這個問題的最佳解決方案。
HIMEM.SYS 是微軟為配備 80386 或更高 CPU 的 PC 提供的記憶體驅動程式,根據擴充套件記憶體規範 (XMS) 提供對超過 1024 kb 界限的記憶體的機器相關訪問。因此,由 HIMEM.SYS 開啟的記憶體通常稱為 XMS 記憶體。自 HIMEM.SYS 驅動程式的 3.10 版本以來,XMS 記憶體的上限為 65535 kb。
除了訪問 XMS 記憶體外,HIMEM.SYS 驅動程式還執行兩個重要功能:控制 A20 線閘門的切換以及分配不同程式請求的記憶體空間。這兩個功能對於防止程式之間發生衝突是必要的,這些程式訪問超過傳統記憶體限制(640 kb)的記憶體。由於 HIMEM.SYS 驅動程式,每個請求在 UMB 區域或 XMS 記憶體中分配一些空間的程式都被賦予對分配的記憶體空間的獨佔訪問許可權。
HIMEM 操作原理的官方解釋尚不清楚,但對其程式碼的分析為我們提供了理由來推測它在真實模式下使用 32 位線性定址(有關更多資訊,請參閱 9.10)。無論如何,HIMEM 的操作原理都沒有機會在 XMS 記憶體中執行程式,它只提供了將可執行程式碼與資料從傳統記憶體複製到 XMS 記憶體以及返回的機會。
HIMEM.SYS 驅動程式的 3.95 版本(1995 年)在 Windows 95/98 版本中提供,通常可以在 \WINDOWS 目錄中找到。HIMEM.SYS 驅動程式應該使用 DEVICE 命令(4.06)載入,最好是在 CONFIG.SYS 檔案的第一行可執行程式碼中載入,例如
DEVICE=C:\DOS\DRV\Himem.sys /V
其中
C:\DOS\DRV\ – HIMEM.SYS 驅動程式的路徑示例; | ||
/V |
– | 顯示載入資訊。如果在載入 HIMEM.SYS 的同時按住 ALT 鍵,也可以實現相同的效果。 |
HIMEM.SYS 具有適合各種 PC 硬體的內部預設設定。在極少數情況下,您可能需要透過可選引數指定其他設定。允許的可選引數包括
/a20control:OFF – 允許 HIMEM.SYS 僅在處於非活動狀態時接管 A20 匯流排,從而防止 A20 匯流排中斷(預設值始終接管)。 | ||
/cpuclock:ON – 當 CPU 時鐘頻率受到上層記憶體訪問的影響時,啟用 CPU 時鐘頻率控制。此引數會使 HIMEM.SYS 執行速度變慢。 | ||
/eisa |
– | 提供對配備 EISA 匯流排的 PC 上超過 16 Mb 的記憶體的訪問。 |
/hmamin=40 – 阻止為請求少於 40 kb 的任何程式保留 HMA 區域(1024–1088 kb)(範圍為 0–63 kb)。預設情況下,無論程式打算使用多少 HMA 空間,都會將 HMA 區域分配給第一個請求它的程式。 | ||
/int15=128 – 為透過中斷 INT 15\AH=87h(8.01-76)訪問記憶體的程式保留 128 kb(範圍為 64–65535,預設值為 0)。 | ||
/machine:AT – 指定 HIMEM.SYS 無法正確識別的 PC 型別,透過數字(從 1 到 17)或文字識別符號(參見表 A.11-2)。預設值為數字 1 或識別符號 AT(兩者都對應於 IBM 的 PC/AT)。 | ||
/noabove16 – 不要使用 INT 15\AX=E801h(Compaq Bigmem 支援)來掃描超過 16 Mb 的記憶體。在這種情況下,HIMEM.SYS 無法提供對超過 16 Mb 的 XMS 的訪問。 | ||
/noeisa |
– | 禁止在 EISA 總線上搜尋記憶體擴充套件卡。 |
/numhandles=32 – 可以同時保持開啟狀態的 XMS 記憶體塊的活動引用(控制代碼)的最大數量;允許的範圍為 1 到 128,32 為預設值。 | ||
/shadowRAM:ON – 不要阻止 BIOS 將 RAM 傳輸到段地址空間 F000–FFFFh。當 HIMEM.SYS 檢測到 RAM 大小為 2 Mb 或更小時,它會嘗試阻止 BIOS 將 RAM 傳輸,以獲得更多可用記憶體。 | ||
/testmem:OFF – 跳過 XMS 記憶體測試。 | ||
/X |
– | 不要使用 INT 15\AX=E820h(8.01-80)來探索記憶體。 |
- 註釋
- 如果 CMOS BIOS 引數“記憶體空洞 15–16 Mb”已啟用,則 HIMEM.SYS 驅動程式不會提供對超過 16 Mb 的記憶體的訪問。
- HIMEM.SYS 驅動程式透過 CALL FAR 命令(7.03-08)接受程式的請求。CALL FAR 命令的地址可以透過 INT 2F\AX=4310h 函式(8.03-23)獲得。表 A.12-3 列出了程式可以請求的操作列表。
- 幾個類似的 XMS 記憶體驅動程式是由不同的作者開發的。J.R.Ellis 編寫了 QHIMEM2.SYS 驅動程式,該驅動程式將 XMS 記憶體限制擴充套件到 4 Gb。該驅動程式的 3.1 版本(日期為 2005 年)可在網站 http://johnson.tmfc.net/dos/usbdrv.html 上的 SFX 磁碟映像 USB18.EXE 中找到。最新的 4 Gb XMS 記憶體驅動程式 XMGR.SYS 可以從頁面 http://johnson.tmfc.net/dos/driver.html 下載。另一個類似的驅動程式 - Himem.exe -
是作為 FreeDOS 專案的一部分開發的,並與 Emm386.exe 一起提供(參見 5.04-02 的註釋 4)。其他 XMS 記憶體驅動程式接受不同的選項集,這些選項集在附帶檔案中描述。
- 在 MS-DOS 8 中,XMS 訪問程式碼已整合到核心,因此不需要載入 Himem.sys。
EMM 驅動程式(EMM = 擴充套件記憶體管理器)最初是在 1983 年至 1984 年間開發的,目的是為 IBM PC 上的擴充套件卡上的記憶體庫提供訪問許可權,以便任何記憶體庫都可以透過地址空間中的同一“視窗”來定址(通常在段地址 E000–EFFFh 中)。這種定址記憶體庫的方法被 LIM EMS 規範制度化。除了其他細節之外,LIM EMS 規範規定將地址空間“視窗”劃分為多個 16 kb 的頁面,這些頁面獨立地將定址定向到不同的記憶體庫。
後來,主機的記憶體增長遠遠超過了 1 Mb,並且帶有記憶體庫的擴充套件卡已經不再使用。但一些流行的程式仍然依賴於老式的 LIM EMS 訪問,並且必須保持與這些程式的相容性。因此,EMM 驅動程式操作的基本原理髮生了改變:對擴充套件卡的控制已被對所有 CPU(從 80386 開始)中嵌入的地址轉換機制的控制所取代。這就是為什麼這種記憶體管理器被稱為 EMM386 的原因。它們使能夠透過地址空間中的相同 LIM EMS “視窗”來定址主機的記憶體,該記憶體超過 1 Mb。
這裡只是提醒一下,主機記憶體超過 1 Mb 由 XMS 驅動程式 HIMEM.SYS (5.04-01) 控制,並且根據程式請求分配記憶體空間只是它的特權。因此,EMM386 驅動程式充當中間交易者:在收到程式對 LIM EMS 訪問記憶體空間的請求後,它會詢問 HIMEM.SYS 驅動程式並獲取超過 1 Mb 的合適記憶體塊。然後,EMM386 會重寫 CPU 的 TLB 表中的資料,以便呼叫程式能夠透過地址空間中的 LIM EMS “視窗”訪問分配的記憶體塊。如果沒有單個請求大小的記憶體塊,EMM386 驅動程式會組合幾個較小的記憶體塊。由於 CPU 中的地址轉換,地址空間中的 LIM EMS “視窗”不僅允許訪問,還允許執行程式。
EMM386 驅動程式的任務因地址轉換機制僅在 CPU 在保護模式下工作時才被啟用這一事實而變得複雜。因此,EMM386 驅動程式將 CPU 切換到虛擬 8086 (V86) 模式(保護模式的一種變體),然後所有 DOS 程式都以這種模式在第三個(最低)特權級別執行。當然,PC 必須具有 80386 或更高版本的 CPU,才能實現 V86 模式。EMM386 驅動程式允許 DOS 程式以最低特權級別進行 I/O 操作,因此對磁碟和埠的訪問條件與真實模式相同。EMM386 驅動程式使用 V86 模式固有的其他功能來載入其他驅動程式“透過”UMB 地址空間(640–1024 kb)的空閒區域,以及控制其他程式嘗試影響保護模式的實現。
至少有三種類型的程式假裝控制 DOS 中的保護模式實現。這些是擴充套件程式(例如,DOS4GW.EXE)、DPMI 伺服器(例如,CSWDPMI.EXE)和作業系統載入程式(例如,Windows 的 GUI 載入程式 WIN.COM)。這樣的競爭者無法以最低特權級別在 V86 模式下執行其任務。為了使控制能夠平滑地轉移到這些程式,VCPI 協議(VCPI = 虛擬控制程式介面)於 1989 年被採用。它是由 Phar Lap Software 和 Quarterdeck Office Systems 共同開發的。根據 VCPI 協議,將 CPU 切換到 V86 模式的程式必須根據請求執行幾個額外的功能,包括轉換為最高特權級別。由於 EMM386 實現了這些額外功能,因此它也被稱為 VCPI 伺服器。VCPI 伺服器的一些功能在文章 8.03-71 – 8.03-73 中有所描述。
在 1088 kb 邊界之外直接執行程式對於在那裡載入驅動程式是必要的,但這還不夠。普通的驅動程式程式碼不適應逐頁定址。因此,為了載入驅動程式,EMM386 管理器將 1088 kb 之外的記憶體靜態對映到 UMB 塊上,這些塊可以壓縮在 640 到 1024 kb 之間的所有可用地址空間段中。如果 EMM386 記憶體管理器已載入,然後從命令列再次啟動它(不帶引數),它將在螢幕上顯示受託地址空間的確切分配。
Windows-95/98 版本包含 EMM386.EXE 驅動程式的 4.95 版本(日期為 1996 年 6 月 12 日,大小為 125495 位元組)。但是,此版本並非旨在為單獨的作業系統 MS-DOS 7 提供服務。4.95 版本將異常呼叫轉移到 Windows OS 安裝的保護模式處理程式。但是,當 MS-DOS 7 單獨執行時,異常呼叫找不到其處理程式,並且 PC 會掛起。這就是為什麼早期版本 4.49 或 4.50 的 EMM386.EXE 驅動程式更適合 MS-DOS 7 的原因。這些版本以相同的方式載入並接受相同的選項集。4.49 版本(日期為 1993 年 5 月 31 日,大小為 120926 位元組)可以從伺服器 ftp://ftp.vgt.ru/dos/ 中的磁碟映象 Dos622_1.img 下載,該映象可以由 IMG.EXE (6.06) 寫入磁碟。然後,檔案 EMM386.EX_ 應由 EXPAND.EXE (6.10) 解壓縮。4.50 版本(日期為 1998 年 4 月 30 日,大小為 119390 位元組)來自 IBM 的 PC DOS 2000 版本,可以從伺服器 ftp://ftp.eesnet.ru/dos/ 中的 SFX 存檔 Pcdos2k.exe 下載。
由 LH (3.17)、DEVICEHIGH (4.07) 和其他以 ...HIGH 結尾的命令載入 DOS 結構和其他驅動程式超出常規記憶體,需要記憶體管理器已經載入。但是,必須在 EMM386.EXE 驅動程式載入之前提前提供對常規記憶體以外的訪問許可權。因此,EMM386.EXE 驅動程式應由 DEVICE 命令 (4.06) 從 CONFIG.SYS 檔案中的那行載入,該行位於 HIMEM.SYS (5.04-01) 載入行之後,但在所有以 ...HIGH 結尾的命令列之前。載入 EMM386.EXE 驅動程式的行可能看起來像例如
DEVICE=C:\DOS\DRV\Emm386.exe RAM V
其中
C:\DOS\DRV\ – EMM386.EXE 驅動程式的路徑示例; | ||
RAM |
– | 允許安排 EMS 頁面和 UMB 塊(RAM 引數使用的另一種形式將在後面顯示); |
V |
– | 顯示 EMS 頁面和 UMB 塊的分配。 |
除了顯示的選項之外,EMM386.EXE 驅動程式還可以從以下列表中接受可選引數:
OFF |
– | 暫停啟用 EMM386.EXE,直到從命令列啟動命令“EMM386.EXE ON”。引數 AUTO(而不是 OFF)也允許根據軟體請求啟用。當 EMM386.EXE 不處於活動狀態時,它不支援透過 LH 命令和所有以“…HIGH”結尾的其他命令載入超出常規記憶體的內容。 |
8196 |
– | 請求的 EMS 記憶體大小的示例,以 kb 為單位,從 16 kb 到實際的空閒 XMS 記憶體的大小(後者是預設值),但不超過 32768 kb。如果指定了 NOEMS 開關(見下文),則預設值為零。EMM386 會將任何請求的值向下舍入到最接近的 16 kb 倍數。 |
min=256 |
– | 如果其可用量不超過此最小值,則不要建立 EMS 記憶體,範圍從 0 到請求的記憶體大小,預設值為 256 kb(除非指定了 NOEMS 開關)。 |
W=ON |
– | 啟用 Weitek 協處理器支援(預設值為 OFF)。當 EMM386 處於活動狀態時,它會從命令列接受命令
|
M4 |
– | 頁面幀放置的起始段地址規範示例。頁面幀是用於連續放置 EMS 頁面 0–3(每個 16 kb)的區域。“M”後面的數字是程式碼(從 1 到 14),表示段地址 1 =C000h,2 =C400h,3 =C800h,4 =CC00h,5 =D000h,6 =D400h,7 =D800h,8 =DC00h,9 =E000h(預設設定),10 =8000h,11 =8400h,12 =8800h,13 =8C00h,14 =9000h |
FRAME=CC00 – 相同頁面幀起始地址的直接規範示例。其他起始地址(除上述地址外)不允許。為了禁止幀頁面,您可以指定 FRAME=NONE,這將等同於 NOEMS 引數(見下文)。 | ||
/PCC00 |
– | 相同頁面幀起始地址規範的另一種形式的另一個示例;在 /P 引數之後可以指定相同的 14 個值。 |
P4=DC00 |
– | 將另一個 EMS 頁面 P4(第五個)新增到頁面幀 CCOOh–DBFFh 的規範示例。可以有多個“P”引數來表示 EMS 頁面,這些頁面由數字 4 到 14 表示。當頁面幀起始地址沒有其他指定時,數字 0–3 也允許,但必須保留 EMS 頁面 0–3 的連續順序分配。 |
X=F000-FFFF – 禁止段地址區域的規範示例(在 A000h–FFFFh 範圍內),該區域必須保持完整。指定的段地址將向下舍入到最接近的 4 千位元組倍數。 | ||
I=BC00-BFFF – 要為 UMB 塊分配的段地址區域的規範示例。指定的段地址將向下舍入到最接近的 4 千位元組倍數。當“I”和“X”規範重疊時,“X”選項優先。 | ||
B=4000 |
– | 允許的 EMS 頁面放置區域的最低邊界段地址(在 1000h–4000h 範圍內)。預設最低邊界為 4000h。 |
L=256 |
– | 為 XMS 型別訪問保留的記憶體空間大小(以 kb 為單位)(預設值為 0 kb)。 |
A=7 |
– | 提供多工支援的暫存器庫數量(允許 0–254,預設值為 7)。每個暫存器庫大約佔用 200 位元組。 |
h=64 |
– | 可以同時保持開啟以供訪問的 EMS 記憶體區域的引用(控制代碼)數量(允許 2–255,預設值為 64)。 |
d=32 |
– | 保留的直接記憶體訪問 (DMA) 緩衝區的大小(允許 16–256 kb,預設值為 32 kb)。 |
RAM=C000-EFFF – UMB 和 EMS 頁面放置的區域邊界的規範示例。當“RAM”引數後面沒有邊界段地址時,所有可用記憶體空間都被視為允許的。 | ||
WIN=E000-EFFF – 段地址的示例,指定地址空間區域的邊界,該區域保留供 Windows OS 使用。 | ||
ROM=F000-FFFF – 如果 PC 的 BIOS 本身沒有這樣做,將 BIOS 映象載入到地址空間的一部分,由其邊界的段地址指定。複製 BIOS 程式碼可以使您的 PC 更快。 | ||
NOEMS |
– | 不建立 EMS 頁面幀,不提供 LIM EMS 記憶體訪問,但使用 640–1024 kb 區域中的所有可用地址空間來安排 UMB 並載入驅動程式。 |
NOHI |
– | 將 EMM386.EXE 驅動程式的整個常駐模組載入到 640 kb 以下的常規記憶體中。 |
NOMOVEXBDA – 取消 BIOS 陰影的預設載入。 | ||
NOTR |
– | 排除網絡卡搜尋(對於 EMM386.EXE 版本 4.45 – 4.95) |
NOVCPI |
– | 停用對 VCPI 函式的支援,[注 2] 由其他程式請求。此開關應與 NOEMS 開關一起使用。 |
HIGHSCAN – 啟動對可用地址空間的徹底搜尋,從而使其使用更有效率。但有可能將佔用空間視為可用空間,然後您的 PC 可能掛起。 | ||
ALTBOOT |
– | 替換熱重啟處理程式(僅當載入 EMM386.EXE 驅動程式後,CTRL-ALT-DEL “熱鍵” 組合停止響應或出錯時)。 |
NOBACKFILL – 當 EMM386 嘗試在總記憶體為 640 kb 或更小的 PC 中建立 UMB 時,防止常規記憶體被回填。 | ||
當 EMM386.EXE 驅動程式已載入並處於活動狀態時,它可以從命令列接受“EMM386 OFF”和“EMM386 AUTO”命令。但如果此時 UMB 地址空間已被用於必須保持可供 DOS 使用的其他驅動程式,則這些命令不會被執行。
- 註釋
- EMM386.EXE 驅動程式透過 INT 67 (8.03-57 – 8.03-74) 接受來自其他程式的請求。
- ^ VCPI 服務,透過 INT 67\AX=DE00h-DE0Ch 提供,為必須影響 EMM386.EXE 設定的 CPU 操作 V86 模式的程式提供機會執行其任務。由於 VCPI 服務,特別是當 V86 模式已設定時,也可以載入 Windows 作業系統。但 Windows 作業系統本身在其“DOS 視窗”內停用 VCPI 服務,從而避免了失去對 PC 控制權的風險。
- 來自 MS-DOS 8 的 EMM386.EXE 版本與某些過時的 486 處理器型號不相容,可能會導致掛起。
- 已知有幾個類似的 EMM386 管理器。最先進的是由一組作者在 Tom Ehlert 的主持下編寫的 JEMM386.EXE 驅動程式。現在,在 2007 年 12 月,這個驅動程式的 5.68 版本的 JEMM568.ZIP 存檔可以從網際網路網站 http://japheth.de/ 下載。EMM386.EXE 驅動程式的另一個版本是作為 FreeDOS 專案的一部分開發的;它可以從伺服器 ftp://ftp.devoresoftware.com/downloads/ 下載。上面提到的兩個驅動程式都比原始的 EMM386.EXE 更緊湊,並接受不同的選項集,這些選項集在附帶檔案中描述。
5.04-03 記憶體分配最佳化:CHKSTATE.SYS
[edit | edit source]CHKSTATE.SYS 是一個特殊的記憶體最佳化程式服務實用程式,它是為 MS-DOS6 開發的,但事實證明它適用於 MS-DOS 7。記憶體最佳化管理器 MEMMAKER.EXE 會自動將載入 CHKSTATE.SYS 的行插入 CONFIG.SYS 檔案,並在記憶體最佳化程式終止時以相同的方式刪除該行。CHKSTATE.SYS 實用程式在執行時會形成一個文字報告檔案,其中包含有關為每個載入的驅動程式分配的記憶體區域的精確資料。
- 註釋
- 為了執行記憶體最佳化程式,主最佳化管理器 MEMMAKER.EXE 必須與輔助檔案 CHKSTATE.SYS、EMM386.EXE、HIMEM.SYS、MEMMAKER.HLP、MEMMAKER.INF 和 SIZER.EXE 位於同一個目錄中。所有這些檔案都存在於 MS-DOS6.22 版本中,也包含在 SFX 存檔 OLDDOS.EXE 中,可以從伺服器 ftp://ftp.microsoft.com/softlib/mslfiles/ 免費獲取。
- 如果 CONFIG.SYS 檔案包含一個具有多個載入備選方案的選單,則 MEMMAKER.EXE 最佳化器無法對 AUTOEXEC.BAT 檔案和 CONFIG.SYS 檔案進行適當的更正。每個備選方案都應該單獨最佳化。然而,為每個載入備選方案單獨獲得的資料使我們能夠組合包含多個載入備選方案的最佳化配置
5.04-04 UMBPCI.SYS – 免費軟體 UMB 區域驅動程式
[edit | edit source]為了為載入驅動程式開啟 UMB 地址空間 (C000h–EFFFh),EMM386.EXE 記憶體管理器 (5.04-02) 透過 CPU 的 TLB 表安排地址轉換,並強制透過將 CPU 切換到 V86 模式來支付這筆費用。但是,當需要停留在真實模式時,可以透過重新程式設計記憶體控制器(PC 主機板上的晶片組的一部分)來開啟對 UMB 地址空間的訪問。UMBPCI.SYS 驅動程式實現了這種訪問 UMB 地址空間的替代方法。
UMBPCI.SYS 驅動程式擁有悠久的開發歷史,並有許多參與者。現在,它由 Uwe Sieber 維護。UMBPCI.SYS 的最新版本可以在網際網路網站 http://www.uwe-sieber.de/ 上找到,打包在 UMBPCI.ZIP 存檔中,其中包含德語文字,或者打包在 UMBPCI_E.ZIP 存檔中,其中包含英語文字。下面的描述基於 2006 年 3 月釋出的 UMBPCI.SYS 3.66 版本。
UMBPCI.SYS 絕不是 EMM386.EXE 的替代品:它不實現 LIM EMS 規範。UMBPCI.SYS 僅執行 XMS 規範規定的功能,但僅限於 EMM386.EXE 驅動程式必須執行的功能(見 A.12-3 的注 6)。
為了影響記憶體控制器的設定,UMBPCI.SYS 驅動程式呼叫 BIOS 的中斷處理程式 INT 1A\AH=B1h,與 PCI 匯流排服務相關。這就是為什麼 UMBPCI.SYS 驅動程式只能在配備 PCI 匯流排且由 PC BIOS 控制的計算機上執行其任務的原因。幾乎所有 1996 年之後生產的 AT 相容計算機都滿足這些條件。一個例外是使用 AMD-K7 處理器的計算機:在這些計算機中,由 UMBPCI.SYS 驅動程式建立的 UMB 塊無法用於載入控制 PCI 總線上的擴充套件卡的驅動程式。
UMBPCI 驅動程式提供對“陰影”記憶體區域的空閒部分的訪問,該區域用於將可執行程式碼從速度較慢的固定儲存 BIOS 晶片複製過來。並非所有晶片組都能提供對該“陰影”記憶體區域的直接記憶體訪問 (DMA)。DMA 訪問對於軟盤控制器、SMARTDRV.EXE 驅動程式 (5.06-01) 甚至 WINDOWS 作業系統(如果稍後載入)都是必需的。包含 UMBPCI.SYS 驅動程式的存檔包含一些輔助實用程式,這些實用程式能夠避免對“陰影”記憶體區域的 DMA 訪問限制帶來的不良後果。在同一個存檔中,還有一些包含建議的檔案,這些建議有助於克服特定於某些特定晶片組的問題。當然,必須考慮到相關的特殊性。
UMBPCI.SYS 驅動程式應透過 DEVICE 命令 (4.06) 從 CONFIG.SYS 檔案中載入,該命令位於載入 HIMEM.SYS 驅動程式 (5.04-01) 的行之後,並位於所有包含 LH 命令的命令列和以 …HIGH 結尾的命令列之前。載入 UMBPCI.SYS 驅動程式的命令列可能如下所示:
DEVICE=\DOS\DRV\Umbpci.sys /I=D000–DFFF
其中
\DOS\DRV\ – UMBPCI.SYS 驅動程式的路徑示例。 |
/I=D000–DFFF – 應為 UMB 塊分配的段地址空間的可選規範。分配空間的邊界必須是 16 kb 的倍數(即 C800、CC00、D000、D400、D800 等等)。 |
如果指定了 /I= 引數,則 UMBPCI.SYS 不會檢查地址空間區域是否為空閒。在一條命令列中允許出現多個 /I= 出現,每個 UMB 區域都會被賦予一個序號。DEVICEHIGH (4.07) 和 LH (3.17) 命令在其 /L: 引數之後接受 UMB 區域的序號,因此有機會透過指定的 UMB 地址空間部分載入任何特定的驅動程式。對於那些使用直接記憶體訪問 (DMA) 的驅動程式來說,這一點很重要,因為某些晶片組(例如 i430TX)只提供對 UMB 區域的 E000–EFFFh 部分的 DMA 訪問。大多數情況下不需要 /I= 引數,因為流行的現代晶片組(i815、i820、i845、i850、i855 和許多其他晶片組)不對對 UMB 區域的 DMA 訪問施加任何限制。
- 註釋
- 在沒有 PCI 匯流排的舊計算機中,可以使用 HIRAM.EXE 驅動程式(於 1993 年編寫)及其輔助實用程式來提供對 UMB 地址區域的訪問。這組軟體可以從網際網路網站
http://www.uwe-sieber.de/files/hiram.zip .
下載一個存檔。
5.05 RAM 磁碟驅動程式[edit | edit source]
RAM 磁碟驅動程式佔用計算機的隨機訪問記憶體 (RAM) 的一部分,以模擬虛擬磁碟驅動器。這在探索和修復工作期間提供對可寫磁碟空間的訪問,此時物理磁碟空間可能不存在或必須保持免受訪問痕跡。虛擬 RAM 磁碟比任何物理磁碟都快得多。由於 RAM 磁碟的內容在每次 PC 關閉時都會丟失,因此 RAM 磁碟有時用作臨時檔案的存放位置,以避免汙染物理磁碟空間。
許多 RAM 磁碟驅動程式的一個常見缺點是它們無法為建立的虛擬磁碟分配特定的字母名稱。DOS 總是將第一個空閒字母名稱分配給虛擬磁碟,而這個名稱事先無法知道。文章 9.04-02 中提出的一個解決方案是搜尋分配給安排的虛擬磁碟的特定字母名稱。另一種解決方案是編寫一個特殊的驅動程式,它將欺騙 DOS,使其擁有一個錯誤的已註冊磁碟數量,這樣下一個磁碟就可以被分配一個任意的規定字母名稱。文章 9.08 中提供了一個後一種解決方案的示例。
5.05-01 RAM 磁碟驅動程式 RAMDRIVE.SYS[edit | edit source]
RAMDRIVE.SYS 是 Microsoft 為 DOS 提供的 RAM 磁碟驅動程式,它包含在 WINDOWS-95/98/ME 版本中。通常它可以在 \WINDOWS 目錄中找到。
DEVICE=C:\DOS\DRV\Ramdrive.sys 16000 512 256 /E
其中
| RAMDRIVE.SYS 應透過 DEVICE (4.06) 或 DEVICEHIGH (4.07) 命令從 CONFIG.SYS 檔案的命令列載入,例如 | ||
16000 |
– | C:\DOS\DRV\ – RAMDRIVE.SYS 驅動程式的路徑示例。 |
512 |
– | 請求的 RAM 磁碟大小的示例,以千位元組為單位,允許 4–32767 kb 範圍,預設值為 64 kb。 |
256 |
– | 扇區大小的示例,以位元組為單位;允許 128、256 和 512 位元組,預設值為 512。如果指定了扇區大小,則也必須指定 RAM 磁碟大小。 |
/E |
– | RAM 磁碟根目錄中條目數量的示例規範,允許 2–1024,預設值為 64。如果指定了條目數量,則也必須指定扇區大小。 |
您可以根據可用記憶體空間設定任意數量的RAM磁碟:只需為每個額外的RAM磁碟在您的 CONFIG.SYS 檔案中新增一行即可。
- 註釋
- 帶有 2 Gb 大小限制的 RAM 磁碟驅動程式 RDISK.COM 可以從 http://johnson.tmfc.net/dos/driver.html 下載。此驅動程式應與提供 4Gb XMS 記憶體限制的 XMS 記憶體管理器一起使用(注意 5.04-01 的 3 到 5)。
免費軟體驅動程式 TDSK.EXE 和 BITDISK.EXE 允許您不僅在載入時定義 RAM 磁碟大小,如 RAMDRIVE.SYS 驅動程式那樣,還可以推遲 RAM 磁碟大小的定義,甚至可以重複進行。此功能對於在未知計算機上安裝 MS-DOS 7 非常重要,因為您需要確定可用的記憶體量,然後才能決定是否要安排 RAM 磁碟以及大小。
TDSK.EXE 和 BITDISK.EXE 驅動程式均由西班牙巴利亞多利德的 Garcia de Celis 在 1992 年至 1995 年期間編寫,最後一個版本為 2.3。後來這些驅動程式被現代化併成為 FreeDOS 專案的一部分。現在這兩個驅動程式都可以從 http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/ramdisk/ 下載。Garcia de Celis 的原始驅動程式位於 TDSK23.ZIP 存檔中,而 TDSK.EXE 驅動程式的現代化版本 2.42 位於 TDSK242B.ZIP 存檔中。
BITDISK.EXE 是 TDSK.EXE 的簡化版本。雖然後者能夠使用 EMS、XMS 或傳統記憶體,但 BITDISK.EXE 只能處理 XMS 記憶體。因此,它始終需要 HIMEM.SYS 驅動程式提前載入。TDSK.EXE 可以接受所有 BITDISK 的選項,此外還可以接受一些自己的選項。
Garcia de Celis 的原始驅動程式應透過 CONFIG.SYS 檔案中的一行中的 DEVICE (4.06) 或 DEVICEHIGH (4.07) 命令進行初始化。TDSK.EXE 驅動程式的現代化版本 2.42 必須僅透過 DEVICE 命令 (4.06) 載入到傳統記憶體中,前提是 CONFIG.SYS 檔案還包含一行帶有 DOS=NOAUTO 命令 (4.08) 的程式碼。RAM 磁碟初始化行可能包含所有必需的引數(見下文),然後 RAM 磁碟將立即建立。但是,當 RAM 磁碟的建立應被延遲時,CONFIG.SYS 檔案中的命令列不應包含特定引數的值;它可能看起來像這樣:
DEVICEHIGH=C:\DOS\DRV\Bitdisk.exe 0
或者像這樣
DEVICE=C:\DOS\DRV\Tdsk.exe 0
其中
C:\DOS\DRV\ – 驅動程式路徑示例; | ||
0 |
– | 零大小表示 RAM 磁碟不應立即安排。 |
顯示的命令不會導致為 RAM 磁碟分配記憶體,但會引發驅動程式 TSR 模組(約 600 位元組)的載入和初始化。在此階段,DOS 會註冊新的 RAM 磁碟併為其分配字母名稱。如果在 CONFIG.SYS 檔案中重複此行多次,則可以初始化多個 RAM 磁碟。
為了使 RAM 磁碟可訪問,必須稍後透過一個命令呼叫同一個驅動程式,該命令寫入 AUTOEXEC.BAT 檔案的一行或直接寫入 DOS 的命令列,例如
C:\DOS\DRV\Bitdisk.exe R: 5600 512 384 4 /F:2
或者
C:\DOS\DRV\Tdsk.exe R: 5600 512 384 4 /F:2 /E /M /I=1
其中
R |
– | 所定址的 RAM 磁碟的字母名稱(如果有幾個 RAM 磁碟)。單個 RAM 磁碟的字母名稱可以省略。 |
5600 |
– | 所需磁碟大小規範(以 kb 為單位)的示例。最小大小為 4 kb,最大大小為 BITDISK.EXE 為 32766 kb,TDSK.EXE 為 65534 kb。大小為 0 的命令會釋放所有已佔用記憶體,除了驅動程式 TSR 模組的記憶體:它仍然處於載入狀態,並隨時準備根據要求重新安排 RAM 磁碟。 |
512 |
– | 扇區大小(以位元組為單位)的可選規範示例;允許的扇區大小為 64、128、256 和 512 位元組,後者為預設值。 |
384 |
– | 根目錄中條目的可選數量。允許的值從 1 到磁碟大小限制,預設值為 384。當條目數未被省略時,必須也指定扇區大小。 |
4 |
– | 每個簇的扇區數的可選數量,在 MS-DOS 7 中必須是 2 的冪。預設值為對應於 RAM 磁碟大小的最小數量。當每個簇的扇區數未被省略時,也必須指定根目錄中的條目數。 |
/F:2 |
– | 指定建立 FAT 的兩個副本,就像在真實磁碟中一樣(預設情況下建立單個 FAT 表)。在極少數情況下,一些磁碟定址實用程式無法與虛擬磁碟正常工作,虛擬磁碟只有一個 FAT。 |
針對 TDSK.EXE 的命令列包含一些附加選項,這些選項僅被 TDSK.EXE 接受。TDSK.EXE 驅動程式版本 2.42 允許的附加選項如下:
/E |
– | 在 HIMEM.SYS 驅動程式提供的 XMS 記憶體中安排 RAM 磁碟(預設),該驅動程式必須已載入。 |
/C |
– | 在傳統記憶體中安排 RAM 磁碟。 |
/X(或等效的 /A) – 在 EMM386.EXE 驅動程式提供的 EMS 記憶體中安排 RAM 磁碟。在這種情況下,必須提前載入 EMM386.EXE 和 HIMEM.SYS 記憶體驅動程式。 | ||
/B |
– | 如果至少發現一個真實磁碟驅動器,則不載入 TDSK.EXE 驅動程式(此選項不被 TDSK.EXE 驅動程式的原始版本 2.3 接受)。 |
/M |
– | 以單色顯示螢幕訊息(預設值為彩色)。 |
/I=1 |
– | 以英語顯示訊息(預設);此外,還可以選擇西班牙語 (/I=34) 和德語 (/I=49)。 |
輔助選項 /E、/C、/X、/A 是相互排斥的,通常會被省略,因為 TDSK.EXE 驅動程式本身能夠選擇最佳位置來安排 RAM 磁碟。
顯示的命令形式可以重複使用,以呼叫 TDSK.EXE 或 BITDISK.EXE 來更改 RAM 磁碟的大小。每次執行此命令後,RAM 磁碟都會重新排列,其所有內容都會丟失。在兩種情況下,RAM 磁碟資料不會受到任何驅動程式的影響:
- 如果它被呼叫而沒有引數,則顯示當前狀態;
- 如果它被呼叫帶有單個
/?引數,則顯示幫助。
為了解決 RAM 磁碟字母名稱確定的問題,TDSK.EXE 驅動程式的版本 2.42 能夠將此字母名稱作為名為 TURBODSK 或 RAMDRIVE 的環境變數的值分配。應使用 SET 命令 (3.26) 預先準備具有任何上述名稱的環境變數,並應將其初步值設定為問號和冒號
SET RAMDRIVE=?:
如果具有相同名稱的變數具有其他值,則該值將被完整保留。但是,如果此變數僅具有顯示的值,並且此時 RAM 磁碟已安排好,那麼在執行 TDSK.EXE 驅動程式後,變數值中的問號將被 RAM 磁碟的字母名稱替換。當 RAM 磁碟的字母名稱已知時,則可以輕鬆地編寫 AUTOEXEC.BAT 檔案,以便此字母名稱自動寫入所有相關的路徑(文章 9.09-02 中有一個示例)。
執行 TDSK.EXE 驅動程式後,它將返回錯誤級別程式碼 (3.15-03、9.07-03)。錯誤級別值從 1 到 128 表示 XMS 或 EMS 訪問分配記憶體區域的引用編號(控制代碼);其他錯誤級別值表示以下含義:
| 0 | – RAM 磁碟未安排,因為它未定義; |
| 252 | – 語法錯誤; |
| 253 | – 嘗試在 Windows 作業系統下定義 RAM 磁碟; |
| 254 | – 磁碟字母名稱的指定不正確; |
| 255 | – TDSK.EXE 驅動程式的 TSR 模組未載入。 |
SMARTDRV.EXE 驅動程式安排和維護磁碟的快取緩衝區。此緩衝區中的資料傳輸操作透過 DMA 控制器執行。DMA 訪問減輕了 CPU 的負擔,並使 HDD 和 CD 驅動器的傳輸操作更快。在大量資料傳輸的情況下,例如在 DOS 下安裝 Windows ME/2000/XP 作業系統期間,節省時間的效果變得至關重要。
SMARTDRV.EXE 驅動程式是 Windows-95/98 版本的一部分,必須存在於 \WINDOWS 目錄中。但是 WINDOWS 作業系統本身以其他方式執行緩衝,並且不需要 SMARTDRV.EXE。它僅在 DOS 中需要,在 MS-DOS 7 中也是如此。由於快取緩衝區超出了傳統記憶體,因此必須提前開啟 640 kb 以上的訪問許可權。因此,適當的記憶體管理器(5.04-01、5.04-02、5.04-04)必須在 SMARTDRV.EXE 之前載入。如果您打算使用 MSCDEX.EXE (5.08-03) 訪問 CD-ROM,那麼後者也應該提前載入。最常見的是,SMARTDRV.EXE 是透過 CONFIG.SYS 檔案中的 INSTALL 命令 (4.15) 或 AUTOEXEC.BAT 檔案中的一行載入的,例如
C:\DOS\DRV\Smartdrv.exe /X A- B- C+ /U /N /L /V 128 /E:2048 /B:4096
其中
C:\DOS\DRV\ – SMARTDRV.EXE 驅動程式路徑示例。 | ||
/X |
– | 停用磁碟的寫入後快取,除了在 /X 引數之後列出的帶有加號的磁碟(如 C+)。在帶有減號的磁碟上(如 A–、B–),也會停用預讀緩衝。如果省略 /X 引數,則僅為 HDD 啟用寫入後快取。 |
/U |
– | 不載入 CD-ROM 快取模組。 |
/N |
– | 允許在寫入快取尚未寫入磁碟時接受下一個命令。此引數僅影響那些啟用了寫入後快取的驅動器。如果省略 /N 引數,則在快取寫入磁碟操作完成之前,命令提示符不會出現。 |
/L |
– | 強制在傳統記憶體中安排快取緩衝區。當 DMA 控制器無法訪問 UMB 地址空間時,需要這樣做。 |
/V |
– | 顯示狀態訊息(預設情況下,在第一次啟動 SMARTDRV.EXE 時不會顯示任何內容)。除了 /V 之外,還可以使用 /S – 顯示狀態訊息和快取統計資訊。 |
128 |
– | 快取大小(以千位元組為單位)。如果要將 XMS 記憶體的大部分用於其他目的,例如作為 RAM 磁碟,則必須指定此引數。 |
/E:2048 |
– | 傳輸資料塊的大小(以位元組為單位);允許的值為 1024、2048、4096 和 8192,預設值為 8192。 |
/B:4096 |
– | 預讀緩衝區的大小(以位元組為單位),它必須是傳輸資料塊的倍數,預設值為 16384。 |
當 SMARTDRV.EXE 正在執行時,可以使用其他選項集從命令列呼叫它,以執行命令或重新配置,例如
C:\DOS\DRV\Smartdrv.exe /X C– D+ /R /F /Q
其中
/X |
– | 停用所有磁碟的寫入後快取(如果沒有在後面加上特定磁碟的字母名稱)。如果在 SMARTDRV.EXE 的當前狀態下沒有停用寫入後快取,則可以使用此引數。這裡 C– 和 D+ 字母名稱表示停用磁碟 C: 的寫入後快取,併為磁碟 D: 啟用寫入後快取。 |
/R |
– | 清除快取並重新啟動 SMARTDRV.EXE。要立即執行的另一個操作(而不是 /R)是 /C – 將當前存在於寫入後快取中的資訊寫入磁碟。 |
/F |
– | 丟棄 /N 引數(如果它在當前狀態下處於活動狀態),並返回到預設狀態,在這種狀態下,在快取寫入操作完成之前,命令提示符不會出現。如果需要將狀態反轉為相反方向,則應指定 /N 引數而不是 /F。 |
/Q |
– | 取消預設狀態訊息顯示。在/Q 處,可能出現/S – 顯示狀態訊息以及快取統計資訊。 |
- 註釋
/C操作(寫入快取)忽略/V和/S引數,不顯示任何內容。- DMA 資料傳輸由 SMARTDRV.EXE 驅動程式安排,不涉及 SHSUCDX.COM(5.08-04)執行的操作。
- 為了適應 SATA 驅動器和 UltraDMA 資料傳輸,建議使用 UIDE.SYS 快取驅動程式。可以從網站 http://johnson.tmfc.net/dos/driver.html 下載此驅動程式。
DBLBUFF.SYS 驅動程式為某些 HDD 控制器提供相容性,否則這些控制器可能無法與 EMS 記憶體和 WINDOWS 作業系統一起使用。特別是,對於具有 SCSI 介面的 HDD,可能需要雙緩衝。DBLBUFF.SYS 驅動程式包含在 WINDOWS-95/98 版本中,通常可以在 \WINDOWS 目錄中找到。
載入 DBLBUFF.SYS 的方法取決於配置檔案 MSDOS.SYS(5.01-01)的內容。如果存在包含 "DoubleBuffer=1" 引數的行,則 MS-DOS 7 將嘗試預設載入 DBLBUFF.SYS。否則,應透過 CONFIG.SYS 檔案(4.06)中的一行 DEVICE 命令(4.06)顯式載入它。
DEVICE=C:\DOS\DRV\Dblbuff.sys /D+
其中
C:\DOS\DRV – 指向 DBLBUFF.SYS 驅動程式的路徑示例。 | ||
/D+ |
– | 一個可選引數,指示為所有磁碟安排永久雙緩衝。否則,只有對 UMB 塊(5.04-02)的 I/O 將進行雙緩衝,並且如果不需要,它將不會自動執行。 |
- 註釋
- SMARTDRV.EXE 驅動程式(5.06-01)顯示的狀態訊息包含一列 "緩衝"。如果此列中至少有一個 "是",則必須載入 DBLBUFF.SYS 驅動程式。
- 如果需要雙緩衝,則應透過 CONFIG.SYS 檔案中的 BUFFERS(4.03)或 BUFFERSHIGH(4.04)命令預留一定數量的輔助緩衝區。
DRVSPACE.SYS 是 TSR 程式 DRVSPACE.BIN 的載入器,它為邏輯磁碟提供即時壓縮和解壓縮。資料流僅在訪問操作過程中處理。壓縮提高了磁碟空間利用率,因為壓縮資料是連續寫入的,並且不會在部分填充的簇中丟失空閒磁碟空間。
檔案 DRVSPACE.SYS 和 DRVSPACE.BIN 包含在 WINDOWS-95 版本中,通常必須寫入邏輯磁碟壓縮區域之外的同一目錄(通常在根目錄中)。當 MS-DOS 7 發現可啟動磁碟上存在壓縮區域時,將預設載入 DRVSPACE.SYS 和 DRVSPACE.BIN。預設載入可以透過 MSDOS.SYS 檔案(5.01-01)中包含引數 "DRVSPACE=0" 的行,或者透過 CONFIG.SYS 檔案(4.08, 9.01-01)中的 "DOS=NOAUTO" 命令來取消。
當要顯式載入 DRVSPACE.SYS 時,應將其作為驅動程式透過 CONFIG.SYS 檔案中的一行 DEVICE 命令(4.06)載入,在記憶體管理器(5.04-01, 5.04-02)之前,例如
DEVICE=C:\Drvspace.sys /MOVE /NOHMA /LOW
其中
C:\ |
– | 指向 DRVSPACE.SYS 載入器的路徑示例。 |
/MOVE |
– | 啟動將 DRVSPACE.BIN 從傳統記憶體的上部重新定位到 UMB 或 HMA 區域,因為原始放置可能與其他軟體不相容。重新定位在 CONFIG.SYS 檔案中執行所有 DEVICE 和 DEVICEHIGH 命令後進行。如果 640 kb 之外的地址空間不可訪問,則 /MOVE 選項會導致重新定位到傳統記憶體的下部。 |
/NOHMA |
– | 不要將 TSR 壓縮模組重新定位到 HMA(1024–1088 kb)。 |
/LOW |
– | 即使 640 kb 之外的地址空間可訪問,也強制將 TSR 壓縮模組重新定位到傳統記憶體的下部。 |
載入 DRVSPACE.BIN 後,DRVSPACE 字將成為一個命令,呼叫一個對話方塊外殼。此外殼提供將普通磁碟(和軟盤)轉換為壓縮磁碟和反向轉換的機會,建立新的壓縮磁碟,測試和整理壓縮磁碟,安排對壓縮磁碟空間的保護等等。
使用 DRVSPACE 進行磁碟壓縮並沒有取得很大成功,原因有幾個。首先是與其他版本的 DOS 和其他作業系統不相容(WINDOWS-95 是例外)。第二個原因是,壓縮使磁碟更容易受到潛在錯誤的影響,並且更難以進行資料恢復操作。第三個原因是,如今磁碟空間的問題不像 1990 年代初期那樣尖銳。大型快速現代磁碟驅動器使 "即時" 壓縮不再值得壓縮和解壓縮操作造成的訪問速度損失。這就是為什麼 DRVSPACE 使用不包含在第 9 章中提供的配置檔案示例中的原因。
- 註釋
- DRVSPACE.BIN 程式為使用 FAT-12 或 FAT-16 檔案系統格式化的邏輯磁碟提供壓縮。使用 FAT-32 格式化的磁碟不能由 DRVSPACE.BIN 壓縮。
具有整合驅動器電子器件 (IDE) 的磁碟驅動器由西部資料公司開發,並在 1984 年首次應用於 IBM 的 PC-AT。從那時起,這種驅動器成為最廣泛使用的驅動器。IDE 驅動器與 HDD 控制器互動的協議被稱為 ATA (= 先進技術附加)。1994 年,它獲得了 ANSI X3.221-1994 標準的地位。隨著 CD-ROM 和其他型別的可移動驅動器的出現,ATA 協議得到了新的命令的補充,包括用於資料包傳輸的命令,自 1998 年以來,它被稱為 ATA 資料包介面,或 ATAPI。
在 2003 年之後生產的計算機中,ATAPI 互動協議由 PC 的 BIOS 實現。ATAPI 支援的一個具體症狀是 BIOS 能夠從光學 DVD 光碟載入作業系統。在無法從 DVD 光碟載入作業系統的 PC 中,ATAPI 功能可以通過鬆下公司開發的介面驅動程式 ATAPIMGR.SYS 提供。由於此驅動程式,標準 (過時) IDE 控制器能夠訪問 DVD 光碟,以及高容量的可移動磁性、磁光和固態介質。包含 ATAPIMGR.SYS 驅動程式版本 2.04 的 SFX 存檔 85X_DOS.EXE 可以從網際網路網站 http://panasonic.co.jp/pcc/products/drive/internal/support/info_dd2.html 下載。
ATAPIMGR.SYS 驅動程式應在 CONFIG.SYS 檔案中載入,在任何其他需要 ATAPI 介面支援的驅動程式之前。使用 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入 ATAPIMGR.SYS 驅動程式的行可能如下所示
DEVICE=DOS\DRV\Atapimgr.sys /P:170,15 /W:2 /NDR /NRS /C:2 /T:5 /LUN
其中
DOS\DRV\ |
– | 指向 ATAPIMGR.SYS 驅動程式的路徑示例。 |
/P:170,15 |
– | I/O 埠的十六進位制地址和十進位制中斷請求線號 (IRQ)。允許的埠地址為 1F0、170、1E8、168 (A.14-1)。允許的 IRQ 號碼為 10、11、12、14、15。如果省略 /P,驅動程式將在所有提到的埠地址和 IRQ 線中搜索磁碟驅動器。 |
/W:2 |
– | 在不支援就緒確認 (IOCHRDY) 檢查的舊 PC 中,用於資料 I/O 操作的等待週期數(允許 0-99)。建議的等待週期數取決於 CPU 時鐘頻率:對於 50 MHz – /W:2,對於 75 MHz – /W:6,對於 100 MHz – /W:9,對於 166 MHz – /W:19,對於 240 MHz – /W:30。對於 CPU 時鐘頻率更高的 PC,/W 引數不需要。 |
/NDR |
– | 不要向 CD/DVD-ROM 驅動器發出復位命令。此選項對於從 CD/DVD 光碟啟動至關重要,因為否則復位命令將中斷啟動過程。 |
/NRS |
– | 當驅動器傳送條件檢查請求時,不要返回請求感知確認。 |
/C:2 |
– | 為特定驅動器重新計算 PIO 模式
|
/T:5 |
– | 設定等待驅動器響應的超時時間(以秒為單位);預設值為 30。 |
/LUN |
– | 選擇性地支援對具有 LUN (= 本地單元號) 為零的裝置進行定址。LUN 號碼允許將多功能磁碟驅動器視為不同的裝置,例如,插入了 DVD-RAM 光碟的驅動器 – 等效於硬碟驅動器,而插入了 CD-ROM 光碟的同一驅動器 – 等效於普通 CD-ROM 驅動器。預設情況下,不支援使用 LUN 號碼進行定址。 |
如果在載入了 ATAPIMGR.SYS 的 "上述" MS-DOS 7 中啟動了 Windows-95/98 作業系統,則後者將在 "MS-DOS 相容模式" 下執行,除非您在 \Windows\IOS.INI 檔案中新增以下行
ATAPIMGR.SYS ; MKE ATAPI Manager
如果 ATAPIMGR.SYS 驅動程式發現 PC 的 BIOS 支援 ATAPI 介面功能,它將不會載入。當 ATAPIMGR.SYS 未載入時,一些 CD-ROM 驅動程式(特別是 SR_ASPI.SYS)也不會載入。因此,在與 ATAPIMGR.SYS 合作時,應優先考慮使用 ATAPI 功能的 CD-ROM 驅動程式,無論其來源如何。例如 OAKCDROM.SYS(5.09-01)和 VIDE-CDD.SYS(5.09-02)。這些驅動程式在任何情況下都提供對 DVD-ROM 光碟的訪問,無論 ATAPIMGR.SYS 是否同意載入。
自 1990 年代初期以來,"筆記本" 類別的行動式 PC 配備了用於外部記憶體擴充套件卡的特殊 68 針插槽。這些卡的介面於 1990 年由 PC 記憶體卡國際協會 (PCMCIA) 標準化。1995 年,它被重新命名為 PC 卡介面,因為當時它也被用於各種外圍裝置:調變解調器、外部磁碟驅動器等等。PC 卡介面的最後一個第 8 版標準於 2001 年採用。後來,PC 卡介面被 USB 2.0 介面 (5.07-05) 取代了。
在 1990 年代早期,存在多種相互排斥的 PCMCIA 控制器型別,因此帶有 PCMCIA 介面的外部裝置必須為 DOS 提供多個 PCMCIA 驅動程式。例如,松下 KXL-DN720A CD-ROM 驅動器(1995 年)就附帶了 3 個適用於不同 PCMCIA 控制器的驅動程式。這些驅動程式允許使用統一的 ASPI 命令來訪問裝置,就像帶有 SCSI (5.07-03) 或 USB 介面 (5.07-05) 的裝置一樣。這套驅動程式打包在 SFX 壓縮包 720PCM32.EXE 中,可以從伺服器 ftp://ftp.panasonic.com/pub/Panasonic/Drivers/CDROM/ 下載。
後來,i82365 型別及其相容的 PCMCIA 控制器逐漸取代了其他所有型別。大多數現代行動式電腦都預裝了 WINDOWS 作業系統,不再提供 DOS 用的 PCMCIA 驅動程式。為了能夠在緊急維護情況下使用帶有 PCMCIA 介面的外部磁碟驅動器,一些硬體供應商開發了直接從 DOS 訪問 i82365 控制器埠的 PCMCIA 驅動程式。特別是,諾瓦克公司提供了這樣的驅動程式:NVIHD.EXE 適用於非光學儲存裝置,NVICDF.EXE 適用於光碟驅動器。從網站 http://www.driver.novac.co.jp/driver/hd150p/hd150p_drv.html 可以下載包含 4.0 版 (2000 年) NVIHD.EXE 驅動程式的壓縮包 compact_PCMCIA.zip。4.0 版 (2001 年) 的 NVICDF.EXE 驅動程式打包在 FDOS.ZIP 壓縮包中,可以從 http://www.driver.novac.co.jp/driver/sta_PCMCIA/pcm_drv.html 下載。這兩個諾瓦克的 PCMCIA 驅動程式都應該在 CONFIG.SYS 檔案中使用 DEVICE (4.06) 或 DEVICEHIGH (4.07) 命令,不帶引數進行載入。在將儲存裝置卡插入 PCMCIA 插槽後,應該從命令列再次啟動同一個驅動程式,例如:
Nvicdf.exe /E
或
Nvihd.exe /E /I
其中引數的含義是:
/E - 初始化 PCMCIA 卡; |
/I - 啟動驅動器的電機。 |
NVICDF.EXE 驅動程式不需要 /I 引數,因為光碟驅動器中的電機在插入光碟後會自動啟動。關於上述 PCMCIA 驅動程式的資訊應該謹慎對待,因為作者沒有機會測試這些驅動程式。
- 註釋
- Windows ME 版本包含一個用於外部儲存裝置的 DOS PCMCIA 驅動程式 CARDDRV.EXE。但是,沒有找到關於它的確切資訊。
5.07-03 SCSI 介面驅動程式
[edit | edit source]小型計算機系統介面 (SCSI) 由 Shugart 公司於 1982 年開發,由於其在當時流行的蘋果電腦中的應用而廣為人知。1986 年,SCSI 介面獲得了 ANSI X3.131-1986 標準的地位。從那時起,它經歷了多次現代化改造。對於 AT 相容的 PC,SCSI 匯流排是一個比較少見的配置,主要應用於伺服器。因此,這裡沒有詳細描述 SCSI 匯流排驅動程式的功能。不過,下面將簡要介紹 SCSI 匯流排訪問原理。
SCSI 匯流排訪問可以由 PC 的 BIOS 或專用驅動程式提供。伺服器的主機板通常會嵌入 SCSI 控制器和 BIOS 擴充套件,能夠像訪問 IDE 裝置一樣訪問 SCSI 裝置,無需特殊的 SCSI 驅動程式。已知的 BIOS 擴充套件需要在 PC 啟動時在 SCSI 總線上存在至少一個活動的裝置,否則不會載入。沒有介質的移動磁碟驅動器被視為非活動裝置。如果必須將特定的移動 SCSI 驅動器置於 BIOS 控制下(例如,為了將其格式化為硬碟驅動器),則應在 BIOS 啟動其啟動測試之前將介質插入此驅動器。如果 BIOS 檢測到 SCSI 驅動器中存在有效的介質,則可以使用它來啟動 PC,但之前必須在 BIOS 設定選項中將此驅動器標記為可引導裝置。最初由 BIOS 註冊為非活動的 SCSI 驅動器,即使載入了 SCSI BIOS 擴充套件並提供對其他驅動器的訪問,也不能置於 BIOS 控制之下。
一些擴充套件板上的 SCSI 控制器具有內部只讀儲存器,包含用於 SCSI 匯流排的 BIOS 軟體擴充套件,因此 SCSI 匯流排訪問與嵌入式控制器提供的訪問方式相同。可以透過瀏覽 BIOS 設定選項輕鬆確定 BIOS 軟體擴充套件是否存在。不幸的是,較低端的 SCSI 擴充套件板沒有 BIOS 軟體擴充套件。不支援 BIOS 軟體擴充套件的 SCSI 裝置不能用於啟動 PC,並且需要透過驅動程式進行訪問。這種訪問方式更適合移動磁碟驅動器,因為許多驅動程式能夠註冊其當前介質分割槽結構(而大多數 BIOS 版本只在啟動時註冊一次介質分割槽結構)。
為 DOS 開發的 SCSI 驅動程式集由多個供應商提供,其中最知名的是 Adaptec、DTC、Mylex 和 Tekram。每個驅動程式集包含 SCSI 控制器驅動程式(來自 Adaptec 的 ASPI8U2.SYS、來自 DTC 的 AS80DOS.SYS 等)、用於 SCSI 的硬碟驅動程式(來自 Adaptec 的 ASPIDISK.SYS、來自 DTC 的 DISKDOS.SYS 等)以及用於 SCSI 的 CD-ROM 驅動程式(來自 Adaptec 的 ASPICD.SYS、來自 DTC 的 CDDOS.SYS 等)。每個驅動程式集必須透過 CONFIG.SYS 檔案中的 DEVICE 或 DEVICEHIGH 命令載入。SCSI 控制器驅動程式必須始終在連線到 SCSI 匯流排的其他裝置的驅動程式之前載入。
SCSI 控制器供應商提供的用於硬碟驅動器和 CD-ROM 的驅動程式接受標準化的 ASPI 命令程式碼,適用於幾乎任何具有 SCSI 介面的同類裝置。但這並不適用於所有裝置:具有獨特功能的裝置肯定需要專有的驅動程式。大多數 SCSI 控制器驅動程式適用於一系列 SCSI 控制器型別。Windows-95/98 的緊急軟盤包含兩套 SCSI 驅動程式:來自 Adaptec 和來自 Mylex。這通常被認為足以滿足幾乎所有配備 SCSI 匯流排的 PC 的需求。無論如何,這些軟盤上的配置檔案可以作為載入 SCSI 匯流排驅動程式的示例。
5.07-04 IEEE1394 (FireWire) 介面驅動程式
[edit | edit source]FireWire 介面由蘋果公司於 1987 年開發,用於連線資料傳輸速率高達 393 Mb/sec 的裝置。這種資料傳輸速率是影片攝像機、影片儲存裝置、外部硬碟驅動器的典型速率。從 1995 年開始,FireWire 介面規範被採用為 IEEE1394 標準。對於 AT 相容的 PC,生產了具有 IEEE1394 介面控制器的擴充套件卡,但到目前為止,FireWire 介面還沒有被廣泛使用。
現在已知兩種用於 IEEE1394 介面控制器的驅動程式,據稱它們適用於 MS-DOS 7。第一個是 ASPI1394.SYS 驅動程式,由 Iomega 公司開發。從網站 http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/ 可以下載包含 1.01 版 ASPI1394.SYS 驅動程式(日期為 2002 年)的壓縮包 iomega_usb_firewire_dos_driver_boot_disk.zip。這裡有一個載入此驅動程式的示例,但沒有給出引數的解釋。另一個驅動程式 SBP2ASPI.SYS 由 Medialogic 公司開發,1.02 版包含在 SFX 壓縮包 DAT.EXE 中,可以從網站 http://www.datoptic.com/fw25fr.html 下載。
由於這兩個驅動程式都為透過 IEEE1394 匯流排連線的硬碟驅動器和 CD-ROM 驅動程式實現了相同的統一 ASPI 命令集,因此據稱這兩個驅動程式適用於 SCSI 匯流排 (5.07-03) 和 USB 匯流排 (5.07-05) 上的同類裝置。但此功能尚未由作者測試,僅供參考。
5.07-05 USB 介面驅動程式
[edit | edit source]通用序列匯流排 (USB) 是康柏、英特爾、微軟和 NEC 聯合開發的。1996 年,這些公司通過了 USB 匯流排規範 1.0 版。從那時起,嵌入式 USB 控制器已成為幾乎所有 AT 相容電腦主機板的標準配置。隨著 2002 年 USB 2.0 規範的透過,USB 匯流排的實際意義更加重要,該規範規定了高達 480 Mb/s 的資料傳輸速率。現在,絕大多數外部裝置都是為透過 USB 匯流排連線而設計的。
USB 控制器實現了三種不同型別的與 PC 軟體的互動方式:
- 開放式主機控制器介面 (OHCI),
- 通用主機控制器介面 (UHCI),
- 增強型主機控制器介面 (EHCI)。
每種互動方式都需要特定的處理。所有現代 USB 控制器都符合 USB 2.0 規範並實現 EHCI 型別的互動,但能夠模擬實現 OHCI 或 UHCI 型別的互動的上一代 USB 控制器。UHCI 控制器透過分配的埠傳輸資料,而 OHCI 控制器透過記憶體中的緩衝區區域傳輸資料。OHCI 型別的互動由 SIS 和 ALI 的晶片組實現,而 UHCI 則由 INTEL、VIA 等的晶片組實現。
從 DOS 訪問透過 USB 匯流排連線的外部裝置,可以由 PC 的 BIOS 系統或載入的驅動程式提供。當作業系統必須從外部儲存裝置載入時,需要 BIOS 提供的訪問許可權。本文件的 9.11-01 中詳細介紹了此問題的解決方案。但 PC 的 BIOS 不一定能夠處理所有外部裝置:一些 BIOS 系統只接受特定類別的外部裝置,例如帶有 USB 介面的軟盤驅動器。此外,BIOS 系統只在 PC 開機後註冊一次儲存介質的屬性。例如,如果在 USB 介面卡插槽中,最初插入的儲存卡被其他卡替換,則 BIOS 不會提供對該其他卡的訪問許可權。可以透過載入特定類別儲存裝置的適當驅動程式來獲得訪問移動儲存介質的機會。
為了避免驅動程式和 PC 的 BIOS 之間可能發生的衝突,BIOS 設定中“高階”頁面上的“傳統 USB 支援”引數應設定為“停用”。如果您的計算機的 BIOS 設定中沒有類似的引數,那麼很可能此 BIOS 系統不支援 USB 儲存裝置。仍然可以透過相應的驅動程式訪問這些裝置中的媒體,但僅限於此。通常,應首先載入 USB 控制器驅動程式,然後載入您打算使用的所有 USB 裝置的驅動程式。
第一個用於 USB 控制器的驅動程式 UHCI.EXE 和 OHCI.EXE 是由 SoftConnex Co. 在 1998 年至 2001 年期間開發的。這些驅動程式的 2.3 版本存在於可啟動軟盤中,這些軟盤由已知軟體包 Norton Ghost(到其 8.0 版本)形成。相同驅動程式的 2.5 版本可從網際網路網站 http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/ 下載。為了滿足任何 USB 控制器,應按順序載入上述驅動程式,一個接一個,但實際上只加載其中一個驅動程式,即與特定 USB 控制器實現的互動型別相對應的那個驅動程式。載入可以從命令列執行,也可以從 AUTOEXEC.BAT 檔案的行中使用 LH 命令(3.17)執行,也可以從 CONFIG.SYS 檔案的行中使用 DEVICE(4.06)或 DEVICEHIGH(4.07)命令執行,例如
DEVICEHIGH = \DOS\DRV\Uhci.exe DEVICEHIGH = \DOS\DRV\Ohci.exe
SoftConnex Co. 的驅動程式專為 USB 鍵盤、USB 滑鼠指向裝置以及 USB 總線上的外部埠而設計。顯然,應在之後載入特定外部裝置的驅動程式。特別是對於滑鼠指向裝置,上述驅動程式中的任何一個都可以工作,這些驅動程式在 5.03 部分進行了描述。但是,您必須將外部裝置連線到第一個 USB 控制器的埠,因為在更新的計算機中可以找到的附加 USB 控制器無法被 SoftConnex Co. 的驅動程式檢測到。除此之外,這些驅動程式不提供訪問儲存卡和外部磁碟驅動器的功能。
從 DOS 訪問 USB 儲存裝置的問題現在變得尤為緊迫。在各種網際網路網站上,關於此問題有不同的建議。本書作者不得不進行一些實驗,才能形成自己的觀點。在這些實驗中,一個名為 ImageMate-2 的 USB 介面卡充當被測驅動器,用於 Compact Flash 卡。
在各種 USB 控制器驅動程式中,Matsushita(松下商標)的 USBASPI.SYS 被認為是最好的驅動程式。此驅動程式的最新版本 2.27(日期為 2008 年 10 月 22 日),打包在 SFX 檔案 F2H_USB.EXE 中,可從網站 http://panasonic.co.jp/pcc/products/drive/other/f2h_usb.html 下載。此驅動程式能夠檢測所有型別的活動 USB 控制器。它掃描每個 USB 匯流排,並註冊所有連線的裝置及其所有 LUN 號碼(有關詳細資訊,請參閱 附錄 A.03-2 的註釋 1)。與大多數其他 USB 驅動程式不同,此驅動程式的 2.27 版本在啟用“傳統 USB 支援”引數時不會與 PC 的 BIOS 發生衝突。USBASPI.SYS 驅動程式的完整規格沒有公開。儘管如此,以下選項已被發現
/e |
– | 僅啟用 EHCI 類的 USB 控制器。 |
/o |
– | 僅啟用 OHCI 類的 USB 控制器。 |
/u |
– | 僅啟用 UHCI 類的 USB 控制器。 |
/nocbc |
– | 不要搜尋 PCMCIA 插槽中的 USB 介面卡。 |
/w |
– | 提示使用者連線並開啟應在 USB 總線上註冊的外部裝置。 |
/slow |
– | 降低對連線裝置進行輪詢的速度,以便即使是最慢的裝置也有足夠的時間響應。 |
/v |
– | 顯示有關注冊的 USB 控制器和在 USB 匯流排(es)上檢測到的所有裝置的資料。 |
/r |
– | 由於錯誤或 BIOS 對 USB 控制器(es)的控制,不要拒絕載入驅動程式。 |
/norst |
– | 不要向 USB 裝置傳送重置命令,以防止從這些裝置之一載入作業系統過程被打斷。 |
/e、/o、/u 引數如果事先知道特定計算機中 USB 控制器(es)的類別,則可以節省一些時間。最後兩個引數(/r 和 /norst)是必需的,當作業系統要從 BIOS 控制下的 USB 裝置載入時,因為否則要麼載入過程將被打斷,要麼其他 USB 裝置將無法訪問。還有一點需要注意:USBASPI.SYS 驅動程式不允許預先載入光碟驅動器的驅動程式,即使這些光碟驅動器具有非 USB 介面。
用於海量儲存裝置的最佳驅動程式仍然是 ASPIDISK.SYS,它最初由 Adaptec 為具有 SCSI 介面的硬碟驅動器開發。但 ASPIDISK.SYS 與介面型別沒有直接關係,因為它透過 SCSI 控制器驅動程式提供的標準化 ASPI 函式集來訪問儲存裝置。由於 USBASPI.SYS 驅動程式也提供了這組 ASPI 函式,因此 ASPIDISK.SYS 驅動程式能夠處理連線到 USB 匯流排的儲存裝置。
ASPIDISK.SYS 驅動程式的 4.01b 版本(大小為 15060 位元組,日期為 1998 年 12 月 2 日)可以在 Adaptec 網際網路網站上的 SFX 檔案 DOSDRVR.EXE 中找到 http://www.adaptec.com/en-US/speed/scsi/dos/dosdrvr_exe.htm。此驅動程式允許訪問具有 FAT-12、FAT-16、FAT-32 和“大軟盤”檔案系統的邏輯磁碟。如果在初始化時可移動媒體不存在於儲存裝置中,則此儲存裝置將被賦予一個保留的字母名稱。但是,有些可移動媒體可以格式化為具有多個 FAT-16 分割槽的硬碟驅動器,每個分割槽表示一個單獨的邏輯磁碟。ASPIDISK.SYS 驅動程式可以提供對所有這些分割槽的訪問(包括第一個分割槽之後的那些分割槽),前提是在命令列中指定了相應的磁碟字母名稱數量,並在 /r 引數後指定。允許的命令列選項的全部集合包括以下內容
/id=2:0+1 |
– | 一個用於指定應在驅動程式控制下的裝置的示例:連線到第一個 USB 控制器的 USB 總線上的裝置號 2,以及連線到第二個 USB 控制器的 USB 總線上的裝置號 0 和 1。 |
/nospinup |
– | 在驅動程式初始化時,不要發出開啟驅動器電機命令。 |
/d |
– | 顯示有關在驅動程式控制下的裝置的狀態訊息。 |
/pause |
– | 暫停進一步執行,直到任何按鍵操作,以便有機會讀取狀態訊息。 |
/r4 |
– | 一個請求示例,用於在驅動程式控制下的驅動器中為可移動媒體上的非第一個分割槽保留 4 個磁碟字母名稱。可以保留 1 到 24 個字母名稱。 |
如果命令列中沒有給出受控裝置的規範,則 ASPIDISK.SYS 驅動程式將檢查遇到的每個裝置,並嘗試將其控制下的所有海量儲存裝置,即使這些裝置在此時沒有可移動媒體。當給出受控裝置的規範時,不會浪費時間檢查不合適的裝置。在上面的示例中,裝置號 2 的規範意味著驅動程式不會檢查連線到第一個 USB 控制器的總線上的裝置 0 和 1,因為這些裝置可能恰好是掃描器和印表機。
對於具有 USB 介面的外部光碟 CD/DVD-ROM 驅動器,來自 Workbit Corp. 的 NJUSBCDA.SYS 驅動程式可能就足夠了。包含 NJUSBCDA.SYS 驅動程式(日期為 2000 年)3.9 版本的檔案 BST_DOS.ZIP 可從網際網路網站 http://www.driver.novac.co.jp/driver/sta_black/bst_drv.html 下載。與許多其他 CD/DVDROM 驅動程式一樣,NJUSBCDA.SYS 從命令列接受 /D: 引數,後跟一個任意識別符號(例如,/d:USBCD001),長度不超過 8 個字元。它用於檔案系統轉換實用程式識別驅動器,無論是 MSCDEX.EXE(5.08-03)還是 SHSUCDEX.EXE(5.08-04),其中一個應該在之後載入。它在命令列中應該被賦予完全相同的識別符號。
所描述的 USB 裝置驅動程式應透過 CONFIG.SYS 檔案中的行使用 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入。假設所有提到的驅動程式都存在於可啟動磁碟的 \DOS\DRV 目錄中;然後載入這些驅動程式的行可能看起來像這樣
DEVICEHIGH=\DOS\DRV\Usbaspi.sys /slow /v DEVICEHIGH=\DOS\DRV\Aspidisk.sys /nospin /d /pause DEVICEHIGH=\DOS\DRV\Njusbcda.sys /d:USBCD001
所示示例中的引數是為從具有其他(非 USB)介面的裝置載入 MS-DOS 7 而選擇的,當事先不知道 PC 中有多少 USB 控制器以及哪些裝置連線到 USB 匯流排(es)時。但是,當 PC 的硬體已知,並且 MS-DOS 7 載入並非首次執行時,/SLOW 和 /PAUSE 引數可以省略。除此之外,如果引數指定了 USB 控制器的型別以及應該註冊的特定裝置,則載入速度會更快。
上述由 Matsushita 開發的 USBASPI.SYS 驅動程式(版本 2.27,檔案長度為 39729 位元組)通常與 Novac 提供的同義驅動程式(版本 1.07,檔案大小為 43528 位元組)混淆。後一個驅動程式僅檢測第一個 USB 控制器,專門根據 USB 1.1 規範工作,忽略所有 LUN 號碼不為零的裝置,註釋 1 到附錄 A.03-2 並從命令列接受略有不同的選項集
/w |
– | 提示使用者連線並開啟應由 USB 控制器註冊的外部裝置(es)。 |
/v |
– | 顯示有關第一個 USB 控制器 USB 總線上檢測到的裝置的資料。 |
/r |
– | 當第一個 USB 控制器在 PC 的 BIOS 控制下時,不要解除安裝驅動程式的駐留模組。 |
/m=D0 |
– | 一個用於為 OHCI 類的 USB 控制器指定接觸記憶體區域的示例。D0 表示段地址區域 D000–DFFFh。 |
/p=A400 |
– | 一個用於為 UHCI 類的 USB 控制器指定埠地址的替代示例。 |
Novac 的 USBASPI.SYS 驅動程式打包在檔案 HD352u_dos.zip 中,可從網站 http://www.driver.novac.co.jp/driver/hd352u/hd352u_drv.html 下載。除了 USBASPI.SYS 驅動程式本身,HD352u_dos.zip 檔案還包含 Novac 的用於海量儲存裝置的驅動程式 Di1000dd.sys 的 2.0 版本。Di1000dd.sys 驅動程式從命令列接受引數 /dS,這是一個用於向由 Di1000dd.sys 驅動程式開啟訪問的邏輯磁碟分配的磁碟字母名稱(“S”)的示例。
但是,Di1000dd.sys 驅動程式的字母名稱分配是“髒的”,建立的虛擬磁碟(幻影)沒有隱藏。Di1000dd.sys 驅動程式無法處理多個 LUN 號碼,無法訪問具有 FAT-32 檔案系統的磁碟、第一個 USB 控制器匯流排以外的裝置,需要在初始化時儲存裝置(es)中存在媒體。雖然上述兩個 Novac 驅動程式的功能似乎相當有限,但它們可能足以在硬體已知的計算機中執行主要資料傳輸操作。
由 Cypress Semiconductor 開發的組合驅動程式 DUSE.EXE 開啟了從 DOS 訪問 USB 儲存裝置的另一種方式。此驅動程式的 4.9 版本(日期為 2003 年),打包在檔案 Duse_4_9.zip 中,在網站 http://www.pocketec.net/support.taf 的“downloads”子目錄中可用。DUSE.EXE 驅動程式將 USB 控制器驅動程式與 CD-ROM 驅動程式和非光學儲存裝置(包括 HDD 和固態儲存卡)的驅動程式相結合。
獲得一體化的機會似乎很有吸引力,但隨之而來的是一個意想不到的後果:由於某些奇怪的原因,DUSE.EXE 要求 DOS 僅在真實模式下工作,即沒有 EMM386.EXE 驅動程式(5.04-02),該驅動程式允許訪問 UMB 記憶體區域。由於無法訪問 UMB,DOS 被迫將所有驅動程式載入到傳統記憶體(低於 640 kb)中,然後 DUSE.EXE 的駐留模組在預設設定下又佔用了 233 kb 寶貴的傳統記憶體,因此沒有留下任何可用空間供其他程式正常執行。
如果 UMBPCI.SYS 驅動程式(5.04-04)在真實模式下提供了對 UMB 區域的訪問,並且您拒絕載入 DUSE 的 CD/DVD-ROM 支援模組,則可以獲得一些可接受的配置。因此,DUSE 的駐留模組的總大小已減小到 153 kb,但所有嘗試將其載入到常規記憶體之外的嘗試都失敗了。相比之下:USBASPI.SYS 和 ASPIDISK.SYS 驅動程式的駐留模組提供了幾乎相同的功能,但總共只佔用 45 kb,並且可以載入到常規記憶體之外,無論是在 CPU 的真實模式下還是在 V86 模式下。如果情況迫使您使用 DUSE.EXE 驅動程式,那麼 CONFIG.SYS 檔案中用於載入 DUSE.EXE 的一行可能如下所示:
DEVICE=\DOS\DRV\Duse.exe NOC EMU XFER=8
其中顯示的選項意味著
NOC |
– | 拒絕載入 CD/DVD-ROM 支援模組。 |
EMU |
– | 模擬 IRQ 呼叫以防止驅動程式之間的相互衝突。 |
XFER=8 |
– | 將緩衝區大小減小到 8 kb(允許 1 到 64 kb,預設值為 64 kb)。 |
DUSE 所有選項的完整列表可以在 Duse_4_9.zip 存檔中的 DUSEUsersGuide.pdf 檔案中找到。其中提出的 INT 選項值得特別注意。它聲稱提供了使用 FDISK.EXE 實用程式(6.13)將外部硬碟驅動器劃分為分割槽的機會,但實際上並沒有。此外,使用 ASPI 功能(6.13 中的註釋 5)建立 HDD 分割槽也不可用,無論是否有 INT 選項,而 USBASPI.SYS 驅動程式則可以輕鬆地做到這一點。
最近出現了兩種用於建立 DOS 的 USB 驅動程式集的個人嘗試。驅動程式集的 1.0 版由 G.Potthast 開發,於 2006 年 12 月出現在網際網路網站 http://www.georgpotthast.de/usb/ 上。後來,在 2009 年 8 月,B.Johnson 在他的網站 http://bretjohnson.us/ 上上傳了另一個 USB 驅動程式集的 0.08 版。
由 G.Potthast 開發的套件提供了用於 USB 控制器、非光學儲存裝置和某些型別 USB 印表機的驅動程式。除了驅動程式之外,它還包含許多服務實用程式,可以檢測和修復 USB 介面配置錯誤。此驅動程式集無法確定實際的 USB 儲存裝置數量,無法檢測非第一個 USB 控制器總線上的裝置,需要在初始化時在儲存裝置中存在媒體,只能訪問物理磁碟的第一個分割槽,並且還有一些其他明顯的缺點。
由 B.Johnson 開發的套件除了相同的核心驅動程式和一些服務實用程式外,還包括用於 USB 鍵盤、USB 滑鼠的驅動程式,並提供對使用 FAT-32 格式化的磁碟的訪問。USB 控制器必須是 UHCI 或 EHCI 型別,並且只能使用 12 Mb/s 的傳輸速度。可能,一些缺點尚未被發現,因為此驅動程式集是在最後一刻出現的,並且沒有經過徹底測試。
儘管早期版本的這些驅動程式集存在所有缺點,但它們仍然值得認真關注。這兩個套件仍在開發中,它們未來的版本可能會更好。但是,這些驅動程式集最寶貴的特性是它們部分開放的可執行程式碼。對於所有希望更深入地瞭解 USB 介面的人來說,這裡有很多有趣的資訊。
輔助驅動程式 IFSHLP.SYS 為 IFS(= 可安裝檔案系統)過程提供服務功能。IFS 檔案系統是一種隱藏真實資料結構和真實訪問方式的形式,可以避免顯式技術複雜性並實現選擇性訪問許可權。
原始的 16 位儲存裝置訪問由 BIOS 的 INT 13 處理程式執行,這些處理程式需要 CPU 的真實模式,並且不能間接執行其工作,例如透過網路。當 CPU 在保護模式或 V86 模式下工作時,每次呼叫 INT 13 處理程式都會隱含回撥,並切換到真實模式並返回。這些切換使緩慢的 16 位訪問變得更加緩慢。IFSHLP.SYS 驅動程式提供的服務功能可以實現更快的 32 位直接和間接磁碟訪問,在保護模式和 V86 模式下都不需要回調。但是,如果您打算僅在真實模式下工作,並且沒有網路通訊,那麼很可能不需要 IFSHLP.SYS 驅動程式。
IFSHLP.SYS 驅動程式存在於 Microsoft 網路客戶端包中,以及在 Windows-3.11\95\98\ME 版本中。MS-DOS 7 在 \Windows 目錄中搜索 IFSHLP.SYS 驅動程式,並在預設情況下載入它,除非預設載入被 CONFIG.SYS 檔案中的 DOS=NOAUTO 命令(4.08)禁止。
由 Mark Russinovich 和 Bryce Cogswell 編寫的 NTFSDOS.EXE 驅動程式提供了從 DOS 訪問具有 NTFS 檔案系統的磁碟的機會。此驅動程式的完整功能版本(最新版本為第 5 版)不是免費的。這裡描述了免費版本 3.02(日期為 2001 年),它只允許讀取 NTFS 卷,包括將程式讀取到記憶體中以執行。然而,自 2006 年兩位作者加入微軟開發人員團隊以來,NTFSDOS 驅動程式和其他一些有用的專案從他們作者的個人網站上消失了。現在,包含 NTFSDOS.EXE 驅動程式的 Ntfs30r.zip 存檔仍然可以從例如伺服器 ftp://ftp.uni-koeln.de/pc/msdos/diskutils/ 和 http://web.archive.org/web/20020123013310/www.sysinternals.com/new.shtml 獲取。
現在就提醒一下,從 CD-ROM 光碟啟動的 Windows-2000/XP 安裝程式提供了開啟所謂的恢復控制檯的機會。恢復控制檯的預設設定允許寫入 NTFS 卷,但禁止從 NTFS 卷複製檔案。因此,NTFSDOS.EXE 驅動程式的 3.02 版本可以執行恢復控制檯不允許的操作。
NTFSDOS.EXE 驅動程式使用 XMS 記憶體,因此需要先載入 HIMEM.SYS 驅動程式(5.04-01)。除此之外,NTFSDOS.EXE 需要在常規記憶體中佔用大量空間。特別是,要訪問 10 Gb NTFS 磁碟,NTFSDOS.EXE 驅動程式會佔用 285 kb 的常規記憶體。由於這樣的記憶體需求,不合理地保持 NTFSDOS.EXE 驅動程式持續載入。因此,它是在需要訪問 NTFS 磁碟之前才從命令列載入的,例如
C:\DOS\DRV\Ntfsdos.exe /L:K /C:1024 /N /X /U /V
其中
C:\DOS\DRV\ – NTFSDOS.EXE 驅動程式的路徑示例。 | ||
/L:K |
– | 一個選項,將“K”字母名稱分配給找到的第一個 NTFS 磁碟。如果有其他 NTFS 磁碟,則將分配給“K”後面的下一個字母名稱。如果省略 /L: 引數,NTFS 磁碟名稱分配將從第一個可用字母名稱開始。 |
/C:1024 |
– | 一個選項,強制在 XMS 記憶體中建立一個 1024 kb 的快取緩衝區。預設的快取緩衝區大小為 500 kb。 |
/N |
– | 此選項阻止載入解壓縮模組。如果 NTFS 卷不包含壓縮片段,則不需要此選項。/N 選項減少了常規記憶體需求。 |
/X |
– | 此選項禁止使用擴充套件 INT 13 功能(8.01-55)。對於 1996 年之前生產的舊 PC,並且硬碟驅動器不超過 8.4 Gb,應該指定 /X 引數。 |
/U |
– | 此選項啟用以 Unicode(每個字元兩個位元組)寫入的名稱的轉換。 |
/V |
– | 此選項強制顯示驅動程式的記憶體使用情況。預設情況下,只顯示分配的磁碟字母名稱。 |
- 註釋
- NTFSDOS.EXE 驅動程式載入處理程式,可以讀取 NTFS 卷中檔案和目錄的長名稱。Volkov Commander 檔案管理器(6.25)會顯示未截斷的名稱,並且任何能夠訪問這些處理程式的程式都可以獲取這些名稱。但是,DOS 中的檔案複製命令和實用程式會截斷長名稱。
- 嘗試訪問具有損壞 NTFS 檔案系統的磁碟可能會導致 PC 掛起。應該先使用恢復控制檯提供的 CHKDSK 過程檢查和修復可疑的 NTFS 檔案系統。
MSCDEX.EXE 是一個駐留程式,它與一個或多個 CD/DVDROM 驅動程式配合使用,可以為磁碟分配字母名稱並訪問關聯的邏輯磁碟。實際上,它是一個用於 CD-ROM 檔案系統“High Sierra”和 ISO 9660 的檔案系統轉換器,與 DOS 核心“理解”的檔案系統不同。
MSCDEX.EXE 程式包含在 Windows-95/98 版本中,通常可以在 \Windows\Command 目錄中找到。MSCDEX.EXE 應該在所有必要的 CD-ROM 驅動程式之後載入,但在 SMARTDRV.EXE(5.06-01)快取驅動程式之前載入,如果使用後者。通常,MSCDEX.EXE 程式從 CONFIG.SYS 檔案中使用 INSTALL(4.15)或 INSTALLHIGH(4.16)命令載入,但也可以從 AUTOEXEC.BAT 檔案中使用 LH 命令(3.17)或從命令列啟動,例如
C:\DOS\DRV\Mscdex.exe /D:MSCD001 /e /k /s /v /L:N /M:12
其中
C:\DOS\DRV\ – MSCDEX.EXE 檔案的路徑示例。 | ||
/D:MSCD001 |
– | 是與特定 CD/DVD-ROM 驅動程式相關聯的最多 8 個字元的任意識別符號(“MSCD001”)的示例,該驅動程式必須已經載入,並且必須在其命令列中給出相同的識別符號。如果有多個 CD/DVD-ROM 驅動程式,則必須為它們指定不同的識別符號,並且每個驅動程式都必須在 MSCDEX.EXE 的命令列載入中使用單獨的 /D: 引數指定。 |
/e |
– | 此選項優先安排在常規記憶體之外的緩衝區,前提是 EMM386.EXE 記憶體管理器(5.04-02)已經打開了對常規記憶體之外的訪問許可權。 |
/k |
– | 此選項優先使用帶有日文字元(漢字)的輔助卷描述符,如果可以找到它。預設情況下,使用主描述符,即使沒有搜尋輔助描述符。 |
/s |
– | 此選項強制為隨後載入網路伺服器軟體做準備;這有助於避免字母名稱分配衝突並允許共享 CD-ROM 邏輯磁碟。 |
/v |
– | 顯示有關 CD-ROM 驅動器狀態的資訊。 |
/L:N |
– | 選擇性地將字母名稱“N:”分配給與第一個 /D:MSCD001 識別符號對應的驅動器;與後續識別符號相關的驅動器(如果有)將被分配下一個字母名稱。預設情況下,CD/DVD 驅動器被分配最近的空閒字母名稱,但 MSCDEX.EXE 不能超過 CONFIG.SYS 檔案中的 LASTDRIVE 命令(4.17)設定的限制。 |
/M:12 |
– | 這是一個為排列 12 個緩衝區(每個 2048 位元組)預留 24 KB 記憶體的示例,以提高讀取速度;建議使用 4 到 64 之間的數字,預設值為 12。 |
- 註釋
- MSCDEX.EXE 程式的駐留模組透過 INT 2F\AX=1500–150Fh(8.03-13 – 8.03-19)接受其他程式的請求。
5.08-04 SHSUCDX.COM – 光碟檔案系統轉換器
[edit | edit source]近年來,CD/DVD-ROM 檔案系統規範已進行了幾次修訂,規定使用長檔名。MSCDEX.EXE 程式(5.08-03)無法處理光碟上修改後的檔案系統:它顯示截斷的長檔名,但無法訪問這些檔案。此缺點並非 SHSUCDX.COM 程式的固有缺陷;除了這一點,SHSUCDX.COM 是 MSCDEX.EXE 的功能等效程式。SHSUCDX.COM 程式的開發由 John McCoy 啟動,現由 Jason Hood 繼續進行。存檔 Shcdx302.zip 包含 SHSUCDX.COM 的 3.02 版(日期為 2005 年)。
SHSUCDX.COM 程式可以透過 AUTOEXEC.BAT 檔案中的 LH 命令(3.17)或命令列載入,但通常由 CONFIG.SYS 檔案中的 INSTALL(4.15)或 INSTALLHIGH(4.16)命令載入,例如
INSTALLHIGH=\DOS\DRV\Shsucdx.com /D:?CD001,N,0,2 /~+ /R /Q
其中
\DOS\DRV\ |
– | SHSUCDX.COM 檔案的路徑示例 |
/D:?CD001 |
– | 指定與特定 CD/DVD-ROM 驅動程式關聯的最多 8 個字元的任意識別符號(“CD001”),該驅動程式必須已載入,並且必須在其命令列中指定相同的識別符號。如果存在多個 CD/DVD-ROM 驅動程式,則必須為它們指定不同的識別符號,並且每個驅動程式都必須在載入 SHSUCDX.COM 的命令列中的單獨的 /D: 引數後指定。識別符號之前的問號表示這些驅動程式在某些配置中可能不存在,因為 PC 的硬體可能事先未知。 |
,N,0,2 |
– | 該 CD/DVD-ROM 驅動程式的一組選項,該驅動程式在 /D: 引數後指定了相同的識別符號。第一個字母(“N”)是指定給相應邏輯磁碟的字母名稱的示例。第二位數字(“0”)是該驅動程式控制的磁碟驅動器列表中的磁碟驅動器編號示例。第三位數字(“2”)是 SHSUCDX.COM 程式從此驅動程式接受的磁碟驅動器數量示例。預設情況下,將接受所有磁碟驅動器,並且後續磁碟驅動器將獲得字母名稱,這些名稱遵循指定的字母名稱或第一個空閒字母名稱。 |
/~+ |
– | 此選項強制在長檔名中插入波浪號(~)作為最後一個字元,該檔名被截斷為標準長度(8 個字元)。此選項的操作可以透過從命令列啟動 SHSUCDX.COM 程式,使用反向引數 /~– 來取消。 |
/R |
– | 此選項規定從不可寫的光碟複製的檔案中刪除“只讀”屬性。 |
/Q |
– | 此選項禁止顯示狀態訊息,只會顯示字母名稱分配。如果您希望什麼也不顯示,則應指定 /QQ 引數。 |
除了上面顯示的引數外,SHSUCDX.COM 程式還可以接受以下選項
/L:N |
– | 指定將指定的字母名稱(“N”)分配給 SHSUCDX.COM 程式控制的第一個光碟驅動器的處方形式。如果有其他磁碟驅動器,則會為其分配下一個字母名稱。/L: 引數等效於 MSCDEX.EXE 程式(5.08-03)的同義引數。SHSUCDX.COM 程式僅在未為 /D: 引數指定其他選項組的情況下才接受 /L: 引數。 |
/C |
– | 將 SHSUCDX.COM 程式的駐留模組載入到常規記憶體中。預設情況下,駐留模組將載入到 UMB 地址空間,如果可以訪問該空間。 |
/V |
– | 在顯示的狀態訊息中顯示更多詳細資訊。SHSUCDX.COM 程式在預先載入後,可以透過從命令列使用此引數再次啟動。顯然,/V 引數與 /Q 和 /QQ 引數不相容。 |
/U |
– | 從記憶體中解除安裝 SHSUCDX.COM 程式的駐留模組。僅從命令列接受此引數,前提是駐留模組已載入。解除安裝會釋放已佔用的記憶體並停用由該駐留模組控制的所有邏輯磁碟。 |
- 註釋
- SHSUCDX.COM 程式安排的資料傳輸不受 SMARTDRV.EXE 快取緩衝區驅動程式(5.06-01)支援,但受 UIDE.SYS 快取緩衝區驅動程式支援(5.06-01 的說明 3)。
5.09 光碟驅動程式
[edit | edit source]具有不同介面的光碟驅動器通常需要不同的驅動程式。文章 5.07-03 和 5.07-05 中提到了用於具有 SCSI 和 USB 介面的光碟驅動器的一些驅動程式。但在 AT 相容 PC 中,絕大多數內部磁碟驅動器都具有 IDE(ATA)介面,此處第 5.09 部分介紹了此類磁碟驅動器的驅動程式。
流行的主機板型別配備了兩個 IDE 控制器。它們中的每一個都能夠連線兩個裝置,這些裝置可能是光碟驅動器和磁性硬碟驅動器。允許將光碟機和磁驅連線到一個 IDE 控制器,但不建議這樣做,因為光碟驅動器的速度相對較慢,會導致總資料傳輸速率降低。最好將光碟機連線到單獨的 IDE 控制器,該控制器必須在 BIOS 設定程式的設定中啟用。
在現代 PC 中,BIOS 設定程式為 IDE 控制器提供了多種操作模式,包括僅輪詢序列 ATA 匯流排(S-ATA)的模式。由於大多數光碟驅動器具有並行 ATA 介面,因此應優先使用相容的操作模式。如果 BIOS 設定程式能夠影響直接記憶體訪問 (UltraDMA),則應設定 IDE 訪問的普通模式(“傳統 IDE 模式”)。這些設定保證了光碟驅動器和驅動程式在現代 PC 上執行 MS-DOS 7 時正常執行。
5.09-01 OAKCDROM.SYS – OTI Corp. 的 CD-ROM 驅動程式
[edit | edit source]OAKCDROM.SYS 驅動程式由 Oak Technology 開發,適用於具有標準 IDE 介面的 CD-ROM 光碟驅動器。日期為 1997 年的 OAKCDROM.SYS 檔案存在於 WINDOWS-95/98 緊急軟盤中。OAKCDROM.SYS 的相同版本可以從網站 http://www.computerhope.com/download/hardware.htm#02 下載。
在配備 DVD 驅動器的現代 PC 中,OAKCDROM.SYS 驅動程式能夠訪問 CD 和 DVD 光碟。但在 2003 年之前生產的 PC 中,DVD 驅動器的存在並不足以,因為 BIOS 系統可能不支援 ATAPI 協議(有關詳細資訊,請參見 5.07-01),因此 OAKCDROM.SYS 只能訪問 CD 光碟。在這些計算機中,仍然可以訪問 DVD 光碟,但需要預先透過 ATAPIMGR.SYS 驅動程式(5.07-01)安裝 ATAPI 協議支援模組。
OAKCDROM.SYS 驅動程式應透過 CONFIG.SYS 檔案中的 DEVICE(4.06)或 DEVICEHIGH(4.07)命令載入,例如
DEVICEHIGH=\DOS\DRV\Oakcdrom.sys /D:MSCD001 /V
其中
\DOS\DRV\ |
– | OAKCDROM.SYS 驅動程式的路徑示例。 |
/D:MSCD001 |
– | 宣佈最多 8 個字元的任意識別符號。此識別符號使 MSCDEX.EXE 程式(5.08-03)或 SHSUCDX.COM 程式(5.08-04)能夠識別驅動程式。其中之一應在之後載入,並且必須在其命令列中指定相同的 /D: 引數,後跟完全相同的識別符號。 |
/V |
– | 此選項會導致顯示狀態訊息。 |
OAKCDROM.SYS 驅動程式能夠在所有具有典型埠地址(1F0h、170h)和典型中斷請求 (IRQ) 線號的 IDE 控制器中搜索 CD/DVD-ROM 光碟驅動器。如果 PC 配備了多個此類磁碟驅動器,則 OAKCDROM.SYS 驅動程式將控制所有找到的驅動器。
5.09-02 VIDE-CDD.SYS – Acer Co. 的 CD-ROM 驅動程式
[edit | edit source]日期為 1998 年的 VIDE-CDD.SYS 驅動程式 2.14 版是 OAKCDROM.SYS 驅動程式(5.09-01)的功能等效程式,但 VIDE-CDD.SYS 更緊湊(大小為 11.8 KB)並且可以從命令列接受埠地址以及 IRQ 線號。後一項功能在使用非標準介面規範時很重要,並且必須避免搜尋磁碟驅動器。包含 VIDE-CDD.SYS 驅動程式的 SFX 存檔 Apicd214.exe 可以透過網際網路下載,例如從 ftp://ftp.benq.co.uk/cd-rom/drivers/apicd214.exe 下載。
如果 PC 的 BIOS 不支援 ATAPI 協議,則 VIDE-CDD.SYS 可以提供對 DVD 光碟的訪問,但需要預先載入 ATAPIMGR.SYS 驅動程式(5.07-01)。VIDE-CDD.SYS 必須從 CONFIG.SYS 檔案中的行載入,使用 DEVICE(4.06)或 DEVICEHIGH(4.07)命令,例如
DEVICEHIGH=\DOS\DRV\Vide-cdd.sys /D:MSCD001 /P:170,15
其中
\DOS\DRV\ |
– | VIDE-CDD.SYS 驅動程式的路徑示例。 |
/D:MSCD001 |
– | 宣佈最多 8 個字元的任意識別符號。此識別符號使 MSCDEX.EXE 程式(5.08-03)或 SHSUCDX.COM 程式(5.08-04)能夠識別驅動程式。其中之一應在之後載入,並且必須在其命令列中指定相同的 /D: 引數,後跟完全相同的識別符號。 |
/P:170,15 |
– | 埠基地址和中斷請求線號 (IRQ) 的可選規範。 |
一行中可能指定了多個 /P 引數。當至少指定了一個 /P 引數時,將不會檢查所有其他埠地址和 IRQ 線號。當省略 /P 引數時,將啟動在所有典型 IDE 埠地址和 IRQ 線號中搜索 CD/DVD-ROM 光碟驅動器:/P:1F0,14、/P:170,15、/P:1E8,12、/P:168,10(A.14-1)。VIDE-CDD.SYS 驅動程式將控制所有找到的光碟驅動器。
5.09-03 QCDROM.SYS – 免費軟體 CD/DVD-ROM 驅動程式
[edit | edit source]QCDROM.SYS 驅動程式的 4.2 版本由 J. R. Ellis 於 2007 年開發,基於他之前開發的 XCDROM.SYS 驅動程式。與 XCDROM.SYS 不同,QCDROM.SYS 驅動程式能夠訪問 DVD 光碟,並且不需要 PC 的 BIOS 或 ATAPIMGR.SYS 驅動程式的 ATAPI 協議支援。QCDROM.SYS 驅動程式可以控制最多三個 CD/DVD-ROM 驅動器,這些驅動器連線到 IDE 控制器,具有標準的埠基址和標準的中斷請求線:1F0h 與 IRQ 14 和/或 170h 與 IRQ 15。
打包在 QCDROM42.ZIP 壓縮檔案中的 QCDROM.SYS 驅動程式可以從以下網站下載:http://cyberia.dnsalias.com/Cyb.05.Htm。
QCDROM.SYS 應該透過 CONFIG.SYS 檔案中的 DEVICE (4.06) 或 DEVICEHIGH (4.07) 命令載入,例如:
DEVICEHIGH=\DOS\DRV\Qcdrom.sys /D:MSCD001 /L
其中
\DOS\DRV\ |
– | QCDROM.SYS 驅動程式路徑示例。 |
/D:MSCD001 |
– | 最多 8 個字元的任意識別符號的公告。此識別符號允許 MSCDEX.EXE 程式 (5.08-03) 或 SHSUCDX.COM 程式 (5.08-04) 識別驅動程式。其中之一應該隨後載入,並且必須在它的命令列中提供相同的 `/D:` 引數,後跟完全相同的識別符號。如果省略了 `/D:` 引數,QCDROM.SYS 將指定預設識別符號 QCDROM1。 |
/L |
– | 此選項規定在常規記憶體 (640 kb) 之外禁止使用直接記憶體訪問 (DMA)。這可能在 PC 的記憶體控制器不支援對 UMB 記憶體區域進行 DMA 訪問的情況下是必要的,而 UMB 則被開啟以供普通訪問,例如,由 UMBPCI.SYS 驅動程式 (5.04-04) 使用。如果指定了 `/L` 選項,則資料傳輸透過 XMS 記憶體中的緩衝區進行;因此,在這種情況下,必須預先載入 HIMEM.SYS 驅動程式 (5.04-01)。 |
除了所示引數外,QCDROM.SYS 驅動程式還可以從命令列接受以下選項:
/A |
– | 強制使用主通道上的舊備用 IDE 控制器地址 01E8h-01EFh,以及次通道上的 0168h-016Fh。這可能在“奇數”SATA BIOS 或其他不尋常情況下需要。 |
/I |
– | 強制 QCDROM.SYS 組織自己的 XMS 緩衝區。這使得能夠避免與“奇數”DMA 和 BIOS 服務的潛在衝突。 |
/UF |
– | 規定啟用加速直接記憶體訪問 (UltraDMA)。UltraDMA 的可行性已在許多主機板的晶片組中得到確認,但並非所有晶片組都支援。建議針對每個具體情況檢查 `/UF` 引數是否允許。 |
/UX |
– | 即使磁碟驅動器和主機板都聲稱支援 UltraDMA,也禁止使用 UltraDMA。`/UX` 選項用於診斷和測試目的。當指定了 `/UX` 選項時,QCDROM.SYS 驅動程式不需要 XMS 記憶體。 |
/PM |
– | (= 主磁碟):不搜尋磁碟驅動器,但僅檢查主 IDE 控制器總線上的主磁碟驅動器是否存在。 |
/PS |
– | (= 從磁碟):不搜尋磁碟驅動器,但僅檢查主 IDE 控制器總線上的從磁碟驅動器是否存在。 |
/SM |
– | (= 次磁碟):不搜尋磁碟驅動器,但僅檢查次 IDE 控制器總線上的主磁碟驅動器是否存在。 |
/SS |
– | (= 次從磁碟):不搜尋磁碟驅動器,但僅檢查次 IDE 控制器總線上的從磁碟驅動器是否存在。 |
最多三個禁止搜尋磁碟驅動器的引數可以在一個命令列中指定。磁碟驅動器將根據命令列中對應引數的順序進行編號。如果指定的檢查沒有發現磁碟驅動器,則所有其他光碟驅動器將被忽略,並且 QCDROM.SYS 驅動程式的駐留模組將不會載入。
5.09-04 DVS.SYS – 來自 DVS Corp. 的 CD/DVD-ROM 驅動程式。
[edit | edit source]DVS.SYS 驅動程式由 Digital Video Systems Corp. 於 1999 年開發。DVS.SYS 驅動程式能夠訪問 DVD 光碟,並且不需要 PC 的 BIOS 或 ATAPIMGR.SYS 驅動程式的 ATAPI 協議支援。打包在 SFX 壓縮檔案 Drdvdwd.exe 中的 DVS.SYS 驅動程式的 1.1 版本可以從以下網站下載:http://web.archive.org/web/20030212210152/www.dr-tech.com/drivers/cdroms.html。
DVS.SYS 驅動程式應該透過 CONFIG.SYS 檔案中的 DEVICE (4.06) 或 DEVICEHIGH (4.07) 命令載入,例如:
DEVICEHIGH=\DOS\DRV\Dvs.sys /D:MSCD001
其中
\DOS\DRV\ |
– | DVS.SYS 驅動程式路徑示例。 |
/D:MSCD001 |
– | 最多 8 個字元的任意識別符號的公告。此識別符號允許 MSCDEX.EXE 程式 (5.08-03) 或 SHSUCDX.COM 程式 (5.08-04) 識別驅動程式。其中之一應該隨後載入,並且必須在它的命令列中提供相同的 `/D:` 引數,後跟完全相同的識別符號。 |
DVS.SYS 驅動程式能夠搜尋磁碟驅動器,但搜尋速度比其他類似驅動程式慢。實驗已經證實,DVS.SYS 驅動程式至少可以控制兩個光碟驅動器,這些驅動器連線到具有標準埠基址和中斷請求線編號規範的任何一個 IDE 控制器(1F0h 與 IRQ 14 和/或 170h 與 IRQ 15)。