10 CLEAR:DEFINT I,J,P,Q:CLS 15 DIMP(63,62),Q(63,62):PRINT"Initializing...":FORI=0TO63:PRINT I;:FORJ=1TO62:P(I,J)=0:Q(I,J)=0:NEXT:NEXT 25 GOSUB 1000 30 GOSUB 200:CLS:LINE (0,0)-(63,63),1,B:LINE(68,0)-(131,63),1,B 35 FORI=1TO62:FORJ=1TO62:IF RND(1)>.5 THEN PSET (I,J) 45 GOSUB 100:NEXT:NEXT 60 GOTO 60 100 IF Q(I,J)<0 THEN RETURN 110 IF RND(0)>.5 THEN PSET(I+68+P(I,J),J) 120 IF Q(I,J)=0 THEN RETURN 130 FOR I2=1 TO Q(I,J):IF RND(1)>.5 THEN PSET(I-I2+P(I,J)+68,J) 190 NEXT:RETURN 200 PRINT "Composing...":FOR I=1 TO 62:PRINT I;:FOR J=1 TO 62: D=P(I+1,J)-P(I,J): IF D=0 THEN 290 220 IF D>0 THEN Q(I+1,J)=D:GOTO 290 230 FOR I2=1 TO -D:Q(I+1-I2,J)=-1:NEXT 290 NEXT:NEXT:RETURN 1000 PRINT"Setting up...":FORI=14TO46:PRINT I;:FORJ=15TO45:P(I,J)=4:NEXT:NEXT 1900 RETURN 2000 PRINT "Setting up...":FORI=10TO53:PRINTI;:FORJ=10TO53:P(I,J)=1:NEXT:NEXT 2100 FOR I=19 TO 44:FOR J=19 TO 44:P(I,J)=2:NEXT:NEXT 2200 FOR I=28 TO 35:FOR J=28 TO 35:P(I,J)=3:NEXT:NEXT 2900 RETURN 3000 PRINT"Setting up...":FORI=8TO55:X=-I/8:PRINT I; 3100 FOR J=10 TO 53:P(I,J)=(X-RND(1)/2):NEXT:NEXT 3900 RETURN 4000 PRINT "Setting up...":R=841:D=31 4100 FORI=2TOD:PRINTI;:R2=R-(I-D)*(I-D):J2=SQR(R2):FORJ=0TOJ2:R3=(SQR(R2-(J*J))-RND(1))/4 4300 P(I,D+J)=R3:P(I,D-J)=R3:P(62-I,D+J)=R3:P(62-I,D-J)=R3: NEXT:NEXT 4900 RETURN