2013年04月01日

機種判別

  BookwormさんのHPを読んでいて、そういえば機種判別のルーチンをちゃんと作ってなかったなーと思って、急遽作りました。


  P6系の機種は、周知の通り、PC-6001、PC-6001mk2、PC-6601、PC-6001mk2SR、PC-6601SR と5種類ありますが、それらを同じプログラムで判別する必要がある場合があります。

  一番手っ取り早いのはROMを読む事ですが、これはいろいろと問題がある場合があるので、通常は他の方法で行います。


  今回は、以下のように判別しました。

  初代機とそれ以外:ポート0xF6 が存在するかどうか?
  mk2と66:ディスク用のバッファが存在するかどうか?
  mk2SRと66SR:ディスク用のバッファが存在するかどうか?
  SRとそれ以外:ポート0xA3 から値が読めるか?


  初代機とそれ以外はいろいろと違うのですが、SR でモードによらずに読み書きが可能で、値を変更してもあまり影響がないポート0xF6(タイマ割り込みのタイマ値)を使っています。

  mk2と66、mk2SRと66SRの判別は、全く同じものです。ディスク用バッファはディスクを内蔵側にした時に、ポート0xD0からアクセスが出来ます。

  SRとそれ以外には、AY-3-8910とYM-2203 の違いを利用しています。ポート0xA3から値を何回か読み込んで、0xFF以外の値が返ってきたらSRと判断しています。AY-3-8910(非SR)の場合は、0xA3 が常に0xFFになります。


  SR のI/O ポートはやっかいで、SR モードかそうでないかで、アクセスが出来たり出来なかったりするので、常にアクセスが出来るポートを選んでいます。


  ↓プログラムはコレです。

kishu.zip


  〜.p6 ファイルが2つありますが、これはSRの中間コードが違うためです。

  動作モード、ページに関係なく動作します。ただし、検証が甘いため、プログラムのアドレスが、ワークエリアに重なっているかも知れません。その場合は適宜変更して下さい。


posted by えすび at 22:29| Comment(5) | P6解析:回路全般 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
mkIISRと66SRの判別は公式にはI/OポートのB2Hに
用意されていて、判別のためのBIOSエントリ(01AAH)も
あったりしますが、これは何を見て判別しているんでしょう?
Posted by onda at 2013年04月02日 01:32
あ、B2Hの解説を見たらFDDからの割り込み情報と一緒なので
やっぱり内蔵FDD IFの有無あたりを見てるのかもです。
Posted by onda at 2013年04月02日 01:36
正解はやはりディスクでしたか。
さっそく参考にさせていただきます。
こういうものを1つ作っておくと何かと便利ですよね。

ウェイトとかR/Wの可否とかタイミングはもう完璧なんでしょうか>FPGA
となるとI/Oか、実機には載せられないところに拡張メモリを積むとか。
いずれにせよ区別しただけで終わらない、出来ることが増えるのが理想ですね。

↓の記事を読むとアクセラレータが載りそうな気配ですが(^^;
Posted by Bookworm at 2013年04月02日 06:13
>ondaさん

ポート0xB2 で判別するのは、SRモード以外は大丈夫かどうか分からなかったので、とりあえずディスク用バッファで判別ルーチンを組みました。

後で調べましたが、SRモードでも66モードでも、ポート0xB2は読み出せるので、mk2SRと66SRの判別に使えます。


また、判別の方法ですが、多分I/Oコントロールの入力ピンの一部の接続が違うのだと思います(例えば、あるピンがmk2SR:GND/66SR:VCCなど)。単にそのデータをI/Oポートに反映させているだけじゃないかと思います。回路図を見てないので、何とも言えませんが...

Posted by えすび at 2013年04月02日 18:43
>Bookwormさん

>>ウェイトとかR/Wの可否とかタイミングはもう完璧なんでしょうか>FPGA

多分、この違いで機種判定をする、という意味だと思うんですが、そういう意味では、実機と同じになっているはずです。

正確には、ROM領域でも、RAM領域でも、NoWait で動いてしまうのが実機と違う所です。ウエイトをM1サイクルのみ1ウエイトにして、ROM領域を正常に読み込めるかどうかで判別できるかも...


アクセラレータ(というか動画再生カートリッジ)の話は...6月のオフに間に合うかな?

Posted by えすび at 2013年04月02日 18:47
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。