home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-scene-files / Coverdisks / CDU / V3D11.D64 / sampleplayer.asm (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  3.5 KB  |  181 lines

  1. 1000 *=$C300
  2. 1010 ! --------------------------------
  3. 1020 ! C64 SAMPLE KIT - SAMPLE PLAYER
  4. 1030 ! SOURCE FILE FOR MIKRO & 6510+.
  5. 1040 !
  6. 1050 !   WRITTEN BY IAN (null)FFE 1990
  7. 1060 !   FOR COMMODORE DISK USER.
  8. 1070 !
  9. 1080 !       MEMORY REQUIREMENTS:-
  10. 1090 !
  11. 1100 !    SAMPLE:-       $2000-$A000
  12. 1110 !    SPLIT DATA:-   $C000-$C100
  13. 1120 !    TUNE:-         $C100-$C300
  14. 1130 !
  15. 1140 !
  16. 1150 !
  17. 1160 SAMPLE=$2000
  18. 1170 SPLITS=$C000
  19. 1180 TUNE=$C100
  20. 1190 !
  21. 1200 ZERO1=$FB
  22. 1210 !
  23. 1220 ! --------------------------------
  24. 1230 ! OBJECT CODE LEN:- $C5(197) BYTES
  25. 1240 ! --------------------------------
  26. 1250 !
  27. 1260 LDA #0
  28. 1270 STA 53280
  29. 1280 STA 53281    ! SCREEN->BLACK
  30. 1290 !
  31. 1300 SEI          ! DISABLE FOR SPEED
  32. 1310 LDA $D011
  33. 1320 AND #%11101111
  34. 1330 STA $D011    ! BLANK SCREEN
  35. 1340 JSR CLEARSID ! CLEAR SOUND CHIP
  36. 1350 JSR PLAYSEQ  ! MAIN PLAYER
  37. 1360 LDA $D011
  38. 1370 ORA #%00010000
  39. 1380 STA $D011    ! RESTORE SCREEN
  40. 1390 CLI          ! INTERRUPTS BACK ON
  41. 1400 RTS
  42. 1410 !
  43. 1420 !
  44. 1430 ! --------------------------
  45. 1440 CLEARSID !     CLEAR SOUND CHIP
  46. 1450 LDX #0
  47. 1460 TXA
  48. 1470 LP1 STA $D400,X
  49. 1480 INX
  50. 1490 CPX #24
  51. 1500 BNE LP1
  52. 1510 RTS
  53. 1520 ! --------------------------
  54. 1530 !
  55. 1540 !
  56. 1550 ! --------------------------
  57. 1560 ! PLAY A SINGLE SAMPLE SPLIT.
  58. 1570 ! 'START' HOLDS START HI BYTE.
  59. 1580 ! OF THE SAMPLE DATA.
  60. 1590 ! 'LAST' HOLDS THE END-HI BYTE
  61. 1600 ! ADDRESS OF THE SAMPLE.
  62. 1610 ! --------------------------
  63. 1620 PLAYASAMPLE LDX #0
  64. 1630 LDY START
  65. 1640 STX ZERO1
  66. 1650 STY ZERO1+1
  67. 1660 LDY #0
  68. 1670 PLAY !       ! LOOP A PAGE OF DATA
  69. 1680 LDA (ZERO1),Y  ! GET SAMPLE BYTE
  70. 1690 LSR A         ! GET DESIRED NIBBLE
  71. 1700 LSR A
  72. 1710 LSR A
  73. 1720 LSR A
  74. 1730 STA $D418    ! OUTPUT AS VOLUME
  75. 1740 LDX SPEED    ! DELAY BETWEEN BYTES
  76. 1750 DEL2 DEX
  77. 1760 BNE DEL2
  78. 1770 INY          ! NEXT BYTE IN PAGE
  79. 1780 BNE PLAY
  80. 1790 INC ZERO1+1  ! ADD 256 (HI BYTE+1)
  81. 1800 LDA ZERO1+1  ! TO READ NEXT PAGE
  82. 1810 CMP LAST     ! CHECK FOR LAST PAGE
  83. 1820 BNE PLAY
  84. 1830 RTS
  85. 1840 !
  86. 1850 START BYT <SAMPLE
  87. 1860 LAST BYT $A0
  88. 1870 SPEED BYT 09
  89. 1880 !
  90. 1890 ! --------------------------------
  91. 1900 !  MAIN PLAYER TO PLAY A "TUNE"
  92. 1910 !  OF SAMPLES.
  93. 1920 ! --------------------------------
  94. 1930 PLAYSEQ !
  95. 1940 LDX #0
  96. 1950 STX INSEQ
  97. 1960 RDS !
  98. 1970 LDY TUNE,X  ! READ SAMPLE # TO Y
  99. 1980 !
  100. 1990 ! ------> CHECK FOR FLAGS
  101. 2000 !
  102. 2010 CPY #131    ! 131=EXIT/END
  103. 2020 BEQ EXITSEQ
  104. 2030 !
  105. 2040 CPY #129    ! 129=SPEED CHANGE
  106. 2050 BEQ MAKESPEED
  107. 2060 CPY #130    ! 130=REPEAT TUNE
  108. 2070 BEQ REPEAT
  109. 2080 CPY #128    ! 128=DELAY WITH VALUE
  110. 2090 BEQ DOWAIT
  111. 2100 !
  112. 2110 !
  113. 2120 ! NOW Y MUST BE A "SPLIT" TO PLAY.
  114. 2130 !
  115. 2140 ! ----> READ PAGE NUMBERS TO PLAY
  116. 2150 !       FROM .... TO ....
  117. 2160 ! FOR THE 'PLAYASAMPLE' ROUTINE.
  118. 2170 !
  119. 2180 LDA SPLITS,Y
  120. 2190 STA START
  121. 2200 LDA SPLITS+128,Y
  122. 2210 STA LAST
  123. 2220 !
  124. 2230 ! READ # TIMES TO PLAY THIS SPLIT.
  125. 2240 !
  126. 2250 LDA TUNE+256,X
  127. 2260 STA LOOPCOUNT
  128. 2270 !
  129. 2280 ! -----> LOOPCOUNT=REPEAT VALUE.
  130. 2290 !
  131. 2300 LLL JSR PLAYASAMPLE ! PLAY SPLIT
  132. 2310 LDA $DC01          ! EXIT IF SPACE
  133. 2320 AND #%00010000     ! BAR PRESSED.
  134. 2330 BNE IEW
  135. 2340 JMP EXITSEQ
  136. 2350 IEW !
  137. 2360 DEC LOOPCOUNT      ! LOOP REPEATS
  138. 2370 BNE LLL
  139. 2380 NEXTINSEQ !
  140. 2390 INC INSEQ          ! SEQ. INDEX+1
  141. 2400 LDX INSEQ
  142. 2410 JMP RDS            ! NEXT STEP
  143. 2420 !
  144. 2430 EXITSEQ RTS
  145. 2440 !
  146. 2450 INSEQ BYT 0
  147. 2460 LOOPCOUNT BYT 0
  148. 2470 ! --------------------------------
  149. 2480 !
  150. 2490 ! HANDLE THE "SP" FLAG....
  151. 2500 !
  152. 2510 MAKESPEED LDA TUNE+256,X
  153. 2520 STA SPEED
  154. 2530 JMP NEXTINSEQ
  155. 2540 !
  156. 2550 ! "RP" FLAG....
  157. 2560 !
  158. 2570 REPEAT JMP PLAYSEQ
  159. 2580 !
  160. 2590 ! "WT" FLAG....
  161. 2600 !
  162. 2610 DOWAIT LDA TUNE+256,X
  163. 2620 STA LOOPCOUNT
  164. 2630 LLI JSR DELAY
  165. 2640 DEC LOOPCOUNT
  166. 2650 BNE LLI
  167. 2660 JMP NEXTINSEQ
  168. 2670 !
  169. 2680 DELAY LDX #10
  170. 2690 D2 DEY
  171. 2700 BNE D2
  172. 2710 DEX
  173. 2720 BNE D2
  174. 2730 RTS
  175. 2740 !
  176. 2750 !
  177. 2760 !        IG'1990.
  178. 2770 !
  179. 2780 !
  180. 2790 !
  181.