Personal tools
You are here: Home Projects LISP MacLisp family
Document Actions

MacLisp family

by Paul McJones last modified 2024-01-18 16:02

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

  • Peter R. Samson. Subway hack files (program and data); includes standalone version of PDP-6 LISP in SBLK format (with symbols). Discovered by Angelo Papenhoff (http://pdp-6.net) in the images of the DECtapes given to the Computer History Museum by Samson and imaged by Al Kossow. Based on the date of the subway hack (see The Rise and Fall of the Amateur New York Subway Riding Committee), this LISP system was probably from 1966. Papenhoff has executed the LISP system using his PDP-6 emulator, and later reconstructed the source code.
    • Al Kossow. Images read from PDP-6 DECtapes donated to CHM by Peter R. Samson, Lot #X3411.2006. Online at bitsavers.org
    • Angelo Papenhoff, retrocomputerist. Subway hack files (program and data) recovered from PDP-6 DECtapes. Files @.LISP, GRIND.TAPE, SUBWAY.D, SUBWAY.P, and TRAINS.DA1 in directory Subway. @.LISP is the PDP-6 LISP interpreter. For additional subway hack data, see the directory PSamsonV_SubwayData. .zip archive at pdp-6.net / samson_tapes.zip
    • Angelo Papenhoff, retrocomputerist. Source code reconstructed from @.LISP above. He also used as a reference LISP 131 from MIT, which, he notes, is unfortunately still in their archive and not public.) This source code, when assembled, exactly matches the original object code (excluding symbol table; also, no DDT included). Online at github.com/PDP-6/nts

      The lisp subdirectory contains source files lisp.x67 and lispd.x67; MACTAP.F68 and LPT.6 (in the syseng subdirectory) are also needed. Papenhoff says: "To build it, I used ITS and MIDAS 73 (also reconstructed from binary) to assemble and STINK 121 to link. You assemble and link the files in this order: LISPD X67, MACTAP F68, LPT 6, LISP X67 Different versions of MIDAS have different bugs and I've had to work around one in MIDAS 73 (noted in the source)."

  • Alan Bawden, archivist. Partial online archive of AI filesystem of ITS: The Incompatible Time Sharing System.
    • Original. As of August 2016, ftp://ftp.its.os.org/its/ai/ and http://www.its.os.org/ are unresponsive.
    • Mirror. http://pdp10.nocrew.org/its/its.os.org/ai/
    • In particular, the file -read-.-this- in .../ai/lisp.tgz says:

      Directories with MacLISP relevance are:
      LISP; -- FASL files
      LSPDMP; -- Dump files
      L; -- MIDAS sources for main lisp file, and for others
      COMLAP; -- COMpiler (with FASLAP) and LAP assembler
      LSPSRC; -- Various auxillary out-of-core files written in lisp
      NILCOM; -- More LSPSRC. Mostly lisp macros, etc.
      LSPMAI; -- Bug mail and other notices.
      LISP20; -- Stuff for 20X MacLisp

  • Bruce G. Baumgart, archivist. SAILDART Archives, Artificial Intelligence Laboratory, Stanford University. online
    • [MAC,LSP] MacLisp. Version adapted for SAIL WAITS timesharing system. Various dates, circa 1978. online
  • 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]

  • Phil Budne. Source files and text documents. Online at ftp.ultimate.com
    • These items were obtained from a TOPS-20 system at XKL.com:
      • MACLISP LISP sources including COMPLR.LSP lisp.tar.gz
      • MACLISP .DOC and .MID files including LISP-NEWS.DOC from April 28, 1981. lisp2.tar.gz
    • These items were obtained from tape images of Chemistry Department disk packs from the Stevens Tech TOPS-10 timesharing system:
      • MIDAS sources for building MACLISP version 804 and MIDAS. Circa June 1979. maclsp804.tar.gz
      • MACLISP version 861 (no additional MIDAS files) and Maclisp Reference Manual, March 3, 1979. maclsp861.tar.gz
  • Zane Healy. DEC PDP-10 Emulation page. online at avanthar.com:

