1 REM SOLITAIRE 64 2 REM BY ERIC W SINK 3 POKE55,255:POKE56,63:CLR:POKE53269,.:POKE53271,.:POKE53277,. 4 X=RND(-TI) 5 S4=64:O4=14:T6=26:H9=39:Z1=1:Z2=2:Z3=3:Z4=4:O3=13 6 POKE53280,0:POKE53281,4:PRINT"[147][158]";CHR$(142)"" 7 IFPEEK(2)=15THENPRINTCHR$(14)"" 8 GOSUB103 9 GOSUB54:GOSUB101:GOSUB72:GOSUB190:GOSUB216 10 CLR:DIM P(7,20),H(13),C(13),D(13),S(13),NP(7),DK%(52) 11 S4=64:O4=14:T6=26:H9=39:Z1=1:Z2=2:Z3=3:Z4=4:O3=13 12 M$="HANG ON, STILL SETTING UP...":P$="":PRINT"[147]":GOSUB108 13 X=RND(-TI) 14 DP=0:NH=0:NC=0:ND=0:NS=0:DN=0 15 PRINT:PRINT:PRINT"SHUFFLING..." 16 FORI=1TO52 17 CD=INT(RND(1)*52)+Z1:IFDK%(CD)THEN17 18 DK%(CD)=I:NEXT 19 PRINT"DEALING OUT CARDS..." 20 FORI=1TO28 21 F1=.:CD=DK%(53-I):DK%(53-I)=. 22 IFI=7ORI=13ORI=18ORI=22ORI=25ORI=27ORI=28THENCD=CD+S4:F1=1 23 PI=PI+1:P(PI,NP(PI)+1)=CD:NP(PI)=NP(PI)+1:IFF1=1THENPI=0 24 NEXT 25 DN=24:DP=24:POKE53280,0:POKE53281,1 26 PRINT"[147] * * * S O L I T A I R E * * * ";:POKE16423,160 27 GOSUB368 28 PRINT"[147] * * * S O L I T A I R E * * * ";:POKE16423,160 29 IFLV=1THENGOSUB382 30 POKE55335,11:PRINT:PRINT""; 31 FORQ=1TO7:PN=Q:GOSUB111:NEXT 32 GOSUB155 33 GOSUB187:GOSUB226 34 GOSUB243:REM FIRST MOVE 35 GOSUB269:REM SECOND MOVE 36 IFBU=1THENBU=.:GOTO34 37 IFDNTHEN34 38 FORI=1TO7:IFP(I,1)ANDS4=S4ORNP(I)=0THENNEXT:GOTO40 39 GOTO34 40 FORI=1TO7:NP(I)=.:NEXT:NH=O3:NC=O3:ND=O3:NS=O3 41 H(NH)=O3:C(NC)=O3:D(ND)=O3:S(NS)=O3 42 GOSUB155:GOSUB137:FORHI=1TO7:PN=HI:GOSUB111:NEXT 43 IFLV=1THEN374 44 PRINT""TAB(15);"YOU WON!!!" 45 PRINT""TAB(14);"PLAY AGAIN??" 46 PRINT:PRINT 47 PRINTTAB(9)"PRESS UP TO PLAY AGAIN" 48 PRINT 49 PRINTTAB(11)"PRESS DOWN TO QUIT[144]" 50 X=PEEK(56320):U=XAND1:V=XAND2:IFU=1ANDV=2THEN50 51 IFU=.THENRUN10 52 PRINT"[147][144]";:POKE53269,.:END 53 REM 54 REM 55 POKE2,15 56 DATA173,000,221,041,252,009,002 57 DATA141,000,221,169,002,141,024 58 DATA208,169,064,141,136,002,169 59 DATA147,032,210,255,169,127,141 60 DATA013,220,169,051,133,001,160 61 DATA000,169,000,133,251,133,253 62 DATA169,208,133,252,169,072,133 63 DATA254,177,251,145,253,200,192 64 DATA000,208,247,230,252,230,254 65 DATA165,252,201,224,208,237,169 66 DATA055,133,001,169,129,141,013 67 DATA220,096,000 68 PRINT"E" 69 C1=.:FORI=49152TO49231:READB:C1=C1+B:POKEI,B:POKE1024,B:POKE16384,B:NEXT 70 IFC1<>11494THENPRINT"ERROR IN DATA LINES 10010-10065":STOP 71 RETURN 72 REM 73 DATA064,007,012,024,024,024,024,024,024 74 DATA065,255,000,240,144,240,144,144,000 75 DATA066,255,000,240,016,240,128,240,000 76 DATA067,255,000,240,016,240,016,240,000 77 DATA068,255,000,144,144,240,016,016,000 78 DATA069,255,000,240,128,240,016,240,000 79 DATA070,255,000,240,128,240,144,240,000 80 DATA071,255,000,240,016,016,016,016,000 81 DATA072,255,000,240,144,240,144,240,000 82 DATA073,255,000,240,144,240,016,240,000 83 DATA074,255,000,152,164,164,164,152,000 84 DATA075,255,000,112,032,032,160,224,000 85 DATA076,255,000,240,144,144,240,024,000 86 DATA077,255,000,144,160,192,160,144,000 87 DATA078,255,000,054,127,127,062,028,008 88 DATA079,255,000,012,012,051,051,012,030 89 DATA080,255,000,008,028,062,028,008,000 90 DATA081,255,000,024,060,126,126,024,060 91 DATA082,224,048,024,024,024,024,024,024 92 DATA085,024,024,024,024,024,024,012,007 93 DATA086,024,024,024,024,024,024,048,224 94 DATA087,024,024,024,024,024,024,024,024 95 DATA088,000,000,000,000,000,000,000,255 96 DATA-1 97 PRINT"[147]E" 98 READA:IFA=-1THENRETURN 99 POKE16384,A 100 FORI=0TO7:READB:POKE18432+A*8+I,B:NEXT:GOTO98 101 REM 102 SYS49152:RETURN 103 REM 104 M$=" SOLITAIRE":P$="":GOSUB108 105 M$=" BY ERIC W SINK":P$="":GOSUB108 106 M$=" PLEASE WAIT...SETTING UP":P$="":GOSUB108 107 RETURN 108 REM 109 FORI=1TOLEN(M$):PRINTP$RIGHT$(M$,I);:NEXT 110 RETURN 111 REM 112 REM 113 REM 114 REM 115 HP=3+(PN-1)*5:UC=. 116 VP=5:ZQ=. 117 PRINT"";:FORI=1TOVP:PRINT"";:NEXT:PRINTTAB(HP); 118 IFNP(PN)THEN120 119 PRINT" ":FORI=1TO13:PRINTTAB(HP);" ":NEXT:GOTO135 120 FORI=1TONP(PN):CD=P(PN,I):IFI=SXTHENZQ=1 121 IFCD=O4ANDCD<=T6THENSU=Z2 124 IFCD>T6ANDCD<=H9THENSU=Z3 125 CH=CD-((SU-1)*13) 126 SU$=CHR$(205+SU):CO$="[144]":IFSU=1ORSU=3THENCO$="" 127 IFZC=1ANDZQ=1THENCO$="" 128 CD$=CO$+CHR$(192)+CHR$(192+CH)+SU$+CHR$(210) 129 PRINTCD$ 130 PRINTTAB(HP); 131 NEXT 132 PRINT"[221] [221]":PRINTTAB(HP)"[213][164][164][214]" 133 ZC=.:ZQ=. 134 FORI=1TO12-NP(PN)+UC:PRINTTAB(HP);" ":NEXT 135 PRINT"";:POKE214,3:PRINT:PRINTTAB(HP+1)UC 136 RETURN 137 REM ACES 138 PRINT""; 139 IFNH=.THEN141 140 SU=Z1:CD=H(NH):HP=9:GOSUB151 141 PRINT""; 142 IFNC=.THEN144 143 SU=Z2:CD=C(NC):HP=15:GOSUB151 144 PRINT""; 145 IFND=.THEN147 146 SU=Z3:CD=D(ND):HP=21:GOSUB151 147 PRINT""; 148 IFNS=.THEN150 149 SU=Z4:CD=S(NS):HP=27:GOSUB151 150 RETURN 151 REM ACE 152 SU$=CHR$(205+SU):CO$="[144]":IFSU=1ORSU=3THENCO$="" 153 CD$=CO$+CHR$(192)+CHR$(192+CD)+SU$+CHR$(210) 154 PRINTTAB(HP)CD$:PRINTTAB(HP)"[221] [221]":PRINTTAB(HP)"[213][164][164][214]":RETURN 155 REM DECK 156 IFDPTHENGOSUB176:GOTO158 157 GOSUB180 158 PRINT""TAB(9); 159 IFDP<>DNTHEN161 160 PRINT" ":PRINTTAB(9)" ":PRINTTAB(9)" ":PRINTTAB(9)" ":GOTO171 161 CD=DK%(DP+Z1):SU=4:IFCD<=O3THENSU=Z1 162 IFCD>=O4ANDCD<=T6THENSU=Z2 163 IFCD>T6ANDCD<=H9THENSU=Z3 164 CH=CD-((SU-1)*O3) 165 SU$=CHR$(205+SU):CO$="[144]":IFSU=1ORSU=3THENCO$="" 166 IFZC=1THENZC=.:CO$="" 167 CD$=CO$+CHR$(192)+CHR$(192+CH)+SU$+CHR$(210) 168 PRINTCD$ 169 PRINTTAB(9); 170 PRINT"[221] [221]":PRINTTAB(9)"[213][164][164][214]" 171 PRINT""TAB(3);" " 172 PRINT""TAB(3);DP 173 PRINT""TAB(9);" " 174 PRINT""TAB(9);DN-DP 175 RETURN 176 REM 177 PRINT"[156]"TAB(3);"[192][163][163][210]":PRINTTAB(3); 178 PRINT"[221] [221]":PRINTTAB(3)"[213][164][164][214]" 179 RETURN 180 REM 181 IFLV=1THEN184 182 PRINT""TAB(3);"TURN":PRINTTAB(3); 183 PRINT"DECK":PRINTTAB(3)"OVER":GOTO186 184 PRINT""TAB(3);"E ":PRINTTAB(3); 185 PRINT" N ":PRINTTAB(3)" D " 186 RETURN 187 REM 188 PRINT""TAB(32)"CONCEDE" 189 PRINT"";:RETURN 190 REM 191 DATA234,173,000,220,141,144,003 192 DATA074,176,010,173,001,208,201 193 DATA052,144,003,206,001,208,173 194 DATA144,003,074,074,176,010,173 195 DATA001,208,201,228,176,003,238 196 DATA001,208,173,144,003,074,074 197 DATA074,176,034,173,016,208,074 198 DATA176,013,173,000,208,201,025 199 DATA144,021,206,000,208,024,144 200 DATA015,206,000,208,173,000,208 201 DATA201,255,208,005,169,000,141 202 DATA016,208,173,144,003,074,074 203 DATA074,074,176,029,173,016,208 204 DATA074,176,013,238,000,208,208 205 DATA018,169,001,141,016,208,024 206 DATA144,010,173,000,208,201,063 207 DATA176,003,238,000,208,173,144 208 DATA003,074,074,074,074,074,176 209 DATA001,096,160,243,162,161,232 210 DATA208,253,200,208,248,076,000 211 DATA193,000,000 212 C2=.:FORI=49408TO49550:READB:C2=C2+B:POKEI,B:POKE1024,B:POKE16384,B:NEXT 213 IFC2<>16685THENPRINT"ERROR IN DATA LINES 11400-11500":STOP 214 POKE49519,79:POKE49439,243 215 RETURN 216 REM 217 DATA252,000,000,224,000,000,240,000 218 DATA000,152,000,000,140,000,000,012 219 DATA000,000,000,000,000,000,000,000 220 DATA000,000,000,000,000,000,000,000 221 DATA000,000,000,000,000,000,000,000 222 DATA000,000,000,000,000,000,000,000 223 DATA000,000,000,000,000,000,000,000 224 DATA000,000,000,000,000,000,000,000 225 FORI=22528TO22591:READB:POKEI,B:NEXT:RETURN 226 REM 227 POKE53269,.:POKE53264,.:POKE53248,170:POKE53249,150:POKE53287,6 228 POKE17400,96:POKE53269,1:RETURN 229 REM READ JOYSTICK-SPRITE POSITION 230 SYS49408:YS=PEEK(53249):XS=PEEK(53248)+256*(PEEK(53264)AND1) 231 XS=XS-24:YS=YS-51 233 CX=INT(XS/8):CY=INT(YS/8) 234 RETURN 235 REM 236 JC=. 237 IFCY>=22ANDCX>33THENJC=1 238 IFCX>=3ANDCX<=7ANDCY>=19ANDCY<=22THENJC=2 239 IFCX>=8ANDCX<=12ANDCY>=19ANDCY<=22THENJC=3 240 IFCX>=3ANDCX<=36ANDCY<=18ANDCY>=5THENJC=4 241 IFCY<=4THENJC=5 242 RETURN 243 REM 1ST MOVE 244 AM=. 245 GOSUB229:GOSUB235 246 ONJCGOTO248,249,254,256 247 GOSUB306:GOTO243 248 GOTO45 249 IFDP=.THENIFLV=.THENDP=DN-3:GOTO252 250 IFDP=.THEN374 251 DP=DP-CG 252 IFDP<.THENDP=. 253 GOSUB155:GOTO243 254 IFDP=DNTHEN247 255 ZC=1:GOSUB155:AM=1:RETURN 256 REM 257 PN=7:IFCX<33THENPN=6 258 IFCX<28THENPN=5 259 IFCX<23THENPN=4 260 IFCX<18THENPN=3 261 IFCX52THENDC=DC+Z1 265 NEXT:D1=NP(PN)-DC+1 266 CA=CY-5:CA=CA+D1:IFCA>NP(PN)THENCA=NP(PN) 267 SX=CA 268 ZC=1:GOSUB111:RETURN 269 REM 2ND MOVE 270 GOSUB229:GOSUB235 271 ONJCGOTO273,274,275,277,308 272 GOSUB306:GOTO269 273 GOTO248 274 GOTO272 275 IFAM=1THENZC=.:AM=.:BU=1:GOSUB155:RETURN 276 GOTO272 277 REM DROP CARDS TO A PILE 278 P2=7:IFCX<33THENP2=6 279 IFCX<28THENP2=5 280 IFCX<23THENP2=4 281 IFCX<18THENP2=3 282 IFCX=O4ANDW2<=T6THENS2=Z2 287 IFW2>T6ANDW2<=H9THENS2=Z3 288 IFW2>O3THENW2=W2-O3:GOTO288 289 IFAM=1THEN342 290 W1=P(P1,SX) 291 W1=W1-S4:GOSUB386 292 IFNP(P2)=.ANDW1=O3THEN300 293 IFP1=P2THENBU=1:PN=P1:GOSUB111:RETURN 294 IFW2<>W1+1THENGOSUB306:GOTO269 295 O1=1:IFS1=2ORS1=4THENO1=2 296 O2=1:IFS2=2ORS2=4THENO2=2 297 IFO1=1ANDO2=2THEN300 298 IFO1=2ANDO2=1THEN300 299 GOSUB306:GOTO269 300 FORI=SXTONP(P1):NP(P2)=NP(P2)+1:P(P2,NP(P2))=P(P1,I):NEXTI 301 NP(P2)=NP(P2)+CQ 302 NP(P1)=SX-1:P(P1,NP(P1))=P(P1,NP(P1))ORS4 303 PN=P1:GOSUB111 304 PN=P2:GOSUB111 305 RETURN 306 FORA=1TO20:POKE54296,15:FORT=1TO3:NEXT:POKE54296,0:FORT=1TO3:NEXT:NEXT 307 RETURN 308 REM 309 IFAM=1THEN314 310 IFSX<>NP(P1)THENGOSUB306:GOTO269 311 W1=P(P1,SX) 312 W1=W1-S4:GOSUB386 313 ONS1GOTO326,330,334,338 314 REM 315 W1=DK%(DP+1) 316 GOSUB386 317 ONS1GOTO318,320,322,324 318 W2=H(NH):IFW2+1<>W1THENGOSUB306:GOTO269 319 NH=NH+Z1:H(NH)=W1:GOSUB365:GOSUB137:GOSUB155:RETURN 320 W2=C(NC):IFW2+1<>W1THENGOSUB306:GOTO269 321 NC=NC+Z1:C(NC)=W1:GOSUB365:GOSUB137:GOSUB155:RETURN 322 W2=D(ND):IFW2+1<>W1THENGOSUB306:GOTO269 323 ND=ND+Z1:D(ND)=W1:GOSUB365:GOSUB137:GOSUB155:RETURN 324 W2=S(NS):IFW2+1<>W1THENGOSUB306:GOTO269 325 NS=NS+Z1:S(NS)=W1:GOSUB365:GOSUB137:GOSUB155:RETURN 326 W2=H(NH):IFW2+1<>W1THENGOSUB306:GOTO269 327 NH=NH+1:H(NH)=W1 328 NP(P1)=NP(P1)-Z1:P(P1,NP(P1))=P(P1,NP(P1))ORS4:GOSUB111:GOSUB137 329 RETURN 330 W2=C(NC):IFW2+1<>W1THENGOSUB306:GOTO269 331 NC=NC+1:C(NC)=W1 332 NP(P1)=NP(P1)-Z1:P(P1,NP(P1))=P(P1,NP(P1))ORS4:GOSUB111:GOSUB137 333 RETURN 334 W2=D(ND):IFW2+1<>W1THENGOSUB306:GOTO269 335 ND=ND+1:D(ND)=W1 336 NP(P1)=NP(P1)-Z1:P(P1,NP(P1))=P(P1,NP(P1))ORS4:GOSUB111:GOSUB137 337 RETURN 338 W2=S(NS):IFW2+1<>W1THENGOSUB306:GOTO269 339 NS=NS+1:S(NS)=W1 340 NP(P1)=NP(P1)-Z1:P(P1,NP(P1))=P(P1,NP(P1))ORS4:GOSUB111:GOSUB137 341 RETURN 342 REM 343 P2=7:IFCX<33THENP2=6 344 IFCX<28THENP2=5 345 IFCX<23THENP2=4 346 IFCX<18THENP2=3 347 IFCX=O4ANDW2<=T6THENS2=Z2 352 IFW2>T6ANDW2<=H9THENS2=Z3 353 IFW2>O3THENW2=W2-O3:GOTO353 354 W1=DK%(DP+1) 355 GOSUB386 356 IFW1=O3ANDNP(P2)=.THEN363 357 IFW2<>W1+1THENGOSUB306:GOTO269 358 O1=1:IFS1=2ORS1=4THENO1=2 359 O2=1:IFS2=2ORS2=4THENO2=2 360 IFO1=1ANDO2=2THEN363 361 IFO1=2ANDO2=1THEN363 362 GOSUB306:GOTO269 363 NP(P2)=NP(P2)+Z1:P(P2,NP(P2))=DK%(DP+1)ORS4:GOSUB365 364 GOSUB155:PN=P2:GOSUB111:RETURN 365 REM 366 FORA=DP+1TODN:DK%(A)=DK%(A+1):NEXT:DN=DN-1:RETURN 367 END 368 REM LAS VEGAS OR REGULAR 369 PRINT"":PRINT"LAS VEGAS STYLE OR REGULAR??" 370 PRINT"PUSH UP FOR 'VEGAS' AND DOWN FOR REGULAR" 371 X=PEEK(56320):U=XAND1:V=XAND2:IFU=1ANDV=2THEN371 372 IFU=.THENLV=1:CG=1:RETURN 373 LV=.:CG=3:RETURN 374 PRINT"[147]HAD YOU BOUGHT THE DECK FOR $50," 375 PRINT"AT $5 FOR EVERY CARD YOU PUT AT THE TOP," 376 PRINT"YOU WOULD RECEIVE $"(NH+NC+ND+NS)*5"BACK." 377 PRINT"THIS LEAVES YOU WITH A NET "; 378 IF((NH+NC+ND+NS)*5)-50>=0THENPRINT"PROFIT":GOTO380 379 PRINT"LOSS" 380 PRINT"OF $"ABS(((NH+NC+ND+NS)*5)-50) 381 GOTO45 382 X$="LAS VEGAS":PRINT:PRINT:PRINT:PRINT"" 383 FORI=1TO9:PRINT""MID$(X$,I,1)TAB(38)MID$(X$,I,1) 384 NEXT 385 RETURN 386 S1=Z4:IFW1=O4ANDW1<=T6THENS1=Z2 388 IFW1>T6ANDW1<=H9THENS1=Z3 389 IFW1>O3THENW1=W1-O3:GOTO389 390 RETURN