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 CMLI 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