jameson@calgary.UUCP (Kevin Jameson) (03/29/88)
The following is a list of most C files used in the MIT C Scheme
interpreter, along with a brief statement of function. Most of the
information is gleaned from the short comment at the beginning of each
file. This list gives a flavor of how the interpreter is organized,
and should help new readers of the code to find their way around.
Note that much (half?) of C Scheme is written in Scheme, and is not
listed here. The microcode interpreter files below actually
interpret many runtime functions which are written in Scheme (such
as the main read-eval-print loop). The Scheme runtime files + the
host interpreter below offer a complete system to the user.
Of course some of the information below may be wrong, though to
the best of my knowledge it is correct. Any mistakes are my own.
- Kevin Jameson, 28 March 88
..!{ihnp4,ubc-vision}!alberta!calgary!jameson
FILE Brief Function
============= ==================================================
scheme.h defs for the interpreter in interpre.c
config.h configuration file describes stk size,heap size, etc
const.h global named constants
fixobj.h format (offsets) of fixed object vector
extern.h extern machine and many other interface dcls
scode.h describes byte code format
sdata.h describes user data object formats
types.h list of object type codes TC_xxx
returns.h list of return codes used by interpreter RC_xxxx
errors.h list of error codes
prims.h list of ids and names (PC_xxx) for all system primitives
object.h defs & access macros for scheme objects
primitive.h macros for defining and handling primitives
boot.c main boot program for scheme interpreter
interpre.h macros for interpreter
zones.h time zones for performance metering
hooks.c hooks into the interp - apply,catch,throw, etc
storage.c prim, arg count tbls, global storage allocs
interpre.c byte code interp coded in continuation passing style
utils.c utils used by interpreter (backout_of_primitive,etc)
lookup.c symbol lookup and manipulation
usrdef.c table of external primitives produced by findprim
extern.c external primitives defined by user
findprim.c builds table of external prims from users files
nihil.c defines unimplemented primitives reqd by scheme
default.h unimplemented default hooks not def'd by user in config.h
cross.doc some doc on the cross syntaxer (byte code compiler)
readme.unx tells where things are in unix version
MATH CODE
generic.c mostly generic math funs for various numeric types
missing.c math utils which wouldn't fit anywhere else
mul.c portable fixnum multiplication
flonum.c floating pt funs, mostly superceded by generic.c
flonum.h defs for flonum.c
fixnum.c fixnum (24 bit) funs, mostly superceded by generic.c
bignum.c bignum arithmetic functions
bignum.h bignum arithmetic declarations
bitops.c extended bitops for infinite precision arithmetic
bitstr.c bitstring functions
DEBUGGING CODE
step.c support for the debugger stepper
xdebug.c useful prims for scheme memory prim debugging
bkpt.c debugger breakpoint functions
bkpt.h debugger breakpoint definitions, macros
debug.c printing and listing functions used by debugger
GARBAGE COLLECTOR
purify.c much like gc, only purifies (whatever that is) instead
daemon.c two gc daemons (obj hash tbl & file closer)
gc.h macros for all gc code (and maybe others)
gccode.h macros for code which does gc-like loops
gcloop.c low level gc stuff
gctype.c maps type codes into gc object type codes
PRIMITIVE FUNCTIONS
fetchpar.c makes implementation parms available to scheme
file.c file i/o primitive scheme functions
hunk.c funs to handle triplet hunk3's for file blocks
io.c scheme io primitives, channel grabbing, etc
list.c list manipulation functions (memq, cons, car, etc)
prim.c primitives which won't fit elsewhere
string.c string primitives, cv strings to/from lists
vector.c vector handling and conversion (to lists) code
FASTLOADER (FASL) FUNCTIONS
translate.h macros for psbtobin, bintopsb (psb=portable scheme binary)
schloader.c standalone prog to load a dumped scheme core?
load.c common code for reading fasl files
bintopsb.c converts fasl files to portable ascii
breakup.c used for fasl conversion?
ppband.c pretty prints fasl files in human format
psbtobin.c converts portable ascii files to fasl format
dump.c common code for dumping fasl files
dumpworld.c core save routine, calls gnu unexec
fasdump.c holds fasdump, fasload, and bandload functions
fasl.h defs for fasl file format
fasload.c reads fasl files, relocates and interns symbols
SCHEME CODE (not related to the Scheme runtime stuff)
chapter1.code from Structure and Interpretation of Computer Programs
chapter2.code from SICP (Abelson & Sussman)
chapter3.code from SICP
chapter4.code from SICP
chapter5.code from SICP
MISCELLANEOUS
ChangeLog only two entries
install main installation notes
Install.unx unix installation notes
Install.vms vms installation notes
Makefile main makefile
Makefile.200 for the 200 series of some machine
Makefile.500 for the 500 series of some machine
Makefile.ind for some other operating system
Makefile.unk for an unknown operating system
Makefile.vax for vax
Readme.vms tells where things are in vms version
TO_DO a wish list
UPGRADE diffs between CScheme release 3 and 4
Wsize.c tests out compiler/machine for bit & math ops
athena.c athena graphics primitives for special terminals
bobcat.c bobcat graphics interface for starbase package
config.dst same as config.h
locks.h for locking heap, etc
os.c selects appropriate operating system file for build
process.c utils to fork inferior processes in unix
regblock.c defines registers used by compiler
unexec.c from gnu-emacs. dumps core on unix systems
unix.c unix specific prims (completed version of unknown.c)
unknown.c os specific blank prim stubs for unknown op system
valret.c emulates ITS valret on a unix system
vms.c vms specific prims (completed version of unknown.c)
vmsall.com vms batch file for compilation
<several other vms batch files have been omitted>
SPECIAL CODE (to handle Scheme language features)
future.c support code for futures
futures.h macros for futures code
history.h defines history data structures
intercom.c single process simulation of futures stuffjameson@calgary.UUCP (Kevin Jameson) (04/02/88)
The following is a list (part 2 of 2) of most Scheme files used in the
MIT C Scheme interpreter circa verson 4.1, along with a brief statement
of their function. Most of the information has been gleaned
gleaned from the short comment at the beginning of each
file. This list gives a flavor of how the interpreter is organized,
and should help new readers of the code to find their way around.
Note that much (half?) of C Scheme is written in C, and is not
listed here. The list of C files (part 1 of 2) for the microcode
interpreter was posted earlier.
I know now that the earlier posting of C files contained minor errors,
and at the very least is somewhat out of date (my version is 4.1,
vs. the current version of 6.2.0). (No doubt the same two facts will
hold for this file too, but it's a start...) Any mistakes are my own.
- Kevin Jameson, 31 March 88
..!{ihnp4,ubc-vision}!alberta!calgary!jameson
FILE Brief Function
============= ==================================================
SCHEME SYSTEM TYPES
xbuild.scm build a cross syntaxer system
abuild.scm build a system for athena
ubuild.scm build a unix interface scheme system
sbuildmd.scm build a student (MIT 6.001 course) scheme system
studentmd.scm env,syntax,& read tbl mods for 6.001 students
featmd.scm std features scheme system
INTERPRETER
error.scm rep (read-eval-print) interface,error defs,definers,handlers
parse.scm scheme parser for The REP Reader (ch class tbls,macros,atoms)
print.scm The REP (read-eval-print) Printer
read.scm The REP Reader (tyi/eof/input streams,with-input-from-file)
rep.scm the read-eval-print loop,history,and history access funs
repuse.scm REP user interface (prompts, drivers, proceeds)
CROSS SYNTAXER (the byte code (scode) compiler)
syntax.scm the Cross Syntaxer (byte code (scode) generator/compiler)
scan.scm definition scanner reduces n of "real auxilary" vars in env
xconv.scm convert declarations into integrations
xpatch.scm special lambda interface
xsubst.scm integration of primitives (merger, dispatcher)
unsyn.scm unsyntaxer converts scode back to sexprs
MISC DEFINITIONS and Data Type Stuff
adapt.scm compatability defs (true/#!true,nil/'(),list*/cons*)
crock.scm defs of special obj types (state & syntax tables, type obj)
stypes.scm scode type setup (TC's: symbols,conditions,proctypes,etc)
scode.scm scode grab bag (consts,many predicates for data types)
sdata.scm abstract data field funs(ctl pts,set!s,refs,pairs,vects,etc)
types.scm abstract typing funs (supremum/infimums?,lattice theory stuff)
ustruc.scm microstruc? (follows scode abstraction in boot sequence)
utabmd.scm ucode type tables (fixed,types,returns,prims,externs,errors)
utabs.scm ucode tbl intrfc (fixed obj vec,type detection,TC,RC,TERMC..)
PRIMITIVES
bitvec.scm 1 bit vector ops (cons,set,size,ref,1b? predicates)
char.scm character defs, bit tables, charscan table generator funs
equals.scm many equality funs (eqv?,equal?,etc)
explode.scm maclisp style printname utils (explode,implode,readch,ascii)
format.scm output string formatters, format dispatch table
gensym.scm uninterned symbol generator
gprims.scm global primitives list (defs funs in global env for compiler)
hash.scm object hashing, unhashing, population functions
io.scm primitive io utils (channel stuff, files vector/locks,hunk3s)
list.scm lisp ops (cons,pair?,length,cxr,mappers,assocs,members,etc)
load.scm program loading
lambda.scm lambda abstraction (lambda,lexpr,extended-lambda)
narith.scm scheme math funs (+,-,trigs,floats,polys,min/max,etc)
oldio.scm old io procedure names (channel io stuff)
pathnm.scm pathname utils (make,drive,directroy,type,conversion funs)
primlist.scm primitive list ops (cons,memq,assoc,cxr,etc)
scomb.scm scode combinator abstractions
stream.scm stream utilities (append,filter,accumulate,merge,etc)
string.scm character string ops
strmac.scm stream macros
uio.scm useful file io funs (read,copy,rn,dl,exists?)
unpars.scm unparsers for converting objects to string representations
vector.scm vector ops (make,copy,vector references..)
xlist.scm extended list ops (mapcan,mapcan*,or,and)
PACKAGES
advice.scm tools to advise funs (trace,break,other advice wrappers)
pp.scm scheme pretty printer
rrrs.scm revised report on Scheme compatability defs,macro definers
wind.scm state space world model (state pts,dynamic wind,protectors..)
DEBUGGER
comand.scm debugger command loop support
debug.scm scm level debugger w/ display,history,motion,continuation cmds
stackp.scm scheme control stack parser for debugger
where.scm the environment inspector(show,show-frame,print bindings...)
xdebug.scm debugging primitives
SYSTEM
boot.scm bootload utils, run after coldmd. defs of global primitve funs
datime.scm date time utils
events.scm event distribution system
file.scm file package (catalog,floppy,volumn,directory,misc funs)
gc.scm scheme garbage collector, gc-daemon list, suspension funs
gcstat.scm garbage collector meters, history modes, etc
history.scm history manipulation (backbone & ribs, push/pop history, etc)
intrpt.scm interrupt system (timers,keyboard ints,default handlers)
link.scm links compiled byte code ?
photo.scm ? takes an internal photo or something (whatever that is)
sysclk.scm system clock utils (set,read,interval calculations)
system.scm system funs (world dumpers,disk savers)
world.scm world ops (save, disk restore, quit, exit..)
MACHINE DEPENDENT (md)
implmd.scm defs for implementation dependencies (mostly whtspc ch codes)
spmd.scm control stack/control point funs
xusermd.scm cross syntaxer user interface (pathname and string funs)
coldmd.scm first scm code runs early, builds obarray, fixed obj vector
runmd.scm loads compiled code for runtime system
MISCELLANEOUS
bgraph.scm bobcat (starbase) graphics interface
emacs.scm emacs interface to scheme system
future.scm part of butterfly basic band load (atom macros)
graphics.scm graphics system interface (draw-line,line styles, etc)
process.scm interface to unix primitives (signal,spawn,wait,pause,etc)
qsort.scm a scheme quicksort
sample.scm shows how microcode C funs are linked into scheme
unix.scm unix scheme interface (cwd,mkdir,kill-eol,getenv,etc)
6.001 Course
login.scm student login/logout utils
logout.scm student logout utils (resets 6.001 student environment)
namelist.scm machine names for 6.001 lab
EXAMPLES
chapter1.cod Scheme code from text by Abelson & Sussman,
chapter2.cod Structure and Interpretation of Computer Programs
chapter3.cod
chapter5.cod
chapter4.cod
PROBLEM SETS (mostly related to SICP)
adventure.scm a game
compiler.scm simple scheme compiler (see Struc & Interp of Comp Progms)
eceval.scm explicit control evaluator (see SICP)
ecevsyn.scm expr & env defs used by explicit ctl eval (see SICP)
regsim.scm register machine simulator (see SICP)
ps4.scm huffman encoding funs
ps5.scm basic generic math funs (ints,polys,rationals, see SICP)
ps6.scm imaginary world defs (deans,trolls,etc)
ps7.scm stream utils
ps8eval.scm evaluator funs for explicit ctl evaluator (see SICP)
ps8mods.scm environment, binding utils (see SICP)
ps8putget.scm put/get procs (see SICP)
ps9data.scm database for query language interpreter (see SICP)
ps9query.scm query language interpreter (see SICP)
ps10load.scm program loader