1つ前のエントリからの続きです。
1つ前のルーチンは、サブルーチンでした。
SUB CPUに、コマンド6を送らないと発動しないらしい。
大まかな流れは下記の通りです。
- SUB CPUからのデータがなくなるまで、データを読み捨てる
- SUB CPUにコマンド6を送る(ゲーム割り込み申請)
- 1つ前のエントリのルーチンを呼び出して、SUB CPUからデータ受信
- CODE 16H (ゲーム割り込み)がくるまで、何度もデータ受信
ゲーム割り込みって、なんだっけ。。(^^;;
↓←→↑SPACE STOP などだったかな。。
ちなみに、iP6+ で、SUB CPUに、コマンド6を送ると、現状では、STICK関係の割り込みがかかるようになっているらしい。。
でも、割り込み禁止中だから、これは発動しないよね。。(汗)
if (Value==0x06) /* strig,stick */ { StrigIntFlag = INTFLAG_REQ; return; } // STRIG Interrupt REQUEST
; ---------------------------------------------------------- ; キーチェック、joystick チェック ; ---------------------------------------------------------- Z0011: CALL Z0737 ;3582 CD F1 35 ヘ.5 joystick チェック OR A ;3585 B7 キ RET NZ ;3586 C0 タ ;--------- Sub CPU からのデータがなくなるまで データ受信して、読み捨てる ーーーー Z0740: IN A,(092H) ;3587 DB 92 ロ. 8255 にデータ来なくなるまでループ AND 020H ;3589 E6 20 . JR Z,Z0738 ;358B 28 05 (. CALL Z0739 ;358D CD B3 35 ヘウ5 SUB CPU からデータ受信 JR Z0740 ;3590 18 F5 .. Z0738: LD A,06H ;3592 3E 06 >. CALL Z0741 ;3594 CD 2E 36 ヘ.6 SUB CPU にコマンド6送る Z0742: CALL Z0739 ;3597 CD B3 35 ヘウ5 SUB CPU からデータ受信 LD A,B ;359A 78 x CP 016H ;359B FE 16 .. code=16H (ゲームキー割り込み)くるまでループ JR NZ,Z0742 ;359D 20 F8 . LD A,C ;359F 79 y AND 0BCH ;35A0 E6 BC .シ JP NZ,Z0743 ;35A2 C2 D8 35 ツリ5 LD A,(Z0744) ;35A5 3A 12 37 :.7 キーコードを取得 LD B,A ;35A8 47 G XOR A ;35A9 AF ッワークエリアを、0クリア LD (Z0744),A ;35AA 32 12 37 2.7 LD A,B ;35AD 78 x キーコードをAに入れて返却 RET ;35AE C9 ノ CALL Z0739 ;35AF CD B3 35 ヘウ5 SUB CPU からデータ受信 RET ;35B2 C9 ノ