0 REM GRAPH IT BAR-PIE REV 0.1 7-5-80 ENHANCED BY HOWARD SIEBENROCK REV. 1.3 11.13.81 9 CLR :DIM E$(30),FLG$(1):E$="0hhhBhEhDhIhH V`" 10 READ Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z10,Z12,Z14,Z15,Z16,Z17,Z18,Z20,Z40,Z59,Z60,Z62,Z70,Z80,Z82,Z84,Z87 11 READ Z128,Z155,Z255,Z256,Z330,Z34,Z351,Z491,Z559,Z560,Z710,Z752,Z764,PI 12 DATA 0,1,2,3,4,5,6,7,8,10,12,14,15,16,17,18,20,40,59,60,62,70,80,82,84,87,128,155,255,256,3300,3400,3510 13 DATA 4910,559,560,710,752,764,3.14159 14 DIM FN$(Z20),FNT$(Z20),TI$(Z20),O$(Z1),P$(Z1),D1$(Z3):CLOSE #Z2:OPEN #Z2,Z4,Z0,"K:" 15 CLOSE #Z1:OPEN #Z1,Z4,Z0,"E:":POKE Z710,224:POKE Z710+Z2,224:POKE Z82,Z2 17 POKE Z82,Z15:? :? "AR CHARTS":? "IE GRAPHS":? "XIT" 18 POKE Z82,Z6:? :? "TYPE FIRST LETTER OF DESIRED","OPTION THEN HIT RETURN" 20 ? " OPTION: ";:INPUT #Z1,O$:FLG$=O$:IF O$="B" THEN POKE Z82,Z3:GOTO 5000 21 IF O$="P" THEN GOSUB 2410:POKE Z82,Z3:GOTO 5000 22 IF O$="E" THEN POKE Z82,Z2:GRAPHICS Z0:RUN "D1:GRAPH" 23 Y=Z255:GOSUB Z710:POSITION Z1,Z15:? "";:GOTO Z20 40 GOSUB Z62:XOLD=X:YOLD=Y:RETURN 62 YE=Y:IF R=Z1 THEN YE=YE-Z60:GOTO Z70 63 IF YEZ59 THEN R=Z1:T1=Z1:GOTO Z80-Z1 70 IF YE>Z0 THEN GOTO Z84 71 R=Z0:T1=-Z1 79 XA=X-(Y-59.5)/(Y-YOLD)*(X-XOLD):XD=SGN(X-XOLD):IF ABS(X-XOLD)Z128-Z1 THEN X=X-Z128 129 IF X>Z15+Z16 AND XYF AND TS=Z1 OR -Y>=-YF AND TS=-Z1 THEN RETURN 755 GOSUB Z330:GOSUB 3520:X=XF:Y=YF:OP=Z0:GOSUB Z40:OP=Z2:GOSUB Z351:GOSUB Z40:IF XZ20+Z1 THEN ? ""; 766 ? "":POSITION Z3,Z18:GOTO Z764 2000 DIM A$(Z60),QU(102),D2$(102):? "}";:GOSUB 4010:? "GRAPH MAY CONTAIN FROM",,"1 TO 32 COLUMNS" 2010 TRAP 2045:? "FROM 1 TO 3 FACTORS MAY BE",,"GRAPHED TOGETHER":? :? "ENTER NUMBER OF FACTORS: ";:INPUT #Z1,AMT 2020 IF AMTZ3 THEN GOTO 2010 2030 TT=Z20+Z12:TU=Z1:A$="COLUMN ":GOSUB 4100:FOR QR=Z1 TO AMT:? "}":? "INPUT VALUES FOR FACTOR ";QR:GOSUB 4200 2035 Y=Z60:GOSUB Z710:NEXT QR 2040 QE=Z7:TS=Z8:QR=Z80-Z1:IZ=Z80+Z5:GOSUB 4400:POKE I0+Z6,Z6:POKE Z710,130:POKE Z559,Z62:IF FLG=1 THEN RETURN 2042 GOTO 2050 2045 Y=180:GOSUB 710:? "":GOTO 2010 2050 COLOR Z1:PLOT Z20,Z1:DRAWTO Z20,Z70:DRAWTO Z155,Z70:DRAWTO Z155,Z1:DRAWTO Z20,Z1:GOSUB 4500 2060 A$="":U=Z60+Z5+MIN/(MAX-MIN)*Z60:COLOR Z3 2070 PLOT Z20+Z1,U:DRAWTO 154,U:XF=135/(Z2*QUA):FOR OP=Z1 TO Z2*QUA STEP Z2:EX1=OP*INT(XF)+XF/Z2+QUA*(XF-INT(XF))+Z20:CO=U:YF=Z0 2080 FOR QZ=Z1 TO AMT:POKE Z764+Z1,QZ:COLOR QZ:VAR=QU((OP-Z1)/Z2+(QZ-Z1)*QUA+Z1):VAN=VAR/(MAX-MIN)*Z60:VAB=SGN(VAN) 2090 T1=XF:IF QZ=Z1 OR ET=Z0 THEN ET=VAB 2100 IF ET<>VAB THEN 2160 2110 PLOT EX1,CO:DRAWTO EX1,CO-VAN:IF QUA>22 THEN T1=T1-Z1 2120 IF QZ=Z1 THEN PLOT EX1,CO:DRAWTO EX1-T1,CO 2130 IF VAR=Z0 THEN YF=Z1:GOTO 2160 2140 PLOT EX1-T1,CO:POSITION EX1-T1,CO-VAN:GOSUB Z491:IF QZ>Z1 THEN COLOR QZ-Z1+YF:PLOT EX1,CO:DRAWTO EX1-T1,CO 2150 CO=CO-VAN 2160 NEXT QZ:IF QUAZ128-Z3 THEN O$=CHR$(X):? O$; 2270 GOTO 2250 2280 TT=Z0:TU=Z0:FOR Z=Z1 TO AMT:VAR=QU((Z-Z1)*QUA+IZ):IF VAR>Z0 THEN TT=TT+VAR 2300 IF VARMAX THEN MAX=TT 2330 IF TU9.0E+97) THEN ? :? " DATA ERROR":GOSUB Z256:POP :POP :GOTO 2010 2350 TU=Z1:RETURN 2360 PY=MIN+T*I3:PY=INT(PY/Z10^X+Z1/Z2)/Z10:RETURN 2370 I4=PEEK(I0+Z80)+PEEK(I0+Z80+Z1)*Z256:FOR Z=Z0 TO Z2 2380 U3=(OP-Z1)/Z2*Z3+Z+Z1:O$=D2$(U3,U3):GOSUB Z128:POKE I4+Z*Z40+OP*IND+PX+Z5-Z1/Z4,X-Z128:NEXT Z:RETURN 2390 L=I3:D1$=STR$(PY):Y=LEN(D1$):FOR R=Z1 TO Y:U2=ASC(D1$(R,R))-Z60+Z14:IF U2Z70*Z10*Z10 THEN RETURN 2420 POKE Z559,Z0:POKE 842,Z12+Z1:? "}";:? Z0:FOR X=2000 TO 2190 STEP Z10:? X:NEXT X:? "CONT";:POSITION Z2,Z0:STOP 2430 ? "}";:FOR X=2200 TO 2390 STEP Z10:? X:NEXT X:? "CONT":POSITION Z2,Z0:STOP 2440 ? "}";:? 2400:? 2420:? 2430:? 2440:? "CONT":POSITION Z0,Z0:STOP 2450 REM 2460 ? "}":POKE Z559,Z62:POKE 842,Z12:RETURN 3000 ? "}";:? :POKE Z559,Z62:POKE 842,Z12:DIM D2$(Z40+Z1),A$(Z16),A1$(Z4),A2$(Z20),A4$(24),QU(Z12) 3002 IF FLG=Z1 THEN RETURN 3007 ? "THE PIE GRAPH WILL DISPLAY ",,"1 TO 12 SLICES":GOSUB 4010:TT=Z12:TU=Z6:A$="PIE SLICE ":GOSUB 4100 3030 TRAP Z255:? "}INPUT VALUES FOR":QR=Z1:GOSUB 4200:IZ=Z1:Y=Z0:POKE Z752,Z1:? :MIN=QUA 3042 IF IZ>QUA THEN 3052 3044 X=QU(IZ) 3046 IF X>=AMT/Z14 THEN 3050 3047 QU(IZ)=Z0:IF Y=Z0 THEN Y=IZ:MIN=MIN+Z1 3048 QU(Y)=QU(Y)+X:MIN=MIN-Z1 3050 IZ=IZ+Z1:GOTO 3042 3052 IF Y<>Z0 AND MINCHR$(Z155) THEN COLOR -EX1+Z5:X=XF:Y=YF:OP=Z0:GOSUB Z40:X=XF+Z16+Z16:Y=YF:OP=Z1:GOSUB Z40 3170 XF=Z155+Z4:POKE Z87,Z8:COLOR Z0:GOSUB 3600:A4$=A2$:GOSUB Z559 3200 GOSUB 4710:GOSUB 3850:A4$="EXIT(Y/N) OR SAVE(S): ":GOSUB Z559 3212 GET #Z2,X:IF X<>Z155 THEN A4$=CHR$(X):MIN=Z20-Z1:GOSUB Z560:GOTO 3212 3215 IF A4$="Y" OR A4$="" THEN GOTO 9 3217 IF A4$="S" OR A4$="" THEN GOSUB 22000:GOTO 20000 3220 GOSUB 3850:A4$=A2$:GOSUB Z559:GOTO 3200 3300 IF ET=Z1 THEN ET=Z0:GOTO 3350 3310 VAN= NOT VAN:IND=IND+Z1:IF VAN>Z0 THEN VAB=VAB-Z3 3320 IF VAN=Z0 THEN VAB=-VAB 3330 VAR=VAR+VAB 3340 COLOR VAR:POKE Z764+Z1,VAR:RETURN 3350 MAX=MIN-EX1 3360 IF MAX=INT(MAX/Z2)*Z2 THEN 3380 3365 IF VAR=Z3 THEN VAB=Z1:VAN=Z0:EX1=Z2:GOTO Z330 3370 EX1=Z3:GOTO Z330 3380 IF VAR=Z3 THEN VAB=Z1:VAN=Z0:EX1=Z3:GOTO 3340 3385 VAR=Z1:VAN=Z1:VAB=-Z2:EX1=Z2:GOTO 3340 3400 T=QR:TT=Z0:GOSUB Z351 3410 OP=Z0:GOSUB Z40 3420 T=T-Z2*PI/Z5/Z10*TS 3430 IF T*TS<(PI-PI/Z2*TS)*TS THEN T=PI-PI/Z2*TS+TS*PI/Z155:TT=Z1 3450 IF T*TS1E+96 THEN GOSUB Z256:GOTO 4210 4250 QU((QR-Z1)*QUA+IZ)=QE:IF O$="P" THEN AMT=AMT+QE 4260 IF O$="B" AND QR=AMT THEN GOSUB 2280 4270 NEXT IZ:RETURN 4400 GRAPHICS QE:POKE Z559,Z0:I0=PEEK(Z560)+PEEK(Z560+Z1)*Z256:GOSUB 4410:POKE I0+Z3,Z70:RETURN 4410 FOR I1=Z0 TO TS:POKE I0+QR+I1,PEEK(I0+IZ+I1):NEXT I1:RETURN 4500 Z=LEN(TI$):Y=INT((Z20-Z)/Z2):I1=PEEK(I0+Z4)+PEEK(I0+Z5)*Z256:FOR T1=Z1 TO Z 4510 O$=TI$(T1):GOSUB Z128:IF X>Z128+Z60+Z4 THEN X=X-Z60-Z4 4520 POKE I1+T1+Y-Z1,X+Z60+Z4:NEXT T1:RETURN 4710 POKE Z764,Z255 4720 IF PEEK(Z764)=Z255 THEN 4720 4730 POKE 764,255:RETURN 4910 XIO Z18,#Z6,Z0,Z0,"S:":RETURN 4920 GRAPHICS Z0:? " PLEASE STAND BY":? "RELOADING PROGRAM.":RUN "D1:GRAPH.BPI:END" 5000 FLG=Z0:? "}";:IF FLG$="B" THEN ? " Ҡ" 5002 IF FLG$="P" THEN ? " Š" 5003 ? " LOT":? " ETRIEVE " 5004 ? " XIT TO MENU" 5005 ? " TYPE FIRST LETTER OF DESIRED":? " OPTION THEN HIT RETURN" 5006 POKE Z752,Z0:? "OPTION: "; 5007 TRAP 5025:INPUT #Z1;P$ 5010 IF P$="R" THEN FLG=Z1:GOTO 10000 5015 IF P$="E" THEN ? "}":GOTO Z17 5020 IF P$="P" THEN 5030 5025 Y=210:GOSUB Z710:? "":GOTO 5006 5030 IF FLG$="B" THEN TRAP 4920:GOTO 2000 5040 IF FLG$="P" THEN GOSUB 2410:GOTO 3000 10000 DEL=0:POKE 710,224:POKE Z752,Z1:? "}":REM FILES ON DISK 10010 IF FLG$="B" THEN FN$="D:*.DAB":? " Ҡ "; 10020 IF FLG$="P" THEN FN$="D:*.DAP":? " Š "; 10030 TRAP 10080:? "ON THIS DISKETTE":? :? " ENTER A '*' TO DELETE A GRAPH FROM THE DISKETTE":? 10040 CLOSE #Z4:OPEN #Z4,Z6,Z0,FN$ 10050 FOR W=Z1 TO Z1 STEP Z0 10060 INPUT #Z4,FNT$:? " ";FNT$(Z1,Z12+Z1) 10070 NEXT W 10080 CLOSE #Z4:? :? :? :? 10100 IF FLG$="B" THEN FN$="D:________.DAB":TRAP 10100 10102 IF FLG$="P" THEN FN$="D:________.DAP" 10110 POKE Z752,Z0:? " FILE NAME ";FN$;""; 10120 FOR W=Z1 TO Z8:GET #Z2,A 10125 IF A=42 AND W=1 AND FLG=1 THEN ? "ŠŠŠŠ":? "";:DEL=1:POKE 710,52 10130 IF A=Z155 THEN POP :GOTO 10155 10132 IF A=32 OR A=42 THEN W=W-Z1:? CHR$(95);"";:NEXT W 10134 IF A=126 AND W<2 THEN W=W-Z1:NEXT W 10135 IF AZ80+Z10 THEN W=W-Z2:IF W>-1 THEN ? "";CHR$(Z80+Z15);"";:NEXT W 10137 IF WZ80+Z10 THEN W=W-Z2:A4$="_":GOSUB Z560:MIN=MIN-Z1:NEXT W 20008 A4$=CHR$(X):FN$(Z2+W,Z2+W)=A4$:MIN=MIN+Z1:GOSUB Z560 20010 NEXT W 20015 IF W