Compucolor.org – Virtual Media

Listing of file='PONTON.BAS;01' on disk='vmedia/dukedom-sector.ccvf'

0 REM  ***************** PONTON.BAS;01 **********************
1 PLOT 12,14
2 PRINT TAB( 24)
3 PLOT 6,8:PRINT "  PONTOON  "
4 PLOT 15,6,2
5 CLEAR 2000
6 PRINT
7 INPUT "HOW MANY DECKS? ";DD
8 PRINT
9 PRINT "HANG IN THERE.....JUST READING THE DECKS INTO MEMORY.":PRINT
10 S= PEEK (33209):FOR I= 1TO S:SS= RND (1):NEXT I
20 DIM P(15,12),Q(15),T(8),S(7),B(15),R(15)
25 DIM C(52* DD),D(52* DD),V(52* DD),D$(52* DD)
30 DIM U$(4),C$(13)
40 DATA "h","d","c","s":FOR I= 1TO 4:READ U$(I):NEXT I
50 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
55 FOR I= 1TO 13:READ C$(I):NEXT I
60 FOR I= 0TO DD- 1
61 FOR J= 0TO 3
62 FOR K= 1TO 13
63 D$(52* I+ 13* J+ K)= C$(K)+ " "+ U$(J+ 1)
64 V(52* I+ 13* J+ K)= K
65 IF K> 10THEN V(52* I+ 13* J+ K)= 10
70 NEXT K,J,I
90 GOTO 1500
100 REM
110 IF C< (52* DD- 1)THEN 230
120 PRINT "SHUFFLING.........":PRINT
130 FOR D= DTO 1STEP - 1
140 C= C- 1
150 C(C)= D(D)
160 NEXT D
170 FOR C1= 52* DDTO CSTEP - 1
180 C2= INT (RND (1)* (C1- C+ 1))+ C
190 C3= C(C2)
200 C(C2)= C(C1)
210 C(C1)= C3
220 NEXT C1
230 X= C(C)
240 C= C+ 1
250 RETURN
300 REM
360 Q= 0
370 FOR Q2= 1TO R(I)
380 X= P(I,Q2)
390 GOSUB 500
400 NEXT Q2
410 Q(I)= Q
420 RETURN
500 REM
510 X1= V(X)
520 Q1= Q+ X1
525 IF Q= 21AND V(P(I,1))= 7AND V(P(I,2))= 7THEN GOSUB 5000
530 IF Q> = 11THEN 590
540 IF X1> 1THEN 570
550 Q= Q+ 11
560 RETURN
570 Q= Q1- 11* (Q1> = 11)
580 RETURN
590 Q= Q1- (Q< = 21AND Q1> 21)
600 IF Q< 33THEN 620
610 Q= - 1
620 RETURN
700 REM
710 REM
720 PRINT D$(X);"  ";
740 RETURN
750 REM
760 PRINT "  ";D$(X);"  ";
780 RETURN
800 REM
810 REM
820 H1= 5
830 GOSUB 1410
840 H1= 3
850 ON HGOTO 950,930
860 GOSUB 100
870 B(I)= B(I)* 2
880 PRINT " RECEIVED A  ";
890 GOSUB 700
900 GOSUB 1100
910 IF Q> 0THEN GOSUB 1300
920 RETURN
930 GOSUB 1320
940 RETURN
950 GOSUB 100
960 PRINT " RECEIVED A  ";
970 GOSUB 700
980 GOSUB 1100
990 IF Q< 0THEN 940
1000 PRINT "     HIT ";
1010 GOTO 830
1100 REM
1110 R(I)= R(I)+ 1
1120 P(I,R(I))= X
1130 Q= Q(I)
1140 GOSUB 500
1150 Q(I)= Q
1160 IF Q> = 0THEN 1190
1163 IF I= D1THEN 1175
1170 PRINT TAB( 32)"HAND";I;
1175 PRINT "   BUSTED"
1180 GOSUB 1200
1190 RETURN
1200 REM
1210 IF R(I)< > 0THEN 1230
1220 RETURN
1230 D= D+ 1
1240 D(D)= P(I,R(I))
1250 R(I)= R(I)- 1
1260 GOTO 1210
1300 REM
1310 PRINT
1320 AA= Q(I):GOSUB 3400
1325 PRINT TAB( 32)"HAND";I;" TOTAL=";AA
1326 IF AA< 21AND R(I)= 5THEN 4000
1330 RETURN
1400 REM
1410 REM
1420 INPUT H$:H$= LEFT$ (H$,1)
1430 FOR H= 1TO H1STEP 2
1440 IF H$= MID$ (I$,H,1)THEN 1480
1450 NEXT H
1460 PRINT "TYPE ";MID$ (I$,1,H1- 1);" OR ";MID$ (I$,H1,2);" PLEASE";
1470 GOTO 1420
1480 H= (H+ 1)/ 2
1490 RETURN
1500 REM
1510 REM
1520 REM
1530 I$= "H,S,D,/,"
1540 FOR I= 1TO 52* DD
1550 D(I)= I
1560 NEXT I
1590 D= 52* DD
1600 C= D+ 1
1640 PRINT :PRINT
1650 PRINT "BETS MAY BE AUTOMATICALLY SET AT $10 FOR EACH PLAYER"
1660 PRINT "OR EACH PLAYER MAY NOMINATE HIS BET BEFORE EACH HAND.":PRINT
1670 PRINT "BIDS ARE:-"
1680 PRINT "D......DOUBLING DOWN (ONLY VALID WITH TWO CARDS!)"
1685 PRINT "S......STANDING"
1690 PRINT "H......HIT ME WITH ANOTHER CARD"
1695 PRINT "/......SPLIT (ONLY VALID WITH TWO CARDS!)"
1700 PRINT
1710 PRINT "HOUSE LIMIT IS $500 BETS"
1720 PRINT
1755 PRINT
1757 PRINT "TO RETURN TO MENU ENTER A LETTER WHEN ASKED TO CONTINUE."
1758 PRINT :PRINT
1760 PRINT "NUMBER OF PLAYERS (UP TO 7)  ";
1770 INPUT N
1775 PRINT
1780 IF N< 1OR N> 7OR N> INT (N)THEN 1760
1785 INPUT "A UTO   OR  N OMINATED    BETTING? ";ZZ$
1786 IF ZZ$= "A"THEN FL= 1
1790 FOR I= 1TO 8:T(I)= 0:NEXT I
1800 D1= N+ 1
1805 PRINT :PRINT
1810 INPUT "PRESS ENTER TO CONTINUE........";EE$
1812 IF EE$< > "0"THEN LOAD "MENU":RUN
1813 PLOT 12
1814 NN= NN+ 1:PRINT TAB( 26)"DEAL NO.";NN:PRINT
1815 IF 2* D1+ C> = 52* DDTHEN GOSUB 120
1820 IF C= 2THEN C= C- 1
1830 FOR I= 1TO N:Z(I)= 0:NEXT I
1840 FOR I= 1TO 15:B(I)= 0:NEXT I
1850 FOR I= 1TO 15:Q(I)= 0:NEXT I
1860 FOR I= 1TO 7:S(I)= 0:NEXT I
1870 FOR I= 1TO 15:R(I)= 0:NEXT I
1881 PRINT :IF FL< > 1THEN 1885
1882 FOR I= 1TO N:B(I)= 10:NEXT I:GOTO 1940
1885 PRINT :PRINT "BETS....."
1890 FOR I= 1TO N:PRINT "#";I;
1891 INPUT Z(I)
1894 NEXT I
1895 PRINT
1900 FOR I= 1TO N
1910 IF Z(I)< = 0OR Z(I)> 500THEN 1880
1920 B(I)= Z(I)
1930 NEXT I
1940 PRINT "PLAYER:";
1950 FOR I= 1TO N
1960 PRINT I;"      ";
1970 NEXT I
1980 PRINT " DEALER"
1990 FOR J= 1TO 2
2000 PRINT TAB( 5);
2010 FOR I= 1TO D1
2020 GOSUB 100
2030 P(I,J)= X
2040 IF J= 1OR I< = NTHEN GOSUB 750
2050 NEXT I
2060 PRINT
2070 NEXT J
2080 FOR I= 1TO D1
2090 R(I)= 2
2100 NEXT I
2110 REM
2120 IF V(P(D1,1))> 1THEN 2240
2125 PRINT
2129 PRINT TAB( 10+ 7* N)
2130 PRINT "ANY INSURANCE?  ";
2140 INPUT H$
2150 IF LEFT$ (H$,1)< > "Y"THEN 2240
2155 IF FL= 1THEN FOR KK= 1TO N:Z(KK)= 5:NEXT KK:GOTO 2205
2160 PRINT "INSURANCE BETS"
2170 FOR I= 1TO N:PRINT "#";I;:INPUT Z(I):NEXT I
2180 FOR I= 1TO N
2190 IF Z(I)< 0OR Z(I)> B(I)/ 2THEN 2160
2200 NEXT I
2205 REM
2210 FOR I= 1TO N
2220 S(I)= Z(I)* (3* (- (V(P(D1,2))= 10))- 1)
2230 NEXT I
2240 REM
2250 L1= 1:L2= 1
2252 IF V(P(D1,1))= 1AND V(P(D1,2))= 10THEN L1= 0:L2= 0
2253 IF V(P(D1,2))= 1AND V(P(D1,1))= 10THEN L1= 0:L2= 0
2254 IF L1< > 0OR L2< > 0THEN 2320
2255 PRINT
2260 PRINT "DEALER HAS A "D$(P(D1,2));" IN THE HOLE FOR BLACKJACK"
2275 PRINT
2280 FOR I= 1TO D1
2290 GOSUB 300
2300 NEXT I
2310 GOTO 3140
2320 REM
2330 IF V(P(D1,1))> 1AND V(P(D1,1))< 10THEN 2350
2340 PRINT TAB( 10+ 7* N)
2345 PRINT "NO DEALER BLACKJACK."
2350 PRINT "BIDS:"
2360 FOR I= 1TO N
2370 PRINT "PLAYER";I;
2380 H1= 7
2390 GOSUB 1410
2400 ON HGOTO 2550,2410,2510,2600
2410 REM
2420 GOSUB 300
2430 IF Q(I)< > 21THEN 2485
2440 PRINT TAB( 32)"HAND";I;" -BLACKJACK-"
2450 S(I)= S(I)+ 1.5* B(I)
2460 B(I)= 0
2470 GOSUB 1200
2480 GOTO 2900
2485 REM
2490 GOSUB 1320
2500 GOTO 2900
2510 REM
2520 GOSUB 300
2530 GOSUB 860
2540 GOTO 2900
2550 REM
2560 GOSUB 300
2570 H1= 3
2580 GOSUB 950
2590 GOTO 2900
2600 REM
2601 L1= P(I,1):L2= P(I,2)
2602 X$= LEFT$ (D$(L1),2):Y$= LEFT$ (D$(L2),2)
2603 IF X$< > Y$THEN PRINT "YOU CAN'T SPLIT THOSE!":GOTO 2370
2604 L1= V(L1):L2= V(L2)
2640 REM
2650 I1= I+ D1
2660 R(I1)= 2
2670 P(I1,1)= P(I,2)
2680 B(I+ D1)= B(I)
2690 GOSUB 100
2700 PRINT "FIRST HAND RECEIVES A ";
2710 GOSUB 700
2720 P(I,2)= X
2730 GOSUB 300
2740 PRINT
2750 GOSUB 100
2760 PRINT "SECOND HAND RECEIVES A ";
2770 I= I1
2780 GOSUB 700
2790 P(I,2)= X
2800 GOSUB 300
2810 PRINT
2820 I= I1- D1
2830 IF LEFT$ (D$(P(I,1)),2)= " A"THEN 2900
2840 REM
2850 PRINT "HAND"1- (I> D1);
2860 GOSUB 800
2870 I= I+ D1
2880 IF I= I1THEN 2850
2890 I= I1- D1
2900 NEXT I
2910 GOSUB 300
2920 REM
2930 FOR I= 1TO N
2940 IF R(I)> 0OR R(I+ D1)> 0THEN 3005
2950 NEXT I
2955 PRINT
2960 PRINT "DEALER HAD A ";
2970 X= P(D1,2)
2980 GOSUB 700
2990 PRINT " CONCEALED."
2995 PRINT
3000 GOTO 3140
3005 PRINT
3010 PRINT "DEALER HAS A ";D$(P(D1,2));" CONCEALED ";
3020 I= D1
3030 AA= Q(I):GOSUB 3400
3035 PRINT "FOR A TOTAL OF";AA
3040 IF AA> 16THEN 3130
3050 PRINT "DRAWS ";
3060 GOSUB 100
3070 GOSUB 750
3080 GOSUB 1100
3090 AA= Q:GOSUB 3400
3095 IF Q> 0AND AA< 17THEN 3060
3100 Q(I)= Q- (Q< 0)/ 2
3110 IF Q< 0THEN 3140
3120 AA= Q:GOSUB 3400
3125 PRINT "---TOTAL IS:";AA
3130 PRINT
3140 REM
3150 REM
3160 Z$= "LOSES PUSHESWINS  "
3170 FOR I= 1TO N
3180 AA= Q(I):GOSUB 3400
3182 AB= Q(I+ D1):GOSUB 3410
3184 AC= Q(D1):GOSUB 3420
3186 S(I)= S(I)+ B(I)* SGN (AA- AC)+ B(I+ D1)* SGN (AB- AC)
3188 B(I+ D1)= 0
3200 PRINT "PLAYER";I;
3205 PRINT "   ";
3210 PRINT MID$ (Z$,SGN (S(I))* 6+ 7,6);" ";
3220 IF S(I)< > 0THEN 3250
3230 PRINT "     ";
3240 GOTO 3260
3250 PRINT ABS (S(I));
3260 T(I)= T(I)+ S(I)
3270 PRINT TAB( 32)"TOTAL=";T(I)
3280 GOSUB 1200
3290 T(D1)= T(D1)- S(I)
3300 I= I+ D1
3310 GOSUB 1200
3320 I= I- D1
3330 NEXT I
3335 PRINT
3340 PRINT "DEALER'S TOTAL=";T(D1)
3345 PRINT
3350 GOSUB 1200
3360 GOTO 1810
3400 AA= AA+ 11* (AA> = 22):RETURN
3410 AB= AB+ 11* (AB> = 22):RETURN
3420 AC= AC+ 11* (AC> = 22):RETURN
3500 END
4000 REM  FIVE UNDER
4010 PRINT TAB( 32)
4015 PRINT "FIVE UNDER 21!!"
4020 S(I)= S(I)+ 2* B(I)
4030 B(I)= 0
4040 RETURN
4100 END
5000 REM  THREE SEVENS
5005 PRINT TAB( 32)
5010 PRINT "THREE SEVENS!!!!!"
5020 S(I)= S(I)+ 3* B(I)
5030 B(I)= 0
5040 GOSUB 1200
5050 GOTO 2900
5100 END