0.	BACKGROUND AND ACKNOWLEDGEMENTS

 

1  	A Brief History of Interlisp

Interlisp began with an implementation of the Lisp programming language for the PDP-1 at Bolt, Beranek and Newman in 1966.  It was followed in 1967 by 940 Lisp, an upward compatible implementation for the SDS-940 computer.  940 Lisp was the first Lisp system to demonstrate the feasibility of using software paging techniques and a large virtual memory in conjunction with a list-processing system [Bobrow & Murphy, 1967].  940 Lisp was patterned after the Lisp 1.5 implementation for CTSS at MIT, with several new facilities added to take advantage of its timeshared, on-line environment. DWIM, the Do-What-I-Mean error correction facility, was introduced into this system in 1968 by Warren Teitelman [Teitelman, 1969].
The SDS-940 computer was soon outgrown, and in 1970 BBN-Lisp, an upward compatible Lisp system for the PDP-10, was implemented under the Tenex operating system.  With the hardware paging and 256K of virtual memory provided by Tenex, it was practical to provide more extensive and sophisticated user support facilities, and a library of such facilities began to evolve.  In 1972, the name of the system was changed to Interlisp, and its development became a joint effort of the Xerox Palo Alto Research Center and Bolt, Beranek and Newman.  The next few years saw a period of rapid growth and development of the language, the system and the user support facilities, including the record package, the file package, and Masterscope.  This growth was paralleled by a corresponding increase in the size and diversity of the Interlisp user community.
In 1974, an implementation of Interlisp was begun for the Xerox Alto, an experimental microprogrammed personal computer [Thacker et al., 1979].  AltoLisp [Deutsch, 1973] introduced the idea of providing a specialized, microcoded instruction set that modelled the basic operations of Lisp more closely than a general-purpose instruction set could -- and as such was the first true "Lisp machine".  AltoLisp also served as a departure point for Interlisp-D, the implementation of Interlisp for the Xerox 1100 Series of single-user computers, which was begun in 1979 [Sheil & Masinter, 1983].
In 1976, partially as a result of the AltoLisp effort, a specification for the Interlisp "virtual machine" was published [Moore, 1976].  This attempted to specify a small set of "primitive" operations which would support all of the higher level user facilities, which were nearly all written in Lisp.  Although incomplete and written at a level which preserved too many of the details of the Tenex operating system, this document proved to be a watershed in the development of Interlisp, since it gave a clear definition of a (relatively) small kernel whose implementation would suffice to port Interlisp to a new environment.  This was decisive in enabling the subsequent implementations and preserving the considerable investment that had been made in developing Interlisp's sophisticated user programming tools.  
Most recently, the implementation of Interlisp on personal workstations (such as Interlisp-D) has extended Interlisp in major ways.  Most striking has been the incorporation of interactive graphics and local area network facilities.  Not only have these extensions expanded the range of applications for which Interlisp is being used (to include interactive interface design, network protocol experimentation and the development of specialized workstations, among others) but the personal machine capabilities have had a major impact on the Interlisp programming system itself.  Whereas the original Interlisp user interface assumed a very limited (teletype) channel to the user, the use of interactive graphics and the "mouse" pointing device has radically expanded the bandwidth of communication between the user and the machine.  This has enabled completely new styles of interaction with the user (e.g., the use of multiple windows to provide several different interaction channels with the user) and these have provided both new programming tools and new ways of viewing and using the existing ones.  In addition, the increased use of local area networks (such as the Ethernet) has expanded the horizon of the Interlisp user beyond the local machine to a whole community of machines, processes and services.  Large portions of this manual are devoted to documenting the enhanced environment that has resulted from these developments.

2  	Interlisp Implementations

Development of Interlisp-10 was, until approximately 1978, funded by the Advanced Research Projects Administration of the Department of Defence (DARPA).  Subsequent developments, which have emphasized the personal workstation facilities, have been sponsored by the Xerox Corporation, with some contributions from members of the Interlisp user community.
Interlisp is currently implemented on a number of different machines.  Each distinct Interlisp implementation is denoted by a suffix: Interlisp-10 is the implementation for the DEC PDP-10 family of machines running either the TENEX or TOPS-20 operating systems.  Interlisp-D is the implementation for the Xerox 1100 series of machines (1100, 1108, 1132).  Interlisp-VAX is the implementation for the DEC VAX family, under either the VMS or UNIX operating systems.  Interlisp-Jericho is the implementation for the BBN Jericho, a internal research computer built by Bolt, Beranek and Newman.  Other implementations of Interlisp have been reported (e.g. Interlisp-370, Interlisp-B5700), but are not widely used or actively maintained.
This manual is a reference manual for the Interlisp-D implementation of Interlisp.  Notes may be included when features are not available in other implementations, but there is no guarantee that this information is complete for implementations other than Interlisp-D.  For some implementations, there is a "Users Guide" which documents features which are completely unique to that machine; for example, how to turn on the system, logging on, and unique facilities which link Interlisp to the host environment or operating system.

