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:
- A parallel link from the PDP-11 to a nearby PDP-8. The PDP-8 was often down or in use for other purposes.
- 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.
- 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?
- An IBM 270x type device front-ending the mainframes.
- 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)