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:? :? "ALKENDIAGRAMM":? "REISDIAGRAMM":? "NDE" 18 POKE Z82,Z6-3:? :? "GEBEN SIE DEN ANFANGSBUCHSTABEN DER":? "GEWUENSCHTEN FUNKTION EIN UND" 19 ? "DRUECKEN SIE RETURN" 20 ? " OPTION: ";:INPUT #Z1,O$:FLG$=O$:IF O$="B" THEN POKE Z82,Z3:GOTO 5000 21 IF O$="K" THEN GOSUB 2410:POKE Z82,Z3:GOTO 5000 22 IF O$="E" THEN POKE Z82,Z2:GRAPHICS Z0:NEW 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:? "DIAGRAMME BESTEHEN AUS",,"1 BIS 32 SPALTEN" 2005 ? "BALKEN DARGESTELLT WERDEN":TRAP Z255 2010 TRAP 2045:? "1 BIS 3 GROESSEN KOENNEN ZUSAMMEN","DARGESTELLT WERDEN":? :? "WIEVIELE WUENSCHEN SIE: ";:INPUT #Z1,AMT 2020 IF AMTZ3 THEN GOTO 2010 2030 TT=Z20+Z12:TU=Z1:A$="SPALTE ":GOSUB 4100:FOR QR=Z1 TO AMT:? "}":? "WERTE DER GROESSEN ";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 2348 2342 GOTO 2350 2348 ? :? " DARSTELLUNG NICHT MOEGLICH":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 ? "DAS KREISDIAGRAMM KANN 1 BIS 12":? " KREISSEGMENTE DARSTELLEN":GOSUB 4010:TT=Z12:TU=Z6 3008 A$="SEGMENT":GOSUB 4100 3030 TRAP Z255:? "}GEBEN SIE DIE ZAHLEN EIN FUER":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$="ENDE(J/N) ODER PEICHERN: ":GOSUB Z559 3212 GET #Z2,X:IF X<>Z155 THEN A4$=CHR$(X):MIN=Z20+Z1:GOSUB Z560:GOTO 3212 3215 IF A4$="J" OR A4$="" THEN GOTO 9 3217 IF A4$="S" OR A4$="" THEN 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$="K" 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:? " BITTE, GEDULDEN SIE SICH":? "PROGRAMM WIRD NEU GELADEN.":NEW 5000 FLG=Z0:? "}";:IF FLG$="B" THEN ? " " 5002 IF FLG$="K" THEN ? " " 5003 ? " EICHNEN":? " ADEN" 5004 ? " ENU ANZEIGEN" 5005 ? " GEBEN SIE DEN ANFANGSBUCHSTABEN DER":? " GEWAEHLTEN OPTION UND EIN" 5006 POKE Z752,Z0:? "OPTION: "; 5007 TRAP 5025:INPUT #Z1;P$ 5010 IF P$="L" THEN FLG=Z1:GOTO 10000 5015 IF P$="M" THEN ? "}":GOTO Z17 5020 IF P$="Z" THEN 5030 5025 Y=210:GOSUB Z710:? "":GOTO 5006 5030 IF FLG$="B" THEN TRAP 4920:GOTO 2000 5040 IF FLG$="K" THEN GOSUB 2410:GOTO 3000 10000 DEL=0:POKE 710,224:POKE Z752,Z1:? "}" 10030 TRAP 10080 10080 CLOSE #Z4:? :? :? :? 10100 TRAP 10100 10155 IF W