With this post I am releasing my last snippets of code exploring VAX architecture. Those snippets of code contain the required code developed from scratch to bootstrap a simple kernel supporting an interactive shell. Among the goals for programming this simple kernel were checking the minimal bootstrapping code, MMU programming, interrupt handling, I/O (console support) and multitasking on VAX.
At the beginning I was not thinking about releasing code but several weeks ago, and while I was chating with Chema about licenses, hacking, source code, etc. my mind changed. I guess Chema did good points and I made the decision to release this code under a BSD license eventually.
I think this action is coherent with the way I chose to resolve lack of available documentation and/or making long manual transcriptions. I found useful the NetBSD VAX port bits in this point.
Returning to VAX, this mature design is key to understand one of the most influential processor architectures, together with PDP-11, from '70s to '90s. It supported VMS, one of the public and commercial DEC's operating systems (together with RSX11-M) being the precursors to Windows NT.
With the Star/Starlet project roadmaps in mind you realize the ambition for VAX coming from DEC. On the top of this architecture plenty of current software commodities, true innovations 30 years ago, took shape while future hardware architects would get truly inspiration for the new designs.
Hacking into VAX in those years is synonym of programming a computer class know as Minicomputers. A "mini" is a class of smaller computers that evolved in the mid-1960s and sold for much less that mainframe and mid-size computers. This class of computers were designed/used for control, instrumentation, human interaction and communication switching mainly.
Okay, programming a Mini sounds great although acquiring/hosting this hardware could be an inconvenient though. I addressed this issue with virtual hardware developed by The Computer History Simulation Project. This project is a loose Internet-based collective of people interested in restoring historical significant computer hardware and software systems by simulation.
SIMH, the flagship of the project, is a highly portable multi-system simulator. Developed by Bob Supnik, a former DEC engineer and DEC vice president, has been in development in one form or another since the 1960s.
SIMH v3.9, the version I picked to hack in VAX, supports two different VAX models: the VAX-11/780 and the MicroVAX 3900. MicroVAX 3900 got my attention quickly.
The MicroVAX 3800 and MicroVAX 3900, code-named "Mayfair III", were introduced in April 1989 as high-end models in the MicroVAX family, replacing the MicroVAX 3500 and MicroVAX 3600, and were intended to compete with the IBM AS/400. These systems used the KA655 CPU module, which contained a 16.67 MHz (60 ns cycle time) CVAX chip set. They supported up to 64 MB of memory.
Checking SIMH's virtual MicroVAX 3900 it implements CPU and memory (CVAX CPU/16MB-64MB), console, real time clock, CR11/CD11 card reader, LPV11 line printer, DZV11 multiplexor, DHQ11 multiplexor, cartridge, floppy, disk, magnetic tape and DELQA/DEQNA ethernet controller. The real Mini behind of this virtual MicroVAX 3900 could look like the previous picture.
So in order to test/play with this code, a simple bootstrapping code + kernel + interactive shell driving a MicroVAX 3900 you will need to grab the following software: