home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-11 | 3.1 KB | 160 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
- JMP MAINLOOP
- ;
- CHKMIDI LDA $C0A8 ;CHK MIDI
- AND #$01 ;DID WE GET MIDI DATA
- BEQ WOUT3 ;NO - CONTINUE PROCESSING
- LDA $C0A9 ;YES- GET MIDI BYTE
- CMP #$F8
- BCS CHKMIDI ;DON'T STORE REALTIME MSGS
- PHA
- WTD0 LDA $C0A8
- AND #$02
- BEQ WTD0
- PLA
- STA $C0A9
- JMP CHKMIDI
- WOUT3 RTS
- ;
- ; LDA $C0A8
- ; AND #$01
- ; BEQ WTD1
- ; LDA $C0A9
- ; CMP #$F8
- ; BCS WTD1
- ; DFB $92
- ; DFB QHEAD
- ; INC QHEAD
- ; JMP WTD1
- ;WOUT1 LDA QTAIL
- ; CMP QHEAD
- ; BEQ WOUT2
- ; DFB $B2
- ; DFB QTAIL
- ; STA $C0A9
- ; INC QTAIL
- ; JMP WTD1
- ;WOUT2 JMP CHKMIDI
- ;WOUT3 RTS
- ;
- MAINLOOP JSR CHKMIDI
- JOY0 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 PHA
- ;
- CHKMID1 LDA $C0A8 ;CHK MIDI
- AND #$01 ;DID WE GET MIDI DATA
- BEQ WOUT3J ;NO - CONTINUE PROCESSING
- LDA $C0A9 ;YES- GET MIDI BYTE
- CMP #$F8
- BCS CHKMID1 ;DON'T STORE REALTIME MSGS
- PHA
- WTD1J LDA $C0A8
- AND #$02
- BEQ WTD1J
- PLA
- STA $C0A9
- JMP CHKMID1
- WOUT3J PLA
- ;
- SEC
- SBC #$01
- BCS JOY1
- LDA XTABLE,X
- STA JOYX
- LDA YTABLE,Y
- STA JOYY
- ;
- JSR CHKMIDI
- ;
- 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 CHKM2
- STPRVX LDY JOYXPREV
- STY JOYXPRV2
- STA JOYXPREV
- ;
- LDY XUPDBYTE ;STORE PADDLE VALUE IN MESSAGE
- STA XMSG0,Y
- ;
- CHKM1A JSR CHKMIDI
- ;
- CHN JOYTEST.SC1
-