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

  1. ;
  2. ;
  3. ; JOYCTRL - JOYSTICK MIDI CONTROLLERS WITH MIDI THRU
  4. ;
  5. ;
  6. XTOUT    EQU $C064
  7. YTOUT    EQU $C065
  8. PTRIG    EQU $C070
  9. ;
  10.          ORG $6000
  11. ;
  12.          JMP STARTPGM
  13. ;
  14. ; PUBLIC VARIABLES:
  15. ;
  16. CHANNEL  DFB $00   ;WHICH CHANNEL TO SEND THE MESSAGE ON (0-F)
  17. ;
  18. XUPDBYTE DFB $02   ;WHICH BYTE OF THE MESSAGE TO UPDATE (1 OR 2)
  19. XINVERT  DFB $00   ;WHETHER TO INVERT THE PADDLE VALUE (EX: 0->7F, 7F->0)
  20. XMSG0    DFB $E0   ;STATUS BYTE OF MESSAGE FOR X AXIS
  21. XMSG1    DFB $00   ;DATABYTE 1
  22. XMSG2    DFB $00   ;DATABYTE 2
  23. ;
  24. YUPDBYTE DFB $02
  25. YINVERT  DFB $01
  26. YMSG0    DFB $B0
  27. YMSG1    DFB $01   ;MODULATION
  28. YMSG2    DFB $00
  29. ;
  30. KEYDOWN  DFB $00
  31. PB0DOWN  DFB $00
  32. PB1DOWN  DFB $00
  33. DEBUG    DFB $00   ;PRINT MIDI DATA ON SCREEN
  34. ;
  35. ;PRIVATE VARIABLES
  36. ;
  37. JOYX     DFB $00
  38. JOYY     DFB $00
  39. JOYXNEW  DFB $00   ;USED IF JOYSTICK VALUE IS TO BE INVERTED
  40. JOYYNEW  DFB $00
  41. ASAVE    DFB $00
  42. XSAVE    DFB $00
  43. YSAVE    DFB $00
  44. ;
  45. STARTPGM LDA #$13
  46.          STA $C0A8
  47.          LDA #$11
  48.          STA $C0A8
  49.          LDA #$0
  50.          STA KEYDOWN
  51.          STA PB0DOWN
  52.          STA PB1DOWN
  53. ;
  54. LOOP     JSR JOY
  55.          TXA
  56.          ASL A
  57.          TAX
  58.          STX XSAVE
  59.          TYA
  60.          ASL A
  61.          TAY
  62.          STY YSAVE
  63.          LDX XSAVE
  64.          CPX JOYX
  65.          BEQ LOOP1
  66.          STX JOYX
  67.          STX JOYXNEW
  68.          JSR JOYXCHG
  69. LOOP1    LDY YSAVE
  70.          CPY JOYY
  71.          BEQ LOOP2
  72.          STY JOYY
  73.          STY JOYYNEW
  74.          JSR JOYYCHG
  75. LOOP2    LDA $C000
  76.          BPL CHKPB0
  77.          STA KEYDOWN
  78.          LDA $C010
  79.          RTS
  80. CHKPB0   LDA $C061
  81.          BPL CHKPB1
  82.          LDA #$01
  83.          STA PB0DOWN
  84.          RTS
  85. CHKPB1   LDA $C062
  86.          BPL LOOP
  87.          LDA #$01
  88.          STA PB1DOWN
  89.          RTS
  90. ;
  91. JOY      LDX #$00
  92.          LDY #$00
  93.          LDA #$80
  94.          SEC
  95.          BIT PTRIG
  96. JOY1     BIT XTOUT
  97.          BPL JOY2
  98.          INX
  99.          BNE JOY3
  100. JOY2     NOP
  101.          NOP
  102. JOY3     BIT YTOUT
  103.          BPL JOY4
  104.          INY
  105.          BNE JOY5
  106. JOY4     NOP
  107.          NOP
  108. JOY5     PHA
  109.          LDA $C0A8 ;CHECK MIDI
  110.          AND #$01
  111.          BEQ CONT1    
  112.          LDA $C0A9 ;MIDI THRU
  113.          CMP #$F8
  114.          BCS CONT2A
  115.          STA $C0A9
  116. CONT0    CLV
  117.          BVC CONT2
  118. CONT1    NOP
  119.          NOP
  120. CONT2A   NOP
  121.          NOP
  122.          NOP
  123.          NOP
  124. CONT2    PLA
  125.          SBC #$01
  126.          BCS JOY1
  127.          RTS
  128. ;
  129. JOYXCHG  LDA XMSG0
  130.          JSR XMIT
  131. ;
  132.          LDA XINVERT
  133.          BEQ CHKXBYT1
  134.          LDA #$7F
  135.          SEC
  136.          SBC JOYX
  137.          STA JOYXNEW
  138. ;
  139. CHKXBYT1 LDA XUPDBYTE
  140.          CMP #$01
  141.          BEQ XUPDBYT1
  142.          LDA XMSG1
  143.          JSR XMIT
  144.          JMP CHKXBYT2
  145. XUPDBYT1 LDA JOYXNEW
  146.          JSR XMIT
  147. ;
  148. CHKXBYT2 LDA XUPDBYTE
  149.          CMP #$02
  150.          BEQ XUPDBYT2
  151.          LDA XMSG2
  152.          JSR XMIT
  153.          JMP CHKXBYT3
  154. XUPDBYT2 LDA JOYXNEW
  155.          JSR XMIT
  156. CHKXBYT3 JSR CHECKMID
  157.          RTS
  158. ;
  159. ;
  160. JOYYCHG  LDA YMSG0
  161.          JSR XMIT
  162. ;
  163.          LDA YINVERT
  164.          BEQ CHKYBYT1
  165.          LDA #$7F
  166.          SEC
  167.          SBC JOYY
  168.          STA JOYYNEW
  169. ;
  170. CHKYBYT1 LDA YUPDBYTE
  171.          CMP #$01
  172.          BEQ YUPDBYT1
  173.          LDA YMSG1
  174.          JSR XMIT
  175.          JMP CHKYBYT2
  176. YUPDBYT1 LDA JOYYNEW
  177.          JSR XMIT
  178. ;
  179. CHKYBYT2 LDA YUPDBYTE
  180.          CMP #$02
  181.          BEQ YUPDBYT2
  182.          LDA YMSG2
  183.          JSR XMIT
  184.          JMP CHKYBYT3
  185. YUPDBYT2 LDA JOYYNEW
  186.          JSR XMIT
  187. CHKYBYT3 JSR CHECKMID
  188.          RTS
  189. ;
  190. XMIT     STA $C0A9
  191. XMIT2    LDA $C0A8
  192.          AND #$02
  193.          BEQ XMIT2
  194. XMITRTS  RTS
  195. ;
  196. CHECKMID LDA $C0A8 ;CHECK MIDI
  197.          AND #$01
  198.          BEQ CHECKRET    
  199.          LDA $C0A9 ;MIDI THRU
  200.          CMP #$F8
  201.          BCS CHECKRET
  202.          STA $C0A9
  203. WAITTDRE LDA $C0A8
  204.          AND #$02
  205.          BEQ WAITTDRE 
  206.          JMP CHECKMID
  207. CHECKRET RTS
  208. ;
  209.