
            SCIX -- A Scheme Interface to the X Window System


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

SCIX version 1.00 is unfortunately incompatible with the previous versions.
The object system has undergone a complete revision, which has affected
the interface. A list of differences between 1.00 and the previously released
0.97 version can be found in the file Changes in this distribution.

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 includes DECstations, VAXes, Sparcs, Sun3s and Sun386is and others.
We run SCIX on DECstations and Sparcs and others have successfully built it on
Sun3s. SCIX is probably a bit slow on a Sun3, though.  SCIX 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.

Before building the system two thing must be configured:

*  In the top-level Makefile, replace the /misc/projects/johani/scix-1.00
   in the definition of SCIXLOADPATH with the directory in which SCIX
   resides (probably the directory you currently are in).

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

A "make" in the scix-1.00 directory will result in the libraries "libscix.a",
"libstox.a" and "libdemo.a", and the executable "scix-1.00".

To try the built system and the demonstrations do something like this:

$./scix-1.00
SCIX version 1.00 (beta) -- Sun Sep 15 00:44:36 MET DST 1991
Scheme->C -- 28sep90jfb -- Copyright 1989 Digital Equipment Corporation
> (define dpy (xdisplay 'make ""))     ;; Create a display object
DPY
> (define scr (dpy 'defaultscreen))    ;; Send it a message to get a screen
SCR                                    ;; screen object (which is more useful).
> (scixdemo scr)		       ;; Start the demonstration
#F                                     ;; application(s).
>                                      ;; Yes, the procedure immediately
                                       ;; returns.

libscix.a contains all SCIX routines (i.e. everything directly related to 
the X Protocol plus quite a lot of stuff special to SCIX). This is quite
stable. libstox.a contains the toolkit routines (ie widgets like buttons,
labels, scrollbars and menus and some support routines for them). libdemo.a
contains the demonstration applications. The executable scix-1.00 is simply
these three libraries loaded into a Scheme interpreter.

The functionality added by SCIX 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. Note, however, that the report
describes version 0.97, and that it therefore is incorrect in its syntax
with respect to the object system.

The files "libscix.a" and "libstox.a" are archives of the functions that are
used if or when one wants 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.

libstox.a contains the first stumbling steps of a widget library written
entirely in Scheme. 

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
