Next on my list of projects driven by burning curiosity was compilers.
My boss at Telemed was a member of this book club called The Library of Computer and Information Sciences and handed me a free signup form. I'm pretty sure his motivation for this was that he got some free books.
So we were using Fortran IV by this time, and it always annoyed me that you couldn't put expressions in the upper limit of a DO
loop. Nobody could explain to me why this was the case.
So one of the books that stood out to me was A Compiler Generator by William M. McKeenan, James Horning, David B. Wortman.
I read that cover-to-cover and tried to figure out what would be involved to get this to run on the Sigma 5. It was clear that it would be a significant effort.
I put a note in the user group news letter asking if anyone had ported it over.
I shortly got a note from Geoffrey Leach who was at the University of Washington saying that they had done it and would I like a copy.
I sure did.
However, the compiler was on a 7 track tape.
I must admit to being mystified why anyone would use any tape other than 9 track.
Well this was a bit of a challenge, as we had only the 9 track tape drives.
I located a service bureau in Chicago that said that they could convert it. They needed to know how to translate it, so I worked that out with them, and shortly had the tape.
I loaded up the tape into the drive and it turned out that the beginning address of the executable was below the end of the OS as we had generated it. The Sigma 5 programs were compiled to begin at a fixed address.
So the next step was to generate an instance of the OS that had fewer modules and would load the compiler as built at the university in Washington. Once that was completed, the compiler loaded successfully and I began to write XPL programs.
If you are writing programs on punched cards, to edit the program, you would normally sit down at the card punch such as IBM 029 and punch an replacement line or nine. It is certainly more handy to copy the cards to a disk file and figure out a way to edit the file. So I created a simple line editor that would take input from cards and create a new copy of the file with the edits. The input was of the form
+<from>,<to><added card>
Deletion of records would be done by an empty
<added card>
This was the editor that all programmers used.
There was consideration of writing the next version of the pattern recognition part of the Analysis System. However, it ended up being written in Fortran.
Next up, writing a compiler.