¿ªÔÆÌåÓý

VM/370 CE Assembler F, Assembler XF


 

I am still trying, as I can find time, to get Assembler G installed on VM/370. I've run into an EXEC that mentions Assembler F as separate from Assembler XF.

Is that true/possible? I only find Assembler XF on MAINT 190.

Thanks!

?... Mark S.


 


On Mon, 22 Jan 2024 at 21:14, Mark A. Stevens via <marXtevens=[email protected]> wrote:
I am still trying, as I can find time, to get Assembler G installed on VM/370. I've run into an EXEC that mentions Assembler F as separate from Assembler XF.

Is that true/possible? I only find Assembler XF on MAINT 190.

Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed. Weird but true.?

H was always a chargeable Program Product, with source code available. There was a Version 2 of H, and that later morphed into the High Level Assembler - also not free, and also OCO.

Assembler G is Assembler F with a bunch of additions and optimizations, and a compile&go option for student use. It's from the University of Waterloo.

There is one more assembler - a version of XF used to assemble code for the 3705 and similarly architected comms controllers. I don't know if anyone has the source, but I think only the instruction tables and some parts of code generation would have to have been changed.

The module and message prefixes are:
F???????? IEU
G??????? ASMG
XF?????? IFO/IFN
H???????? IEV
HLASM ASMA
CWAX? CWA

Source code for all three free ones is around, though G source is probably the least reliable.

I know nothing about running G on VM/370, but I imagine it would run fine if invoked as an OS program. In other words I'm doubtful that there's an ASMG or the like command ready to go.

There are various other assemblers out there for S/370 up to zArch code. I know of two commercial cross-assemblers that run on Intel platforms, and there is also a unique interactive one in TSS/360 that seems to have a unique code base. And of course in the Linux world the standard assembler can generate s390x code, though the input syntax and output formats are both radically different.

Tony H.


 

¿ªÔÆÌåÓý

Mark,

To echo what Tony says, F and XF are different beasts. Basically, F was I think the pre MVS OS assembler, XF was distributed with MVS, VM and DOS. I have never seen ¡°F¡± on VM.

I am sure I have had G running on VM because I tried it with GCC but gave up as it was no better.

If I get time I¡¯ll see if I can find what I did.

?

It looks like someone re-worked the source for ASMG here:

?

?

there is also a note here:-

?

?

which suggests that despite untested assertions elsewhere XF is faster than G and that using option BUF(MAX) speeds it up somewhat more

?

Dave

?

?

From: [email protected] <[email protected]> On Behalf Of Mark A. Stevens via groups.io
Sent: Tuesday, January 23, 2024 2:14 AM
To: [email protected]
Subject: [h390-vm] VM/370 CE Assembler F, Assembler XF

?

I am still trying, as I can find time, to get Assembler G installed on VM/370. I've run into an EXEC that mentions Assembler F as separate from Assembler XF.

Is that true/possible? I only find Assembler XF on MAINT 190.

Thanks!

?... Mark S.


 

¿ªÔÆÌåÓý

And do not forget the assembler that comes with SATK, also called ASMA it appears.

The SATK ASMA manual is at the doc/asma/ASMA.pdf in the github repository.

The syntax is extremely close to the legacy assemblers, a few additions.? The output is different but it works well for its targeted use with bare-metal programs on mainframes.? All instructions from the S/360 through the latest z PoO -13 are supported.

Harold Grovesteen

On 1/22/24 21:11, Tony Harminc wrote:


On Mon, 22 Jan 2024 at 21:14, Mark A. Stevens via <marXtevens=[email protected]> wrote:
I am still trying, as I can find time, to get Assembler G installed on VM/370. I've run into an EXEC that mentions Assembler F as separate from Assembler XF.

Is that true/possible? I only find Assembler XF on MAINT 190.

Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed. Weird but true.?

H was always a chargeable Program Product, with source code available. There was a Version 2 of H, and that later morphed into the High Level Assembler - also not free, and also OCO.

Assembler G is Assembler F with a bunch of additions and optimizations, and a compile&go option for student use. It's from the University of Waterloo.

There is one more assembler - a version of XF used to assemble code for the 3705 and similarly architected comms controllers. I don't know if anyone has the source, but I think only the instruction tables and some parts of code generation would have to have been changed.

