Discussion:
[hercules-os380] fresh start
kerravon86@yahoo.com.au [hercules-os380]
2018-10-17 04:05:11 UTC
Permalink
It occurs to me that with MVS/380 we have a
chance to have a fresh start.

While IBM chose to introduce AM31, we can
instead have AM32 given the lack of 31/32-bit
programs available for MVS/380.

While IBM chose to make BXLE restricted to
2 GiB of memory, and BXLEG is I believe
restricted to 63 bits, not 64 bits, we can instead
change the behavior of BXLE to use unsigned
registers.

Where IBM chose to pollute the address space
with LSQA or whatever preventing a 3 GiB
memory allocation, we can effectively move
all that stuff to a different address space or
move it to the 4 GiB location.

When 31/32-bit software is written we can
require it to be 32-bit clean to run on MVS/380
systems that are configured to be 32-bit.

Any suggestions on what to do with the
new system we have available?

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-10-17 06:52:26 UTC
Permalink
I think you should be able to configure your
system to be either 24/31/32 or 24/32/64
depending on whether you wish to run
legacy 31-bit programs or newer 64-bit
programs.

If you choose to configure as 24/31/32
you will need to change the AMODE of
all your 32-bit modules to be AM64.

Note that Hercules/380 already has the
ability to run modules marked AM31 as
AM32, and modules marked as AM64
as AM32, so that's not a problem.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-10-17 07:01:46 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
While IBM chose to make BXLE restricted to
Another thing regarding the BXLE issue.
I think it is appropriate for programs to
have the concept of "byte after table", so
the index value should always be able
to be incremented to point to just above
the end of the table, meaning that there
is a responsibility of the operating
system to never return a memory buffer
that makes the address 0xffffffff part of
the buffer.

So BXLE as a concept should be fine,
even though it's LE instead of just L,
so long as the increment is never made
to more than buffer size + 1 byte.

BFN. Paul.
Gerhard Postpischil gerhardp@charter.net [hercules-os380]
2018-10-17 07:10:53 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
While IBM chose to make BXLE restricted to
2 GiB of memory, and BXLEG is I believe
restricted to 63 bits, not 64 bits, we can instead
change the behavior of BXLE to use unsigned
registers.
How does this work when existing code has negative values?

Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
kerravon86@yahoo.com.au [hercules-os380]
2018-10-17 07:24:36 UTC
Permalink
Post by Gerhard Postpischil ***@charter.net [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
While IBM chose to make BXLE restricted to
2 GiB of memory, and BXLEG is I believe
restricted to 63 bits, not 64 bits, we can instead
change the behavior of BXLE to use unsigned
registers.
How does this work when existing code has negative values?
How is it possible to have negative values
for the addresses?

I mean, technically it is possible to put
negative values into signed registers,
but what application logic does that have -
addressing negative addresses?

I guess you could make the increment
negative though.

BFN. Paul.
Gerhard Postpischil gerhardp@charter.net [hercules-os380]
2018-10-17 12:33:57 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
How is it possible to have negative values
for the addresses?
When they are not addresses, but integers in a calculation.
Post by ***@yahoo.com.au [hercules-os380]
I guess you could make the increment
negative though.
That's the usual case when an array is traversed backwards.

Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
kerravon86@yahoo.com.au [hercules-os380]
2018-10-17 12:57:58 UTC
Permalink
Post by Gerhard Postpischil ***@charter.net [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
How is it possible to have negative values
for the addresses?
When they are not addresses, but integers in a calculation.
Ok, I have revisited appendix A, and after
reading the first example, I can see that
the registers can be integers rather than
addresses.

In that case, for 32-bit applications we need
to outlaw using ATL addresses. Either BTL
addresses can be used, or the values can
be integers.

Although are you sure people write code
where the registers go negative? That
would seem a bit odd.
Post by Gerhard Postpischil ***@charter.net [hercules-os380]
Post by ***@yahoo.com.au [hercules-os380]
I guess you could make the increment
negative though.
That's the usual case when an array is traversed backwards.
Wouldn't BXH be used instead of BXLE for
a backward traversal?

BFN. Paul.
Gerhard Postpischil gerhardp@charter.net [hercules-os380]
2018-10-17 17:11:45 UTC
Permalink
Post by ***@yahoo.com.au [hercules-os380]
Although are you sure people write code
where the registers go negative? That
would seem a bit odd.
Last millennium there was a SHARE session on using standard instructions
in non-standard ways. One was to use PACK to swap nybbles, another to
use TR to reformat printed output (e.g., US dates to ISO format), and
the oldest - look at the source for IBM's IEFSD095, the big letter
routine. It uses the same odd register for all three (low value, high
value, increment) with a BXH to decide whether or not to store a
character. Essentially it tests the bit in the 1 position (S,1,...31) by
shifting left one; if the result is negative the bit is on.

Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com

Loading...