Software Preservation Group of the Computer History Museum

Other LISP 1.5 implementations

Previous: LISP 1.5 family - Up: LISP - Next: LISP 2 family

See also: Lisp F1 by Mats Nordström and his colleagues at the University of Uppsala.

LISP 1.5 for Univac M-460 (Air Force Cambridge Research Laboratories)

The Univac M-460 was a military version of Univac 490. The LISP system was written by Timothy P. Hart and Thomas G. Evans at Air Force Cambridge Research Laboratories. The system was bootstrapped from Lisp 1.5 on the IBM 7090 using a cross-compiler and a small amount of machine language code for the lowest levels of the Lisp implementation. See:

LISP 1.5 for AN/FSQ-32/V (System Development Corporation)

The AN/FSQ-32/V was a military computer with 48-bit words; only one was built and it belonged to System Development Corporation, in Santa Monica, California. The LISP system was written by Robert Saunders, with assistance from Tim Hart, Dan Edwards, Mike Levin, John McCarthy, and Steve Russell.

"The Q-32 implementation was the first LISP that did not run on an interpreter: all code was compiled before execution. Someone subsequently wrote an interpreter for it, but I have no idea why other than for the fun and instruction of doing it. [As stated in Berkeley and Bobrow], the LISP was developed on Stanford's 709/90 system, compiled there, and taken to Santa Monica as machine instructions on magnetic tape. Some fundamental code (e.g. CONS, and later the garbage collector) was done in machine language on the Q-32 itself."
[Robert A. Saunders, personal communication to Paul McJones, May 6, 2005.]

LISP 1.5 for GE 235 (Dartmouth)

"There now exists a version of LISP 1.5 on the Dartmouth Time-Sharing System. It resides under the name 'EVAL.' EVAL is a modification of LISP 1.5 developed for the IBM 7090 at M.I.T. It is similar enough to the M.I.T. version that an adequate referne manual is:

LISP 1.5 Programmer's Manual
By J. McCarthy et al.
M.I.T. Press" [Hobbs 1966]

LISP 1.5 for IBM M44 (Air Force Cambridge Research Laboratories)

"The IBM M44/44X was an experimental computer system from the mid-1960s, designed and operated at IBM's Thomas J. Watson Research Center at Yorktown Heights, New York. It was based on an IBM 7044 (the 'M44'), and simulated multiple 7044 virtual machines (the '44X'), using both hardware and software. Key team members were Dave Sayre and Rob Nelson. This was a groundbreaking machine, used to explore paging, the virtual machine concept, and computer performance measurement. It was purely a research system, and was cited in 1981 by Peter Denning as an outstanding example of experimental computer science." [Wikipedia, IBM M44/44X]

LISP 1.5 for IBM 7030 (The MITRE Corporation)

LISP 1.5 was implemented on the IBM 7030 (STRETCH) computer at The MITRE Corporation by Roland Silver and Paul Heckel. The MATHLAB symbolic mathematics system ran on this computer as well as on CTSS at MIT P roject MAC. [Engelman 1965]

LISP 1.5 for IBM 360 at SDC

LISP 1.5 for Raytheon 704 at SDC

MBLISP (Martin Baltimore)

MBLISP was a Lisp 1.5 dialect developed by Harold V. McIntosh and his students at RIAS (Martin Baltimore) and the Quantum Theory Project (University of Florida).

"The programming experience which I gained in writing FLT [McIntosh 1962] was actually put to use in creating a LISP interpreter. I had become aware of LISP through acquaintance with some of John McCarthy's programming assitants, and the MIT Industrial Liaison Program, and we had even used LISP 1 in a RIAS summer institute rather successfully for a number of symbolic programs. A brief resumé of this institute was described in [McIntosh 1963]. LISP documentation was nonexistent at that time, so that our understanding of LISP was rather empirical. In the light of the preparation of FLT, it seemed that writing a LISP interpreter would be a simple matter, and in fact the only way to gain an adequate understanding of the structure of LISP. Such was the case; MBLISP was planned for about a month, written in two weeks, more thoroughly debugged over the ensuing six months, and extended in various ways for several more years, and has served as a training medium for a considerable number of students." [McIntosh 1972]

