
            SCIX -- A Scheme Interface to the X Window System


This directory tree contains the entire source for the SCIX system (currently
at version 0.97, i.e., beta-release). SCIX is a completely object-oriented
interface between the X Window System and the programming language Scheme.

It has been implemented with the Scheme->C system developed at Digital
Western Research Laboratory in Palo Alto by Joel Bartlett (Scheme->C is
available by anonymous ftp from gatekeeper.dec.com [16.1.0.2]). A consequence
of this is that SCIX is currently only working on architectures that Scheme->C
works on. Today this is DECstations and VAXes. Ports of Scheme->C exist for
Sun3, Sun386 and Sparc, and SCIX is tested on the Sparc. SCIX itself and
Scheme->C should be rather easy to port. Most of the SCIX system is written
in standard Scheme (according to the R^3.99RS). A few low-level routines
are written in C. No programming libraries (like Xlib or Xt) are used to
generate SCIX, but some include files from the X distribution are.

N.B. As we use the extend-syntax macro mechanism (described in Dybvig: "The
Scheme Programming Language") which uses the symbol '... we had to make a
minor change in the Scheme->C reader. The patch (six lines of code) is
included in the file Schemetoc.patch and has to be applied to the Scheme->C
system before building the SCIX system. Please read the information at the
top of the patchfile before patching (always be careful when patching a
compiler...).

Before building the system two things must be configured:

1. If the machine isn't running X11R4 but rather DECwindows or some such
   one line in src/Makefile must be uncommented.

2. The byte-order must be specified by uncommenting the right line in
   src/Makefile. This is ugly but we have not had time to make it automatic.

An ordinary "make" here will result in the files "scix", "libscix.a" and
"libscixt.a" in this directory. "scix" is a Scheme interpreter with additional
routines to handle the interface to the X Window System and a number of demos.

The added functionality is primarily described in our report, the PostScript
source of which is available separately. The different demonstrations are
described in the README file in the demo directory and some of them in greater
depth in the report.

The files "libscix.a" and "libscixt.a" are archives of the functions that are
used if or when one want to compile stand alone applications. libscix.a is
fairly stable and provides functionality for the Scheme programmer roughly
comparable to somewhere between what  Xlib and the X Toolkit Intrinsics
provide for the C programmer.

libscixt.a contains the first stumbling steps of a widget library written
entirely in Scheme. Currently it only contains a finite state machine and
various buttons that were needed for the demonstrations. This toolkit is not
in any way finished, stable or even outlined right now.

The entire SCIX system was developed by us as the subject of our masters
thesis. The project was initiated, advised, and sponsored by Magnus Persson
at Digital Equipment AB, Sweden. Our advisor at KTH has been Joacim Halen.

Please let us know if you have any problems with this system or if you have
specific ideas on anything in it. Send all bugs and suggestions to

	scix@nada.kth.se

SCIX is not a product but we (and Magnus Persson at Digital) intend to
continue to support and develop SCIX in the future. We are particularly
interested in investigating widget design in Scheme and the associated
problems.

Hakan Huss and Johan Ihren
<huss@nada.kth.se> and <johani@nada.kth.se>

Department of Computing Science (NADA),
Royal Institute of Technology (KTH), Stockholm, Sweden
