MacLisp family — Software Preservation Group (original) (raw)

Document Actions

Cover of 1974 Moonual

LISP 1.5/1.6/MACLISP for PDP-6/10

Richard Greenblatt arrived at M.I.T. in the Fall of 1962. There was a PDP-1 in Building 26 (next door to the TX-0), a gift from DEC: serial number 3. It was available for student use, and was entirely hands on, having no operating system not dependent on manipulating the console keys. L. Peter Deutsch was a young high school student, the son of an M.I.T. professor. He wrote a LISP which ran entirely in the core memory of 4096 18-bit words. Later a drum was installed, which had 22 4096-word "fields", or 88K words altogether. Someone - Michael Wolfberg? - changed Deutsch's LISP to treat every memory reference as a subroutine call to a cache/drum access routine.

In 1963, DEC began the PDP-6 project with Gordon Bell as the chief engineer and Alan Kotok as the junior engineer. Kotok still spent time at the Tech Model Railroad Club, where members such as Dave Gross, Peter Samson, and Richard Greenblatt were devising efficient implementations of the various LISP SUBRs. The prototype PDP-6 took shape at the Mill, DEC's facility in Maynard, MA. The M.I.T. students would visit in the evening, bringing paper tape with assembly language source code prepared on the PDP-1 at M.I.T. They used a cross-assembler on a PDP-4. Bill Mann and Richard Greenblatt studied Deutsch's EVAL and wrote a new one for the PDP-6. Dave Gross and Greenblatt wrote PRINT. Gross and Tom Eggers went to work for DEC full time, and did some work on PDP-6 LISP. DEC sold the first PDP-6 to M.I.T.'s Artificial Intelligence Laboratory, accepting the Lab's existing 16K PDP-1 in trade as partial payment. However, the AI Lab was allowed to keep both machines for a short period.

Greenblatt returned to the AI Lab full time at that point (he had earlier been a student employee). At this point, Greenblatt, Stuart Nelson, Tom Knight and Jack Holloway resumed work on PDP-6 LISP. Then Greenblatt and Nelson decided to do a more sophisticated compiler that provided consistent variable access across the interpreter and compiler; this became MacLisp. Several years later John White took over the compiler, which became NCOMPLR. [Richard Greenblatt, as told to Paul McJones, March 15, 2005; see also Greenblatt oral history]

- - -

"Ideas from several other implementations influenced the initial design, notably the CTSS version on the IBM 7094, and the very minimal version for the PDP/1. However, the decision to dispense with the a-list in the implementation, a major factor in the space economy and running speed of MACLISP, came some time later. An improved compiler was written as an adjunct to the system – compilation is done 'off-line', and the resulting LAP code loaded into the system when desired." [John L. White 1970; see also Jon L. White 1977]

Source code

System source code

Latest entry in file LISP.ARC is "TUESDAY SEPT 14,1976 FM+6D.1H.33M.7S. LISP 1211 -GLS,JONL-". File LISP. is timestamped and copyright 1978. File READ.ME ends with "For other questions contact RPG [Richard P. Gabriel]."

"In 1976 the MIT version of MacLisp was ported to the WAITS operating system by Richard Gabriel at the Stanford AI Laboratory (SAIL), which was directed at that time by John McCarthy." [Steele and Gabriel 1993]

Applications

Documentation

"This is a mosaic description of PDP-6 LISP, intended for readers familiar with the LISP 1.5 Programmer's Manual or who have used LISP on some other computer. Many of the features, such as the display, are subject to change. Thus, consult a PDP-6 systems programmer for any differences which may exist between LISP of Oct. 14, 1966 and present LISP on the system tape."

[Steele and Gabriel 1993] note: "The report does not bear the author's name, but Jeffrey P. Golden [Golden 1970] attributes it to Jon L White."

Papers

Applications

Multics Lisp (Multics MacLisp)

"Version II Lisp was known as 'Multics MacLisp' (From 'Project MAC'.) The need for it arose from the MIT Mathlab group's (part of project MAC, later Laboratory for Computer Science) 'Macsyma' program, which was written in Lisp, hitting against the address space constraints of the PDP-10 systems on which it was developed. The large virtual memory of Multics seemed to indicate the latter as a logical migration platform, so Multics MacLisp was developed to support Macsyma.

Multics MacLisp was designed to be compatible with the large, mature, and heavily used 'MACLISP' dialect in use on the PDP-10's throughout the AI Lab and MAC, and implemented between 1970 and 1973. Reed, then an undergraduate at MIT in the Multics group, started the project by modifying Version I Lisp, writing largely in PL/I. Ultimately, several of the most performance-critical sections, most notably the evaluator, were rewritten in a tour-de-force of ALM (Multics Assembler) by Dave Moon. Almost all of the implementation was done by Daves Moon and Reed and Alex Sunguroff; Moon was working in the MIT Undergraduate Research Opportunities program; Sunguroff, who worked on the I/O system, was a paid employee. Dan Bricklin, later of VisiCalc fame, worked on the BIGNUM (arbitrary-precision integer arithmetic) package.

