woodward.org - a site mostly about computer stuff



Mesa is a programming system that can be compared with Java. It compiles to byte codes, is Pascal-like, strongly typed, has run-time support for native language threads and monitors, is modular, has object-oriented features, and runs on virtual machines that conform to the Mesa Principles of Operation.

Machines that conform to the Mesa Principles of Operation are called PrincOps (pronounced Prince-Ops) machines. At Xerox, a line of PrincOps machines called D-Machines were built. Of the D machines, the Dandelion is the most well known; I prefer the Daybreak. Still others prefer the Dicentra, Dolphin, Duke or Dorado.

On this page I present to you my virtual D-Machine, Dawn.

Dawn, like Daybreak, was designed to run Xerox workstation software. In order to use Dawn, you need some Xerox workstation software. Xerox workstation software is packaged on "Dawn virtual disks".

Dawn virtual disks are images that replicate the disk layout and contents of Xerox workstation hard disks. I've managed to create a simple one that boots a plain vanilla Xerox Development Environment without any tools.

It won't prove useful, if you're a programmer wishing to try your hand at Mesa, to have a virtual disk without a compiler or debugger installed, but you see Dawn is a closed system. There is no way (currently) to export files outside of or import files into Dawn virtual disks. XNS but not TCP/IP networking is supported with the installation of an additional driver (included in the source package), though it won't do you any good unless you have XNS services running on your local link.

And so, let's just say it's somewhat of a technical challenge to make virtual disks and we've gotten this far.


Dawn was created as an academic exercise in making an ANSI C PrincOps virtual machine for the purposes of (a) verifying that a working Mesa Processor could be implemented from the PrincOps specification, (b) providing a C language adjunct to the documentation, and (c) to improve my knowledge of computer architecture.

The structure of the source code of Dawn's PrincOps implementation follows the PrincOps book exactly to enable the reader to follow along in the book as they read the source code or vice versa.

As an ANSI C byte-code-interpreter ported from a Mesa language specification, performance is not great. I estimate the performance to be roughly the same as Sun Microsystems' kvm ANSI C java byte-code-interpreter which is part of the J2ME CLDC 1.0. I measured kvm some time ago to be about 12 Dhrystone MIPS on a P750. The point is, Dawn is not a blindingly fast virtual machine.


By downloading Dawn Binaries and/or Source you agree to be bound by the licensing terms set forth in the following sentence: "Don Woodward grants you the non-exclusive right to use Dawn Source and/or Binaries for non-commercial, educational use only." This license agreement is provided, for your reference, in the eula.txt file located in each of the Binary and Source Dawn packages.

Certain contents of the Dawn virtual disk contain previously copyrighted but no longer marketed works of Xerox Corporation. No license to these works is extended or implied. It should be noted that the existing copyright laws of the United States expressly provide for the "fair use" of copyrighted materials, especially for education and research. The basic rule of thumb, elaborated in this informative document, is that a copyrighted work can be used or copied for educational purposes so long as the use is not solely a substitute for purchasing a copy of the work.


To run Dawn, download the Dawn Binary for Windows (132K) and the Dawn virtual disk (815K). Unzip them from their respective zip files, placing them in the same directory together. Then double-click on Dawn.exe. After a minute or two the Xerox Development Environment will finish booting. At this point you may be confused. I point you to a budding synopsis of the Xerox Development Environment.


The Dawn Source Code Package (268K) contains 3 items - the ANSI C PrincOps Mesa Processor, the Dawn host application, and an XNS packet driver for Windows 2000/XP. All of these items compile on Windows using Microsoft Visual C++ 6.0. The PrincOps Mesa Processor also compiles on Linux to a static library and shared library, although I've not yet written a Linux host application so the Linux libraries are untested. To build the software from the source, unzip the zip file and consult the file readme.txt in the root of the package.