Search                        Top                                  Index
DOC SYSSPEC                                 Updated A.Sloman June 1990

This file is $usepop/pop/doc/sysspec

Copyright, University of Sussex 1986,1987,1990 - All rights reserved


This file  gives an  overview  of the  POPLOG directory  structure.  For
information on library mechanisms see REF * LIBRARY.

    (for online use put cursor on desired entry then do <ENTER> g)

 -- Introduction
 -- Disk space required
 -- Memory requirements
 -- File Specifications
 -- Levels of support
 -- Unsupported portions of POPLOG
 -- System overview
 -- Documentation
 -- Search lists
 -- Program libraries
 -- Saved images
 -- Command files
 -- System building files
 -- The POPLOG directory tree
 -- Local directories (for tailoring Poplog)
 -- Deleting unwanted files

-- Introduction -------------------------------------------------------

What follows is an overview  of POPLOG, including incremental  compilers
for POP-11, PROLOG  Common LISP and  Standard ML, a  screen editor  (and
word-processor) VED, Poplog Window Manager,  interface to the X  windows
system, and many program libraries and documentation files.

At present POPLOG runs under VMS, and a variety of versions of the  Unix
operating system (including Ultrix, SunOS HP-UX and Dynix), on a variety
of processors including VAX, M680?0, SPARC, 80386, MIPS.

A complete detailed specification of  the system would be very  lengthy,
so this is a brief over-view of  the system as supplied. We reserve  the
right to  change  the  organisation  of the  files,  and  to  add  extra
features. However,  at least  all  the facilities  listed here  will  be
provided, though not all will be fully supported. (See below).

-- Disk space required ------------------------------------------------

The complete system  requires between  20 and  30 Mbytes  of file  space
depending on how many saved images are used, which language systems  are
installed, and  whether the  object  libraries are  kept online.  It  is
possible to reduce  the amount  of disk space  considerably by  removing
unwanted directories. See the Poplog Administrator's Guide for details.

-- Memory requirements ------------------------------------------------

Experience suggests that useful work can be done with POP-11 and VED  on
a single user  machine with  about 2  MBytes memory.  However, with  the
growth of operating systems, window managers, etc. it is now recommended
that a minimum of 4 Mbytes  be provided for a diskless workstation,  and
preferably 8 Mbytes. However Poplog itself  can run in far less  memory,
e.g. process sizes start from under 1.5 Mbytes. A 16Mbyte Sun-3 has been
able to support over 20 students logged in simultaneously.

When  the  system  is  converted  to  run  on  smaller  systems,  memory
limitations may make it necessary to leave out portions of POPLOG.

-- File Specifications ------------------------------------------------

In this document  file specifications  have been given  in UNIX  format.
POPLOG provides automatic translation  from UNIX file specifications  on
VMS machines. The  file specifications  in this document  can easily  be
converted to VMS as follows:

    (a) the UNIX environment variable "$usepop" at the beginning of a
      file name corresponds to a VMS disk specification "usepop:"
    (b) everything between the first and the last occurrences of the
      character "/" corresponds to a VMS directory name, and
    (c)everything to the right of the last "/" is the file name.