The Multics MacLisp Compiler, initially designed and written by Reed alone, was a full-scale Lisp Compiler producing standard Multics object segments (which nonetheless had to be run from within the Lisp subsystem). Its two phases, semantics and code generation, both written in Lisp, were derived in conception and strategy from COMPLR/NCOMPLR, the renowned and powerful compiler on the PDP-10. While the code generator was written from scratch, the semantics phase was ported and adapted from PDP-10 MacLisp. Reed's code generator employed a subset of NCOMPLR's powerful data-flow techniques. [A 1977 paper on The Multics MacLisp Compiler by Bernard Greenberg is available at this web site.] A 'LAP' (intrinsic Lisp assembler program) was written a couple of years later by Moon.

Although Macsyma was ported to Multics, it was not a further impetus for much Multics Lisp development thereafter. The cause of Multics Lisp was taken up by Bernard Greenberg, who had just come to Honeywell (1974) after having been attracted to Lisp while sharing an office with Moon at MIT. Greenberg, who was involved with the development and continuation of the Multics Supervisor, implemented a Multics post-mortem crash-analysis program, ifd (interpret_fdump) in Multics Lisp, which in subsequent years achieved wide distribution and following in the Multics Community. While the 'official language' status of PL/I actively and openly discouraged experimentation with other languages, the interactive, extensible nature of ifd did much to attract attention to Lisp in the Multics development and site support communities.

From that time until his departure from Honeywell in 1980, Greenberg took over maintenance of Multics Lisp, adding features as he needed. Moon still contributed major features on occasion.

Largely as a consequence of the ifd experience, Greenberg chose Multics Lisp as the implementation and extension vehicles for Multics Emacs (1978), which drew attention to Lisp from all over the Multics community and to Multics from all over the Lisp community. Multics Emacs elevated Multics MacLisp to criticality in a highly visible and significant Multics offering. Multics Emacs' (see separate section) highly successful use of Lisp as (inter alia) an extension language inspired the use of Lisp as such by later generations of Emacs (e.g., GNU)." [Bernard Greenberg at multicians.org]

Source code

Documentation

Papers

MDL (MUDDLE)

"I was not a member of the original group which labored for two years in the design and initial implementation of MUDDLE; that group was composed principally of Gerald Sussman, Carl Hewitt, Chris Reeve, Dave Cressey, and later Bruce Daniels." [Pfister 1972]

- - -

"MDL–its earlier, less-palatable-to-funders name was “Muddle”–was a Lisp-related language, also developed at MIT, that had a strong influence on mainstream Lisp evolution. It introduced lambda-list options such as "OPTIONAL" to denote optional arguments, "AUX" for defining auxiliary variables, "ARGS" for a &rest variable (one that is bound to a list of the remaining arguments), and some others that never made it into mainstream Lisp dialects. MDL had locatives, which might be described as “lvals” (in the C sense), only first-class; essentially they are pointers to memory locations and can be treated like variables to read and write those locations (in C++ this concept is known as references). MDL had a splicing marker to enable a sequence of values (called a segment) to be spread as arguments; the splicing marker ,@ used in Common Lisp’s backquote syntax is descended from this. MDL also introduced through example the use of a final ? in a name to connote a predicate, in contrast to mainstream Lisp dialects, which used a trailing P. (Scheme now uses the “sensible” ? convention and Common Lisp the “traditional” P convention, so the predicate that is true of numbers and only numbers is called NUMBER? in Scheme and NUMBERP in Common Lisp.)" [Steele and Gabriel 1993]

Lisp Machine Lisp (CONS, CADR, Lisp Machines Inc., Symbolics, Inc.)

Source code

Documentation

Papers

Emulators

Applications

NIL (New Implementation of Lisp), S-1 Lisp

"NIL, intended to be the successor to MacLisp, was designed by Jon L White, Guy L. Steele Jr., and others at MIT, under the influence of Lisp-Machine Lisp, also developed at MIT. Its name was a too-cute acronym for 'New Implementation of Lisp' and caused a certain amount of confusion. NIL was a large Lisp, and efficiency concerns were paramount in the minds of its MacLisp-oriented implementors; soon its implementation was centered around a large VAX assembly-language base.

