home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / eric.hdv / ANNMIDI / MFF0DRVR.SC2.txt < prev    next >
Text File  |  2020-08-13  |  7KB  |  263 lines

  1. ;MFF0DRVR.SC2
  2. ;
  3. PHTEMPO1 CMP #TEMPO1
  4.          BNE PHTEMPO2
  5.          LDA INBYTE
  6.          CMP #$03
  7.          BNE STORMLEN
  8.          LDA #TEMPO2
  9.          STA PHASE
  10.          RTS
  11. PHTEMPO2 CMP #TEMPO2
  12.          BNE PHTEMPO3
  13.          LDA INBYTE
  14.          STA TMPOHI
  15.          LDA #TEMPO3
  16.          STA PHASE
  17.          RTS
  18. PHTEMPO3 CMP #TEMPO3
  19.          BNE PHTEMPO4
  20.          LDA INBYTE
  21.          STA TMPOMED
  22.          LDA #TEMPO4
  23.          STA PHASE
  24.          RTS
  25. PHTEMPO4 CMP #TEMPO4
  26.          BNE PHKYSIG1
  27.          LDA INBYTE
  28.          STA TMPOLO
  29.          LDA RESOLUTN
  30.          STA RESHI
  31.          LDA RESOLUTN+1
  32.          STA RESLO
  33.          LDA DOTMPOCG
  34.          BEQ TMPODONE 
  35.          JSR TEMPOCHG
  36.          JSR METRONOM
  37.          LDA NEWSPEED
  38.          CLC
  39.          ADC SPEEDINC
  40.          BMI BADSPEED
  41.          BEQ BADSPEED
  42.          STA SPEED
  43.          LDA PRNTSPED
  44.          BEQ TMPODONE 
  45.          LDA #$A0
  46.          JSR COUT
  47.          LDA SPEED
  48.          JSR PRINTHEX
  49.          LDA #$A0
  50.          JSR COUT
  51. TMPODONE JSR SPEEDDEC
  52.          JSR METRPOKE
  53.          LDA #DELTA0
  54.          STA PHASE
  55.          RTS
  56. BADSPEED LDA NEWSPEED
  57.          STA SPEED
  58.          JSR SPEEDDEC
  59.          JSR METRPOKE
  60.          LDA #DELTA0
  61.          STA PHASE
  62.          RTS
  63. PHKYSIG1 CMP #KEYSIG1
  64.          BNE PHKYSIG2
  65.          LDA #KEYSIG2
  66.          STA PHASE
  67.          RTS
  68. PHKYSIG2 CMP #KEYSIG2
  69.          BNE PHKYSIG3
  70.          LDA INBYTE
  71.          BEQ NOCHANGE        ;DON'T DO FOR C MAJOR/A MINOR
  72.          AND #$80            ;SET UPPERCASE SHARPS ($00)
  73.          ASL A
  74.          ROL A
  75.          STA DISPMODE        ;OR LOWERCASE FLATS ($01)
  76. NOCHANGE LDA #KEYSIG3
  77.          STA PHASE
  78.          LDA #$00
  79.          STA FLATKEY
  80.          LDA INBYTE
  81.          BPL STORSF
  82.          INC FLATKEY
  83.          EOR #$FF
  84.          CLC
  85.          ADC #$01
  86. STORSF   STA KEYNUMSF
  87.          RTS
  88. ;
  89. BADPHASE JSR PRINTHEX
  90.          BRK
  91. PHKYSIG3 CMP #KEYSIG3
  92.          BNE BADPHASE
  93.          LDA #'M'
  94.          STA KEYSIGP4
  95.          LDA INBYTE
  96.          BNE MINORKEY
  97.          LDA FLATKEY
  98.          BNE MAJFLAT
  99.          LDA KEYNUMSF 
  100.          ASL A
  101.          TAX
  102.          LDA MAJORSHP,X
  103.          STA KEYSIGP2
  104.          INX
  105.          LDA MAJORSHP,X
  106.          STA KEYSIGP3
  107.          CLV
  108.          BVC PRNTKYSG
  109. MAJFLAT  LDA KEYNUMSF 
  110.          ASL A
  111.          TAX
  112.          LDA MAJORFLT,X
  113.          STA KEYSIGP2
  114.          INX
  115.          LDA MAJORFLT,X
  116.          STA KEYSIGP3
  117.          CLV
  118.          BVC PRNTKYSG
  119. MINORKEY LDA #'m'
  120.          STA KEYSIGP4
  121.          LDA FLATKEY
  122.          BNE MINFLAT
  123.          LDA KEYNUMSF 
  124.          ASL A
  125.          TAX
  126.          LDA MINORSHP,X
  127.          STA KEYSIGP2
  128.          INX
  129.          LDA MINORSHP,X
  130.          STA KEYSIGP3
  131.          CLV
  132.          BVC PRNTKYSG
  133. MINFLAT  LDA KEYNUMSF 
  134.          ASL A
  135.          TAX
  136.          LDA MINORFLT,X
  137.          STA KEYSIGP2
  138.          INX
  139.          LDA MINORFLT,X
  140.          STA KEYSIGP3
  141.          CLV
  142.          BVC PRNTKYSG
  143. PRNTKYSG LDY #16
  144.          LDX #74
  145. PRKYLP   LDA KEYSIGP1-70,X
  146.          JSR POKE80
  147.          DEX
  148.          CPX #69
  149.          BNE PRKYLP
  150.          LDA #DELTA0
  151.          STA PHASE
  152.          RTS
  153. ;
  154. FLATKEY  DFB $00
  155. KEYNUMSF DFB $00
  156. MAJORSHP ASC 'C G D A E B F#C#'
  157. MAJORFLT ASC 'C F BbEbAbDbGbCb'
  158. MINORSHP ASC 'A E B F#C#G#D#A#'
  159. MINORFLT ASC 'A D G C F BbEbAb'
  160. ;
  161. ;--------
  162. ;MIDIPOKE - DISPLAYS NOTE ON/OFFS USING 1ST 16 LINES OF SCREEN 
  163. ;--------
  164. ; A = STATUS BYTE (9X OR 8X)
  165. ; X = 1ST DATA BYTE (NOTE NUMBER 00-7F)
  166. ; Y = 2ND DATA BYTE (VELOCITY 00-7F)
  167. ;--------
  168. MIDIPOKE STA STSBYTE         ;SAVE INPUT DATA
  169.          AND #$0F
  170.          STA MIDICHNL        ;EXTRACT CHANNEL
  171.          STX NOTENUM
  172.          STY VELOCITY
  173.          TXA                 ;CHECK IF NOTE IS IN RANGE OF DISPLAY
  174.          CMP #24
  175.          BCC MIDIEXIT
  176.          CMP #104
  177.          BCS MIDIEXIT
  178.          SEC                 ;SUBTRACT 24 TO GET OFFSET IN CHARACTER TABLE
  179.          SBC #24
  180.          STA XCOORD         
  181.          LDA STSBYTE
  182.          AND #$F0
  183.          CMP #$80
  184.          BEQ NOTEOFF         ;CHECK IF NOTE OFF
  185.          CMP #$90
  186.          BEQ NOTEON
  187. MIDIEXIT RTS
  188. NOTEON   LDA VELOCITY
  189.          BEQ NOTEOFF         ;IF 90 WITH VEL 0 IT IS A NOTEOFF
  190.          LDX XCOORD          ;NEED TO PRESERVE X UNTIL POKENOTE
  191.          LDA MASKDRUM        
  192.          BMI NOTDRUM         ;MASKDRUM FF=DISPLAY AS NORMAL NOTES
  193.          LDA MIDICHNL
  194.          CMP #$09            ;CHECK IF THIS IS A DRUM NOTE
  195.          BNE NOTDRUM         
  196.          LDA MASKDRUM
  197.          BEQ NOTEOFF         ;MASKDRUM 00=DON'T DISPLAY DRUM PART
  198.          LDA #'*'
  199.          STA DISPNOTE        ;MASKDRUM 01=PRINT * FOR DRUM PART
  200.          CLV
  201.          BVC POKENOTE
  202. NOTDRUM  LDA DISPMODE        ;CHECK IF UPPER CASE SHARP/LOWER CASE FLAT
  203.          BNE LCFMODE
  204.          LDA UCSNOTES,X
  205.          STA DISPNOTE
  206.          CLV
  207.          BVC POKENOTE
  208. LCFMODE  LDA LCFNOTES,X
  209.          STA DISPNOTE
  210. POKENOTE LDY MIDICHNL        ;VERTICAL COORD
  211.          LDA USEINVRS        ;PARM-WHETHER USER WANTS INVERSE DISPLAY
  212.          BNE INVERT
  213.          LDA DISPNOTE
  214.          JMP POKE80
  215. INVERT   LDA DISPNOTE
  216.          AND #$7F            ;INVERT ALL KEYS
  217. ;         AND WHITEKEY,X      ;CREATE INVERSE IF IT IS A WHITE PIANO KEY
  218.          JMP POKE80
  219. NOTEOFF  LDA #' '
  220.          STA DISPNOTE
  221.          LDX XCOORD
  222.          JMP POKENOTE
  223. ;
  224. DISPNOTE DFB $00
  225. STSBYTE  DFB $00
  226. MIDICHNL DFB $00
  227. NOTENUM  DFB $00
  228. VELOCITY DFB $00
  229. XCOORD   DFB $00
  230. ;
  231. ;                            UPPER CASE SHARPS: cCdDefFgGaAb
  232. ;
  233. UCSNOTES DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  234.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  235.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  236.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  237.          DFB $E3,$83,$E4,$84,$E5,$E6,$86,$E7,$87,$E1,$81,$E2
  238.          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. ;
  241. ;                            LOWER CASE FLATS:  CdDeEFgGaAbB
  242. ;
  243. LCFNOTES DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  244.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  245.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  246.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  247.          DFB $83,$E4,$84,$E5,$85,$86,$E7,$87,$E1,$81,$E2,$82
  248.          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. ;
  251. ;12/30/95:TOOK OUT TO SAVE SPACE
  252. ;        THE 7F IS ANDED WITH CHAR TO MAKE IT WHITE (INVERSE)
  253. ;
  254. ;WHITEKEY DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  255. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  256. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  257. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  258. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  259. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  260. ;         DFB $7F,$FF,$7F,$FF,$7F,$7F,$FF,$7F,$FF,$7F,$FF,$7F
  261. ;
  262.          CHN MFF0DRVR.SC3
  263.