Introduction:

    Uvapc is an ISO standard Pascal compiler developed by the University
    of Virginia Academic Computing Center.  Although not yet certified,
    uvapc passes the ISO standard Pascal validation suite.  The manual
    page for uvapc contains implementation specific details.

    Uvapc runs on the AT&T 3B2 and 3b15 processors running Unix SysV
    rel. 2.1 - rel. 3.1 (and should work on later releases).

System Requirements:

    Uvapc is distributed as C source code, so you must have the C
    compiler to compile uvapc.
    
    In order to compile Pascal programs, uvapc needs the assembler as(1),
    the loader ld(1), the C startup routine /lib/crt0.o, the math library
    /lib/libm.a, and the system library /lib/libc.a.  For profiling, uvapc
    also needs /lib/mcrt0.o, /usr/lib/libp/libc.a, and /usr/lib/libp/libm.a.

    Your 3B computer must also have a floating point processor, so
    the 3B2/300 is inadequate.

Copyright:

    The following copyright notice appears on all source files.

    /************************************************************************/
    /*                                                                      */
    /* Copyright (c) 1988 -                                                 */
    /*     The Rector and Visitors of the University of Virginia            */
    /*                                                                      */
    /* This code may not be distributed further without permission          */
    /*      from the University of Virginia.                                */
    /* This code is distributed WITHOUT ANY WARRANTY.  No claims are        */
    /*      made as to whether it serves any particular purpose or even     */
    /*      works at all.                                                   */
    /*                                                                      */
    /************************************************************************/

    This means that you may freely use this software on all of your own
    computers, but we ask that you do not redistribute uvapc.  We will
    provide uvapc at no charge to anyone who can copy it over a network.
    Uvapc will also be available at no charge from the u3g toolchest.
    Uvapc comes without any warranty.  The University of Virginia will not
    be liable for any damages that result from the use of this software.

File Organization:

    Once built, the uvapc system consists of four files:

    pcomp:  the Pascal compiler; it converts Pascal source to assembly.

    libuvapc.a:
            the run time system.  Pcomp generates code that calls
            functions in this library to handle I/O, etc.

    libp/libuvapc.a:
            a profiled version of the run time system.

    uvapc:  the driver program that invokes pcomp, as(1), and ld(1)
            (essentially a shell script written in C for speed).

    The source and documentation for uvapc is bundled into a cpio(1)
    archive.  When unbundling this archive, cpio places the source
    files in the following directories:

    mip:    machine independent source files for pcomp.
    3b:     3B specific source files for pcomp.
    rt:     source files for libuvapc.a
    uvapc:  source for uvapc.
    doc:    documentation, including the manual page for uvapc and
            a tutorial on dubugging using sdb(1).

Installation:

    1)  Make a directory where you want to keep the uvapc source and
        cd into that directory. Example:

        mkdir /usr/src/local/uvapc
        cd /usr/src/local/uvapc
    
    2)  Unbundle the uvapc source with cpio.

        cpio -iBcdv < archive

        (where "archive" is the tape device or the name of the cpio file)

    3)  Edit the Makefile in the current directory.  Decide which directory
        to put uvapc (usually /usr/bin or /usr/local/bin) and set the
        symbol BINDIR to this directory.  Decide which directory to put
        libuvapc.a and pcomp (usually /usr/lib or /usr/local/lib) and set
        LIBDIR to this directory.  Set OWNER and GROUP to the proper owner
        and group of the uvapc files (usually bin and bin, respectively).
        Set STRIP to "strip" if you want the executables stripped, which
        dramatically reduces the size of the files, but prevents you from
        running the debugger sdb on them.  Otherwise set STRIP to "echo".

    4)  Edit file uvapc/uvapc.c and modify the following line if
        LIBDIR is not /usr/uva/lib.

        #define LIBDIR(X) "/usr/uva/lib/X"

        Be sure that the other #defines have the correct locations of as,
        ld, crt0.o, mcrt0.o, and /usr/lib/libp (the directory containing
        the profiled system libraries).

    5)  In the top level directory run "make install".  This will compile
        everything, make any missing directories, copy the files into
        place, and set the owner, group, and permissions.
        Ignore the warning about the optimizer failing on pattern.c.

    6)  Copy the manual page to the appropriate directory.  Note that
        not all systems have the on-line manual pages installed, and some
        systems keep local commands separate from standard ones.
        Standard example:

        cp doc/uvapc.1 /usr/man/u_man/man1
        cd /usr/man/u_man/man1
        chmod 664 uvapc.1
        chgrp bin uvapc.1
        chown bin uvapc.1

Bug Reports:

    If you discover a bug in uvapc, please send us a description of the
    bug, the source of the program that uncovered the bug, and any input
    data files that the program reads.  Obviously, if you can condense a
    large program into a small one that exhibits the bug, please do so.

    Uvapc should correctly handle incorrect programs, so please report
    any cryptic error messages, core dumps, infinite looping, or other odd
    behavior triggered by an incorrect program.  (We have tested uvapc on
    many more correct programs than incorrect ones.)

    Send bug reports to Steve Losen, University of Virginia Academic
    Computing Center.

    E-mail:     scl@virginia.edu

    U.S. mail:  Steve Losen
                Academic Computing Center
                Gilmer Hall
                University of Virginia
                Charlottesville, VA   22903

    Telephone:  (804) 924-3731
