LISP implementations on small machines

Rich Alderson RichA at
Wed Oct 2 14:02:28 CDT 2019

From: Mark Kahrs
Sent: Tuesday, October 01, 2019 7:24 PM

> The first implementation was done for the 7090 by McCarthy (hence CAR and
> CDR --- Contents of Address Register and Contents of Decrement Register).

In the 70x series of IBM scientific systems (704, 709, 7040, 7090, 7044, 7094),
the word "register" referred to memory locations rather than to the accumulator
or multiplier/quotient.  Each memory register was 36 bits long, and could be
treated as 4 fields: A 15 bit address, a 15 bit decrement, a 3 bit tag, and a
3 bit index selector.

In the earliest implementation of LISP, there were 4 functions which returned
the different parts of a register: CAR, CDR, CTR, and CIR.  These were
abbreviations for "Contents of the {Address, Decrement, Tag, Index} PART OF THE
Register", not "Contents of the {Address, Decrement} Register" as is so often


NB: Information from a talk given on the history of Lisp by Herbert Stoyan at
the 1984 ACM Conference on Lisp and Functional Programming Languages, and later
verified by personal inspection of the code.

More information about the cctech mailing list