A Cornerstone interpreter and the mu machine

Sunday, April 5, 2026

Comments: 2 (plus live)   (latest 8 hours later)

Tagged: infocom, cornerstone, mu-machine, linchpin, zilf

I'm going to tell this one out of order, because it's not April Fool's Day any more.

Tara McGrew, the author of the modern ZILF compiler, has released Linchpin, a brand-new implementation of Infocom's "mu machine". That's the virtual machine which powered Cornerstone.

A terminal-window screen displaying a database view. The upper lines are a menu with commands like UPDATE, SELECT, and VIEW. The header below these says "VIEW CUSTOMER / 15 Records / Not sorted". Below that is a list of fictitious businesses like "Newton Auto Rentals" and "Watertown Car Center". Cornerstone 5.20, displaying its sample database, running in the Linchpin interpreter.

...You all know about Cornerstone, right? Infocom's first and last business product? Ate up all their game profits at exactly the point when the company couldn't afford it? Go read the Digital Antiquarian article; Jimmy tells it better than me.

Anyhow. Since the 1990s, Infocom fans have put uncountable nerd-years into supporting the Z-machine. Almost nobody has looked at Cornerstone. It just wasn't a fun idea. John Elliott did some reverse-engineering work (see his comments in the DA post) but didn't get very far.

As of last week, that has changed. It's a new age for aficionados of failed 1985 database products! Linchpin includes a working interpreter for Cornerstone's VM. It also includes an assembler, so you can create new programs for that VM.

As a final touch, Tara updated ZILF with a new back-end. It can now compile ZIL code directly to the Cornerstone VM. I mentioned April Fool's Day? On April 1st, Tara announced that she had found not only the unreleased Atari ST port of Cornerstone, but a version of Zork that runs on the mu machine.

This was, to be clear, a joke. Atari Cornerstone remains a lost project, and Infocom never considered cross-compiling its games. However, the Zork disk and the Cornerstone disk exist; Tara created them. You can get them running on an Atari emulator, or an actual Atari ST if you feel ambitious.

(Note: Linchpin is available, but I don't see the updated version of ZILF yet.)

That's the news flash. Now I shall take questions.


Yes, you in the back. Yes? Well, if you bought Cornerstone...

Oop, sorry -- let me repeat the question.

Why do I keep saying "mu machine"?

If you bought Cornerstone back in 1985, you could see that the DOS executable was called MME.EXE, and one of its data files was CORNER.MME. The MME command is mentioned in the Cornerstone manual as well. So the name "MME" was clearly a thing. But we didn't know what it meant.

However, after Tara's post, I dug into my backlog of Infocom data to see if I could find anything about Cornerstone. I didn't find much; what's been preserved is from Infocom's game division, not the business division.

However, I did find this quote, apparently intended for a Status Line article that never came to be:

Currently, we have three types of interpreters: ZIP (for Zork Interpretive Program) which runs the games, MME (for Mu Machine Emulator) which runs Cornerstone, and DIP (for Display Interpretive Program) which runs Fooblitzky.

Gotcha! I guess we can refer to μ-code now.

(Modulo arguments about capitalization. We write "Z-code", so shouldn't we write "Μ-code" with a capital Mu? It's only a wee bit confusing...)

(The name "DIP" turned up a few years ago when I was collecting Infocom's interpreter code. See here for their original DIP interpreter implementation. There are no modern open-source DIP interpreters, as far as I know. Maybe next April.)

What is the mu machine good for?

I don't know! I've barely looked at the interpreter code. Go read John Elliott's overview or this partial instruction set description.

At a glance, it's a subject-neutral low-level VM. Most of the opcodes manipulate bytes and memory arrays. A few are dedicated to string comparison. It supports reading and writing files. It prints text directly to the screen (presumed to be a terminal-style grid); there's some stuff about dividing the screen into panes which can be scrolled independently. (You can see this in how Cornerstone runs.)

The VM was not specifically built to be a database. If Cornerstone had been a landmark hit, Infocom would have been well-poised to build "Infocalc", "Infowrite", and the other business ideas they had tossed around.

One important note: the keyboard-read opcode (KBINPUT in John Elliott's list) is a poll rather than a blocking read. This means that the interpreter busy-spins as it waits for input. I guess that made sense in the DOS era, but it's poor sportsmanship these days. A modern implementation should probably have a 5ms delay or something to keep the heat down.

Where can you download Cornerstone itself?

Until last week, I'd never gone looking for Cornerstone. (See "not fun" above.) But now of course I had to.

The Internet Archive has a disk image of Cornerstone 5.1 in this collection. Actually it's five disk images, tagged as "Program Disk", "Sample Database", "Client Tracking", "Beginner's Guide 1", and "Beginner's Guide 2".

For added fun, the "Program Disk" is served in three formats I never heard of: .86f, .mfm, and .tc. Sorry -- I'm sure they're old hat to you, but I'm new to the world of PC emulation. But I managed to get the files off. I've now posted these (as regular easy-to-use .zip files) to my Infocom Collection page.

Then I went hunting around the Internet, and hey look -- some abandonware site had a disk image for Cornerstone 5.20. So I added that one too. (Only four disks this time. It looks like the two "Beginner's Guides" have been combined, but I haven't tried them out.)

Both versions can be fired up in Linchpin; see my forum post for detailed instructions. Note that I ran into some bugs when trying to ADD-RECORD. No doubt the interpreter will get some updates as people break it in.

If you know of disk images of any other versions, by the way, drop me a line. I guess I'm collecting them now.


Comments from Mastodon


Comments from Mastodon (live)

Please wait...