summaryrefslogtreecommitdiff
path: root/ipl/docs
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/docs')
-rw-r--r--ipl/docs/README9
-rw-r--r--ipl/docs/address.txt132
-rw-r--r--ipl/docs/hebcalen.hlp81
-rw-r--r--ipl/docs/hebcalpi.hlp86
-rw-r--r--ipl/docs/iconmake.txt44
-rw-r--r--ipl/docs/ipp.txt261
-rw-r--r--ipl/docs/mr.man98
-rw-r--r--ipl/docs/polywalk.txt60
-rw-r--r--ipl/docs/post.161
-rw-r--r--ipl/docs/pt.man99
10 files changed, 931 insertions, 0 deletions
diff --git a/ipl/docs/README b/ipl/docs/README
new file mode 100644
index 0000000..02aeb3b
--- /dev/null
+++ b/ipl/docs/README
@@ -0,0 +1,9 @@
+ address.txt documentation for address procedures
+ hebcalen.hlp documentation for hebcalen.icn
+ hebcalpi.hlp documentation for hebcalpi.icn
+ iconmake.txt make skeleton for Icon
+ ipp.txt supplementary documentation for ipp.icn
+ mr.man manual page for mr.icn
+ post.1 manual page source for post.icn
+ polywalk.txt description of polynomial programs
+ pt.man manual page for pt.icn
diff --git a/ipl/docs/address.txt b/ipl/docs/address.txt
new file mode 100644
index 0000000..f42757d
--- /dev/null
+++ b/ipl/docs/address.txt
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+ Processing Address Lists in Icon
+
+ Ralph E. Griswold
+ Department of Computer Science, The University of Arizona
+
+Introduction
+
+ Version 8.1 of the Icon program library contains a collection
+of programs for processing address lists. These programs check
+the correctness of address lists, filter them for designated
+entries, sort them, and format mailing labels.
+
+ The format of addresses lists processed by these programs is
+loosely structured. This allows such lists to be created and
+maintained using any text editor and allows them to be used for a
+variety of purposes (not just for addresses, although that term
+is used here for simplicity). The lack of structure, on the other
+hand, allows ambiguities and the possibility of incorrectly
+organized data. These programs are no substitute for a database
+system or an application specifically dedicated to the handling
+of mailing lists.
+
+Address_List_Format
+
+ An address list, in the sense the term is used here, is a
+sequence of entries. Each entry begins with a header line, in
+which the first character is a #. Subsequent lines contain the
+address information in a natural format with a few constraints
+that are necessary if some of the programs described in the next
+section are to be used. For example, an address list might look
+like this:
+
+ #
+ Mr. Fred Burfle
+ 1010 Wayside Lane
+ Scottsdale, AZ 85254
+ #
+ Prof. M. Elwood Mork
+ 5235 Courtland Blvd., Apt. 23
+ Minneapolis, MN 55432
+ .
+ .
+ .
+
+
+ Since a # at the beginning of a line constitutes a header, a #
+cannot appear as the first character of a line in an entry. One
+work-around for this problem is to put a blank in front of a #
+that otherwise would appear at the beginning of a line in an
+entry.
+
+ Within an entry, a line whose first character is a * is con-
+sidered to be a comment and is not treated as significant text.
+For example, such comment lines are ignored when formatting
+
+
+
+IPD171 - 1 - September 4, 1991
+
+
+
+
+
+
+
+
+mailing labels. Comment lines can be used for information like
+telephone numbers.
+
+ The # that starts a header line can be followed by one or more
+designator characters. Several of the programs can select only
+those entries with specific designators.
+
+ The choice of designator characters is up to the user. For
+example, #a might be used to designate active accounts, while #b
+might be used to designate bad addresses.
+
+Organization_of_Entry_Information
+
+ Some of the programs that process address lists expect the
+entries to be in a specific form. For example, the first line of
+an entry (after the header) is expected to be a name if the entry
+is an actual address.
+
+ Similarly, for addresses in the United States, the last line
+of an entry is expected to be the city, followed by a comma, fol-
+lowed by the postal-code abbreviation for the state, followed by
+one or more blanks, followed by the ZIP code. See the examples
+above.
+
+ For an address outside the United States, the last line is
+expected to consist only of the country name, in all uppercase
+letters.
+
+Programs
+
+ The following programs are available for processing address
+lists:
+
+ adlcheck Checks lists for bad data. Options include checking
+ the state and ZIP code (U.S. only), country name,
+ and for fitting in the confines of a standard one-
+ up mailing label.
+
+ adlcount Counts the number of labels in a list with optional
+ restriction to entries with specified designators.
+
+ adlfiltr Filters a list, outputting only those entries with
+ specified designators.
+
+ adllist Lists ``fields'' of address list entries, including
+ addressee name, city, state, ZIP code, and country.
+
+ adlsort Sorts address list entries by addressee name, ZIP
+ code, or country.
+
+ labels Produces one-up mailing labels for designated
+ entries.
+
+ See the programs themselves for detailed documentation.
+
+
+
+IPD171 - 2 - September 4, 1991
+
+
diff --git a/ipl/docs/hebcalen.hlp b/ipl/docs/hebcalen.hlp
new file mode 100644
index 0000000..f5bdc29
--- /dev/null
+++ b/ipl/docs/hebcalen.hlp
@@ -0,0 +1,81 @@
+This program accepts a year of the Jewish calendar, for example
+"5750", and produces on the screen a calendar of that year with a
+visually equivalent civil calendar opposite it for easy conversion of
+dates. The months of the civil year are abbreviated to
+
+JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
+
+and of the Jewish calendar to
+
+NIS IYA SIV TAM AV ELU TIS HES KIS TEV SHE ADA AD2.
+
+Months are normally displayed three at a time. You call up the next
+three by hitting spacebar. At the end of the year you can indicate if
+you wish the program to conclude, by hitting spacebar again. If in
+response to the question, Do you wish to continue? you enter "y" and
+hit return, the next year will be displayed.
+
+Each Jewish month has its name on the left. The corresponding secular
+dates will have the name of the month on the right, and when the month
+changes it will be indicated on the right also.
+
+
+
+
+If you wish, you may enter a civil year in the form -70 for BCE dates
+and +70 for CE dates. The Jewish year beginning prior to Jan 1 of that
+year will be displayed, and you can continue with the next Jewish year
+if you wish to complete the desired civil year.
+
+You may enter CE or AD instead of + or BC or BCE instead of the minus
+sign if you wish. It is best to avoid spaces, so enter 1987AD, for
+example.
+
+The year 0 is not meaningful in either calendar. No date prior to 1
+in the Jewish calendar should be entered. The program will calculate
+any future year, but will take longer for years much beyond the year
+6000 in the Jewish reckoning. For example, the year 7000 will take
+three minutes or so to appear if your machine is not very fast.
+Earlier years should appear in a few seconds.
+
+A status line at the bottom of the screen indicates the civil and
+Jewish year, and the number of days in each. Jewish years may contain
+354, 355, 356, 384, 385 or 386 days according to circumstances.
+
+
+
+
+When you are familiar with this program you can enter the years you
+wish to see on the command line. For example, if you call the program
+ iconx calendar 5704 +1987 1BC
+you will see in turn the Jewish year 5704, the Jewish year commencing
+in 1986 and the Jewish year commencing in 2 B.C.E. You still have the
+option of seeing the years subsequent to these years if you wish. Just
+enter "y" when asked if you want to continue. When you enter "n", you
+will get the next year of your list.
+
+All civil dates are according to the Gregorian Calendar which first
+came into use in 1582 and was accepted in different places at
+different times. Prior to that date the Julian calendar was in use. At
+the present time the Julian calendar is 13 days behind the Gregorian
+Calendar, so that March 15 1917 in our reckoning is March 2 in the
+Julian Calendar. The following table shows the number of days that
+must be subtracted from the Gregorian date given here to find the Julian
+date. In the early centuries of this table and before, the calendar was
+intercalated erratically, so a simple subtraction is not possible. Note that
+the change in the number to subtract applies from March 1 in the century
+year, since in the Julian Calendar that will be February 29 except in years
+divisible by 400 which are leap years in the Gregorian calendar also.
+
+Century # to subtract Century # to subtract
+ 21 13 11 6
+ 20 13 10 5
+ 19 12 9 4
+ 18 11 8 4
+ 17 10 7 3
+ 16 10 6 2
+ 15 9 5 1
+ 14 8 4 1
+ 13 7 3 0
+ 12 7 2 -1
+ 1 -2
diff --git a/ipl/docs/hebcalpi.hlp b/ipl/docs/hebcalpi.hlp
new file mode 100644
index 0000000..92016b6
--- /dev/null
+++ b/ipl/docs/hebcalpi.hlp
@@ -0,0 +1,86 @@
+Here is the alternate help for the calendar in ProIcon.
+
+This program accepts a year of the Jewish calendar, for example
+"5750", and produces on the screen a calendar of that year with a
+visually equivalent civil calendar opposite it for easy conversion of
+dates. The months of the civil year are abbreviated to
+
+JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
+
+and of the Jewish calendar to
+
+NIS IYA SIV TAM AV ELU TIS HES KIS TEV SHE ADA AD2.
+
+Months are normally displayed three at a time. You call up the next
+three by hitting the space bar (or any other character). You may
+conclude at this point if you wish by clicking on the word "Run" at
+the top of the screen, dragging down to "Stop" and releasing.
+At the end of the year you can indicate if you wish to
+view the next following year by entering the letter "y" in response to
+the question, Do you wish to continue? If you enter "n" the program
+will conclude, or go on to the next year you wished to see if you
+called the program with multiple entries of years. (See below.)
+
+Each Jewish month has its name on the left. The corresponding secular
+dates will have the name of the month on the right, and when the month
+changes it will be indicated on the right also.
+
+If you wish, you may enter a civil year in the form -70 for BCE dates
+and +70 for CE dates. The Jewish year beginning prior to Jan 1 of that
+year will be displayed, and you can continue with the next Jewish year
+if you wish to complete the desired civil year.
+
+You may enter CE or AD instead of +, or BC or BCE instead of the minus
+sign if you wish. Avoid spaces, so enter 1987AD, for example.
+
+The year 0 is not meaningful in either calendar. No date prior to 1
+in the Jewish calendar should be entered. The program will calculate
+any future year, but will take longer for years much beyond the year
+6020 in the Jewish reckoning. For example, the year 7000 will take
+three minutes or so to appear. Earlier years should appear in a few
+seconds.
+
+A status line at the bottom of the screen indicates the civil and
+Jewish year, and the number of days in each. Jewish years may contain
+354, 355, 356, 384, 385 or 386 days according to circumstances.
+
+When you are familiar with this program you can enter any number of years
+you wish to see. Before you start the program, click on "Options", drag
+to "Parameter String" and release. You can then enter, for example
+ 5704 +1987 1BC
+then click on the box marked "OK". If you want to change these later, go
+back to "Options" and type in your new list. You will see in turn the
+Jewish year 5704, the Jewish year commencing in 1986 and the Jewish year
+commencing in 2 B.C.E. You still have the option of seeing the years
+subsequent to these years if you wish. Just enter "y" when asked if you
+want to continue. When you enter "n", you will get the next year of your
+original list.
+
+When you are completely through with the program, click on "File" at
+the top of the screen, drag to "Quit" and release. If you wish you can
+drag to "Transfer" and you will see a dialogue box to transfer to another
+program, or to Hypercard.
+
+All civil dates are according to the Gregorian Calendar which first
+came into use in 1582 and was accepted in different places at
+different times. Prior to that date the Julian calendar was in use. At
+the present time the Julian calendar is 13 days behind the Gregorian
+Calendar, so that January 20 1990 in our reckoning is January 7 in the
+Julian Calendar. The following table shows the number of days that
+must be subtracted from the Gregorian date given here to find the Julian
+date. In the centuries before the current era the calendar was
+intercalated erratically, so a simple subtraction is not possible.
+
+Century # to subtract Century # to subtract
+ 21 13 11 6
+ 20 13 10 5
+ 19 12 9 4
+ 18 11 8 4
+ 17 10 7 3
+ 16 10 6 2
+ 15 9 5 1
+ 14 8 4 1
+ 13 7 3 0
+ 12 7 2 -1
+ 1 -2
+
diff --git a/ipl/docs/iconmake.txt b/ipl/docs/iconmake.txt
new file mode 100644
index 0000000..e656c49
--- /dev/null
+++ b/ipl/docs/iconmake.txt
@@ -0,0 +1,44 @@
+
+A generic makefile skeleton for Icon programs by Bob Alexander:
+
+-------------------------------------------------------------------------
+#
+# Makefile for Icon Programming Language program:
+#
+PROGRAM=|>Program Name<|
+
+#
+# To customize this file, usually only the definitions of macros
+# PROGRAM and FILES require modification.
+#
+
+#
+# Specification of separate files that make up the program.
+#
+# Note that the .u1 suffix is used here; the corresponding .icn files
+# are automatically identified by the implicit rule.
+#
+FILES=|>List of component files, space separated, using .u1 suffix<|
+
+#
+# Option flag definitions, etc.
+#
+ICFLAGS=-s
+IFLAGS=-s
+ICONT=icont
+
+#
+# Implicit rule for making ucode files.
+#
+.SUFFIXES: .u1 .icn
+.icn.u1:
+ $(ICONT) -c $(ICFLAGS) $*
+
+#
+# Explicit rules for making an Icon program.
+#
+all: $(PROGRAM)
+
+$(PROGRAM): $(FILES)
+ $(ICONT) -o $(PROGRAM) $(IFLAGS) $(FILES)
+
diff --git a/ipl/docs/ipp.txt b/ipl/docs/ipp.txt
new file mode 100644
index 0000000..9f3923a
--- /dev/null
+++ b/ipl/docs/ipp.txt
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+ An Icon Pre-Processor
+
+
+ Frank J. Lhota
+ Mei Associates, Inc.
+ 1050 Waltham Street
+ Lexington, MA 02173-8024
+ Voice: (617) 862-3390
+ FAX: (617) 862-5053
+
+
+
+ The Icon Programming Library comes with an Icon preprocessor
+called IPP. I have made several enhancements to this program, and I
+would like to submit the enhanced version of the IPP to the IPL.
+
+
+
+
+
+ New IPP features
+
+ For those who are not familiar with the IPP, the header comments
+in the IPP.ICN file provide complete intructions on its use. The rest
+of this section assumes a familiarity with the previous version of
+the IPP.
+
+ This new version of the IPP processes #line directives, which can
+be used to change the value of the _LINE_ and _FILE_ symbols. Also,
+the new IPP wiil generates #line directives when needed, so that the
+preprocessor output will always indicate the original source of its
+text. As a result, if we pipe the output of IPP to icont, e.g.,
+
+ iconx ipp.icx foo.icn | icont -ofoo -
+
+then (assuming that the source itself does not have any line
+directives) the &file and &line keywords refer to the lines in the
+original source file, not to "stdin" and the line numbers of the IPP
+output. The #line directives will be generated even when other
+comments are being stripped from the input.
+
+ The preprocessor command syntax has been relaxed a bit. The
+basic form of a preprocessor command line is still
+
+ $command [arguments]
+
+but now the user is permitted to include spaces around the '$', so
+that preproccessor commands can have a pretty-print look, e.g.
+
+ $ifndef FOO
+ $if BAR = 0
+ $ define FOO -1
+ $else
+ $ define FOO BAR
+ $endif
+ $endif # ndef FOO
+
+
+
+ - 1 -
+
+
+
+
+
+
+
+
+ On non-UNIX systems, the new IPP has a more liberal search
+algorithm for $include files. For files enclosed with <>, the
+directories specified in the IPATH environment variable are searched
+for the file. The search for file enclosed in "" starts with the
+current directory, then proceeds to the IPATH directories. As
+before, the -I command line option can be used to add directories to
+the beginning of the standard search path.
+
+ The following preprocessor commands have been added to IPP:
+
+ $elif:
+ Invoked as 'elif constant-expression'. If the lines
+ preceding this command were processed, this command and the
+ lines following it up to the matching $endif command are
+ ignored. Otherwise, the constant-expression is evaluated,
+ and the lines following this command are processed only if
+ it produces a result.
+
+ $error:
+ This command issues a error, with the text coming from
+ the argument field of the command. As with all errors,
+ processing is terminated.
+
+ $warning:
+ This command issues a warning, with the text coming from
+ the argument field of the command.
+
+ In addition to the operators previously supported, the constant
+expressions appearing in $if / $elif command can now use the unary
+versions of the '+' and '-' operators, and the 'not' control
+structure. Also, backtracking is used in the evaluation of constant
+expressions, so that when the command
+
+ $if FOO = (2|3)
+
+is processed, the lines following it are processed precisely when
+either FOO equals 2 or FOO equals 3.
+
+
+ Uses of the IPP
+
+ To understand the following examples, the reader should keep in
+mind this feature of the IPP: The IPP creates a pre-defined symbol
+out of each string generated by &features. These symbols are created
+by taking the non-letter characters of the &features strings and
+replacing them with underscores. Thus, if &features includes UNIX,
+the symbol UNIX is defined; if co-expressions are supported, the
+symbol co_expressions is defined, and so on.
+
+ The IPP can be an handy tool for distributing Icon programs that
+require some customization for specific implementations. A prime
+example of this is the IPP itself. IPP must be able to contruct a
+
+
+
+
+ - 2 -
+
+
+
+
+
+
+
+full pathname for a file, given a directory and file name. On many
+systems, this is done by performing the catenation
+
+ directory || "/" || filename
+
+This file naming convention is not, however, universal. On DOS and
+OS/2 systems, "\\" should be used instead of "/" to separate the
+directory and filename. Under VMS, the separator should be "".
+
+ To accomodate these system-dependant variations, the IPP source
+(in the file IPP.ICN, on this disk) is written using the symbol
+DIR_SEP for the string that separates the directory and filename
+portions of a complete path. The IPP code starts with the
+preprocessor directives:
+
+ $ifndef DIR_SEP
+ $ifdef UNIX
+ $define DIR_SEP "/"
+ $elif def(MS_DOS) | def(MS_DOS_386) | def(OS_2)
+ $define DIR_SEP "\\"
+ $elif def(VMS)
+ $define DIR_SEP ""
+ $else
+ $error Need a definition for DIR_SEP
+ $endif
+ $endif # ndef DIR_SEP
+
+After preprocessing this code, DIR_SEP will be "/" on UNIX systems,
+and "\\" on DOS and OS/2 systems. For other systems, an appropriate
+value for DIR_SEP could be specified on the preprocessor command line
+by using the -D options, e.g.
+
+ ipp -D DIR_SEP=\"\" ipp.ipp ipp.icn
+
+ Another example of Icon software that could exploit IPP
+customization is BINCVT, the IPL package of utilities for converting
+between integers and their internal binary representations. The
+version of BINCVT currently included in the IPL assumes a
+"big-endian" system. On "big-endian" systems, the bytes in the binary
+representation of an integer are arranged from most significant to
+least significant. However, major platforms such as the IBM PC family
+or the VAX machines use the "little-endian" method for storing
+integers, in which the bytes representing an integer go from least
+significant to most significant.
+
+ Using IPP, one can write a version of BINCVT that can be
+preprocessed to produce a working package for either big-endian or
+little-endian systems. The symbol LITTLE_ENDIAN will be defined (via
+the command line option -D LITTLE_ENDIAN) to produce output for
+little endian systems. Most of the functions in BINCVT can be
+expressed in terms of starting at the most significant byte, and
+moving to the less significant bytes. Hence, the generalized BINCVT
+starts with the definitions:
+
+
+
+
+ - 3 -
+
+
+
+
+
+
+
+
+ $ifdef LITTLE_ENDIAN
+ $define GOTO_BIG_END tab (0)
+ $define TO_SMALL_END -1
+ $else
+ $define GOTO_BIG_END
+ $define TO_SMALL_END 1
+ $endif
+
+ Using these definitions, we can write a version of the unsigned
+function that will work for either integer storage method:
+
+ procedure unsigned(s)
+ local result
+ result := 0
+ s ? {
+ GOTO_BIG_END
+ while result := ord(move(TO_SMALL_END)) + result * 16r100
+ }
+ return result
+ end
+
+The file BINCVT.IPP on this disk contains the source code for this
+example.
+
+
+ Conclusions
+
+ The IPP allows Icon programmers to write more flexable and more
+portable code. The latest version of the IPP is easier to use and
+more powerful than the previous version.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - 4 -
diff --git a/ipl/docs/mr.man b/ipl/docs/mr.man
new file mode 100644
index 0000000..6f4dde7
--- /dev/null
+++ b/ipl/docs/mr.man
@@ -0,0 +1,98 @@
+.\" mr.man version 1.0
+.\" copyright 1991 Ronald Florence
+.TH MR LOCAL "7 Feb 1992"
+.SH NAME
+mr \- mail (or news) reader
+.SH SYNOPSIS
+.B mr
+[
+.I spool
+]
+.SH DESCRIPTION
+Mr is a simple reader for mail and/or news spools. It won't obsolete
+elm, mailtool, emacs, mush, or even /usr/ucb/Mail, but it allows a
+reader to page, reply-to, save, append, print, forward, pipe,
+originate, conceal or reveal headers, and delete or undelete mail. Mr
+can also be used to read the news spools produced by the bsnews news
+system for leaf nodes.
+.SH COMMANDS
+An alternate mail or news spool can be named on the command line. The
+initial display lists waiting messages:
+.ta .5i 1i 3.5i
+.sp
+.nf
+.if t .ft CR
+1 FOP [ 22:ron@mlfarm.com (R] How to use mr
+.ie t .ft CB
+.el .ft B
+2 DOR [985:goer@sophist.uchi] Improving MR (part I)
+.ie t .ft CR
+.el .ft R
+3 N [ 61:ralph@cs.arizona.] MS-Dos Pipes
+.ft R
+.fi
+.P
+The letters after the message number indicate the status of the
+message; New, Old, Replied-to, Printed, Deleted, Saved, Forwarded.
+The number inside the square brackets is the number of lines in the
+message, followed by the author's name and/or email address, and the
+subject. The current message is highlighted in bold or reverse video,
+depending on the capabilities of the display. The prompt shows the
+current message number and the total number of messages. The
+following commands can be given:
+.sp
+.nf
+.RS
+A Append current message to a file
+D Delete current message
+F Forward current message
+G Get new mail
+H Help
+L List headers
+M Mail to a new recipient
+N Next message
+P Print current message
+Q Quit, saving changes
+R Reply-to current message
+S Save current message to a file
+U Undelete current message
+V View all headers
+X eXit without saving changes
+| pipe current message to a command
+! execute command
+# make # current message
++ next message
+- previous message
+? help
+.RE
+.fi
+.P
+Pressing
+.RI < return >
+will page thru the current message, then advance the current message
+number. Press
+.I Q
+or
+.I N
+at a
+.SM MORE
+prompt to return to the command prompt.
+.SH ENVIRONMENT
+The
+.SM EDITOR
+and
+.SM MAILSPOOL
+environmental variables can be used to override default settings. Mr
+uses the
+.SM TERM
+and
+.SM TERMCAP
+variables to lookup screen parameters and control strings.
+.SH SEE ALSO
+mail(1), sendmail(1), bsnews(\s-1LOCAL\s0)
+.SH BUGS
+The pseudo-pipes used for ms-dos cannot handle a complex command.
+Some users would undoubtedly prefer getch() style command parsing.
+The pager used to display messages does not back-up.
+.SH AUTHOR
+Ronald Florence (ron\s-2@\s0mlfarm.com).
diff --git a/ipl/docs/polywalk.txt b/ipl/docs/polywalk.txt
new file mode 100644
index 0000000..8310e79
--- /dev/null
+++ b/ipl/docs/polywalk.txt
@@ -0,0 +1,60 @@
+1.0 Introduction
+----------------
+ This is a short walkthrough of the polydemo program, with examples of
+the use of all of the available commands. I am assuming that you have
+already looked at the header of the source code of polydemo, which describes
+the options available in the polydemo.
+ When a series of commands or entries must be given, they will be listed
+here separated by commas. Each entry in such a list should be followed by
+pressing Return or Enter. Single-letter commands must always be followed
+with Enter as well. The case of any letter is ignored.
+
+2.0 Preparing the polydemo program
+----------------------------------
+ Polydemo requires the library polystuf, also included on this disk. To
+set up polydemo for running, first translate polystuf into ucode files with
+ ICONT -c polystuf
+and then translate polydemo with
+ ICONT polydemo
+after which you can run polydemo in whatever manner your system allows.
+
+3.0 A sample run
+----------------
+ Let's say we had to perform the following: find the result of evaluating
+ 4 3.1 0.7 5 4
+ (9x + 6x + 5 - 3x ) - (12x - 4.2x + x) at x = 2.2.
+ Start the polydemo program. A menu of options will be displayed, as
+will the slots that are filled (none yet) and a prompt containing valid
+characters corresponding to the options. Enter R to read in a polynomial from
+the keyboard, then give A as the slot of the first polynomial. Enter these
+numbers: 9, 4, 6, 3.1, 5, 0, -3, 0.7, 0. Now, the first polynomial will be
+stored in slot "a." Note that the 0 is necessary after the 5 to use a
+constant term, and that the 0 at the end is for stopping data entry.
+ A similar process can be used for the second polynomial. Inputting
+R, B, 12, 5, -4.2, 4, 1, 1, 0 will place that polynomial in slot "b."
+ Now, check to make sure you've entered the polynomials correctly. Type
+W for "write" and A for slot "a," to display the first polynomial on the
+screen. It should appear as 9x^4 + 6x^3.1 + -3x^0.7 + 5. Do the same for
+the second polynomial (replacing the A with a B). The output should be
+12x^5 + -4.2x^4 + x.
+ To find their difference, enter S for subtract, then A, B to indicate
+those two polynomials, then C as a slot for the answer. Note that the result
+isn't immediately displayed; you must use W, C for that. The answer should
+be -12x^5 + 13.2x^4 + 6x^3.1 + -x + -3x^0.7 + 5.
+ Finally, to evaluate this polynomial at x = 2.2, type E for evaluate,
+C for the slot in which that polynomial is held, then 2.2 for the x-value.
+You should receive the message "The result is -242.498468213815," or something
+similar, depending on the precision of real numbers in your implementation of
+Icon.
+ The Add and Multiply commands are invoked similarly to the Subtract
+command. The Clear option allows you to empty a slot, making room for a new
+polynomial. This is necessary because you cannot overwrite an existing
+polynomial. Asking for Help displays the list of options and the letters
+needed to access them. Lastly, using Quit exits the program.
+ It would be good to test operations in which one or both polynomials
+are zero. A zero polynomial is made when, during entry, a 0 is the first and
+only coefficient given, or when it is the result of an operation. Also, to
+make sure no "1x", "-1x" or "x^1" appears in a written polynomial (these
+should be "x", "-x", and "x," respectively), try working with polynomials that
+have these terms.
+
diff --git a/ipl/docs/post.1 b/ipl/docs/post.1
new file mode 100644
index 0000000..9c3f9d4
--- /dev/null
+++ b/ipl/docs/post.1
@@ -0,0 +1,61 @@
+.\" post.man version 1.5
+.TH POST LOCAL "2 Oct 1991"
+.SH NAME
+post \- news poster
+.SH SYNOPSIS
+.B post
+[
+.BI \-n\ newsgroups
+] [
+.BI \-s\ subject
+] [
+.BI \-d\ distribution
+] [
+.BI \-f\ followup-to
+] [
+.BI \-p\ quote-prefix
+] [
+.B \-
+|
+.I news-article
+]
+.SH DESCRIPTION
+.I Post
+posts a news article to Usenet via inews, uux, or mail. Given an
+optional argument of the name of a file containing a news article, or
+an argument of `\-' and a news article via stdin,
+.I post
+creates a follow-up article, with an attribution and quoted text.
+.I Post
+can be invoked as a filter from a newsreader:
+.RB ` "|post \-" '
+would create a followup article to the current article in the
+newsreader. The newsgroups, subject, distribution, follow-up, and
+quote-prefix (the default is ` > ') can be specified on the command
+line.
+.PP
+.I Post
+is compatible with C-News, B-news, and bsnews (Bootstrap News). On
+systems with inews, the newsgroups and distribution are validated in
+the appropriate news system files.
+.SH ENVIRONMENT
+The environment variable
+.SM EDITOR
+overrides the default editor.
+.SM ORGANIZATION
+overrides the file /usr/lib/news/organization to specify an optional
+Organization header. On non-Unix\u\s-3TM\s0\d systems, the
+environment variable
+.SM HOST
+may be used to override the Icon keyword
+.I &host
+as the sitename.
+.SH BUGS
+The code to validate newsgroups assumes the file
+/usr/lib/news/active
+is sorted.
+.SH AUTHOR
+Ronald Florence (ron\s-2@\s0mlfarm.com). The code to generate a
+temporary file name is from Richard Goerwitz
+(goer\s-2@\s0sophist.uchicago.edu). Options.icn is from the Icon
+Program Library.
diff --git a/ipl/docs/pt.man b/ipl/docs/pt.man
new file mode 100644
index 0000000..2f14d02
--- /dev/null
+++ b/ipl/docs/pt.man
@@ -0,0 +1,99 @@
+PT
+
+
+NAME
+ pt - canonical LR(1) parse (action and goto) table generator.
+ The input grammar productions with added enumerations,
+ needed as part of the reduction in the action
+ table, is also part of the output.
+ (Various optional outputs are possible:-
+ terminal sets
+ nonterminal sets
+ first sets for nonterminals
+ items in each state)
+
+SYNOPSIS
+ pt [ option | option | ... ]
+
+DESCRIPTION
+ Pt reads the grammar from the file called grammar, if one exists,
+ else it will read from standard input. The grammar MUST conform
+ to the following:-
+
+ 1. It must be a context-free grammar, augmented or unaugmented.
+ 2. Each production is of the form:-
+
+ A -> B ; C a
+
+ The arrow separates the left side of the production
+ from the right side.
+ The left side of the production consists of only one
+ nonterminal.
+ The right side of the production consists of a sequence
+ of symbols (terminals, nonterminals) with one or
+ more white spaces (blanks and tabs) separating them.
+ A symbol is thus either a terminal or a nonterminal but
+ not both.
+
+ 3. One production per line; no alternation allowed. Thus,
+ represent the following 2 productions:-
+
+ A -> B ; C a | b
+ by:-
+ A -> B ; C a
+ A -> b
+
+ 4. Newline character, tab and blank cannot be a grammar token
+ (terminal or nonterminal).
+
+ 5. The left hand side symbol of the very first production
+ represents the starting symbol of the grammar.
+
+ 6. The following are "reserved" words:-
+
+ START
+ EOI
+
+ and cannot be used as a terminal or nonterminal.
+
+ 7. EPSILON is considered another "reserved" word and can be
+ used to represent an empty production, viz.
+
+ H -> EPSILON
+
+ No error messages will be issued if the input grammar does not
+ conform to the above specifications.
+
+ The options, which can appear in any order, are:-
+
+ -t Print the list of terminals in the grammar.
+
+ -nt Print the list of nonterminals in the grammar.
+
+ -f Print the list of first sets of the nonterminals
+ in the grammar.
+
+ -e Print the list of items (i.e. closure) in each state.
+
+
+FILES
+ grammar grammar file with format specified above.
+
+SEE ALSO
+ yacc
+ Aho A.V., Sethi, R. and Ullman, J.D., Compilers: Principles,
+ Techniques, and Tools. Addison-Wesley, 1986.
+
+DIAGNOSTICS
+ All shift/reduce conflicts will be reported (to errout). In the
+ table form, only shift will be shown.
+ To avoid reduce/reduce conflict the grammar should be unambiguous
+ with left-factoring performed if necessary.
+ Unrecognized options or arguments in the command line will be
+ ignored.
+
+BUGS
+ No known bugs!
+
+AUTHOR
+ Deeporn H. Beardsley