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

  1. ; *****************************
  2. ; * MULTI.SRC2                *
  3. ; * (C) 1992, ERIC RANGELL    *
  4. ; *****************************
  5. ;
  6. ;
  7. ; PAGE FAULT LOGIC
  8. ;
  9. ; GO BACK UNTIL YOU FIND FILE POSITION WHERE NEXT PART TO BE LOADED
  10. ;
  11. PGFAULT  LDX   CURRTRK
  12.          LDA   CURADRL,X
  13.          STA   BACKPTR
  14.          LDA   CURADRH,X     ;GOT CURRENT ADDRESS OF FAULTING TRACK
  15.          STA   BACKPTR+1
  16.          JSR   DECRBACK
  17. ONEMORE  JSR   DECRBACK      ;SUBTRACT 2
  18.          LDY   #$00
  19.          LDA   (BACKPTR),Y   ;IF STS BYTE GO BACK ONE MORE
  20.          BMI   ONEMORE
  21.          INC   BACKPTR       ;ADD 1 
  22.          BNE   DONTADD1
  23.          INC   BACKPTR+1
  24. ;
  25. ;
  26. DONTADD1 LDX   CURRTRK       ;WE ARE POINTING TO 1ST BYTE OF INSTRUCTION
  27.          SEC                 ;WE WILL LOAD TRACK FROM THIS POSITION
  28.          LDA   BACKPTR
  29.          SBC   BUFRADRL,X    ;SUBTRACT STARTING ADRS OF TRACK
  30.          STA   BACKPTR       ;FROM BACKPTR
  31.          LDA   BACKPTR+1     ;TO GET RELATIVE OFFSET
  32.          SBC   BUFRADRH,X
  33.          STA   BACKPTR+1
  34.          CLC                 ;THEN ADD BACKPTR TO FILE POSN POINTER
  35.          LDA   BACKPTR
  36.          ADC   POSPTRL,X
  37.          STA   POSPTRL,X
  38.          LDA   BACKPTR+1
  39.          ADC   POSPTRM,X
  40.          STA   POSPTRM,X
  41.          LDA   #$00
  42.          ADC   POSPTRH,X
  43.          STA   POSPTRH,X
  44.          JMP   DOMLI
  45. ;
  46. MLIERROR JSR   $FDDA         ;PRINT RETURN CODE AND ABEND IF MLI ERROR
  47.          BRK
  48. ;
  49. DOMLI    LDA   CURRTRK       ;CREATE FILENAME FROM TRACK #: EX: T0, T1, T2
  50.          CLC
  51.          ADC   #$30
  52.          STA   FILENUM
  53. ;
  54.          JSR   MLI
  55.          DFB   $C8           ;OPEN FILE
  56.          DFB   >OPENPRM,<OPENPRM
  57.          BCS   MLIERROR
  58. ;
  59.          LDA   OPENREF
  60.          STA   POSNREF
  61.          STA   READREF
  62.          STA   CLOSREF
  63.          LDX   CURRTRK
  64.          LDA   POSPTRL,X
  65.          STA   POSNL
  66.          LDA   POSPTRM,X
  67.          STA   POSNM
  68.          LDA   POSPTRH,X
  69.          STA   POSNH
  70. ;
  71.          JSR   MLI
  72.          DFB   $CE ; SET POSITION
  73.          DFB   >POSNPARM,<POSNPARM
  74.          BCS   MLIERROR
  75. ;
  76.          LDX   CURRTRK
  77.          LDA   BUFRADRL,X
  78.          STA   READBUF
  79.          LDA   BUFRADRH,X
  80.          STA   READBUF+1
  81.          LDA   BUFRLENL,X
  82.          STA   READLEN
  83.          LDA   BUFRLENH,X
  84.          STA   READLEN+1
  85. ;
  86.          JSR   MLI
  87.          DFB   $CA    ; READ REQUEST
  88.          DFB   >READPARM,<READPARM
  89.          BCS   MLIERROR
  90. ;
  91.          JSR   MLI
  92.          DFB   $CC    ; CLOSE REQUEST
  93.          DFB   >CLOSPARM,<CLOSPARM
  94.          BCS   MLIERROR
  95. ;
  96. ; UPDATE POINTERS AFTER SUCCESSFUL READ FROM RAMDISK
  97. ;
  98.          LDX   CURRTRK
  99.          LDA   BUFRADRL,X
  100.          STA   CURADRL,X
  101.          LDA   BUFRADRH,X
  102.          STA   CURADRH,X
  103. ;
  104.          JSR   PRCSDLY       ;DO THE DELAY & JUMP BACK
  105.          JMP   MAINLINE
  106. ;
  107. OPENPRM  DFB  $03
  108.          DFB  >FILENAME,<FILENAME        ;PATHNAME ADDRESS
  109.          DFB  >MLIBUFR,<MLIBUFR          ;FILE BUFFER ADDRESS
  110. OPENREF  DFB  $00                        ;REFERENCE NUMBER
  111. ;
  112. FILENAME DFB  $02
  113.          DFB  $54          ;FILENAME = T0, T1,T2
  114. FILENUM  DFB  $30
  115. ;
  116. POSNPARM DFB  $02
  117. POSNREF  DFB  $01            ;FILE REFERENCE #
  118. POSNL    DFB  $00            ;NEW FILE POSITION
  119. POSNM    DFB  $00
  120. POSNH    DFB  $00
  121. ;
  122. READPARM DFB  $04
  123. READREF  DFB  $01            ;FILE REFERENCE #
  124. READBUF  DFB  $00,$20        ;DATA BUFFER ADDRESS
  125. READLEN  DFB  $00,$08        ; REQUESTED LENGTH
  126.          DFB  $00,$00        ; ACTUAL LENGTH
  127. ;
  128. CLOSPARM DFB  $01
  129. CLOSREF  DFB  $01            ;REFERENCE #
  130. ;
  131. ;================================================
  132. ;ADJUSTMENT ROUTINES - TO MAKE MUSIC SOUND MORE HUMAN
  133. ;ADJUST DURATION AND VELOCITY VALUES BY UP TO 2 STANDARD DEVIATIONS
  134. ;FOR DURATION: IF DUR > 30, ADJUST BY UP TO +-15
  135. ;FOR VELOCITY: IF VEL >=20 AND VEL <=115, ADJUST BY UP TO +-10
  136. ;
  137. RND      EQU       $EFAE     ;PUTS RANDOM # IN FAC
  138. FACBYTE  EQU       $9F       ;MIDDLE BYTE OF FAC
  139. ;
  140. TEMPA    DFB       $00
  141. TEMPX    DFB       $00
  142. TEMPY    DFB       $00
  143. ;
  144. ADJDRTN  STA       TEMPA
  145.          STX       TEMPX
  146.          STY       TEMPY
  147.          LDA       SMALLEST+2          ;HI BYTE
  148.          BNE       ADJDRTN0            ;IF >0, DEFINITELY ADJUST
  149.          LDA       SMALLEST+3          ;ELSE CHECK LO BYTE
  150.          CMP       #30
  151.          BEQ       ADJDROUT
  152.          BCC       ADJDROUT
  153. ADJDRTN0 JSR       RND
  154.          LDA       FACBYTE
  155.          AND       #$0F                ;RANDOM # 0-15
  156.          LDX       FACBYTE
  157.          BMI       SUBTRIT
  158.          CLC
  159.          ADC       SMALLEST+3
  160.          STA       SMALLEST+3
  161.          LDA       #$00
  162.          ADC       SMALLEST+2
  163.          STA       SMALLEST+2
  164.          JMP       EXIT
  165. SUBTRIT  SEC
  166.          SBC       SMALLEST+3
  167.          STA       SMALLEST+3
  168.          LDA       #$00
  169.          SBC       SMALLEST+2
  170.          STA       SMALLEST+2
  171. ADJDROUT JMP       EXIT
  172. ;
  173. ; FOR ADJVOL, BYTE IS IN ASAVE.
  174. ; FIRST FIGURE OUT IF WE HAVE A VOL BYTE.
  175. ;  IF ADJ MADE, PUT BACK IN ASAVE.
  176. ADJVOL   STA       TEMPA
  177.          STX       TEMPX
  178.          STY       TEMPY
  179.          LDA       ASAVE
  180.          STA       INBYTE
  181.          LDA       STS
  182.          BEQ       CHK90
  183.          LDA       INBYTE
  184.          BPL       STS91
  185. CHK90    LDA       INBYTE
  186.          AND       #$F0
  187.          CMP       #$90
  188.          BNE       INVAL
  189.          LDA       #$91
  190.          STA       STS
  191.          JMP       EXIT
  192. INVAL    LDA       #$00
  193.          STA       STS
  194.          JMP       EXIT
  195. STS91    LDA       STS
  196.          CMP       #$91
  197.          BNE       STS92
  198.          LDA       #$92
  199.          STA       STS
  200.          JMP       EXIT
  201. STS92    LDA       STS
  202.          CMP       #$92
  203.          BNE       STSEXIT
  204.          LDA       #$91
  205.          STA       STS
  206.          LDA       INBYTE
  207.          BEQ       STSEXIT   ;NOTEOFF - EXIT
  208. ;
  209. ; WE GOT IT!
  210.          CMP       #20       ;CHECK IF IN BOUNDS
  211.          BCC       STSEXIT
  212.          CMP       #116
  213.          BCS       STSEXIT
  214.          JSR       RND
  215.          LDA       FACBYTE
  216.          AND       #$0F                ;RANDOM # 0-15
  217.          CMP       #$0A
  218.          BCS       INRANGE
  219.          SEC
  220.          SBC       #$06
  221. INRANGE  LDX       FACBYTE
  222.          BMI       SUBIT
  223.          CLC
  224.          ADC       ASAVE
  225.          STA       ASAVE
  226.          JMP       EXIT
  227. SUBIT    SEC
  228.          SBC       ASAVE
  229.          STA       ASAVE
  230. STSEXIT  JMP       EXIT
  231. ;
  232. EXIT     LDA       TEMPA
  233.          LDX       TEMPX
  234.          LDY       TEMPY
  235.          RTS
  236. ;
  237. INBYTE   DFB       $00
  238. STS      DFB       $91
  239. ;
  240. ;=================================================
  241. EOF      DFB  $FF            ;EOF MARKER
  242. ;
  243. ;ADJUST ORIGIN BELOW DEPENDING ON LENGTH OF CODE
  244. ;
  245.          ORG  START+$700
  246. MLIBUFR  DS   $400
  247.