10 MEMSET&HB00:WIDTH20,8
20 OPTIONBASE0:DEFINTA-Z
30 CLS:LOCATES0,0,0:GOSUB2550
40 K=1:FORI=1TO2:FORJ=1TO56:K=(K*J)MOD56+1:SOUNDK,1:NEXTJ,I
50 DIMB(1,9,9),C(255),D(7,3),E(9,9),M(49),N(49),T(49),X(1,1),Y(1,1),Z(599)
60 POKE&H11E,&HA:POKE&H11F,&H40
70 FORI=&HA40 TO&HA6F:READJ$:J=VAL("&H"+J$):POKEI,J:NEXTI
80 FORI=0TO255:C(I)=9:NEXTI
90 FORI=0TO80:J=64*(I\27)+16*(I\9MOD3)+4*(I\3MOD3)+I MOD3:READC(J):NEXTI
100 FORJ=0TO3:FORI=0TO7:READD(I,J):NEXTI,J
110 FORK=1TO6:READTILE(K):NEXTK
120 I=4:J=4:X(0,0)=9:X(0,1)=0:Y(0,0)=9:Y(0,1)=0:GCLS
130 REM @@@@@@@@@@@@@@@@ PHONE @@@@@@@@@@@@@@@@
140 USER=0:GOSUB370
150 LOCATES0,1,0
160 X=I+10*(J\5):Y=J MOD5+J\5:K=7
170 SOUND20,1
180 A$=INKEY$:IFA$<>""THEN210
190 LOCATEX,Y:PRINTCHR$(224+K);:FORL=1TO50:NEXTL
200 LOCATEX,Y:PRINTCHR$(224+E(I,J));:FORL=1TO50:NEXTL
210 IFA$=""THEN180ELSEA=ASC(A$)
220 IFA=13THEN470ELSEIFA=32THENGOSUB280:GOTO170
230 IFA<28ORA>31THEN170ELSEONA-27GOSUB240,250,260,270:GOTO160
240 I=(I+1)MOD10:RETURN
250 I=(I+9)MOD10:RETURN
260 J=(J+9)MOD10:RETURN
270 J=(J+1)MOD10:RETURN
280 IFK=7THENK=0
290 K=K MOD6+1:RETURN
300 FORM0=X(1,0)TOX(1,1):FORN0=Y(1,0)TOY(1,1)
310 B(1,M0,N0)=B(0,M0,N0):NEXTN0,M0:RETURN
320 FORM0=0TO9:FORN0=0TO9
330 B(1,M0,N0)=B(0,M0,N0):NEXTN0,M0:RETURN
340 FORR=1TO8:FORS=1TO8
350 IFC(B(1,R,S))=7THENE(R,S)=0ELSEE(R,S)=C(B(1,R,S))
360 NEXTS,R:RETURN
370 FORM0=1TO8:FORN0=0TO9STEP9:E(M0,N0)=-91:NEXTN0,M0
380 FORM0=0TO9STEP9:FORN0=1TO8:E(M0,N0)=-90:NEXTN0,M0
390 FORM0=0TO1:FORN0=0TO1:E(M0*9,N0*9)=M0+N0+N0-89:NEXTN0,M0:RETURN
400 FORM0=0TO9:FORN0=0TO9STEP9:E(M0,N0)=0:NEXTN0,M0
410 FORM0=0TO9STEP9:FORN0=0TO9:E(M0,N0)=0:NEXTN0,M0
420 RETURN
430 FORN0=0TO9:B(1,8,N0)=B(0,9,N0):B(1,9,N0)=0:NEXTN0:RETURN
440 FORN0=0TO9:B(1,1,N0)=B(0,0,N0):B(1,0,N0)=0:NEXTN0:RETURN
450 FORM0=0TO9:B(1,M0,8)=B(0,M0,9):B(1,M0,9)=0:NEXTM0:RETURN
460 FORM0=0TO9:B(1,M0,1)=B(0,M0,0):B(1,M0,0)=0:NEXTM0:RETURN
470 LOCATEX,Y:PRINTCHR$(224+K);
480 IFK=7ORC(B(1,I,J))<>7ANDE0=1THEN170
490 M=I:N=J
500 FORL0=0TO1:X(1,L0)=X(0,L0):Y(1,L0)=Y(0,L0):NEXTL0
510 IFM=9THEN:IFX(1,0)=0THEN170ELSEGOSUB1260
520 IFM=0THEN:IFX(1,1)=9THEN170ELSEGOSUB1290
530 IFN=9THEN:IFY(1,0)=0THEN170ELSEGOSUB1320
540 IFN=0THEN:IFY(1,1)=9THEN170ELSEGOSUB1350
550 IFM<=X(1,0)THENX(1,0)=M-1
560 IFM=>X(1,1)THENX(1,1)=M+1
570 IFN<=Y(1,0)THENY(1,0)=N-1
580 IFN=>Y(1,1)THENY(1,1)=N+1
590 L=0:M(L)=M:N(L)=N
600 IF(TILE(K)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(K):GOTO640ELSE170
610 FORL0=1TO6
620 IF(TILE(L0)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(L0)
630 NEXTL0
640 TILE0=B(1,M(L),N(L))\16+(B(1,M(L),N(L))MOD16)*16
650 B(1,M(L)+1,N(L))=(B(1,M(L)+1,N(L))OR(TILE0 AND3))
660 B(1,M(L),N(L)-1)=(B(1,M(L),N(L)-1)OR(TILE0 AND12))
670 B(1,M(L)-1,N(L))=(B(1,M(L)-1,N(L))OR(TILE0 AND48))
680 B(1,M(L),N(L)+1)=(B(1,M(L),N(L)+1)OR(TILE0 AND192))
690 L=L+1
700 T(L)=1:IFM(L)<9THENM(L)=M(L-1)+1:N(L)=N(L-1):GOTO750
710 T(L)=2:IFN(L)>0THENM(L)=M(L-1):N(L)=N(L-1)-1:GOTO750
720 T(L)=3:IFM(L)>0THENM(L)=M(L-1)-1:N(L)=N(L-1):GOTO750
730 T(L)=4:IFN(L)<9THENM(L)=M(L-1):N(L)=N(L-1)+1:GOTO750
740 L=L-1:IFL<>0THEN770ELSE780
750 IFC(B(1,M(L),N(L)))=8THEN610
760 IFC(B(1,M(L),N(L)))=9THEN170
770 ONT(L)GOTO710,720,730,740
780 FORM0=0TO9:FORN0=0TO9:B(0,M0,N0)=B(1,M0,N0):NEXTN0,M0
790 FORL0=0TO1:X(0,L0)=X(1,L0):Y(0,L0)=Y(1,L0):NEXTL0
800 FORL0=0TO599:Z(L0)=-8192:NEXTL0
810 GOSUB340:GOSUB370:FORN0=0TO9:FORM0=0TO9
820 X=M0+10*(N0\5):Y=N0 MOD5+N0\5
830 LOCATEX,Y:PRINTCHR$(224+E(M0,N0));
840 NEXTM0,N0:LOCATES0,1,0:GOSUB400:Z1=0
850 FORR=1TO8:FORS=1TO8
860 IFE(R,S)=0THEN890ELSER0=R:S0=S
870 ONE(R,S)GOSUB2140,2140,2110,2130,2130,2120:GOSUB1960
880 IFR0=R ANDS0=S THENZ1=Z1-1
890 NEXTS,R:GOSUB1930
900 FORR=1TO8:FORS=1TO8
910 IFE(R,S)=0THEN940ELSER0=R:S0=S
920 ONE(R,S)GOSUB2120,2130,2130,2110,2140,2140:GOSUB1960
930 IFR0=R ANDS0=S THENZ1=Z1+1
940 NEXTS,R:GOSUB1930
950 R=1:FORS=1TO8
960 IFE(R,S)=0THEN1000ELSER0=R:S0=S:T=0
970 ONE(R,S)GOSUB2160,2150,2160,2150,2160,2150:GOSUB1990
980 IFR0=9ANDE=0THENZ1=Z1+1
990 IFR0=9ANDE=1THENZ1=Z1-1
1000 NEXTS
1010 S=1:FORR=1TO8
1020 IFE(R,S)=0THEN1060ELSER0=R:S0=S:T=3
1030 ONE(R,S)GOSUB2160,2160,2150,2160,2150,2150:GOSUB1990
1040 IFS0=9ANDE=0THENZ1=Z1+1
1050 IFS0=9ANDE=1THENZ1=Z1-1
1060 NEXTR
1070 ONSGN(Z1)+2GOTO2350,1080,2330
1080 E0=0:FORR=1TO8:FORS=1TO8:IFE(R,S)=0THENE0=1:R=8:S=8
1090 NEXTS,R:IFE0=0THEN2370
1100 IFUSER=0THEN1110ELSE:GOSUB2290:GOSUB2310:GOTO130
1110 REM @@@@@@@@@@@@@@@@ GLASS @@@@@@@@@@@@@@@@
1120 USER=1
1130 FORI=X(0,0)TOX(0,1):FORJ=Y(0,0)TOY(0,1)
1140 IFC(B(1,I,J))<>7THEN2240
1150 M=I:N=J
1160 FORL0=0TO1:X(1,L0)=X(0,L0):Y(1,L0)=Y(0,L0):NEXTL0
1170 IFM=9THEN:IFX(1,0)=0THEN2240ELSEGOSUB1260:GOTO1380
1180 IFM=0THEN:IFX(1,1)=9THEN2240ELSEGOSUB1290:GOTO1380
1190 IFN=9THEN:IFY(1,0)=0THEN2240ELSEGOSUB1320:GOTO1380
1200 IFN=0THEN:IFY(1,1)=9THEN2240ELSEGOSUB1350:GOTO1380
1210 IFM=X(1,0)THENX(1,0)=M-1:GOTO1380
1220 IFM=X(1,1)THENX(1,1)=M+1:GOTO1380
1230 IFN=Y(1,0)THENY(1,0)=N-1:GOTO1380
1240 IFN=Y(1,1)THENY(1,1)=N+1:GOTO1380
1250 F=0:GOTO1380
1260 FORN0=0TO9:FORM0=0TO8
1270 B(1,M0,N0)=B(1,M0+1,N0):NEXTM0:B(1,9,N0)=0:NEXTN0
1280 M=M-1:X(1,0)=X(1,0)-1:F=1:RETURN
1290 FORN0=0TO9:FORM0=9TO1STEP-1
1300 B(1,M0,N0)=B(1,M0-1,N0):NEXTM0:B(1,0,N0)=0:NEXTN0
1310 M=M+1:X(1,1)=X(1,1)+1:F=2:RETURN
1320 FORM0=0TO9:FORN0=0TO8
1330 B(1,M0,N0)=B(1,M0,N0+1):NEXTN0:B(1,M0,9)=0:NEXTM0
1340 N=N-1:Y(1,0)=Y(1,0)-1:F=3:RETURN
1350 FORM0=0TO9:FORN0=9TO1STEP-1
1360 B(1,M0,N0)=B(1,M0,N0-1):NEXTN0:B(1,M0,0)=0:NEXTM0
1370 N=N+1:Y(1,1)=Y(1,1)+1:F=4:RETURN
1380 L=0:M(L)=M:N(L)=N
1390 FORK=1TO6
1400 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:GOSUB2630:GOTO1440ELSE2220
1410 FORL0=1TO6
1420 IF(TILE(L0)ANDB(1,M(L),N(L)))=B(1,M(L),N(L))THENB(1,M(L),N(L))=TILE(L0)
1430 NEXTL0
1440 TILE0=B(1,M(L),N(L))\16+(B(1,M(L),N(L))MOD16)*16
1450 B(1,M(L)+1,N(L))=(B(1,M(L)+1,N(L))OR(TILE0 AND3))
1460 B(1,M(L),N(L)-1)=(B(1,M(L),N(L)-1)OR(TILE0 AND12))
1470 B(1,M(L)-1,N(L))=(B(1,M(L)-1,N(L))OR(TILE0 AND48))
1480 B(1,M(L),N(L)+1)=(B(1,M(L),N(L)+1)OR(TILE0 AND192))
1490 L=L+1:O=O+1
1500 T(L)=1:IFM(L)<X(1,1)THENM(L)=M(L-1)+1:N(L)=N(L-1):GOTO1550
1510 T(L)=2:IFN(L)>Y(1,0)THENM(L)=M(L-1):N(L)=N(L-1)-1:GOTO1550
1520 T(L)=3:IFM(L)>X(1,0)THENM(L)=M(L-1)-1:N(L)=N(L-1):GOTO1550
1530 T(L)=4:IFN(L)<Y(1,1)THENM(L)=M(L-1):N(L)=N(L-1)+1:GOTO1550
1540 L=L-1:IFL<>0THEN1570ELSE1580
1550 IFC(B(1,M(L),N(L)))=8THEN1410
1560 IFC(B(1,M(L),N(L)))=9THEN2210
1570 ONT(L)GOTO1510,1520,1530,1540
1580 Z=K*100+I*10+J-100:Z(Z)=O
1590 GOSUB1930
1600 R=M:S=N:R0=R:S0=S
1610 ONE(R,S)GOSUB2140,2140,2110,2130,2130,2120:GOSUB1960
1620 IFR0=R ANDS0=S THENZ(Z)=Z(Z)+256
1630 GOSUB1930
1640 R=M:S=N:R0=R:S0=S
1650 ONE(R,S)GOSUB2120,2130,2130,2110,2140,2140:GOSUB1960
1660 IFR0=R ANDS0=S THENZ(Z)=Z(Z)-512
1670 GOSUB1930
1680 FORS=Y(1,0)TOY(1,1):FORR=X(1,0)TOX(1,1)
1690 IFE(R,S)=0THEN1730ELSER0=R:S0=S
1700 ONE(R,S)GOSUB2160,2150,2160,2150,2160,2150
1710 T=0:T0=0:GOSUB1990:L1=ABS(R-R0):L2=9-ABS(S-S0):R=X(1,1)
1720 ON(T XORT0)+1GOSUB2020,2050,2080,2050
1730 NEXTR,S
1740 FORR=X(1,0)TOX(1,1):FORS=Y(1,1)TOY(1,0)STEP-1
1750 IFE(R,S)=0THEN1790ELSER0=R:S0=S
1760 ONE(R,S)GOSUB2150,2160,2160,2150,2150,2160
1770 T=1:T0=1:GOSUB1990:L1=ABS(S-S0):L2=9-ABS(R-R0):S=Y(1,0)
1780 ON(T XORT0)+1GOSUB2020,2050,2080,2050
1790 NEXTS,R
1800 FORS=Y(1,0)TOY(1,1):FORR=X(1,1)TOX(1,0)STEP-1
1810 IFE(R,S)=0THEN1850ELSER0=R:S0=S
1820 ONE(R,S)GOSUB2150,2150,2150,2160,2160,2160
1830 T=2:T0=2:GOSUB1990:L1=ABS(R-R0):L2=9-ABS(S-S0):R=X(1,0)
1840 ON(T XORT0)+1GOSUB2020,2050,2080,2050
1850 NEXTR,S
1860 FORR=X(1,0)TOX(1,1):FORS=Y(1,0)TOY(1,1)
1870 IFE(R,S)=0THEN1910ELSER0=R:S0=S
1880 ONE(R,S)GOSUB2160,2160,2150,2160,2150,2150
1890 T=3:T0=3:GOSUB1990:L1=ABS(S-S0):L2=9-ABS(R-R0):S=Y(1,1)
1900 ON(T XORT0)+1GOSUB2020,2050,2080,2050
1910 NEXTS,R
1920 GOTO2210
1930 FORR=X(1,0)TOX(1,1):FORS=Y(1,0)TOY(1,1)
1940 IFC(B(1,R,S))=>7THENE(R,S)=0ELSEE(R,S)=C(B(1,R,S))
1950 NEXTS,R:RETURN
1960 T=D(E(R0,S0),T):E(R0,S0)=0
1970 ONT+1GOSUB2170,2180,2190,2200
1980 IFE(R0,S0)=0THENRETURNELSE1960
1990 T=D(E(R0,S0),T)
2000 ONT+1GOSUB2170,2180,2190,2200
2010 IFE(R0,S0)=0THENRETURNELSE1990
2020 IFE=0THENZ(Z)=Z(Z)-16*L1-(L1\8)*448
2030 IFE=1THENZ(Z)=Z(Z)+8*L1+(L1\8)*224
2040 RETURN
2050 IFE=0THENZ(Z)=Z(Z)-(L1+L2)*2
2060 IFE=1THENZ(Z)=Z(Z)+(L2+L1)*1
2070 RETURN
2080 IFE=0THENZ(Z)=Z(Z)-16*L2
2090 IFE=1THENZ(Z)=Z(Z)+8*L2
2100 RETURN
2110 T=0:RETURN
2120 T=1:RETURN
2130 T=2:RETURN
2140 T=3:RETURN
2150 E=0:RETURN
2160 E=1:RETURN
2170 R0=R0+1:RETURN
2180 S0=S0-1:RETURN
2190 R0=R0-1:RETURN
2200 S0=S0+1:RETURN
2210 ONF+1GOSUB300,430,440,450,460:GOSUB2650
2220 NEXTK
2230 IFF<>0THENF=0:GOSUB300
2240 NEXTJ,I
2250 Z1=-8192:Z0=599:FORL0=0TO599:IFZ(L0)>Z1 THENZ1=Z(L0):Z0=L0
2260 NEXTL0:I=(Z0 MOD100)\10:J=Z0 MOD10:K=Z0\100+1
2270 GOSUB320:GOSUB340:GOTO490
2280 REM @@@@@@@@@@@@@@@@ SCULL @@@@@@@@@@@@@@@@
2290 FORI0=1TO3:FORJ0=56TO51STEP-1:SOUNDJ0,1:SOUND51,1:SOUND56,1:NEXTJ0,I0
2300 RETURN
2310 FORI0=1TO2:FORJ0=56TO1STEP-4:SOUNDJ0,1:SOUNDJ0+1,1:NEXTJ0,I0
2320 RETURN
2330 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(150);:NEXTJ,I
2340 GOTO2390
2350 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(153);:NEXTJ,I
2360 GOTO2390
2370 LOCATES0,1,0:FORI=9TO10:FORJ=1TO4:LOCATEI,J:PRINTCHR$(131);:NEXTJ,I
2380 FORI=4TO11:FORJ=8TO15:K=(I*I*J)MOD56+1:SOUNDK,1:SOUNDK+28,1:NEXTJ,I
2390 FORK=0TO999:NEXTK
2400 FORK=1TO2:FORL=1TO4:FORI=1TO112STEP4:J=ABS(I-56):SOUNDJ+31,1:SOUNDJ,1:NEXTI,L
2410 FORI=1TO112:J=I^2-56*(I^2\56):SOUNDJ,1:NEXTI,K
2420 END
2430 DATA 0,0,0,0,0,0
2440 DATA 5D,FA,1F,0F,E5,A6,65,A6,FF,FF,65,A6,5D,BF,F8,F0,67,A6
2450 DATA 65,E6,0F,1F,FD,BA,5D,FF,18,18,FF,BA,65,A7,F0,F8,5F,BA
2460 DATA 56,25,2F,25,56,0
2470 DATA 0,7,7,7,8,7,7,7,8,7,8,7,8,9,8,7,8,8
2480 DATA 7,7,8,7,8,8,8,8,9,7,8,7,8,9,8,7,8,8
2490 DATA 8,9,8,9,9,9,8,9,3,7,8,8,8,9,5,8,6,9
2500 DATA 7,7,8,7,8,8,8,8,9,7,8,8,8,9,1,8,2,9
2510 DATA 8,8,9,8,4,9,9,9,9
2520 DATA 2,1,0,3,3,0,1,2,3,0,1,2,2,1,0,3
2530 DATA 0,3,2,1,1,2,3,0,1,2,3,0,0,3,2,1
2540 DATA &H96,&H99,&H5A,&HA5,&H66,&H69
2550 RESTORE2570:FORO=1TO58:READI,J,K,L
2560 LINE(I,J)-(K,L),PSET:NEXTO:RESTORE:RETURN
2570 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
2580 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
2590 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
2600 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
2610 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
2620 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
2630 X=M(0)+10*(N(0)\5):Y=N(0)MOD5+N(0)\5
2640 LOCATEX,Y:PRINTCHR$(224+K);:RETURN
2650 LOCATEX,Y:PRINTCHR$(C(B(0,M,N))MOD7+224);:RETURN
