File psl-1983/20-dist.lpt artifact 155f9bf099 part of check-in eb17ceb7f6


Utah Symbolic Computation Group                        April 1982
Operating Note No. 62












                          Release Notes

                     DEC-20 V3.1 PSL System
                     DEC-20 V3.1 PSL System
                     DEC-20 V3.1 PSL System


            M. L. Griss, E. Benson and R. R. Kessler

                 Utah Symbolic Computation Group
                   Computer Science Department
                       University of Utah
                   Salt Lake City, Utah 84112
                         (801)-581-5017

                          8 March 1983




                            ABSTRACT
                            ABSTRACT
                            ABSTRACT


This note describes how to install the DEC-20 version of PSL.















Work  supported  in part by the National Science Foundation under
Grants MCS80-07034 and MCS81-21750,  and  by  development  grants
from  Boeing,  Patil  Systems,  Lucas  Film,  Wicat  and  Hewlett
Packard.
DEC-20 PSL Release                                         Page 2


1. INTRODUCTION
1. INTRODUCTION
1. INTRODUCTION

  The  attached  DUMPER  format  tape  contains most of the files
needed to use and maintain the DEC-20 PSL system. At UTAH we have
a <PSL> main directory, with a number  of  sub-directories,  each
containing  a  separate class of file, such as common interpreter
and compiler sources, DEC-20 sources, VAX sources, 68000 sources,
help files, etc.  This multi-directory structure  enables  us  to
manage  the  sources  for  all machines in a reasonable way. Most
people running PSL on the DEC-20 will not be interested in all of
the files, and certainly will not want to have them all on line.


  We  have  therefore  created  the  tape  to  enable  either   a
multi-directory  or  single  directory  model;  a  set of logical
device definitions will be TAKEn by the user (usually inserted in
the LOGIN.CMD file). Each separate distribution  directory  is  a
separate  SAVESET  on the attached dumper format tape, and so may
be individually restored into a common (<PSL> at Utah) directory,
or into appropriate sub-directories (<PSL.*> at Utah).



2. DISCLAIMER
2. DISCLAIMER
2. DISCLAIMER

  Please be aware that this is a PRELIMINARY release, and some of
the files and documentation are not quite complete; we  may  also
have  forgotten  some  files,  or sent incorrect versions. We are
releasing this preliminary version to you at this time to enhance
our collaborative research, and we expect the files  to  continue
to change quite rapidly as the system and distribution is tested.


  For these reasons please:


   a. Make a note of ANY problems, concerns, suggestions you
      have,  and  send  this  information  to  us  to aid in
      improving the system and this distribution mechanism.

   b. Please  do  not  REDISTRIBUTE  any  of  these   files,
      listings  or  machine readable form to anyone, and try
      to restrict access to a small group of users.
DEC-20 PSL Release                                         Page 3


3. CONTENTS OF THE TAPE
3. CONTENTS OF THE TAPE
3. CONTENTS OF THE TAPE

  Attached  to this note is a copy of the DUMPER run that created
the tape, indicating the savesets,  the  file  names,  and  sizes
needed to restore each saveset.


  The tape contains the following SAVESETS (current logical names
are included in [] after each saveset definition):


PSL             The  executable  files  (PSL.EXE  and RLISP.EXE),
                this  20-DIST.DOC  file,  .CMD  files  to  define
                appropriate logical names and a sample message to
                announce  PSL availability.  Also, included are a
                number of news files announcing new features  and
                changes,  some  files  associated  with the NMODE
                editor and a version of  psl  (PSLCOMP.EXE)  that
                will  compile the argument on the execution line.
                [psl:]


COMP            Common compiler, LAP, FASL sources. [pc:]


20COMP          DEC-20 specific compiler, LAP and  FASL  sources.
                [p20c:]


DOC             Miscellaneous   documentation   files,  including
                random notes on new features. [pd:]


DOCNMODE        NMODE documentation files. [pnd:]


EMODE           The EMODE screen editor sources and documentation
                to permit Driver  Customization.  *.b  files  for
                drivers  other than TELERAY are on LAP directory,
                have to load after loading EMODE itself. [pe:]


GLISP           An object oriented LISP. [pg:]


