1 CLS:PRINT@137,"Pinocle";:PRINT@175,"by J Hafey";:PRINT@251,"Demonstration";:INPUT A$ 2 IF A$="Y"OR A$="YES"OR A$="y"OR A$="yes"THEN DEMO=1:GOTO35ELSE DEMO=0:GOTO35 3 REM written 11/06/86 4 PRINT@230,D$(DL):PRINT@250," ";:PRINT@268," ";:FOR L3=1TO4:PRINT@PA(L3)," ";:NEXT:RETURN 5 FOR S=1TO4:PRINT@40,"";:PRINT@((S*40)-1),S;CHR$(8);"=";S$(S);":";:FOR C=1TO5:IF C(1,S,C)=0THEN NEXT:PRINT" ":NEXT:RETURN ELSE FOR X=1TO C(1,S,C):PRINTC$(C);:NEXT X,C:PRINT" ";:NEXT:RETURN 6 PRINT@25,"We They Bid D";:PRINT@64,S1;" ";:PRINT@68,S2;" ";:PRINT@74,S$(S(LB));B$;:PRINT@104,M1;" ";:PRINT@108,M2;" ";:PRINT@114,BID;D$(DL):RETURN 7 IF NR(BDR)>1THEN TN=150-13*NR(BDR):GOTO8ELSE RETURN 8 IF BID<150THEN BID=145:RETURN ELSE RETURN 9 IF PLR<3THEN RETURN ELSE IF T>0THEN10ELSE11 10 Z3=0:Z8=6:FOR X=1TO (PLR-1):IF SL(OP(X))=S(LB)AND CP(OP(X))4THEN READ MLD(X):NEXT:READ C$(5):BID=50:GOTO39 ELSE READ PA(X):READ D$(X):READ S$(X):READ C$(X):READ MLD(X):NEXT 39 FOR X=1TO5:FOR Y=1TO10:READ OC(X,Y):NEXT Y,X 40 FOR Y=1TO10 41 A=INT(RND(1)*20)+1:IF A>15THEN41 42 IF A>5AND A<11THEN41 43 FOR X=1TO Y:IF OC(6,Y)=A THEN41ELSE NEXT X:OC(6,Y)=A:NEXT Y 44 N=VAL(RIGHT$(TIME$,2)):FOR X=1TO N:M=RND(1):NEXT:L8=INT(RND(1)*2)+4:L9=INT(VAL(RIGHT$(TIME$,2))/10)+1 45 L5=DL:FOR S=10TO40STEP10:FOR C=1TO5:FOR N=1TO4 46 D9=INT(RND(1)*80)+1:IF DK(D9)<>0THEN46 47 DK(D9)=S+C:NEXT N,C,S:FOR N=1TO80STEP L8:L5=L5+1:IF L5>4THEN L5=1 48 FOR D9=0TO(L8-1):S=INT(DK(N+D9)/10):C=DK(N+D9)-(S*10):CA(L5)=CA(L5)+1:CS(L5,S)=CS(L5,S)+1:C(L5,S,C)=C(L5,S,C)+1:NEXT D9,N:GOSUB14:GOSUB124:GOSUB6:GOTO49 49 FOR PLR=1TO4:C=1:A=10 50 FOR S=1TO4:IF A>C(PLR,S,C)THEN A=C(PLR,S,C):NEXT ELSE NEXT 51 IF A=0THEN53 52 IF C=1THEN M(PLR)=MLD(A):GOTO53 ELSE B=((C-2)*4)+A:M(PLR)=M(PLR)+MLD(B) 53 C=C+1:IF C=2THEN C=3:A=10:GOTO50 54 IF C>5THEN NEXT ELSE A=10:GOTO50 55 FOR PLR=1TO4:A=0:IF C(PLR,1,4)>C(PLR,2,5)THEN A=C(PLR,2,5) ELSE A=C(PLR,1,4) 56 IF A=0THEN NEXT:GOTO59 57 IF A=4 THEN P9=PLR:A=3:GOTO59 58 M(PLR)=M(PLR)+MLD(16+A):NEXT 59 FOR PLR=1TO4:FOR S=1TO4:A=5:FOR C=1TO5:IF A>C(PLR,S,C)THEN A=C(PLR,S,C):NEXT C ELSE NEXT C 60 IF A=0THEN NEXT S,PLR:GOTO62 61 R(PLR,S)=A:NEXT S,PLR 62 FOR PLR=1TO4:FOR S=1TO4:IF C(PLR,S,3)=>C(PLR,S,4)THEN MA(PLR,S)=C(PLR,S,4)ELSE MA(PLR,S)=C(PLR,S,3) 63 IF MA(PLR,S)=0THEN NEXT S,PLR ELSE M(PLR)=M(PLR)+(2*MA(PLR,S)):NEXT S,PLR 64 LB=DL:BDR=DL+1:IF BDR>4THEN BDR=1 65 FOR X=1TO4:FOR Y=1TO4:MZ(X)=MZ(X)+MA(X,Y):NEXT Y,X 66 FOR X=1TO4:FOR Y=1TO4:IF R(X,Y)=0THEN NEXT Y,X 67 IF X>4OR Y>4THEN71 68 IF R(X,Y)>NR(S(X))THEN S(X)=Y:NR(X)=R(X,Y):NEXT Y,X 69 IF X>4OR Y>4THEN71 70 IF R(X,Y)=NR(S(X))AND CS(X,(S(X)))>CS(X,Y)THEN NEXT Y,X ELSE IF R(X,Y)=NR(S(X))AND CS(X,(S(X)))0THEN NEXT:GOTO75 72 Z=0:FOR Y=1TO4:IF CS(X,Y)>Z AND MA(X,Y)<>0THEN Z=CS(X,Y):S(X)=Y:NEXT ELSE NEXT 73 IF S(X)<>0THEN NEXT:GOTO75 74 Z=0:FOR Y=1TO4:IF CS(X,Y)>Z AND MA(X,Y)=0THEN Z=CS(X,Y):S(X)=Y:NEXT Y,X ELSE NEXT Y,X 75 Z=BDR+2:IF Z>4THEN Z=Z-4:IF PS(BDR)=1THEN103 76 IF BDR=1AND DEMO=0THEN101 77 IF PS(BDR)=1OR MZ(BDR)=0OR M(BDR)=50AND BID<60THEN BID=BID+INT(M(BDR)/10):LB=BDR 80 IF BID<60AND PS(BDR)=0THEN PRINT@PA(BDR),BID;:GOTO99 81 Z=BDR+2:IF Z>4THEN Z=Z-4 82 GOSUB7:IF M(Z)+M(BDR)+20+TN+13*NR(BDR)>=BID THEN BID=BID+5:LB=BDR:TN=0:GOTO88 83 IF PASS=2AND BID>59AND BDR<>1AND Z=LB THEN PS(BDR)=1:PASS=3:GOTO88 84 IF M(Z)+M(BDR)+20+13*NR(BDR)59AND NR(BDR)=0THEN PS(BDR)=1:GOTO88 86 IF BID<150AND NR(BDR)>=2THEN BID=150:LB=BDR:GOTO88 ELSE IF BID>=150AND NR(BDR)>=2THEN BID=150+M(BDR)+30:LB=BDR 87 IF M(BDR)>59AND NR(BDR)>0THEN BID=(INT(M(BDR)/10)*10):LB=BDR 88 IF BID>59THEN89ELSE91 89 B9=INT(BID/5):IF BID=(B9*5)THEN91 90 BID=(B9*5)+5 91 IF PS(BDR)=0THEN PRINT@PA(BDR),BID;:GOTO99ELSE PRINT@PA(BDR),BID;:GOTO99 92 B=0:IF LB=1THEN PRINT@268,"S";:INPUT"uit";B:S(LB)=B:IF B<1OR B>4THEN92ELSE IF MA(1,B)=0AND MZ(1)>0THEN92 93 PRINT@PA(LB),S$(S(LB)); 94 FOR X=1TO4:IF R(X,S(LB))=0THEN NEXT ELSE A=R(X,S(LB))+20:M(X)=M(X)+MLD(A):NEXT 95 M1=M(1)+M(3)+(MA(1,S(LB))*2)+(MA(3,S(LB))*2) 96 M2=M(2)+M(4)+(MA(2,S(LB))*2)+(MA(4,S(LB))*2) 97 IF LB=1OR LB=3THEN B$="W"ELSE B$="T" 98 GOTO105 99 PASS=PS(1)+PS(2)+PS(3)+PS(4):IF PASS=3THEN104 100 IF PS(BDR)=1THEN PRINT@PA(BDR),"Pass";:GOTO103ELSE103 101 IF MZ(1)=0THEN PS(1)=1:GOTO99 102 IF PS(1)=1OR DEMO=1THEN103ELSEPRINT@267," ";:PRINT@268,"";:INPUT B:IF B4THEN BDR=1:GOTO75ELSE GOTO75 104 IF DEMO=0THEN92 ELSE GOTO93 105 IF M1<20THEN M1=0 106 IF M2<20THEN M2=0 107 IF LB=1AND M1<20OR LB=1AND MZ(1)=0OR LB=3AND MZ(3)=0OR LB=3AND M1<20THEN S1=S1-BID:SET=1 108 IF LB=2AND M2<20OR LB=2AND MZ(2)=0OR LB=4AND MZ(4)=0OR LB=4AND M2<20THEN S2=S2-BID:SET=1 109 IF SET=1AND LB<>1AND LB<>3AND M1>19THEN S1=S1+M1:M1=0 110 IF SET=1AND LB<>2AND LB<>4AND M2>19THEN S2=S2+M2:M2=0 111 IF LB=1OR LB=3THEN112ELSE114 112 IF M120THEN S2=S2+M2:M2=0:GOTO117 114 IF LB=2OR LB=4THEN115ELSE117 115 IF M220THEN S1=S1+M1:M1=0 117 GOSUB6:PIL=LB 118 IF SET=0THEN126 119 IF S2>499AND LB=1OR S2>499AND LB=3THEN217 120 IF S1>499AND LB=2OR S1>499AND LB=4THEN217 121 M1=0:M2=0:GOSUB4:GOSUB6:GOSUB13:FOR PLR=1TO4:FOR S=1TO4:FOR C=1TO5:C(PLR,S,C)=0:PS(PLR)=0:CA(PLR)=0:CS(PLR,S)=0:M(PLR)=0:NR(PLR)=0:MA(PLR,S)=0 122 R(PLR,S)=0:MZ(PLR)=0:S(PLR)=0:TR(S)=0:SL(S)=0:CP(S)=0:NEXT C,S,PLR:PASS=0:BID=50:Z=0:SET=0:T=0:C1=0:C2=0:CARD=0:FOR X=1TO80:DK(X)=0:NEXT:GOSUB4:PRINT@240,"Dealing......."; 123 DL=DL+1:IF DL>4THEN DL=1:PRINT@230,D$(DL):GOTO44 ELSE PRINT@230,D$(DL):GOTO44 124 CLS:PRINT" 1=A:2=T:3=K:4=Q:5=J";:PRINT@230,D$(DL):FOR S=1TO4:PRINT:PRINT@((S*40)-1),S;CHR$(8);"=";S$(S);":";:FOR C=1TO5:IF C(1,S,C)=0THEN NEXT C,S ELSE FOR X=1TO C(1,S,C):PRINTC$(C);:NEXT X,C,S 125 RETURN 126 PRINT@240," ";:GOSUB4:ON PIL GOTO127,128,129,130 127 OP(1)=1:OP(2)=2:OP(3)=3:OP(4)=4:PR(1)=3:PR(2)=4:PR(3)=1:PR(4)=2:GOTO131 128 OP(1)=2:OP(2)=3:OP(3)=4:OP(4)=1:PR(1)=4:PR(2)=1:PR(3)=2:PR(4)=3:GOTO131 129 OP(1)=3:OP(2)=4:OP(3)=1:OP(4)=2:PR(1)=1:PR(2)=2:PR(3)=3:PR(4)=4:GOTO131 130 OP(1)=4:OP(2)=1:OP(3)=2:OP(4)=3:PR(1)=2:PR(2)=3:PR(3)=4:PR(4)=1 131 FOR PLR=1TO4:GOSUB9 132 IF OP(PLR)=1AND DEMO=0THEN171 133 IF OP(PLR)=PIL AND PIL=LB THEN Z9=L9:GOTO138 134 IF OP(PLR)=PIL AND PR(PLR)=LB THEN Z9=2:GOTO138 135 IF OP(PLR)=PIL THEN Z9=3:GOTO138 136 IF PR(PLR)=PIL THEN Z9=4:GOTO147 137 Z9=5:GOTO147 138 FOR X=1TO10:IF OC(Z9,X)>10THEN A=OC(Z9,X)-10:GOTO143ELSE A=OC(Z9,X) 139 FOR L5=1TO4:S=CZ(OP(PLR),L5):IF S=S(LB)THEN NEXT L5 140 IF S>4THEN NEXT X 141 IF C(OP(PLR),S,A)=0THEN NEXT:NEXT:GOTO147 142 GOTO170 143 FOR L5=1TO4:S=CZ(OP(PLR),L5):IF S<>S(LB)THEN NEXT L5 144 IF S>4THEN NEXT X 145 IF C(OP(PLR),S,A)=0THEN NEXT:NEXT:GOTO147 146 GOTO170 147 IF T=0AND CP(PIL)=1THEN150 148 IF T>0AND CP(PIL)<>1THEN155 149 S=SL(OP(1)):ON CP(PIL)GOTO150,151,152,153,154 150 FOR X=1TO10:IF OC(Z9,X)>10THEN A=OC(Z9,X)-10:GOTO163ELSE A=OC(Z9,X):GOTO162 151 A=1:IF C(OP(PLR),S,A)=0THEN150ELSE170 152 FOR A=1TO2:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO150ELSE170 153 FOR A=1TO3:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO150ELSE170 154 FOR A=1TO4:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO150ELSE170 155 S=SL(OP(1)):FOR A=1TO5:IF C(OP(PLR),S,A)=0THEN NEXT A ELSE GOTO164 156 S=S(LB):ON CP(PIL)GOTO161,157,158,159,160 157 A=1:IF C(OP(PLR),S,A)=0THEN164ELSE T=T+1:TR(OP(PLR))=1:GOTO170 158 FOR A=2TO1STEP-1:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO164ELSE T=T+1:TR(OP(PLR))=1:GOTO170 159 FOR A=3TO1STEP-1:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO164ELSE T=T+1:TR(OP(PLR))=1:GOTO170 160 FOR A=4TO1STEP-1:IF C(OP(PLR),S,A)=0THEN NEXT A:GOTO164ELSE T=T+1:TR(OP(PLR))=1:GOTO170 161 FOR A=5TO1STEP-1:S=S(LB):IF C(OP(PLR),S(LB),A)=0THEN NEXT A:GOTO168 ELSE T=T+1:TR(OP(PLR))=1:GOTO170 162 S=SL(OP(1)):IF C(OP(PLR),SL(OP(1)),A)=0THEN NEXT X:GOTO168ELSE170 163 S=S(LB):IF C(OP(PLR),S(LB),A)=0THEN NEXT X:GOTO168 ELSE T=T+1:TR(OP(PLR))=1:GOTO170 164 FOR X=1TO10:IF OC(Z9,X)>10THEN A=OC(Z9,X)-10:GOTO166ELSE A=OC(Z9,X) 165 S=SL(OP(1)):IF C(OP(PLR),SL(OP(1)),A)=0THEN NEXT X:GOTO168ELSE170 166 S=S(LB):IF C(OP(PLR),S(LB),A)=0THEN NEXT X:GOTO168 167 IF C(OP(PLR),S(LB),A)>=CP(PIL)THEN NEXT X:GOTO168 ELSE T=T+1:TR(OP(PLR))=1:GOTO170 168 FOR X=1TO10:IF OC(Z9,X)>10THEN A=OC(Z9,X)-10:GOTO169ELSE A=OC(Z9,X) 169 FOR L5=1TO4:S=CZ(OP(PLR),L5):IF C(OP(PLR),S,A)=0THEN NEXT:NEXT 170 C(OP(PLR),S,A)=C(OP(PLR),S,A)-1:SL(OP(PLR))=S:CP(OP(PLR))=A:GOTO191 171 A=0:S=0:PRINT@240,"S";:INPUT"uit,Card:(#,#)";S,A:IF A<1OR A>5OR S<1OR S>4THEN172ELSE174 172 BEEP:PRINT@240,"No such card! ":FOR X=1TO1000:NEXT:GOTO171 173 BEEP:PRINT@240,"Illegal play! ":FOR X=1TO1000:NEXT:GOTO171 174 IF C(1,S,A)=0THEN172 175 IF PIL=1THEN170 176 IF CP(PIL)=1AND S=SL(OP(1))THEN170 177 IF T>0AND S=SL(OP(1))THEN170 178 IF A>=CP(PIL)AND S=SL(OP(1))AND T=0THEN179ELSE180 179 FOR X=(CP(PIL)-1)TO1STEP-1:IF C(1,SL(OP(1)),X)=0THEN NEXT ELSE GOTO173 180 IF S<>SL(OP(1))AND T=0AND S=S(LB)THEN181ELSE183 181 FOR X=1TO5:IF C(1,SL(OP(1)),X)=0THEN NEXT:GOTO182ELSE GOTO173 182 T=T+1:TR(1)=1:GOTO170 183 IF S<>SL(OP(1))AND T=>0AND S<>S(LB)THEN184ELSE186 184 FOR X=1TO5:IF C(1,SL(OP(1)),X)=0THEN NEXT ELSE GOTO173 185 FOR X=1TO5:IF C(1,S(LB),X)=0THEN NEXT:GOTO170 ELSE GOTO173 186 IF S<>SL(OP(1))AND T>0AND S=S(LB)AND A>=CP(PIL)THEN187ELSE189 187 FOR X=1TO5:IF C(1,SL(OP(1)),X)=0THEN NEXT ELSE GOTO173 188 FOR X=((CP(PIL))-1)TO2STEP-1:IF C(1,S,X)=0THEN NEXT:GOTO170 ELSE GOTO173 189 IF S<>SL(OP(1))AND T>0AND S=S(LB)AND A0THEN193ELSE194 193 Z3=0:Z8=6:FOR X=1TO4:IF SL(OP(X))=S(LB)AND CP(OP(X))=80THEN202ELSE227 202 IF PIL=1OR PIL=3THEN C1=C1+2ELSE C2=C2+2 203 IF C1<20THEN C1=0 204 IF C2<20THEN C2=0 205 IF LB=1OR LB=3THEN A=C1+M1ELSE A=M2+C2:GOTO209 206 IF C1<20OR A19AND A>BID-1THEN S1=S1+A 208 IF C2>19THEN S2=S2+M2+C2:GOTO212ELSE212 209 IF C2<20OR A19AND A>BID-1THEN S2=S2+A 211 IF C1>19THEN S1=S1+M1+C1 212 IF P9<>0THEN220 213 IF C1=50OR C2=50THEN218 214 IF S1>499OR S2>499THEN215ELSE121 215 IF S1>499AND S2>499THEN216ELSE217 216 IF LB=1OR LB=3THEN W1=1:GOTO222ELSE W2=1:GOTO222 217 IF S1>499THEN W1=1:GOTO222ELSE W2=1:GOTO222 218 GOSUB4:PRINT@240,"PINOCLE!!!":BEEP:BEEP:BEEP:BEEP:IF C1=50THEN S1=500:GOSUB6:GOTO224ELSE S2=500:GOSUB6:GOTO223 219 GOSUB4:PRINT@240,"PINOCLE!!!":BEEP:BEEP:BEEP:BEEP:IF P9=1OR P9=3THEN S1=500:GOSUB6:GOTO224ELSE S2=500:GOSUB6:GOTO223 220 IF C1>19AND P9=1OR C1>19AND P9=3THEN219 221 IF C2>19AND P9=2OR C2>19AND P9=4THEN219ELSE213 222 M1=0:M2=0:GOSUB4:GOSUB6:IF W1=1THEN224ELSE223 223 A$="You lost! ":A=2200:FOR X=1TO10:GOTO225 224 A$="You win! ":A=1200:FOR X=1TO20 225 PRINT@268,A$;:SOUND A,1:NEXT 226 INPUT"Play again";A$:IF A$="Y"OR A$="y"OR A$="yes"OR A$="YES"THEN DEMO=0:CLEAR:RESTORE:GOTO35ELSE MENU 227 FOR X=1TO4:TR(X)=0:SL(X)=0:CP(X)=0:NEXT:T=0:GOTO126:REM Questions-John @ (1-505-434-4788)