PC98のMS-DOSにおいてフリーエリアを極限まで確保する
PC98のMS-DOSにおいてフリーエリアを確保する の続き。
540KB以上のフリーエリアが要求されるような状況はあまりないので、580KBもフリーエリアを確保できれば何も困ることはありません。でもせっかく取り上げた話題なので、もう少し切り詰めていこうと思います。危険な操作が含まれているので、万一起動しなくなったときのためにシステムインストールディスク(MS-DOSプリインストール機に付属)かDOSのシステムを転送した起動ディスクを用意しておいてください。
○システムテーブル(FILES、BUFFERSのバッファ)を削減
PC DOS 7.0ではDOSDATAコマンドでシステムテーブルをUMBに移動させることができます。PC98のDOSには同様の機能はありませんが、フリーソフトを使って似たようなことができます。
BUFFERSは大きい数字を設定するとディスクのファイルのアクセスが早くなりますが、ディスクキャッシュを使用する場合はBUFFERSは不要です。そこでまずはBUFFERSの最小の設定値を探します。CONFIG.SYSで「BUFFERS=1」と設定して再起動します。再起動後にコマンドで「MEM /D」を実行してメモリの状態を確認します。BUFFERSのメモリ使用量が出てくるのでこれを覚えておきます。
アドレス    名前         サイズ     タイプ
--------    --------     ------     ------
005800      IO           0007D0     システム データ
                         000130      FILES=
                         000050      FCBS=
                         000400      BUFFERS=
                         000210      LASTDRIVE=
次にCONFIG.SYSでBUFFERS=2、3、4と上げていくと、ある値でBUFFERSのメモリ使用量が増加します。その増加する前に設定した値がBUFFERSの最小設定値となります。
FILESの最小設定値は8と決まっているのでCONFIG.SYSにFILES=8を設定します。このままだとWindowsが使えないので、フリーソフトのUMBTに含まれているADDFILES.COMを使ってFILESバッファをUMBに追加します。AUTOEXEC.BATには次の1行を追加します。
これでAUTOEXEC起動時にUMBへFILESバッファが30個確保されます。
○設定例1 : DOS&Windows両用 安定版
常駐ドライバ : メモリ管理(VEM486、VEMWIN)、日本語入力(KKCFUNC、NECAI)、RAMディスク、PnPコンフィグレーションマネージャ、CDデバイスドライバ
 常駐プログラム : MSCDEX、ディスクキャッシュドライバ(Windowsに付属)、KI-Shell、ADDFILES
 使用ROM領域 : 内蔵HD I/F(0xD8000 - 0xDBFFF)、SCSIボード(0xDC000 - 0xDDFFF)
CONFIG.SYS
FILES=10
FCBS=1,0
LASTDRIVE=F
BREAK=OFF
SHELL=\COMMAND.COM /P
DEVICE=A:\VEM\VEM486.EXE /U=A5-A7,D0-D7,DE-DF,E8-F3
DEVICE=A:\VEM\VEMWIN.EXE
DEVICEHIGH=A:\DOS\KKCFUNC.SYS
DEVICE=A:\DOS\NECAIK1.DRV
DEVICE=A:\DOS\NECAIK2.DRV /R NECAI.SYS
DEVICEHIGH=A:\DOS\RAMDISK.SYS 4096 /E
DEVICE=A:\PLUGPLAY\DRIVERS\DOS\DWCFGMG.SYS
DEVICEHIGH=A:\DOS\NECCD.SYS /D:CD_101
DOS=HIGH,UMB
AUTOEXEC.BAT
SET TEMP=A:\WINDOWS\TEMP
SET DOSDIR=A:\DOS
PATH A:\DOS;A:\WINDOWS
LH A:\DOS\MSCDEX.EXE /E /D:CD_101 /L:F
LH A:\WINDOWS\SMARTDRV.EXE
A:\KSH\KSH.COM
A:\UMBT\ADDFILES.COM 30
起動時のメッセージ
NEC PC-9800 シリーズ パーソナル コンピュータ
マイクロソフト MS-DOS バージョン 5.00A-H
Copyright (C) 1981,1992 Microsoft Corp. / NEC Corporation
VEM486 Virtual XMS / EMS / VCPI Memory Server   Version 1.31β13
Copyright (C) 1995-1996 K.Ogino
UMB領域   : A5-A7 D0-D7 DE-DF E8-F3
VEM486 installed : XMS/EMS/VCPI メモリとして 13904 KBytes 使用可能です。
VEMWIN installed : MS-Windows 3.1/95 を使用可能です。
Microsoft (R) KKCFUNC バージョン 1.10
Copyright (C) Microsoft Corp. 1991. All rights reserved.
KKCFUNC が組み込まれました.
 AIかな漢字変換が使用可能です
 辞書は、カレントドライブの NECAI.SYS   です
 RAM DISK が使用可能です
 RAM DISK は、ドライブ C: です
 RAM DISK 容量 =  4096KB 論理セクタ長 =  1024 ディレクトリ数 =   384
