Discussion:
[hercules-os380] data pointers
kerravon86@yahoo.com.au [hercules-os380]
2018-06-02 13:55:02 UTC
Permalink
I am trying to figure out how malloc() should
work. I thought it might be better to abstract
the problem by pretending that fopen() was
an OS function which returns a file pointer.
So if we are on a 256-bit computer running
a 128-bit program, fopen() and malloc()
need to return addresses in 128-bit space.

But then I was thinking we should decouple
data pointers and code pointers. If we have
a 128-bit load module that is loaded into
128-bit space, so all references to either
code or data within the load module will
be 128-bit pointers, then it is theoretically
possible that the assembler program has
been written with knowledge that the
operating system always returns data that
is in 64-bit space. In addition, it may have
knowledge that the stack is always in
32-bit space.

So data pointers can theoretically be split
into 3 categories that have different bit
sizes. But C only provides a single data
pointer.

Because some data is in the load module
itself, I think there should be a rule that
data pointers will always be equal to or
greater size than code pointers.

If this reasoning is sound, then there still
needs to be a way of the operating system
to know what the data pointer size is of
the load module. We could have a 128-bit
load module loaded into 128-bit space,
but it is using 256-bit data pointers. This
would allow the module to access more
data.

I am inclined to say that we should just
have a rule that if you want to access
256-bit data, you should create a
256-bit module instead of trying to run
with separate code pointer size and
data pointer size. However, bringing back
to what we actually have in MVS, we
basically have 32-bit load modules
(must be loaded into 32-bit space) that
are able to run as AM64 and able to
manipulate 64-bit data.

I am unsure how malloc() should be
implemented. Is it right for GETMAIN
to provide appropriate flags, or is it
something that the OS should be
figuring out itself, perhaps by virtue of
where the load module is loaded?

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 08:55:39 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Now, may I have reasonable doubts humanity will
> even need such a such long address space?

