0 CLS:CLEAR1000:DEFINTA-Z:J#=63795:FOR I#=64634 TO 64637:POKE I#,16*PEEK(J#)+PEEK(J#+1):J#=J#+2:NEXT I#:GOTO 154 1 'SoliMatic automatic solitaire player. Modified version of Solitaire. 2 IFSU>2THENPRINT@X*5+(Y\7)*2+(YMOD7)*40,CHR$(27);"p"; 4 PRINT@X*5+(Y\7)*2+(YMOD7)*40,MID$(VA$,VA,1);:PRINTG$(SU);CHR$(27);"q";:RETURN 6 SU=INT(NU/100):VA=NU-100*SU:RETURN 8 IFHF<>0THENGOSUB244:RETURN 10 IFIN>51THEN246 12 OD(IN(7))=D(IN):IN=IN+1:X=7:Y=6:NU=OD(IN(7)):GOSUB6:GOSUB2:IN(7)=IN(7)+1 14 IFCU=7THENGOSUB18 16 RETURN 18 PRINT@280+OC*5," ";:PRINT@280+CU*5,G$(5);:RETURN 20 CU=CU+1:IFCU>7THENCU=7 22 GOSUB18:OC=CU:RETURN 24 CU=CU-1:IFCU<0THENCU=0 26 GOSUB18:OC=CU:RETURN 28 IFHF<>0THENGOSUB244:RETURN 30 ST=CU:IFIN(CU)=0THENGOSUB250:RETURN 32 IFCU=7THENNU=OD(IN(7)-1):GOTO36 34 NU=C(CU,0) 36 HF=1:X=CU:J=0:IFCU=7THENJ=7:PRINT@X*5+240,G$(6);:GOTO42 38 IFP(CU,0)<>0THENPRINT@X*5,G$(6);:GOTO42 40 PRINT@X*5,SPACE$(2); 42 IFCU=7THENGOSUB18:RETURN 44 IFIN(CU)=1THENRETURN 46 PRINT@2+X*5,SPACE$(2);:FORI=1TO6:PRINT@I*40+X*5,SPACE$(5);:NEXT:RETURN 48 IFHF=0THENGOSUB252:RETURN 50 IFCU=7THENGOSUB80:RETURN 52 IFST=CUTHENGOSUB104:RETURN 54 IFIN(CU)=0THENGOSUB84:RETURN 56 NU=C(CU,IN(CU)-1):GOSUB6:TS=SU:TV=VA 58 IFST=7THENNU=OD(IN(7)-1):GOTO62 60 NU=C(ST,0) 62 GOSUB6:IF((TS=1)OR(TS=2))AND((SU=1)OR(SU=2))THENGOSUB256:RETURN 64 IF((TS=3)OR(TS=4))AND((SU=3)OR(SU=4))THENGOSUB254:RETURN 66 IFTV<>VA+1THENGOSUB258:RETURN 68 IFVA=1THENGOSUB248:RETURN 70 IFST=7THENGOSUB96:RETURN 72 FORI=0TOIN(ST)-1:NU=C(ST,I):C(CU,IN(CU))=NU:GOSUB6:X=CU:Y=IN(CU):GOSUB2:IN(CU)=IN(CU)+1:C(ST,I)=0:NEXT 74 IN(ST)=0:HF=0:IFP(ST,0)=0THENRETURN 76 NU=P(ST,0):GOSUB6:X=ST:Y=0:GOSUB2:C(ST,IN(ST))=NU:IN(ST)=1 78 FORI=0TO4:P(ST,I)=P(ST,I+1):NEXT:P(ST,5)=0:RETURN 80 IFST<>7THENGOSUB260:RETURN 82 NU=OD(IN(7)-1):GOSUB6:X=CU:Y=6:GOSUB2:GOSUB18:HF=RND(1):HF=0:RETURN 84 IFST=7THENNU=OD(IN(7)-1):GOTO88 86 NU=C(ST,0) 88 GOSUB6 90 IFVA<>13THENGOSUB262:RETURN 92 IFST=7THENGOSUB96:RETURN 94 GOSUB72:RETURN 96 X=CU:Y=IN(CU):C(CU,IN(CU))=NU:GOSUB2:IN(CU)=IN(CU)+1 98 IN(7)=IN(7)-1:OD(IN(7))=0:HF=0 100 IFIN(7)=0THENPRINT@275," ";:RETURN 102 NU=OD(IN(7)-1):GOSUB6:X=7:Y=6:GOSUB2:RETURN 104 FORI=0TOIN(CU)-1:NU=C(CU,I):GOSUB6:X=CU:Y=I:GOSUB2:NEXT:HF=0:RETURN 106 NU=OD(IN(7)-1):GOSUB6:FL=1 108 IF(F(SU)<>VA-1)AND(F(SU)=0)THENGOSUB264:RETURN 110 IFF(SU)<>VA-1THENTV=F(SU):GOSUB258:RETURN 112 GOSUB142:OD(IN(CU))=0 114 IFIN(CU)=0THENGOSUB100:RETURN 116 GOSUB102:GOSUB18:RETURN 118 X=CU:IFP(CU,0)<>0THENPRINT@X*5,G$(6);:GOTO122 120 PRINT@X*5,SPACE$(2); 122 C(CU,0)=P(CU,0):IFP(CU,0)=0THENRETURN 124 NU=C(CU,0):X=CU:Y=0:GOSUB6:GOSUB2 126 IN(CU)=1:FORI=0TO4:P(CU,I)=P(CU,I+1):NEXT:P(CU,5)=0:RETURN 128 IFHF<>0THENGOSUB244:RETURN 130 FL=0 132 IFIN(CU)=0THENGOSUB250:RETURN 134 IFCU=7THENGOSUB106:RETURN 136 NU=C(CU,IN(CU)-1):GOSUB6 138 IF(F(SU)<>VA-1)AND(F(SU)=0)THENGOSUB264:RETURN 140 IFF(SU)<>VA-1THENTV=F(SU):GOSUB258:RETURN 142 X=7:Y=SU+7:GOSUB2:F(SU)=VA 144 IN(CU)=IN(CU)-1:IFFL<>0THENRETURN 146 C(CU,IN(CU))=0 148 IFIN(CU)=0THENGOSUB118:RETURN 150 X=CU:Y=IN(CU)-1:NU=C(CU,IN(CU)-1):GOSUB6:GOSUB2 152 PRINT@CU*5+(IN(CU)MOD7)*40+(IN(CU)\7)*2,SPACE$(2);:RETURN 154 DIMC(6,11),P(6,5),D(51),OD(23),F(4),IN(7),TX$(13),G$(10) 156 SCREEN0,0:PRINT@135,"SoliMatic":PRINT@167,"Automatic Solitaire Player" 157 S9=0:S8=0 158 GOSUB270:ONKEYGOSUB212,214,216,218,220,222,224,226:KEYON 160 FORI=1TO13:READTX$(I):NEXT 162 FORI=0TO6:FORJ=0TO5:C(I,J)=0:P(I,J)=0:NEXT:FORJ=6TO11:C(I,J)=0:NEXT:NEXT 164 FORI=0TO23:OD(I)=0:NEXT 166 FORI=0TO3:F(I)=0:NEXT 168 I=VAL(RIGHT$(TIME$,2)):FORJ=1TOI:X=RND(1):NEXT 170 IN=0:FORI=1TO4:FORJ=1TO13:D(IN)=100*I+J:IN=IN+1:NEXT:NEXT 172 FORI=51TO0STEP-1:X=INT(RND(1)*I+1):T=D(X):D(X)=D(I):D(I)=T:NEXT 174 IN=0:FORI=1TO6:FORJ=0TOI-1:P(I,J)=D(IN):IN=IN+1:NEXT:NEXT 176 FORI=0TO6:C(I,0)=D(IN):IN=IN+1:NEXT 178 CLS:FORI=0TO6:NU=C(I,0):GOSUB6:X=I:Y=0:GOSUB2:NEXT 180 FORI=0TO6:IN(I)=1:NEXT:IN(7)=0 182 GOSUB8:GOSUB240 184 CU=0:OC=0:X=CU:GOSUB18 186 GOSUB 1000:IFA$=""THEN186 188 IFA$>=CHR$(96)ANDA$<=CHR$(127)THENA$=CHR$(ASC(A$)-32) 190 IFA$=CHR$(28)THENGOSUB20:GOTO186 192 IFA$=CHR$(29)THENGOSUB24:GOTO186 194 IFA$="N"THENGOSUB8:GOTO186 196 IFA$="P"THENGOSUB28:GOTO186 198 IFA$="D"THENGOSUB48:GOTO186 200 IFA$<>"F"THEN206ELSEGOSUB128:IFF(1)+F(2)+F(3)+F(4)<52THEN186 202 BEEP:PRINT@280,"YOU WIN! Play again? (Y/N)"; 204 A$=INKEY$:IFA$=""THEN204ELSEIFA$<>"N"ANDA$<>"n"THEN0ELSEMENU 206 IFA$="E"THEN230 208 A$="

