; JOYCTL - JOYSTICK MIDI CONTROLLER ; ; PHASE ALGORITHM ; PHASE0 JMP PHASE0A ;3 PHASE0A NOP ;2 LDA #$00 ;2 STA JOYX ;3 STA JOYY ;3 LDA PTRIG ;4 LDA #2 ;2 STA PHASE ;3 JMP CHKMIDI ;3 ;25 ;------------------------------------------- PHASE4 NOP ;2 NOP ;2 NOP ;2 NOP ;2 LDA PDL1 ;4 BPL P1D ;2/3 INC JOYY ;5 JMP PHASE4A ;3 PHASE4A JMP CHKMIDI ;3 ;25 ; P1D NOP ;2 LDA #8 ;2 STA PHASE ;3 JMP CHKMIDI ;3 ;25 ;------------------------------------------- PHASE6 NOP ;2 NOP ;2 NOP ;2 NOP ;2 LDA PDL0 ;4 BPL P0D ;2/3 INC JOYX ;5 JMP PHASE6A ;3 PHASE6A JMP CHKMIDI ;3 ;25 ; P0D NOP ;2 LDA #8 ;2 STA PHASE ;3 JMP CHKMIDI ;3 ;25 ;------------------------------------------- PHASE8 LDA JOYX CMP PREVX BEQ GOTO10 CMP PREV2X BEQ GOTO10 PHA LDA PREVX STA PREV2X PLA STA PREVX ; ;X CHANGED. PUT MIDI MESSAGE ON QUEUE ASL A ;MULTIPLY BY 2 TO GET RANGE OF 0-110 CLC ADC #10 ;ADD 10 TO GET RANGE OF 10-120 STA TEMP LDX XINVERT ;IF INVERTING, SUBTRACT IT FROM 130 BEQ NOXINV LDA #130 SEC SBC TEMP NOXINV LDY XBYTE STA XMSG0,Y ;STICK INTO MIDI MESSAGE LDA XMSG0 ;;; STA (QHEAD) ; *65C02* DFB $92 DFB QHEAD INC QHEAD LDA XMSG1 ;;; STA (QHEAD) ; *65C02* DFB $92 DFB QHEAD INC QHEAD LDA XMSG2 ;;; STA (QHEAD) ; *65C02* DFB $92 DFB QHEAD INC QHEAD ; GOTO10 LDA #10 STA PHASE JMP CHKMIDI ; CHN JOYCTL.SC3