In 1978, Gabriel and Guy Steele set out to implement NIL on the S-1 Mark IIA, a supercomputer being designed and built by the Lawrence Livermore National Laboratory. This Lisp was never completely functional, but served as a testbed for adapting advanced compiler techniques to Lisp implementation. In particular, the work generalized the numerical computation techniques of the MacLisp compiler and unified them with mainstream register allocation strategies. With the development of the S-1 Lisp compiler, it once again became feasible to implement Lisp in Lisp and to expect similar performance to the best hand-tuned, assembly-language-based Lisp systems." [Steele and Gabriel 1993]

Source code

Documentation

Papers

Franz Lisp

"Franz Lisp was created as a tool to further research in symbolic and algebraic manipulation, artificial intelligence, and programming languages at the University of California at Berkeley. Its roots are in a PDP-11 Lisp system which originally came from Harvard. As it grew it adopted features of Maclisp and Lisp Machine Lisp. Substantial compatibility with other Lisp dialects (Interlisp, UCILisp, CMULisp) is achieved by means of support packages and compiler switches. The heart of Franz Lisp is written almost entirely in the programming language C. Of course, it has been greatly extended by additions written in Lisp. A small part is written in the assembly language for the current host machines, VAXen and a couple of flavors of 68000. Because Franz Lisp is written in C, it is relatively portable and easy to comprehend." [Foderaro et al., The Franz Lisp Manual, June 1983]

- - -

"A chorus of students under the direction of Richard Fateman have contributed to building FRANZ LISP from a mere melody into a full symphony . The major contributors to the initial system were Mike Curry, John Breedlove and Jeff Levinsky. Bill Rowan added the garbage collector and array package. Tom London worked on an early compiler and helped in overall system design. Keith Sklower has contributed much to FRANZ LISP, adding the bignum package and rewriting most of the code to increase its efficiency and clarity. Kipp Hickman and Charles Koester added hunks. Mitch Marcus added *rset, evalhook and evalframe. Don Cohen and others at Carnegie-Mellon made some improvements to evalframe and provided various features modelled after UCI/CMU PDP-10 Lisp and Interlisp environments (editor, debugger, top-level). John Foderaro wrote the compiler, added a few functions, and wrote much of this manual. Of course, other authors have contributed specific chapters as indicated. Kevin Layer modified the compiler to produce code for the Motorola 68000, and helped make FRANZ LISP pass 'Lint'." [Foderaro et al., The Franz Lisp Manual, June 1983]

- - -

"... a MacLisp-like Lisp that eventually ran on virtually all Unix-based computers, thanks to the fact that Franz Lisp is written almost entirely in C. Later Franz, Inc., was formed to further Franz Lisp ..." [Steele and Gabriel 1993]

Source code

Documentation

Applications

Spice Lisp

"In 1980 an implementation of Lisp was undertaken at Carnegie-Mellon University as part of its Spice (Scientific Personal Integrated Computing Environment) project; it was called, simply enough, Spice Lisp. The implementation would need to be moderately portable, as Spice was to run on a variety of microcoded personal computers. Spice Lisp was originally designed to be a superset of MacLisp by the strategy of starting with Lisp Machine Lisp and cutting out anything that seemed to be overly complicated or difficult to make portable." [Steele 1982]

- - -

"Spice Lisp provided two significant contributions to the Common Lisp effort. One is the draft Common Lisp manual, which was derived from the Spice Lisp manual (and also borrowed heavily from MIT Lisp Machine Manuals) and the other is a reference implementation. For several years after the appearance of CLtL I, Spice Lisp served as the source, literally, for a number of Common Lisp implementations. Computer companies would take the free source code and port it to their computers, providing a base level Common Lisp." [Steele and Gabriel 1993]

See also CMUCL.

Source code

Documentation

Papers

TLC LISP for Intel 8080 and 8086

"This TLC-LISP is a preview of things to come. It represents the initial strand in a sequence of powerful LISP dialects for the next generation of microcomputers. We have consolidated some of the twenty-years experience with LISP 1.5, and later with MDL, Conniver, MacLISP, and the MIT LISP machine, to present a capable and expandable .dialect which will allow non-trivial LISP experimentation within the confines of the current processor, while preparing for the more hospitable and lively environment of the new processors. Thus we have avoided many of those fe~tures of preceding LISP's which represent anachronisms. Furthermore, the future LISP machine will be a personal general- purpose computing environment. Therefore, we have included a full complement of arithmetic features as well as including the character, string, and vector data types with their associated operations." [Allen 1985]

For background information on John Allen, see [McJones 2024].

ZIL for IBM MVS/XA at Charles Stark Draper laboratory

Not to be confused with Zork Implementation Language. This ZIL was bootstrapped using J. F. Bolce's LISP/360 from Waterloo.

« June 2025 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30