home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-11 | 4.2 KB | 191 lines | [04] ASCII Text (0x0000) |
- ;
- ; JOYCTRL - JOYSTICK MIDI CONTROLLERS WITH MIDI THRU
- ; NOTE: USES 65C02 INSTRUCTIONS!!!
- ;
- XTOUT EQU $C064
- YTOUT EQU $C065
- PTRIG EQU $C070
- ;
- QHEAD EQU $06
- QTAIL EQU $08
- ;
- ORG $6000
- ;
- JMP STARTPGM
- ;
- ; PUBLIC VARIABLES:
- ;
- XUPDBYTE DFB $02 ;WHICH BYTE OF THE MESSAGE TO UPDATE (1 OR 2)
- XMSG0 DFB $E0 ;STATUS BYTE OF MESSAGE FOR X AXIS
- XMSG1 DFB $00 ;DATABYTE 1
- XMSG2 DFB $00 ;DATABYTE 2
- ;
- YUPDBYTE DFB $02
- YMSG0 DFB $B0
- YMSG1 DFB $01 ;MODULATION
- YMSG2 DFB $00
- ;
- KEYDOWN DFB $00
- PB0DOWN DFB $00
- PB1DOWN DFB $00
- ;
- BUFFER DFB $00,$20
- ;
- ;PRIVATE VARIABLES
- ;
- ANOMSG0 DFB $B0
- ANOMSG1 DFB 123
- ANOMSG2 DFB $00
- ;
- JOYX DFB $00
- JOYY DFB $00
- JOYXPREV DFB $00
- JOYYPREV DFB $00
- JOYXPRV2 DFB $00
- JOYYPRV2 DFB $00
- ;
- STARTPGM LDA #$13 ;INITIALIZE MIDI INTERFACE
- STA $C0A8
- LDA #$11
- STA $C0A8
- LDA #$0 ;INITIALIZE VARIABLES
- STA KEYDOWN
- STA PB0DOWN
- STA PB1DOWN
- LDA BUFFER
- STA QHEAD
- STA QTAIL
- LDA BUFFER+1
- STA QHEAD+1
- STA QTAIL+1
- MAINLOOP LDX #$00
- LDY #$00
- LDA #$80
- BIT PTRIG
- JOY1 BIT XTOUT
- BPL JOY2
- INX
- BNE JOY3
- JOY2 NOP
- NOP
- JOY3 BIT YTOUT
- BPL JOY4
- INY
- BNE JOY5
- JOY4 NOP
- NOP
- JOY5 SEC
- SBC #$01
- BCS JOY1
- LDA XTABLE,X
- STA JOYX
- LDA YTABLE,Y
- STA JOYY
- ;
- CHKPDL0C LDA JOYX
- CMP JOYXPREV ;DID PADDLE X CHANGE
- BEQ CHKM2J
- CMP JOYXPRV2 ;CHK PREVIOUS 2 VALUES OF PDLX
- BEQ CHKM2J
- BNE STPRVX
- CHKM2J JMP CHKPDL1C
- STPRVX LDY JOYXPREV
- STY JOYXPRV2
- STA JOYXPREV
- ;
- LDY XUPDBYTE ;STORE PADDLE VALUE IN MESSAGE
- STA XMSG0,Y
- ;
- SEND1 LDA XMSG0
- JSR XMITBYTE
- LDA XMSG1
- JSR XMITBYTE
- LDA XMSG2
- JSR XMITBYTE
- ;
- CHKPDL1C LDA JOYY
- CMP JOYYPREV ;DID PADDLE Y CHANGE
- BEQ JMPBACKJ
- CMP JOYYPRV2 ;CHK PREVIOUS 2 VALUES OF PDLY
- BEQ JMPBACKJ
- BNE STPRVY
- JMPBACKJ JMP JMPBACK
- STPRVY LDY JOYYPREV
- STY JOYYPRV2
- STA JOYYPREV
- ;
- LDY YUPDBYTE ;STORE PADDLE VALUE IN MESSAGE
- STA YMSG0,Y
- ;
- LDA YMSG0
- JSR XMITBYTE
- LDA YMSG1
- JSR XMITBYTE
- LDA YMSG2
- JSR XMITBYTE
- ;
- JMPBACK LDA $C061
- BMI PB0
- LDA $C062
- BMI PB1
- LDA $C000
- BMI KEY
- JMP MAINLOOP
- ;
- PB0 LDA #$01
- STA PB0DOWN
- JSR ALLOFF
- WAITUP0 LDA $C061
- BMI WAITUP0
- JMP MAINLOOP
- ;
- PB1 LDA #$01
- STA PB1DOWN
- JSR ALLOFF
- WAITUP1 LDA $C062
- BMI WAITUP1
- JMP MAINLOOP
- ;
- KEY STA KEYDOWN
- LDA $C010
- RTS
- ;
- ALLOFF LDA ANOMSG0
- STA $C0A9
- WA1 LDA $C0A8
- AND #$02
- BEQ WA1
- LDA ANOMSG1
- STA $C0A9
- WA2 LDA $C0A8
- AND #$02
- BEQ WA2
- LDA ANOMSG2
- STA $C0A9
- WA3 LDA $C0A8
- AND #$02
- BEQ WA3
- RTS
- ;
- XMITBYTE STA $C0A9
- WTD1A LDA $C0A8
- AND #$02
- BEQ WTD1A
- RTS
- ;
- XTABLE DFB 10,10,12,12,14,14,16,16,18,18,20,20
- DFB 22,22,24,24,26,26,28,28,30,30,32,32,34,34,36,36,38,38,40,40
- DFB 42,42,44,44,46,46,48,48,50,50,52,52,54,54,56,56,58,58,60,60
- DFB 62,62,64,64,68,68,70,70,72,72,74,74,76,76,80,80,82,82,84,84
- DFB 86,86,88,88,90,90,92,92,94,94,96,96,98,98,100,100,102,102,104,104
- DFB 106,106,108,108,110,110,112,112,114,114,116,116,118,118,120,120
- DFB 122,122,124,124,126,126,126,126,126,126,126,126,126,126,126,126
- YTABLE DFB 126,126,124,124,122,122
- DFB 120,120,118,118,116,116,114,114,112,112,110,110,108,108,106,106
- DFB 104,104,102,102,100,100,98,98,96,96,94,94,92,90,90,88,88,86,86
- DFB 84,84,82,82,80,80,78,78,76,76,74,74,72,72,70,70,68,68,64,64,62,62
- DFB 60,60,58,58,56,56,54,54,52,52,50,50,48,48,46,46,44,44,42,42,40,40
- DFB 38,38,36,36,34,34,32,32,30,30,28,28,26,26,24,24,22,22,20,20
- DFB 18,18,16,16,14,14,12,12,10,10,8,8,6,6,4,4,2,2,0,0
- ;
-