PokuG stdio.h

stdio.hはおまじない

MENU

いまさら聞けないPC-98版MS-DOSのCONFIG.SYSとAUTOEXEC.BAT講座


MS-DOSはOS起動時に「CONFIG.SYS」と「AUTOEXEC.BAT」を読み込んで起動します。

この2ファイルで空きメモリの確保やドライバの読み込みとか行うので、この二つのファイル制すればMS-DOSを制することができます。

本記事の対応のバージョンはPC-98版のMS-DOS6.2を想定しています。

「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-DOSインストール時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は必要なフォルダにパスを通しているのと、tempディレクトリの設定と、MOUSEドライバの読み込み及び、DOSSHELLというファイラーを起動しています。

MOUSEドライバはゲームごとに独自のマウスドライバをゲームの起動時に読み込んでいるのでこのマウスドライバは不要。
DOSSHELLも使わないのでこいつも不要です。

よってこの記述を削除します。

使用メモリを確認方法


上の画面はPC-98版のMS-DOS6.2インストールしたての状態で、DOSSHELLを終了した時点での空きメモリ容量を確認です。以下のコマンドを使用します。

mem

黄色で囲んである数字が空き容量です。572Kの空きがあります。ぶっちゃけこれだけ空いていれば十分のような気がします。

CONFIG.SYSとAUTOEXEC.BATのいらないモジュールを削除してみた

手順1から不要なモジュールを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」を押すと、画面左上にファイルの保存みたいなメニューが出ます。

終わりに

このように使わないデバイスファイルなどを削除し、640Kのメモリの中に空き容量を確保するのが基本です。
PC-98版のMS-DOSを扱うことがあればぜひメモリ確保にチャレンジしてみてください。



上級者編

ここからは上級者向け設定です。
MS-DOSの上級者はただ単に640Kのメモリ領域を空けるだけでなく、以下記事の設定もおこない臨機応変に環境を変えています。

PC98版MS-DOSでCONFIG.SYSとAUTOEXEC.BATのマルチブート環境を構築する - PokuG stdio.h

上記記事の方法でCONFIG.SYS、AUTOEXEC.BATのマルチブートが可能になるので、一太郎用のCONFIG.SYS、ゲーム用のCONFIG.SYSなどを用意し、PC-98起動時にCONFIG.SYSを選択するマルチブートの方法があります。

PC98の再起動を高速化、およびホットキーで再起動できるようにする - 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