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

  1. ;
  2. ; JOYCTRL - JOYSTICK MIDI CONTROLLERS WITH MIDI THRU
  3. ;                  NOTE: USES 65C02 INSTRUCTIONS!!!
  4. ;
  5. XTOUT    EQU $C064
  6. YTOUT    EQU $C065
  7. PTRIG    EQU $C070
  8. ;
  9. QHEAD    EQU $06
  10. QTAIL    EQU $08
  11. ;
  12.          ORG $6000
  13. ;
  14.          JMP STARTPGM
  15. ;
  16. ; PUBLIC VARIABLES:
  17. ;
  18. XUPDBYTE DFB $02   ;WHICH BYTE OF THE MESSAGE TO UPDATE (1 OR 2)
  19. XMSG0    DFB $E0   ;STATUS BYTE OF MESSAGE FOR X AXIS
  20. XMSG1    DFB $00   ;DATABYTE 1
  21. XMSG2    DFB $00   ;DATABYTE 2
  22. ;
  23. YUPDBYTE DFB $02
  24. YMSG0    DFB $B0
  25. YMSG1    DFB $01   ;MODULATION
  26. YMSG2    DFB $00
  27. ;
  28. KEYDOWN  DFB $00
  29. PB0DOWN  DFB $00
  30. PB1DOWN  DFB $00
  31. ;
  32. ;PRIVATE VARIABLES
  33. ;
  34. ANOMSG0  DFB $B0
  35. ANOMSG1  DFB 123
  36. ANOMSG2  DFB $00
  37. ;
  38. JOYX     DFB $00
  39. JOYY     DFB $00
  40. JOYXPREV DFB $00
  41. JOYYPREV DFB $00
  42. JOYXPRV2 DFB $00
  43. JOYYPRV2 DFB $00
  44. ;
  45. STARTPGM LDA #$13            ;INITIALIZE MIDI INTERFACE
  46.          STA $C0A8
  47.          LDA #$11
  48.          STA $C0A8
  49.          LDA #$0             ;INITIALIZE VARIABLES
  50.          STA KEYDOWN
  51.          STA PB0DOWN
  52.          STA PB1DOWN
  53. ;
  54. MAINLOOP LDA $C0A8           ;CHK MIDI
  55.          AND #$01            ;DID WE GET MIDI DATA
  56.          BEQ JOY0            ;NO - CONTINUE PROCESSING
  57.          LDA $C0A9           ;YES- GET MIDI BYTE
  58.          CMP #$F8
  59.          BCS MAINLOOP        ;DON'T STORE REALTIME MSGS
  60.          STA $C0A9
  61.          DFB $80             ;BRA
  62.          DFB $ED             ;CHKMIDI
  63. ;
  64. JOY0     LDX #$00
  65.          LDY #$00
  66.          LDA #$80
  67.          SEC
  68.          BIT PTRIG
  69. JOY1     BIT XTOUT
  70.          BPL JOY2
  71.          INX
  72.          BNE JOY3
  73. JOY2     NOP
  74.          NOP
  75. JOY3     BIT YTOUT
  76.          BPL JOY4
  77.          INY
  78.          BNE JOY5
  79. JOY4     NOP
  80.          NOP
  81. JOY5     PHA
  82.          LDA $C0A8 ;CHECK MIDI
  83.          AND #$01
  84.          BEQ CONT1    
  85.          LDA $C0A9 ;MIDI THRU
  86.          CMP #$F8
  87.          BCS CONT2A
  88.          STA $C0A9
  89. CONT0    CLV
  90.          BVC CONT2
  91. CONT1    NOP
  92.          NOP
  93. CONT2A   NOP
  94.          NOP
  95.          NOP
  96.          NOP
  97. CONT2    PLA
  98.          SBC #$01
  99.          BCS JOY1
  100.          LDA XTABLE,X
  101.          STA JOYX
  102.          LDA YTABLE,Y
  103.          STA JOYY
  104. ;
  105. CHKM1    LDA $C0A8           ;CHKMIDI
  106.          AND #$01            ;DID WE GET MIDI DATA
  107.          BEQ CHKPDL0C        ;NO - CONTINUE PROCESSING
  108.          LDA $C0A9           ;YES- GET MIDI BYTE
  109.          CMP #$F8
  110.          BCS CHKM1         ;DON'T STORE REALTIME MSGS
  111.          STA $C0A9
  112.          DFB $80             ;BRA
  113.          DFB $ED             ;CHKMIDI
  114. ;
  115. CHKPDL0C LDA JOYX
  116.          CMP JOYXPREV        ;DID PADDLE X CHANGE
  117.          BEQ CHKM2
  118.          CMP JOYXPRV2        ;CHK PREVIOUS 2 VALUES OF PDLX
  119.          BEQ CHKM2
  120.          LDY JOYXPREV
  121.          STY JOYXPRV2
  122.          STA JOYXPREV
  123. ;
  124.          LDY XUPDBYTE        ;STORE PADDLE VALUE IN MESSAGE
  125.          STA XMSG0,Y
  126. ;
  127. CHKM1A   LDA $C0A8           ;CHKMIDI
  128.          AND #$01            ;DID WE GET MIDI DATA
  129.          BEQ SEND1           ;NO - CONTINUE PROCESSING
  130.          LDA $C0A9           ;YES- GET MIDI BYTE
  131.          CMP #$F8
  132.          BCS CHKM1A         ;DON'T STORE REALTIME MSGS
  133.          STA $C0A9
  134.          DFB $80             ;BRA
  135.          DFB $ED             ;CHKMIDI
  136. ;
  137. SEND1    LDA XMSG0
  138.          STA $C0A9
  139. WT1      LDA $C0A8
  140.          AND #$02
  141.          BEQ WT1
  142.          LDA XMSG1
  143.          STA $C0A9
  144. WT2      LDA $C0A8
  145.          AND #$02
  146.          BEQ WT2
  147.          LDA XMSG2
  148.          STA $C0A9
  149. WT3      LDA $C0A8
  150.          AND #$02
  151.          BEQ WT3
  152. ;
  153. CHKM2    LDA $C0A8           ;CHKMIDI
  154.          AND #$01            ;DID WE GET MIDI DATA
  155.          BEQ CHKPDL1C        ;NO - CONTINUE PROCESSING
  156.          LDA $C0A9           ;YES- GET MIDI BYTE
  157.          CMP #$F8
  158.          BCS CHKM2         ;DON'T STORE REALTIME MSGS
  159.          STA $C0A9
  160.          DFB $80             ;BRA
  161.          DFB $ED             ;CHKMIDI
  162. ;
  163. CHKPDL1C LDA JOYY
  164.          CMP JOYYPREV        ;DID PADDLE Y CHANGE
  165.          BEQ JMPBACK
  166.          CMP JOYYPRV2        ;CHK PREVIOUS 2 VALUES OF PDLY
  167.          BEQ JMPBACK
  168.          LDY JOYYPREV
  169.          STY JOYYPRV2
  170.          STA JOYYPREV
  171. ;
  172.          LDY YUPDBYTE        ;STORE PADDLE VALUE IN MESSAGE
  173.          STA YMSG0,Y
  174. ;
  175.          LDA YMSG0
  176.          STA $C0A9
  177. WAIT1    LDA $C0A8
  178.          AND #$02
  179.          BEQ WAIT1
  180.          LDA YMSG1
  181.          STA $C0A9
  182. WAIT2    LDA $C0A8
  183.          AND #$02
  184.          BEQ WAIT2
  185.          LDA YMSG2
  186.          STA $C0A9
  187. WAIT3    LDA $C0A8
  188.          AND #$02
  189.          BEQ WAIT3
  190. ;
  191. JMPBACK  LDA $C061
  192.          BMI PB0
  193.          LDA $C062
  194.          BMI PB1
  195.          LDA $C000
  196.          BMI KEY
  197.          JMP MAINLOOP
  198. ;
  199. PB0      LDA #$01
  200.          STA PB0DOWN
  201.          JSR ALLOFF
  202. WAITUP0  LDA $C061
  203.          BMI WAITUP0
  204.          JMP MAINLOOP
  205. ;
  206. PB1      LDA #$01
  207.          STA PB1DOWN
  208.          JSR ALLOFF
  209. WAITUP1  LDA $C062
  210.          BMI WAITUP1
  211.          JMP MAINLOOP
  212. ;
  213. KEY      STA KEYDOWN
  214.          LDA $C010
  215.          RTS
  216. ;
  217. ALLOFF   LDA ANOMSG0
  218.          STA $C0A9
  219. WA1      LDA $C0A8
  220.          AND #$02
  221.          BEQ WA1
  222.          LDA ANOMSG1
  223.          STA $C0A9
  224. WA2      LDA $C0A8
  225.          AND #$02
  226.          BEQ WA2
  227.          LDA ANOMSG2
  228.          STA $C0A9
  229. WA3      LDA $C0A8
  230.          AND #$02
  231.          BEQ WA3
  232.          RTS
  233. ;
  234. XTABLE   DFB 0,0,4,4,8,8,12,12,16,16,20,20,24,24,28,28
  235.          DFB 32,32,36,36,40,40,44,44,48,48,52,52,56,56,60,60
  236.          DFB 64,64,68,68,72,72,76,76,80,80,84,84,88,88,92,92
  237.          DFB 96,96,100,100,104,104,108,108,112,112,116,116,120
  238.          DFB 120,124,124,124,124,124,124,124,124,124,124
  239. YTABLE   DFB 124,124,120,120,116,116,112,112,108,108,104,104,100
  240.          DFB 100,96,96,92,92,88,88,84,84,80,80,76,76,72,72,68,68,64
  241.          DFB 64,60,60,56,56,52,52,48,48,44,44,40,40,36,36,32,32
  242.          DFB 28,28,24,24,20,20,16,16,12,12,8,8,4,4,0,0,0,0,0,0,0,0,0
  243. ;
  244.