The module and message prefixes are:
F???????? IEU
G??????? ASMG
XF?????? IFO/IFN
H???????? IEV
HLASM ASMA
CWAX? CWA

Source code for all three free ones is around, though G source is probably the least reliable.

I know nothing about running G on VM/370, but I imagine it would run fine if invoked as an OS program. In other words I'm doubtful that there's an ASMG or the like command ready to go.

There are various other assemblers out there for S/370 up to zArch code. I know of two commercial cross-assemblers that run on Intel platforms, and there is also a unique interactive one in TSS/360 that seems to have a unique code base. And of course in the Linux world the standard assembler can generate s390x code, though the input syntax and output formats are both radically different.

Tony H.


 

I hadn't realized that IBM rewrote F into XF while H was already available. Interesting.

Would it be feasible to expand G into full H compatibility? AIUI, H started out as IBM's version of G...

On Mon, Jan 22, 2024 at 9:11?PM Tony Harminc <tharminc@...> wrote:

On Mon, 22 Jan 2024 at 21:14, Mark A. Stevens via <marXtevens=[email protected]> wrote:
I am still trying, as I can find time, to get Assembler G installed on VM/370. I've run into an EXEC that mentions Assembler F as separate from Assembler XF.

Is that true/possible? I only find Assembler XF on MAINT 190.

Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed. Weird but true.?

H was always a chargeable Program Product, with source code available. There was a Version 2 of H, and that later morphed into the High Level Assembler - also not free, and also OCO.

Assembler G is Assembler F with a bunch of additions and optimizations, and a compile&go option for student use. It's from the University of Waterloo.

There is one more assembler - a version of XF used to assemble code for the 3705 and similarly architected comms controllers. I don't know if anyone has the source, but I think only the instruction tables and some parts of code generation would have to have been changed.

The module and message prefixes are:
F???????? IEU
G??????? ASMG
XF?????? IFO/IFN
H???????? IEV
HLASM ASMA
CWAX? CWA

Source code for all three free ones is around, though G source is probably the least reliable.

I know nothing about running G on VM/370, but I imagine it would run fine if invoked as an OS program. In other words I'm doubtful that there's an ASMG or the like command ready to go.

There are various other assemblers out there for S/370 up to zArch code. I know of two commercial cross-assemblers that run on Intel platforms, and there is also a unique interactive one in TSS/360 that seems to have a unique code base. And of course in the Linux world the standard assembler can generate s390x code, though the input syntax and output formats are both radically different.

Tony H.



--
Jay Maynard


 

I would add, regarding ASMA, that the .OBJ object code generated is (in my experience) 100% compatible with IBM object decks, except that it does not include RLD information.
This means it should be usable in VM/CMS,DOS or DOS/VS provided you either determine its load address at assembly time, or write the code to be self-relocating.
If you are writing bare metal/standalone programs it gives you full access to 390 and z/arch instructions without using assemblers designed for 24-bit architecture.

Eddy Balem


 

On Tue, Jan 23, 2024 at 06:36 AM, Jay Maynard wrote:
Would it be feasible to expand G into full H compatibility? AIUI, H started out as IBM's version of G...
I believe it would from the code I have been living with. There are modules that support the following instruction sets This is why I have been trying to get this installed, as I believe it could be extended to other architectures.? The following is from V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf I found at https://ia902302.us.archive.org/19/items/bitsavers_univOfWateityofWaterlooAssemblerGUsageGuide10thed1_5575394/V2L7_ASMG_University_of_Waterloo_Assembler_G_Usage_Guide_10th_ed_197606.pdf

INSTset= (ISet=)? The instruction set which the assembler recognizes
????????????????? is set by this parameter.? See appendix B for the
????????????????? total OP-CODE table. The default is INSTSET=l, an
????????????????? alias for IS=70.


IS=0????????????? Instruction set compatible with OS Assembler (F).
IS=9????????????? Instruction set compatible with DOS Assembler (F).
IS=20???????????? Same as IS=60 except all non model 20 instructions
????????????????? removed and the model 20 only instructions added.
IS=44???????????? Same as IS=20 except oriented toward the model 44.
IS=60???????????? Sallie as OS Assembler (F)? except that the extended
????????????????? branch conditional register? mneaonics are added
????????????????? and all 370 instructions are removed.

