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