L. Peter Deutsch developed PDP-1 LISP at M.I.T.:
"I wrote PDP-1 Lisp because I had a strong mathematical bent, I'd become intrigued with the Lisp language as a result of having somehow picked up a copy of the original Lisp 1.5 Programmer's Manual at MIT, and I wanted to have an interactive Lisp implementation to play with rather than having to submit card decks at the M.I.T. Computation Center. (Bear in mind that I was in high school at the time -- 1960-1964.) I'd ingratiated myself with the folks at the TX-0 (and later PDP-1) lab at M.I.T., so I had pretty free access to the machine there." [L. Peter Deutsch, quoted in lisp_doc.txt accompanying Bob Supnik's Software Kit]
- L. Peter Deutsch and Edmund C. Berkeley. The LISP Implementation for the PDP-1 Computer. March 1964, pages 326-375 in Berkeley and Bobrow. PDF
- Anonymous. LISP. Memo PDP-36, Electrical Engineering Department, Massachusetts Institute of Technology, May 20, 1966, 59 pages. PDF at bitsavers.org
- A machine-readable version has been recreated from the book, and made to run on Bob Supnik's SIMH PDP-1 simulator -- see http://simh.trailing-edge.com/software.html .
- Another online simulator written in Java -- see http://lcs.www.media.mit.edu/groups/el/projects/pdp1/ .
Describes Basic PDP-1 LISP in detail, including full PDP-1 assembly language source code.
Documentation and listing.
- L. Peter Deutsch. PDP-1 Lisp. Research Laboratory for Electronics, Massachusetts Institute of Technology, 4 pages. PDF at bitsavers.org
"A program has been written for the PDP-1 providing a subset of the features of the LISP interpreter for the IBM 709/7090. This program, which contains no known bugs, will run on any PDP-1 with automatic divide. On machines with more than 4K of memory, it must be run in memory field 0.
It is assumed that the reader is familiar with 709 LISP in general and with the LISP 1.5 Programmer's Manual in particular."
- P. Deutsch. Preliminary Guide to the LISP Editor. Project Genie Document W-21, University of California, Berkeley, April 18, 1967. PDF
"The editor described here is implemented within the PDP-l and SDS 940 time-sharing LISP systems, but can be used with minor changes within any LISP system which includes the capabilities of LISP 1.5. It was begun by the author in 1965 and later extended by Bobrow and Teitelman at BBN."
- L. Peter Deutsch and Butler W. Lampson. 930 LISP Reference Manual. Project Genie Document 30.50.40, University of California, Berkeley, revised November 16, 1965. PDF at bitsavers.org
The first LISP at Bolt Beranek and Newman Inc. was influenced by L. Peter Deutsch's Basic PDP-1 LISP:
"... my PDP-1 Lisp implementation, as you probably know, was extensively rewritten at BB&N to become the conceptual predecessor of BBN-Lisp, which in turn engendered Interlisp" [L. Peter Deutsch, quoted in lisp_doc.txt accompanying Bob Supnik's Software Kit]
"Bobrow and Murphy started with the LISP 1.5 definition and looked at Deutsch's code for the PDP-1b, but their implementation had a completely new code base for what they called BBN-LISP.[Bobrow et al. February 1966] Murphy says,
`. . . one of the things we did was build a timesharing LISP system on the PDP-1 — that is, a multi-user system for which the primary (and only) interface language was LISP. It was both the command language and the programming language, a la JOSS and such systems of that day.'
In their PDP-1b implementation of LISP, Bobrow and Murphy grappled with issues of supporting a large LISP memory on a machine with a small physical memory.[Bobrow and Murphy 1967] In particular, Murphy implemented a software-based virtual memory and demand paging system[Dan Murphy in Origins and Development of TOPS-20] within his LISP implementation, and Bobrow and Murphy studied its performance.[Bobrow and Murphy 1968]"
[Walden and Nickerson, A Culture of Innovation: Insider Accounts of Computing and Life at BBN, 2011]
- Dan Murphy had an extensive archive of old sources for BBN LISP (and many other things including TENEX, TELCOMP, and TECO), but the disk pack containing them fell victim to an overzealous sysadmin in 1987. He still has a set of files in LISP and PDP-10 assembly language. [Personal communication to Paul McJones, 10 March 2005.]
- Section 4 of Bobrow et al. 1966 below gives the source code for all the standard functions implemented in LISP.
- Daniel G. Bobrow, D. Lucille Darley, Daniel L. Murphy, Cynthia Solomon, and
Warren Teitelman. The BBN-LISP System. Scientific Report No. 1., Project No.
8668, Contract No. AF19(628)-5065, BBN Report 1346, Bolt, Beranek and Newman Inc., Cambridge,
Massachusetts, February 1966, 82 pages.
This report describes the LISP system for a PDP-1 with 8392 18-bit words of 5 microsecond core memory and 92,312 words on a drum with an average access time of 16.5 milliseconds. It describes the internal structure including paging and binding techniques. Section III defines all the standard functions; Section IV gives the source code of all the standard functions implemented in LISP.
- D. G. Bobrow and W. Teitelman. Format-Directed List Processing in LISP, BBN Report 1366, April 1, 1966. PDF at dtic.mil
- Daniel G. Bobrow [and Daniel L. Murphy]. Preliminary Specification for BBN 940 LISP. [Bolt., Beranek and Newman Inc.,] October 13, 1966, 16 pages. PDF
- Daniel G. Bobrow, D. Lucille Darley, L. Peter Deutsch, Daniel L. Murphy, and Warren Teitelman. The BBN 940 LISP System. Scientific Report No. 9, Bolt Beranek and Newman Inc., July 15, 1967. PDF
"This report describes the LISP system implemented at BBN on the SDS 940 Computer. This LISP is an upward compatible extension of LISP 1.5 for the IBM 7090, with a number of new features which make it work well as an on-line language. These new features include tracing, and conditional breakpoints in functions for debugging and a sophisticated LISP oriented editor. The BBN 940 LISP SYSTEM has a large memory store (approximately 50,000 free words) utilizing special paging techniques for a drum to provide reasonable computation times. The system includes both an interpreter, a fully compatible compiler, and an assembly language facility for inserting machine code subroutines."
- W. Teitelman. Design and Implementation of FLIP, a LISP Format Directed List Processor, BBN Report 1495, July 1, 1967. PDF
- D. G. Bobrow, D. L. Murphy, and W. Teitelman. The BBN-LISP System : Reference Manual. Bolt Beranek and Newman Inc., April 1969. Computer History Museum: gift of Johns F. ("Jeff") Rulifson, Lot X6502.2012. PDF at bitsavers.org
"This document describes the BBN-LISP system currently implemented on the SDS 940."
- W. Teitelman, D. G. Bobrow, A. K. Hartley, and D. L. Murphy. BBN-LISP : TENEX Reference Manual. Bolt, Beranek and Newman Inc., Cambridge, Massachusetts, July 1971. Computer History Museum: gift of Larry Masinter, Lot X6058.2011. PDF
- W. Teitelman, D. G. Bobrow, A. K. Hartley, and D. L. Murphy. BBN-LISP : TENEX Reference Manual. Bolt, Beranek and Newman Inc., Cambridge, Massachusetts, first revision, February 1972.
- W. Teitelman, D. G. Bobrow, A. K. Hartley, and D. L. Murphy. BBN-LISP : TENEX Reference Manual. Bolt, Beranek and Newman Inc., Cambridge, Massachusetts, second revision, August 1972. PDF at bitsavers.org
- Daniel G. Bobrow and Daniel L. Murphy. Structure of a LISP system using
two-level storage. Communications of the ACM, Volume 10, Issue 3,
March 1967, pages 155-159.
"Abstract: In an ideal list-processing system there would be enough core memory to contain all the data and programs. Described in this paper are a number of techniques that have been used to build a LISP system utilizing a drum for its principal storage medium, with a surprisingly low time penalty for use of this slow storage device. The techniques include careful segmentation of system programs, allocation of virtual memory to allow address arithmetic for type determination, and a special algorithm for building reasonably linearized lists. A scheme for binding variables is described which is good in this environment and allows for complete compatibility between compiled and interpreted programs with no special declarations."
Describes BBN LISP on a Digital Equipment Corporation PDP-1 with a core memory of 16K 18-bit words (5 microseconds access time) and a drum memory of 88K words (17 milliseconds average access time).
- Daniel G. Bobrow and Daniel L. Murphy. A note on the efficiency of a
LISP computation in a paged machine. Communications of the ACM,
Volume 11 , Issue 8, August 1968, pages 558, 560.
"Abstract: The problem of the use of two levels of storage for programs is explored in the context of a LISP system which uses core memory as a buffer for a large virtual memory stored on a drum. Details of timing are given for one particular problem."
Discusses BBN LISP on the SDS 940, which had 16K of 24-bit core memory and 1M words of drum memory (17 milliseconds average access time).
- Dan Murphy. TENEX and TOPS-20 Papers.
Online at www.opost.com/dlm/tenex
TENEX and TOPS-20 were popular operating systems for running LISP. See especially Origins and Development of TOPS-20 for extensive background on the PDP-6, PDP-10, LISP, and more.
See also: Interlisp-D.
- Thomas C. Rindfleisch, archivist. System dumps, SUMEX-AIM.
Rindfleish notes: "This version of Interlisp should be both TENEX and TOPS20 compatible. It came at a time when lots of work was going on to port Interlisp to other environments, including the VAX and the new personal Lisp machines (Dolphins, etc.). This means little was changing in the TENEX/TOPS20 version." Rindfleisch also has tape images containing various .sav files created from these files.
- Partial contents of <lisp> directory from a system dump, January 31, 1982. .zip
- Contents of <lisp> directory from final full dump, February 25, 1983. Also contains lisp.mac.829 from the <lisp> directory from the January 31, 1982 dump. .zip
- Contents of <lispusers> directory from final full dump, February 25, 1983. .zip
- Contents of <helpsys> directory from final full dump, February 25, 1983. .zip
- SDF Public Access UNIX System, archivist. Contents of TWENEX.ORG Interlisp directories, retrieved by Larry Masinter, August 18, 2006.
Masinter notes: "The TWENEX files seem to have come from Sumex, or at least, there are a lot of sumex-specific files there. The file dates are 1984, the latest seems to be 7-Dec-84. I used 'type a' FTP for the source files and 'type I' retrieval for the binary files, since the PDP-10 is a 9-bit-byte / 36-bit-word machine."
- Warren Teitelman. INTERLISP Reference Manual. Xerox Palo Alto
Research Center, Palo Alto, California, December 1973.
PDF at bitsavers.org
"Acknowledgements and Background: INTERLISP (formerly BBN LISP) has evolved from a succession of LISP systems that began with a LISP designed and implemented for the DEC PDP-1 by D.G. Bobrow and D.L. Murphy at Bolt, Beranek and Newman in 1966, and documented by D.G. Bobrow. An upwards compatible version of this LISP was implemented for the SDS 940 in 1967, by Bobrow and Murphy. This system contained the seeds for many of the capabilities and features of the current system: a compatible compiler and interpreter, uniform error handling, an on-line LISP oriented editor, sophisticated debugging facilities, etc. 940 LISP was also 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. DWIM, the Do-What-I-Mean error correction facility, was introduced into the system in 1968 by W. Teitelman, who was also responsible for documentation for the 940 LISP system. ..."
- Warren Teitelman et al. INTERLISP Reference Manual. Xerox Palo Alto Research Center, Palo Alto, California, first revision, October 1974.
- P. Deutsch. Display primitives in Lisp. Computer Science Laboratory, Palo Alto Research Center, Xerox Corporation, November 18, 1974. PDF at bitsavers.org
- Anonymous. INTERLISP/360 and 370 Reference Manual. Uppsala Datacentral, Sweden, 1974.
- P. Deutsch. Status report on Alto Lisp. Computer Science Laboratory, Palo Alto Research Center, Xerox Corporation, May 14, 1975. PDF at bitsavers.org
- Warren Teitelman et al. INTERLISP Reference Manual. Xerox Palo Alto Research Center, Palo Alto, California, second revision, December 1975.
- Anders Haraldsson. LISP - details : INTERLISP/360-370. Datacentral, Department of Computer Science, Uppsala University, 1975.
- J. Strother Moore II. The INTERLISP Virtual Machine Specification. Technical
Report CSL 76-5, Xerox Palo Alto Research Center.
- September 1976, 131 pages. PDF at bitsavers.org
- Revised March 1979, 126 pages. PDF at cs.utexas.edu
"In order to implement the INTERLISP System (as described in The INTERLISP Reference Manual by W. Teitelman, et al.) on some physical machine, it is only necessary to implement the INTERLISP Virtual Machine, since Virtual Machine compatible source code for the rest of the INTERLISP System can be obtained from publicly available files."
- Robert F. Sproull. InterLisp Display Primitives. Palo Alto Research Center, Xerox Corporation, July 1977. PDF at bitsavers.org
"This report describes briefly a set of display primitives that we have developed at PARC to extend the capabilities of InterLisp[l]. These primitives are designed to operate a raster-scanned display and concentrate on facilities for placing text carefully on the display and for moving chunks of an already-created display.
Our implementation of these primitives involves two computers: InterLisp is executed on MAXC, and communicates with a program called Chat which maintains the frame buffer that drives a 808 by 606 point raster display."
- Warren Teitelman et al. INTERLISP Reference Manual. Xerox Palo Alto Research Center, Palo Alto, California, third revision, October 1978. PDF
- L. Peter Deutsch. Inside Interlisp: Two Implementations. Xerox Palo Alto Research Center, November 26, 1978. PDF
- [Warren Teitelman et al.] INTERLISP Documentation for TOPS-20 operating
system. Chapter 1 missing. DECUS DECSYSTEM-20 Library Distribution Tapes, 15
March 1981. See files decus:2lisp.tty.2 through decus:a3lisp.tty.2. Online at
1. INTRODUCTION [Missing]
2. Using INTERLISP
3. DATA TYPES, STORAGE ALLOCATION, GARBAGE COLLECTION, OVERLAYS
4. FUNCTION TYPES AND IMPLICIT PROGN
5. PRIMITIVE FUNCTIONS AND PREDICATES
6. LIST MANIPULATION AND CONCATENATION
7. PROPERTY LISTS AND HASH LINKS
8. FUNCTION DEFINITION AND EVALUATION
9. THE INTERLISP EDITOR
10. ATOM, STRING, ARRAY, AND STORAGE MANIPULATION
11. FUNCTIONS WITH FUNCTIONAL ARGUMENTS
12. VARIABLE BINDINGS, PUSH DOWN LIST FUNCTIONS, AND THE SPAGHETTI STACK
13. NUMBERS AND ARITHMETIC FUNCTIONS
14. INPUT/OUTPUT FUNCTIONS
15. DEBUGGING - THE BREAK PACKAGE
16. ERROR HANDLING
17. AUTOMATIC ERROR CORRECTION - THE DWIM FACILITY
18. THE COMPILER AND ASSEMBLER
20. PRINTSTRUCTURE, INTERSCOPE, AND HELPSYS
22. THE PROGRAMMER'S ASSISTANT AND LISPX
23. CLISP - CONVERSATIONAL LISP
Appendix 1. Transor
Appendix 2. The INTERLISP Interpreter
Appendix 3. Control Characters
- Raymond Bates, David Dyer, Andrea Ignatowski, Johannes Koomen, Steven Saunders, and Donald Voreck. Interlisp-VAX Users Manual. Interlisp-VAX Project, USC Information Sciences Institute, Marina del Rey, California, December 5, 1982, 57 pages. PDF
- Warren Teitelman. PILOT: a Step Toward Man-Computer Symbiosis. Ph.D.
Thesis. MIT-AI-TR-221, Massachusetts Institute of Technology, September
PDF at MIT
"Interlisp (and BBN-Lisp before it) introduced many radical ideas into Lisp programming style and methodology. The most visible of these ideas are embodied in programming tools, such as the spelling corrector, the file package, DWIM, CLISP, the structure editor, and MASTERSCOPE.
The origins of these ideas can be found in Warren Teitelman's PhD dissertation on man-computer symbiosis. In particular, it contains the roots of structure editing (as opposed to "text" or "tape" editing, breakpointing, advice, and CLISP." [Steele and Gabriel 1993]
- Warren Teitelman. Automated programmering - the programmer's assistant. Proceedings of the Fall Joint Computer Conference, AFIPS, December 1972, pages 915-921. PDF
- Warren Teitelman. CLISP - Conversational LISP. Proceedings of the Third International Joint Conference on Artificial Intelligence, Stanford University, California, 1973, pages 686-690. PDF
- Daniel G. Bobrow and Ben Wegbreit. A model and stack implementation of
multiple environments. Communications of the ACM, Volume 16 , Issue 10,
October 1973, pages 591-603.
"One of the most innovative of the language extensions introduced by Interlisp was the spaghetti stack. The problem of retention (by closures) of the dynamic function-definition environment in the presence of special variables was never completely solved until spaghetti stacks were invented." [Steele and Gabriel 1993]
- Warren Teitelman. INTERLISP. ACM SIGART Bulletin, Issue 43, December 1973, pages 8-9. ACM DL
- Warren Teitelman. INTERLISP Documentation. ACM SIGART Newsletter, Issue 44, February 1974, page 10. ACM DL
- D.G. Bobrow. A Note on Hash Linking. Communications of the ACM, Volume 18, Number 7, July 1975, pages 413-415. ACM DL
- W. Teitelman and L. Masinter. The Interlisp programming environment. IEEE Computer, Volume 14, Number 4, April 1981, pages 25-34. IEEE Xplore online at larry.masinter.net
- Larry M. Masinter. Interlisp-VAX: A Report. Report No. SUN-CS-81-879 (also numbered: HPP-81-14), Department of Computer Science, Stanford University, August 1981. Computer History Museum: gift of Larry Masinter, Lot X6058.2011. PDF online at stanford.edu
- Raymond L. Bates, David Dyer, and Johannes A.G.M. Koomen. Implementation of Interlisp on the VAX. Proceedings of the 1982 ACM symposium on LISP and functional programming, Pittsburgh, Pennsylvania, United States, 1982, pages 81-87. ACM DL
"I think the right thing to do, when thinking about the history of Interlisp, is to distinguish between INTERLISP, a teletype/interactive terminal timesharing system application and Interlisp-D, a single user, window/mouse/keyboard, personal workstation system based on a single virtual machine.
INTERLISP ran on Tenex, Tops-20, VAX. There was a 'Jericho' port at BBN. There were discussions of ports to IBM System/360, but I don't think they were real.
INTERLISP programs could generally be ported to Interlisp-D with no changes to source code. Interlisp-D programs were binary compatible; it was possible to suspend and save the state of one of the virtual machines on one workstation (make a 'sysout') and restart it on another. In fact, the software build process consisted of us running a kernel Lisp loader that fired up an initial image, that then used Lisp code to load the rest of the system.
'Alto Lisp' was an interim step in the evolution between INTERLISP and Interlisp-D.
Interlisp-D ran on Dorado (Xerox 1132), Dolphin (Xerox 1100), Dandelion (Xerox 1108), Daybreak (?), all microcoded machines. The Dandelion and Daybreak used the same microcode, but the other machines were independent. The Dorado and Dolphin implementations had an Alto/BCPL operating system "boot loader", and some kernel OS functions like disk access were implemented in BCPL. The Dandelion and Daybreak machines had microcoded boot loaders.
There was a port of the byte-code interpreter to C started by Fuji Xerox and finished at PARC. The result was a version of Interlisp-D that ran on Suns and Unix. This implementation was later ported to Linux.
At some point during the evolution of Interlisp-D, a full implementation of Common Lisp was included; Interlisp and Common Lisp code shared the same runtime."
[Larry Masinter. Personal communication to Paul McJones, June 9, 2005]
In 1992, Daniel G. Bobrow, Richard R. Burton, L. Peter Deutsch, Ronald M. Kaplan, Larry Masinter, and Warren Teitelman received the ACM Software System Award:
"For their pioneering work in programming environments that integrated source-language debuggers, fully compatible integrated interpreter/compiler, automatic change management, structure-based editing, logging facilities, interactive graphics, and analysis/profiling tools in the Interlisp system."
- Michael Sannella, editor. Interlisp Reference Manual. Xerox Corporation, October 1983. PDF
- Michael Sannella, editor. Interlisp-D Reference Manual. Xerox Corporation, October 1985.
- Anonymous. Interlisp-D Release Notes. Xerox Corporation, December 1985.
PDF at bitsavers.org
This describes the Kyoto release, which was followed by the Lyric and final Medley releases. "Lisp ist eine reine Interlisp-D Umgebung (übrigens hat Rainer Joswig das Einleitungshandbuch online gestellt, auch ist ein Film über die Benutzung von Interlisp-D online), wohingegend in Lyric Lisp noch zusätzlich eine Implementation von Common Lisp hinzugekommen ist. Medley Lisp ist der direkte Nachfolgerelease von Lyric Lisp, also stark Common Lisp zentrisch, wobei die Systembasis immer noch auf Interlisp-D aufbaut. Medley Lisp läuft nicht mehr auf Lispmaschinen, sondern wird über einen Emulator auf verschiedene Plattformen gebracht." [Georg Bauer. Medley Lisp. Online at Hugos House of Weblog Horror]
- Cynthia Cosic. Interlisp-D: A Friendly Primer. Artificial Intelligence Systems, Xerox Corporation, November 1986. PDF at bitsavers.org
- Lyn Ann Mears and Ted Rees. Xerox LOOPS, A Friendly Primer. Artificial Intelligence Systems, Xerox Corporation, March 1987. PDF at bitsavers.org
- Anonymous. Xerox Common Lisp Implementation Notes. Lyric Release,
PDF at bitsavers.org Index.
PDF at bitsavers.org
"These notes are intended to accompany the Guy L. Steele book, Common Lisp: the Language which represents the current standard for Common Lisp."
- L. Peter Deutsch. A LISP machine with very compact programs. Proceedings of the Third International Joint Conference on Artificial Intelligence, Stanford University, California, 1973. PDF
- L. Peter Deutsch and Daniel G. Bobrow. An efficient, incremental, automatic garbage collector. Communications of the ACM, Volume 19, Issue 9, September 1976, pages 522-526. ACM DL
- L. Peter Deutsch. Experience with a microprogrammed Interlisp system. Proceedings of the 11th annual workshop on Microprogramming, Pacific Grove, California, 1978, pages 128-129. ACM DL
- Daniel G. Bobrow and Douglas W. Clark. Compact Encodings of List Structure. ACM Transactions on Programming Languages and Systems, Volume 1, Number 2, October 1979, pages 266-286. ACM DL
- Larry M. Masinter and L. Peter Deutsch. Local optimization in a compiler for stack-based Lisp machines. Proceedings of the 1980 ACM conference on LISP and functional programming, Stanford University, pages 223-230. ACM DL
- L. Peter Deutsch. ByteLisp and its Alto implementation. Proceedings of the 1980 ACM conference on LISP and functional programming, Stanford University, pages 231-242. ACM DL
- Richard R. Burton, L. M. Masinter, Daniel G. Bobrow, Willie Sue Haugeland, Ronald M. Kaplan, and B. A. Sheil. Overview and status of DoradoLisp. Proceedings of the 1980 ACM conference on LISP and functional programming, Stanford University, pages 243-247. ACM DL
- Richard R. Burton, Ronald M. Kaplan, Larry M. Masinter, B.A. Sheil, Alan Bell, Daniel G. Bobrow, L. Peter Deutsch and Willie Sue Haugeland. Papers on Interlisp-D. Report SSL-80-4 revised, Palo Alto Research Center, Xerox Corporation, September 1980, ii+52 pages. PDF
- Beau Sheil. INTERLISP-D: Further Steps in the Flight from Time-Sharing.
ACM SIGART Bulletin, Issue 77, July 1981, pages 31-32.
A version of this paper was included in the revised version of SSL-80-4 revised.
- Warren Teitelman. History of Interlisp. In: C. Herzeel, editor. Celebrating the 50th Anniversary of Lisp (Nashville, Tennessee, October 20 - 20, 2008). LISP50. ACM, New York, NY. ACM DL
Implementation - commercial
- Medley Common LISP And Developers' Tools. Online at Venue Corporation