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起動時のメッセージは以下のようになる。

Image: CDROMDRV.SYS install message

以下、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メモリー アッパーメモリ

関連記事


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!