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