home *** CD-ROM | disk | FTP | other *** search
/ Mega Magazine 5 / Mega_Magazine_05_19xx___nl_Side_B.atr / sampling.lzh / FASTPLAY.SRC < prev    next >
Text File  |  1988-09-01  |  2KB  |  147 lines

  1. *************************************
  2. *                                   *
  3. *         - SAMPLE PLAYER -         *
  4. *                                   *
  5. *  THE FASTEST ONE FOR ATARI 8-BIT  *
  6. *  -------------------------------  *
  7. *    DELAY TIME: 26 CLOCK CYCLES    *
  8. *      (THIS IS ABOUT 68 KHZ!)      *
  9. *                                   *
  10. *  4-BITS SAMPLES (2 SAMPLES/BYTE)  *
  11. *                                   *
  12. *       (C)1992  FRANKENSTEIN       *
  13. *                                   *
  14. *************************************
  15.  
  16. SPBEG    EQU $0000
  17. SPEND    EQU $FFFF
  18.  
  19. SPL    EQU $F2        (AND $F3)
  20. DUMZP    EQU $F4
  21.  
  22. TAB0123    EQU $BA00
  23. TAB4567    EQU $BB00
  24.  
  25.     ORG $B800
  26.  
  27.     LDA #SPBEG:L
  28.     STA SPL
  29.     LDA #SPBEG:H
  30.     STA SPL+1
  31.  
  32.     LDA #SPEND:L
  33.     STA JERKL+1
  34.     LDA #SPEND:H
  35.     STA JERKH+1
  36.  
  37. *------------------------------------
  38. * MAIN LOOP
  39. *------------------------------------
  40.  
  41.     JSR MAKTAB
  42.     JSR INTOFF
  43.  
  44.     LDA #0
  45.     STA $D400
  46.     JSR PLAY
  47.  
  48.     JSR INTON
  49.     RTS
  50.  
  51. *------------------------------------
  52. * CREATE LOOKUP TABLES:
  53. **
  54. * TAB0123: ----xxxx
  55. * TAB4567: xxxx----
  56. *
  57. *------------------------------------
  58.  
  59. * 4-BITS/SAMPLE
  60.  
  61. MAKTAB    LDX #0
  62.  
  63. N0123    TXA
  64.     AND #%00001111
  65.     ORA #%00010000
  66.     STA TAB0123,X
  67.     INX
  68.     BNE N0123
  69.  
  70. N4567    TXA
  71.     AND #%11110000
  72.     LSR
  73.     LSR
  74.     LSR
  75.     LSR
  76.     ORA #%00010000
  77.     STA TAB4567,X
  78.     INX
  79.     BNE N4567
  80.  
  81.     RTS
  82.  
  83. *------------------------------------
  84. * INTERRUPTS OFF
  85. *------------------------------------
  86.  
  87. INTOFF    LDA #0
  88.     STA $D20E
  89.     STA $D40E
  90.     RTS
  91.  
  92. *------------------------------------
  93. * INTERRUPTS ON
  94. *------------------------------------
  95.  
  96. INTON    LDA 16
  97.     STA $D20E
  98.     LDA #$C0
  99.     STA $D40E
  100.     RTS
  101.  
  102. *------------------------------------
  103. * THIS ROUTINE PLAYS 4-BIT SAMPLES
  104. * AT THE HIGHEST POSSIBLE RATE!
  105. *------------------------------------
  106.  
  107. PLAY    LDY #0
  108.  
  109. * 15 CLOCK CYCLES IN:
  110.  
  111. RUN    LDA (SPL),Y    ; 5
  112.     TAX        ; 2
  113.     LDA TAB4567,X    ; 4
  114. *    STA $D40A
  115.     STA $D201    ; 4
  116.  
  117. * 11 CLOCK CYCLES IN:
  118.  
  119.     LDA SPL+1    ; 3
  120. JERKH    CMP #$FF        ; 2
  121.     BNE NO        ; 2
  122.  
  123. JERKL    CPY #$FF        ; 2
  124.     BNE EXIT        ; 2
  125.     RTS
  126.  
  127. NO    NOP        ; 2
  128.     NOP        ; 2
  129.  
  130. * 15 CLOCK CYCLES IN:
  131.  
  132. EXIT    LDA (SPL),Y    ; 5
  133.     TAX        ; 2
  134.     LDA TAB0123,X    ; 4
  135. *    STA $D40A
  136.     STA $D201    ; 4
  137.  
  138. * 11 CLOCK CYCLES IN:
  139.  
  140.     INY        ; 2
  141.     BNE HOLD        ; 2
  142.     INC SPL+1    ; 5
  143.     BNE RUN        ; 2
  144.  
  145. HOLD    STA DUMZP    ; 3
  146.     LDA #0        ; 2
  147.     BEQ RUN        ; 2¯¯¯¯¯¯¯¯¯