So for various reasons I decided to have a look at the VS Assembler, aka
Assembler XF aka IFOX. It's been close to 40 years since I did so, so I
remember very little.
Where to start...? Of course it's already installed on systems like TK4-,
and I remembered talk of someone having put in the serious grunt work to
disassemble the available PTFs and build matching source, but that's about
it. So over to Jay Mosely's page at http://www.jaymoseley.com/herc ules/compilers/ifox00.htm and ta-da it's all there. And it was Paul
Gorlinsky who did that grunt work.
A quick download, assemble (minor problems with one missing macro
IECTDECB), and link, and hey - let's try it by assembling one of its own
modules. This was on z/OS, BTW (on Real Iron, let me hasten to say).
For I believe the first time in my roughly 45 years of assembler
programming, I got an S504 abend. I had never heard of such a thing, looked
it up, and it says that the input and output lists on a VU-type GETMAIN
(LA= and A=) overlap. Bizarre, but a quick glance at the source (IFOX0A)
shows that it's true; someone was perhaps trying to save 8 bytes by using
the same storage for both arguments. OK, thought I, another new check
that's been added to z/OS, maybe as part of their grand VSM rework from a
few releases ago. I just thought I'd check to see how far back the doc goes
on this abend code, and to cut a long search story short, it is documented
at least as far back as when VS1 and SVS shared a System Codes manual.
Just weird. How can this code have ever worked? And what does the working
module on, say, TK4- contain? Well, not much disassembling is needed to see
that the addresses for the two arguments are different in the IFOX0A on
TK4-, both in the DLIB and the running SYS1.LINKLIB, IDR'd with Z32460,
whatever that is.
So... This is disquieting. None of the Mosely/Gorlinsky IBM PTFs appears to
fix this problem, yet the fix is on TK4- and presumably similar MVS 3.8
systems. So of course this throws the whole "matching source" into doubt.
Or rather, it throws my understanding of what the Gorlinsky tape claims to
have accomplished - maybe "just" getting the PTFs turned into source form -
work enough, but not what I thought.