IS=67???????????? Same as IS=20 except oriented toward the model 67.
IS=70???????????? Same as OS Assembler (F)? except that the extended
????????????????? branch condition register mnemonics are added.

IS=71???????????? Same as 18=70 with VM/cp instructions added.


 

On Mon, Jan 22, 2024 at 09:11 PM, Tony Harminc wrote:
Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed. Weird but true.?
Thank you very much for the history lesson. I read somewhere that G was written because of limitations in F, but I don't remember what those all were.

Installing G on VM/370 is necessarily needed, but I am learning a lot along the way, and that makes it worth it for me.

?... Mark S.


 

On Tue, Jan 23, 2024 at 03:42 AM, Dave Wade wrote:
It looks like someone re-worked the source for ASMG here:
I've been 'collecting' various 'versions' to see what is different, as the very first version I got, from a CBT tape some years ago, differs from what is out there now.

?... Mark S.


 

On Tue, Jan 23, 2024 at 04:45 AM, Harold Grovesteen wrote:
And do not forget the assembler that comes with SATK, also called ASMA it appears.
Can't forget what I didn't know. Thank you very much. I will add it to the ever growing list of things-to-do.

?... Mark S.


 

I would like to second Eddy Balem's plug of Harold Grovesteen's most excellent SATK/ASMA product:

*

As Harold already knows, I'm his biggest fan. It's a *very* nice, well written product that allows you quickly and easily write stand alone programs in an assembler that is virtually identical to IBM's (there are some differences but they're minor IMO), and, as Ed said, produces output that is usable on virtually any/all IBM operating systems in existence (including, I might add, not just legacy ones like VM/370, DOS/VS, etc, but also modern ones too like z/OS and z/VM).

I use it all the time to write test cases for Hercules. Just take a look at Hercules's "test" subdirectory and you'll see.

If anyone is interested in playing around with or learning mainframe assembler without the hassle of needing an operating system to do so, I would *highly recommend* that you give it a try! Harold and/or myself will gladly provide you with whatever help you might need to get started with it.

--
"Fish" (David B. Trout)
Software Development Laboratories

mail: fish@...


 

On Mon, Jan 22, 2024 at 07:11 PM, Tony Harminc wrote:
Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed.

Remember, the suffixes for various products is not based on function level but how much (real) memory it needed; this was an era when the IBM S/360 65 maxed out at 1 MB core of fast core.? Even the S/370 model 165 was originally offered with only up to 3 MB of core.? (The way Hercules users can run MVT on a uniprocessor with 16 MB of cheap real memory was a fantasy in 1971.)

Quoting Wikipedia:

Between 1966 and 1968, IBM offered several FORTRAN IV compilers for its System/360, each named by letters that indicated the minimum amount of memory the compiler needed to run. The letters (F, G, H) matched the codes used with System/360 model numbers to indicate memory size, each letter increment being a factor of two larger:?

  • 1966 : FORTRAN IV F for DOS/360 (64K bytes)
  • 1966 : FORTRAN IV G for OS/360 (128K bytes)
  • 1968 : FORTRAN IV H for OS/360 (256K bytes)
Function was certainly related to how much memory was needed, but (re)writing an F level component when the H component existed made perfect sense if the F level component needed a quarter of the??(expensive)?memory.

Weird but true.?

No, just pragmatic.

-ahd-

-- 
Drew Derbyshire
Software Hobbit (SRE Emeritus)


 

On Tue, Jan 23, 2024 at 12:14 Drew Derbyshire <swhobbit@...> wrote:

Remember, the suffixes for various products is not based on function level but how much (real) memory?

That was true up to a point.? FORTRAN IV, as you note, had F, G, and H versions, which differed both in function and in required memory (and in overlay structure - remember overlays?).? But after a while, it became primarily a functional designation.? PL/I X, for example, was dramatically higher function than PL/I F, and could reasonably have been described as a new version of the language.? Waterloo's Asm G and SLAC's Assembler H used the "level" to indicate "newer and higher function", not "more RAM-hungry".? I vaguely recall using ASMGASM for MVT sysgens because it was smaller and faster.

Ross Patterson?
VMER emeritus?



 

Drew Derbyshire
Software Hobbit (SRE Emeritus)
Ross Patterson
VMER emeritus
I'm curious: what's an "SRE" or "VMER"? :)

