home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / SOURCE / VELGRAPH.SC0 < prev    next >
Encoding:
Text File  |  2001-01-23  |  3.9 KB  |  226 lines  |  [04] ASCII Text (0x0000)

  1. ; VELGRAPH.SRC
  2. ;
  3.          ORG $6000
  4. ;
  5.          JSR INITDHR
  6.          JSR START
  7.          JMP DONEDHR
  8. ;
  9. DISPMODE DFB $01
  10. INBYTE   DFB $00
  11. PHASE    DFB $00
  12. LASTSTAT DFB $00
  13. XMITSTS  DFB $00
  14. XMITBYT1 DFB $00
  15. XMITBYT2 DFB $00
  16. XMITBYT3 DFB $00
  17. DBYTES   DFB $00
  18. MIDISLOT DFB $20
  19. ;
  20. GETINST  EQU $00
  21. DATA1    EQU $01
  22. DATA2    EQU $02
  23. DATA3    EQU $03
  24. SYSX0    EQU $04
  25. DATA2B   EQU $05
  26. ZPTR     EQU $EE
  27. ;
  28. START    LDA   #$13
  29.          LDX   MIDISLOT
  30.          STA   $C088,X
  31.          LDA   #$11    
  32.          STA   $C088,X    
  33. WAITMIDI LDA   $C000
  34.          BMI   ADIOS
  35.          LDX   MIDISLOT
  36.          LDA   $C088,X       
  37.          AND   #$01       
  38.          BEQ   WAITMIDI
  39.          LDX   MIDISLOT    
  40.          LDA   $C089,X   
  41.          CMP   #$F0
  42.          BEQ   SKIPSYSX
  43.          BCS   WAITMIDI
  44. SYSXRET  STA   INBYTE 
  45.          JSR   PRCSBYTE   
  46.          LDA   $C000       
  47.          BPL   WAITMIDI
  48. ADIOS    LDA   $C010
  49.          RTS   
  50. ;
  51. SKIPSYSX LDX MIDISLOT
  52.          LDA $C088,X
  53.          AND #$01
  54.          BEQ SKIPSYSX
  55.          LDA $C089,X
  56.          BPL SKIPSYSX
  57.          BMI SYSXRET
  58. ;
  59. PRCSBYTE LDA PHASE
  60. PHINST   CMP #GETINST
  61.          BEQ PHINST0
  62.          JMP PHDATA3
  63. PHINST0  LDA INBYTE
  64.          BPL RUNNING
  65. ;
  66.          STA LASTSTAT
  67.          STA XMITSTS
  68.          CMP #$E0
  69.          BCS TWOBYTES
  70.          CMP #$C0
  71.          BCC TWOBYTES
  72. ;
  73.          LDA #1
  74.          STA DBYTES
  75.          LDA #DATA1
  76.          STA PHASE
  77.          RTS
  78. ;
  79. TWOBYTES LDA #2
  80.          STA DBYTES
  81.          LDA #DATA2
  82.          STA PHASE
  83.          RTS
  84. ;
  85. RUNNING  LDA LASTSTAT
  86.          STA XMITSTS
  87.          LDA INBYTE
  88.          STA XMITBYT1
  89.          LDA #$FF
  90.          STA XMITBYT2
  91.          LDA DBYTES
  92.          CMP #1
  93.          BEQ SENDMSG
  94.          LDA #DATA3
  95.          STA PHASE
  96.          RTS
  97. ;
  98. PHDATA3  CMP #DATA3
  99.          BNE PHDATA2
  100.          LDA INBYTE
  101.          STA XMITBYT2
  102.          LDA #$FF
  103.          STA XMITBYT3
  104.          JMP SENDMSG
  105. ;
  106. PHDATA2  CMP #DATA2
  107.          BNE PHDATA1
  108.          LDA INBYTE
  109.          STA XMITBYT1
  110.          LDA #DATA2B
  111.          STA PHASE
  112.          RTS
  113. ;
  114. PHDATA1  CMP #DATA1
  115.          BNE PHDATA2B
  116.          LDA INBYTE
  117.          STA XMITBYT1
  118.          LDA #$FF
  119.          STA XMITBYT2
  120.          JMP SENDMSG
  121. ;
  122. PHDATA2B CMP #DATA2B
  123.          BNE PHSYSX
  124.          LDA INBYTE
  125.          STA XMITBYT2
  126.          LDA #$FF
  127.          STA XMITBYT3
  128.          JMP SENDMSG
  129. ;
  130. PHSYSX   RTS
  131. ;
  132. SENDMSG  LDA XMITSTS
  133.          LDX XMITBYT1
  134.          LDY XMITBYT2
  135.          JSR MIDIGRPH
  136. SENDEXIT LDA #GETINST
  137.          STA PHASE
  138.          RTS
  139. ;
  140. ;-------------------------
  141. ; MIDIGRPH ROUTINE
  142. ; A=STATUS BYTE (9X OR 8X)
  143. ; X=NOTE 
  144. ; Y=VELOCITY
  145. ;--------------------------
  146. ;
  147. MIDIGRPH CMP #$80
  148.          BCC DRAWEXIT
  149.          CMP #$90
  150.          BCC DRAWNOFF
  151.          CMP #$A0
  152.          BCC DRAWNON
  153.          CMP #$E0
  154.          BCC DRAWEXIT
  155.          CMP #$F0
  156. DRAWEXIT RTS
  157. ;
  158. DRAWNOFF LDY #$00
  159. DRAWNON  AND #$0F
  160.          ASL A
  161.          STA DRAWCHNL
  162.          STX DRAWNOTE
  163.          STY DRAWVEL
  164.          LDA DRAWNOTE
  165.          CMP #24
  166.          BCC DRAWEXIT
  167.          CMP #104
  168.          BCS DRAWEXIT
  169. ;
  170.          LDA #128
  171.          SEC
  172.          SBC DRAWVEL
  173.          STA VELCMPR
  174. ;
  175.          LDA #$00
  176.          STA AUXFLAG
  177.          LDA DRAWNOTE
  178.          SEC
  179.          SBC #24
  180.          STA NOTECMPR
  181.          LSR A
  182.          STA HORIZPOS
  183.          BCC NOTAUX
  184.          LDA #$01
  185.          STA AUXFLAG
  186. NOTAUX   LDA #0
  187.          STA POKEBYTE
  188.          LDY #0
  189.          STY VERTPOS
  190. VERTLOOP LDY VERTPOS
  191.          JSR SETY        
  192.          CPY VELCMPR
  193.          BCC NOTYET
  194.          LDA #$7F
  195.          STA POKEBYTE
  196. NOTYET   LDA AUXFLAG 
  197.          BNE POKEAUX
  198.          STA $C055
  199.          BEQ POKEIT
  200. POKEAUX  LDA $C054 
  201. ;
  202. POKEIT   LDY HORIZPOS
  203.          LDA POKEBYTE
  204.          STA (ZPTR),Y
  205. ;
  206.          LDY VERTPOS
  207.          INY
  208.          STY VERTPOS
  209.          CPY #$80
  210.          BCC VERTLOOP
  211. ;
  212. DRWDONE  RTS
  213. ;
  214. DRAWCHNL DFB $00
  215. DRAWNOTE DFB $00
  216. DRAWVEL  DFB $00
  217. VELCMPR  DFB $00
  218. NOTECMPR DFB $00
  219. POKEBYTE DFB $00
  220. VERTPOS  DFB $00
  221. HORIZPOS DFB $00
  222. AUXFLAG  DFB $00
  223. ;
  224.          CHN VELGRAPH.SC1
  225.