If you want to have memory-mapped addressability
to every hard disk on the planet (let's say 4 GiB per
hard disk and 4 billion people with hard disks), then
you will exceed what 64 bits can provide.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 09:48:23 UTC
Permalink
(possible triple-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

>>> Now, may I have reasonable doubts humanity will
>>> even need such a such long address space?

>> If you want to have memory-mapped addressability
>> to every hard disk on the planet (let's say 4 GiB per
>> hard disk and 4 billion people with hard disks), then
>> you will exceed what 64 bits can provide.

> For what?

That is the most convenient way for people to make
their hard disks available online for others to access.
It doesn't matter what operating system they choose
to use, when you're running your 128-bit MVS
application you can directly address each sector on
their hard disk, so you can diagnose any problem,
or access any data, without having to go outside
MVS.

It is someone else's problem to provide the required
memory-mapping so that you can start accessing
the data.

BFN. Paul.
Giuseppe Vitillaro giuseppe@vitillaro.org [hercules-os380]
2018-06-08 10:18:10 UTC
Permalink
On Fri, 8 Jun 2018, ***@yahoo.com.au [hercules-os380] wrote:

> (possible triple-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

>>> Now, may I have reasonable doubts humanity will
>>> even need such a such long address space?

>> If you want to have memory-mapped addressability
>> to every hard disk on the planet (let's say 4 GiB per
>> hard disk and 4 billion people with hard disks), then
>> you will exceed what 64 bits can provide.

> For what?

That is the most convenient way for people to make
their hard disks available online for others to access.
It doesn't matter what operating system they choose
to use, when you're running your 128-bit MVS
application you can directly address each sector on
their hard disk, so you can diagnose any problem,
or access any data, without having to go outside
MVS.

It is someone else's problem to provide the required
memory-mapping so that you can start accessing
the data.

BFN. Paul.

---

You can do that NOW, under Linux, using
an appropriate device driver, over the Net,

It doesn't require memory mapping, you may
memory map over such a driver, it doesn't
require more than a 64 bit address space.

You do that for a "finite set" of disks, I can't
figure out how such a "finite set" would contains
every disk in the world at the same time.

Anyway, let say for some crazy reason I can't
figure out, someone would be authorized to
perform such a "catastrophic" memory mapping.

Still you don't need to double a 64-bit address
space.

Let say you want to address one 1Tb disk for
each human alive today in the workd. This is
10^10 bits times 10^10 humans, i.e. 10^20 bits,
still under the capacity of a single human brain,
in the Penrose estimation.

Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
just on the border of a 64-bit address space.

I still can't see for what a single application
may even need a 128-bit address space for humans.

Peppe.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 10:41:09 UTC
Permalink
(possible triple-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.
Giuseppe Vitillaro giuseppe@vitillaro.org [hercules-os380]
2018-06-08 16:52:36 UTC
Permalink
On Fri, 8 Jun 2018, ***@yahoo.com.au [hercules-os380] wrote:

> (possible triple-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.


---

Well, being able to compute ln() and understand what it means, I'm
supposed to be able to evaluate the statement "66 > 64" ;-)

But youl will never see, with human eyes, such a "monster" alive Paul,
nobody will allow to map on a single address space all the hard disks of
the world (for what reason then?).

By the way, a 128-bit filesystem already exist:

https://en.wikipedia.org/wiki/ZFS

We are happily using it on our x86_64 systems, nobody I had been in touch
even asked for a 128-bit system to run ZFS, and there are "tons" of ZFS
pool running in the world (this ZFS has nothing to do with ZOS ZFS of
course).

I think I can figure out for what and for who a 128-bit will be a
"requirement".

A creature able to store a "human brain", in machine code, in a matter of
"seconds".

Not exactly a human ;-)

Peppe.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 10:34:09 UTC
Permalink
(possible double-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-08 15:23:51 UTC
Permalink
also, until we use each machine to its fullest (100% utilization 100% of
the time) anything more is a waste.

The average windows machine is only 5-10% utilized.

Joe

On Fri, Jun 8, 2018 at 5:34 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> (possible double-post due to Yahoo)
>
> ---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :
>
> > Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> > just on the border of a 64-bit address space.
>
> *Above* 64 bits.
>
> > I still can't see for what a single application
> > may even need a 128-bit address space for humans.
>
> When 64 is not big enough for the job at hand,
> what are you planning on creating? A 66-bit
> address space with 66-bit registers? For some
> reason people keep doubling registers rather
> than making small increments like that.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 10:25:48 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.
Mike Schwab Mike.A.Schwab@gmail.com [hercules-os380]
2018-06-09 05:06:48 UTC
Permalink
4 G or more (20 G possible) of 1TB available (100TB possible) of
computer drives are in use.
20,000,000,000 * 100,000,000,000,000,000 = 2 * 10 ** 27
On Fri, Jun 8, 2018 at 9:05 PM ***@yahoo.com.au
[hercules-os380] <hercules-***@yahoogroups.com> wrote:
>
> ---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :
>
> > Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> > just on the border of a 64-bit address space.
>
> *Above* 64 bits.
>
> > I still can't see for what a single application
> > may even need a 128-bit address space for humans.
>
> When 64 is not big enough for the job at hand,
> what are you planning on creating? A 66-bit
> address space with 66-bit registers? For some
> reason people keep doubling registers rather
> than making small increments like that.
>
> BFN. Paul.
>
>
> ------------------------------------
> Posted by: ***@yahoo.com.au
> ------------------------------------
>
>
> ------------------------------------
>
> Yahoo Groups Links
>
>
>


--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
Giuseppe Vitillaro giuseppe@vitillaro.org [hercules-os380]
2018-06-09 08:12:43 UTC
Permalink
On Sat, 9 Jun 2018, Mike Schwab ***@gmail.com [hercules-os380] wrote:

> 4 G or more (20 G possible) of 1TB available (100TB possible) of
> computer drives are in use.
> 20,000,000,000 * 100,000,000,000,000,000 = 2 * 10 ** 27

Let even say there are 10^30 bits stored on permanent
storages around the world, NOW.

It doesn't change a bit.

Nobody needs to map 10^30 bytes in a single address space.

Peppe.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 08:49:21 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Nobody needs to map 10^30 bytes in a single address space.

Surely that is the most convenient way of making
the data available to an MVS programmer?

The storage doesn't need to be in memory all
the time. Just whenever authorized and required.

BFN. Paul.
Giuseppe Vitillaro giuseppe@vitillaro.org [hercules-os380]
2018-06-09 18:17:56 UTC
Permalink
On Sat, 9 Jun 2018, ***@yahoo.com.au [hercules-os380] wrote:

> ---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> Nobody needs to map 10^30 bytes in a single address space.

Surely that is the most convenient way of making
the data available to an MVS programmer?

The storage doesn't need to be in memory all
the time. Just whenever authorized and required.

BFN. Paul.

---

Yep, they will never need to be mapped
ALL at the same time, in the same address
space of one application.

And they will never will.

ONLY a small, finite set of them would
be mapped at the same time.

You need an address space as large as
the MAXIMUM number of disks which will
be mapped at the same time, in the same
address space.

Please don't answer "eventually all
of them may be mapped at the same time".

It is not a reasonable answer.

Peppe.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-10 04:55:29 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

> ONLY a small, finite set of them would
> be mapped at the same time.

That is true, but the most convenient thing is
for each disk in the world to be mapped to a
fixed address.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-09 12:38:34 UTC
Permalink
"When 64 is not big enough for the job at hand,
what are you planning on creating?"

Given that the current memory limit of z/OS is 4TB, when exactly do you
think it will be necessary for 64-bit?

https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm

Joe

On Fri, Jun 8, 2018 at 5:25 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :
>
> > Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> > just on the border of a 64-bit address space.
>
> *Above* 64 bits.
>
> > I still can't see for what a single application
> > may even need a 128-bit address space for humans.
>
> When 64 is not big enough for the job at hand,
> what are you planning on creating? A 66-bit
> address space with 66-bit registers? For some
> reason people keep doubling registers rather
> than making small increments like that.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 12:42:30 UTC
Permalink
It is already necessary for beyond 64-bit for the
capability I wish to have.

BFN. Paul.




---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

"When 64 is not big enough for the job at hand,
what are you planning on creating?"

Given that the current memory limit of z/OS is 4TB, when exactly do you think it will be necessary for 64-bit?


https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm



Joe


On Fri, Jun 8, 2018 at 5:25 AM, ***@yahoo.com.au mailto:***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com> wrote:
---In hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com , <***@vitillaro.org mailto:***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-09 13:01:44 UTC
Permalink
It won't be in our lifetimes.

Joe



On Sat, Jun 9, 2018 at 7:42 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> It is already necessary for beyond 64-bit for the
> capability I wish to have.
>
> BFN. Paul.
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> "When 64 is not big enough for the job at hand,
> what are you planning on creating?"
>
> Given that the current memory limit of z/OS is 4TB, when exactly do you
> think it will be necessary for 64-bit?
>
>
> https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.
> 0/com.ibm.zos.v2r3.e0zb100/prosto.htm https://www.ibm.com/support/
> knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm
>
> Joe
>
> On Fri, Jun 8, 2018 at 5:25 AM, ***@yahoo.com.au mailto:
> ***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups.com
> mailto:hercules-***@yahoogroups.com> wrote:
> ---In hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com
> , <***@vitillaro.org mailto:***@vitillaro.org> wrote :
>
> > Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> > just on the border of a 64-bit address space.
>
> *Above* 64 bits.
>
> > I still can't see for what a single application
> > may even need a 128-bit address space for humans.
>
> When 64 is not big enough for the job at hand,
> what are you planning on creating? A 66-bit
> address space with 66-bit registers? For some
> reason people keep doubling registers rather
> than making small increments like that.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 13:15:54 UTC
Permalink
The memory-mapped technology I wish to be
made available to my MVS processes can be
developed with existing technology. All it
requires is a hardware manufacturer to decide
it's a good idea.

BFN. Paul.




---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

It won't be in our lifetimes.


Joe







On Sat, Jun 9, 2018 at 7:42 AM, ***@yahoo.com.au mailto:***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com> wrote:
It is already necessary for beyond 64-bit for the
capability I wish to have.

BFN. Paul.

---In hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com , <***@gmail.com mailto:***@gmail.com> wrote :

"When 64 is not big enough for the job at hand,
what are you planning on creating?"

Given that the current memory limit of z/OS is 4TB, when exactly do you think it will be necessary for 64-bit?


https://www.ibm.com/support/ knowledgecenter/en/SSLTBW_2.3. 0/com.ibm.zos.v2r3.e0zb100/ prosto.htm https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm https://www.ibm.com/support/ knowledgecenter/en/SSLTBW_2.3. 0/com.ibm.zos.v2r3.e0zb100/ prosto.htm https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.e0zb100/prosto.htm

Joe

On Fri, Jun 8, 2018 at 5:25 AM, ***@yahoo.com.au mailto:***@yahoo.com.au mailto:***@yahoo.com.au mailto:***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups. com mailto:hercules-***@yahoogroups.com mailto:hercules-os380@ yahoogroups.com mailto:hercules-***@yahoogroups.com> wrote:
---In hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com mailto:hercules-os380@ yahoogroups.com mailto:hercules-***@yahoogroups.com , <***@vitillaro.org mailto:***@vitillaro.org mailto:***@vitillaro.org mailto:***@vitillaro.org> wrote :

> Now 20*[ln(10)/ln(2)]=20*3.32=66, i.e. 2^66 bits,
> just on the border of a 64-bit address space.

*Above* 64 bits.

> I still can't see for what a single application
> may even need a 128-bit address space for humans.

When 64 is not big enough for the job at hand,
what are you planning on creating? A 66-bit
address space with 66-bit registers? For some
reason people keep doubling registers rather
than making small increments like that.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 09:37:37 UTC
Permalink
(possible double-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

>>> Now, may I have reasonable doubts humanity will
>>> even need such a such long address space?

>> If you want to have memory-mapped addressability
>> to every hard disk on the planet (let's say 4 GiB per
>> hard disk and 4 billion people with hard disks), then
>> you will exceed what 64 bits can provide.

> For what?

That is the most convenient way for people to make
their hard disks available online for others to access.
It doesn't matter what operating system they choose
to use, when you're running your 128-bit MVS
application you can directly address each sector on
their hard disk, so you can diagnose any problem,
or access any data, without having to go outside
MVS.

It is someone else's problem to provide the required
memory-mapping so that you can start accessing
the data.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 09:29:38 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :

>>> Now, may I have reasonable doubts humanity will
>>> even need such a such long address space?

>> If you want to have memory-mapped addressability
>> to every hard disk on the planet (let's say 4 GiB per
>> hard disk and 4 billion people with hard disks), then
>> you will exceed what 64 bits can provide.

> For what?

That is the most convenient way for people to make
their hard disks available online for others to access.
It doesn't matter what operating system they choose
to use, when you're running your 128-bit MVS
application you can directly address each sector on
their hard disk, so you can diagnose any problem,
or access any data, without having to go outside
MVS.

It is someone else's problem to provide the required
memory-mapping so that you can start accessing
the data.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-08 15:18:59 UTC
Permalink
Why do I need memory mapped hard drives when I already have World Wide
Names?

Joe

On Fri, Jun 8, 2018 at 4:29 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@vitillaro.org> wrote :
>
> >>> Now, may I have reasonable doubts humanity will
> >>> even need such a such long address space?
>
> >> If you want to have memory-mapped addressability
> >> to every hard disk on the planet (let's say 4 GiB per
> >> hard disk and 4 billion people with hard disks), then
> >> you will exceed what 64 bits can provide.
>
> > For what?
>
> That is the most convenient way for people to make
> their hard disks available online for others to access.
> It doesn't matter what operating system they choose
> to use, when you're running your 128-bit MVS
> application you can directly address each sector on
> their hard disk, so you can diagnose any problem,
> or access any data, without having to go outside
> MVS.
>
> It is someone else's problem to provide the required
> memory-mapping so that you can start accessing
> the data.
>
> BFN. Paul.
>
>
Gerhard Postpischil gerhardp@charter.net [hercules-os380]
2018-06-08 12:31:15 UTC
Permalink
On 6/6/2018 12:42 AM, ***@yahoo.com.au [hercules-os380] wrote:
> I am happy to put in conditional assembly.
> What does the MODE=31 parameter
> actually achieve, and if a program is
> compiled with this, does it still *execute*
> on MVS 3.8j?
MODE=31 supports some 31-bit extensions to the DCB (see DCBE), and would
alleviate some contortions we use in AM24.


Gerhard Postpischil
Bradford, VT

---
This email has been checked for viruses by AVG.
https://www.avg.com
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 12:53:12 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@charter.net> wrote :

>> I am happy to put in conditional assembly.
>> What does the MODE=31 parameter
>> actually achieve, and if a program is
>> compiled with this, does it still *execute*
>> on MVS 3.8j?

> MODE=31 supports some 31-bit extensions
> to the DCB (see DCBE), and would
> alleviate some contortions we use in AM24.

Ok, but that sounds like the executable
produced won't work on MVS 3.8j.

This is different from the GETMAIN LOC=31
extension being used still allows execution
on MVS 3.8j because MVS 3.8j will ignore
the extra flags.

BFN. Paul.
Giuseppe Vitillaro giuseppe@vitillaro.org [hercules-os380]
2018-06-08 10:25:21 UTC
Permalink
I'm NOT posting twice my messages on Yahoo.

Yahoo is doing that by itself ;-(

Apologies to the group anyway.

Peppe.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-08 13:17:03 UTC
Permalink
"But the
rest of the OS is 24-bit and likely to stay that
way for a very long time."

Not just the OS. The machine is 24-bit also.

Joe

On Thu, Jun 7, 2018 at 10:57 PM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> (possible double post due to Yahoo)
>
> ---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :
>
> > Basically that means that the OS needs to
> > be at least partially 64-bit, even for interfaces
> > that are still 32-bit. This is a general rule,
> > e.g. 128-bit applications with an operating
> > system that is still partially 64-bit.
>
> Alternatively. The problem is essentially that
> the OS is not fully upgraded. This is the case
> in MVS/380 too. There is some support for
> 31-bit processing, mainly GETMAIN. But the
> rest of the OS is 24-bit and likely to stay that
> way for a very long time.
>
> So too if we had a 256-bit system running a
> 256-bit application, and getting 256-bit
> memory via GETMAIN, yet most of the OS
> is still 128-bit. So when you call READ, it
> can't cope with the fact that the high 128
> bits may have data in them. In that case,
> there is a responsibility for the *application*
> to step down. But everything is AM-infinity,
> so it is not possible to easily step down.
> Instead, the application will be required to
> save, then clear the top 128 bits of each
> register prior to executing READ.
>
> If PDOS/380 is entirely 32 bit (all that GCC
> can produce), and there is some code
> that whenever a GETMAIN LOC=64 is
> executed that it returns address 0xFFFFFFF0,
> (ie 4 GiB minus 16), with the expectation
> that the application will manage its own
> memory above 4 GiB, then if PDOS/380
> loads a 64-bit module into the 2 GiB-4 GiB
> range, where it is not possible to step
> down to AM32, then the application will
> instead need to zero out the high 32 bits
> of each register itself. MVS/380 would have
> the same issue if we ever support loading
> modules into the 2 GiB to 4 GiB range.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 14:22:51 UTC
Permalink
(possible double-post due to Yahoo)


---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> But the
>> rest of the OS is 24-bit and likely to stay that
>> way for a very long time.

> Not just the OS. The machine is 24-bit also.

The hardware has been upgraded to 64-bit
already (both 64-bit instructions and 64-bit
memory is available). The challenge is the OS.
I am struggling to figure out how to classify the
OS which has some 31-bit or 64-bit features
but mostly it is stuck at 24-bit.

Also what to do about PDOS/380 which I would
like to be fully 32-bit, executing in AM64, but I'm
unclear about what I can do about the high
32 bits of registers when READ or OPEN is
executed. Ideally the high bits are saved and
cleared, so that it supports 64-bit programs
that have put crap in the top 32 bits of
registers. But I'm not sure where the data can
actually be saved. Perhaps for the SVCs low
memory can be used. Don't know about READ.

But at what point does this cease to be a
32-bit OS and become a 64-bit OS? MVS/380
solves the problem a different way by being
able to switch to AM24/31 where crap in the
high bits is irrelevant, and maybe that is the
superior solution. I would have preferred no
AMODE switching in the PDOS code though,
and keep it pure AM64.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 14:34:59 UTC
Permalink
I'm inclined to say that PDOS/380 needs to always
run in AM31, not AM64. And there is no way to put
an executable into the 2 GiB to 4 GiB range. That
is for data only.

In addition, 64-bit modules that can reside above
4 GiB and thus cannot do a BSM into AM31 need
to have F4SA save areas and these modules must
call a 64-bit version of the READ routine that does
a save of 64-bit registers.

Basically MVS needs to become like Windows and
have separate 64-bit routines. The only reason
z/OS has been able to be different from Windows
is because the READ etc routines in z/OS are
documented as only being able to execute in
AM24/31.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 19:09:29 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> I'm inclined to say that PDOS/380 needs to always
> run in AM31, not AM64. And there is no way to put
> an executable into the 2 GiB to 4 GiB range. That
> is for data only.

I disagree with the above. I think I have it sorted now.

PDOS/380 will detect at startup whether BSM
to x'01' is possible. If so, then programs that
are marked AM64/RMANY (32-bit programs
running as AMODE 64) can be loaded into
the 2 GiB to 4 GiB region. These programs
are not required (and it's not possible either)
to "step down". Instead, when they execute
READ, the READ routine will have a BSM to
switch to AM31 which is what PDOS/380 will
normally run as.

In addition, the hardware may convert a
BSM to AM31 into an AM32. But that won't
change the above operation, it just provides
more memory for data.

MVS/380 may operate the same way if we
start changing program fetch.

Hercules/380 will need to be changed to allow
more execution address bits to be saved in
the PSW. At least 1 more bit is required to
store a load module in the 2 GiB to 4 GiB
region. But more will probably be provided
to allow RM64 programs to be stored above
4 GiB, as they should also work.

I think that is everything sorted.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 05:59:50 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

>> I'm inclined to say that PDOS/380 needs to always
>> run in AM31, not AM64. And there is no way to put
>> an executable into the 2 GiB to 4 GiB range. That
>> is for data only.

> I disagree with the above. I think I have it sorted now.

In the general case, a 256-bit application calling a
128-bit version of PDOS, there will be a problem
when it comes to executing READ and the 128-bit
routine being unable/unaware of the high 128 bits.

I think PDOS's READ will always need to execute
as AM31 so that it only needs to save the 32-bit
registers.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 06:29:11 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> I think PDOS's READ will always need to execute
> as AM31 so that it only needs to save the 32-bit
> registers.

Or we have separate READ64, READ128 and
READ256 routines. But that precludes a 256-bit
app running on a 128-bit version of PDOS, as
the required API doesn't exist yet.

This is ridiculously complicated.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 07:17:36 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> I think PDOS's READ will always need to execute
> as AM31 so that it only needs to save the 32-bit
> registers.

If a 256-bit caller executes PDOS's READ, it can
save the 32-bit registers with STM, but it then
needs to switch to AM31.

I am wondering whether the code to switch to
AM31 can be done even when we are executing
in AM256.

I think R15 is the only register we can guarantee
has the top 256-31 bits cleared.

So something like this:

USING *,R15
LA R15,NEWLOC
USING NEWLOC,R15
O R15,=X'80000000'
BSM R14,R15
NEWLOC DS 0H
...
LTORG


Looks plausible to me.

So the OS (PDOS/380) would be mostly AM31
(and MVS/380 would be mostly AM24), but both
of them have a small amount of code (GETMAIN
and program fetch) that would operate in
AM256. Basically the same deal we got with
MVS/XA, and again got with z/OS.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 07:31:10 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> USING *,R15
> LA R15,NEWLOC
> USING NEWLOC,R15
> O R15,=X'80000000'
> BSM R14,R15
> NEWLOC DS 0H
> ...
> LTORG

Actually, if we change this bit:

> BSM R14,R15

to:

LA R2,0
BSM R2,R15

we could use R2 to OR the bits in later, and
return to AM-infininty/256 prior to doing the
LM to restore the registers.

That way only R15 needs to be clean.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-09 07:22:51 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> I think R15 is the only register we can guarantee
> has the top 256-31 bits cleared.

R13 will need to as well, as otherwise I don't think
we can load the old registers, as we're not in the
right AMODE for that when we try to return.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 14:56:33 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> Basically MVS needs to become like Windows and
> have separate 64-bit routines. The only reason
> z/OS has been able to be different from Windows
> is because the READ etc routines in z/OS are
> documented as only being able to execute in
> AM24/31.

No, I've changed my mind again. The same READ
routine can be used for AM64, even if there is crap
in the top 32 bits of registers, so long as the READ
routine immediately does a BSM to AM24/31 on
entry.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-09 19:17:49 UTC
Permalink
"so long as the READ
routine immediately does a BSM to AM24/31 on
entry."

What READ routine? There is only a READ macro... The appropriate address
mode must be set BEFORE executing a READ macro.

Even then, READ is only for BSAM ... QSAM uses GET/PUT.

Joe

On Fri, Jun 8, 2018 at 9:56 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :
>
> > Basically MVS needs to become like Windows and
> > have separate 64-bit routines. The only reason
> > z/OS has been able to be different from Windows
> > is because the READ etc routines in z/OS are
> > documented as only being able to execute in
> > AM24/31.
>
> No, I've changed my mind again. The same READ
> routine can be used for AM64, even if there is crap
> in the top 32 bits of registers, so long as the READ
> routine immediately does a BSM to AM24/31 on
> entry.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-10 05:05:10 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> so long as the READ
>> routine immediately does a BSM to AM24/31 on
>> entry.

> What READ routine? There is only a READ macro...
> The appropriate address mode must be set BEFORE
> executing a READ macro.

I don't want to have to switch to AM24/31 prior
to executing the READ macro. I want my 64-bit
or 128-bit application to be able to reside above
the 4 GiB location and issue READ from there,
which ends up calling a READ routine rather
than an SVC.

However, I've just realized that R15 will not have
the upper 32 bits clear if the module is loaded
above 4 GiB, so a 64-bit version of the macro
would be required. And that effectively makes
the mainframe the same as Windows.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-10 07:05:59 UTC
Permalink
"And that effectively makes
the mainframe the same as Windows."

No. The mainframe is BATCH oriented. Windows is not.

Joe

On Sun, Jun 10, 2018 at 1:05 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> so long as the READ
> >> routine immediately does a BSM to AM24/31 on
> >> entry.
>
> > What READ routine? There is only a READ macro...
> > The appropriate address mode must be set BEFORE
> > executing a READ macro.
>
> I don't want to have to switch to AM24/31 prior
> to executing the READ macro. I want my 64-bit
> or 128-bit application to be able to reside above
> the 4 GiB location and issue READ from there,
> which ends up calling a READ routine rather
> than an SVC.
>
> However, I've just realized that R15 will not have
> the upper 32 bits clear if the module is loaded
> above 4 GiB, so a 64-bit version of the macro
> would be required. And that effectively makes
> the mainframe the same as Windows.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-10 07:25:56 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> And that effectively makes
>> the mainframe the same as Windows.

> No. The mainframe is BATCH oriented. Windows is not.

I'm talking in terms of whether 32-bit and 64-bit
programs need to call different APIs as per
Windows (Dave Wade made this observation).

But in yet another change of tack, if the
interface is given as a 32-bit function pointer
in the CVT, as all the Unix functions are
(open/read/etc), then once again we return
to the situation where 32-bit, 64-bit,
128-bit, 256-bit applications can call the
same API. They will take responsibility
for loading the 32-bit address into R15
prior to calling the function, and the
function itself can do a switch to AM24/31.

On x64 hardware the API can't do the
switch from AM64 to AM32 itself, as it is
a privileged instruction.

And back on MVS, I don't know if there is
some environment variable that the READ
macro can inspect to do a SGR R15,R15
prior to loading R15 with the 24-bit address
of the READ routine. The GETMAIN
LOC=64 needs to similarly load a 64-bit
amount instead of a 32-bit amount of
memory requested.

BFN. Paul.



0017EA 1BFF 3115+ SR 15,15
0017EC BFF7 E031 00031 3116+ ICM 15,B'0111',48+1(14) LOAD RDWR ROUTINE ADDR
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-10 22:47:39 UTC
Permalink
"On x64 hardware the API can't do the
switch from AM64 to AM32 itself, as it is
a privileged instruction."

In Windows, the SYSWOW64 directory contains all the old previous 32-bit
APIs. They now simply call their 64-bit counterparts. They never switch the
CPU from 64-bit mode.

"Instead of using the x86 system-service call sequence, 32-bit binaries
that make system calls are rebuilt to use a custom calling sequence. This
calling sequence is inexpensive for WOW64 to intercept because it remains
entirely in user mode. When the custom calling sequence is detected, the
WOW64 CPU transitions back to native 64-bit mode and calls into Wow64.dll.
Thunking is done in user mode to reduce the impact on the 64-bit kernel and
to reduce the risk of a bug in the thunk that might cause a kernel-mode
crash, data corruption, or a security hole. The thunks extract arguments
from the 32-bit stack, extend them to 64 bits, then make the native system
call."

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx

Joe

On Sun, Jun 10, 2018 at 3:25 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> And that effectively makes
> >> the mainframe the same as Windows.
>
> > No. The mainframe is BATCH oriented. Windows is not.
>
> I'm talking in terms of whether 32-bit and 64-bit
> programs need to call different APIs as per
> Windows (Dave Wade made this observation).
>
> But in yet another change of tack, if the
> interface is given as a 32-bit function pointer
> in the CVT, as all the Unix functions are
> (open/read/etc), then once again we return
> to the situation where 32-bit, 64-bit,
> 128-bit, 256-bit applications can call the
> same API. They will take responsibility
> for loading the 32-bit address into R15
> prior to calling the function, and the
> function itself can do a switch to AM24/31.
>
> On x64 hardware the API can't do the
> switch from AM64 to AM32 itself, as it is
> a privileged instruction.
>
> And back on MVS, I don't know if there is
> some environment variable that the READ
> macro can inspect to do a SGR R15,R15
> prior to loading R15 with the 24-bit address
> of the READ routine. The GETMAIN
> LOC=64 needs to similarly load a 64-bit
> amount instead of a 32-bit amount of
> memory requested.
>
> BFN. Paul.
>
> 0017EA 1BFF 3115+ SR 15,15
> 0017EC BFF7 E031 00031 3116+ ICM 15,B'0111',48+1(14) LOAD RDWR ROUTINE ADDR
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-12 10:37:08 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> On x64 hardware the API can't do the
>> switch from AM64 to AM32 itself, as it is
>> a privileged instruction.

> In Windows, the SYSWOW64 directory contains all
> the old previous 32-bit APIs. They now simply call
> their 64-bit counterparts. They never switch the CPU
> from 64-bit mode.

> "the WOW64 CPU transitions back to native 64-bit mode
> and calls into Wow64.dll."

I think here we have a fundamental difference.

Windows 32-bit applications are running in 32-bit
mode, and the operating system has provided
facilities for them to call the 64-bit operating
system. The OS is ahead of applications. ie the
OS provided a 64-bit interface before trying to
run 64-bit applications.

On the mainframe we have the exact opposite.
The applications lead the OS. The applications
were able to run in 31-bit mode in MVS/XA
long before the operating system could cope
with a 31-bit caller. The problem was repeated
on z/OS with the operating system unable to
cope with an AM64 caller.

This difference potentially calls for a different
approach. MVS/380 can protect itself from a
64-bit caller by switching to AM24 in the I/O
routines like "READ". PDOS/380 can do the
same by switching to AM31/32. Only a little
bit of the operating system needs to support
an AM64 interface - SVC 120, and SVCs
start life as AM24/31/32 and can take their
time to clear high bits of registers so that
they can switch to AM64 to access memory
above 4 GiB.

In the specific case of PDOS/380 with
Hercules/380 set to switch x'80' into AM32
rather than AM31, then there is not even a
need to switch to AM64 to manipulate
memory in the 2 GiB to 4 GiB range.

I'm inclined to say that PDOS/380 should
match MVS/380 and keep the operating
system as mostly 32-bit (AM24/31/32), and
just having SVC 120 operating as 64-bit.
Also program fetch needs to have some
limited 64-bit capability as MVS/380 already
does.

I'm also inclined to create a new assembler
variable, if none exists at the moment, so
that the READ macro can detect if it is being
assembled in a 64-bit environment so needs
to have a SGR rather than SR.

This way our predominantly 32-bit (using
32-bit registers only) operating systems can
cope with callers who are using 64-bit or
128-bit registers. The operating system
needs to protect itself from such callers by
switching to AM24 (MVS/380) or AM31/32
(PDOS/380) at entry to the READ etc
routines.

Note that for now MVS/380 would still be
expected to load an RMODE 64 program
BTL, just as it does RM31 programs. RM24
memory is a subset of RM31/64 memory.

This way all the pointers in the MVS control
blocks can remain 32-bit, although maybe
PDOS/380 should be coded in such a
manner that a 4-byte value can be loaded
into a 64-bit pointer so that PDOS/380 can
be recompiled with a 64-bit compiler at a
later date.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-13 02:51:19 UTC
Permalink
"Windows 32-bit applications are running in 32-bit
mode, and the operating system has provided
facilities for them to call the 64-bit operating
system. The OS is ahead of applications. ie the
OS provided a 64-bit interface before trying to
run 64-bit applications."

Where did you get that idea?

WOW64 runs ntvdm.dll which provides 32-bit services for 32-bit
applications. It uses "thunking" to translate a 32-bit call into a 64-bit
call on a 64-bit OS.

The OS is NOT ahead of the applications .... they were developed in
parallel.

" On the mainframe we have the exact opposite.
The applications lead the OS. The applications
were able to run in 31-bit mode in MVS/XA
long before the operating system could cope
with a 31-bit caller. The problem was repeated
on z/OS with the operating system unable to
cope with an AM64 caller."

No we dont. Just as there may not be an equivalent 64-bit call for a 32-bit
call in Windows, so on the mainframe there are some things that dont run in
31-bit mode. That certainly doesn't mean the OS is behind the apps.

Plus, by doing it the way IBM did, Millions of Dollars of investment were
protected. You may not like that, but the bank I worked at when. XA came
out certainly did.

Joe

On Tue, Jun 12, 2018 at 6:37 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> On x64 hardware the API can't do the
> >> switch from AM64 to AM32 itself, as it is
> >> a privileged instruction.
>
> > In Windows, the SYSWOW64 directory contains all
> > the old previous 32-bit APIs. They now simply call
> > their 64-bit counterparts. They never switch the CPU
> > from 64-bit mode.
>
> > "the WOW64 CPU transitions back to native 64-bit mode
> > and calls into Wow64.dll."
>
> I think here we have a fundamental difference.
>
> Windows 32-bit applications are running in 32-bit
> mode, and the operating system has provided
> facilities for them to call the 64-bit operating
> system. The OS is ahead of applications. ie the
> OS provided a 64-bit interface before trying to
> run 64-bit applications.
>
> On the mainframe we have the exact opposite.
> The applications lead the OS. The applications
> were able to run in 31-bit mode in MVS/XA
> long before the operating system could cope
> with a 31-bit caller. The problem was repeated
> on z/OS with the operating system unable to
> cope with an AM64 caller.
>
> This difference potentially calls for a different
> approach. MVS/380 can protect itself from a
> 64-bit caller by switching to AM24 in the I/O
> routines like "READ". PDOS/380 can do the
> same by switching to AM31/32. Only a little
> bit of the operating system needs to support
> an AM64 interface - SVC 120, and SVCs
> start life as AM24/31/32 and can take their
> time to clear high bits of registers so that
> they can switch to AM64 to access memory
> above 4 GiB.
>
> In the specific case of PDOS/380 with
> Hercules/380 set to switch x'80' into AM32
> rather than AM31, then there is not even a
> need to switch to AM64 to manipulate
> memory in the 2 GiB to 4 GiB range.
>
> I'm inclined to say that PDOS/380 should
> match MVS/380 and keep the operating
> system as mostly 32-bit (AM24/31/32), and
> just having SVC 120 operating as 64-bit.
> Also program fetch needs to have some
> limited 64-bit capability as MVS/380 already
> does.
>
> I'm also inclined to create a new assembler
> variable, if none exists at the moment, so
> that the READ macro can detect if it is being
> assembled in a 64-bit environment so needs
> to have a SGR rather than SR.
>
> This way our predominantly 32-bit (using
> 32-bit registers only) operating systems can
> cope with callers who are using 64-bit or
> 128-bit registers. The operating system
> needs to protect itself from such callers by
> switching to AM24 (MVS/380) or AM31/32
> (PDOS/380) at entry to the READ etc
> routines.
>
> Note that for now MVS/380 would still be
> expected to load an RMODE 64 program
> BTL, just as it does RM31 programs. RM24
> memory is a subset of RM31/64 memory.
>
> This way all the pointers in the MVS control
> blocks can remain 32-bit, although maybe
> PDOS/380 should be coded in such a
> manner that a 4-byte value can be loaded
> into a 64-bit pointer so that PDOS/380 can
> be recompiled with a 64-bit compiler at a
> later date.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-13 06:40:43 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> On the mainframe we have the exact opposite.
>> The applications lead the OS. The applications
>> were able to run in 31-bit mode in MVS/XA
>> long before the operating system could cope
>> with a 31-bit caller. The problem was repeated
>> on z/OS with the operating system unable to
>> cope with an AM64 caller."

> No we dont. Just as there may not be an equivalent
> 64-bit call for a 32-bit call in Windows, so on the
> mainframe there are some things that dont run in
> 31-bit mode.

There was no reason why the READ routines
couldn't have had a BSM to switch from AM31
to AM24, rather than expecting the application
to do that.

> That certainly doesn't mean the OS is behind the apps.

Yes it does. It wasn't until late MVS/ESA that
they fixed that glaring deficiency.

> Plus, by doing it the way IBM did, Millions of
> Dollars of investment were protected. You may
> not like that, but the bank I worked at when.
> XA came out certainly did.

Adding a BSM to the READ routines, as was
done in MVS/380, does not have a downside
of losing millions of dollars in investment.
Nor was there a downside when IBM made
the routines 31-bit capable in late MVS/ESA.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-13 10:17:15 UTC
Permalink
"There was no reason why the READ routines
couldn't have had a BSM to switch from AM31
to AM24, rather than expecting the application
to do that."

Sure there was. Assembler F (IFOX00) did not support BSM. Bi-modal
addressing was only introduced and supported with Assembler H version 2 and
above.

Second, BSM does not save the current addressing mode ... so how would the
READ routine know how to get back to the caller's addressing mode?

Joe




On Wed, Jun 13, 2018 at 2:40 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> On the mainframe we have the exact opposite.
> >> The applications lead the OS. The applications
> >> were able to run in 31-bit mode in MVS/XA
> >> long before the operating system could cope
> >> with a 31-bit caller. The problem was repeated
> >> on z/OS with the operating system unable to
> >> cope with an AM64 caller."
>
> > No we dont. Just as there may not be an equivalent
> > 64-bit call for a 32-bit call in Windows, so on the
> > mainframe there are some things that dont run in
> > 31-bit mode.
>
> There was no reason why the READ routines
> couldn't have had a BSM to switch from AM31
> to AM24, rather than expecting the application
> to do that.
>
> > That certainly doesn't mean the OS is behind the apps.
>
> Yes it does. It wasn't until late MVS/ESA that
> they fixed that glaring deficiency.
>
> > Plus, by doing it the way IBM did, Millions of
> > Dollars of investment were protected. You may
> > not like that, but the bank I worked at when.
> > XA came out certainly did.
>
> Adding a BSM to the READ routines, as was
> done in MVS/380, does not have a downside
> of losing millions of dollars in investment.
> Nor was there a downside when IBM made
> the routines 31-bit capable in late MVS/ESA.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-13 10:25:35 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> There was no reason why the READ routines
>> couldn't have had a BSM to switch from AM31
>> to AM24, rather than expecting the application
>> to do that.

> Sure there was. Assembler F (IFOX00) did not
> support BSM. Bi-modal addressing was only
> introduced and supported with Assembler H
> version 2 and above.

If the BSM instruction was available for MVS/XA
applications, it was also available to MVS/XA
operating system routines.

> Second, BSM does not save the current addressing mode

Yes it does. What do you think the first register
is used for?

You can see how Gerhard did it (one example)
in MVS/380 by searching for "#ENTRY" here:

https://sourceforge.net/p/mvs380/mvs380/ci/master/tree/source/main/igg019ba.jcl

> so how would the READ routine know how to
> get back to the caller's addressing mode?

Exactly the same as Gerhard did with a few
lines of code.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-13 10:38:03 UTC
Permalink
"Yes it does. What do you think the first register
is used for?"

"When the first operand is 0 (for example BSM 0,14), BSM does not save the
current addressing mode, sets the PSW AMODE bit, and executes a branch."

http://www.bitsavers.org/pdf/ibm/370/MVS_XA/GC28-1143-2_MVS-XA_Conversion_Notebook_May84.pdf
(page 3-30).

Joe

On Wed, Jun 13, 2018 at 6:25 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> There was no reason why the READ routines
> >> couldn't have had a BSM to switch from AM31
> >> to AM24, rather than expecting the application
> >> to do that.
>
> > Sure there was. Assembler F (IFOX00) did not
> > support BSM. Bi-modal addressing was only
> > introduced and supported with Assembler H
> > version 2 and above.
>
> If the BSM instruction was available for MVS/XA
> applications, it was also available to MVS/XA
> operating system routines.
>
> > Second, BSM does not save the current addressing mode
>
> Yes it does. What do you think the first register
> is used for?
>
> You can see how Gerhard did it (one example)
> in MVS/380 by searching for "#ENTRY" here:
>
> https://sourceforge.net/p/mvs380/mvs380/ci/master/tree/
> source/main/igg019ba.jcl
>
> > so how would the READ routine know how to
> > get back to the caller's addressing mode?
>
> Exactly the same as Gerhard did with a few
> lines of code.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-13 11:20:13 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>>> BSM does not save the current addressing mode

>> Yes it does.

> When the first operand is 0

And when the first operand is something
other than 0? BSM exactly saves the
addressing mode, just the same as BALR
saves the return address, even though
there is an exception to that too.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-13 13:32:11 UTC
Permalink
The point is you can't ask IBM not to use BSM with a first operand of 0.

So that's why you can't use BSM to set addressing in a READ macro or
underlying SVC code. You can't guarantee that the callers addressing mode
is being saved


Joe

On Wed, Jun 13, 2018, 7:23 AM ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >>> BSM does not save the current addressing mode
>
> >> Yes it does.
>
> > When the first operand is 0
>
> And when the first operand is something
> other than 0? BSM exactly saves the
> addressing mode, just the same as BALR
> saves the return address, even though
> there is an exception to that too.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-13 15:23:18 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

> The point is you can't ask IBM not to use BSM with a first operand of 0.

I'm not asking IBM to use a BSM with a first
operand of 0. I'm asking them to do the same
thing Gerhard did in MVS/380.

> So that's why you can't use BSM to set addressing
> in a READ macro or underlying SVC code.

It's not in the READ macro that I want it done,
it's in the read *routine* (the same ones Gerhard
modified in fact), and an SVC saves addressing
mode anyway.

> You can't guarantee that the callers addressing mode is being saved

You can guarantee it by simply coding it, the
same way Gerhard did and has already been
proven to work just fine.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-14 05:13:55 UTC
Permalink
" I'm asking them to do the same
thing Gerhard did in MVS/380."

Which they never will.

"and an SVC saves addressing
mode anyway."

Oh really? Pray tell on MVS3.8J where there is no such thing as "addressing
mode" how an SVC saves the addressing mode?

Also, assembler F that comes with MVS 3.8J doesn't support the BSM
instruction anyway... So how is a person, using the tools provided with
MVS3.8J, supposed to assemble that module?

Joe



On Wed, Jun 13, 2018 at 11:23 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> > The point is you can't ask IBM not to use BSM with a first operand of 0..
>
> I'm not asking IBM to use a BSM with a first
> operand of 0. I'm asking them to do the same
> thing Gerhard did in MVS/380.
>
> > So that's why you can't use BSM to set addressing
> > in a READ macro or underlying SVC code.
>
> It's not in the READ macro that I want it done,
> it's in the read *routine* (the same ones Gerhard
> modified in fact), and an SVC saves addressing
> mode anyway.
>
> > You can't guarantee that the callers addressing mode is being saved
>
> You can guarantee it by simply coding it, the
> same way Gerhard did and has already been
> proven to work just fine.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-14 06:46:24 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> I'm asking them to do the same
>> thing Gerhard did in MVS/380.

> Which they never will.

Which is why the OS (MVS/XA and again
z/OS) was behind the apps, which is what
I said and you disputed.

>> and an SVC saves addressing
>> mode anyway.

> Oh really? Pray tell on MVS3.8J where there is
> no such thing as "addressing mode" how an
> SVC saves the addressing mode?

On MVS 3.8J there is no need to save the
addressing mode because everything is
AM24. *YOU* made a claim that the addressing
mode wouldn't get saved on an SVC. Which
environment were *YOU* claiming that the
addressing mode wouldn't be saved?

> Also, assembler F that comes with MVS 3.8J
> doesn't support the BSM instruction anyway...
> So how is a person, using the tools provided
> with MVS3.8J, supposed to assemble that module?

They're not. They're meant to use MVS/380
which comes with BSM as a macro. Or IBM
could have used the assembler that comes
with MVS/XA and done the same thing that
Gerhard did, to avoid the OS being behind
the apps.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-14 13:37:10 UTC
Permalink
"Which is why the OS (MVS/XA and again
z/OS) was behind the apps, which is what
I said and you disputed."

How can an OS be behind the apps? OSes provide services. Apps are written
for and consume those services that the OS provides.

The fact that you are doing things 100% in software does not change the
fact that those same things cannot be done on real hardware.

At the time of the release of MVS/XA in 1983, everyone was breathing a sigh
of relief from memory constraint. And without MVS/XA, machines like
the venerable 3090 would not exist (announced in 1985).

"YOU* made a claim that the addressing
mode wouldn't get saved on an SVC."

Thats right. SVC's get control from the FLIH, always in key 0 and always in
supervisor state. The SVC does not change addressing modes. All of that is
done prior to the SVC receiving control from the FLIH. Because they get
control from the FLIH, they have to return to the FLIH in the same
addressing mode.

Thats a long way of saying it is processes way prior to the SVC that worry
about the addressing mode of the issuer of an SVC.

Joe

On Thu, Jun 14, 2018 at 2:46 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> I'm asking them to do the same
> >> thing Gerhard did in MVS/380.
>
> > Which they never will.
>
> Which is why the OS (MVS/XA and again
> z/OS) was behind the apps, which is what
> I said and you disputed.
>
> >> and an SVC saves addressing
> >> mode anyway.
>
> > Oh really? Pray tell on MVS3.8J where there is
> > no such thing as "addressing mode" how an
> > SVC saves the addressing mode?
>
> On MVS 3.8J there is no need to save the
> addressing mode because everything is
> AM24. *YOU* made a claim that the addressing
> mode wouldn't get saved on an SVC. Which
> environment were *YOU* claiming that the
> addressing mode wouldn't be saved?
>
> > Also, assembler F that comes with MVS 3.8J
> > doesn't support the BSM instruction anyway...
> > So how is a person, using the tools provided
> > with MVS3.8J, supposed to assemble that module?
>
> They're not. They're meant to use MVS/380
> which comes with BSM as a macro. Or IBM
> could have used the assembler that comes
> with MVS/XA and done the same thing that
> Gerhard did, to avoid the OS being behind
> the apps.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-14 15:20:50 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> Which is why the OS (MVS/XA and again
>> z/OS) was behind the apps, which is what
>> I said and you disputed.

> How can an OS be behind the apps?

Because an app under MVS/XA can be
totally 31-bit, but it is required to dumb
down to AM24 because MVS/XA is
behind the app and can't handle an AM31
caller, e.g. the READ routines.

> At the time of the release of MVS/XA in 1983,
> everyone was breathing a sigh of relief from
> memory constraint.

And we can have another sigh of relief when
in late MVS/ESA (not XA), I/O routines became
AM31-capable, so apps did not have to
continue to dumb down for the backward OS.

And it's the same sigh of relief when Gerhard
updated the main READ routine in MVS/380
to work with both AM31 and (at least 32-bit)
AM64 callers.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-16 14:48:08 UTC
Permalink
I just realized that DOS extenders were similar
to MVS/XA. The 32-bit application would take
care of its own extended memory that MSDOS
knew nothing about, and would dumb down to
real mode when needing an OS service like
reading from a file.

I think that's how they work, anyway.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-16 16:32:23 UTC
Permalink
HIMEM.SYS was the driver in config.sys ... and of course DOS knew about it.
When windows (prior to win95) was launched, it switched the processor into
protected mode which allowed windows to access extended memory directly.
Only 16-bit apps could run on any version of windows that was started from
DOS.

32-bit applications on windows didn't come out until Windows 95, at which
point HIMEM.SYS went by the wayside, and windows 95 used its own memory
manager.

Joe

On Sat, Jun 16, 2018 at 9:48 AM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> I just realized that DOS extenders were similar
> to MVS/XA. The 32-bit application would take
> care of its own extended memory that MSDOS
> knew nothing about, and would dumb down to
> real mode when needing an OS service like
> reading from a file.
>
> I think that's how they work, anyway.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-16 19:22:34 UTC
Permalink
Thanks for the extra info, but I think that
DOS extenders can work even without
himem.sys, so DOS knows nothing about
the protected mode program and
extended memory.

BFN. Paul.




---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

HIMEM.SYS was the driver in config.sys ... and of course DOS knew about it. When windows (prior to win95) was launched, it switched the processor into protected mode which allowed windows to access extended memory directly. Only 16-bit apps could run on any version of windows that was started from DOS.


32-bit applications on windows didn't come out until Windows 95, at which point HIMEM.SYS went by the wayside, and windows 95 used its own memory manager.


Joe


On Sat, Jun 16, 2018 at 9:48 AM, ***@yahoo.com.au mailto:***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups.com mailto:hercules-***@yahoogroups.com> wrote:
I just realized that DOS extenders were similar
to MVS/XA. The 32-bit application would take
care of its own extended memory that MSDOS
knew nothing about, and would dumb down to
real mode when needing an OS service like
reading from a file.

I think that's how they work, anyway.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-16 20:26:22 UTC
Permalink
What do you mean by "DOS Extender"?

Joe

On Sat, Jun 16, 2018 at 2:22 PM, ***@yahoo.com.au [hercules-os380] <
hercules-***@yahoogroups.com> wrote:

>
>
> Thanks for the extra info, but I think that
> DOS extenders can work even without
> himem.sys, so DOS knows nothing about
> the protected mode program and
> extended memory.
>
> BFN. Paul.
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> HIMEM.SYS was the driver in config.sys ... and of course DOS knew about
> it. When windows (prior to win95) was launched, it switched the processor
> into protected mode which allowed windows to access extended memory
> directly. Only 16-bit apps could run on any version of windows that was
> started from DOS.
>
>
> 32-bit applications on windows didn't come out until Windows 95, at which
> point HIMEM.SYS went by the wayside, and windows 95 used its own memory
> manager.
>
>
> Joe
>
> On Sat, Jun 16, 2018 at 9:48 AM, ***@yahoo.com.au mailto:
> ***@yahoo.com.au [hercules-os380] <hercules-***@yahoogroups.com
> mailto:hercules-***@yahoogroups.com> wrote:
> I just realized that DOS extenders were similar
> to MVS/XA. The 32-bit application would take
> care of its own extended memory that MSDOS
> knew nothing about, and would dumb down to
> real mode when needing an OS service like
> reading from a file.
>
> I think that's how they work, anyway.
>
> BFN. Paul.
>
>
kerravon86@yahoo.com.au [hercules-os380]
2018-06-16 20:50:37 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

> What do you mean by "DOS Extender"?

A DOS extender was/is something that allows
you to run a 32-bit program (32-bit pointers
and 32-bit ints) on 16/20-bit MSDOS (so long
as you have an 80386 CPU).

I use EMX 0.9d but there were others.

My understanding is that they start up, switch
to protected mode so that they can access lots
of memory, then switch back to real mode
whenever they need to read/write a file, which
is something under the control of MSDOS
rather than the DOS extender.

PDOS/386 basically (and unusually) operates
in a similar manner, by constantly switching to
real mode to do BIOS calls to read the disk.
But that is all internal to PDOS, and 32-bit
PDOS applications operate purely in 32-bit
mode and are unaware of the unusual nature
of PDOS.

Note that EMX 0.9d ships with a GCC.EXE
that is 32-bit with the DOS extender built in
to the front of the executable. GCC + CC1
are about 1.3 MB in size.

BFN. Paul.
'Dave Wade' dave.g4ugm@gmail.com [hercules-os380]
2018-06-10 08:07:12 UTC
Permalink
Joe,

You never ran VM? MUSIC? MTS?

Dave



From: hercules-***@yahoogroups.com <hercules-***@yahoogroups.com>
Sent: 10 June 2018 08:06
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-os380] Re: data pointers








"And that effectively makes
the mainframe the same as Windows."



No. The mainframe is BATCH oriented. Windows is not.



Joe



On Sun, Jun 10, 2018 at 1:05 AM, ***@yahoo.com.au <mailto:***@yahoo.com.au> [hercules-os380] <hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> > wrote:



---In hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> , <***@gmail.com <mailto:***@gmail.com> > wrote :

>> so long as the READ
>> routine immediately does a BSM to AM24/31 on
>> entry.

> What READ routine? There is only a READ macro...
> The appropriate address mode must be set BEFORE
> executing a READ macro.

I don't want to have to switch to AM24/31 prior
to executing the READ macro. I want my 64-bit
or 128-bit application to be able to reside above
the 4 GiB location and issue READ from there,
which ends up calling a READ routine rather
than an SVC.

However, I've just realized that R15 will not have
the upper 32 bits clear if the module is loaded
above 4 GiB, so a 64-bit version of the macro
would be required. And that effectively makes
the mainframe the same as Windows.

BFN. Paul.
Joe Monk joemonk64@gmail.com [hercules-os380]
2018-06-10 22:40:14 UTC
Permalink
Of course... but he's talking specifically about MVS. :)

Joe

On Sun, Jun 10, 2018 at 4:07 AM, 'Dave Wade' ***@gmail.com
[hercules-os380] <hercules-***@yahoogroups.com> wrote:

>
>
> Joe,
>
> You never ran VM? MUSIC? MTS?
>
> Dave
>
>
>
> *From:* hercules-***@yahoogroups.com <hercules-***@yahoogroups.com>
> *Sent:* 10 June 2018 08:06
> *To:* hercules-***@yahoogroups.com
> *Subject:* Re: [hercules-os380] Re: data pointers
>
>
>
>
>
>
> "And that effectively makes
> the mainframe the same as Windows."
>
>
>
> No. The mainframe is BATCH oriented. Windows is not.
>
>
>
> Joe
>
>
>
> On Sun, Jun 10, 2018 at 1:05 AM, ***@yahoo.com.au [hercules-os380]
> <hercules-***@yahoogroups.com> wrote:
>
>
>
> ---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :
>
> >> so long as the READ
> >> routine immediately does a BSM to AM24/31 on
> >> entry.
>
> > What READ routine? There is only a READ macro...
> > The appropriate address mode must be set BEFORE
> > executing a READ macro.
>
> I don't want to have to switch to AM24/31 prior
> to executing the READ macro. I want my 64-bit
> or 128-bit application to be able to reside above
> the 4 GiB location and issue READ from there,
> which ends up calling a READ routine rather
> than an SVC.
>
> However, I've just realized that R15 will not have
> the upper 32 bits clear if the module is loaded
> above 4 GiB, so a 64-bit version of the macro
> would be required. And that effectively makes
> the mainframe the same as Windows.
>
> BFN. Paul.
>
>
>
>
>
>
>
>
'Dave Wade' dave.g4ugm@gmail.com [hercules-os380]
2018-06-11 06:26:48 UTC
Permalink
HE switches, sometimes MVS, sometimes PDOS
.



Dave



From: hercules-***@yahoogroups.com <hercules-***@yahoogroups.com>
Sent: 10 June 2018 23:40
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-os380] Re: data pointers








Of course... but he's talking specifically about MVS. :)



Joe



On Sun, Jun 10, 2018 at 4:07 AM, 'Dave Wade' ***@gmail.com <mailto:***@gmail.com> [hercules-os380] <hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> > wrote:



Joe,

You never ran VM? MUSIC? MTS?

Dave



From: hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> <hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> >
Sent: 10 June 2018 08:06
To: hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com>
Subject: Re: [hercules-os380] Re: data pointers







"And that effectively makes
the mainframe the same as Windows."



No. The mainframe is BATCH oriented. Windows is not.



Joe



On Sun, Jun 10, 2018 at 1:05 AM, ***@yahoo.com.au <mailto:***@yahoo.com.au> [hercules-os380] <hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> > wrote:



---In hercules-***@yahoogroups.com <mailto:hercules-***@yahoogroups.com> , <***@gmail.com <mailto:***@gmail.com> > wrote :

>> so long as the READ
>> routine immediately does a BSM to AM24/31 on
>> entry.

> What READ routine? There is only a READ macro...
> The appropriate address mode must be set BEFORE
> executing a READ macro.

I don't want to have to switch to AM24/31 prior
to executing the READ macro. I want my 64-bit
or 128-bit application to be able to reside above
the 4 GiB location and issue READ from there,
which ends up calling a READ routine rather
than an SVC.

However, I've just realized that R15 will not have
the upper 32 bits clear if the module is loaded
above 4 GiB, so a 64-bit version of the macro
would be required. And that effectively makes
the mainframe the same as Windows.

BFN. Paul.
'Hamilton, Robert' rhamilton@cas.org [hercules-os380]
2018-06-11 17:22:27 UTC
Permalink
Well, we could mention VSPC, Orvyl and Wylbur, or
APL. Let’s not, tho.

Although some people get their kicks from CICS
b-)

R;



From: hercules-***@yahoogroups.com [mailto:hercules-***@yahoogroups.com]
Sent: Sunday, June 10, 2018 6:40 PM
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-os380] Re: data pointers


Of course... but he's talking specifically about MVS. :)

Joe

On Sun, Jun 10, 2018 at 4:07 AM, 'Dave Wade' ***@gmail.com<mailto:***@gmail.com> [hercules-os380] <hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com>> wrote:

Joe,
You never ran VM? MUSIC? MTS?
Dave

From: hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com> <hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com>>
Sent: 10 June 2018 08:06
To: hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com>
Subject: Re: [hercules-os380] Re: data pointers



"And that effectively makes
the mainframe the same as Windows."

No. The mainframe is BATCH oriented. Windows is not.

Joe

On Sun, Jun 10, 2018 at 1:05 AM, ***@yahoo.com.au<mailto:***@yahoo.com.au> [hercules-os380] <hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com>> wrote:


---In hercules-***@yahoogroups.com<mailto:hercules-***@yahoogroups.com>, <***@gmail.com<mailto:***@gmail.com>> wrote :

>> so long as the READ
>> routine immediately does a BSM to AM24/31 on
>> entry.

> What READ routine? There is only a READ macro...
> The appropriate address mode must be set BEFORE
> executing a READ macro.

I don't want to have to switch to AM24/31 prior
to executing the READ macro. I want my 64-bit
or 128-bit application to be able to reside above
the 4 GiB location and issue READ from there,
which ends up calling a READ routine rather
than an SVC.

However, I've just realized that R15 will not have
the upper 32 bits clear if the module is loaded
above 4 GiB, so a 64-bit version of the macro
would be required. And that effectively makes
the mainframe the same as Windows.

BFN. Paul.






Confidentiality Notice: This electronic message transmission, including any attachment(s), may contain confidential, proprietary, or privileged information from CAS, a division of the American Chemical Society ("ACS"). If you have received this transmission in error, be advised that any disclosure, copying, distribution, or use of the contents of this information is strictly prohibited. Please destroy all copies of the message and contact the sender immediately by either replying to this message or calling 614-447-3600.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-08 13:36:33 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@gmail.com> wrote :

>> But the
>> rest of the OS is 24-bit and likely to stay that
>> way for a very long time.

> Not just the OS. The machine is 24-bit also.

The hardware has been upgraded to 64-bit
already (both 64-bit instructions and 64-bit
memory is available). The challenge is the OS.
I am struggling to figure out how to classify the
OS which has some 31-bit or 64-bit features
but mostly it is stuck at 24-bit.

Also what to do about PDOS/380 which I would
like to be fully 32-bit, executing in AM64, but I'm
unclear about what I can do about the high
32 bits of registers when READ or OPEN is
executed. Ideally the high bits are saved and
cleared, so that it supports 64-bit programs
that have put crap in the top 32 bits of
registers. But I'm not sure where the data can
actually be saved. Perhaps for the SVCs low
memory can be used. Don't know about READ.

