THE MACHINES · CADR, MIT’S LISP MACHINE
CADR
The CADR is a 32-bit microcoded processor built at the MIT Artificial Intelligence Laboratory around 1978, and published as AI Memo 528 in 1980.
It is the machine the Lisp Machine system was written for. The drawings below are read from MIT’s own files.
PROCESSOR 32-bit, microcoded CONTROL 48 bits x 16K words CYCLE 145 ns BUSES Xbus and Unibus BUILT about 30
01 / A LISP MACHINE
Built at MIT
to run Lisp.
A screen, a keyboard, a mouse and a network.
And the system on it all written in Lisp.
The CADR is a computer built at the MIT AI Lab to run Lisp. It was one person’s workstation: a screen, a keyboard, a mouse and a network, and the system on it — the windows, the editor, the network code — was all written in Lisp.
Tom Knight, David Moon, Jack Holloway and Guy Steele drew it in about 1978. MIT built about thirty of them, and the first Lisp Machines LMI and Symbolics sold were built on it.
MIT’s schematics, wire lists, microcode and software for it survive. muir-sim simulates it from them, and muir-fpga puts it in the fabric of FPGA boards.
02 / THE CAGE AND ITS TWO BUSES
The whole machine.
03 / CONTROL AND DATA PATHS
The processor.
04 / ONE MICROCYCLE
The clock.
05 / WHAT THE PROCESSOR RUNS
The microinstruction.
06 / WHAT ITS MICROCODE INTERPRETS
The macroinstruction.
07 / VIRTUAL TO PHYSICAL
The map.
08 / THE ADDRESS SPACE
What is where.
09 / A TRIDENT PACK
The disk.
10 / THE SCREEN AND ITS FRAME BUFFER
The display.
11 / KEYBOARD, MOUSE AND CLOCKS
The I/O board.
12 / LAMPS AND ONE BUTTON
The light panel.
13 / ONE CADR DEBUGGING ANOTHER
The debug cable.
14 / FROM MIT’S CAD FILES
Seven netlists.
Each board as a netlist: every chip on it and every wire between them, read out of MIT’s own CAD files. They are what muir-sim’s chip engine simulates.
Parts in a whole machine — one memory board on the Xbus and both TV boards, the SIMPLE TV and the color TV, and 7,224 with all thirty-two memory boards.
Not drawn by hand. Pulled out of MIT’s own CAD files, then held pin for pin to MIT’s wire list for the same board.
| NETLIST | BOARD | PARTS |
|---|---|---|
| CADR.netlist | Processor and control store, two boards in the one file | 985 |
| BUSINT.netlist | Bus interface | 176 |
| CADRM.netlist | Main memory, 64K words a board, 32 on the Xbus for 2M words | 168 |
| CADRIO.netlist | I/O board: keyboard, mouse, clocks, the serial port, and the Chaosnet interface, which is the other half of the same board | 173 |
| CADRDC.netlist | Disk controller | 171 |
| SIMPLETV.netlist | The standard black-and-white TV, which is MIT’s word for the screen | 171 |
| LISPMTV.netlist | The LISPM TV in its four-bit build, which replaced the SIMPLE TV in December 1980; strapped to the color address it is the color TV as well. The eight-bit build is not built | 172 |
And the eighth, the disk multiplexor’s, which is fitted only when a run asks for it.
15 / RUNNING IT
In software,
and in fabric.
muir-sim runs the CADR as cadr, on three engines down to every chip, and boots MIT’s System 100 on it: build and boot. muir-fpga puts it in the fabric of FPGA boards. Either one gets its files and the time from ozd, its associated machine, over the Chaosnet.
16 / SOURCES
Where each drawing
came from.
Each drawing above was read from the sources listed here. MIT’s files are named as muir-sim keeps them, under mit/. Numbers written with a leading 0o are octal, which is how MIT writes an address.
| Figure | Read from |
|---|---|
| the whole machine | MIT’s busint.erface, xspec.text.3 and the three wire lists; muir-sim’s data/cables.txt; AI Memo 528 for the interrupts, the SPY bus and the Unibus’s address bits; muir-sim’s docs/machine.md for the color TV |
| the processor | AI Memo 528; MIT’s two print sets, cadr.book and icmem.book, page by page, and cadr/ir.bits; muir-sim’s data/CADR.netlist for what crosses the backplane, and its src/rtl.rs and src/machine.rs |
| one microcycle | AI Memo 528, and the CLOCK1 delay-line taps as muir-sim’s clock.rs has them |
| the microinstruction | MIT’s cadr/ir.bits, and muir-sim’s isa.rs for the bit ranges |
| the macroinstruction | MIT’s sys/ucadr/uc-parameters.lisp and uc-macrocode.lisp, sys/sys2/disass.lisp, sys/man/code.text |
| the map | AI Memo 528, muir-fpga’s docs/map.md, MIT’s VMEM schematics |
| the address space | MIT’s sys/doc/unaddr.text, muir-sim’s busint.rs, muir-fpga’s cadr_xbus_decode.sv |
| the disk | MIT’s sys/doc/disk.text, and muir-sim’s dm.rs for the multiplexor |
| the display | MIT’s cadrtv/lmtv.order and shwarm.lisp, muir-fpga’s docs/tv.md |
| the I/O board | muir-fpga’s docs/io-board.md, MIT’s sys/io1/ukbd.lisp and cadrio schematics |
| the light panel | MIT’s cadrwd/icmem3.wlr, connector 1AJ2 pin by pin; AI Memo 528 |
| the debug cable | muir-fpga’s docs/debug-cable.md, MIT’s cadr/ir.bits and the DBGOUT and DBGIN schematics |
The sources themselves, file by file, are listed in muir-fpga’s docs/cadr.md and muir-sim’s docs/sources.md.