10 CLS0:CLEAR1000:DIM A(11,11),B(11,11),S(4,16)
20 DIMX,Y,V,FH,FV,O,W,E,G,S,J,T,C,I,R,N,TN,JL,CC,MC,ZZ,OC,OV,XX,YY,CX,CY,TT,PP,P1,SC,S4,ST,J1$(8),J2$(8),B$(9),I$
40 GOTO9000
200 FORX=OTOG:FORY=OTOG:A(X,Y)=RND(V):B(X,Y)=A(X,Y):NEXT:NEXT:RETURN
300 PRINT@J,"";
310 FORY=OTOG:PRINTJ1$(A(O,Y));J1$(A(W,Y));J1$(A(E,Y));J1$(A(R,Y));J1$(A(I,Y));J1$(A(S,Y));J1$(A(V,Y));J1$(A(G,Y));B$(V);
315 PRINTJ2$(A(O,Y));J2$(A(W,Y));J2$(A(E,Y));J2$(A(R,Y));J2$(A(I,Y));J2$(A(S,Y));J2$(A(V,Y));J2$(A(G,Y));B$(Y);:NEXT:RETURN
400 FH=J:FORY=OTOG:FORX=OTOS
430 IFA(X+O,Y)=A(X,Y) THENIFA(X+W,Y)=A(X,Y) THENFH=FH+O:B(X,Y)=J:B(X+O,Y)=J:B(X+W,Y)=J
440 NEXT:NEXT:FV=J:FORX=OTOG:FORY=OTOS
450 IF A(X,Y+O)=A(X,Y) THENIFA(X,Y+W)=A(X,Y) THENFV=FV+O:B(X,Y)=J:B(X,Y+O)=J:B(X,Y+W)=J
460 NEXT:NEXT:RETURN
500 PRINT@PP,J1$(A(XX,YY));:PRINT@PP+TT,J2$(A(XX,YY));:PRINT@P1,J1$(A(CX,CY));:PRINT@P1+TT,J2$(A(CX,CY));:RETURN
700 FORX=OTOG:FORY=OTOG:ONA(X,Y)GOTO720,720,720,720,720,720,720
710 A(X,J)=RND(V):FORJL=Y TO O STEP-O:A(X,JL)=A(X,JL-O):B(X,JL)=A(X,JL):NEXT
720 NEXT:NEXT:RETURN
750 B$(R)=B$(J)+MID$(STR$(SC)+B$(N),W,V):RETURN
800 IFCXTHENIFABS(CX-XX)+ABS(CY-YY)=OTHEN850
810 IFCXTHENSOUNDO,O:GOTO890
820 CX=XX:CY=YY:P1=PP:ZZ=G:RETURN
850 OC=A(CX,CY):OV=A(XX,YY):A(XX,YY)=OC:A(CX,CY)=OV:B(XX,YY)=OC:B(CX,CY)=OV:GOSUB500
860 GOSUB400:IFFH=JANDFV=JTHENSOUNDO,O:A(XX,YY)=OV:A(CX,CY)=OC:B(XX,YY)=OV:B(CX,CY)=OC:GOSUB500:GOTO890
870 FORX=OTOG:FORY=OTOG:A(X,Y)=B(X,Y):NEXT:NEXT:GOSUB300:SC=SC+((FH+FV)*TN)+((FH*FV)*TN)
880 GOSUB750:GOSUB700:GOSUB300:GOSUB400:IFFHORFVTHENSC=SC+(FH+FV)*TN:GOTO870
890 CX=J:CY=J:ZZ=TT:RETURN
900 GOSUB200:GOSUB400:IFFH<>JORFV<>JTHEN900
910 SC=J:GOSUB750:GOSUB300
920 PRINT@PP,J1$(A(XX,YY));:PRINT@PP+TT,J2$(A(XX,YY));
925 FORCC=OTOZZ:I$=INKEY$:IFI$<>""THENCC=ZZ
926 NEXTCC
927 PRINT@PP,J1$(A(XX,YY));:PRINT@PP+TT,J2$(A(XX,YY));
930 IFI$="W"THENIFYY>O THENPP=PP-S4:YY=YY-O
940 IFI$="S"THENIFXX<G THENPP=PP+E:XX=XX+O
950 IFI$="A"THENIFXX>O THENPP=PP-E:XX=XX-O
960 IFI$="Z"THENIFYY<G THENPP=PP+S4:YY=YY+O
970 IFI$=CHR$(13)ORI$=" " THENGOSUB800
975 IFI$="M"THEN1000
980 PRINT@PP,J1$(G);:PRINT@PP+TT,J2$(G);
985 FORCC=OTOZZ:I$=INKEY$:IFI$<>""THENCC=ZZ:GOTO926
990 NEXTCC
995 GOTO920
1000 PRINT@313,"qUIT,  ";
1010 PRINT@345,"sEARCH,";
1020 PRINT@377,"rETURN,";
1021 PRINT@409,"OR nEW?";
1025 I$=INKEY$:I$=""
1030 I$=INKEY$:IFI$=""THEN1030
1040 IFI$="Q"THEN9999
1050 IFI$="S"THENGOTO1090
1055 IFI$="R"ORI$=" " THENGOSUB300:GOTO980
1060 IFI$="N"THENGOSUB1080:PRINT@345,"PLEASE ";:PRINT@377,"WAIT...";:GOTO900
1070 GOTO1030
1080 FORY=313TO409STEPTT:PRINT@Y,"       ";:NEXT:RETURN
1090 GOSUB1080:PRINT@345,"SEARCH-";:PRINT@377,"ING... ";
1100 C=J:PRINT@473,"";
1105 FORX=OTOG:A(X,J)=J:NEXT
1110 FORY=OTOG:FORX=OTOG:FORJL=OTOST
1115 IF X+S(O,JL)<OORY+S(W,JL)<OTHEN1130
1120 IFA(X,Y)=A(X+S(O,JL),Y+S(W,JL))THENIFA(X,Y)=A(X+S(E,JL),Y+S(R,JL))THENPRINTX;",";Y;:JL=ST:Y=G:X=G:C=O
1130 NEXT:NEXT:NEXT
1280 IFC=JTHENPRINT@473,"NO MORE";
1290 GOTO1000
1800 REM JEWELS
1900 DATA 0,1,1,1,0,0
1910 DATA 0,1,1,1,0,0
1920 DATA 0,1,1,1,0,0
2000 DATA 0,1,1,1,0,0
2010 DATA 0,1,1,1,0,0
2020 DATA 0,1,1,1,0,0
3000 DATA 0,1,1,1,0,0
3010 DATA 1,1,1,1,1,0
3020 DATA 0,1,1,1,0,0
4000 DATA 0,1,1,1,0,0
4010 DATA 1,1,1,1,1,0
4020 DATA 0,1,1,1,0,0
5000 DATA 0,1,1,1,0,0
5010 DATA 1,1,1,1,1,0
5020 DATA 0,1,1,1,0,0
6000 DATA 1,1,1,1,1,0
6010 DATA 0,1,1,1,0,0
6020 DATA 0,0,1,0,0,0
7000 DATA 0,0,1,0,0,0
7010 DATA 0,1,1,1,0,0
7020 DATA 1,1,1,1,1,0
8000 DATA 1,1,1,1,1,0
8010 DATA 1,1,1,1,1,0
8020 DATA 1,1,1,1,1,0
8030 REM SEARCH DATA
8100 DATA -1,-1,+1,-1
8110 DATA +1,-1,+1,+1
8120 DATA +1,+1,-1,+1
8130 DATA -1,+1,-1,-1
8140 DATA -1,-1,-1,-2
8150 DATA +1,-1,+1,-2
8160 DATA +1,+1,+1,+2
8170 DATA -1,+1,-1,+2
8190 DATA -1,-1,-2,-1
8200 DATA +1,-1,+2,-1
8210 DATA +1,+1,+2,+1
8220 DATA -1,+1,-2,+1
8230 DATA  0,-2, 0,-3
8240 DATA +2, 0,+3, 0
8250 DATA  0,+2, 0,+3
8260 DATA -2, 0,-3, 0
9000 CLS0:C=1:J=0:L=2:J=0:O=1:W=2:E=3:R=4:I=5:S=6:V=7:G=8:MC=16384:CC=0:PP=0:XX=1:YY=1
9010 N=9:TN=10:S4=64:ST=16:ZZ=32:TT=32:B$(J)=CHR$(128):T=6:CC=3
9060 FORY=OTOG:FORX=OTOG:B$(Y)=B$(Y)+B$(J):NEXT:NEXT
9070 B$(8)=RIGHT$(B$(G),7) 
9080 B$(1)=RIGHT$(B$(G),1)+"jeweler" 
9085 B$(2)=RIGHT$(B$(G),3)+"by"+RIGHT$(B$(8),3)
9090 B$(3)=RIGHT$(B$(G),2)+"jim"+CHR$(128)+"g"+RIGHT$(B$(8),1)
9095 B$(9)="       " 
9100 FOR JL=O TO G:FOR Y=J TO W:FOR X=O TO S:READ A
9140 IFATHENSET(T+X,Y,C)
9150 NEXT:NEXT
9240 J1$(JL)=CHR$(PEEK(MC+CC))+CHR$(PEEK(MC+CC+O))+CHR$(PEEK(MC+CC+W))
9250 J2$(JL)=CHR$(PEEK(MC+CC+TT))+CHR$(PEEK(MC+CC+O+TT))+CHR$(PEEK(MC+CC+W+TT))
9260 T=T+S:CC=CC+E:C=C+O
9270 NEXT
9280 J1$(0)=CHR$(128)+CHR$(128)+CHR$(128)
9290 J2$(0)=CHR$(128)+CHR$(128)+CHR$(128)
9300 PRINT@99, "         jeweler         ";
9360 PRINT@131,"A,S,W,Z TO MOVE CURSOR   ";
9370 PRINT@163,"ENTER TO SELECT 1ST JEWEL";
9375 PRINT@195,"ENTER TO SELECT 2ND JEWEL";
9380 PRINT@227,"SWAP JEWELS TO BUILD     ";
9385 PRINT@259,"MATCHES          M = MENU";
9390 PRINT@291,"3-JEWEL MATCH - 10 POINTS";
9400 PRINT@323,"4-JEWEL MATCH - 20 POINTS";
9410 PRINT@355,"5-JEWEL MATCH - 30 POINTS";
9420 PRINT@387,"6-JEWEL MATCH - 50 POINTS";
9425 FORY=1TO16:FORX=1TO4:READS(X,Y):NEXT:NEXT
9430 PRINT@451," HIT ANY KEY TO CONTINUE ";
9440 I$=INKEY$:A(O,J)=RND(TN):IFI$=""THEN9440
9450 PRINT@451,"       PLEASE WAIT       ";
9500 GOTO900
9999 END
