10 CLS:CLEAR:WIDTH20,8:MEMSET&HB00:DEFINTA-Z:DEFFIL8,0
20 OPTIONBASE0:DIM A(1,3,19),B(3),C(3),C$(7),Z(32)
30 LOCATES0,0,0:LOCATE5,2,0:PRINT"Columns II";:GOSUB510:GOSUB500:GOSUB500: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&HA69:READJ$:J=VAL("&H"+J$):POKEI,J:NEXTI
70 C=INT(RND*216):C(0)=C MOD6+1:C(1)=(C\6)MOD6+1:C(2)=C\36+1
80 FORI=1TO6:C$(I)=CHR$(224+I):NEXTI:C$(0)=CHR$(32)
90 M=16:N=INT(RND*4):LOCATE16-M,3-N:PRINTC$(C(2));C$(C(1));C$(C(0));:GOSUB500
100 A$=INKEY$:IFA$=""THENA=0ELSEA=ASC(A$):IFA=9THENGOSUB250:GOTO120
110 A=A-27:IFSGN(A)<>1THEN120ELSE:ONA GOSUB200,220,220,200,240
120 LOCATE16-M,3-N:PRINTCHR$(32);C$(C(2));C$(C(1));C$(C(0));:GOSUB500
130 M=M-1:IFM<>B(N)THEN100ELSEFORI=0TO2:A(0,N,M+I)=C(I):A(1,N,M+I)=C(I):NEXTI
140 B(N)=B(N)+3:GOSUB260:IFB(N)>15THEN150ELSE70
150 PUT%31,Z:FORI=0TO31:GET%I,Z(I):NEXTI
160 FORJ=30TO0STEP-1:FORI=0TOJ:IFZ(I)<Z(I+1)THENSWAPZ(I),Z(I+1)
170 NEXTI,J:FORI=0TO31:PUT%I,Z(I):NEXTI
180 CLS:PRINTZ:FORI=0TO7:PRINTUSING"#####";Z(I);:NEXTI
190 GOSUB510:END
200 O=(N+1)MOD4:IFM<=B(O)THENRETURN
210 LOCATE16-M,3-N:PRINTSTRING$(3,32);:N=O:RETURN
220 O=(N+3)MOD4:IFM<=B(O)THENRETURN
230 LOCATE16-M,3-N:PRINTSTRING$(3,32);:N=O:RETURN
240 O=B(N):LOCATE16-M,3-N:PRINTSTRING$(3,32);:M=O+1:RETURN
250 SWAPC(0),C(1):SWAPC(1),C(2):RETURN
260 FLAG=0:A$=INKEY$:A$=INKEY$:A$=INKEY$:A$=INKEY$
270 FORJ=0TO3:FORI=1TO14:IFA(0,J,I)=0THENI=14:GOTO300
280 IF(A(0,J,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J,I+1))=0THEN290ELSE300
290 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J,I+K)=7:LOCATE18-I-K,3-J:PRINTCHR$(224);:NEXTK
300 NEXTI,J
310 FORJ=1TO2:FORI=0TO15:IFA(0,J,I)=0THENI=15:GOTO340
320 IF(A(0,J-1,I)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J+1,I))=0THEN330ELSE340
330 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J+K,I)=7:LOCATE18-I,3-J-K:PRINTCHR$(224);:NEXTK
340 NEXTI,J
350 FORJ=1TO2:FORI=1TO14:IFA(0,J,I)=0THENI=14:GOTO380
360 IF(A(0,J-1,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J+1,I+1))=0THEN370ELSE380
370 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J+K,I+K)=7:LOCATE18-I-K,3-J-K:PRINTCHR$(224);:NEXTK
380 NEXTI,J
390 FORJ=1TO2:FORI=1TO14:IFA(0,J,I)=0THENI=14:GOTO420
400 IF(A(0,J+1,I-1)EQVA(0,J,I)IMPA(0,J,I)XORA(0,J-1,I+1))=0THEN410ELSE420
410 FLAG=1:Z=Z+1:FORK=-1TO1:A(1,J-K,I+K)=7:LOCATE18-I-K,3-J+K:PRINTCHR$(224);:NEXTK
420 NEXTI,J
430 IFFLAG=1THENGOSUB520ELSEGOSUB510:RETURN
440 FORJ=0TO3:K=-1:FORI=0TO15:IFA(1,J,I)=0THENI=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)=0:NEXTI,J
470 FORJ=0TO3:LOCATE3,3-J:FORI=15TO0STEP-1:PRINTC$(A(0,J,I));:NEXTI,J
480 FORI=0TO15:FORJ=0TO3:A(1,J,I)=A(0,J,I):NEXTJ,I
490 GOSUB530:GOTO260:RETURN
500 FORI=1TO192:NEXTI:RETURN
510 SOUND1,1:SOUND11,1:SOUND21,1:RETURN
520 FORE=1TO112STEP7:SOUNDE,1:NEXTE:RETURN
530 FORE=1TO112STEP8:SOUNDE,1:NEXTE:RETURN
540 DATA 56,25,2F,25,56,00
550 DATA FF,81,81,81,81,FF,FF,A5,81,81,A5,FF
560 DATA FF,81,99,99,81,FF,FF,D5,AB,D5,AB,FF
570 DATA FF,FF,E7,E7,FF,FF,FF,DB,FF,FF,DB,FF
