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だったらゲームキー調査をする、というプロセスを踏んでいるのかも知れません。
2012年06月16日
この記事へのコメント
コメントを書く

