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

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