1 ok=1:L=1:FOR z=1 TO 8:READ w(z):NEXT:DIM P(143):FOR x=16 TO 143:READ P(x):PRINT:NEXT:MODE 1:CALL &BC02:PEN 3:PAPER 0:INK 1,0:INK 2,13:INK 3,26:g$=CHR$(10)+CHR$(8):INPUT"Board(A-H):",a$:a$=UPPER$(a$):IF a$>"à"AND a$<"I" THEN L=ASC(A$)-64:DATA 18,17,9,15
2 CLS:WINDOW#1,12,28,4,20:PAPER#1,1:CLS#1:WINDOW#1,13,27,5,19:PAPER#1,2:CLS#1:FOR x=8 TO 19 STEP 4:LOCATE 13,x:PAPER 1:PRINT SPACE$(15):NEXT:FOR x=16 TO 28 STEP 4:FOR y=4 TO 20:LOCATE x,y:PRINT" ":NEXT y,x:t=0:FOR y=1 TO 4:FOR x=1 TO 4:b(y,x)=P(L*16+t)
3 ENV 1,15,-1,6:t=t+1:NEXT x,y:INK 0,w(L):BORDER w(L):SYMBOL AFTER 32:SYMBOL 48,0:SYMBOL 49,255,255,255,255,255,255,255,255:FOR x=13 TO 28 STEP 4:PEN 3:LOCATE x,3:PRINT"11":NEXT:FOR x=5 TO 20 STEP 4:LOCATE 11,x:PRINT"1";g$;"1":NEXT:PEN#1,3:DATA 11,6,3,4
4 FOR y=1 TO 4:FOR x=1 TO 4:WINDOW#1,9+(4*x),11+(4*x),1+(4*y),3+(4*y):PAPER#1,2:PRINT#1,BIN$(b(y,x),9);:NEXT x,y:FOR x=1 TO 4:PEN 2:PAPER 0:LOCATE 9+(x*4),2:PRINT CHR$(68+x):LOCATE 10,1+(x*4):PRINT CHR$(69-x):NEXT:DATA ,,,,,484,457,,,295,79,,,,,
5 CALL &BB18:INK 3,13:FOR Z=1 TO 10+L*5:c=1+INT(RND*8):PEN 3:GOSUB 6:NEXT:ok=0:INK 3,26:SOUND 1,0,60,15,1,,31:SOUND 2,0,70,12,1,,9:PAPER 0:SPEED INK 6,6:DATA ,84,273,,84,,,273,273,,,84,,273,84,,485,455,455,461,365
6 a$=UPPER$(INKEY$):IF a$>""THEN IF ASC(a$)>64 AND ASC(a$)<73 THEN c=ASC(a$)-64:PEN 3:IF c<5 THEN LOCATE 11,21-(c*4):PRINT CHR$(138);g$;CHR$(138):GOSUB 8:GOSUB 10 ELSE LOCATE 9+((c-4)*4),3:PRINT CHR$(140);CHR$(140):GOSUB 9:GOSUB 10:DATA ,,365,365,,
7 IF a$=CHR$(127)THEN RUN ELSE IF ok THEN c=1+INT(RND*8):IF c<5 THEN GOSUB 8:RETURN ELSE GOSUB 9:RETURN:ELSE IF ok=0 THEN 6:DATA 365,359,455,455,335,84,448,448,273,292,84,273,73,292,273,84,73,273,7,7,84,273,484,457,84,484,256,64,457,295,4,1,79
8 k=5-c:t=b(k,4):b(k,4)=b(k,3):b(k,3)=b(k,2):b(k,2)=b(k,1):b(k,1)=t:FOR h=1 TO 4:WINDOW#1,9+4*h,11+4*h,1+4*k,3+4*k:PRINT#1,BIN$(b(k,h),9);:NEXT:LOCATE 11,1+4*k:PRINT"1";g$;"1":o=RND:RETURN:DATA 84,295,79,273,484,457,26,50,295,79,152,176,9
9 k=c-4:t=b(4,k):b(4,k)=b(3,k):b(3,k)=b(2,k):b(2,k)=b(1,k):b(1,k)=t:FOR h=1 TO 4:WINDOW#1,9+4*k,11+4*k,1+4*h,3+4*h:PRINT#1,BIN$(b(h,k),9);:NEXT:LOCATE 9+((c-4)*4),3:PRINT"11":o=RND:RETURN:DATA 56,56,36,72,56,56,288,1,224,392,4,164,484,457,137,290
10 v=0:u=-1:FOR z=1 TO 4:FOR o=1 TO 4:u=u+1:IF b(z,o)=P((16*L)+u)THEN v=v+1:NEXT o,z:IF v=16 THEN INK 2,26,13:INK 3,13,26:CALL &BB18:RUN:ELSE RETURN:ELSE RETURN:DATA 295,79,74,64,35,14,256,485,407,215,461,377,176,152,380,125,50,26,317,359,470,467,335