BSD 2 development
[unix-history] / .ref-BSD-1 / pi / READ_ME
November 9, 1977
This directory contains the source necessary to make a new pi.
Many of the files in this directory were linked to files with the same
name in the directory ../pxp, but the links were broken by tp.
There is a binary of pi here that should work immediately.
If you have floating point or with the simple system change in
../READ_ME. If you have to give a different number to the system
call, you can simply reassemble the floating point interpreter and
reload pi via
load -i
To print a copy of pi: printpi
To make a new pi: makepi
Read the file ../SETUP before you bother with any of this.
The compiler made by makepi is suitable for running on an 11/45 or 11/70
which has hardware floating point. If you don't have hardware floating
point, it is not possible to run separate I/D using the standard interpreter.
Standard version 6 UNIX does not have the needed system call to allow
it to fetch the floating point opcode from instruction space, and the
mfpi instruction doesn't work on 11/70's. A simple system change to add
a "mfpi" system call is explained in ../SETUP; the floating point interpreter
which uses this system call is in ../fpterp.
This tape does not contain a Pascal system which will run on
11/34's or 11/40's. Chuck and I were misinformed that
11/34's would have sep I/D so we went to a one pass compiler scheme.
It should be possible to make a smaller "pi" or a two pass "pi" without
a great deal of effort. Earlier versions of the translator
"pi" were small enough to run without separate I/D, and a still earlier "pc"
was two rather much smaller passes.
The following non-standard programs are needed to compile pi:
rmtree Remove a subtree of the directory system
mvall Move a named group of files to a specified directory
cc Version 7 C compiler
lnall Make links to a number of files in a specified
target directory
squash reduce object file size for library
not needed, just speeds loading and reduces
library size
mkstr Program to process C source putting error messages
into an error message file
eyacc Modified yacc
In addition, the scripts here run with a shell that has a "set" command
to enable automatic timing of commands. You can comment out the lines
of the form
set ...
without any harm, or make a null set shell script.
Other local shell features used here are the alias "cd" for chdir and
the syntax "$*" expanding to all the arguments, i.e. "$1 $2 $3 ...".
Note: it is normal for the grammar to have a number of shift/reduce
conflicts; a message of the form
conflicts: 16 shift/reduce
(or worse) from yacc is to be expected.
Defining the variable DEBUG on the first line of the file 0.h allows
the following debugging options
c print generated code
y dump namelist
E trace basic syntactic error recovery
F full trace syn err rec
A super full trace ...
U prevent unique symbol insertion in error recovery
As this option makes a much larger compiler it is not normally recommended.
The syntactic error recovery relatively new code.
It has not been as thoroughly tested as the rest of the system.
Please let me know of any problems with Pascal, especially with the
error recovery. I would be glad to hear of any problems, as well as
any local modifications which you find necessary or desirable.
Bill Joy
Computer Science Division
EECS Department
University of California, Berkeley
Berkeley, California 94704
Office: (415) 642-4948
Home: (415) 524-4510