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行を追加します。

A:\UMBT\ADDFILES.COM 30

これで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

BUFFERS=4
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

@ECHO OFF
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 診断プログラム)の上位メモリのメモリマップ

MSD

○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に次のようにパラメータを指定します。

DEVICE=A:\VEM\VEM486.EXE /E=B0 /U=A5-A7,C0-D7,DE-DF,E8-F3

○COMMAND.COMをUMBに移動させる

上のリンクにあるUMBTに含まれているUMBCMD.COMを使うとCOMMAND.COMをUMBに移動させることができます。CONFIG.SYSのSHELLコマンドは次のように書き換えます。

SHELL=A:\UMBT\UMBCMD.COM A:\COMMAND.COM /P

○設定例2 : DOS利用重視&フリーエリア600KBオーバー

常駐ドライバ : メモリ管理(VEM486)、RS-232Cドライバ、マウスドライバ、プリンタドライバ、RAMディスク、CDデバイスドライバ、ディスクキャッシュドライバ(DOSに付属)
常駐プログラム : MSCDEX、KI-Shell、ADDFILES
使用ROM領域 : 内蔵HD I/F(0xD8000 - 0xDBFFF)、SCSIボード(0xDC000 - 0xDDFFF)

CONFIG.SYS

BUFFERS=4
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

@ECHO OFF
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 診断プログラム)の上位メモリのメモリマップ


QLOOK ANALYTICS