PokuG stdio.h

stdio.hはおまじない

MENU

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

f:id:yarufu101:20201216092549p:plain
MS-DOSはOS起動時に「CONFIG.SYS」と「AUTOEXEC.BAT」を読み込んで起動します。この2ファイルで空きメモリの確保やドライバの読み込みとか行うので、この二つのファイル制すればMS-DOSを制することができます。
本記事の対応のバージョンはPC98版のMS-DOS6.2を想定しています。

0.「640KBはすべての人にとって未来永劫(えいごう)充分なメモリだ」

マイクロソフトの偉い人が言ったと言われてる言葉。
16bitのCPUは扱えるメモリは640Kまでで「640Kバイトの壁」と言われていました。
この壁を超えるためにDOSはとある手段で回避していましたが根本的な解決は32ビットCPUを使い32ビット対応のOS(WIndows95/NT)の登場まで待つことになりました。
DOSではアプリを動かすには、この640Kのメモリ内へのロードが必要なのでこの「640Kバイトの中に空き空間を如何に確保するのがカギになってきます
以下はどう640Kのメモリを確保するかのCONFIG.SYSとAUTOEXEC.BATの設定例です。

0.1.ゴール

とりあえずゲームを色々動かせる程度のメモリを確保するというのを目標にします。

1.MS-DOSインストール時CONFIG.SYSとAUTOEXEC.BAT

MS-DOSインストール時CONFIG.SYSとAUTOEXEC.BATです。

1.1.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
1.1.1.「HIMEM.SYS」と「EMM386.EXE」

この2つは640Kの壁を超えるためのツールで、拡張メモリ(プロテクトメモリ)というのを管理するためのドライバ。上で言った640Kの壁を超える手段になります。

1.1.2.「DEVICE」と「DEVICEHIGH」

CONFIG.SYSを見ていると「DEVICE」と「DEVICEHIGH」というのがあり、SYSファイルを読み込むときに使っています。
「DEVICE」で読み込むと640Kメモリ内にSYSファイルがロードされ、「DEVICEHIGH」で読み込むと640K以上のメモリ領域にロードされます
これを考えると全部「DEVICEHIGH」で読み込めばOKじゃない!と思いますがそんな都合よくはいきません。
PC98に640Kしかメモリが無い場合や、例えば拡張メモリ(外付けメモリ)が1Mしかない場合はなんでも「DEVICEHIGH」には入らないですし、そもそも全てのSYSファイルが「DEVICEHIGH」で読み込めるものでもないです。
結局、自分が何をしたいかで必要なデバイスファイルだけを読み込み640Kのメモリをなるべく空けるというの方法をとらないといけません。

1.1.3.いらないドライバを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から削除します。

1.2.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も使わないのでこいつも不要です。よってこの記述を削除します。

1.1.4.使用メモリを確認方法

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

mem

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

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

手順1から不要なモジュールをCONFIG.SYSとAUTOEXEC.BATから削除したものです。

2.1.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

2.2.AUTOEXEC.BAT

@ECHO OFF
PATH A:\DOS;A:\
SET TEMP=A:\DOS
SET DOSDIR=A:\DOS

2.3空き容量確認

いらないモジュールの記載を削除したCONFIG.SYSとAUTOEXEC.BATでDOSを起動しました。その時のmemの結果は以下になります。
f:id:yarufu101:20200322181048p:plain
591Kの空きがあります。不要なモジュールの削除前は572kだったので空き容量が増えています。

終わりに

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

話が変わりますが、GeoCitiesやniftyのホームページが消えた今PC98のDOS設定の情報が見つけづらくなったのは非常に痛いです。
MS-DOSとWIndows95や3.1が混在していたインターネット明瞭期の時期の話が見れなくなり大変悲しいです。
なんとかなりませんでしょうか・・・なんともならない?

上級者編

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

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

pokug.net
上記記事は、「CTRL」+「GRPH」+「DEL」のホットキーでPC98を再起動できるようにし、さらに再起動時にハードウェアチェックやメモリチェックをスキップし、高速再起動をする方法です。

上記のマルチブート環境を構築し、さらに「CTRL」+「GRPH」+「DEL」のホットキーで高速再起動できるようにすることによって簡単にCONFIG.SYSの環境を切り替えることがきるようになるので、PC98のMS-DOSがさらに快適になります。
お暇ならぜひ上記記事も見てください。