Plug and Play for MS-DOS(R) and Windows(TM) Configuration Manager - R1.21
Copyright 1993, 1994 Intel Corporation  ALL RIGHTS RESERVED
MS-DOS is a registered trademark and Windows is a trademark of Microsoft Corp.
検出したPnPボード: MELCO IFC-NN  SCSI I/F
PnPボードの設定が完了しました。
Oak Technology Inc. OTI-011 CD-ROM device driver, Rev D011V109
  (C)Copyright Oak Technology Inc. 1993, 1994
CD−ROM Extensionsが組み込み可能です。
デバイス名 : CD_101
Command バージョン 5.00A-H
MSCDEX Version 2.21
Copyright (C) Microsoft Corp. 1986, 1987, 1988, 1989, 1990. All rights reserved.
       Drive F: = Driver CD_101 unit 0
Microsoft SMARTDriveディスク キャッシュ バージョン 4.0
Copyright 1991,1993 Microsoft Corp./ NEC Corporation
キャッシュ サイズ: 2,097,152 バイト
Windows実行時のキャッシュ サイズ: 2,097,152 バイト
         ディスク キャッシュ情報
ドライブ  リードキャッシュ  ライトキャッシュ  バッファリング
-----------------------------------------
  A:       する       する       不要
  B:       する       しない      不要
ヘルプを見るには"smartdrv /?"と入力してください。
SMARTDriveのメモリ常駐部分がロードされました。
KI-Shell for PC-9801 (ver1.73g[EMS])
    (c)1986-97 by K.Ishino,T.Hotta,yuuji,Mr.No
        HistBuff=501 AliasBuff=200 DirStack=15393  3CD6h Bytes used
UMBにロードしました.
ADDFILES ver1.3 for DOS5 Copyright (C)KENJI 1994.7- Release All rights reserved.
FILES = 10 + 30 = 40
use 1776 bytes
MEM /Cの実行結果
コンベンショナルメモリ :
  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  MSDOS              24480      ( 23.9K)       5FA0
  NECAIK1             7040      (  6.9K)       1B80
  NECAIK2              272      (  0.3K)        110
  DWCFGMG             3072      (  3.0K)        C00
  COMMAND             2896      (  2.8K)        B50
  SMARTDRV           13744      ( 13.4K)       35B0
  フリー                   64      (  0.1K)         40
  フリー               603584      (589.4K)      935C0
全フリーメモリ :          603648      (589.5K)
アッパーメモリ :
  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  システム              221440      (216.3K)      36100
  SMARTDRV           16384      ( 16.0K)       4000
  (VEMWIN)             784      (  0.8K)        310
  MSCDEX             15696      ( 15.3K)       3D50
  ADDFILES            1776      (  1.7K)        6F0
  KKCFUNC             4128      (  4.0K)       1020
  RAMDISK             2080      (  2.0K)        820
  NECCD              17616      ( 17.2K)       44D0
  KI-SHELL           15584      ( 15.2K)       3CE0
  フリー                11424      ( 11.2K)       2CA0
  フリー                  592      (  0.6K)        250
  フリー                 6336      (  6.2K)       18C0
  フリー                 9440      (  9.2K)       24E0
