Main »

Cadr

Retrocomputing - MIT CADR Lisp Machines

CADR

CADR Emulation

updated 11/11/2006

I took the red pill... two, in fact :-)

You can find the MIT CADR Lisp Machine Source code here.

This a software emulation of MIT CADR lisp machine. It's basically a program to run the lisp machine microcode. The emulator includes support for the keyboard, mouse and disk so that it can boot from an original lisp machine 'load band' (a load band is basically a disk image of memory pages). Several load bands and micrcode images are provided as well a program to make complete disk images.

The emulator runs pretty reliably and includes network support for Chaosnet. A basic chaosnet file server is included.

News

It boots a load band, uses the network & the FILE server!

Mac OS X Version! Win32 Version!

08/07/06
CADR usim v0.9 - fixed Mac OSX little endian support; now usim and the chaosd file server work. Added code to sync the SDL mouse with the microcode. The mouse now stays with cursor. Add ability to save the memory state (-S) and then do warm start (-w). Warm start get the machine running instantly instead of the impossibly long delay you get on cold boot. Includes some simple speed ups.

Included in the disks/ subdirectory are also some LMFS FILE partition images with the 78.48 and System 99 sources. There is a README file which describes how to install the file partitions into a disk image.

In the <tt>new/</tt> directory are some lisp files which will allow you to resize the screen (statically) and fix the date display on the who line.

07/11/06
CADR usim v0.8+ - more bug fixes and speedups. chaos code now supports (si:recompile-world). Fixed long standing bug which overflowed cycle counter and crashed emulator. New improved diskmaker. chaosd works better. you can resize the screen now.

12/15/2005
Fixed ALU bug which seems to have been causing crashes in the scheduler. Now should stay up much longer. I was able to load and assemble the 841 microcode, for example.

12/13/2005
New chaos file server code. easier to use, better README, bug fixes.

The network daemon now starts the required servers so you can access the linux file system via chaosnet. Nice for recompiling sources and running demos.

12/12/2005
V0.7: Finally got OS X (10.4) version working. Some speedups. Improved diskmaker. Bjorn's new keyboard mapping code. Updated README.

10/24/2005
V0.6: I built a version of the CADR emulator for Win32. The zip file contains the binary executable and all the files you need. Be warned, however, it creates a big window. The win32 version does not currently support networking.

10/04/2005
New release of CADR emulator (V0.5) with Chaos networking and FILE server

Bjorn Victor has been helping me debug the chaos code and enhance the emulator. It now will talk to the FILE server and read and write files from a linux host. It's still fragile but it works enough to experiment with. The emulator is more stable now and support C-M key combinations. You can debug, compile functions and run code.</p> <p>Start the chaosd and then server. The server will start the FILE program when the first question comes in. I use this sequence to set up the file system

(login 'name t)
(si:set-sys-host "server" ':unix 0404 "//")

This command will take a while to complete (2-3 minutes). Once it's working you can start emacs (F2-e) and then open a file (C-x C-f server:/tmp/filename).

Ah - the moment I've been waiting for. The original lisp code in zwei, on the screen!

You can also make a local file system in the FILE partition with (lmfs:fsmaint-fs-initialize) Use the file system editor to make a directory to save your files in.

Obligatory screen shot:

CADRemulatorscreenshotshowingTRAP
CADRemulatorscreenshotshowingherald
ZMACS running on CADR
Another showing lisp and more output

10/02/2005
Released the MIT CADR LispM source code.

9/29/2005
I've been working on an automated conversion of the original CADR schematics to verilog. After a long delay (read real work) it's starting to run and gets about 1000 instructions into the boot prom.

Also Bjorn Victor has taken a interest and has been extremely helpful finding bugs and giving me patches. With his help we have the simulator working on the network and I'm working on a FILE server. We've fixed a few bugs and sped things up a little and it's getting much better.

10/21/2004
I've been working on a emulator of the MIT CADR. Basically a program to run its microcode. It is now running to the point where it runs a load band. There is basic display, mouse and keyboard support. There is some code for the chaosnet interface but it's not (yet) wired into the real network.

The emulation is still a bit raw. I fixed a long standing bug in the divide logic which caused the dates to be wrong and floating math to be incorrect (i.e. 1.1 printed as 0.4).

The microcode (as you might imagine) takes advantage of many "features" of the hardware, some of which are subtle. I hope to do a verilog version of the hardware next and that will no doubt uncover a few of the things I missed. I wanted a clunky "C" version first, however, to verify the basic notions. And, I wanted a place to run zetalisp :-)

The source tar file includes a prom binary from a actual CADR. The disk image file has a label, microcode and load band. It looks like a Trident T-300 disk.

There are several utilities for making disks and looking inside load bands.

I'm written a small questions/errata page on AI Memo 528, please comment on it if you have used a CADR and/or know the architecture.</p> <p>Below is also a large .pdf (11mb) of the AI labs "memo 528" which describes the CADR. Some some reason the other on-line versions stop after page 42 and are missing page 18. This version is 75 pages.</p> <p>This version of the emulator is just a quick and dirty hack intended to prove out the concept. It's not intended to be pretty or fast - just accurate. It seems to run at about the same speed or slightly faster than an actual CADR.

And please feel free to email diffs :-)

Downloads

CADR Emulator files

Disk Image files

Other Files

CADR Docs

CADR Hardware