Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0002/
There is 1 other file named in the archive. Click here to see a list.

Robert Smith
Department of Computer Science
Rutgers University

April 1, 1978

Revised, 9-Jul-79, by C. Hedrick
	This memo describes how to put up a version of TENEX SAIL
on either a TENEX (version 31 or later) or TOPS20 (version 3) system.  
As of March, 1979, a few modifications had been added to TENEX
SAIL to facilitate its use on TOPS20 version 3.  These changes 
are described below.
        The complete assembly of TENEX/TOPS20 SAIL is described in TELLEM, the
SAIL implementor's guide.  The sources for all SAIL systems are kept at
SU-AI and maintained there, so  the sources can be obtained  from there
via the ARPA NET. This distribution includes those sources needed to
make the tops-20 version of SAIL.

        Fortunately, it should not  be necessary to reassemble  SAIL in
order to get a working TENEX SAIL system up on a standard TENEX  (KI or
KA 10) system running 1.31 or later, or TOPS20 (KL processor) running
version 3 of TOPS20 or later.  A current, standard TENEX/TOPS20 version
of  SAIL will  be kept  at site  Rutgers on  directory S:<SAIL.TOPS20> and is
available from there via FTP in paged transfer mode.  

	*******WARNING********:  The version of SAIL supplied herein
has the University of Rochester LEAP features turned on.  The only
affect that is supposed to be visible to the user is that he can use
up to 2**18 items, rather than 2**12 which is the normal limit.
The actual implementation is fairly different, as you might imagine.
Because there are differences in GOGTAB between this version and
the standard one, we have set the version number to 9 (i.e.
T-6-SAISG9.EXE, LIBSA9.REL, HLBSA9.REL, etc.).  Should you reassemble
with URLEAP and URHASH off (They are set in TENXSW.), you can continue
to use version number 8.  This is set in HEAD.  However we believe
that anyone that uses LEAP seriously will want the new LEAP, and anyone
who doesn't won't be affected one way or the other.

        FILES FOR THE BASIC COMPILER.   Put  the  following  on  
directory  <SAIL>.   The SAIL
system,  like  the  LISP  system, assumes  that  you  have  a dedicated
directory.  If you are running Tops-20, you should define a system logical device
SAI: as PS:<SAIL>.  Or course if you really wanted to, you could
define SAI: as <SUBSYS> and get along without a separate directory,
but we do not recommend this.  To define SAI:, insert the DEFINE
command into <SYSTEM>3-CONFIG.CMD.  Should you be running Tenex,
logical devices are not used, so all references are to <SAIL>


T-6-SAISG9.EXE          ;runtime segment (.SAV if on Tenex)
			;if you get this through a Tops-10 site, this
			;file will be called SAISG9.EXE, because of
			;the 6-character limit.
HLBSA9.REL              ;"library"
LIBSA9.REL              ;"library"
3OPS3.OPS               ;TENEX opcode table, PDP10 instructions,
BKTBL.BKT               ;default breaktable for STDBRK function
GOGTAB.DEF		;user table definitions file

        Put the following files on some directory in SYS: (<SUBSYS>
on Tenex).  These files can
live anywhere, but the most  natural place is SYS:.  (You  may have
to be a wheel to put them there.)

.stoptext group

SAIL.EXE                ;compiler
			;on Tenex make this have name "SAIL.SAV"
LOWTSA.REL              ;linkage to runtime system
SDDT.REL		;linkage to BAIL for Tops-20 DEBUG command only

	LOADING SAIL programs.  Tops-20 SAIL will automatically
load with LINK if you use the /G switch.  There should be no
problem with recent DEC versions of LINK.  Some Tenex sites
prefer to use LOADER, because their versions of LINK10 are out
of date and do not support SAIL properly.  
If you use LOADER,
you may find that you must reassemble it with an increase in the
assembly parameter RELLEN (the number of REQUIREd files).  This
is especially true if you use BAIL.  If you use LINK, note that
SAIL uses the old format JOBDAT symbols (e.g., JOBSA instead of .JBSA).
There is an assembly switch in LINK for this.  
However, our normal assembly procedure includes appending JOBDAT.REL
to LOWTSA.REL.  Since this copy of JOBDAT.REL contains the old format symbols
you should have no problem.  Sites using a version of LINK with the
old symbols need not append JOBDAT to LOWTSA.
	LINKAGE TO THE EXEC.  The standard EXEC distributed by DEC
