File BLKJAK.30 (OMSI 30 basic source file)

Directory of image this file is from
This file as a plain text file

100 PRINT "THIS DEMONSTRATION SHOWS THE VERSATILITY OF DEC	S"
101 PRINT "PDP-8 COMPUTER BY SIMULATING A GAME OF BLACKJACK."
102 PRINT "THE COMPUTER IS THE DEALER AND GETS A BREAK AT 2516(?)"
103 PRINT "HOURS.    WHAT TIME IS IT NOW";
140 LET K=0
150 LET W1=0
160 INPUT N
170 FOR I = 1TO N/2
180 LET X=T(10*RND(X))
190 NEXT I
200 DIM D(52)
210 FOR A=1 TO 52
220 LET D(A) = 0
230 NEXT A
240 DIM Q(52)
250 FOR A=0 TO 39 STEP 13
260 FOR C=1 TO 13
270 LET Q(A+C)=C
280 NEXT C
290 NEXT A
300 PRINT 
310 LET K=K+1
320 FOR P=1 TO 5
330 LET E(P)=0
340 LET V(P) = 0
350 LET T(P)=0
360 NEXT P
370 LET V(3)=1
380 PRINT 
390 PRINT "WAGER";
400 LET P=1
410 INPUT W
420 LET W(2)=W
430 IF W<=0 THEN 2470
440 IF W<=500 THEN 470
450 PRINT "THAT	S TOO MUCH - HOUSE LIMIT IS $500."
460 GOTO 390
470 PRINT 
480 PRINT "I SHOW           ",
490 GOSUB 1390
500 IF E(1)=0 THEN 520
510 LET V(4)=1
520 LET V(5)=1
530 GOSUB 1390
540 LET M=X
550 LET P=2
560 PRINT "FIRST CARD IS",
570 GOSUB 1390
580 LET G=X
590 PRINT "NEXT  CARD IS",
600 GOSUB 1390
610 IF V(2)>0 THEN 870
620 LET S=X
630 IF V(3)<>1 THEN 870
640 IF T(P)<>21 THEN 710
650 PRINT "***BLACKJACK***"
660 PRINT "MY HOLE CARD WAS ",
670 LET X=M
680 GOSUB 1730
690 LET W1=W1+1.5*W
700 GOTO 2250
710 IF V(4)=0 THEN 810
720 PRINT "INSURANCE ANYONE? (TYPE 1 OR 0)";
730 INPUT I
740 IF I=0 THEN 810
750 IF T(1)<>21 THEN 790
760 LET W1=W1+W
770 PRINT "YOU WIN $";W;" ON YOUR INSURANCE BET";
780 GOTO 810
790 LET W1=W1-W/2
800 PRINT "YOU LOST $";W/2;
801 PRINT " ON YOUR INSURANCE BET - I DON	T HAVE BLACKJACK!"
810 IF T(1)<>21 THEN 870
820 PRINT "**I HAVE BLACKJACK**"
830 PRINT "MY HOLE CARD IS ",
840 LET X=M
850 GOSUB 1730
860 GOTO 2230
870 IF T(P)<=21 THEN 950
880 IF E(P)>0 THEN 930
890 PRINT "YOU BUSTED, ";
900 PRINT "YOUR TOTAL IS ";T(P)
910 IF V(2)=1 THEN 1200
920 GOTO 2030
930 LET E(P)=E(P)-1
940 LET T(P)=T(P)-10
950 IF V(1)=2 THEN 900
960 LET V(3)=V(3)+1
970 PRINT "HIT";
980 INPUT V(1)
990 IF V(1)<>3 THEN 1310
1000 IF V(2)>0 THEN 1290
1010 IF V(3)<>2 THEN 1290
1020 IF Q(G)=Q(S) THEN 1050
1030 PRINT "NOW IS THAT A PAIR?"
1040 GOTO 970
1050 LET V(2)=1
1060 IF Q(G)<>1 THEN 1080
1070 LET V(1)=2
1080 LET P=3
1090 PRINT "       PLAY HAND ONE NOW"
1100 PRINT "FIRST CARD IS",
1110 LET W(3)=W
1120 LET X=G
1130 GOSUB 1150
1140 GOTO 590
1150 GOSUB 1630
1160 GOSUB 1730
1170 LET V(3)=1
1180 LET T(P)=C
1190 RETURN
1200 LET P=2
1210 LET V(2)=2
1220 PRINT "       PLAY HAND TWO NOW"
1230 PRINT "FIRST CARD IS",
1240 LET X=S
1250 GOSUB 1150
1260 IF Q(G)=1 THEN 1280
1270 LET V(1)=0
1280 GOTO 590
1290 PRINT "NO SPLITS NOW -- TRY AGAIN"
1300 GOTO 970
1310 IF V(1)<>2 THEN 1360
1320 IF V(3)=2 THEN 1350
1330 PRINT "TOO LATE TO DOUBLE, CHARLIE."
1340 GOTO 970
1350 LET W(P)=2*W(P)
1360 IF V(1)>0 THEN 590
1370 GOTO 900
1380 REM DEAL
1390 GOSUB 1460
1400 LET T(P)=T(P)+C
1410 IF V(5)=0 THEN 1440
1420 LET V(5)=0
1430 RETURN
1440 GOSUB 1730
1450 RETURN
1460 LET N=10 *(1+ABS(COS(N+W1)))
1470 FOR A=1 TON
1480 LET X=INT(52.9999999*RND(Y))
1490 IF X=0 THEN 1480
1500 NEXT A
1510 IF D(X)=0 THEN 1610
1520 LET R=R+1
1530 IF R<50 THEN 1460
1540 FOR A=1 TO 52
1550 IF D(A)=K THEN 1570
1560 LET D(A)=0
1570 NEXT A
1580 LET R=0
1590 PRINT "I RESHUFFLED"
1600 GOTO 1460
1610 LET R=0
1620 LET D(X)=K
1630 IF Q(X)<>1 THEN 1670
1640 LET C=11
1650 LET E(P)=E(P)+1
1660 RETURN
1670IF Q(X)>10 THEN 1700
1680 LET C=Q(X)
1690 RETURN
1700 LET C=10
1710 RETURN
1720 REM PRINT CARD
1730 GOSUB 1760
1740 GOSUB 1910
1750 RETURN
1760 IF Q(X)<>1 THEN 1790
1770 PRINT " ACE ";
1780 RETURN
1790 IF Q(X)>10 THEN 1820
1800 PRINT Q(X);
1810 RETURN
1820 IF Q(X)>11 THEN 1850
1830 PRINT " JACK ";
1840 RETURN
1850 IF Q(X)>12 THEN 1880
1860 PRINT " QUEEN ";
1870 RETURN
1880 PRINT " KING ";
1890 RETURN
1900 REM PRINT SUIT
1910 IF X>39 THEN 1960
1920 IF X>26 THEN 1980
1930 IF X>13 THEN 2000
1940 PRINT "OF SPADES"
1950 RETURN
1960 PRINT "OF CLUBS"
1970 RETURN
1980 PRINT "OF HEARTS"
1990 RETURN
2000 PRINT "OF DIAMONDS"
2010 RETURN
2020 REM DEALER PLAYS
2030 LET P=2
2040 PRINT "MY HOLE CARD IS  ",
2050 LET X=M
2060 GOSUB 1730
2070 IF T(2)<22 THEN 2100
2080 IF V(2)=0 THEN 2230
2090 IF T(3)>21 THEN 2230
2100 LET P=1
2110 IF T(1)<17 THEN 2300
2120 IF T(1)>17 THEN 2140
2130 IF E(1)>0 THEN 2300
2140 IF T(1)>21 THEN 2330
2150 LET P=2
2160 PRINT "MY TOTAL IS ";T(1)
2170 IF T(P)>21 THEN 2230
2180 IF T(1)>21 THEN 2210
2190 IF T(1)>T(P) THEN 2230
2200 IF T(1)=(P) THEN 2240
2210 LET W1=W1+W(P)
2220 GOTO 2240
2230 LET W1=W1-W(P)
2240 IF V(2)>0 THEN 2270
2250 GOSUB 2390
2260 GOTO 310
2270 LET P=3
2280 LET V(2)=0
2290 GOTO 2170
2300 PRINT "I DRAW           ",
2310 GOSUB 1390
2320 GOTO 2100
2330 IF E(1)= 0 THEN 2370
2340 LET E(1) = E(1) -1
2350 LET T(1)=T(1)-10
2360 GOTO 2100
2370 PRINT "I BUSTED***";
2380 GOTO 2150
2390 IF W1<0 THEN 2430
2400 IF W1=0 THEN 2450
2410 PRINT"YOU	RE AHEAD $";W1
2420 RETURN
2430 PRINT "YOU	RE BEHIND $";-W1
2440 RETURN
2450 PRINT "YOU	RE EVEN"
2460 RETURN
2465 PRINT "THANK YOU FOR PLAYING!!   "
2470 PRINT\PRINT\PRINT
2480 CHAIN "DEMON "
2490 END
AA?M73>R8AW(LJHAUMCRPB



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search