Documentation

Applications

YULISP and Hawkinson-Yates LISP (Yale University, University of Florida, and CENAC, Mexico)

"One of the students who had attended McIntosh’s 1961 Lisp summer school was Peter Conrad, my sophomore year roommate at Yale. Through this connection, I ended up attending McIntosh’s 1962 offering in Gainesville, probably funded entirely out of his own pocket. In preparation for this, I read a primer on Lisp that he and his students had written a year or two earlier[10], and then I began writing simple recursive Lisp functions for set-theoretic operations — before I had ever seen other than a picture of a computer.

During the next academic year at Yale, I built a Lisp interpreter, YULISP, for the IBM 709. Among other things, it had a rather sophisticated relocating garbage collector, perhaps the first instance of this kind of garbage collector. I also began work on a compiler version of YULISP. (All this was much to the detriment of my academic studies.)

I spent August of 1963 at Uppsala University as a guest of Prof. Per-Olov Lowdin, a quantum theorist, mathematician, and friend of Harold McIntosh. The central event of this visit was a talk on Lisp I presented in a grand old lecture hall at the university. At age 20, I was rather ill-prepared to deliver such a public lecture, but perhaps I planted a seed or two of interest in one or two Swedes.

Over the next couple of years, I continued to work under the mentorship of Harold McIntosh, first at the University of Florida in Gainesville and then at the Instituto Politecnico Nacional in Mexico City (where Adolfo Guzmán was a student and where Bob Yates was also to be found). At the Instituto Politecnico, I taught Lisp and continued implementing Lisps, both the YULISP compiler version for the IBM 709 and a just-for-fun interpreter for the CDC 160-A, a tiny paper tape machine." [Lowell Hawkinson, quoted in McJones 2012]

"Hawkinson & Yates LISP. While I was in Mexico City (September 1963 – September 1964), I had the opportunity to work with Lowell and become familiar with his plans for his next LISP version (again for the IBM 7090). The extensions consisted in incorporating integers, floating point numbers and arrays as basic objects (like atoms and lists) in the LISP language in a very efficient manner and this LISP was a compiler instead of an interpreter which made it much faster still. Towards the middle of 1964, we worked together and got the compiler running on the IBM 709 at the Politecnico. I went back to finish my bachelor’s degree at Johns Hopkins and Lowell remained 7-8 months more and was able to finish the garbage collector (which collected both lists and arrays — an innovation at that time). Lowell sent me a card deck and I continued work on the compiler at Bell Labs (Holmdel). However, Bell Labs wanted me to do the garbage collector for their Snobol4 project (Griswold) and then I went to Stanford for my doctorate. I essentially abandoned the Hawkinson-Yates LISP system and never had any more contact with it." [Robert Yates, quoted in McJones 2012]

"The first version was written in MBLISP, a LISP dialect which differs from LISP in a number of technical details, but which had a sufficient amount of pushdown list and free storage space available to be able to execute reasonably complicated examples. As an interpreter–interpreting a CONVERT interpreter for a slow machine–it was decidedly slow. The Q-32 version using a faster machine with a Lisp compiler gave a much better performance. One of the programs analyzed a group of order 16, defined as a semi-direct product C8:C2 of cyclic groups of order 8 and 2, respectively. It was possible to obtain the group table in about three minutes at times when the time-sharing competition was not intense which meant about a second per group product, a figure several hundred times as fast as for MBLISP in the 709.

The Q-32 Lisp has a limited pushdown list available, which prevented the execution of quite a number of programs, since CONVERT is highly recursive. However, the latest experience has been with yet another LISP processor, a compiler, constructed for the CENAC by Lowell Hawkinson and Robert Yates, and which they are presumably continuing to develop. It is unique in having an excellent array and floating-point numerical capability, as well as being very carefully organized in all other aspects. As a result it is one of our current vehicles for the CONVERT programs." [Guzmán and McIntosh 1966]

