Web pdp-10.trailing-edge.com

Trailing-Edge - PDP-10 Archives - decuslib10-05 - 43,50337/23/scales.sim
There is 1 other file named scales.sim in the archive. Click here to see a list.
```OPTIONS(/E);
! Procedure SCALESTEP calculates variables
! suitable for axis design.
! PMAX is input max (rough) value and at return justified max value.
! PMIN ditto min.
! PTICS is number of increments along axis (Result parm.)
! SCALESTEP is size of axis increment.
;
REAL PROCEDURE scalestep(pmax,pmin,ptics);
NAME pmax,pmin,ptics;   REAL pmax,pmin;   INTEGER ptics;
BEGIN
REAL max,min,width,d;
INTEGER n0,n1,pow;

max:= pmax;   min:= pmin;

width:= Abs(max - min);
IF width NE 0 THEN
BEGIN

WHILE width > 10 DO
BEGIN    width:= width*0.1;   pow:= pow + 1   END;
WHILE width <= 1 DO
BEGIN   width:= width*10;   pow:= pow - 1   END;

! Normalize width ;
IF width NE Entier(width) THEN
width:=
IF width > 8    THEN 10 ELSE
IF width > 1.5  THEN Entier(width+1) ELSE
IF width > 1.25 THEN 1.5 ELSE 1.25;

! Calculate normalized increment ;
d:=
IF width >= 8.0 THEN 2 ELSE
IF width > 3.5  THEN 1 ELSE
IF width > 1.6  THEN 0.5 ELSE 0.25;

! Now scale normalized increment d ;
WHILE pow > 0 DO
BEGIN   d:= d*10;    pow:= pow - 1   END;
WHILE pow < 0 DO
BEGIN   d:= d*0.1;   pow:= pow + 1   END;

! Calculate number of increments ;
n1:= Entier(max/d);    IF n1*d < max THEN n1:= n1 + 1;
n0:= Entier(min/d);

ptics:= n1 - n0;

pmax:= n1*d;   pmin:= n0*d;

scalestep:= d;

END width NE 0;

END of scalestep;
```