#0084/9999 Q&A集 ★タイトル (88VAUSER) 95/11/01 00:00 ( 61) 9.9 プログラムで98とVAを判別するには? ★内容 ここでは2つの方法を紹介します。 3.フォーラム − 9.質問・レポート − #7761(93/4/5) から引用 ============================================================================ A>98とVAの判別方法・・・ アマルテア ROMの内容を見て確認してみます。 リセット直後のROMへのジャンプアドレスはVAと98とでは違うので、そ れで確認しています。 ============================================================================ ということで、具体的には次の様にします。 ---------------------------------------------------------------------------- FFFF:0003 から1ワード読む ↓ その値が 0F000h か??? ↓Yes ↓No VAです 98です ---------------------------------------------------------------------------- 8086系のCPUはリセットがかかるとFFFF:0000からプログラムを実 行するので、普通ここにはJMP命令がかかれています。上の方法では、このJMP 命令のジャンプ先がVAと98では異なることを利用しています。 もう1つ、マイクロキャビンが「幻影都市」「Xak?」といった98/VA両用 のゲームの起動ディスクのIPLで使用している方法を紹介します。 ---------------------------------------------------------------------------- FFFF:000F から1バイト読む ↓ その値が 0FFh か???? |Yes ↓No | 98です ↓ I/Oポート 00h から1バイト読む ↓ その値が 0 か? ???? ↓Yes ↓No 98です VAです ---------------------------------------------------------------------------- I/Oポート00hは、98では割り込みコントローラ(μPD8259)のマス タのポート0が割り当てられています。(VAではI/Oポート188hに相当しま す。) このポートに対する読出はIRR/ISRの読み込みなので、割り込みを許 可し、割り込みルーチン以外から読めば0が読みだされるはずです。 VAではI/Oポート00hは、テンキーのキーマトリクスに割り当てられていま す。上の方法では、テンキーの0から7まですべてが押されていると98であると判 断されてしまいます。(そういうことは普通は起こらないでしょうが。) <<< end of article >>>