ick rop ound'n ext nd ":GOSUB274 210 GOTO186 212 CU=0:GOTO228 214 CU=1:GOTO228 216 CU=2:GOTO228 218 CU=3:GOTO228 220 CU=4:GOTO228 222 CU=5:GOTO228 224 CU=6:GOTO228 226 CU=7 228 GOSUB18:OC=CU:RETURN 230 PRINT@280,"Want to end the game? (Y/N) "; 232 A$="Y":IFA$=""THEN232 234 IFA$<>"Y"ANDA$<>"y"THENGOSUB240:GOTO186 236 GOTO0 238 STOP 240 PRINT@280,SPACE$(39); 242 RETURN 244 A$="You already hold card(s) in your hand.":GOSUB274:RETURN 246 A$="There are no more cards in the deck.":GOSUB274:RETURN 248 A$="Play the ace on a foundation!":GOSUB274:RETURN 250 A$="There are no cards here to pick up.":GOSUB274:RETURN 252 A$="You do not have any cards to drop.":GOSUB274:RETURN 254 A$="You can't play a black on a black card.":GOSUB274:RETURN 256 A$="You can't play a red card on a red card":GOSUB274:RETURN 258 A$="You can't play a"+TX$(VA)+" on a"+TX$(TV)+".":GOSUB274:RETURN 260 A$="You can't drop them here.":GOSUB274:RETURN 262 A$="You can only drop a King on a space.":GOSUB274:RETURN 264 A$="Foundations start with an Ace.":GOSUB274:RETURN 266 DATA"n Ace"," Two"," Three"," Four"," Five"," Six"," Seven","n Eight"," Nine"," Ten"," Jack"," Queen"," King" 268 STOP 270 G$=CHR$(26)+STRING$(6,8):G$(1)=CHR$(158):G$(2)=CHR$(157):G$(3)=CHR$(159):G$(4)=CHR$(156) 272 G$(5)=CHR$(237)+STRING$(2,232)+CHR$(238):G$(6)=STRING$(2,255):VA$="A23456789TJQK":RETURN 274 PRINT@280,SPACE$(39);:PRINT@280,A$; 276 PRINT@318,CHR$(239);:FORT=1TO5:NEXT:PRINT@318," ";:FORT=1TO5:NEXT:GOTO276 278 GOSUB240:GOSUB18:RETURN 1000 'Auto-play subroutine 1010 IFS9=1THENA$="":CU=C1:GOSUB228:S9=2:RETURN 1020 IFS9=2THENA$="D":S9=0:RETURN 1100 IFIN(7)=0ANDIN<=51THENA$="N":RETURN 1105 'look for foundation plays 1110 C1 = 7 1130 'CU=C1:GOSUB 228 1140 IFIN(C1)=0THEN1350 1150 IFC1=7THENNU=OD(IN(7)-1)ELSENU=C(C1,IN(C1)-1) 1160 GOSUB6 1170 IFF(SU)+1=VATHENCU=C1:GOSUB228:A$="F":S8=0:RETURN 1350 C1=C1-1:IFC1>=0THEN1130 1400 'look for tableau plays 1410 IFS8=1THENC2=7:S8=0ELSEC2=6 1415 'cu=c2:gosub228 1420 IFIN(C2)=0THEN1800 1430 IFC2=7THENNU=OD(IN(7)-1)ELSENU=C(C2,0) 1440 GOSUB6 1450 S2=SU:V2=VA 1460 C1=0 1470 'CU=C1:GOSUB228 1480 IFIN(C1)<>0THENNU=C(C1,IN(C1)-1):GOSUB6:S1=SU:V1=VA 1490 IFC2=C1THEN1750 1510 IFV2<>13THEN1520 1512 IFIN(C1)<>0THEN1530 1514 IFC2=7THEN1700 1515 IFP(C2,0)<>0THEN1700 1520 IFIN(C1)=0THEN1750 1530 IFV2+1<>V1THEN1750 1540 IF(S2>2ANDS1>2)OR(S2<3ANDS1<3)THEN1750 1700 CU=C2:GOSUB228:A$="P":S9=1:RETURN 1750 C1=C1+1:IFC1<=6THEN1470 1800 IFC2<>7THENC2=C2-1:IFC2>=0THEN1415ELSEC2=7:GOTO1415 1900 'no more plays, turn card 1910 IFIN<52THENA$="N":S8=1:RETURN 1920 'end of deck 1940 A$="E":RETURN