home *** CD-ROM | disk | FTP | other *** search
- 1000 *=$C300
- 1010 ! --------------------------------
- 1020 ! C64 SAMPLE KIT - SAMPLE PLAYER
- 1030 ! SOURCE FILE FOR MIKRO & 6510+.
- 1040 !
- 1050 ! WRITTEN BY IAN (null)FFE 1990
- 1060 ! FOR COMMODORE DISK USER.
- 1070 !
- 1080 ! MEMORY REQUIREMENTS:-
- 1090 !
- 1100 ! SAMPLE:- $2000-$A000
- 1110 ! SPLIT DATA:- $C000-$C100
- 1120 ! TUNE:- $C100-$C300
- 1130 !
- 1140 !
- 1150 !
- 1160 SAMPLE=$2000
- 1170 SPLITS=$C000
- 1180 TUNE=$C100
- 1190 !
- 1200 ZERO1=$FB
- 1210 !
- 1220 ! --------------------------------
- 1230 ! OBJECT CODE LEN:- $C5(197) BYTES
- 1240 ! --------------------------------
- 1250 !
- 1260 LDA #0
- 1270 STA 53280
- 1280 STA 53281 ! SCREEN->BLACK
- 1290 !
- 1300 SEI ! DISABLE FOR SPEED
- 1310 LDA $D011
- 1320 AND #%11101111
- 1330 STA $D011 ! BLANK SCREEN
- 1340 JSR CLEARSID ! CLEAR SOUND CHIP
- 1350 JSR PLAYSEQ ! MAIN PLAYER
- 1360 LDA $D011
- 1370 ORA #%00010000
- 1380 STA $D011 ! RESTORE SCREEN
- 1390 CLI ! INTERRUPTS BACK ON
- 1400 RTS
- 1410 !
- 1420 !
- 1430 ! --------------------------
- 1440 CLEARSID ! CLEAR SOUND CHIP
- 1450 LDX #0
- 1460 TXA
- 1470 LP1 STA $D400,X
- 1480 INX
- 1490 CPX #24
- 1500 BNE LP1
- 1510 RTS
- 1520 ! --------------------------
- 1530 !
- 1540 !
- 1550 ! --------------------------
- 1560 ! PLAY A SINGLE SAMPLE SPLIT.
- 1570 ! 'START' HOLDS START HI BYTE.
- 1580 ! OF THE SAMPLE DATA.
- 1590 ! 'LAST' HOLDS THE END-HI BYTE
- 1600 ! ADDRESS OF THE SAMPLE.
- 1610 ! --------------------------
- 1620 PLAYASAMPLE LDX #0
- 1630 LDY START
- 1640 STX ZERO1
- 1650 STY ZERO1+1
- 1660 LDY #0
- 1670 PLAY ! ! LOOP A PAGE OF DATA
- 1680 LDA (ZERO1),Y ! GET SAMPLE BYTE
- 1690 LSR A ! GET DESIRED NIBBLE
- 1700 LSR A
- 1710 LSR A
- 1720 LSR A
- 1730 STA $D418 ! OUTPUT AS VOLUME
- 1740 LDX SPEED ! DELAY BETWEEN BYTES
- 1750 DEL2 DEX
- 1760 BNE DEL2
- 1770 INY ! NEXT BYTE IN PAGE
- 1780 BNE PLAY
- 1790 INC ZERO1+1 ! ADD 256 (HI BYTE+1)
- 1800 LDA ZERO1+1 ! TO READ NEXT PAGE
- 1810 CMP LAST ! CHECK FOR LAST PAGE
- 1820 BNE PLAY
- 1830 RTS
- 1840 !
- 1850 START BYT <SAMPLE
- 1860 LAST BYT $A0
- 1870 SPEED BYT 09
- 1880 !
- 1890 ! --------------------------------
- 1900 ! MAIN PLAYER TO PLAY A "TUNE"
- 1910 ! OF SAMPLES.
- 1920 ! --------------------------------
- 1930 PLAYSEQ !
- 1940 LDX #0
- 1950 STX INSEQ
- 1960 RDS !
- 1970 LDY TUNE,X ! READ SAMPLE # TO Y
- 1980 !
- 1990 ! ------> CHECK FOR FLAGS
- 2000 !
- 2010 CPY #131 ! 131=EXIT/END
- 2020 BEQ EXITSEQ
- 2030 !
- 2040 CPY #129 ! 129=SPEED CHANGE
- 2050 BEQ MAKESPEED
- 2060 CPY #130 ! 130=REPEAT TUNE
- 2070 BEQ REPEAT
- 2080 CPY #128 ! 128=DELAY WITH VALUE
- 2090 BEQ DOWAIT
- 2100 !
- 2110 !
- 2120 ! NOW Y MUST BE A "SPLIT" TO PLAY.
- 2130 !
- 2140 ! ----> READ PAGE NUMBERS TO PLAY
- 2150 ! FROM .... TO ....
- 2160 ! FOR THE 'PLAYASAMPLE' ROUTINE.
- 2170 !
- 2180 LDA SPLITS,Y
- 2190 STA START
- 2200 LDA SPLITS+128,Y
- 2210 STA LAST
- 2220 !
- 2230 ! READ # TIMES TO PLAY THIS SPLIT.
- 2240 !
- 2250 LDA TUNE+256,X
- 2260 STA LOOPCOUNT
- 2270 !
- 2280 ! -----> LOOPCOUNT=REPEAT VALUE.
- 2290 !
- 2300 LLL JSR PLAYASAMPLE ! PLAY SPLIT
- 2310 LDA $DC01 ! EXIT IF SPACE
- 2320 AND #%00010000 ! BAR PRESSED.
- 2330 BNE IEW
- 2340 JMP EXITSEQ
- 2350 IEW !
- 2360 DEC LOOPCOUNT ! LOOP REPEATS
- 2370 BNE LLL
- 2380 NEXTINSEQ !
- 2390 INC INSEQ ! SEQ. INDEX+1
- 2400 LDX INSEQ
- 2410 JMP RDS ! NEXT STEP
- 2420 !
- 2430 EXITSEQ RTS
- 2440 !
- 2450 INSEQ BYT 0
- 2460 LOOPCOUNT BYT 0
- 2470 ! --------------------------------
- 2480 !
- 2490 ! HANDLE THE "SP" FLAG....
- 2500 !
- 2510 MAKESPEED LDA TUNE+256,X
- 2520 STA SPEED
- 2530 JMP NEXTINSEQ
- 2540 !
- 2550 ! "RP" FLAG....
- 2560 !
- 2570 REPEAT JMP PLAYSEQ
- 2580 !
- 2590 ! "WT" FLAG....
- 2600 !
- 2610 DOWAIT LDA TUNE+256,X
- 2620 STA LOOPCOUNT
- 2630 LLI JSR DELAY
- 2640 DEC LOOPCOUNT
- 2650 BNE LLI
- 2660 JMP NEXTINSEQ
- 2670 !
- 2680 DELAY LDX #10
- 2690 D2 DEY
- 2700 BNE D2
- 2710 DEX
- 2720 BNE D2
- 2730 RTS
- 2740 !
- 2750 !
- 2760 ! IG'1990.
- 2770 !
- 2780 !
- 2790 !
-