HELP            A set of *.HLP files, describing  major  modules.
                [ph:]


KERNEL          Machine Independent kernel sources. [pk:]
DEC-20 PSL Release                                         Page 4


P20             DecSystem 20 dependent kernel sources. [p20:]


LAP             Mostly  binary  FASL  (*.B) files, with some LISP
                files (*.LAP) for loading multiple  .B  files  of
                loadable (optional) modules. [pl:]


LPT             The   PSL   manual   in   printable   form   (has
                overprinting and  underlining),  as  SCRIBE  .LPT
                files. [plpt:]


NMODE           The  NMODE  text editor sources, which is a newer
                version  of  EMODE  developed  at   HP   Research
                Laboratories. [pn:]


NONKERNEL       The  sources  that are not in the kernel, but are
                kernel related.  [pnk:]


PT              A set of timing and test files. [pt:]


PT20            DecSystem 20 specific test files. [p20t:]


UTIL            Sources for most utilities, useful as examples of
                PSL and RLISP code, and for customization. [pu:]


WINDOWS         The window support functions used by NMODE. [pw:]
DEC-20 PSL Release                                         Page 5


4. INSTALLING PSL
4. INSTALLING PSL
4. INSTALLING PSL

  When  installing  the  PSL system, you have two options for the
directory structure.  You may utilize a single directory for  all
of   the   file,  or  you  may  create  a  directory  tree  using
subdirectories.    The  Utah  group  utilizes  a  directory  tree
structure  and recommends its use when installing a "full" system
(that  includes  all  of  the  sources  and  the  capability   of
rebuilding  any  part of the system).  However, if only a minimal
system  is  desired,  it  can  be  accomplished  using  a  single
directory.


4.1. Retrieve Control Files
4.1. Retrieve Control Files
4.1. Retrieve Control Files

  Whether   building   a  single  directory  system  or  multiple
directory system, logical name definition files and file  restore
control  files  must  be first retrieved.  Therefore, first mount
the dumper tape, at 1600 BPI (verify that there is no write  ring
in  the  tape).   Then, define X: as the appropriate tape device,
MTAn:, or use MOUNT if running a labeled tape system:  


@DEFINE X: MTAn:             or    @MOUNT TAPE X:
@ASSIGN X:


  Restore from the first saveset (PSL) the .cmd and .ctl files


   @DUMPER
   *tape X:
   *density 1600
   *files
   *account system-default
   *restore <*>*.c* *.*
   *rewind
   *exit


These files will be restored to  your  connected  directory,  and
should be copied to your main PSL directory after their creation.


4.2. Create a single subdirectory
4.2. Create a single subdirectory
4.2. Create a single subdirectory

  Create  a directory, call it <name> and define a logical device
PSL:  (a size of about 2600 should be sufficient).


  Any <name> will do, since the logical device name PSL: will  be
used.
DEC-20 PSL Release                                         Page 6


   @DEF PSL: <name>


  Copy the minimal-* restored files to PSL


   @COPY minimal-*.* PSL:*.*


  Now  edit the file PSL:minimal-logical-names.cmd to reflect the
your choice of <name>.


  Also  put   @TAKE   <name>minimal-logical-names.cmd   in   your
LOGIN.CMD.


  Finally,  restore  the  minimal  system  by  DOing the minimal-
restore.ctl file:


   @DO MINIMAL-RESTORE
   @DEASSIGN X:          or             @DISMOUNT  X:
DEC-20 PSL Release                                         Page 7


4.3. A MULTIPLE SUB-DIRECTORY SYSTEM
4.3. A MULTIPLE SUB-DIRECTORY SYSTEM
4.3. A MULTIPLE SUB-DIRECTORY SYSTEM

  If  you  plan  to do much source modification, or a significant
number of rebuilds, or  maintain  a  compatible  multiple-machine
version  of  PSL,  or  attempt  retargeting  of  PSL, a multiple-
directory structure such as that at UTAH should be built.


  The file FULL-LOGICAL-NAMES.CMD, retrieved above should be used
