DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ R T

⟦b45227ef3⟧ TextFile

    Length: 5936 (0x1730)
    Types: TextFile
    Names: »Readme.unx«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/gnu-31mar87/scheme/Readme.unx« 

TextFile

Some information on the implementation of Scheme and where things are.
Unix version.

Scheme consists of two parts, the "microcode" and the runtime system:

- The microcode is the part implemented in C, and consists of the
virtual machine (interpreter) and the primitives plus support
routines.  

- The runtime system is written in Scheme and contains the
read-eval-print loop and some debugging and programming tools.  There
are many possible runtime systems and 3 are generated when Scheme is
installed.  The various runtime systems live in the bin subdirectory
of the Scheme hierarchy.  The runtime systems generated are:

o The bare system, which contains only the support for the
read-eval-print loop.  It lives in bare.bin .

o The normal development system which is the one we (the development
group at MIT) use.  It lives in normal.bin .

o The student system which is used for MIT course 6.001 (Structure
and interpretation of Computer Programs, text by Abelson, Sussman,
and Sussman), a simpler to use but somewhat restricted version of the
development system.  It lives in scheme.bin and is the default.

To change the default to the development system , connect (cd) to the
bin subdirectory, rename (mv) scheme.bin to student.bin and normal.bin
to scheme.bin.

Description of the Scheme directory hierarchy:

Assume in the following that /scheme is the Scheme root directory (tar
will probably leave it as dist in the current directory).

/scheme/microcode contains the C sources and object code for the
microcode.  It also contains some utility programs.  In particular, 
it contains Psbtobin, which is the program used to convert between
portable format Scheme binaries, and internal format Scheme binaries
(see /scheme/psb below).

/scheme/scm contains the scheme sources for the runtime system.

/scheme/bin contains the binary ("fasloadable") versions of the files
in /scheme/scm, and the generated runtime systems.  The release tape
contains an empty bin directory, but the installation procedure
creates these files from the psb directory (see below).

/scheme/psb contains the portable version of the scheme runtime
binaries.  These are the same as the files in bin but in a portable
format independent of character set, machine word size, byte order,
and more easily used over serial lines.

/scheme also contains some utilities.  Schloader.c is a program you
may want to install as default instead of Scheme.  It looks in a file
to obtain the band file name (runtime system) and the microcode file
name, and then invokes the microcode on this band.  Edit it to specify
where to look for this information file, and edit scheme_version to
contain the correct filenames.  Band.scm is a scheme source used to
generate the runtime systems.

Some Interesting mods

1) New primitives

a) Write C procedures which will work as Scheme primitives (see the
file microcode/prims.h for more information).  For an example see
microcode/sample.c or microcode/xdebug.c .

b) Change the makefile in the microcode directory so that the Scheme
system will know about the new primitive files: change the
PRIM_SOURCES and PRIM_OBJECTS make macros to be lists with all the
relevant files.

c) Do "make scheme" in the microcode directory.  If there are no
compilation errors, a new Scheme microcode will be linked.

d) Once the microcode has been generated (step b above), load up a
Scheme, where the primitives can be obtained by using
MAKE-PRIMITIVE-PROCEDURE:

(MAKE-PRIMITIVE-PROCEDURE <symbol>) will return a procedure object
corresponding to a primitive named <symbol>, if there is one.  It can
then be used like any other procedure.  For examples, see the file
sample.scm in the scm directory.

2) Executable scheme

When scheme starts up it loads a band (a "linked" runtime system is
called a band for historical reasons).  This may be an unreasonably
slow process, so you may want to circumvent it by dumping a Scheme
which has the runtime system already loaded (as described below).

The mechanism implementing this uses unexec.c, a file from GNU-EMACS.
It is heavily conditionalized for various machines and operating
systems, but we have only tried it on two configurations (VAX/BSD 4.2,
and HP9000s300/HPUX).  If you have GNU-EMACS on your machine, and it
dumps an executable image, you should be able to make this work.  Look
at microcode/dumpworld.c and microcode/unexec.c. It is implemented
using the optional primitive mechanism (see 1 above).

To obtain a version of scheme which can make an executable dump of
itself, add dumpworld.c and dumpworld.o to the PRIM... lines of the
makefile as specified above.  Link a new Scheme microcode.  Once this
is done, start scheme (with a normal system, instead of a student
system) and, at scheme, type (dump-world "xscheme") This will make a
file called xscheme which when executed will start a scheme with a
normal runtime system already loaded.  You may want to make this the
default scheme that users get when they type scheme.

Note: If you write primitives (or other modifications that you feel
other people might be interested in (dumpworld.c for other systems,
for example)), please send them to us so that we can include them in a
later release.

3) Scheme compiler

The compiler exists only for Vaxes running BSD4.2, is experimental,
very unreliable, and hard to use.  We will document how to generate a
system with it and how to use it when it stabilizes (next release,
hopefully).  We do not distribute this compiler as part of the
release.

For bug reports send computer mail to

BUG-CSCHEME%MIT-OZ@MIT-MC (on the Arpanet)

or US Snail to

Scheme Team
c/o Prof. Hal Abelson
545 Technology Sq. rm 410
Cambridge MA 02139

Other related mailing lists:

INFO-CSCHEME%MIT-OZ@MIT-MC
	Questions, notices of bug fixes, etc.
	Send mail to INFO-CSCHEME-REQUEST to be added.
SCHEME@MIT-MC
	Applications, mostly for educational uses.
	Send mail to SCHEME-REQUEST to be added.