10 CLS'07/14/91,17:01:30 20 MEMSET&HB00:WIDTH20,8 30 OPTIONBASE0:DEFINTA-Z 40 LOCATES0,0,0:GOSUB2900 50 K=1:FORI=1TO2:FORJ=1TO56:K=(K*J)MOD56+1:SOUNDK,1:NEXTJ,I 60 DIMB(1,9,9),C(255),D(7,3),E(9,9),F(9,9),M(49),N(49),O(49),T(49),W(2,2),X(1,1),Y(1,1),Z(599) 70 POKE&H11E,&HA:POKE&H11F,&H40 80 FORI=&HA40 TO&HA6F:READJ$:J=VAL("&H"+J$):POKEI,J:NEXTI 90 FORI=0TO255:C(I)=9:NEXTI 100 FORI=0TO80:J=64*(I\27)+16*(I\9MOD3)+4*(I\3MOD3)+I MOD3:READC(J):NEXTI 110 FORJ=0TO3:FORI=0TO7:READD(I,J):NEXTI,J 120 FORK=1TO6:READTILE(K):NEXTK 130 RANDOMIZE((VAL(LEFT$(TIME$,2))MOD6)*3600)+VAL(MID$(TIME$,4,2))*60+VAL(RIGHT$(TIME$,2)) 140 I=4:J=4:W0=-8000:X(0,0)=9:X(0,1)=0:Y(0,0)=9:Y(0,1)=0:GCLS 150 REM @@@@@@@@@@@@@@@@ PHONE @@@@@@@@@@@@@@@@ 160 USER=0:GOSUB390 170 LOCATES0,1,0 180 X=I+10*(J\5):Y=J MOD5+J\5:K=7 190 SOUND20,1 200 A$=INKEY$:IFA$<>""THEN230 210 LOCATEX,Y:PRINTCHR$(224+K);:FORL=1TO50:NEXTL 220 LOCATEX,Y:PRINTCHR$(224+E(I,J));:FORL=1TO50:NEXTL 230 IFA$=""THEN200ELSEA=ASC(A$) 240 IFA=13THEN490ELSEIFA=32THENGOSUB300:GOTO190 250 IFA<28ORA>31THEN190ELSEONA-27GOSUB260,270,280,290:GOTO180 260 I=(I+1)MOD10:RETURN 270 I=(I+9)MOD10:RETURN 280 J=(J+9)MOD10:RETURN 290 J=(J+1)MOD10:RETURN 300 IFK=7THENK=0 310 K=K MOD6+1:RETURN 320 FORM0=X(1,0)TOX(1,1):FORN0=Y(1,0)TOY(1,1) 330 B(1,M0,N0)=B(0,M0,N0):NEXTN0,M0:RETURN 340 FORM0=0TO9:FORN0=0TO9 350 B(1,M0,N0)=B(0,M0,N0):NEXTN0,M0:RETURN 360 FORR=1TO8:FORS=1TO8 370 IFC(B(1,R,S))=7THENE(R,S)=0ELSEE(R,S)=C(B(1,R,S)) 380 NEXTS,R:RETURN 390 FORM0=1TO8:FORN0=0TO9STEP9:E(M0,N0)=-91:NEXTN0,M0 400 FORM0=0TO9STEP9:FORN0=1TO8:E(M0,N0)=-90:NEXTN0,M0 410 FORM0=0TO1:FORN0=0TO1:E(M0*9,N0*9)=M0+N0+N0-89:NEXTN0,M0:RETURN 420 FORM0=0TO9:FORN0=0TO9STEP9:E(M0,N0)=0:NEXTN0,M0 430 FORM0=0TO9STEP9:FORN0=0TO9:E(M0,N0)=0:NEXTN0,M0 440 RETURN 450 FORN0=0TO9:B(1,8,N0)=B(0,9,N0):B(1,9,N0)=0:NEXTN0:RETURN 460 FORN0=0TO9:B(1,1,N0)=B(0,0,N0):B(1,0,N0)=0:NEXTN0:RETURN 470 FORM0=0TO9:B(1,M0,8)=B(0,M0,9):B(1,M0,9)=0:NEXTM0:RETURN 480 FORM0=0TO9:B(1,M0,1)=B(0,M0,0):B(1,M0,0)=0:NEXTM0:RETURN 490 LOCATEX,Y:PRINTCHR$(224+K); 500 IFK=7ORC(B(1,I,J))<>7ANDE0=1THEN190 510 M=I:N=J 520 FORL0=0TO1:X(1,L0)=X(0,L0):Y(1,L0)=Y(0,L0):NEXTL0 530 IFM=9THEN:IFX(1,0)=0THEN190ELSEGOSUB1390 540 IFM=0THEN:IFX(1,1)=9THEN190ELSEGOSUB1420 550 IFN=9THEN:IFY(1,0)=0THEN190ELSEGOSUB1450 560 IFN=0THEN:IFY(1,1)=9THEN190ELSEGOSUB1480 570 IFM<=X(1,0)THENX(1,0)=M-1 580 IFM=>X(1,1)THENX(1,1)=M+1 590 IFN<=Y(1,0)THENY(1,0)=N-1 600 IFN=>Y(1,1)THENY(1,1)=N+1 610 L=0:M(L)=M:N(L)=N 620 IF(TILE(K)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(K):GOTO660ELSE190 630 FORL0=1TO6 640 IF(TILE(L0)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(L0) 650 NEXTL0 660 TILE0=B(1,M(L),N(L))\16+(B(1,M(L),N(L))MOD16)*16 670 B(1,M(L)+1,N(L))=(B(1,M(L)+1,N(L))OR(TILE0 AND3)) 680 B(1,M(L),N(L)-1)=(B(1,M(L),N(L)-1)OR(TILE0 AND12)) 690 B(1,M(L)-1,N(L))=(B(1,M(L)-1,N(L))OR(TILE0 AND48)) 700 B(1,M(L),N(L)+1)=(B(1,M(L),N(L)+1)OR(TILE0 AND192)) 710 L=L+1 720 T(L)=1:IFM(L)<9THENM(L)=M(L-1)+1:N(L)=N(L-1):GOTO770 730 T(L)=2:IFN(L)>0THENM(L)=M(L-1):N(L)=N(L-1)-1:GOTO770 740 T(L)=3:IFM(L)>0THENM(L)=M(L-1)-1:N(L)=N(L-1):GOTO770 750 T(L)=4:IFN(L)<9THENM(L)=M(L-1):N(L)=N(L-1)+1:GOTO770 760 L=L-1:IFL<>0THEN790ELSE800 770 IFC(B(1,M(L),N(L)))=8THEN630 780 IFC(B(1,M(L),N(L)))=9THEN190 790 ONT(L)GOTO730,740,750,760 800 FORM0=0TO9:FORN0=0TO9:B(0,M0,N0)=B(1,M0,N0):NEXTN0,M0 810 FORL0=0TO1:X(0,L0)=X(1,L0):Y(0,L0)=Y(1,L0):NEXTL0 820 FORL0=0TO599:Z(L0)=-8192:NEXTL0 830 GOSUB360:GOSUB390:FORN0=0TO9:FORM0=0TO9 840 X=M0+10*(N0\5):Y=N0 MOD5+N0\5 850 LOCATEX,Y:PRINTCHR$(224+E(M0,N0)); 860 NEXTM0,N0:LOCATES0,1,0:GOSUB420:Z1=0 870 FORR=1TO8:FORS=1TO8 880 IFE(R,S)=0THEN910ELSER0=R:S0=S 890 ONE(R,S)GOSUB2300,2300,2270,2290,2290,2280:GOSUB2120 900 IFR0=R ANDS0=S THENZ1=Z1-1 910 NEXTS,R:GOSUB2090 920 FORR=1TO8:FORS=1TO8 930 IFE(R,S)=0THEN960ELSER0=R:S0=S 940 ONE(R,S)GOSUB2280,2290,2290,2270,2300,2300:GOSUB2120 950 IFR0=R ANDS0=S THENZ1=Z1+1 960 NEXTS,R:GOSUB2090 970 R=1:FORS=1TO8 980 IFE(R,S)=0THEN1020ELSER0=R:S0=S:T=0 990 ONE(R,S)GOSUB2320,2310,2320,2310,2320,2310:GOSUB2150 1000 IFR0=9ANDE=0THENZ1=Z1+1 1010 IFR0=9ANDE=1THENZ1=Z1-1 1020 NEXTS 1030 S=1:FORR=1TO8 1040 IFE(R,S)=0THEN1080ELSER0=R:S0=S:T=3 1050 ONE(R,S)GOSUB2320,2320,2310,2320,2310,2310:GOSUB2150 1060 IFS0=9ANDE=0THENZ1=Z1+1 1070 IFS0=9ANDE=1THENZ1=Z1-1 1080 NEXTR 1090 ONSGN(Z1)+2GOTO2700,1100,2680 1100 E0=0:FORR=1TO8:FORS=1TO8:IFE(R,S)=0THENE0=1:R=8:S=8 1110 NEXTS,R:IFE0=0THEN2720 1120 I=I-(I+7)\8+1:J=J-(J+7)\8+1 1130 IFUSER=0THEN1140ELSE:GOSUB2640:GOSUB2660:GOTO150 1140 REM @@@@@@@@@@@@@@@@ GLASS @@@@@@@@@@@@@@@@ 1150 USER=1 1160 FORR=X(0,0)TOX(0,1):FORS=Y(0,0)TOY(0,1) 1170 ONC(B(1,R,S))+1GOSUB2390,2370,2420,2400,2430,2450,2460,2480 1180 NEXTS,R 1190 F0=0:FORR=X(0,0)TOX(0,1):FORS=Y(0,0)TOY(0,1) 1200 F(R,S)=0:IFC(B(1,R,S))<>7THEN1250 1210 IF(B(1,R,S)AND48)<>0THENGOSUB1890:F(R,S)=F(R,S)+Q 1220 IF(B(1,R,S)AND192)<>0THENGOSUB1940:F(R,S)=F(R,S)+Q 1230 IF(B(1,R,S)AND3)<>0THENGOSUB1990:F(R,S)=F(R,S)+Q 1240 IF(B(1,R,S)AND12)<>0THENGOSUB2040:F(R,S)=F(R,S)+Q 1250 F0=F0+F(R,S):NEXTS,R 1260 FORI=X(0,0)TOX(0,1):FORJ=Y(0,0)TOY(0,1) 1270 IFC(B(1,I,J))<>7THEN2560 1280 M=I:N=J:X0=0:Y0=0 1290 FORL0=0TO1:X(1,L0)=X(0,L0):Y(1,L0)=Y(0,L0):NEXTL0 1300 IFM=9THEN:IFX(1,0)=0THEN2560ELSEGOSUB1390:GOTO1510 1310 IFM=0THEN:IFX(1,1)=9THEN2560ELSEGOSUB1420:GOTO1510 1320 IFN=9THEN:IFY(1,0)=0THEN2560ELSEGOSUB1450:GOTO1510 1330 IFN=0THEN:IFY(1,1)=9THEN2560ELSEGOSUB1480:GOTO1510 1340 IFM=X(1,0)THENX(1,0)=M-1:GOTO1510 1350 IFM=X(1,1)THENX(1,1)=M+1:GOTO1510 1360 IFN=Y(1,0)THENY(1,0)=N-1:GOTO1510 1370 IFN=Y(1,1)THENY(1,1)=N+1:GOTO1510 1380 F=0:GOTO1510 1390 FORN0=0TO9:FORM0=0TO8 1400 B(1,M0,N0)=B(1,M0+1,N0):NEXTM0:B(1,9,N0)=0:NEXTN0 1410 M=M-1:X(1,0)=X(1,0)-1:F=1:X0=1:RETURN 1420 FORN0=0TO9:FORM0=9TO1STEP-1 1430 B(1,M0,N0)=B(1,M0-1,N0):NEXTM0:B(1,0,N0)=0:NEXTN0 1440 M=M+1:X(1,1)=X(1,1)+1:F=2:X0=-1:RETURN 1450 FORM0=0TO9:FORN0=0TO8 1460 B(1,M0,N0)=B(1,M0,N0+1):NEXTN0:B(1,M0,9)=0:NEXTM0 1470 N=N-1:Y(1,0)=Y(1,0)-1:F=3:Y0=1:RETURN 1480 FORM0=0TO9:FORN0=9TO1STEP-1 1490 B(1,M0,N0)=B(1,M0,N0-1):NEXTN0:B(1,M0,0)=0:NEXTM0 1500 N=N+1:Y(1,1)=Y(1,1)+1:F=4:Y0=-1:RETURN 1510 L=0:M(L)=M:N(L)=N 1520 FORK=1TO6 1530 IF(TILE(K)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(K):O=0:P=0:GOSUB2980:GOTO1570ELSE2540 1540 FORL0=1TO6 1550 IF(TILE(L0)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(L0) 1560 NEXTL0 1570 TILE0=B(1,M(L),N(L))\16+(B(1,M(L),N(L))MOD16)*16 1580 B(1,M(L)+1,N(L))=(B(1,M(L)+1,N(L))OR(TILE0 AND3)) 1590 B(1,M(L),N(L)-1)=(B(1,M(L),N(L)-1)OR(TILE0 AND12)) 1600 B(1,M(L)-1,N(L))=(B(1,M(L)-1,N(L))OR(TILE0 AND48)) 1610 B(1,M(L),N(L)+1)=(B(1,M(L),N(L)+1)OR(TILE0 AND192)) 1620 L=L+1:O=O+1:O(O)=M(L-1)*10+N(L-1) 1630 T(L)=1:IFM(L)Y(1,0)THENM(L)=M(L-1):N(L)=N(L-1)-1:GOTO1680 1650 T(L)=3:IFM(L)>X(1,0)THENM(L)=M(L-1)-1:N(L)=N(L-1):GOTO1680 1660 T(L)=4:IFN(L)0THEN1700ELSE1710 1680 IFC(B(1,M(L),N(L)))=8THEN1540 1690 IFC(B(1,M(L),N(L)))=9THEN2530 1700 ONT(L)GOTO1640,1650,1660,1670 1710 Z=K*100+I*10+J-100 1720 GOSUB2090 1730 R=M:S=N:R0=R:S0=S 1740 ONE(R,S)GOSUB2300,2300,2270,2290,2290,2280:GOSUB2120 1750 IFR0=R ANDS0=S THENZ(Z)=Z(Z)+1024 1760 GOSUB2090 1770 R=M:S=N:R0=R:S0=S 1780 ONE(R,S)GOSUB2280,2290,2290,2270,2300,2300:GOSUB2120 1790 IFR0=R ANDS0=S THENZ(Z)=Z(Z)-1024 1800 GOSUB2090 1810 FORL0=1TOO 1820 M0=O(L0)\10:N0=O(L0)MOD10:P=P-F(M0+X0,N0+Y0) 1830 R=M0-1:S=N0:IFC(B(1,R,S))=7THENGOSUB1890:P=P+Q 1840 R=M0:S=N0+1:IFC(B(1,R,S))=7THENGOSUB1940:P=P+Q 1850 R=M0+1:S=N0:IFC(B(1,R,S))=7THENGOSUB1990:P=P+Q 1860 R=M0:S=N0-1:IFC(B(1,R,S))=7THENGOSUB2040:P=P+Q 1870 NEXTL0 1880 Z(Z)=Z(Z)+F0+O+P+8192:GOTO2530 1890 R0=R+1:S0=S:T=0:T0=0 1900 ONE(R0,S0)GOSUB2320,2310,2320,2310,2320,2310 1910 GOSUB2150:L1=ABS(R-R0):L2=ABS(S-S0) 1920 ON(T XORT0)+1GOSUB2180,2210,2240,2210 1930 RETURN 1940 R0=R:S0=S-1:T=1:T0=1 1950 ONE(R0,S0)GOSUB2310,2320,2320,2310,2310,2320 1960 GOSUB2150:L1=ABS(S-S0):L2=ABS(R-R0) 1970 ON(T XORT0)+1GOSUB2180,2210,2240,2210 1980 RETURN 1990 R0=R-1:S0=S:T=2:T0=2 2000 ONE(R0,S0)GOSUB2310,2310,2310,2320,2320,2320 2010 GOSUB2150:L1=ABS(R-R0):L2=ABS(S-S0) 2020 ON(T XORT0)+1GOSUB2180,2210,2240,2210 2030 RETURN 2040 R0=R:S0=S+1:T=3:T0=3 2050 ONE(R0,S0)GOSUB2320,2320,2310,2320,2310,2310 2060 GOSUB2150:L1=ABS(S-S0):L2=ABS(R-R0) 2070 ON(T XORT0)+1GOSUB2180,2210,2240,2210 2080 RETURN 2090 FORR=X(1,0)TOX(1,1):FORS=Y(1,0)TOY(1,1) 2100 IFC(B(1,R,S))=>7THENE(R,S)=0ELSEE(R,S)=C(B(1,R,S)) 2110 NEXTS,R:RETURN 2120 T=D(E(R0,S0),T):E(R0,S0)=0 2130 ONT+1GOSUB2330,2340,2350,2360 2140 IFE(R0,S0)=0THENRETURNELSE2120 2150 T=D(E(R0,S0),T) 2160 ONT+1GOSUB2330,2340,2350,2360 2170 IFE(R0,S0)=0THENRETURNELSE2150 2180 IFE=0THENQ=-8*L1+2*L2-(L1\8)*448-(L2\8)*2 2190 IFE=1THENQ=4*L1-1*L2+(L1\8)*224+(L2\8)*1 2200 RETURN 2210 IFE=0THENQ=-2 2220 IFE=1THENQ=1 2230 RETURN 2240 IFE=0THENQ=-144+16*L2+8*L1 2250 IFE=1THENQ=72-8*L2-4*L1 2260 RETURN 2270 T=0:RETURN 2280 T=1:RETURN 2290 T=2:RETURN 2300 T=3:RETURN 2310 E=0:RETURN 2320 E=1:RETURN 2330 R0=R0+1:RETURN 2340 S0=S0-1:RETURN 2350 R0=R0-1:RETURN 2360 S0=S0+1:RETURN 2370 GOSUB2490 2380 IF((W(0,2)=6ANDW(1,0)=6)OR(W(0,1)=6ANDW(2,0)=6))THENZ(10*I+J-11)=W0 2390 RETURN 2400 GOSUB2490 2410 IF((W(2,2)=4ANDW(0,1)=4)OR(W(1,2)=4ANDW(0,0)=4))THENZ(10*I+J+291)=W0 2420 RETURN 2430 GOSUB2490 2440 IF((W(0,0)=3ANDW(2,1)=3)OR(W(1,0)=3ANDW(2,2)=3))THENZ(10*I+J+309)=W0 2450 RETURN 2460 GOSUB2490 2470 IF((W(2,0)=1ANDW(1,2)=1)OR(W(2,1)=1ANDW(0,2)=1))THENZ(10*I+J+511)=W0 2480 RETURN 2490 FORR0=0TO2:FORS0=0TO2 2500 W(R0,S0)=C(B(1,R+R0-1,S+S0-1)) 2510 NEXTS0,R0 2520 RETURN 2530 ONF+1GOSUB320,450,460,470,480:GOSUB3000 2540 NEXTK 2550 IFF<>0THENF=0:GOSUB320 2560 NEXTJ,I 2570 Z1=-8192:Z0=599:FORL0=0TO599 2580 ONSGN(Z(L0)-Z1)+2GOTO2610,2590,2600 2590 ONSGN(INT(RND*3))+1GOTO2610,2600 2600 Z1=Z(L0):Z0=L0 2610 NEXTL0:I=(Z0 MOD100)\10:J=Z0 MOD10:K=Z0\100+1 2620 GOSUB340:GOSUB360:GOTO510 2630 REM @@@@@@@@@@@@@@@@ SCULL @@@@@@@@@@@@@@@@ 2640 FORI0=1TO3:FORJ0=56TO51STEP-1:SOUNDJ0,1:SOUND51,1:SOUND56,1:NEXTJ0,I0 2650 RETURN 2660 FORI0=1TO2:FORJ0=56TO1STEP-4:SOUNDJ0,1:SOUNDJ0+1,1:NEXTJ0,I0 2670 RETURN 2680 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(150);:NEXTJ,I 2690 GOTO2740 2700 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(153);:NEXTJ,I 2710 GOTO2740 2720 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(131);:NEXTJ,I 2730 FORI=4TO11:FORJ=8TO15:K=(I*I*J)MOD56+1:SOUNDK,1:SOUNDK+28,1:NEXTJ,I 2740 FORK=0TO999:NEXTK 2750 FORK=1TO2:FORL=1TO4:FORI=1TO112STEP4:J=ABS(I-56):SOUNDJ+31,1:SOUNDJ,1:NEXTI,L 2760 FORI=1TO112:J=I^2-56*(I^2\56):SOUNDJ,1:NEXTI,K 2770 END 2780 DATA 0,0,0,0,0,0 2790 DATA 5D,FA,1F,0F,E5,A6,65,A6,FF,FF,65,A6,5D,BF,F8,F0,67,A6 2800 DATA 65,E6,0F,1F,FD,BA,5D,FF,18,18,FF,BA,65,A7,F0,F8,5F,BA 2810 DATA 56,25,2F,25,56,0 2820 DATA 0,7,7,7,8,7,7,7,8,7,8,7,8,9,8,7,8,8 2830 DATA 7,7,8,7,8,8,8,8,9,7,8,7,8,9,8,7,8,8 2840 DATA 8,9,8,9,9,9,8,9,3,7,8,8,8,9,5,8,6,9 2850 DATA 7,7,8,7,8,8,8,8,9,7,8,8,8,9,1,8,2,9 2860 DATA 8,8,9,8,4,9,9,9,9 2870 DATA 2,1,0,3,3,0,1,2,3,0,1,2,2,1,0,3 2880 DATA 0,3,2,1,1,2,3,0,1,2,3,0,0,3,2,1 2890 DATA &H96,&H99,&H5A,&HA5,&H66,&H69 2900 RESTORE2920:FORO=1TO58:READI,J,K,L 2910 LINE(I,J)-(K,L),PSET:NEXTO:RESTORE:RETURN 2920 DATA 24,8,39,8,24,9,39,9,24,10,39,10,24,11,39,11,30,14,30,23,31,14,31,23,32,14,32,23,33,14,33,23 2930 DATA 42,8,54,8,42,9,56,9,42,10,56,10,42,11,57,11,57,11,57,14,56,9,56,14,55,9,55,15,54,8,54,15,57,23,57,17,56,23,56,16 2940 DATA 55,23,55,16,54,23,54,16,55,14,42,14,55,15,42,15,56,16,42,16,57,17,42,17,42,14,42,23,43,14,43,23,44,14,44,23,45,14,45,23 2950 DATA 60,8,72,8,60,9,74,9,60,10,74,10,60,11,75,11,75,11,75,23,74,9,74,23,73,9,73,23,72,8,72,23,75,23,63,23,75,22,61,22 2960 DATA 75,21,61,21,75,20,60,20,60,20,60,17,61,22,61,15,62,22,62,15,63,23,63,14,63,14,69,14,61,15,69,15,61,16,69,16,60,17,69,17 2970 DATA 78,8,89,23,79,8,90,23,80,8,91,23,81,8,92,23,82,8,93,23,82,23,93,8,81,23,92,8,80,23,91,8,79,23,90,8,78,23,89,8 2980 X=M(0)+10*(N(0)\5):Y=N(0)MOD5+N(0)\5 2990 LOCATEX,Y:PRINTCHR$(224+K);:RETURN 3000 LOCATEX,Y:PRINTCHR$(C(B(0,M,N))MOD7+224);:RETURN