--
"Fish" (David B. Trout)
Guru Emeritus


 

On Tue, Jan 23, 2024 at 13:50 Fish Fish <david.b.trout@...> wrote:
> Drew Derbyshire
> Software Hobbit (SRE Emeritus)

> Ross Patterson
> VMER emeritus

I'm curious: what's an "SRE" or "VMER"? :)

In assuming Drew, like me later in my career, was called a "Site Reliability Engineer".? As to VMer, well, I spent 20 years or so working on VM/CMS systems, and once led the VM activities at SHARE.

Ross


 

Ross Patterson wrote:
Fish wrote:

Drew Derbyshire
Software Hobbit (SRE Emeritus)
Ross Patterson
VMER emeritus
I'm curious: what's an "SRE" or "VMER"? :)

In assuming Drew, like me later in my career, was called
a "Site Reliability Engineer".
Ah. I wasn't familiar with that title. I've heard of CE (Customer Engineer) and SE (Systems Engineer), but not SRE. Thanks.


As to VMer, well, I spent 20 years or so working on VM/CMS
systems, and once led the VM activities at SHARE.
Cool! Thanks for the education. Appreciated.

So I guess at this point I should probably say, "Ah. I see. Sorry for the intrusion. Please carry on then."

:)

--
"Fish" (David B. Trout)
Software Development Laboratories

mail: fish@...


 

On Tue, 23 Jan 2024 at 12:14, Drew Derbyshire <swhobbit@...> wrote:
On Mon, Jan 22, 2024 at 07:11 PM, Tony Harminc wrote:
Assembler F and XF are indeed completely different programs. For whatever reasons, IBM appears to have written XF to the same specs as F, but from scratch. There are a few minor new features, and the code is reentrant (whoop-de-do), but that's it. That notwithstanding that the vastly superior Assembler H already existed.

Remember, the suffixes for various products is not based on function level but how much (real) memory it needed; this was an era when the IBM S/360 65 maxed out at 1 MB core of fast core.? Even the S/370 model 165 was originally offered with only up to 3 MB of core.?

Yes, but...

(The way Hercules users can run MVT on a uniprocessor with 16 MB of cheap real memory was a fantasy in 1971.)

Indeed. Only once in my life did I run on a real machine with 16 MB.. That was a 168MP at an IBM site when the university I worked at had a fire, and no DR plan. But all we got was a 2MB virtual machine to match our 165.

Quoting Wikipedia:

Between 1966 and 1968, IBM offered several FORTRAN IV compilers for its System/360, each named by letters that indicated the minimum amount of memory the compiler needed to run. The letters (F, G, H) matched the codes used with System/360 model numbers to indicate memory size, each letter increment being a factor of two larger:?

  • 1966 : FORTRAN IV F for DOS/360 (64K bytes)
  • 1966 : FORTRAN IV G for OS/360 (128K bytes)
  • 1968 : FORTRAN IV H for OS/360 (256K bytes)
Function was certainly related to how much memory was needed, but (re)writing an F level component when the H component existed made perfect sense if the F level component needed a quarter of the??(expensive)?memory.

Yes, but...

As has been pointed out in this thread, and - looking back - as early as 2007 on the Hercules lists - ASM H didn't follow that scheme for at least two reasons:

Waterloo's ASMG already existed, and it would've been beyond bizarre for IBM to come out with an "Assembler G" program product that competed with the "real" (and free) ASMG that was already in wide use.

ASM H is structured very differently from the IBM compilers of the day, including both ASM F and XF. ASM H *can* use a lot of main storage, and doesn't even need a work file if there is enough of it. But if you do give it a work file it effectively pages its data to it, and can get by in very little main storage. So the "design points" like F, G, and H are not so relevant to this kind of design.

The older assemblers, in contrast, always use three work files - each for a different kind of data.? Adding main storage beyond a certain fairly low point won't make them run faster or reduce the size of the work files, and adding more work file space won't reduce the memory needed beyond a certain point. In other words each is a separate kind of resource.

There are many many comments on these lists over the years on the various assemblers - my own first contribution seems to be from 2005, and that about where my email archive starts, so they may go back further. Maybe someone should consolidate them all for "convenience".
Weird but true.?

No, just pragmatic.

Yes, but...? :-)

Tony H.