Application source code

  • Terry Winograd. SHRDLU. Online at hci.stanford.edu
    "SHRDLU is a program for understanding natural language, written by Terry Winograd at the M.I.T. Artificial Intelligence Laboratory in 1968-70. SHRDLU carried on a simple dialog (via teletype) with a user, about a small world of objects (the BLOCKS world) shown on an early display screen (DEC-340 attached to a PDP-6 computer)."
  • Ira Goldstein, Henry Lieberman, Harry Bochner, and Mark Miller. LLOGO: An Implementation of LOGO in LISP.
    • MACLISP source code. Online at donhopkins.com
      "Here is the source code to LLogo in MACLISP, which I stashed from the MIT-AI ITS system. It's a fascinating historical document, 12,480 lines of beautiful practical lisp code, defining where the rubber meets the road, with drivers for hardware like pots, plotters, robotic turtles, TV turtles, graphical displays, XGP laser printers, music devices, and lots of other interesting code and comments." [Don Hopkins, Hacker News]
    • Slightly newer version from Lars Brinkhoff and his colleagues, who have it running on ITS (see https://github.com/PDP-10/its for details). Online at github.com

      Lars notes: "There isn't any documentation on how to compile it, but the TCL build script starts here: https://github.com/PDP-10/its/blob/master/build/lisp.tcl#L808

      The latest revision of the files have some modifications by me to make them work with the latest version of MacLisp. The original files are also available."

    • Logo Memo 11 (AI Memo 307A), Artificial Intelligence Laboratory, Massachusetts Institute of Technology, revised March 4, 1975. Online at dspace.mit.edu
  • [Macsyma to be supplied.]

 

Documentation

  • William A. Martin. PDP-6 LISP Input-Output for the Dataphone. Memo 79, Artificial Intelligence Project, Memorandum MAC-M-241, Project MAC, Massachusetts Institute of Technology, June 1, 1965, 6 pages. PDF at bitsavers.org

    "Abstract: A version of LISP 1.5 for the PDP-6 Computer has been extended to include IO through the dataphone. This makes possible communication between programs running in Project MAC time sharing and LISP programs running on the PDP-6. The method of handling input-output for the dataphone is similar to that for the typewriter, paper tape punch, and paper tape reader. Three useful LISP functions are presented as examples of dataphone programming."

  • William A. Martin. PDP-6 LISP Input-Output for the Display. Memo 80, Artificial Intelligence Project, Memorandum MAC-M-242, Project MAC, Massachusetts Institute of Technology, June 28, 1965, 22 pages. PDF at bitsavers.org

    "Abstract: An intermediate level language for display programming has been embedded in LISP 1.5. The language is intended as a basis for higher level display languages and includes facilities for both generation and analysis of display information. ..."

  • Peter Samson. PDP-6 LISP. Artificial Intelligence Memo 98, Project MAC Memo MAC-M-313, Massachusetts Institute of Technology, June 16, 1966, 11 pages. PDF at bitsavers.org

    "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. Some of the newer features (e.g., the display) are experimental and subject to change; in such respects this should not be regarded as a final document."

  • Anonymous. PDP-6 LISP (LISP 1.6) Revised. A.I. Memo No. 116A, Project MAC, April 1967, 23 pages, (corrected edition of Memo 116, January 1967). PDF / PDF at bitsavers.org
  • "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."

  • Roland Silver. Incorporating MIDAS Routines into PDP6 LISP. Systems Program Memo, Artificial Intelligence Memo 127, Project MAC, Massachusetts Institute of Technology, March 1967, 6 pages. PDF at bitsavers.org

    "Some PDP6 LISP users have felt a need for a way to incorporate MIDAS subroutines into LISP. LISP has been changed to let you do this, using files found on the LISP SYSTEM microtape."

  • Roland Silver. LISP Linkage Feature: Incorporating MIDAS Routines into PDP6 LISP. Systems Program Memo, Artificial Intelligence Memo 127A, Project MAC, Massachusetts Institute of Technology, October 1967, 5 pages (corrected edition of Memo 127, March 1967). PDF at bitsavers.org
  • John L. White. Additions to LAP. Artificial Intelligence Memo 132, Program Memo, Project MAC, Massachusetts Institute of Technology, 4 pages, July 1967. PDF at bitsavers.org
  • John L. White. Matrix Inversion in LISP. Artificial Intelligence Memo 136, PDP-6 Program Memo, Project MAC, Massachusetts Institute of Technology, July 1967, 2 pages. PDF at bitsavers.org

    "Very soon there will appear on the vision library tape a file named @IAS which is a collection of compiled SUBR's for performing general matrix row reduction and inversion."

  • Jon L. White. PDP-6 LAP. Artificial Intelligence Project Memo 152, Project MAC, Massachusetts Institute of Technology, January 1968, 10 pages. PDF at bitsavers.org
  • John White. Time-Sharing LISP for the PDP-6. Artificial Intelligence Memo 157, Project MAC, Massachusetts Institute of Technology, March 1968, 17 pages. PDF at bitsavers.org

    "This Memo. written in the style and convention of A.I. memo. No. 116A, may be considered an addendum thereto. It should prove to be a welcome updating on the LISP system."

  • Donald Eastlake III. ITS 1.4 Reference Manual. Artificial Intelligence Memo No. 161, MAC-M-377, Massachusetts Institute of Technology, June 1968, 83 pages. PDF at bitsavers.org

    ITS (Incompatible Timesharing System) was the operating system on which MacLisp was developed.

  • JonL White. A Temporary Updater for LISP Users. A.I. Internal Note, November 25, 1968. From Herbert Stoyan Collection on LISP Programming, Lot Number X5687.2010. PDF
  • D. Eastlake, R. Greenblatt, J. Holloway, T. Knight, S. Nelson. ITS 1.5 Reference Manual. Artificial Intelligence Memo No. 161A, MAC-M-377, Massachusetts Institute of Technology, July 1969, 180 pages. PDF at bitsavers.org Reconstructed text at sigfs.org via archive.org
  • Thomas O. Binford. Display Functions in LISP. Artificial Intelligence Memo No. 182, Project MAC, Massachusetts Institute of Technology, March 1970, 18 pages. PDF at bitsavers.org
  • John L. White. An Interim LISP User's Guide. Artificial Intelligence Memo No. 190, Project MAC, Massachusetts Institute of Technology, March 1970, 87 pages. PDF / PDF at bitsavers.org

    "The substance of this memo is to initiate the naïve LISP user into the intricacies of the system at the Project MAC A.I. Lab. ... At some undetermined time in the future a comprehensive document will be issued, consisting of an elementary introduction to LISP, a self-primer, the core of this document, and numerous reference appendices. The comprehensive guide will then replace A.I. memos numbers 116A, 152, 157, the LISP Progress Report, this memo and all informal notes and communications."

    The Notation section says: "'MACLISP' refers to the PDP/6 implementation of the programming language LISP in use at the Artificial Intelligence Group of Project MAC."

  • Jeffrey P. Golden. A User's Guide to the A. I. Group LISCOM Lisp Compiler: Interim Report. Memo No. 210, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, December 1970. PDF at bitsavers.org
  • David A. Moon, David P. Reed, and Ira Goldstein, Guy L. Steele, Alexander Sunguroff. LISP/MACLISP Reference Manual. Rough draft #9905, Massachusetts Institute of Technology, 1973. MACLSP.DBA [UP,DOC] at saildart.org
  • David A. Moon. MACLISP Reference Manual, Revision 0. Project MAC, Massachusetts Institute of Technology, April 8, 1974. From Herbert Stoyan Collection on LISP Programming, Lot Number X5687.2010. PDF

    "In 1973 and 1974, David Moon led an effort to implement MacLisp on the Honeywell 6180 under Multics. As a part of this project he wrote the first truly comprehensive reference manual for Maclisp, which became familiarly known as the 'Moonual'." [Steele and Gabriel 1993]

  • Anonymous. MacLISP Reference Manual. Project MAC, Massachusetts Institute of Technology, December 17, 1975. From Herbert Stoyan Collection on LISP Programming, Lot Number X5687.2010. PDF
  • Anonymous. MACLISP Reference Manual, March 6, 1976. LISP INFO file from MIT TECO EMACS Version 170. Online at pdp-10.trailing-edge.com
    • "This file is a fast edit of the MACLISP Reference Manual Dated March 6, 1976, so expect stuff to be out of date and to refer to non-existent page numbers. See other notes under Sources."

    From the same release: MACLISP-COMMANDS INFO file. Online at pdp-10.trailing-edge.com

  • MacLISP information from ITS AI:.INFO at avanthar.com
  • JonL White [JONL], Eric Rosen [ECR], Richard M. Stallman [RMS], Guy L. Steele [GLS], Howard I. Cannon [HIC], Bob Kerns [RWK]. LISP NEWS. MacLisp release notes.

    "This file contains in reverse chronological order the modifications to Maclisp over the years. Astute readers can find programming hints and obscure documentation here."

  • Anonymous. MacLISP Reference Manual. Project MAC, Massachusetts Institute of Technology, July 27, 1978 and August 3, 1978. From Herbert Stoyan Collection on LISP Programming, Lot Number X5687.2010. PDF
  • Bernard Greenberg. Notes on the Programming Language LISP. Student Information Processing Board, Massachusetts Institute of Technology, 1978. PDF at bitsavers.org
  • Anonymous. Maclisp Reference Manual, March 3, 1979. Online at avanthar.com
  • David S. Touretzky. A Summary of MacLisp Functions and Flags. Internal publication, Computer Science Department, Carnegie Mellon University. First edition, August 1979. PDF
  • LISP-FORUM@MIT-AI. August 1980 to September 1983.
  • Alan Bawden, Glenn S. Burke, and Carl W. Hoffman. Maclisp Extensions. Laboratory for Computer Science, Massachusetts Institute of Technology, July 1981. PDF
  • Richard C. Waters. GPRINT: A LISP Pretty Printer Providing Extensive User Format-Control Mechanisms. AI Memo 611, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, October 1981. Online at dspace.mit.edu
  • K. M. Pitman. The Revised MacLisp Manual.
    • "Saturday Morning Edition", M.I.T. Laboratory for Computer Science Technical Report MIT-LCS-TR-295, June 1, 1983.

      "Abstract [from multicians.org bibliography]: MACLISP is a dialect of Lisp developed at M.I.T.'s Project MAC (now the MIT Laboratory for Computer Science) and the MIT Artificial Intelligence Laboratory for use in artificial intelligence research and related fields. Maclisp is descended from Lisp 1.5, and many recent important dialects (for example Lisp Machine Lisp and NIL) have evolved from Maclisp. David Moon's original document on Maclisp, The Maclisp Reference Manual (alias the Moonual ) provided in-depth coverage of a number of areas of the Maclisp world. Some parts of that document, however, were never completed (most notably a description of Maclisp's I/O system); other parts are no longer accurate due to changes that have occurred in the language over time. This manual includes some introductory information about Lisp, but is not intended as tutorial. It is intended primarily as a reference manual; particularly, it comes in response to user's please for more up-to-date documentation. Much text has been borrowed directly from the Moonual, but there has been a shift in emphasis. While the Moonual went into greater depth on some issues, this manual attempts to offer more in the way of examples and style notes. Also, since Moon had worked on the Multics implementation, the Moonual offered more detail about compatibility between ITS and Multics Maclisp. While it is hoped that Multics users will still find the information contained herein to be useful, this manual focuses more on the ITS and TOPS-20 implementations since those were the implementations most familiar to the author."

    • "Sunday Morning Edition", December 16, 2007. Online at maclisp.info

 

Papers

  • Joseph Weizenbaum. The FUNARG Problem Explained. Massachusetts Institute of Technology, March 1968, 56 pages. From Herbert Stoyan Collection on LISP Programming, Accession number 102720700. PDF
  • Joel Moses. The Function of FUNCTION in LISP or Why the FUNARG Problem Should be Called the Environment Problem. AI-199, MAC-M-428, Project MAC, Massachusetts Institute of Technology, June 1970, 15 pages. PDF at bitsavers.org
  • Richard J. Fateman. Reply to an editorial. ACM SIGSAM Bulletin, Issue 25, March 1973, pages 9-11. ACM DL

    "This reports the results of a test in which a compiled MacLisp floating-point program was faster than equivalent Fortran code. The numerical portion of the code was identical and McLisp used a faster subroutine-call protocol." [Steele and Gabriel 1993]

  • Guy Lewis Steele, Jr. Data Representations in PDP-10 MacLISP. AI Memo 420, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, September 1977, 13 pages. PDF at bitsavers.org
  • Guy Lewis Steele, Jr. Fast Arithmetic in MacLISP. AI Memo 421, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, September 1977, 11 pages. PDF at bitsavers.org

    "This paper was presented at the MACSYMA Users Conference, Berkeley, California, July 1977."

  • Jon L. White. LISP: Program is Data: A Historical Perspective on MacLISP. Proceedings of the 1977 MACSYMA Users' Conference. NASA Scientific and Technical Information Office (Washington, D.C., July 1977), pages 181-189. PDF Entire proceedings at nasa.gov

 

Applications

  • See also [Martin 1965].
  • Adolfo Guzmán. Decomposition of a Visual Scene into Bodies. Artificial Intelligence Memo 139, Project MAC Memorandum MAC-M-357, Massachusetts Institute of Technology, September 1967, 47 pages. PDF at bitsavers.org

    "A shorter but improved version of this memorandum has been published: 6. Guzmán, A. Decomposition into Three-Dimensional Bodies. AFIPS Proceedings of the 1968 Fall Joint Computer Conference. Thompson Book Co., Washington, D.C."

  • Stephen Smoliar. EUTERPE-LISP: A LISP System with Music Output. Artificial Intelligence Memo 141, Project MAC, Massachusetts Institute of Technology, September 1967, 16 pages. PDF at bitsavers.org
  • Ira Goldstein. Pretty Printing : Converting List to Linear Structure. Artificial Intelligence Memo 279, Massachusetts Institute of Technology, February 1973. PDF / PDF at bitsavers.org

    "Pretty-printing is the conversion of the list structure to a readable format. This paper outlines the computational problems encountered in such a task and documents the current algorithm in use."

  • Ira Goldstein, Henry Lieberman, Harry Bochner and Mark Miller. LLOGO: An Implementation of LOGO in LISP. LOGO Memo 11, Massachusetts Institute of Technology.

    "This paper describes LLOGO, an implementation of the LOGO language written in MACLISP for the ITS, TEN50 and TENEX PDP-10 systems, and MULTICS. The relative merits of LOGO and LISP as educational languages are discussed. Design decisions in the LISP implementation of LOGO are contrasted with those of two other implementations: CLOGO for the PDP-10 and 11LOGO for the PDP-11, both written in assembler language. LLOGO's special facilities for character-oriented display terminals, graphic display 'turtles', and music generation are also described."

  • Richard Bogen, Jeffrey Golden, Michael Genesereth, and Alexander Doohovskoy. MACSYMA Reference Manual. The MATHLAB Group, Laboratory for Computer Science, Massachusetts Institute of Technology, Version 9, Second Printing, December 1977, v+308+x pages. PDF at bitsavers.org

 

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

  • Michael Levin. Proposed Instructions on the GE 635 for List Processing and Push Down Stacks. Memo 72, Artificial Intelligence Project, Memorandum MAC-M-183, Project MAC, Massachusetts Institute of Technology, September 18, 1964, 4 pages. PDF at bitsavers.org
  • Jerome C. Yochelson. Multics LISP. Unpublished, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1967.
  • See Moon 1974.
  • Bernard S. Greenberg. The Multics MACLISP Compiler : The Basic Hackery -- a Tutorial. Unpublished, December, 1977. Online at multicians.org
  • Alan Bawden, Glenn S. Burke, and Carl W. Hoffman. MacLisp Extensions. Project MAC Memorandum MAC-TM-203, July 1981. PDF

    "This document describes a common subset of selected facilities available in Maclisp and its derivatives: PDP-10 and Multics Maclisp, Lisp Machine Lisp (Zetalisp), and NIL. The object of this document is to aid people in writing code which can run compatibly in more than one of these environments."

  • See also: [Stallman 2002] under Emacs Lisp

 

Papers

  • Robert R. Fenichel and Jerome C. Yochelson. A LISP garbage-collector for virtual-memory computer systems, Communications of the ACM, Volume 12, Issue 11, November 1969, pages 611-612. ACM DL
  • Bernard Greenberg, with contributions from Daves Moon and Reed and Carl Hoffman. Multics MacLisp. Section 1.7.10 of: Tom Van Vleck, editor. Multics Software Features. Online at multicians.org

 

MDL (MUDDLE)

"I was not a member of the original eroup which labored for two years in the design and initial implementation of MUDDLE; that group was composed princirally of Gerald Sussman, Carl Hewitt, Chris Reeve, lave 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]

  • Greg Pfister. A MUDDLE PRIMER. Document SYS.11.01, Dynamic Modeling/Computer Graphics System, Massachusetts Institute of Technology, 5 May 1972. Includes cover memo and errata memo. Gift of Ruth E. Davis. PDF
  • Greg Pfister. A MEDDLE MANUAL. Document SYS.11.02, Dynamic Modeling/Computer Graphics System, Massachusetts Institute of Technology, 30 January 1972. Gift of Ruth E. Davis. PDF

    "The acronym, by the way, stands for Muddle Editor, Dynamic Debugger, and Little Else."

  • Bruce Daniels. Micro Muddle Manual. Document SYS.11.03, Dynamic Modeling/Computer Graphics System, Massachusetts Institute of Technology, 12 May 1972. A list of the name, type (SUBR or FSUBR), description, and number of arguments for each primitive in MUDDLE. Gift of Ruth E. Davis. PDF
  • Stu Galley and Greg Pfister. MDL Primer and Manual. Laboratory for Computer Science, Massachusetts Institute of Technology, 1977. This documents the MDL interpreter version 54 (ITS) and version 104 (TENEX), and is an earlier version of [Galley and Pfister 1979]. PDF at ifarchive.org
  • Joel Mayer Berez. A Dynamic Debugging System for MDL. Laboratory for Computer Science, Massachusetts Institute of Technology, 1978. Online at archive.org
  • Stu Galley and Greg Pfister. The MDL Programming Language. Laboratory for Computer Science, Massachusetts Institute of Technology, June 1979. This documents the MDL interpreter version 55 (ITS) and version 105 (TENEX and TOPS-20). PDF at ifarchive.org
  • David Lebling. The MDL Programming Environment. Technical Report 294, Laboratory for Computer Science, Massachusetts Institute of Technology, May 1980. Online at archive.org
  • Michael Dornbrook and Marc Blank. MDL Programming Language Primer. Laboratory for Computer Science, Massachussets Institute of Technology, 1980. PDF at ifarchive.org

 

ZetaLisp for Lisp Machines (CONS, CADR, Lisp Machines Inc., Symbolics, Inc.)

 

Source code

  • Brad Parker. MIT CADR Lisp Machine source code. Online at heeltoe.com

    "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."

  • TI Explorer Lisp Machine source code, circa 1991. Online at archive.org

    "The Texas Instruments Explorer is a family of Lisp Machine computers. These computers were sold by Texas Instruments in the 1980s. The Explorer is based on a design from Lisp Machines Incorporated, which is based on the MIT Lisp Machine. The Explorer was used for development and deployment of artificial-intelligence software.

    Notable is also the early use of the NuBus as the system bus for the Explorer computer family."

 

Documentation

  • Richard Greenblatt. The LISP Machine. Working Paper 79, M.I.T. A.I. Laboratory, November 1974. PDF at bitsavers.org
  • Tom Knight. CONS. Working Paper 88, M.I.T. A.I. Laboratory, November 1974. PDF at bitsavers.org
  • The Lisp Machine Group (Alan Bawden, Richard Greenblatt, Jack Holloway, Thomas Knight, David Moon, Daniel Weinreb). LISP Machine Progress Report. Memo No. 444, M.I.T. Artificial Intelligence Laboratory, Massachusetts Institute of Technology, August 1977, 29 pages. PDF at bitsavers.org
  • Thomas F. Knight, Jr., David A. Moon, Jack Holloway, and Guy L. Steele, Jr. CADR. AI Memo 528, Artificial Intelligence Laboratory, Massachusetts Institute of Technology.

    Abstract: The CADR machine, a revised version of the CONS machine, is a general-purpose, 32-bit microprogrammable processor which is the basis of the Lisp-machine system, a new computer system being developed by the Laboratory as a high-performance, economical implementation of Lisp. This paper describes the CADR processor and some of the associated hardware and low-level software.

    • May 1979, i+1 unnumbered page+42 pages. PDF at bitsavers.org

      This copy repeats page 17 twice and is missing pages 18 and 24.

    • March 31, 1981, i+79+8 unnumbered pages. PDF at unlambda.com
    • See also: Brad Parker. Some notes on the MIT CADR "principles of operation". October 17, 2004. Online at unlambda.com
  • Lisp Machine Manual.
    • Daniel Weinreb and David Moon. Lisp Machine Manual, Preliminary Version. MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, November 1978, 8+282 pages.
    • Daniel Weinreb and David Moon. Lisp Machine Manual, Second Preliminary Version. MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, January 1979, 5+283 pages. PDF
      • Includes: New Window System. May 30, 1980, 28 pages.
    • Daniel Weinreb and David Moon. Lisp Machine Manual, Third Edition. MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, March 1981, 471 pages. PDF at bitsavers.org (31MB)
    • Daniel Weinreb and David Moon. Lisp Machine Manual, Fourth Edition. MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, July 1981, 532 pages. PDF at bitsavers.org (31MB)
    • Daniel Weinreb, David Moon, and Richard M. Stallman. Lisp Machine Manual. Fifth Edition, System Version 92, MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, January 1983, 692 pages. PDF at bitsavers.org
    • Richard M. Stallman, Daniel Weinreb, and David Moon. Lisp Machine Manual. Sixth Edition, System Version 99, MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, June 1984.
  • Richard Stallman, Daniel Weinreb, and David Moon. Lisp Machine Window System Manual. Edition 1.1, System Version 95, MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, August 1983, 261 pages. PDF at bitsavers.org
  • Anonymous. ZetaLisp Reference Manual, Symbolics, Cambridge, MA, 1984. [Cited by HOPL.]

 

Papers

  • Howard I. Cannon. Flavors: A non-hierarchical approach to object-oriented programming. 1979 (revised 1992, 2003, and 2007). PDF
  • David A. Moon. Garbage collection in a large LISP system. In Proceedings of the 1984 ACM Symposium on LISP and functional programming (LFP '84). Association for Computing Machinery, New York, NY, USA, 235–246. ACM Digital Library

    "Abstract: This paper discusses garbage collection techniques used in a high-performance Lisp implementation with a large virtual memory, the Symbolics 3600. Particular attention is paid to practical issues and experience. In a large system problems of scale appear and the most straightforward garbage-collection techniques do not work well. Many of these problems involve the interaction of the garbage collector with demand-paged virtual memory. Some of the solutions adopted in the 3600 are presented, including incremental copying garbage collection, approximately depth-first copying, ephemeral objects, tagged architecture, and hardware assists. We discuss techniques for improving the efficiency of garbage collection by recognizing that objects in the Lisp world have a variety of lifetimes. The importance of designing the architecture and the hardware to facilitate garbage collection is stressed."

  • Anonymous. I-Machine Architecture Specification. Symbolics, Inc. Revision, 2, 17 December 1986. PDF at bitsavers.org

    The public name for the I-Machine was Ivory. "All the details [from Moon's paper] are in this document, which was written before silicon and was almost 100% correct (I did a lot of the implementation)." [Scott Cyphers, personal communication, 27 March 2021]

  • D. Scott Cyphers and David A. Moon. Optimizations in the Symbolics CLOS Implementation. Proceedings of the Third CLOS Users and Implementors Workshop, October 21, 1990, Ottawa, Canada. Online at csail.mit.edu

 

Emulators

 

Applications

  • See FRL under Franz Lisp below.
  • Mats Carlsson. YAQ - Yet Another QLOG. "A minimalistic implementation of Prolog with a Lisp syntax." UPMAIL (Uppsala Programming Methodology and Artificial Intelligence Laboratory), Uppsala University
    • Source code, 1982. Posted here by permission of Mats Carlsson. .tar.gz
    • Antti J Ylikoski. yaq83 files previously online at bluejay.mbnet.fi. .zip

 

Other links

 

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

  • Jon L White et al. VAX NIL source code, Release 0.286. Massachusetts Institute of Technology, May 1983. Provided by Josh Dersch. .zip archive

    nill-stuff3/nil286/nil appears to be a comprehensive snapshot of VAX NIL Release 0.286. nill-stuff3/nil286/format is the pretty printer, and nill-stuff3/nil286/lsb is LSB, or Layered System Building — tools for building large applications (see Glenn Burke. LSB Manual. MIT/LCS/TM-200, June 1981). nill-stuff3/nil286/mycin has what looks like some examples, including a "Mini-MYCIN”.

    nil-stuff and nil-stuff2 appear to be earlier and not as complete as nill-stuff3, although they do contain more “example” things including Mats Carlsson’s YAQ (a small Prolog written in Lisp).

 

Documentation

  • Brent T. Hailpern and Bruce L. Hitson. S-1 Architecture Manual. Technical Report 161 (STAN-CS-79-715), Department of Electrical Engineering, Stanford University, January 1979. PDF at bitsavers.org
  • Glenn Burke. Introduction to NIL. Laboratory for Computer Science, Massachusetts Institute of Technology, March 1983. PDF
  • Glenn S. Burke, George J. Carrette, and Christopher R. Eliot. NIL Notes for Release 0.259, Laboratory for Computer Science, Massachusetts Institute of Technology, June 1983. PDF
  • Glenn S. Burke, George J. Carrette, and Christopher R. Eliot. NIL Reference Manual corresponding to Release 0.286. Report MIT/LCS/TR-311, Laboratory for Computer Science, Massachusetts Institute of Technology, January 1984. PDF

 

Papers

  • Steven Correll. S-1 uniprocessor architecture (sma-4). Volume I, Chapter 4, The S-1 Project 1979 Annual Report, Lawrence Livermore Laboratory, Livermore, California, 1979.
  • Jon L. White. NIL: A perspective. Proceedings of 1979 MACSYMA Users' Conference, Washington, D.C., June 1979. PDF
  • Rodney A. Brooks, Richard P. Gabriel, and Guy L. Steele Jr. S-1 Common Lisp Implementation. Proceedings of the 1982 ACM symposium on LISP and functional programming, Pittsburgh, 1982, pages 108–113. ACM DL
  • Rodney A. Brooks, Richard P. Gabriel, and Guy L. Steele Jr. An optimizing compiler for a lexically scoped LISP. Proceedings of the 1982 Symposium on Compiler Construction, Boston, June 1982, pages 261-275. ACM DL
  • Mark Smotherman. S-1 Supercomputer (1975-1988). Web site, last update April 2013. Online at clemson.edu
  • NIL is discussed in this article/response pair:

 

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

  • John K. Foderaro, Keith L. Sklower, and Kevin Layer. The Franz Lisp Manual. University of California, Berkeley, 1980. Revised 1981, June 1983. PDF
  • John K. Foderaro, Keith L. Sklower, and Kevin Layer, Richard J. Fateman, Steven M. Haflich, and Charles A. Cox. FRANZ LISP Reference Manual. Franz Incorporated. Opus 43, March 1987. Online at Internet Archive

 

Applications

  • R. Bruce Roberts and Ira P. Goldstein. Frame Representation Language (FRL). Inspired by Minsky's development of frame theory.

 

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

  • Scott E. Fahlman et al. Source code for Spice Lisp, Carnegie-Mellon University, circa 1984. .tar.gz

    The files bear the legend:

    ;;; This code was written as part of the Spice Lisp project at
    ;;; Carnegie-Mellon University, and has been placed in the public domain.
    ;;; Spice Lisp is currently incomplete and under active development.
    ;;; If you want to use this code or any part of Spice Lisp, please contact
    ;;; Scott Fahlman (FAHLMAN@CMUC).

    "Of course, since the code is explicitly public domain, you may use it however you like, with my blessing. Historical preservation is a good thing." [Fahlman, personal communication, 20 May 2020]

 

Documentation

  • S. E. Fahlman. Spice LISP Status. Department of Computer Science, Carnegie-Mellon University, Pittsburgh, March 31, 1981. [From Stoyan 1988]
  • G. L. Steele, Jr. Spice Lisp Reference Manual. Technical Report, Carnegie Mellon University (interim Spice Lisp documentation), 1981. [Cited in: David S. Touretzky. A comparison of reduction in APL with polyarity in LISP. Proceedings of the International Conference on APL, 1983, pages 259-263. ACM DL]
  • S. E. Fahlman, G. L. Steele, G. E. Kaiser, W. van Roggen. Internal Design of Spice Lisp. Doc. S026, Spice Project, Department of Computer Science, Carnegie-Mellon University, Pittsburgh, Pennsylvania.
    • December 20, 1981. Computer History Museum: gift of Larry Masinter, Lot X6058.2011. PDF
    • July 19, 1982. PDF
  • Skef Wholey, Scott F. Fahlman, and Joseph Ginder. Revised Internal Design of Spice Lisp. Spice Document S026 [Revised], Carnegie-Mellon University, December 20, 1983. Gift of Jon L White. PDF
    Is this the document referred to as S226 in [Wholey and Fahlman 1984]?
  • Scott E. Fahlman and Monica J. Cellio, editors. Spice Lisp User's Guide. Spice Project, Computer Science Department, Carnegie Mellon University, August 28, 1984. PDF at bitsavers.org

    "Companion to the Mary Poppins Edition of the Common Lisp Manual"

 

Papers

  • Joseph R. Ginder. An Analysis of the Spice Lisp Instruction Set. Spice Document Sxxx, Spice Project, Department of Computer Science, Carnegie-Mellon University, January 18, 1983. PDF
  • Skef Wholey and Scott E. Fahlman. The Design of an Instruction Set for Common Lisp. Proceedings of the 1984 ACM Symposium on LISP and Functional Programming, Austin, Texas, pages 150-158. ACM DL

 

3-Lisp

"3-lisp is a dialect of Lisp designed and implemented by Brian C. Smith as part of his PhD. thesis Procedural Reflection in Programming Languages (what this thesis refers to as 'reflection' is nowadays more usually called 'reification'). A 3-lisp program is conceptually executed by an interpreter written in 3-lisp that is itself executed by an interpreter written in 3-lisp and so on ad infinitum. This forms a (countably) infinite tower of meta-circular (v.i.) interpreters. reflective lambda is a function that is executed one tower level above its caller. Reflective lambdas provide a very general language extension mechanism." [Danilov 2022]

Source code

  • Brian Cantwell Smith, author, and Nikita Danilov, editor. Original source transcribed from Smith's thesis in CADR machine Lisp (a Maclisp dialect). Also a Common Lisp adaptation by Danilov. Online at github.com/nikitadanilov/3-lisp

Papers

  • Brian Cantwell Smith. Procedural reflection in programming languages. PhD thesis, Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1982. Online at dspace.mit.edu
  • Nikita Danilov. 3-lisp: an infinite tower of meta-circular interpreters. a very occasional diary (blog), 22 August 2022. Online at www.cofault.com

 

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]

  • John Allen. TLC LISP Documentation: Primer, Metaphysics, and Reference Manual. The LISP Company, 1985. PDF
  • See also various documents and listings in the Computer History Museum catalog.

 

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.

  • Stephen E. Bacher. ZIL: an implementation of Lisp on MVS/XA at C. S. Draper laboratory. SIGPLAN Lisp Pointers Vol. 1, Num. 2 (June-July 1987), pages 12–21. ACM Digital Library

 

« March 2024 »
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
31
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: