10 REM@ S1024 20 REM@ 02 30 REM@ R=CS 40 CLR:DIM A(9,9),X(9),Y(9),PT(9),RX(81),RY(81),RN(9),CN(9),BN(9),RC(9),CC(9) 50 DIM BC(9),RP(9),CP(9),BP(9),NR(9),NC(9),NB(9),LV(9),UV(9),KV(9),VV(9),C(7) 60 DIM RF(7),M1$(3),M2$(3),BT$(9,2) 70 DATA255,0,56,69,130,69,56,0,224,144,144,144,224,128,64,63 80 DATA255,16,144,16,16,16,144,16,16,16,16,16,32,64,128,0 90 FORI=832TO894:POKEI,0:NEXT 100 FORI=832TO877STEP3:READJ:POKEI,J:NEXT 110 FORI=833TO878STEP3:READJ:POKEI,J:NEXT 120 POKE53287,0:POKE53248,50:POKE53249,194:POKE53264,1:POKE2040,13:POKE53269,1 130 DEFFNX(Y)=INT(LOG(Y)/LOG(2))+1 140 SL$="":CL$=" " 150 BS$="[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]":CS=55386:TS=1114: 160 CL$="[155]"+SL$+CL$+BS$+CL$+BS$ 170 CL$=CL$+"[144] [155][145][145][145]" 180 C(1)=11:C(2)=12:C(3)=15:C(4)=1:C(5)=15:C(6)=12 190 POKE53280,0:POKE53281,0:DB$="[157][157][157][157][157][157][157][157]" 200 BO$="[159][213][192][192][192][192][192][192][201]"+DB$+"[221] [221]"+DB$+"[202][192][192][192][192][192][192][203]"+DB$+"[144] [145][157] [157][145] [157]" 210 BO$=BO$+"[157][157][157][157][157][157][157][159]":OPEN15,8,15,"I0:" 220 OPEN2,8,2,"BEST TIMES,P,R" 230 INPUT#15,A$,A$:IFA$<>"OK"THENCLOSE2:GOTO250 240 FORI=1TO9:INPUT#2,BT$(I,1),BT$(I,0),BT$(I,2):NEXT:CLOSE2:GOTO270 250 FORI=1TO9:BT$(I,1)="006000":BT$(I,0)="---------":BT$(I,2)="5" 260 NEXT:GOSUB3940:RUN 270 CLOSE15:POKE53272,21:PRINT"[147][158] D I G I T H U N T " 280 GOSUB3690:PRINT"[155]"SPC(3)" LEVEL TIME NAME ERRORS[151][184]" 290 PRINTSPC(4)"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][155]" 300 JJ$=" ":FORI=1TO9:A$=BT$(I,1):IFI=SKTHENPOKE199,1 310 PRINTSPC(6)I"[157]. ";:IFVAL(MID$(A$,3,2))<10THENPRINT" "; 320 PRINTVAL(MID$(A$,3,2))"[157]:"MID$(A$,5,2)JJ$BT$(I,0)JJ$; 330 IFVAL(BT$(I,2))<10THENPRINT" "; 340 PRINTBT$(I,2)" ":NEXT:IFSKTHEN4050 350 POKE214,13:PRINT:PRINT"[158] SETTING UP..." 360 GOSUB1830 370 GOSUB1550:FORJ=1TO3:FORI=1TO3:X(I+J*3-3)=R(J)*3-3:NEXT:NEXT 380 GOSUB1550:FORJ=1TO3:FORI=1TO3:Y(I+J*3-3)=R(J)*3-3:NEXT:NEXT 390 FORI=0TO6STEP3:GOSUB1550:FORJ=1TO3:X(I+J)=X(I+J)+R(J):NEXT:GOSUB1550 400 FORJ=1TO3:Y(I+J)=Y(I+J)+R(J):NEXT:NEXT 410 POKE214,13:PRINT:PRINT" SETTING UP..." 420 FORX=1TO9:FORY=1TO9:READQ:A(X(X),Y(Y))=-Z(Q):NEXT:NEXT 430 DATA1,5,9,8,4,6,7,2,3,8,6,3,1,2,7,5,4,9,7,2,4,3,9,5,8,6,1 440 DATA2,1,8,5,3,9,6,7,4,4,9,5,7,6,2,3,1,8,6,3,7,4,1,8,2,9,5 450 DATA5,8,2,9,7,4,1,3,6,3,4,6,2,8,1,9,5,7,9,7,1,6,5,3,4,8,2 460 POKE198,0:I=1 470 POKE214,13:PRINT:PRINT"[159]SKILL LEVEL (1-9) OR CLR TO CLEAR TIMES" 480 GETA$:IFTI<10THEN510 490 POKE55869,C(I):POKE55871,C(I) 500 POKE55877,C(I):POKE55878,C(I):POKE55879,C(I):I=I+1:TI$="000000":IFI>6THENI=1 510 SK=VAL(A$):IF(SK>9ORSK<1)ANDA$<>"[147]"ANDA$<>""THEN480 520 IFA$="[147]"ORA$=""THEN3990 530 TI$="160000":GOTO280 540 POKE53272,21:POKE53280,11:POKE53281,11:POKE53269,0 550 X$="[144][221][155][166][158][221][155][166][158][221][155][166][144][221][155][166][158][221][155][166][158][221][155][166][144][221][155][166][158][221][155][166][158][221][155][166][144][221]" 560 Y$=" [144][171][158][192][219][192][219][192][144][219][158][192][219][192][219][192][144][219][158][192][219][192][219][192][144][179]" 570 Z$=" [144][171][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][179]" 580 PRINT"[147][155] D I G I T H U N T [144][146][175]" 590 PRINT"[144][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175]" 600 PRINT" A B C D E F G H I" 610 PRINT"[144] [176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174]" 620 PRINT" R";X$:PRINTY$ 630 PRINT" S";X$:PRINTY$ 640 PRINT" T";X$:PRINTZ$ 650 PRINT" U";X$:PRINTY$ 660 PRINT" V";X$:PRINTY$ 670 PRINT" W";X$:PRINTZ$ 680 PRINT" X";X$:PRINTY$ 690 PRINT" Y";X$:PRINTY$ 700 PRINT" Z";X$:PRINT" [144][173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]" 710 PRINTCL$;"[155] ONE MOMENT..." 720 PRINT" I'M THINKING OF A GOOD PUZZLE..." 730 POKE1983,160:POKE2023,160:POKE56255,0:POKE56295,0 740 POKE214,12:PRINT:PRINT"[144]BEST TIME":PRINT""BO$;:A$=BT$(SK,1) 750 PRINT"[159]"VAL(MID$(A$,3,2))"[157]:"MID$(A$,5,2) 760 POKE214,12:PRINT:PRINTTAB(32)"[144]ERRORS" 770 PRINTTAB(31)BO$ 780 PRINT"[144]";:IFBT$(SK,0)="---------"THENPRINT"[151]"; 790 PRINTBT$(SK,0):PRINT"[144]LIMIT" 800 PRINT""VAL(MID$(TB$,3,2))"[157]:"MID$(TB$,5,2) 810 GOSUB1950:REM IFSK=10THENFORI=1TO9:FORII=1TO9:A(I,II)=ABS(A(I,II)):NEXT:NEXT 820 PRINTCL$;"[155] I'VE GOT IT!" 830 GOSUB1750:X1=5:Y1=5 840 GOSUB1290 850 : 860 REM MAIN LOOP 870 : 880 IFNU<1THENGOSUB3880:PRINTCL$" YOU WIN WITH ONLY"SC"ERRORS";:GOTO1480 890 IFVAL(TI$)>10000THENPRINT""BO$""SPC(31)BO$:TI$="000000" 900 PRINT"[144][146]TIMEACCURACY" 910 POKECS+2*X1+80*Y1,1 920 GOSUB3860 930 GOSUB3580:IFA(X1,Y1)>0THENIFA$>"0"ANDA$<="9"THENTR%=TR%+1 940 REM IFA$="?"ORA$="/"THENSC=SC+1:XM=1:GOSUB3640:TR%=TR%+1 950 IFTI$>TB$THENGOSUB3970 960 A=ASC(A$):X2=X1:Y2=Y1:REMPOKE1983,160:POKE2023,160:POKE56255,0:POKE56295,0 970 IFA>=65ANDA<=73THENX2=A-64:GOTO1320 980 IFA>=82ANDA<=90THENY2=A-81:GOTO1320 990 IFA=133THENGOSUB2280:GOTO840 1000 IFA=134THENGOSUB2650:GOTO840 1010 IFA=135THENGOSUB2550:GOTO840 1020 IFA=136THEN2860 1030 IFA=47ANDA(X1,Y1)>0THENFF%=1:GOSUB1680:SC=SC+2:GOSUB3860:GOTO880 1040 IFA=63THENGOSUB1790:SC=SC+2:FF%=1:GOSUB3860:GOTO880 1050 IFA=17THENY2=Y1+1:GOTO1320 1060 IFA=29THENX2=X1+1:GOTO1320 1070 IFA=145THENY2=Y1-1:GOTO1320 1080 IFA=157THENX2=X1-1:GOTO1320 1090 IFA=81THEN1370 1100 IFA<49ORA>57THEN880 1110 A=A-48:IFA(X1,Y1)<0THEN880 1120 IFA(X1,Y1)=ATHENGOSUB1680:GOTO880 1130 X2=X1:Y2=Y1:SC=SC+1:GOSUB3860 1140 IF(RN(Y1)ANDPT(A))=0THEN1170 1150 J=1:FORI=1TO9:IFA(I,Y1)=-ATHENX2=I 1160 NEXT:I=Y1:GOSUB2820:GOTO1240 1170 IF(CN(X1)ANDPT(A))=0THEN1200 1180 J=2:FORI=1TO9:IFA(X1,I)=-ATHENY2=I 1190 NEXT:I=X1:GOSUB2820:GOTO1240 1200 B=KV(X1)+UV(Y1):IF(BN(B)ANDPT(A))=0THEN1230 1210 FORI=VV(B)+1TOVV(B)+3:FORJ=UV(B)+1TOUV(B)+3:IFA(I,J)=-ATHENX2=I:Y2=J 1220 NEXTJ,I:J=3:I=B:GOSUB2820:GOTO1240 1230 M1$(1)=">>> I HAVE A DIFFERENT DIGIT THERE":X2=0:GOTO1250 1240 M1$(1)=">>> "+B$+C$+" ALREADY HAS A"+STR$(A) 1250 PRINTCL$;M1$(1):IFX2>0THENPOKECS+2*X2+80*Y2,0 1260 GOSUB 3580 1270 IFX2>0THENPOKECS+2*X2+80*Y2,15 1280 GOSUB1290:GOTO960 1290 PRINTCL$;" Q:QUIT ?:REVEAL RND /:REVEAL THIS" 1300 PRINT" F1:PRINT F3:LOAD F5:SAVE F7:HINT";:RETURN 1310 REM MOVE CURSOR, CHECK BOUNDS 1320 POKECS+2*X1+80*Y1,15:X1=X2:Y1=Y2:IFX1<1THENX1=9 1330 IFX1>9THENX1=1 1340 IFY1<1THENY1=9 1350 IFY1>9THENY1=1 1360 GOTO880 1370 PRINTCL$;"QUIT? F1:YES F3:SHOW GRID F7:NO" 1380 GETA$:IFA$=""THEN1380 1390 IFA$="Y"THENA$="[133]" 1400 IFA$="N"THENA$="[136]" 1410 IFA$=CHR$(136)THEN840 1420 IFA$=CHR$(133)THEN1470 1430 IFA$<>CHR$(134)THEN1380 1440 FORY=1TO9:FORX=1TO9:POKETS+2*X+80*Y,48+A(X,Y) 1450 IFA(X,Y)<0THENPOKETS+2*X+80*Y,48-A(X,Y) 1460 NEXTX,Y 1470 PRINTCL$;"[145]"; 1480 IFSC=1THEN PRINT"[157] " 1490 PRINT 1500 POKECS+2*X1+80*Y1,15:PRINTSPC(13)"PLAY AGAIN? (Y/N)" 1510 GETA$:IFA$<>"Y"ANDA$<>"N"THEN1510 1520 IFA$="N"THEN3640 1530 RUN 1540 REM COMPUTE PERMUTATION OF 3 1550 R(1)=1:R(2)=2:R(3)=3 1560 R=INT(RND(TI)*2)+2:S=R(1):R(1)=R(R):R(R)=S 1570 R=INT(RND(TI)*2)*2+1:S=R(2):R(2)=R(R):R(R)=S 1580 R=INT(RND(TI)*2)+1:S=R(3):R(3)=R(R):R(R)=S 1590 RETURN 1600 REM REMOVE SQUARE AT (X,Y) 1610 N=-A(X,Y):A(X,Y)=N:NU=NU+1:PT=PT(N):B=KV(X)+UV(Y):BS=LV(X)+VV(Y) 1620 RN(Y)=RN(Y)-PT:CN(X)=CN(X)-PT:BN(B)=BN(B)-PT 1630 RC(Y)=RC(Y)-1:CC(X)=CC(X)-1:BC(B)=BC(B)-1 1640 RP(Y)=RP(Y)-PT(X):CP(X)=CP(X)-PT(Y):BP(B)=BP(B)-PT(BS) 1650 NR(N)=NR(N)-PT(Y):NC(N)=NC(N)-PT(X):NB(N)=NB(N)-PT(B) 1660 RETURN 1670 REM FILL IN SQUARE AT (X1,Y1) 1680 N=A(X1,Y1):A(X1,Y1)=-N:NU=NU-1:PT=PT(N):B=KV(X1)+UV(Y1):BS=LV(X1)+VV(Y1) 1690 RN(Y1)=RN(Y1)+PT:CN(X1)=CN(X1)+PT:BN(B)=BN(B)+PT 1700 RC(Y1)=RC(Y1)+1:CC(X1)=CC(X1)+1:BC(B)=BC(B)+1 1710 RP(Y1)=RP(Y1)+PT(X1):CP(X1)=CP(X1)+PT(Y1):BP(B)=BP(B)+PT(BS) 1720 NR(N)=NR(N)+PT(Y1):NC(N)=NC(N)+PT(X1):NB(N)=NB(N)+PT(B) 1730 POKETS+2*X1+80*Y1,48+N:RETURN 1740 REM ADD NUMBERS TO DISPLAY 1750 FORY=1TO9:FORX=1TO9:POKETS+2*X+80*Y,102 1760 IFA(X,Y)<0THENPOKETS+2*X+80*Y,48-A(X,Y) 1770 NEXTX,Y:RETURN 1780 REM FILL IN RANDOM SQUARE 1790 POKECS+2*X1+80*Y1,15 1800 RQ=RQ+1:X1=RX(RQ):Y1=RY(RQ):IFA(X1,Y1)<0THEN1800 1810 GOSUB1680:RETURN 1820 REM INITIALIZE PERMUTATION AND FLAG ARRAYS 1830 FORI=1TO9:Z(I)=I:NEXT 1840 FORI=1TO9:X=INT(RND(TI)*9)+1:S=Z(I):Z(I)=Z(X):Z(X)=S:NEXT 1850 PT(1)=1:PT(2)=2:PT(3)=4:PT(4)=8:PT(5)=16:PT(6)=32:PT(7)=64:PT(8)=128 1860 PT(9)=256:NU=0:RQ=0 1870 RF(0)=0:RF(1)=7:RF(2)=56:RF(3)=63:RF(4)=448:RF(5)=455:RF(6)=524:RF(7)=511 1880 FORI=1TO9:KV(I)=INT((I-1)/3)+1:UV(I)=3*INT((I-1)/3):LV(I)=I-UV(I) 1890 VV(I)=3*(LV(I)-1):RN(I)=511:CN(I)=511:BN(I)=511:RC(I)=9:CC(I)=9:BC(I)=9 1900 RP(I)=511:CP(I)=511:BP(I)=511:NR(I)=511:NC(I)=511:NB(I)=511:NEXT 1910 FORI=0TO80:RX(I+1)=INT(I/9)+1:RY(I+1)=I-9*RX(I+1)+10:NEXT 1920 FORI=1TO81:X=INT(RND(1)*81+1):S=RX(I):RX(I)=RX(X):RX(X)=S:S=RY(I) 1930 RY(I)=RY(X):RY(X)=S:NEXT:RETURN 1940 REM FLAG SQUARES TO BE GUESSED BY PLAYER 1950 GOSUB2000:IFSK<2THENRETURN 1960 IFSK>4THENGOSUB2070 1970 IFSK>7THENGOSUB2140 1980 GOSUB2210:RETURN 1990 REM REMOVE ONE FROM EACH ROW, COLUMN, AND BOX 2000 FORX=1TO9:Y=INT(RND(TI)*9+1):GOSUB1610:NEXT 2010 FORY=1TO9:IFRC(Y)=9THENX=INT(RND(TI)*9+1):GOSUB1610 2020 NEXT 2030 FORQ=1TO9:IFBC(Q)<9THEN2050 2040 X=VV(Q)+1+INT(RND(TI)*3):Y=UV(Q)+1+INT(RND(TI)*3):GOSUB1610 2050 NEXT:RETURN 2060 REM REMOVE SQUARE FROM ROW 2070 J=27*(SK-4):IFJ>81THENJ=81 2080 FORI=1TOJ:X=RX(I):Y=RY(I):IFA(X,Y)>0THEN2120 2090 POKECS+2*X+80*Y,0:B=KV(X)+UV(Y):N=-A(X,Y) 2100 IF(RP(Y)ORNC(N)ORRF(INT((NB(N)-PT(B))/PT(UV(Y)+1))AND7))=511THENGOSUB1610 2110 POKECS+2*X+80*Y,15 2120 NEXT:RETURN 2130 REM REMOVE SQUARE FROM COLUMN 2140 J=41*(SK-7):IFJ>81THENJ=81 2150 FORI=1TOJ:X=RX(I):Y=RY(I):IFA(X,Y)>0THEN2190 2160 POKECS+2*X+80*Y,1:B=KV(X)+UV(Y):N=-A(X,Y) 2170 IF(CP(X)ORNR(N)OR((INT((NB(N)-PT(B))/PT(KV(X)))AND73)*7))=511THENGOSUB1610 2180 POKECS+2*X+80*Y,15 2190 NEXT:RETURN 2200 REM REMOVE SQUARES BY INDUCTION 2210 J=27*(SK-1):IFJ>81THENJ=81 2220 FORI=1TOJ:X=RX(I):Y=RY(I):IFA(X,Y)>0THEN2260 2230 POKECS+2*X+80*Y,8:B=KV(X)+UV(Y) 2240 IF(BN(B)ORRN(Y)ORCN(X))=511THENGOSUB1610 2250 POKECS+2*X+80*Y,15 2260 NEXTI:RETURN 2270 REM PRINT ARRAY 2280 PRINTCL$;" PRINT:":PRINT" F1:COMMODORE F3:OTHER F5: F7:QUIT"; 2290 GETA$:GOSUB3790:IFA$=""THEN2290 2300 A=ASC(A$):IFA=133THEN2440 2310 IFA=134THEN2340 2320 IFA=136THENRETURN 2330 GOTO2290 2340 OPEN4,4:PRINT#4,"+---+---+---+---+---+---+---+---+---+" 2350 FORY=1TO9:PRINT#4,"! ! ! !" 2360 FORX=1TO9:IFLV(X)=1THENPRINT#4,"!";:GOTO 2380 2370 PRINT#4," "; 2380 IFA(X,Y)<0THENPRINT#4,-A(X,Y);:GOTO2400 2390 PRINT#4," "; 2400 NEXT:PRINT#4,"!":PRINT#4,"! ! ! !" 2410 IFLV(Y)=3THENPRINT#4,"+---+---+---+---+---+---+---+---+---+":GOTO2430 2420 PRINT#4,"+ + + + + + + + + +" 2430 NEXT:CLOSE4:RETURN 2440 OPEN4,4:PRINT#4,"[176][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][174]" 2450 FORY=1TO9:PRINT#4,"[221] [221] [221] [221]" 2460 FORX=1TO9:IFLV(X)=1THENPRINT#4,"[221]";:GOTO 2480 2470 PRINT#4," "; 2480 IFA(X,Y)<0THENPRINT#4,-A(X,Y);:GOTO2500 2490 PRINT#4," "; 2500 NEXT:PRINT#4,"[221]":PRINT#4,"[221] [221] [221] [221]" 2510 IFY=3ORY=6THENPRINT#4,"[171][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]":GOTO2540 2520 IFY=9THENPRINT#4,"[173][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][189]":GOTO2540 2530 PRINT#4,"[171] [219] [219] [219] [219] [219] [219] [219] [219] [179]" 2540 NEXT:CLOSE4:RETURN 2550 REM SAVE TO A FILE 2560 TF$=TI$:PRINTCL$;" SAVE GAME? ARE YOU SURE? (Y/N)" 2570 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2570 2580 IFA$="N"THENRETURN 2590 CLOSE15:OPEN15,8,15,"S0:DIGIT.FILE":CLOSE15 2600 OPEN3,8,3,"0:DIGIT.FILE,P,W":A$=CHR$(13) 2610 FORI=1TO9:FORJ=1TO9:PRINT#3,A(I,J):NEXTJ,I 2620 FORI=1TO81:PRINT#3,RX(I):PRINT#3,RY(I):NEXT 2630 PRINT#3,RQ:PRINT#3,X1:PRINT#3,Y1:PRINT#3,SC:PRINT#3,TF$A$PC;A$PZ;A$TR%A$SK 2640 CLOSE3:RETURN 2650 REM READ FROM A FILE 2660 PRINTCL$;" LOAD OLD GAME? ARE YOU SURE? (Y/N)"; 2670 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2670 2680 IFA$="N"THENRETURN 2690 OPEN3,8,3,"DIGIT.FILE,P,R" 2700 FORI=1TO9:RN(I)=0:CN(I)=0:BN(I)=0:RC(I)=0:CC(I)=0:BC(I)=0:RP(I)=0:CP(I)=0 2710 BP(I)=0:NR(I)=0:NC(I)=0:NB(I)=0:NEXTI:NU=0 2720 FORI=1TO9:FORJ=1TO9:INPUT#3,N:A(I,J)=N:IFN>0THENNU=NU+1:GOTO2780 2730 N=-N:B=KV(I)+UV(J):BS=LV(I)+VV(J):PT=PT(N) 2740 RN(J)=RN(J)+PT:CN(I)=CN(I)+PT:BN(B)=BN(B)+PT 2750 RC(J)=RC(J)+1:CC(I)=CC(I)+1:BC(B)=BC(B)+1 2760 RP(J)=RP(J)+PT(I):CP(I)=CP(I)+PT(J):BP(B)=BP(B)+PT(BS) 2770 NR(N)=NR(N)+PT(J):NC(N)=NC(N)+PT(I):NB(N)=NB(N)+PT(B) 2780 NEXTJ,I:FORI=1TO81:INPUT#3,RX(I),RY(I):NEXT 2790 INPUT#3,RQ,X1,Y1,SC,TI$,PC,PZ,TR%,SK 2800 CLOSE3:GOSUB1750:RETURN 2810 : 2820 IFJ=1THENB$="ROW ":C$=CHR$(81+I):RETURN 2830 IFJ=2THENB$="COLUMN ":C$=CHR$(64+I):RETURN 2840 C$=CHR$(65+VV(I))+CHR$(67+VV(I))+"-"+CHR$(82+UV(I))+CHR$(84+UV(I)) 2850 B$="BOX ":RETURN 2860 REM HINT AT A MOVE 2870 PRINTCL$;" ONE MOMENT PLEASE..." 2880 J=0:FORK=1TO9 2890 IFRC(K)=8THENJ=1:Y=K:X=FNX(511-RP(K)):I=K 2900 IFCC(K)=8THENJ=2:X=K:Y=FNX(511-CP(K)):I=K 2910 IFBC(K)=8THENJ=3:BS=FNX(511-BP(K)):I=K:X=VV(K)+LV(BS):Y=UV(K)+KV(BS) 2920 NEXTK:IFJ=0THEN2990 2930 GOSUB2820:M1$(1)=">>> LOOK FOR A ROW, COLUMN, OR BOX WITH" 2940 M2$(1)=">>> JUST ONE OPEN SQUARE." 2950 M1$(2)=">>> THERE IS ONLY ONE DIGIT MISSING" 2960 M2$(2)=">>> FROM "+B$+C$ 2970 M1$(3)=">>> "+B$+C$+" IS MISSING THE DIGIT"+STR$(A(X,Y)) 2980 M2$(3)="":J=2:GOTO3480 2990 FG=-1:ONINT(RND(1)*4+1)GOTO3000,3130,3270,3360 3000 I=0:IFFG=1THEN3470 3010 IFFG<0THENFG=1 3020 I=I+1:IFI>81THEN3130 3030 X=RX(I):Y=RY(I):IFA(X,Y)<0THEN3020 3040 B=KV(X)+UV(Y):FL=RN(Y)ORCN(X)ORBN(B):J=511-FL 3050 IF(JAND(FL+1))<>JTHEN3020 3060 J=INT(RND(1)*3)+1:I=-((J=1)*Y+(J=2)*X+(J=3)*B):GOSUB2820 3070 M1$(1)=">>> ONE SQUARE IN "+B$+C$+" CAN ONLY" 3080 M2$(1)=">>> ACCEPT ONE DIGIT." 3090 M1$(2)=">>> THERE IS ONLY ONE DIGIT THAT CAN" 3100 M2$(2)=">>> GO INTO SQUARE "+CHR$(64+X)+CHR$(81+Y) 3110 M1$(3)=">>>"+STR$(A(X,Y))+" IS THE ONLY DIGIT THAT WILL" 3120 M2$(3)=">>> GO INTO SQUARE "+CHR$(64+X)+CHR$(81+Y):J=2:GOTO3480 3130 I=0:IFFG=2THEN3470 3140 IFFG<0THENFG=2 3150 I=I+1:IFI>81THEN3270 3160 X=RX(I):Y=RY(I):IFA(X,Y)<0THEN3150 3170 B=KV(X)+UV(Y):N=A(X,Y):PT=PT(N):R=0 3180 S=(RP(Y)ORNC(N)ORRF(INT(NB(N)/PT(UV(Y)+1))AND7)ORPT(X)) 3190 IFS<>511THEN3150 3200 B$="ROW ":C$=CHR$(81+Y) 3210 M1$(1)=">>> ONE DIGIT CAN ONLY GO IN ONE SQUARE" 3220 M2$(1)=">>> IN "+B$+C$ 3230 M1$(2)=">>>"+STR$(N)+" CAN ONLY GO IN ONE SQUARE IN" 3240 M2$(2)=">>> "+B$+C$ 3250 M1$(3)=">>> IN "+B$+C$+","+STR$(N)+" WILL ONLY GO" 3260 M2$(3)=">>> INTO SQUARE "+CHR$(64+X)+CHR$(81+Y):J=3:GOTO3480 3270 I=0:IFFG=3THEN3470 3280 IFFG<0THENFG=3 3290 I=I+1:IFI>81THEN3360 3300 X=RX(I):Y=RY(I):IFA(X,Y)<0THEN3290 3310 B=KV(X)+UV(Y):N=A(X,Y):PT=PT(N):R=0 3320 J=(CP(X)ORNR(N)OR((INT(NB(N)/PT(KV(X)))AND73)*7)ORPT(Y)) 3330 IFJ<>511THEN3290 3340 B$="COLUMN ":C$=CHR$(64+X) 3350 GOTO3210 3360 I=0:IFFG=4THEN3470 3370 IFFG<0THENFG=4 3380 I=I+1:IFI>81THEN3000 3390 X=RX(I):Y=RY(I):IFA(X,Y)<0THEN3380 3400 N=A(X,Y):PT=PT(N):B=0:R=INT((X-1)/3)*3+1:S=INT((Y-1)/3)*3+1 3410 FORR1=RTOR+2:FORS1=STOS+2:IF((X=R1)AND(Y=S1))OR(A(R1,S1)<0)THEN3440 3420 IF((CN(R1)ORRN(S1))ANDPT)>0THEN3440 3430 B=1 3440 NEXTS1,R1:IFB>0THEN3380 3450 C$=CHR$(64+R)+CHR$(66+R)+"-"+CHR$(81+S)+CHR$(83+S) 3460 B$="BOX ":GOTO3210 3470 PRINTCL$;"SORRY, NO HINTS AVAILABLE":FORI=1TO2500:NEXT:GOTO840 3480 I=1 3490 SC=SC+1:GOSUB3860:IFI136THENGOSUB1290:GOTO960 3540 I=I+1:ON(I<4)+2GOTO3490,840 3550 : 3560 REM GET INPUT 3570 : 3580 CC=0 3590 BL=8:CC=1-CC:POKECS+2*X1+80*Y1,CC 3600 GETA$:GOSUB3790:IFA$<>""THEN RETURN 3610 IFTI$>TB$THENGOSUB3970 3620 BL=BL-1:IFBL>0THEN3600 3630 GOTO 3590 3640 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER:CLOSE15 3650 IF ER<>63 THEN PRINT"[147]":END 3660 A$="HELLO CONNECT":Q$=CHR$(34):POKE53281,7:POKE53280,7:PRINT"[147]" 3670 PRINT"[158]LOAD"Q$A$Q$",8" 3680 PRINT"RUN":POKE631,13:POKE632,13:POKE198,2:END 3690 POKE214,15:PRINT:PRINT" [155][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][152]" 3700 FORI=1TO3:PRINT"  ":NEXT 3710 PRINT"  PUBLISHED ON LOADSTAR #60 " 3720 PRINT"  SUBSCRIPTIONS 1-800-831-2694 " 3730 PRINT"  CHANGING THIS NOTICE IS ILLEGAL " 3740 PRINT"  " 3750 PRINT" [151][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185]" 3760 AU$="D I G I T H U N T":POKE214,17:PRINT:PRINTSPC(20-LEN(AU$)/2)"[152]"AU$ 3770 AU$="BY DAVE JOHANNSEN (C) 1989":POKE214,18:PRINT 3780 PRINTSPC(20-LEN(AU$)/2)"[152]"AU$"":RETURN 3790 PRINT"[159]"VAL(MID$(TI$,3,2))"[157]:"MID$(TI$,5); 3800 IFTR%=0THENPRINTTAB(32)"100%":PC=100:RETURN 3810 PZ=(INT(10000*((TR%-SC)/TR%)))/100 3820 IFPZ<0THENPZ=0 3830 IFPZ=PCTHENRETURN 3840 PC=PZ:IFPZ<1THENPZ=0:PC=0 3850 PRINTTAB(32)" [157][157][157][157][157][157]"MID$(STR$(PC),2)"%":RETURN 3860 POKE214,14:PRINT:PRINTTAB(32)"[159]"SC:RETURN 3870 FORI=1TO9:FORII=1TO9:PRINTA(II,I);:NEXT:PRINT:NEXT 3880 TF$=TI$:IFVAL(MID$(TF$,3))>VAL(MID$(BT$(SK,1),3))THENRETURN 3890 IFFF%THENRETURN 3900 PRINTCL$"[155]YOU TOPPED THE RECORD FOR THIS LEVEL!":BT$(SK,2)=STR$(SC) 3910 PRINT"[155]LEVEL. ENTER YOUR NAME: "; 3920 BT$(SK,1)=TF$:LI=9:GOSUB4180:A$=" " 3930 BT$(SK,0)=W$+LEFT$(A$,9-LW) 3940 CLOSE15:OPEN15,8,15,"S0:BEST TIMES":CLOSE15 3950 OPEN2,8,2,"BEST TIMES,P,W":FORI=1TO9:PRINT#2,BT$(I,1):PRINT#2,BT$(I,0) 3960 PRINT#2,BT$(I,2):NEXT:CLOSE2:RETURN 3970 PRINTCL$"TIME FOR THIS PUZZLE HAS EXPIRED":PRINT"PRESS A KEY..." 3980 POKE198,0:WAIT198,1:POKE198,0:A$="Q":TI$="005950":PRINTCL$;:GOTO1500 3990 POKE214,13:PRINT:PRINT"CLEAR BEST TIMES? ARE YOU SURE? (Y/N) " 4000 GETA$:IFA$<>"Y"ANDA$<>"N"THEN4000 4010 IFA$="N"THEN460 4020 CLOSE15:OPEN15,8,15,"S0:BEST TIMES" 4030 POKE214,13:PRINT:PRINT" WIPING OUT BEST SCORES... " 4040 INPUT#15,E$:RUN210 4050 IFBT$(SK,0)="---------"THENTB$="006000":GOTO540 4060 PJ%=0:FORI=LEN(BT$(SK,0))TO1STEP-1:AA$=MID$(BT$(SK,0),I,1) 4070 IFAA$<>" "THENPJ%=1 4080 IFPJ%THENSN$=SN$+AA$ 4090 NEXT:A$="":FORI=LEN(SN$)TO1STEP-1:A$=A$+MID$(SN$,I,1):NEXT:SN$=A$ 4100 A$="CHALLENGE "+SN$+"'" 4110 IFRIGHT$(SN$,1)<>"S"THENA$=A$+"S" 4120 A$=A$+" TIME" 4130 POKE214,13:PRINT:PRINT" " 4140 A$=A$+"? (Y/N)":POKE214,13:PRINT:PRINTSPC(20-LEN(A$)/2)A$ 4150 GETA$:IFA$<>"Y"ANDA$<>"N"THEN4150 4160 IFA$="N"THENTB$="006000":GOTO540 4170 TB$=BT$(SK,1):GOTO540 4180 W$="":LW=0:PRINT">[157]";:IFLIMIT=0THENLIMIT=80 4190 GETA$:IFA$="[145]"ORA$=""ORA$="[157]"ORA$=""ORA$=""ORA$="[147]"ORA$=""THEN4190 4200 AS%=ASC(A$):IFAS%=13ORAS%=141ORAS%=20THEN4250 4210 IFPEEK(653)THEN4190 4220 IFLW=LIMIT AND(AS%<>20ANDAS%<>13ANDAS%<>141)THEN4190 4230 IFAS%=34OR(AS%>=133ANDAS%<=140)OR(AS%>=1ANDAS%<=31)THEN4190 4240 LW=LW+1:W$=W$+A$:PRINTA$">[157]";:GOTO4190 4250 IFAS%=20ANDW$<>""THENW$=LEFT$(W$,LW-1):PRINT"[157]< [157][157]";:LW=LW-1:GOTO4190 4260 IFAS%=20ANDW$=""THEN4190 4270 IFAS%=13ANDW$=""THEN4190 4280 IFAS%=13THENPRINT" ";:RETURN