Color Computer Speech and Sound Cartridge - Appendix E
S/SC Demonstration Program

This program demonstrates many of the capabilities of the S/SC--simultaneous speech and sound, music generation, complex sound effects, use of commands and sound registers, and so on.

10 REM ************************
20 REM ****  DEMO PROGRAM  ****
30 REM ** FOR SPEECH/SOUND ****
40 REM **     CARTRIDGE     ***
50 REM ************************
60 REM ************************
70 CLEAR 512
80 X=&HFF00:Y=&HFF7E:Z=&HFF7D
90 DIM P$(8)
100 REM
110 REM SETUP
120 REM
130 POKE Z,1:POKEZ,0
140 POKE X+1,52:POKE X+3,63
150 POKE X+35,60
160 REM
170 REM
180 REM DEFINE SPEECH STRINGS
190 REM
200 GOSUB 2890
210 REM
220 REM
230 REM LOAD SPEECH STRINGS
240 REM
250 PRINT "LOADING SPEECH"
260 FOR C=1TO8
270 GOSUB 3360
280 NEXT C
290 REM
300 REM
310 REM LOAD SOUNDS
320 REM
330 PRINT "LOADING SOUND"
340 FOR C=1 TO 6
350 GOSUB 3490
360 NEXT C
370 REM
390 REM EXECUTE DEMO
400 REM
410 PRINT "DEMONSTRATING"
420 REM
430 REM LOAD BASE TIMER
440 REM
450 GOSUB 3170
460 POKE Y,&H8F
470 GOSUB 3170
480 POKE Y,60
490 GOSUB 3170
500 REM
510 REM
520 REM EXEC SPEECH BUFFER 0
530 REM
540 POKE Y,208
550 GOSUB 3230
560 GOSUB 3030
570 GOSUB 3170
580 REM
590 REM
600 REM EXEC SPEECH BUFFER 1
610 REM
620 POKE Y,209
630 GOSUB 3030
640 GOSUB 3170
650 REM
660 REM
670 REM EXEC SPEECH BUFFER 4
680 REM
690 POKE Y,212
700 GOSUB 3300
710 GOSUB 3030
720 GOSUB 3170
730 REM
740 REM
750 REM EXEC SOUND BUFFER 0
760 REM
770 POKE Y,216
780 GOSUB 3230
790 GOSUB 3100
800 GOSUB 3170
810 REM
820 REM
830 REM EXEC SPEECH BUFFER 5
840 REM
850 POKE Y,213
860 GOSUB 3230
870 GOSUB 3030
880 GOSUB 3170
890 REM
900 REM
910 REM EXEC SOUND BUFFER 1
920 REM
930 POKE Y,217
940 GOSUB 3230
950 GOSUB 3100
960 GOSUB 3170
970 REM
980 REM
990 REM EXEC SPEECH BUFFER 2
1000 REM
1010 POKE Y,210
1020 GOSUB 3030
1030 GOSUB 3170
1040 REM
1050 REM
1060 REM EXEC SPEECH BUFFER 4
1070 REM
1080 POKE Y, 212
1090 GOSUB 3230
1100 GOSUB 3030
1110 GOSUB 3170
1120 REM
1130 REM
1140 REM EXEC REG STR BUFFER 3
1150 REM
1160 POKE Y,251
1170 GOSUB 3230
1180 GOSUB 3100
1190 GOSUB 3170
1200 REM
1210 REM
1220 REM EXEC REG STR BUFFER 4
1240 POKE Y, 252
1250 GOSUB 3230
1260 GOSUB 3100
1270 GOSUB 3170
1280 REM
1290 REM
1300 REM EXEC REG STR BUFFER 3
1310 REM
1320 POKE Y, 251
1330 GOSUB 3230
1340 GOSUB 3100
1350 GOSUB 3170
1360 REM
1370 REM
1380 REM EXEC REG STR BUFFER 5
1390 REM
1400 POKE Y,253
1410 GOSUB 3230
1420 GOSUB 3100
1430 GOSUB 3170
1440 REM
1450 REM
1460 REM EXEC REG STR BUFFER 3
1470 REM
1480 POKE Y,251
1490 GOSUB 3230
1500 GOSUB 3100
1510 GOSUB 3170
1520 REM
1530 REM
1540 REM STOP ALL SOUND
1550 REM
1560 POKE Y,207
1570 GOSUB 3170
1580 REM
1590 REM
1600 REM EXEC SPEECH BUFFER 3
1610 REM
1620 POKE Y,211
1630 GOSUB 3230
1640 GOSUB 3230
1650 GOSUB 3230
1660 GOSUB 3030
1670 GOSUB 3170
1680 REM
1690 REM
1700 REM EXEC SOUND BUFFER 2
1710 REM
1720 POKE Y, 218
1730 GOSUB 3100
1740 GOSUB 3170
1750 REM
1760 REM
1770 REM EXEC SPEECH BUFFER 7
1780 REM
1790 POKE Y,215
1800 GOSUB 3170
1810 REM
1820 REM
1830 REM EXEC REG STR BUFFER
1840 REM
1850 POKE Y,251
1860 GOSUB 3100
1870 GOSUB 3170
1880 REM
1890 REM
1900 REM EXEC REG STR BUFFER 4
1910 REM
1920 POKE Y,252
1930 GOSUB 3100
1940 GOSUB 3170
1950 REM
1960 REM
1970 REM EXEC REG STR BUFFER 3
1980 REM
1990 POKE Y,251
2000 GOSUB 3100
2010 GOSUB 3170
2020 REM
2030 REM
2040 REM EXEC REG STR BUFFER 5
2050 REM
2060 POKE Y,253
2070 GOSUB 3100
2080 GOSUB 3170
2090 REM
2100 REM
2110 REM EXEC REG STR BUFFER 3
2120 REM
2130 POKE Y,251
2140 GOSUB 3100
2150 GOSUB 3170
2160 REM
2170 REM
2180 REM STOP ALL SOUND
2190 REM
2200 POKE Y,207
2210 GOSUB 3170
2220 REM
2230 REM
2240 REM EXEC SPEECH BUFFER 6
2250 REM
2260 POKE Y,214
2270 REM
2280 REM
2290 END
2300 REM
2310 REM TUNE 1
2320 REM COMMAND MODE SOUND
2340 DATA 11,0,214,6,0,0,0,6
2350 DATA 11,1,29,4,11,1,46,4
2360 DATA 11,1,29,4,11,1,13,12
2370 DATA 11,1,29,6,0,0,0,18
2380 DATA 11,0,226,6,0,0,0,6
2390 DATA 11,0,214,6,0,0,0,0
2400 REM
2410 REM
2420 REM TUNE 2
2430 REM COMMAND MODE SOUND
2440 REM
2450 DATA 11,0,214,6,0,0,0,0
2460 DATA 11,0,214,12,0,0,0,0
2470 DATA 11,0,214,12,0,0,0,0
2480 DATA 11,1,13,6,0,0,0,0
2490 DATA 11,0,254,12,0,0,0,0
2500 DATA 11,1,64,6,0,0,0,0
2510 REM
2520 REM
2530 REM GUNSHOT
2540 REM COMMAND MODE NOISE
2550 REM WITH ENVELOPE
2560 REM
2570 DATA 159,15,15,191,15,15
2580 DATA 223,15,15,98,0,14,5
2590 DATA 0,0,0,0
2600 REM
2610 REM
2620 REM C CHORD
2630 REM DIRECT REGISTER SOUND
2640 REM
2650 DATA 0,172,1,1,2,83,3,1
2660 DATA 4,29,5,1,6,0,7,56
2670 DATA 8,9,9,9,10,9,11,0
2680 DATA 12,0,13,0
2690 REM
2700 REM
2710 REM F CHORD
2720 REM DIRECT REGISTER SOUND
2740 DATA 0,172,1,1,2,64,3,1
2750 DATA 4,254,5,0,6,0,7,56
2760 DATA 8,9,9,9,10,9,11,0
2770 DATA 12,0,13,0
2780 REM
2790 REM
2800 REM G CHORD
2810 REM DIRECT REGISTER SOUND
2820 REM
2830 DATA 0,197,1,1,2,125,3,1
2840 DATA 4,29,5,1,6,0,7,56
2850 DATA 8,9,9,9,10,9,11,0
2860 DATA 12,0,13,0
2870 REM
2880 REM
2890 REM STRINGS
2900 REM TEXT-TO-SPEECH
2910 REM
2920 P$(1)="HELLO...I AM THE COLOR COMPUTER SOUND AND SPEECH CARTRIDGE."
2930 P$(2)="I CAN NOT ONLY TALK...I CAN ALSO PLAY MELODIES."
2940 P$(3)="I CAN PLAY CORDS."
2950 P$(4)="I CAN MAKE SOUND EFFECTS...LIKE THIS GUNSHOT."
2960 P$(5)="LIKE THIS."
2970 P$(6)="AND THIS."
2980 P$(7)="I HOPE YOU WILL ENJOY USING ME."
2990 P$(8)="I CAN PLAY CORDS WHILE SPEAKEYNG."
3000 RETURN
3010 REM
3020 REM
3030 REM SHEECH* CHECK
3040 REM
3050 FORQ=1TO800:NEXT Q
3060 IF (PEEK(Y) AND 64) = 0 THEN 3060
3070 RETURN
3080 REM
3090 REM
3100 REM SOUND* CHECK
3110 REM
3120 FORQ=1TO700:NEXT Q
3130 IF (PEEK(Y) AND 32) = 0 THEN 3130
3140 RETURN
3150 REM
3160 REM
3170 REM BUSY* CHECK
3180 REM
3190 IF (PEEK(Y) AND 128) = 0 THEN 3190
3200 RETURN
3210 REM
3220 REM
3230 REM SHORT DELAY
3240 REM
3250 GOSUB 3170
3260 FOR Q = 1 TO 800:NEXT Q
3270 RETURN
3280 REM
3290 REM
3300 REM LONG DELAY
3310 REM
3320 FOR Q=1 TO 6000:NEXT Q
3330 RETURN
3340 REM
3350 REM
3360 REM LOAD A STRING
3370 REM
3380 GOSUB 3170
3390 POKE Y,143+C
3400 FOR I=1 TO LEN(P$(C))
3410 GOSUB 3170
3420 POKE Y, ASC(MID$(P$(C),I,1))
3430 NEXT I
3440 GOSUB 3170
3450 POKE Y,13
3460 RETURN
3470 REM
3480 REM
3490 REM LOAD A SOUND
3500 REM
3510 IF C>2 THEN 3560
3520 K=48
3530 GOSUB 3170
3540 POKE Y,151+C
3550 GOTO 3600
3560 IF C=3 THEN K=17:GOTO 3530
3570 K=28
3580 GOSUB 3170
3590 POKE Y, 183+C
3600 FOR I=1 TO K
3610 READ D
3620 GOSUB 3170
3630 POKE Y,D
3640 NEXT I
3650 GOSUB 3170
3660 POKE Y,255
3670 RETURN
3680 REM
3690 REM