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

  1. ; DANCNOTE.SRC
  2. ;
  3.          ORG $6000
  4. ;
  5. ; LINKAGE:
  6. HEADPTR  EQU $06
  7. HEADSTRT EQU $08
  8. HEADEND  EQU $09
  9. ;
  10. TAILPTR  EQU $19
  11. ;
  12.          JMP START
  13. ;
  14. GRPHMODE DFB $01   ; 01=USE GRAPHICS MODE,$00=USE TEXT MODE
  15. DISPMODE DFB $01
  16. MASKDRUM DFB $01
  17. USEINVRS DFB $00
  18. INBYTE   DFB $00
  19. PHASE    DFB $00
  20. LASTSTAT DFB $00
  21. XMITSTS  DFB $00
  22. XMITBYT1 DFB $00
  23. XMITBYT2 DFB $00
  24. XMITBYT3 DFB $00
  25. DBYTES   DFB $00
  26. ;
  27. GETINST  EQU $00
  28. DATA1    EQU $01
  29. DATA2    EQU $02
  30. DATA3    EQU $03
  31. SYSX0    EQU $04
  32. DATA2B   EQU $05
  33. ;
  34. START    LDA HEADPTR
  35.          STA TAILPTR
  36.          LDA HEADPTR+1
  37.          STA TAILPTR+1
  38. ;
  39. WAITBYTE LDA $C000
  40.          BMI KEYPRESS
  41.          LDA HEADPTR
  42.          CMP TAILPTR
  43.          BEQ WAITBYTE
  44.          LDY #$00
  45.          LDA (TAILPTR),Y
  46.          STA INBYTE
  47.          JSR PRCSBYTE
  48.          INC TAILPTR
  49.          BNE LOOPBACK
  50.          INC TAILPTR+1
  51.          LDA TAILPTR+1
  52.          CMP HEADEND
  53.          BCC LOOPBACK
  54.          LDA HEADSTRT
  55.          STA TAILPTR+1
  56. LOOPBACK CLV
  57.          BVC WAITBYTE 
  58. ;
  59. KEYPRESS LDA $C010
  60.          RTS
  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    BRK
  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 LDA XMITSTS
  162.          LDX XMITBYT1
  163.          LDY XMITBYT2
  164.          JSR MIDIGRPH
  165.          JMP SENDEXIT
  166. ;
  167. ;--------
  168. ;MIDIPOKE - DISPLAYS NOTE ON/OFFS USING 1ST 16 LINES OF SCREEN 
  169. ;--------
  170. ; A = STATUS BYTE (9X OR 8X)
  171. ; X = 1ST DATA BYTE (NOTE NUMBER 00-7F)
  172. ; Y = 2ND DATA BYTE (VELOCITY 00-7F)
  173. ;--------
  174. MIDIPOKE STA STSBYTE         ;SAVE INPUT DATA
  175.          AND #$0F
  176.          STA MIDICHNL        ;EXTRACT CHANNEL
  177.          STX NOTENUM
  178.          STY VELOCITY
  179.          TXA                 ;CHECK IF NOTE IS IN RANGE OF DISPLAY
  180.          CMP #24
  181.          BCC MIDIEXIT
  182.          CMP #104
  183.          BCS MIDIEXIT
  184.          SEC                 ;SUBTRACT 24 TO GET OFFSET IN CHARACTER TABLE
  185.          SBC #24
  186.          STA XCOORD         
  187.          LDA STSBYTE
  188.          AND #$F0
  189.          CMP #$80
  190.          BEQ NOTEOFF         ;CHECK IF NOTE OFF
  191.          CMP #$90
  192.          BEQ NOTEON
  193. MIDIEXIT RTS
  194. NOTEON   LDA VELOCITY
  195.          BEQ NOTEOFF         ;IF 90 WITH VEL 0 IT IS A NOTEOFF
  196.          LDX XCOORD          ;NEED TO PRESERVE X UNTIL POKENOTE
  197.          LDA MASKDRUM        
  198.          BMI NOTDRUM         ;MASKDRUM FF=DISPLAY AS NORMAL NOTES
  199.          LDA MIDICHNL
  200.          CMP #$09            ;CHECK IF THIS IS A DRUM NOTE
  201.          BNE NOTDRUM         
  202.          LDA MASKDRUM
  203.          BEQ NOTEOFF         ;MASKDRUM 00=DON'T DISPLAY DRUM PART
  204.          LDA #'*'
  205.          STA DISPNOTE        ;MASKDRUM 01=PRINT * FOR DRUM PART
  206.          CLV
  207.          BVC POKENOTE
  208. NOTDRUM  LDA DISPMODE        ;CHECK IF UPPER CASE SHARP/LOWER CASE FLAT
  209.          BNE LCFMODE
  210.          LDA UCSNOTES,X
  211.          STA DISPNOTE
  212.          CLV
  213.          BVC POKENOTE
  214. LCFMODE  LDA LCFNOTES,X
  215.          STA DISPNOTE
  216. POKENOTE LDY MIDICHNL        ;VERTICAL COORD
  217.          LDA USEINVRS        ;PARM-WHETHER USER WANTS INVERSE DISPLAY
  218.          BNE INVERT
  219.          LDA DISPNOTE
  220.          JMP POKE80
  221. INVERT   LDA DISPNOTE
  222.          AND #$7F            ;INVERT ALL KEYS
  223.          JMP POKE80
  224. NOTEOFF  LDA #' '
  225.          STA DISPNOTE
  226.          LDX XCOORD
  227.          JMP POKENOTE
  228. ;
  229. DISPNOTE DFB $00
  230. STSBYTE  DFB $00
  231. MIDICHNL DFB $00
  232. NOTENUM  DFB $00
  233. VELOCITY DFB $00
  234. XCOORD   DFB $00
  235. ;
  236. ;                            UPPER CASE SHARPS: cCdDefFgGaAb
  237. ;
  238. UCSNOTES DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  239.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  240.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  241.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  242.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  243.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  244.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  245. ;
  246. ;                            LOWER CASE FLATS:  CdDeEFgGaAbB
  247. ;
  248. LCFNOTES DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  249.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  250.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  251.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  252.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  253.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  254.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  255. ;
  256.          CHN DANCNOTE.SC1
  257.