おおまかな、流れ
- CPUが、SUB CPU に、コマンド6を送る
- SUB CPU は、JOYSTICK 入力されているかどうかを、調査する
- CPUは、その間何もせずに待っている
- SUB CPUは、CPU に割り込みをかける
- CPUは、割り込みルーチンで、データを受け取り、(FECAH)にデータを書く
- CPUのメインループが、データが来たのを検知して、ループから抜ける。
というのが、ざっとみたところですね。。
CPU → SUB CPU へのコマンド出力 Z0044: PUSH AF ;E8F F5 . LD A,08H ;E90 3E 08 送信許可申請 OUT (093H),A ;E92 D3 93 .. Z0320: IN A,(092H) ;E94 DB 92 .. AND 08H ;E96 E6 08 .. JR Z,0E94H ;E98 28 FA (. IN A,(092H) ;E9A DB 92 .. AND 080H ;E9C E6 80 .. JR Z,0E94H ;E9E 28 F4 (. LD A,09H ;EA0 3E 09 送信準備完了 OUT (093H),A ;EA2 D3 93 .. POP AF ;EA4 F1 . OUT (090H),A ;EA5 D3 90 SUB CPUへ出力 RET ;EA7 C9 .
最後の、out (090h),A が、本来のコマンド出力で、それ以前の処理は、SUB CPU側のREADYをみているのだと思われます。
CPU <- SUB CPU からのデータ受け取り Z0323: LD A,0CH ;E78 3E 0C 受信許可申請 OUT (093H),A ;E7A D3 93 .. Z0319: IN A,(092H) ;E7C DB 92 .. AND 08H ;E7E E6 08 .. JR Z,0E7CH ;E80 28 FA (. IN A,(092H) ;E82 DB 92 .. AND 020H ;E84 E6 20 . JR Z,0E7CH ;E86 28 F4 (. LD A,0DH ;E88 3E 0D 受信準備完了 OUT (093H),A ;E8A D3 93 .. IN A,(090H) ;E8C DB 90 .. RET ;E8E C9 .
最後のIN A,(090H) で、データを受け取っているようです。
このREADYのビットの意味も、全然分かってないけど。。(´д⊂)‥ハゥ
たしか、CPUと、SUB CPUは、8255 でつながっていたはず。。