as a guide to building the sub-directories. We use  at  least  16
sub-directories  for  the  Common  Sources  and  DEC-20  specific
sources, and have at least an extra two  for  each  new  machine.
Consult  the  20-DIST.LOG  file  supplied  with the PSL tape as a
guide for the amount of space required  for  each  sub-directory.
The  current set of directories for DEC-20 PSL, the logical names
that we use,  and  rough  space  estimate  follows.    Build  the
sub-directories with a somewhat larger working space allocation.


  Now  edit  the  file  PSL:full-logical-names.cmd to reflect the
your choice of <name>.


  Also put @TAKE <name>full-logical-names.cmd in your LOGIN.CMD.


4.4. Build Sub-Directories
4.4. Build Sub-Directories
4.4. Build Sub-Directories

  Then use the system command, BUILD, to build each sub-directory
with the name Pxxx:,  as  follows.  Assistance  from  the  system
manager   may   be   required   to   permit   the   creation   of
sub-directories, and  the  appropriate  choice  of  sub-directory
parameters:


    @BUILD Pxxx:
    @@PERM nnnn           ! choose appropriate size
    @@WORK wwww           ! nnnn+extra
    @@FILES-ONLY          ! Can't login
    @@GEN 2               ! Retain 1 previous version
    @@PROTECTION 777700   ! Give group access
    @@DEFAULT    777700
    @                      ! that are permitted access


  To  make  this  process easier, we have created a control file:
CREATE-DIRECTORIES.CTL that will build all of the  subdirectories
with  sizes  such  that  restoration  of  the files will succeed.
Therefore, after editing the full-logical-names.cmd file above to
reflect the correct logical names, simply DO the CTL  file  (some
systems  use MIC instead of DO, so that may be substituted in the
following examples) :
DEC-20 PSL Release                                         Page 8


    @DO CREATE-DIRECTORIES.CTL


  This will create directories with the following sizes (note the
recommended names):


define psl: <psl>               ! Executable files and misc.
                                ! -- About 6300 for all psl
                                ! -- 1000 for it alone
define pc: <psl.comp>           ! Compiler sources
                                ! -- 125 pages
define p20c: <psl.20-comp>      ! 20 Specific Compiler sources
                                ! -- 75 pages
define pd: <psl.doc>            ! Documentation files
                                ! -- 275 pages
define pnd: <psl.doc-nmode>     ! NMODE documentation files
                                ! -- 150 pages
define pe: <psl.emode>          ! EMODE support and drivers
                                ! -- 225 pages
define pg: <psl.glisp>          ! GLISP sources
                                ! -- 425 pages
define ph: <psl.help>           ! Help files
                                ! -- 125 pages
define pk: <psl.kernel>         ! Kernel Source files
                                ! -- 225 pages
define p20k: <psl.20-kernel>    ! 20 Specific Kernel Sources
                                ! -- 500 pages
define pl: <psl.lap>            ! LAP files
                                ! -- 700 pages
define plpt: <psl.lpt>          ! Printer version of Docs
                                ! -- 450 pages
define pn: <psl.nmode>          ! NMODE editor files
                                ! -- 375 pages
define pnk: <psl.nonkernel>     ! Nonkernel Sources
                                ! -- 5 pages
define pt: <psl.tests>          ! Test files
                                ! -- 200 pages
define p20t: <psl.20-tests>     ! 20 Specific Test files
                                ! -- 600 pages
define pu: <psl.util>           ! Utility program sources
                                ! -- 600 pages
define p20u: <psl.20-util>      ! 20 Specific Utility files
                                ! -- 75 pages
define pw: <psl.windows>        ! NMODE Window files
                                ! -- 75 pages


  Finally,  restore the full system by DOing the full-restore.ctl
file:
DEC-20 PSL Release                                         Page 9


   @DO FULL-RESTORE
   @DEASSIGN X:          or             @DISMOUNT  X:


4.5. Announce the System
4.5. Announce the System
4.5. Announce the System

  Send  out  a Message to all those interested in using PSL.  The
file BBOARD.MSG is a suggested start.


  Edit  as  you  see  fit,  but  please  REMIND  people  not   to
re-distribute the PSL system and sources.


  You may also want to set the directory protection to 775200 and
limit  access  only  to those that you feel should have access at
this time.


