The critical component for putting S up on a 3B machine
is the Fortran compiler.  On the 3B2, 3B5, 3B15, etc,
it is important that you do not use f77, but instead get the
XLA+ Fortran compiler that uses the hardware Math Accelerator Unit.
The macros in this directory are made to use with the XLA+ Fortran compiler.

Copy cdefs.m to $I/u before starting the SYSGEN process.
	cp cdefs.m $I/u

Copy csmash.r into $S overwriting the existing csmash.r.
	rm -f $S/csmash.r
	cp csmash.r $S

Change $C/makehead so that F77 and F77COMPILE are defined as fort;
define
	F77=fort
	F77COMPILE=fort
	BIGF77 =
and capitalize the "Local variable" in the sed script.

Edit $S/ptds.r and $S/gtds.r. Get rid of automatic declaration for
nwrite and nread.  Also, get rid of the hidden recursion to routines
ptds2 and gtds2 -- eliminate those routines and make the any calls
to ptds and gtds directly.

Change $M/yylex.r to change the call
	call dectok(yylex,yylval)
to
	call dectok(iyylex,yylval)
	yylex = iyylex


Change $QPE/Makefile and $QPE/S_makefile:

F77=fort
SYSLIB= /usr/lib/fp/libfortF77.a /usr/lib/fp/libfortM77.a /usr/lib/fp/libfortI77.a -lm

Also, define UNDEF as
UNDEF = -u ld_init -u Sfun

Add to $QPE/main.c (after the #includes):

F_CHARSTRUCT f_buf1;

On one occasion, the compiler gave up compiling linear.r.
I broke it into two approximately equal sized parts and each part compiled ok.
Then I used ld -r to put the two .o files back into linear.o.
There may be compiler flags that will get around this problem.

If you are using an older version of the C compiler,
(to find out which version you have, type "cc -V" and look at the
output; the troublesome compiler version prints
cc: command -C-FP+ Release 1.0 12/2/85 )
you may have troubles in compiling routine $QPE/pratom.c.
You may have to change the lines
       start = floor(tsp->value.Double[0]);
       end = floor(tsp->value.Double[1]);
       freq = round(tsp->value.Double[2]);
       frag = frac(tsp->value.Double[0]);
 to
       junk=tsp->value.Double[0];
       start = floor(junk);
       junk=tsp->value.Double[1];
       end = floor(junk);
       junk=tsp->value.Double[2];
       freq = round(junk);
       junk=tsp->value.Double[0];
       frag = frac(junk);
