Compucolor.org – Virtual Media

Listing of file='SOUNDD.BAS;01' on disk='vmedia/multi_peripheral_interface_demo-sector.ccvf'

100 REM  ** SOUND DEMO - MODIFIED JULY 19,79 **
110 REM              COPYRIGHT  4-79
120 REM              CAP ELECTRONICS
130 REM 
140 TM= PEEK (32940)+ PEEK (32941)* 256:POKE 32936,2
150 IF TM> 64* 1024- 4THEN LOAD "PATCH":RUN
160 IF PEEK (TM+ 180)< > 241THEN LOAD "PATCH":RUN
170 DA= TM+ 8:AD= 33283:GOSUB 60000
180 CLEAR 100
190 BD$= "twtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwt"
200 OUT 8,247
210 BL$= "                                                            "
220 BV$= "twtwtwtwtwtwtwtwt"
230 P= 100:D= 500:NS= 0:S1= 0:S2= 0
240 CB$= "               "
250 DIM CI(11):RESTORE 1030:FOR N= 0TO 11
260 READ CI(N):NEXT
270 REM   SOUND EXPERIMENTER
280 PLOT 6,7,12,15
290 GOSUB 720
300 TM= PEEK (32940)+ 256* PEEK (32941)+ 1
310 PRINT "                                                              "
320 PLOT 14,3,1,2
330 PRINT "          cf tu ab pb nu ab ~| {d {e    nu {e pq tu           "
340 PLOT 3,1,4
350 PRINT "          gd vw vw as lw rs no a| l    lw l ab vw           "
360 PLOT 3,1,6
370 PRINT "                                                              "
380 PLOT 3,1,6,15
390 PRINT "                      BY CAP ELECTRONICS                      "
400 POKE TM,50:POKE TM+ 2,15:POKE TM+ 4,0
410 REM     SCREEN FILLER
420 GOSUB 1920
430 PLOT 6,0
440 PLOT 6,0,3,1,29:PRINT " ENTER M TO GO BACK TO THE MENU, ENTER Q TO QUIT THIS PLAYING"
450 PLOT 3,3,27,6,0:PRINT BL$
460 PLOT 3,22,27:PRINT "PRESS YOUR CHOICE - ";
470 OUT 8,255:CH= CALL (2):OUT 8,247
480 CH$= CHR$ (CH)
490 PRINT CH$
500 REM     CHOOSER
510 IF CH$= "Q"THEN GOSUB 620:GOTO 670
520 IF CH$= "M"THEN GOSUB 620:GOTO 700
530 NN= ASC (CH$)- 64
540 IF (NN< 1)OR (NN> 12)THEN X= CALL (0):GOTO 450
550 ON NNGOSUB 1090,1150,1200,1250,1320,1390,1460,1530,1600,1650,1750,1810
560 GOTO 450
570 REM     SOUND POKER
580 AD= TM:DA= P:GOSUB 60000
590 AD= TM+ 2:DA= D:GOSUB 60000
600 POKE TM+ 4,NS:POKE TM+ 5,S1:POKE TM+ 6,S2
610 XX= CALL (0):RETURN
620 REM   ENDING
630 X= CALL (0)
640 X= 1:Y= 9:H= 22:W= 62:C= 1:GOSUB 60020
650 FOR NN= 1TO 21:XC= CALL (1):NEXT
660 RETURN
670 PLOT 3,22,19,14
680 PLOT 6,0:OUT 8,255
690 PRINT "BYE BYE, COME AGAIN":PLOT 27,11,15:END
700 PLOT 3,22,19,14,6,0
710 PRINT "BACK TO THE MENU":LOAD "MENU":RUN
720 REM        BORDER DRAWER
730 PLOT 6,0,12,15
740 GOSUB 860
750 PLOT 6,10,27,24,3,0,0
760 PRINT BD$:PLOT 3,0,8:PRINT BD$:PLOT 3,0,31:PRINT BD$
770 PLOT 3,0,14:PRINT BD$:PLOT 3,0,20:PRINT BD$
780 PLOT 3,0,26:PRINT BD$
790 PLOT 27,10,3,0,0:PRINT BD$
800 PLOT 3,63,0:PRINT BD$
810 PLOT 3,16,9:PRINT BV$
820 PLOT 3,32,9:PRINT BV$:PLOT 3,48,9:PRINT BV$
830 PLOT 27,24,3,1,1
840 POKE TM,50:POKE TM+ 2,15
850 RETURN
860 L= 0
870 FOR X= 1TO 60STEP 16
880 FOR Y= 9TO 25STEP 6
890 GOSUB 1010:L= L+ 1:NEXT :NEXT
900 L= 0:RESTORE 1040
910 FOR X= 3TO 60STEP 16:FOR Y= 9TO 25STEP 6
920 PLOT 6,CI(L)
930 PLOT 3,X- 1,Y:READ N$:PRINT N$
940 PLOT 3,X,Y+ 2,14:READ N$:PRINT N$
950 PLOT 3,X,Y+ 4:READ N$:PRINT N$
960 PLOT 15
970 IF D8= 1THEN 990
980 L= L+ 1:NEXT :NEXT
990 PLOT 15
1000 D8= 1:RETURN
1010 PLOT 6,CI(L)
1020 FOR N= 0TO 5:PLOT 3,X,Y+ N:PRINT CB$:NEXT :RETURN
1030 DATA 48,6,48,6,48,6,48,6,48,6,48,6
1040 DATA "A","S A U C E R","","E","L I T T L E"," B I R D S","I"," T H E I R","P O L I C E"
1050 DATA "B","L I T T L E"," L A S E R","F","  B I G","B I R D S","J","   O U R"
1060 DATA "P O L I C E","C","  B I G","L A S E R","G","C H I P -","M U N K S","K","R 2 - D 2"
1070 DATA " T A L K","D"," B O M B",""
1080 DATA "H"," P O N G","","L"," B A C H"," T A L K"
1090 REM     SAUCER
1100 X= 3:Y= 9:PLOT 6,118:RESTORE 1040:GOSUB 930
1110 P= 250:D= 25:NS= 249:S1= 5:S2= 249
1120 GOSUB 570
1130 X= 3:Y= 9:PLOT 6,48:RESTORE 1040:GOSUB 930
1140 RETURN
1150 REM   LITTLE LASER
1160 X= 19:Y= 9:M= 9:PLOT 6,70:GOSUB 2030:GOSUB 930
1170 P= 15:D= 10:NS= 30:S1= 1:S2= 0
1180 FOR NN= 1TO 10:GOSUB 570:NEXT
1190 X= 19:Y= 9:M= 9:PLOT 6,6:GOSUB 2030:GOSUB 930:RETURN
1200 REM   BIG LASER
1210 X= 35:Y= 9:M= 18:PLOT 6,118:GOSUB 2030:GOSUB 930
1220 P= 5:D= 5:NS= 100:S1= 2:S2= 0
1230 FOR NN= 1TO 5:GOSUB 570:NEXT
1240 X= 35:Y= 9:M= 18:PLOT 6,48:GOSUB 2030:GOSUB 930:RETURN
1250 REM   BOMB
1260 X= 51:Y= 9:M= 27:PLOT 6,70:GOSUB 2030:GOSUB 930
1270 P= 15:D= 15:NS= 150:S1= 1:S2= 0
1280 GOSUB 570
1290 P= 767:D= 5:NS= 20:S1= 129:S2= 127
1300 GOSUB 570
1310 X= 51:Y= 9:M= 27:PLOT 6,6:GOSUB 2030:GOSUB 930:RETURN
1320 REM   LITTLE BIRDS
1330 X= 3:Y= 15:M= 3:PLOT 6,70:GOSUB 2030:GOSUB 930
1340 P= 25:D= 5:NS= 20:S1= 255:S2= 0
1350 FOR NN= 1TO 15:GOSUB 570:FOR NX= 1TO (5+ 99* RND (1)):NEXT
1360 NEXT
1370 X= 3:Y= 15:M= 3:PLOT 6,6:GOSUB 2030:GOSUB 930
1380 RETURN
1390 REM   BIG BIRDS
1400 X= 19:Y= 15:M= 12:PLOT 6,118:GOSUB 2030:GOSUB 930
1410 P= 40:D= 20:NS= 40:S1= 254:S2= 1
1420 FOR NN= 1TO 10:GOSUB 570:FOR NX= 1TO (5+ 150* RND (1)):NEXT
1430 NEXT
1440 X= 19:Y= 15:M= 12:PLOT 6,48:GOSUB 2030:GOSUB 930
1450 RETURN
1460 REM   CHIPMUNKS
1470 X= 35:Y= 15:M= 21:PLOT 6,70:GOSUB 2030:GOSUB 930
1480 P= 30:D= 2:NS= 25:S1= 1:S2= 0
1490 FOR NN= 1TO 10:GOSUB 570:FOR NX= 1TO (5+ 200* RND (1)):NEXT
1500 NEXT
1510 X= 35:Y= 15:M= 21:PLOT 6,6:GOSUB 2030:GOSUB 930
1520 RETURN
1530 REM   PONG
1540 X= 51:Y= 15:M= 30:PLOT 6,118:GOSUB 2030:GOSUB 930
1550 FOR NN= 1TO 10:P= 30:D= 25:NS= 0:S1= 0:S2= 0:GOSUB 570
1560 FOR NX= 1TO (100+ 300* RND (1)):NEXT
1570 P= 200:D= 7:NS= 0:S1= 0:S2= 0:GOSUB 570:FOR NX= 1TO (50+ 300* RND (1)):NEXT :NEXT
1580 X= 51:Y= 15:M= 30:PLOT 6,48:GOSUB 2030:GOSUB 930
1590 RETURN
1600 REM   THEIR POLICE
1610 X= 3:Y= 21:M= 6:PLOT 6,118:GOSUB 2030:GOSUB 930
1620 FOR NN= 1TO 5:P= 46:D= 15:NS= 30:S1= 5:S2= 251:GOSUB 570
1630 P= 108:D= 7:NS= 45:S1= 10:S2= 246:GOSUB 570:NEXT
1640 X= 3:Y= 21:M= 6:PLOT 6,48:GOSUB 2030:GOSUB 930:RETURN
1650 REM   OUR POLICE
1660 X= 19:Y= 21:M= 15:PLOT 6,70:GOSUB 2030:GOSUB 930
1670 NS= 200:FU= 200:FD= 100:D= 15:SU= 255:SD= 1
1680 NS= 100
1690 FOR NN= 1TO 2:POKE TM,200:POKE TM+ 2,D:POKE TM+ 4,NS:POKE TM+ 5,SU
1700 ZX= CALL (0)
1710 POKE TM,FD:POKE TM+ 2,D:POKE TM+ 4,NS:POKE TM+ 5,SD
1720 ZX= CALL (0)
1730 NEXT
1740 X= 19:Y= 21:M= 15:PLOT 6,6:GOSUB 2030:GOSUB 930:RETURN
1750 REM   R2-D2 TALK
1760 X= 35:Y= 21:M= 24:PLOT 6,118:GOSUB 2030:GOSUB 930
1770 FOR NN= 1TO 50
1780 POKE TM,(10+ RND (1)* 30):POKE TM+ 2,50
1790 ZX= CALL (0):NEXT
1800 X= 35:Y= 21:M= 24:PLOT 6,48:GOSUB 2030:GOSUB 930:RETURN
1810 REM   BACH TALK
1820 X= 51:Y= 21:M= 33:PLOT 6,70:GOSUB 2030:GOSUB 930
1830 FOR NN= 1TO 72STEP 2
1840 IF NN= 37THEN DU= 35:GOSUB 1880:NN= NN+ 2
1850 POKE TM,NO(NN):POKE TM+ 2,NO(NN+ 1)
1860 XZ= CALL (0)
1870 NEXT :GOSUB 1880:GOTO 1900
1880 POKE TM,24:POKE TM+ 1,1:POKE TM+ 2,DU:XZ= CALL (0)
1890 RETURN
1900 X= 51:Y= 21:M= 33:PLOT 6,6:GOSUB 2030:GOSUB 930
1910 RETURN
1920 REM    BACH LOADER
1930 RESTORE 1970:DIM NO(74)
1940 TE= 5800:FOR NN= 1TO 74STEP 2
1950 READ NO(NN):READ AD
1960 NO(NN+ 1)= INT (TE* AD/ NO(NN)):NEXT :RETURN
1970 REM    BACH DATA
1980 DATA 91,4,103,1,109,1,122,1,138,1,91,4,103,1,109,1
1990 DATA 122,1,138,1,223,1,211,1,187,2,211,2,223,2
2000 DATA 249,2,187,2,223,2,280,2,91,4,103,1,109,1
2010 DATA 122,1,138,1,91,4,103,1,109,1,122,1,138,1,223,1
2020 DATA 211,1,187,2,211,2,223,2,249,2,187,2,280,4
2030 REM 
2040 RESTORE 1040:FOR NN= 1TO M:READ A$:NEXT :RETURN
60000 Z1= INT (DA/ 256):Z2= DA- Z1* 256
60010 POKE AD,Z2:N= N+ 1:POKE AD+ 1,Z1:RETURN
60020 REM       SCROLLING SUBROUTINE
60030 DA= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 60000
60040 DA= 128- W- W:AD= TM+ 149:GOSUB 60000
60050 POKE TM+ 129,H- 1:POKE TM+ 131,W* (C+ 1)
60060 POKE TM+ 143,35* (1- C):RETURN