Debugコマンドを使って下位1MBメモリをダンプする [DOS]
DOSのDEBUGコマンドを使ってメモリ空間の下位1MB分をファイルに書き出すバッチです。
メモリマップの調査や拡張カードのBIOS ROMの吸出しなどに使えます。
DEBUGコマンドを含めて機種共通のコマンドしか使ってないのでPC/AT互換機以外でも使えます。
ただしNEC PC98のMS-DOS 3.3C以降ではDEBUGコマンドは拡張機能セットに含まれているので、基本機能セットしかインストールしていない環境では実行できません。
○実行方法
1. テキストエディタ等で下の2つのファイル(MMDUMP.BATとMMDUMP.TXT)を作成します。
2. それらを適当な場所に置きます。
3. DOSを起動したらとりあえずDEBUGコマンドが実行できることを確認して終了します(DEBUGコマンドは"?"でヘルプを表示、"q"を入力して終了できます。)
4. バッチ(MMDUMP.BAT)を実行します。
5. 処理が終わるとカレントディレクトリにMMDUMP.DATというファイルが生成されます。
ファイルサイズがちょうど1MB(1,048,576バイト)であることを確認してください。
バッチはIBM PC DOS J7.0/VとPC98のMS-DOS 5.0で動作確認済み。Windows上でも動作します。
一時的にカレントドライブの空きを2MBほど食います。
DOSをフロッピーディスクで運用している場合はRAMディスクを作ってそこでバッチを実行するといいでしょう。
○MMDUMP.BAT
type mmdump.txt|debug copy /b 00.dat + 08.dat + 10.dat + 18.dat + 20.dat + 28.dat + 30.dat + 38.dat 001.dat copy /b 40.dat + 48.dat + 50.dat + 58.dat + 60.dat + 68.dat + 70.dat + 78.dat 002.dat copy /b 80.dat + 88.dat + 90.dat + 98.dat + a0.dat + a8.dat + b0.dat + b8.dat 003.dat copy /b c0.dat + c8.dat + d0.dat + d8.dat + e0.dat + e8.dat + f0.dat + f8.dat 004.dat del 00.dat del 08.dat del 10.dat del 18.dat del 20.dat del 28.dat del 30.dat del 38.dat del 40.dat del 48.dat del 50.dat del 58.dat del 60.dat del 68.dat del 70.dat del 78.dat del 80.dat del 88.dat del 90.dat del 98.dat del a0.dat del a8.dat del b0.dat del b8.dat del c0.dat del c8.dat del d0.dat del d8.dat del e0.dat del e8.dat del f0.dat del f8.dat copy /b 001.dat + 002.dat + 003.dat + 004.dat mmdump.dat del 001.dat del 002.dat del 003.dat del 004.dat
○MMDUMP.TXT
最後に余分に改行が入ってます。これを省くとdebugコマンドでフリーズするので注意。
rbx 0 rcx 8000 n00.dat m0000:0 8000 100 w n08.dat m0800:0 8000 100 w n10.dat m1000:0 8000 100 w n18.dat m1800:0 8000 100 w n20.dat m2000:0 8000 100 w n28.dat m2800:0 8000 100 w n30.dat m3000:0 8000 100 w n38.dat m3800:0 8000 100 w n40.dat m4000:0 8000 100 w n48.dat m4800:0 8000 100 w n50.dat m5000:0 8000 100 w n58.dat m5800:0 8000 100 w n60.dat m6000:0 8000 100 w n68.dat m6800:0 8000 100 w n70.dat m7000:0 8000 100 w n78.dat m7800:0 8000 100 w n80.dat m8000:0 8000 100 w n88.dat m8800:0 8000 100 w n90.dat m9000:0 8000 100 w n98.dat m9800:0 8000 100 w na0.dat ma000:0 8000 100 w na8.dat ma800:0 8000 100 w nb0.dat mb000:0 8000 100 w nb8.dat mb800:0 8000 100 w nc0.dat mc000:0 8000 100 w nc8.dat mc800:0 8000 100 w nd0.dat md000:0 8000 100 w nd8.dat md800:0 8000 100 w ne0.dat me000:0 8000 100 w ne8.dat me800:0 8000 100 w nf0.dat mf000:0 8000 100 w nf8.dat mf800:0 8000 100 w q