Compucolor.org – Virtual Media

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

100 REM K  KALEIDOSCOPE      BY PATRICK LEABO
101 POKE 32940,255:POKE 32941,159:CLEAR 1000
102 POKE 33283,7:POKE 33284,160
105 LOAD "NEWML5.DAT;1"
107 DIM MT(25),DT(25)
110 TM= PEEK (32940)+ PEEK (32941)* 256+ 1
120 POKE TM,50:POKE TM+ 1,0
130 POKE 33278,255
150 PLOT 6,4,12,15,27,11
155 PLOT 27,24
200 PLOT 12
210 PLOT 6,1,12
220 A= 31:B= 15:X1= 16:Y1= 8
225 A= INT (RND (1)* 20+ 29):B= INT (RND (1)* 10+ 14)
230 RESTORE 250
240 FOR N= 0TO 7:READ DX(N):READ DY(N):NEXT
250 DATA 1,0,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1
252 FOR N= 0TO 7:READ NT(N)
253 DU(N)= INT (8000/ NT(N))
254 NEXT
255 DATA 77,68,60,57,51,45,39,37
256 FOR N= 0TO 24:READ MT(N):DT(N)= INT (8000/ MT(N)):NEXT
258 DATA 154,146,138,130,122,115,109,103,97,91,86,81,77,72,68,64,60,57,54,51,48,45,42,39,37
259 PLOT 12
260 REM  SQUARES
290 FOR NN= 1TO 50
300 DI= INT (8* RND (1))
310 IF RND (1)< .25THEN CC= INT (100* RND (1)):PLOT 6,CC:GOSUB 800
315 GOSUB 700
320 FOR N= 1TO INT (RND (1)* 8)
330 X1= X1+ DX(DI):Y1= Y1+ DY(DI)
340 IF X1< 0THEN X1= A:GOTO 360
350 IF X1> ATHEN X1= 0
360 IF Y1< 0THEN Y1= B:GOTO 380
370 IF Y1> BTHEN Y1= 0
380 X2= 63- X1:Y2= 31- Y1
390 PLOT 3,X1,Y1:PRINT "`";
400 PLOT 3,X1,Y2:PRINT "`";
410 PLOT 3,X2,Y1:PRINT "`";
420 PLOT 3,X2,Y2:PRINT "`";
425 PLOT 8:PRINT
430 NEXT :NEXT
435 REM  VECTORS
440 FOR CC= 0TO 12:GOSUB 900:NEXT
442 CC= INT (63* RND (1))
445 IF RND (1)= .5THEN CC= 1
446 IF RND (1)> .5THEN CC= CCAND 15
447 MA= CCAND 56
450 PLOT 6,CC,12:CC= CCAND 15
452 IF CC> 12THEN CC= 12
455 GOSUB 1000
500 A= INT (RND (1)* 50+ 60):B= INT (RND (1)* 50+ 60):GOSUB 600
505 FOR N= 1TO 50
510 X1= X3:X2= X4:Y1= Y3:Y2= Y4:GOSUB 600
515 DI= INT ((X3/ A)* 8):GOSUB 1000
520 PLOT 2,253,X1,Y1,242,X3,Y3,255
530 PLOT 2,253,X1,Y2,242,X3,Y4,255
540 PLOT 2,253,X2,Y1,242,X4,Y3,255
550 PLOT 2,253,X2,Y2,242,X4,Y4,255
560 IF RND (1)< .25THEN CC= INT (8* RND (1)):GOSUB 900:PLOT 6,CCOR MA
570 IF RND (1)< .1THEN PLOT 31
580 NEXT
585 FOR CC= 0TO 12:GOSUB 900:NEXT
595 CC= INT (63* RND (1)):GOTO 200
599 REM  SOUNDS
600 X3= INT (A* RND (1)):Y3= INT (B* RND (1)):X4= 127- X3:Y4= 127- Y3:RETURN
700 IF PEEK (33278)< > 255THEN LOAD "MENU":RUN
710 POKE TM,NT(DI):POKE TM+ 2,DU(DI):X= CALL (0):RETURN
800 OK= OK+ 1:IF OK> 2THEN OK= 0
801 ON OKGOTO 830,842
802 NS= 4:GOSUB 850
804 NS= 0:GOSUB 850:NS= 2:GOSUB 850
805 NS= 4:GOSUB 850:NS= 7:GOSUB 850
825 RETURN
830 NS= 1:GOSUB 850:NS= 3:GOSUB 850
833 NS= 4:GOSUB 850:NS= 6:GOSUB 850
840 RETURN
842 NS= 0:GOSUB 850:NS= 3:GOSUB 850
844 NS= 5:GOSUB 850:NS= 7:GOSUB 850:RETURN
850 IF PEEK (33278)< > 255THEN LOAD "MENU":RUN
860 POKE TM,NT(NS):POKE TM+ 2,DU(NS):X= CALL (0):RETURN
900 REM  MORE SOUNDS
910 NS= 0+ CC:GOSUB 950
915 NS= 4+ CC:GOSUB 950
920 NS= 7+ CC:GOSUB 950
925 NS= 12+ CC:GOSUB 950
930 RETURN
950 IF PEEK (33278)< > 255THEN LOAD "MENU":RUN
960 POKE TM,MT(NS):POKE TM+ 2,DT(NS):X= CALL (0):RETURN
1000 ON DI+ 1GOTO 1010,1010,1030,1030,1050,1050,1080,1080
1010 NS= 0+ CC:GOSUB 950:RETURN
1020 NS= 2+ CC:GOSUB 950:RETURN
1030 NS= 4+ CC:GOSUB 950:RETURN
1040 NS= 5+ CC:GOSUB 950:RETURN
1050 NS= 7+ CC:GOSUB 950:RETURN
1060 NS= 9+ CC:GOSUB 950:RETURN
1070 NS= 11+ CC:GOSUB 950:RETURN
1080 NS= 12+ CC:GOSUB 950:RETURN