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

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