LISP 1.5 for CDC 6000 series (University of Texas, Austin)

"In September of 1966, a project sponsored by Professor W. W. Bledsoe was begun to develop a LISP 1.5 interpreter system for the Control Data 6000 computer series. The completion of the system is announced with the publishing of this document." [Morris and Singleton, 1967]

Source code

Documentation

LISP 3600 for CDC 3600 (Norwegian Defence Research Establishment)

Documentation

LISP/360 for IBM System/360 (University of Waterloo)

"In the 1966 academic year, Jerry Bolce wrote a Waterloo version of LISP, a language that was important to artificial intelligence. Bolce's version was known as LISP 1.5 [Peter James Ponzo, Computer science at Waterloo: a history to celebrate 25 years, 1967-1992, University of Waterloo, 1992]." [https://cs.uwaterloo.ca/40th/Chronology/1960.shtml]

Source code

Documentation

Stanford Lisp/360

Apparently based on Waterloo LISP/360. See also: [Fitch 1978] under Standard LISP.

Source code

Tape 2 of the third distribution of the Michigan Terminal System (MTS) contains source and executable code for a version of Stanford LISP/360 that has been modified to run under MTS. The relevant files are numbers 41 through of d3.0t2.aws, which can be extracted using the lbltp utility (for Microsoft Windows or Macintosh) included with the archived distribution.

Documentation

Applications

NPS LISP 1.5 for IBM System/360 (Naval Postgraduate School)

RPI LISP 1.5 for IBM System/360 (Rensselaer Polytechnic Institute)

"The R.P.I. LISP interpreter for the System/360/50 was written in 1965 by William Lehrman for the degree of Master of Electrical Engineering. The garbage collector, arithmetic features, and print program were written by Jonathan Millen. The compiler was written by Jack Gelb and Jonathan Millen, the authors of several lesser functions and this manual. Mel Sabel wrote the self-relocation routine and the I/O modules to allow LISP to operate through teletypes. The authors gratefully acknowledge the encouragement and advice of Professors Dean Arden and Jack Hollingsworth of R.P.I."

LISP 1.5 for Univac 1108 (University of Wisconsin - Madison)

"In the late 1960's, Eric Norman of the University of Wisconsin - Madison developed a LISP 1.5 dialect for the Univac 1100 series of mainframes ... .

The LISP system developed by Norman consisted of approximately 5,000 lines of Univac assembly language for the interpreter and about 1,000 lines or so of LISP for the compiler. Several interesting applications were developed under or ported to Univac LISP including: Planner (an early planning language designed by Carl Hewitt of MIT; MLISP (an Algol 60-like dialect of LISP); Fuzzy (a system that worked with Fuzzy Logic); and several LISP utilities such as a Pretty Print package, a Math Library, a source Editor, and a Debugger. The original source code for all of the above items -- including the full interpreter and compiler -- are contained herein and are discussed in some detail." [Jack Harper, http://www.frobenius.com/univac.htm via archive.org]

"At the time, the Computing Center here at Wisconsin had decided to purchase a Univac 1108. It couldn't be delivered yet, though. What we had was a remote card reader and printer to an 1108 up in Minneapolis. Just about all the interpreter was developed that way. That is, I submitted a deck of cards at night and picked up the listings the next day. When the 1108 arrived on campus, LISP was already running on it." [Eric Norman, personal communication to Paul McJones, May 2005]

Source code and documentation

Maryland LISP 1.5 for Univac 1100 (University of Maryland)

"The program which has evolved into Maryland LISP was begun in 1969 by Eric Norman of the Univerity of Wisconsin. Several basic implementation decisions made in the writing of Wisconsin LISP remain in Maryland LISP, though there have been many changes and extensions. The bulk of the code for Maryland LISP's control structures, as well as the compiler, prettyprinter, debugger, and micro-Planner programs are revised versions of routines written at Wisconsin.

Wisconsin LISP arrived at the University of Maryland in 1974 and was modified and adapted by, among others, Chuck Rieger and Milt Grinberg. Mache Creeger added the string functions, random-access file I/O, the text editor intertace, ASCII character I/O, an implementation of Stanford MLISP, the Suspend-Resume Package, the contingency routines, and numerous other extensions. Phil Agre added the sequential file I/O functions, a new garbage collector, the virtual memory option, the assembler, the array, matrix, and bignum packages, and the core aumping and mail routines.

The authors wish to thank numerous individuals for their efforts, advice, and criticisms. Primary among these are Chuck Rieger, Hanan Samet, Milt Grinberg, Phil London, Steve Small, Rich Wood, and Gyorgy Fekete." [Agre 1978]

ULISP for PDP-11 (University of Maryland)

"ULISP is another PDP-11 Lisp, modelled after the Univac 1100 Lisp by Norman (see section 2.1.10). It was written by Robert Kirby at the University of Maryland [Kirby 1977]. Along with some forgotten operating systems, ULISP could be run under Sixth Edition Unix, thus making it the first Unix Lisp system. The dialect bears some resemblance to LISP 1.5, but includes more primitive datatypes, including both single and double precision floats.

The basic pointer is a 16-bit value. Like the Univac Lisp, the data area of ULISP is divided into pages, of 1024 bytes each, each dedicated to a single type. The page table contains one-byte codes for each type; the codes themselves are all even numbers, to allow use of the type code for dispatching tricks. Car is stored first in memory, then cdr, but the pointer to a cons cell actually points at the cdr and uses a predecrement addressing mode to address the car." [Shebs 1988]

"Originally, I named the PDP-11 Lisp implementation VLISP for "Vision" since it was being created for the University of Maryland College Park Image Processing Lab. The Lab changed names later but its emphasis was mostly on image processing rather than computer vision, which was my primary interest. Vrije Universiteit Amsterdam (Free University Amsterdam) wrote me that they also had a VLISP, which I assumed was named after "Vrije". Although I had already produced a technical report using "VLISP", Prof. Azriel Rosenfeld, who was my advisor and employer, and I decided to change my VLISP name. Although I considered PPLISP for picture processing, I chose ULISP for the University of Maryland, hoping that the name would not conflict with the name of any of several other Lisp implementations, which were being written around that time." [Kirby, personal communication, 20 Feb 2024]

ALISP for CDC 6000 (Cyber 72) series (University of Massachussets Amherst)

"ALISP [was] a native Lisp for the CDC Cyber 7200 that was written by Kurt Konolige when he was an undergrad at Amherst College (the "A" in ALISP) around 1975-1976 (before he started grad school at UMass). (The first version of John Lowrance's GRASPER system, which eventually became GRASPER-CL at SRI, was written in ALISP. I wrote the AVL-tree-based "graph paging" substrate for GRASPER, mostly from midnight-5AM when we could get some reasonable space/cycles on the time-shared Cyber.) Following CDC ALISP lineage for a moment, ALISP was eventually replaced with work on a native Common Lisp that was headed by Richard Hudson." [Dan Corkill, personal communication, September 4, 2010]

LISP for Interdata 7/16

"I created LISP 7/16 in the era of minicomputers to perform some experiments for my PhD research. We had acquired an Interdata 7/16 minicomputer and a digital signal processing board from Bell Labs that was attached to the computer. I was doing speech synthesis, and I wanted a HLL to control the synthesizer (implemented on the Digital signal board using a collection of second-order-sections.) Since LISP was my preferred programming language, I chose to create the language interpreter. We subsequently provided Interdata the language interpreter in exchange for a Interdata control board that let us build a more sophisticated floppy disk based OS for the computer.

I implemented a classic garbage collector and CONS in assembly language and used McCarthy's two-page definition of the LISP interpreter (*) found in his book to complete the design." [Thomas Kaczmarek, personal communication, 20 July 2024]

(*) See [McCarthy 1962, Appendix B]

Previous: LISP 1.5 family - Up: LISP - Next: LISP 2 family