10 CLS:
20 MEMSET&HB00:WIDTH20,8
30 OPTIONBASE0:DEFINTA-Z
40 LOCATES0,0,0:GOSUB2860
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),M(49),N(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)=0THEN190ELSEGOSUB1340
540 IFM=0THEN:IFX(1,1)=9THEN190ELSEGOSUB1370
550 IFN=9THEN:IFY(1,0)=0THEN190ELSEGOSUB1400
560 IFN=0THEN:IFY(1,1)=9THEN190ELSEGOSUB1430
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)GOSUB2260,2260,2230,2250,2250,2240:GOSUB2080
900 IFR0=R ANDS0=S THENZ1=Z1-1
910 NEXTS,R:GOSUB2050
920 FORR=1TO8:FORS=1TO8
930 IFE(R,S)=0THEN960ELSER0=R:S0=S
940 ONE(R,S)GOSUB2240,2250,2250,2230,2260,2260:GOSUB2080
950 IFR0=R ANDS0=S THENZ1=Z1+1
960 NEXTS,R:GOSUB2050
970 R=1:FORS=1TO8
980 IFE(R,S)=0THEN1020ELSER0=R:S0=S:T=0
990 ONE(R,S)GOSUB2280,2270,2280,2270,2280,2270:GOSUB2110
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)GOSUB2280,2280,2270,2280,2270,2270:GOSUB2110
1060 IFS0=9ANDE=0THENZ1=Z1+1
1070 IFS0=9ANDE=1THENZ1=Z1-1
1080 NEXTR
1090 ONSGN(Z1)+2GOTO2660,1100,2640
1100 E0=0:FORR=1TO8:FORS=1TO8:IFE(R,S)=0THENE0=1:R=8:S=8
1110 NEXTS,R:IFE0=0THEN2680
1120 I=I-(I+7)\8+1:J=J-(J+7)\8+1
1130 IFUSER=0THEN1140ELSE:GOSUB2600:GOSUB2620:GOTO150
1140 REM @@@@@@@@@@@@@@@@ GLASS @@@@@@@@@@@@@@@@
1150 USER=1
1160 FORI=X(0,0)TOX(0,1):FORJ=Y(0,0)TOY(0,1)
1170 ONC(B(1,I,J))+1GOSUB2350,2330,2380,2360,2390,2410,2420,2440
1180 NEXTJ,I
1190 GOSUB1810:GOSUB1870:GOSUB1930:GOSUB1990
1200 P0=Q0:P1=Q1:P2=Q2:P3=Q3
1210 FORI=X(0,0)TOX(0,1):FORJ=Y(0,0)TOY(0,1)
1220 IFC(B(1,I,J))<>7THEN2520
1230 M=I:N=J
1240 FORL0=0TO1:X(1,L0)=X(0,L0):Y(1,L0)=Y(0,L0):NEXTL0
1250 IFM=9THEN:IFX(1,0)=0THEN2520ELSEGOSUB1340:GOTO1460
1260 IFM=0THEN:IFX(1,1)=9THEN2520ELSEGOSUB1370:GOTO1460
1270 IFN=9THEN:IFY(1,0)=0THEN2520ELSEGOSUB1400:GOTO1460
1280 IFN=0THEN:IFY(1,1)=9THEN2520ELSEGOSUB1430:GOTO1460
1290 IFM=X(1,0)THENX(1,0)=M-1:GOTO1460
1300 IFM=X(1,1)THENX(1,1)=M+1:GOTO1460
1310 IFN=Y(1,0)THENY(1,0)=N-1:GOTO1460
1320 IFN=Y(1,1)THENY(1,1)=N+1:GOTO1460
1330 F=0:GOTO1460
1340 FORN0=0TO9:FORM0=0TO8
1350 B(1,M0,N0)=B(1,M0+1,N0):NEXTM0:B(1,9,N0)=0:NEXTN0
1360 M=M-1:X(1,0)=X(1,0)-1:F=1:RETURN
1370 FORN0=0TO9:FORM0=9TO1STEP-1
1380 B(1,M0,N0)=B(1,M0-1,N0):NEXTM0:B(1,0,N0)=0:NEXTN0
1390 M=M+1:X(1,1)=X(1,1)+1:F=2:RETURN
1400 FORM0=0TO9:FORN0=0TO8
1410 B(1,M0,N0)=B(1,M0,N0+1):NEXTN0:B(1,M0,9)=0:NEXTM0
1420 N=N-1:Y(1,0)=Y(1,0)-1:F=3:RETURN
1430 FORM0=0TO9:FORN0=9TO1STEP-1
1440 B(1,M0,N0)=B(1,M0,N0-1):NEXTN0:B(1,M0,0)=0:NEXTM0
1450 N=N+1:Y(1,1)=Y(1,1)+1:F=4:RETURN
1460 L=0:M(L)=M:N(L)=N
1470 FORK=1TO6
1480 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:GOSUB2940:GOTO1520ELSE2500
1490 FORL0=1TO6
1500 IF(TILE(L0)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(L0)
1510 NEXTL0
1520 TILE0=B(1,M(L),N(L))\16+(B(1,M(L),N(L))MOD16)*16
1530 B(1,M(L)+1,N(L))=(B(1,M(L)+1,N(L))OR(TILE0 AND3))
1540 B(1,M(L),N(L)-1)=(B(1,M(L),N(L)-1)OR(TILE0 AND12))
1550 B(1,M(L)-1,N(L))=(B(1,M(L)-1,N(L))OR(TILE0 AND48))
1560 B(1,M(L),N(L)+1)=(B(1,M(L),N(L)+1)OR(TILE0 AND192))
1570 L=L+1:O=O+1
1580 T(L)=1:IFM(L)Y(1,0)THENM(L)=M(L-1):N(L)=N(L-1)-1:GOTO1630
1600 T(L)=3:IFM(L)>X(1,0)THENM(L)=M(L-1)-1:N(L)=N(L-1):GOTO1630
1610 T(L)=4:IFN(L)0THEN1650ELSE1660
1630 IFC(B(1,M(L),N(L)))=8THEN1490
1640 IFC(B(1,M(L),N(L)))=9THEN2490
1650 ONT(L)GOTO1590,1600,1610,1620
1660 Z=K*100+I*10+J-100
1670 GOSUB2050
1680 R=M:S=N:R0=R:S0=S
1690 ONE(R,S)GOSUB2260,2260,2230,2250,2250,2240:GOSUB2080
1700 IFR0=R ANDS0=S THENZ(Z)=Z(Z)+1024
1710 GOSUB2050
1720 R=M:S=N:R0=R:S0=S
1730 ONE(R,S)GOSUB2240,2250,2250,2230,2260,2260:GOSUB2080
1740 IFR0=R ANDS0=S THENZ(Z)=Z(Z)-1024
1750 GOSUB2050
1760 IFC(B(1,M-1,N))=7THENGOSUB1810:P=P+Q0 ELSEP=P+P0
1770 IFC(B(1,M,N+1))=7THENGOSUB1870:P=P+Q1 ELSEP=P+P1
1780 IFC(B(1,M+1,N))=7THENGOSUB1930:P=P+Q2 ELSEP=P+P2
1790 IFC(B(1,M,N-1))=7THENGOSUB1990:P=P+Q3 ELSEP=P+P3
1800 Z(Z)=Z(Z)+O+P+8192:GOTO2490
1810 FORS=Y(1,0)TOY(1,1):FORR=X(1,0)TOX(1,1)
1820 IFE(R,S)=0THEN1860ELSER0=R:S0=S
1830 ONE(R,S)GOSUB2280,2270,2280,2270,2280,2270
1840 T=0:T0=0:GOSUB2110:L1=ABS(R-R0):L2=ABS(S-S0):R=X(1,1)
1850 ON(T XORT0)+1GOSUB2140,2170,2200,2170
1860 NEXTR,S:Q0=Q:Q=0:RETURN
1870 FORR=X(1,0)TOX(1,1):FORS=Y(1,1)TOY(1,0)STEP-1
1880 IFE(R,S)=0THEN1920ELSER0=R:S0=S
1890 ONE(R,S)GOSUB2270,2280,2280,2270,2270,2280
1900 T=1:T0=1:GOSUB2110:L1=ABS(S-S0):L2=ABS(R-R0):S=Y(1,0)
1910 ON(T XORT0)+1GOSUB2140,2170,2200,2170
1920 NEXTS,R:Q1=Q:Q=0:RETURN
1930 FORS=Y(1,0)TOY(1,1):FORR=X(1,1)TOX(1,0)STEP-1
1940 IFE(R,S)=0THEN1980ELSER0=R:S0=S
1950 ONE(R,S)GOSUB2270,2270,2270,2280,2280,2280
1960 T=2:T0=2:GOSUB2110:L1=ABS(R-R0):L2=ABS(S-S0):R=X(1,0)
1970 ON(T XORT0)+1GOSUB2140,2170,2200,2170
1980 NEXTR,S:Q2=Q:Q=0:RETURN
1990 FORR=X(1,0)TOX(1,1):FORS=Y(1,0)TOY(1,1)
2000 IFE(R,S)=0THEN2040ELSER0=R:S0=S
2010 ONE(R,S)GOSUB2280,2280,2270,2280,2270,2270
2020 T=3:T0=3:GOSUB2110:L1=ABS(S-S0):L2=ABS(R-R0):S=Y(1,1)
2030 ON(T XORT0)+1GOSUB2140,2170,2200,2170
2040 NEXTS,R:Q3=Q:Q=0:RETURN
2050 FORR=X(1,0)TOX(1,1):FORS=Y(1,0)TOY(1,1)
2060 IFC(B(1,R,S))=>7THENE(R,S)=0ELSEE(R,S)=C(B(1,R,S))
2070 NEXTS,R:RETURN
2080 T=D(E(R0,S0),T):E(R0,S0)=0
2090 ONT+1GOSUB2290,2300,2310,2320
2100 IFE(R0,S0)=0THENRETURNELSE2080
2110 T=D(E(R0,S0),T)
2120 ONT+1GOSUB2290,2300,2310,2320
2130 IFE(R0,S0)=0THENRETURNELSE2110
2140 IFE=0THENQ=Q-8*L1+2*L2-(L1\8)*448-(L2\8)*2
2150 IFE=1THENQ=Q+4*L1-1*L2+(L1\8)*224+(L2\8)*1
2160 RETURN
2170 IFE=0THENQ=Q-2
2180 IFE=1THENQ=Q+1
2190 RETURN
2200 IFE=0THENQ=Q-144+16*L2+8*L1
2210 IFE=1THENQ=Q+72-8*L2-4*L1
2220 RETURN
2230 T=0:RETURN
2240 T=1:RETURN
2250 T=2:RETURN
2260 T=3:RETURN
2270 E=0:RETURN
2280 E=1:RETURN
2290 R0=R0+1:RETURN
2300 S0=S0-1:RETURN
2310 R0=R0-1:RETURN
2320 S0=S0+1:RETURN
2330 GOSUB2450
2340 IF((W(0,2)=6ANDW(0,1)=7ANDW(0,0)=7ANDW(1,0)=6)OR(W(0,1)=6ANDW(0,0)=7ANDW(1,0)=7ANDW(2,0)=6))THENZ(10*I+J-11)=W0
2350 RETURN
2360 GOSUB2450
2370 IF((W(2,2)=4ANDW(1,2)=7ANDW(0,2)=7ANDW(0,1)=4)OR(W(1,2)=4ANDW(0,2)=7ANDW(0,1)=7ANDW(0,0)=4))THENZ(10*I+J+291)=W0
2380 RETURN
2390 GOSUB2450
2400 IF((W(0,0)=3ANDW(1,0)=7ANDW(2,0)=7ANDW(2,1)=3)OR(W(1,0)=3ANDW(2,0)=7ANDW(2,1)=7ANDW(2,2)=3))THENZ(10*I+J+309)=W0
2410 RETURN
2420 GOSUB2450
2430 IF((W(2,0)=1ANDW(2,1)=7ANDW(2,2)=7ANDW(1,2)=1)OR(W(2,1)=1ANDW(2,2)=7ANDW(1,2)=7ANDW(0,2)=1))THENZ(10*I+J+511)=W0
2440 RETURN
2450 FORM=0TO2:FORN=0TO2
2460 W(M,N)=C(B(1,I+M-1,J+N-1))
2470 NEXTN,M
2480 RETURN
2490 ONF+1GOSUB320,450,460,470,480:GOSUB2960
2500 NEXTK
2510 IFF<>0THENF=0:GOSUB320
2520 NEXTJ,I
2530 Z1=-8192:Z0=599:FORL0=0TO599
2540 ONSGN(Z(L0)-Z1)+2GOTO2570,2550,2560
2550 ONSGN(INT(RND*3))+1GOTO2570,2560
2560 Z1=Z(L0):Z0=L0
2570 NEXTL0:I=(Z0 MOD100)\10:J=Z0 MOD10:K=Z0\100+1
2580 GOSUB340:GOSUB360:GOTO510
2590 REM @@@@@@@@@@@@@@@@ SCULL @@@@@@@@@@@@@@@@
2600 FORI0=1TO3:FORJ0=56TO51STEP-1:SOUNDJ0,1:SOUND51,1:SOUND56,1:NEXTJ0,I0
2610 RETURN
2620 FORI0=1TO2:FORJ0=56TO1STEP-4:SOUNDJ0,1:SOUNDJ0+1,1:NEXTJ0,I0
2630 RETURN
2640 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(150);:NEXTJ,I
2650 GOTO2700
2660 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(153);:NEXTJ,I
2670 GOTO2700
2680 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(131);:NEXTJ,I
2690 FORI=4TO11:FORJ=8TO15:K=(I*I*J)MOD56+1:SOUNDK,1:SOUNDK+28,1:NEXTJ,I
2700 FORK=0TO999:NEXTK
2710 FORK=1TO2:FORL=1TO4:FORI=1TO112STEP4:J=ABS(I-56):SOUNDJ+31,1:SOUNDJ,1:NEXTI,L
2720 FORI=1TO112:J=I^2-56*(I^2\56):SOUNDJ,1:NEXTI,K
2730 END
2740 DATA 0,0,0,0,0,0
2750 DATA 5D,FA,1F,0F,E5,A6,65,A6,FF,FF,65,A6,5D,BF,F8,F0,67,A6
2760 DATA 65,E6,0F,1F,FD,BA,5D,FF,18,18,FF,BA,65,A7,F0,F8,5F,BA
2770 DATA 56,25,2F,25,56,0
2780 DATA 0,7,7,7,8,7,7,7,8,7,8,7,8,9,8,7,8,8
2790 DATA 7,7,8,7,8,8,8,8,9,7,8,7,8,9,8,7,8,8
2800 DATA 8,9,8,9,9,9,8,9,3,7,8,8,8,9,5,8,6,9
2810 DATA 7,7,8,7,8,8,8,8,9,7,8,8,8,9,1,8,2,9
2820 DATA 8,8,9,8,4,9,9,9,9
2830 DATA 2,1,0,3,3,0,1,2,3,0,1,2,2,1,0,3
2840 DATA 0,3,2,1,1,2,3,0,1,2,3,0,0,3,2,1
2850 DATA &H96,&H99,&H5A,&HA5,&H66,&H69
2860 RESTORE2880:FORO=1TO58:READI,J,K,L
2870 LINE(I,J)-(K,L),PSET:NEXTO:RESTORE:RETURN
2880 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
2890 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
2900 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
2910 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
2920 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
2930 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
2940 X=M(0)+10*(N(0)\5):Y=N(0)MOD5+N(0)\5
2950 LOCATEX,Y:PRINTCHR$(224+K);:RETURN
2960 LOCATEX,Y:PRINTCHR$(C(B(0,M,N))MOD7+224);:RETURN

    Source: geocities.com/abcmcfarren/hx20

               ( geocities.com/abcmcfarren)