1 COLOR 15,0,0
100 ' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
110 ' º CRIBBAGE º
120 ' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
130 '
140 DEFINT C-Z:GOSUB 3490:RANDOMIZE VAL(RIGHT$(TIME$,2)):GOSUB 3640
150 GOSUB 2590:GOSUB 2650:' --- LOW CARD DEALS FIRST ---
160 GOSUB 2590:GOSUB 2760:' --- SUFFLE DECK AND DEAL ---
170 GOSUB 1530:' --- FIND THE FOUR BEST CARDS AND DISCARD OTHERS -
180 ' --- DISCARD ---
190 I1=V(B9,5):I2=V(B9,6)
200 E=7:GOSUB 3280:GOSUB 3080:I3=RR:CL=RR*8+9:RW=7:GOSUB 3180
210 GOSUB 3100:I4=RR:IF I3=I4 THEN E=10:GOSUB 3280:GOTO 210
220 ' --- CRIB ---
230 RW=7:CL=RR*8+9:GOSUB 3180
240 FOR J=1 TO 4:C(1,J)=M(I1,J):C(2,J)=M(I2,J):C(3,J)=Y(I3,J):C(4,J)=Y(I4,J)
250 NEXT J
260 GOSUB 1910:' --- GENERATE THE UP CARD ---
270 ' --- PLAY OF THE HAND ---
280 GOSUB 590:LOCATE 5,1:IF M<>0 THEN 300
290 COLOR 10:PRINT "I SCORE FIRST":X1=2:GOTO 490
300 COLOR 10:PRINT "YOU SCORE FIRST":X1=1:GOTO 370
310 LOCATE 22,14:PRINT "CRIB:"
320 RW=20:FOR I=1 TO 4:CL=I*8+25:CC$=C$(C(I,1)):GOSUB 3010:NEXT I
330 FOR I=1 TO 4:FOR J=1 TO 4:W(I,J)=C(I,J):NEXT J:NEXT I:C=1
340 W(5,4)=T9:GOSUB 2020:IF X1=2 THEN X1=3:GOTO 400
350 LOCATE 22,20:PRINT USING "## PTS";P:S1=S1+P:IF S1>121 THEN 560
360 GOSUB 540:GOTO 160
370 K=1:FOR I=1 TO 6:IF I=I3 OR I=I4 THEN 390
380 FOR J=1 TO 4:W(K,J)=Y(I,J):NEXT J:K=K+1
390 NEXT I:W(5,4)=T9:C=0:GOSUB 2020:E=13:GOSUB 3280
400 COLOR 11:LOCATE 12,1:PRINT "POINTS ":PRINT " "
410 LOCATE 12,8
420 INPUT P9:D=P-P9:IF D>=0 THEN 440
430 COLOR 12:LOCATE 13,1:PRINT "TRY AGAIN";:GOTO 420
440 S2=S2+P9:IF S2>=121 THEN 570
450 IF D=0 THEN 480
460 COLOR 14:S1=S1+D:LOCATE 13,1:PRINT USING "MUGGINS ## ";D
470 IF S1>=121 THEN 560
480 ON X1 GOTO 490,310,530
490 FOR K=1 TO 4:L=V(B9,K):FOR J=1 TO 4:W(K,J)=M(L,J):NEXT J,K
500 COLOR 13:LOCATE 17,10:PRINT "MY CARDS:";
510 W(5,4)=T9:C=0:GOSUB 2020:S1=S1+P:IF S1>=121 THEN 560
520 COLOR 14:PRINT USING " ## PTS";P:ON X1 GOTO 310,370
530 GOSUB 540:GOTO 160
540 COLOR 11:LOCATE 1,42:PRINT USING "SCORE: YOU ### PTS";S2
550 LOCATE 2,50:PRINT USING "IBM ### PTS";S1:RETURN
560 E=14:GOSUB 3280:GOTO 3270
570 E=15:GOSUB 3280:GOTO 3270
580 '
590 ' --- PLAY OF THE HAND ---
600 '
610 E=8:GOSUB 3280:Y5=0:M5=0:C=0:S9=0:G=0
620 IF M=0 THEN 830
630 IF Y5<>4 THEN 660
640 IF M5=4 THEN 1090
650 GOTO 830
660 GOSUB 3240
670 IF C$="GO" THEN 830
680 FOR C6=1 TO 6:IF C$=D$(C6) THEN 710
690 NEXT C6
700 E=9:GOSUB 3280:GOTO 660
710 IF C6=I3 OR C6=I4 THEN E=1:GOSUB 3280:GOTO 660
720 IF Y5=0 THEN 750
730 FOR J=1 TO Y5:IF I(J+10)=C6 THEN E=6:GOSUB 3280:C$="GO"::GOTO 830
740 NEXT J
750 IF S9+Y(C6,2)>31 THEN E=3:GOSUB 3280:GOTO 660
760 S9=S9+Y(C6,2):Y5=Y5+1:I(10+Y5)=C6:C=C+1:J(C)=Y(C6,4)
770 GOSUB 1310:CC$=C$(Y(C6,1)):CL=RR*8+9
780 COLOR 14:LOCATE 3,1:PRINT USING "YOU PLAY A \ \ ## SUM ## PTS";CC$,S9,P
790 RW=7:GOSUB 3180:RW=10:GOSUB 3010
800 F=1:S2=S2+P:IF S2>=121 THEN 570
810 IF S9<>31 THEN 830
820 F=0:C=0:S9=0:G=0:GOTO 830
830 E=13:GOSUB 3280:PRINT:IF M5<>4 THEN 900
840 IF Y5=4 THEN 1090
850 IF C$<>"GO" THEN 630
860 IF F=2 THEN 880
870 E=4:GOSUB 3280:S2=S2+1:IF S2>=121 THEN 570 ELSE 890
880 E=5:GOSUB 3280:S1=S1+1:IF S1>=121 THEN 560
890 F=0:C=0:S9=0:GOTO 630
900 K9=0:P9=0:C9=C:C=C+1:H9=S9:I9=0
910 I9=I9+1:IF I9>6 THEN 990
920 I(I9)=0:IF I9=I1 OR I9=I2 THEN 910
930 IF M5=0 THEN 960
940 FOR J9=1 TO M5:IF I9=I(20+J9) THEN 910
950 NEXT J9
960 IF H9+M(I9,2)>31 THEN 910
970 K9=K9+1:S9=H9+M(I9,2):J(C)=M(I9,4):GOSUB 1310:IF P9
0 THEN 1130
1000 IF C$<>"GO" THEN 1040
1010 IF G=1 THEN 1050
1020 E=5:GOSUB 3280
1030 C=0:S9=0:S1=S1+1:IF S1>=121 THEN 560 ELSE 630
1040 IF Y5<>4 THEN 1070
1050 E=4:GOSUB 3280:S2=S2+1:IF S2>=121 THEN 570
1060 C=0:S9=0:G=0:C$="":GOTO 830
1070 IF G=1 THEN 630
1080 E=6:GOSUB 3280:G=1:GOTO 630
1090 IF F=0 THEN RETURN
1100 IF F=1 THEN 1120
1110 E=5:GOSUB 3280:S1=S1+1:IF S1>=121 THEN 560 ELSE RETURN
1120 E=4:GOSUB 3280:S2=S2+1:IF S2>=121 THEN 560 ELSE RETURN
1130 C=C+1:M5=M5+1:IF C<>1 THEN 1220
1140 FOR J9=1 TO 4:I9=V(B9,J9)
1150 ' --- DON'T PLAY A FIVE FIRST ---
1160 IF M(I9,2)=5 THEN 1200
1170 FOR II=1 TO M5-1:IF I9=I(II+20) THEN 1200
1180 NEXT II
1190 I(M5+20)=I9:J(C)=M(I9,4):P9=0:S9=M(I9,2):GOTO 1250
1200 NEXT J9
1210 L=V(B9,1):GOTO 1190
1220 FOR J9=1 TO K9:I9=I(J9+30):IF I(I9)=P9 THEN 1240
1230 NEXT J9
1240 I(M5+20)=I9:J(C)=M(I9,4):S9=S9+M(I9,2)
1250 CC$=C$(M(I9,1)):RW=15:CL=M5*8+25:GOSUB 3010
1260 LOCATE 3,1:PRINT USING " I PLAY A \ \ ## SUM ## PTS";CC$,S9,P9
1270 F=2:S1=S1+P9:IF S1>=121 THEN 560
1280 IF S9<>31 THEN 1300
1290 F=0:C=0:S9=0:GOTO 630
1300 IF C$="GO" THEN 830 ELSE 630
1310 ' --- CHECK 15 & 31 ---
1320 P=0:IF C=1 THEN RETURN
1330 IF S9=15 OR S9=31 THEN P=P+2
1340 Z=C-2:IF Z<2 THEN Z=2
1350 FOR I=C TO Z STEP -1
1360 IF J(I)<>J(I-1) THEN 1420
1370 ON C-I+1 GOTO 1380,1390,1400
1380 P=P+2:GOTO 1410
1390 P=P+4:GOTO 1410
1400 P=P+6
1410 NEXT I
1420 ' --- RUNS ---
1430 IF C=2 THEN RETURN
1440 R9=0:FOR I=3 TO C:GOSUB 1460:NEXT I:P=P+R9:RETURN
1450 ' --- RUNS CHECK ROUTINE ---
1460 FOR J=1 TO C:J(J+10)=J(C-J+1):NEXT J:K=0
1470 K=K+1:IF K>I THEN 1510
1480 FOR L=K+1 TO I:IF J(K+10)J(K+11)-1 THEN RETURN
1520 NEXT K:R9=I:RETURN
1530 ' --- FIND THE BEST FOUR CARD HAND ---
1540 P9=0:FOR Z9=1 TO 15:I1=V(Z9,1):I2=V(Z9,2):I3=V(Z9,3):I4=V(Z9,4)
1550 FOR J=1 TO 4:W(1,J)=M(I1,J):W(2,J)=M(I2,J):W(3,J)=M(I3,J):W(4,J)=M(I4,J)
1560 W(5,J)=25:NEXT J
1570 ' --- EVALUATE THE HAND ---
1580 C=0:GOSUB 2020:V(Z9,7)=P:IF P9P9 THEN 1630
1620 J=J+1:I(J)=I
1630 NEXT I:IF J>I THEN 1660
1640 ' --- THIS IS THE SINGLE BEST HAND ---
1650 B9=I(1):RETURN
1660 ' --- NO SINGLE BEST HAND - FIND KEYS CARDS ---
1670 ' --- CHECK FOR FIVES ---
1680 C9=5:Z=1:GOTO 1790
1690 ' --- CHECK FOR EIGHTS ---
1700 C9=8:Z=2:GOTO 1790
1710 ' --- CHECK FOR SEVENS ---
1720 C9=7:Z=3:GOTO 1790
1730 ' --- CHECK FOR JACKS ---
1740 C9=11:Z=4:GOTO 1790
1750 ' --- CHECK FOR ACES ---
1760 C9=1:Z=5:GOTO 1790
1770 ' --- RANDOMLY CHOOSES BEST HAND ---
1780 B9=INT(J*RND(1))+1:B9=I(B9):RETURN
1790 ' --- BEST HAND HAS MOST OF CARDS "C9" ---
1800 P9=0:FOR I=1 TO 15:J(I)=0:NEXT I
1810 FOR I= 1 TO J:FOR K=1 TO 4:L=V(I(I),K):IF M(L,4)<>C9 THEN 1830
1820 J(I)=J(I)+1
1830 NEXT K
1840 IF P9P9 THEN 1880
1870 K=K+1:B9=I(I)
1880 NEXT I
1890 IF K<>1 THEN 1900 ELSE RETURN
1900 ON Z GOTO 1690,1710,1730,1750,1770
1910 ' --- GENERATES THE UP CARD ---
1920 U=INT(38*RND)+14:RW=20:CL=1:CC$=C$(D(U,1)):GOSUB 3010
1930 LOCATE 19,3:PRINT "UP"
1940 FOR I=1 TO 4:W(5,I)=D(U,I):NEXT I:T9=W(5,4)
1950 IF W(5,4)<>11 THEN RETURN
1960 IF M=0 THEN S2=S2+2:GOTO 1980
1970 S1=S1+2
1980 LOCATE 4,1:PRINT "2 PTS FOR JACK"
1990 IF S1>=121 THEN 560
2000 IF S2>=121 THEN 570
2010 RETURN
2020 ' --- SCORE THE FIVE CARD HAND ---
2030 REM
2040 REM - CHECK FOR JACK OF SAME SUIT AS UP CARD
2050 P=0:IF C=1 THEN 2100
2060 FOR I=1 TO 4:IF W(I,4)<>11 THEN 2090
2070 IF W(I,3)<>W(5,3) THEN 2090
2080 P=P+1:GOTO 2100
2090 NEXT I
2100 ' --- CHECK FOR A 4 OR 5 CARD FLUSH ---
2110 FOR I=1 TO 3:IF W(I,3)<>W(I+1,3) THEN 2190
2120 NEXT I
2130 ' --- CRIB SCORES ONLY FOR A 5 CARD FLUSH ---
2140 IF C<>0 THEN 2170
2150 P=P+4:IF W(4,3)<>W(5,3) THEN 2190
2160 P=P+1:GOTO 2190
2170 IF W(4,3)<>W(5,3) THEN 2190
2180 P=P+5
2190 ' --- CHECK 2 CARD SUM OF 15 ---
2200 FOR I=1 TO 4:FOR J=I+1 TO 5:IF W(I,2)+W(J,2)=15 THEN P=P+2
2210 NEXT J,I
2220 ' --- CHECK 3 CARD SUM OF 15 ---
2230 FOR I=1 TO 3:FOR J=I+1 TO 4:FOR K=J+1 TO 5
2240 IF W(I,2)+W(J,2)+W(K,2)=15 THEN P=P+2
2250 NEXT K,J,I
2260 ' --- CHECK FOR 4 CARD SUM OF 15 --
2270 FOR I=1 TO 2:FOR J=I+1 TO 3:FOR K=J+1 TO 4:FOR L=K+1 TO 5
2280 IF W(I,2)+W(J,2)+W(K,2)+W(L,2)=15 THEN P=P+2
2290 NEXT L,K,J,I
2300 ' --- CHECK 5 CARD SUM OF 15 ---
2310 J=0:FOR I=1 TO 5:J=J+W(I,2):NEXT I:IF J=15 THEN P=P+2
2320 ' --- CHECK FOR PAIRS 2, 3 AND 4 OF A KIND ---
2330 FOR I=1 TO 13:J(I)=0:NEXT I
2340 FOR I=1 TO 5:J=W(I,4):J(J)=J(J)+1:NEXT I
2350 FOR I=1 TO 13:ON J(I)+1 GOTO 2390,2390,2380,2370,2360
2360 P=P+6
2370 P=P+4
2380 P=P+2
2390 NEXT I
2400 ' --- SORT HAND TO ASCENDING SEQ ---
2410 FOR I=1 TO 4:FOR J=I+1 TO 5:IF W(I,4)Q(I,J) THEN 2480
2470 NEXT J:P=P+Q(I,6):RETURN
2480 NEXT I
2490 ' --- CHECK FOR A 4 CARD RUN ---
2500 FOR L=1 TO 2:D=W(L,4)-R(1,1):FOR I=1 TO 4:FOR J=1 TO 4:R(I,J)=R(I,J)+D
2510 NEXT J,I:FOR I=1 TO 4:FOR K=1 TO 4:IF W(K+L-1,4)<>R(I,K) THEN 2530
2520 NEXT K:P=P+R(I,5):RETURN
2530 NEXT I,L
2540 ' --- CHECK FOR 3 CARD RUN ---
2550 FOR L=1 TO 3:D=W(L,4)-S(1):FOR I=1 TO 3:S(I)=S(I)+D:NEXT I
2560 FOR I=1 TO 3:IF W(L+I-1,4)<>S(I) THEN 2580
2570 NEXT I:P=P+S(4):RETURN
2580 NEXT L:RETURN
2590 ' --- SHUFFLE THE DECK ---
2600 FOR I=1 TO 52:I(I)=0:NEXT I:FOR I=1 TO 52
2610 J=INT(52*RND)+1:IF I(J)<>0 THEN 2610
2620 D(I,1)=J:D(I,3)=(J-1)\13+1:D(I,4)=J-D(I,3)*13+13
2630 Z=D(I,4):IF Z>10 THEN Z=10
2640 D(I,2)=Z:I(J)=1:NEXT I:RETURN
2650 ' --- CUT FOR DEAL ---
2660 COLOR 14:LOCATE 23,28:PRINT "PLEASE CUT FOR DEAL";:INPUT I
2670 IF I<1 OR I>52 THEN E=12:GOSUB 3280:GOTO 2660
2680 COLOR 11:I1=D(I,1):LOCATE 6,1:PRINT "YOUR CARD"
2690 CC$=C$(I1):RW=7:CL=2:GOSUB 3010
2700 J=INT(52*RND)+1:IF J=I THEN 2700
2710 COLOR 11:J1=D(J,1):LOCATE 13,2:PRINT "MY CARD"
2720 CC$=C$(J1):RW=14:CL=2:GOSUB 3010
2730 IF D(I,4)"" THEN IF ASC(C$)=27 THEN CHAIN "MENU"
3120 IF C$="6" AND RR<6 THEN RR=RR+1:GOTO 3160
3130 IF C$="4" AND RR>1 THEN RR=RR-1:GOTO 3160
3140 IF C$="5" THEN RETURN
3150 IF LEN(C$)=1 AND C$<>"6" AND C$<>"4" THEN E=17:GOSUB 3280
3160 LOCATE 9,RR*8+12
3170 COLOR 15:PRINT "þ":FOR J=1 TO 10:NEXT J:LOCATE 9,RR*8+12:COLOR 7:PRINT " ":GOTO 3100
3180 ' --- REMOVE DISCARDS ---
3190 LOCATE RW,CL:PRINT " "
3200 LOCATE ,CL:PRINT " "
3210 LOCATE ,CL:PRINT " "
3220 LOCATE ,CL:PRINT " "
3230 LOCATE ,CL:PRINT " ":RETURN
3240 ' --- PLAY HAND ---
3250 GOSUB 3100:IF RR=I4 OR RR=I3 THEN E=6:GOSUB 3280:C$="GO":RETURN
3260 C$=MID$(STR$(RR),2):RETURN
3270 A$=INKEY$:IF A$="" THEN 3270 ELSE CHAIN"MENU"
3280 LOCATE 1:PRINT:IF E=13 THEN FOR I=1 TO 1200:NEXT I
3290 COLOR 10:LOCATE 25:PRINT SPACE$(79);:LOCATE 25,20
3300 ON E GOTO 3310,3320,3330,3340,3350,3360,3370,3380,3390,3400,3410,3420,3480,3430,3440,3450,3460,3470
3310 PRINT " YOU DISCARDED THAT CARD ";:GOTO 3480
3320 PRINT " ALREADY PLAYED ";:GOTO 3480
3330 PRINT " THAT TOTALS MORE THAN 31 ";:GOTO 3480
3340 PRINT " YOU GET ONE POINT FOR LAST CARD ";:GOTO 3480
3350 PRINT " I GET ONE POINT FOR LAST CARD ";:GOTO 3480
3360 PRINT " - GO - ";:GOTO 3480
3370 PRINT " YOUR DISCARDS ";:GOTO 3480
3380 PRINT " PLAY THE HAND TO THE BOARD ";:GOTO 3480
3390 PRINT " INVALID PLAY ";:GOTO 3480
3400 PRINT " REALLY NOW ";:GOTO 3480
3410 PRINT " PRESS ANY KEY FOR THE NEXT DEAL ";:GOTO 3480
3420 PRINT " ENTER A NUMBER FROM 1 TO 52 ";:GOTO 3480
3430 PRINT USING " I WIN ### TO ###";S1,S2;:GOTO 3480
3440 PRINT USING " YOU WIN ### TO ###";S2,S1;:GOTO 3480
3450 PRINT " PLEASE PRESS THE NUM LOCK KEY ";:GOTO 3480
3460 PRINT "NUMERIC PAD: 4=LEFT 5=SELECT 6=RIGHT";:GOTO 3480
3470 PRINT "EXAMINE YOUR HAND, WHILE I LOOK AT MINE.";
3480 LOCATE 1:PRINT:COLOR 7:RETURN
3490 KEY OFF:WIDTH 80:LOCATE 6,1,0:COLOR 15
3500 PRINT " ÉÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍ»"
3510 PRINT " ÌÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎ͹"
3520 PRINT " º º º º"
3530 PRINT " º º ";:COLOR 11:PRINT " CRIBBAGE ";:COLOR 15:PRINT " º º"
3540 PRINT " º º º º"
3550 PRINT " º º COPYRIGHT (C) 1982 BY ENSIGN SOFTWARE º º"
3560 PRINT " º º º º"
3570 PRINT " º º";:COLOR 12:PRINT " 2312 N. COLE RD, SUITE E ";:COLOR 15:PRINT " º º"
3580 PRINT " º º";:COLOR 12:PRINT " BOISE, ID 83704 U.S.A. ";:COLOR 15:PRINT " º º"
3590 PRINT " º º";:COLOR 11:PRINT " DAY (208) 378-8086 EVE (208) 377-1938";:COLOR 15:PRINT " º º"
3600 PRINT " º º º º"
3610 PRINT " ÌÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎ͹"
3620 PRINT " ÈÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊͼ"
3625 DEF SEG=0:POKE &H417,PEEK(&H417) OR &H60
3630 SCREEN 0,0,0,0:RETURN
3640 DIM D(54,4),C$(52),I(52),W(5,4),M(6,4),Y(6,4),C(4,4)
3650 DIM D$(6),V(15,7),Q(11,6),R(4,5),S(4),J(52)
3660 FOR I=1 TO 15:FOR C=1 TO 7:READ V(I,C):NEXT C,I
3670 FOR I=1 TO 11:FOR C=1 TO 6:READ Q(I,C):NEXT C,I
3680 FOR I=1 TO 4:FOR C=1 TO 5:READ R(I,C):NEXT C,I
3690 FOR I=1 TO 4:READ S(I):NEXT I
3700 FOR I=1 TO 6:READ D$(I):NEXT I
3710 FOR I=1 TO 13:READ C$:C$(I)=C$+CHR$(6)
3720 C$(I+13)=C$+CHR$(4):C$(I+26)=C$+CHR$(3):C$(I+39)=C$+CHR$(5):NEXT I
3730 S1=0:S2=0:RETURN