DOS用CD-ROMドライブデバイスドライバー [DOS]
Windows 98/Meなどに付属するMS-DOS IDE(ATAPI)汎用CD-ROMドライバー’OAKCDROM.SYS’は常駐時にメモリを28KB使用する。MSCDEXがメモリを15KBほど使用するので、合わせて40KBほど使用することになる。日本語(DOS/V)モードにおいてUMBメモリーがない環境だと、実行可能プログラムサイズ(基本メモリーの空き)が500KB未満になってしまう。英語モードでもDOSゲームを含め600KB近くの空きメモリーを要求するソフトは多く、UMBメモリーが十分ないとCD-ROMドライバーを組み込んだ状態でプログラムを起動できない。
CD-ROMドライブメーカー各社が提供するドライバーを使うと、使用メモリを数KBに抑えられる場合がある。ただし、他のメーカーのドライブや同じメーカーでも製品・スペックによって不具合が生じる場合がある。
メーカー各社が提供するドライバファイル
→ CD-ROM driver help
東芝製CD-ROMドライブの場合はこちらからドライバをダウンロードできる。
→ Device Driver for CD/DVD-ROM Drives for dos, Windows 3.1 - TSST (現在リンク切れ)
ソニー製IDE(ATAPI) CD/DVD DOSドライバー ATAPI_CD.SYS (私の環境では使えませんでした)
→ DOS Drivers Sony Storage Support
(MSCDEXはかつてMicrosoftのサポートサイトからダウンロードできましたが、2015年現在は削除されてしまったようです。ミラーサイトはいくつもありますが、合法的な手段ではないのでここには載せられません、)
以下は東芝のDOS用CDドライバーの場合。
ダウンロードしたファイルをDOSシステムドライブの適当な場所に展開し、CONFIG.SYSにDEVICE=CDROMDRV.SYS /D:デバイス名
、AUTOEXEC.BATにMSCDEX /D:デバイス名
を記述する。CDROMDRV.SYSのデバイス名は英数字なら何でも良い。MSCDEXのデバイス名はCDROMDRV.SYSに付けたデバイス名と同じものを指定する。
以下は私のCONFIG.SYS設定例。C:\CDDRVフォルダーにCDROMDRV.SYSを入れている。/Vは組み込み時に詳細情報を表示するスイッチ。/BはDMA転送を有効にしてCDへのアクセスを高速化している。
DEVICE=C:\CDDRV\CDROMDRV.SYS /D:MSCD001 /V /B
以下は私のAUTOEXEC.BAT設定例。/Eは読み込みバッファをEMSメモリーに確保するよう指定するスイッチ。
MSCDEX /D:MSCD001 /E
DOS起動時のメッセージは以下のようになる。
以下、PC DOS 2000にCDROMDRV.SYSを組み込んだ時のMEM /C
の実行結果。
1MB 以下のメモリーを使用しているプログラム/ドライバー:
名前 合計 = 基本メモリー + UMB メモリー
-------- ---------------- ---------------- ----------------
SYSTEM 16,160 (16K) 9,040 (9K) 7,120 (7K)
QEMM386 768 (1K) 768 (1K) 0 (0K)
DOS-UP 240 (0K) 0 (0K) 240 (0K)
$DISP 29,808 (29K) 0 (0K) 29,808 (29K)
INSTALL 160 (0K) 0 (0K) 160 (0K)
$FONTX 1,600 (2K) 0 (0K) 1,600 (2K)
LPVROLL 800 (1K) 0 (0K) 800 (1K)
$IAS 7,136 (7K) 0 (0K) 7,136 (7K)
ANSI 3,808 (4K) 0 (0K) 3,808 (4K)
CDROMDRV 7,520 (7K) 0 (0K) 7,520 (7K)
COMMAND 4,208 (4K) 0 (0K) 4,208 (4K)
MSCDEX 13,536 (13K) 0 (0K) 13,536 (13K)
SMARTDRV 25,360 (25K) 0 (0K) 25,360 (25K)
KI-SHELL 15,152 (15K) 0 (0K) 15,152 (15K)
KEYB 6,512 (6K) 0 (0K) 6,512 (6K)
- 空き - 682,432 (666K) 645,536 (630K) 36,896 (36K)
メモリーの概要:
メモリーのタイプ サイズ = 使用済 + 使用可能
---------------- ----------- ----------- -----------
基本 655,360 9,824 645,536
UMB 159,856 122,960 36,896
アダプタ RAM/ROM 298,896 298,896 0
Extended (XMS) 67,043,328 5,537,792 61,505,536
---------------- ----------- ----------- -----------
システム全メモリ 68,157,440 5,969,472 62,187,968
1MB 以下全メモリ 815,216 132,784 682,432
全 EMS メモリー 67,289,088 (65,712K)
使用可能 EMS メモリー 61,505,536 (60,064K)
全 XMS メモリー 67,043,328 (65,472K)
使用可能 XMS メモリー 61,505,536 (60,064K)
実行可能プログラム最大サイズ 645,520 (630K)
使用可能最大 UMB メモリー 34,000 (33K)
使用可能 HMA メモリー 12,208 (12K)
DOS は HMA 領域に常駐しています
CDROMDRVの使用メモリは7KB。OAKCDROMが28KBなので、21KBの空きメモリが増えたことになる。この場合はUMBメモリーがまだ十分に空いているので、メモリ使用量の削減による利点はない。ただ、(比較的)最近のマシンやVirtual PCなどの仮想環境ではあまりUMBメモリーを確保できないので、そういった場合にはこのテクニックが効果を発揮するだろう。
※MS-DOSの場合は本文中の用語を以下のように読み替えて下さい
日本語(PC DOS) | 日本語(MS-DOS) |
基本メモリー | コンベンショナルメモリ |
XMSメモリー | エクステンドメモリ |
HMAメモリー | ハイメモリ |
UMBメモリー | アッパーメモリ |