4.6. Summary of Restoration Process
4.6. Summary of Restoration Process
4.6. Summary of Restoration Process

  In summary, first retrieve the cmd and ctl files from the first
saveset on the DUMPER tape.  Then choose  a  single  or  multiple
directory  system  and  edit the appropriate logical name file to
reflect the directory name(s).  If creating a multiple  directory
system  use the create-directories.ctl control file to build each
directory.  Then run the appropriate file retrieval control file.
Finally, announce the system to any interested users.



5. REBUILDING LOADABLE MODULES
5. REBUILDING LOADABLE MODULES
5. REBUILDING LOADABLE MODULES

  Most of the utilities, and many of the more experimental  parts
of  the system are kept as binary FASL files (with extensions .b)
on the PL:  directory.  EMODE and NMODE are  currently  the  only
major  sub-systems that have there own set of sub-directories. In
some cases (usually large sub-systems, or sub-systems that  share
modules)  there  are  a  number of .B files, and a .LAP file that
loads each .B file in turn. The PSL LOAD function will look first
for a .B file, then a .LAP file first on the user directory, then
on PL: (both this "search" path and the order of  extensions  can
be changed).


  In  order  to  ease the task of rebuilding and modifying the .B
files, we have a small utility, BUILD.  To use BUILD for a module
you call xxxx, prepare a file called xxxx.BUILD, which has  RLISP
syntax  commands  for  loading the appropriate source files.  The
file can also have various  CompileTime  options,  including  the
loading  of  various  .B  files to set up the correct compilation
environment.
DEC-20 PSL Release                                        Page 10


  Then  run PSL:RLISP, LOAD BUILD; and finally enter BUILD 'xxxx;
this will do a FASLOUT to "PL:xxxx", input the  xxxx.BUILD  file,
and finally close the FASL file.


  The  target  file  "PL:xxxx"  is constructed using the variable
"BuildFileFormat!*", initialized in the file PU:Build.Red .


  For example, consider the contents of PU:Gsort.Build:


    CompileTime load Syslisp;
    in "gsort.red"$


  Note that the SYSLISP module is required,  since  some  of  the
fast sorting functions in GSORT are written in SYSLISP mode.


  GSORT is then rebuilt by the sequence:


    PSL:RLISP
    LOAD BUILD;
    BUILD 'GSORT;
    QUIT;


  This  is  such  a  common  sequence  that  a MIC file (MIC is a
parameterized DO facility) PU:BUILD.MIC is provided, and is  used
by passing the module name to MIC, after connecting to PU:  


    @mic BUILD GSORT


  is all that is required.



