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

  1. ; INTERRUPT DRIVEN
  2. ; MFF0 PLAYER - PLAYS A SPECIFIC AREA OF AUX OR MAIN MEMORY
  3. ;
  4. ;
  5.          ORG $0800
  6. ;
  7. ENTRYPTS JMP AUXSETUP        ;COPY CODE TO AUX MEM 
  8.          JMP PLAYMAIN        ;PLAY FROM MAIN MEMORY        
  9.          JMP PLAYAUX         ;PLAY FROM AUX MEMORY
  10.          JMP DOAUXMV         ;FOR USER - TO DO AUXMOVE
  11.          JMP DOXFER          ;FOR USER - TO XFER
  12. ;----------------
  13. ; PARAMETERS
  14. ;----------------
  15. PLAYSTRT DW $2000  ;STARTING ADDRESS OF PLAYBACK - SET BY CALLER
  16. PLAYSTOP DW $7800  ;ENDING ADDRESS OF PLAYBACK+1 - SET BY CALLER
  17. PHASE    DFB $00   ;CURRENT PHASE OF PROCESSING
  18. ENDOFTRK DFB $00   ;SIGNALS THAT END OF TRACK (00 FF 2F 00) REACHED
  19. ;----------------
  20. ; USER PARAMETERS FOR AUXMOVE
  21. ;----------------
  22. SRCMAINL DFB $00
  23. SRCMAINH DFB $00
  24. ENDMAINL DFB $00
  25. ENDMAINH DFB $00
  26. TGTAUXL  DFB $00
  27. TGTAUXH  DFB $00
  28. TOAUX    DFB $00
  29. ;----------------
  30. ; USER PARAMETERS FOR TRANSFER
  31. ;----------------
  32. XFERADRL DFB $00
  33. XFERADRH DFB $00
  34. XFTOAUX  DFB $00
  35. USEAUXZP DFB $00
  36. ;--------
  37. LYRICS   DFB $01   ;PRINT LYRICS
  38. PRNTSPED DFB $00   ;PRINT SPEED
  39. PIANOSCR DFB $01   ;PIANO DISPLAY ON
  40. DISPMODE DFB $01   ; 00 = UPPERCASE SHARPS, NONZERO = LOWERCASE FLATS
  41. MASKDRUM DFB $01   ; DISPLAY CHANNEL 9 (DRUMS) WITH *
  42. USEINVRS DFB $00   ; WHETHER TO USE INVERSE LETTERS - FOR PIANO DISPLAY
  43. KARALOOK DFB $00   ; WHETHER TO USE KARAOKE LOOKAHEAD
  44. RESOLUTN DFB $00,$F0 ; RESOLUTION FROM MIDI HEADER -USED FOR TEMPO CHGS
  45. SPEEDINC DFB $00   ; USER'S AMOUNT TO ADD OR SUBTRACT FROM SPEED
  46. DOTMPOCG DFB $01   ; PROCESS TEMPO CHANGES
  47. METRDISP ASC 'MM'  ;METRONOME DISPLAY
  48. METRTMP1 ASC '1'   
  49. METRTMP2 ASC '2'
  50. METRTMP3 ASC '0'
  51. METRFILL ASC ' SP'
  52. METRSPD1 ASC '0'
  53. METRSPD2 ASC '2'
  54. METRSPD3 ASC '7'
  55. KEYSIGP1 ASC '('
  56. KEYSIGP2 ASC 'C'
  57. KEYSIGP3 ASC ' '
  58. KEYSIGP4 ASC 'M'
  59. KEYSIGP5 ASC ')'
  60. ;-------------------
  61. ; INTERNAL VARIABLES
  62. ;-------------------
  63. INBYTE   DFB $00   ;VALUE OF CURRENT BYTE
  64. PAUSEFLG DFB $00
  65. DELTATIM DFB $00,$00,$00,$00
  66. DELTACTR DFB $00,$00
  67. LASTSTAT DFB $00
  68. DBYTES   DFB $00
  69. XMITMSG  ASC 'X'
  70. XMITSTS  DFB $00
  71. XMITBYT1 DFB $00
  72. XMITBYT2 DFB $00
  73. XMITBYT3 DFB $00
  74. SYSXLEN  DFB $00
  75. TEXTEVT  DFB $00
  76. METALEN  DFB $00
  77. AUXPLAY  DFB $00   ;WHETHER PLAYING MAIN OR AUX
  78. ;---------------------
  79. PLAYPTR  EQU $06   ;POINTER TO CURRENT BYTE BEING READ
  80. ;
  81. COUT     EQU $FDF0 ;USE MONITOR OUTPUT ROUTINE BECAUSE MAY PRINT FROM AUX MEM
  82. MONWAIT  EQU $FCA8 ;MONITOR DELAY ROUTINE
  83. AUXMOVE  EQU $C311 ;AUX MEM MOVE
  84. AUXXFER  EQU $C314 ;AUX MEM TRANSFER CONTROL
  85. MONRTS   EQU $FF58 ;ADDRESS OF RTS INSTRUCTION USED TO SET OVERFLOW FLAG
  86. ;------------
  87. ; PROGRAM PHASE NAMES:
  88. ;------------
  89. DELTA0   EQU $00
  90. DELTA1   EQU $01
  91. DELTA2   EQU $02
  92. DELTA3   EQU $03
  93. GETINST  EQU $04
  94. DATA1    EQU $05
  95. DATA2    EQU $06
  96. DATA2B   EQU $07
  97. DATA3    EQU $08
  98. SYSX0    EQU $09
  99. SYSX1    EQU $0A
  100. SYSX2    EQU $0B
  101. META0    EQU $10
  102. META1    EQU $11
  103. META2    EQU $12
  104. TEMPO1   EQU $13
  105. TEMPO2   EQU $14
  106. TEMPO3   EQU $15
  107. TEMPO4   EQU $16
  108. KEYSIG1  EQU $17
  109. KEYSIG2  EQU $18
  110. KEYSIG3  EQU $19
  111. ;-------------------
  112. ;LINKAGE TO MKBCLOCK.OBJ
  113. ;
  114. CLOCKORG EQU       $8500     ;CHANGE THIS IF ASSEMBLED AT NEW LOCATION
  115. ;
  116. ;SUBROUTINES:
  117. ;------------
  118. ALLOCINT EQU       CLOCKORG            ;ALLOCATE PRODOS MLI INTERRUPT HANDLER
  119. STARTCLK EQU       CLOCKORG+3          ;START THE CLOCK RUNNING
  120. STOPCLK  EQU       CLOCKORG+6          ;STOP THE CLOCK
  121. ZEROCNT  EQU       CLOCKORG+9          ;ZERO THE CLOCK'S COUNTER
  122. CALCALRM EQU       CLOCKORG+12         ;ADD DELTA TO CTR AND SET ALARM
  123. ADD2ALRM EQU       CLOCKORG+15         ;ADD DELTA TO ALARM AND SET ALARM
  124. WAITALRM EQU       CLOCKORG+18         ;WAIT UNTIL ALARM FLAG BECOMES 0
  125. ;
  126. ;PUBLIC VARIABLES:
  127. ;-----------------
  128. ;
  129. VTEMPOLO  EQU CLOCKORG+22     ;USER STORES CLOCK TEMPO HERE
  130. VTEMPOHI  EQU CLOCKORG+23
  131. ;
  132. VCOUNTLO  EQU CLOCKORG+24     ;THE INTERRUPT INCREMENTS THIS 4 BYTE VALUE
  133. VCOUNTML  EQU CLOCKORG+25
  134. VCOUNTMH  EQU CLOCKORG+26
  135. VCOUNTHI  EQU CLOCKORG+27
  136. ;
  137. VDELTALO  EQU CLOCKORG+28     ;THE USER STORES INTERVAL FROM NOW (DELTA TIME)
  138. VDELTAML  EQU CLOCKORG+29     ;FOR ALARM TO GO OFF AND CALLS 
  139. VDELTAMH  EQU CLOCKORG+30     ;CALCALRM
  140. VDELTAHI  EQU CLOCKORG+31
  141. ;
  142. VALARMLO  EQU CLOCKORG+32     ;THE USER STORES TIME FOR ALARM TO GO OFF
  143. VALARMML  EQU CLOCKORG+33
  144. VALARMMH  EQU CLOCKORG+34
  145. VALARMHI  EQU CLOCKORG+35
  146. VALARMFL  EQU CLOCKORG+36     ;THIS FLAG WILL BE ZEROED WHEN ALARM GOES OFF
  147. ;
  148. ; SYNONYM:
  149. ;--------
  150. SPEED     EQU VTEMPOHI
  151. ;
  152.          CHN INT0DRVR.SC0
  153.