So, for example: the  UNIX file specification  "$usepop/pop/doc/sysspec"
would refer to the VMS  file "usepop:[pop.doc]sysspec" (i.e. this  file)
and the UNIX directory specification "$usepop/pop/lib/auto/" would refer
to the VMS directory "usepop:[]".  (Note that the final  "/"
character is not required by UNIX but  is included here for the sake  of

In what  follows names  preceded  by a  $  are either  unix  environment
variables or VMS logical names. They are given in lower case, though  in
VMS they  would  be upper  case  (though translated  automatically  from
inside POPLOG). Examples are  $usepop, $popsys, $popsavelib. The  Poplog
environment variables are set up in the file

    $usepop/pop/com/popenv          (Unix Poplog)
    usepop:[]      (VMS Poplog)

-- Levels of support --------------------------------------------------

The POPLOG system is very large and includes many library programs which
have been found useful by  some users, though they  do not form part  of
the main system. It also includes  a large amount of teaching  material,
which has been developed at  Sussex University for teaching  programming
and Artificial  Intelligence,  some  of  which  refers  to  library  and
demonstration programs that are provided with the system.

The files that are not part of the main system are provided 'AS IS'.  We
cannot offer full support for them, as the man-power requirements  would
be too great, though we will  be prepared to receive written reports  of
bugs or other  infelicities and will  attempt to deal  with problems  in
later releases. In  some cases  it may be  possible to  provide help  or
advice. But no guarantees can be given.

The portions of POPLOG which are fully supported are:
    The system generation command files
    The POP-11 language system, including:
        the POP-11 autolodable library files in $usepop/pop/lib/auto/

    The PROLOG language system including its autoloadable library
        and help system, and other essential library files.

    The COMMON LISP language system, including its autoloadable
        and help system, and other essential library files.

    The ML language system, including its help and library files

    The VED screen editor VED, the online help system based on VED
        and the VED autoloadable library files in $usepop/pop/lib/ved/

    The X windows interface

    For use with SUN workstations a window-manager program is provided
    which handles SUN windows communicating with a POPLOG process that
    may be running on the same machine or a different machine. At a
    later date versions of the window manager will be supplied for
    other workstations.

-- Unsupported portions of POPLOG -------------------------------------

Not fully supported at present are:
    The POP-11 TEACH files and the library programs they refer to
    The POP-11 program libraries not listed above
    The PROLOG TEACH files and the library programs they refer to
    The PROLOG program libraries not listed above
    The documentation and program libraries provided in the "contrib"
        directory $usepop/pop/contrib

POP-11, PROLOG, LISP and ML are integrated with the editor, VED,
described below.

-- System overview ----------------------------------------------------

    This is the core language. It is a LISP-like language with an
    appearance more like PASCAL. It is a much expanded superset of POP2
    the language developed for AI research at Edinburgh University. The
    main features of POP-11 are defined in the files in $usepop/pop/ref/.
    Information on library files is given in HELP and TEACH files (see

    POP-11 provides a wide variety of syntactic constructs, list
    processing, pattern matching, properties (hashed association
    tables), processes, tree-structured sections, save and restore,
    'autoloading' of library files, many built in data-types, and
    user-defined data-types, lexical and dynamic scoping of variables,
    facilities for implementing compilers, and many other features.
    Most of the facilities of Common Lisp are also in POP-11, including
    indefinite precision arithmetic, ratios, complex numbers. Yet POP-11
    is a much smaller system than most Common Lisp systems. A fairly
    complete specification of Pop-11 can be found the files in
    $usepop/pop/ref/ and $usepop/pop/help

    POP-11 is the main systems implementation language used in POPLOG.

    There is a substantial amount of online documentation.  The book
    Ramsay and Sloman and published by Ellis Horwood and John Wiley
    provides a good introduction to a subset of the language. Other
    references are given in $usepop/pop/help/poprefs

    The Prolog compiler is implemented using POP-11 compiler routines.
    The syntax corresponds closely to Prolog as described in
    W. Clocksin and C.S. Mellish: PROGRAMMING IN PROLOG, though there
    are some minor alterations, for compatibility with DEC-10 Prolog.
    Library packages are available which allow tighter compatibility
    with PDP-11 Prolog.

    Prolog procedures can call POP-11 (or LISP) procedures, and vice versa.

    The main features of POPLOG Prolog are described in files in
    the directory $usepop/pop/plog/help/

    This is a version of Common Lisp, the most widely-accepted dialect of
    LISP, designed to include the useful features of INTERLISP and
    MACLISP. A full specification of Common Lisp can  be found in Guy
    Steele's book "Common Lisp: The  Language" (Digital Press,  1984).
    POPLOG CLISP became available from Version 11, mid-1985.

    Details of the system can be found in $usepop/pop/help/clisp

    POPLOG ML is an implementation of the polymorphic functional
    language ML version 2.0

    Details of the system can be found in $usepop/pop/help/pml

    This is a powerful screen editor providing a great many features,
    including large and small cursor movements in 8 directions,
    horizontal and vertical scrolling, different modes for program and
    text files, simple text formatting facilities, multiple edit
    buffers, multiple screen windows. The editor can be tailored
    to suit a variety of terminals, and users can make their own
    temporary or permanent modifications. A library file provides a
    partial Emacs emulation.

    The editor is integral with the rest of POPLOG, which means that the
    full power of POP-11 is available for writing programs to extend its

    The editor recognises POP-11, PROLOG, LISP or ML files from the
    file extension, and allows a portion of the file to marked and then
    compiled. It is also possible to cause program output to go straight
    into a file in the editor, so that on a VDU output is not lost
    because of scrolling off the screen.

    The editor is used for examining on-line documentation. See below.

    Much of the behaviour of the editor is explained in online TEACH and
    HELP files. For details of relevant files see $usepop/pop/help/ved

    The mechanisms by which VED adjusts itself to different terminals
    are described in $usepop/pop/ref/vedterminals (REF VEDTERMINALS)
    $usepop/pop/help/terminal (HELP TERMINAL).

The Poplog X Windows interface
    Since version 13.8 Poplog has provided several levels of support for
    interaction with  an X  Windows  server (Version  11, release  4  or
    later). The system files for this are in $usepop/pop/x/*

    Introductory overview documentation  can be found  in the HELP X
    file, i.e. $usepop/pop/help/x

Additional features:
    Poplog Window Manager
        See $usepop/pop/help/pwm

    The FLAVOURS object-oriented programming extension to Pop-11
        See $usepop/pop/help/flavours

    A forward chaining production system: LIB NEWPSYS
        See $usepop/pop/help/newpsys

    A directory of software, documentation and teaching material
    supplied on an "as is" basis by Poplog users, mainly at Sussex
        See $usepop/pop/contrib

-- Documentation ------------------------------------------------------

There are several levels of  documentation, all accessible online  using
the editor.  See $usepop/pop/help/documentation  for an  overview  (HELP

The main HELP files are  in the directory $usepop/pop/help/ and  provide
relatively short descriptions of facilities  in the three languages  and
the editor. See  HELP HELPFILES.  There are other  help directories  for
specific languages.

TEACH   files   are   in   the   directories   $usepop/pop/teach/    and
$usepop/pop/plog/teach/ and provide more verbose explanations,  suitable
for  beginners.  There  are   also  some  introductions  to   Artificial
Intelligence concepts and techniques, including parsing, building expert
systems,     searching,      etc.      For     an      overview      see

REF  files   are  in   the   directory  $usepop/pop/ref/   and   provide
documentation on the  central mechanisms  and facilities  in the  POP-11
system, such  as  text  itemisation, compilation,  arrays  and  records,
input-output facilities, system startup, etc.

DOC files  are in  the directory  $usepop/pop/doc/ and  are intended  to
provide documentation for printing out in the form of manuals. These may
be accessed online,  but this  is not their  primary use,  and some  doc
files may require formatting before they can be read.

The editor provides commands which automatically search in one of  these
directories, and  if  the  relevant  files  are  not  found  the  search
continues in other directories. Users  can modify the search lists,  and
can add new directories if they wish. See HELP INITIAL for more details.
It is possible to extend  the documentation categories, as described  in

The PRINT command given to the editor will print the current file on the
standard printer, whether it is a user file or a library file.

-- Search lists -------------------------------------------------------

The online documentation  and libraries  are accessed  via search  lists
(lists of directory names) that can be altered by individuals or  groups
of individuals,  tailoring the  system to  various needs.  The built  in
search lists include 'local' library names so that system wide additions
can easily be added  which will automatically be  accessed by the  HELP,
TEACH, LIB, or autoload commands,  and will survive the installation  of
new releases.

Search lists can be altered either globally or in user programs run when
the system starts up. See HELP INITIAL

-- Program libraries --------------------------------------------------

The POPLOG system is provided with a collection of program libraries for
a variety  of  purposes. The  file  REF  LIBRARY explains  some  of  the
mechanisms used.

    includes a collection of autoloadable files which are essentially
    standard extensions to POP-11

    provides autoloadable files which extend the editor VED

    provides files which are not autoloadable, but require the use of
    the LIB or USES command. These files are demonstrations, utilities,
    and packages. For example LIB * SHOWTREE can be used for printing a
    tree structure into an editor buffer in a graphical format.

    provides files containing data for demonstration or utility programs

$usepop/pop/lib/data/ved_what (WITHDRAWN)
    This directory used to contain files needed for the ved_? and ved_??
    commands. However, the mechanism has been generalised and based on
    "REF" files, so this directory is no longer needed.

    provides a collection of demonstration programs

    provides an object oriented programming package, modelled loosely on

    Files defining some global constants used in system programs. These
    files can be merged into the current compiler stream using the
    "#_INCLUDE" or "include" mechanisms.

    Saved images for Prolog, Common Lisp, Poplog ML, Eliza, etc.

    Programs concerned with the Poplog window manager (not in all
    versions of Poplog)

    Programs required for running the SUN POPLOG window manager
    and using VED on the sun terminal

    Provides simple LOGO like facilities for drawing pictures into a 2-D
    array which may subsequently be printed out, or used as input to
    other programs. A version of the 'turtle' may be used with the
    editor to create pictures in editor files.

    Provides a collection of autoloadable procedures making use of the
    matcher to search a simple database of list structures.

    Contains prototype versions of new libraries, supplied for
    evaluation and comment. Being experimental, the facilities provided
    by such libraries may be modified in future. While all reasonable
    endeavours will be made to limit incompatible changes, programs
    using these facilities may require modification to utilise later

    Libraries for use with Common Lisp

    Prolog library files.

    Libraries for use with the Poplog ML system

    Libraries concerned with the X windows system

    C source code for building the Poplog window manager

    Libraries and documentation provided by users

-- Saved images -------------------------------------------------------

Facilities are provided for  creating saved images containing  regularly
used demonstration programs  or utilities. For  instance, a saved  image
containing  the  ELIZA   program  may  be   constructed  and  used   for
demonstration purposes. This  can be re-made  after the library  program
has been changed, using the command file

(on VMS the file is

The Prolog, Common Lisp and ML systems are provided in the form of saved
images extending the core POPLOG system which includes POP-11 and VED.

As mkeliza and other 'mk..' files show, a saved image can be made to run
some program or obey instructions whenever it is started up.

Saved images in  POPLOG may be  'layered', so that  different users  may
share a saved  image with common  utilities, etc., and  build their  own
saved images relative to it.

The   files   in   $usepop/pop/lib/demo/   provide   a   collection   of
demonstrations suitable for naive users indicating some of the  features
of Artificial Intelligence programs.

System saved  images  are stored  in  $usepop/pop/lib/psv  ($popsavelib)
Local saved images may  be added in $poplocal/local/bin  ($poplocalbin),
or in user's own directories. When asked to start up with a saved  image
restored, POPLOG  will search  directories  listed in  $popsavepath,  in
order to find a saved image.

-- Command files ------------------------------------------------------

The $usepop/pop/com/ directory provides  command files which are  useful
for setting up  logical names (environment  variables) and commands  for
users. See especially $usepop/pop/com/popenv ( on VMS)

Users should all have login files which access these files, as described
in the Administrator's Guide and User Guide.

-- System building files ----------------------------------------------

If the operating  system is changed  and the system  has to be  rebuilt,
command files to be used will be found in the directories

See especially  the file  'newpop' (''  on VMS)  and files  in
$usepop/pop/com whose names  start with  'mk' (for  making saved  images
when the system is re-built).

PROLOG source  files are  in  the directories  in  $usepop/pop/plog/.../
Command files are provided for rebuilding prolog, e.g.

There are also POP-11 library  files and system building files  provided
for COMMON LISP in the  directories $usepop/pop/lisp/.../ and a  command
file for re-building it in

    NB. These files are only supplied to sites with POPLOG SOURCE

    A directory of source files and system-building utilities is
    provided. Most of the source files are written in an extended
    dialect of POP-11, known as Syspop, which proves C-like pointer
    manipulation facilities. These files are supplemented with a small
    number of assembler files for efficiency. A collection of POP-11
    utilities is provided for re-compiling POP-11 source files in case
    they are altered, and command files to re-build the system.

    At some time towards the end of 1990 it is expected that the Poplog
    system compiler POPC will be made available to users for producing
    "delivery" systems built using Pop-11 or Prolog.

-- The POPLOG directory tree ------------------------------------------

What follows is a list of the main directories included with the  Poplog
system. There is no guarantee that exactly the files listed here will be
supplied at a later date. In fact what is most likely is that the  files
will be added to, though there may also be some re-arrangement.

Many of  the directories  are  accessed by  an environment  variable  or
logical name.  Where this  is the  case the  name is  given in  capitals
beside  the  directory  name.  The  actual  logical  name  will  not  be
capitalised (except  in  VMS where  case  makes no  difference  in  file

Directories that may be deleted once the system is installed and all the
saved images have been built are marked.

Directory           Function
---------           --------
                    ($popcom) Login files and other command files, e.g.
                    for building saved images

                    ($popcontrib) Libraries and documentation provided
                    by users

                    A collection of files ultimately intended for
                    hard-copy manuals (Includes this document as

                    Files accessed by means of the HELP command. By
                    starting with HELP HELPFILES, it is possible to get
                    an overview of some of the main options available.

                    POP-11 and POPLOG System documentation.
                    Some provisional VED system documentation

                    Files required for the <ENTER>?? rapid lookup

                    A collection of relatively verbose documentation
                    files, used for teaching. Mostly concerned with
                    POP-11, VED and AI techniques

                   Various sub-directories with POP-11 library programs.

                    ($popsavelib) System saved images stored here (with
                    names ending in '.psv').

                    ($popautolib)   POP-11 Auto-loadable library files
                    used a great deal.

                    Another group of POP-11 autoloadable files.

                    Data files for demo or utility programs

                    Some files for setting up demonstrations

                    Files for the flavours system.  (see TEACH FLAVOURS)

                    ($popliblib)   Non-autolodable library files,
                    accessed by means of the LIB or USES command.

                    A demonstration program, a little like Winograd's

                    O/S dependent system files

                    Prototype versions of new libraries supplied for
                    evaluation and comment.

                    Source, libraries and documentation for the Common
                    Lisp system.

                    Autoloadable Lisp libraries.

                    Library of format printing routines.

                    Lisp HELP files.

                    Non autoloading LISP library.

                    Lisp system reference files.

                    Source of the Common Lisp system.

                    Source, documentation and library files for the
                    PROLOG system

                    Prolog autoloadable libraries.

                    Prolog HELP files.

                    Prolog library files.

                    Prolog Source files.

                    Prolog TEACH files (may be extended).

                    Files concerned with the ML subsystem

                    ML online documentation
                    ML libraries
                    Sources for creating the ML compiler

                    A collection of autolodable picture drawing files
                    (drawing into a 2-D array, or into the editor).

                    ($popvedlib)  Autoloadable extensions to the VED
                    editor. See $usepop/pop/ref/ved* for information.

                    ($popsys)   Executable or shareable images. On UNIX
                    systems, most of these files will all be linked
                    to the POP-11 image file. This is because the core
                    system behaves differently depending on what name
                    it is invoked with. The mechanism is explained, and
                    made use of, in $usepop/pop/com/popenv (but not on

                    Directories concerned with the Poplog interface to
                    the X Windows system. The organisation described
                    below is provisional and may change.

                    C source code for the Poplog widget set

                    Executables and saved images for X. These may
                    later be merged with $usepop/pop/pop ($popsys)
                    Includes libXpw.a the random archive library of
                    the poplog widget set.

                    Command files for making X saved images

                    Location for Prolog-specific X libraries

                    Pop-11 based interface to X Windows, includes the

                    Some facilities that are available from V13.9 for
                    compatibility with programs in earlier versions of
                    X, but which may be withdrawn after Poplog V15
                    (or perhaps sooner)

                    Help files concerned with X facilities

                    Many of the most useful Poplog X Windows tools are


                            Low level interface procedures

                    Poplog X reference documentation

                    Poplog X tutorial documentation

                    [May not be supplied]

                    Source files for re-building the system and making
                    saved images.    Most .W files and .O (.OBJ on VMS)
                    files are derived from .P files. .S (.MAR on VMS)
                    files are written in assembler. The 'newpop' command
                    file ( on VMS) is used for re-building

                    System building utilities (not normally supplied).

                    Programs and documentation contributed by users,
                    including all the programming examples for the
                    Gazdar and Mellish textbook on Computational

-- Local directories (for tailoring Poplog) ---------------------------

Many users will  wish to add  to the POPLOG  system extensions local  to
their site.  In order  for these  extensions not  to be  overwritten  or
affected by updates to  the POPLOG system, these  extensions may now  be
added into a directory  structure outside the POPLOG  tree. There is  an
environment variable defined,  by default,  to locate the  root of  this
tree - $poplocal.  However its location  may be changed  either for  all
users or by individual users, as explained in the Poplog Administrator's

Local Poplog  directories  must  be located  below  $poplocal/local  and
should ideally  mirror  the  structure  of the  main  POPLOG  tree  with
subdirectories such as  com, auto,  lib, teach, help,  plog, lisp,  etc.
However, a different organisation may  be more convenient, e.g.  putting
all local autoloadable files together in $poplocal/local/auto

The environment  variable $poplocal  is intended  to be  set up  by  the
Poplog system manager before  $usepop/pop/com/poplog is sourced so  that
the POPLOG startup procedure knows where to look for local extensions to
the  system.   If   the   variable   is  not   defined   at   the   time
$usepop/pop/com/poplog is sourced it will be set to the default position
for a local tree; if the variable has a value it will be left unchanged.
To maintain upward compatibility with  previous releases of POPLOG  (pre
Version   13)   the   default   position   of   these   directories   is
$usepop/pop/local  with  $poplocal  =  $usepop/pop;  i.e.  the  original
position of the  local tree.  It is  recommended that  users move  local
extensions to a  position outside the  POPLOG tree and  make use of  the
variable $poplocal. (Unix users may be able to make good use of symbolic

The  HELP, TEACH,  REF, DOC,  and  LIB commands  look for  corresponding
directories  in  the  local  tree  before looking  in  the  main  system
libraries.    Similarly    the    autoloading   mechanisms    look    in
$poplocal/local/auto, and this is given the logical name $poplocalauto.

Local saved images should be  stored in $poplocalbin, which defaults  to
$poplocal/local/bin (though $poplocalbin can be renamed).  Alternatively
they can be stored in the system directory $popsavelib.

(Some  of  the  file  and  directory names  are  results  of  historical
accidents, alas.)

-- Deleting unwanted files --------------------------------------------

After checking that everything works, and making a security dump of the
whole system, a considerable amount of space can be saved, by deleting
the following:
    All files in $usepop/pop/src/    - save several Mbytes
    All files in $usepop/pop/plog/src/
    All files in $usepop/pop/x/src/

    Unwanted *.psv files in $usepop/pop/lib/psv ($popsavelib).
    E.g, if you don't use Common Lisp delete clisp.psv. If you don't use
    Prolog delete prolog.psv and logic.psv (a demonstration and teaching

    The eliza.psv image is supplied only as a toy, and may be deleted.

    If you don't have any machines at your site which can access this
    machine and which run the Poplog Window Manager, you can delete
    all the files in $usepop/pop/lib/pwm.  Note that even if you cannot
    run the Poplog Window Manager on this machine, other machines may
    be able to use it with this copy of Poplog if they run the PWM and
    can access this machine (e.g. via "rlogin", or over tty lines).

If still short of space online help, ref, or doc files may be deleted,
though the rapid access to documentation via the editor is one of the
main features of Poplog. The program subdirectories of $usepop/pop/lib
may be deleted apart from 'auto'. E.g demo and turtle may be unwanted.

UNIX is a trade mark of Bell Laboratories
VMS and Ultrix are trade marks of Digital Equipment Corporation
SunOS is a trade mark of Sun Microsystems
POPLOG is a trade mark of Sussex University

--- C.all/doc/sysspec
--- Copyright University of Sussex 1991. All rights reserved. ----------