Joseph, Peter, and I set out to port UNIX to the 370 running VM/370.  We had a running UNIX system on the PDP-11/45, complete with source code, so that was the obvious place to do development – we would cross-compile from PDP to 370 and then test on the 370. I don’t remember the exact division of labor,  but there were plenty of chores to go around such as stabilizing the compiler, figuring out virtual memory, scheduling, interrupts and writing the oh-so-different device drivers needed.

But the biggest problem was simply the communication between the PDP and the 370.  The PDP was in the B wing of the E-Quad; the 370 lived in the basement at 87 Prospect. The PDP had no 9 track tape drive; the 370 had no DECtape drives.  The kludge we ended up with involved quite a few hops:

  1. A parallel link from the PDP-11 to a nearby PDP-8. The PDP-8 was often down or in use for other purposes.
  2. A very long serial cable from the PDP-8 to a terminal room in the E wing of the E-Quad.  This was way beyond the length that a serial cable should’ve been and picked up a lot of line noise.
  3. A multiplexed link from the E-Quad to the computer center using an exotic line-of-sight infrared transmission system from Tran Telecommunications, running at the blistering speed of 9600bps.  This worked pretty well except in rain and fog. Never rains in New Jersey, right?
  4. An IBM 270x type device front-ending the mainframes.
  5. IBM RSCS software on VM/370 terminating the connection and passing virtual punched card decks to our test virtual machine.

So basically, the 370 C compiler on the PDP emitted 370 assembler language which we assembled and linked under VM/CMS. The linker was especially hard to work with.  After getting a kernel image, we sent it as another virtual punched card deck to our virtual card reader.  Then an ‘IPL 00C’ would boot the virtual machine from the virtual deck.

I don’t remember exactly how far we got in the first year, but just getting a kernel printf to work seemed miraculous. Joseph and Peter had the nerve to graduate in May of ’76, leaving me to carry on in 76-77.  Somehow by the end of my junior year in ’77 I got things to where I could show a working kernel, a working file system, a working shell (fork and exec!) and a very small number of other user level programs.  During this time the communication environment continued to deteriorate.  I declared victory for the project, Prof. Arden agreed, so that was the end of the project.  Until… (part 3)