2012年06月16日

8255と8049の設計(16)

 SWORD(S-OS)の GRAPH+カーソルキーが受け付けない問題について。

 そういえば、キー入力に関しては大体の想像で作ったので、ちゃんと調べることにしました。


 調べるのは、キーを押した時に、SUB-CPU から何の値が返ってくるか、どの割り込みが発生するか、です。

 キーを押すパターンは、結構あります。

 1)英数字モードで、普通に押す
 2)英数字モードで、SHIFTを押しながら
 3)英数字モードで、CTRLを押しながら
 4)英数字モードで、GRAPHを押しながら
 5)平仮名モードで、普通に押す
 6)平仮名モードで、SHIFTを押しながら
 7)平仮名モードで、CTRLを押しながら
 8)平仮名モードで、GRAPHを押しながら
 9)片仮名モードで、普通に押す
 10)片仮名モードで、SHIFTを押しながら
 11)片仮名モードで、CTRLを押しながら
 12)片仮名モードで、GRAPHを押しながら

 ...かなりあります。


 調べ方は、BASIC のキー割り込みのフックを書き換えて、SUB-CPU からの情報を出力するプログラムを作りました。


 プログラムは、これです。

keycheck.p6



 PC-6601 で実行した結果です(どの割り込みが発生かは調べていない)。
 PC-6001 では、多少結果が違うと思います(かなキー押下時には、割り込みが発生しない)。

PC6601_key.xls



 今の実装と違うところが何箇所かありますが、一番大きく違うのは、0を返すという事です。
 今の実装では0を返す状態の時は、割り込みを発生しないようになっていました。

 今回の問題はこれが原因っぽいんですが、ちょっと疑問が。


 それは、GRAPH + ↑、GRAPH + ↓ とも、値は0しか返って来ないということです。
 実機でSWORD(S-OS)を動かしてみましたが、ちゃんとGRAPH + ↑ と GRAPH + ↓ を区別できていました。

 GRAPH キー入力割り込みが発生した時に、その値が0だったらゲームキー調査をする、というプロセスを踏んでいるのかも知れません。



posted by えすび at 22:12| Comment(0) | P6解析:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

この広告は90日以上新しい記事の投稿がないブログに表示されております。