全フリーメモリ :           27792      ( 27.1K)
プログラムへの使用可能全バイト数(コンベンショナル+アッパー) :                631440   (616.6K)
実行可能プログラム最大サイズ :                                     603440   (589.3K)
使用可能最大アッパーメモリブロック :                                    11424   ( 11.2K)
  14352384 バイト : 全 EMSメモリ
   7749632 バイト : 使用可能 EMSメモリ
  14680064 バイト : 全エクステンドメモリ
   7749632 バイト : 使用可能エクステンドメモリ
   7749632 バイト : 使用可能 XMSメモリ
                    MS-DOS は, ハイメモリ領域に常駐しています.
MSD(Microsoft 診断プログラム)の上位メモリのメモリマップ

○EMSページフレームを0xB0000 - 0xBFFFFに設定する
デバイスドライバ・常駐プログラムは複数のUMBメモリ領域に分割して移動させることはできません。UMBメモリが分断されていれば、その分断されたうちのいずれかの領域に収まらなければUMBメモリに入れることはできません。なので、なるべくUMBメモリの領域が割れないように工夫します。
メモリ空間 0xB0000 - 0xBFFFF は本来はグラフィック用ビデオメモリの領域ですが、一部の機種ではここをEMSページフレームと切り替えて使うことができます。ただしグラフィック画面を使う一部のプログラムで不具合が起きることがあります。EMSページフレームを0xB0000 - 0XBFFFFに移動させた時のメモリマップは下のようになります。
| アドレス | サイズ | 種別 | 割り当て | 説明 | 
| 0xA0000 - 0xA4FFF | 20KB | サブRAM | システム | テキストVRAM等 | 
| 0xA5000 - 0xA7FFF | 12KB | (予約) | (空き) | 空き(UMBとして使用可能) | 
| 0xA8000 - 0xBFFFF | 96KB | サブRAM | DOS/システム | EMSページフレーム/グラフィックVRAM(P0,1,2) | 
| 0xC0000 - 0xDFFFF | 128KB | ROM(予約) | (空き) | ROM予約領域(未使用領域はUMBとして使用可能) | 
| 0xE0000 - 0xE7FFF | 32KB | サブRAM | システム | グラフィックVRAM(P3) | 
| 0xE8000 - 0xF3FFF | 48KB | ROM | システム | ROM BASIC(通常はUMBとして使用可能) | 
| 0xF4000 - 0xFFFFF | 48KB | ROM | システム | BIOS | 
0xC0000 - 0xDFFFFに単一区画で128KBものUMB領域を作ることができます。ただ実際には0xD8000あたりにHDDのブートROMが入ってくるので、単一だと96KBくらいになると思います。
PC-9821で内蔵HD I/FとSCSI I/F(PC-9801-92相当)を搭載する環境の場合、CONFIG.SYSでVEM486に次のようにパラメータを指定します。
○COMMAND.COMをUMBに移動させる
上のリンクにあるUMBTに含まれているUMBCMD.COMを使うとCOMMAND.COMをUMBに移動させることができます。CONFIG.SYSのSHELLコマンドは次のように書き換えます。
○設定例2 : DOS利用重視&フリーエリア600KBオーバー
常駐ドライバ : メモリ管理(VEM486)、RS-232Cドライバ、マウスドライバ、プリンタドライバ、RAMディスク、CDデバイスドライバ、ディスクキャッシュドライバ(DOSに付属)
 常駐プログラム : MSCDEX、KI-Shell、ADDFILES
 使用ROM領域 : 内蔵HD I/F(0xD8000 - 0xDBFFF)、SCSIボード(0xDC000 - 0xDDFFF)
