Top > 88VAユーザーズクラブ > Q&A集 > 84
#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 >>>


Top > 88VAユーザーズクラブ > Q&A集 > 84