3  	Acknowledgements

The Interlisp system is the work of many people -- after nearly twenty years, too many even to list, much less detail their contributions.  Nevertheless, some individuals cannot go unacknowledged:
Warren Teitelman, more than anyone else, made Interlisp "happen".  Warren designed and implemented large parts of several generations of Interlisp, including the initial versions of most of the user facilities, coordinated the system development and assembled and edited the first four editions of the Interlisp reference manual. 
Dan Bobrow was a principal designer of Interlisp's predecessors, has contributed to the implementation of several generations of Interlisp, and (in collaboration with others) made major advances in the underlying architecture, including the spaghetti stack, the transaction garbage collector, and the block compiler.
Larry Masinter is the principal architect of the current Interlisp system, has contributed extensively to several implementations, and has designed and developed major extensions to both the Interlisp language and the programming environment.
Ron Kaplan has decisively shaped many of the programming language extensions and user facilities of Interlisp, has played a key role in two implementations and has contributed extensively to the design and content of the Interlisp reference manual.
Peter Deutsch designed the AltoLisp implementation of Interlisp which developed several key design insights on which the current generation of personal machine implementations depend.
Alice Hartley and Daryle Lewis were key contributors to implementations of Interlisp at Bolt, Beranek and Newmann.
No matter where one ends this list, one is tempted to continue.  Many others who contributed to particular implementations or revisions are acknowledged in the documentation for those systems.  Following that tradition, this manual, which was prepared primarily to document the extensions implemented by the Interlisp-D group at Xerox, Palo Alto, acknowledges, in addition to those listed above, the work of:
Dick Burton who designed and implemented most of the interactive display facilities
Bill van Melle who designed and implemented the local area network facilities and multiple process extensions
and the contributions of Beau Sheil, Alan Bell, Steve Purcell, Steve Gadol, Jonl White, Don Charnley, Willie Sue Haugeland and the many others who have helped and contributed to the development of Interlisp-D.    
Like Interlisp itself, the Interlisp Reference Manual is the work of many people, some of whom are acknowledged above.  This edition was designed, edited and produced by Michael Sannella of the Interlisp-D group at Xerox, Palo Alto.  It is a substantial revision of the previous edition [Teitelman et al., 1978] --- it has been completely reorganized, updated in most sections, and extended with a large amount of new material.  In addition to material taken from the previous edition, this edition contains major extensions contributed by members of the Interlisp-D group and contributions from other Interlisp developers at the Information Sciences Institute of the University of Southern California and Bolt Beranek and Newman.
Interlisp is not designed by a formal committee.  It grows and changes in response to the needs of those who use it.  Contributions and discussion from the user community remain, as they have always been, warmly welcome.

4  	References

	[Bobrow & Murphy, 1967]	Bobrow, D.G., and Murphy, D.L.,  "The Structure of a LISP System Using Two Level Storage" --- Communications of the ACM, Vol. 10, 3, (March, 1967).
	[Bobrow & Wegbreit, 1973]	Bobrow, D.G., and Wegbreit, B.,  "A Model and Stack Implementation for Multiple Environments" --- Communications of the ACM, Vol. 16, 10, (October 1973).
	[Deutsch, 1973]	Deutsch, L.P.,  "A Lisp machine with very compact programs" --- Proceedings of the Third International Joint Conference on Artificial Intelligence, Stanford, (1973).
	[Moore, 1976]	Moore, J.S.,  "The Interlisp Virtual Machine Specification" --- Xerox PARC, CSL-76-5, (1976).
	[Sheil & Masinter, 1983]	Sheil, B., and Masinter, L.M. (eds.),  "Papers on Interlisp-D" --- Xerox PARC, CIS-5 (Revised), (1983).
	[Teitelman, 1969]	Teitelman, W.,  "Toward a Programming Laboratory" --- Proceedings of the International Joint Conference on Artificial Intelligence, Washington, (1969).
	[Teitelman, et al., 1972]	Teitelman, W., Bobrow, D.G., Hartley, A.K. Murphy, D.L.,  BBN-LISP TENEX Reference Manual --- Bolt Beranek and Newman, (July 1971, first revision February 1972, second revision August 1972).
	[Teitelman, et al., 1978]	Teitelman, W., et al., The Interlisp Reference Manual --- Xerox PARC, (October 1978).
	[Thacker, et al., 1979]	Thacker, C., Lampson, B., and Sproull, R.,  "Alto: A personal computer" --- Xerox PARC,CSL-79-11, (August, 1979).

Copyright (c) 1985 Xerox Corporation.  All rights reserved.