File: GRAPH.FC of Tape: Sources/Focal/fc3
(.FC,.FO Focal format converted to 'WRITE' listing) 

C-PS/8 FOCAL, 1971

01.01 C     GRAPH BY STEVE POULSEN
01.02 C     OMSI SOFTWARE DEVELOPEMENT GROUP
01.03 C     LAST CHANGE: 8/31/71
01.04 C     ***** TEKTRONIX T-4002 GRAPHICS TERMINAL REQUIRED *****
01.05 
01.06 C     THIS PROGRAM WILL GRAPH ANY TWO DIMENSIONAL EQUATION ON
01.07 C AN EUCLIDEAN GRAPH.  TYPE ANYTHING BUT YES IF YOU WANT TO
01.08 C INPUT AN EQUATION WHEN ASKED IF THE EQUATION IS IN, AND THE
01.09 C COMPUTER WILL INTERRUPT THE PROGRAM AND ALLOW YOU TO MODIFY ITS
01.10 C INPUT EQUATION.  IF YOU CHOOSE NOT TO MODIFY THE EQUATION,
01.11 C THE PROGRAM WILL ASSUME Y=FSIN(X).  TYPE AN '=' AFTER THE
01.12 C CARRIAGE RETURN AND YOU WILL GET THE FIRST PART OF THE EQUATION
01.13 C SINCE IT IS IN MODIFY MODE.  REMEMBER, THE EQUATION MUST BE Y
01.14 C IN TERMS OF X.
01.15 C ** X OFFSET IS THE VERTICAL DISPLACEMENT OF THE X AXIS.
01.16 C ** Y SCALING FACTOR SETS THE VERTICAL PLOT LIMIT OF THE SCREEN.
01.17 C ** X INCREMENT IS THE STEP.  (EX: .001,.1,1,2,10,100,ETC.)
01.18 C WHEN INPUTTING YOUR EQUATION, REMEMBER THAT YOU ARE USING MODIFY
01.19 C IN FOCAL SO SINE AND COSINE (AND ALL OTHERS) MUST BEGIN WITH F.
01.20 E
01.21 I ((#/3)-FITR(#/3)) 1.22,1.28,1.22
01.22 T "YOU DO NOT HAVE ENOUGH FEATURES."
01.23 T "  RESTART FOCAL WITH FEATURE 2.",!;Q
01.24 
01.28 A !%6.03,"HAVE YOU ENTERED THE EQUATION? ",A1;I (A1-0YES) 1.29,1.3;
01.29 T !"ENTER EQUATION OF Y IN TERMS OF X"!!;M 30.1
01.30 A !"LOWER LIMIT OF X? ",X1,"UPPER LIMIT OF X? ",X2,"X INCREMENT",X3
01.40 A !"X OFFSET? ",X4,"Y SCALING FACTOR? ",Y1
01.50 S XS=1000/(X2-X1);S XC=-X1*XS
01.60 S YS=Y1*XS
01.70 S YC=380+X4*YS
01.80 F Q7=0,.2,FOUT(24);

02.10 I (XC) 2.5;I (1020-XC) 2.5;S Q8=FDIS(0,XC,0)+FDIS(1,XC,780)
02.20 S D1=FITR(FLOG(50/YS)/FLOG(10));S DV=FEXP(D1*FLOG(10))
02.25 S Q8=FOUT(1);T "Y UNITS:",DV
02.30 F U1=FITR(-YC/(YS*DV))*DV,DV,FITR((760-YC)/(YS*DV))*DV;D 5.1
02.50 I (YC) 3.1;I (780-YC) 3.1;S Q8=FDIS(0,0,YC)+FDIS(1,1020,YC)
02.60 S D1=FITR(FLOG(50/XS)/FLOG(10));S DV=FEXP(D1*FLOG(10))
02.65 S Q8=FOUT(1);T !"X UNITS:",DV
02.70 F U1=FITR(-XC/(XS*DV))*DV,DV,FITR((1020-XC)/(XS*DV))*DV;D 5.2

03.10 S I=0
03.20 F X=X1,X3,X2;D 30.1;D 4
03.30 S Q8=FOUT(1);T !!!;Q

04.10 S XP=XC+X*XS;S YP=YC+Y*YS
04.40 S R=FSQT((510-XP)^2+(510-YP)^2);I (R-510) 4.5;S I=0
04.50 S Q9=FDIS(I,XP,YP);I (R-510) 4.6;R
04.60 S I=1

05.10 S Q8=FDIS(0,XC-5,YC+YS*U1)+FDIS(1,XC+5,YC+YS*U1)
05.20 S Q8=FDIS(0,XC+XS*U1,YC-5)+FDIS(1,XC+XS*U1,YC+5)

30.10 S Y=FSIN(X)