Computerphile
July 28, 2026
TL;DR
The PDP-6, built in only 23 units, was architecturally optimized for Lisp by splitting its 36-bit word into left and right halves to efficiently implement car and cdr operations, making it a sibling machine to the language it was designed to run.
“Only about 23 were built. And so I had to create my own in software.”
— Speaker
“I don't think it's acceptable to not have a PDP-6 in the living room.”
— Speaker
“Lisp and the PDP-6 are actually siblings in this PDP-6 Lisp. They are kind of siblings because the MIT hackers were writing the Lisp, developing this Lisp on a blackboard like on campus on MIT. And they would drive to DEC while they were building the first PDP-6.”
— Speaker
“To me this is poetry. It's very short, sweet, succinct code.”
— Speaker
1. Introduction & Emulation Project
The speaker describes being inspired by Steven Levy's Hackers book to recreate the PDP-6, of which only 23 were built; he built a second-generation software emulator with graphical peripheral display including tape drives, teletype, vector display, and paper tape reader/punch.
2. PDP-6 Design Goals & Lisp Sibling Relationship
The PDP-6 was engineered for three goals: time-sharing, floating-point scientific computation, and efficient Lisp execution; MIT hackers developed Lisp on campus while simultaneously debugging code on DEC's unfinished PDP-6 prototype, creating a co-evolutionary relationship.
3. Loading and Running 1966 Lisp Demo
The speaker demonstrates using TECO text editor and a light-pen interface to load a Lisp program from tape unit four, then loads the 1966 Lisp version from tape unit one (recovered from a deck tape image in binary form) and executes simple factorial and greet functions.
4. Car and Cdr Origins on IBM 704
Car and cdr were named after IBM 704 instruction word fields (content of address field and content of decrement field of a register), not cryptic abbreviations; the 704's 36-bit word was split into four fields allowing two addresses per instruction word.
5. PDP-6 Architecture for Efficient List Operations
The PDP-6 simplifies the 704 design by splitting its 36-bit word into just two 18-bit halves for left (car) and right (cdr) values, enabling cons cell pairs with dedicated half-word instructions; the speaker displays assembly code implementing car/cdr chains as single-page implementations.
6. Lisp List Structure Navigation
Lisp uses permutations of car and cdr names (cdr, cadr, caddr, caadr, etc.) to navigate nested list structures up to four levels deep; extracting the second element from a list combines cdr (tail) and car (head) operations.