Thanks for that bit of historical information. Things always make more sense in context.
When I learned lisp on a B6700 it was hard to understand and harder to program. With this
bit of context lisp now makes a lot more sense, and looking back if I knew this then I?m
sure I would have grasped the language much more quickly.
David
On Oct 2, 2019, at 12:02 PM, Rich Alderson via cctech
<cctech at classiccmp.org> wrote:
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
misstated.
Rich
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.