This directory holds the source code and documentation for the latest
release of the Elk Scheme interpreter.


The file RELEASE explains the purpose and release status of the software;
the file ORIGIN contains its copyright status and acknowledgements.

The file INSTALL in this directory explains how to compile and install
the interpreter and the extensions and how to port the sources to
machines and operating systems not supported by the current release.

The file MACHINES lists the machines that the software has been tested
on and gives additional machine-specific installation advice.


All filenames mentioned in this road-map and in the INSTALL file are
relative to this directory.


src/   holds the source files of the interpreter proper.

src/stack.s.*
       the part of the interpreter that has to be written in assembly;
       one version of src/stack.s for each supported machine type.
       Not needed for the portable version.

src/alloca.s.*
       the implementation of the alloca() function for the supported
       types of machines (if a file for a type of machine is empty,
       alloca() will be taken from the C library).  Not needed for the
       portable version.

scm/   holds Scheme files that can be loaded into the interpreter
       (either explicitly by means of "load" or automatically, such as
       "toplevel" which is loaded on startup).

lib/   holds the C files that represent extensions to the interpreter.
       The corresponding .o-files can be loaded into the interpreter
       during runtime (or, when your operating system doesn't support
       dynamic linking of object files, be linked together statically
       with the core interpreter).

lib/xlib/
       holds the Elk/Xlib extension (the part written in C).  It can be
       loaded by evaluating "(require 'xlib)".

lib/xlib/examples/
       holds a number of simple Scheme demonstrations programs that make
       use of the Xlib extension.

lib/xt/
       holds the Elk/Xt extension (the part written in C).  It can be
       loaded by evaluating "(require 'xt)" or "(require 'motif)" if
       you have the OSF/Motif widgets.

lib/xt/examples/
lib/xt/examples/motif/
       here you find a number of simple Scheme programs that demonstrate
       the interface to Xt and the Athena, HP, and Motif widgets.

lib/xaw/
lib/xhp/    (obsolete)
lib/motif/
      these directories hold the interfaces to the Athena, HP, and
      Motif widgets, respectively.  Look into the demonstration programs
      to see how individual widgets are loaded.

      There is a file with the extension .d for each widget class.
      "make" creates a C file for each .d-file which is then compiled to
      a loadable .o-file.

lib/util/
      holds utility functions and include files used by the extensions.

doc/
      here you find the documentation for Elk.  Most of the documents
      must be formatted using nroff or troff with the "ms" macros.
      Postscript versions of the documents are included.  If you want
      to format the files yourself, look into the Makefiles and into
      doc/tmac/tmac.scheme first.

doc/stack.txt
      describes how to write a new src/stack.s for a new type of processor.

tst/  holds a number of trivial Scheme test programs and other small
      programs that have been obtained through USENET newsgroups and the
      Scheme mailing list.

stk/  holds two small test programs that can be used to verify that
      alloca() and the assembly functions in src/stack.s are working
      correctly.
