2−4 メモリの確保 〜config.sys


だいぶMS−DOSについて分かってきたところで避けて通れないめんどくさい部分がやってきました。
config.sysはいわゆる環境設定ファイルであり、パソコン起動時にこのファイルがあると優先的に読み込みを実施し、その内容に合わせた設定でMS−DOSが起動します。
通常MS−DOS上ではドライブはHDDとFDD、入力装置はキーボードとなりますが、ここでCD−ROM搭載機の場合に必要なCD−ROMドライバを読み込ませたり、あるいはマウスドライバを読み込むことでCD−ROMがドライブとして認識され、マウス入力が可能になったりします。
日本語入力やプリンター、MIDI機器なんかもこれに該当しますね。
基本的に、98DOSゲームにおいてユーザーがいちいちマウスドライバとか音源ドライバを読み込む作業をさせることはまずありえません。
ゲームメーカーが必要なプログラムを組んで、起動用バッチファイルを用意し、ユーザーはそのバッチファイルを実行するだけでゲームがちゃんと起動するように設計されています。

ではなぜconfig.sysについて知っておかなければならないのか。
最大の理由はゲームをするためのメモリの確保のためです。
MS−DOSで管理されるメモリ、いろいろありますが詳細を省いて説明すると、最大容量640kbのコンベンショナル(メイン)メモリと呼ばれるメモリの確保が必要となります。
ゲームプログラムはこのメモリを使用して、ゲームの画面描画や音楽再生なんかのドライバを動作させるわけです。
このコンベンショナルメモリはいくらメモリを増設しようが増やすことができません。
パソコン起動時に一番最初に左上にチラっと表示されるあの数値を覚えていますか?


MEMORY 640KB+○○KB OK


エミュレーター等では表示されませんので画像ファイルを用意出来ませんでしたが実機なら必ず上記のような数値が表示されるはずです。
最初の640KBっていうのがいわゆるコンベンショナルメモリで、その後+で表示されるのは増設したメモリがあった場合の数値です。
PC9821初期機種では増設メモリの上限は14.6MB程度だったと記憶しています。本体に1.6MBのメモリがあるので4MBを増設して5.6MBのメモリで当時やっていたのを思い出します。

話がそれましたが、98DOSゲームはこのコンベンショナルメモリを使用するので、必要な空き容量を確保しなければならないのですが、何も設定しない状態や、各種ドライバ等を組み込んだ場合に空き容量を確保出来ず、ゲームが起動しなくなってしまいます。
試しにHDDからMS−DOSを起動し、MS−DOSシェルを終了させたところでmemプログラムにより空き容量を見てみると次の通りとなります。(Dosのヴァージョンにより差が出ます。5.0とかだともっと空きが少ない)



という次第。
ゲームの説明書に「このゲームの起動に必要なメモリは○○○KBです。」と書いてありますので、最低限その分は確保しないといけません。
勘違いしてはいけないのは先述の通り、増設メモリがあるから大丈夫だと思わないことです、あくまでコンベンショナルメモリを確保しないといけないのです。
ちなみにMS-DOS6.2ではHDDにインストールされる時に自動的に作成されたconfig.sysファイルはハイメモリ領域にMS−DOSの機能の一部を常駐させる機能等が有効になっており、また軽量化も図られているためそれなりにメモリは確保されていると言えます。
まぁだいたいのゲームは動くと思われます、570KBもあれば。
こうしたEMSメモリだとかXMSメモリの有効活用によりコンベンショナルメモリを確保するわけですが、その機能を使うためにconfig.sysが必要なのです。

参考までにconfig.sysファイルがないシステムだけを転送したいわゆる起動ディスク(FD)からMS−DOSを起動してメモリを見たらこうなりました。



いやー、530KBは厳しいですね。
ゲームの起動率は50%というところでしょうか、最低でも安定動作のためには550以上、VGとか特に戯画から発売されたアクションっぽいゲームだと600KBを要求しますので、なんとかしなければなりません。
とはいえ、このメモリの確保のための施策は奥が深すぎて専門家ならいざ知らず、素人には何が何だかさっぱりわかりません。
よってここではある程度メモリが確保されているHDD内にある初期のconfig.sysを改変して、おおむね600kbを確保出来る起動ディスクを作成してみたいと思います。



起動ディスクを作成


まずは、起動ディスクの作成から。
とりあえずHDDからパソコンを起動して、DOSシェル画面を終了して、コマンドプロンプトの画面にします。
そしたらおもむろに起動ディスクにしてもいいフロッピーディスク(以下FD)を用意し、ドライブに挿入します。
ここではA=HDD、B=起動ディスクを挿入したFDDと想定します。

ここでFDをフォーマットするわけですが、フォーマットと同時にMS−DOSのシステムファイルも転送することでそのディスクは起動ディスクとして使えるようになります。
コマンドは次のとおり。

