This directory contains the distribution version 1.2 of scm. Scm conforms to Revised^3.99 Report on the Algorithmic Language Scheme [Draft August 31, 1989]. Scm runs under Unix, VMS, and Microsoft C on IBM PCs. The file `scm.exe', if present, is an IBM PC executable of scm. `public.lic' details the LACK OF WARRANTY for scm and the conditions for distributing scm. `test.scm' is Scheme code which tests conformance with Scheme specifications. (test-cont) will not work on VAX or SUN4 systems (they #define CHEAP_CONTINUATIONS). `fib.scm' is Scheme code for fibonacci [type (fib 20)] which can be used to test the performance of scm against compiled C code [type (cfib 20)]. `code.doc' describes the internal representations and algorithms. Also describes how to modify scm. `makefile' is the file for building scm using the `make' program. `makefile.msc' is the file for building scm on an IBM PC using microsoft C. The garbage collector does not work properly under Turbo C (why is this?). `config.h' is a C include file containing system dependent definitions. If scm doesn't run correctly look at this file first. `scm.h' has the data type and external definitions of scm. `scm.c' has the top level, error, interrupt, load, and cfib code. `scl.c' has the code for utility functions which are not part of the IEEE Scheme spec. `eval.c' has the evaluator, special functions, apply, map, and foreach. `sys.c' has the code for call-with-current-continuation, input and output, storage allocation and garbage collection. `subr.c' has all the rest of functions. Using the System Typing: `scm [file1] [file2] ...' will load all the files given as arguments into scm. Scm will then evaluate and print any expression typed into it. Scm has some features not required by the IEEE and Revised^3.99 specifications. Typing the end-of-file character at top level or (quit) will exit from scm. To monitor heap allocation and collection type (verbose #t) Typing (verbose #f) will turn off monitoring. Typing (gc) will do a garbage collection. Typing control-c will stop any computation and return you to top level. If scm encounters a non-fatal error it will return you to top level and the value of `errobj' will be the offending object if appropriate. Typing (warranty) or (terms) will print the GNU General Public License. If scm is compiled under VMS typing (edit) or (vms-debug) will invoke the editor or the debugger respectively.