LISP implementations on small machines

Paul Koning paulkoning at
Thu Oct 3 08:50:34 CDT 2019

> On Oct 2, 2019, at 3:02 PM, Rich Alderson via cctalk <cctalk at> 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.

While we now think of "register" as a specific bit of hardware distinct from memory, that isn't necessary.  The term makes perfect sense as a small set of storage elements that are treated differently than main memory in the instruction set.  For example, the IBM 1620 has no registers (the ISA only references main memory).  Some early machines, the PDP-6 I believe is an example, have "registers" in the ISA but they actually correspond to specific parts of main memory.  Ditto the Philips PR-8000, which has 8 sets of 8 registers (one set for each interrupt priority level) actually implemented in locations 0-63 of main memory.

In a 1948 computer architecture course. Adriaan van Wijngaarden referred to "fast memory" for what we now call registers; that document in effect is an early discussion of memory hierarchy.


More information about the cctech mailing list