The Blue Book VM

A long, long time ago (in the summer of 1984) I wrote a Smalltalk-80 Virtual Machine in C (copious detail here). It was my M.Sc. project at the University of Manchester. I had never written any Smalltalk code before then, nor used a Smalltalk system, but I had read the August 1981 issue of Byte , a special issue on Smalltalk (which I still own). By pure coincidence it was the first issue of Byte I'd ever purchased. I had to figure out how to write the VM from the Smalltalk-80 books, especially the "Blue Book" and the "Green Book", and the documentation that accompanied the Xerox Smalltalk-80 image. My supervisor, Steve Holden, had visited PARC and seen Smalltalk running, and ordered a copy of the image. I knew nobody else who had ever seen the system, or had written a program in it. Few people I knew outside of Steve's course had even heard of it, or of "object-oriented programming".

I started the project in April of 1984. Due to various bureaucratic obstacles (mainly, getting a British University to write a dollar cheque in advance) the image did not arrive until I was almost done, in Dec of 1984 (it was distributed on 1/2" tape, sent by surface mail). However, the description in the Blue Book was almost complete, and it only took a few weeks with the image documentation to finish the job and start up Smalltalk-80 for the first time. A diary I kept of the development is here. The VM sources are here.

The experience of studying the Smalltalk-80 books, writing the VM, and using the system, was, to coin a phrase, life-changing.

The Blue Book sources

As part of my efforts, I decided that I needed a machine-readable version of the reference VM from the Blue Book. It was just too hard to read on paper. So, I spent a few days keying it all in. I even cross-referenced the Smalltalk sources from my C sources, and wrote a program that would include the Smalltalk source next to the corresponding C source.

More than 10 years later, I was asked by John Maloney of the Squeak group (with whom I'd worked on Self at Sun) whether I'd give the Squeak group the Smalltalk sources I'd keyed in, as apparently the original sources were lost. Giving my files to that group, which included some of the core members of the Smalltalk-80 group, felt to me like returning those sources back to their home, and along the way repaying a tiny fraction of the huge intellectual debt I owed.

I'm pleased to see that, 10 years further on, there appears to be another re-awakening of interest in Smalltalk, and that a new generation of programmers will get to experience the pleasure of studying a system that, to paraphrase Tony Hoare, is still a great improvement on (most of) its successors.

In that spirit, I am making the re-keyed Smalltalk VM sources available here. The contents of the original Xerox virtual image tape are here (I don't have the original st80.changes file but it only had a single line of text anyhow) and a scan of the accompanying booklet is here. Thanks to Dan Ingalls for supplying the sources file.

Mario Wolczko
May 17 2006
Last modified: 9/26/2015