; ; ; JOYCTRL - JOYSTICK MIDI CONTROLLERS WITH MIDI THRU ; ; MAINLOOP JSR CHKMIDI CHKQUEUE LDA QTAIL CMP QHEAD BEQ CHKPDL0 LDY #$00 QDATA LDA (QTAIL),Y STA $C0A9 ;SEND MIDI MSGS FROM QUEUE WAITTDRE LDA $C0A8 AND #$02 BEQ WAITTDRE INC QTAIL LDA QTAIL CMP QHEAD BNE QDATA JSR CHKMIDI ; CHKPDL0 BIT PTRIG LDA #$00 STA $C0A0 PDLLOOP LDA PDL0DONE BNE CHKPDL1 LDA XTOUT BMI CHKPDL1 LDA $C0A4 STA PDL0HI LDA $C0A5 STA PDL0LO LDA #$01 STA PDL0DONE ; CHKPDL1 JSR CHKMIDI LDA PDL1DONE BNE CHKPDLS LDA YTOUT BMI PDLLOOP LDA $C0A4 STA PDL1HI LDA $C0A5 STA PDL1LO LDA #$01 STA PDL1DONE ; CHKPDLS LDA PDL0DONE BEQ CHKKBD LDA PDL1DONE BEQ CHKKBD JMP PRCSPDLS ; CHKKBD LDA $C000 BMI PRCSKBD JMP MAINLOOP PRCSKBD CLI RTS ; PRCSPDLS LDA #$01 STA $C0A0 ;PLUG TIMER JSR CHKMIDI ; LDA PDL0LO LSR A LSR A LSR A LSR A STA JOYX LDA PDL0HI ASL A ASL A ASL A ASL A ORA JOYX TAX LDA XTABLE,X STA JOYX ; JSR CHKMIDI ; LDA PDL1LO LSR A LSR A LSR A LSR A STA JOYY LDA PDL1HI ASL A ASL A ASL A ASL A ORA JOYY TAX LDA YTABLE,X STA JOYY ; JSR CHKMIDI ; CHKPDL0C LDA JOYX CMP JOYXPREV ;DID PADDLE X CHANGE BEQ CHKPDL1C STA JOYXPREV ; LDY XUPDBYTE ;STORE PADDLE VALUE IN MESSAGE STA XMSG0,Y ; LDY #$00 LDA XMSG0 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD LDA XMSG1 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD LDA XMSG2 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD ; JSR CHKMIDI ; CHKPDL1C LDA JOYY CMP JOYYPREV ;DID PADDLE Y CHANGE BEQ PDLTRIG STA JOYYPREV ; LDY YUPDBYTE ;STORE PADDLE VALUE IN MESSAGE STA YMSG0,Y ; LDY #$00 LDA YMSG0 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD LDA YMSG1 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD LDA YMSG2 STA (QHEAD),Y ;STORE MIDI MESSAGE INC QHEAD ; PDLTRIG LDA #$00 STA PDL0DONE STA PDL1DONE LDA #$00 STA $C0A0 ;START TIMER BIT PTRIG JMP MAINLOOP ; CHN TESTCTRL.SC2