home *** CD-ROM | disk | FTP | other *** search
/ Mega Magazine 5 / Mega_Magazine_05_19xx___nl_Side_B.atr / sampling.lzh / PLAYCONS.SRC < prev   
Text File  |  1988-09-01  |  3KB  |  234 lines

  1. *************************************
  2. *                                   *
  3. *         - SAMPLE PLAYER -         *
  4. *                                   *
  5. * PLAY ONLY ONE BIT OF EACH SAMPLE  *
  6. *   THROUGH THE CONSOLE SPEAKER!    *
  7. *                                   *
  8. *   (C)1992 FRANKENSTEIN (YEAH!)    *
  9. *                                   *
  10. *************************************
  11.  
  12. SPBEG    EQU $0700
  13. SPEND    EQU $B3FF
  14.  
  15. ZP    EQU $F0        (AND $F1)
  16. END    EQU $F2        (AND $F3)
  17. SPLBYTE    EQU $F4
  18.  
  19. TAB01    EQU $B600
  20. TAB23    EQU $B700
  21. TAB45    EQU $B800
  22. TAB67    EQU $B900
  23.  
  24. TAB0123    EQU $BA00
  25. TAB4567    EQU $BB00
  26.  
  27.     ORG $B400
  28.  
  29.     LDA #SPBEG:L
  30.     STA ZP
  31.     LDA #SPBEG:H
  32.     STA ZP+1
  33.  
  34.     LDA #SPEND:L
  35.     STA END
  36.     LDA #SPEND:H
  37.     STA END+1
  38.  
  39. *------------------------------------
  40. * MAIN LOOP
  41. *------------------------------------
  42.  
  43.     JSR MAKTAB
  44.     JSR INTOFF
  45.     JSR PLAY
  46.     JSR INTON
  47.     RTS
  48.  
  49. *------------------------------------
  50. * CREATE A LOOKUP TABLES:
  51. *
  52. * PLAY MSB OF 4-BIT SAMPLE:
  53. *
  54. * TAB0123: ----x---
  55. * TAB4567: x-------
  56. *
  57. * TAB01  : ------x-
  58. * TAB23  : ----x---
  59. * TAB45  : --x-----
  60. * TAB67  : x-------
  61. *
  62. * x      : BITS USED TO LOOKUP
  63. * -      : DOESN'T MATTER BITS
  64. *------------------------------------
  65.  
  66. * 4-BITS/SAMPLE (ONLY 1 BIT USED!)
  67.  
  68. MAKTAB    LDX #0
  69.  
  70. N0123    TXA
  71.     AND #%00001000
  72.     STA TAB0123,X
  73.     INX
  74.     BNE N0123
  75.  
  76. N4567    TXA
  77.     AND #%10000000
  78.     LSR
  79.     LSR
  80.     LSR
  81.     LSR
  82.     STA TAB4567,X
  83.     INX
  84.     BNE N4567
  85.  
  86. * 2-BITS/SAMPLE (ONLY 1-BIT USED)
  87.  
  88. N01    TXA
  89.     AND #%00000010
  90.     ASL
  91.     ASL
  92.     STA TAB01,X
  93.     INX
  94.     BNE N01
  95.  
  96. N23    TXA
  97.     AND #%00001000
  98.     STA TAB23,X
  99.     INX
  100.     BNE N23
  101.  
  102. N45    TXA
  103.     AND #%00100000
  104.     LSR
  105.     LSR
  106.     STA TAB45,X
  107.     INX
  108.     BNE N45
  109.  
  110. N67    TXA
  111.     AND #%10000000
  112.     LSR
  113.     LSR
  114.     LSR
  115.     LSR
  116.     STA TAB67,X
  117.     INX
  118.     BNE N67
  119.  
  120.     RTS
  121.  
  122. *------------------------------------
  123. * INTERRUPTS OFF
  124. *------------------------------------
  125.  
  126. INTOFF    LDA #0
  127.     STA $D20E
  128.     STA $D40E
  129.     RTS
  130.  
  131. *------------------------------------
  132. * INTERRUPTS ON
  133. *------------------------------------
  134.  
  135. INTON    LDA 16
  136.     STA $D20E
  137.     LDA #$C0
  138.     STA $D40E
  139.     RTS
  140.  
  141. *------------------------------------
  142. * THIS ROUTINE PLAYS 2-BIT SAMPLES
  143. * HOLD FIRE FOR 4-BIT PLAYING
  144. *------------------------------------
  145.  
  146. PLAY    LDY #0
  147.  
  148. NOHO    LDA (ZP),Y
  149.     STA SPLBYTE
  150.     LDA $D010
  151.     BNE TWOBIT    ;NO FIRE
  152.  
  153. * PLAY: xxxx0000
  154.  
  155.     LDA SPLBYTE
  156.     TAX
  157.     LDA TAB4567,X
  158.  
  159.     STA $D40A
  160.     STA $D40A
  161.     STA $D01F
  162.  
  163. * PLAY: 0000xxxx
  164.  
  165.     LDA SPLBYTE
  166.     TAX
  167.     LDA TAB0123,X
  168.  
  169.     STA $D40A
  170.     STA $D40A
  171.     STA $D01F
  172.     JMP NEXBT
  173.  
  174. *------------------------------------
  175. * 2-BIT PLAY ROUTINE
  176. *------------------------------------
  177.  
  178. * PLAY: x-------
  179.  
  180. TWOBIT    LDA SPLBYTE
  181.     TAX
  182.     LDA TAB67,X
  183.  
  184.     STA $D40A
  185.     STA $D01F
  186.  
  187. * PLAY: --x-----
  188.  
  189.     LDA SPLBYTE
  190.     TAX
  191.     LDA TAB45,X
  192.  
  193.     STA $D40A
  194.     STA $D01F
  195.  
  196. * PLAY: ----x---
  197.  
  198.     LDA SPLBYTE
  199.     TAX
  200.     LDA TAB23,X
  201.  
  202.     STA $D40A
  203.     STA $D01F
  204.  
  205. * PLAY: ------x-
  206.  
  207.     LDA SPLBYTE
  208.     TAX
  209.     LDA TAB01,X
  210.  
  211.     STA $D40A
  212.     STA $D01F
  213.  
  214. *------------------------------------
  215. * GET NEXT BYTE FROM DATA
  216. *------------------------------------
  217.  
  218. NEXBT    INC ZP
  219.     BNE NOWAY
  220.     INC ZP+1
  221.  
  222. NOWAY    LDA ZP+1
  223.     CMP END+1
  224.     BNE NOHO
  225.     LDA ZP
  226.     CMP END
  227.     BNE NOHO
  228.  
  229.     RTS
  230.  
  231. * VARS
  232.  
  233. LEN    DFB 0,0
  234. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