Skip to content

v0.1.10

Choose a tag to compare

@madscient madscient released this 10 Oct 06:39
· 96 commits to master since this release

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)を参照。