A:\>format b: /s

/sはシステム転送のパラメーターです。
これが終了したら、現在HDDに入っているconfig.sysをいま作成した起動ディスクに入れてしまいましょう。
やり方はDOSシェル画面でファイルコピーをしてもいいし、コマンドでやっても結構です。(コマンドの場合は、 A:\>copy config.sys b: でよいでしょう。)
そしたら起動ディスクにコピーしたconfig.sysを編集します。
先述の通り、任意の編集ソフトを使って結構ですが、ここではMS−DOS付属のSEDITから編集したいと思います。

A:\>sedit

でSEDITプログラムが起動します。


編集したいファイルはBドライブのFDに入っているconfig.sysなので、b:config.sysと指定してやればすぐ編集画面となります。



さて、それでは上から順番に不要なドライバを削除し、軽量化を図ります。
個々のデバイスの具体的な説明はそれぞれ詳しいHPが他にいくらでもあるので気になる方はそちらを参照して頂くとして、最低限の解説とさせて頂きますので容赦下さい。


(編集前) (解説) (編集後)
FILES=30 削ってもさほど効果は出ないのでそのままにしておきます。 FILES=30
BUFFERS=10 メモリ確保のために少しだけ削ります。 BUFFERS=5
DEVICE=A:\DOS\HIMEM.SYS このデバイスはMS-DOSのシステムをコンベンショナルメモリ上からハイメモリ領域上に移すためのデバイスでメモリ確保の為には必須となります。
このデバイスを使う為にはHIMEM.SYSファイルを用意しなくてはなりませんが、FDDには入れてませんのでHDD上にあるものを使うように設定します。
(FDの空き容量に余裕があるなら入れてもいいのでそこは環境に合わせて下さい。)
FDで起動したらFDがAドライブになるので正確にHDDのドライブを指定し直してあげましょう。
FDDが2基の機種ならC:\DOSになるし、1基の機種ならB:¥DOSとなるので、適切に書き換えましょう。
(本想定ではHDD1基、FDD2基の構成です。)
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=A:\DOS\EMM386.EXE /UMB /T=A:DOS\EXTDSWAP.SYS EMM386.EXEはEMSメモリという拡張メモリを使用するために必要なプログラムとなります。
MS-DOSの起動に必要な分のメモリをそちらに移せるので使いたいのですが、こうしたデバイスを使用すればその分だけメモリを消費するわけです。
しかしメリット・デメリットを考えると採用するに値するモノと言えますので必要ない機能を省いて使います。
なお、ちまたにはもっと軽いメモリ管理プログラムがフリーで配布されているそうですが、本項ではMS-DOS付属であるコレを使っていきます。
/UMBはUMBメモリを使用する際に使うパラメータですが、単純にゲームの起動用ならなくてもいいと思います。
それより /HIGHSCAN と /NOEMS パラメータを使用します。
使わずに遊んでいるメモリ領域を使用出来るようにし、さらにEMSメモリをEMSメモリ用として確保しなくてもいいよという命令になる・・ようです。
/T=A:DOS\EXTDSWAP.SYS は要らなさそうなので省きましょう。
DEVICE=C:\DOS\EMM386.EXE /HIGHSCAN /NOEMS
DEVICE=A:\DOS\SETVER.EXE よくわからないけど要らなさそうなので削除します。 なし
DEVICEHIGH=A:\DOS\PRINT.SYS /U 見るからにプリンター用のドライバなので削除します。 なし
DEVICEHIGH=A:\DOS\RSDRV.SYS なんだかわからないけど要らなさそうなので削除します。 なし
DEVICEHIGH=A:\DOS\KKCFUNC.SYS 同上 なし
DEVICE=A:\DOS\NECAIK1.DRV どうやら日本語入力デバイスのようなので不必要と思われます、削除。 なし
DEVICE=A:\DOS\NECAIK2.DRV A:NECAI.SYS 同上 なし
DOS=HIGH,UMB これはMS-DOSを常駐させるメモリ領域をハイメモリ領域にするために必要です。
UMBについては先述のとおり、EMM386,EXEのところで使用するように設定するならば指定する必要があります。
本項では使わない前提でやります。
DOS=HIGH


このように軽量化したところで、実際にどんなものか数値を見てみたいと思います。
次の画像をご覧下さい。



604KBの空きメモリを確保できました。
600もあればほぼ全てのゲームにおいてメモリ不足で起動出来ないなんてことはありません。

ちなみに上記条件を少し変えて、HIMEM.SYSとDOS=HIGHだけを指定したら608KBになったりもしましたが、EMSメモリを使用可能にしておけばCD-ROMドライブを組み込んだりしても対応出来たりするのでとりあえずEMM386.EXEを入れておいていいんじゃないでしょうか。



戻る  | 2−5  起動ディスクの作成 〜AUTOEXEC.BAT