============================================================================== VMAP Version 2.01 Copyright (C) 1989-91 by c.mos   VMAP.DOC ============================================================================== ■ VMAPとは  VMAPは、メモリの利用状況を表示する、MS-DOS汎用ツールです。 今回、国内各社のMS-DOS Ver5(以降DOS5と記述)の発売に合わせて、 Ver2にバージョンアップ致しました。 ■ Ver2の主な改良点 ・DOS5および各社仮想86ドライバのUMBに対応 ・DOS4,5のMCB上のオーナー名に対応 ・DOS4,5のデバイス・サブセグメントに対応 ・XMSのHMA、EMB利用情報の表示 ・オプション指定により、コンベンショナル・メモリ、UMB、EMS&XMSを  それぞれ個別に表示 ・オプション指定により、複数ブロックの圧縮の抑止 ・1行単位にファイルハンドルで出力し、画面表示を高速化 ■ 起動方法 A>vmap[Return] A>vmap <オプションリスト>[Return] <オプションリスト> c: Conventional Memory コンベンショナル・メモリ u: Upper Memory Blocks (UMB) UMB m: Conventional & Upper Memory cu と同等 e: EMS & XMS EMS&XMS n: No compress multi blocks 複数ブロックをまとめずに表示 ・オプションの前の「- /」は必要ありません。 ・何も指定しなかった場合は、全ての内容を表示します。 ・複数のオプションを続けて指定できます。ただし、重複した指定をしても、表示内容  は重複しません。 ・上記以外の文字(例えば ? h)を指定すると、Usageを表示します。 ・文字コード20h〜3Ehの文字(例えば - /)は無視します。 ■ 実行例 1. PC-9801RA21, DOS3.3c, Memory-Pro386 Ver1.5 A>vmap VMAP Version 2.00 Copyright (C) 1989-91 by c.mos addr PSP blks size owner/parameters hooked vectors ---- ---- ---- ------ ------------------------- ----------------------------- D201 D213 2 6544 sc b: /sa /! 12 13 1B D39C FF01 24 49536 DFCC-E000 1 832 --- UMB total: 56 KB --- 1045 sys 1 8192 1246 <-- 2 4528 command 22 23 24 2E 1363 1 336 137A <-- 1 1712 ezkey -f6 -k3 -@2 18 E0 13E6 <-- 1 10656 CON 09 70 1681 <-- 1 2608 vz -z 06 21 29 1725-A000 1 560560 ----- EMS ver4.0 (frame: C000h) ----- ----- XMS ver2.00 ----- handle pages size name HMA used: 25 KB by WX2K ------ ----- ------ -------- 1 128 2048k MX1STAR5 2 4 64k WX2K 3 2 32k WX2 4 32 512k VZ free 10 160k total 176 2816k 2. IBM PC/AT互換機, DOS5.0/V, HIMEM.SYS, EMM386.SYS C>vmap mn VMAP Version 2.00 Copyright (C) 1989-91 by c.mos addr PSP blks size owner/parameters hooked vectors ---- ---- ---- ------ ------------------------- ----------------------------- B002 1 208 B010-B7FE 1 32480 C802-CFFE 1 32704 E003 sys 1 22832 smartdrv 13 E597 sys 1 1184 ramdrive E5E2 sys 1 368 setver E5FA sys 1 4336 ansi CON 1B 29 E70A <-- 1 15536 mouse /s30 0B 10 33 EAD6-F000 1 21152 --- UMB total: 128 KB --- 026E sys 1 1184 himem 02B9 sys 1 8384 emm386 15 4B 67 04C6 sys 1 1488 0524 sys 1 256 0535 sys 1 512 0556 sys 1 624 057E sys 1 1856 05F3 sys 1 64 05F8 1 96 05FF <-- 1 5904 keyb JP,932,C:\DOS\KEYBOA 09 0771 <-- 1 2368 command n 22 23 24 2E 2F 0806 1 64 080B 0771 1 512 command (env) 082C 1 208 083A-9FFF 1 621648 3. IBM PC/AT互換機, DOS5.0/V, QEMM386 Ver6.0 C>vmap VMAP Version 2.00 Copyright (C) 1989-91 by c.mos addr PSP blks size owner/parameters hooked vectors ---- ---- ---- ------ ------------------------- ----------------------------- B001-B7FF 1 32720 C801 <-- 1 22832 smartdrv 13 D8 EE EF CD95 <-- 1 1136 ramdrive CDDD <-- 1 368 setver CDF5 <-- 1 4336 ansi 1B 29 CF05 <-- 1 15536 mouse /s30 0B 10 33 D2D1-DFFF 1 53984 F401-F800 1 16368 --- UMB total: 144 KB --- 026E sys 1 3072 qemm386 15 4B 67 032F sys 4 1072 loadhi CON 0376 sys 7 4896 04AF <-- 1 5904 keyb JP,932,C:\DOS\KEYBOA 09 0621 <-- 3 2944 command 22 23 24 2E 2F 06DC-A000 1 627248 ----- EMS ver4.0 (frame: E000h) ----- ----- XMS ver3.00 ----- handle pages size name HMA used: 61 KB by DOS ------ ----- ------ -------- EMB free: 464 KB 1 4 64k HMA 2 128 2048k EMB2 3 32 512k EMB3 free 29 464k total 229 3664k ■ 各種シンボルの説明 --- タイトル --- addr メモリブロックの開始セグメント PSP メモリブロックのオーナーセグメント <-- :addrと同じ sys :オーナー 0008h のシステムコード、データ 空き :フリーエリア -???? :フリーエリア終了セグメント blks 同じオーナーまたはサイズの、連続するメモリブロック数 size メモリブロックのバイト数 owner オーナー名 parameters 実行時のパラメータ(CONデバイスの場合はデバイス名) hooked vectors プログラムがフックする割り込み番号 (<...> タイプのオーナーの場合は表示しない) --- オーナー名 --- フリーエリア config.sys command command.com (env) 環境エリア ディスクバッファ FILES= | FCBS= | DOS4,5の vmap n で表示 LASTDRIVE= | STACKS= | --- EMS --- handle EMSハンドル番号 pages 使用ページ数 size 使用ページの合計Kバイト数 name ハンドル名(EMMver4.0使用時) frame: ページ・フレーム開始セグメント --- XMS --- HMA used: HMAの使用メモリサイズ、オーナー名 EMB free: EMBのフリーメモリサイズ ・EMBがサポートされていない、あるいはフリーエリアがない  場合は、表示しない。 ・最大ブロックサイズがそれと異なる場合は(max: ?KB)を追加表示。 ■ テクニカルノート ◇複数ブロックの圧縮について  少ない行数で可能な限り多くの情報を表示するために、以下の方法で複数のメモリ ブロックを1つにまとめて表示します。  1.同一オーナーセグメントの連続するメモリブロック  2.同一MCBオーナー名の連続するメモリブロック(QEMMのloadhi対応)  3.96バイト以下のフリーエリアを、直前のブロックへ追加  4.UMB内で、連続する同一サイズのメモリブロック(Melwareのaddbuf対応)  5.デバイス・サブセグメント内の、デバイスドライバ('D','E')以外のブロック オプション「n」を指定すると、4.以外の圧縮を抑止します。 ◇UMB開始セグメントの判定方法  DOS5のUMB開始セグメントは、末尾のMCBリンクからの次のMCBリンクで 容易に判定できますが、Memory-Pro386、QEMM等の仮想86ドライバでは、知る事 ができません。このため、MCBの最上位から、F0000hまで1000h(4KB 単位)で'M'をサーチし、次のMCBリンクの先頭も'M'または'Z'になっているかどう かで、UMBの開始セグメントを判定しています。 ◇UMBのROMエリアの判定方法  UMB内のMCBでは、DOS5も含めて、「ROMエリアかどうか」を知る共通の 手段がありません。このため、メモリブロックの開始・終了セグメントが、××00h の場合にROMエリアと判定しています。 ◇HMAの使用情報の表示  HMAは、オーナー名、使用サイズ等を知る方法が用意されていません。従って 次の方法で情報を取得しています。 使用サイズ: HMAの末尾から0をスキャンして、0以外の部分まで使用されている    とみなす。このため、状況によってかなり不確定な値となる。 オーナー名: DOS5では、ファンクションでDOSがHMA内に存在するかどうか    知る事ができる。それ以外は、FFFF:0012h からの文字列を表示する。 ◇ディスクバッファの判定方法  仮想86ドライバ付属のツールで、UMB内にディスクバッファを確保した場合の 判定は、AH=52h,int21hで取得されるディスクバッファの先頭ポインタからリンクを たどって行ないます。ディスクバッファの構造は、DOSのバージョンに依存します ので、この機能はDOS3でしか動作しません。 ◇PSPパラメータ内のコマンド名  DOS3では、TSRが環境エリアを解放すると、コマンド名が取得できなくなり ます。このため、TSRの多くは、PSPのパラメータエリアに、自身のコマンド名を コピーしています。  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き込まれ ます。したがって、VMAPVer2では、これを参照してオーナー名を表示します。 こうなると、パラメータエリアにコピーされたコマンド名が重複して表示される場合が ありますから、パラメータエリアの先頭がスペース以外であれば、次のスペースまでを スキップしています。   ■ メモリタイプの概説 ・コンベンショナル・メモリ  通常640KBの、いわゆる「メインメモリ」。 ・UMB(Upper Memory Blocks)  640KB〜1MB内の未使用エリアに、386やハードウェア機能でRAMを割り  当てて利用するもの。DOS5で標準対応。 ・EMS(Expanded Memory Specification)  640KB〜1MBのエリアに64KBのエリア(ページ・フレーム)を取り、  ここに拡張メモリから16KB、4ページをマッピングして利用するもの。   ・XMS(eXtended Memory Specification)  286、386のリアルモードで、1MB越のプロテクトメモリを利用する規格。  次にあげるHMAとEMBの規格が含まれる。 ・HMA(Hign Memory Area)  セグメント FFFFh からの64K−16バイト。1MB内のメモリと同等に  アクセス可能。ただし、1つのプログラムしか入れらない。 ・EMB(Extended Memory Blocks)  プロテクトメモリの指定サイズを確保し、メインメモリとのブロック転送によって  利用するもの。 ■ 配布条件 ・本プログラムはフリー・ソフトウェアです。転載・再配布は自由ですが、改変を  施した場合の再配布は禁じます。 ・雑誌、市販製品への添付も自由ですが、その場合は必ず作者へご一報ください。 ・本プログラムソースコードは、「VZエディタVer1.57、ソースアップデート  キット」に含まれます。ソースファイルの取り扱い規約は、そちらのドキュメントを  参照してください。 ■ 謝辞 ・HMAの使用メモリサイズの取得方法は、K-CRAFT氏作「MS.COM ver3.12」の  ドキュメントを参考にさせて頂きました。 ・Memory-Pro386はメガソフト(株)の製品です。 ・Melwareは(株)メルコの製品です。 ・QEMMはQuarterdeck Office Systemsの製品です。 ■ 参考文献 Addison Wesley UNDOCUMENTED DOS Microsoft Press MS-DOS Programmer's Referemce Ver5 Microsoft Press MS-DOS EXTENSIONS (Programmer's Quick Reference Series) ■ 変更履歴 Ver2.00 (91-11-29) Ver2 最初の配布版 Ver2.01 (91-12-16) VZエディタVer1.57 DOS/V版に添付 ・デバイスドライバで、パラメータエリアにゴミが表示される場合がありました。 ★ Melware Ver4.7xをお使いの方へ  Melware Ver4.7xのMELEMM.386の環境下では、VMAPがメインメモリの内容を 表示した時点でハングアップする場合があります。 これは、XMSファンクション07h(Query A20 Line State)をコールすると ドライバ内部でハングアップするためで、VMAP側では対処できません。 また、Ver4.7xでは、EMB Freeの値が正常に表示されないものがあります。 Ver4.8のMELEMM.386では、上記の不具合は解消されています。  メルコでは、Melware Ver4.8へのバージョンアップを行なっているようですので、 Melwareをお使いの方は、バージョンアップをお薦めします。 91/1/8 兵藤嘉彦 日経MIX c.mos ============================================================================== End of vmap.doc ==============================================================================