10 FILL 32:VPRINT 5*80+20,"VIDEO BLACKJACK FROM HAWKEYE GRAFIX" 20 VPRINT 7*80+28,"COPYRIGHT (C) 1981" 40 VA=PEEK(&106)*256+PEEK(&105) 50 POKE VA+&7FF,12 60 CLEAR 2000 70 DIM C(22,2),CS(22),CA(11) 80 GOSUB 64000:REM SETUP CARD DATA 90 VPRINT 5*LL,"THERE ARE TWO OPTIONAL RULES IN THIS VERSION OF BLACKJACK:" 100 VPRINT 7*LL,"SOME CASINOS ALLOW YOU TO DOUBLE DOWN ANYTIME YOU WANT." 110 VPRINT 8*LL,"OTHERS ALLOW IT ONLY WHEN YOU HAVE 10 OR 11. WOULD YOU" 120 VPRINT 9*LL,SPC(LL) 130 VINPUT 9*LL,"LIKE (A) ANYTIME, OR (B) ON 10 AND 11 ONLY";AA$ 140 IF AA$="A" THEN DS=1 ELSE IF AA$="B" THEN DS=0 ELSE 120 150 VPRINT 12*LL,"SOME CASINOS ALLOW ONLY ONE CARD TO BE DEALT ON SPLIT ACES," 160 VPRINT 13*LL,"WHILE OTHERS ALLOW YOU TO HIT THEM AS OFTEN AS YOU PLEASE." 170 VPRINT 14*LL,"WOULD YOU LIKE (A) ONLY ONE CARD ON SPLIT ACES OR (B) AS MANY" 180 VINPUT 15*LL,"AS YOU WISH";AA$ 190 IF AA$="A" THEN HA=1 ELSE IF AA$="B" THEN HA=0 ELSE 180 200 FILL 32 210 BR=500:REM LOAD BANKROLL 220 SCROLL 2*LL+40,8,38 230 FOR J=0 TO 8 STEP 2 240 CA(J)=13*LL+2+(J/2)*15 250 CA(J+1)=LL+2+(J/2)*15 260 NEXT 270 CA(10)=CA(8)+3:REM SIXTH CARD OVERLAYS 280 CA(11)=CA(9)+3 290 FOR J=0 TO 22 STEP 2 300 CS(J)=13*LL+J/2*3+2 310 IF J>10 THEN CS(J)=CS(J)+25 320 NEXT 330 VPRINT 40+12*LL,"BANKROLL -";BR 340 IF BR<1 THEN 60000 350 FOR I=0 TO 51 360 DK(I)=0 370 NEXT 380 FOR I=0 TO 22 390 C(I,2)=0 400 NEXT 410 IS=0 420 W1=0 430 VINPUT 60+12*LL,"WAGER (0-100)";W 440 W=ABS(INT(W)) 450 IF W=0 THEN 60000 460 IF W>100 OR W>BR THEN 430 470 BR=BR-W 480 FILL 32 490 RANDOMIZE 500 CP=2:REM SET CARD POINTER FOR HITS 510 FOR J=0 TO 3 520 A=CA(J) 530 GOSUB 65000:REM DRAW BACK 540 GOSUB 65300:REM DEAL CARD 550 D=C(J,1) 560 S=C(J,0) 570 C(J,2)=1 580 IF J<>1 THEN GOSUB 65100:REM ERASE BACK IF NOT DEALER'S HOLE CARD 590 IF J<>1 THEN GOSUB 65200:REM DRAW CARD IF NOT DEALER'S HOLE CARD 600 NEXT 610 DRAW 78,66,159,66,1 620 DRAW 159,65,159,41,1 630 DRAW 158,41,78,41,1 640 DRAW 78,42,78,65,1 650 IF C(3,1)<>0 THEN 750:REM NO INSURANCE 660 VPRINT -1, 670 VPRINT -1,"YOU HAVE";BR;"DOLLARS." 680 VPRINT -1,"WOULD YOU LIKE INSURANCE (Y/N)?" 690 AA$=CHR$(CINP(3)) 700 IS=0 710 IF AA$="N" THEN 760 720 IF AA$<>"Y" THEN 690 730 BR=BR-W/2 740 IS=W/2 750 REM DEALER'S FACE NOT ACE, OR NO INSURANCE 760 J=1 770 GOSUB 63000:REM SCORE DEALER'S HAND 780 IF BJ=0 THEN 900 790 BR=BR+IS*3:REM PAY INSURANCE 800 A=CA(1) 810 D=C(1,1) 820 S=C(1,0) 830 J=1 840 GOSUB 65100:REM ERASE BACK OF CARD 850 GOSUB 65200:REM DRAW PICTURE 860 J=0 870 GOSUB 63000:REM SCORE PLAYER'S HAND 880 IF BJ=1 THEN VPRINT 12*LL,"PUSH":BR=BR+W:GOTO 330 890 VPRINT 12*LL,"YOU LOST";W:GOTO 330 900 J=0 910 GOSUB 63000:REM SCORE PLAYER'S HAND 920 VPRINT 13*LL,SC$ 930 IF BJ=0 THEN 970 940 VPRINT 12*LL,"BLACKJACK WINS";W*1.5 950 BR=BR+W*2.5 960 GOTO 330 970 IF SC<22 THEN 1110 980 FOR I=.5 TO 11.5 990 VPRINT I*LL-9,SPC(LL/2+9) 1000 NEXT 1010 VPRINT 12*LL,"YOU LOST";W 1020 A=CA(1) 1030 D=C(1,1) 1040 S=C(1,0) 1050 FOR I=.5 TO 11.5 1060 VPRINT I*LL-9,SPC(LL/2+9) 1070 NEXT 1080 GOSUB 65100:REM ERASE BACK 1090 GOSUB 65200:REM DRAW PICTURE OF HOLE CARD 1100 GOTO 330 1110 FOR I=0 TO 6 1120 VPRINT -1, 1130 NEXT 1140 VPRINT -1,"YOU HAVE";BR;"DOLLARS." 1150 VPRINT -1,"YOUR HAND IS"; 1160 IF SF=1 THEN VPRINT -1," A SOFT"; 1170 VPRINT -1,SC; 1180 VPRINT -1,"YOUR BET IS";W 1190 VPRINT -1,"PLEASE INDICATE YOUR SELECTION:" 1200 VPRINT -1,"P - PAT HAND" 1210 VPRINT -1,"H - HIT" 1220 IF DD=1 THEN VPRINT -1,"D - DOUBLE DOWN" 1230 IF BB=1 THEN VPRINT -1,"S - SPLIT PAIR" 1240 AA$=CHR$(CINP(3)) 1250 IF AA$="P" THEN 50000 1260 IF AA$="H" THEN 10000 1270 IF AA$="D" AND DD=1 THEN 20000 1280 IF AA$="S" AND BB=1 THEN 30000 1290 GOTO 1240 10000 CP=CP+2:REM MOVE TO NEXT CARD 10010 A=CA(CP) 10020 GOSUB 65000:REM DRAW BACK 10030 J=CP 10040 GOSUB 65300:REM DEAL CARD 10050 D=C(CP,1) 10060 S=C(CP,0) 10070 C(CP,2)=1 10080 GOSUB 65100:REM ERASE BACK 10090 GOSUB 65200:REM DRAW PICTURE 10100 IF CP<>10 THEN 900:REM IF NOT SIX CARDS, PLAY ANOTHER 10110 J=0 10120 GOSUB 63000:REM SCORE PLAYER'S HAND 10130 IF SC>21 THEN 900:REM BUSTED 10140 FOR I=.5 TO 11.5 10150 VPRINT I*LL-9,SPC(LL/2+9) 10160 NEXT 10170 VPRINT 12*LL,"YOU WON";W 10180 BR=BR+2*W 10190 GOTO 330 20000 CP=CP+2:REM MOVE TO NEXT CARD 20010 A=CA(CP) 20020 GOSUB 65000:REM DRAW BACK 20030 J=CP 20040 GOSUB 65300:REM DRAW CARD 20050 D=C(CP,1) 20060 S=C(CP,0) 20070 C(CP,2)=1 20080 GOSUB 65100:REM ERASE BACK 20090 GOSUB 65200:REM DRAW PICTURE 20100 BR=BR-W 20110 W=W+W 20120 J=0 20130 GOSUB 63000:REM SCORE NEW HAND 20140 VPRINT 13*LL,SC$ 20150 GOTO 50000 30000 FOR I=13 TO 23 30010 VPRINT LL*I+16,SPC(LL-16) 30020 NEXT 30030 VPRINT 13*LL," ":REM ERASE OLD SCORE 30040 BR=BR-W 30050 W1=W 30060 C(12,0)=C(2,0) 30070 C(12,1)=C(2,1) 30080 C(12,2)=1 30090 A=CS(12) 30100 GOSUB 65100:REM DRAW BLANK 30110 D=C(12,1) 30120 S=C(12,0) 30130 GOSUB 65200:REM RE-DRAW SPLIT CARD 30140 A=CS(14) 30150 GOSUB 65000:REM DRAW BACK OF FOURTH CARD 30160 CP=0 30170 CP=CP+2 30180 A=CS(CP) 30190 GOSUB 65000:REM DRAW BACK 30200 J=CP 30210 GOSUB 65300:REM DEAL CARD 30220 D=C(CP,1) 30230 S=C(CP,0) 30240 C(CP,2)=1 30250 GOSUB 65100:REM ERASE BACK 30260 GOSUB 65200:REM DRAW PICTURE 30270 IF CP<11 THEN J=0 ELSE J=12 30280 GOSUB 63000:REM SCORE HAND 30290 IF J=0 THEN VPRINT 13*LL,SC$ ELSE VPRINT 13*LL+LL/2+3,SC$ 30300 IF SC<22 THEN 30330:REM NOT BUSTED 30310 IF J=0 THEN VPRINT 12*LL,"YOU LOST";W ELSE VPRINT 12*LL+20,"YOU LOST";W1 30320 GOTO 40000:REM BUSTED 30330 IF CP=10 THEN BR=BR+W*2 ELSE IF CP=22 THEN BR=BR+W1*2:REM FORCED WIN 30340 IF CP=10 THEN VPRINT 12*LL,"YOU WON";W 30350 IF CP=22 THEN VPRINT 12*LL+20,"YOU WON";W1 30360 IF CP=10 OR CP=22 THEN 40000 30370 IF HA=1 AND C(0,1)=0 THEN 40000:REM IF SPLIT ACES, NO HITS 30380 IF AA$="D" THEN 40000:REM HE DOUBLED DOWN 30390 FOR I=0 TO 6 30400 VPRINT -1, 30410 NEXT 30420 VPRINT -1,"YOU HAVE";BR;"DOLLARS." 30430 VPRINT -1,"YOUR HAND IS"; 30440 IF SF=1 THEN VPRINT -1," A SOFT"; 30450 VPRINT -1,SC; 30460 VPRINT -1,"YOUR BET IS";W 30470 VPRINT -1,"PLEASE SELECT FOR THIS HAND:" 30480 VPRINT -1,"P - PAT HAND" 30490 VPRINT -1,"H - HIT" 30500 IF DD=1 THEN VPRINT -1,"D - DOUBLE DOWN" 30510 AA$=CHR$(CINP(3)) 30520 IF AA$="P" THEN 40000:REM STANDING, DO OTHER HAND 30530 IF AA$="D" AND CP<12 THEN BR=BR-W:W=W+W 30535 IF AA$="D" AND CP>12 THEN BR=BR-W1:W1=W1+W1 30550 IF AA$="D" THEN 30170 30560 IF AA$<>"H" THEN 30510 ELSE GOTO 30170 40000 IF CP>12 THEN 50000 40010 CP=12 40020 AA$=" " 40030 GOTO 30170 50000 CP=1 50010 J=0 50020 GOSUB 63000:REM SCORE HAND 1 50030 IF SC<22 THEN 50070 50040 J=12 50050 GOSUB 63000:REM SCORE HAND 2 50060 IF SC>21 THEN 900 50070 A=CA(CP) 50080 J=CP 50090 FOR I=.5 TO 11.5 50100 VPRINT I*LL-9,SPC(LL/2+9) 50110 NEXT 50120 GOTO 50200 50130 CP=CP+2 50140 IF CP=3 THEN CP=5:REM SKIP FACE UP CARD 50150 IF CP=13 THEN 50310:REM ONLY SIX CARDS ALLOWED 50160 A=CA(CP) 50170 GOSUB 65000:REM DRAW BACK 50180 J=CP 50190 GOSUB 65300:REM DEAL CARD 50200 D=C(CP,1) 50210 S=C(CP,0) 50220 C(CP,2)=1 50230 GOSUB 65100:REM ERASE BACK 50240 GOSUB 65200:REM DRAW PICTURE 50250 J=1 50260 GOSUB 63000:REM SCORE DEALER'S HAND 50270 VPRINT LL,SC$ 50280 IF SC>17 THEN 50310:REM STAND 50290 IF SC<17 THEN 50130 50300 IF SF=1 THEN 50130 50310 IF SC<22 THEN DH=SC ELSE DH=0 50320 J=0 50330 GOSUB 63000:REM SCORE PLAYER'S MAIN HAND 50340 PH=SC 50350 IF W1=0 THEN 50450 50360 IF C(22,2)=1 THEN 50450:REM SPLIT HAND 6 CARDS, ALREADY PAID 50370 J=10 50380 GOSUB 63000:REM SCORE SPLIT HAND 50390 IF SC>21 THEN 50450:REM HAND 2 BUSTED 50400 IF SC21 THEN 330:REM BUSTED, NEXT HAND 50460 IF PH500 THEN VPRINT -1,"WON";BR-500;"DOLLARS. NICE WORK." 60080 IF BR>500 THEN VPRINT -1,"HOWEVER, IT'S USUALLY PRETTY TOUGH" 60090 IF BR>500 THEN VPRINT -1,"TO COLLECT AROUND HERE." 60100 IF BR<500 THEN VPRINT -1,"LOST";ABS(500-BR);"DOLLARS. SUCH A PITY." 60110 END 63000 REM EVALUATE HAND J WHERE 0=PLAYER, 1=DEALER, 12=PLAYER'S SPLIT HAND 63010 SF=0:REM SET OFF SOFT HAND FLAG 63020 SC=0:REM START AT ZERO 63030 DD=0:REM SET OFF DOUBLE DOWN 63040 BB=0:REM SET OFF BREAK PAIRS 63050 BJ=0:REM SET OFF BLACKJACK 63060 FOR K=0 TO 10 STEP 2 63070 IF C(J+K,2)=0 THEN 63110 63080 IF C(J+K,1)=0 THEN SF=1:SC=SC+1:GOTO 63110 63090 IF C(J+K,1)<9 THEN SC=SC+C(J+K,1)+1:GOTO 63110 63100 SC=SC+10 63110 NEXT 63120 IF SC<12 AND SF=1 THEN SC=SC+10 ELSE SF=0 63130 IF SC=10 OR SC=11 THEN DD=1 63140 IF DS=1 THEN DD=1:REM SWITCH TO ALWAYS ALLOW DOUBLE DOWN 63150 IF C(J+4,2)=1 THEN DD=0 63160 IF C(J,1)=C(J+2,1) AND C(J+4,2)=0 THEN BB=1 ELSE BB=0 63170 IF C(J+4,2)=0 AND SC=21 THEN BJ=1 63180 SC$=STR$(SC) 63190 SC$=MID$(SC$,2,2) 63200 RETURN 64000 REM BUILD ARRAYS TO DISPLAY CARDS 64005 RESTORE 64280:GOTO 64060 64010 REM LL IS VIDEO LINE LENGTH 64015 REM P$ IS PICTURE OF SUIT 64020 REM V$ IS ASCII VALUE 64025 REM DK IS CARD USED ARRAY 64030 REM PS IS PIP POSITION ARRAY 64035 REM SP IS SPOT REQUIRED ARRAY 64040 REM PC$ IS PICTURE CARD DATA 64045 REM TL$ IS TOP LINE OF CARD OUTLINE 64050 REM M1$, M2$ AND M3$ ARE MIDDLE LINE OF CARD OUTLINE 64055 REM BL$ IS BOTTOM LINE OF CARD OUTLINE 64060 DIM P$(3),V$(12),DK(51),PS(15),SP(12,9),PC$(2,6) 64065 LL=PEEK(&107):REM GET LINE LENGTH 64070 FOR I=0 TO 3 64075 READ P 64080 P$(I)=CHR$(P) 64085 READ P 64090 P$(I)=P$(I)+CHR$(P) 64095 NEXT 64100 TL$=CHR$(&F3) 64105 M1$=CHR$(&F5) 64110 M2$=CHR$(&F5) 64115 M3$=CHR$(&F5) 64120 BL$=CHR$(&F6) 64125 FOR I=1 TO 12 64130 TL$=TL$+CHR$(&FA) 64135 M1$=M1$+CHR$(&95) 64140 M2$=M2$+CHR$(&AA) 64145 M3$=M3$+CHR$(&20) 64150 BL$=BL$+CHR$(&FA) 64155 NEXT 64160 TL$=TL$+CHR$(&F9) 64165 M1$=M1$+CHR$(&F5) 64170 M2$=M2$+CHR$(&F5) 64175 M3$=M3$+CHR$(&F5) 64180 BL$=BL$+CHR$(&FC) 64185 FOR I=0 TO 12 64190 READ V$(I) 64195 NEXT 64200 FOR I=1 TO 15 64205 READ L,S 64210 PS(I)=LL*L+S 64215 NEXT 64220 FOR I=0 TO 9 64225 FOR J=0 TO I 64230 READ SP(I,J) 64235 NEXT J,I 64240 FOR I=0 TO 2 64245 FOR J=0 TO 6 64250 FOR K=0 TO 7 64255 READ D 64260 PC$(I,J)=PC$(I,J)+CHR$(D) 64265 NEXT K,J,I 64270 RETURN 64275 REM LEFT AND RIGHT HALVES OF PIPS 64280 DATA &E4,&E5,&E6,&E7,&E8,&E9,&EA,&EB 64285 REM ASCII CARD INDEXES 64290 DATA "A ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","J ","Q ","K " 64295 REM ADDRESSES OF PIPS, LINE AND CHARACTER POSITION 64300 DATA 0,2 64305 DATA 0,5 64310 DATA 0,8 64315 DATA 1,5 64320 DATA 2,2 64325 DATA 2,8 64330 DATA 3,2 64335 DATA 3,5 64340 DATA 3,8 64345 DATA 4,2 64350 DATA 4,8 64355 DATA 5,5 64360 DATA 6,2 64365 DATA 6,5 64370 DATA 6,8 64375 REM INDEX OF PIPS TO PRINT FOR EACH CARD 64380 DATA 8 64385 DATA 4,12 64390 DATA 2,8,14 64395 DATA 1,3,13,15 64400 DATA 1,3,8,13,15 64405 DATA 1,3,7,9,13,15 64410 DATA 1,3,4,7,9,13,15 64415 DATA 1,3,4,7,9,12,13,15 64420 DATA 1,3,5,6,8,10,11,13,15 64425 DATA 1,3,4,5,6,10,11,12,13,15 64430 REM PICTURE CARD DATA FIELDS 64435 DATA 181,164,167,164,164,188,164,174 64440 DATA 128,188,164,164,164,183,191,136 64445 DATA 128,184,166,145,150,160,167,191 64450 DATA 128,177,129,132,129,128,143,191 64455 DATA 128,132,153,172,161,139,168,166 64460 DATA 172,154,137,132,160,137,147,165 64465 DATA 132,177,137,189,175,137,142,160 64470 DATA 128,128,139,191,191,191,191,153 64475 DATA 128,128,188,161,136,129,172,191 64480 DATA 128,128,135,128,130,128,128,167 64485 DATA 128,128,128,177,164,161,148,128 64490 DATA 128,133,145,137,173,169,137,149 64495 DATA 128,130,170,170,170,170,170,170 64500 DATA 128,132,149,157,157,157,157,148 64505 DATA 162,159,153,159,187,139,187,148 64510 DATA 128,156,137,136,129,137,163,128 64515 DATA 134,187,128,130,144,128,159,176 64520 DATA 128,191,157,173,173,171,191,128 64525 DATA 153,183,191,191,191,191,190,139 64530 DATA 174,187,174,183,190,181,159,181 64535 DATA 157,149,183,153,139,190,170,171 65000 VPRINT A,TL$:REM DRAW CARD (BACK SIDE) 65005 FOR I=1 TO 8 STEP 2 65010 VPRINT A+LL*I,M1$ 65015 VPRINT A+LL*I+LL,M2$ 65020 NEXT 65025 VPRINT A+9*LL,M1$ 65030 VPRINT A+10*LL,BL$ 65035 RETURN 65100 VPRINT A,TL$:REM DRAW BLANK CARD 65105 FOR I=1 TO 9 65110 VPRINT A+LL*I,M3$ 65115 NEXT 65120 VPRINT A+10*LL,BL$ 65125 RETURN 65200 VPRINT A+LL+1,V$(D):REM DRAW PICTURE OF CARD 65205 VPRINT A+9*LL+11,V$(D) 65210 IF D>9 THEN 65240 65215 FOR II=0 TO D 65220 IF SP(D,II)=0 THEN RETURN 65225 VPRINT A+2*LL+1+PS(SP(D,II)),P$(S) 65230 NEXT 65235 RETURN 65240 VPRINT A+2*LL+1,P$(S) 65245 VPRINT A+8*LL+11,P$(S) 65250 FOR II=0 TO 6 65255 VPRINT A+(II+2)*LL+3,PC$(D-10,II) 65260 NEXT 65265 RETURN 65300 C(J,0)=INT(RND(1)*4):REM DEAL A CARD 65305 C(J,1)=INT(RND(1)*13) 65310 KY=C(J,0)*13+C(J,1) 65315 IF DK(KY)<>0 THEN 65300 ELSE DK(KY)=1 65320 RETURN 65325 REM LEAVE POINTERS TO SIMPLIFY RENUMBERING 65330 GOTO 10000,20000,30000,40000,50000,60000,63000,64000,65000,65100,65200,65300