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-I card pretty cheap to universities,
and had cross-development software that would
run on VMS. So, I got some Multibus-I 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 CDC 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).