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