But at what point does this cease to be a
32-bit OS and become a 64-bit OS? MVS/380
solves the problem a different way by being
able to switch to AM24/31 where crap in the
high bits is irrelevant, and maybe that is the
superior solution. I would have preferred no
AMODE switching in the PDOS code though,
and keep it pure AM64.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-os380]
2018-06-07 14:58:26 UTC
Permalink
---In hercules-***@yahoogroups.com, <***@yahoo.com.au> wrote :

> Basically that means that the OS needs to
> be at least partially 64-bit, even for interfaces
> that are still 32-bit. This is a general rule,
> e.g. 128-bit applications with an operating
> system that is still partially 64-bit.

Alternatively. The problem is essentially that
the OS is not fully upgraded. This is the case
in MVS/380 too. There is some support for
31-bit processing, mainly GETMAIN. But the
rest of the OS is 24-bit and likely to stay that
way for a very long time.

So too if we had a 256-bit system running a
256-bit application, and getting 256-bit
memory via GETMAIN, yet most of the OS
is still 128-bit. So when you call READ, it
can't cope with the fact that the high 128
bits may have data in them. In that case,
there is a responsibility for the *application*
to step down. But everything is AM-infinity,
so it is not possible to easily step down.
Instead, the application will be required to
save, then clear the top 128 bits of each
register prior to executing READ.

If PDOS/380 is entirely 32 bit (all that GCC
can produce), and there is some code
that whenever a GETMAIN LOC=64 is
executed that it returns address 0xFFFFFFF0,
(ie 4 GiB minus 16), with the expectation
that the application will manage its own
memory above 4 GiB, then if PDOS/380
loads a 64-bit module into the 2 GiB-4 GiB
range, where it is not possible to step
down to AM32, then the application will
instead need to zero out the high 32 bits
of each register itself. MVS/380 would have
the same issue if we ever support loading
modules into the 2 GiB to 4 GiB range.

BFN. Paul.
Loading...