Talk:Symbolic Optimal Assembly Program

Latest comment: 5 months ago by Orcmid in topic Some historical difficulties

Some historical difficulties

edit

I was looking for the introduction date of SOAP II, not certain why, and I ran into two bloopers.

At the time SOAP II was produced, I believe Stan Poley was (still) at Service Bureau Corporation. I think he's identified that way in the manual. (Sorry, I haven't had mine for a very long time.)

I'm absolutely certain that SOAP was not a multiple-pass assembler. Because of how the IBM 650 instructions worked, forward references to instructions were not a problem and the optimizations were rather rudimentary. So the single-instruction-per-card assembler input was simply sent to the card punch with the derived decimal address and instruction word on the first columns of the card. To make a better deck for loading, there were dump routines after a single-instruction-per-card program was loaded.

The difficult of optimization was that if the operand address was not fixed, it was difficult to optimize both the operand access and then the additional time after fetching the operand to complete operation and be ready to access the next instruction. This was changed by versions of SOAP (including assemblers by Knuth) where hints could be added in additional fields of the assembler input card. These also helped if one was trying to create relocatable code for something like a linking loader.

One of the early Knuth papers I ever read was his on [Minimizing Drum Latency Time. J. ACM 8, 2 (April 1961), 119-150](https://dl.acm.org/doi/10.1145/321062.321063).

A fascinating aspect of the SOAP II manual was Stan Poley including documentation and complete source code (in SOAP II of course) for the assembler. This is what led to so many derivative assemblers created by squeezing out some extra space for more features. I worked on Soap H (for Hamilton, High, and Hudson) at the University of Washington's IBM 650 lab.

I got to meet Poly at a SHARE meeting and thanked him for that inspiration to so many of us. He said it took some effort to get permission to do that. At the time, of course, software was not protected by copyright.

The SOAP assembler was also inspirational for a 650-like computer from Remington Rand Univac. Because the drum-computer architectures were so similar, it was a natural to have a SOAP-alike assembler for folks upgrading off of the 650, and one was produced at the University of Arizona. Knuth did one of his own as part of a Fortran project on the same computer. That assembler required magnetic tape and it would produce flow charts from documentation comments on the assembly-language cards on a second pass. That assembler, which required an uncommon configuration, was never released. It was originally not intended that any assemblers would be distributed outside of Univac. Grace Hopper insisted on that. But that's another story. So assemblers were produced outside of Univac and eventually one, S4, was adopted as the official one.

I am unsure about low-importance here. At the time, this was a big deal at the low end of mainframes. I also think that Knuth's dedication of The Art of Computer Programming to an IBM 650 is significant historically. And now, there will soon be none of us who were around at the time and remember what it was like. Orcmid (talk) 23:14, 30 December 2025 (UTC)Reply

Orcmid (talk) 23:17, 30 December 2025 (UTC)Reply