home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / SOURCE / VELGRAPH.SRC < prev    next >
Encoding:
Text File  |  2001-01-23  |  7.4 KB  |  344 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 #24
  178.          SEC
  179.          SBC DRAWNOTE
  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 $C054
  199.          BEQ POKEIT
  200. POKEAUX  LDA $C055 
  201. ;
  202. POKEIT   LDY HORIZPOS
  203.          LDA POKEBYTE
  204.          STA (ZPTR),Y
  205. ;
  206.          LDY VERTPOS
  207.          INY
  208.          BCS DRWDONE
  209.          STY VERTPOS
  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. ;
  225. ; DOUBLE HIRES ROUTINES - DRAW BOARD FOR DANCING NOTES
  226. ;
  227. INITDHR  STA $C050 ;TEXT OFF
  228.          STA $C057 ;HI RES ON
  229.          STA $C052 ;FULL SCREEN
  230.          STA $C00D ;80 COLUMNS ON
  231.          STA $C05E ;ANNUNCIATOR 3 ON
  232.          STA $C001 ;80 STORE ON - ALLOWS PAGE2 TO SWITCH MAIN/AUX
  233.          STA $C055 ;ACCESS AUX MEMORY
  234.          JSR CLEARSCR
  235.          STA $C054 ;ACCESS MAIN MEMORY
  236.          JSR CLEARSCR
  237.          JSR DRAWGRID
  238.          RTS
  239. ;
  240. DONEDHR  STA $C051 ;TEXT ON
  241.          STA $C056 ;HIRES OFF
  242.          STA $C00C ;80COL OFF
  243.          STA $C054 ;PAGE 1
  244.          STA $C05E ;TURN OFF AN3
  245.          RTS
  246. ;
  247. CLEARSCR LDA #$20
  248.          STA ZPTR+1
  249.          LDA #$00
  250.          STA ZPTR
  251. CLEARSC1 LDA #$00
  252.          LDY #$00
  253. CLEARSC2 STA (ZPTR),Y
  254.          INY
  255.          BNE CLEARSC2
  256.          INC ZPTR+1
  257.          LDA ZPTR+1
  258.          CMP #$40
  259.          BCC CLEARSC1
  260.          RTS
  261. ;
  262. DRAWGRID LDY #$00
  263.          JSR HORIZLN
  264.          LDY #177
  265.          JSR HORIZLN
  266.          RTS
  267. ;
  268. ;
  269. ; HORIZLN - DRAWS HORIZ LINE ACROSS SCREEN. SET Y=VERTICAL COORDINATE
  270. ;
  271. HORIZLN  JSR SETY
  272.          STA $C055
  273.          JSR HORIZLN1
  274.          STA $C054
  275.          JSR HORIZLN1
  276.          RTS
  277. HORIZLN1 LDA #$7F
  278.          LDY #39
  279. HORIZLN2 STA (ZPTR),Y
  280.          DEY
  281.          BPL HORIZLN2
  282.          RTS
  283. ;
  284. ; SETY - GIVEN Y COORD, SET BASE ADDRESS FOR POKING BYTES ON THAT LINE
  285. ;
  286. SETY     LDA HGRLINEL,Y
  287.          STA ZPTR
  288.          LDA HGRLINEH,Y
  289.          STA ZPTR+1
  290.          RTS
  291. ;
  292. ; HIGH RES VERTICAL COORDINATE ADDRESSES
  293. ;
  294. HGRLINEH DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  295.          DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  296.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  297.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  298.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  299.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  300.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  301.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  302.          DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  303.          DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  304.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  305.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  306.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  307.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  308.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  309.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  310.          DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  311.          DFB $20,$24,$28,$2C,$30,$34,$38,$3C
  312.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  313.          DFB $21,$25,$29,$2D,$31,$35,$39,$3D
  314.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  315.          DFB $22,$26,$2A,$2E,$32,$36,$3A,$3E
  316.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  317.          DFB $23,$27,$2B,$2F,$33,$37,$3B,$3F
  318. HGRLINEL DFB $00,$00,$00,$00,$00,$00,$00,$00
  319.          DFB $80,$80,$80,$80,$80,$80,$80,$80
  320.          DFB $00,$00,$00,$00,$00,$00,$00,$00
  321.          DFB $80,$80,$80,$80,$80,$80,$80,$80
  322.          DFB $00,$00,$00,$00,$00,$00,$00,$00
  323.          DFB $80,$80,$80,$80,$80,$80,$80,$80
  324.          DFB $00,$00,$00,$00,$00,$00,$00,$00
  325.          DFB $80,$80,$80,$80,$80,$80,$80,$80
  326.          DFB $28,$28,$28,$28,$28,$28,$28,$28
  327.          DFB $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8
  328.          DFB $28,$28,$28,$28,$28,$28,$28,$28
  329.          DFB $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8
  330.          DFB $28,$28,$28,$28,$28,$28,$28,$28
  331.          DFB $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8
  332.          DFB $28,$28,$28,$28,$28,$28,$28,$28
  333.          DFB $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8
  334.          DFB $50,$50,$50,$50,$50,$50,$50,$50
  335.          DFB $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0
  336.          DFB $50,$50,$50,$50,$50,$50,$50,$50
  337.          DFB $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0
  338.          DFB $50,$50,$50,$50,$50,$50,$50,$50
  339.          DFB $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0
  340.          DFB $50,$50,$50,$50,$50,$50,$50,$50
  341.          DFB $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0
  342. ;
  343.