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

  1. ; DANCNOTE.SC0 - NON-INTERRUPT DRIVEN
  2. ;
  3.          ORG $6000
  4. ;
  5.          JMP START
  6. ;
  7. GRPHMODE DFB $01   ; 01=USE GRAPHICS MODE,$00=USE TEXT MODE,$02=DOUBLE HIRES
  8. DISPMODE DFB $01
  9. MASKDRUM DFB $01
  10. USEINVRS DFB $00
  11. INBYTE   DFB $00
  12. PHASE    DFB $00
  13. LASTSTAT DFB $00
  14. XMITSTS  DFB $00
  15. XMITBYT1 DFB $00
  16. XMITBYT2 DFB $00
  17. XMITBYT3 DFB $00
  18. DBYTES   DFB $00
  19. MIDISLOT DFB $20
  20. ;
  21.          JMP INITDHR
  22.          JMP DONEDHR
  23. ;
  24. GETINST  EQU $00
  25. DATA1    EQU $01
  26. DATA2    EQU $02
  27. DATA3    EQU $03
  28. SYSX0    EQU $04
  29. DATA2B   EQU $05
  30. ;
  31. START    LDA   #$13
  32.          LDX   MIDISLOT
  33.          STA   $C088,X
  34.          LDA   #$11    
  35.          STA   $C088,X    
  36. WAITMIDI LDA   $C000
  37.          BMI   ADIOS
  38.          LDX   MIDISLOT
  39.          LDA   $C088,X       
  40.          AND   #$01       
  41.          BEQ   WAITMIDI
  42.          LDX   MIDISLOT    
  43.          LDA   $C089,X   
  44.          CMP   #$F0
  45.          BEQ   SKIPSYSX
  46.          BCS   WAITMIDI
  47. SYSXRET  STA   INBYTE 
  48.          JSR   PRCSBYTE   
  49.          LDA   $C000       
  50.          BPL   WAITMIDI
  51. ADIOS    LDA   $C010
  52.          RTS   
  53. ;
  54. SKIPSYSX LDX MIDISLOT
  55.          LDA $C088,X
  56.          AND #$01
  57.          BEQ SKIPSYSX
  58.          LDA $C089,X
  59.          BPL SKIPSYSX
  60.          BMI SYSXRET
  61. ;
  62. PRCSBYTE LDA PHASE
  63. PHINST   CMP #GETINST
  64.          BEQ PHINST0
  65.          JMP PHDATA3
  66. PHINST0  LDA INBYTE
  67.          BPL RUNNING
  68. ;
  69. ;         CMP #$F0
  70. ;         BCS CHKF0
  71. ;
  72.          STA LASTSTAT
  73.          STA XMITSTS
  74.          CMP #$E0
  75.          BCS TWOBYTES
  76.          CMP #$C0
  77.          BCC TWOBYTES
  78. ;
  79.          LDA #1
  80.          STA DBYTES
  81.          LDA #DATA1
  82.          STA PHASE
  83.          RTS
  84. ;
  85. TWOBYTES LDA #2
  86.          STA DBYTES
  87.          LDA #DATA2
  88.          STA PHASE
  89.          RTS
  90. ;
  91. ;CHKF0    BNE CHKF7
  92. ;         LDA #SYSX0
  93. ;         STA PHASE
  94. ;         RTS
  95. ;
  96. ;CHKF7    CMP #$F7
  97. ;         BNE INVAL
  98. ;         LDA #GETINST
  99. ;         STA PHASE
  100. ;         RTS
  101. ;
  102. ;INVAL    RTS
  103. ;
  104. RUNNING  LDA LASTSTAT
  105.          STA XMITSTS
  106.          LDA INBYTE
  107.          STA XMITBYT1
  108.          LDA #$FF
  109.          STA XMITBYT2
  110.          LDA DBYTES
  111.          CMP #1
  112.          BEQ SENDMSG
  113.          LDA #DATA3
  114.          STA PHASE
  115.          RTS
  116. ;
  117. PHDATA3  CMP #DATA3
  118.          BNE PHDATA2
  119.          LDA INBYTE
  120.          STA XMITBYT2
  121.          LDA #$FF
  122.          STA XMITBYT3
  123.          JMP SENDMSG
  124. ;
  125. PHDATA2  CMP #DATA2
  126.          BNE PHDATA1
  127.          LDA INBYTE
  128.          STA XMITBYT1
  129.          LDA #DATA2B
  130.          STA PHASE
  131.          RTS
  132. ;
  133. PHDATA1  CMP #DATA1
  134.          BNE PHDATA2B
  135.          LDA INBYTE
  136.          STA XMITBYT1
  137.          LDA #$FF
  138.          STA XMITBYT2
  139.          JMP SENDMSG
  140. ;
  141. PHDATA2B CMP #DATA2B
  142.          BNE PHSYSX
  143.          LDA INBYTE
  144.          STA XMITBYT2
  145.          LDA #$FF
  146.          STA XMITBYT3
  147.          JMP SENDMSG
  148. ;
  149. SENDMSG  LDA GRPHMODE
  150.          BNE DRAWGRPH
  151.          LDA XMITSTS
  152.          LDX XMITBYT1
  153.          LDY XMITBYT2
  154.          JSR MIDIPOKE
  155. SENDEXIT LDA #GETINST
  156.          STA PHASE
  157.          RTS
  158. ;
  159. PHSYSX   RTS
  160. ;
  161. DRAWGRPH CMP #$01
  162.          BNE DOUBLEHI
  163.          LDA XMITSTS
  164.          LDX XMITBYT1
  165.          LDY XMITBYT2
  166.          JSR MIDIGRPH
  167.          JMP SENDEXIT
  168. DOUBLEHI LDA XMITSTS
  169.          LDX XMITBYT1
  170.          LDY XMITBYT2
  171.          JSR DBLGRPH
  172.          JMP SENDEXIT
  173. ;
  174. ;--------
  175. ;MIDIPOKE - DISPLAYS NOTE ON/OFFS USING 1ST 16 LINES OF SCREEN 
  176. ;--------
  177. ; A = STATUS BYTE (9X OR 8X)
  178. ; X = 1ST DATA BYTE (NOTE NUMBER 00-7F)
  179. ; Y = 2ND DATA BYTE (VELOCITY 00-7F)
  180. ;--------
  181. MIDIPOKE STA STSBYTE         ;SAVE INPUT DATA
  182.          AND #$0F
  183.          STA MIDICHNL        ;EXTRACT CHANNEL
  184.          STX NOTENUM
  185.          STY VELOCITY
  186.          TXA                 ;CHECK IF NOTE IS IN RANGE OF DISPLAY
  187.          CMP #24
  188.          BCC MIDIEXIT
  189.          CMP #102
  190.          BCS MIDIEXIT
  191.          SEC                 ;SUBTRACT 24 TO GET OFFSET IN CHARACTER TABLE
  192.          SBC #24
  193.          STA XCOORD         
  194.          LDA STSBYTE
  195.          AND #$F0
  196.          CMP #$80
  197.          BEQ NOTEOFF         ;CHECK IF NOTE OFF
  198.          CMP #$90
  199.          BEQ NOTEON
  200. MIDIEXIT RTS
  201. NOTEON   LDA VELOCITY
  202.          BEQ NOTEOFF         ;IF 90 WITH VEL 0 IT IS A NOTEOFF
  203.          LDX XCOORD          ;NEED TO PRESERVE X UNTIL POKENOTE
  204.          LDA MASKDRUM        
  205.          BMI NOTDRUM         ;MASKDRUM FF=DISPLAY AS NORMAL NOTES
  206.          LDA MIDICHNL
  207.          CMP #$09            ;CHECK IF THIS IS A DRUM NOTE
  208.          BNE NOTDRUM         
  209.          LDA MASKDRUM
  210.          BEQ NOTEOFF         ;MASKDRUM 00=DON'T DISPLAY DRUM PART
  211.          LDA #'*'
  212.          STA DISPNOTE        ;MASKDRUM 01=PRINT * FOR DRUM PART
  213.          CLV
  214.          BVC POKENOTE
  215. NOTDRUM  LDA DISPMODE        ;CHECK IF UPPER CASE SHARP/LOWER CASE FLAT
  216.          BNE LCFMODE
  217.          LDA UCSNOTES,X
  218.          STA DISPNOTE
  219.          CLV
  220.          BVC POKENOTE
  221. LCFMODE  LDA LCFNOTES,X
  222.          STA DISPNOTE
  223. POKENOTE LDY MIDICHNL        ;VERTICAL COORD
  224.          LDA USEINVRS        ;PARM-WHETHER USER WANTS INVERSE DISPLAY
  225.          BNE INVERT
  226.          LDA DISPNOTE
  227.          JMP POKE80
  228. INVERT   LDA DISPNOTE
  229.          AND #$7F            ;INVERT ALL KEYS
  230.          JMP POKE80
  231. NOTEOFF  LDA #' '
  232.          STA DISPNOTE
  233.          LDX XCOORD
  234.          JMP POKENOTE
  235. ;
  236. DISPNOTE DFB $00
  237. STSBYTE  DFB $00
  238. MIDICHNL DFB $00
  239. NOTENUM  DFB $00
  240. VELOCITY DFB $00
  241. XCOORD   DFB $00
  242. ;
  243. ;                            UPPER CASE SHARPS: cCdDefFgGaAb
  244. ;
  245. UCSNOTES DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  246.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  247.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  248.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  249.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  250.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  251.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  252. ;
  253. ;                            LOWER CASE FLATS:  CdDeEFgGaAbB
  254. ;
  255. LCFNOTES DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  256.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  257.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  258.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  259.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  260.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  261.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  262. ;
  263.          CHN DANCNOTE.SC1
  264.