10 VA=PEEK(&106)*256+PEEK(&105) 20 POKE VA+&7FF,12 30 FILL 32:VPRINT 5*80+15,"VIDEO POKER FROM HAWKEYE GRAFIX" 40 VPRINT 7*80+20,"COPYRIGHT (C) 1981" 50 CLEAR 2000 60 GOSUB 1740:REM BUILD CARD DATA ARRAYS 70 REM PO IS PAYOFF ODDS 80 REM BR IS PLAYERS BANKROLL 90 REM WS IS WORK SUIT FOR EVALUATION 100 REM WV IS WORK VALUE FOR EVALUATION 110 FILL 32 120 WIDTH LL/2-1 130 DIM PO(9),WS(3),WV(12) 140 RESTORE 150 BR=500 160 FOR I=0 TO 9 170 READ PO(I) 180 NEXT 190 DATA 500,125,40,14,7,5,3,2,1,0 200 REM PRINT PAYOFF SCHEDULE 210 VPRINT 1*LL,SPC(19);"VIDEO POKER FROM HAWKEYE GRAFIX" 220 VPRINT 3*LL,"ROYAL FLUSH" 230 VPRINT 4*LL,"STRAIGHT FLUSH" 240 VPRINT 5*LL,"FOUR OF A KIND" 250 VPRINT 6*LL,"FULL HOUSE" 260 VPRINT 7*LL,"FLUSH" 270 VPRINT 8*LL,"STRAIGHT" 280 VPRINT 9*LL,"THREE OF A KIND" 290 VPRINT 10*LL,"TWO PAIRS" 300 VPRINT 11*LL,"OPENERS" 310 DRAW 79,60,159,60,1 320 DRAW 159,59,159,42,1 330 DRAW 159,41,79,41,1 340 DRAW 79,42,79,59,1 350 SCROLL 4.5*LL+1,6,LL/2-2 360 FOR I=0 TO 8 370 VPRINT (3+I)*LL+19,"PAYS";PO(I) 380 NEXT 390 FOR I=1 TO 5 400 VPRINT -1, 410 NEXT 420 VPRINT 23*LL,SPC(LL) 430 IF BR>0 THEN 570 440 FOR I=1 TO 5 450 VPRINT -1, 460 NEXT 470 VPRINT -1,"THE GAME IS NOW OVER." 480 VPRINT -1, 490 FS=BR-500 500 IF FS<0 THEN VPRINT -1,"YOU HAVE LOST";ABS(FS);"DOLLARS." 510 IF FS<0 THEN VPRINT -1,"BETTER LUCK NEXT TIME." 520 IF FS=0 THEN VPRINT -1,"YOU BROKE EVEN." 530 IF FS=0 THEN VPRINT -1,"NICE TRY, THOUGH." 540 IF FS>0 THEN VPRINT -1,"YOU GAINED";FS;"DOLLARS." 550 IF FS>0 THEN VPRINT -1,"GOOD LUCK COLLECTING IT." 560 END 570 VPRINT -1,:VPRINT -1,"YOUR BANKROLL IS CURRENTLY";BR 580 VINPUT -1,"WHAT IS YOUR WAGER (0-100)";W 590 W=INT(ABS(W)) 600 IF W=0 THEN 440 610 IF W<1 OR W>100 OR W>BR THEN 570 620 BR=BR-W 630 FOR I=1 TO 5 640 VPRINT -1, 650 NEXT 660 VPRINT -1,"YOUR BANKROLL IS CURRENTLY";BR 670 RANDOMIZE 680 FOR J=0 TO 4 690 A=12*LL+15*J+1 700 GOSUB 2820:REM DRAW BACK OF CARD 710 NEXT 720 FOR I=0 TO 51 730 DK(I)=0 740 NEXT 750 FOR I=0 TO 8 760 VPRINT (3+I)*LL+17," PAYS";PO(I)*W;" " 770 NEXT 780 FOR J=0 TO 4 790 GOSUB 3100:REM GENERATE CARD VALUE 800 NEXT 810 FOR J=0 TO 4 820 A=12*LL+15*J+1 830 GOSUB 2900:REM ERASE BACK 840 D=C(J,1) 850 S=C(J,0) 860 GOSUB 2960:REM PRINT CARD 870 NEXT 880 GOSUB 1280:REM SCORE HAND 890 OS=SR 900 IF OS<>9 THEN VPRINT (3+OS)*LL+17,"*" 910 VPRINT -1, 920 VPRINT -1,"ENTER CARD NUMBERS TO HOLD." 930 VPRINT -1,"PRESS RETURN TO DRAW CARDS." 940 VPRINT -1,"PRESS RUBOUT TO CLEAR HOLDS." 950 FOR I=0 TO 4 960 VPRINT 23*LL+7+15*I,I+1 970 HL(I)=0 980 NEXT 990 H=CINP(3) AND 127 1000 IF H=13 THEN 1070 1010 IF H=127 THEN VPRINT 23*LL,SPC(LL):GOTO 950 1020 H=H-49 1030 IF H<0 OR H>4 THEN 990 1040 VPRINT 23*LL+7+15*H,"HELD" 1050 HL(H)=1 1060 GOTO 990 1070 FOR J=0 TO 4 1080 IF HL(J)=1 THEN 1170 1090 A=12*LL+15*J+1 1100 GOSUB 2820:REM DRAW BACK OF CARD 1110 GOSUB 3100:REM GENERATE CARD VALUE 1120 A=12*LL+15*J+1 1130 GOSUB 2900:REM ERASE BACK 1140 D=C(J,1) 1150 S=C(J,0) 1160 GOSUB 2960:REM DRAW CARD 1170 NEXT 1180 REM HAND IS PLAYED, EVALUATE IT 1190 GOSUB 1280:REM GET HAND SCORE 1200 FOR I=1 TO 5 1210 VPRINT -1, 1220 NEXT 1230 IF OS<>9 THEN VPRINT (3+OS)*LL+17," " 1240 IF SR<>9 THEN VPRINT (3+SR)*LL+17,"*" 1250 WN=PO(SR)*W 1260 BR=BR+WN 1270 GOTO 390 1280 REM COMPUTE SCORE OF HAND (SR) 1290 FOR I=0 TO 3 1300 WS(I)=0 1310 NEXT 1320 FOR I=0 TO 12 1330 WV(I)=0 1340 NEXT 1350 SR=9:REM START WITH NOTHING 1360 FL=0 1370 ST=0 1380 FOR I=0 TO 4 1390 WS(C(I,0))=WS(C(I,0))+1 1400 WV(C(I,1))=WV(C(I,1))+1 1410 NEXT 1420 REM SET FLAG IF FLUSH IS PRESENT 1430 FOR I=0 TO 3 1440 IF WS(I)=5 THEN FL=1 1450 NEXT 1460 REM SET FLAG IF STRAIGHT IS PRESENT 1470 FOR I=0 TO 12 1480 IF WV(I)=1 THEN ST=ST+1 1490 IF ST=5 THEN 1530 1500 IF WV(I)=0 THEN ST=0 1510 NEXT 1520 IF ST=4 AND WV(0)=1 THEN ST=5 ELSE IF ST<>5 THEN ST=0 1530 REM SPECIAL TEST FOR ROYAL FLUSH 1540 IF ST=5 AND FL=1 AND WV(0)=1 AND WV(1)=0 THEN SR=0:RETURN :REM ROYAL FLUSH 1550 IF ST=5 AND FL=1 THEN SR=1:RETURN :REM STRAIGHT FLUSH 1560 G3=0 1570 G2=0 1580 FOR I=0 TO 12 1590 IF WV(I)=4 THEN SR=2:RETURN :REM FOUR OF A KIND 1600 IF WV(I)=3 THEN G3=1 1610 IF WV(I)=2 THEN G2=G2+1 1620 NEXT 1630 IF G3=1 AND G2=1 THEN SR=3:RETURN :REM FULL HOUSE 1640 IF FL=1 THEN SR=4:RETURN :REM FLUSH 1650 IF ST=5 THEN SR=5:RETURN :REM STRAIGHT 1660 IF G3=1 THEN SR=6:RETURN :REM THREE OF A KIND 1670 IF G2=2 THEN SR=7:RETURN :REM TWO PAIRS 1680 IF G2=0 THEN SR=9:RETURN :REM NOTHING 1690 IF WV(10)=2 THEN SR=8:RETURN :REM PAIR OF JACKS (OPENERS) 1700 IF WV(11)=2 THEN SR=8:RETURN :REM PAIR OF QUEENS (OPENERS) 1710 IF WV(12)=2 THEN SR=8:RETURN :REM PAIR OF KINGS (OPENERS) 1720 IF WV(0)=2 THEN SR=8:RETURN :REM PAIR OF ACES (OPENERS) 1730 SR=9:RETURN :REM ONE PAIR, BUT NOT OPENERS 1740 REM BUILD ARRAYS TO DISPLAY CARDS 1750 RESTORE 2300:GOTO 1860 1760 REM LL IS VIDEO LINE LENGTH 1770 REM P$ IS PICTURE OF SUIT 1780 REM V$ IS ASCII VALUE 1790 REM DK IS CARD USED ARRAY 1800 REM PS IS PIP POSITION ARRAY 1810 REM SP IS SPOT REQUIRED ARRAY 1820 REM PC$ IS PICTURE CARD DATA 1830 REM TL$ IS TOP LINE OF CARD OUTLINE 1840 REM M1$, M2$ AND M3$ ARE MIDDLE LINE OF CARD OUTLINE 1850 REM BL$ IS BOTTOM LINE OF CARD OUTLINE 1860 DIM P$(3),V$(12),DK(51),PS(15),SP(12,9),PC$(2,6) 1870 LL=PEEK(&107):REM GET LINE LENGTH 1880 FOR I=0 TO 3 1890 READ P 1900 P$(I)=CHR$(P) 1910 READ P 1920 P$(I)=P$(I)+CHR$(P) 1930 NEXT 1940 TL$=CHR$(&F3) 1950 M1$=CHR$(&F5) 1960 M2$=CHR$(&F5) 1970 M3$=CHR$(&F5) 1980 BL$=CHR$(&F6) 1990 FOR I=1 TO 12 2000 TL$=TL$+CHR$(&FA) 2010 M1$=M1$+CHR$(&95) 2020 M2$=M2$+CHR$(&AA) 2030 M3$=M3$+CHR$(&20) 2040 BL$=BL$+CHR$(&FA) 2050 NEXT 2060 TL$=TL$+CHR$(&F9) 2070 M1$=M1$+CHR$(&F5) 2080 M2$=M2$+CHR$(&F5) 2090 M3$=M3$+CHR$(&F5) 2100 BL$=BL$+CHR$(&FC) 2110 FOR I=0 TO 12 2120 READ V$(I) 2130 NEXT 2140 FOR I=1 TO 15 2150 READ L,S 2160 PS(I)=LL*L+S 2170 NEXT 2180 FOR I=0 TO 9 2190 FOR J=0 TO I 2200 READ SP(I,J) 2210 NEXT J,I 2220 FOR I=0 TO 2 2230 FOR J=0 TO 6 2240 FOR K=0 TO 7 2250 READ D 2260 PC$(I,J)=PC$(I,J)+CHR$(D) 2270 NEXT K,J,I 2280 RETURN 2290 REM LEFT AND RIGHT HALVES OF PIPS 2300 DATA &E4,&E5,&E6,&E7,&E8,&E9,&EA,&EB 2310 REM ASCII CARD INDEXES 2320 DATA "A ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","J ","Q ","K " 2330 REM ADDRESSES OF PIPS, LINE AND CHARACTER POSITION 2340 DATA 0,2 2350 DATA 0,5 2360 DATA 0,8 2370 DATA 1,5 2380 DATA 2,2 2390 DATA 2,8 2400 DATA 3,2 2410 DATA 3,5 2420 DATA 3,8 2430 DATA 4,2 2440 DATA 4,8 2450 DATA 5,5 2460 DATA 6,2 2470 DATA 6,5 2480 DATA 6,8 2490 REM INDEX OF PIPS TO PRINT FOR EACH CARD 2500 DATA 8 2510 DATA 4,12 2520 DATA 2,8,14 2530 DATA 1,3,13,15 2540 DATA 1,3,8,13,15 2550 DATA 1,3,7,9,13,15 2560 DATA 1,3,4,7,9,13,15 2570 DATA 1,3,4,7,9,12,13,15 2580 DATA 1,3,5,6,8,10,11,13,15 2590 DATA 1,3,4,5,6,10,11,12,13,15 2600 REM PICTURE CARD DATA FIELDS 2610 DATA 181,164,167,164,164,188,164,174 2620 DATA 128,188,164,164,164,183,191,136 2630 DATA 128,184,166,145,150,160,167,191 2640 DATA 128,177,129,132,129,128,143,191 2650 DATA 128,132,153,172,161,139,168,166 2660 DATA 172,154,137,132,160,137,147,165 2670 DATA 132,177,137,189,175,137,142,160 2680 DATA 128,128,139,191,191,191,191,153 2690 DATA 128,128,188,161,136,129,172,191 2700 DATA 128,128,135,128,130,128,128,167 2710 DATA 128,128,128,177,164,161,148,128 2720 DATA 128,133,145,137,173,169,137,149 2730 DATA 128,130,170,170,170,170,170,170 2740 DATA 128,132,149,157,157,157,157,148 2750 DATA 162,159,153,159,187,139,187,148 2760 DATA 128,156,137,136,129,137,163,128 2770 DATA 134,187,128,130,144,128,159,176 2780 DATA 128,191,157,173,173,171,191,128 2790 DATA 153,183,191,191,191,191,190,139 2800 DATA 174,187,174,183,190,181,159,181 2810 DATA 157,149,183,153,139,190,170,171 2820 VPRINT A,TL$:REM DRAW CARD (BACK SIDE) 2830 FOR I=1 TO 8 STEP 2 2840 VPRINT A+LL*I,M1$ 2850 VPRINT A+LL*I+LL,M2$ 2860 NEXT 2870 VPRINT A+9*LL,M1$ 2880 VPRINT A+10*LL,BL$ 2890 RETURN 2900 VPRINT A,TL$:REM DRAW BLANK CARD 2910 FOR I=1 TO 9 2920 VPRINT A+LL*I,M3$ 2930 NEXT 2940 VPRINT A+10*LL,BL$ 2950 RETURN 2960 VPRINT A+LL+1,V$(D):REM DRAW CARD 2970 VPRINT A+9*LL+11,V$(D) 2980 IF D>9 THEN 3040 2990 FOR II=0 TO D 3000 IF SP(D,II)=0 THEN RETURN 3010 VPRINT A+2*LL+1+PS(SP(D,II)),P$(S) 3020 NEXT 3030 RETURN 3040 VPRINT A+2*LL+1,P$(S) 3050 VPRINT A+8*LL+11,P$(S) 3060 FOR II=0 TO 6 3070 VPRINT A+(II+2)*LL+3,PC$(D-10,II) 3080 NEXT 3090 RETURN 3100 C(J,0)=INT(RND(1)*4):REM DEAL A CARD 3110 C(J,1)=INT(RND(1)*13) 3120 KY=C(J,0)*13+C(J,1) 3130 IF DK(KY)<>0 THEN 3100 ELSE DK(KY)=1 3140 RETURN 3150 REM LEAVE POINTERS TO SIMPLIFY RENUMBERING 3160 GOTO 570,1280,1740,2820,2900,2960,3100