CONFIG.SYS
FILES=10
FCBS=1,0
LASTDRIVE=F
BREAK=OFF
SHELL=A:\UMBT\UMBCMD.COM A:\COMMAND.COM /P
DEVICE=A:\VEM\VEM486.EXE /E=B0 /U=A5-A7,C0-D7,DE-DF,E8-F3
DEVICEHIGH=A:\DOS\RAMDISK.SYS 4096 /E
DEVICEHIGH=A:\DOS\RSDRV.SYS
DEVICEHIGH=A:\DOS\PRINT.SYS /U
DEVICEHIGH=A:\DOS\MOUSE.SYS
DEVICEHIGH=A:\DOS\NECCD.SYS /D:CD_101
DEVICEHIGH=A:\DOS\SMARTDRV.SYS 1024
DOS=HIGH,UMB
AUTOEXEC.BAT
SET TEMP=A:\WINDOWS\TEMP
SET DOSDIR=A:\DOS
PATH A:\DOS;A:\WINDOWS
LH A:\DOS\MSCDEX.EXE /E /D:CD_101 /L:F
A:\KSH\KSH.COM
A:\UMBT\ADDFILES.COM 30
起動時のメッセージ
NEC PC-9800 シリーズ パーソナル コンピュータ
マイクロソフト MS-DOS バージョン 5.00A-H
Copyright (C) 1981,1992 Microsoft Corp. / NEC Corporation
VEM486 Virtual XMS / EMS / VCPI Memory Server   Version 1.31β13
Copyright (C) 1995-1996 K.Ogino
UMB領域   : A5-A7 C0-D7 DE-DF E8-F3
VEM486 installed : XMS/EMS/VCPI メモリとして 13840 KBytes 使用可能です。
 RAM DISK が使用可能です
 RAM DISK は、ドライブ C: です
 RAM DISK 容量 =  4096KB 論理セクタ長 =  1024 ディレクトリ数 =   384
 RS−232Cインターフェイスが使用可能です
 プリンタが使用可能です
 マウスドライバが使用可能です
Oak Technology Inc. OTI-011 CD-ROM device driver, Rev D011V109
  (C)Copyright Oak Technology Inc. 1993, 1994
CD−ROM Extensionsが組み込み可能です。
デバイス名 : CD_101
SMARTDriveが使用可能です
    キャッシュサイズ   1024 KB (XMS)
    トラック数      120
    最小キャッシュサイズ 0 KB
UMBCMD v1.3 for DOS5 Copyright (C)KENJI 1994.7- Release All rights reserved.
Command バージョン 5.00A-H
MSCDEX Version 2.21
Copyright (C) Microsoft Corp. 1986, 1987, 1988, 1989, 1990. All rights reserved.
       Drive F: = Driver CD_101 unit 0
KI-Shell for PC-9801 (ver1.73g[EMS])
    (c)1986-97 by K.Ishino,T.Hotta,yuuji,Mr.No
        HistBuff=501 AliasBuff=200 DirStack=15393  3CD6h Bytes used
UMBにロードしました.
ADDFILES ver1.3 for DOS5 Copyright (C)KENJI 1994.7- Release All rights reserved.
FILES = 10 + 30 = 40
use 1776 bytes
MEM /Cの実行結果
コンベンショナルメモリ :
  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  MSDOS              24480      ( 23.9K)       5FA0
  フリー               630784      (616.0K)      9A000
全フリーメモリ :          630784      (616.0K)
アッパーメモリ :
  名前                サイズ(10進数)       サイズ(16進数)
-------------      ---------------------   -------------
  システム              155904      (152.3K)      26100
  RAMDISK             2080      (  2.0K)        820
  RSDRV               2416      (  2.4K)        970
  PRINT               5344      (  5.2K)       14E0
  MOUSE               8448      (  8.3K)       2100
  NECCD              17616      ( 17.2K)       44D0
  SMARTDRV           15296      ( 14.9K)       3BC0
  COMMAND             2896      (  2.8K)        B50
  ADDFILES            1776      (  1.7K)        6F0
  MSCDEX             15696      ( 15.3K)       3D50
  KI-SHELL           15584      ( 15.2K)       3CE0
  フリー                12224      ( 11.9K)       2FC0
  フリー                42784      ( 41.8K)       A720
  フリー                 6064      (  5.9K)       17B0
  フリー                14960      ( 14.6K)       3A70
全フリーメモリ :           76032      ( 74.3K)
プログラムへの使用可能全バイト数(コンベンショナル+アッパー) :                706816   (690.3K)
実行可能プログラム最大サイズ :                                     630640   (615.9K)
使用可能最大アッパーメモリブロック :                                    42784   ( 41.8K)
  14352384 バイト : 全 EMSメモリ
   8896512 バイト : 使用可能 EMSメモリ
  14680064 バイト : 全エクステンドメモリ
   8896512 バイト : 使用可能エクステンドメモリ
   8896512 バイト : 使用可能 XMSメモリ
                    MS-DOS は, ハイメモリ領域に常駐しています.
MSD(Microsoft 診断プログラム)の上位メモリのメモリマップ

