10 FILL 32:CLEAR 100:FAST :RANDOMIZE 
15 VPRINT 5*80+20,"HAWKEYE GRAFIX VIDEO BASIC DEMONSTRATION"
17 VPRINT 7*80+28,"COPYRIGHT 1981"
20 VINPUT 10*80+20,"RUN CONTINUOUSLY (Y/N)";CO$
30 IF CO$<>"Y" AND CO$<>"N" THEN 20
31 IF CO$="N" THEN VINPUT 10*80+20,"PERFORM EPSON PRINTER SCREEN DUMPS (Y/N)";SD$
40 DIM SP(8,3),C(100),T(255)
50 FOR I=0 TO 8
60 READ SP(I,2),SP(I,3)
70 NEXT 
80 DATA 4,0,3,2,0,3,-2,3,-5,1,-3,-2,1,-3,2,-1,-3,-1
90 VA=256*PEEK(&106)+PEEK(&105)
100 GOSUB 3390
110 REM PRINT ROTATING TRIANGLE
120 OX=80:OY=35:D=2:W1=180:SS=21
130 FOR R=2 TO 34 STEP 4
140 SS=SS-.09
150 FOR W=0 TO 360 STEP SS:GOSUB 3400
160 DRAW OX,OY,X,Y,1
170 DRAW OX,OY,X1,Y1,1
180 DRAW X,Y,X1,Y1,1
190 DRAW OX,OY,X,Y,0
200 DRAW OX,OY,X1,Y1,0
210 DRAW X,Y,X1,Y1,0
220 NEXT W,R
230 REM PRINT HORIZONTAL BAR FROM MIDDLE OF SCREEN TO BOTTOM
240 FOR Y=35 TO 1 STEP -1
250 DRAW 3,Y,156,Y,1:DRAW 3,Y-1,156,Y-1,1:FOR T=0 TO 100:NEXT 
260 DRAW 3,Y,156,Y,0:NEXT 
270 REM DRAW WHITE TRIANGLE
280 FOR I=0 TO 159
290 DRAW I,3,80,71,1:NEXT 
300 REM DIVIDE TRIANGLE
310 SW=0
320 FOR Y=71 TO 3 STEP -1:FOR J=1 TO 2
330 DRAW 0,3,80,Y,SW
340 DRAW 80,71,80,Y,SW
350 DRAW 80,Y,159,3,SW
360 SW=1-SW
370 NEXT J,Y
380 REM DRAW THE WHITE TRIANGLE TO BLACK
390 FOR I=158 TO 2 STEP -2
400 DRAW 80,71,I,3,0
410 NEXT 
420 REM DO OUTLINES AND TEXT BLOCK
430 DRAW 0,3,80,71,1
440 DRAW 159,3,80,71,1
450 DRAW 65,32,94,32,1
460 DRAW 65,36,94,36,1
470 DRAW 65,36,65,32,1
480 DRAW 94,36,94,32,1
490 DRAW 0,2,159,2,1
500 A$="HAWKEYE GRAFIX":IC=32
510 VPRINT 12*80+33,A$
520 REM SWITCH CASE FOR TEXT
530 FOR NN=0 TO 10
540 GOSUB 3430
550 IC=-IC
560 NEXT 
561 IF SD$="Y" THEN GOSUB 60000
570 REM DRAW RANDOM LINES
580 JC=0
590 SX=RND(0)*15:SY=RND(1)*15:IX=RND(1)*15:IY=RND(1)*15
600 GOSUB 3390:SW=1:X1=0:Y1=0:X2=159:Y2=71
610 GOSUB 3340:SW=1-SW:GOSUB 3340
620 JC=JC+1:IF JC>50 THEN 690
630 X1=X1+SX:IF X1>159 THEN X1=0
640 X2=X2-IX:IF X2<0 THEN X2=159
650 Y2=Y2-IY:IF Y2<0 THEN Y2=71
660 Y1=Y1+SY:IF Y1>71 THEN Y1=0
670 SW=1:GOTO 610
680 REM DRAW PATTERN
690 GOSUB 3390
700 SW=1:X1=0:Y1=0:X2=159:Y2=71
710 GOSUB 3340
720 SW=1-SW:GOSUB 3340
730 X2=X2-1:IF X2=-1 THEN X2=159
740 Y2=Y2-1:IF Y2=-1 THEN Y2=71
750 JC=JC+1:IF JC<680 THEN 710
751 IF SD$="Y" THEN GOSUB 60000:GOTO 770
752 FOR I=1 TO 2000:NEXT 
760 REM DRAW CIRCULAR PATTERNS
770 XI=2
780 YI=6
790 X1=0:Y1=0:X2=159:Y2=0:XL=0:YL=0:XU=159:YU=71:SW=1
800 XI=XI+2:YI=YI-1:GOSUB 3390
810 X2=XU:XU=XU-XI:IF XU<0 THEN 900
820 GOSUB 3360
830 Y2=YU:YU=YU-YI:IF YU<0 THEN 900
840 GOSUB 3360
850 X2=XL:XL=XL+XI:IF XL>159 THEN 900
860 GOSUB 3360
870 Y2=YL:YL=YL+YI:IF YL>36 THEN 900
880 GOSUB 3360
890 GOTO 810
900 FOR I=1 TO 1000:NEXT :IF YI<>1 THEN 790
910 REM DO RANDOM NUMBER DISTRIBUTION GRAPH
920 FOR I=0 TO 100
930 C(I)=0
940 NEXT 
950 CT=0:CM=0
960 XO=1:LL=80:HL=24:LI=15:GOSUB 3390
970 OG=3*(HL-12):OP=OG+3:TG=3*HL-1
980 DRAW 14,26,14,0,1
990 DRAW 119,26,119,0,1
1000 DRAW 14,0,119,0,1
1010 DRAW 14,26,119,26,1
1020 DRAW 14,71,14,39,1
1030 DRAW 14,39,119,39,1
1040 DRAW 14,71,119,71,1
1050 DRAW 119,71,119,39,1
1060 FOR I=100 TO 0 STEP -10
1070 VPRINT ((100-I)/10)*LL+1,I;
1080 VPRINT ((100-I)/10)*LL+5,"%-";:NEXT 
1090 FOR I=0 TO 100 STEP 10
1100 VPRINT 11*LL+7+I/2," !";
1110 VPRINT 12*LL+7+I/2,I;
1120 NEXT 
1130 VPRINT 17*LL+14,"Y AXIS LIMIT :";LI
1140 VPRINT 17*LL+38,"ITERATION :";
1150 VPRINT 14*LL+14,"RANDOM  NUMBER  DISTRIBUTION  ANALYSIS";
1160 VPRINT 20*LL+14,"RANDOM MEAN :"
1170 VPRINT 20*LL+39,"OCCURANCE :"
1180 N=INT(RND(1)*100+1)
1190 CT=CT+1:VPRINT 17*LL+50,CT;
1200 C(N)=C(N)+1
1210 Y1=C(N)/LI*30+OP
1220 PLOT N+16,Y1,XO
1230 PLOT N+16,Y1+1,XO
1240 IF CM<C(N) THEN CM=C(N):VPRINT 20*LL+27,N:VPRINT 20*LL+50,CM
1250 IF C(N)<>LI GOTO 1180
1255 IF SD$="Y" THEN GOSUB 60000:GOTO 1280
1260 FOR I=0 TO 10000:NEXT 
1270 REM DRAW SPACESHIP
1280 GOSUB 3390:T=150
1290 SA=VA+594
1300 X=70:Y=40:O=1:GOSUB 3180
1310 REM NOW MAKE IT MOVE AROUND
1320 FOR I=0 TO T
1330 V=INT(RND(1)*9+1)
1340 ON (V) GOSUB 1360,1370,1380,1390,1400,1410,1420,1430,1440
1350 GOTO 1450
1360 OF=-81:RETURN 
1370 OF=-80:RETURN 
1380 OF=-79:RETURN 
1390 OF=-1:RETURN 
1400 OF=0:RETURN 
1410 OF=1:RETURN 
1420 OF=79:RETURN 
1430 OF=80:RETURN 
1440 OF=81:RETURN 
1450 IF (SGN(OF)=1) AND (SA<(VA+1350)) THEN MOVE SA,SA+OF,-570:SA=SA+OF
1460 IF (SGN(OF)=-1) AND (SA>(VA+81)) THEN MOVE SA,SA+OF,570:SA=SA+OF
1470 IF I/10<>INT(I/10) THEN 1550
1480 SY=INT((SA-VA)/80)
1490 SX=SA+5-VA-80*SY:SY=SY+5
1500 X=SX*2:Y=(23-SY)*3+1
1510 DRAW X,Y,70,0,1
1520 DRAW X,Y,90,0,1
1530 DRAW X,Y,70,0,0
1540 DRAW X,Y,90,0,0
1550 NEXT 
1560 REM SHOOT DOWN THE SHIP
1570 DRAW 0,0,X,Y+6,1
1580 DRAW 159,0,X,Y+6,1
1590 DRAW 159,71,X,Y+6,1
1600 DRAW 0,71,X,Y+6,1
1610 DRAW 0,0,X,Y+6,0
1620 DRAW 159,0,X,Y+6,0
1630 DRAW 159,71,X,Y+6,0
1640 DRAW 0,71,X,Y+6,0
1650 REM BLOW UP THE SHIP
1660 SA=SA-VA
1670 Y1=INT(SA/LL)
1680 X1=(SA-Y1*LL)*2+9
1690 Y1=71-3*Y1-10
1700 FOR I=0 TO 8
1710 SP(I,0)=X1
1720 SP(I,1)=Y1
1730 NEXT 
1740 FOR I=0 TO 8
1750 X1=SP(I,0):Y1=SP(I,1)
1760 DRAW X1,Y1,X1-SP(I,2),Y1-SP(I,3),0
1770 X1=X1+SP(I,2)
1780 Y1=Y1+SP(I,3)
1790 IF X1<0 OR X1>159 THEN 1860
1800 IF Y1<0 OR Y1>71 THEN 1860
1810 DRAW X1,Y1,X1-SP(I,2),Y1-SP(I,3),1
1820 SP(I,0)=X1
1830 SP(I,1)=Y1
1840 NEXT 
1850 GOTO 1740
1860 REM SIMULATE AN INVOICE ENTRY
1870 GOSUB 3390
1880 RESTORE 3870
1890 DRAW 0,0,159,0,1
1900 DRAW 159,0,159,71,1
1910 DRAW 159,71,0,71,1
1920 DRAW 0,71,0,0,1
1930 DRAW 0,64,159,64,1
1940 VPRINT LL+20,"ACCOUNTS PAYABLE BATCH ENTRY"
1950 VPRINT LL*3+5,"BATCH DATE:   01/01/81"
1960 VPRINT LL*4+5,"BATCH NUMBER: 35"
1970 VPRINT 3*LL+35,"VENDOR NUMBER HASH TOTAL:"
1980 VPRINT 4*LL+35,"PAYABLES BATCH TOTAL:"
1990 VPRINT 5*LL+35,"ITEM COUNT:"
2000 DRAW 0,52,159,52,1
2010 DRAW 0,37,159,37,1
2020 DRAW 0,28,159,28,1
2030 SCROLL 15*LL+1,8,LL-2
2040 HT=29476
2050 BT=23864.93
2060 IC=14
2070 FOR I=7 TO 10
2080 VPRINT LL*I+1,SPC(LL-2)
2090 NEXT 
2100 VPRINT 3*LL+62,HT
2110 UV=BT
2120 GOSUB 3530
2130 VPRINT 4*LL+62,US$
2140 VPRINT 5*LL+62,IC
2150 VPRINT 7*LL+5,"VENDOR NUMBER:"
2160 FOR I=0 TO 1500:NEXT 
2170 VB=7*LL+19
2180 GOSUB 3760
2190 VN=SN
2200 READ VM$
2210 VPRINT 8*LL+5,VM$
2220 READ VW$
2230 VPRINT 9*LL+5,VW$
2240 READ VW$
2250 VPRINT 10*LL+5,VW$
2260 VPRINT 7*LL+35,"INVOICE NUMBER:"
2270 VB=7*LL+62
2280 GOSUB 3760
2290 IN=SN
2300 VPRINT 8*LL+35,"INVOICE DATE:"
2310 VB=8*LL+62
2320 GOSUB 3760
2330 ID$=MID$(STR$(SN),2)
2340 ID$=LEFT$(ID$,2)+"/"+MID$(ID$,3,2)+"/"+RIGHT$(ID$,2)
2350 VPRINT 8*LL+62,ID$
2360 VPRINT 9*LL+35,"INVOICE AMOUNT:"
2370 VB=9*LL+62
2380 GOSUB 3760
2390 IA=SN/100
2400 UV=IA
2410 GOSUB 3530
2420 VPRINT 9*LL+62,US$
2430 VPRINT 10*LL+35,"NOT DISTRIBUTED:"
2440 ND=IA
2450 VPRINT -1,""
2460 VPRINT -1,"ACCOUNT","DESCRIPTION";TAB(65);"AMOUNT";
2470 VPRINT 12*LL+1,SPC(LL-2)
2480 VPRINT 13*LL+1,SPC(LL-2)
2490 VPRINT 10*LL+62,US$
2500 VPRINT 12*LL+5,"DISTRIBUTION:"
2510 UV=ND
2520 GOSUB 3530
2530 VPRINT 10*LL+62,US$
2540 VB=12*LL+19
2550 GOSUB 3760
2560 DA=SN
2570 READ DA$
2580 VPRINT 13*LL+5,DA$
2590 VPRINT 12*LL+35,"AMOUNT:"
2600 VB=12*LL+62
2610 GOSUB 3760
2620 LA=SN/100
2630 UV=LA
2640 GOSUB 3530
2650 VPRINT 12*LL+62,US$
2660 VPRINT -1,""
2670 VPRINT -1,DA,DA$,TAB(62);US$;
2680 ND=ND-LA
2690 IF ND>.005 THEN 2470
2700 UV=0
2710 GOSUB 3530
2720 VPRINT 12*LL+1,SPC(LL-2)
2730 VPRINT 13*LL+1,SPC(LL-2)
2740 VPRINT 10*LL+62,US$
2745 IF SD$="Y" THEN GOSUB 60000:GOTO TO 2760
2750 FOR I=0 TO 10000:NEXT 
2760 REM NOW DO THE WANDERING LETTER
2770 GOSUB 3390
2780 VPRINT 750,"HVWKEYE GRAFIX"
2790 VPRINT 990,"  IDEO BASIC"
2800 FOR I=0 TO 672 STEP 84
2810 VPRINT I,"A"
2820 IF I<>0 THEN VPRINT I-84," "
2830 FOR J=0 TO 100:NEXT 
2840 NEXT 
2850 RESTORE 2860
2860 DATA 671,670,669,668,748,828,829,830,831,911,991,911
2870 DATA 831,830,829,828,748,668,669,670,671,591,511,431,351,431,511,591,671,751
2880 X1=672
2890 FOR I=0 TO 29
2900 READ X2
2910 VPRINT X1," "
2920 VPRINT X2,"A"
2930 X1=X2
2940 FOR J=0 TO 100:NEXT J,I
2950 VPRINT 831,"V"
2960 FOR J=0 TO 100:NEXT 
2970 VPRINT 831," "
2980 VPRINT 911,"V"
2990 FOR J=0 TO 100:NEXT 
3000 VPRINT 911," "
3010 VPRINT 991,"V"
3020 REM NOW FINISH OFF THE DISPLAY
3030 DRAW 60,40,87,40,1
3040 DRAW 63,31,83,31,1
3050 VPRINT 257,"THIS DEMONSTRATION WAS WRITTEN ENTIRELY IN"
3060 VPRINT 20*LL+3,"USING VIDEO COMMANDS: VPRINT, VINPUT, SCROLL, PLOT, DRAW, MOVE, AND PIXEL"
3070 DRAW 0,0,159,0,1
3080 DRAW 159,0,159,71,1
3090 DRAW 159,71,0,71,1
3100 DRAW 0,71,0,0,1
3110 DRAW 4,3,155,3,1
3120 DRAW 155,3,155,68,1
3130 DRAW 155,68,4,68,1
3140 DRAW 4,68,4,3,1
3150 IF CO$="N" THEN END 
3160 FOR I=0 TO 10000:NEXT 
3170 GOTO 100
3180 RESTORE 3310
3190 X1=X
3200 FOR J=0 TO 14
3210 READ Y2
3220 DRAW X,Y-Y2/2,X,Y+Y2/2,O:X=X+1
3230 NEXT 
3240 X=X1+1:IF O=1 THEN O=0 ELSE O=1
3250 FOR J=0 TO 12
3260 READ Y2:IF Y2=0 THEN X=X+1:NEXT 
3270 DRAW X,Y-Y2/2,X,Y+Y2/2,O:X=X+1
3280 NEXT 
3290 X=X1:IF O=0 THEN O=1 ELSE O=0:RETURN 
3300 RETURN 
3310 DATA 10,12,10,2,2,4,6,8,6,4,2,2,10,12,10
3320 DATA 10,0,0,0,2,4,6,4,2,0,0,0,10
3330 GOSUB 3390
3340 DRAW X1,Y1,X2,Y2,SW
3350 RETURN 
3360 DRAW X1,Y1,X2,Y2,SW
3370 X1=X2:Y1=Y2
3380 RETURN 
3390 FILL 32:VPRINT 0," ":POKE VA+&7FF,12:RETURN 
3400 X=OX-R*D*COS(W):X1=OX-R*D*COS(W1+W)
3410 Y=OY-R*SIN(W):Y1=OY-R*SIN(W1+W)
3420 RETURN 
3430 FOR I=1 TO LEN(A$)-1
3440 BB=IC+ASC(MID$(A$,I,1))
3450 IF (BB=&40) OR (BB=&0) THEN BB=&20
3460 B$=B$+CHR$(BB)
3470 VPRINT 12*80+33,B$+RIGHT$(A$,LEN(A$)-LEN(B$))
3480 NEXT 
3490 B$=B$+CHR$(IC+ASC(MID$(A$,I,1)))
3500 VPRINT 12*80+33,B$
3510 A$=B$:B$=""
3520 RETURN 
3530 REM PRINT USING SUBROUTINE
3540 REM INPUT VARIABLE IS UV
3550 UD=2:REM NUMBER OF DECIMALS
3560 UL=10:REM OVERALL LENGTH
3570 UC=1:REM UC=0 IF NO COMMAS DESIRED
3580 REM OUTPUT PROVIDED IN US$
3590 REM VARIABLES USED ARE U1,U2,U3
3600 U2=INT(UV)
3610 US$=STR$(U2)
3620 US$=MID$(US$,2,LEN(US$)-1)
3630 IF UD=0 THEN 3670 ELSE U3=10^UD
3640 U1=(UV-U2)+.5/U3
3650 U1=INT(U3*(1+U1))
3660 US$=US$+"."+MID$(STR$(U1),3,UD)
3670 IF UC=0 THEN 3720
3680 U1=SGN(UD)+UD
3690 U3=LEN(US$)
3700 IF U2>999 THEN US$=LEFT$(US$,U3-3-U1)+","+RIGHT$(US$,3+U1)
3710 IF U2>999999 THEN US$=LEFT$(US$,U3-6-U1)+","+RIGHT$(US$,7+U1)
3720 U3=LEN(US$)
3730 IF U3>UL THEN US$=LEFT$("######################",UL):RETURN 
3740 IF U3=UL THEN RETURN 
3750 US$=LEFT$("                         ",UL-U3)+US$:RETURN 
3760 SN=0
3770 VPRINT VB,CHR$(&7F)
3780 FOR K=0 TO 400:NEXT 
3790 READ SI
3800 VPRINT VB," "
3810 IF SI=10 THEN RETURN 
3820 SO$=CHR$(SI+&30)
3830 VPRINT VB,SO$;CHR$(&7F);
3840 VB=VB+1
3850 SN=SN*10+SI
3860 GOTO 3780
3870 DATA 2,2,1,4,10
3880 DATA "Acme Manufacturing Co."
3890 DATA "1575 Sepulveda Blvd."
3900 DATA "Culver City, CA. 90438"
3910 DATA 9,0,8,5,1,10
3920 DATA 1,1,1,9,8,0,10
3930 DATA 1,4,8,5,2,0,7,10
3940 DATA 2,0,1,5,10
3950 DATA "Plant Equipment"
3960 DATA 1,1,6,4,2,8,3,10
3970 DATA 2,9,6,6,10
3980 DATA "Freight"
3990 DATA 1,8,1,4,5,3,10
4000 DATA 3,0,5,5,10
4010 DATA "Service Contracts"
4020 DATA 1,0,2,2,5,5,10
4030 DATA 4,1,2,2,10
4040 DATA "Land Improvements"
4050 DATA 3,1,5,7,4,10
4060 DATA 2,0,7,1,10
4070 DATA "Local Taxes"
4080 DATA 5,6,4,2,10
60000 REM COPY SCREEN IMAGE TO EPSON PRINTER WITH GRAPHICS
60002 IF PEEK(&10B)=0 THEN RESTORE 60050:REM VIO
60004 IF PEEK(&10B)=2 THEN RESTORE 60020:REM FLASHWRITER2
60006 REM :DIM T(255)
60008 FOR I=0 TO 31:READ T(I):NEXT I
60010 FOR I=32 TO 126:T(I)=I:NEXT I
60012 T(127)=223
60014 FOR I=128 TO 159:READ T(I):NEXT I
60016 FOR I=160 TO 254:T(I)=I AND 127:NEXT I
60018 T(255)=223
60020 DATA 160,192,168,200,162,194,170,202,176,208,184,216,178,210,186,218
60022 DATA 164,196,172,204,166,198,174,206,180,212,188,220,182,214,190,222
60024 DATA 223,191,215,183,221,189,213,181,207,175,199,167,205,173,197,165
60026 DATA 219,187,211,179,217,185,209,177,203,171,195,163,201,169,193,161
60028 LPRINT CHR$(27);"G"
60030 VA=PEEK(&105)+256*PEEK(&106)
60032 LL=PEEK(&107)
60034 NL=PEEK(&108)
60036 FOR I=VA TO VA+((NL-1)*LL) STEP LL
60038 FOR J=0 TO LL-1
60040 LPRINT CHR$(T(PEEK(I+J)));
60042 NEXT J
60044 LPRINT 
60046 NEXT I
60048 LPRINT CHR$(27);"H":LPRINT CHR$(12):RETURN 
60050 DATA 160,192,168,200,162,194,170,202,176,208,184,216,178,210,186,218
60052 DATA 164,196,172,204,166,198,174,206,180,212,188,220,182,214,190,222
60054 DATA 161,193,169,201,163,195,171,203,177,209,185,217,179,211,187,219
60056 DATA 165,197,173,205,167,199,175,207,181,213,189,221,183,215,191,223