MIT CADR simulator

This is a program was originally written by Brad Parker, and is designed to emulate the MIT CADR microprocessor and hardware peripherals. The CADR is a second generation MIT Lisp Machine, and a good description can be found at

There is sufficient hardware support for the disk and network to provide a reasonably functional Lisp Machine experience.

Getting started (quickly)

Please see the README in the l project for how to quickly get up and running.

Configuration of usim (usim.ini)

When usim starts, it tries to read usim.ini which is a INI style configuration file consisting of sections, and key/value pairs.

usim section

ucode section

chaos section

disk section

trace section

idle section

kbd section

This maps X11 keys to a corresponding key in the simulator. The left-hand side is an X11 key name, the right-hand side is a Lisp Machine character name that will get inserted.

For example, to map a few host Fn-functions keys to provide access to keys that are not available on PC keyboards:

F1 = escape
F2 = system
F3 = network
F4 = abort
F5 = clear
F6 = help
F7 = call
F11 = end
F12 = break

To insert the alpha character when pressing a key that is mapped to Alpha in X11:

Greek_alpha = alpha

kbd.modifiers section

This maps X11 modifiers to the corresponding bucky key in the simulator. The left-hand side is an X11 modifier name (Mod1, Mod2, ...), the right-hand side is a corresponding to a Lisp Machine bucky key.

Not all bucky keys are supported by all keyboard types. There is also no support currently to differentiate between left and right bucky keys.

Available modifier masks from X11 are: Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, Mod5.

Available bucky keys: Shift, Top, Control, Meta, ShiftLock.

Cadet specific bucky keys: ModeLock, Greek, Repeat, AltLock, Hyper, Super.

Simulator keyboard bindings

All keys have been mapped so that they should work mostly as advertised. Not all keys have been mapped to the host; e.g., Call or Altmode on the Knight.

X11 Modifier have been mapped as follows, depending on the type of Lisp Machine keyboard currently in use:

Host Knight Cadet
Shift Shift Shift
Lock Shift Lock Caps Lock
Control Control Control
Mod2 (Alt) Meta Meta
Mod4 (Super) Top Top

Some additional keys that are hard to type, or do not have a corresponding key on a normal PC keyboard have been mapped as well.

Host Knight Cadet
F1 Top-Escape System
F2 Top-Break Network
F3 n/a Status
F4 n/a Terminal
F5 Top-H Help
F6 Clear Clear-Input
F7 Break Break
------------ ---------- ------------
Page Up Top-Call Abort
Page Down Resume
Top-CR End

What programs are here?

Debugging utilities:

Release History

v0.10 - TBD

v0.9 - Minor speedups. Mac OSX (little endian) fixes. Warm start support (usim.state). Mouse/microcode synchronisation (thanks to Devon for the idea)

v0.8 - Speedups and bug fixes. chaosd/FILE server supports rebuilding sources from server. Can now resize screen.

v0.7 - Added raw X11 support. Bjorn Victor's new keyboard configuration code. Diskmaker now takes a template file and will show info on existing disk images.

v0.6 - Better network support.

Standing on the shoulders of giants

I (Brad Parker) would like to thanks the following people for helping me on this, er, project:

Without their support or encouragement I would probably not have done this. Certainly if Al had not sent me the PROM images I would never have started. And without Daniel's box-of-tapes I could never have succeeded. RG offered some good explanations when I was confused. TK and Howard were extremely supportive at the just right moment (and answered a lot of email). George offered many good suggestions and answered lots of questions. Steve helped me locate missing pages from "memo 528". Alastair did some amazing work on several Explorer emulators. Bjorn has used the code, offered many suggestions, fixes and improvements. And John's office is where I first saw a 3600 console and said, "what's that?".

Appendix A: Dump file format

The dump file is a sequence of 32 bit words. It starts with one word of magic ("LDMF"), followed by a word of the current version (0x0001 at the moment). It then consists of a sequence of segments. Each segment starts with a one-word tag (four ASCII letters), then a one-word length, then words of data.

At the moment, the following segments are dumped:

Any program reading or writing dump files should just ignore any unknown segments.