10 CLS:CLEAR:WIDTH20,8:MEMSET&HB00:DEFINTA-Z:DEFFIL8,0
20 OPTIONBASE0:DIMA(1,3,19),B(3),C(3),C$(4),Z(32)
30 LOCATES0,0,0:LOCATE7,2,0:PRINT"Columns";:GOSUB520:GOSUB510:GOSUB510:CLS
40 A=((VAL(LEFT$(TIME$,2))MOD6)*3600)+VAL(MID$(TIME$,4,2))*60+VAL(RIGHT$(TIME$,2))
50 RANDOMIZEA:POKE&H11E,&HA:POKE&H11F,&H40
60 FORI=&HA40 TO&HA5D:READJ$:J=VAL("&H"+J$):POKEI,J:NEXTI
70 FORJ=0TO3:FORI=0TO15:A(0,J,I)=4:A(1,J,I)=4:NEXTI,J
80 C=INT(RND*64):C(0)=C MOD4:C(1)=(C\4)MOD4:C(2)=C\16
90 FORI=0TO3:C$(I)=CHR$(225+I):NEXTI:C$(4)=CHR$(32)
100 M=16:N=INT(RND*4):LOCATE16-M,3-N:PRINTC$(C(2));C$(C(1));C$(C(0));:GOSUB510
110 A$=INKEY$:IFA$=""THENA=0ELSEA=ASC(A$):IFA=9THENGOSUB260:GOTO130
120 A=A-27:IFSGN(A)<>1THEN130ELSE:ONA GOSUB210,230,230,210,250
130 LOCATE16-M,3-N:PRINTCHR$(32);C$(C(2));C$(C(1));C$(C(0));:GOSUB510
140 M=M-1:IFM<>B(N)THEN110ELSEFORI=0TO2:A(0,N,M+I)=C(I):A(1,N,M+I)=C(I):NEXTI
150 B(N)=B(N)+3:GOSUB270:IFB(N)>15THEN160ELSE80
160 PUT%31,Z:FORI=0TO31:GET%I,Z(I):NEXTI
170 FORJ=30TO0STEP-1:FORI=0TOJ:IFZ(I)<Z(I+1)THENSWAPZ(I),Z(I+1)
180 NEXTI,J:FORI=0TO31:PUT%I,Z(I):NEXTI
190 CLS:PRINTZ:FORI=0TO7:PRINTUSING"#####";Z(I);:NEXTI
200 GOSUB520:END
210 O=(N+1)MOD4:IFM<=B(O)THENRETURN
220 LOCATE16-M,3-N:PRINTSTRING$(3,32);:N=O:RETURN
230 O=(N+3)MOD4:IFM<=B(O)THENRETURN
240 LOCATE16-M,3-N:PRINTSTRING$(3,32);:N=O:RETURN
250 O=B(N):LOCATE16-M,3-N:PRINTSTRING$(3,32);:M=O+1:RETURN
260 SWAPC(0),C(1):SWAPC(1),C(2):RETURN
270 FLAG=0:A$=INKEY$:A$=INKEY$:A$=INKEY$:A$=INKEY$
280 FORJ=0TO3:FORI=1TO14:IFA(0,J,I)=4THENI=14:GOTO310
290 IF(A(0,J,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J,I+1))=0THEN300ELSE310
300 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J,I+K)=7:LOCATE18-I-K,3-J:PRINTCHR$(224);:NEXTK
310 NEXTI,J:GOSUB530
320 FORJ=1TO2:FORI=0TO15:IFA(0,J,I)=4THENI=15:GOTO350
330 IF(A(0,J-1,I)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J+1,I))=0THEN340ELSE350
340 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J+K,I)=7:LOCATE18-I,3-J-K:PRINTCHR$(224);:NEXTK
350 NEXTI,J:GOSUB530
360 FORJ=1TO2:FORI=1TO14:IFA(0,J,I)=4THENI=14:GOTO390
370 IF(A(0,J-1,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J+1,I+1))=0THEN380ELSE390
380 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J+K,I+K)=7:LOCATE18-I-K,3-J-K:PRINTCHR$(224);:NEXTK
390 NEXTI,J:GOSUB530
400 FORJ=1TO2:FORI=1TO14:IFA(0,J,I)=4THENI=14:GOTO430
410 IF(A(0,J+1,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J-1,I+1))=0THEN420ELSE430
420 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J-K,I+K)=7:LOCATE18-I-K,3-J+K:PRINTCHR$(224);:NEXTK
430 NEXTI,J:GOSUB530
440 FORJ=0TO3:K=-1:FORI=0TO15:IFA(1,J,I)=4THENI=15:GOTO460
450 IFA(1,J,I)<>7THENK=K+1:A(0,J,K)=A(1,J,I)
460 NEXTI:B(J)=K+1:FORI=K+1TO15:A(0,J,I)=4:NEXTI,J
470 FORJ=0TO3:LOCATE3,3-J:FORI=15TO0STEP-1:PRINTC$(A(0,J,I));:NEXTI:GOSUB540:NEXTJ
480 FORI=0TO15:FORJ=0TO3:A(1,J,I)=A(0,J,I):NEXTJ,I
490 IFFLAG=1THEN270ELSE500
500 RETURN
510 FORE=1TO192:NEXTE:RETURN
520 SOUND1,1:SOUND11,1:SOUND21,1:RETURN
530 FORE=1TO112STEP7:SOUNDE,1:NEXTE:RETURN
540 FORE=1TO112STEP8:SOUNDE,1:NEXTE:RETURN
550 DATA 56,25,2F,25,56,00
560 DATA FF,81,81,81,81,FF,FF,A5,81,81,A5,FF,FF,D5,AB,D5,AB,FF,FF,DB,FF,FF,DB,FF
