start tok64 d64-NZFRod 2 REM * klondike * from compute's gazette 1986-05 3 PRINT 4 REM * original 64 version * 5 PRINT 10 PRINT"{clear}":POKE53280,7:POKE53281,7:IFPEEK(14850)<>24THENGOSUB2000 20 dn$="{down*20}":ov$="{right*29}" 30 bk$="{white}SQRT{down}{left*4}U{cm f}{cm c}V":bl$="{space*4}{down}{left*4}{space*4}":POKE53272,31 40 b2$="{space*29}" 50 DIM cd$(52):c$(0)="{red}":c$(1)="{black}":c$(2)="{red}":c$(3)="{black}":cd$(0)=bl$ 60 FORx=0TO3:FORy=1TO13 70 cd$(x*13+y)=c$(x)+"S"+CHR$(95+y)+CHR$(109+x)+"T{down}{left*4}U" 75 cd$(x*13+y)=cd$(x*13+y)+CHR$(173+x)+CHR$(159+y)+"V" 80 NEXTy,x 90 DIMdk(52),st(24),ly(7,20),uc(7),tp(7):FORx=1TO52:dk(x)=x:NEXT 100 DEFFNr(z)=INT(52*RND(z))+1 110 DEFFNsu(x)=INT(x/13.1)+1:DEFFNvl(x)=x-13*(FNsu(x)-1) 120 DEFFNsc(x)=(x/2=INT(x/2)):GOSUB1190 125 IFtt<=0THENtt=500 130 bt=INT((tt+51)/52) 140 GOSUB710:GOSUB720 150 PRINT"{white}{clear} #1{space*2}#2{space*2}#3{space*2}#4{space*2}#5{space*2}#6{space*2}#7{right*5}{black}p{white}ile{down*17}" 160 PRINTov$"{black}f2{white}-end game":PRINTov$"{black}f8{white}-quit{down}" 170 PRINT"{black}d{white}eck{space*2}{black}s{white}tack{space*3}total":PRINT"{right*16}bet" 180 PRINT"from{space*7}to"; 190 PRINT"{home}{right*2}{down*3}"ov$"{red}hearts{down*4}{left*6}{black}spades{down*4}{left*6}{red}diamonds{down*4}{left*8}{black}"; 200 PRINT"clubs":nb=-1:GOSUB940:nb=0 210 FORx=1TO7:PRINT"{home}"LEFT$(dn$,x)LEFT$(ov$,x*4-4);:FORy=xTO7:IFy=xTHEN230 220 PRINTbk$"{up}";:GOTO240 230 PRINTcd$(ly(x,x))"{up}"; 240 NEXTy:NEXTx 250 PRINT"{home}"ov$"{down}";:FORx=1TO4:PRINTbk$"{down*3}{left*4}";:NEXT:PRINT 260 GOSUB740 270 GOSUB760:IFquTHEN1240 280 PRINT"{up*5}":FORx=1TO5:PRINTb2$:NEXT:tt=tt-52*bg:GOSUB940 290 REM***main loop 300 gw=0:gm=-1:m1=1 310 ed=0:GOSUB960:IFedTHENPRINT"{clear}":GOTO125 320 IFquTHEN1240 330 IFgwTHEN1160 340 gm=0:GOSUB350:GOTO310 350 IFm1>-1THEN380 360 IFdp=0THENRETURN 370 sp=sp+1:st(sp)=dk(dp):dp=dp-1:PRINT"{home}"dn$"{up*2}";:GOSUB740:gm=-1:RETURN 380 IFm1=0THENc1=st(sp):c3=c1:GOTO400 390 c1=ly(m1,uc(m1)+1):c3=ly(m1,tp(m1)) 400 IFm2>-1THEN600 410 IFc3=0THENRETURN 420 s3=FNsu(c3):v3=FNvl(c3):IFv3-1<>pl(s3)THENRETURN 430 IFNOTamTHEN510 440 bm=0:FORx=1TO4:IFFNsc(x)=FNsc(s3)THEN460 450 IFv3>pl(x)+2THENbm=-1 460 NEXT:IF(m1>0)OR(v3<3)THEN500 470 FORx=1TO7:c4=ly(x,uc(x)+1):v4=FNvl(c4):IFv4<>v3-1THEN490 480 IFFNsc(s3)<>FNsc(FNsu(c4))THENbm=-1 490 NEXT 500 IFbmTHENRETURN 510 IFm1=0THEN570 520 c=m1:GOSUB1150:IFtp(m1)=1THENPRINTbl$:tp(m1)=0:GOTO580 530 IFtp(m1)=1THENPRINTbl$:tp(m1)=0:GOTO560 540 tp(m1)=tp(m1)-1:PRINTbl$"{left*4}{up*2}"cd$(ly(m1,tp(m1))); 550 IFtp(m1)=uc(m1)THENuc(m1)=uc(m1)-1 560 GOTO580 570 GOSUB1170 580 PRINT"{home}"ov$LEFT$(dn$,s3*4-3)cd$(c3):pl(s3)=v3:tt=tt+5*bg:mu=-1 590 GOSUB940:tq=0:FORq=1TO4:tq=tq+pl(q):NEXT:gw=(tq=52):gm=-1:RETURN 600 c2=ly(m2,tp(m2)):s1=FNsc(FNsu(c1)):s2=FNsc(FNsu(c2)) 610 v1=FNvl(c1):v2=FNvl(c2):IF(v1=13)AND(v2=0)THEN630 620 IF(s1=s2)OR(v1+1<>v2)THENRETURN 630 IFm1>0THEN650 640 GOSUB1170:ly(m2,tp(m2)+1)=c1:nc=1:GOTO690 650 nc=tp(m1)-uc(m1):c=m1:PRINT"{home}"LEFT$(dn$,uc(c)+1)LEFT$(ov$,c*4-4); 660 FORx=1TOnc:PRINTbl$"{left*4}";:ly(m2,tp(m2)+x)=ly(m1,uc(m1)+x):NEXT 670 tp(m1)=uc(m1):uc(m1)=uc(m1)-1-(uc(m1)=0) 680 IFtp(m1)>0THENGOSUB1150:PRINTcd$(ly(m1,tp(m1))); 690 c=m2:GOSUB1150:PRINT"{down}";:FORx=1TOnc:PRINTcd$(ly(m2,tp(m2)+x))"{left*4}";:NEXT 700 tp(m2)=tp(m2)+nc:gm=-1:RETURN 710 FORx=1TO52:a=FNr(0):s=dk(a):dk(a)=dk(x):dk(x)=s:NEXT:dp=52:RETURN 720 FORx=1TO7:FORy=xTO7:ly(y,x)=dk(dp):dp=dp-1:NEXTy:tp(x)=x:uc(x)=x-1:NEXTx 730 st(1)=dk(dp):dp=dp-1:sp=1:FORx=1TO4:pl(x)=0:NEXT:RETURN 740 PRINT"{home}"dn$"{up}"bk$"{up}{right*2}"cd$(st(sp)) 750 PRINT"{white}"dp"{left} ";TAB(6)sp"{left} ";:RETURN 760 PRINT"{white}{home}{down*10} please enter your bet" 770 PRINT" maximum bet ={black}"bt 780 PRINT"{white} press {black}f1{white} to bet it all" 790 PRINT" press {black}f7{white} to re-shuffle" 800 PRINT" ->{space*8}{left*7}{black}{cm d}{left}";:n=0:bg=0:b$="" 810 GETa$:IFa$=""THEN810 820 IF(a$=CHR$(133))AND(n=0)THENbg=bt:RETURN 830 IF(a$=CHR$(136))AND(n=0)THEN910 840 IF(a$=CHR$(140))AND(n=0)THENqu=-1:RETURN 850 IFa$<>CHR$(13)THEN880 860 bg=VAL(b$):IFNOT((bg=0)OR(bg>bt))THENRETURN 870 PRINT:PRINT"{up}{right*4}{space*12}":GOTO760 880 IF(a$<":")AND(a$>"/")AND(n<11)THENb$=b$+a$:n=n+1:PRINTa$"{cm d}{left}";:GOTO810 890 IF(a$=CHR$(20))AND(n>0)THENn=n-1:PRINT"{left*2}{cm d}{left}";:b$=MID$(b$,1,n) 900 GOTO810 910 PRINT"working":GOSUB710:GOSUB720 920 PRINT"{home}{down}";:FORx=1TO7:PRINTcd$(ly(x,x));:NEXT 930 PRINT:PRINT"{down*10}{right*6}"cd$(st(sp)):GOTO760 940 PRINT"{home}{black}{down*2}"dn$TAB(19)tt"{left} ":IFnbTHENRETURN 950 PRINTTAB(19)bg:RETURN 960 IFNOTgmTHEN1010 970 am=-1:m2=-1:IFm1>0THENmu=0:FORz=1TO7:m1=z:GOSUB350:NEXT 980 m1=0:GOSUB350 990 IFmuTHENm1=1:GOTO970 1000 am=0:IFgwTHENRETURN 1010 PRINT"{home}{black}"dn$"{down*4}{right*5}{space*5}{right*4}{space*5}{left*14}"; 1020 GETa$:IFa$=""THEN1020 1030 IF(a$>"0")AND(a$<"8")THENm1=VAL(a$):PRINTa$"{right*8}";:GOTO1090 1040 IFa$=CHR$(137)THENed=-1:RETURN 1050 IFa$="d"THENm1=-1:PRINT"deck";:RETURN 1060 IFa$="s"THENm1=0:PRINT"stack{right*4}";:GOTO1090 1070 IFa$=CHR$(140)THENqu=-1:RETURN 1080 GOTO1020 1090 GETa$:IFa$=""THEN1090 1100 IF(a$>"0")AND(a$<"8")THENm2=VAL(a$):PRINTa$;:RETURN 1110 IF(a$="p")OR(a$="f")THENm2=-1:PRINT"pile";:RETURN 1120 GOTO1010 1150 PRINT"{home}"LEFT$(dn$,tp(c))LEFT$(ov$,c*4-4);:RETURN 1160 tt=tt+740*bg:PRINT"{clear}{down*3}{right*10}you won!":GOTO130 1170 sp=sp-1:IFsp=0ANDdp>0THENsp=1:st(sp)=dk(dp):dp=dp-1 1180 GOSUB740:RETURN 1190 INPUT"{clear}{black}{down}{right}enter your name ";n$ 1200 f$="@0:"+n$+".money,s,":OPEN2,8,2,f$+"r" 1210 INPUT#2,tt:CLOSE2 1220 OPEN2,8,2,f$+"w" 1230 PRINT#2,0:CLOSE2:RETURN 1240 OPEN2,8,2,f$+"w":PRINT#2,tt:CLOSE2 1250 PRINT"{clear}{black}{down}{right}godbye{.*3}" 1260 END 2000 FOR x=828TO885:READa:POKEx,a:NEXT:SYS828 2010 FORx=0TO16:b=14848+x*8:c=15104+x*8:FORy=2TO7:READa 2020 POKEb+y,a:IFx>12THENa=a/2 2030 POKEc+y-1+(x>12),a:NEXTy 2040 POKEb,255:POKEc+7,255:POKEb+1,0:POKEc-6*(x>12),0:NEXTx 2050 FORx=14984TO15031:READa:POKEx,a:NEXT 2060 FORx=15320TO15335:READa:POKEx,a:NEXT 2070 RETURN 2080 DATA169,0,141,14,220,169,51,133,1,169,0,133,251,133,253,169 2090 DATA208,133,252,169,56,133,254,160,0,177,251,145 2100 DATA253,230,251,230,253,208,246,165,252,201,215,240,7,230,252,230 2110 DATA254,76,85,3,169,55,133,1,169,129,141,14,220,96 2120 DATA 24,60,102,126,102,0 2130 DATA 60,102,12,48,126,0 2140 DATA 60,102,12,102,60,0 2150 DATA 102,102,126,6,6,0 2160 DATA 126,96,124,6,124,0 2170 DATA 60,96,124,102,60,0 2180 DATA 126,6,12,24,24,0 2190 DATA 60,102,60,102,60,0 2200 DATA 60,102,62,6,60,0 2210 DATA 126,24,24,24,24,0 2220 DATA 30,12,12,108,56,0 2230 DATA 60,102,102,60,14,0 2240 DATA 102,108,120,108,102,0 2250 DATA 108,254,254,124,56,16 2260 DATA 16,56,124,254,56,124 2270 DATA 24,60,126,126,60,24 2280 DATA 56,56,254,254,56,124 2290 DATA 255,51,102,204,153,51,102,204 2300 DATA 255,204,102,51,153,204,102,51 2310 DATA 0,3,3,3,3,3,3,3 2320 DATA 0,192,192,192,192,192,192,192 2330 DATA 3,3,3,3,3,3,3,0 2340 DATA 192,192,192,192,192,192,192,0 2350 DATA 204,102,51,153,204,102,51,255 2360 DATA 51,102,204,153,51,102,204,255 stop tok64 (bastext 1.0)