summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-01-27 23:51:56 +0000
committerIgor Pashev <pashev.igor@gmail.com>2013-01-27 23:51:56 +0000
commit6ab0c0f5bf14ed9c15370407b9ee7e0b4b089ae1 (patch)
tree926065cf45450116098db664e3c61dced9e1f21a /doc
downloadicon-6ab0c0f5bf14ed9c15370407b9ee7e0b4b089ae1.tar.gz
Initial upstream version 9.4.3upstream/9.4.3
Diffstat (limited to 'doc')
-rw-r--r--doc/blubordr.gifbin0 -> 2174 bytes
-rw-r--r--doc/build.htm150
-rw-r--r--doc/clnroff.sed8
-rw-r--r--doc/cube128.gifbin0 -> 6718 bytes
-rw-r--r--doc/cygwin.htm133
-rw-r--r--doc/docguide.htm213
-rw-r--r--doc/faq.htm443
-rw-r--r--doc/faq.txt337
-rw-r--r--doc/files.htm182
-rw-r--r--doc/gb80.jpgbin0 -> 2318 bytes
-rw-r--r--doc/ib80.jpgbin0 -> 922 bytes
-rw-r--r--doc/icon.txt50
-rw-r--r--doc/icont.txt126
-rw-r--r--doc/index.htm29
-rw-r--r--doc/install.htm65
-rw-r--r--doc/istyle.css26
-rw-r--r--doc/lb80.jpgbin0 -> 2806 bytes
-rw-r--r--doc/macintosh.htm80
-rw-r--r--doc/port.htm235
-rw-r--r--doc/relnotes.htm215
-rw-r--r--doc/shortcut.gifbin0 -> 71 bytes
-rw-r--r--doc/wwwcube.gifbin0 -> 6097 bytes
22 files changed, 2292 insertions, 0 deletions
diff --git a/doc/blubordr.gif b/doc/blubordr.gif
new file mode 100644
index 0000000..12f51c8
--- /dev/null
+++ b/doc/blubordr.gif
Binary files differ
diff --git a/doc/build.htm b/doc/build.htm
new file mode 100644
index 0000000..d494b94
--- /dev/null
+++ b/doc/build.htm
@@ -0,0 +1,150 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Building Version 9.4 of Icon from Source</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1>Building Version 9.4 of Icon from Source</H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/build.htm
+<BR> Last updated November 8, 2005 </SMALL>
+<!-- $Id: build.htm,v 1.26 2005/11/08 23:24:34 gmt Exp $ -->
+
+<H2> Introduction </H2>
+
+<P> These instructions explain how to build and install the source code of
+<A HREF=relnotes.htm>Version 9.4 of Icon</A> under Unix.
+For instructions on installing a binary release, see
+<A HREF=install.htm>Installing Icon Binaries</A>.
+
+<P> These instructions assume that you have unpacked the Icon
+distribution file into a directory.
+All commands are issued in that directory.
+
+<H2> Configuring </H2>
+
+<P> The Icon source package contains configurations for a variety of
+Unix platforms.
+Type <CODE>make Configure</CODE> to see the list of known configurations.
+A status report for any system can be viewed by entering
+<BLOCKQUOTE>
+ <CODE>make Status name=</CODE><VAR>name</VAR>
+</BLOCKQUOTE>
+Choose the configuration name that matches your system's
+operating system, and be sure to note
+any special considerations given in its status report.
+
+<P><SMALL> (If your system is not among those listed, you will need to
+port the code.
+This is usually a fairly simple matter that involves copying an existing
+configuration and editing it to match the target system.
+See <A HREF=port.htm>Porting Icon</A>.
+</SMALL>
+
+<P> Most Unix systems include the X11 window system; type
+<BLOCKQUOTE>
+ <CODE>make X-Configure name=</CODE><VAR>name</VAR>
+</BLOCKQUOTE>
+to configure Icon with graphics.
+If your computer does not have the X window system, type
+<BLOCKQUOTE>
+ <CODE>make Configure name=</CODE><VAR>name</VAR>
+</BLOCKQUOTE>
+to configure Icon without graphics.
+
+<P> Installation using any of the supplied configurations <EM>should</EM>
+be routine, but some of those were contributed for systems we cannot test,
+and it is possible that some minor tweaking may be required.
+If so, or if you develop a new configuration, we'd like to hear about it
+by e-mail to
+<A HREF="mailto:icon-project@cs.arizona.edu">icon-project@cs.arizona.edu</A>.
+
+<H2> Building </H2>
+
+<P> After Configuring, type <CODE>make</CODE> to build the Icon system.
+This single step now builds:
+<UL>
+ <LI> The Icon translator and interpreter
+ <LI> Program library procedures
+ <LI> VIB and other graphics utilities, if graphics are enabled
+</UL>
+
+<P> There may be a few warnings on some platforms, but there should be
+no fatal errors.
+If there are problems,
+fix them in the <CODE>config/</CODE><VAR>platform</VAR>
+directory and repeat the configuration step.
+
+<H2> Testing </H2>
+
+<P> To verify a successful build, type <CODE>make Test</CODE>.
+This command compiles and executes a series of Icon programs,
+comparing their outputs with a set of standard results.
+A normal run concludes with the phrase "All tests passed."
+
+<P> A successful graphics build can be confirmed by executing
+<CODE>bin/colrbook</CODE>, the color book utility, with no arguments.
+It should display a spectrum of colors along the left and a set
+of recessed panes to the right.
+Click anywhere on the spectrum to fill colors in the panes.
+Click <CODE>QUIT</CODE> (in the upper left corner) to exit.
+
+<H2> Installing </H2>
+
+<P> Icon can be run directly from the location in which it was built.
+To do this, simply add the <CODE>bin</CODE> directory to your shell's
+search path.
+See the man pages for <A HREF=icon.txt><CODE>icon</CODE></A>
+and <A HREF=icont.txt><CODE>icont</CODE></A>
+for instructions on building and running Icon programs.
+
+<P> If you wish to install the binaries elsewhere,
+choose a location for a directory dedicated to Icon &mdash;
+for example, <CODE>/opt/icon</CODE> or <CODE>/usr/local/icon</CODE>.
+If you are replacing an existing directory, delete the old one first.
+Enter
+<BLOCKQUOTE>
+ <CODE>make Install dest=</CODE><VAR>directory</VAR>
+</BLOCKQUOTE>
+to create <VAR>directory</VAR> and install Icon in its
+<CODE>bin</CODE>, <CODE>lib</CODE>,
+<CODE>doc</CODE>, and <CODE>man</CODE> subdirectories.
+All files are created using the default permissions
+<CITE>(umask)</CITE> of the current user.
+
+<P> You can make symbolic links from other locations
+to programs in the Icon <CODE>bin</CODE> directory.
+For example, you can link
+<CODE>/usr/local/bin/icon</CODE> to <CODE>/opt/icon/bin/icon</CODE>.
+If you do this, link all of <CODE>icon</CODE>, <CODE>icont</CODE>,
+<CODE>iconx</CODE>, and (if present) <CODE>vib</CODE>.
+
+<P> If you'd like to bundle up a gzipped tar file of the binaries
+created by the build process, enter <CODE>make Package</CODE>.
+Such a package can be used to install binaries on other
+systems of the same architecture.
+
+<H2> Cleaning Up </H2>
+
+<P> Type <CODE>make Clean</CODE> to remove intermediate files created
+during the build process. This command preserves the contents of the
+<CODE>bin</CODE> and <CODE>lib</CODE> directories, so the built system
+remains functional.
+
+<P> To restore everything to its original state, type <CODE>make Pure</CODE>.
+This removes all the configuration information and newly built files.
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/clnroff.sed b/doc/clnroff.sed
new file mode 100644
index 0000000..131f672
--- /dev/null
+++ b/doc/clnroff.sed
@@ -0,0 +1,8 @@
+# sed(1) directives for cleaning up nroff(1) formatted man page
+
+/^User Commands/d
+/^ICONT/d
+/^University/d
+s/.//g
+s/’/'/g
+
diff --git a/doc/cube128.gif b/doc/cube128.gif
new file mode 100644
index 0000000..ad746a6
--- /dev/null
+++ b/doc/cube128.gif
Binary files differ
diff --git a/doc/cygwin.htm b/doc/cygwin.htm
new file mode 100644
index 0000000..88e0a54
--- /dev/null
+++ b/doc/cygwin.htm
@@ -0,0 +1,133 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Icon on Cygwin</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1> Icon on Cygwin </H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/cygwin.htm
+<BR>
+Last updated November 8, 2005 </SMALL>
+<!-- $Id: cygwin.htm,v 1.5 2005/11/08 23:24:34 gmt Exp $ -->
+
+
+<H2> Introduction </H2>
+
+<P> Most contemporary operating systems trace their underlying design
+to the Unix operating system,
+as refined and specified today by the POSIX family of standards.
+Microsoft Windows, however, was developed independently and
+defines a different set of interfaces for the programmer and the user.
+
+<P> The <A HREF="http://www.cygwin.com/">Cygwin</A> package provides a
+Unix environment under Microsoft Windows.
+This allows the latest version of Icon (and many other things)
+to be built on a Windows system.
+Successful use of Cygwin requires familiarity with both
+Windows and Unix.
+
+<P> This document describes some of the peculiarities of the Cygwin
+port of Version 9.4 of Icon.
+These differences are not necessarily identified in other documentation.
+
+
+<H2> Building Icon </H2>
+
+<P> The Cygwin package is available from
+<A HREF="http://www.cygwin.com/">www.cygwin.com</A>.
+A custom installation of the Cygwin system is required;
+the default installation provides a bare-bones system
+insufficient for building software.
+Icon requires a C compiler and the usual tools and utilities
+available on a standard POSIX development system; these are found
+in the <CODE>gcc-core</CODE> and <CODE>make</CODE> packages.
+The <CODE>xorg</CODE> family of packages is also needed
+to build Icon with graphics enabled.
+
+<P> Icon is built in a Cygwin shell window.
+The process is the same as on other platforms
+and uses the configuration named <CODE>cygwin</CODE>.
+See the <A HREF=build.htm>installation documentation</A>
+for instructions on building Icon.
+
+
+<H2> Running Icon programs </H2>
+
+<P> Icon is run by commands entered in a Cygwin terminal window.
+The simplest command is "<CODE>icon prog.icn</CODE>",
+which runs the program contained in the source file <CODE>prog.icn</CODE>.
+The translator <CODE>icont</CODE> can create executable programs
+from Icon source code.
+The Unix-style "man pages" for <A HREF=icon.txt><CODE>icon</CODE></A>
+and <A HREF=icont.txt><CODE>icont</CODE></A>
+describe the command options in a traditionally cryptic manner.
+
+
+<H2> Interpreter path </H2>
+
+<P> Icon programs require an interpreter for execution.
+On Windows, the path of the interpreter is not embedded
+in an executable program.
+The program must be able to find
+<CODE>iconx.exe</CODE> in one of these locations:
+<UL>
+ <LI> in the file named by the <CODE>ICONX</CODE> environment variable
+ <LI> in the same directory as the executable program
+ <LI> in the search path
+</UL>
+
+
+<H2> Extra built-in functions </H2>
+
+<P> For compatibility with an earlier port of Icon to Windows,
+this implementation includes some extra built-in functions.
+The functions are described in section 6.2 of
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd271.htm">IPD271</A>,
+which documents that earlier port.
+
+<P> These unsupported functions are not part of Icon on other platforms,
+so their use renders a program non-portable.
+
+
+<H2> Feature test symbols </H2>
+
+<P> The symbols <CODE>_MS_WINDOWS</CODE> and <CODE>_CYGWIN</CODE>
+are defined by the Icon preprocessor.
+The symbol <CODE>_GRAPHICS</CODE> is defined if Icon is built with
+graphics enabled.
+The symbols <CODE>_UNIX</CODE> and <CODE>_X_WINDOW_SYSTEM</CODE>
+are not defined.
+The corresponding strings are produced or omitted, as appropriate,
+by the <CODE>&amp;features</CODE> keyword.
+
+
+<H2> No dynamic loading </H2>
+
+The dynamic loading interface &mdash; <CODE>loadfunc()</CODE> &mdash;
+is not implemented.
+
+
+<H2> Known bugs </H2>
+
+<UL>
+ <LI>Some Unix dependencies cause tests <CODE>io</CODE>, <CODE>tpp</CODE>,
+ and <CODE>opts</CODE> to fail.
+ <LI> Resizing a window sends a large number of events to the program.
+</UL>
+
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/docguide.htm b/doc/docguide.htm
new file mode 100644
index 0000000..9bb4121
--- /dev/null
+++ b/doc/docguide.htm
@@ -0,0 +1,213 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE> Icon Documentation Guide </TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1> Icon Documentation Guide </H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/docguide.htm
+<BR> Last updated November 9, 2005 </SMALL>
+<!-- $Id: docguide.htm,v 1.28 2005/11/09 18:03:59 gmt Exp $ -->
+
+
+<H2> Introduction </H2>
+
+<P> Icon is distributed with a small set of documentation pages:
+<UL>
+<LI> This documentation guide
+<LI> <A HREF=relnotes.htm> Release notes</A>
+<LI> <A HREF=install.htm> Installation instructions</A> (for binary releases)
+<LI> <A HREF=build.htm> Build instructions</A> (for source releases)
+<LI> <A HREF=port.htm> Porting instructions</A>
+<LI> <A HREF=files.htm> File organization</A>
+<LI> <A HREF=macintosh.htm> Icon on Macintosh</A>
+<LI> <A HREF=cygwin.htm> Icon on Cygwin</A>
+<LI> <A HREF=faq.htm> Frequently asked questions about Icon</A>
+</UL>
+
+<P> This guide provides an overview of additional available information.
+Documents designated with IPD numbers are Icon Project Documents
+found at the Icon web site,
+<A HREF="http://www.cs.arizona.edu/icon/">www.cs.arizona.edu/icon</A>.
+
+
+<H2> Basic Documentation </H2>
+
+<P> The command-line interface to Icon is described by <CITE>man</CITE> pages.
+The <A HREF="icon.txt"><CODE>icon</CODE></A> command executes a program
+from a single source file and supports script usage.
+The more general <A HREF="icont.txt"><CODE>icont</CODE></A> command,
+modeled after <CITE>cc</CITE>,
+supports multiple files, separate compilation, and other features.
+
+<P>
+The Icon language is defined by
+ <BLOCKQUOTE>
+ <IMG SRC="lb80.jpg" ALT="[cover]" WIDTH=60 HEIGHT=80 ALIGN=LEFT>
+ <CITE> The Icon Programming Language, Third Edition </CITE>
+ <BR> Ralph E. Griswold and Madge T. Griswold
+ <BR> Peer-to-Peer Communications, 1996, out of print
+ <BR> ISBN 1-57398-001-3
+ <BR> Downloadable from
+ <A HREF="http://www.cs.arizona.edu/icon/books.htm">
+ www.cs.arizona.edu/icon/books.htm</A>
+ <BR CLEAR=ALL>
+ </BLOCKQUOTE>
+
+<P> Some introductory material can be found on the web:
+<UL>
+<LI> Ralph Griswold's overview:
+ <A HREF="http://www.cs.arizona.edu/icon/docs/ipd266.htm">
+ www.cs.arizona.edu/icon/docs/ipd266.htm</A>
+<LI> Dave Hanson's introduction:
+ <A HREF="http://www.cs.arizona.edu/icon/intro.htm">
+ www.cs.arizona.edu/icon/intro.htm</A>
+<LI> Bill Mitchell's introduction and slides:
+ <A HREF="http://www.mitchellsoftwareengineering.com/icon/">
+ www.mitchellsoftwareengineering.com/icon</A>
+<LI> John Shipman's tutorial:
+ <A HREF="http://www.nmt.edu/tcc/help/lang/icon/">
+ www.nmt.edu/tcc/help/lang/icon</A>
+</UL>
+
+<P>
+The <CITE>Icon Programming Language Handbook</CITE>,
+by Thomas W. Christopher, is available on the web at
+<A HREF="http://www.tools-of-computing.com/tc/CS/iconprog.pdf">
+www.tools-of-computing.com/tc/CS/iconprog.pdf</A>.
+
+
+<H2> Graphics </H2>
+
+<P>
+Icon's graphics facilities are defined by
+ <BLOCKQUOTE>
+ <IMG SRC="gb80.jpg" ALT="[cover]" WIDTH=60 HEIGHT=80 ALIGN=LEFT>
+ <CITE> Graphics Programming in Icon </CITE>
+ <BR> Ralph E. Griswold, Clinton L. Jeffery, and Gregg M. Townsend
+ <BR> Peer-to-Peer Communications, 1998, out of print
+ <BR> ISBN 1-57398-009-9
+ <BR> Downloadable from
+ <A HREF="http://www.cs.arizona.edu/icon/books.htm">
+ www.cs.arizona.edu/icon/books.htm</A>
+ <BR CLEAR=ALL>
+ </BLOCKQUOTE>
+
+<P> Two older reports present an overview of Icon's graphics:
+<UL>
+ <LI> IPD281, Graphics facilities for Icon,
+ <A HREF="http://www.cs.arizona.edu/icon/docs/ipd281.htm">
+ www.cs.arizona.edu/icon/docs/ipd281.htm</A>
+ <LI> IPD284, Visual interfaces for Icon programs,
+ <A HREF="http://www.cs.arizona.edu/icon/docs/ipd284.htm">
+ www.cs.arizona.edu/icon/docs/ipd284.htm</A>
+</UL>
+
+
+<H2> Recent feature additions </H2>
+
+<P> A few minor features have been added since the publication
+of the Icon books:
+<UL>
+ <LI> Scriptable source files
+ <LI> Path searching improvements
+ <LI> Reading directory contents
+ <LI> Reading foreign text files
+</UL>
+These features are more fully described in the
+<A HREF=relnotes.htm>release notes</A>.
+
+
+<H2> Program Library </H2>
+
+<P> Program library documentation is contained within the source code.
+Extracted documentation is available at
+<A HREF="http://www.cs.arizona.edu/icon/library/ipl.htm">
+www.cs.arizona.edu/icon/library/ipl.htm</A>.
+
+
+<H2> Icon Internals </H2>
+
+<P> Icon's internals are detailed in
+ <BLOCKQUOTE>
+ <IMG SRC="ib80.jpg" ALT="[cover]" WIDTH=55 HEIGHT=80 ALIGN=LEFT>
+ <CITE>The Implementation of the Icon Programming Language</CITE>
+ <BR> Ralph E. Griswold and Madge T. Griswold
+ <BR> Princeton University Press, 1986, out of print
+ <BR> ISBN 0-691-08431-9
+ <BR> Downloadable from
+ <A HREF="http://www.cs.arizona.edu/icon/books.htm">
+ www.cs.arizona.edu/icon/books.htm</A>
+ <BR CLEAR=ALL>
+ </BLOCKQUOTE>
+Although considerable changes have occurred since Version 6,
+described in the book, the basic structure is the same.
+Two technical reports describe subsequent changes:
+<UL>
+<LI>IPD112, Supplementary Information for Version 8,
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd112.htm">
+http://www.cs.arizona.edu/icon/docs/ipd112.htm</A>
+<LI>IPD239, Supplementary Information for Version 9,
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd239.htm">
+http://www.cs.arizona.edu/icon/docs/ipd239.htm</A>
+</UL>
+
+
+<P> Icon's run-time implementation language is described in IPD261,
+<A HREF="http://www.cs.arizona.edu/icon/ftp/doc/ipd261.pdf">
+www.cs.arizona.edu/icon/ftp/doc/ipd261.pdf</A> (PDF).
+
+<P> The construction of loadable C functions is described in
+the <CITE>Dynamic Loading</CITE> section of IPD240,
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd240.htm">
+www.cs.arizona.edu/icon/docs/ipd240.htm</A>.
+Also see the examples in the
+<A HREF="http://www.cs.arizona.edu/icon/library/ccfuncs.htm">
+<CODE>cfuncs</CODE></A> section of the library, which use
+a simpler set of interface macros.
+
+
+<H2> Technical Reports </H2>
+
+<P> The Icon web site provides a large number of technical reports,
+including "Icon Project Documents" designated by IPD numbers.
+The index is found at
+<A HREF="http://www.cs.arizona.edu/icon/docs/docs.htm">
+www.cs.arizona.edu/icon/docs/docs.htm</A>.
+
+<P> Many of these reports are historical and describe past research
+experiments.
+Those cited above are among the most current,
+although they may not be completely correct with respect
+to Version 9.4.
+
+
+<H2> Discussion Group </H2>
+
+<P> The Usenet newsgroup <A HREF="news:comp.lang.icon">comp.lang.icon</A>
+discusses all aspects of the Icon language and is the best place to ask
+programming questions.
+
+
+<H2> Other Sources </H2>
+
+<P> Other sources of documentation can be found in the
+<A HREF="faq.htm"> Icon FAQ </A> and on the Icon web site,
+<A HREF="http://www.cs.arizona.edu/icon/">
+www.cs.arizona.edu/icon</A>.
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/faq.htm b/doc/faq.htm
new file mode 100644
index 0000000..50175fc
--- /dev/null
+++ b/doc/faq.htm
@@ -0,0 +1,443 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Icon Programming Language FAQ</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+<!-- Archive-name: comp-lang-icon-faq-->
+<P><IMG SRC="wwwcube.gif" WIDTH="128" HEIGHT="144" ALT="" ALIGN=RIGHT>
+<H1>Frequently Asked Questions about the Icon programming language</H1>
+<A HREF="http://www.cs.arizona.edu/icon/faq.htm">
+www.cs.arizona.edu/icon/faq.htm</A>
+<BR>Last updated November 14, 2005<BR>
+<!-- $Id: faq.htm,v 1.45 2005/11/14 16:24:44 gmt Exp $ -->
+
+<P><STRONG>Learning about Icon</STRONG><BR>
+<A HREF="#whatsicon">A1. What is Icon?</A><BR>
+<A HREF="#whatgood">A2. What is Icon good for?</A><BR>
+<A HREF="#features">A3. What are Icon's distinguishing characteristics?</A><BR>
+<A HREF="#library">A4. What is the Icon program library?</A><BR>
+<A HREF="#intro">A5. Where can I learn more about Icon?</A><BR>
+<A HREF="#examples">A6. Where are some simple examples?</A><BR>
+<A HREF="#documentation">A7. How about comprehensive documentation?</A><BR>
+<P><STRONG>Implementations</STRONG><BR>
+<A HREF="#platforms">B1. What platforms support Icon?</A><BR>
+<A HREF="#getstarted">B2. How do I get started with Icon?</A><BR>
+<A HREF="#unicode">B3. Is there a Unicode version of Icon?</A><BR>
+<A HREF="#iconc">B4. What happened to the compiler?</A><BR>
+<P><STRONG>Administration</STRONG><BR>
+<A HREF="#iconproject">C1. What is the Icon Project?</A><BR>
+<A HREF="#updates">C2. How often is the on-line material updated?</A><BR>
+<A HREF="#lineage">C3. Where did Icon come from?</A><BR>
+<A HREF="#futures">C4. Where is Icon going? </A><BR>
+<P><STRONG>Support</STRONG><BR>
+<A HREF="#ugroup">D1. Is there a users' group for Icon?</A><BR>
+<A HREF="#techsupport">D2. How do I get technical support?</A><BR>
+<P><STRONG>Programming</STRONG><BR>
+<A HREF="#evread">E1. Why doesn't <CODE>read()</CODE> work with <CODE>every</CODE>?</A><BR>
+<A HREF="#strinv">E2. Why doesn't string invocation such as <CODE>"foo"()</CODE> work?</A><BR>
+<A HREF="#callc">E3. How can I call a C function?</A><BR>
+<A HREF="#rwpipe">E4. Can I open a bidirectional pipe?</A><BR>
+
+<P><HR><H2>Learning about Icon</H2>
+
+<H3><A NAME="whatsicon">A1.</A> What is Icon?</H3>
+<P>
+Icon is a very high level general-purpose programming language with
+extensive features for processing strings (text) and data structures.
+Icon is an imperative, procedural language with a syntax that is
+reminiscent of C and Pascal, but with semantics at a much higher level.
+<P>
+Icon has a novel expression-evaluation mechanism that integrates
+goal-directed evaluation and backtracking with conventional control structures.
+It has a string scanning facility for pattern matching that avoids the tedious
+details usually associated with analyzing strings.
+Icon's built-in data structures include sets and tables with associative
+lookup, lists that can be used as vectors or stacks and queues, and records.
+<P>
+Icon is a strongly, though not statically, typed language.
+It provides transparent automatic type conversion:
+For example, if an integer is used in an operation that requires a string,
+the integer is automatically converted to a string.
+<P>
+Several implementations of Icon have high-level graphics facilities with
+an easily programmed window interface.
+<P>
+Icon manages storage automatically.
+Objects are created as needed during program execution and space is
+reclaimed by garbage collection as needed.
+The sizes of strings and data structures are limited only by the amount
+of available memory.
+
+<H3><A NAME="whatgood">A2.</A> What is Icon good for?</H3>
+<P>
+As a general-purpose programming language with a large computational
+repertoire, Icon can be used for most programming tasks.
+It's especially strong at building software tools, for processing text,
+and for experimental and research applications.
+<P>
+Icon is designed to make programming easy;
+it emphasizes the value of programmer's
+time and the importance of getting programs to work quickly.
+Consequently, Icon is used both for short, one-shot tasks and for
+very complex applications.
+
+<H3><A NAME="features">A3.</A>
+What are Icon's distinguishing characteristics?</H3>
+<P>
+<UL>
+ <LI> A high-level, general-purpose programming language
+ <LI> Friendly line-oriented syntax (no semicolons needed)
+ <LI> Emphasis on programmer productivity
+ <LI> Usually interpreted
+</UL><UL>
+ <LI> Evolved from programming languages (vs. scripting languages)
+ <LI> Procedural control flow plus generators and goal-directed evaluation
+</UL><UL>
+ <LI> Values have types; variables are typeless, accept any value
+ <LI> Static scoping: global or (procedure) local
+ <LI> Automatic garbage collection
+</UL><UL>
+ <LI> All integers have arbitrary precision
+ <LI> Uses strings (not chars) as basic text datatype
+ <LI> Has lists that function as arrays, queues, and stacks
+ <LI> Also has sets, tables, records (structs), reals (doubles), more
+ <LI> No second-class "primitive types"
+</UL><UL>
+ <LI> Not "object-oriented" (no classes, inheritance, or instance methods)
+ <LI> No exception catching
+ <LI> No concurrency (no threads, monitors, semaphores, or synchronization)
+ <LI> Has co-expressions (coroutines)
+</UL><UL>
+ <LI> Basic least-common-denominator system interface (a la ANSI C)
+</UL><UL>
+ <LI> Procedural graphics (event-driven paradigm available but not mandated)
+ <LI> Retained windows (programs are never called to repaint)
+ <LI> Simple GUI builder that can re-edit its generated code
+ <LI> Turtle graphics package
+</UL><UL>
+ <LI> Large library of contributed procedures and programs
+</UL>
+
+<H3><A NAME="library">A4.</A> What is the Icon program library?</H3>
+<P>
+The library is a collection of programs and procedures written in Icon.
+User contributions are welcome and form a significant portion of the library.
+<P>
+Library procedures effectively augment the built-in functions
+available to an Icon program.
+A wide variety of procedures currently exists, and most
+graphically-based programs are built around library procedures.
+<P>
+The programs in the library range from simple demonstrations to
+handy tools to complex graphical applications.
+<P>
+The library is a resource for both new and experienced programmers.
+In addition to their basic utility,
+its programs and procedures serve as examples of how things can be
+written in Icon.
+<P>
+The library is indexed at
+<A HREF="http://www.cs.arizona.edu/icon/library/ipl.htm">
+www.cs.arizona.edu/icon/library/ipl.htm</A>.
+
+
+<H3><A NAME="intro">A5.</A> Where can I learn more about Icon?</H3>
+<P>
+Here are some good places to start.
+<UL>
+<LI> Ralph Griswold's overview:
+ <A HREF="http://www.cs.arizona.edu/icon/docs/ipd266.htm">
+ www.cs.arizona.edu/icon/docs/ipd266.htm</A>
+<LI> Dave Hanson's introduction:
+ <A HREF="http://www.cs.arizona.edu/icon/intro.htm">
+ www.cs.arizona.edu/icon/intro.htm</A>
+<LI> Bill Mitchell's introduction and slides:
+ <A HREF="http://www.mitchellsoftwareengineering.com/icon/">
+ www.mitchellsoftwareengineering.com/icon</A>
+<LI> John Shipman's tutorial:
+ <A HREF="http://www.nmt.edu/tcc/help/lang/icon/">
+ www.nmt.edu/tcc/help/lang/icon</A>
+</UL>
+
+<H3><A NAME="examples">A6.</A> Where are some simple examples?</H3>
+<P>
+For some simple text-based programs, see any of those
+introductory documents in the preceding question.
+For some simple graphics programs, see
+<A HREF="http://www.cs.arizona.edu/icon/gb/progs/progs.htm">
+www.cs.arizona.edu/icon/gb/progs/progs.htm</A>.
+<P>
+Many more examples, typically larger, are found in the
+Icon program library; see the indexes of
+<A HREF="http://www.cs.arizona.edu/icon/library/cprogs.htm">Basic Programs</A>
+and <A HREF="http://www.cs.arizona.edu/icon/library/cgprogs.htm">
+Graphics Programs</A>.
+
+<H3><A NAME="documentation">A7.</A> How about comprehensive documentation?</H3>
+<P>
+Two books define the Icon language.
+The core language is covered in
+<A HREF="http://www.cs.arizona.edu/icon/lb3.htm">
+<CITE>The Icon Programming Language (third edition)</CITE></A>,
+by Griswold and Griswold.
+Graphics facilities are described in
+<A HREF="http://www.cs.arizona.edu/icon/gb/">
+<CITE>Graphics Programming in Icon</CITE></A>
+by Griswold, Jeffery, and Townsend.
+These books contain both tutorial and reference material.
+<P>
+Icon's internals are detailed in
+<A HREF="http://www.cs.arizona.edu/icon/ibsale.htm">
+<CITE>The Implementation of the Icon Programming Language</CITE></A>
+by Griswold and Griswold.
+Although considerable changes have occurred since Version 6,
+described in the book, the basic structure of Icon remains the same.
+Two technical reports,
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd112.htm">IPD112</A> and
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd239.htm">IPD239</A>,
+describe subsequent changes.
+<P>
+Printed copies of the
+<CITE>Language</CITE> and <CITE>Graphics</CITE> books
+are available from Jeffery Systems
+(<A HREF="http://www.zianet.com/jeffery/books/">www.zianet.com/jeffery/books</A>).
+All three books can be downloaded at no charge from the Icon books page,
+<A HREF="http://www.cs.arizona.edu/icon/books.htm">
+www.cs.arizona.edu/icon/books.htm</A>.
+<P>
+The <CITE>Icon Programming Language Handbook</CITE>,
+by Thomas W. Christopher, is available on the web at
+<A HREF="http://www.tools-of-computing.com/tc/CS/iconprog.pdf">
+www.tools-of-computing.com/tc/CS/iconprog.pdf</A>.
+<P>
+An on-line index to the Icon program library is found at
+<A HREF="http://www.cs.arizona.edu/icon/library/ipl.htm">
+www.cs.arizona.edu/icon/library/ipl.htm</A>.
+<P>
+There is a large amount of additional information at the
+Icon web site,
+<A HREF="http://www.cs.arizona.edu/icon/">www.cs.arizona.edu/icon</A>.
+
+<P><HR><H2>Implementations</H2>
+
+<H3><A NAME="platforms">B1.</A> What platforms support Icon?</H3>
+<P>
+Current implementations with graphics support
+are available for Unix (including Linux) and Windows.
+The Unix implementation also runs on Darwin,
+the Macintosh development environment, or the
+<A HREF="http://www.cygwin.com/">Cygwin</A> environment under Windows.
+Older versions of Icon are available for some other systems.
+An alternative Java-based implementation for Unix,
+<A HREF="http://www.cs.arizona.edu/icon/jcon/">Jcon</A>,
+is also available.
+
+<H3><A NAME="getstarted">B2.</A> How do I get started with Icon?</H3>
+<P>
+Version 9.4.3 of Icon for <STRONG>Unix</STRONG> can be downloaded from
+<A HREF="http://www.cs.arizona.edu/icon/v943/">
+www.cs.arizona.edu/icon/v943</A>.
+Source and binary packages are available, each with the
+complete Icon program library.
+<P>
+Version 9.3 of Icon for <STRONG>Windows</STRONG> is compatible
+at the source level with version 9.4.3.
+It can be downloaded from
+<A HREF="http://www.cs.arizona.edu/icon/v93w.htm">
+www.cs.arizona.edu/icon/v93w.htm</A>.
+The Version 9.4.3 library can be obtained separately from
+<A HREF="http://www.cs.arizona.edu/icon/v943/">
+www.cs.arizona.edu/icon/v943</A>.
+<P>
+For older implementations, start at
+<A HREF="http://www.cs.arizona.edu/icon/implver.htm">
+www.cs.arizona.edu/icon/implver.htm</A>.
+Jcon is at <A HREF="http://www.cs.arizona.edu/icon/jcon/">
+www.cs.arizona.edu/icon/jcon</A>.
+
+<H3><A NAME="unicode">B3.</A> Is there a Unicode version of Icon?</H3>
+<P>
+No.
+Icon is defined in terms of 8-bit characters, and changing this presents
+several design challenges that would likely break existing programs.
+Also, modifying the C implementation is probably infeasible,
+but a Unicode version of Jcon might be possible.
+
+<H3><A NAME="iconc">B4.</A> What happened to the compiler?</H3>
+<P>
+For a while, Unix distributions included both an interpreter and a compiler;
+but the interpreter is is usually fast enough even for production work, and
+most people found that using the compiler wasn't worth the extra compilation
+time or the hassles involved.
+We no longer advertise the compiler or produce binaries for it.
+It is still part of the source code distribution,
+and we have not deliberately broken it,
+but we no longer support it and we cannot offer help if problems arise.
+
+<P><HR><H2>Administration</H2>
+
+<H3><A NAME="iconproject">C1.</A> What is the Icon Project?</H3>
+<P>
+The Icon Project is a name used by the group that
+distributes and supports the Icon programming language.
+The project maintains the Icon web site at
+<A HREF="http://www.cs.arizona.edu/icon/">www.cs.arizona.edu/icon</A>.
+A non-commercial organization, the project is supported by the
+Department of Computer Science at the University of Arizona.
+
+<H3><A NAME="updates">C2.</A> How often is the on-line material updated?</H3>
+<P>
+New material is added when it's available.
+Established implementations usually are updated only when there's a
+new version.
+This typically is every year or two.
+The Icon program library is updated on a similar schedule.
+
+<H3><A NAME="lineage">C3.</A> Where did Icon come from?</H3>
+<P>
+Icon is the latest in a series of high-level programming languages designed
+to facilitate programming tasks involving strings and structures.
+The original language, SNOBOL, was developed at Bell Telephone Laboratories
+in the early 1960s.
+SNOBOL evolved into SNOBOL4, which is still in use.
+Subsequent languages were developed at the University of
+Arizona with support from the National Science Foundation.
+Although it has similar objectives and many similar capabilities,
+Icon bears little superficial resemblance to SNOBOL4.
+<P>
+Icon implementations were developed by faculty, staff, and students
+at the University of Arizona,
+with significant contributions from volunteers around the world.
+An <A HREF="http://doi.acm.org/10.1145/155360.155363">Icon history</A>
+by Ralph and Madge Griswold appears in the preprints
+of the second History of Programming Languages Conference (HOPL-II),
+ACM SIGPLAN Notices, March 1993 (Vol 28, No 3).
+<P>
+The name Icon is not an acronym, nor does it stand for anything in
+particular, although the word <CITE>iconoclastic</CITE> was mentioned
+when the name was chosen.
+The name predates the now common use of <CITE>icon</CITE>
+to refer to small images used in graphical user interfaces.
+This sometimes misleads people into thinking
+that Icon is designed to create or manipulate icons,
+but there's no good solution to that problem.
+
+<H3><A NAME="futures">C4.</A> Where is Icon going? </H3>
+<P>
+We continue to use Icon on a daily basis, but no significant changes
+are planned.
+We expect to support the Unix version for the forseeable future,
+and to distribute ports to other systems as supplied by volunteers.
+<P>
+The Unicon project is developing an object-oriented language based on Icon.
+For more information, see
+<A HREF="http://unicon.sourceforge.net/">
+unicon.sourceforge.net</A>.
+
+
+An earlier object-oriented extension to Icon, Idol,
+can be found in the Icon program library.
+
+<P><HR><H2>Support</H2>
+
+<H3><A NAME="ugroup">D1.</A> Is there a users' group for Icon?</H3>
+<P>
+There is no official Icon users' group, but the Usenet newsgroup
+<A HREF="news:comp.lang.icon">comp.lang.icon</A>
+is dedicated to issues relating to the Icon language.
+
+<H3><A NAME="techsupport">D2.</A> How do I get technical support?</H3>
+<P>
+The Icon Project is not a commercial organization, and its capacity for
+providing technical support is limited. Please use the appropriate resource
+when you need assistance:
+<UL>
+<LI>
+For <STRONG>programming</STRONG> questions,
+submit a query to the Usenet newsgroup
+<A HREF="news:comp.lang.icon">comp.lang.icon</A>.
+<LI>
+For <STRONG>porting</STRONG> assistance
+or <STRONG>Unix</STRONG> problems, contact
+<A HREF="mailto:icon-project@cs.arizona.edu">icon-project@cs.arizona.edu</A>.
+<LI>
+For problems with the <STRONG>Windows</STRONG> implementation,
+contact the implementor,
+<A HREF="mailto:jeffery@cs.nmsu.edu">jeffery@cs.nmsu.edu</A>.
+<LI>
+For general information and additional documentation, visit the Icon web site:
+<A HREF="http://www.cs.arizona.edu/icon/">www.cs.arizona.edu/icon</A>.
+</UL>
+
+<P><HR><H2>Programming</H2>
+
+<H3><A NAME="evread">E1.</A>
+Why doesn't <CODE>read()</CODE> work with <CODE>every</CODE>?</H3>
+<P>
+<CODE>every s := read() do {...}</CODE>
+doesn't loop because <CODE>read()</CODE> produces a single value and
+then fails if resumed.
+Other "consumer" procedures such as <CODE>get()</CODE> and <CODE>pop()</CODE>
+work the same way.
+Use a <CODE>while</CODE> loop with these procedures, and save
+<CODE>every</CODE> for use with generators such as <CODE>!x</CODE>
+or <CODE>key(T)</CODE>.
+
+<H3><A NAME="strinv">E2.</A>
+Why doesn't string invocation such as <CODE>"foo"()</CODE> work?</H3>
+<P>
+String invocation works if the procedure is present;
+the catch is that the linker removes unreferenced procedures.
+To ensure a procedure's presence, reference it in the
+<CODE>main()</CODE> procedure.
+A simple reference suffices, as in
+<CODE>refs := [foo, bar, baz]</CODE>;
+it's not necessary to actually call it.
+<P>
+(Why does the linker remove unreferenced procedures?
+Because this can save <EM>huge</EM> amounts of memory for
+programs that use the library.)
+
+<H3><A NAME="callc">E3.</A> How can I call a C function?</H3>
+<P>
+You can't call an arbitrary C function,
+but if you're willing to write a function to Icon's specifications,
+there are two approaches.
+Under Unix, which provides <CODE>loadfunc()</CODE>,
+you can load one or more functions from a shared library,
+and then treat them as if they had been written in Icon.
+Some examples can be found in the
+<A HREF="http://www.cs.arizona.edu/icon/library/ccfuncs.htm">
+<CODE>cfuncs</CODE></A> and
+<CODE>packs/loadfuncs</CODE> directories of the Icon program library.
+The more cumbersome approach is to add code to the Icon interpreter
+and rebuild it; some hooks are provided for this purpose.
+Both approaches are discussed in <CITE>Calling C Functions from Icon</CITE>,
+<A HREF="http://www.cs.arizona.edu/icon/docs/ipd240.htm">
+www.cs.arizona.edu/icon/docs/ipd240.htm</A>.
+<P>
+The <A HREF="http://www.cs.arizona.edu/icon/jcon/">Jcon</A> implementation
+allows Icon programs to call Java code that is written to Jcon specifications.
+
+<H3><A NAME="rwpipe">E4.</A> Can I open a bidirectional pipe?</H3>
+<P>
+No, this is not possible.
+Although the concept is simple &mdash;
+write a line to a program via a pipe, then read that program's output
+&mdash; it probably wouldn't work.
+Most I/O libraries don't write anything to a pipe until
+they've filled a buffer, and the most likely consequence would be
+a deadlock, with each program waiting for the other to send more data.
+
+<P><HR>
+<SMALL>
+This FAQ is edited by Gregg Townsend.
+It includes contributions from
+Ralph Griswold, Cliff Hathaway, Clint Jeffery, Bob Alexander,
+and Todd Proebsting.
+</SMALL>
+</BODY>
+</HTML>
diff --git a/doc/faq.txt b/doc/faq.txt
new file mode 100644
index 0000000..91b4eb9
--- /dev/null
+++ b/doc/faq.txt
@@ -0,0 +1,337 @@
+
+ Frequently Asked Questions about the Icon programming language
+
+ www.cs.arizona.edu/icon/faq.htm
+ Last updated November 14, 2005
+
+ Learning about Icon
+ A1. What is Icon?
+ A2. What is Icon good for?
+ A3. What are Icon's distinguishing characteristics?
+ A4. What is the Icon program library?
+ A5. Where can I learn more about Icon?
+ A6. Where are some simple examples?
+ A7. How about comprehensive documentation?
+
+ Implementations
+ B1. What platforms support Icon?
+ B2. How do I get started with Icon?
+ B3. Is there a Unicode version of Icon?
+ B4. What happened to the compiler?
+
+ Administration
+ C1. What is the Icon Project?
+ C2. How often is the on-line material updated?
+ C3. Where did Icon come from?
+ C4. Where is Icon going?
+
+ Support
+ D1. Is there a users' group for Icon?
+ D2. How do I get technical support?
+
+ Programming
+ E1. Why doesn't read() work with every?
+ E2. Why doesn't string invocation such as "foo"() work?
+ E3. How can I call a C function?
+ E4. Can I open a bidirectional pipe?
+ _________________________________________________________________
+
+Learning about Icon
+
+ A1. What is Icon?
+
+ Icon is a very high level general-purpose programming language with
+ extensive features for processing strings (text) and data structures. Icon
+ is an imperative, procedural language with a syntax that is reminiscent of C
+ and Pascal, but with semantics at a much higher level.
+
+ Icon has a novel expression-evaluation mechanism that integrates
+ goal-directed evaluation and backtracking with conventional control
+ structures. It has a string scanning facility for pattern matching that
+ avoids the tedious details usually associated with analyzing strings. Icon's
+ built-in data structures include sets and tables with associative lookup,
+ lists that can be used as vectors or stacks and queues, and records.
+
+ Icon is a strongly, though not statically, typed language. It provides
+ transparent automatic type conversion: For example, if an integer is used in
+ an operation that requires a string, the integer is automatically converted
+ to a string.
+
+ Several implementations of Icon have high-level graphics facilities with an
+ easily programmed window interface.
+
+ Icon manages storage automatically. Objects are created as needed during
+ program execution and space is reclaimed by garbage collection as needed.
+ The sizes of strings and data structures are limited only by the amount of
+ available memory.
+
+ A2. What is Icon good for?
+
+ As a general-purpose programming language with a large computational
+ repertoire, Icon can be used for most programming tasks. It's especially
+ strong at building software tools, for processing text, and for experimental
+ and research applications.
+
+ Icon is designed to make programming easy; it emphasizes the value of
+ programmer's time and the importance of getting programs to work quickly.
+ Consequently, Icon is used both for short, one-shot tasks and for very
+ complex applications.
+
+ A3. What are Icon's distinguishing characteristics?
+
+ * A high-level, general-purpose programming language
+ * Friendly line-oriented syntax (no semicolons needed)
+ * Emphasis on programmer productivity
+ * Usually interpreted
+
+ * Evolved from programming languages (vs. scripting languages)
+ * Procedural control flow plus generators and goal-directed evaluation
+
+ * Values have types; variables are typeless, accept any value
+ * Static scoping: global or (procedure) local
+ * Automatic garbage collection
+
+ * All integers have arbitrary precision
+ * Uses strings (not chars) as basic text datatype
+ * Has lists that function as arrays, queues, and stacks
+ * Also has sets, tables, records (structs), reals (doubles), more
+ * No second-class "primitive types"
+
+ * Not "object-oriented" (no classes, inheritance, or instance methods)
+ * No exception catching
+ * No concurrency (no threads, monitors, semaphores, or synchronization)
+ * Has co-expressions (coroutines)
+
+ * Basic least-common-denominator system interface (a la ANSI C)
+
+ * Procedural graphics (event-driven paradigm available but not mandated)
+ * Retained windows (programs are never called to repaint)
+ * Simple GUI builder that can re-edit its generated code
+ * Turtle graphics package
+
+ * Large library of contributed procedures and programs
+
+ A4. What is the Icon program library?
+
+ The library is a collection of programs and procedures written in Icon. User
+ contributions are welcome and form a significant portion of the library.
+
+ Library procedures effectively augment the built-in functions available to
+ an Icon program. A wide variety of procedures currently exists, and most
+ graphically-based programs are built around library procedures.
+
+ The programs in the library range from simple demonstrations to handy tools
+ to complex graphical applications.
+
+ The library is a resource for both new and experienced programmers. In
+ addition to their basic utility, its programs and procedures serve as
+ examples of how things can be written in Icon.
+
+ The library is indexed at www.cs.arizona.edu/icon/library/ipl.htm.
+
+ A5. Where can I learn more about Icon?
+
+ Here are some good places to start.
+ * Ralph Griswold's overview: www.cs.arizona.edu/icon/docs/ipd266.htm
+ * Dave Hanson's introduction: www.cs.arizona.edu/icon/intro.htm
+ * Bill Mitchell's introduction and slides:
+ www.mitchellsoftwareengineering.com/icon
+ * John Shipman's tutorial: www.nmt.edu/tcc/help/lang/icon
+
+ A6. Where are some simple examples?
+
+ For some simple text-based programs, see any of those introductory documents
+ in the preceding question. For some simple graphics programs, see
+ www.cs.arizona.edu/icon/gb/progs/progs.htm.
+
+ Many more examples, typically larger, are found in the Icon program library;
+ see the indexes of Basic Programs and Graphics Programs.
+
+ A7. How about comprehensive documentation?
+
+ Two books define the Icon language. The core language is covered in The Icon
+ Programming Language (third edition), by Griswold and Griswold. Graphics
+ facilities are described in Graphics Programming in Icon by Griswold,
+ Jeffery, and Townsend. These books contain both tutorial and reference
+ material.
+
+ Icon's internals are detailed in The Implementation of the Icon Programming
+ Language by Griswold and Griswold. Although considerable changes have
+ occurred since Version 6, described in the book, the basic structure of Icon
+ remains the same. Two technical reports, IPD112 and IPD239, describe
+ subsequent changes.
+
+ Printed copies of the Language and Graphics books are available from Jeffery
+ Systems (www.zianet.com/jeffery/books). All three books can be downloaded at
+ no charge from the Icon books page, www.cs.arizona.edu/icon/books.htm.
+
+ The Icon Programming Language Handbook, by Thomas W. Christopher, is
+ available on the web at www.tools-of-computing.com/tc/CS/iconprog.pdf.
+
+ An on-line index to the Icon program library is found at
+ www.cs.arizona.edu/icon/library/ipl.htm.
+
+ There is a large amount of additional information at the Icon web site,
+ www.cs.arizona.edu/icon.
+ _________________________________________________________________
+
+Implementations
+
+ B1. What platforms support Icon?
+
+ Current implementations with graphics support are available for Unix
+ (including Linux) and Windows. The Unix implementation also runs on Darwin,
+ the Macintosh development environment, or the Cygwin environment under
+ Windows. Older versions of Icon are available for some other systems. An
+ alternative Java-based implementation for Unix, Jcon, is also available.
+
+ B2. How do I get started with Icon?
+
+ Version 9.4.3 of Icon for Unix can be downloaded from
+ www.cs.arizona.edu/icon/v943. Source and binary packages are available, each
+ with the complete Icon program library.
+
+ Version 9.3 of Icon for Windows is compatible at the source level with
+ version 9.4.3. It can be downloaded from www.cs.arizona.edu/icon/v93w.htm.
+ The Version 9.4.3 library can be obtained separately from
+ www.cs.arizona.edu/icon/v943.
+
+ For older implementations, start at www.cs.arizona.edu/icon/implver.htm.
+ Jcon is at www.cs.arizona.edu/icon/jcon.
+
+ B3. Is there a Unicode version of Icon?
+
+ No. Icon is defined in terms of 8-bit characters, and changing this presents
+ several design challenges that would likely break existing programs. Also,
+ modifying the C implementation is probably infeasible, but a Unicode version
+ of Jcon might be possible.
+
+ B4. What happened to the compiler?
+
+ For a while, Unix distributions included both an interpreter and a compiler;
+ but the interpreter is is usually fast enough even for production work, and
+ most people found that using the compiler wasn't worth the extra compilation
+ time or the hassles involved. We no longer advertise the compiler or produce
+ binaries for it. It is still part of the source code distribution, and we
+ have not deliberately broken it, but we no longer support it and we cannot
+ offer help if problems arise.
+ _________________________________________________________________
+
+Administration
+
+ C1. What is the Icon Project?
+
+ The Icon Project is a name used by the group that distributes and supports
+ the Icon programming language. The project maintains the Icon web site at
+ www.cs.arizona.edu/icon. A non-commercial organization, the project is
+ supported by the Department of Computer Science at the University of
+ Arizona.
+
+ C2. How often is the on-line material updated?
+
+ New material is added when it's available. Established implementations
+ usually are updated only when there's a new version. This typically is every
+ year or two. The Icon program library is updated on a similar schedule.
+
+ C3. Where did Icon come from?
+
+ Icon is the latest in a series of high-level programming languages designed
+ to facilitate programming tasks involving strings and structures. The
+ original language, SNOBOL, was developed at Bell Telephone Laboratories in
+ the early 1960s. SNOBOL evolved into SNOBOL4, which is still in use.
+ Subsequent languages were developed at the University of Arizona with
+ support from the National Science Foundation. Although it has similar
+ objectives and many similar capabilities, Icon bears little superficial
+ resemblance to SNOBOL4.
+
+ Icon implementations were developed by faculty, staff, and students at the
+ University of Arizona, with significant contributions from volunteers around
+ the world. An Icon history by Ralph and Madge Griswold appears in the
+ preprints of the second History of Programming Languages Conference
+ (HOPL-II), ACM SIGPLAN Notices, March 1993 (Vol 28, No 3).
+
+ The name Icon is not an acronym, nor does it stand for anything in
+ particular, although the word iconoclastic was mentioned when the name was
+ chosen. The name predates the now common use of icon to refer to small
+ images used in graphical user interfaces. This sometimes misleads people
+ into thinking that Icon is designed to create or manipulate icons, but
+ there's no good solution to that problem.
+
+ C4. Where is Icon going?
+
+ We continue to use Icon on a daily basis, but no significant changes are
+ planned. We expect to support the Unix version for the forseeable future,
+ and to distribute ports to other systems as supplied by volunteers.
+
+ The Unicon project is developing an object-oriented language based on Icon.
+ For more information, see unicon.sourceforge.net. An earlier object-oriented
+ extension to Icon, Idol, can be found in the Icon program library.
+ _________________________________________________________________
+
+Support
+
+ D1. Is there a users' group for Icon?
+
+ There is no official Icon users' group, but the Usenet newsgroup
+ comp.lang.icon is dedicated to issues relating to the Icon language.
+
+ D2. How do I get technical support?
+
+ The Icon Project is not a commercial organization, and its capacity for
+ providing technical support is limited. Please use the appropriate resource
+ when you need assistance:
+ * For programming questions, submit a query to the Usenet newsgroup
+ comp.lang.icon.
+ * For porting assistance or Unix problems, contact
+ icon-project@cs.arizona.edu.
+ * For problems with the Windows implementation, contact the implementor,
+ jeffery@cs.nmsu.edu.
+ * For general information and additional documentation, visit the Icon web
+ site: www.cs.arizona.edu/icon.
+ _________________________________________________________________
+
+Programming
+
+ E1. Why doesn't read() work with every?
+
+ every s := read() do {...} doesn't loop because read() produces a single
+ value and then fails if resumed. Other "consumer" procedures such as get()
+ and pop() work the same way. Use a while loop with these procedures, and
+ save every for use with generators such as !x or key(T).
+
+ E2. Why doesn't string invocation such as "foo"() work?
+
+ String invocation works if the procedure is present; the catch is that the
+ linker removes unreferenced procedures. To ensure a procedure's presence,
+ reference it in the main() procedure. A simple reference suffices, as in
+ refs := [foo, bar, baz]; it's not necessary to actually call it.
+
+ (Why does the linker remove unreferenced procedures? Because this can save
+ huge amounts of memory for programs that use the library.)
+
+ E3. How can I call a C function?
+
+ You can't call an arbitrary C function, but if you're willing to write a
+ function to Icon's specifications, there are two approaches. Under Unix,
+ which provides loadfunc(), you can load one or more functions from a shared
+ library, and then treat them as if they had been written in Icon. Some
+ examples can be found in the cfuncs and packs/loadfuncs directories of the
+ Icon program library. The more cumbersome approach is to add code to the
+ Icon interpreter and rebuild it; some hooks are provided for this purpose.
+ Both approaches are discussed in Calling C Functions from Icon,
+ www.cs.arizona.edu/icon/docs/ipd240.htm.
+
+ The Jcon implementation allows Icon programs to call Java code that is
+ written to Jcon specifications.
+
+ E4. Can I open a bidirectional pipe?
+
+ No, this is not possible. Although the concept is simple — write a line to a
+ program via a pipe, then read that program's output — it probably wouldn't
+ work. Most I/O libraries don't write anything to a pipe until they've filled
+ a buffer, and the most likely consequence would be a deadlock, with each
+ program waiting for the other to send more data.
+ _________________________________________________________________
+
+ This FAQ is edited by Gregg Townsend. It includes contributions from Ralph
+ Griswold, Cliff Hathaway, Clint Jeffery, Bob Alexander, and Todd Proebsting.
diff --git a/doc/files.htm b/doc/files.htm
new file mode 100644
index 0000000..fd7fef0
--- /dev/null
+++ b/doc/files.htm
@@ -0,0 +1,182 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>File Organization in Version 9.4 of Icon</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1> File Organization in Version 9.4 of Icon </H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/files.htm
+<BR> Last updated November 8, 2005 </SMALL>
+<!-- $Id: files.htm,v 1.17 2005/11/08 23:24:35 gmt Exp $ -->
+
+<H2> Introduction </H2>
+
+<P> Version 9.4 of Icon introduced several changes to the organization
+of Icon's files under Unix and the methods for finding them.
+These changes, which are described below, simplify the installation
+and use of Icon.
+
+<H2> Library procedure inclusion </H2>
+
+<P> As Icon evolved, the procedures from the Icon program library
+became more important to basic Icon programs, and vital to graphics
+programs; yet the IPL had been treated as a separate product.
+A complete Icon system required two downloads and two installation
+efforts, with proper coordination.
+
+<P> With Icon 9.4, the complete set of basic and graphics library
+procedures is included with every binary Icon distribution.
+Also present are the associated <CODE>$include</CODE> files
+and a selected few programs from the library &mdash;
+notably VIB, the visual interface builder.
+
+<P> Source distributions of Icon 9.4 include the full library,
+which also continues to be available separately.
+
+<H2> Installation directory structure </H2>
+
+<P> An Icon binary distribution unpacks to produce an <CODE>icon</CODE>
+directory containing <CODE>bin</CODE>, <CODE>lib</CODE>, <CODE>man</CODE>,
+and <CODE>doc</CODE> subdirectories.
+Building Icon from source produces these same directories.
+
+<P> The <CODE>bin</CODE> directory contains executables of
+<CODE>icont</CODE>, the Icon translator;
+<CODE>iconx</CODE>, the Icon interpreter;
+a few library programs including <CODE>vib</CODE>;
+and <CODE>libcfunc.so</CODE>, the loadable C functions.
+There is a symbolic link from <CODE>icon</CODE> to <CODE>icont</CODE>.
+Files in this directory are system dependent.
+
+<P> The <CODE>lib</CODE> directory holds <CODE>$include</CODE> files
+and "ucode" (<CODE>.u1</CODE>/<CODE>.u2</CODE>) files of
+program library procedures.
+This directory is system independent.
+
+<P> The <CODE>man</CODE> directory holds the Unix <CODE>man</CODE> page
+for <CODE>icont</CODE>, and the <CODE>doc</CODE> directory holds
+HTML (<CODE>.htm</CODE>) documentation files.
+These directories are also system independent.
+
+<P> This structure is similar to that of binary distributions of Icon 9.3.
+The main difference is that the <CODE>lib</CODE> directory no longer holds
+just a subset of the procedure collection, and the few files from
+the former <CODE>include</CODE> directory have moved into <CODE>lib</CODE>.
+
+<H2> Installation location </H2>
+
+<P> The <CODE>icon</CODE> directory can be installed in any public or
+private area as long as its internal structure is preserved.
+When upgrading an existing Icon installation, replacing the previous
+Icon directory with the new one may provide the smoothest transition.
+Old Icon binaries will continue to function correctly with the new
+interpreter.
+
+<P> In order to consider packaging Icon binaries in Linux RPM files,
+or other similar packages, it is necessary to define a "canonical"
+location for installing Icon.
+The suggested canonical system installation location for Icon is
+<CODE>/opt/icon</CODE>.
+The <CODE>/opt</CODE> directory is present today on most Unix systems and is
+the location recommended by the emerging File Hierarchy Standard (FHS),
+<A HREF="http://www.pathname.com/fhs/">www.pathname.com/fhs</A>.
+
+<P> For convenience of use it may be desirable to provide symbolic
+links from a directory such as /opt/bin or /usr/local/bin
+to programs in the Icon <CODE>bin</CODE> directory.
+If this is done, the list should include at least <CODE>icon</CODE>,
+<CODE>icont</CODE>, <CODE>iconx</CODE>, and <CODE>vib</CODE>.
+
+<H2> Automatic inference of <CODE>iconx</CODE> location </H2>
+
+<P> Past versions of <CODE>icont</CODE> were configured to know
+the location of <CODE>iconx</CODE> in order to embed this in
+generated binaries.
+The <CODE>iconx</CODE> location was configured by editing
+<CODE>src/h/path.h</CODE> in source builds or by using the
+<CODE>patchstr</CODE> utility to edit the <CODE>icont</CODE>
+executable when installing a binary distribution.
+
+<P> In version 9.4, <CODE>icont</CODE> deduces its own location,
+and from this it infers the location of <CODE>iconx</CODE>
+in the same directory.
+No configuration of <CODE>icont</CODE> is needed, and the correct
+path is embedded automatically, requiring only that
+<CODE>icont</CODE> and <CODE>iconx</CODE> reside in the same directory.
+
+<P> It is still possible to configure a fixed path in
+<CODE>icont</CODE> using the <CODE>patchstr</CODE> utility.
+If this is done, the configured path is used instead of the
+inferred path.
+
+<H2> Automatic search for iconx at execution </H2>
+
+<P> The path that <CODE>icont</CODE> embeds in an Icon executable makes
+binary distributions of Icon programs difficult because the embedded
+path must be edited to match the installed location of <CODE>iconx</CODE>.
+The <CODE>ipatch</CODE> utility performed this task when installing
+binary distributions of Icon 9.3.
+
+<P> Icon 9.4 implements a simple search in the shell script that
+heads each generated Icon executable.
+The new header script searches for <CODE>iconx</CODE>
+in these places:
+
+<OL>
+ <LI> in the location specified by the ICONX environment variable
+ <LI> in the same directory as executing binary
+ <LI> in a location specified in the script itself
+ (as generated by <CODE>icont</CODE> or as patched later)
+ <LI> in the command search path ($PATH)
+</OL>
+
+<P> The second item is the key: If there is a copy of <CODE>iconx</CODE>
+in the same directory as the executing program, it is found automatically
+and used as the interpreter.
+An Icon program can now be distributed in binary form
+simply by including an <CODE>iconx</CODE> executable
+in the same directory as the program executable.
+
+<P> The <CODE>ipatch</CODE> utility has been modified to recognize
+both old and new headers, and can still be used to edit the path
+embedded in an Icon executable.
+
+<H2> Automatic library access </H2>
+
+<P> The ability to figure out its own location also lets
+<CODE>icont</CODE> provide automatic access to library procedures.
+The inferred location of the <CODE>lib</CODE> directory is implicitly
+appended to the paths, if any, specified by LPATH and IPATH
+environment variables.
+To use only the standard library files, no environment variables
+need be set.
+
+<P> In a similar manner, <CODE>iconx</CODE> creates or alters the
+FPATH environment variable before beginning execution of an Icon
+program. This provides transparent access to the library's
+loadable C functions without requiring explicit user action.
+
+<H2> No Setup step </H2>
+
+<P> With the changes above, the executable files in an Icon binary
+distribution are ready for use without modification.
+The annoying and error-prone Setup step that was necessary
+with previous versions is no longer required.
+With Icon 9.4, installation can be as simple as just unpacking the
+tar file and adding its <CODE>bin</CODE> directory to the search path.
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/gb80.jpg b/doc/gb80.jpg
new file mode 100644
index 0000000..8ac0081
--- /dev/null
+++ b/doc/gb80.jpg
Binary files differ
diff --git a/doc/ib80.jpg b/doc/ib80.jpg
new file mode 100644
index 0000000..3bd7280
--- /dev/null
+++ b/doc/ib80.jpg
Binary files differ
diff --git a/doc/icon.txt b/doc/icon.txt
new file mode 100644
index 0000000..4168ba5
--- /dev/null
+++ b/doc/icon.txt
@@ -0,0 +1,50 @@
+ICON(1) ICON(1)
+
+NAME
+ icon - execute Icon program
+
+SYNOPSIS
+ icon sourcefile [ arg ... ]
+ icon -P 'program' [ arg ... ]
+
+DESCRIPTION
+ Icon is a simple interface for executing programs written in the Icon
+ programming language. The source code is translated and linked, then
+ executed with the given list of arguments.
+
+ Without -P, a single source file is read; its name must be given
+ exactly and need not end in .icn. A sourcefile name of - reads the
+ source code from standard input.
+
+ With -P, a small program can be embedded within a larger shell script.
+ In this case the program argument is a complete Icon program, typically
+ given as a multi-line quoted string.
+
+ Translation and linking is silent, suppressing progress messages, and
+ undeclared identifiers are diagnosed. This mirrors the behavior of the
+ icont command when run with -s and -u options.
+
+ An Icon source file can be made directly executable by setting the
+ appropriate permission bits and beginning it with a shell header. If
+ the first line of the file is
+ #!/usr/bin/env icon
+ then icon is found on the command search path and called to process the
+ program upon execution.
+
+ENVIRONMENT
+ The environment variables described under icont(1) can also be used
+ with the icon command. Normally, none of these are needed.
+
+SEE ALSO
+ icont(1), the full-featured interface supporting separate compilation,
+ multiple source files, and other features.
+
+ The Icon Programming Language. Griswold and Griswold, Peer-to-Peer,
+ third edition, 1996.
+
+ Graphics Programming in Icon. Griswold, Jeffery, and Townsend, Peer-
+ to-Peer, 1998.
+
+ Version 9.4.3 of Icon.
+ http://www.cs.arizona.edu/icon/v943.
+
diff --git a/doc/icont.txt b/doc/icont.txt
new file mode 100644
index 0000000..a5eb633
--- /dev/null
+++ b/doc/icont.txt
@@ -0,0 +1,126 @@
+
+NAME
+ icont - translate Icon program
+
+SYNOPSIS
+ icont [ option ... ] file ... [ -x arg ... ]
+
+DESCRIPTION
+ Icont translates and links programs written in the Icon language.
+ Translation produces ucode files, suffixed .u1 and .u2, which are
+ linked to produce executable files. Icon executables are shell scripts
+ containing binary data; this data is interpreted by iconx, which must
+ be present at execution time.
+
+ File names ending in .icn are Icon source files; the .icn suffix may be
+ omitted from command arguments. An argument of - reads from standard
+ input. A name ending in .u, .u1, or .u2 selects both files of a ucode
+ pair. The specified files are combined to produce a single program,
+ which is named by removing the suffix from the first input file.
+
+ An argument of -x may appear after the file arguments to execute the
+ linked program. Any subsequent arguments are passed to the program.
+
+ Ucode files produced by translation are normally deleted after linking.
+ If the -c option is given, processing stops after translation and the
+ ucode files are left behind. A directory of such files functions as a
+ linkable library.
+
+OPTIONS
+ The following options are recognized by icont:
+
+ -c Stop after producing ucode files.
+
+ -f s
+ Enable full string invocation by preserving unreferenced procedures
+ during linking.
+
+ -o file
+ Write the executable program to the specified file.
+
+ -s Suppress informative messages during translation and linking.
+
+ -t Activate runtime tracing by arranging for &trace to have an initial
+ value of -1 upon execution.
+
+ -u Diagnose undeclared identifiers.
+
+ -v i
+ Set verbosity level of informative messages to i.
+
+ -E Direct the results of preprocessing to standard output and inhibit
+ further processing.
+
+ -N Don't embed iconx path in executable file.
+
+ -V Announce version and configuration information on standard error.
+
+TRANSLATION ENVIRONMENT
+ Two environment variables control file search paths during translation
+ and linking. These variables contain blank- or colon-separated lists
+ of directories to be searched after the current directory and before
+ the standard library.
+
+ IPATH
+ Directories to search for for ucode files specified in link direc-
+ tives and on the command line.
+
+ LPATH
+ Directories to search for source files specified in preprocessor
+ $include directives.
+
+EXECUTION ENVIRONMENT
+ Several environment variables control the execution of an Icon program.
+ Values in parentheses are the default values.
+
+ BLKSIZE (500000)
+ The initial size, in bytes, of the allocated block region.
+
+ COEXPSIZE (2000)
+ The size, in words, of each co-expression stack.
+
+ ICONCORE
+ If set, a core dump is produced for error termination.
+
+ ICONX
+ The location of iconx, the icon interpreter, overriding the value
+ built into the executable by icont. Not required if the configura-
+ tion is unchanged since build time or if iconx is in the same
+ directory as the executable.
+
+ MSTKSIZE (10000)
+ The size, in words, of the main interpreter stack for icont.
+
+ NOERRBUF
+ By default, &errout is buffered. If this variable is set, &errout
+ is not buffered.
+
+ QLSIZE (5000)
+ The size, in bytes, of the region used for pointers to strings dur-
+ ing garbage collection.
+
+ STRSIZE (500000)
+ The initial size, in bytes, of the string space.
+
+ TRACE
+ The initial value of &trace. If this variable has a value, it
+ overrides the translation-time -t option.
+
+SEE ALSO
+ icon(1), a simpler command interface for embedding Icon programs in
+ scripts.
+
+ The Icon Programming Language. Griswold and Griswold, Peer-to-Peer,
+ third edition, 1996.
+
+ Graphics Programming in Icon. Griswold, Jeffery, and Townsend, Peer-
+ to-Peer, 1998.
+
+ Version 9.4.3 of Icon.
+ http://www.cs.arizona.edu/icon/v943.
+
+CAVEATS
+ Icon executables are not self-sufficient, but require the iconx inter-
+ preter. When distributing an Icon program in executable form, include
+ a copy of iconx in the same directory.
+
diff --git a/doc/index.htm b/doc/index.htm
new file mode 100644
index 0000000..0c62d4e
--- /dev/null
+++ b/doc/index.htm
@@ -0,0 +1,29 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Icon Documentation</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1>Icon Documentation</H1>
+
+<P> <A HREF=docguide.htm> Documentation guide </A>
+<P> <A HREF=relnotes.htm> Release notes </A>
+<P> <A HREF=install.htm>Installation instructions (for binary releases) </A>
+<P> <A HREF=build.htm> Build instructions (for source releases) </A>
+<P> <A HREF=port.htm> Porting instructions </A>
+<P> <A HREF=files.htm> File organization </A>
+<P> <A HREF=macintosh.htm> Icon on Macintosh </A>
+<P> <A HREF=cygwin.htm> Icon on Cygwin </A>
+<P> <A HREF=faq.htm> Frequently asked questions about Icon </A>
+
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/install.htm b/doc/install.htm
new file mode 100644
index 0000000..900227b
--- /dev/null
+++ b/doc/install.htm
@@ -0,0 +1,65 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Installing Binaries of Version 9.4 of Icon</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1>Installing Binaries of Version 9.4 of Icon</H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/install.htm
+<BR> Last updated November 8, 2005 </SMALL>
+<!-- $Id: install.htm,v 1.17 2005/11/08 23:24:35 gmt Exp $ -->
+
+<P> &nbsp;
+
+<P> These instructions explain how to install Unix binaries of
+<A HREF=relnotes.htm>Version 9.4 of Icon</A>.
+For instructions on building an Icon source package, see
+<A HREF=build.htm>Building Icon from Source</A>.
+
+<H2>Installing a Private Copy of Icon</H2>
+
+<P> To install Icon in your own directory, just unpack the tar file.
+This produces a directory with
+four subdirectories: <CODE>bin</CODE>, <CODE>lib</CODE>,
+<CODE>doc</CODE>, and <CODE>man</CODE>.
+Add the <CODE>bin</CODE> directory to your shell's search path.
+
+<P> For instructions on building and running Icon programs, see the
+man pages for <A HREF=icon.txt><CODE>icon</CODE></A>
+and <A HREF=icont.txt><CODE>icont</CODE></A>.
+For information about the Icon language, see the
+<A HREF=docguide.htm>documentation guide</A>.
+
+<H2>Installing a Public Copy of Icon</H2>
+
+<P> A single copy of Icon can be shared among users
+by unpacking it in a public area, or moving it there.
+We suggest renaming the directory to <CODE>/opt/icon</CODE>
+for new installations, but any location is acceptable.
+It is only important that the <CODE>bin</CODE> and <CODE>lib</CODE>
+directories retain those names as members of a common parent directory.
+(More details about the Icon file organization are available
+<A HREF=files.htm>separately</A>.)
+
+<P> You can make symbolic links from other locations
+to programs in the Icon <CODE>bin</CODE> directory.
+For example, you can link
+<CODE>/usr/local/bin/icon</CODE> to <CODE>/opt/icon/bin/icon</CODE>.
+If you do this, link all of <CODE>icon</CODE>, <CODE>icont</CODE>,
+<CODE>iconx</CODE>, and (if present) <CODE>vib</CODE>.
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/istyle.css b/doc/istyle.css
new file mode 100644
index 0000000..820fd71
--- /dev/null
+++ b/doc/istyle.css
@@ -0,0 +1,26 @@
+/* style sheet for Icon HTML pages */
+
+BODY { color: black; background: white url(blubordr.gif) repeat-y; }
+BODY { margin-left: 60px; margin-right: 10px; }
+
+BODY, TH, TD { font-family: Helvetica, Arial, sans-serif; }
+EM,VAR,CITE,DFN { font-style: italic; }
+STRONG { font-weight: bold; }
+CODE { font-family: Helvetica, Arial, sans-serif; font-weight: bold;}
+PRE, TT { font-family: "Lucida Sans Typewriter", Monaco, monospace; }
+
+H1,H2,H3,H4,H5,H6 { font-family:Helvetica,Arial,sans-serif; font-weight:bold; }
+H1 { font-size: 150%; margin-top: 2.0em; margin-bottom: 0.4em; }
+H2 { font-size: 125%; margin-top: 2.0em; margin-bottom: 0.4em; }
+H3, H4, H5, H6 { font-size: 100%; margin-top: 1.5em; margin-bottom: 0.2em; }
+
+P { margin-top: 0.9em; margin-bottom: 0.0em; }
+BLOCKQUOTE { margin-top: 0.4em; margin-bottom: 0.4em; }
+UL, OL { margin-top: 0.4em; margin-bottom: 0.4em; }
+LI { margin-top: 0.2em; }
+
+TH, TD { padding-left: 0.4em; padding-right: 0.4em; }
+TH, TD { vertical-align: top; text-align: left; }
+
+A:link { background: white; color: #06C; }
+A:visited { background: white; color: #036; }
diff --git a/doc/lb80.jpg b/doc/lb80.jpg
new file mode 100644
index 0000000..90f75fe
--- /dev/null
+++ b/doc/lb80.jpg
Binary files differ
diff --git a/doc/macintosh.htm b/doc/macintosh.htm
new file mode 100644
index 0000000..a6b39de
--- /dev/null
+++ b/doc/macintosh.htm
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<HTML>
+<HEAD>
+ <TITLE>Icon on Macintosh</TITLE>
+ <LINK rel="STYLESHEET" type="text/css" href="istyle.css">
+ <LINK rel="SHORTCUT ICON" href="shortcut.gif">
+</HEAD>
+
+<BODY>
+ <P><A href="http://www.cs.arizona.edu/icon/">
+ <IMG src= "wwwcube.gif" alt="[Icon home]"
+ width="128" height="144" border="0" align="right"></A></P>
+
+ <H1>Icon on Macintosh</H1>
+
+ <P>Gregg M. Townsend<BR>
+ <SMALL>Department of Computer Science</SMALL><BR>
+ <SMALL>The University of Arizona</SMALL></P>
+
+ <P><SMALL>www.cs.arizona.edu/icon/v943/macintosh.htm<BR>
+ Last updated November 9, 2005</SMALL>
+ <!-- $Id: macintosh.htm,v 1.1 2005/11/09 18:03:59 gmt Exp $ --></P>
+
+ <H2>Introduction</H2>
+
+ <P>Because Mac OS X is based on Unix, it can run Icon. There is
+ no special Macintosh interface, so as a practical matter Icon on
+ the Mac is for those who are comfortable using a Unix shell in a
+ Terminal window.</P>
+
+ <P>The command-line interface to Icon is described by Unix
+ <CITE>man</CITE> pages. The <CODE><A href=
+ "icon.txt">icon</A></CODE> command executes a program from a
+ single source file. An Icon program in a simple text file
+ <CODE>prog.icn</CODE> is executed by typing <CODE>icon
+ prog.icn</CODE>. The more general <CODE><A href=
+ "icont.txt">icont</A></CODE> command, modeled after the Unix
+ <CITE>cc</CITE> command, supports multiple files, separate
+ compilation, and other features.</P>
+
+ <H2>Graphics</H2>
+
+ <P>For graphics, Icon uses the X Window System, generally called
+ <A href="http://www.apple.com/macosx/features/x11/">X11</A> in
+ Macintosh documentation. X11 is not normally installed as part of
+ OS X; it must be selected as part of a custom installation.
+ Alternatively, it can be
+ <A HREF="http://www.apple.com/support/downloads/x11formacosx.html">
+ downloaded</A> from Apple.</P>
+
+ <P>The X window system does not start automatically. To run an
+ Icon graphics program, you must first start the X11 application
+ and leave it running. The environment variable DISPLAY must be
+ set in the shell that runs an Icon graphics program. For
+ example:</P>
+
+ <BLOCKQUOTE>
+ <P><CODE>setenv DISPLAY :0.0</CODE></P>
+ </BLOCKQUOTE>
+
+ <H2>Building Icon</H2>
+
+ <P>Building Icon from source requires the <A href=
+ "http://www.apple.com/macosx/features/xcode/">Xcode</A> toolbox.
+ This comes in an extra folder on the OS X installation disc.
+ When installing XCode, be sure to select a custom
+ installation and add X11 to the default set.</P>
+
+ <P>Icon is built in a Terminal window. The process is the same as
+ on other platforms and uses the configuration named
+ <CODE>macintosh</CODE>. See
+ <A href="build.htm">Building Icon</A> for detailed instructions.</P>
+
+ <BLOCKQUOTE>&nbsp;
+
+</BLOCKQUOTE>
+ <HR>
+</BODY>
+</HTML>
diff --git a/doc/port.htm b/doc/port.htm
new file mode 100644
index 0000000..5be8473
--- /dev/null
+++ b/doc/port.htm
@@ -0,0 +1,235 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Porting the Icon Implementation</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1>Porting the Icon Implementation</H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/port.htm
+<BR> Last updated November 8, 2005 </SMALL>
+<!-- $Id: port.htm,v 1.5 2005/11/08 23:24:35 gmt Exp $ -->
+
+<H2> Introduction </H2>
+
+This document describes how to port a source release of Icon to a new platform.
+It assumes familiarity with the process by which Icon is
+<A HREF=build.htm>built from source</A>
+using an existing configuration.
+
+<H2>Requirements</H2>
+
+Icon expects the underlying system to conform to certain standards
+that are met by most modern systems.
+These are not necessarily the latest standards but rather
+versions that have already been widely implemented.
+Newer standards maintain compatibility and present no problems.
+
+
+<H3>POSIX Commands</H3>
+
+Icon is build using Makefiles and shell scripts, as defined by
+POSIX.2 (IEEE 1003.2-1992).
+Additionally, Icon uses Makefile <DFN>includes</DFN>,
+which are provided by nearly all modern Unix systems
+although they are not part of the 1992 standard.
+
+
+<H3>C Compiler</H3>
+
+Icon requires a production-quality compiler supporting ANSI C (X3.159-1989).
+<EM>Production quality</EM> implies correctness, robustness,
+and the ability to handle large files and complicated expressions.
+
+<H3>C Data Sizes</H3>
+
+Icon places the following requirements on C data sizes:
+ <UL>
+ <LI><I>chars</I> must be 8 bits.
+ <LI><I>ints</I> must be 16, 32, or 64 bits.
+ <LI><I>longs</I> and pointers must be 32 or 64 bits.
+ <LI>All pointers must be the same length.
+ <LI>Pointers and <I>longs</I> must be the same length.
+ </UL>
+If your C data sizes do not meet these requirements,
+do not attempt to configure Icon.
+
+
+<H3>POSIX Library</H3>
+
+In addition to the standard C library, Icon uses the library functions
+specified by POSIX.1 (IEEE 1993.1-1996).
+In particular, Icon uses <DFN>POSIX threads</DFN> and <DFN>semaphores</DFN>
+to implement context switching for co-expressions.
+This eliminates the need for specialized assembly-language code,
+some of which can still be seen in older configurations.
+
+
+
+<H2> The Porting Process </H2>
+
+Every different Icon configuration has its own subdirectory in the
+<CODE>config</CODE> directory of the Icon source tree.
+To add a new configuration, create a new directory and copy in the
+<CODE>define.h</CODE>, <CODE>Makedefs</CODE>, and <CODE>status</CODE> files
+from the <CODE>posix</CODE> configuration directory.
+
+<P> The porting process involves repeating these steps until
+the system is working:
+<OL>
+ <LI> Edit the configuration files as described below.
+ <LI> Configure:
+ <CODE>make Configure name=</CODE><VAR>newdirectory</VAR>
+ <LI> Build: <CODE>make</CODE>
+ <LI> Test: <CODE>make Test</CODE>
+</OL>
+If a configuration parameter is changed it is necessary to
+reconfigure and rebuild from the beginning.
+
+<P> The Icon source code has proven to be robust and portable.
+Most porting problems are related to command options and library locations,
+the things that are configured in the <CODE>Makedefs</CODE> file.
+
+<P> If the system builds smoothly, but problems are revealed by
+<CODE>make Test</CODE>, try removing any C optimization options.
+New compilers are often stressed beyond their capabilities by Icon.
+
+<P> It is best to start by building just the basic Icon system.
+When that is working, repeat with <CODE>make X-Configure</CODE>
+instead of <CODE>make Configure</CODE> to build Icon with graphics.
+(Note that <CODE>make Test</CODE> does not test graphics, and so you
+should also execute <CODE>bin/colrbook</CODE> as an additional manual test.)
+Finally, when those configurations are working, you may wish to
+enable dynamic loading as described in a later section.
+
+
+<H2> Configuration Parameters </H2>
+
+Icon is set up by editing three files in the configuration directory
+of a particular platform.
+You can examine the files in other directories to see working examples.
+After a configuration file is changed, Icon must be reconfigured
+and rebuilt from the beginning (step 2 above).
+These instructions assume that you are starting from copies of
+the <CODE>posix</CODE> configuration files.
+
+
+<H3> <CODE>define.h</CODE> </H3>
+
+Edit the comment at the beginning of <CODE>define.h</CODE>,
+but otherwise leave this file alone.
+Although some older configurations may define additional values,
+they are not needed here.
+
+
+<H3> <CODE>Makedefs</CODE> </H3>
+
+The critical configuration work is done by editing the
+<CODE>Makedefs</CODE> file.
+The parameters set here are:
+<BLOCKQUOTE><DL>
+
+ <DT><CODE>CC</CODE>
+ <DD>The command name for the C compiler. Typical values are
+ <CODE>cc</CODE>, <CODE>gcc</CODE>, or <CODE>c89</CODE>.
+
+ <DT><CODE>CFLAGS</CODE>
+ <DD>C compiler flags. A path specification for the X11 libraries
+ is usually needed.
+ Include <CODE>&ndash;O </CODE> to optimize the C code,
+ but remove it if it causes problems.
+
+ <DT><CODE>CFDYN</CODE>
+ <DD>C compiler flags for generating dynamic libraries,
+ usually a flag that generates position-independent code.
+ A typical value is <CODE>&ndash;fPIC</CODE>.
+
+ <DT><CODE>RLINK</CODE>
+ <DD>General runtime libraries.
+ Many systems require <CODE>&ndash;lm</CODE> to link
+ the math library.
+ Some systems also require <CODE>&ndash;ldl</CODE> to link
+ <CODE>dlopen()</CODE>.
+
+ <DT><CODE>TLIBS</CODE>
+ <DD>Thread library.
+ Some systems require <CODE>&ndash;lpthread</CODE> or other
+ values (see examples in other configurations) to link the
+ threads library.
+
+ <DT><CODE>XLIBS</CODE>
+ <DD>Linker specifications for the X Windows library.
+ Many systems need both a path and a library name here.
+
+ <DT><CODE>XPMDEFS</CODE>
+ <DD>Definitions for building the XPM library.
+ Change this (see other examples) if problems occur
+ while building the <CODE>src/xpm</CODE> directory.
+
+ <DT><CODE>GDIR</CODE>
+ <DD>Leave this alone.
+
+</DL></BLOCKQUOTE>
+
+
+<H3> <CODE>status</CODE> </H3>
+
+The <CODE>status</CODE> file is not used by the build process,
+but it should be edited to document the target platform,
+and it should be updated whenever the configuration changes.
+
+
+
+<H2> Dynamic Loading </H2>
+
+Icon's optional dynamic loading facility allows Icon programs
+to call specially written user C code via the built-in
+<CODE>loadfunc</CODE> procedure.
+Dynamic loading is enabled by
+<OL>
+ <LI> Editing <CODE>config/</CODE><VAR>name</VAR><CODE>/define.h</CODE>
+ to add <CODE>#define LoadFunc</CODE> at the end.
+ <LI> Editing <CODE>ipl/cfuncs/mklib.sh</CODE>
+ to add a new case to the shell script that builds
+ a shared library from a set of C object files.
+ <LI> Reconfiguring, rebuilding, and retesting as usual.
+ If dynamic loading is enabled in <CODE>define.h</CODE>,
+ it is tested by <CODE>make Test</CODE>.
+</OL>
+
+<P> The second step is the hardest; on many systems, documentation
+that discusses shared libraries is scant or nonexistent.
+
+<P> If problems are found while building, check especially the definitions
+of the <CODE>Makedefs</CODE> parameters
+<CODE>CFDYN</CODE> and <CODE>RLINK</CODE>.
+
+
+
+<H2> Feedback </H2>
+
+Please let us know if you complete a port to a new platform.
+Review the <CODE>status</CODE> file one last time and make
+sure it is correct.
+Send the files from the new configuration directory
+(and also <CODE>mklib.sh</CODE>, if changed) to
+<A HREF="mailto:icon-project@cs.arizona.edu">icon-project@cs.arizona.edu</A>.
+Please also tell us the values reported on that platform by the
+<CODE>uname -p</CODE> and <CODE>uname -m</CODE> commands.
+
+
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/relnotes.htm b/doc/relnotes.htm
new file mode 100644
index 0000000..ae6bf1f
--- /dev/null
+++ b/doc/relnotes.htm
@@ -0,0 +1,215 @@
+<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+ <TITLE>Release Notes for Version 9.4.3 of Icon</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="istyle.css">
+ <LINK REL="SHORTCUT ICON" HREF="shortcut.gif">
+</HEAD>
+<BODY>
+
+<P><A HREF="http://www.cs.arizona.edu/icon/"> <IMG SRC="wwwcube.gif"
+ALT="[Icon home]" WIDTH=128 HEIGHT=144 BORDER=0 ALIGN=RIGHT> </A>
+
+<H1> Release Notes for Version 9.4.3 of Icon </H1>
+
+<P> Gregg M. Townsend
+<BR> <SMALL> Department of Computer Science </SMALL>
+<BR> <SMALL> The University of Arizona </SMALL>
+
+<P> <SMALL> www.cs.arizona.edu/icon/v943/relnotes.htm
+<BR> Last updated November 10, 2005 </SMALL>
+<!-- $Id: relnotes.htm,v 1.49 2005/11/10 23:02:06 gmt Exp $ -->
+
+
+<H2> Introduction </H2>
+
+<P> Version 9.4.3 of Icon is a minor update to version 9.4.2 of Icon.
+It incorporates configuration, documentation, and library updates.
+Some minor bugs have been fixed.
+
+<P> The Icon language is unchanged, and this Unix implementation
+remains compatible at the source level with Icon 9.3 for Windows.
+
+
+<H2> Changes in version 9.4.3 </H2>
+
+<P> Notable changes in this latest version are listed here.
+Some code cleanup work and documentation editing
+has also been done.
+
+<H3> Configurations </H3>
+
+<P> The system-specific Icon configurations have been reorganized and renamed;
+new names focus on operating systems rather than CPU architectures.
+The several BSD configurations have been merged into one.
+
+<P> The <CODE>macintosh</CODE> configuration now supports the
+<CODE>loadfunc</CODE> function. This configuration has also been
+revised to anticipate Apple's announced migration to the x86 architecture.
+
+<P> A new <A HREF=port.htm>porting guide</A> has been written, and a new
+<CODE>posix</CODE> configuration has been added
+as a starting point in constructing new ports.
+
+<H3> Library changes </H3>
+
+<P> As usual, several files in the Icon program library have been
+added or edited. The core library files, however, remain stable.
+Notable changes include:
+
+<PRE>
+procs/dijkstra new procedures implement Dijkstra's control structures
+procs/html add procedure for canonicalization of paths
+procs/matrix2 new procedures for matrix manipulation
+procs/nestlist new procedures for representing nested lists as strings
+procs/printf add %e format and fix a rounding problem
+
+progs/noise new program for producing a random bitstream
+progs/unclog improve logic for combining adjacent entries
+
+gprogs/dlgvu improve coverage map; allow altitude in GPS data
+gprogs/gallery faster thumbnail loading for JPEG images
+gprogs/img many new features
+gprogs/sier better color choices
+gprogs/trkvu accept GPS track logs with altitude as the last field
+</PRE>
+
+The undocumented <CODE>save</CODE> function, which only worked
+on a few platforms, has been removed.
+
+
+<H2> Earlier feature additions </H2>
+
+<P> These features appeared in earlier releases of Icon that followed
+publication of the Icon books.
+
+<H3> Millions of colors </H3>
+<SMALL> (new with version 9.4.2 of Icon) </SMALL>
+
+<P> Icon's X-windows interface no longer limits each window to
+256 colors at one time.
+Median-cut quantization selects image colors when writing a GIF file.
+
+<H3> Scriptable source files </H3>
+<SMALL> (new with version 9.4.1 of Icon) </SMALL>
+
+<P> An Icon source file can be made executable under Unix by prefixing it
+with a comment line
+<BLOCKQUOTE><CODE>#!/usr/bin/env icon</CODE></BLOCKQUOTE>
+and setting its execute permission bit.
+This uses a new <A HREF="icon.txt"><CODE>icon</CODE></A> command,
+which in another form allows a small Icon program to be embedded
+within a shell script.
+See the <A HREF="icon.txt">man page</A> for details.
+The traditional <A HREF="icont.txt"><CODE>icont</CODE></A> command
+remains available for less specialized purposes.
+
+<H3> Path searching </H3>
+<SMALL> (new with version 9.4.0 of Icon) </SMALL>
+
+<P> Under Unix, colons (<CODE>:</CODE>) may now separate directories in the
+<CODE>LPATH</CODE> and <CODE>IPATH</CODE> environment variables as an
+alternative to spaces.
+The Icon translator and linker search these paths when looking for
+<CODE>$include</CODE> and <CODE>link</CODE> files respectively.
+
+<P> The Icon program library is now searched automatically, but
+<CODE>LPATH</CODE> and <CODE>IPATH</CODE> can still be set to control
+the search order.
+For version 9.4, the effective path in each case is:
+<OL>
+ <LI> The current directory
+ <LI> Any directories named by the environment variable
+ <LI> The Icon library directory
+</OL>
+
+<P> Other changes affect the configuration of Icon at installation time
+and the way executable Icon programs locate the interpreter.
+These changes, which are transparent to most users, are discussed
+in more detail on the <A HREF="files.htm">File Organization</A> page.
+
+<H3> Reading directory contents </H3>
+<SMALL> (new with version 9.3.2 of Icon) </SMALL>
+
+<P> The files in a directory can be listed by opening the directory as a file.
+Subsequent reads return the names of the files contained in the directory.
+The names are returned in no particular order, and for Unix, the directories
+<CODE>"."</CODE> and <CODE>".."</CODE> are included.
+
+<H3> Reading foreign text files </H3>
+<SMALL> (new with version 9.3.1 of Icon) </SMALL>
+
+<P> The function <CODE>read()</CODE> recognizes
+three kinds of line terminators when reading a file
+opened in translated mode:
+Windows (CR+LF), Macintosh (CR), or Unix (LF).
+Consequently, text files created on one platform can be
+read by an Icon program running on a different platform.
+
+
+<H2> Limitations, bugs, and problems </H2>
+
+<P> Large integers cannot be used with <CODE>i to j</CODE>,
+with <CODE>seq()</CODE>, or with integer-valued keywords.
+
+<P> Large-integer literals are constructed at run-time, so such
+literals are best kept outside of loops.
+
+<P> Conversion of a large integer to a string is quadratic
+in the length of the integer.
+Conversion of a very large integer may take a long time.
+
+<P> An "evaluation stack overflow" can occur when a procedure is called
+with a huge number (thousands or more) of arguments.
+The capacity can be increased by setting the environment variable
+<CODE>MSTKSIZE</CODE> or <CODE>COEXPSIZE</CODE>, as appropriate.
+
+<P> Stack overflow checking uses a heuristic that is not always effective.
+Stack overflow in a co-expression is especially likely to escape
+detection and cause a mysterious program malfunction.
+
+<P> Pathologically nested structures can provoke a memory or segmentation
+fault during garbage collection by reaching the stack limit.
+The stack limit can be raised by the
+<CODE>limit</CODE> or <CODE>ulimit</CODE> shell command.
+
+
+<P> If an expression such as <CODE> x := create <VAR>expr</VAR></CODE>
+is used in a loop, and <CODE>x</CODE> is not a global variable,
+uncollectable co-expressions accumulate with each iteration.
+This problem can be circumvented by making <CODE>x</CODE>
+a global variable or by assigning a value to <CODE>x</CODE>
+before the create operation, as in
+ <BLOCKQUOTE><CODE>
+ x := &amp;null <BR>
+ x := create <VAR>expr</VAR>
+ </CODE></BLOCKQUOTE>
+
+<P> Integer overflow on exponentiation may not be detected during execution.
+Such overflow may occur during type conversion.
+
+
+<H2> Documentation </H2>
+
+<P> See the <A HREF=docguide.htm>documentation guide</A>
+for an overview of the available Icon documentation.
+
+<P> For installation instructions, see
+<A HREF=install.htm>Installing Binaries</A> or
+<A HREF=build.htm>Building from Source</A> as appropriate.
+
+
+<H2> Acknowledgments </H2>
+
+<P>
+Arthur Eschenlauer contributed the <CODE>matrix2</CODE>
+and <CODE>nestlist</CODE> libraries.
+Frank Lhota contributed the <CODE>dijkstra</CODE> library.
+Nolan Clayton contributed revisions to the <CODE>img</CODE> program.
+Michael Glass contributed revisions to the <CODE>printf</CODE> procedure.
+Chris Tenaglia and Andreas Almroth contributed configuration files.
+
+<P> <HR>
+
+</BODY>
+</HTML>
diff --git a/doc/shortcut.gif b/doc/shortcut.gif
new file mode 100644
index 0000000..0268253
--- /dev/null
+++ b/doc/shortcut.gif
Binary files differ
diff --git a/doc/wwwcube.gif b/doc/wwwcube.gif
new file mode 100644
index 0000000..7ff695e
--- /dev/null
+++ b/doc/wwwcube.gif
Binary files differ