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

  1. ;MFF0DRVR.SC1
  2. ;-------
  3. PRCSBYTE LDA PHASE
  4.          CMP #DELTA0
  5.          BNE PHDELT1
  6.          LDA #$00
  7.          STA DELTATIM
  8.          STA DELTATIM+1
  9.          STA DELTATIM+2
  10.          STA DELTATIM+3
  11.          LDA INBYTE
  12.          STA DELTATIM
  13.          BEQ DELTAEQ0        ;GET DELTA TIME
  14.          BPL DELTA7F
  15.          LDA #DELTA1         ;IF >127 - MORE TO FETCH
  16.          STA PHASE
  17.          RTS
  18. DELTAEQ0 LDA #GETINST        ;IF 0 - WILL GET INSTRUCTION NEXT TIME
  19.          STA PHASE
  20.          RTS
  21. DELTA7F  JSR COUNT
  22.          LDA #GETINST       ;IF <=127 - DELAY, THEN GET INSTRUCTION NEXT TIME
  23.          STA PHASE
  24.          RTS
  25. ;                            ;NEED TO CONVERT DELTA TIME BYTES TO COUNTER
  26. COUNT    LDA DELTATIM
  27.          STA DELTACTR
  28.          LDA #$00
  29.          STA DELTACTR+1
  30.          LDA DELTATIM+1      ;USE ONLY FIRST 2 BYTES OF DELTATIM
  31.          BEQ DOCOUNT         
  32.          AND #$7F            ;IF NON-ZERO HI BYTE, MOVE LO BIT
  33.          LSR A
  34.          STA DELTACTR+1
  35.          BCC DOCOUNT
  36.          LDA DELTACTR
  37.          ORA #$80            ;TO HI BIT OF LO BYTE
  38.          STA DELTACTR
  39. DOCOUNT  DEC DELTACTR
  40.          LDA DELTACTR
  41.          CMP #$FF
  42.          BNE DECR1
  43.          DEC DELTACTR+1
  44. DECR1    LDA DELTACTR+1
  45.          CMP #$FF
  46.          BEQ DONECNT
  47.          LDA SPEED
  48.          JSR MONWAIT
  49.          CLV
  50.          BVC DOCOUNT
  51. DONECNT  RTS
  52. ;
  53. PHDELT1  CMP #DELTA1
  54.          BNE PHDELT2
  55.          LDA DELTATIM
  56.          STA DELTATIM+1
  57.          LDA INBYTE
  58.          STA DELTATIM
  59.          BPL DELT1A
  60.          LDA #DELTA2
  61.          STA PHASE
  62.          RTS
  63. DELT1A   JSR COUNT
  64.          LDA #GETINST
  65.          STA PHASE
  66.          RTS
  67. ;-------
  68. PHDELT2  CMP #DELTA2
  69.          BNE PHDELT3
  70.          LDA DELTATIM+1
  71.          STA DELTATIM+2
  72.          LDA DELTATIM
  73.          STA DELTATIM+1
  74.          LDA INBYTE
  75.          STA DELTATIM
  76.          BPL DELT2A
  77.          LDA #DELTA3
  78.          STA PHASE
  79.          RTS
  80. DELT2A   JSR COUNT
  81.          LDA #GETINST
  82.          STA PHASE
  83.          RTS
  84. ;-------
  85. PHDELT3  CMP #DELTA3
  86.          BNE PHINST
  87.          LDA DELTATIM+2
  88.          STA DELTATIM+3
  89.          LDA DELTATIM+1
  90.          STA DELTATIM+2
  91.          LDA DELTATIM
  92.          STA DELTATIM+1
  93.          LDA INBYTE
  94.          STA DELTATIM
  95.          BPL DELT3A
  96.          LDA PLAYPTR+1
  97.          JSR PRINTHEX
  98.          LDA PLAYPTR
  99.          JSR PRINTHEX
  100.          BRK
  101. DELT3A   JSR COUNT
  102.          LDA #GETINST
  103.          STA PHASE
  104.          RTS
  105. ;-------
  106. PHINST   CMP #GETINST
  107.          BEQ PHINST0
  108.          JMP PHDATA3
  109. PHINST0  LDA PAUSEFLG        ;12/8/95-STEP THRU EVENTS WITH ESC
  110.          BEQ PHINST1
  111.          JSR WAITKEY
  112. PHINST1  LDA INBYTE
  113.          BPL RUNNING
  114. ;
  115.          CMP #$F0
  116.          BCS CHKF0
  117. ;
  118.          STA LASTSTAT
  119.          STA XMITSTS
  120.          CMP #$E0
  121.          BCS TWOBYTES
  122.          CMP #$C0
  123.          BCC TWOBYTES
  124. ;
  125.          LDA #1
  126.          STA DBYTES
  127.          LDA #DATA1
  128.          STA PHASE
  129.          RTS
  130. ;
  131. TWOBYTES LDA #2
  132.          STA DBYTES
  133.          LDA #DATA2
  134.          STA PHASE
  135.          RTS
  136. ;
  137. CHKF0    BNE CHKF7
  138.          LDA #SYSX0
  139.          STA PHASE
  140.          LDA #$F0
  141.          JSR XMITBYTE
  142.          RTS
  143. ;
  144. XMITBYTE JSR XMITONE ;ANNUNCIATOR MIDI DRIVER
  145.          RTS
  146. ;
  147. CHKF7    CMP #$F7
  148.          BNE CHKFF
  149.          LDA #SYSX0
  150.          STA PHASE
  151.          RTS
  152. ;
  153. CHKFF    CMP #$FF
  154.          BNE INVAL
  155.          LDA #META0
  156.          STA PHASE
  157.          RTS
  158. ;
  159. INVAL    BRK
  160. ;
  161. RUNNING  LDA LASTSTAT
  162.          STA XMITSTS
  163.          LDA INBYTE
  164.          STA XMITBYT1
  165.          LDA #$FF
  166.          STA XMITBYT2
  167.          LDA DBYTES
  168.          CMP #1
  169.          BEQ SENDMSG
  170.          LDA #DATA3
  171.          STA PHASE
  172.          RTS
  173. ;
  174. PHDATA3  CMP #DATA3
  175.          BNE PHDATA2
  176.          LDA INBYTE
  177.          STA XMITBYT2
  178.          LDA #$FF
  179.          STA XMITBYT3
  180.          JMP SENDMSG
  181. ;
  182. PHDATA2  CMP #DATA2
  183.          BNE PHDATA1
  184.          LDA INBYTE
  185.          STA XMITBYT1
  186.          LDA #DATA2B
  187.          STA PHASE
  188.          RTS
  189. ;
  190. PHDATA1  CMP #DATA1
  191.          BNE PHDATA2B
  192.          LDA INBYTE
  193.          STA XMITBYT1
  194.          LDA #$FF
  195.          STA XMITBYT2
  196.          JMP SENDMSG
  197. ;
  198. PHDATA2B CMP #DATA2B
  199.          BNE PHSYSX
  200.          LDA INBYTE
  201.          STA XMITBYT2
  202.          LDA #$FF
  203.          STA XMITBYT3
  204.          JMP SENDMSG
  205. ;
  206. SENDMSG  LDX #$01 
  207. SEND0    LDA XMITMSG,X
  208.          CMP #$FF
  209.          BEQ SEND2
  210.          JSR XMITONE ;ANNUNCIATOR MIDI DRIVER
  211.          INX
  212.          BNE SEND0
  213. SEND2    LDA PIANOSCR        ;ADDED 12/9/95-PIANO SCREEN OPTION
  214.          BEQ SENDEXIT
  215.          LDA XMITSTS
  216.          LDX XMITBYT1
  217.          LDY XMITBYT2
  218.          JSR MIDIPOKE
  219. SENDEXIT LDA #DELTA0
  220.          STA PHASE
  221.          RTS
  222. ;
  223. PHSYSX   CMP #SYSX0
  224.          BNE PHSYSX1
  225.          LDA INBYTE
  226.          STA SYSXLEN
  227.          BPL GOODSLEN
  228.          LDA PLAYPTR+1
  229.          JSR PRINTHEX
  230.          LDA PLAYPTR
  231.          JSR PRINTHEX
  232.          BRK                 ;SYSX OVER 127 BYTES NOT SUPPORTED
  233. GOODSLEN LDA #SYSX1
  234.          STA PHASE
  235.          RTS
  236. PHSYSX1  CMP #SYSX1
  237.          BNE PHMETA0
  238.          LDA INBYTE
  239.          JSR XMITBYTE
  240.          DEC SYSXLEN
  241.          LDA SYSXLEN
  242.          BNE MORESYSX
  243.          LDA #DELTA0
  244.          STA PHASE
  245. MORESYSX RTS
  246. ;--------
  247. PHMETA0  CMP #META0
  248.          BNE PHMETA1
  249. ;
  250.          LDA #$00
  251.          STA TEXTEVT
  252.          LDA INBYTE
  253.          CMP #$2F
  254.          BNE CHKTEXT
  255.          LDA #$01
  256.          STA ENDOFTRK
  257.          RTS
  258. ;
  259. CHKTEXT  CMP #$0F
  260.          BCS CHKTMPO
  261.          LDA #$01
  262.          STA TEXTEVT
  263.          LDA #META1
  264.          STA PHASE
  265.          RTS
  266. ;
  267. CHKTMPO  CMP #$51
  268.          BNE CHKKYSG
  269.          LDA #TEMPO1
  270.          STA PHASE
  271.          RTS
  272. ;
  273. CHKKYSG  CMP #$59
  274.          BNE OTHER
  275.          LDA #KEYSIG1
  276.          STA PHASE
  277.          RTS
  278. ;
  279. OTHER    LDA #META1
  280.          STA PHASE
  281.          RTS
  282. ;
  283. PHMETA1  CMP #META1
  284.          BNE PHMETA2
  285. STORMLEN LDA INBYTE
  286.          STA METALEN
  287.          BPL GOODMLEN
  288.          LDA PLAYPTR+1
  289.          JSR PRINTHEX
  290.          LDA PLAYPTR+2
  291.          JSR PRINTHEX
  292.          BRK                 ;META OVER 127 BYTES NOT SUPPORTED
  293. GOODMLEN LDA #META2
  294.          STA PHASE
  295.          RTS
  296. PHMETA2  CMP #META2
  297.          BNE PHTEMPO1
  298.          LDA TEXTEVT
  299.          BEQ NOTTEXT
  300.          LDA LYRICS
  301.          BEQ NOTTEXT         ;BYPASS IF USER DOESNT WANT LYRICS
  302.          LDA INBYTE
  303.          CMP #$0D
  304.          BEQ PRCSCR
  305. NOTUC    ORA #$80  ;DISPLAY IN NORMAL TEXT
  306.          JSR COUT
  307. NOTTEXT  DEC METALEN
  308.          LDA METALEN
  309.          BNE MOREMETA
  310.          LDA #DELTA0
  311.          STA PHASE
  312. MOREMETA RTS
  313. ;
  314. PRCSCR   ORA #$80  ;PRINT CR
  315.          JSR COUT
  316.          LDA KARALOOK
  317.          BEQ NOKARA
  318.          JSR KARASCAN  ;KARAOKE LOGIC TO SCAN AHEAD ONE LINE & PRINT LINE 24
  319. NOKARA   JMP NOTTEXT
  320. ;
  321. PRINTHEX PHA       ;CLONE OF $FDDA BUT USING $FDF0 OUTPUT
  322.          LSR A
  323.          LSR A
  324.          LSR A
  325.          LSR A
  326.          JSR PRNTHEX1
  327.          PLA
  328.          AND #$0F
  329. PRNTHEX1 ORA #$B0
  330.          CMP #$BA
  331.          BCC PRNTHEX2
  332.          ADC #$06
  333. PRNTHEX2 JMP COUT
  334. ;
  335.          CHN MFF0DRVR.SC2
  336.