After the seasickness and coffee troubles, I settled into an easy and delightful routine on the Gillis. I was logging 84 hours/week at time and a half overtime, with no expenses. The international scientific crews were loads of fun, particularly in the middle of the night. But I was itching to contribute something more meaningful than typing commands to record radar data at various intervals.
The only thing I could really contribute was software, and one day I hit upon something that I could confidently do and that would, it seemed to me, be of some benefit. The disc drives were functional but without software to run them. I would write a simple disc file system that would allow us to write selected portions of memory, or all of memory, to disc, and retrieve them as needed. There would be no file names or directory structure, just hexadecimal addresses. It could supplement, or better yet replace, the cumbersome and awkward paper tape system.
I tried to persuade Ken that this was a worthy effort, but he flatly rejected it. In hindsight after a long career in software development, he was right. We had, after much trouble, a working system. It was doing what was needed, even if patched together in violation of every rule and lesson of proper software development. The risks of running code written by a 20-year-old undergrad on such a fragile system were plainly unacceptable. Any trouble would be Ken’s responsibility, no matter who wrote the code.
I didn’t see it that way at the time. The paper tape system was absurd with a working disc drive. I was absolutely confident that I could write and run the code without breaking anything. It would be like all those meticulously crafted machine problems I ran in school on punch cards. In hindsight after a long career in software development, I still believe I could have done it with no trouble. But that didn’t make it a good idea.
Regardless, I wrote the code at night, when Speed and Ken were asleep. I kept it secret. I followed Ken’s bare-machine development method and produced a machine language paper tape. At this point, unfortunately, my memory becomes fuzzy and none of the code survives. I don’t recall if I actually loaded and ran it for testing. I certainly could have. The code sat in an unused section of memory and Ken’s loader could be executed from the console. I was young, confident, and itching to contribute. All I know for certain is that the code was not used, and that I didn’t break anything while writing it.
The MIT Weather Radar contribution to GATE was ultimately successful. We returned home with a large cache of IBM-compatible mag tapes, providing data for study by meteorologists for years to come. Eventually the tapes were shipped to some national archive.
WR73 and the TI-980 system returned to the 18th floor. Ken got the TI DOS working while I continued my work on the PDP-8. My RDADR system was more capable than the 980 for a while, but that wouldn’t last forever—the 980 was much faster, had more memory (and a flat address space), better tape storage, and Ken’s world-class integrator.
Bringing up TI DOS was Ken’s last act at Weather Radar. I took over all systems programming on the 980, and almost all applications programming. Alan replaced Ken as master hardware architect. Ed joined us as an undergraduate researcher.
Using everything I’d learned writing a timesharing system for the PDP-8, I completely replaced the TI DOS with a general-purpose timesharing system that could support software development, analysis and display applications, and real-time recording. We had several terminals around the lab where people could use the system for whatever they needed. I don’t recall much about that system, and no code survives. One thing I do recall is that the low-level memory resident code (interrupt handlers, multi-thread kernel) was written in assembler, while the higher-level code swapped in from disc as needed (file system, command interpreter) was written in Fortran.
By this time I had seen Emacs and vowed to never use a line editor again. Thanks to Alan we had a number of display terminals interfaced to the 980—Hazeltine 1500s, VT52s, and one of Alan’s own design. I wrote an editor that was as close to Emacs as I could make it, entirely in assembly language. It is the only TI-980 code that survives—I have the complete 72-page listing, which is how I know what terminals we had.
My editor used the gap-buffer design that I think was, and maybe still is, common practice. One large buffer with no internal structure, every byte used for text. All text before the insertion point contiguous at the beginning of the buffer, all text after the insertion point contiguous at the end of the buffer, and a gap in the middle. Almost all editing operations happen at or near the insertion point and are O(1) operations. Rarely does an operation need to work across the gap. Someone had mentioned the gap concept to me in passing, and I immediately recognized its advantages.
The editing and display update operations were completely independent—the edit operations did not inform display update about what changes were made, and display update didn’t ask. No edit-display communication, no edit-display bugs.
With 980 timesharing in place, the PDP-8 was gradually retired. I can see from the RADAR source listing that it was still in use in January 1977, but it wouldn’t last long after that. I don’t know what happened to the machine. I could have had it if I wanted, and sometimes I regret not taking it, but hauling it around from apartment to houses over decades would have been crazy.
I have one more thing I’d like to write about RADAR, and then conclude this history with an epilog. If folks are interested in ongoing discussions after that, I’m happy to participate. Questions and comments are welcome at any time.