home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Set of Apple II Hard Drive Images
/
eric.hdv
/
SOURCE
/
JOYCTRL.SRC.txt
< prev
next >
Wrap
Text File
|
2020-08-13
|
4KB
|
209 lines
;
;
; 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
;