Repository navigation
v0.1.10
v0.1.9 からの変更。実機の報告を受けた修正 4 つと、原因を調べるための表示の追加です。動作確認は PC-98 エミュレータ(NP21/W と DOSBox-X)の上で行っています。どれも実機では未確認です。
分かっている問題(v0.1.9 までの実機の報告)
- 386 / 486 の機種で、EMM ドライバを入れないリアルモード(HIMEM.SYS などの XMS ドライバだけ)から起動すると、画面が黒いまま固まる(PC-9801BX、PC-9801RA2)。この版で対策を入れましたが、直るかは未確認です。固まる場合は、VCPI のある EMM ドライバの下で使ってください。PC-9821Cr13(Pentium)ではリアルモードでも動きます
- EMM386.EXE に
/HIGHSCANを付けていて、ドライバや常駐物をDEVICEHIGH/LHで読み込んでいると、ゲストが起動しないことがある(PC-9821Na12 で、ディスク版の BASIC と MS-DOS のディスクが起動しなかった)。この版で直しましたが、実機では未確認です。v0.1.9 までの版では、/HIGHSCANを外すと避けられます
変わったこと
- EMM ドライバが作った UMB を、ROM と取り違えない: MS-DOS 6.2 の EMM386.EXE は、
/HIGHSCANを付けると E9000h からの領域(BASIC ROM の領域)にも UMB を作ります。そこに入ったドライバが割り込みを横取りしていると、VBM98 がその番地を ROM の入口としてゲストに渡し、ゲストの BIOS 呼び出しが壊れていました。EMM ドライバが写し替えたメモリを見分けるようにしました。起動時に、その範囲をupper memory remapped by the EMM driver:の行で表示します - リアルモードへ戻るとき、CPU の状態を入る前と同じにする: v0.1.9 の
-progressの結果(PC-9801RA2)で、固まるのはゲストから戻った直後の、DOS 側のディスク読み込みやメモリ転送の中だと分かりました。ゲストから戻るたびに変わっていた CPU の状態(セグメントの限界、FS・GS、32 ビットのレジスタの上位、GDTR など)を、元どおりに戻すようにしました。どれが原因かは分かっていません - 終了したあと DOS に戻らないことがある件: ゲストが割り込みの処理の途中のまま終了すると、割り込みコントローラに「処理中」が残り、DOS 側のディスクなどの割り込みが止まっていました。終了時に片付けます(PC-9821Ap2 で、あるゲームを CTRL + GRPH + STOP で終了したあと DOS に戻らなかった報告があります。これが原因だったかは未確認です)
- スクリーンショットが 2 色の模様になることがある件: ゲームがグラフィックチャージャー(GRCG / EGC)を使って描いている最中は、VRAM を読んでも画面の中身が読めません。ホットキーがその瞬間に当たると、模様のような絵になっていました(PC-9821Cr13 の報告。v0.1.9 の「表示しているページを撮る」修正は、この原因には当たっていませんでした)。チャージャーが使われている間は、撮るのを待ちます。VM メニューから撮るときは待てないので、模様になったらメニューを閉じて、ホットキーで撮り直してください
- ゲストが止まったときのログ: ゲストが割り込みを禁止したまま止まって VM メニューが開いたとき、
-logを付けていれば、止まった番地の前後の命令、レジスタ、スタック、直前に呼ばれた割り込みがログに残ります - DOS に戻るとき、グラフィックチャージャーを止めます(ゲームの描画の途中で終了すると、有効なまま DOS に戻っていました)
試していただける方へ
- リアルモードで固まっていた機種(PC-9801BX、PC-9801RA2): この版で起動できるかを教えてください。起動時に出る
VBM98: real mode; segment limits above 64KB: ...の行もあると助かります- 動いた場合:
-rmfix 00を付けると固まること、-rmfix 01・02・04・08・10のどれで動くかが分かると、原因が 1 つに決まります - 固まる場合: v0.1.9 と同じく、
-progressを付けたときの画面の右上の表示を教えてください
- 動いた場合:
- EMM ドライバの下で使っている方: 起動時の
upper memory remapped by the EMM driver:とtraced to their ROM entries:の行(-logのファイルに入ります)を教えてください。note:やwarning:で始まる行が出ていたら、それもお願いします - 起動の途中で VM メニューが開いてしまうときは、メニューの「スクリーンショットの保存」で、止まったときにゲストが表示していた画面を保存できます。
-logのファイルと合わせて Issues に貼っていただけると、原因を調べられます - zip に入っている
VBM98.DOCは、PC-98 で読める説明書(Shift-JIS)です
VBM98 -fdd0 GAME.NFD -log VBM98.LOG
VBM98 -fdd0 GAME.NFD -rmfix 00
動作環境
- 80386 以上の PC-98x1(ノーマルモード)、MS-DOS(リアルモードか、VCPI のある EMM の下)、XMS ドライバ。空きコンベンショナルメモリ 256KB 以上、拡張メモリ 700KB 以上
- MS-DOS 6.2 の EMM386.EXE は、
/DPMIを付けないと VBM98 が使う機能(VCPI)を提供しません
まだ動かないもの
- 機種判別フラグの PC-9801VM 化、サウンド BIOS の INT D2h の登録、ホストの CPU が例外にせずに実行してしまう V30 の並び(Pentium 以降の RDTSC など)
- DMA の転送(対応予定)、D88 形式のディスクイメージ(対応予定)
詳細は README(PC-98 では VBM98.DOC)を参照。