for Tops-20 understands about the SAIL compiler.  
Unfortunately it does not realize that SAIL programs need to be
loaded with SYS:LOWTSA.  We have included a patch to make loading
work correctly.  The file EXECCS.DIF contains the patch in source
form.  For sites that do not have EXEC sources, the file FILDDT.DDT
can be used to insert the patch using FILDDT.  Do ENABLE PATCHING
and GET EXEC.EXE.  This will open the file EXEC.EXE.  Then use the
$Y command to DDT.  This will take the file FILDDT.DDT.  (the
file name must be FILDDT.DDT.)  
When $Y is finished (it will take some time.  You will know when
it is finished because the system will type out a carriage-return,
line feed), do a control Z to put out the patches and exit from FILDDT.
If for some reason this does not
work with your FILDDT, we include one in the distribution. Once
this patch is done, you should be
able to use EXECUTE and COMPILE commands.  The DEBUG command will
cause /DEBUG:SDDT to be passed to LINK.  This will load SDDT.REL, which
will in turn require BAIL to be loaded, and set a breakpoint at the
beginning of the program.  This all assumes that an .SM1 file was
produced by the original compilation.  When the EXEC calls SAIL, it
will thus assume /BAIL:17.  However if you run SAIL explicitly, it
will use whatever switches you do or don't set, so you can get yourself
into minor trouble by compiling without /BAIL and then trying to use
the DEBUG command.
If you attempt to compile a program from a different directory
than your connected directory, this will fail.  The DEC EXEC will
pass a Tops-10 PPN (!!!!!), while SAIL expects a directory name.
These problems can be fixed with simple patches to the EXEC, if you
are a source site.
        NEW OPCODE TABLE.   You can make  a new opcode  table 3OPS3.OPS
using the  program MAKTAB.TNX.  This  program reads your  MONSYM.MAC 
(STENEX.MAC or .FAI on Tenex), file and writes  out a new 3OPS3.OPS, including  your jsyses
into the PDP10(KA) instruction set.  To do this,

.stoptext group;

@SAIL                   ;use new compiler
                        ;various messages about compilation
                        ;loader exits

                        ;writes out new opcode table

        The 3OPS3.OPS file supplied has the JSYSes available  at SUMEX.
It will therefore work, but is not optimal.
	INSTALLING BAIL.  The following files should be put on 
directory <SAIL> in order to have the BAIL debugging system available.
.stoptext GROUP;


If you are a Tenex site, you will have to do some reassembly:
This is because certain parts of BAIL have assembly-time conditionals,
and because BAIL and BAIPD9 include require statements for which
the compiler must produce PPN's appropriate for your particular
files are transportable.)
There is a file TENEX.RUN which is supposedly a run file to do what
is needed.  Slight modifications may be needed for your site, depending
upon what loader you use, etc.  You may find it necessary to use the
FAIL.SAV supplied with this distribution to do your compiling, as
BBN's FAIL apparently will not compile SAIL.  (This is a special
version of FAIL for Tenex, since we are told that the standard one
we use for Tops-20 will not run on Tenex.)

        ADDITIONAL FILES.   Several additional  files are  on directory
<XSAIL>.  These include:

PROFIL.SAI              ;the execution counter system
PROFIL.DOC              ;simple description of above -- see
                        ;SAIL MANUAL by Kurt Van Lehn for a

        CURRENT STATE.  At present, there is no new development
of the SAIL language, and issues of maintenance have become
unclear.  In order to support current users, and in order to
make available to TOPS20 users the most complete ALGOL-like language
for use in the TENEX/TOPS20 environment, we are undertaking very
limited maintenance specifically for TENEX and TOPS20 problems.  
	The file SAIL.DOC, included with this distribution,
will indicate the nature of the changes made for Tops-20.
The same code (compiler, object code, and runtime
system) now runs under both TENEX and TOPS20 version 3.
	It is our intention to support TENEX/TOPS20 SAIL to the
extent needed to keep the system from falling completely in its tracks.
At present, we have very limited resources for doing this.  I would
appreciate your reporting any questions/problems to HEDRICK@RUTGERS.  
Suggestions for improvements
will also be appreciated but will, at least for now, be
given low priority.  We would like a list of users, 
so please send us your names.