Skip to content

v0.1.18

Choose a tag to compare

@madscient madscient released this 13 Oct 14:27
· 41 commits to master since this release

v0.1.17 からの変更。実機で報告された「メニューが表示されたまま固まる」件の、2 つめの修正です。動作確認は PC-98 エミュレータ(NP21/W と DOSBox-X)の上で行っています。エミュレータではこの現象そのものが起きないので、直ったかどうかは実機では未確認です。

v0.1.17 について(訂正)

v0.1.17 の修正は効いていませんでした(PC-9821Ap2 での報告とログ)。リリースノートに書いた原因の説明(BIOS がキーを受けるたびに行っている応答をしていなかった)も、誤りでした。いただいた 1 回ぶんのログから原因を決めてしまったためです。その応答を足しても、キーボードは止まったままでした。

直したこと

  • CTRL + GRPH + HELP のメニューや、CTRL + GRPH + STOP の終了の確認が、表示されたままキーを受け付けずに固まる件(PC-9821Ap2、MS-DOS 6.2、EMM386.EXE の下。v0.1.14 から v0.1.17)

    これまでのログを全部並べ直すと、次のことが分かりました。

    • VBM98 は、ホットキーのキーそのものは「キーボードからの割り込み」で受け取り、キーを離したときの符号は「キーボードの受信を見張って、届いた直後に読む」やり方で受け取っていました
    • 割り込みで受け取った符号のあとは、次の符号が毎回届いています。キーボードが止まるのは、見張って読んだ符号のあとでした(毎回ではありません)

    PC-98 のキーボードは、本体が受信したデータを読むまでのあいだ「待て」の合図を受け取り、読まれると次を送ります。届いた直後に読むと、この「待て」が極端に短くなります。キーボードがそれを見落として、次を送る合図を待ったまま止まる、と見ています(資料と観測からの見立てで、確かめられてはいません)。

    そこで、離したときの符号も、割り込みで受け取ってから少し間を置いて読むようにしました。メニューを開くときには、「待て」の合図をはっきり 1 回出し直します。

試していただける方へ

メニューや終了の確認が固まっていた環境で、オプションを付けずに(-log だけは付けていただけると助かります)、同じ操作を何回か繰り返してみてください。これまでも毎回固まるわけではなかったので、1 回通っただけでは直ったと言えません。5 回ほど続けて通れば、直ったと見てよさそうです。

VBM98 -fdd0 GAME.HDM -log VBM98.LOG
  • 固まらなくなっていれば、何回試して何回通ったかをお知らせください
  • まだ固まる場合は、-log と -kbdprobe を付けて同じ操作をし、固まった直後から、ESC か数字のキーを 1 秒おきくらいに押し続けてください(今回は待たずに押してください)。20 秒ほどのあいだに、VBM98 がキーボードの立て直しを 3 段階で試します。どの段階のあとでキーが効いたかがログに残ります。そのログを送ってください

これまで問題なく動いていた機種でも、ホットキーの受け取り方が変わっています。ホットキーが効かない、ホットキーのあとキー入力がおかしい、という場合もお知らせください。

動作環境

  • 80386 以上の PC-98x1(ノーマルモード)、MS-DOS(リアルモードか、VCPI のある EMM の下)、XMS ドライバ。空きコンベンショナルメモリ 256KB 以上、拡張メモリ 700KB 以上。イメージをメモリに読み込むには、さらに 1 枚あたりイメージの大きさぶん
  • MS-DOS 6.2 の EMM386.EXE は、/DPMI を付けないと VBM98 が使う機能(VCPI)を提供しません

まだ動かないもの

  • 機種判別フラグの PC-9801VM 化、サウンド BIOS の INT D2h の登録、ホストの CPU が例外にせずに実行してしまう V30 の並び(Pentium 以降の RDTSC など)
  • DMA の転送(対応予定)、D88 形式(対応予定)、BKDSK の HDB 形式(対応予定)
  • メニューからブランクディスクを作る機能(ご要望をいただいています。検討中)

zip に入っている VBM98.DOC は、PC-98 で読める説明書(Shift-JIS)です。詳細は README(PC-98 では VBM98.DOC)を参照。