Annotation of 43BSD/contrib/icon/docs/tr84-13, revision 1.1

1.1     ! root        1: .so tmac.tr
        !             2: .DA "August 24, 1984; Revised October 12, 1984"
        !             3: .TR 84-13a
        !             4: .Gr
        !             5: .TL
        !             6: Installation and Maintenance Guide
        !             7: .br
        !             8: for Version 5.9 of Icon
        !             9: .AU
        !            10: Ralph E. Griswold
        !            11: .AU
        !            12: William H. Mitchell
        !            13: .AE
        !            14: .tr *\(**
        !            15: .PP
        !            16: This document describes how to install Version 5.9 of the Icon programming
        !            17: language [1, 2].
        !            18: The distribution of Version 5.9 contains source code for Icon itself,
        !            19: documentation, sample programs and tests, the Icon program library [3],
        !            20: the procedures from the Icon book [1], test suites to aid in
        !            21: porting Icon [4, 5], and various support material.
        !            22: .PP
        !            23: The installation procedure for Icon is simple; it requires unloading the
        !            24: distribution tape onto the target machine, the setting of
        !            25: site-specific constants, and the compilation of the Icon
        !            26: system itself.
        !            27: Read Sections 1 and 2 of this document and the overview of Version 5.9 [2]
        !            28: before beginning the installation process.
        !            29: .PP
        !            30: If Version 5.9 is being installed at a site that is running Version 5.8,
        !            31: read Section 3.2 before beginning the installation process.
        !            32: .NH 1
        !            33: System Requirements
        !            34: .PP
        !            35: This distribution of Version 5 Icon is targeted for VAX-11s
        !            36: and PDP-11s (with separate instruction and data spaces)
        !            37: running the UNIX\u\s-2*\s0\d operating system. This distribution package has been tested
        !            38: .FS
        !            39: \u\s-2*\s0\dUNIX is a trademark of AT&T Bell Laboratories
        !            40: .FE
        !            41: under V7 and 4.2bsd, and no problems should be encountered when installing
        !            42: Icon under one of these versions of UNIX.
        !            43: .PP
        !            44: When the system is unloaded, it requires about 2,700 kilobytes of disk space.
        !            45: During compilation, about 3,700 kilobytes are required.
        !            46: To install subsidiary components and test the entire system, about 4,800
        !            47: kilobytes are required.
        !            48: After the removal of unnecessary files,
        !            49: about 3,800 kilobytes are required.
        !            50: These figures vary slightly depending upon the logical organization of
        !            51: a particular file system.
        !            52: .PP
        !            53: Additional space can be saved by omitting the Icon program library,
        !            54: test programs, and so on. See Sections 6.1, 6.2, and Appendix A
        !            55: for more information about
        !            56: the directories on the distribution tape. On systems with severely
        !            57: limited disk space, source code also can be deleted after Icon is installed.
        !            58: .NH 1
        !            59: Installation Procedure
        !            60: .NH 2
        !            61: Unloading the Distribution Tape
        !            62: .PP
        !            63: The system is distributed as a \fItar\fR archive on magnetic tape.
        !            64: The \fItar\fR
        !            65: hierarchy is rooted at the directory \*Mv5g\fR.
        !            66: If you already have a \*Mv5g\fR directory from an earlier version of
        !            67: Icon, you may wish to move this old directory to a new location, such
        !            68: as \*Mv5g.old\fR.
        !            69: .PP
        !            70: Mount the distribution tape
        !            71: and do a \fIcd\fR to the directory that is to hold
        !            72: the system hierarchy.
        !            73: .PP
        !            74: The precise
        !            75: \fItar\fR command to unload the distribution
        !            76: tape depends on the local environment.
        !            77: On a 4.\fIn\fRbsd VAX with a 1600 bpi distribution tape, the following
        !            78: command should extract the contents of the tape:
        !            79: .Ds
        !            80: tar x
        !            81: .De
        !            82: On a V7 PDP-11 with a 1600 bpi distribution tape, use:
        !            83: .Ds
        !            84: tar xfb /dev/rmt0 20
        !            85: .De
        !            86: For example, if the system is to reside at \*M/usr/src/local/icon/v5g\fR on a VAX,
        !            87: type:
        !            88: .Ds
        !            89: cd /usr/src/local
        !            90: mkdir icon
        !            91: cd icon
        !            92: tar x
        !            93: .De
        !            94: .LP
        !            95: \fINote\fR: File names used in the following sections usually are relative to
        !            96: the root directory for the Icon hierarchy. For example, if
        !            97: the Icon system is unloaded as described above, the root directory
        !            98: is
        !            99: .Ds
        !           100: /usr/src/local/icon/v5g
        !           101: .De
        !           102: and
        !           103: the file name \*Mv5g/bin/Makefile\fR refers to
        !           104: .Ds
        !           105: /usr/src/local/icon/v5g/bin/Makefile
        !           106: .De
        !           107: .NH 2
        !           108: Configuring the Icon System
        !           109: .PP
        !           110: The installer must perform a site-specific configuration of the Icon
        !           111: system. This configuration is done by the shell script
        !           112: \*MIcon\-setup\fR.
        !           113: \*MIcon\-setup\fR accepts a number of parameters and modifies
        !           114: several source files to produce a ready-to-compile Icon system tailored
        !           115: as specified by the parameters.
        !           116: .PP
        !           117: Before \*MIcon\-setup\fR
        !           118: modifies a file, it copies a generic version of the
        !           119: file into place and works on it. Thus, \*MIcon\-setup\fR can be run a number
        !           120: of times and only the last run has any lasting effect.
        !           121: \*MIcon\-setup\fR is like any other UNIX command and thus all of its
        !           122: arguments must be specified on one logical command line.
        !           123: \*MIcon\-setup\fR has the following synopsis:
        !           124: .IP \*MIcon\-setup
        !           125: .nf
        !           126: {\-vax\fR,\*M\-pdp11\fR,\*M\-port}
        !           127: \-host\ \fIstring\fP
        !           128: [\-sets]
        !           129: [\-xpx]
        !           130: [\-hz\ \fIrate\fP]
        !           131: [\-nofp]
        !           132: [\-interpex]
        !           133: [\-vfork]
        !           134: [\-usg]
        !           135: [\-ibin\ \fIlibrary directory for Icon\fP]
        !           136: [\-iconx\ \fIlocation of the Icon interpreter\fP]
        !           137: [\-debug\*M]
        !           138: .fi
        !           139: .LP
        !           140: The parameters have the following meanings:
        !           141: .IP \*M\-vax\fR,\fP\ \ \-pdp11\fR,\fP\ \ \fRor\fP\ \ \-port\fR
        !           142: .br
        !           143: These are mutually exclusive options that control the selection of
        !           144: machine-dependent portions of code. Select one as appropriate.
        !           145: \*M\-port\fR is used to set up Icon for transporting to a computer
        !           146: for which it previously has not been implemented.
        !           147: .IP \*M\-host\fR\ \ \fIstring\fR
        !           148: .br
        !           149: The Icon system has a keyword, \*M&host\fR, whose value should be the
        !           150: name of the host machine where the system is running. On some systems,
        !           151: notably 4.2bsd, System III, and System V, it is possible to
        !           152: determine the name of the system at run-time via a system call.
        !           153: On other systems, 4.1bsd for example,
        !           154: the file \*M/usr/include/whoami.h\fR contains
        !           155: the name of the host in a \*M#define\fR statement.
        !           156: On 4.2bsd, specify \*Mgethost\fR for \fIstring\fR.
        !           157: This causes the \fIgethostname(2)\fR function to be used.
        !           158: On System III, System V, or some other system that
        !           159: supports the \fIuname\fR(2) system call, specify \*Muname\fR for
        !           160: \fIstring\fR. On a system with a \*M/usr/include/whoami.h\fR
        !           161: file that has a \*M#define\fR for \*Msysname\fR, then specify
        !           162: \*Mwhoami\fR for \fIstring\fR. If none of these
        !           163: are available on your machine, or to give \*M&host\fR some
        !           164: value besides that of the machine name, specify an arbitrary
        !           165: string (quotes around it may be needed) for \fIstring\fR, for
        !           166: example: \*M\-host\fR\ \ \*MUNIX\fR.
        !           167: .IP \*M\-sets\fR
        !           168: .br
        !           169: This parameter incorporates code to support the set data type, an extension to standard Version 5 that
        !           170: is described in [6].
        !           171: This extension adds about 3 kilobytes to the size of the run-time system.
        !           172: .IP \*M\-xpx\fR
        !           173: .br
        !           174: This parameter incorporates a number of other extensions to standard Version 5 as described in [6].
        !           175: These extensions add about 2 kilobytes to the size of the Icon run-time system.
        !           176: .IP \*M\-hz\fR\ \ \fIrate\fR
        !           177: .br
        !           178: This parameter specifies the cycle rate of the electrical environment.
        !           179: The rate defaults to 60 Hz.
        !           180: \*M\-hz\fR does not need to be specified in a 60-Hz electrical environment. If the
        !           181: rate is incorrect, the value of \*M&time\fR will be wrong.
        !           182: .IP \*M\-nofp\fR
        !           183: .br
        !           184: Specify this on a PDP-11 that does not have
        !           185: floating-point hardware.
        !           186: .IP \*M\-interpex\fR
        !           187: .br
        !           188: Specify this option on a 4.\fIn\fRbsd system. This option
        !           189: causes the use of a feature of the \fIexec\fR(2) system call to make
        !           190: interpretable files directly executable.
        !           191: Do \fInot\fR specify this option on other systems.
        !           192: .IP \*M\-vfork\fR
        !           193: .br
        !           194: Specify this option if the operating system supports the \fIvfork(2)\fR
        !           195: system call; this should be specified for 4.\fIn\fRbsd systems.
        !           196: .IP \*M\-usg\fR
        !           197: .br
        !           198: Specify this option to adapt for minor incompatibilities between V7 UNIX systems
        !           199: and UNIX Software Group UNIX systems. In particular, specify this
        !           200: for System III or System V UNIX.
        !           201: .IP \*M\-ibin\ \fIdirectory\fR
        !           202: .br
        !           203: The directory \*Mbin\fR
        !           204: contains executable versions of the Icon translator (\*Mitran\fR), the Icon
        !           205: linker (\*Milink\fR),
        !           206: and the run-time system (\*Miconx\fR). The path name of this directory is built
        !           207: into \*Micont\fR, the program that controls the
        !           208: translation of Icon programs. By default, the fully qualified name
        !           209: of \*Mbin\fR is used for \*M\-ibin\fR.
        !           210: Specifying \*M\-ibin\fR
        !           211: causes \*Micont\fR to use the specified
        !           212: directory as its library directory. If an alternate directory is
        !           213: specified, after the Icon system is built,
        !           214: copy \*Mv5g/bin/itran\fR, \*Mv5g/bin/ilink\fR, \*Mv5g/bin/iconx\fR,
        !           215: and \*Mv5g/bin/iconx.hdr\fR
        !           216: into the specified directory.
        !           217: .IP \*M\-iconx\ \fIinterpreter-location\fR
        !           218: .br
        !           219: By default, the \fIinterpreter-location\fR is the fully qualified
        !           220: name of \*Mv5g/bin/iconx\fR. If \*M\-ibin\fR is specified, then
        !           221: \fIinterpreter-location\fR defaults to \fIibin-directory/\*Miconx\fR.
        !           222: See Section 3.2 for considerations in chosing the location of the interpreter.
        !           223: If the fully qualified name of \*Miconx\fR is longer than 29 characters
        !           224: and \*M\-interpex\fR is specified, \*MIcon\-setup\fR considers the
        !           225: name to be erroneous. If this happens, consult Section 3.1.
        !           226: If an alternate location is specified for \*Miconx\fR, after
        !           227: the Icon system is built, copy \*Mv5g/bin/iconx\fR to the
        !           228: specified location.
        !           229: .IP \*M\-debug\fR
        !           230: .br
        !           231: This option enables some debugging code; it normally is not used.
        !           232: .LP
        !           233: The only required options are \*M\-host\fR and one of \*M\-vax\fR, \*M\-pdp11\fR,
        !           234: or \*M\-port\fR.
        !           235: For example, on a VAX running 4.2bsd, use
        !           236: .Ds
        !           237: Icon\-setup \-vax \-interpex \-host gethost \-vfork
        !           238: .De
        !           239: .PP
        !           240: On a PDP-11 without floating-point hardware, running Version 7 UNIX,
        !           241: and on which \*M&host\fR is to be \*MUNIX Version 7\fR, use
        !           242: .Ds
        !           243: Icon\-setup \-pdp11 \-nofp \-host "Unix Version 7"
        !           244: .De
        !           245: On a VAX running System V in a 50-Hz electrical
        !           246: environment, on which the library directory for Icon is to be
        !           247: \*M/usr/lib/icon\fR,
        !           248: the Icon interpreter is to reside at \*M/usr/bin/iconx\fR,
        !           249: and all language extensions are to be included, use
        !           250: .Ds
        !           251: .in 0
        !           252: Icon\-setup \-vax \-hz 50 \-sets \-xpx \-host uname \-usg \-ibin /usr/lib/icon \-iconx /usr/bin/iconx
        !           253: .De
        !           254: .NH 2
        !           255: Compiling Icon
        !           256: .PP
        !           257: The Icon distribution tape contains no executable binary files and no
        !           258: object files, so the system must be completely recompiled from the
        !           259: source. After running \*MIcon\-setup\fR,
        !           260: compile the system by doing a \fImake\fR.
        !           261: The complete system construction process is:
        !           262: .Ds
        !           263: cd v5g
        !           264: Icon\-setup \fIappropriate arguments\fP
        !           265: make Icon
        !           266: .De
        !           267: .NH 2
        !           268: Installing Icon for Public Use
        !           269: .PP
        !           270: A copy of
        !           271: \*Mv5g/bin/icont\fR may be placed in a public
        !           272: directory such as \*M/usr/bin\fR or \*M/usr/local\fR to provide general user
        !           273: access to Icon.
        !           274: If \*M\-ibin\fR and/or \*M-iconx\fR are specified in \*MIcon\-setup\fR,
        !           275: copy the appropriate files to the specified location. For example,
        !           276: if the last \*MIcon-setup\fR specification in Section 2.2 were used,
        !           277: the following would be done:
        !           278: .Ds
        !           279: cd v5g/bin
        !           280: cp itran ilink iconx iconx.hdr /usr/lib/icon
        !           281: cp iconx /usr/bin/icon
        !           282: .De
        !           283: .PP
        !           284: The manual pages \*Micont.1\fR and \*Micon\-pi.1\fR in \*Mv5g/docs\fR
        !           285: may be copied
        !           286: into \*M/usr/man/man1\fR.
        !           287: .NH 2
        !           288: Testing Icon
        !           289: .PP
        !           290: At this point, Icon system should be working.
        !           291: To test the system,
        !           292: .Ds
        !           293: cd v5g
        !           294: make Stdtest
        !           295: .De
        !           296: which runs a number of standard test programs in the directory \*Mv5g/samples\fR
        !           297: and compares them to results from a VAX-11.
        !           298: While these tests are not exhaustive, any major installation problems
        !           299: should show up when they are run.
        !           300: The output of the sample program \*Mhello.icn\fR is certain to
        !           301: be different, since it contains time and site-specific code.
        !           302: .PP
        !           303: The sets and experimental extensions can be tested by
        !           304: .Ds
        !           305: cd v5g
        !           306: make Settest
        !           307: .De
        !           308: and
        !           309: .Ds
        !           310: cd v5g
        !           311: make Xpxtest
        !           312: .De
        !           313: respectively.
        !           314: Alternatively, all the tests may be run by
        !           315: .Ds
        !           316: cd v5g
        !           317: make Alltest
        !           318: .De
        !           319: There is also a battery of tests in the directory \*Mv5g/test\fR. These can
        !           320: be run, if desired, by
        !           321: .Ds
        !           322: cd v5g/test
        !           323: make Std
        !           324: .De
        !           325: There are also entries in the \*MMakefile\fR in the \*Mtest\fR directory for
        !           326: \*MSet\fR, \*MXpx\fR, and \*MAll\fR.
        !           327: See [5] for information on interpreting the results of these tests.
        !           328: .PP
        !           329: There are other tests in \*Mv5g/port\fR. See [5] for details.
        !           330: .NH 1
        !           331: Special Installation Considerations
        !           332: .NH 2
        !           333: Direct Execution of Interpretable Files
        !           334: .PP
        !           335: When an Icon program is processed by the translator
        !           336: and linker using the \fIicont\fR command, the result is a file
        !           337: containing opcodes and data in a format that the Icon interpreter
        !           338: understands. Rather than having the user ``execute'' this interpretable file
        !           339: by running the Icon interpreter with the file as an argument, the
        !           340: Icon system uses one of two methods to make the interpretable
        !           341: files appear to be directly executable.
        !           342: .PP
        !           343: In 4.1bsd and 4.2bsd systems, a feature of \fIexec\fR(2)
        !           344: system call can be used to enable the interpretable file produced by
        !           345: the linker to appear to be directly executable. When \fIexec\fR
        !           346: is called with a file to execute, it examines the first two
        !           347: characters of the file. If the first two characters are \*M#!\fR, \fIexec\fR
        !           348: assumes that the next argument on the line is the name of a
        !           349: program for which the file is to serve as input. The program
        !           350: then is executed with the named file (the file that is being ``executed'')
        !           351: as its argument. Thus, instead of having to run the Icon interpreter with the
        !           352: interpretable file as input, the interpretable file can be executed directly.
        !           353: .PP
        !           354: An alternative method is used on systems whose \fIexec\fR(2) system
        !           355: call doesn't have this feature. An executable file is prepended
        !           356: to the data used by the interpreter. The executable portion of the
        !           357: file merely runs the Icon interpreter with the file
        !           358: itself and any supplied arguments as the arguments for the interpreter.
        !           359: .PP
        !           360: If \*M\-interpex\fR is
        !           361: specified for \*MIcon\-setup\fR, the former method is used,
        !           362: otherwise, the latter method is used. The first method is
        !           363: preferable in that the interpretable files are smaller and they
        !           364: start executing more quickly.
        !           365: .PP
        !           366: There is a potential complication in using the first method.
        !           367: The 4.1bsd and 4.2bsd \fIexec\fR(2) system calls
        !           368: impose a length limitation of 29 characters on the name of
        !           369: the program to be run. If the name exceeds 29 characters, execution
        !           370: of the interpretable file fails.
        !           371: For example, suppose the Icon
        !           372: interpreter (\*Miconx\fR) on a system is located at
        !           373: \*M/usr/csc/local/icon/v5g/bin/iconx\fR. This path name is longer
        !           374: than 29 characters, and is thus unsuitable for inclusion in interpretable
        !           375: files.
        !           376: .PP
        !           377: The length of the path to \*Miconx\fR is checked by \*MIcon-setup\fR and
        !           378: the path above would be rejected.
        !           379: .PP
        !           380: One way to solve the problem is to link 
        !           381: \*M/usr/csc/local/icon/v5g/bin/iconx\fR to \*M/usr/local/iconx\fR,
        !           382: and have interpretable files reference \*M/usr/local/iconx\fR.
        !           383: Two things need to be done to accomplish this.
        !           384: First, find a location where a copy of \*Mbin/iconx\fR
        !           385: can be referenced with a fully qualified path name that is no more than
        !           386: 29 characters long.
        !           387: Second, when configuring the system using \*MIcon\-setup\fR, specify
        !           388: the new location of \*Miconx\fR using the \*M\-iconx\fR option.
        !           389: For example:
        !           390: .Ds
        !           391: Icon\-setup \fIother arguments\fP\ \-iconx /usr/local/iconx
        !           392: .De
        !           393: Be sure to place a copy of \*Miconx\fR in the specified location after
        !           394: the system is completely built. It is also possible to get around
        !           395: this problem by not specifying \*M\-interpex\fR and having Icon
        !           396: prepend the executable header on interpretable files.
        !           397: .NH 2
        !           398: The Effect of Version Changes on Interpretable Files
        !           399: .PP
        !           400: An interpretable file produced by \*Micont\fR contains a path to the
        !           401: interpreter, \*Miconx\fR.
        !           402: Thus \*Miconx\fR cannot be moved without invalidating existing
        !           403: interpretable files.
        !           404: Furthermore, the interpreter for Version 5.9 is
        !           405: incompatible with those for previous versions. If, for example,
        !           406: Version 5.8 has been in use at a site and Version 5.9 is
        !           407: installed with the new \*Miconx\fR at the same location as that
        !           408: for Version 5.8, all previous interpretable files will be invalidated.
        !           409: .PP
        !           410: To avoid this, it may be desirable to retain \*Miconx\fR for Version
        !           411: 5.8 and put \*Miconx\fR for Version 5.9
        !           412: at a new location,
        !           413: such as \*M/usr/lib/icon/5.9/iconx\fR. See the \*M\-iconx\fR
        !           414: option in Section 2.2.
        !           415: .NH
        !           416: Installing the Icon Program Library
        !           417: .PP
        !           418: The Icon program library is rooted in \*Mv5g/src\fR. After Icon has
        !           419: been installed, the library can be installed by
        !           420: .Ds
        !           421: cd v5g
        !           422: make Library
        !           423: .De
        !           424: See [3] for a description of program library hierarchy.
        !           425: .PP
        !           426: There are test programs for the library, which can be run by
        !           427: .Ds
        !           428: cd v5g
        !           429: make Libtest
        !           430: .De
        !           431: These tests should be unnecessary if previous testing has been
        !           432: successful, but they are included in case unexpected problems
        !           433: arise. They also may be useful in resolving questions about
        !           434: library programs.
        !           435: Some tests of the library require the optional extensions that are
        !           436: available in Version 5.9 and will malfunction if these extensions
        !           437: are not installed.
        !           438: The test of \fIfarb(6)\fR probably will produce output that is different
        !           439: from the ``standard'' output, since it is dependent on the time of day.
        !           440: .NH
        !           441: Personalized Interpreters
        !           442: .PP
        !           443: Version 5.9 contains a facility for building personalized interpreters
        !           444: for Icon that allow individuals to augment or modify the Icon
        !           445: run-time system easily and quickly. See [7] for details.
        !           446: To make this facility available for general user access, a copy of
        !           447: \*Mv5g/icon\-pi\fR may be placed in a public area.
        !           448: .PP
        !           449: A sample personalized interpreter may be built by
        !           450: .Ds
        !           451: cd v5g
        !           452: make Pidemo
        !           453: .De
        !           454: The result is a personalized interpreter in \*Mv5g/pidemo\fR. This
        !           455: personalized interpreter contains the C functions from the
        !           456: Icon program library. It may be tested by
        !           457: .Ds
        !           458: cd v5g
        !           459: make Pitest
        !           460: .De
        !           461: This test compares the results produced locally by this personalized interpreter
        !           462: to standard results. Differences should be expected. In addition, some
        !           463: of the functions only are supported on VAXs. Tests of these will terminate
        !           464: prematurely on a PDP-11.
        !           465: .NH 1
        !           466: Maintenance Information
        !           467: .PP
        !           468: The following sections contain information that is not needed to
        !           469: install Icon, but which may be helpful in understanding the
        !           470: organization of the system and in maintaining it.
        !           471: .NH 2
        !           472: System Layout
        !           473: .PP
        !           474: The Icon system has several top-level directories branching off from \*Mv5g\fR.
        !           475: Only the directories marked with asterisks are
        !           476: needed to build Icon:
        !           477: .IP \*Mbin*\fR \w'\*Moperators*\fR'u+2n
        !           478: Executable versions of various system components.
        !           479: Source code for programs that control Icon translation also resides here.
        !           480: .IP \*Mh*\fR
        !           481: Header files that are included in other source files.
        !           482: .IP \*Mtran*\fR
        !           483: Source code for the Icon translator.
        !           484: .IP \*Mlink*\fR
        !           485: Source code for the Icon linker.
        !           486: .IP \*Miconx*\fR
        !           487: Source code for the Icon interpreter.
        !           488: .IP \*Mfunctions*\fR
        !           489: Source code for the Icon built-in functions.
        !           490: .IP \*Moperators*\fR
        !           491: Source code for the Icon operators.
        !           492: .IP \*Mlib*\fR
        !           493: Source code for run-time support routines that are directly callable from
        !           494: an Icon program.
        !           495: .IP \*Mrt*\fR
        !           496: Source code for the Icon run-time system.
        !           497: .IP \*Mpifuncs*\fR
        !           498: Source code for the C functions in the Icon program library.
        !           499: .IP \*Mpilib*\fR
        !           500: Files used to build personalized interpreters.
        !           501: .IP \*Msamples\fR
        !           502: Sample programs and associated data.
        !           503: .IP \*Mpidemo\fR
        !           504: Sample personalized interpreter.
        !           505: .IP \*Mdocs\fR
        !           506: Documentation and manual pages.
        !           507: .IP \*Msrc\fR
        !           508: Source code for programs and procedures in the Icon program library [3].
        !           509: .IP \*Mibin\fR
        !           510: Application programs and games from the Icon program library.
        !           511: .IP \*Milib\fR
        !           512: Linkable code for procedures in the Icon program library.
        !           513: .IP \*Mman\fR
        !           514: Manual pages for the Icon program library.
        !           515: .IP \*Mlibtest\fR
        !           516: Tests for the Icon program library.
        !           517: .IP \*Mbook\fR
        !           518: Source code for procedures appearing in the Icon book [1].
        !           519: .IP \*Mtest\fR
        !           520: Tests programs that are more comprehensive than those in \*Msamples\fR.
        !           521: .IP \*Mport\fR
        !           522: Support material for transporting Version 5.9 to other computers [4, 5].
        !           523: .LP
        !           524: .NH 2
        !           525: Disk Utilization
        !           526: .PP
        !           527: As mentioned earlier, not all of the directories on the distribution tape
        !           528: are needed in order to install Icon.
        !           529: Once Icon is working satisfactorily,
        !           530: .Ds
        !           531: cd v5g
        !           532: make Clean
        !           533: .De
        !           534: can be used to remove
        !           535: non-source files and test results.
        !           536: Additional disk space can be saved by
        !           537: deleting source code after the Icon system is built.
        !           538: .PP
        !           539: The following table shows the approximate amount of disk space needed
        !           540: for the Icon system with the sets and experimental extensions included.
        !           541: Phase 1 refers to building Icon proper. Phase 2 refers to the installation
        !           542: of subsidiary components and testing in all directories.
        !           543: This data was obtained on a VAX running 4.2bsd.
        !           544: All figures are in kilobytes.
        !           545: .nf
        !           546: .sp 1
        !           547: .ta 1.2i 2.4i 3.6i 4.8i
        !           548:        as distributed  after phase 1   after phase 2   after clean up
        !           549: .sp .8
        !           550: .ta 1.8iR 3iR 4.2iR 5.4iR
        !           551: \*Mbin*\fR     9       161     161     154
        !           552: \*Mh*\fR       40      40      40      40
        !           553: \*Mtran*\fR    192     295     295     192
        !           554: \*Mlink*\fR    83      147     147     83
        !           555: \*Miconx*\fR   54      172     172     54
        !           556: \*Mfunctions*\fR       112     205     205     112
        !           557: \*Moperators*\fR       88      167     167     88
        !           558: \*Mlib*\fR     96      131     131     96
        !           559: \*Mrt*\fR      157     267     267     157
        !           560: \*Mpifuncs*\fR 14      14      26      14
        !           561: \*Mpilib*\fR   6       261     261     261
        !           562: \*Msamples\fR  48      49      65      49
        !           563: \*Mpidemo\fR   1       1       446     446
        !           564: \*Mdocs\fR     479     479     479     479
        !           565: \*Msrc\fR      125     125     125     125
        !           566: \*Mibin\fR     1       1       85      85
        !           567: \*Milib\fR     1       1       143     143
        !           568: \*Mman\fR      319     319     319     319
        !           569: \*Mlibtest\fR  163     163     232     171
        !           570: \*Mbook\fR     192     192     192     192
        !           571: \*Mtest\fR     246     247     348     247
        !           572: \*Mport\fR     257     260     454     260
        !           573: .sp .8
        !           574: total (including root) 2696    3714    4777    3784
        !           575: .NH 2
        !           576: Machine-Dependent Code
        !           577: .PP
        !           578: Since the same source is used to produce versions of Icon on both VAXs
        !           579: and PDP-11s, as well as for porting to other computers,
        !           580: the portions of the code that are machine dependent are
        !           581: bracketed with preprocessor control statements to select sections
        !           582: appropriate for each machine.
        !           583: The setup options \*M\-vax\fR, \*M\-pdp11\fR, and \*M\-port\fR
        !           584: define the preprocessor symbols \*MVAX\fR, \*MPDP11\fR, and \*MPORT\fR,
        !           585: respectively.
        !           586: .PP
        !           587: Preprocessor control statements are used primarily to select appropriate
        !           588: assembly
        !           589: source code, but they also are used in a few cases for C source code.
        !           590: In some cases where differences are extensive (as for assembler files),
        !           591: the section of code for the VAX appears in its entirety
        !           592: and is followed by the code for the PDP-11 in its entirety.
        !           593: Preprocessor control statements for \*MPORT\fR bracket dummy
        !           594: code sections that are filled in as part of the porting process.
        !           595: .NH 2
        !           596: Recompilation of System Components
        !           597: .PP
        !           598: There is a \*MMakefile\fR in \*Mv5g\fR for carrying out various tasks,
        !           599: as described in preceding sections. This \*MMakefile\fR typically
        !           600: performs corresponding \fImakes\fR in subdirectories.
        !           601: .PP
        !           602: The subdirectories \*Mv5g/iconx\fR, \*Mv5g/tran\fR, and \*Mv5g/link\fR
        !           603: each contain code for a single component of Icon.
        !           604: Doing a \fImake\fR in any of these directories causes
        !           605: the particular component to be remade. The resulting component may then
        !           606: be copied into the \*Mv5g/bin\fR directory.
        !           607: .PP
        !           608: The subdirectories \*Mv5g/functions\fR, \*Mv5g/lib\fR, \*Mv5g/operators\fR, and \*Mv5g/rt\fR
        !           609: each contain source code for a
        !           610: part of the Icon run-time system. The Icon interpreter,
        !           611: \*Miconx\fR, is formed by linking all the run-time subroutines together with
        !           612: the routines in \*Mv5g/iconx\fR.
        !           613: When changes are made to the run-time system, all affected
        !           614: libraries must be rebuilt and then \*Miconx\fR must be rebuilt. For example,
        !           615: if the files \*Mv5g/operators/bang.c\fR and \*Mv5g/functions/read.c\fR
        !           616: have been modified,
        !           617: the following sequence of commands rebuilds the system.
        !           618: .Ds
        !           619: .ta 1.75i
        !           620: cd v5g/functions
        !           621: make
        !           622: cd ../operators
        !           623: make
        !           624: cd ../iconx
        !           625: make
        !           626: cp iconx ../bin        # copy new version of interpreter to bin
        !           627: .De
        !           628: Alternatively,
        !           629: .Ds
        !           630: cd v5g
        !           631: make Icon
        !           632: .De
        !           633: has the same affect.
        !           634: .PP
        !           635: Note that if an alternate directory has been specified in \*MIcon-setup\fR
        !           636: via the \*M\-ibin\fR option, the files in \*Mbin\fR must then be copied to
        !           637: the alternate directory after the \fImake\fR.
        !           638: .NH 2
        !           639: PDP-11 Yacc Modifications for the Icon Translator
        !           640: .PP
        !           641: .ft R
        !           642: This section is relevant only if modifications are to be made to
        !           643: the Icon grammar,
        !           644: which is contained in the file \*Mtran/icon.g\fR.
        !           645: The version of Yacc distributed with VAX systems is large enough
        !           646: to build the Icon parser, but it may be necessary to build a
        !           647: version of Yacc with larger parameters on a PDP-11.
        !           648: The following defined constants in the file \*Mdextern\fR (in
        !           649: the \*Myacc\fR source directory)
        !           650: should be given the values listed below.
        !           651: Larger values are acceptable for all these constants, but
        !           652: are not necessary.
        !           653: .Ds
        !           654: # ifdef HUGE
        !           655: # define ACTSIZE 3000
        !           656: # define MEMSIZE 6000
        !           657: # define NSTATES 300
        !           658: # define NTERMS 127
        !           659: # define NPROD 200
        !           660: # define NNONTERM 100
        !           661: # define TEMPSIZE 1200
        !           662: # define CNAMSZ 4100
        !           663: # define LSETSIZE 200
        !           664: # define WSETSIZE 200
        !           665: # endif
        !           666: .De
        !           667: The constant
        !           668: \*MHUGE\fR should be defined instead of \*MMEDIUM\fR
        !           669: at the end of the file \*Myacc/files\fR.
        !           670: Then Yacc should be rebuilt.
        !           671: .NH 2
        !           672: Obtaining Source Code Listings
        !           673: .PP
        !           674: Execution of the commands
        !           675: .Ds
        !           676: cd v5g
        !           677: make Listall
        !           678: .De
        !           679: produces
        !           680: listings of all source files for the Icon system proper on standard output.
        !           681: Use the command
        !           682: .Ds
        !           683: cd v5g
        !           684: make List
        !           685: .De
        !           686: to obtain listings of all such files that have been altered since the
        !           687: last \*Mmake List\fR or \*Mmake Listall\fR.
        !           688: .NH
        !           689: Electronic Mail and Problem Reporting
        !           690: .PP
        !           691: A mailbox has been established to facilitate communication with
        !           692: the Icon Project. Use the following
        !           693: addresses for electronic mail:
        !           694: .Ds
        !           695: .ta 2.5i
        !           696: \*Micon\-project.arizona@csnet\-relay\fR       (CSNET and ARPANET)
        !           697: \*Marizona!icon\-project\fR    (Usenet and uucpnet)
        !           698: .De
        !           699: The Icon Project currently
        !           700: has uucp connections established through \*Mnoao\fR, \*Mmcnc\fR,
        !           701: \*Mihnp4\fR, and \*Mutah\-cs\fR.
        !           702: .PP
        !           703: If any problems are encountered with the Icon system,
        !           704: send electronic mail or telephone the Icon Project at
        !           705: 602\-621\-6613.
        !           706: If these forms of communication are not convenient, use the Trouble Report Forms supplied with
        !           707: the distribution package.
        !           708: .SH
        !           709: Acknowledgements
        !           710: .PP
        !           711: Rob McConeghy and Steve Wampler made a number of contributions to
        !           712: the procedures for installing and maintaining Icon.
        !           713: .SH
        !           714: References
        !           715: .LP
        !           716: 1. Griswold, Ralph E. and Madge T. Griswold.
        !           717: \fIThe Icon Programming Language\fR. Prentice-Hall Inc., Englewood
        !           718: Cliffs, New Jersey. 1983.
        !           719: .LP
        !           720: 2. Griswold, Ralph E., Robert K. McConeghy, and William H. Mitchell.
        !           721: \fIVersion 5.9 of Icon\fR. Technical report, Department of Computer
        !           722: Science, The University of Arizona. August 1984.
        !           723: .LP
        !           724: 3. Griswold, Ralph E. \fIThe Icon Program Library\fR. Technical Report
        !           725: TR 84-12, Department of Computer Science, The University of Arizona.
        !           726: August 1984.
        !           727: .LP
        !           728: 4. Mitchell, William H. \fIPorting the UNIX Implementation of Icon\fR.
        !           729: Technical Report TR 83-10d, Department of Computer Science, The University
        !           730: of Arizona. August 1984.
        !           731: .LP
        !           732: 5. Griswold, Ralph E. \fIAn Overview of the Porting Process for Version 5.9
        !           733: of Icon\fR.
        !           734: Department of Computer Science, The University of Arizona. October 1984.
        !           735: .LP
        !           736: 6. Griswold, Ralph E., Robert K. McConeghy, and William H. Mitchell. \fIExtensions
        !           737: to Version 5 of the Icon Programming Language\fR.
        !           738: Technical Report TR 84-10a,
        !           739: Department of
        !           740: Computer Science, The University of Arizona.
        !           741: August 1984.
        !           742: .LP
        !           743: 7. Griswold, Ralph E., Robert K. McConeghy, and William H. Mitchell.
        !           744: \fIPersonalized Interpreters for Icon\fR. Technical Report TR 84-14,
        !           745: Department of Computer Science, The University of Arizona. August 1984.
        !           746: .Ap "Appendix A \(em Icon Hierarchy"
        !           747: .sp 2
        !           748: .ta .5i +.5i +.5i +.3i +.3i +.3i +.3i +.3i +.3i +.3i +.3i
        !           749: .ds l \h'|2.5i'\fR
        !           750: .nf
        !           751: \*Mv5g\*lroot directory of the distribution
        !           752: \*M    /bin\*l binaries and command processor
        !           753: \*M    /h\*l   header files
        !           754: \*M    /tran\*l        translator
        !           755: \*M    /link\*l        linker
        !           756: \*M    /iconx\*l       interpreter
        !           757: \*M    /functions\*l   built-in functions
        !           758: \*M    /operators\*l   built-in operators
        !           759: \*M    /rt\*l  run-time support
        !           760: \*M    /lib\*l execution library
        !           761: \*M    /pifuncs\*l     C functions for personalized interpreters
        !           762: \*M    /pilib\*l       library for personalized interpreters
        !           763: \*M    /samples\*l     sample Icon programs
        !           764: \*M            /distr\*l               standard test results
        !           765: \*M            /local\*l               local test results
        !           766: \*M    /pidemo\*l      sample personalized interpreter
        !           767: \*M    /docs\*l        text for documents
        !           768: \*M    /src\*l source code for the Icon program library
        !           769: \*M            /cmd\*l         Icon programs
        !           770: \*M            /lib\*l         Icon procedures
        !           771: \*M    /libtest\*l     test programs for the Icon program library
        !           772: \*M            /distr\*l               standard test results
        !           773: \*M            /local\*l               local test results
        !           774: \*M    /ibin\*l        executable code for Icon library programs
        !           775: \*M    /ilib\*l        linkable code for Icon program library procedures
        !           776: \*M    /man\*l manual pages
        !           777: \*M            /man0\*l                text for front matter
        !           778: \*M            /man1\*l                text for Section 1
        !           779: \*M            /man2\*l                text for Section 2
        !           780: \*M            /man3\*l                text for Section 3
        !           781: \*M            /man6\*l                text for Section 6
        !           782: \*M            /man7\*l                text for Section 7
        !           783: \*M            /man8\*l                text for Section 8
        !           784: \*M            /cat0\*l                formatted pages for front matter
        !           785: \*M            /cat1\*l                formatted pages for Section 1
        !           786: \*M            /cat2\*l                formatted pages for Section 2
        !           787: \*M            /cat3\*l                formatted pages for Section 3
        !           788: \*M            /cat6\*l                formatted pages for Section 6
        !           789: \*M            /cat7\*l                formatted pages for Section 7
        !           790: \*M            /cat8\*l                formatted pages for Section 8
        !           791: \*M    /test\*l        test battery
        !           792: \*M            /distr\*l               standard test results
        !           793: \*M            /local\*l               local test results
        !           794: \*M    /book\*l        procedures from the Icon book
        !           795: \*M            /01\*l          procedures from Chapter 1
        !           796: \*M            /02\*l          procedures from Chapter 2
        !           797: \*M            /03\*l          procedures from Chapter 3
        !           798: \*M            /04\*l          procedures from Chapter 4
        !           799: \*M            /05\*l          procedures from Chapter 5
        !           800: \*M            /06\*l          procedures from Chapter 6
        !           801: \*M            /07\*l          procedures from Chapter 7
        !           802: \*M            /08\*l          procedures from Chapter 8
        !           803: \*M            /09\*l          procedures from Chapter 9
        !           804: \*M            /10\*l          procedures from Chapter 10
        !           805: \*M            /11\*l          procedures from Chapter 11
        !           806: \*M            /12\*l          procedures from Chapter 12
        !           807: \*M            /13\*l          procedures from Chapter 13
        !           808: \*M            /14\*l          procedures from Chapter 14
        !           809: \*M            /15\*l          procedures from Chapter 15
        !           810: \*M            /16\*l          procedures from Chapter 16
        !           811: \*M            /17\*l          procedures from Chapter 17
        !           812: \*M            /18\*l          procedures from Chapter 18
        !           813: \*M            /19\*l          procedures from Chapter 19
        !           814: \*M            /20\*l          procedures from Chapter 20
        !           815: \*M            /f\*l           procedures from Appendix F
        !           816: \*M    /port\*l                porting tests
        !           817: \*M            /distr\*l                       standard test results
        !           818: \*M            /local\*l                       local test results
        !           819: .Ap "Appendix B \(em Listing of Distributed Icon Files"
        !           820: .de Ta
        !           821: .ps 8
        !           822: .vs 10
        !           823: .ta 1.1i 2.2i 3.3i 4.4i 5.5i
        !           824: ..
        !           825: .sp 1
        !           826: .PP
        !           827: Files names followed by a slash are directories. Asterisks identify
        !           828: executable files (shell scripts).
        !           829: .sp
        !           830: .Ds
        !           831: Icon-setup*    functions/      lib/    pifuncs/        test/
        !           832: Makefile       h/      libtest/        pilib/  tran/
        !           833: Pimakefile.gen ibin/   link/   port/
        !           834: bin/   icon-pi.gen*    man/    rt/
        !           835: book/  iconx/  operators/      samples/
        !           836: docs/  ilib/   pidemo/ src/
        !           837: .Dd
        !           838: bin:
        !           839: Makefile       Makefile.gen    icont.c ixhdr.c
        !           840: .Dd
        !           841: book:
        !           842: 01/    08/     13/     18/     alpha.ls
        !           843: 02/    09/     14/     19/     f/
        !           844: 04/    10/     15/     20/     page.ls
        !           845: 05/    11/     16/     Makefile
        !           846: 07/    12/     17/     READ.ME
        !           847: .Dd
        !           848: book/01:
        !           849: countm1.icn    hello1.icn      hello3.icn      hello5.icn      locate2.icn
        !           850: countm2.icn    hello2.icn      hello4.icn      locate1.icn
        !           851: .Dd
        !           852: book/02:
        !           853: break1.icn     break2.icn      break3.icn      next.icn
        !           854: .Dd
        !           855: book/04:
        !           856: balop.icn      inset2.icn      minmax2.icn     vbars.icn       wordlist1.icn
        !           857: icwrite.icn    lmark.icn       powers.icn      word1.icn       words1.icn
        !           858: inset1.icn     minmax1.icn     section.icn     word2.icn
        !           859: .Dd
        !           860: book/05:
        !           861: array.icn      get.icn tabwords1.icn   wordlen.icn     wordlist2.icn
        !           862: .Dd
        !           863: book/07:
        !           864: exor1.icn      expr2.icn       fib2.icn        fword2.icn
        !           865: expr1.icn      fib1.icn        fword1.icn      nword.icn
        !           866: .Dd
        !           867: book/08:
        !           868: maxel.icn      words2.icn
        !           869: .Dd
        !           870: book/09:
        !           871: copy1.icn      copy2.icn       copy3.icn
        !           872: .Dd
        !           873: book/10:
        !           874: display.icn    shuffle1.icn
        !           875: .Dd
        !           876: book/11:
        !           877: fibseq1.icn    mark.icn        rtl.icn
        !           878: genword.icn    marker.icn      to.icn
        !           879: .Dd
        !           880: book/12:
        !           881: tabwords2.icn  words3.icn
        !           882: .Dd
        !           883: book/13:
        !           884: alt.icn        equalseq.icn    every.icn       filter1.icn     inter.icn
        !           885: .Dd
        !           886: book/14:
        !           887: 8q.icn cross1.icn      limit1.icn      limit3.icn      stars.icn
        !           888: break4.icn     cross2.icn      limit2.icn      posint.icn
        !           889: .Dd
        !           890: book/15:
        !           891: abc.icn        arbno.icn       parsexp.icn     recexp.icn      tab.icn
        !           892: arb.icn        lmatch.icn      rarb.icn        shades.icn
        !           893: .Dd
        !           894: book/16:
        !           895: eq.icn lgraph.icn      stree.icn       visit.icn
        !           896: ldag.icn       ltree.icn       teq.icn
        !           897: .Dd
        !           898: book/17:
        !           899: close.icn      disp.icn        reverse.icn     shuffle2.icn    swap.icn
        !           900: .Dd
        !           901: book/18:
        !           902: add1.icn       add2.icn        add3.icn        mpy.icn
        !           903: .Dd
        !           904: book/19:
        !           905: drv.icn        form1.icn       symadd.icn
        !           906: fix.icn        form2.icn       symop.icn
        !           907: .Dd
        !           908: book/20:
        !           909: rsg1.icn
        !           910: .Dd
        !           911: book/f:
        !           912: 8qp.icn        both.icn        fact.icn        infix.icn       rotate.icn
        !           913: abcd.icn       btree.icn       filerev.icn     large.icn       rsg2.icn
        !           914: acker1.icn     cdigit.icn      filter2.icn     lastline.icn    rsg3.icn
        !           915: acker2.icn     charimage.icn   filter3.icn     limit4.icn      seqimage.icn
        !           916: ackertr.icn    complex.icn     first.icn       locate3.icn     space.icn
        !           917: allbal1.icn    dashes.icn      fixfunc.icn     nchars.icn      symmpy.icn
        !           918: allbal2.icn    delete1.icn     form3.icn       oddline.icn     symsub.icn
        !           919: allbal3.icn    delete2.icn     gener.icn       palseq.icn      tabwords3.icn
        !           920: aver.icn       depth.icn       genpos.icn      pause.icn       tcopy.icn
        !           921: bincop.icn     enrepl.icn      gensubstr.icn   qseq.icn        uscore.icn
        !           922: boldface.icn   exor2.icn       hexcvt.icn      repalt.icn      vcount.icn
        !           923: .Dd
        !           924: docs:
        !           925: Makefile       icont.1 tr83-10a.roff   tr84-11 tr84-14
        !           926: READ.ME        porting tr83-10b.roff   tr84-11a.roff   version5.9
        !           927: cover  reportform      tr83-10c.roff   tr84-11b.roff
        !           928: distpack       tmac.tr tr83-3  tr84-12
        !           929: icon-pi.1      tr83-10 tr84-10 tr84-13
        !           930: .Dd
        !           931: functions:
        !           932: Makefile       exit.c  member.c        reads.c tab.c
        !           933: abs.c  find.c  move.c  real.c  table.c
        !           934: any.c  get.c   numeric.c       repl.c  trim.c
        !           935: bal.c  image.c open.c  reverse.c       type.c
        !           936: center.c       insert.c        pop.c   right.c upto.c
        !           937: close.c        integer.c       pos.c   seq.c   write.c
        !           938: collect.c      left.c  proc.c  set.c   writes.c
        !           939: copy.c list.c  pull.c  sort.c
        !           940: cset.c many.c  push.c  stop.c
        !           941: delete.c       map.c   put.c   string.c
        !           942: display.c      match.c read.c  system.c
        !           943: .Dd
        !           944: h:
        !           945: Makefile       ctype.h gc.h    pnames.h
        !           946: config.h       defs.s  keyword.h       record.h
        !           947: config.h.gen   err.h   pdef.h  rt.h
        !           948: .Dd
        !           949: ibin:
        !           950: \&.placeholder
        !           951: .Dd
        !           952: iconx:
        !           953: Makefile       init.c  main.c  pstop.s
        !           954: Makefile.gen   interp.s        pstart.s        start.s
        !           955: .Dd
        !           956: ilib:
        !           957: \&.placeholder
        !           958: .Dd
        !           959: lib:
        !           960: Makefile       coret.s esusp.s limit.c pfail.s
        !           961: bscan.c        create.c        field.c llist.c pret.s
        !           962: coact.s        efail.s invoke.s        lsusp.s psusp.s
        !           963: cofail.s       escan.c keywd.c mkrec.c
        !           964: .Dd
        !           965: libtest:
        !           966: Functest*      t-collate.dat   t-gener.dat     t-loadmap       t-shuffile.dat
        !           967: Makefile       t-collate.icn   t-gener.icn     t-math.icn      t-shuffle.dat
        !           968: Proctest*      t-complex.dat   t-getenv.icn    t-parens        t-shuffle.icn
        !           969: Proctest.gen*  t-complex.icn   t-gpack.dat     t-patterns.dat  t-size.dat
        !           970: Prog1test*     t-cppp  t-gpack.icn     t-patterns.icn  t-size.icn
        !           971: Prog2test*     t-cppp.dat      t-gset  t-pdae.dat      t-snapshot.dat
        !           972: READ.ME        t-cross.dat     t-i-psort.dat   t-pdae.icn      t-snapshot.icn
        !           973: distr/ t-csgen.dat     t-i-split       t-pdco.dat      t-structs.dat
        !           974: func.tlist     t-deal.dat      t-i-split.dat   t-pdco.icn      t-structs.icn
        !           975: local/ t-delam t-i-trfil       t-queens.dat    t-strutil.dat
        !           976: pdef.h t-delam.dat     t-i-trfil.dat   t-radcon.dat    t-strutil.icn
        !           977: proc.tlist     t-delamc        t-i-xref.dat    t-radcon.icn    t-tablc.dat
        !           978: prog1.tlist    t-delamc.dat    t-image.dat     t-roffcmds.dat  t-tablw.dat
        !           979: prog2.tlist    t-edscript.dat  t-image.icn     t-rsg.dat       t-trig.icn
        !           980: sizes.c        t-escape.dat    t-iscope.icn    t-seek.icn      t-trim.dat
        !           981: t-bitops.dat   t-escape.icn    t-labels.dat    t-segment.dat   t-ttyctl.icn
        !           982: t-bitops.icn   t-farb.dat      t-lam   t-segment.icn   t-ttyinit.dat
        !           983: t-bold.dat     t-fset  t-lam.dat       t-seqimage.dat  t-ttyinit.icn
        !           984: t-bold.icn     t-gcomp t-ll.dat        t-seqimage.icn  t-worm
        !           985: .Dd
        !           986: libtest/distr:
        !           987: bitops.out     escape.out      i-xref.out      pdco.out        snapshot.out
        !           988: bold.out       farb.out        image.out       queens.out      structs.out
        !           989: collate.out    fset.out        iscope.out      radcon.out      strutil.out
        !           990: complex.out    gcomp.out       labels.out      roffcmds.out    tablc.out
        !           991: cppp.out       gener.out       lam.out rsg.out tablw.out
        !           992: cross.out      getenv.out      ll.out  seek.out        trig.out
        !           993: csgen.out      gpack.out       loadmap.out     segment.out     trim.out
        !           994: deal.out       gset.out        math.out        seqimage.out    ttyctl.out
        !           995: delam.out      i-psort.out     parens.out      shuffile.out    ttyinit.out
        !           996: delamc.out     i-split.out     patterns.out    shuffle.out     worm.out
        !           997: edscript.out   i-trfil.out     pdae.out        size.out
        !           998: .Dd
        !           999: libtest/local:
        !          1000: \&.placeholder
        !          1001: .Dd
        !          1002: link:
        !          1003: Makefile       glob.c  lcode.c lsym.c
        !          1004: builtin.c      ilink.c llex.c  opcode.c
        !          1005: datatype.h     ilink.h lmem.c  opcode.h
        !          1006: .Dd
        !          1007: man:
        !          1008: Makefile       cat3/   man0/   man6/   tmac.an.new
        !          1009: cat0/  cat6/   man1/   man7/   tmac.an6n
        !          1010: cat1/  cat7/   man2/   man8/   tmac.an6t
        !          1011: cat2/  cat8/   man3/   tmac.an tmac.ilib
        !          1012: .Dd
        !          1013: man/cat0:
        !          1014: ptx    toc
        !          1015: .Dd
        !          1016: man/cat1:
        !          1017: cppp.1 fset.1  i-trfil.1       loadmap.1       tablc.1
        !          1018: csgen.1        gcomp.1 i-xref.1        parens.1        tablw.1
        !          1019: delam.1        gset.1  labels.1        roffcmds.1      trim.1
        !          1020: delamc.1       i-psort.1       lam.1   rsg.1
        !          1021: edscript.1     i-split.1       ll.1    shuffile.1
        !          1022: .Dd
        !          1023: man/cat2:
        !          1024: bitops.2       escape.2        patterns.2      segment.2       snapshot.2
        !          1025: bold.2 gener.2 pdae.2  seqimage.2      structs.2
        !          1026: collate.2      gpack.2 pdco.2  shuffle.2       strutil.2
        !          1027: complex.2      image.2 radcon.2        size.2  ttyinit.2
        !          1028: .Dd
        !          1029: man/cat3:
        !          1030: getenv.3       math.3  trig.3
        !          1031: iscope.3       seek.3  ttyctl.3
        !          1032: .Dd
        !          1033: man/cat6:
        !          1034: cross.6        deal.6  farb.6  queens.6        worm.6
        !          1035: .Dd
        !          1036: man/cat7:
        !          1037: i-hier.7
        !          1038: .Dd
        !          1039: man/cat8:
        !          1040: lman.8 uman.8
        !          1041: .Dd
        !          1042: man/man0:
        !          1043: ptx.in toc.in  toc2    toc4    toc6    toc8
        !          1044: ptxx   toc1    toc3    toc5    toc7
        !          1045: .Dd
        !          1046: man/man1:
        !          1047: cppp.1 fset.1  i-trfil.1       loadmap.1       tablc.1
        !          1048: csgen.1        gcomp.1 i-xref.1        parens.1        tablw.1
        !          1049: delam.1        gset.1  labels.1        roffcmds.1      trim.1
        !          1050: delamc.1       i-psort.1       lam.1   rsg.1
        !          1051: edscript.1     i-split.1       ll.1    shuffile.1
        !          1052: .Dd
        !          1053: man/man2:
        !          1054: bitops.2       escape.2        patterns.2      segment.2       snapshot.2
        !          1055: bold.2 gener.2 pdae.2  seqimage.2      structs.2
        !          1056: collate.2      gpack.2 pdco.2  shuffle.2       strutil.2
        !          1057: complex.2      image.2 radcon.2        size.2  ttyinit.2
        !          1058: .Dd
        !          1059: man/man3:
        !          1060: getenv.3       math.3  trig.3
        !          1061: iscope.3       seek.3  ttyctl.3
        !          1062: .Dd
        !          1063: man/man6:
        !          1064: cross.6        deal.6  farb.6  queens.6        worm.6
        !          1065: .Dd
        !          1066: man/man7:
        !          1067: i-hier.7
        !          1068: .Dd
        !          1069: man/man8:
        !          1070: lman.8 uman.8
        !          1071: .Dd
        !          1072: operators:
        !          1073: Makefile       lconcat.c       mult.c  numle.c sect.c
        !          1074: asgn.c lexeq.c neg.c   numlt.c size.c
        !          1075: bang.c lexge.c neqv.c  numne.c subsc.c
        !          1076: cat.c  lexgt.c nonnull.c       plus.c  swap.c
        !          1077: compl.c        lexle.c null.c  power.c tabmat.c
        !          1078: diff.c lexlt.c number.c        random.c        toby.c
        !          1079: div.c  lexne.c numeq.c rasgn.c unioncs.c
        !          1080: eqv.c  minus.c numge.c refresh.c       value.c
        !          1081: inter.c        mod.c   numgt.c rswap.c
        !          1082: .Dd
        !          1083: pidemo:
        !          1084: \&.placeholder
        !          1085: .Dd
        !          1086: pifuncs:
        !          1087: Makefile       iscope.c        seek.c  ttyctl.c
        !          1088: getenv.c       math.c  trig.c
        !          1089: .Dd
        !          1090: pilib:
        !          1091: Makefile       Pilib*
        !          1092: .Dd
        !          1093: port:
        !          1094: Linkchecker*   basis4.icn      esusp1.icn      lsusp1.icn      roman.icn
        !          1095: Linktest.gen*  basis5.icn      esusp2.icn      meander.icn     rsg.icn
        !          1096: Makefile       basis6.icn      fail.tlist      prefix.icn      seqimage.icn
        !          1097: Runtest.gen*   basis7.icn      fail1.icn       pret.tlist      set1.tlist
        !          1098: Runtestall*    basis8.icn      fail2.icn       pret1.icn       suspend.tlist
        !          1099: Trantest.gen*  btrees.icn      gc.tlist        pret2.icn       suspend1.icn
        !          1100: arith.tlist    cross.icn       gc1.icn pret3.icn       suspend2.icn
        !          1101: arith1.icn     display.tlist   gc2.icn proto.icn       wordcount.icn
        !          1102: basis.tlist    display1.icn    hello.icn       psusp.tlist
        !          1103: basis1.icn     display2.icn    lit.icn psusp1.icn
        !          1104: basis2.icn     distr/  local/  psusp2.icn
        !          1105: basis3.icn     esusp.tlist     lsusp.tlist     recogn.icn
        !          1106: .Dd
        !          1107: port/distr:
        !          1108: arith1.out     cross.u2        lit.u1  proto.u1        rsg.ux
        !          1109: basis1.out     cross.ux        lit.u2  proto.u2        seqimage.u1
        !          1110: basis2.out     display1.out    lit.ux  proto.ux        seqimage.u2
        !          1111: basis3.out     display2.out    lsusp1.out      psusp1.out      seqimage.ux
        !          1112: basis4.out     esusp1.out      meander.u1      psusp2.out      suspend1.out
        !          1113: basis5.out     esusp2.out      meander.u2      recogn.u1       suspend2.out
        !          1114: basis6.out     fail1.out       meander.ux      recogn.u2       wordcount.u1
        !          1115: basis7.out     fail2.out       prefix.u1       recogn.ux       wordcount.u2
        !          1116: basis8.out     gc1.out prefix.u2       roman.u1        wordcount.ux
        !          1117: btrees.u1      gc2.out prefix.ux       roman.u2
        !          1118: btrees.u2      hello.u1        pret1.out       roman.ux
        !          1119: btrees.ux      hello.u2        pret2.out       rsg.u1
        !          1120: cross.u1       hello.ux        pret3.out       rsg.u2
        !          1121: .Dd
        !          1122: port/local:
        !          1123: \&.placeholder
        !          1124: .Dd
        !          1125: rt:
        !          1126: Makefile       cvpos.c doasgn.c        host.c  pow.c
        !          1127: addmem.c       cvreal.c        dump.c  ldfps.s putstr.c
        !          1128: alc.c  cvstr.c equiv.c lexcmp.c        qtos.c
        !          1129: anycmp.c       dblocks.c       exp.c   locate.c        setbound.s
        !          1130: arith.s        defany.c        fail.s  log.c   strprc.c
        !          1131: cplist.c       defcset.c       floor.c memb.c  suspend.s
        !          1132: csv.s  deffile.c       gc.c    mkint.c sweep.c
        !          1133: ctype.c        defint.c        gcollect.s      mkreal.c        trace.c
        !          1134: cvcset.c       defshort.c      gcvt.c  mksubs.c
        !          1135: cvint.c        defstr.c        getstr.c        numcmp.c
        !          1136: cvnum.c        deref.c hash.c  outimage.c
        !          1137: .Dd
        !          1138: samples:
        !          1139: Makefile       diffwords.icn   parallel.dat    recogn.icn      sieve.icn
        !          1140: Test.gen*      distr/  parallel.icn    roman.dat       std.tlist
        !          1141: btrees.dat     hello.dat       pdco.dat        roman.icn       wordcount.dat
        !          1142: btrees.icn     hello.icn       pdco.icn        seqimage.dat    wordcount.icn
        !          1143: cross.dat      local/  prefix.dat      seqimage.icn    xpx.tlist
        !          1144: cross.icn      meander.dat     prefix.icn      set.tlist
        !          1145: diffwords.dat  meander.icn     recogn.dat      sieve.dat
        !          1146: .Dd
        !          1147: samples/distr:
        !          1148: btrees.out     hello.out       pdco.out        roman.out       wordcount.out
        !          1149: cross.out      meander.out     prefix.out      seqimage.out
        !          1150: diffwords.out  parallel.out    recogn.out      sieve.out
        !          1151: .Dd
        !          1152: samples/local:
        !          1153: \&.placeholder
        !          1154: .Dd
        !          1155: src:
        !          1156: Makefile       cmd/    lib/
        !          1157: .Dd
        !          1158: src/cmd:
        !          1159: Makefile       delam.icn       gset.icn        lam.icn rsg.icn
        !          1160: Makefile.gen   delamc.icn      i-psort.icn     ll.icn  shuffile.icn
        !          1161: cppp.icn       edscript.icn    i-split.icn     loadmap.icn     tablc.icn
        !          1162: cross.icn      farb.icn        i-trfil.icn     parens.icn      tablw.icn
        !          1163: csgen.icn      fset.icn        i-xref.icn      queens.icn      trim.icn
        !          1164: deal.icn       gcomp.icn       labels.icn      roffcmds.icn    worm.icn
        !          1165: .Dd
        !          1166: src/lib:
        !          1167: Makefile       complex.icn     patterns.icn    seqimage.icn    strutil.icn
        !          1168: Makefile.gen   escape.icn      pdae.icn        shuffle.icn     ttyinit.icn
        !          1169: bitops.icn     gener.icn       pdco.icn        size.icn
        !          1170: bold.icn       gpack.icn       radcon.icn      snapshot.icn
        !          1171: collate.icn    image.icn       segment.icn     structs.icn
        !          1172: .Dd
        !          1173: test:
        !          1174: Makefile       std10.icn       std30.icn       std50.icn       std70.icn
        !          1175: READ.ME        std11.icn       std31.icn       std51.icn       std71.icn
        !          1176: Test.gen*      std12.icn       std32.icn       std52.icn       std72.icn
        !          1177: buildt.icn     std13.icn       std33.icn       std53.icn       std73.icn
        !          1178: dismem.icn     std14.icn       std34.icn       std54.icn       std74.icn
        !          1179: distr/ std15.icn       std35.icn       std55.icn       std75.icn
        !          1180: local/ std16.icn       std36.icn       std56.icn       std76.icn
        !          1181: set.tlist      std17.icn       std37.icn       std57.icn       std77.icn
        !          1182: set01.icn      std18.icn       std38.icn       std58.icn       std78.icn
        !          1183: set02.icn      std19.icn       std39.icn       std59.icn       std79.icn
        !          1184: std.tlist      std20.icn       std40.icn       std60.icn       std80.icn
        !          1185: std01.icn      std21.icn       std41.icn       std61.icn       std81.icn
        !          1186: std02.icn      std22.icn       std42.icn       std62.icn       std82.icn
        !          1187: std03.icn      std23.icn       std43.icn       std63.icn       std83.icn
        !          1188: std04.icn      std24.icn       std44.icn       std64.icn       std84.icn
        !          1189: std05.icn      std25.icn       std45.icn       std65.icn       std85.icn
        !          1190: std06.icn      std26.icn       std46.icn       std66.icn       xpx.tlist
        !          1191: std07.icn      std27.icn       std47.icn       std67.icn       xpx01.icn
        !          1192: std08.icn      std28.icn       std48.icn       std68.icn       xpx02.icn
        !          1193: std09.icn      std29.icn       std49.icn       std69.icn       xpx03.icn
        !          1194: .Dd
        !          1195: test/distr:
        !          1196: set01.out      std17.out       std35.out       std53.out       std71.out
        !          1197: set02.out      std18.out       std36.out       std54.out       std72.out
        !          1198: std01.out      std19.out       std37.out       std55.out       std73.out
        !          1199: std02.out      std20.out       std38.out       std56.out       std74.out
        !          1200: std03.out      std21.out       std39.out       std57.out       std75.out
        !          1201: std04.out      std22.out       std40.out       std58.out       std76.out
        !          1202: std05.out      std23.out       std41.out       std59.out       std77.out
        !          1203: std06.out      std24.out       std42.out       std60.out       std78.out
        !          1204: std07.out      std25.out       std43.out       std61.out       std79.out
        !          1205: std08.out      std26.out       std44.out       std62.out       std80.out
        !          1206: std09.out      std27.out       std45.out       std63.out       std81.out
        !          1207: std10.out      std28.out       std46.out       std64.out       std82.out
        !          1208: std11.out      std29.out       std47.out       std65.out       std83.out
        !          1209: std12.out      std30.out       std48.out       std66.out       std84.out
        !          1210: std13.out      std31.out       std49.out       std67.out       std85.out
        !          1211: std14.out      std32.out       std50.out       std68.out       xpx01.out
        !          1212: std15.out      std33.out       std51.out       std69.out       xpx02.out
        !          1213: std16.out      std34.out       std52.out       std70.out       xpx03.out
        !          1214: .Dd
        !          1215: test/local:
        !          1216: \&.placeholder
        !          1217: .Dd
        !          1218: tran:
        !          1219: Makefile       err.c   lex.c   mktoktab.icn    sym.h
        !          1220: Makefile.gen   icon.g  lex.h   optab   synerr.h
        !          1221: char.c itran.c lfile.h optab.c token.h
        !          1222: char.h itran.h lnklist.c       parse.c tokens
        !          1223: code.c keyword.c       mem.c   pscript toktab.c
        !          1224: code.h keywords        mkkeytab.icn    sym.c   tree.h
        !          1225: .De

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.