5 CLS:GOSUB8500
7 DIM S(4),N(13),D(52),PT(8),C(8,52),C$(3,4),PS(8),CT(8),KS(4),BL$,R$,NL$
8 DIM T2,S4,N6,NN,F4,X,K,KK,T,TT,TC,L,L1,C,LC,LK,DC,DK,FL,R,Z,MC,N,S,LS,TK,DS,WN,GP,RD,T3,ZE,OE,TW,TH
9 GOSUB5000:GOSUB9050
10 DATA 32,128,128,128
20 DATA 1,50,51,52,53,54,55,56,57,20,10,17,11
30 FORX=1TO4:READS(X):NEXTX
35 FORX=1TO13:READN(X):NEXTX
40 BL$=CHR$(128)+CHR$(128)+CHR$(128)+CHR$(128)
43 PRINT"     PRESS ANY KEY TO BEGIN    ";
45 R$=INKEY$:X=RND(10):IFR$=""THEN45
50 CLS:GOSUB7000
55 FORX=1TO7:PT(X)=X:NEXTX
60 L=194:KK=0:FORK=1TO7:GOSUB1000:GOSUB450:NEXTK
65 PRINT@448,"   <1> <2> <3> <4> <5> <6> <7>"
70 FORK=1TO7:C=C(K,0):TT=PT(K):GOSUB170:NEXTK
75 T=0:C(8,0)=0:PT(8)=0:TC=24:RD=0:K=8:FORKK=OE TO TC:GOSUB1000:GOSUB450:NEXTKK
80 L=66:GOSUB3100
85 PRINT@0,"<SPACE><8>         <ENTER> ";
90 GP=GP+1:GOTO200
100 IFR$=" "ORFL=OE THEN120
105 L=194:FORK=1TO7:IF K=LC OR K=DC THENC=C(K,0):TT=PT(K):GOSUB170:GOTO107
106 L=L+F4
107 NEXTK
110 L=290
112 FORK=1TO7
114 IFCT(K)>ZE THENIFK=LC OR K=DC THENC=C(K,CT(K)):TT=CT(K):GOSUB170:GOTO117
115 IFCT(K)=ZE THENPRINT@L+S4,NL$;:PRINT@L+N6,NL$;:PRINT@L+128,NL$;
116 L=L+F4
117 NEXTK
120 L=38:C=C(8,0):TT=PT(8):GOSUB170
121 RETURN
125 L1=L:IFL>232 THEN129
126 IFTT>TW THENPRINT@L1,"====";:GOTO129
127 IFTT=TW THENPRINT@L1,"----";:GOTO129
128 PRINT@L1,NL$;
129 FORX=OE TO F4:L1=L1+T2
130 IFC=ZE THENPRINT@L1,NL$;:GOTO136
135 PRINT@L1,BL$;:POKEL1+MC,T2
136 NEXTX:RETURN
140 IFC=ZE THEN144
141 L1=L+T2
142 POKEMC+L1,N(N)
143 POKEMC+L1+NN,N(N)
144 L1=ZE
145 RETURN
150 S=INT((C-OE)/T3)+OE:N=C-(S*T3-T3):RETURN
160 IFC=ZE THEN162
161 FORX=OE TO TH:PRINT@L+(T2*X)+OE,C$(X,S);:NEXTX
162 L1=ZE:L=L+F4
163 RETURN
170 GOSUB150:GOSUB125:GOSUB140:GOSUB160:RETURN
200 GOSUB100:PRINT@480,"  <Q>=QUIT  GAME:     WINS:  ";:PRINT@497,GP;:PRINT@507,WN;
210 R$=INKEY$:X=RND(10):IFR$=""THEN210
220 FL=ZE:R=VAL(R$)
230 IFR>0 ANDR<9 THENGOSUB300:GOTO200
240 IFR$=" " THENGOSUB600:GOTO200
250 IFR$="Q" THENGOSUB400:GOTO200
260 GOTO210
300 LC=R:IFPT(LC)<1THEN340
305 PRINT@480,"  MOVE FROM";LC;"TO 1-7 OR ENTER? ";
310 R$=INKEY$:IFR$="" THEN310
315 R=VAL(R$)
320 IFR>ZE ANDR<8 THEN350
325 IFR$=CHR$(T3) THENGOSUB700
340 RETURN
350 DC=R
352 C=C(DC,ZE):IFCT(DC)>ZE THENC=C(DC,CT(DC))
354 GOSUB150:DK=N:DS=S
356 C=C(LC,ZE):GOSUB150:LK=N:LS=S
357 FL=ZE:GOSUB800
358 IFFL=OE THENSOUND1,1:RETURN
360 IFCT(LC)<OE ORLC=8THENGOSUB380:GOTO340
365 IFPT(DC)=ZE THENCT(DC)=-1:PT(DC)=1
370 FORX=ZE TO CT(LC)
372 CT(DC)=CT(DC)+OE:C(DC,CT(DC))=C(LC,X)
373 C(LC,X)=0
374 NEXTX:CT(LC)=0:PT(LC)=PT(LC)-OE:GOSUB385
379 GOTO340
380 IFPT(DC)=ZE THENCT(DC)=-1:PT(DC)=1
382 CT(DC)=CT(DC)+OE:C(DC,CT(DC))=C(LC,0):PT(LC)=PT(LC)-OE
383 IFLC=8 THENC(8,0)=C(8,PT(LC)):IFPT(LC)=ZE THENC(8,0)=ZE
384 IFLC=8 THENFORX=PT(LC)+OE TO TC-OE:C(8,X)=C(8,X+1):NEXTX:TC=TC-OE:T=T-OE:GOTO340
385 IFPT(LC)>ZE THENK=LC:KK=ZE:GOSUB1000:GOSUB450
387 IFPT(LC)=ZE THENK=LC:KK=0:Z=ZE:GOSUB450
390 RETURN
400 PRINT@480,"    ABANDON THIS GAME (Y/N)?   ";
410 R$=INKEY$:IFR$=""THEN410
420 IFR$="Y"THEN900
430 IFR$="N"THENRETURN
440 GOTO410
450 C(K,KK)=Z:C=C(K,KK):GOSUB150:PS(K)=S:RETURN
460 C(K,KK)=Z:C=C(K,KK):GOSUB150:CS(K)=S:RETURN
600 T=T+OE:IFT>TC THEN660
605 L=66:GOSUB3100
610 PT(8)=PT(8)+OE
620 C(8,0)=C(8,PT(8))
630 RETURN
660 RD=RD+OE:IFRD>OE THENT=TC:SOUND1,1:GOTO630
670 T=ZE:C(8,0)=ZE:PT(8)=ZE
680 L=66:GOSUB3100
690 GOTO630
700 DC=0:K=LC
710 C=C(LC,CT(LC)):GOSUB150
720 IFN=KS(S)+OE THENGOSUB750:GOTO740
730 SOUND50,1
740 RETURN
750 KS(S)=N:IFLC=8THENPT(8)=PT(8)-OE:GOSUB383:GOTO760
752 C(K,CT(K))=ZE
753 IFCT(K)>ZE THENCT(K)=CT(K)-OE:GOTO760
754 IFPT(K)>OE THENGOSUB1000:C(K,0)=Z:PT(K)=PT(K)-OE:C(K,1)=ZE:GOTO760
755 C(K,ZE)=ZE:PT(K)=ZE
760 TT=N:L=42+(S*F4):GOSUB170
770 TK=TK+OE:IFTK>51THENGOSUB100:GOSUB8000:GOTO900
780 RETURN
800 IFPT(DC)=ZE ANDLK=T3 THEN850
805 IFPT(DC)=ZE ANDLK<>T3 THENFL=1
810 IF(LS=OE OR LS=TW)AND(DS=OE OR DS=TW) THENFL=OE
820 IF(LS=TH OR LS=F4)AND(DS=TH OR DS=F4) THENFL=OE
830 IFLK<>DK-OE THENFL=OE
840 IFLC=DC THENFL=OE
850 RETURN
900 IF GP=100 THEN 950
905 PRINT@480,"      PLAY ANOTHER (Y/N)?      ";
910 R$=INKEY$:IFR$=""THEN910
920 IF R$="Y" THEN 50
930 IF R$="N" THEN 9000
940 GOTO910
950 PRINT:PRINT:PRINT"THANKS FOR PLAYING."
960 PRINT"SUCCESS RATE =";WN;"%"
970 GOTO9000
1000 Z=RND(52)
1010 IFD(Z)=ZE THEN1000
1020 D(Z)=ZE
1030 RETURN
3100 IFT<TC-2THENPRINT@L-T2,"====";:GOTO 3108
3101 IFT=TC-2THENPRINT@L-T2,"----";:GOTO 3108
3102 IFT=TC-1THENPRINT@L-T2,NL$;:GOTO 3108
3103 PRINT@L-T2,NL$;:PRINT@L,NL$;
3104 PRINT@L+T2,NL$;
3105 PRINT@L+S4,NL$;
3106 PRINT@L+N6,NL$;:GOTO3140
3108 PRINT@L,BL$;
3110 PRINT@L+T2,BL$;
3120 PRINT@L+S4,BL$;
3130 PRINT@L+N6,BL$;
3140 RETURN
5000 C$(1,1)=CHR$(177)+CHR$(177)+CHR$(176)
5001 C$(2,1)=CHR$(191)+CHR$(191)+CHR$(186)
5002 C$(3,1)=CHR$(180)+CHR$(190)+CHR$(176)
5010 C$(1,2)=CHR$(176)+CHR$(178)+CHR$(176)
5011 C$(2,2)=CHR$(183)+CHR$(191)+CHR$(178)
5012 C$(3,2)=CHR$(180)+CHR$(190)+CHR$(176)
5020 C$(1,3)=CHR$(176)+CHR$(162)+CHR$(176)
5021 C$(2,3)=CHR$(167)+CHR$(175)+CHR$(162)
5022 C$(3,3)=CHR$(172)+CHR$(174)+CHR$(168)
5030 C$(1,4)=CHR$(161)+CHR$(163)+CHR$(176)
5031 C$(2,4)=CHR$(167)+CHR$(175)+CHR$(162)
5032 C$(3,4)=CHR$(172)+CHR$(174)+CHR$(168)
5050 T2=32:S4=64:N6=96:NN=99:T3=13:NL$="    ":WN=0:GP=0
5060 ZE=0:OE=1:TW=2:TH=3:F4=4
5090 RETURN
7000 PRINT@192,"         ***SOLITAIRE***";
7001 PRINT@256,"          BY JIM GERRIE";
7002 PRINT@320,"           SHUFFLING...";
7010 FORDE=1TO52:D(DE)=DE:NEXTDE
7020 FORX=1TO4:KS(X)=0:NEXTX:FORX=1TO8:CT(X)=0:PT(X)=0:PX(X)=0:NEXTX
7030 R$="":TK=0:LC=0:DC=0
7040 RETURN
8000 FORX=192TO448STEPT2
8020 PRINT@X,"                               ";
8030 NEXTX
8035 PRINT@320,"            YOU WIN!           ";
8040 SOUND150,4:SOUND100,1:SOUND150,1:SOUND200,8
8050 WN=WN+1
8080 RETURN
8500 PRINT"            SOLITAIRE          ":PRINT
8510 PRINT"IN KLONDIKE, ONLY A SINGLE CARD"            
8520 PRINT"IS TRANSFERED FROM THE DECK    "
8525 PRINT"EACH TIME YOU HIT SPACE.  THIS " 
8530 PRINT"VERSION OF SOLITAIRE ALSO HAS  "
8535 PRINT"THE LIMITATION THAT YOU CAN    "
8540 PRINT"ONLY TURN THE DECK OVER ONCE.  "
8545 PRINT"PLACE ALL THE CARDS, IN ORDER  "
8550 PRINT"SORTED BY SUIT IN THE PILES AT "
8555 PRINT"THE TOP RIGHT. TO MOVE CARDS & "
8560 PRINT"PILES USE 1-8 TO SELECT.  HIT  "
8565 PRINT"ENTER TO SELECT THE PILES AT   "
8570 PRINT"THE TOP RIGHT (THE 'ACE PILES')."
8580 RETURN
9000 REM POKE 65496,0:REM POKE 65494,0 FOR COCO 2
9010 END
9050 REM POKE 65497,0:REM POKE 65495,0 FOR COCO 2
9060 MC=16384:REM CHANGE MC=1024 FOR COCO
9090 RETURN
