VAX

We ran the 11/45 at work until moving up to a Vax 11/780 in 1982. We depended greatly on one custom driver for Tektronix storage tube displays such as the 4010/4012. When our VAX arrived, we had to wait for the room to become available, it was currently occupied by a DECsystem 20 (KL10B). The VAX was stored in a TINY room for a few weeks, so I figured out how to unpack it without making it terribly obvious, and hooked it up in that room. I could only run it for a couple hours before the room got too hot. We had an RM05 (I think) and a TU77 on it. But, I loaded the OS, hooked up a couple terminals and started in on converting the Tek 4010 driver, and improving the code while I was at it. By the time we were ready to move into our new computer room, I had the driver working and safely stored on a tape, as I expected DEC to wipe the disk when installing VMS officially.

Later I wrote a number of other drivers for old mag tape controllers, modified some LP drivers for other printers such as the Versatec electrostatic printer, and developed drivers for the AED 512 and Jupiter 7 graphics terminals.

Image processing

I took the inner code of NASA's mini-VICAR image processing package and modified it to use ordinary VMS files (the original mini-VICAR on PDP-11 used preallocated file blocks with their own file system taking up a whole disk for performance reasons, but it was a cumbersome system.)

TeX Typesetting package

I was also the first person at WU to get TeX and Metafont running, and helped a grad student at the center for computational mechanics to write the first thesis in TeX, which blew the library folks away! He had at lest 10 complex equations per page for 100+ pages, and it looked incredible next to similar papers typed on typewriters or the wordprocessors of the day. I wrote a previewer program that smooth-scrolled a whole paper on the AED 512.

A bit after this, I moved over to the Chemistry department in a group doing basic nuclear science.

Nat. Semi. 16032

One of the first projects I worked on was adding a multiprocessor to the VAX 11/780. National Semiconductor came out with the 16032 (later renamed the 32016) which was fairly close to a VAX on a chip. 32-bit architecture, but a 16-bit external bus. Separate clock generator, separate FPU, separate MMU. They made it available on a Multibus-II card pretty cheap to universities, and had cross-development software that would run on VMS. So, I got some Multibus-II memory, a backplane and a bunch of the 16032 boards, and a DR-11 DMA interface. I wire-wrapped up a DR-11 to Multibus adaptor that plugged into the Multibus backplane. I found a bug in the bus synchronizer of the 16032 board that prevented multiple masters from working correctly, it was made on a 40-pin DIP hybrid module. NS supplied me the schematic, the problem was immediately obvious, no synchronizers on the strobe inputs from the bus, so it would occasionally lock up the state machine. I added an external FF in the patch area of the board to fix that problem, and then had up to 7 boards that would run simultaneously. 7 was the limit as the motherboard didn't have round-robin priority scheduling, and 7 masters would completely tie up the bus, no more boards could get access to the memory. But, that was enough for development. We were using this to speed up "tape scanning", which meant reading nuclear events from tape, and doing calibration of the raw data, gating on particular combinations of channels coming in, and other first-step processing, and then either writing the result out to tape or disk, depending on size. The scheme was, first you converted the user's FORTRAN program from VAX form to NS's form and merged it into the multiprocessor framework, and then ran it through the NS cross-compiler. Then, you ran a wrapper program that dealt with the tapes and disk files. It would load the cross-compiled program into the global memory of the Multibus system, put a code word into a specific location, and then trip a master reset line. All the 16032's would see the code word and copy the cross-compiled program to local memory on each board and begin executing it. The wrapper program on the VAX would read blocks of events from tape and put them in the global memory, and set flags to indicate which ones were new. The 16032's would use an atomic read-modify-write to allocate these flags indicating they were going to handle that block, and then process the data. When they needed to increment a histogram count, they would use an atomic RMW cycle to update that word (the 2D histograms took up most of the Multibus memory). This thing worked quite well, but the 16032 was no speed demon, even without memory management. 7 of them was equal to about 2 to 2.5 VAX 780's. I could have made the program that copied the cross-compiled program to local memory take a break every 128 words and probably that would have made the system handle more CPUs, but wasn't sure how many more it would handle before bus contention became an issue again.

A home VAX !

Then, in 1986 we added a MicroVAX-II at work, but the freight company smashed it! The guy delivered it, it was leaning over on a 45 degree angle, the whole frame was Affine-transformed into a parallelogram. Amazingly, it still worked. DEC came out and looked at it, and swapped all the RD-53 drives with ones that were being recalled, so it ended up with an OS on it, too. Well, after sitting for a week, I asked my boss if I could take it home. He said "sure, why not? We're getting a new one." So, I had a MicroVAX-II at home, with VMS 4.3 or so, and some compilers. I was in hog heaven! I knew that I wouldn't get to keep it indefinitely, so I started preparing to get my own system. Well, eventually, the shipper showed up asking for the machine to take for salvage, and I told them "Oh, we had that put in secure storage, it will take a day to get it back." I brought it back the next day. Heh heh, "secure storage" was my house! Well, I got an MDB Q-22 backplane, a KA630-AA, and a TD Systems Andromeda controller (floppy and MFM hard drives) and the 40 MB MFM hard drive. Some pieces, like the hard drive and floppy came from the 16032 Genix system. Having some uV-II's at work, it wasn't too hard to bring the system up. I kept adding stuff to it over time. I got an MDB mag tape controller and hacked up a driver for it from some work by some other people. This was for a mediocre 800/1600 drive with Pertec unformatted interface, I later got better drives. Then I got a VCB-01 system (B&W video interface) and then upgraded to a VCB-02 (color graphics). I upgraded the disks to ESDI, and then found a 4 GB SCSI hard drive in the dumpster. I hooked up a home environmental monitoring system using a 64-channel differential 12-bit ADC, and had temperature, humidity and a few other sensors coming in, and recorded the data every 15 seconds to disk. I adapated a strip chart program from work to examine the data. I added a single-line 20 character LCD display that showed the time, date, temperature and humidity in the kitchen. I ran that VAX essentially continuously from 1986 until 2005, and the sporadically after that, because the rest of the family was used to that display in the kitchen. I finally rewrote the program and moved it to my Linux server in 2007, just before the dumpster hard drive on the VAX crashed.

I was the DECUS librarian for some years, and got several CNC Keystone 1600/6250 streaming tape drives at the local surplus shop, and so I was able to duplicate tapes at home! I now have one of those drives hooked to my desktop PC so I can read some of my old tapes. I reprogrammed one of my servo control boards to be a parallel port EPP to Pertec formatted converter.

We got a Jupiter 7 at work, this was roughly the CPU of an Apple II with a 1024 x 780 display buffer and tek 4010 emulation software, but it also had a 50-pin DMA interface to the frame buffer. It was only an 8-bit per pixel buffer with a color look-up-table, but good for the stuff we were doing, which was mostly 2-D color-coded histograms. I got a DEC DRV-11WA DMA interface and made a little wire-wrap interface board, and hacked the stock DRV11 driver to do the operations that we wanted. It was quite cool, loaded the full screen in less than a second. I later got a somewhat trashed Jupiter 7 for home when the Jupiter factory closed out that model (and got out of the graphics business).