10 poke 53280,6: poke 53281,0
20 print chr$(144) chr$(147) chr$(5)
30 dim H(4,3,2,2),G(3,3),J(3,3)
40 dim C(1040),E(255)
50 dim A(390),P(390),Q(390)
60 dim X(390),Y(390)
70 dim B(11),V(3),W(3)
80 dim S(3),D(3),I(3),N(1)
100 G(0,1)=2: G(1,0)=2: G(1,3)=1
110 G(2,1)=3: G(3,0)=3: G(3,2)=1
120 E(29)=1: E(157)=2: E(17)=3: E(145)=4
140 B(10)=38: B(11)=-38
150 N(1)=29: c=740
180 for n=0 to 3: read I(n): next
190 for n=0 to 3: read V(n),W(n): next
200 for n=0 to 3: read D(n),S(n): next
210 for d=0 to 3
220 for n=0 to 3: read J(d,n): next n,d
230 for v=0 to 4
240 for w=0 to 3: read E$: n=0
250 for y=0 to 2
260 for x=0 to 2: n=n+1
270 H(v,w,y,x)=asc(mid$(E$,n))-48
280 next x,y,w,v
300 n=0: v=1024: w=55296
310 for y=0 to 24: read E$
320 for x=1 to 40
330 a=asc(mid$(E$,x))-48
340 if a<0 then poke v,224: poke w,6
350 if a<1 goto 400
360 e=e+1: A(e)=a-1: C(n)=e
370 P(e)=v: Q(e)=w
380 Y(e)=y: X(e)=x
400 n=n+1: v=v+1: w=w+1
410 next x,y
500 y=Y(C(c)): x=X(C(c)): h=15
510 for n=0 to 3
520 e=S(n): a=A(C(e)): d=D(n)
530 if a>8 goto 600
540 if a<4 then d=G(a,d): goto 590
550 v=sgn(Y(C(e))-y)*V(n)+1
560 w=sgn(X(C(e))-x)*W(n)+1
570 d=H(a-4,d,v,w)
590 D(n)=d
600 f=e+I(d): b=n+2
610 gosub 800: S(n)=f
620 if e=c or f=c goto 620
630 next
700 a=A(C(c)): h=0: n=0
710 get E$: if E$="" goto 730
720 N(0)=asc(E$): goto 710
730 f=E(N(n)): if f then d=f-1: f=c+I(d)
740 if C(f)+n=0 then n=1: goto 730
750 if C(f)+B(a)=0 goto 500
760 N(1)=N(n): e=c: b=7
770 gosub 800: c=f
780 goto 500
800 v=Q(C(e)): w=Q(C(f))
810 if w=0 then b=0: w=v: f=e+B(a)
820 p=P(C(f))
830 poke p-41,254: poke p-40,252
840 poke p-1,251-h: poke p,236+h
850 poke v-J(d,0),0: poke v-J(d,1),0
860 poke w-J(d,2),b: poke w-J(d,3),b
870 return
1000 data 1,-1,40,-40
1010 data 1,1,1,-1,-1,1,-1,-1
1020 data 0,418,1,424,1,498,0,504
1030 data 1,41,0,40,0,40,1,41
1040 data 40,41,0,1,0,1,40,41
1100 data "000000000","222222333"
1110 data "022022022","033033033"
1120 data "222222333","000000000"
1130 data "221221221","331331331"
1140 data "222000000","222111111"
1150 data "000000000","001001001"
1160 data "000000333","111111333"
1170 data "001001001","000000000"
1180 data "222000333","222111333"
1190 data "021021021","031031031"
1200 data "0000000000000000000//0000000000000000000"
1210 data "01::::::7:::::::::2//01:::::::::7::::::2"
1220 data "0://///0:////////0://0:////////0://///0:"
1230 data "0:000000:000000000:000:000000000:000000:"
1240 data "05::::::8::::::7::8:::8::7::::::8::::::6"
1250 data "0:////////////0:////////0:////////////0:"
1260 data "0:0000000/00000:000000000:0000/00000000:"
1270 data "03::::::2/01:::8:::2:1:::8:::2/01::::::4"
1280 data "///////0:/0://////0:0://////0:/0:///////"
1290 data "///////0:/0:/000000:0:00000/0:/0:///////"
1300 data "00000000:00:/01::::4:3::::2/0:00:0000000"
1310 data "0;::::::9::6/0:00000000000:/05::9::::::<"
1320 data "///////0:/0:/03:::::::::::4/0:/0:///////"
1330 data "///////0:/0:////////////////0:/0:///////"
1340 data "00000000:/0:00000000000000000:/0:0000000"
1350 data "01::::::6/05:::::::::::::::::6/05::::::2"
1360 data "0://///0:/0:////////////////0:/0://///0:"
1370 data "0:000000:00:00000000000000000:00:000000:"
1380 data "03::::::9::9:::::::::::::::::9::9::::::4"
1390 data "///////0:/0:////////////////0:/0:///////"
1400 data "00000000:/0:0000000//00000000:/0:0000000"
1410 data "01::::::4/03::::::2//01::::::4/03::::::2"
1420 data "0:///////////////0://0:///////////////0:"
1430 data "0:0000000000000000:000:0000000000000000:"
1440 data "03::::::::::::::::8:::8::::::::::::::::4"