Instruction Set Fun

Crafting a software development package like the Transputer Toolset is a somewhat odd undertaking:  A fairly small group of developers labor, for what seems like forever, to create a complex tool that will be used on an almost daily basis by (hopefully), thousands of really smart people.  It goes without saying that you get feedback and suggestions about the job you are doing!

Developing a parallel programming development package for the Transputer was a large departure from the sort of compilers and system development tools that we (or anyone else), had previously attempted, and we ended up making some of it up as we went along.  Inmos, of course, had many of the same issues, and the original intention of having OCCAM be the "code generation target" for other language tools wasn't very popular among third party developers.  About the time we got our first primitive assembler working, Inmos documented standard mnemonics for the instruction set, and provided partial information about how the instructions actually worked.

Before long, Inmos came out with the Compiler Writers Guide to help people (re)target compilers for non-OCCAM languages to the Transputer (see a well-thumbed copy below).  But, of course, the CWG didn't document everything about the instruction set that was essential for a complete development environment!  If you were writing bootstrap or debugger code there were a couple of additional critical instructions, start and testhardchan, that were needed.  And, for example, the CWG didn't fully describe some useful aspects of the behavior of the processor instruction stack, specifically what happens to the "C" register when the stack gets popped.  Farther afield yet, in unusual circumstances you could get a bit of additional utility out of the (completely undocumented), processor internal "D", E" and "StatusReg", registers.  The reason they were undocumented was because the behavior was silicon-revision dependent, but still, every once in awhile...

And finally, anyone tasked with supporting the code generator for a compiler gets a small (or large), chill every time they find out that the instruction set for a particular silicon revision doesn't "quite" work correctly!  See some T800x errata sheet pictures to get the flavor of what that's all about.

Click on any of the photos to enlarge them.