home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-06 | 3.6 KB | 209 lines | [04] ASCII Text (0x0000) |
- ;
- ;
- ; JOYCTRL - JOYSTICK MIDI CONTROLLERS WITH MIDI THRU
- ;
- ;
- XTOUT EQU $C064
- YTOUT EQU $C065
- PTRIG EQU $C070
- ;
- ORG $6000
- ;
- JMP STARTPGM
- ;
- ; PUBLIC VARIABLES:
- ;
- CHANNEL DFB $00 ;WHICH CHANNEL TO SEND THE MESSAGE ON (0-F)
- ;
- XUPDBYTE DFB $02 ;WHICH BYTE OF THE MESSAGE TO UPDATE (1 OR 2)
- XINVERT DFB $00 ;WHETHER TO INVERT THE PADDLE VALUE (EX: 0->7F, 7F->0)
- XMSG0 DFB $E0 ;STATUS BYTE OF MESSAGE FOR X AXIS
- XMSG1 DFB $00 ;DATABYTE 1
- XMSG2 DFB $00 ;DATABYTE 2
- ;
- YUPDBYTE DFB $02
- YINVERT DFB $01
- YMSG0 DFB $B0
- YMSG1 DFB $01 ;MODULATION
- YMSG2 DFB $00
- ;
- KEYDOWN DFB $00
- PB0DOWN DFB $00
- PB1DOWN DFB $00
- DEBUG DFB $00 ;PRINT MIDI DATA ON SCREEN
- ;
- ;PRIVATE VARIABLES
- ;
- JOYX DFB $00
- JOYY DFB $00
- JOYXNEW DFB $00 ;USED IF JOYSTICK VALUE IS TO BE INVERTED
- JOYYNEW DFB $00
- ASAVE DFB $00
- XSAVE DFB $00
- YSAVE DFB $00
- ;
- STARTPGM LDA #$13
- STA $C0A8
- LDA #$11
- STA $C0A8
- LDA #$0
- STA KEYDOWN
- STA PB0DOWN
- STA PB1DOWN
- ;
- LOOP JSR JOY
- TXA
- ASL A
- TAX
- STX XSAVE
- TYA
- ASL A
- TAY
- STY YSAVE
- LDX XSAVE
- CPX JOYX
- BEQ LOOP1
- STX JOYX
- STX JOYXNEW
- JSR JOYXCHG
- LOOP1 LDY YSAVE
- CPY JOYY
- BEQ LOOP2
- STY JOYY
- STY JOYYNEW
- JSR JOYYCHG
- LOOP2 LDA $C000
- BPL CHKPB0
- STA KEYDOWN
- LDA $C010
- RTS
- CHKPB0 LDA $C061
- BPL CHKPB1
- LDA #$01
- STA PB0DOWN
- RTS
- CHKPB1 LDA $C062
- BPL LOOP
- LDA #$01
- STA PB1DOWN
- RTS
- ;
- JOY LDX #$00
- LDY #$00
- LDA #$80
- SEC
- 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
- LDA $C0A8 ;CHECK MIDI
- AND #$01
- BEQ CONT1
- LDA $C0A9 ;MIDI THRU
- CMP #$F8
- BCS CONT2A
- STA $C0A9
- CONT0 CLV
- BVC CONT2
- CONT1 NOP
- NOP
- CONT2A NOP
- NOP
- NOP
- NOP
- CONT2 PLA
- SBC #$01
- BCS JOY1
- RTS
- ;
- JOYXCHG LDA XMSG0
- JSR XMIT
- ;
- LDA XINVERT
- BEQ CHKXBYT1
- LDA #$7F
- SEC
- SBC JOYX
- STA JOYXNEW
- ;
- CHKXBYT1 LDA XUPDBYTE
- CMP #$01
- BEQ XUPDBYT1
- LDA XMSG1
- JSR XMIT
- JMP CHKXBYT2
- XUPDBYT1 LDA JOYXNEW
- JSR XMIT
- ;
- CHKXBYT2 LDA XUPDBYTE
- CMP #$02
- BEQ XUPDBYT2
- LDA XMSG2
- JSR XMIT
- JMP CHKXBYT3
- XUPDBYT2 LDA JOYXNEW
- JSR XMIT
- CHKXBYT3 JSR CHECKMID
- RTS
- ;
- ;
- JOYYCHG LDA YMSG0
- JSR XMIT
- ;
- LDA YINVERT
- BEQ CHKYBYT1
- LDA #$7F
- SEC
- SBC JOYY
- STA JOYYNEW
- ;
- CHKYBYT1 LDA YUPDBYTE
- CMP #$01
- BEQ YUPDBYT1
- LDA YMSG1
- JSR XMIT
- JMP CHKYBYT2
- YUPDBYT1 LDA JOYYNEW
- JSR XMIT
- ;
- CHKYBYT2 LDA YUPDBYTE
- CMP #$02
- BEQ YUPDBYT2
- LDA YMSG2
- JSR XMIT
- JMP CHKYBYT3
- YUPDBYT2 LDA JOYYNEW
- JSR XMIT
- CHKYBYT3 JSR CHECKMID
- RTS
- ;
- XMIT STA $C0A9
- XMIT2 LDA $C0A8
- AND #$02
- BEQ XMIT2
- XMITRTS RTS
- ;
- CHECKMID LDA $C0A8 ;CHECK MIDI
- AND #$01
- BEQ CHECKRET
- LDA $C0A9 ;MIDI THRU
- CMP #$F8
- BCS CHECKRET
- STA $C0A9
- WAITTDRE LDA $C0A8
- AND #$02
- BEQ WAITTDRE
- JMP CHECKMID
- CHECKRET RTS
- ;
-