6. REBUILDING THE INTERPRETER
6. REBUILDING THE INTERPRETER
6. REBUILDING THE INTERPRETER

  A running `rlisp' is required to rebuild the basic interpreter,
since  the  entire  system  is  written  in  itself.   The kernel
modules, rather than being compiled to FASL files,  are  compiled
                  _____                                     ____
to assembly code (MACRO) and linked using the system loader LINK.
                  ____ _____ _____ ___
The  command file P20C:DEC20-cross.CTL is executed to produce the
                _ _____ _____
cross compiler, S:DEC20-cross (S: should be set to an appropriate
scratch directory).  The modules in the kernel are represented by
          ___   _____                            __ ______ __  __
the files P20:*.build.    There  is  a  program  PU:kernel.sl  or
__ ______ _
PL:kernel.b which generates command files for building the kernel
DEC-20 PSL Release                                        Page 11


                                       ___ __ ______ ___ __
when  parameterized  for  Tops-20  by  P20:20-kernel-gen.sl.  The
specific modules which are in the kernel are only listed in  this
                                   ______
file,  in the call to the function kernel.  This generates a file
____ ___          ____ _____
xxxx.CTL for each xxxx.build.


6.1. Complete Kernel Rebuild
6.1. Complete Kernel Rebuild
6.1. Complete Kernel Rebuild

  A complete rebuild is accomplished by the following  steps.  At
Utah  we  use  a <scratch> directory for some intermediate files.
Define S:   to  be  this  directory  or  some  other  appropriate
location  that  can  be  deleted  when done. Below we use @SUBMIT
xxxx.CTL to run batch jobs; on some systems, @DO xxxx.CTL can  be
used instead, or on others, @MIC xxxx.CTL may be used.


  Begin by defining S: as <scratch> or other scratch directory:


      @DEFINE S: <scratch>


  Now connect to <psl.20-comp> and rebuild NEW-DEC20-CROSS.EXE:


      @CONN P20C:


      @SUBMIT NEW-DEC20-CROSS.CTL


  Copy  the  <psl.comp>BARE-PSL.SYM to 20.SYM, and regenerate the
appropriate  .CTL  files.  This   saves   the   old   20.SYM   as
PREVIOUS-20.SYM:


      @CONN P20:


      @SUBMIT P20:FRESH-KERNEL.CTL


  Rebuild  each  module  (xxxx) in turn, using its xxxx.CTL. This
creates xxxx.MAC and Dxxxx.MAC files, and assembles each to  make
xxxx.REL  and  Dxxxx.REL.    The entire set is submitted with the
file ALL-KERNEL.CTL, which submits each file in turn.  (Note that
these must be done sequentially, not simultaneously.  If you have
more than one batch stream, make sure that these are run one at a
time):


       @SUBMIT ALL-KERNEL.CTL
DEC-20 PSL Release                                        Page 12


  Build  the  main  module, which converts the accumulated 20.SYM
into heap and symbol-table initialization:


      @SUBMIT P20:MAIN.CTL


  Finally LINK  the  xxxx.REL  and  Dxxxx.REL  files  to  produce
S:BARE-PSL.EXE:


      @SUBMIT P20:PSL-LINK.CTL


  Execute  and  save  as  PSL.EXE,  reading appropriate xxxx.INIT
files (note, each site usually customizes the PSL environment  to
suit their needs, therefore we recommend that you create your own
version of Make-psl.ctl to perform this task).


      @SUBMIT P20:MAKE-PSL.CTL


  Finally, run MAKE-RLISP.CTL as needed:


      @SUBMIT P20:MAKE-RLISP.CTL


  Rlisp.exe  and  Psl.exe  will  be saved on the <PSL> directory.
You now may want to delete any xxx.log files that where created.


        @DEL P20:*.LOG
        @DEL P20C:*.LOG


6.2. Partial or Incremental Kernel Rebuild
6.2. Partial or Incremental Kernel Rebuild
6.2. Partial or Incremental Kernel Rebuild

  Often, only a single kernel file needs to  be  changed,  and  a
complete  rebuild  is not needed. The PSL kernel building process
permits  a   (semi-)independent   rebuilding   of   modules,   by
maintaining  the  20.SYM  file to record Identifier Numbers, etc.
The 20.SYM file from the recent full-rebuild, and xxxx.INIT files
are required, as are the "xxxx.REL" and "Dxxxx.REL". The  partial
rebuild  will replace the "mmmm.REL", "Dmmmm.REL" and "mmmm.INIT"
files,  modify  "20.SYM",  and  then  rebuild  the  MAIN  module.
Assuming  that  a  recent  full  rebuild has been done, a partial
rebuild of module "mmmm", is accomplished by the following steps.


  As above, S: is required for "Scratch" space.
DEC-20 PSL Release                                        Page 13


  Define S: as <scratch> or other scratch directory:


      @DEFINE S: <scratch> 


  Rebuild DEC20-CROSS.EXE, if needed:


      @SUBMIT P20C:DEC20-CROSS.CTL


  Rebuild  the  module  (mmmm),  using its mmmm.CTL. This creates
mmmm.MAC and Dmmmm.MAC files, and assembled each to make mmmm.REL
and Dmmmm.REL.  See the file ALL-KERNEL.CTL for current modules.


      @SUBMIT P20:mmmm.CTL
        Other modules can be done after this


  Rebuild the main module, which converts the accumulated  20.SYM
into  heap  and  symbol-table  initialization:  (This step can be
omitted if  20.SYM  has  not  been  changed  by  the  incremental
recompilation.)


      @SUBMIT P20:MAIN.CTL


  Finally  LINK  the  xxxx.REL  and  Dxxxx.REL  files  to produce
S:BARE-PSL.EXE:


      @SUBMIT P20:PSL-LINK.CTL


  Execute and save  as  PSL.EXE,  reading  appropriate  xxxx.INIT
files:


      @SUBMIT P20:MAKE-PSL.CTL


  Finally, run MAKE-RLISP as needed:


      @SUBMIT P20:MAKE-RLISP.CTL


  Note  that  20.SYM  may  be changed slightly to reflect any new
symbols encountered, and certain generated symbols. Occasionally,
DEC-20 PSL Release                                        Page 14


repeated  building  of  certain modules can cause 20.SYM to grow,
and then a full rebuild may be required.


6.3. Rebuilding RLISP.EXE from PSL.EXE
6.3. Rebuilding RLISP.EXE from PSL.EXE
6.3. Rebuilding RLISP.EXE from PSL.EXE

  The PSL executable file, PSL.EXE, is a fairly bare system,  and
is  usually  extended  by loading appropriate utilities, and then
saving this as a new  executable.  We  have  provided  RLISP.EXE,
which  includes  the compiler, and the RLISP parser. RLISP.EXE is
built from PSL.EXE by the following commands:


   @TAKE PSL:minimal-logical-names.cmd
   @PSL:PSL.EXE
   (LOAD COMPILER RLISP INIT-FILE)
            % Also LOAD any other modules that
            % should be in your "standard" system
   (SAVESYSTEM "PSL 3.1 Rlisp" "PSL:rlisp.exe" '((Read-init-file
       "rlisp")))
            % The string is the Welcome Message, the save file
            % name and the startup expression to read rlisp.init.
   (QUIT)


  We have provided a command file,  P20:MAKE-RLISP.CTL  for  this
purpose.  Edit it to reflect any modules that local usage desires
in  the  basic  system  (EMODE,  PRLISP,  USEFUL, etc. are common
choices).


  In a similar fashion, a customized PSL.EXE could be  maintained
instead  of  the  "bare"  version  we  provide. In order to avoid
destroying PSL entirely, we suggest that you maintain a  copy  of
the  supplied PSL.EXE as BARE-PSL.EXE, and customize your PSL.EXE
from it.



7. RELATIONSHIP TO PSL 3.0
7. RELATIONSHIP TO PSL 3.0
7. RELATIONSHIP TO PSL 3.0

  This new  version  3.1  is  a  complete  release,  and  totally
replaces   the   previous   PSL   3.0   that   underwent  limited
                         __ ___ ___ ___       __ ____ ___
distribution. The files  pd:bug-fix.log  and  pd:bugs.txt  record
many  of  the  changes  and bug fixes that occurred since version
3.0.
DEC-20 PSL Release                                        Page 15


8. FUTURE UPDATES
8. FUTURE UPDATES
8. FUTURE UPDATES

  It  is  currently  envisioned that future updates will still be
complete releases.  It is therefore suggested that you


   a. Retain this distribution tape in case you may have  to
      compare files.

   b. Do   not   make   any  changes  on  these  distributed
      directories. If you must make your own bug  fixes,  it
      is  suggested  that  you put the changed files on some
                                 ____
      other directories, such as pnew:.  They  can  then  be
      compared  with  any  new  files sent out in subsequent
      releases.
DEC-20 PSL Release                                         Page i


                        Table of Contents
                        Table of Contents
                        Table of Contents

1. INTRODUCTION                                                 2
2. DISCLAIMER                                                   2
3. CONTENTS OF THE TAPE                                         3
4. INSTALLING PSL                                               5
     4.1. Retrieve Control Files                                5
     4.2. Create a single subdirectory                          5
     4.3. A MULTIPLE SUB-DIRECTORY SYSTEM                       7
     4.4. Build Sub-Directories                                 7
     4.5. Announce the System                                   9
     4.6. Summary of Restoration Process                        9
5. REBUILDING LOADABLE MODULES                                  9
6. REBUILDING THE INTERPRETER                                  10
     6.1. Complete Kernel Rebuild                              11
     6.2. Partial or Incremental Kernel Rebuild                12
     6.3. Rebuilding RLISP.EXE from PSL.EXE                    14
7. RELATIONSHIP TO PSL 3.0                                     14
8. FUTURE UPDATES                                              15


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]