I just noticed that August 17 was the 50th anniversary of the LISP 1.5 Programmer’s Manual by John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, and Michael I. Levin. On that day in 1962 it was published as a bound report of the Computation Center and Research Laboratory of Electronics of the Massachusetts Institute of Technology. It was also published by MIT Press — perhaps simultaneously — and is still in print. A second edition was released in 1965; the only difference that I see comparing tables of contents is the addition of Appendix I: LISP for SHARE distribution.
This was of course the first book on LISP. It is a reference manual rather than a textbook, but many people managed to learn LISP from it, and a number of people managed to implement LISP from it. Today ACM’s Digital Library lists 327 citations for it, and Google lists about 23,900 hits. I’m pleased to say that #1 on Google is the authorized PDF at my History of LISP archive at the Computer History Museum.
Through the generosity of several people, the History of LISP archive includes not only the book but also several versions of the underlying source code:
If you’re resourceful and you’d like to actually run the system described in this book, you don’t need an IBM 7090 or a time machine; the SIMH simulator package and the files and information here are sufficient; scroll down until you find “Running Lisp 1.5 in the SIMH IBM 7094 emulator.”
Part of my motivation for starting on an ALGOL project was that Brian Randell recently obtained permission from the copyright holder to post an online copy of ALGOL 60 Implementation at CHM. This book, which he and Lawford Russell published in 1964, provides a detailed description of the ALGOL 60 compiler (known as Whetstone ALGOL) they developed for the English Electric KDF9 Computer. In January, Brian gave a talk “Reminiscences of Whetstone ALGOL” at a joint meeting of the BCS Advanced Programming Group and the Computer Conservation Society recognizing the 50th anniversary of ALGOL 60; see here for more on Whetstone. In particular, the Whetstone Algol resurrection team notes: “We now have the Walgol Translator re-keyed from a dog-eared listing, in the main, by Brian Wichmann, Graham Toal and Roderick McLeod. David Holdsworth has written an assembler and a rough-and-ready emulator. Bill Findlay is in the process of implementing a properly-enginered emulator.”
Update 7/11/2012: corrected URLs for ALGOL 60 Implementation at Software Preservation Group website and “Reminiscences of Whetstone ALGOL” at ncl.ac.uk.
Update 9/22/2010: corrected URL for Whetstone at Software Preservation Group website.
An upcoming release of Bob Supnik’s SIMH (Computer History Simulation system) will include IBM 704/709/7090/7094 simulation provided by Rich Cornwell. Rich has been very busy lately: implementing and debugging the simulations of the CPU, channels, controllers, and devices; tracking down and transcribing source code for diagnostics; and figuring out how to rebuild and run various diagnostics, SHARE, IBSYS, and CTSS code. He’s had great luck with the IBSYS distribution from Paul Pierce; in particular, he was able to get the code compiled by the Fortran II compiler to execute. It turns out the Fortran II compiler writes out intermediate files to tape as individual records not followed by the customary tape mark; it was necessary to tweak the simulator to handle this the way the original hardware did. Rich notes that Bob Supnik, who is also working on a 7094 simulator, was the first person to discover this. (Rich says Bob will include both Rich’s and his own 7xxx simulators in SIMH since Bob’s is specifically optimized for running CTSS while Rich’s is aimed more toward IBSYS and older 704/709 software.)
Rich’s enthusiasm inspired me to finally obtain a copy of the Smithsonian’s Fortran II listing — this is a version for the IBM 704, which does not have I/O channel — it is the machine for which the original Fortran I compiler was written. Rich is in the process of recreating the assembly language source code from which this listing was generated. He’s doing this by hand, because the quality of OCR is not high enough.
Rich has many related projects in mind, and welcomes others who would like to join in: transcribing/proofreading diagnostics and the 704 Fortran II listing, working on some remaining IBSYS language processors, getting the Lisp 1.5 interpreter to run, etc. His home page (yes, kites!) has an EMail link for getting in touch with him, or contact me and I’ll put you in touch with him.
Brad Parker recently announced:
After a long and interesting search I uncovered a set of 9-track tapes which appear to be a snapshot of the MIT CADR Lisp machine source code from around 1980. This is not the final source code and not the last source release I will make. It is, however, the first source release.
Tom Knight and others at MIT helped me secure permission from MIT’s Patent office to release the software. I am indebted to him and the others for making this possible.
Follow the link above for a compressed tar file containing the tape images, extracted files, and extraction software, plus MIT’s license, a README, and a link to Brad’s CADR emulator.
(Via Bill Clementson via Lemonodor; see also Bill Hyde.)
I’ve added a link to Brad’s web page in the Zetalisp for Lisp Machines section of the History of LISP website at the Computer History Museum.
[Edited 10 May 2014: community.computerhistory.org/scc/projects/LISP/index.html#ZetaLisp_ => www.softwarepreservation.org/projects/LISP/maclisp_family/#ZetaLisp_ and URL for Bill Clementson’s blog.]
Pascal Bourguignon encountered this item on my History of LISP web site:
- LISP system assembly listing. “FIELD TEST ASSEMBLY OF LISP 1.5 SEPTEMBER 1961”, labeled “Bonnie’s Birthday Assembly”. M.I.T. Museum, donated by Timothy P. Hart and scanned by Jack Harper. PDF (16MB)
and promptly began reconstructing machine-readable source. This morning he announced on comp.lang.lisp his progress (he’s typed in the source, patched it and Dave Pitts’ assembler to nearly recreate the listing, and is close to running it on the emulator). As he says in a README file of his distribution:
This card deck can be assembled with asm7090-2.1.4 applying the small patch ‘asm7090.patch’ to get a listing as identical as possible. asm7090 prints ‘0’ in the generated words for symbols under different headers, so we cannot make a complete word-for-word comparison of the generated code from the listing, until we modify asm7090 in this respect.
The objective is to recover a perforation for performation image of the Source. The same columns, the same typoes should be reproduced.
If you’d like to help Pascal find the remaining errors, or have the LISP 1.5 compiler sources or LISP 1.5 application sources, you can contact Pascal at the email address in the above-mentioned README file. Please also send me email or post a comment to this entry!
[Edited 10 May 2014: community.computerhistory.org/scc => www.softwarepreservation.org, etc.]
I have been negligent in reporting impressive progress made by Dave Pitts emulating IBM 7090 software. As Leif Harcke posted to alt.folklore.computers and bit.listserv.ibm-main on 2 February 2005:
Dave has developed his “asm7090” cross-assembler to the point where it can assemble the core of IBSYS from MAP source. The resultant IBSYS image will run the Fortran II(?) compiler on a modified version of Paul Pierce’s “s709” 700/7000 series emulator. The object code produced by the Fortran compiler does not run under IBSYS, however.
The cross-assembler and emulator are written in C, and build under Linux. Presumably they are easy to port to other POSIX-compliant systems. Details on the project are available here:
If anyone is interested in helping out, Dave could use a hand debugging the emulation and getting IBSYS and other related system tools working.
Today, Dave told me:
With the current version of the emulator, 2.0.4, I’ve been able to run the following:
1. FORTRAN IV – Compile and run both Primes and Laplace programs.
2. COBOL – Compile and run the hello world program.
3. FORTRN II – Compile the Primes program. The exec doesn’t work, I get a checksum error loading the runtime (bad tape??).
4. MAP assembler – I’ve only run the assembler, didn’t try to run output.
5. FAP assembler – I’ve only run the assembler, didn’t try to run output.
My current IBSYS tape has the nucleus assembled with my ASM7090 cross assembler. Also, I re-assembled the COBOL compiler with ASM7090 and put on the tape.
I know that Leif Harcke has been hacking on the FORTRAN II. I think he’s stuck at the same point as I am. I’ve been trying to get the FORTRAN II parts to assemble with ASM7090 to replace the tape image with a NOPed checksum test.
Although the majority of items at Al Kossow’s bitsavers.org are scanned copies of manuals, he also has software in source and/or executable form for a variety of machines (scroll down to “The Software Archive”) . Some of the oldest include MIT’s TX-0 and DEC’s PDP-1.
His manual collection also includes scanned copies of source code listings for some historic machines, including MIT’s Whirlwind and The University of Illionois’ ILLIAC I (scanned from hardcopies belonging to Wayne Lichtenberger).
Al notes that David Green is writing a simulator for the version of the ILLIAC built at the University of Sydney.
Updated TX-0 and PDP-1 URLs following a change at bitsavers.org.
I expect most Dusty Decks readers are aware of alt.folklore.computers, but it’s worth noting Rob Storey’s recent post IBM 7094 Emulator now runs Fortran compiler. As I posted in June, Rob has written a IBM 7094 emulator. Through the work of James Fehlinger, the emulator can load and execute the compiler, and then execute the result, at least for a “hello, world” program.
Rob suggested others might want to get additional programs running on the emulator, and suggested several that are available. Leif Harcke suggested CTSS (M.I.T.’s Compatible Time Sharing System), using the tapes available from Paul Pierce’s collection. I mentioned this to Tom Van Vleck; he took a look at the tapes and lent his enthusiastic support. Rob is happy to make the necessary “hardware modifications” (known as RPQ’s) to the emulator if someone will supply him with a specification.
Updated 23 Mar 2006: Leif Harcke’s URL changed.
I learned that Peter Zilahy Ingerman, PhD, was the donor of the Fortran II listing at The Smithsonian. Peter published a number of books and papers in the area of programming languages and compilers.
I called Peter and had a very pleasant conversation. It turned out he’d donated the Fortran materials to The Smithsonian a number of years ago, and did not remember that specific item I was interested in, but he volunteered to travel from his home in New Jersey to Washington if that would help.
Peter is very interested in the history of computing, and has created a very detailed UNIVAC I/II emulator, a machine that Peter wrote software for between 1957 and 1963. Peter told me of a UNIVAC web page maintained by Allan Reiter.
Earlier I had learned that Paul Pierce’s web site contains images of a number of system tapes for old IBM mainframes. Paul provides some utilities he wrote for making sense of these old tapes, which were written on 7-track drives, with 6-bit BCD characters and 36-bit words.
Tonight I came across Rob Storey’s web site. He’s written file utility programs BCD2IAS, IASMERGE, and FILEBROW that greatly simplify the process of reading, converting, and correcting the tape and card images from Paul Pierce’s web site.
I played with them for a while, and was able to view some of the Fortran IV compiler sources. More work will be necessary to create “fix records” for errors that BCD2IAS can’t detect by itself — it looks like there are occasional missing characters from blocked fixed-length lines, causing the source code to “drift” cyclicly to the left. But the result will be source code for the IBM 7090 Fortran IV compiler!
The bad news is that this compiler shares little if any source code from the original IBM 704/709 Fortran/Fortran II compiler (in particular, it did not contain the sophisticated code optimization components).
Rob’s web site also features an IBM 7094 emulator. (Paul Pierce’s web site has an IBM 709 emulator.)