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

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