1 'OSPOKER.BAS MBASIC 5.2 CP/M ver. POKER for OSBORNE-1. 2 'DOWNLOADED 07/82 FROM RCPM OF BRIAN KANTOR IN SAN DIEGO CA. 3 'OSBORNIZED BY TOM MCCORMICK 07/82 TO 52 CHAR SCREEN, RND 4 'PROMPT, OS-1 CLEAR SCREEN, AND LESS VERTICAL SPACING. 5 'WARNING: COMPUTER CONTINUES TO PLAY LIGHT!! 6 GOTO 10 7 SAVE "OSPOKER.BAS",A:STOP 10 DIM A(20),B(10) 20 DEF FNA(X) = INT(10*RND(1)) 30 DEF FNB(X) = X-100*INT(X/100) 34 '*** The following stmt is the only hdwe depen one. *** 35 WIDTH 52: CLS$=CHR$(26): PRINT CLS$ 'CLR OS-1 SCREEN 38 PRINT "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 40 PRINT "=-=-= WELCOME TO THE DRAW POKER CASINO. =-=-=" 42 PRINT "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 43 PRINT 45 PRINT " WE EACH HAVE $500. THE ANTE IS $5." 50 PRINT " I WILL OPEN THE BETTING BEFORE THE DRAW." 55 PRINT " YOU BET AFTER THE DRAW." 56 PRINT " THERE IS NO BETTING LIMIT." 57 PRINT " WE MAY DRAW UP TO THREE CARDS." 60 PRINT " BET 0 TO FOLD. BET .5 TO CHECK." 62 PRINT:PRINT:PRINT 64 PRINT "To randomize the game, please enter the minutes" 65 PRINT "and seconds past the hour as a 4-digit number...." 67 PRINT: RANDOMIZE: PRINT 80 PRINT 90 O = 1 100 C = 500 'BANKROLL FOR COMPUTER 110 S = 500 'BANKROLL FOR HUMAN (PREVIOUSLY "SUCKER".) 120 P = 0 140 PRINT 150 IF C < = 5 THEN 3530 160 PRINT "THE ANTE IS $5. I WILL DEAL NOW ....." 170 PRINT 180 IF S > 5 THEN 200 190 GOSUB 3830 200 P = P+10 210 S = S-5 220 C = C-5 230 FOR Z = 1 TO 10 240 GOSUB 1740 250 NEXT Z 251 FOR I=1 TO 1000: NEXT I: PRINT CLS$ 260 PRINT "YOUR HAND:" 270 N = 1 280 GOSUB 1850 290 N = 6 300 I = 2 310 GOSUB 2170 320 'PRINT 330 IF I < > 6 THEN 470 340 IF FNA(0) < = 7 THEN 370 350 X = 11100 360 GOTO 420 370 IF FNA(0) > = 7 THEN 400 380 X = 11110 390 GOTO 420 400 IF FNA(0) > = 1 THEN 450 410 X = 11111 420 I = 7 430 Z = 23 440 GOTO 580 450 Z = 1 460 GOTO 510 470 IF U > = 13 THEN 540 480 IF FNA(0) > = 2 THEN 500 490 GOTO 420 500 Z = 0 510 K = 0 520 PRINT "I CHECK" 530 GOTO 620 540 IF U < = 16 THEN 570 550 Z = 2 560 IF FNA(0) > = 1 THEN 580 570 Z = 35 580 V = Z+FNA(0) 590 GOSUB 3480 600 PRINT "I'LL OPEN WITH $";V;" "; 610 K = V 620 GOSUB 3050 630 GOSUB 650 640 GOTO 830 650 IF I < > 3 THEN 760 660 PRINT 670 PRINT "I WIN" 680 C = C+P 690 PRINT "NOW I HAVE $";C;"AND YOU HAVE $";S 700 PRINT "DO YOU WISH TO CONTINUE (Y-N)"; 710 INPUT H$ 720 IF H$ = "Y" THEN 120 725 IF H$ = "y" THEN 120 730 IF H$ = "N" THEN 4090 735 IF H$ = "n" THEN 4090 740 PRINT "I BEG YOUR PARDON." 742 PRINT "THE QUESTION REQUIRES A Y OR N ANSWER." 750 GOTO 700 760 IF I < > 4 THEN 810 770 PRINT 780 PRINT "YOU WIN" 790 S = S+P 800 GOTO 690 810 RETURN 830 PRINT "NOW WE DRAW -- HOW MANY CARDS DO YOU WANT"; 840 INPUT T 850 IF T = 0 THEN 980 860 Z = 10 870 IF T < 4 THEN 900 880 PRINT "THERE IS A 3 CARD DRAW LIMIT." 890 GOTO 840 900 PRINT "WHAT ARE THEIR NUMBERS? ENTER THEM SEPARATELY." 910 FOR Q = 1 TO T 920 INPUT U 'Number of the card you want to replace. 930 GOSUB 1730 940 NEXT Q 942 PRINT:PRINT 943 INPUT " --> PRESS RETURN WHEN YOU ARE FINISHED READING.";Z$ 947 PRINT CLS$ 950 PRINT "YOUR NEW HAND:" 960 N = 1 970 GOSUB 1850 980 Z = 10+T 990 FOR U = 6 TO 10 1000 IF INT(X/10^(U-6)) < > 10*INT(X/10^(U-5)) THEN 1020 1010 GOSUB 1730 1020 NEXT U 1030 PRINT 1040 PRINT "I AM TAKING";Z-10-T;"CARD. "; 1050 IF Z = 11+T THEN 1090 1060 PRINT "'S" 1070 PRINT 1080 GOTO 1100 1090 PRINT 1100 N = 6 1110 V = I 1120 I = 1 1130 GOSUB 2170 1140 B = U 1150 M = D 1160 IF V < > 7 THEN 1190 1170 Z = 28 1180 GOTO 1330 1190 IF I < > 6 THEN 1220 1200 Z = 1 1210 GOTO 1330 1220 IF U > 13 THEN 1270 1230 Z = 2 1240 IF FNA(0) < > 6 THEN 1260 1250 Z = 19 1260 GOTO 1330 1270 IF U > = 16 THEN 1320 1280 Z = 19 1290 IF FNA(0) < > 8 THEN 1310 1300 Z = 11 1310 GOTO 1330 1320 Z = 2 1330 K = 0 1340 GOSUB 3050 1350 IF T < > .5 THEN 1450 1360 IF V = 7 THEN 1400 1370 IF I < > 6 THEN 1400 1380 PRINT "I'LL CHECK" 1390 GOTO 1460 1400 V = Z+FNA(0) 1410 GOSUB 3480 1420 PRINT "I'LL BET $";V 1430 K = V 1440 GOSUB 3060 1450 GOSUB 650 1455 'INPUT " --> PRESS RETURN WHEN YOU ARE FINISHED READING.";Z$ 1460 'PRINT CLS$ 1470 PRINT "NOW WE COMPARE HANDS" 1480 J$ = H$ 1490 K$ = I$ 1500 PRINT "MY HAND:" 1510 N = 6 1520 GOSUB 1850 1530 N = 1 1540 GOSUB 2170 1550 PRINT 1560 PRINT "YOU HAVE "; 1570 K = D 1580 GOSUB 3690 1590 H$ = J$ 1600 I$ = K$ 1610 K = M 1620 PRINT "AND I HAVE "; 1630 GOSUB 3690 1640 IF B > U THEN 670 1650 IF U > B THEN 780 1660 IF H$ = "A FLUSH" THEN 1700 1670 PRINT "THE HAND IS A DRAW" 1680 PRINT "ALL $";P;" REMAIN IN THE POT" 1690 GOTO 140 1700 IF FNB(M) > FNB(D) THEN 670 1710 IF FNB(D) > FNB(M) THEN 780 1720 GOTO 1670 1730 Z = Z+1 1740 A(Z) = 100*INT(RND(1)*3.999)+INT(12.999*RND(1)) 1770 FOR K = 1 TO Z-1 1771 IF K = Z THEN 1790 1780 IF A(Z) = A(K) THEN 1740 1790 NEXT K 1800 IF Z < = 10 THEN 1840 1810 N = A(U) 1820 A(U) = A(Z) 1830 A(Z) = N 1840 RETURN 1850 FOR Z = N TO N+4 'LIST HANDS RTN 1860 PRINT Z"-- "; 1870 GOSUB 1950 1880 PRINT " OF"; 1890 GOSUB 2070 1900 IF Z/2 < > INT(Z/2) THEN 1920 1920 NEXT Z 1930 PRINT 'This is blank line following hand display 1940 RETURN 1950 K = FNB(A(Z)) 1960 IF K < > 9 THEN 1980 1970 PRINT "JACK"; 1980 IF K < > 10 THEN 2000 1990 PRINT "QUEEN"; 2000 IF K < > 11 THEN 2020 2010 PRINT "KING"; 2020 IF K < > 12 THEN 2040 2030 PRINT "ACE"; 2040 IF K > = 9 THEN 2060 2050 PRINT K+2; 2060 RETURN 2070 K = INT(A(Z)/100) 2080 IF K < > 0 THEN 2100 2090 PRINT " CLUBS"', TRYING TO GET I-UP LISTING <-- 2100 IF K < > 1 THEN 2120 2110 PRINT " DIAMONDS"', 2120 IF K < > 2 THEN 2140 2130 PRINT " HEARTS"', 2140 IF K < > 3 THEN 2160 2150 PRINT " SPADES"', 2160 RETURN 2170 U = 0 2180 FOR Z = N TO N+4 2190 B(Z) = FNB(A(Z)) 2200 IF Z = N+4 THEN 2230 2210 IF INT(A(Z)/100) < > INT(A(Z+1)/100) THEN 2230 2220 U = U+1 2230 NEXT Z 2240 IF U < > 4 THEN 2310 2250 X = 11111 2260 D = A(N) 2270 H$ = "A FLUS" 2280 I$ = "H IN" 2290 U = 15 2300 RETURN 2310 FOR Z = N TO N+3 2320 FOR K = Z+1 TO N+4 2330 IF B(Z) < = B(K) THEN 2390 2340 X = A(Z) 2350 A(Z) = A(K) 2360 B(Z) = B(K) 2370 A(K) = X 2380 B(K) = A(K)-100*INT(A(K)/100) 2390 NEXT K 2400 NEXT Z 2410 X = 0 2420 FOR Z = N TO N+3 2430 IF B(Z) < > B(Z+1) THEN 2470 2440 X = X+11*10^(Z-N) 2450 D = A(Z) 2460 GOSUB 2760 2470 NEXT Z 2480 IF X < > 0 THEN 2620 2490 IF B(N)+3 < > B(N+3) THEN 2520 2500 X = 1111 2510 U = 10 2520 IF B(N+1)+3 < > B(N+4) THEN 2620 2530 IF U < > 10 THEN 2600 2540 U = 14 2550 H$ = "STRAIG" 2560 I$ = "HT, " 2570 X = 11111 2580 D = A(N+4) 2590 RETURN 2600 U = 10 2610 X = 11110 2620 IF U > = 10 THEN 2690 2630 D = A(N+4) 2640 H$ = "SCHMAL" 2650 I$ = "TZ, " 2660 U = 9 2670 X = 11000 2680 GOTO 2740 2690 IF U < > 10 THEN 2720 2700 IF I = 1 THEN 2740 2710 GOTO 2750 2720 IF U > 12 THEN 2750 2730 IF FNB(D) > 6 THEN 2750 2740 I = 6 2750 RETURN 2760 IF U > = 11 THEN 2810 2770 U = 11 2780 H$ = "A PAIR" 2790 I$ = " OF " 2800 RETURN 2810 IF U < > 11 THEN 2910 2820 IF B(Z) < > B(Z-1) THEN 2870 2830 H$ = "THREE" 2840 I$ = " " 2850 U = 13 2860 RETURN 2870 H$ = "TWO P" 2880 I$ = "AIR, " 2890 U = 12 2900 RETURN 2910 IF U < > 12 THEN 2960 2920 U = 16 2930 H$ = "FULL H" 2940 I$ = "OUSE, " 2950 RETURN 2960 IF B(Z) < > B(Z-1) THEN 3010 2970 U = 17 2980 H$ = "FOUR" 2990 I$ = " " 3000 RETURN 3010 U = 16 3020 H$ = "FULL H" 3030 I$ = "OUSE, " 3040 RETURN 3050 G = 0 3060 PRINT " WHAT IS YOUR BET"; 3070 INPUT T 3080 IF T-INT(T) = 0 THEN 3140 3090 IF K < > 0 THEN 3120 3100 IF G < > 0 THEN 3120 3110 IF T = .5 THEN 3410 3120 PRINT "NO SMALL CHANGE, PLEASE" 3130 GOTO 3060 3140 IF S-G-T > O THEN 3170 3150 GOSUB 3830 3160 GOTO 3060 3170 IF T < > 0 THEN 3200 3180 I = 3 3190 GOTO 3380 3200 IF G+T > = K THEN 3230 3210 PRINT " IF YOU CAN'T SEE MY BET, THEN FOLD" 3220 GOTO 3060 3230 G = G+T 3240 IF G = K THEN 3380 3250 IF Z < > 1 THEN 3420 3260 IF G > 5 THEN 3300 3270 IF Z > = 2 THEN 3350 3280 V = 5 3290 GOTO 3420 3300 IF Z = 1 THEN 3320 3310 IF T < = 25 THEN 3350 3320 I = 4 3330 PRINT "I FOLD" 3340 RETURN 3350 IF Z = 2 THEN 3430 3360 PRINT "I'LL SEE YOU" 3370 K = G 3380 S = S-G 3390 C = C-K 3400 P = P+G+K 3410 RETURN 3420 IF G > 3*Z THEN 3350 3430 V = G-K+FNA(1) 3440 GOSUB 3480 3450 PRINT "I'LL SEE YOU,.. AND RAISE YOU $";V 3460 K = G+V 3470 GOTO 3060 3480 IF C-G-V > = 0 THEN 3660 3490 IF G < > 0 THEN 3520 3500 V = C 3510 RETURN 3520 IF C-G > = 0 THEN 3360 3530 IF O/2 < > INT(O/2) THEN 3600 3540 PRINT "WOULD YOU LIKE TO BUY BACK YOUR WATCH FOR $50"; 3550 INPUT J$ 3560 IF J$ = "NO" THEN 3600 3570 C = C+50 3580 O = O/2 3590 RETURN 3599 '/////// Next stmt is not sufficient test for busted computer! \\\\ 3600 IF O/3 < > INT(O/3) THEN 3670 'IS COMPUTER BUSTED??????? 3610 PRINT "WOULD YOU LIKE TO BUY BACK YOUR TIE TACK FOR $50"; 3620 INPUT J$ 3630 IF J$ = "NO" THEN 3670 3640 C = C+50 3650 O = O/3 3660 RETURN 3669 '///// Next stmt needs activation \\\\\ 3670 PRINT "I'M BUSTED. CONGRATULATIONS" 3680 PRINT 3690 PRINT H$;I$; 3700 IF H$ < > "A FLUS" THEN 3750 3710 K = INT(K/100) 3720 GOSUB 2080 3730 'PRINT "*** 3730 *****************" 3740 RETURN 3750 K = FNB(K) 3760 GOSUB 1960 3770 IF H$ = "SCHMAL" THEN 3790 3780 IF H$ < > "STRAIG" THEN 3810 3790 PRINT " HIGH" 3800 RETURN 3810 PRINT "'S" 3820 RETURN 3830 PRINT "*** 3830 *******************" 3840 PRINT "YOU CAN'T BET WHAT YOU HAVEN'T GOT" 3850 IF O/2 = INT(O/2) THEN 3970 3860 PRINT "WOULD YOU LIKE TO SELL YOUR WATCH (Y-N)"; 3870 INPUT J$ 3880 IF J$ = "N" THEN 3970 3881 IF J$ = "n" THEN 3970 3890 IF FNA(1) > = 7 THEN 3930 3900 PRINT "I'LL GIVE YOU $75 FOR IT" 3910 S = S+75 3920 GOTO 3950 3930 PRINT "THAT'S A PRETTY CRUMMY WATCH, I'LL GIVE YOU $25. " 3940 S = S+25 3950 O = O*2 3960 RETURN 3970 IF O/3 = INT(O/3) THEN 4090 3980 PRINT "WILL YOU PART WITH THAT DIAMOND TIE TACK (Y-N)"; 3990 INPUT J$ 4000 IF J$ = "N" THEN 4080 4001 IF J$ = "n" THEN 4080 4010 IF FNA(1) > = 6 THEN 4050 4020 PRINT "YOU ARE NOW $100 RICHER. " 4030 S = S+100 4040 GOTO 4070 4050 PRINT "IT'S PASTE, $25. " 4060 S = S+25 4070 LET O = O*3 4080 RETURN 4090 PRINT "I CERTAINLY ENJOYED THE GAME. COME AGAIN." 4100 FOR I=1 TO 1000: NEXT I 4140 END 070 LET O = O*3 4080 RETURN 4090 PRINT "I CERTAINLY ENJOYED THE GAME. COME AGAIN." 4100 FOR I=1 TO 1000: NEXT I