home *** CD-ROM | disk | FTP | other *** search
- 10 ' *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
- 20 ' *+ +*
- 30 ' *+ Graphics Games for the Osborne I Computer +*
- 40 ' *+ Courtesy of Kelly Smith, CP/M-Net +*
- 50 ' *+ (805) 527-9321 +*
- 60 ' *+ and +*
- 70 ' *+ Wizard of OsZ, (213) 341-9399 +*
- 80 ' *+ +*
- 90 ' *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
- 100 '
- 110 ' Wizard of OsZ, P.O. Box 964, Chatsworth, CA 91311 (213) 341-9399
- 120 '
- 130 ' ---------------- Osborne I Terminal Commands -------------------
- 140 '
- 150 '
- 160 E$=CHR$(27): ' Escape Character
- 170 CLS$=CHR$(26): ' Clear Screen
- 180 DC$=E$+"=": ' Direct Cursor Addressing
- 190 GY$=E$+"g": ' Graphics On
- 200 GN$=E$+"G": ' Graphics Off
- 210 HO$=E$+CHR$(1): ' Cursor Home
- 220 EP$=E$+"T": ' Erase to End of Line
- 230 DY$=E$+")": ' DIM Display On
- 240 DN$=E$+"(": ' DIM Display Off
- 250 UY$=E$+"l": ' Start Underlining
- 260 UN$=E$+"m": ' End Underlining
- 270 'NOTE: The Osborne I uses the following scheme for direct cursor addressing:
- 280 ' Location= (CHR$(Line number+32));(CHR$(Column number+32))
- 290 PRINT CLS$
- 300 PRINT" The Wizard of OsZ - 'Black-Jack'"
- 310 PRINT
- 320 PRINT:PRINT"Do you require instructions (Y or N) ?";
- 330 A$=INKEY$:IF LEN(A$)=0 THEN GOTO 330 ' get keyboard input
- 340 IF A$="N" OR A$="n" THEN PRINT CLS$:GOTO 430
- 350 PRINT CLS$;UY$;" The Wizard of OsZ Casino house limit is $10,000 ";UN$;:PRINT
- 360 PRINT:PRINT "Your choices to the question HIT are as follows:":PRINT
- 370 PRINT "0 <-- NO HIT";DY$;" on this hand";DN$
- 380 PRINT "1 <-- HIT";DY$;" on this hand";DN$
- 390 PRINT "2 <-- DOUBLE BET";DY$;" after seeing cards 1 and 2 and HIT";DN$
- 400 PRINT "3 <-- SPLIT";DY$;" the hand, for two pairs";DN$
- 410 PRINT:PRINT "To stop the game, enter a ";UY$;"0";UN$;" for your wager.":PRINT
- 420 DIM W[10]
- 430 K=K1=W1=C2=0
- 440 NB$=STRING$(6,127)
- 450 MD$=STRING$(1,127)+STRING$(4,32)+STRING$(1,127)
- 460 DIM Q[52]:DIM D[52]
- 470 PRINT:PRINT TAB(15);"Press any key to begin play...";
- 480 IF INKEY$="" THEN RS=RS+1:GOTO 480
- 490 RANDOMIZE RS
- 500 PRINT CLS$
- 510 FOR I=1 TO N/2
- 520 X=INT(RND*100):IF X>51 THEN GOTO 520
- 530 NEXT I
- 540 FOR A=1 TO 52
- 550 D[A]=0
- 560 NEXT A
- 570 FOR A=0 TO 39 STEP 13
- 580 FOR C=1 TO 13
- 590 Q[A+C]=C
- 600 NEXT C
- 610 NEXT A
- 620 PRINT
- 630 K=K+1
- 640 FOR P=1 TO 5
- 650 E[P]=0
- 660 V[P]=0
- 670 T[P]=0
- 680 NEXT P
- 690 V[3]=1
- 700 ' ask for wager entry, clearing any overflow digits from screen
- 710 PRINT DC$+CHR$(53)+CHR$(32);"Enter your wager";EP$
- 720 PRINT DC$+CHR$(53)+CHR$(48); ' reposition for new wager entry
- 730 P=1
- 740 INPUT W2
- 750 PRINT
- 760 W[2]=W2
- 770 IF W2<=0 THEN GOTO 3490
- 780 IF W2<=10000 THEN GOTO 840
- 790 FOR I = 1 TO 50
- 800 PRINT DC$+CHR$(1)+CHR$(34);"That's too much...the casino limit is $10,000!";
- 810 FOR X=1 TO 20:NEXT X:PRINT DC$+CHR$(1)+CHR$(32);EP$
- 820 NEXT I
- 830 GOTO 710
- 840 PRINT DC$+CHR$(1)+CHR$(33);
- 850 FOR TPT=1 TO 20
- 860 PRINT DC$+CHR$(TPT+32)+CHR$(32);EP$
- 870 NEXT TPT
- 880 PRINT DC$+CHR$(1)+CHR$(33);"Dealers hand";DC$+CHR$(12)+CHR$(33);"Your hand"
- 890 CLM=3
- 900 LN=2
- 910 PRINT HO$; ' home cursor
- 920 FOR HH=1 TO 9:PRINT EP$+CHR$(10);:NEXT HH ' sanitize screen
- 930 PRINT EP$
- 940 GOSUB 2180 : ' deal the cards
- 950 GOSUB 3530:PRINT DY$; ' begin half intensity
- 960 FOR TPT=1 TO 3 ' dealers card down (and dirty!)
- 970 PRINT DC$+CHR$(LN+TPT)+CHR$(CLM+33);"****":NEXT TPT
- 980 PRINT DN$ ' end half intensity
- 990 IF E[1]=0 THEN GOTO 1010
- 1000 V[4]=1
- 1010 V[5]=1
- 1020 GOSUB 2180 : ' deal the cards
- 1030 M=X
- 1040 P=2
- 1050 LN=10
- 1060 CLM=3
- 1070 GOSUB 2180 : ' deal the cards
- 1080 G=X
- 1090 ' next card up
- 1100 GOSUB 2180 : ' deal the cards
- 1110 IF V[2]>0 THEN GOTO 1540
- 1120 S=X
- 1130 IF V[3]<>1 THEN GOTO 1540
- 1140 IF T[P]<>21 THEN GOTO 1260
- 1150 FOR I=1 TO 50 ' flash opponent blackjack win and ring bell
- 1160 PRINT DC$+CHR$(15)+CHR$(32);" >>>BLACKJACK<<<";CHR$(7);
- 1170 FOR X=1 TO 20:NEXT X:PRINT DC$+CHR$(15)+CHR$(41);EP$
- 1180 NEXT I
- 1190 PRINT DC$+CHR$(8)+CHR$(32);"My hole card was ",
- 1200 X=M
- 1210 CLM=10
- 1220 LN=2
- 1230 GOSUB 2550 : ' print card
- 1240 W1=W1+W2*2
- 1250 GOTO 3130
- 1260 IF V[4]=0 THEN GOTO 1450
- 1270 PRINT DC$+CHR$(7)+CHR$(32);"Do you want to buy insurance (Y for YES, N for NO)";EP$
- 1280 PRINT "If YES and I have BLACKJACK, you ";UY$;"win $";W2;UN$
- 1290 PRINT "If not, you ";UY$;"lose $";W2/2;UN$;" to the Wizard of OsZ Casino";EP$
- 1300 INPUT X$
- 1310 PRINT
- 1320 IF LEFT$(X$,1)="N" OR LEFT$(X$,1)="n" THEN GOTO 1400
- 1330 IF T[1]<>21 THEN GOTO 1400
- 1340 W1=W1+W2
- 1350 FOR I=1 TO 50 ' flash "you win on insurance"
- 1360 PRINT DC$+CHR$(1)+CHR$(32);" You win $";W2;" on your insurance bet";
- 1370 FOR X=1 TO 20:NEXT X:PRINT DC$+CHR$(1)+CHR$(32);EP$
- 1380 NEXT I
- 1390 GOTO 1450
- 1400 W1=W1-W2/2
- 1410 FOR I=1 TO 50 ' flash "You lost on insurance"
- 1420 PRINT DC$+CHR$(1)+CHR$(32);" You lost $";W2/2;" on your insurance bet";
- 1430 FOR X=1 TO 20:NEXT X:PRINT DC$+CHR$(1)+CHR$(32);EP$
- 1440 NEXT I
- 1450 IF T[1]<>21 THEN GOTO 1540
- 1460 FOR I=1 TO 50 ' flash dealer blackjack win and ring bell
- 1470 PRINT DC$+CHR$(7)+CHR$(32);" >>>BLACKJACK<<<";CHR$(7);
- 1480 FOR X=1 TO 20:NEXT X:PRINT DC$+CHR$(7)+CHR$(41);EP$
- 1490 NEXT I
- 1500 X=M
- 1510 LN=2:CLM=10
- 1520 GOSUB 2550 : ' print card
- 1530 GOTO 3110
- 1540 IF T[P]<=21 THEN GOTO 1650
- 1550 IF E[P]>0 THEN GOTO 1630
- 1560 PRINT DC$+CHR$(16)+CHR$(32);"You busted! ";
- 1570 PRINT "Your total was";T[P];EP$;
- 1580 FOR I=1 TO 500:NEXT I ' delay for readability
- 1590 IF V[2]=1 THEN GOTO 1950
- 1600 CLM=9
- 1610 LN=2
- 1620 GOTO 2890 : ' dealer plays
- 1630 E[P]=E[P]-1
- 1640 T[P]=T[P]-10
- 1650 IF V[1]=2 THEN GOTO 1570
- 1660 V[3]=V[3]+1
- 1670 FOR I=1 TO 10:PRINT DC$+CHR$(15)+CHR$(32);EP$
- 1680 FOR X=1 TO 10:NEXT X ' flash hit request on screen
- 1690 PRINT CHR$(7);DC$+CHR$(15)+CHR$(32);"Hit";
- 1700 FOR X=1 TO 10:NEXT X
- 1710 NEXT I
- 1720 INPUT X:V[1]=X
- 1730 IF V[1]<>3 THEN GOTO 2090
- 1740 IF V[2]>0 THEN GOTO 2070
- 1750 IF V[3]<>2 THEN GOTO 2070
- 1760 IF Q[G]=Q[S] THEN GOTO 1790
- 1770 PRINT "Now really, does that look like a PAIR?";EP$
- 1780 GOTO 1670
- 1790 V[2]=1
- 1800 IF Q[G]<>1 THEN GOTO 1820
- 1810 V[1]=2
- 1820 P=3
- 1830 PRINT DC$+CHR$(21)+CHR$(32);"Playing ";UY$;"HAND ONE";UN$;" now";EP$
- 1840 ' 1st card
- 1850 CLM=3
- 1860 W[3]=W2
- 1870 X=G
- 1880 GOSUB 1900
- 1890 GOTO 1090 : ' next card
- 1900 GOSUB 2460
- 1910 GOSUB 2550 : ' print card
- 1920 V[3]=1
- 1930 T[P]=C
- 1940 RETURN
- 1950 P=2
- 1960 V[2]=2
- 1970 PRINT DC$+CHR$(21)+CHR$(32);"Playing ";UY$;"HAND TWO";UN$;" now"
- 1980 PRINT DC$+CHR$(42)+CHR$(32); ' boogie back to last hand position and...
- 1990 FOR HH=1 TO 5:PRINT EP$+CHR$(10);:NEXT HH ' clear last hand delt
- 2000 X=S
- 2010 LN=10
- 2020 CLM=3
- 2030 GOSUB 1900
- 2040 IF Q[G]=1 THEN GOTO 2060
- 2050 V[1]=0
- 2060 GOTO 1090 : ' next card
- 2070 PRINT "No splits now, try again..."
- 2080 GOTO 1670
- 2090 IF V[1]<>2 THEN GOTO 2140
- 2100 IF V[3]=2 THEN GOTO 2130
- 2110 PRINT "Too late to double!";EP$
- 2120 GOTO 1670
- 2130 W[P]=2*W[P]
- 2140 IF V[1]>0 THEN GOTO 1090 : ' next card
- 2150 CLM=10
- 2160 LN=10
- 2170 GOTO 1570
- 2180 ' subroutine to deal the cards
- 2190 GOSUB 2290
- 2200 T[P]=T[P]+C
- 2210 IF V[5]=0 THEN GOTO 2270
- 2220 V[5]=0
- 2230 IF P<>2 THEN RETURN
- 2240 PRINT DC$+CHR$(16)+CHR$(32);
- 2250 PRINT USING "'Your total is ',D3.0,' '",T[P];EP$
- 2260 RETURN
- 2270 GOSUB 2550 : ' print a card
- 2280 RETURN
- 2290 N=INT(RND*100):IF N>14 THEN GOTO 2290
- 2300 FOR A=1 TO N
- 2310 X=INT(RND*100):IF X>52 THEN 2310
- 2320 IF X=0 THEN GOTO 2310
- 2330 NEXT A
- 2340 IF D[X]=0 THEN GOTO 2440
- 2350 R=R+1
- 2360 IF R<50 THEN GOTO 2290
- 2370 FOR A=1 TO 52
- 2380 IF D[A]=K THEN GOTO 2400
- 2390 D[A]=0
- 2400 NEXT A
- 2410 R=0
- 2420 PRINT DC$+CHR$(8)+CHR$(32);"I reshuffled the deck...";EP$
- 2430 GOTO 2290
- 2440 R=0
- 2450 D[X]=K
- 2460 IF Q[X]<>1 THEN GOTO 2500
- 2470 C=11 ' be sure that ace counts as 11
- 2480 E[P]=E[P]+1
- 2490 RETURN
- 2500 IF Q[X]>10 THEN GOTO 2530
- 2510 C=Q[X]
- 2520 RETURN
- 2530 C=10
- 2540 RETURN
- 2550 ' subroutine to print a card
- 2560 GOSUB 2590
- 2570 GOSUB 2730 : ' print suit
- 2580 RETURN
- 2590 IF Q[X]<>1 THEN GOTO 2620
- 2600 NMB$="A" ' ace
- 2610 RETURN
- 2620 IF Q[X]>10 THEN GOTO 2650
- 2630 X$=STR$(Q[X]):NMB$=MID$(X$,2,2)
- 2640 RETURN
- 2650 IF Q[X]>11 THEN GOTO 2680
- 2660 NMB$="J" ' jack
- 2670 RETURN
- 2680 IF Q[X]>12 THEN GOTO 2710
- 2690 NMB$="Q" ' queen
- 2700 RETURN
- 2710 NMB$="K" ' king
- 2720 RETURN
- 2730 ' subroutine to print suit
- 2740 IF X>39 THEN GOTO 2800
- 2750 IF X>26 THEN GOTO 2830
- 2760 IF X>13 THEN GOTO 2860
- 2770 SUT$="S" ' spade
- 2780 GOSUB 3610 : ' print cards
- 2790 RETURN
- 2800 SUT$="C" ' club
- 2810 GOSUB 3610 : ' print cards
- 2820 RETURN
- 2830 SUT$="H" ' heart
- 2840 GOSUB 3610 : ' print cards
- 2850 RETURN
- 2860 SUT$="D" ' diamond
- 2870 GOSUB 3610 : ' print cards
- 2880 RETURN
- 2890 ' subroutine for dealer play
- 2900 P=2
- 2910 PRINT DC$+CHR$(7)+CHR$(32);
- 2920 X=M
- 2930 LN=2
- 2940 CLM=10
- 2950 GOSUB 2550 : ' print card
- 2960 IF T[2]<22 THEN GOTO 2990
- 2970 IF V[2]=0 THEN GOTO 3110
- 2980 IF T[3]>21 THEN GOTO 3110
- 2990 P=1
- 3000 IF T[1]<17 THEN GOTO 3180
- 3010 IF T[1]>17 THEN GOTO 3030
- 3020 IF E[1]>0 THEN GOTO 3180
- 3030 IF T[1]>21 THEN GOTO 3210
- 3040 P=2
- 3050 IF T[P]>21 THEN GOTO 3110
- 3060 IF T[1]>21 THEN GOTO 3090
- 3070 IF T[1]>T[P] THEN GOTO 3110
- 3080 IF T[1]=T[P] THEN GOTO 3120
- 3090 W1=W1+W[P]
- 3100 GOTO 3120
- 3110 W1=W1-W[P]
- 3120 IF V[2]>0 THEN GOTO 3150
- 3130 GOSUB 3270
- 3140 GOTO 630
- 3150 P=3
- 3160 V[2]=0
- 3170 GOTO 3050
- 3180 PRINT DC$+CHR$(6)+CHR$(32);"I Draw..."
- 3190 GOSUB 2180 : ' deal
- 3200 GOTO 2990
- 3210 IF E[1]=0 THEN GOTO 3250
- 3220 E[1]=E[1]-1
- 3230 T[1]=T[1]-10
- 3240 GOTO 2990
- 3250 PRINT DC$+CHR$(7)+CHR$(32);"I busted!";EP$;
- 3260 GOTO 3040
- 3270 PRINT DC$+CHR$(8)+CHR$(32);"My total was ";T[1];EP$
- 3280 PRINT EP$ ' flush next entry on comment line
- 3290 IF W1<0 THEN GOTO 3370
- 3300 IF W1=0 THEN GOTO 3430
- 3310 FOR I=1 TO 10 ' slowly flash current financial status
- 3320 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3330 PRINT DC$+CHR$(21)+CHR$(60);"You're ";UY$;"ahead $";W1;UN$;EP$
- 3340 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3350 NEXT I
- 3360 RETURN
- 3370 FOR I=1 TO 10 ' slowly flash current financial status
- 3380 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3390 PRINT DC$+CHR$(21)+CHR$(60);"You're "UY$;"behind $";-W1;UN$;EP$
- 3400 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3410 NEXT I
- 3420 RETURN
- 3430 FOR I=1 TO 10 ' slowly flash current financial status
- 3440 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3450 PRINT DC$+CHR$(21)+CHR$(60);"You're ";UY$;"EVEN!";UN$;EP$
- 3460 FOR X=1 TO 50:NEXT X:PRINT DC$+CHR$(21)+CHR$(60);EP$
- 3470 NEXT I
- 3480 RETURN
- 3490 PRINT CLS$:INPUT"Do you really want to quit (Y or N)";X$
- 3500 IF LEFT$(X$,1)="N" OR LEFT$(X$,1)="n" THEN GOTO 500
- 3510 PRINT CLS$
- 3520 SYSTEM
- 3530 ' print blank card
- 3540 CLM=CLM+7
- 3550 PRINT DC$+CHR$(LN)+CHR$(32+CLM);NB$
- 3560 PRINT DC$+CHR$(LN+1)+CHR$(32+CLM);MD$
- 3570 PRINT DC$+CHR$(LN+2)+CHR$(32+CLM);MD$
- 3580 PRINT DC$+CHR$(LN+3)+CHR$(32+CLM);MD$
- 3590 PRINT DC$+CHR$(LN+4)+CHR$(32+CLM);NB$
- 3600 RETURN
- 3610 ' print cards
- 3620 GOSUB 3530
- 3630 PRINT DY$
- 3640 PRINT DC$+CHR$(LN+1)+CHR$(CLM+33);NMB$;SUT$
- 3650 PRINT DC$+CHR$(LN+3)+CHR$(CLM+32+(4-LEN(NMB$)));NMB$;SUT$
- 3660 PRINT DC$+CHR$(16)+CHR$(32);
- 3670 PRINT DN$;
- 3680 IF P=2 THEN PRINT "Your total is ";T[P];EP$
- 3690 RETURN
-