MS-DOSはOS起動時に「CONFIG.SYS」と「AUTOEXEC.BAT」を読み込んで起動します。
この2ファイルで空きメモリの確保やドライバの読み込みとか行うので、この二つのファイル制すればMS-DOSを制することができます。
本記事の対応のバージョンはPC-98版のMS-DOS6.2を想定しています。
- 「640KBはすべての人にとって未来永劫(えいごう)充分なメモリだ」
- ゴール
- MS-DOSインストール時のCONFIG.SYSとAUTOEXEC.BAT
- CONFIG.SYSとAUTOEXEC.BATのいらないデバイスを削除してみた
- 【追記】 エディタ(sedit)
- 【追記】 CUSTOMコマンド
- 終わりに
- 上級者編
- MS-DOSのツール
「640KBはすべての人にとって未来永劫(えいごう)充分なメモリだ」
マイクロソフトの偉い人が言ったと言われてる言葉。
16bitのCPUは扱えるメモリは640Kまでで「640Kバイトの壁」と言われていました。
この壁を超えるためにDOSはとある手段で回避していましたが根本的な解決は32ビットCPUを使い32ビット対応のOS(Windows95/NT)の登場まで待つことになりました。
DOSではアプリを動かすには、この640Kのメモリ内へのロードが必要なのでこの
「640Kバイトの中に空き空間を如何に確保するのがカギになってきます」
以下はどのようにして640Kのメモリを確保するかのCONFIG.SYSとAUTOEXEC.BATの設定例です。
ゴール
とりあえずゲームを色々動かせる程度のメモリを確保するというのを目標にします。
MS-DOSインストール時のCONFIG.SYSとAUTOEXEC.BAT
MS-DOSインストール時CONFIG.SYSとAUTOEXEC.BATです。
CONFIG.SYS
MS-DOS6.2のインストール時CONFIG.SYSです。
以下代表的なコマンドを説明します。
FILES=30 BUFFERS=10 SHELL=\COMMAND.COM /P DEVICE=A:\DOS\HIMEM.SYS DEVICE=A:\DOS\EMM386.EXE /UMB /T=A:\DOS\EXTDSWAP.SYS 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
「HIMEM.SYS」と「EMM386.EXE」
この2つは640Kの壁を超えるためのツールで、拡張メモリ(プロテクトメモリ)というのを管理するためのドライバ。上で言った640Kの壁を超える手段になります。
「DEVICE」と「DEVICEHIGH」
CONFIG.SYSを見ていると「DEVICE」と「DEVICEHIGH」というのがあり、SYSファイルを読み込むときに使っています。
「DEVICE」で読み込むと640Kメモリ内にSYSファイルがロードされ、「DEVICEHIGH」で読み込むと640K以上のメモリ領域にロードされます。
これを考えると全部「DEVICEHIGH」で読み込めばOKじゃない!と思いますがそんな都合よくはいきません。
PC-98に640Kしかメモリが無い場合や、例えば拡張メモリ(外付けメモリ)が1Mしかない場合はなんでも「DEVICEHIGH」には入らないですし、そもそも全てのSYSファイルが「DEVICEHIGH」で読み込めるものではありません。
結局、自分が何をしたいかで必要なデバイスだけを読み込み640Kのメモリをなるべく空けるというの方法をとらないといけません。
いらないデバイスをCONFIG.SYSから削除する
CONFIG.SYSではSETVER.EXE、PRINT.SYS、RSDRV.SYS、KKCFUNC.SYS、NECAIK1.DRV、NECAIK2.DRVのデバイスを「DEVICE」と「DEVICEHIGH」で読み込んでいますが、これらが何者か確認します。
SETVER.EXE | 下位DOSの互換のためにDOSバージョンを偽装する |
PRINT.SYS | プリンターのドライバ。プリンタを使わない場合は不要 |
RSDRV.SYS | RS-232Cのドライバ。RS-232Cを使わない場合は不要 |
KKCFUNC.SYS | 日本語 FEP の補助ドライバ。漢字変換を行わない場合は不要 |
NECAIK1.DRV | NEC AIかな漢字変換ドライバ。漢字変換を行わない場合は不要 |
NECAIK2.DRV | NEC AIかな漢字変換ドライバ。漢字変換を行わない場合は不要 |
ゲームをするだけなので、上の表のドライバはいらないのでCONFIG.SYSから削除します。
AUTOEXEC.BAT
MS-DOSインストール時のAUTOEXEC.BATです。
@ECHO OFF PATH A:\DOS;A:\ SET TEMP=A:\DOS SET DOSDIR=A:\DOS MOUSE DOSSHELL MOUSE /R
上記AUTOEXEC.BATは「PATH A:\DOS;A:\」で必要なフォルダにパスを通しているのと、「TEMP」、「DOSDIR」というの環境変数の設定、「MOUSE」ドライバの読み込み及び、「DOSSHELL」というファイラーアプリを起動しています。
この中で、
「MOUSE」ドライバはゲームごとに独自のマウスドライバをゲームの起動時に読み込んでいるのでこのマウスドライバは不要。
「DOSSHELL」アプリも使わないのでこいつも不要です。
「MOUSE /R」は「DOSSHELL」アプリ終了時にマウスドライバをメモリから解放している命令なのでこれも不要です。
よって下の3行を削除します。
使用メモリを確認方法
CONFIG.SYSとAUTOEXEC.BATから必要のないデバイスを確認したました。
ここで話は少しそれて現在の空きメモリの確認方法の紹介です。
上の画面はPC-98版のMS-DOS6.2インストールしたての状態で、DOSSHELLを終了した時点での空きメモリ容量を確認です。以下のコマンドを使用します。
mem
黄色で囲んである数字が空き容量です。572Kの空きがあります。
正直これだけ空いていれば十分のような気がします。
CONFIG.SYSとAUTOEXEC.BATのいらないデバイスを削除してみた
インストール時のCONFIG.SYSとAUTOEXEC.BATから不要なデバイスをCONFIG.SYSとAUTOEXEC.BATから削除したものです。
CONFIG.SYS
FILES=30 BUFFERS=10 SHELL=\COMMAND.COM /P DEVICE=A:\DOS\HIMEM.SYS DEVICE=A:\DOS\EMM386.EXE /UMB /T=A:\DOS\EXTDSWAP.SYS DOS=HIGH,UMB
AUTOEXEC.BAT
@ECHO OFF PATH A:\DOS;A:\ SET TEMP=A:\DOS SET DOSDIR=A:\DOS
空き容量確認
いらないデバイスの記載を削除したCONFIG.SYSとAUTOEXEC.BATでDOSを起動しました。その時のmemの結果は以下になります。
591Kの空きがあります。不要なデバイスの削除前は572kだったので空き容量が増えています。
こにょうな感じで不要なデバイスは削除していきましょう。
【追記】 エディタ(sedit)
CONFIG.SYSとAUTOEXEC.BATを編集するエディタの紹介です。
NEC版のMS-DOS6.2にてseditというエディタが付いているので、コレを使用しましょう。
多分Windowsのメモ帳を使ったことがある人はなんとなく使えると思います。
起動
sedit <ファイル名>
編集画面
F1(ファイルの保存など)
「F1」を押すと、画面左上にファイルの保存みたいなメニューが出ます。
【追記】 CUSTOMコマンド
エディタ(sedit)を使用してメモリの空け方がわからないという人は、"CUSTOM" コマンドを使用してみましょう。
これなら自分に必要なデバイスをグラフィカルに選択し設定できます。
流れは下のような感じです
CUSTOMコマンド実行
「環境設定のファイルの...」を選択
「環境設定のファイルの...」を選択します。
「新規作成」を選択
画面下の「新規作成」を選択します。
必要なデバイスを設定(拡張メモリ)
バッファ、ファイルはインストール時の初期値のバッファは"10"、ファイルは"30"にします。
※バッファ、ファイルの値を小さくするとさらに空きメモリが増えます
その後、ほかの項目が「使用しないに」になっていることを確認し、「拡張メモリ」を「使用する」に設定します。
拡張メモリの設定
デフォルトの値のまま「設定終了」を選び、その後「はい」を選択します。
必要なデバイスを設定
「拡張メモリ」以外「使用しない」になっているのを確認し、「設定終了」を選択します。
CONFIG.SYS確認画面
「次画面」を選択します。
AUTOEXEC.BAT確認画面
「作成を終了する」を選択しmす。
CUSTOMコマンド画面
「終了」を選択します。
98再起動
98を再起動します。
終わりに
このように使わないデバイスファイルなどを削除し、640Kのメモリの中に空き容量を確保するのが基本です。
PC-98版のMS-DOSを扱うことがあればぜひメモリ確保にチャレンジしてみてください。
上級者編
ここからは上級者向け設定です。
MS-DOSの上級者はただ単に640Kのメモリ領域を空けるだけでなく、以下記事の設定もおこない臨機応変に環境を変えています。
PC-98版MS-DOSでCONFIG.SYSとAUTOEXEC.BATのマルチブート環境を構築する - PokuG stdio.h
上記記事の方法でCONFIG.SYS、AUTOEXEC.BATのマルチブートが可能になるので、一太郎用のCONFIG.SYS、ゲーム用のCONFIG.SYSなどを用意し、PC-98起動時にCONFIG.SYSを選択するマルチブートの方法があります。
PC-98の再起動を高速化、およびホットキーで再起動できるようにする - PokuG stdio.h
上記記事は、「CTRL」+「GRPH」+「DEL」のホットキーでMS-DOS上のPC-98を再起動できるようにし、さらに再起動時にハードウェアチェックやメモリチェックをスキップし、高速再起動をする方法です。
上記のマルチブート環境を構築し、さらに「CTRL」+「GRPH」+「DEL」のホットキーで高速再起動できるようにすることによって簡単にCONFIG.SYSの環境を切り替えることがきるようになるので、PC-98のMS-DOSがさらに快適になります。
お暇ならぜひ上記記事も見てください。
MS-DOSのツール
CONFIG.SYSとAUTOEXEC.BATとは関係ないですが、MS-DOSのコマンドがわからない、覚えられない(覚える気がない)などの場合は以下のツールを使いましょう。
ファイラーと言うもので、DOSのコマンドをグラフィカルに操作できます。
いまさら聞けないFD & VZ Editer講座 - PokuG stdio.h