Discussion:
Re: Sample OS - Madnick
(too old to reply)
winkelmann@id.ethz.ch [hercules-390]
2015-10-25 20:26:35 UTC
Permalink
Hi All


A few days ago, a thread in the z390 group caught my attention: A group member found the zip file with the source of the sample OS Peter uploaded in 2002. This triggered a discussion on how to get it to run. While it quickly became clear to the participants of the discussion that it cannot run under z390 (which supports problem programs only), wild theories evolved on why it also wouldn't possibly run under Hercules...


To avoid others getting misguided by these theories I did a quick cross check, only to find that Peter's source runs without any problems unmodified on Hercules.


Now I of course wanted to know more about this system and fetched the book "Operating Systems" by Stuart E. Madnick and John J. Donovan from our library (they still have one, cataloged in 1974 ). Chapter 7 of this book describes the sample operating system in great detail and also provides an assembly listing of it. I went down the same path Harold mentioned, i.e. added the second stream (reader and printer) back in and removed the comments from the storage key logic (arrrghh should have seen Harold's post earlier then I wouldn't have had to find out myself), and, no wonder, got the same result: Now the locations match the listing in the book, as far as I can tell from just comparing visually. And, most important, the system still runs smoothly on Hercules in S/370 BC mode .


Of course I should try to OCR the listing in the book to be able to make sure that there are no other hidden differences. But the book I've taken out of our library isn't in the best condition. So I'm a bit reluctant to just give it to some shop to copy and OCR it. Doing it manually, one page after the other, would massively exceed my spare time. So, for the time being, I'll leave it as it is, without doing this final cross check.


So far so good: The system is running, and now? The book also presents a very simple user program to run under the sample OS. I minimally extended this program to not only print a "success" message but to also identify itself by telling on which of the two streams it is running and at which address it is loaded. That way, when running it on both streams simultaneously, one can nicely see it's really two different instances...


For general enjoyment I've packaged this up, together with a matching Hercules configuration and instructions on how to run it. It can be found in the files section of this group at


https://groups.yahoo.com/neo/groups/hercules-390/files/madnick_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/madnick_for_Hercules.zip



Here an excerpt of a Hercules session running the demo user program on the sample operating system:


HHC01603I script scripts/load_card_decks

HHC02260I Script 3: begin processing file scripts/load_card_decks

HHC02245I 0:0012 device initialized

HHC02245I 0:000C device initialized

HHC02245I 0:0010 device initialized

HHC02245I 0:000E device initialized

HHC01603I *

HHC01603I * Enter "ipl c clear" to load the sample operating system

HHC01603I * If job execution doesn't start after IPL, enter "restart" to initiate execution

HHC01603I * Job output can be found in folder prt

HHC01603I *

HHC02264I Script 3: file scripts/load_card_decks processing ended

HHC01603I devlist

HHC02279I 0:000C 3505 rdr/sample_operating_system_version_2.00.ipldeck multifile ebcdic eof IO[0] pending

HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[0] pending

HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[0] pending

HHC02279I 0:0012 3505 rdr/demo_user_program.deck multifile ebcdic eof IO[0] pending

HHC01603I ipl c clear

HHC01603I restart

HHC02228I Key restart pressed

HHC01603I devlist

HHC02279I 0:000C 3505 * eof IO[17]

HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[5] open

HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[5] open

HHC02279I 0:0012 3505 * eof IO[15]

HHC01603I sh type prt\stream-1_output.txt

$JOB,2K,READER=IN,PRINTER=OUT

--- Sample Operating System Version 2.00 ---

User program entry on RDR1 successful, entry point = 002800

PROGRAM HALT

HHC01603I sh type prt\stream-2_output.txt

$JOB,2K,READER=IN,PRINTER=OUT

--- Sample Operating System Version 2.00 ---

User program entry on RDR2 successful, entry point = 003800

PROGRAM HALT

herc =====>

CP00 PSW=FE0200008000056A 24..W..... instcnt 13,841; mips 0.000; I/O 0


I'd like to thank Peter for providing the source (personally I'd never ever had the patience to transcript this from the book successfully) and Harold, Hans and Martin for the helpful comments in this thread. And last but not least credits go to Stuart E. Madnick and John J. Donovan for publishing their very interesting "Operating Systems" book back in the '70s.


Have fun!


Cheers
JÃŒrgen
I did the transcription from the book, and made the modifications for
VM/370. The original ran on a 360, which used a 2K block for storage
protection, so I had to change it to 4K and, I expect, change the
storage allocation routines to correspond. Somewhere in the files
section is a small loader I used to load the object deck into memory,
but I assume the BPS loader would work as well. Other than that I
don't recall making any other mods, but it was a loooonnngg time ago.
Outside of the storage key logic being commented out, I found one other
change that actually hit a couple of spots. The original source in the
book supported two reader/printer pairs for concurrent jobs. One of the
pairs was removed, possibly for testing. Removing the comments from the
storage key logic and adding back the missing reader/printer pair I got
it to assemble with the locations matching the listing in the book.

No testing yet. I probably need to look at the logic that might have
been effected by the adjustments you mention.

As I said in the first post, I don't really remember from where or whom
I received the code.

Harold Grovesteen
Bert Lindeman bert.lindeman@gmail.com [hercules-390]
2015-10-25 22:10:21 UTC
Permalink
Thank you, Juergen!

Running Hercules 3.11 got these errors:
HHCCF012S Error in conf\madnick.cnf line 11: 145 is not a valid CPU model
HHCCF013S Error in conf\madnick.cnf line 13: Invalid main storage size 512K

Simply "fixed" by using madnick.cnf:
CPUMODEL 0145
MAINSIZE 512

Now up to find some time to look into madnick ;-)

FUN!

Kind regards,
Bert
Post by ***@id.ethz.ch [hercules-390]
Hi All
A few days ago, a thread in the z390 group caught my attention: A
group member found the zip file with the source of the sample OS Peter
uploaded in 2002. This triggered a discussion on how to get it to run.
While it quickly became clear to the participants of the discussion
that it cannot run under z390 (which supports problem programs only),
wild theories evolved on why it also wouldn't possibly run under
Hercules...
To avoid others getting misguided by these theories I did a quick
cross check, only to find that Peter's source runs without any
problems unmodified on Hercules.
Now I of course wanted to know more about this system and fetched the
book "Operating Systems" by Stuart E. Madnick and John J. Donovan from
our library (they still have one, cataloged in 1974 ). Chapter 7 of
this book describes the sample operating system in great detail and
also provides an assembly listing of it. I went down the same path
Harold mentioned, i.e. added the second stream (reader and printer)
back in and removed the comments from the storage key logic (arrrghh
should have seen Harold's post earlier then I wouldn't have had to
find out myself), and, no wonder, got the same result: Now the
locations match the listing in the book, as far as I can tell from
just comparing visually. And, most important, the system still runs
smoothly on Hercules in S/370 BC mode .
Of course I should try to OCR the listing in the book to be able to
make sure that there are no other hidden differences. But the book
I've taken out of our library isn't in the best condition. So I'm a
bit reluctant to just give it to some shop to copy and OCR it. Doing
it manually, one page after the other, would massively exceed my spare
time. So, for the time being, I'll leave it as it is, without doing
this final cross check.
So far so good: The system is running, and now? The book also presents
a very simple user program to run under the sample OS. I minimally
extended this program to not only print a "success" message but to
also identify itself by telling on which of the two streams it is
running and at which address it is loaded. That way, when running it
on both streams simultaneously, one can nicely see it's really two
different instances...
For general enjoyment I've packaged this up, together with a matching
Hercules configuration and instructions on how to run it. It can be
found in the files section of this group at
https://groups.yahoo.com/neo/groups/hercules-390/files/madnick_for_Hercules.zip
Here an excerpt of a Hercules session running the demo user program on
HHC01603I *script scripts/load_card_decks*
HHC02260I Script 3: begin processing file scripts/load_card_decks
HHC02245I 0:0012 device initialized
HHC02245I 0:000C device initialized
HHC02245I 0:0010 device initialized
HHC02245I 0:000E device initialized
HHC01603I *
HHC01603I * Enter "ipl c clear" to load the sample operating system
HHC01603I * If job execution doesn't start after IPL, enter "restart" to initiate execution
HHC01603I * Job output can be found in folder prt
HHC01603I *
HHC02264I Script 3: file scripts/load_card_decks processing ended
HHC01603I *devlist*
HHC02279I 0:000C 3505 rdr/sample_operating_system_version_2.00.ipldeck
multifile ebcdic eof IO[0] pending
HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[0] pending
HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[0] pending
HHC02279I 0:0012 3505 rdr/demo_user_program.deck multifile ebcdic eof IO[0] pending
HHC01603I *ipl c clear*
HHC01603I *restart*
HHC02228I Key restart pressed
HHC01603I *devlist*
HHC02279I 0:000C 3505 * eof IO[17]
HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[5] open
HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[5] open
HHC02279I 0:0012 3505 * eof IO[15]
HHC01603I *sh type prt\stream-1_output.txt*
$JOB,2K,READER=IN,PRINTER=OUT
--- Sample Operating System Version 2.00 ---
User program entry on RDR1 successful, entry point = 002800
PROGRAM HALT
HHC01603I *sh type prt\stream-2_output.txt*
$JOB,2K,READER=IN,PRINTER=OUT
--- Sample Operating System Version 2.00 ---
User program entry on RDR2 successful, entry point = 003800
PROGRAM HALT
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 13,841; mips 0.000; I/O 0
I'd like to thank Peter for providing the source (personally I'd never
ever had the patience to transcript this from the book successfully)
and Harold, Hans and Martin for the helpful comments in this thread.
And last but not least credits go to Stuart E. Madnick and John J.
Donovan for publishing their very interesting "Operating Systems" book
back in the '70s.
Have fun!
Cheers
JÃŒrgen
I did the transcription from the book, and made the
modifications for
VM/370. The original ran on a 360, which used a 2K block for storage
protection, so I had to change it to 4K and, I expect, change the
storage allocation routines to correspond. Somewhere in the files
section is a small loader I used to load the object deck into
memory,
but I assume the BPS loader would work as well. Other than that I
don't recall making any other mods, but it was a loooonnngg time
ago.
Outside of the storage key logic being commented out, I found one other
change that actually hit a couple of spots. The original source in the
book supported two reader/printer pairs for concurrent jobs. One of the
pairs was removed, possibly for testing. Removing the comments from the
storage key logic and adding back the missing reader/printer pair I got
it to assemble with the locations matching the listing in the book.
No testing yet. I probably need to look at the logic that might have
been effected by the adjustments you mention.
As I said in the first post, I don't really remember from where or whom
I received the code.
Harold Grovesteen
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-10-26 03:46:57 UTC
Permalink
I got the same errors ... but ...

Jurgen's tk4- Hercules binary *do* allow the original config.

It also allows the MAINSIZE "k" suffix, with a size of "1K", but "1K"
actually seems to be 1 *8k* page ;)
Post by Bert Lindeman ***@gmail.com [hercules-390]
Thank you, Juergen!
HHCCF012S Error in conf\madnick.cnf line 11: 145 is not a valid CPU model
HHCCF013S Error in conf\madnick.cnf line 13: Invalid main storage size 512K
CPUMODEL 0145
MAINSIZE 512
Now up to find some time to look into madnick ;-)
FUN!
Kind regards,
Bert
Post by ***@id.ethz.ch [hercules-390]
Hi All
A few days ago, a thread in the z390 group caught my attention: A
group member found the zip file with the source of the sample OS Peter
uploaded in 2002. This triggered a discussion on how to get it to run.
While it quickly became clear to the participants of the discussion
that it cannot run under z390 (which supports problem programs only),
wild theories evolved on why it also wouldn't possibly run under
Hercules...
To avoid others getting misguided by these theories I did a quick
cross check, only to find that Peter's source runs without any
problems unmodified on Hercules.
Now I of course wanted to know more about this system and fetched the
book "Operating Systems" by Stuart E. Madnick and John J. Donovan from
our library (they still have one, cataloged in 1974 ). Chapter 7 of
this book describes the sample operating system in great detail and
also provides an assembly listing of it. I went down the same path
Harold mentioned, i.e. added the second stream (reader and printer)
back in and removed the comments from the storage key logic (arrrghh
should have seen Harold's post earlier then I wouldn't have had to
find out myself), and, no wonder, got the same result: Now the
locations match the listing in the book, as far as I can tell from
just comparing visually. And, most important, the system still runs
smoothly on Hercules in S/370 BC mode .
Of course I should try to OCR the listing in the book to be able to
make sure that there are no other hidden differences. But the book
I've taken out of our library isn't in the best condition. So I'm a
bit reluctant to just give it to some shop to copy and OCR it. Doing
it manually, one page after the other, would massively exceed my spare
time. So, for the time being, I'll leave it as it is, without doing
this final cross check.
So far so good: The system is running, and now? The book also presents
a very simple user program to run under the sample OS. I minimally
extended this program to not only print a "success" message but to
also identify itself by telling on which of the two streams it is
running and at which address it is loaded. That way, when running it
on both streams simultaneously, one can nicely see it's really two
different instances...
For general enjoyment I've packaged this up, together with a matching
Hercules configuration and instructions on how to run it. It can be
found in the files section of this group at
https://groups.yahoo.com/neo/groups/hercules-390/files/madnick_for_Hercules.zip
Here an excerpt of a Hercules session running the demo user program on
HHC01603I *script scripts/load_card_decks*
HHC02260I Script 3: begin processing file scripts/load_card_decks
HHC02245I 0:0012 device initialized
HHC02245I 0:000C device initialized
HHC02245I 0:0010 device initialized
HHC02245I 0:000E device initialized
HHC01603I *
HHC01603I * Enter "ipl c clear" to load the sample operating system
HHC01603I * If job execution doesn't start after IPL, enter "restart"
to initiate execution
HHC01603I * Job output can be found in folder prt
HHC01603I *
HHC02264I Script 3: file scripts/load_card_decks processing ended
HHC01603I *devlist*
HHC02279I 0:000C 3505 rdr/sample_operating_system_version_2.00.ipldeck
multifile ebcdic eof IO[0] pending
HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[0] pending
HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[0] pending
HHC02279I 0:0012 3505 rdr/demo_user_program.deck multifile ebcdic eof IO[0] pending
HHC01603I *ipl c clear*
HHC01603I *restart*
HHC02228I Key restart pressed
HHC01603I *devlist*
HHC02279I 0:000C 3505 * eof IO[17]
HHC02279I 0:000E 1403 prt/stream-2_output.txt print fcbck IO[5] open
HHC02279I 0:0010 1403 prt/stream-1_output.txt print fcbck IO[5] open
HHC02279I 0:0012 3505 * eof IO[15]
HHC01603I *sh type prt\stream-1_output.txt*
$JOB,2K,READER=IN,PRINTER=OUT
--- Sample Operating System Version 2.00 ---
User program entry on RDR1 successful, entry point = 002800
PROGRAM HALT
HHC01603I *sh type prt\stream-2_output.txt*
$JOB,2K,READER=IN,PRINTER=OUT
--- Sample Operating System Version 2.00 ---
User program entry on RDR2 successful, entry point = 003800
PROGRAM HALT
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 13,841; mips 0.000; I/O 0
I'd like to thank Peter for providing the source (personally I'd never
ever had the patience to transcript this from the book successfully)
and Harold, Hans and Martin for the helpful comments in this thread.
And last but not least credits go to Stuart E. Madnick and John J.
Donovan for publishing their very interesting "Operating Systems" book
back in the '70s.
Have fun!
Cheers
JÃŒrgen
I did the transcription from the book, and made the
modifications for
VM/370. The original ran on a 360, which used a 2K block for
storage
protection, so I had to change it to 4K and, I expect, change the
storage allocation routines to correspond. Somewhere in the files
section is a small loader I used to load the object deck into
memory,
but I assume the BPS loader would work as well. Other than that I
don't recall making any other mods, but it was a loooonnngg time
ago.
Outside of the storage key logic being commented out, I found one other
change that actually hit a couple of spots. The original source in the
book supported two reader/printer pairs for concurrent jobs. One of the
pairs was removed, possibly for testing. Removing the comments from the
storage key logic and adding back the missing reader/printer pair I got
it to assemble with the locations matching the listing in the book.
No testing yet. I probably need to look at the logic that might have
been effected by the adjustments you mention.
As I said in the first post, I don't really remember from where or whom
I received the code.
Harold Grovesteen
winkelmann@id.ethz.ch [hercules-390]
2015-10-26 08:36:30 UTC
Permalink
Hi Bernd and Mike


thanks for reporting this problem.


There are differences in configuration parameters between the Spinhawk (Roger's current 3.11 release) and the Hyperion (developer repository) lines of Hercules. Amongst those are the artifacts you are mentioning:
MAINSIZE: In Spinhawk an number greater than 2, allowing no suffix, specifying the main memory size in Megabytes. In Hyperion a number with optional suffixes B, K, M, G, T, O, E - the default being M -, specifying the main memory size in the unit specified by the suffix. That means, my intention to define a machine with 512 Kilobytes of memory isn't doable with the Spinhawk version. I'll change my config to use MAINSIZE 2, which will work with both Hercules lines and define a machine with 2 Megabytes of main memory (way to much for the Madnick OS, but who cares... btw. the 512K I defined is already 16 times as much as specified in Madnick/Donovan's book; they defined the core size to be 32 Kilobytes).
CPUMODEL: I chose the 145, as this was an entry level model back in the days the Madnick OS was developed, however after looking it up I see that the correct designation in STIDP for 370/145 is 3145. Of course it's not relevant at all what's used there. But nonetheless we have a difference between Spinhawk and Hyperion: Spinhawk requires exactly 4 hexadecimal digits, while Hyperion pads the value entered to the left, if it is shorter than 4 digits. Anyway, I'll change it to CPUMODEL 3145 for correctness.
Cheers
JÃŒrgen


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


I got the same errors ... but ...

Jurgen's tk4- Hercules binary *do* allow the original config.

It also allows the MAINSIZE "k" suffix, with a size of "1K", but "1K"
actually seems to be 1 *8k* page ;)
Post by Bert Lindeman ***@gmail.com [hercules-390]
Thank you, Juergen!
HHCCF012S Error in conf\madnick.cnf line 11: 145 is not a valid CPU model
HHCCF013S Error in conf\madnick.cnf line 13: Invalid main storage size 512K
CPUMODEL 0145
MAINSIZE 512
Now up to find some time to look into madnick ;-)
FUN!
Kind regards,
Bert
winkelmann@id.ethz.ch [hercules-390]
2015-10-26 08:37:54 UTC
Permalink
Ooops, my spell checker... sorry Bert, I of course meant Bert and not Bernd...
winkelmann@id.ethz.ch [hercules-390]
2015-10-26 09:30:33 UTC
Permalink
Hi All


I've re-uploaded the zip file with the two changes mentioned below. Sadly, I've also changed the spelling of the zip file's name (from madnick... to Madnick...) without considering that the names are case sensitive on Yahoo. As a result the link I published in my post from yesterday does no longer exist. Please use


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip


instead.



Cheers
JÃŒrgen

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


Hi Bert and Mike


thanks for reporting this problem.


There are differences in configuration parameters between the Spinhawk (Roger's current 3.11 release) and the Hyperion (developer repository) lines of Hercules. Amongst those are the artifacts you are mentioning:
MAINSIZE: In Spinhawk an number greater than 2, allowing no suffix, specifying the main memory size in Megabytes. In Hyperion a number with optional suffixes B, K, M, G, T, O, E - the default being M -, specifying the main memory size in the unit specified by the suffix. That means, my intention to define a machine with 512 Kilobytes of memory isn't doable with the Spinhawk version. I'll change my config to use MAINSIZE 2, which will work with both Hercules lines and define a machine with 2 Megabytes of main memory (way to much for the Madnick OS, but who cares... btw. the 512K I defined is already 16 times as much as specified in Madnick/Donovan's book; they defined the core size to be 32 Kilobytes).
CPUMODEL: I chose the 145, as this was an entry level model back in the days the Madnick OS was developed, however after looking it up I see that the correct designation in STIDP for 370/145 is 3145. Of course it's not relevant at all what's used there. But nonetheless we have a difference between Spinhawk and Hyperion: Spinhawk requires exactly 4 hexadecimal digits, while Hyperion pads the value entered to the left, if it is shorter than 4 digits. Anyway, I'll change it to CPUMODEL 3145 for correctness.
Cheers
JÃŒrgen


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


I got the same errors ... but ...

Jurgen's tk4- Hercules binary *do* allow the original config.

It also allows the MAINSIZE "k" suffix, with a size of "1K", but "1K"
actually seems to be 1 *8k* page ;)
Post by Bert Lindeman ***@gmail.com [hercules-390]
Thank you, Juergen!
HHCCF012S Error in conf\madnick.cnf line 11: 145 is not a valid CPU model
HHCCF013S Error in conf\madnick.cnf line 13: Invalid main storage size 512K
CPUMODEL 0145
MAINSIZE 512
Now up to find some time to look into madnick ;-)
FUN!
Kind regards,
Bert
Bert Lindeman bert.lindeman@gmail.com [hercules-390]
2015-10-26 10:11:07 UTC
Permalink
Thanks JÃŒrgen,

This download now works fine with Hercules 3.11.

Bert
Post by ***@id.ethz.ch [hercules-390]
Hi All
I've re-uploaded the zip file with the two changes mentioned below.
Sadly, I've also changed the spelling of the zip file's name (from
madnick... to Madnick...) without considering that the names are case
sensitive on Yahoo. As a result the link I published in my post from
yesterday does no longer exist. Please use
_https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip_
instead.
Cheers
JÃŒrgen
Hi Bert and Mike
thanks for reporting this problem.
There are differences in configuration parameters between the Spinhawk
(Roger's current 3.11 release) and the Hyperion (developer
repository) lines of Hercules. Amongst those are the artifacts you are
* MAINSIZE: In Spinhawk an number greater than 2, allowing no
suffix, specifying the main memory size in Megabytes. In Hyperion
a number with optional suffixes B, K, M, G, T, O, E - the default
being M -, specifying the main memory size in the unit specified
by the suffix. That means, my intention to define a machine with
512 Kilobytes of memory isn't doable with the Spinhawk version.
I'll change my config to use MAINSIZE 2, which will work with both
Hercules lines and define a machine with 2 Megabytes of main
memory (way to much for the Madnick OS, but who cares... btw. the
512K I defined is already 16 times as much as specified in
Madnick/Donovan's book; they defined the core size to be 32
Kilobytes).
* CPUMODEL: I chose the 145, as this was an entry level model back
in the days the Madnick OS was developed, however after looking it
up I see that the correct designation in STIDP for 370/145 is
3145. Of course it's not relevant at all what's used there. But
Spinhawk requires exactly 4 hexadecimal digits, while Hyperion
pads the value entered to the left, if it is shorter than 4
digits. Anyway, I'll change it to CPUMODEL 3145 for correctness.
Cheers
JÃŒrgen
I got the same errors ... but ...
Jurgen's tk4- Hercules binary *do* allow the original config.
It also allows the MAINSIZE "k" suffix, with a size of "1K", but "1K"
actually seems to be 1 *8k* page ;)
Post by Bert Lindeman ***@gmail.com [hercules-390]
Thank you, Juergen!
HHCCF012S Error in conf\madnick.cnf line 11: 145 is not a
valid CPU model
Post by Bert Lindeman ***@gmail.com [hercules-390]
HHCCF013S Error in conf\madnick.cnf line 13: Invalid main
storage size 512K
Post by Bert Lindeman ***@gmail.com [hercules-390]
CPUMODEL 0145
MAINSIZE 512
Now up to find some time to look into madnick ;-)
FUN!
Kind regards,
Bert
winkelmann@id.ethz.ch [hercules-390]
2015-10-26 10:17:23 UTC
Permalink
H Bert


thanks for testing!


Cheers
JÃŒrgen
Harold Grovesteen h.grovsteen@tx.rr.com [hercules-390]
2015-10-26 14:49:46 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
Hi All
A few days ago, a thread in the z390 group caught my attention: A
group member found the zip file with the source of the sample OS Peter
uploaded in 2002. This triggered a discussion on how to get it to run.
While it quickly became clear to the participants of the discussion
that it cannot run under z390 (which supports problem programs only),
wild theories evolved on why it also wouldn't possibly run under
Hercules...
To avoid others getting misguided by these theories I did a quick
cross check, only to find that Peter's source runs without any
problems unmodified on Hercules.
Now I of course wanted to know more about this system and fetched the
book "Operating Systems" by Stuart E. Madnick and John J. Donovan from
our library (they still have one, cataloged in 1974 ). Chapter 7 of
this book describes the sample operating system in great detail and
also provides an assembly listing of it. I went down the same path
Harold mentioned, i.e. added the second stream (reader and printer)
back in and removed the comments from the storage key logic (arrrghh
should have seen Harold's post earlier then I wouldn't have had to
find out myself), and, no wonder, got the same result: Now the
locations match the listing in the book, as far as I can tell from
just comparing visually. And, most important, the system still runs
smoothly on Hercules in S/370 BC mode .
Congratulations!

Where did you find the loader that you IPL on 00C? That was the point
at which the z390 discussion ended.

I believe another valid option could be to use in the script the
Hercules loadtext command followed by the restart. loadtext does what a
typical card loader does, namely move the text in the TXT records to
storage. loadtext does not load the IPL PSW, which is why the restart
is needed. That would eliminate the need for a loader, letting you use
the assembled object deck directly.

Is the loader you are using the reason you have to issue the restart to
get it to run?
Post by ***@id.ethz.ch [hercules-390]
Of course I should try to OCR the listing in the book to be able to
make sure that there are no other hidden differences. But the book
I've taken out of our library isn't in the best condition. So I'm a
bit reluctant to just give it to some shop to copy and OCR it. Doing
it manually, one page after the other, would massively exceed my spare
time. So, for the time being, I'll leave it as it is, without doing
this final cross check.
I have had good success finding older mainframe books by searching on
Amazon. There are usually a number of used book sellers that will have
a copy of the book you are seeking. Prices vary wildly, but you can
usually find one within your price range. That is how I got the copy I
have on my book shelf.
Post by ***@id.ethz.ch [hercules-390]
So far so good: The system is running, and now? The book also presents
a very simple user program to run under the sample OS. I minimally
extended this program to not only print a "success" message but to
also identify itself by telling on which of the two streams it is
running and at which address it is loaded. That way, when running it
on both streams simultaneously, one can nicely see it's really two
different instances...
I believe the individual that triggered the conversation on z390 gave
up. But you picked it up and ran with it. I would suggest you share
the results on z390.

And thanks for mentioning me and others who helped on the journey. A
little recognition is appreciated.

Harold Grovesteen
winkelmann@id.ethz.ch [hercules-390]
2015-10-26 17:21:49 UTC
Permalink
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Now I of course wanted to know more about this system and fetched the
book "Operating Systems" by Stuart E. Madnick and John J. Donovan from
our library (they still have one, cataloged in 1974 ). Chapter 7 of
this book describes the sample operating system in great detail and
also provides an assembly listing of it. I went down the same path
Harold mentioned, i.e. added the second stream (reader and printer)
back in and removed the comments from the storage key logic (arrrghh
should have seen Harold's post earlier then I wouldn't have had to
find out myself), and, no wonder, got the same result: Now the
locations match the listing in the book, as far as I can tell from
just comparing visually. And, most important, the system still runs
smoothly on Hercules in S/370 BC mode .
Congratulations!
Hi Harold


Thanks! It's always fun to getting a "new" operating system to IPL for the first time...
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Where did you find the loader that you IPL on 00C? That was the point
at which the z390 discussion ended.
It is a pure man's stupid kind of a loader I created during the discussions around the standalone prime number programs earlier this year. Goal back then was to be a simple as possible -- and that's exactly what it is: It fetches a given number of cards to a given storage location. No error recovery, no relocation, no nothing. I like things being simple enough such that even I'm able to understand them. The source is in the PDS you find in folder \sysgen of the zip file I uploaded.
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
I believe another valid option could be to use in the script the
Hercules loadtext command followed by the restart. loadtext does what a
typical card loader does, namely move the text in the TXT records to
storage. loadtext does not load the IPL PSW, which is why the restart
is needed. That would eliminate the need for a loader, letting you use
the assembled object deck directly.
During initial testing I used the loadcore command to bring the system into storage. See for example the session transcript I posted last Thursday in the z390 forum (https://groups.yahoo.com/neo/groups/z390/conversations/messages/2782). I posted this as a preview to make a point against the guesswork of that individual we all know way too good -- sadly I once again used a few harsh words concerning him, but I can't help seeing red when this "I know everything" style of wild guessing starts.
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Is the loader you are using the reason you have to issue the restart to
get it to run?
I added the loader only as the last step, when I was done with anything else. Call it simply nostalgia, but I like a system to IPL and not to get loadcored or loadtexted or such . So, to answer your question: No, it's not the loader. The restart command needs to be used most of the time, regardless whether the system is IPLed or loadcored. I didn't try loadtext, but I'm very sure that this wouldn't change the behavior.


In the environment I used for testing there is roughly one in 20 IPLs (or loadcores) that starts directly, all others need the restart. Without having this analyzed further my assumption is that there are timing issues, maybe IPLRTN finishes slightly too early for the first card I/O to succeed. Paragraph 7-14.1 of the book (page 413 in my edition) lets me assume that the system will not be able to get out of the "blocked" state which the supervisor enters once there are no more cards in the reader.


But, as I said, that's pure guesswork at this time. Basically I had the idea to simply use restart, as I came to the conclusion that it wouldn't matter if the IPL routine gets entered a second time. When I find time, I'll have a closer look into this -- as well as into the storage protection logic, which I assume not being fully clean for the given architecture.
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Of course I should try to OCR the listing in the book to be able to
make sure that there are no other hidden differences. But the book
I've taken out of our library isn't in the best condition. So I'm a
bit reluctant to just give it to some shop to copy and OCR it. Doing
it manually, one page after the other, would massively exceed my spare
time. So, for the time being, I'll leave it as it is, without doing
this final cross check.
I have had good success finding older mainframe books by searching on
Amazon. There are usually a number of used book sellers that will have
a copy of the book you are seeking. Prices vary wildly, but you can
usually find one within your price range. That is how I got the copy I
have on my book shelf.
Well, for now I have the one from our library, which I'll have to return after 4 weeks (I can, however, extend for two more 4 week periods if no one is waiting for it...).
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
So far so good: The system is running, and now? The book also presents
a very simple user program to run under the sample OS. I minimally
extended this program to not only print a "success" message but to
also identify itself by telling on which of the two streams it is
running and at which address it is loaded. That way, when running it
on both streams simultaneously, one can nicely see it's really two
different instances...
I believe the individual that triggered the conversation on z390 gave
up. But you picked it up and ran with it. I would suggest you share
the results on z390.
I did this already...
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
And thanks for mentioning me and others who helped on the journey. A
little recognition is appreciated.
You're very welcome!



Cheers
JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-10-28 21:36:28 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
In the environment I used for testing there is roughly one in 20 IPLs (or loadcores) that starts directly, all
others need the restart. Without having this analyzed further my assumption is that there are timing issues,
maybe IPLRTN finishes slightly too early for the first card I/O to succeed. Paragraph 7-14.1 of the book
(page 413 in my edition) lets me assume that the system will not be able to get out of the "blocked" state
which the supervisor enters once there are no more cards in the reader.
But, as I said, that's pure guesswork at this time. Basically I had the idea to simply use restart, as I came to
the conclusion that it wouldn't matter if the IPL routine gets entered a second time. When I find time, I'll have
a closer look into this -- as well as into the storage protection logic, which I assume not being fully clean for
the given architecture.
Hi All


I just had a look into the storage protection logic and came to an interesting finding: The logic as it is implemented in the sample OS originally, works perfectly fine under Hercules in S/370 mode. After a few tests around SSK/ISK/SSKE/ISKE I came to the conclusion that Hercules implements the protection mechanism as it is described in the S/370 PoP for a system _without_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed. I was a bit surprised about that, because I up to now thought (but of course don't know for sure) that real iron back then wasn't even available without that feature, except for very small configurations.


So, just out of curiosity, I've the following question: Does anyone know whether there is a archlvl option in Hercules that would make this facility available? Or was this not implemented on purpose?


Not that it would matter nowadays... there are not many operating systems around that still run in S/370 mode and none of them seems to have any problem with that "missing" feature... while the fact that it is missing makes even older 2K aligned code (the sample OS at hand here, probably also OS/360) run flawlessly, which it probably wouldn't when the facility was there.


Anyway, while I was at it, I changed the alignments of the sample OS to page (4k) boundaries and replaced all SSK/ISK instructions with SSKE/ISKE making it now usable even on systems without 2k storage key alignment support, i.e. which would _have_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.


I'll post an updated version when I find time, but again: For the Hercules environment this doesn't seem to be necessary at all. So, probably I'll wait with the update until I found out where that weird RESTART requirement comes from and have eliminated it.


Cheers
JÃŒrgen
Laddie Hanus laddiehanus@yahoo.com [hercules-390]
2015-10-28 22:13:49 UTC
Permalink
Sent from my iPhone
Post by ***@id.ethz.ch [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
In the environment I used for testing there is roughly one in 20 IPLs (or loadcores) that starts directly, all
others need the restart. Without having this analyzed further my assumption is that there are timing issues,
maybe IPLRTN finishes slightly too early for the first card I/O to succeed. Paragraph 7-14.1 of the book
(page 413 in my edition) lets me assume that the system will not be able to get out of the "blocked" state
which the supervisor enters once there are no more cards in the reader.
But, as I said, that's pure guesswork at this time. Basically I had the idea to simply use restart, as I came to
the conclusion that it wouldn't matter if the IPL routine gets entered a second time. When I find time, I'll have
a closer look into this -- as well as into the storage protection logic, which I assume not being fully clean for
the given architecture.
Hi All
I just had a look into the storage protection logic and came to an interesting finding: The logic as it is implemented in the sample OS originally, works perfectly fine under Hercules in S/370 mode. After a few tests around SSK/ISK/SSKE/ISKE I came to the conclusion that Hercules implements the protection mechanism as it is described in the S/370 PoP for a system _without_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed. I was a bit surprised about that, because I up to now thought (but of course don't know for sure) that real iron back then wasn't even available without that feature, except for very small configurations.
So, just out of curiosity, I've the following question: Does anyone know whether there is a archlvl option in Hercules that would make this facility available? Or was this not implemented on purpose?
Not that it would matter nowadays... there are not many operating systems around that still run in S/370 mode and none of them seems to have any problem with that "missing" feature... while the fact that it is missing makes even older 2K aligned code (the sample OS at hand here, probably also OS/360) run flawlessly, which it probably wouldn't when the facility was there.
Anyway, while I was at it, I changed the alignments of the sample OS to page (4k) boundaries and replaced all SSK/ISK instructions with SSKE/ISKE making it now usable even on systems without 2k storage key alignment support, i.e. which would _have_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.
I'll post an updated version when I find time, but again: For the Hercules environment this doesn't seem to be necessary at all. So, probably I'll wait with the update until I found out where that weird RESTART requirement comes from and have eliminated it.
Cheers
JÃŒrgen
e.sorichetti@alice.it [hercules-390]
2015-10-28 22:29:48 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that would make this facility available?
Or was this not implemented on purpose?
probably it was implemented on purpose






if You look at feat370.h You will see


#define FEATURE_2K_STORAGE_KEYS




You might try changing it to
#define FEATURE_4K_STORAGE_KEYS


rebuild hercules and see what happens


cheers
e
winkelmann@id.ethz.ch [hercules-390]
2015-10-29 16:19:03 UTC
Permalink
Hi Enrico
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that would make this facility available?
Or was this not implemented on purpose?
probably it was implemented on purpose
Well, but nicely hidden
Post by ***@alice.it [hercules-390]
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
Bingo, right you are! With this setting it works exactly as the S/370 PoP manual specifies for systems with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.


So, to summarize:
When configured with #define FEATURE_2K_STORAGE_KEYS (the default setting) Hercules emulates in S/370 mode a system with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY _not_ installed.
When configured with #define FEATURE_4K_STORAGE_KEYS Hercules emulates in S/370 mode a system with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.
Thanks a lot for pointing me to this feature!


Cheers
JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-10-29 21:37:09 UTC
Permalink
Hi All


just for the sake of completeness: I've created a mini standalone program that issues an SSK instruction to set the 2K block at its load address to fetch protected. When loading the program at a half page boundary one can nicely observe the different behavior in single key and double key mode:


In single key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY "installed") the SSK instruction throws a special operation exception and does nothing, unless control register 0 bit 7 is set. If this bit is set, the instruction executes normally, however the new storage key affects the whole page, not only the single 2K block addressed.

In double key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY not "installed", Hercules default) executes normally and sets the key of only the 2K block addressed.
Here the Hercules session transcript:


Single key mode:


21:22:06 HHC01603I r 68=0002
21:22:06 HHC02290I R:00000068:K:06=00020000 00000000 00000000 00000000 ................
21:22:12 HHC01603I loadtext testssk.deck 4800
21:22:12 HHC02249I Operation complete
21:22:21 HHC01603I psw ia=4800
21:22:21 HHC02278I Program status word: 0000000000004800
21:22:21 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:22:37 HHC01603I u 4800.10
21:22:37 HHC02289I R00004800: 0580 BALR 8,0 branch_and_link_register
21:22:37 HHC02289I R00004802: 0680 BCTR 8,0 branch_on_count_register
21:22:37 HHC02289I R00004804: 0680 BCTR 8,0 branch_on_count_register
21:22:37 HHC02289I R00004806: 41300008 LA 3,8(0,0) load_address
21:22:37 HHC02289I R0000480A: 0838 SSK 3,8 set_storage_key
21:22:37 HHC02289I R0000480C: 82008010 LPSW 16(8) load_program_status_word
21:22:58 HHC01603I r 47f0.20
21:22:58 HHC02290I R:000047F0:K:06=00000000 00000000 00000000 00000000 ................
21:22:58 HHC02290I R:00004800:K:06=05800680 06804130 00080838 82008010 ............b...
21:23:02 HHC01603I start
21:23:02 HHC00834I Processor CP00: running state selected
21:23:02 HHC00801I Processor CP00: Special-operation exception code 0013 ilc 2
21:23:02 PSW=000000134000480C INST=0838 SSK 3,8 set_storage_key
21:23:02 HHC00809I Processor CP00: disabled wait state 00020000 40000000
21:23:32 HHC01603I r 47f0.20
21:23:32 HHC02290I R:000047F0:K:06=00000000 00000000 00000000 00000000 ................
21:23:32 HHC02290I R:00004800:K:06=05800680 06804130 00080838 82008010 ............b...
21:24:00 HHC01603I cr 0=010000e0
21:24:34 HHC01603I psw ia=4800
21:24:34 HHC02278I Program status word: 0002000040004800
21:24:34 HHC02300I sm=00 pk=0 cmwp=2 as=pri cc=0 pm=0 am=24 ia=4800
21:24:53 HHC01603I psw cmwp=0
21:24:53 HHC02278I Program status word: 0000000040004800
21:24:53 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:25:04 HHC01603I start
21:25:04 HHC00834I Processor CP00: running state selected
21:25:04 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:25:18 HHC01603I r 47f0.20
21:25:18 HHC02290I R:000047F0:K:0C=00000000 00000000 00000000 00000000 ................
21:25:18 HHC02290I R:00004800:K:0C=05800680 06804130 00080838 82008010 ............b...



Double key mode:


21:37:57 HHC01603I loadtext testssk.deck 4800
21:37:57 HHC02249I Operation complete
21:38:11 HHC01603I psw ia=4800
21:38:11 HHC02278I Program status word: 0000000000004800
21:38:11 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:38:29 HHC01603I u 4800.10
21:38:29 HHC02289I R00004800: 0580 BALR 8,0 branch_and_link_register
21:38:29 HHC02289I R00004802: 0680 BCTR 8,0 branch_on_count_register
21:38:29 HHC02289I R00004804: 0680 BCTR 8,0 branch_on_count_register
21:38:29 HHC02289I R00004806: 41300008 LA 3,8(0,0) load_address
21:38:29 HHC02289I R0000480A: 0838 SSK 3,8 set_storage_key
21:38:29 HHC02289I R0000480C: 82008010 LPSW 16(8) load_program_status_word
21:39:40 HHC01603I r 47f0.20
21:39:40 HHC02290I R:000047F0:K:00=00000000 00000000 00000000 00000000 ................
21:39:40 HHC02290I R:00004800:K:06=05800680 06804130 00080838 82008010 ............b...
21:40:29 HHC01603I start
21:40:29 HHC00834I Processor CP00: running state selected
21:40:29 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:40:56 HHC01603I r 47f0.20
21:40:56 HHC02290I R:000047F0:K:00=00000000 00000000 00000000 00000000 ................
21:40:56 HHC02290I R:00004800:K:0C=05800680 06804130 00080838 82008010 ............b...


The extended versions of the instructions behave identically in both modes, of course. From that point of view the Hercules default (double key mode) is for sure more universal than the single key mode.


However, single key mode makes still sense, for example to test changes made to older programs when porting them from 2K blocks to 4K blocks: The Madnick OS as published a few days ago runs flawlessly in 2K (double key) mode but it doesn't run in 4K (single key) mode. The 4K aligned updated version I created yesterday runs fine in both modes, thus proving the update works as designed... and here the circle closes to Peter Flass' initial post from 2002. As I mentioned I'll publish this update shortly too...


Another remark to single key mode: From the Hercules source code I'd assume that single key mode is minimally faster than double key mode. But as the whole thing is that blazing fast in S/370 mode anyway, the difference most probably can be neglected.


Cheers
JÃŒrgen


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


Hi Enrico
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that would make this facility available?
Or was this not implemented on purpose?
probably it was implemented on purpose
Well, but nicely hidden
Post by ***@alice.it [hercules-390]
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
Bingo, right you are! With this setting it works exactly as the S/370 PoP manual specifies for systems with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.


So, to summarize:
When configured with #define FEATURE_2K_STORAGE_KEYS (the default setting) Hercules emulates in S/370 mode a system with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY _not_ installed.
When configured with #define FEATURE_4K_STORAGE_KEYS Hercules emulates in S/370 mode a system with the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed.

Thanks a lot for pointing me to this feature!


Cheers
JÃŒrgen
Harold Grovesteen h.grovsteen@tx.rr.com [hercules-390]
2015-10-30 15:31:39 UTC
Permalink
The observed behavior is correct.

However, I want to comment on this observation: "The 4K aligned updated
version I created yesterday runs fine in both modes, thus proving the
update works as designed..."

Peter and I exchanged a number of emails relating to Hercules internal
storage key management implementation. Some related to the very lines
changed by the patch.

What you did with the patch is fix a compilation issue. The reality is
that the code changed by the patch is only used in SIE mode (XA or later
architectures) with storage key assists. The test that you perceive to
be wrong is not in this case. The test is determining how storage keys
have been implemented in the current build of Hercules based upon which
architectures have been selected. How they are built vs how they are
used may be different. The patch I do not believe gets to the heart of
that. I am also not sure that the original code does either. But
because you are not running in SIE mode, all the patch did was get you
past the compilation errors. And if that is the intended design of the
patch (fix the compilation errors), it did that.

SIE mode with storage key assists is only possible when Hercules is
running in ESA/390 or z/Arch modes and the guest is running in S/370 SIE
plus assists. In this case, we are really talking about a later version
of VM running a S/370 VM guest in an XA+ architecture. These
architectures are all 4K storage key systems. I believe more research
is needed to determine if SIE storage key assists are still operating
correctly or if they never were in some scenarios.

As it stands, S/370 architecture is designed to operate correctly in all
cases with 2K storage keys. ESA/390 and z/Arch are designed to
correctly operate with 4K storage keys. Mixing them is where the
problems arise and that is what changing the feature in feat370.h does
when dealing with SIE. Why they get mixed together gets into even more
details of how Hercules is implemented for architectures and the options
to implement one or more.

These issues do not occur when the FEATURE defines are not altered in
feat370.h and friends. In general unpredictable results may occur when
changed. That is not to say never do it, just be prepared. It is
impossible to both build and test all of the combinations implied by the
features.

Harold Grovesteen
Post by ***@id.ethz.ch [hercules-390]
Hi All
just for the sake of completeness: I've created a mini standalone
program that issues an SSK instruction to set the 2K block at its load
address to fetch protected. When loading the program at a half page
boundary one can nicely observe the different behavior in single key
* In single key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY
"installed") the SSK instruction throws a special operation
exception and does nothing, unless control register 0 bit 7 is
set. If this bit is set, the instruction executes normally,
however the new storage key affects the whole page, not only
the single 2K block addressed.
* In double key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY not
"installed", Hercules default) executes normally and sets the
key of only the 2K block addressed.
21:22:06 HHC01603I r 68=0002
21:22:06 HHC02290I R:00000068:K:06=00020000 00000000 00000000
00000000 ................
21:22:12 HHC01603I loadtext testssk.deck 4800
21:22:12 HHC02249I Operation complete
21:22:21 HHC01603I psw ia=4800
21:22:21 HHC02278I Program status word: 0000000000004800
21:22:21 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:22:37 HHC01603I u 4800.10
21:22:37 HHC02289I R00004800: 0580 BALR 8,0
branch_and_link_register
21:22:37 HHC02289I R00004802: 0680 BCTR 8,0
branch_on_count_register
21:22:37 HHC02289I R00004804: 0680 BCTR 8,0
branch_on_count_register
21:22:37 HHC02289I R00004806: 41300008 LA 3,8(0,0)
load_address
21:22:37 HHC02289I R0000480A: 0838 SSK 3,8
set_storage_key
21:22:37 HHC02289I R0000480C: 82008010 LPSW 16(8)
load_program_status_word
21:22:58 HHC01603I r 47f0.20
21:22:58 HHC02290I R:000047F0:K:06=00000000 00000000 00000000
00000000 ................
21:22:58 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:23:02 HHC01603I start
21:23:02 HHC00834I Processor CP00: running state selected
21:23:02 HHC00801I Processor CP00: Special-operation exception code 0013 ilc 2
21:23:02 PSW=000000134000480C INST=0838 SSK 3,8
set_storage_key
21:23:02 HHC00809I Processor CP00: disabled wait state 00020000 40000000
21:23:32 HHC01603I r 47f0.20
21:23:32 HHC02290I R:000047F0:K:06=00000000 00000000 00000000
00000000 ................
21:23:32 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:24:00 HHC01603I cr 0=010000e0
21:24:34 HHC01603I psw ia=4800
21:24:34 HHC02278I Program status word: 0002000040004800
21:24:34 HHC02300I sm=00 pk=0 cmwp=2 as=pri cc=0 pm=0 am=24 ia=4800
21:24:53 HHC01603I psw cmwp=0
21:24:53 HHC02278I Program status word: 0000000040004800
21:24:53 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:25:04 HHC01603I start
21:25:04 HHC00834I Processor CP00: running state selected
21:25:04 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:25:18 HHC01603I r 47f0.20
21:25:18 HHC02290I R:000047F0:K:0C=00000000 00000000 00000000
00000000 ................
21:25:18 HHC02290I R:00004800:K:0C=05800680 06804130 00080838
82008010 ............b...
21:37:57 HHC01603I loadtext testssk.deck 4800
21:37:57 HHC02249I Operation complete
21:38:11 HHC01603I psw ia=4800
21:38:11 HHC02278I Program status word: 0000000000004800
21:38:11 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:38:29 HHC01603I u 4800.10
21:38:29 HHC02289I R00004800: 0580 BALR 8,0
branch_and_link_register
21:38:29 HHC02289I R00004802: 0680 BCTR 8,0
branch_on_count_register
21:38:29 HHC02289I R00004804: 0680 BCTR 8,0
branch_on_count_register
21:38:29 HHC02289I R00004806: 41300008 LA 3,8(0,0)
load_address
21:38:29 HHC02289I R0000480A: 0838 SSK 3,8
set_storage_key
21:38:29 HHC02289I R0000480C: 82008010 LPSW 16(8)
load_program_status_word
21:39:40 HHC01603I r 47f0.20
21:39:40 HHC02290I R:000047F0:K:00=00000000 00000000 00000000
00000000 ................
21:39:40 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:40:29 HHC01603I start
21:40:29 HHC00834I Processor CP00: running state selected
21:40:29 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:40:56 HHC01603I r 47f0.20
21:40:56 HHC02290I R:000047F0:K:00=00000000 00000000 00000000
00000000 ................
21:40:56 HHC02290I R:00004800:K:0C=05800680 06804130 00080838
82008010 ............b...
The extended versions of the instructions behave identically in both
modes, of course. From that point of view the Hercules default (double
key mode) is for sure more universal than the single key mode.
However, single key mode makes still sense, for example to test
changes made to older programs when porting them from 2K blocks to 4K
blocks: The Madnick OS as published a few days ago runs flawlessly in
2K (double key) mode but it doesn't run in 4K (single key) mode. The
4K aligned updated version I created yesterday runs fine in both
modes, thus proving the update works as designed... and here the
circle closes to Peter Flass' initial post from 2002. As I mentioned
I'll publish this update shortly too...
Another remark to single key mode: From the Hercules source code I'd
assume that single key mode is minimally faster than double key mode.
But as the whole thing is that blazing fast in S/370 mode anyway, the
difference most probably can be neglected.
Cheers
JÃŒrgen
Hi Enrico
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that
would make this facility available?
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Or was this not implemented on purpose?
probably it was implemented on purpose
Well, but nicely hidden
Post by ***@alice.it [hercules-390]
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
Bingo, right you are! With this setting it works exactly as the S/370
PoP manual specifies for systems with the STORAGE-KEY 4K-BYTE-BLOCK
FACILITY installed.
When configured with #define FEATURE_2K_STORAGE_KEYS (the
default setting) Hercules emulates in S/370 mode a system with
the STORAGE-KEY 4K-BYTE-BLOCK FACILITY _not_ installed.
When configured with #define FEATURE_4K_STORAGE_KEYS Hercules
emulates in S/370 mode a system with the STORAGE-KEY
4K-BYTE-BLOCK FACILITY installed.
Thanks a lot for pointing me to this feature!
Cheers
JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-10-30 16:29:46 UTC
Permalink
Hi Harold


that's exactly what I'm saying! I said, I tested the behavior in S/370 mode only. And in S/370 mode everything works as expected.


That's completely in line with my remark that for further analysis one would have to test whether the logically incorrect code does produce invalid results and if so, in which architecture(s). Exactly that's what I didn't do and don't intend to do. However, this still doesn't change the fact that this code is incorrect .


Anyway, everything works for me in S/370 mode. That's the only intention I had. If Hercules code is designed such that it produces correct results in other architectures only if it's logically incorrect... then fine! I've absolutely no problem with that .


Cheers
JÃŒrgen

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


The observed behavior is correct.

However, I want to comment on this observation: "The 4K aligned updated
version I created yesterday runs fine in both modes, thus proving the
update works as designed..."

Peter and I exchanged a number of emails relating to Hercules internal
storage key management implementation. Some related to the very lines
changed by the patch.

What you did with the patch is fix a compilation issue. The reality is
that the code changed by the patch is only used in SIE mode (XA or later
architectures) with storage key assists. The test that you perceive to
be wrong is not in this case. The test is determining how storage keys
have been implemented in the current build of Hercules based upon which
architectures have been selected. How they are built vs how they are
used may be different. The patch I do not believe gets to the heart of
that. I am also not sure that the original code does either. But
because you are not running in SIE mode, all the patch did was get you
past the compilation errors. And if that is the intended design of the
patch (fix the compilation errors), it did that.

SIE mode with storage key assists is only possible when Hercules is
running in ESA/390 or z/Arch modes and the guest is running in S/370 SIE
plus assists. In this case, we are really talking about a later version
of VM running a S/370 VM guest in an XA+ architecture. These
architectures are all 4K storage key systems. I believe more research
is needed to determine if SIE storage key assists are still operating
correctly or if they never were in some scenarios.

As it stands, S/370 architecture is designed to operate correctly in all
cases with 2K storage keys. ESA/390 and z/Arch are designed to
correctly operate with 4K storage keys. Mixing them is where the
problems arise and that is what changing the feature in feat370.h does
when dealing with SIE. Why they get mixed together gets into even more
details of how Hercules is implemented for architectures and the options
to implement one or more.

These issues do not occur when the FEATURE defines are not altered in
feat370.h and friends. In general unpredictable results may occur when
changed. That is not to say never do it, just be prepared. It is
impossible to both build and test all of the combinations implied by the
features.

Harold Grovesteen
Post by ***@id.ethz.ch [hercules-390]
Hi All
just for the sake of completeness: I've created a mini standalone
program that issues an SSK instruction to set the 2K block at its load
address to fetch protected. When loading the program at a half page
boundary one can nicely observe the different behavior in single key
* In single key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY
"installed") the SSK instruction throws a special operation
exception and does nothing, unless control register 0 bit 7 is
set. If this bit is set, the instruction executes normally,
however the new storage key affects the whole page, not only
the single 2K block addressed.
* In double key mode (STORAGE-KEY 4K-BYTE-BLOCK FACILITY not
"installed", Hercules default) executes normally and sets the
key of only the 2K block addressed.
21:22:06 HHC01603I r 68=0002
21:22:06 HHC02290I R:00000068:K:06=00020000 00000000 00000000
00000000 ................
21:22:12 HHC01603I loadtext testssk.deck 4800
21:22:12 HHC02249I Operation complete
21:22:21 HHC01603I psw ia=4800
21:22:21 HHC02278I Program status word: 0000000000004800
21:22:21 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:22:37 HHC01603I u 4800.10
21:22:37 HHC02289I R00004800: 0580 BALR 8,0
branch_and_link_register
21:22:37 HHC02289I R00004802: 0680 BCTR 8,0
branch_on_count_register
21:22:37 HHC02289I R00004804: 0680 BCTR 8,0
branch_on_count_register
21:22:37 HHC02289I R00004806: 41300008 LA 3,8(0,0)
load_address
21:22:37 HHC02289I R0000480A: 0838 SSK 3,8
set_storage_key
21:22:37 HHC02289I R0000480C: 82008010 LPSW 16(8)
load_program_status_word
21:22:58 HHC01603I r 47f0.20
21:22:58 HHC02290I R:000047F0:K:06=00000000 00000000 00000000
00000000 ................
21:22:58 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:23:02 HHC01603I start
21:23:02 HHC00834I Processor CP00: running state selected
21:23:02 HHC00801I Processor CP00: Special-operation exception code
0013 ilc 2
21:23:02 PSW=000000134000480C INST=0838 SSK 3,8
set_storage_key
21:23:02 HHC00809I Processor CP00: disabled wait state 00020000 40000000
21:23:32 HHC01603I r 47f0.20
21:23:32 HHC02290I R:000047F0:K:06=00000000 00000000 00000000
00000000 ................
21:23:32 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:24:00 HHC01603I cr 0=010000e0
21:24:34 HHC01603I psw ia=4800
21:24:34 HHC02278I Program status word: 0002000040004800
21:24:34 HHC02300I sm=00 pk=0 cmwp=2 as=pri cc=0 pm=0 am=24 ia=4800
21:24:53 HHC01603I psw cmwp=0
21:24:53 HHC02278I Program status word: 0000000040004800
21:24:53 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:25:04 HHC01603I start
21:25:04 HHC00834I Processor CP00: running state selected
21:25:04 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:25:18 HHC01603I r 47f0.20
21:25:18 HHC02290I R:000047F0:K:0C=00000000 00000000 00000000
00000000 ................
21:25:18 HHC02290I R:00004800:K:0C=05800680 06804130 00080838
82008010 ............b...
21:37:57 HHC01603I loadtext testssk.deck 4800
21:37:57 HHC02249I Operation complete
21:38:11 HHC01603I psw ia=4800
21:38:11 HHC02278I Program status word: 0000000000004800
21:38:11 HHC02300I sm=00 pk=0 cmwp=0 as=pri cc=0 pm=0 am=24 ia=4800
21:38:29 HHC01603I u 4800.10
21:38:29 HHC02289I R00004800: 0580 BALR 8,0
branch_and_link_register
21:38:29 HHC02289I R00004802: 0680 BCTR 8,0
branch_on_count_register
21:38:29 HHC02289I R00004804: 0680 BCTR 8,0
branch_on_count_register
21:38:29 HHC02289I R00004806: 41300008 LA 3,8(0,0)
load_address
21:38:29 HHC02289I R0000480A: 0838 SSK 3,8
set_storage_key
21:38:29 HHC02289I R0000480C: 82008010 LPSW 16(8)
load_program_status_word
21:39:40 HHC01603I r 47f0.20
21:39:40 HHC02290I R:000047F0:K:00=00000000 00000000 00000000
00000000 ................
21:39:40 HHC02290I R:00004800:K:06=05800680 06804130 00080838
82008010 ............b...
21:40:29 HHC01603I start
21:40:29 HHC00834I Processor CP00: running state selected
21:40:29 HHC00809I Processor CP00: disabled wait state 00020000 80000000
21:40:56 HHC01603I r 47f0.20
21:40:56 HHC02290I R:000047F0:K:00=00000000 00000000 00000000
00000000 ................
21:40:56 HHC02290I R:00004800:K:0C=05800680 06804130 00080838
82008010 ............b...
The extended versions of the instructions behave identically in both
modes, of course. From that point of view the Hercules default (double
key mode) is for sure more universal than the single key mode.
However, single key mode makes still sense, for example to test
changes made to older programs when porting them from 2K blocks to 4K
blocks: The Madnick OS as published a few days ago runs flawlessly in
2K (double key) mode but it doesn't run in 4K (single key) mode. The
4K aligned updated version I created yesterday runs fine in both
modes, thus proving the update works as designed... and here the
circle closes to Peter Flass' initial post from 2002. As I mentioned
I'll publish this update shortly too...
Another remark to single key mode: From the Hercules source code I'd
assume that single key mode is minimally faster than double key mode.
But as the whole thing is that blazing fast in S/370 mode anyway, the
difference most probably can be neglected.
Cheers
JÃŒrgen
Hi Enrico
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that
would make this facility available?
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Or was this not implemented on purpose?
probably it was implemented on purpose
Well, but nicely hidden
Post by ***@alice.it [hercules-390]
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
Bingo, right you are! With this setting it works exactly as the S/370
PoP manual specifies for systems with the STORAGE-KEY 4K-BYTE-BLOCK
FACILITY installed.
When configured with #define FEATURE_2K_STORAGE_KEYS (the
default setting) Hercules emulates in S/370 mode a system with
the STORAGE-KEY 4K-BYTE-BLOCK FACILITY _not_ installed.
When configured with #define FEATURE_4K_STORAGE_KEYS Hercules
emulates in S/370 mode a system with the STORAGE-KEY
4K-BYTE-BLOCK FACILITY installed.
Thanks a lot for pointing me to this feature!
Cheers
JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-10-30 17:10:55 UTC
Permalink
Hi Harold

Aaarrrghhh! After rereading your post I now unterstand the missunderstanding: When I wrote that the update worked as designed I meant the update of the Madnick OS, while you understood the Hercules patch. Ouch!

So to repeat: I've updated the Madnick OS to work on 4K systems and I simply wanted to have a test environment in which errors in this Madnick update would become visible, which they don't on a 2K system. So, a simple crosscheck before publishing _that_ update, which I'll finally do this weekend.

Cheers

JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-11-03 21:36:24 UTC
Permalink
Hi All


I've uploaded an update for the Madnick OS to support 4 KB storage key blocks at


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_for_Hercules.zip


The original version can still be found at


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip


The update must be installed "over" the original version, i.e. unzip the original version first, then unzip the update into the same folder, allowing the unzip utility to merge folders and replace files.


The following changes have been made to the original version:
change storage protection alignments to 4K \
replace SSK/ISK instructions with SSKE/ISKE > 4K support
minor changes in storage protection logic /
change number of parallel processing streams to 4
change core size to 16M
replace table of discrete valid $JOB card core requests with general logic rounding up any none full page request entered to next full page

add IPL card and two card loader directly to the Sample Operating System source for one stop creation of an IPLable card deck

ignore external interrupts during initialization to avoid IPLRTN getting interrupted by the interval timer (this removes the requirement of the original version to enter RESTART after IPL to kick the system off when jobs just sit in the reader and wait forever)

Have fun!


Cheers

JÃŒrgen

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

Hi Harold

Aaarrrghhh! After rereading your post I now unterstand the missunderstanding: When I wrote that the update worked as designed I meant the update of the Madnick OS, while you understood the Hercules patch. Ouch!

So to repeat: I've updated the Madnick OS to work on 4K systems and I simply wanted to have a test environment in which errors in this Madnick update would become visible, which they don't on a 2K system. So, a simple crosscheck before publishing _that_ update, which I'll finally do this weekend.

Cheers

JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-11-07 13:33:14 UTC
Permalink
Hi All


The "Operating Systems" book states in Chapter 7-14.1: "If there are no more jobs to be run, the supervisor process will become blocked because it will try to read input messages that it will never get." Although from this one cannot clearly deduct, what is supposed to happen when there arrive jobs to be processed later on, one nowadays would assume the system to continue processing. However, it doesn't: It remains sitting there with the supervisor blocked and thus it needs to be re-IPLed to process further jobs.


While not being a big issue, it's nonetheless a bit cumbersome to always remember adding the IPL deck in front of the user job decks into the reader and to IPL to get things started. The card reader enhancement solves this problem, by having the Sample Operating System process jobs as they arrive (via devinit or socket reader) instead of simply blocking forever once the readers ran dry.


I've uploaded the card reader enhancement to


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_RDR_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_RDR_for_Hercules.zip


It is meant to be unzipped "over" the previous update (4K block storage protection support) mentioned in the below post. See README_4_KB_RDR.txt in the zip archive for further information.


From my point of view this enhancement makes the Sample Operating System easily usable in virtual environments like Hercules or VM/370 (didn't try the latter, though), while still remaining functionally identical to the version printed in the book. I consider the "resurrection project" done with this update.


Here a transcript of a Hercules session showing the current state of affairs:


14:08:11 HHC01413I Hercules version 4.00

14:08:11 HHC01414I (c) Copyright 1999-2012 by Roger Bowler, Jan Jaeger, and others

14:08:11 HHC01415I Built on Feb 6 2015 at 13:49:07

14:08:11 HHC02260I Script 1: begin processing file hercules.rc

14:08:11 HHC01603I *

14:08:11 HHC01603I * Enter "ipl c" to load the sample operating system, then

14:08:11 HHC01603I * enter "script scripts/load_card_decks" to run the demo user

14:08:11 HHC01603I * program on 4 streams simultaneously.

14:08:11 HHC01603I *

14:08:11 HHC02264I Script 1: file hercules.rc processing ended

14:08:28 HHC01603I ipl c

CP00 PSW=FE0200008000056A 24..W..... instcnt 18,418; mips 0.000; I/O 0


14:09:06 HHC01603I script scripts/load_card_decks

14:09:06 HHC02260I Script 2: begin processing file scripts/load_card_decks

14:09:06 HHC01603I devinit 012 rdr/demo_user_program.deck rdr/stream-1_message.card ebcdic eof multifile

14:09:06 HHC02245I 0:0012 device initialized

14:09:06 HHC01603I devinit 00C rdr/demo_user_program.deck rdr/stream-2_message.card ebcdic eof multifile

14:09:06 HHC02245I 0:000C device initialized

14:09:06 HHC01603I devinit 112 rdr/demo_user_program.deck rdr/stream-3_message.card ebcdic eof multifile

14:09:06 HHC02245I 0:0112 device initialized

14:09:06 HHC01603I devinit 10C rdr/demo_user_program.deck rdr/stream-4_message.card ebcdic eof multifile

14:09:06 HHC02245I 0:010C device initialized

14:09:06 HHC02264I Script 2: file scripts/load_card_decks processing ended

CP00 PSW=FE0200008000056A 24..W..... instcnt 42,407; mips 0.000; I/O 0


14:09:39 HHC01603I sh type prt\*

14:09:39

14:09:39 prt\stream-1_output.txt

14:09:39 $JOB,2K,READER=IN,PRINTER=OUT

14:09:39 --- Sample Operating System Version 2.00 ---

14:09:39 User program entry on RDR1 successful, entry point = 008000

14:09:39 PROGRAM HALT

14:09:39

14:09:39 prt\stream-2_output.txt

14:09:39 $JOB,2K,READER=IN,PRINTER=OUT

14:09:39 --- Sample Operating System Version 2.00 ---

14:09:39 User program entry on RDR2 successful, entry point = 006000

14:09:39 PROGRAM HALT

14:09:39

14:09:39 prt\stream-3_output.txt

14:09:39 $JOB,2K,READER=IN,PRINTER=OUT

14:09:39 --- Sample Operating System Version 2.00 ---

14:09:39 User program entry on RDR3 successful, entry point = 005000

14:09:39 PROGRAM HALT

14:09:39

14:09:39 prt\stream-4_output.txt

14:09:39 $JOB,2K,READER=IN,PRINTER=OUT

14:09:39 --- Sample Operating System Version 2.00 ---

14:09:39 User program entry on RDR4 successful, entry point = 004000

14:09:39 PROGRAM HALT

14:09:39

14:09:51 HHC01603I script scripts/load_card_decks

14:09:51 HHC02260I Script 3: begin processing file scripts/load_card_decks

14:09:51 HHC01603I devinit 012 rdr/demo_user_program.deck rdr/stream-1_message.card ebcdic eof multifile

14:09:51 HHC02245I 0:0012 device initialized

14:09:51 HHC01603I devinit 00C rdr/demo_user_program.deck rdr/stream-2_message.card ebcdic eof multifile

14:09:51 HHC02245I 0:000C device initialized

14:09:51 HHC01603I devinit 112 rdr/demo_user_program.deck rdr/stream-3_message.card ebcdic eof multifile

14:09:51 HHC02245I 0:0112 device initialized

14:09:51 HHC01603I devinit 10C rdr/demo_user_program.deck rdr/stream-4_message.card ebcdic eof multifile

14:09:51 HHC02245I 0:010C device initialized

14:09:51 HHC02264I Script 3: file scripts/load_card_decks processing ended

CP00 PSW=FE0200008000056A 24..W..... instcnt 66,388; mips 0.000; I/O 0


14:10:38 HHC01603I sh type prt\*

14:10:38

14:10:38 prt\stream-1_output.txt

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR1 successful, entry point = 008000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR1 successful, entry point = 008000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 prt\stream-2_output.txt

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR2 successful, entry point = 006000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR2 successful, entry point = 005000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 prt\stream-3_output.txt

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR3 successful, entry point = 005000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR3 successful, entry point = 004000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 prt\stream-4_output.txt

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR4 successful, entry point = 004000

14:10:38 PROGRAM HALT

14:10:38

14:10:38 $JOB,2K,READER=IN,PRINTER=OUT

14:10:38 --- Sample Operating System Version 2.00 ---

14:10:38 User program entry on RDR4 successful, entry point = 006000

14:10:38 PROGRAM HALT

14:10:38

14:10:52 HHC01603I quit

14:10:52 HHC01420I Begin Hercules shutdown





Cheers
JÃŒrgen


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

Hi All


I've uploaded an update for the Madnick OS to support 4 KB storage key blocks at


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_4_KB_for_Hercules.zip


The original version can still be found at


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_for_Hercules.zip


The update must be installed "over" the original version, i.e. unzip the original version first, then unzip the update into the same folder, allowing the unzip utility to merge folders and replace files.


The following changes have been made to the original version:
change storage protection alignments to 4K \
replace SSK/ISK instructions with SSKE/ISKE > 4K support
minor changes in storage protection logic /
change number of parallel processing streams to 4
change core size to 16M
replace table of discrete valid $JOB card core requests with general logic rounding up any none full page request entered to next full page

add IPL card and two card loader directly to the Sample Operating System source for one stop creation of an IPLable card deck

ignore external interrupts during initialization to avoid IPLRTN getting interrupted by the interval timer (this removes the requirement of the original version to enter RESTART after IPL to kick the system off when jobs just sit in the reader and wait forever)

Have fun!


Cheers

JÃŒrgen
rahimazizarab@yahoo.com [hercules-390]
2015-11-08 12:16:36 UTC
Permalink
I got my copy of Madnick's 1973 book last Friday some forty plus years after its publication from ABEBOOKS.COM. I tried one of the examples which is form exceptional interrupt handling very similar to Jason Winter's TCPIP handling instruction in MVS38. However, the program goes down with a SOC04 when it tries to access PSW. First I thought the MVC instruction is wrong for MVC is for character move and not for moving storage data so I commented it out and used

WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
*
However, the SOC04 still persists. Here is the Example from the book.

***********************************************************************
* EXCEPTIONAL INTERUPT PROCESSING *
* THIS PROGRAM IMPLEMENTS A NEW EXPONENT INSTRUCTION WITH *
* WITH OPCODE 00. HOWEVER, A PROGRAM INTERRUPT WILL OCCUR. *
***********************************************************************
EXPON START X'1000'
BALR 12,0 SET BASE REGISTER
USING *,12 TELL ASSEMBLER
PROGNPSW EQU X'68' LOCATION OF NEW PSW
PROGOPSW EQU X'28' LOCATION OF OLD PSW
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
*
* START MAIN PROGRAM.
*
SR 1,1 SET REGISTER 1 TO 0
WTO '**** ABOUT TO EXECUTE OUR OPCODE 00'
DC X'0011' PERFORM EXP 1,1 (0**0=1)
ST 1,RESULT1 SAVE RESULT
LA 2,2 SET REG 2 TO 2
LA 3,4 SET REG 3 TO 4
DC X'0023' PERFORM EXCP 2,3 (2**4=16)
ST 2,RESULT2 SAVE RESULT
L 3,=F'-2' SET REG 3 TO -2
DC X'0023' PERFORM EXCP 2,3 (16**-2=0)
ST 2,RESULT3 SAVE RESULT
BR 14 RETURN TO CALLER
*
* SAVE RESULTS HERE
*
RESULT1 DS F RESULT SHOULD BE 1
RESULT2 DS F RESULT SHOULD BE 16
RESULT3 DS F RESULT SHOULD BE 0
*
* EXP PROGRAM INTERRUPT HANDLER
*
PROGINT ST 15,X'54' SAVE REG 15 IN UNUSED LOC
BALR 15,0 SET UP BASE REGISTER
USING *,15
STM 0,14,SAVEAREA SAVE REGS 0-14
MVC SAVEAREA+15*4(4),X'54' MOVE REG 15 INTO SAVEAREA
* ** TEST IF EXP PROGRAM INTERRUPT
CLI PROGOPSW+3,X'01' IS IT OPERATION EXCEPTION
BNE RETURN
WTO '*** A PROGRAM INTERRUPT OCCURED'
*
SR 2,2 GET INSTRUCTION LENGTH FIELD
IC 2,PROGOPSW+4 FROM OLD PSW
SRL 2,6
SLL 2,1
C 2,=F'2' WAS IT A 2 BYTE INSTRUCTION?
BNE RETURN
*
L 1,PROGOPSW+4 GET ADDR OF NEXT INSTRUCTION
SR 1,2 MOVE BACK 2 BYTES TO INTERRUPTED INST
CLI 0(1),X'00' IS IT EXP INSTRUCTION ('00' OP)?
BNE RETURN NO IGNORE INTERRUPT
* ** PERFORM EXP SIMULATION NOW.
SR 2,2 ZERO OUT R2
IC 2,1(0,1) LOAD BYTE 2 of INSTRUCTION.
SRDL 2,4 SHIFT EXP REGISTER INTO REG 3
SRL 3,28 RIGHT SHIFT EXP REG IN REG 3
RBASE EQU 2 R2 CONTAINS BASE REG NUMBER
REXP EQU 3 R3 CONTAINS EXP REG NO
BASE EQU 4 R4 CONTAINS BASE REG
EXP EQU 5 R5 CONTAINS EXP
SLL RBASE,2 MULTIPLY BASE REG BY 4
SLL REXP,2 MULTIPLY EXP REG BY 4
L BASE,SAVEAREA(RBASE) FETCH THE BASE
L EXP,SAVEAREA(REXP) FETCH THE EXPONENT
LTR EXP,EXP TEST IF EXP NEG. POS. ZERO
BM NEG BRANCH IF NEG. EXPONENT
BZ ZERO BRANCH IF ZERO
LR 7,BASE INITIALIZE RESULT
B ENDLOOP MULTIPLY EXP TIMES
LOOP MR 6,BASE MULTIPLY
ENDLOOP BCT EXP,LOOP LOOP EXP NUMBER OF TIMES
B DONE
NEG SR 7,7 IF NEG EXP RESULT = 0
B DONE
ZERO LA 7,1 IF ZERO EXP, RESULT = 1
DONE ST 7,SAVEAREA(RBASE) PUT ANSWER IN SAVEAREA
RETURN LM 0,15,SAVEAREA RESTORE THE REGISTERS
LPSW PROGOPSW RETURN TO INST.AFTER INTER RUPT
SAVEAREA DS 16F SPACE TO SAVE REGS
LTORG
END
'John P. Hartmann' jphartmann@gmail.com [hercules-390]
2015-11-08 12:21:04 UTC
Permalink
Right.

It is an MVS program; the WTO gives the game away as Ivan already
pointed out.

MVS protects the PSA from modification whichever way you try (and with
low address protect, even if you run key zero).

You'd need to use the SPIE macro instruction to set the program check
handler.
Post by ***@yahoo.com [hercules-390]
I got my copy of Madnick's 1973 book last Friday some forty plus years
after its publication from ABEBOOKS.COM. I tried one of the examples
which is form exceptional interrupt handling very similar to Jason
Winter's TCPIP handling instruction in MVS38. However, the program goes
down with a SOC04 when it tries to access PSW. First I thought the MVC
instruction is wrong for MVC is for character move and not for moving
storage data so I commented it out and used
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
*
However, the SOC04 still persists. Here is the Example from the book.
***********************************************************************
* EXCEPTIONAL INTERUPT PROCESSING *
* THIS PROGRAM IMPLEMENTS A NEW EXPONENT INSTRUCTION WITH *
* WITH OPCODE 00. HOWEVER, A PROGRAM INTERRUPT WILL OCCUR. *
***********************************************************************
EXPON START X'1000'
BALR 12,0 SET BASE REGISTER
USING *,12 TELL ASSEMBLER
PROGNPSW EQU X'68' LOCATION OF NEW PSW
PROGOPSW EQU X'28' LOCATION OF OLD PSW
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
*
* START MAIN PROGRAM.
*
SR 1,1 SET REGISTER 1 TO 0
WTO '**** ABOUT TO EXECUTE OUR OPCODE 00'
DC X'0011' PERFORM EXP 1,1 (0**0=1)
ST 1,RESULT1 SAVE RESULT
LA 2,2 SET REG 2 TO 2
LA 3,4 SET REG 3 TO 4
DC X'0023' PERFORM EXCP 2,3 (2**4=16)
ST 2,RESULT2 SAVE RESULT
L 3,=F'-2' SET REG 3 TO -2
DC X'0023' PERFORM EXCP 2,3 (16**-2=0)
ST 2,RESULT3 SAVE RESULT
BR 14 RETURN TO CALLER
*
* SAVE RESULTS HERE
*
RESULT1 DS F RESULT SHOULD BE 1
RESULT2 DS F RESULT SHOULD BE 16
RESULT3 DS F RESULT SHOULD BE 0
*
* EXP PROGRAM INTERRUPT HANDLER
*
PROGINT ST 15,X'54' SAVE REG 15 IN UNUSED LOC
BALR 15,0 SET UP BASE REGISTER
USING *,15
STM 0,14,SAVEAREA SAVE REGS 0-14
MVC SAVEAREA+15*4(4),X'54' MOVE REG 15 INTO SAVEAREA
* ** TEST IF EXP PROGRAM INTERRUPT
CLI PROGOPSW+3,X'01' IS IT OPERATION EXCEPTION
BNE RETURN
WTO '*** A PROGRAM INTERRUPT OCCURED'
*
SR 2,2 GET INSTRUCTION LENGTH FIELD
IC 2,PROGOPSW+4 FROM OLD PSW
SRL 2,6
SLL 2,1
C 2,=F'2' WAS IT A 2 BYTE INSTRUCTION?
BNE RETURN
*
L 1,PROGOPSW+4 GET ADDR OF NEXT INSTRUCTION
SR 1,2 MOVE BACK 2 BYTES TO INTERRUPTED INST
CLI 0(1),X'00' IS IT EXP INSTRUCTION ('00' OP)?
BNE RETURN NO IGNORE INTERRUPT
* ** PERFORM EXP SIMULATION NOW.
SR 2,2 ZERO OUT R2
IC 2,1(0,1) LOAD BYTE 2 of INSTRUCTION.
SRDL 2,4 SHIFT EXP REGISTER INTO REG 3
SRL 3,28 RIGHT SHIFT EXP REG IN REG 3
RBASE EQU 2 R2 CONTAINS BASE REG NUMBER
REXP EQU 3 R3 CONTAINS EXP REG NO
BASE EQU 4 R4 CONTAINS BASE REG
EXP EQU 5 R5 CONTAINS EXP
SLL RBASE,2 MULTIPLY BASE REG BY 4
SLL REXP,2 MULTIPLY EXP REG BY 4
L BASE,SAVEAREA(RBASE) FETCH THE BASE
L EXP,SAVEAREA(REXP) FETCH THE EXPONENT
LTR EXP,EXP TEST IF EXP NEG. POS. ZERO
BM NEG BRANCH IF NEG. EXPONENT
BZ ZERO BRANCH IF ZERO
LR 7,BASE INITIALIZE RESULT
B ENDLOOP MULTIPLY EXP TIMES
LOOP MR 6,BASE MULTIPLY
ENDLOOP BCT EXP,LOOP LOOP EXP NUMBER OF TIMES
B DONE
NEG SR 7,7 IF NEG EXP RESULT = 0
B DONE
ZERO LA 7,1 IF ZERO EXP, RESULT = 1
DONE ST 7,SAVEAREA(RBASE) PUT ANSWER IN SAVEAREA
RETURN LM 0,15,SAVEAREA RESTORE THE REGISTERS
LPSW PROGOPSW RETURN TO INST.AFTER INTER
RUPT
SAVEAREA DS 16F SPACE TO SAVE REGS
LTORG
END
winkelmann@id.ethz.ch [hercules-390]
2015-11-10 18:26:02 UTC
Permalink
A final addition here:


I just had a few minutes and took a look into Madnick/Donovan's book: The program Rahim cited is _not_ an MVS program. The version printed in the book clearly is a standalone program, as are most of the brilliant examples given there. It neither contains WTO nor any other MVS macro.


Rahim


- did incorrect citation (we are used to that...)
- did not read what the authors wrote about the program (we are used to that too...)
- "corrected" "errors" in a program he doesn't understand (and we are used to that too...)
- hijacked the thread about the Sample OS (and we are used to that too...)


So, nothing new, so far...


JÃŒrgen



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

Right.

It is an MVS program; the WTO gives the game away as Ivan already
pointed out.

MVS protects the PSA from modification whichever way you try (and with
low address protect, even if you run key zero).

You'd need to use the SPIE macro instruction to set the program check
handler.
Post by ***@yahoo.com [hercules-390]
I got my copy of Madnick's 1973 book last Friday some forty plus years
after its publication from ABEBOOKS.COM. I tried one of the examples
which is form exceptional interrupt handling very similar to Jason
Winter's TCPIP handling instruction in MVS38. However, the program goes
down with a SOC04 when it tries to access PSW. First I thought the MVC
instruction is wrong for MVC is for character move and not for moving
storage data so I commented it out and used
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
*
However, the SOC04 still persists. Here is the Example from the book.
***********************************************************************
* EXCEPTIONAL INTERUPT PROCESSING *
* THIS PROGRAM IMPLEMENTS A NEW EXPONENT INSTRUCTION WITH *
* WITH OPCODE 00. HOWEVER, A PROGRAM INTERRUPT WILL OCCUR. *
***********************************************************************
EXPON START X'1000'
BALR 12,0 SET BASE REGISTER
USING *,12 TELL ASSEMBLER
PROGNPSW EQU X'68' LOCATION OF NEW PSW
PROGOPSW EQU X'28' LOCATION OF OLD PSW
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
*
* START MAIN PROGRAM.
*
SR 1,1 SET REGISTER 1 TO 0
WTO '**** ABOUT TO EXECUTE OUR OPCODE 00'
DC X'0011' PERFORM EXP 1,1 (0**0=1)
ST 1,RESULT1 SAVE RESULT
LA 2,2 SET REG 2 TO 2
LA 3,4 SET REG 3 TO 4
DC X'0023' PERFORM EXCP 2,3 (2**4=16)
ST 2,RESULT2 SAVE RESULT
L 3,=F'-2' SET REG 3 TO -2
DC X'0023' PERFORM EXCP 2,3 (16**-2=0)
ST 2,RESULT3 SAVE RESULT
BR 14 RETURN TO CALLER
*
* SAVE RESULTS HERE
*
RESULT1 DS F RESULT SHOULD BE 1
RESULT2 DS F RESULT SHOULD BE 16
RESULT3 DS F RESULT SHOULD BE 0
*
* EXP PROGRAM INTERRUPT HANDLER
*
PROGINT ST 15,X'54' SAVE REG 15 IN UNUSED LOC
BALR 15,0 SET UP BASE REGISTER
USING *,15
STM 0,14,SAVEAREA SAVE REGS 0-14
MVC SAVEAREA+15*4(4),X'54' MOVE REG 15 INTO SAVEAREA
* ** TEST IF EXP PROGRAM INTERRUPT
CLI PROGOPSW+3,X'01' IS IT OPERATION EXCEPTION
BNE RETURN
WTO '*** A PROGRAM INTERRUPT OCCURED'
*
SR 2,2 GET INSTRUCTION LENGTH FIELD
IC 2,PROGOPSW+4 FROM OLD PSW
SRL 2,6
SLL 2,1
C 2,=F'2' WAS IT A 2 BYTE INSTRUCTION?
BNE RETURN
*
L 1,PROGOPSW+4 GET ADDR OF NEXT INSTRUCTION
SR 1,2 MOVE BACK 2 BYTES TO INTERRUPTED
INST
CLI 0(1),X'00' IS IT EXP INSTRUCTION ('00' OP)?
BNE RETURN NO IGNORE INTERRUPT
* ** PERFORM EXP SIMULATION NOW.
SR 2,2 ZERO OUT R2
IC 2,1(0,1) LOAD BYTE 2 of INSTRUCTION.
SRDL 2,4 SHIFT EXP REGISTER INTO REG 3
SRL 3,28 RIGHT SHIFT EXP REG IN REG 3
RBASE EQU 2 R2 CONTAINS BASE REG NUMBER
REXP EQU 3 R3 CONTAINS EXP REG NO
BASE EQU 4 R4 CONTAINS BASE REG
EXP EQU 5 R5 CONTAINS EXP
SLL RBASE,2 MULTIPLY BASE REG BY 4
SLL REXP,2 MULTIPLY EXP REG BY 4
L BASE,SAVEAREA(RBASE) FETCH THE BASE
L EXP,SAVEAREA(REXP) FETCH THE EXPONENT
LTR EXP,EXP TEST IF EXP NEG. POS. ZERO
BM NEG BRANCH IF NEG. EXPONENT
BZ ZERO BRANCH IF ZERO
LR 7,BASE INITIALIZE RESULT
B ENDLOOP MULTIPLY EXP TIMES
LOOP MR 6,BASE MULTIPLY
ENDLOOP BCT EXP,LOOP LOOP EXP NUMBER OF TIMES
B DONE
NEG SR 7,7 IF NEG EXP RESULT = 0
B DONE
ZERO LA 7,1 IF ZERO EXP, RESULT = 1
DONE ST 7,SAVEAREA(RBASE) PUT ANSWER IN SAVEAREA
RETURN LM 0,15,SAVEAREA RESTORE THE REGISTERS
LPSW PROGOPSW RETURN TO INST.AFTER INTER
RUPT
SAVEAREA DS 16F SPACE TO SAVE REGS
LTORG
END
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2015-11-11 07:06:15 UTC
Permalink
JÃŒrgen Winkelmann wrote:

[...]
Post by ***@id.ethz.ch [hercules-390]
Rahim
- did incorrect citation (we are used to that...)
- did not read what the authors wrote about the program
(we are used to that too...)
- "corrected" "errors" in a program he doesn't understand
(and we are used to that too...)
- hijacked the thread about the Sample OS (and we are used
to that too...)
So, nothing new, so far...
Which is why he's in my kill file and very unlikely to ever come out of it.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Binyamin Dissen bdissen@dissensoftware.com [hercules-390]
2015-11-08 13:13:35 UTC
Permalink
MVC does not care if the data is binary or character.

You must make sure that the new PSW is properly formatted for the appropriate
level of hardware.

Be aware that page faults cause a program check, so this code has some issues
- such as issuing a WTO which will likely acquire storage which may require a
page fault for the page to be assigned.

Locations 0-x'200' have extra store protection (controlled by a bit in CR0)
depending on the right level of hardware and software.

On 08 Nov 2015 04:16:36 -0800 "***@yahoo.com [hercules-390]"
<hercules-***@yahoogroups.com> wrote:

:>I got my copy of Madnick's 1973 book last Friday some forty plus years after its publication from ABEBOOKS.COM. I tried one of the examples which is form exceptional interrupt handling very similar to Jason Winter's TCPIP handling instruction in MVS38. However, the program goes down with a SOC04 when it tries to access PSW. First I thought the MVC instruction is wrong for MVC is for character move and not for moving storage data so I commented it out and used
:>
:> WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
:>* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
:> L R7,=A(0,PROGINT) SET NEW PSW
:> ST R7,PROGNPSW SET NEW PSW
:>*
:>However, the SOC04 still persists. Here is the Example from the book.
:>
:>***********************************************************************
:>* EXCEPTIONAL INTERUPT PROCESSING *
:>* THIS PROGRAM IMPLEMENTS A NEW EXPONENT INSTRUCTION WITH *
:>* WITH OPCODE 00. HOWEVER, A PROGRAM INTERRUPT WILL OCCUR. *
:>***********************************************************************
:>EXPON START X'1000'
:> BALR 12,0 SET BASE REGISTER
:> USING *,12 TELL ASSEMBLER
:>PROGNPSW EQU X'68' LOCATION OF NEW PSW
:>PROGOPSW EQU X'28' LOCATION OF OLD PSW
:> WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
:> MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
:>*
:>* START MAIN PROGRAM.
:>*
:> SR 1,1 SET REGISTER 1 TO 0
:> WTO '**** ABOUT TO EXECUTE OUR OPCODE 00'
:> DC X'0011' PERFORM EXP 1,1 (0**0=1)
:> ST 1,RESULT1 SAVE RESULT
:> LA 2,2 SET REG 2 TO 2
:> LA 3,4 SET REG 3 TO 4
:> DC X'0023' PERFORM EXCP 2,3 (2**4=16)
:> ST 2,RESULT2 SAVE RESULT
:> L 3,=F'-2' SET REG 3 TO -2
:> DC X'0023' PERFORM EXCP 2,3 (16**-2=0)
:> ST 2,RESULT3 SAVE RESULT
:> BR 14 RETURN TO CALLER
:>*
:>* SAVE RESULTS HERE
:>*
:>RESULT1 DS F RESULT SHOULD BE 1
:>RESULT2 DS F RESULT SHOULD BE 16
:>RESULT3 DS F RESULT SHOULD BE 0
:>*
:>* EXP PROGRAM INTERRUPT HANDLER
:>*
:>PROGINT ST 15,X'54' SAVE REG 15 IN UNUSED LOC
:> BALR 15,0 SET UP BASE REGISTER
:> USING *,15
:> STM 0,14,SAVEAREA SAVE REGS 0-14
:> MVC SAVEAREA+15*4(4),X'54' MOVE REG 15 INTO SAVEAREA
:>* ** TEST IF EXP PROGRAM INTERRUPT
:> CLI PROGOPSW+3,X'01' IS IT OPERATION EXCEPTION
:> BNE RETURN
:> WTO '*** A PROGRAM INTERRUPT OCCURED'
:>*
:> SR 2,2 GET INSTRUCTION LENGTH FIELD
:> IC 2,PROGOPSW+4 FROM OLD PSW
:> SRL 2,6
:> SLL 2,1
:> C 2,=F'2' WAS IT A 2 BYTE INSTRUCTION?
:> BNE RETURN
:>*
:> L 1,PROGOPSW+4 GET ADDR OF NEXT INSTRUCTION
:> SR 1,2 MOVE BACK 2 BYTES TO INTERRUPTED INST
:> CLI 0(1),X'00' IS IT EXP INSTRUCTION ('00' OP)?
:> BNE RETURN NO IGNORE INTERRUPT
:>* ** PERFORM EXP SIMULATION NOW.
:> SR 2,2 ZERO OUT R2
:> IC 2,1(0,1) LOAD BYTE 2 of INSTRUCTION.
:> SRDL 2,4 SHIFT EXP REGISTER INTO REG 3
:> SRL 3,28 RIGHT SHIFT EXP REG IN REG 3
:>RBASE EQU 2 R2 CONTAINS BASE REG NUMBER
:>REXP EQU 3 R3 CONTAINS EXP REG NO
:>BASE EQU 4 R4 CONTAINS BASE REG
:>EXP EQU 5 R5 CONTAINS EXP
:> SLL RBASE,2 MULTIPLY BASE REG BY 4
:> SLL REXP,2 MULTIPLY EXP REG BY 4
:> L BASE,SAVEAREA(RBASE) FETCH THE BASE
:> L EXP,SAVEAREA(REXP) FETCH THE EXPONENT
:> LTR EXP,EXP TEST IF EXP NEG. POS. ZERO
:> BM NEG BRANCH IF NEG. EXPONENT
:> BZ ZERO BRANCH IF ZERO
:> LR 7,BASE INITIALIZE RESULT
:> B ENDLOOP MULTIPLY EXP TIMES
:>LOOP MR 6,BASE MULTIPLY
:>ENDLOOP BCT EXP,LOOP LOOP EXP NUMBER OF TIMES
:> B DONE
:>NEG SR 7,7 IF NEG EXP RESULT = 0
:> B DONE
:>ZERO LA 7,1 IF ZERO EXP, RESULT = 1
:>DONE ST 7,SAVEAREA(RBASE) PUT ANSWER IN SAVEAREA
:>RETURN LM 0,15,SAVEAREA RESTORE THE REGISTERS
:> LPSW PROGOPSW RETURN TO INST.AFTER INTER RUPT
:>SAVEAREA DS 16F SPACE TO SAVE REGS
:> LTORG
:> END
--
Binyamin Dissen <***@dissensoftware.com>
http://www.dissensoftware.com

Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.
somitcw@yahoo.com [hercules-390]
2015-11-08 15:08:34 UTC
Permalink
In hercules-***@yahoogroups.com, <***@...> wrote:
- - - beginning snipped - - -
MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
- - - ending snipped - - -

If you overlay the Program Check New PSW, you need to:
1. Not overlay the first word of it and save he old address from it:

MVC SAVEPCNP,PROGNPSW+4 Save address from PROGNPSW
MVC PROGNPSW+4(4),APROGINT Put exit address in PROGNPSW
. . .
APROGINT DC A(PROGINT) Will be address of the new PC-FLIH
* Program Check First Level Interrupt Handler
. . .
SAVEPCNP DS A Save area for address in the PC-New-PSW

2. Branch to the PC-FLIH address if you don't have a PIC 1 for instruction X'00'.
3. Restore the Program Check New PSW when finished.

What does any of this have to do with Yahoo group Hercues-390 ?
Gerhard Postpischil gerhardp@charter.net [hercules-390]
2015-11-08 18:56:36 UTC
Permalink
Post by ***@yahoo.com [hercules-390]
I got my copy of Madnick's 1973 book last Friday some forty plus years
after its publication from ABEBOOKS.COM. I tried one of the examples
which is form exceptional interrupt handling very similar to Jason
Winter's TCPIP handling instruction in MVS38. However, the program goes
down with a SOC04 when it tries to access PSW. First I thought the MVC
instruction is wrong for MVC is for character move and not for moving
storage data so I commented it out and used
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
You're trying to mix apples and bicycles. You need to structure your
code to run in a specific environment, and your mix-and-match approach
won't work.

1) Others have pointed out that you're in the wrong group, as well as
obvious errors.
2) You need to study Principles of Operation. Storing a pointer to a PSW
is not the same as storing a PSW.
3) If you want to run under MVS, then you don't have access to protected
storage, and you need MVS services (e.g., SPIE or ESPIE) to handle
program interrupts.
4) If you want to run the Madnick OS, you should point the assembler
SYSLIB at an empty card-format PDS; not finding WTO would have made it
obvious that you have the wrong environment.
5) The Madnick provided system does not include console services. If you
want those, you need to write your own driver. There are stand-alone
programs in the various group files; for example the (modified) Memorex
FRIEND program provides code for both 1052/3215 and 327x consoles.

I looked at the Madnick provided code, and the lack of console support
was my first concern. The second was the lack of macros to invoke system
services, which would make coding a lot simpler. Perhaps I'll provide
those when I get some time.

Gerhard Postpischil
Bradford, VT
winkelmann@id.ethz.ch [hercules-390]
2015-11-08 21:40:31 UTC
Permalink
Hi Gerhard
Post by Gerhard Postpischil ***@charter.net [hercules-390]
5) The Madnick provided system does not include console services. If you
want those, you need to write your own driver.
Just a quick remark on this: In the beginning I also missed console services. But in the meantime I came to the conclusion that they are not needed for a system being that simple. If one only wants to send output to a console device the EXCP driver provided will certainly suffice. To read input from the console would be a different thing, of course -- at least when running multiple streams that might compete for the console... then a full blown console task would be needed, which most probably would exceed the pedagogical intentions of the authors.


On the other hand, given we are running under Hercules with its access to shell commands from the console, one can easily view the printer output files directly on the "console" using type, cat or even tail -f, which from a look and feel point of view comes close to sending it from the program to the console device. Just for fun I modified my primes program from a year ago (I know everyone in the group loves it, so I'll upload it only if someone requests it ) to run under the Sample OS. With output viewed at the console using type (Windows) this looks not too bad, I think:


HHC01603I *

HHC01603I * Enter "ipl c" to load the sample operating system, then

HHC01603I * enter "script scripts/load_card_decks" to run the demo user

HHC01603I * program on 4 streams simultaneously.

HHC01603I *

HHC01603I ipl c

HHC00811I Processor CP00: architecture mode S/370

HHC01603I devinit c rdr\primsos.deck rdr\p2000y.deck eof ebcdic multifile

HHC02245I 0:000C device initialized

HHC01603I sh type prt\*

prt\stream-2_output.txt

$JOB,8300K,READER=IN,PRINTER=OUT

--- Sieve of Eratosthenes on the Sample Operating System Version 2.00 ---

2 3 5 7 11 13 17 19 23 29 31

37 41 43 47 53 59 61 67 71 73 79

83 89 97 101 103 107 109 113 127 131 137

139 149 151 157 163 167 173 179 181 191 193

197 199 211 223 227 229 233 239 241 251 257

263 269 271 277 281 283 293 307 311 313 317

331 337 347 349 353 359 367 373 379 383 389

397 401 409 419 421 431 433 439 443 449 457

461 463 467 479 487 491 499 503 509 521 523

541 547 557 563 569 571 577 587 593 599 601

607 613 617 619 631 641 643 647 653 659 661

673 677 683 691 701 709 719 727 733 739 743

751 757 761 769 773 787 797 809 811 821 823

827 829 839 853 857 859 863 877 881 883 887

907 911 919 929 937 941 947 953 967 971 977

983 991 997 1009 1013 1019 1021 1031 1033 1039 1049

1051 1061 1063 1069 1087 1091 1093 1097 1103 1109 1117

1123 1129 1151 1153 1163 1171 1181 1187 1193 1201 1213

1217 1223 1229 1231 1237 1249 1259 1277 1279 1283 1289

1291 1297 1301 1303 1307 1319 1321 1327 1361 1367 1373

1381 1399 1409 1423 1427 1429 1433 1439 1447 1451 1453

1459 1471 1481 1483 1487 1489 1493 1499 1511 1523 1531

1543 1549 1553 1559 1567 1571 1579 1583 1597 1601 1607

1609 1613 1619 1621 1627 1637 1657 1663 1667 1669 1693

1697 1699 1709 1721 1723 1733 1741 1747 1753 1759 1777

1783 1787 1789 1801 1811 1823 1831 1847 1861 1867 1871

1873 1877 1879 1889 1901 1907 1913 1931 1933 1949 1951

1973 1979 1987 1993 1997 1999

303 primes up to 2000 found

PROGRAM HALT

herc =====>

CP00 PSW=FE0200008000056A 24..W..... instcnt 83,452; mips 0.000; I/O 0



Cheers
JÃŒrgen
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I got my copy of Madnick's 1973 book last Friday some forty plus years
after its publication from ABEBOOKS.COM. I tried one of the examples
which is form exceptional interrupt handling very similar to Jason
Winter's TCPIP handling instruction in MVS38. However, the program goes
down with a SOC04 when it tries to access PSW. First I thought the MVC
instruction is wrong for MVC is for character move and not for moving
storage data so I commented it out and used
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
You're trying to mix apples and bicycles. You need to structure your
code to run in a specific environment, and your mix-and-match approach
won't work.

1) Others have pointed out that you're in the wrong group, as well as
obvious errors.
2) You need to study Principles of Operation. Storing a pointer to a PSW
is not the same as storing a PSW.
3) If you want to run under MVS, then you don't have access to protected
storage, and you need MVS services (e.g., SPIE or ESPIE) to handle
program interrupts.
4) If you want to run the Madnick OS, you should point the assembler
SYSLIB at an empty card-format PDS; not finding WTO would have made it
obvious that you have the wrong environment.
5) The Madnick provided system does not include console services. If you
want those, you need to write your own driver. There are stand-alone
programs in the various group files; for example the (modified) Memorex
FRIEND program provides code for both 1052/3215 and 327x consoles.

I looked at the Madnick provided code, and the lack of console support
was my first concern. The second was the lack of macros to invoke system
services, which would make coding a lot simpler. Perhaps I'll provide
those when I get some time.

Gerhard Postpischil
Bradford, VT
Ivan Warren ivan@vmfacility.fr [hercules-390]
2015-11-08 23:30:13 UTC
Permalink
83 452 instructions is not bad !

--Ivan
Post by ***@id.ethz.ch [hercules-390]
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 83,452; mips 0.000;
I/O 0
[Non-text portions of this message have been removed]
winkelmann@id.ethz.ch [hercules-390]
2015-11-09 20:52:26 UTC
Permalink
Loading Image... http://wotho.ethz.ch/madnick_sieve.png Hi Ivan


Yes, it's always impressive... and this even isn't even the optimized version we created during the "contest" in January: It's the predecessor of it, which still contains the logic to print the primes and the summary instead of just displaying the result in a disabled wait PSW. And: It uses 1 bit per prime, instead of 1 byte per prime, as the contest version did. That way it supports a much higher maximum sieve limit and one has time to observe it for a while when switching to the Hercules device and status panel


HHC01603I ipl c

HHC00811I Processor CP00: architecture mode S/370

HHC01603I devinit c rdr\Sieve_of_Eratosthenes.deck rdr\P268154112N.card eof ebcdic multifile

HHC02245I 0:000C device initialized

HHC01603I sh type prt\stream-2_output.txt

$JOB,16368K,READER=IN,PRINTER=OUT

--- Sieve of Eratosthenes on the Sample Operating System Version 2.00 ---

14616339 primes up to 268154112 found

PROGRAM HALT
herc =====>

CP00 PSW=FE0200008000056A 24..W..... instcnt 4,993,855,436; mips 0.000; I/O 0


http://wotho.ethz.ch/madnick_sieve.png http://wotho.ethz.ch/madnick_sieve.png


http://wotho.ethz.ch/madnick_sieve.png

http://wotho.ethz.ch/madnick_sieve.png http://wotho.ethz.ch/madnick_sieve.png


View on wotho.ethz.ch http://wotho.ethz.ch/madnick_sieve.png
Preview by Yahoo




Cheers
JÃŒrgen


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

83 452 instructions is not bad !

--Ivan
Post by ***@id.ethz.ch [hercules-390]
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 83,452; mips 0.000;
I/O 0
[Non-text portions of this message have been removed]
Ivan Warren ivan@vmfacility.fr [hercules-390]
2015-11-09 21:02:07 UTC
Permalink
I know...

I did not hold up to my word and didn't examine the results.... And
never declared a winner

But maybe the challenge had more worth than the result in itself ;)

It was more an attempt at jolting interest.... But I still think I owe
to those who did attempt to contest.

I have to look into it.

--Ivan
Post by ***@id.ethz.ch [hercules-390]
http://wotho.ethz.ch/madnick_sieve.png
Hi Ivan
Yes, it's always impressive... and this even isn't even the optimized
version we created during the "contest" in January: It's the
predecessor of it, which still contains the logic to print the primes
and the summary instead of just displaying the result in a disabled
wait PSW. And: It uses 1 bit per prime, instead of 1 byte per prime,
as the contest version did. That way it supports a much higher maximum
sieve limit and one has time to observe it for a while when switching
to the Hercules device and status panel
HHC01603I ipl c
HHC00811I Processor CP00: architecture mode S/370
HHC01603I devinit c rdr\Sieve_of_Eratosthenes.deck
rdr\P268154112N.card eof ebcdic multifile
HHC02245I 0:000C device initialized
HHC01603I sh type prt\stream-2_output.txt
$JOB,16368K,READER=IN,PRINTER=OUT
--- Sieve of Eratosthenes on the Sample Operating System Version 2.00 ---
14616339 primes up to 268154112 found
PROGRAM HALT
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 4,993,855,436; mips
0.000; I/O 0
http://wotho.ethz.ch/madnick_sieve.png
image <http://wotho.ethz.ch/madnick_sieve.png>
http://wotho.ethz.ch/madnick_sieve.png
View on wotho.ethz.ch <http://wotho.ethz.ch/madnick_sieve.png>
Preview by Yahoo
Cheers
JÃŒrgen
83 452 instructions is not bad !
--Ivan
Post by ***@id.ethz.ch [hercules-390]
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt 83,452; mips 0.000;
I/O 0
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 08:43:59 UTC
Permalink
Gregg


I'm not aware having stolen this thread... I simply continued it from where it ran dry some years ago.



JÃŒrgen

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

Hello!
Or a thread thief.

Be nice to the Yetis, it's their mating season.
-----
Gregg C Levine ***@... mailto:***@...
"This signature fought the Time Wars, time and again."
Gregg Levine gregg.drwho8@gmail.com [hercules-390]
2015-11-16 17:05:15 UTC
Permalink
Hello!
You didn't. That was a warning to those who are famous for doing that.

-----
Gregg C Levine ***@gmail.com
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from where it ran dry some years ago.
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
'John P. Hartmann' jphartmann@gmail.com [hercules-390]
2015-11-16 17:08:12 UTC
Permalink
Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 19:23:33 UTC
Permalink
Hi John


Sure, for me everything is settled.


Sorry to all for the misunderstandings that resulted from cultural differences in combination with my insufficient understanding of English humor!


Cheers
JÃŒrgen

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


Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
Dave McGuire Mcguire@neurotica.com [hercules-390]
2015-11-16 19:28:48 UTC
Permalink
I apologize for any offense that was taken. It was not my intention.

-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
Post by ***@id.ethz.ch [hercules-390]
Hi John
Sure, for me everything is settled.
Sorry to all for the misunderstandings that resulted from cultural
differences in combination with my insufficient understanding of English humor!
Cheers
Jürgen
Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
[hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
Jürgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 20:05:59 UTC
Permalink
Sorry Dave, I completely misunderstood you're previous post... for me everything is back in best order now!


Best
JÃŒrgen




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

I apologize for any offense that was taken. It was not my intention.

-Dave

--
Dave McGuire, AK4HZ
New Kensington, PA
Post by ***@id.ethz.ch [hercules-390]
Hi John
Sure, for me everything is settled.
Sorry to all for the misunderstandings that resulted from cultural
differences in combination with my insufficient understanding of English humor!
Cheers
JÃŒrgen
Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
[hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
kerravon86@yahoo.com.au [hercules-390]
2015-11-17 04:41:07 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
Sorry to all for the misunderstandings
that resulted from cultural differences
in combination with my insufficient
understanding of English humor!
That "cultural difference" reminded me
of this Blackadder episode:

http://metwinfo.tripod.com/ba/blackadder_4-4_script.htm

(related by a supposed German):

You English and your sense of humour. During your brief
stay I look forward to learning more of your wit, your
punning and your amusing jokes about the breaking of the wind.
...
How lucky you English are to find the toilet so amusing.
For us, it is a mundane and functional item. For you, the
basis of an entire culture.


BFN. Paul.




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

Hi John


Sure, for me everything is settled.


Sorry to all for the misunderstandings that resulted from cultural differences in combination with my insufficient understanding of English humor!


Cheers
JÃŒrgen

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


Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
winkelmann@id.ethz.ch [hercules-390]
2015-11-17 10:06:56 UTC
Permalink
Hi Paul


thanks again for clearing the silly situation that came up yesterday. I think, I got it now .


Cheers
JÃŒrgen
Post by ***@id.ethz.ch [hercules-390]
Sorry to all for the misunderstandings
that resulted from cultural differences
in combination with my insufficient
understanding of English humor!
That "cultural difference" reminded me
of this Blackadder episode:

http://metwinfo.tripod.com/ba/blackadder_4-4_script.htm http://metwinfo.tripod.com/ba/blackadder_4-4_script.htm

(related by a supposed German):

You English and your sense of humour. During your brief
stay I look forward to learning more of your wit, your
punning and your amusing jokes about the breaking of the wind.
...
How lucky you English are to find the toilet so amusing.
For us, it is a mundane and functional item. For you, the
basis of an entire culture.


BFN. Paul.




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

Hi John


Sure, for me everything is settled.


Sorry to all for the misunderstandings that resulted from cultural differences in combination with my insufficient understanding of English humor!


Cheers
JÃŒrgen

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


Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
kerravon86@yahoo.com.au [hercules-390]
2015-11-17 10:20:36 UTC
Permalink
No worries Juergen.

I hope you take the time to watch some of
those excellent British comedies I pointed
out. The Anglophones don't just use the
toilet for inspiration. We also see wars as
an opportunity for humour (like Blackadder
I and IV and Fawlty Towers).

This explains why Prince Harry was
wearing a Nazi uniform too.

And people are constantly trying to
crack jokes in speech too, which is
why you saw the term "topic nazi"
instead of something uninteresting
like "I don't believe that is off-topic".

And we might use a term like
"curry munchers" to refer to an
Indian (from India), and it is not
considered racist (any more than
someone would call Prince Harry
a Nazi sympathizer, anyway).

BFN. Paul.




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

Hi Paul


thanks again for clearing the silly situation that came up yesterday. I think, I got it now .


Cheers
JÃŒrgen
Post by ***@id.ethz.ch [hercules-390]
Sorry to all for the misunderstandings
that resulted from cultural differences
in combination with my insufficient
understanding of English humor!
That "cultural difference" reminded me
of this Blackadder episode:

http://metwinfo.tripod.com/ba/blackadder_4-4_script.htm http://metwinfo.tripod.com/ba/blackadder_4-4_script.htm

(related by a supposed German):

You English and your sense of humour. During your brief
stay I look forward to learning more of your wit, your
punning and your amusing jokes about the breaking of the wind.
...
How lucky you English are to find the toilet so amusing.
For us, it is a mundane and functional item. For you, the
basis of an entire culture.


BFN. Paul.




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

Hi John


Sure, for me everything is settled.


Sorry to all for the misunderstandings that resulted from cultural differences in combination with my insufficient understanding of English humor!


Cheers
JÃŒrgen

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


Couldn't we settle on "old grump"?
Post by ***@id.ethz.ch [hercules-390]
Hello!
You didn't. That was a warning to those who are famous for doing that.
-----
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Gregg
I'm not aware having stolen this thread... I simply continued it from
where it ran dry some years ago.
Post by ***@id.ethz.ch [hercules-390]
JÃŒrgen
Hello!
Or a thread thief.
Be nice to the Yetis, it's their mating season.
-----
"This signature fought the Time Wars, time and again."
kerravon86@yahoo.com.au [hercules-390]
2015-11-17 11:13:04 UTC
Permalink
Post by ***@yahoo.com.au [hercules-390]
And people are constantly trying to
crack jokes in speech too,
Which is where the saying "If you
think before you speak, the other
guy gets his joke in first" comes
from. :-)

BFN. Paul.
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 08:17:33 UTC
Permalink
Hi Ivan
May I enquire as to what this has to do with hercules in itself ?
nothing, of course, except that it is a nice and complete legal use case! As is btw. the resurrected APL\360 which was discussed here in great length 3 yrs ago, and also is our last year's discussion on standalone programs, particularly the Sieve competition.


May I bring the group's description back to memory? From the "About" page:


"Group Description


Discussion group for users of the Hercules ESA/390 mainframe emulator"


For me that means everything around users and usage of Hercules fits into this group (well, at least unless there exists a specialized group for the topic), not only purist Hercules stuff without any relation to Hercules usage. Well, perhaps current Hercules development is in fact use case free... may be that's why use cases are considered being suspect?


Anyway, for me Hercules is a brilliant tool supporting the very valuable use case of software preservation. Systems like the Madnick/Donovan sample operating system, APL\360 on OS/360 MVT, or MVS 3.8j don't run on any other platform on this world and would be lost forever without Hercules. This is for me a very viable reason to report on them in this group.




Cheers
JÃŒrgen
May I enquire as to what this has to do with hercules in itself ?
--Ivan
Post by ***@id.ethz.ch [hercules-390]
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
. . .
Bert Lindeman bert.lindeman@gmail.com [hercules-390]
2015-11-16 08:59:32 UTC
Permalink
Hi JÃŒrgen,

Right.

Bert
Post by ***@id.ethz.ch [hercules-390]
Hi Ivan
May I enquire as to what this has to do with hercules in itself ?
nothing, of course, except that it is a nice and complete legal use
case! As is btw. the resurrected APL\360 which was discussed here in
great length 3 yrs ago, and also is our last year's discussion on
standalone programs, particularly the Sieve competition.
"Group Description
Discussion group for users of the Hercules ESA/390 mainframe emulator"
For me that means everything around users and usage of Hercules fits
into this group (well, at least unless there exists a specialized
group for the topic), not only purist Hercules stuff without any
relation to Hercules usage. Well, perhaps current Hercules development
is in fact use case free... may be that's why use cases are considered
being suspect?
Anyway, for me Hercules is a brilliant tool supporting the very
valuable use case of software preservation. Systems like the
Madnick/Donovan sample operating system, APL\360 on OS/360 MVT, or MVS
3.8j don't run on any other platform on this world and would be lost
forever without Hercules. This is for me a very viable reason to
report on them in this group.
Cheers
JÃŒrgen
May I enquire as to what this has to do with hercules in itself ?
--Ivan
Post by ***@id.ethz.ch [hercules-390]
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
. . .
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 08:22:58 UTC
Permalink
Nobody calls me a nazi, not even a topic nazi. I've added you to my spam filter, once and forever.

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

Nobody likes a topic nazi.

-Dave
kerravon86@yahoo.com.au [hercules-390]
2015-11-16 09:05:22 UTC
Permalink
Hi Juergen.

As I've said before, English is like my 5th
language after C, 6502 assembler, 370
assembler and 386 assembler, but I'm
pretty sure that Dave was calling Ivan,
NOT YOU, a "topic Nazi", and was in
fact defending your right to post on this topic.

Also, I doubt very much whether Ivan
will object to being called a "topic nazi",
as that is considered humorous, or
at least neutral, not offensive, by
native English speakers, as far as I
am aware.

BFN. Paul.





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

Nobody calls me a nazi, not even a topic nazi. I've added you to my spam filter, once and forever.

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

Nobody likes a topic nazi.

-Dave
kerravon86@yahoo.com.au [hercules-390]
2015-11-16 11:04:27 UTC
Permalink
"topic nazi", as that is considered humorous
Although I never really watched
Seinfeld, I did catch this episode:

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

And from that link you can also
see the quite common "Grammar Nazi".

It's just a (somewhat) normal word as part
of the English language now.

BFN. Paul.
kerravon86@yahoo.com.au [hercules-390]
2015-11-16 12:16:26 UTC
Permalink
Post by ***@yahoo.com.au [hercules-390]
https://en.wikipedia.org/wiki/The_Soup_Nazi
And I should also add that the height
of Nazi humour is this:

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

In particular:

"You did so - you invaded Poland"

and the greatest one-liner of all times:

"However did they win?".


BFN. Paul.
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 12:16:32 UTC
Permalink
Hi Paul


Thanks for the translation support. I was not aware of the fact that this phrasing is considered humorous nowadays. For me (being German originally) the negative feelings coming up when getting associated with this are still massive.


@Dave: Sorry for the tough reaction, I've removed the spam filter setting.


Cheers
JÃŒrgen
"topic nazi", as that is considered humorous
Although I never really watched
Seinfeld, I did catch this episode:

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

And from that link you can also
see the quite common "Grammar Nazi".

It's just a (somewhat) normal word as part
of the English language now.

BFN. Paul.
Gregg Levine gregg.drwho8@gmail.com [hercules-390]
2015-11-16 17:07:24 UTC
Permalink
Hello!
Thank you Paul. I've already requested it.

-----
Gregg C Levine ***@gmail.com
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Hi Paul
Thanks for the translation support. I was not aware of the fact that
this phrasing is considered humorous nowadays. For me (being German
originally) the negative feelings coming up when getting associated with
this are still massive.
@Dave: Sorry for the tough reaction, I've removed the spam filter setting.
Cheers
JÃŒrgen
"topic nazi", as that is considered humorous
Although I never really watched
https://en.wikipedia.org/wiki/The_Soup_Nazi
And from that link you can also
see the quite common "Grammar Nazi".
It's just a (somewhat) normal word as part
of the English language now.
BFN. Paul.
Gregg Levine gregg.drwho8@gmail.com [hercules-390]
2015-11-16 17:04:29 UTC
Permalink
Hello!
Dave was referring to Vanya (Ivan) not you. Please remove his name
from your filter.

-----
Gregg C Levine ***@gmail.com
"This signature fought the Time Wars, time and again."
Post by ***@id.ethz.ch [hercules-390]
Nobody calls me a nazi, not even a topic nazi. I've added you to my spam filter, once and forever.
Nobody likes a topic nazi.
-Dave
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-11-16 13:02:34 UTC
Permalink
Hi JÃŒrgen,

Are you using TK4 to assemble the madnick system and user programs
and to then punch them to ebcdic card decks ?

If so, can you post the JCL ?

thx

Mike
Post by ***@id.ethz.ch [hercules-390]
Hi All
I'm getting back to Gerhard's remark concerning the lack of console support
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the conclusion
that consoles are not needed for a system being that simple. If one only
wants to send output to a console device the EXCP driver provided will
certainly suffice...", but I didn't yet provide an example.
Still having fun with the sample operating system I now created an example
showing how to use the EXCP device handler from a user program to (serially)
use a console device. The program is a simple extension of the demo user
program mentioned in the "Operating Systems" book: It reads "parameters"
from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
Here a Hercules session and "console" transcript running the demo user
HHC01018I 0:0009 COMM: client 127.0.0.1 devtype 3215: connected
HHC01603I ipl c
HHC00811I Processor CP00: architecture mode S/370
HHC01603I script scripts/load_card_decks
\
\
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Console interaction transcribed below
/
/
HHC01603I sh type prt\*
prt\stream-1_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR1 successful, entry point = 007000
Parameters entered on console: Parameters for Stream 1
PROGRAM HALT
prt\stream-2_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR2 successful, entry point = 008000
Parameters entered on console: Parameters for Stream 2
PROGRAM HALT
prt\stream-3_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR3 successful, entry point = 004000
Parameters entered on console: Parameters for Stream 3
PROGRAM HALT
prt\stream-4_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR4 successful, entry point = 005000
Parameters entered on console: Parameters for Stream 4
PROGRAM HALT
herc =====>
CP00 PSW=FE0200008000056A 24..W..... instcnt
53,998
\
\
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Console transcript running the demo program on 4 streams
/
/
HHC01027I Hercules version 4.00, built on Feb 6 2015 13:50:51
HHC01031I Running on HPM9180 (Windows-6.1.7601.7 Enterprise Edition 64-bit
Intel(R) x64 LP=4, Cores=4, CPUs=1)
HHC01018I 0:0009 COMM: client 127.0.0.1 devtype 3215: connected
Job started on stream-4, user program entry point = 005000, enter
parameters: Parameters for Stream 4
Job started on stream-3, user program entry point = 004000, enter
parameters: Parameters for Stream 3
Job started on stream-2, user program entry point = 008000, enter
parameters: Parameters for Stream 2
Job started on stream-1, user program entry point = 007000, enter
parameters: Parameters for Stream 1
Job ended on stream-4
Job ended on stream-3
Job ended on stream-2
Job ended on stream-1
Cheers
JÃŒrgen
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-11-16 13:07:28 UTC
Permalink
More specifically, how do I get Tk4- to punch the deck to the
"external" hercules punch ?

From old discussions, I think it involved operator jes2 commands to
"disconnect" the punch ?

I know how to assemble / link to the TK4 system

Mike
Post by Bert Lindeman ***@gmail.com [hercules-390]
Hi JÃŒrgen,
Are you using TK4 to assemble the madnick system and user programs
and to then punch them to ebcdic card decks ?
If so, can you post the JCL ?
thx
Mike
Post by ***@id.ethz.ch [hercules-390]
Hi All
I'm getting back to Gerhard's remark concerning the lack of console support
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the conclusion
that consoles are not needed for a system being that simple. If one only
wants to send output to a console device the EXCP driver provided will
certainly suffice...", but I didn't yet provide an example.
Still having fun with the sample operating system I now created an example
showing how to use the EXCP device handler from a user program to (serially)
use a console device. The program is a simple extension of the demo user
program mentioned in the "Operating Systems" book: It reads "parameters"
from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
Here a Hercules session and "console" transcript running the demo user
HHC01018I 0:0009 COMM: client 127.0.0.1 devtype 3215: connected
HHC01603I ipl c
HHC00811I Processor CP00: architecture mode S/370
HHC01603I script scripts/load_card_decks
\
\
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Console interaction transcribed below
/
/
HHC01603I sh type prt\*
prt\stream-1_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR1 successful, entry point = 007000
Parameters entered on console: Parameters for Stream 1
PROGRAM HALT
prt\stream-2_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR2 successful, entry point = 008000
Parameters entered on console: Parameters for Stream 2
PROGRAM HALT
prt\stream-3_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR3 successful, entry point = 004000
Parameters entered on console: Parameters for Stream 3
PROGRAM HALT
prt\stream-4_output.txt
$JOB,2K,READER=IN,PRINTER=OUT,CONSOLE=EXCP
--- Sample Operating System Version 2.00 ---
User program entry on RDR4 successful, entry point = 005000
Parameters entered on console: Parameters for Stream 4
PROGRAM HALT
herc =====>
CP00 PSW=FE0200008000056A 24..W.....
instcnt
53,998
\
\
Post by Gerhard Postpischil ***@charter.net [hercules-390]
Console transcript running the demo program on 4 streams
/
/
HHC01027I Hercules version 4.00, built on Feb 6 2015 13:50:51
HHC01031I Running on HPM9180 (Windows-6.1.7601.7 Enterprise Edition 64-bit
Intel(R) x64 LP=4, Cores=4, CPUs=1)
HHC01018I 0:0009 COMM: client 127.0.0.1 devtype 3215: connected
Job started on stream-4, user program entry point = 005000, enter
parameters: Parameters for Stream 4
Job started on stream-3, user program entry point = 004000, enter
parameters: Parameters for Stream 3
Job started on stream-2, user program entry point = 008000, enter
parameters: Parameters for Stream 2
Job started on stream-1, user program entry point = 007000, enter
parameters: Parameters for Stream 1
Job ended on stream-4
Job ended on stream-3
Job ended on stream-2
Job ended on stream-1
Cheers
JÃŒrgen
winkelmann@id.ethz.ch [hercules-390]
2015-11-16 14:10:49 UTC
Permalink
Hi Mike


please see the PDS contained in sysgen/madnick_4_kb_blocks+reader_enhancement_update.xmi. It contains the JCL I use to build the IPL deck. This is also mentioned in README_4_KB_RDR.txt, both (README and XMI) can be found in Madnick_4_KB_RDR_for_Hercules.zip. The PDS contains a $README member with additional specific information.


Once built, simply download the "deck" using binary file transfer (IND$FILE) on your tn3270 client or binary ftp. Of course you can also spool it to a Hercules card punch device, for example using IEBGENER and SYSUT2 DD SYSOUT=B on TK4-.


Cheers
JÃŒrgen



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

Hi JÃŒrgen,

Are you using TK4 to assemble the madnick system and user programs
and to then punch them to ebcdic card decks ?

If so, can you post the JCL ?
winkelmann@id.ethz.ch [hercules-390]
2015-11-21 16:40:19 UTC
Permalink
Hi All


no worries... I don't want to let this live up. But I just saw a funny (really!) effect and thought it would be nice to tell here, even though it admittedly has nothing to do with Hercules as such.


I was just playing around a bit with that "Poor Man's Console" and thought "Why not put something on it producing more I/O than the demo user program?" and, as usual with such ideas (Phil once brought me to that), I had a look at the "99 Bottles of Beer" website for an assembler implementation of the song. I found one and modified it to run under the sample OS. What I wanted to see was the behavior when running multiple instances against a single console. Well, the result was a nice canon and I really had a laugh trying to imagine how it would sound... here a shortened form, take every group of eight lines from the Hercules console output to the a different voice, giving four voices and imagine the sound :


Loading Image... http://wotho.ethz.ch/99_Bottles_on_Madnick.png


Cheers
JÃŒrgen



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

Hi All
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the conclusion that consoles are not needed for a system being that simple. If one only wants to send output to a console device the EXCP driver provided will certainly suffice...", but I didn't yet provide an example.


Still having fun with the sample operating system I now created an example showing how to use the EXCP device handler from a user program to (serially) use a console device. The program is a simple extension of the demo user program mentioned in the "Operating Systems" book: It reads "parameters" from the "console" and reflects them to the printer.


The archive


https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip

contains the modified demo user program and a version of the sample operating system "sysgen'ed" to contain a UCB for a "console" at 009.
Bert Lindeman bert.lindeman@gmail.com [hercules-390]
2015-11-21 16:54:35 UTC
Permalink
Hi JÃŒrgen,

Yes, fun it *is*.

Simple (LeichtglÀubig)question: *is* there an audio function on Madnick
available? :-)

Thanks,
Bert

<http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde>
Post by ***@id.ethz.ch [hercules-390]
Hi All
no worries... I don't want to let this live up. But I just saw a funny
(really!) effect and thought it would be nice to tell here, even
though it admittedly has nothing to do with Hercules as such.
I was just playing around a bit with that "Poor Man's Console" and
thought "Why not put something on it producing more I/O than the demo
user program?" and, as usual with such ideas (Phil once brought me to
that), I had a look at the "99 Bottles of Beer" website for an
assembler implementation of the song. I found one and modified it to
run under the sample OS. What I wanted to see was the behavior when
running multiple instances against a single console. Well, the result
was a nice canon and I really had a laugh trying to imagine how it
would sound... here a shortened form, take every group of eight
lines from the Hercules console output to the a different voice,
http://wotho.ethz.ch/99_Bottles_on_Madnick.png
Cheers
JÃŒrgen
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the
conclusion that consoles are not needed for a system being that
simple. If one only wants to send output to a console device the
EXCP driver provided will certainly suffice...", but I didn't yet
provide an example.
Still having fun with the sample operating system I now created an
example showing how to use the EXCP device handler from a user program
to (serially) use a console device. The program is a simple extension
of the demo user program mentioned in the "Operating Systems" book: It
reads "parameters" from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
winkelmann@id.ethz.ch [hercules-390]
2015-11-21 17:06:11 UTC
Permalink
Hi Bert


sadly not... I was already thinking about writing a script to pipe it into a voice generator, but how about the melody?


And, ooops, I just saw the lyrics are incomplete... copy and paste really is a pest. However, brain imagination not only manages to make the canon audible but also to add the missing text (must be a similar brain functionality as when wearing glasses with progressive lenses), which is why it doesn't matter at all that it's incomplete.


No the only problem remaining is: How do I get the melody back out of my head???



Cheers
JÃŒrgen

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


Hi JÃŒrgen,

Yes, fun it *is*.

Simple (LeichtglÀubig)question: *is* there an audio function on Madnick
available? :-)

Thanks,
Bert

<http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde>
Post by ***@id.ethz.ch [hercules-390]
Hi All
no worries... I don't want to let this live up. But I just saw a funny
(really!) effect and thought it would be nice to tell here, even
though it admittedly has nothing to do with Hercules as such.
I was just playing around a bit with that "Poor Man's Console" and
thought "Why not put something on it producing more I/O than the demo
user program?" and, as usual with such ideas (Phil once brought me to
that), I had a look at the "99 Bottles of Beer" website for an
assembler implementation of the song. I found one and modified it to
run under the sample OS. What I wanted to see was the behavior when
running multiple instances against a single console. Well, the result
was a nice canon and I really had a laugh trying to imagine how it
would sound... here a shortened form, take every group of eight
lines from the Hercules console output to the a different voice,
http://wotho.ethz.ch/99_Bottles_on_Madnick.png http://wotho.ethz.ch/99_Bottles_on_Madnick.png
Cheers
JÃŒrgen
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the
conclusion that consoles are not needed for a system being that
simple. If one only wants to send output to a console device the
EXCP driver provided will certainly suffice...", but I didn't yet
provide an example.
Still having fun with the sample operating system I now created an
example showing how to use the EXCP device handler from a user program
to (serially) use a console device. The program is a simple extension
of the demo user program mentioned in the "Operating Systems" book: It
reads "parameters" from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-11-22 01:59:01 UTC
Permalink
Well you / we could always delve into the weird and wonderful world of
digital sound file formats, and how to generate them.

I started to do that awhile ago with another emulator.

"Fun" stuff .... sort of :/
Post by ***@id.ethz.ch [hercules-390]
Hi Bert
sadly not... I was already thinking about writing a script to pipe it into
a voice generator, but how about the melody?
And, ooops, I just saw the lyrics are incomplete... copy and paste really
is a pest. However, brain imagination not only manages to make the canon
audible but also to add the missing text (must be a similar brain
functionality as when wearing glasses with progressive lenses), which is why
it doesn't matter at all that it's incomplete.
No the only problem remaining is: How do I get the melody back out of my head???
Cheers
JÃŒrgen
Hi JÃŒrgen,
Yes, fun it *is*.
Simple (LeichtglÀubig)question: *is* there an audio function on Madnick
available? :-)
Thanks,
Bert
<http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde
http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde>
Post by ***@id.ethz.ch [hercules-390]
Hi All
no worries... I don't want to let this live up. But I just saw a funny
(really!) effect and thought it would be nice to tell here, even
though it admittedly has nothing to do with Hercules as such.
I was just playing around a bit with that "Poor Man's Console" and
thought "Why not put something on it producing more I/O than the demo
user program?" and, as usual with such ideas (Phil once brought me to
that), I had a look at the "99 Bottles of Beer" website for an
assembler implementation of the song. I found one and modified it to
run under the sample OS. What I wanted to see was the behavior when
running multiple instances against a single console. Well, the result
was a nice canon and I really had a laugh trying to imagine how it
would sound... here a shortened form, take every group of eight
lines from the Hercules console output to the a different voice,
http://wotho.ethz.ch/99_Bottles_on_Madnick.png
http://wotho.ethz.ch/99_Bottles_on_Madnick.png
Post by ***@id.ethz.ch [hercules-390]
Cheers
JÃŒrgen
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the
conclusion that consoles are not needed for a system being that
simple. If one only wants to send output to a console device the
EXCP driver provided will certainly suffice...", but I didn't yet
provide an example.
Still having fun with the sample operating system I now created an
example showing how to use the EXCP device handler from a user program
to (serially) use a console device. The program is a simple extension
of the demo user program mentioned in the "Operating Systems" book: It
reads "parameters" from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
Post by ***@id.ethz.ch [hercules-390]
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
Mike Schwab Mike.A.Schwab@gmail.com [hercules-390]
2015-11-22 02:48:26 UTC
Permalink
Kind of like Row, Row, Row your boat?


Post by Mike Stramba ***@gmail.com [hercules-390]
Well you / we could always delve into the weird and wonderful world of
digital sound file formats, and how to generate them.
I started to do that awhile ago with another emulator.
"Fun" stuff .... sort of :/
Post by ***@id.ethz.ch [hercules-390]
Hi Bert
sadly not... I was already thinking about writing a script to pipe it into
a voice generator, but how about the melody?
And, ooops, I just saw the lyrics are incomplete... copy and paste really
is a pest. However, brain imagination not only manages to make the canon
audible but also to add the missing text (must be a similar brain
functionality as when wearing glasses with progressive lenses), which is why
it doesn't matter at all that it's incomplete.
No the only problem remaining is: How do I get the melody back out of my head???
Cheers
JÃŒrgen
Hi JÃŒrgen,
Yes, fun it *is*.
Simple (LeichtglÀubig)question: *is* there an audio function on Madnick
available? :-)
Thanks,
Bert
<http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde
http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde>
Post by ***@id.ethz.ch [hercules-390]
Hi All
no worries... I don't want to let this live up. But I just saw a funny
(really!) effect and thought it would be nice to tell here, even
though it admittedly has nothing to do with Hercules as such.
I was just playing around a bit with that "Poor Man's Console" and
thought "Why not put something on it producing more I/O than the demo
user program?" and, as usual with such ideas (Phil once brought me to
that), I had a look at the "99 Bottles of Beer" website for an
assembler implementation of the song. I found one and modified it to
run under the sample OS. What I wanted to see was the behavior when
running multiple instances against a single console. Well, the result
was a nice canon and I really had a laugh trying to imagine how it
would sound... here a shortened form, take every group of eight
lines from the Hercules console output to the a different voice,
http://wotho.ethz.ch/99_Bottles_on_Madnick.png
http://wotho.ethz.ch/99_Bottles_on_Madnick.png
Post by ***@id.ethz.ch [hercules-390]
Cheers
JÃŒrgen
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the
conclusion that consoles are not needed for a system being that
simple. If one only wants to send output to a console device the
EXCP driver provided will certainly suffice...", but I didn't yet
provide an example.
Still having fun with the sample operating system I now created an
example showing how to use the EXCP device handler from a user program
to (serially) use a console device. The program is a simple extension
of the demo user program mentioned in the "Operating Systems" book: It
reads "parameters" from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
Post by ***@id.ethz.ch [hercules-390]
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
------------------------------------
------------------------------------
http://groups.yahoo.com/group/hercules-390
http://www.hercules-390.org
------------------------------------
Yahoo Groups Links
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
winkelmann@id.ethz.ch [hercules-390]
2015-11-22 21:00:24 UTC
Permalink
Well, kind of -- but clearly more sophisticated, musically... particularly with the complete lyrics as can be seen here: Loading Image... http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png

http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png

http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png


View on wotho.ethz.ch http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
Preview by Yahoo



(yesterday's version was greatly simplified due to me thoughtlessly copying and pasting the program from the 99 bottles of beer website)


Cheers
JÃŒrgen



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

Kind of like Row, Row, Row your boat?

http://youtu.be/qZC_v6BRWPM http://youtu.be/qZC_v6BRWPM
Post by Mike Stramba ***@gmail.com [hercules-390]
Well you / we could always delve into the weird and wonderful world of
digital sound file formats, and how to generate them.
I started to do that awhile ago with another emulator.
"Fun" stuff .... sort of :/
Post by ***@id.ethz.ch [hercules-390]
Hi Bert
sadly not... I was already thinking about writing a script to pipe it into
a voice generator, but how about the melody?
And, ooops, I just saw the lyrics are incomplete... copy and paste really
is a pest. However, brain imagination not only manages to make the canon
audible but also to add the missing text (must be a similar brain
functionality as when wearing glasses with progressive lenses), which is why
it doesn't matter at all that it's incomplete.
No the only problem remaining is: How do I get the melody back out of my head???
Cheers
JÃŒrgen
Hi JÃŒrgen,
Yes, fun it *is*.
Simple (LeichtglÀubig)question: *is* there an audio function on Madnick
available? :-)
Thanks,
Bert
<http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde
http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde http://www.interglot.com/dictionary/de/nl/translate/leichtgl%C3%A4ubig?l=nl%7Cde>
Post by ***@id.ethz.ch [hercules-390]
Hi All
no worries... I don't want to let this live up. But I just saw a funny
(really!) effect and thought it would be nice to tell here, even
though it admittedly has nothing to do with Hercules as such.
I was just playing around a bit with that "Poor Man's Console" and
thought "Why not put something on it producing more I/O than the demo
user program?" and, as usual with such ideas (Phil once brought me to
that), I had a look at the "99 Bottles of Beer" website for an
assembler implementation of the song. I found one and modified it to
run under the sample OS. What I wanted to see was the behavior when
running multiple instances against a single console. Well, the result
was a nice canon and I really had a laugh trying to imagine how it
would sound... here a shortened form, take every group of eight
lines from the Hercules console output to the a different voice,
http://wotho.ethz.ch/99_Bottles_on_Madnick.png http://wotho.ethz.ch/99_Bottles_on_Madnick.png
http://wotho.ethz.ch/99_Bottles_on_Madnick.png http://wotho.ethz.ch/99_Bottles_on_Madnick.png
Post by ***@id.ethz.ch [hercules-390]
Cheers
JÃŒrgen
Hi All
I'm getting back to Gerhard's remark concerning the lack of console
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I looked at the Madnick provided code, and the lack of console support
was my first concern.
Basically I replied on this: "... in the meantime I came to the
conclusion that consoles are not needed for a system being that
simple. If one only wants to send output to a console device the
EXCP driver provided will certainly suffice...", but I didn't yet
provide an example.
Still having fun with the sample operating system I now created an
example showing how to use the EXCP device handler from a user program
to (serially) use a console device. The program is a simple extension
of the demo user program mentioned in the "Operating Systems" book: It
reads "parameters" from the "console" and reflects them to the printer.
The archive
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip https://groups.yahoo.com/neo/groups/hercules-390/files/Madnick_with_Console.zip
Post by ***@id.ethz.ch [hercules-390]
contains the modified demo user program and a version of the sample
operating system "sysgen'ed" to contain a UCB for a "console" at 009.
------------------------------------
------------------------------------
http://groups.yahoo.com/group/hercules-390 http://groups.yahoo.com/group/hercules-390
http://www.hercules-390.org http://www.hercules-390.org
------------------------------------
Yahoo Groups Links
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
winkelmann@id.ethz.ch [hercules-390]
2015-11-29 14:04:14 UTC
Permalink
Hi All


just in case someone is still interested in what can be done with the Madnick OS:


A minimal "enhancement" to the EXCP device driver (two lines of code) enables user programs to use 3270 displays in a very similar way as it would be done under TSO using TGET, TPUT and TGT. The following excerpt shows a simple display loop:


*

* panel display loop

*

FORMAT SOSTPUT PANEL,EWA format screen

DISPLAY MVI CNSINPT,C' ' blank out ..

MVC CNSINPT+1(255),CNSINPT .. console input buffer ..

SOSTPG PROMPT,W,CNSINPT,RM prompt for some input

CLI CNSINPT,X'6D' CLEAR key pressed?

BE FORMAT .. yes -> format screen and start over

MVC CNSTEXT(80),CNSINPT+6 reflect input ..

SOSTPUT CNSMSG,W .. back to console

OC CNSTEXT(4),UPPER make input upper case

CLC CNSTEXT(4),EXIT exit requested?

BNE DISPLAY .. no -> start over

*

* chicken out

*

SVC C'H' pleaaassse, gimme a break


The program displays a simple panel with a single input field and requests the user to enter something. The entered data is reflected back to the terminal and the input field is cleared, waiting for the next entry. Continued until the user enters "exit". Here a picture of running it against two 3270 terminals:


Loading Image... http://wotho.ethz.ch/madnick_3270.png

http://wotho.ethz.ch/madnick_3270.png

http://wotho.ethz.ch/madnick_3270.png http://wotho.ethz.ch/madnick_3270.png


View on wotho.ethz.ch http://wotho.ethz.ch/madnick_3270.png
Preview by Yahoo




Seems to be a nice way to play with 3270 datastreams, without needing to care about TSO weirdnesses like EDIT, ASIS, FULLSCRN, et al.


Of course I'm willing to upload the code (Madnick OS EXCP update as well as the user program) if there is interest. However, I don't want to spam the files section with more Madnick updates if there is no interest.


Cheers
JÃŒrgen




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



Well, kind of -- but clearly more sophisticated, musically... particularly with the complete lyrics as can be seen here: http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png

http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png

http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png


View on wotho.ethz.ch http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
Preview by Yahoo




(yesterday's version was greatly simplified due to me thoughtlessly copying and pasting the program from the 99 bottles of beer website)


Cheers
JÃŒrgen





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



Kind of like Row, Row, Row your boat?




Star Trek row row row your boat http://youtu.be/qZC_v6BRWPM

http://youtu.be/qZC_v6BRWPM

Star Trek row row row your boat http://youtu.be/qZC_v6BRWPM Star Trek 5 fragment



View on www.youtube.com http://youtu.be/qZC_v6BRWPM
Preview by Yahoo






. . .


Mike A Schwab, Springfield IL USA

Where do Forest Rangers go to get away from it all?
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-11-29 18:28:41 UTC
Permalink
JÃŒrgen,

Please do upload this 3270 version !

I've written small 3270 "raw" programs that do the same function as
your 3270 example, I'd like to see the differences / similarities.

Why worry about "spamming" with ~100K uploads ? ;)

Heh, next you can work on a DASD file system, then DAT, then "user
logons", and it will be on the way to a "full" O.S ;)

Mike
Post by ***@id.ethz.ch [hercules-390]
Hi All
A minimal "enhancement" to the EXCP device driver (two lines of code)
enables user programs to use 3270 displays in a very similar way as it would
be done under TSO using TGET, TPUT and TGT. The following excerpt shows a
*
* panel display loop
*
FORMAT SOSTPUT PANEL,EWA format screen
DISPLAY MVI CNSINPT,C' ' blank out ..
MVC CNSINPT+1(255),CNSINPT .. console input buffer ..
SOSTPG PROMPT,W,CNSINPT,RM prompt for some input
CLI CNSINPT,X'6D' CLEAR key pressed?
BE FORMAT .. yes -> format screen and start over
MVC CNSTEXT(80),CNSINPT+6 reflect input ..
SOSTPUT CNSMSG,W .. back to console
OC CNSTEXT(4),UPPER make input upper case
CLC CNSTEXT(4),EXIT exit requested?
BNE DISPLAY .. no -> start over
*
* chicken out
*
SVC C'H' pleaaassse, gimme a break
The program displays a simple panel with a single input field and requests
the user to enter something. The entered data is reflected back to the
terminal and the input field is cleared, waiting for the next entry.
Continued until the user enters "exit". Here a picture of running it against
http://wotho.ethz.ch/madnick_3270.png http://wotho.ethz.ch/madnick_3270.png
http://wotho.ethz.ch/madnick_3270.png
http://wotho.ethz.ch/madnick_3270.png http://wotho.ethz.ch/madnick_3270.png
View on wotho.ethz.ch http://wotho.ethz.ch/madnick_3270.png
Preview by Yahoo
Seems to be a nice way to play with 3270 datastreams, without needing to
care about TSO weirdnesses like EDIT, ASIS, FULLSCRN, et al.
Of course I'm willing to upload the code (Madnick OS EXCP update as well as
the user program) if there is interest. However, I don't want to spam the
files section with more Madnick updates if there is no interest.
Cheers
JÃŒrgen
Well, kind of -- but clearly more sophisticated, musically... particularly
http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
View on wotho.ethz.ch http://wotho.ethz.ch/99_Bottles_on_Madnick_2.png
Preview by Yahoo
(yesterday's version was greatly simplified due to me thoughtlessly
copying and pasting the program from the 99 bottles of beer website)
Cheers
JÃŒrgen
Kind of like Row, Row, Row your boat?
Star Trek row row row your boat http://youtu.be/qZC_v6BRWPM
http://youtu.be/qZC_v6BRWPM
Star Trek row row row your boat http://youtu.be/qZC_v6BRWPM
Star Trek 5 fragment
View on www.youtube.com http://youtu.be/qZC_v6BRWPM
Preview by Yahoo
. . .
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
winkelmann@id.ethz.ch [hercules-390]
2015-11-29 21:44:45 UTC
Permalink
Hi Mike


Ok, I'll upload it shortly... my problem wasn't the size but the amount of files:


There are now already five Madnick related zips from me in the files section. Maybe I should at least have made a folder before uploading the first one, but I never expected to do much more than this first one.


Given that others don't like the Madnick discussion too much I'm a bit reluctant uploading more or even continuing to post about it. On the other hand, the project is too small to start a dedicated group for it. Perhaps I'll create a dedicated website, similar to APL\360 or TK4-, when I find the time (which isn't exactly probable at the moment).



Concerning further enhancements: The system is really beautiful, well structured and easy to expand. Basic DASD support wouldn't be too difficult to add, while DAT would be quite a task (which I don't think would be worthwhile). Currently I have no intentions making a "real" OS out of it, as then the "fun factor" would quickly fade .



Cheers
JÃŒrgen

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


JÃŒrgen,

Please do upload this 3270 version !

I've written small 3270 "raw" programs that do the same function as
your 3270 example, I'd like to see the differences / similarities.

Why worry about "spamming" with ~100K uploads ? ;)

Heh, next you can work on a DASD file system, then DAT, then "user
logons", and it will be on the way to a "full" O.S ;)

Mike
Post by ***@id.ethz.ch [hercules-390]
Hi All
A minimal "enhancement" to the EXCP device driver (two lines of code)
enables user programs to use 3270 displays in a very similar way as it would
be done under TSO using TGET, TPUT and TGT. The following excerpt shows a
Dave McGuire Mcguire@neurotica.com [hercules-390]
2015-11-29 21:51:43 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
There are now already five Madnick related zips from me in the files
section. Maybe I should at least have made a folder before uploading the
first one, but I never expected to do much more than this first one.
Please forgive me for jumping in, but I have a few comments.

First, yes, I agree that a folder is a very good idea.
Post by ***@id.ethz.ch [hercules-390]
Given that others don't like the Madnick discussion too much I'm a bit
reluctant uploading more or even continuing to post about it. On the
other hand, the project is too small to start a dedicated group for it.
Perhaps I'll create a dedicated website, similar to APL\360 or TK4-,
when I find the time (which isn't exactly probable at the moment).
I don't know who here was so oversensitive so as to have had a problem
with the discussion. It's perfectly relevant to the stated purpose of
this mailing list, if I'm not mistaken. I myself have watched it with
great interest, and have only not become involved because my life is
very busy right now. I'm hoping to fire up this new mini-OS at some
point soon and do some hacking on it. At some point further, I'd even
really like to run it on real iron. I'm sure others have read it with
interest as well. Disinterested parties simply need to learn how to
exercise the "delete" function of their mail software.
Post by ***@id.ethz.ch [hercules-390]
Concerning further enhancements: The system is really beautiful, well
structured and easy to expand. Basic DASD support wouldn't be too
difficult to add, while DAT would be quite a task (which I don't think
would be worthwhile). Currently I have no intentions making a "real" OS
out of it, as then the "fun factor" would quickly fade .
Sure, I can see how that would be, but wouldn't it be great to have a
fully "home grown" OS for these machines and their emulators?

-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
Maarten Hoes hoes.maarten@gmail.com [hercules-390]
2015-11-29 21:59:57 UTC
Permalink
Post by Dave McGuire ***@neurotica.com [hercules-390]
Disinterested parties simply need to learn how to
exercise the "delete" function of their mail software.
+1

Im not following this closely at all, but to me it seems like harmless
hobbyists doing something that they love, which also happens to fall
perfectly within the confinements of the list.


- Maarten
kerravon86@yahoo.com.au [hercules-390]
2015-11-30 01:13:03 UTC
Permalink
Post by Dave McGuire ***@neurotica.com [hercules-390]
but wouldn't it be great to have a
fully "home grown" OS for these
machines and their emulators?
We already have that, with PDOS,
don't we? Or did you mean "another
fully ..."?

BFN. Paul.
Post by Dave McGuire ***@neurotica.com [hercules-390]
There are now already five Madnick related zips from me in the files
section. Maybe I should at least have made a folder before uploading the
first one, but I never expected to do much more than this first one.
Please forgive me for jumping in, but I have a few comments.

First, yes, I agree that a folder is a very good idea.
Post by Dave McGuire ***@neurotica.com [hercules-390]
Given that others don't like the Madnick discussion too much I'm a bit
reluctant uploading more or even continuing to post about it. On the
other hand, the project is too small to start a dedicated group for it.
Perhaps I'll create a dedicated website, similar to APL\360 or TK4-,
when I find the time (which isn't exactly probable at the moment).
I don't know who here was so oversensitive so as to have had a problem
with the discussion. It's perfectly relevant to the stated purpose of
this mailing list, if I'm not mistaken. I myself have watched it with
great interest, and have only not become involved because my life is
very busy right now. I'm hoping to fire up this new mini-OS at some
point soon and do some hacking on it. At some point further, I'd even
really like to run it on real iron. I'm sure others have read it with
interest as well. Disinterested parties simply need to learn how to
exercise the "delete" function of their mail software.
Post by Dave McGuire ***@neurotica.com [hercules-390]
Concerning further enhancements: The system is really beautiful, well
structured and easy to expand. Basic DASD support wouldn't be too
difficult to add, while DAT would be quite a task (which I don't think
would be worthwhile). Currently I have no intentions making a "real" OS
out of it, as then the "fun factor" would quickly fade .
Sure, I can see how that would be, but wouldn't it be great to have a
fully "home grown" OS for these machines and their emulators?

-Dave

--
Dave McGuire, AK4HZ
New Kensington, PA
Mike Schwab Mike.A.Schwab@gmail.com [hercules-390]
2015-11-30 04:13:36 UTC
Permalink
PDOS was ported by Paul, written in C.
Was Madnick written in assembler?
Post by ***@yahoo.com.au [hercules-390]
Post by Dave McGuire ***@neurotica.com [hercules-390]
but wouldn't it be great to have a
fully "home grown" OS for these
machines and their emulators?
We already have that, with PDOS,
don't we? Or did you mean "another
fully ..."?
BFN. Paul.
Post by Dave McGuire ***@neurotica.com [hercules-390]
There are now already five Madnick related zips from me in the files
section. Maybe I should at least have made a folder before uploading the
first one, but I never expected to do much more than this first one.
Please forgive me for jumping in, but I have a few comments.
First, yes, I agree that a folder is a very good idea.
Post by Dave McGuire ***@neurotica.com [hercules-390]
Given that others don't like the Madnick discussion too much I'm a bit
reluctant uploading more or even continuing to post about it. On the
other hand, the project is too small to start a dedicated group for it.
Perhaps I'll create a dedicated website, similar to APL\360 or TK4-,
when I find the time (which isn't exactly probable at the moment).
I don't know who here was so oversensitive so as to have had a problem
with the discussion. It's perfectly relevant to the stated purpose of
this mailing list, if I'm not mistaken. I myself have watched it with
great interest, and have only not become involved because my life is
very busy right now. I'm hoping to fire up this new mini-OS at some
point soon and do some hacking on it. At some point further, I'd even
really like to run it on real iron. I'm sure others have read it with
interest as well. Disinterested parties simply need to learn how to
exercise the "delete" function of their mail software.
Post by Dave McGuire ***@neurotica.com [hercules-390]
Concerning further enhancements: The system is really beautiful, well
structured and easy to expand. Basic DASD support wouldn't be too
difficult to add, while DAT would be quite a task (which I don't think
would be worthwhile). Currently I have no intentions making a "real" OS
out of it, as then the "fun factor" would quickly fade .
Sure, I can see how that would be, but wouldn't it be great to have a
fully "home grown" OS for these machines and their emulators?
-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
------------------------------------
------------------------------------
http://groups.yahoo.com/group/hercules-390
http://www.hercules-390.org
------------------------------------
Yahoo Groups Links
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
Mike Schwab Mike.A.Schwab@gmail.com [hercules-390]
2015-11-30 01:42:05 UTC
Permalink
On Sun, Nov 29, 2015 at 3:51 PM, Dave McGuire ***@neurotica.com
[hercules-390] <hercules-***@yahoogroups.com> wrote:
<deleted>
Post by Dave McGuire ***@neurotica.com [hercules-390]
Sure, I can see how that would be, but wouldn't it be great to have a
fully "home grown" OS for these machines and their emulators?
-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
MTS (Michigan Terminal System?).
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
Dave McGuire Mcguire@neurotica.com [hercules-390]
2015-11-30 03:02:21 UTC
Permalink
Post by Mike Schwab ***@gmail.com [hercules-390]
Post by Dave McGuire ***@neurotica.com [hercules-390]
Sure, I can see how that would be, but wouldn't it be great to have a
fully "home grown" OS for these machines and their emulators?
MTS (Michigan Terminal System?).
Well sure, but I meant home-grown by "us", today. OS development has
come a long way since the MTS days. I just think it'd be a neat thing
to do. As a case in point, several people are having a blast hacking
around with Madnick's original code.

-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
Tony Harminc tharminc@gmail.com [hercules-390]
2015-11-09 16:51:27 UTC
Permalink
Post by ***@yahoo.com [hercules-390]
I got my copy of Madnick's 1973 book last Friday some forty plus years
after its publication from ABEBOOKS.COM. I tried one of the examples
which is form exceptional interrupt handling very similar to Jason Winter's
TCPIP handling instruction in MVS38. However, the program goes down with a
SOC04 when it tries to access PSW.
This is the third time you've posted the same program. How does that help?
Post by ***@yahoo.com [hercules-390]
First I thought the MVC instruction is wrong for MVC is for character move
and not for moving storage data
This is complete and utter nonsense.
Post by ***@yahoo.com [hercules-390]
so I commented it out and used
WTO '**** ABOUT TO EXECUTE OUR MVC PSW'
* MVC PROGNPSW(8),=A(0,PROGINT) SET NEW PSW
L R7,=A(0,PROGINT) SET NEW PSW
ST R7,PROGNPSW SET NEW PSW
You have no idea what you are doing. You cannot learn how something works
by hitting it with a bigger hammer. Yes, I know I've already used this
analogy, but unfortunately it seems to still hold, and your approach has
not changed in over a year.

Why not go to the Principles of Operation and read exactly what the MVC
instruction does. If you don't understand every detail of what the
description says, then you are not ready to use the instruction. Ask about
it here, or on the IBM Assembler list, and you will get help. Then read
about what Load and Store do. Then you may realize that your "fix" does
nothing at all like what the MVC does.
Post by ***@yahoo.com [hercules-390]
*
However, the SOC04 still persists.
OK - first, you have said nothing about where you are trying to run this
program - under an operating system like MVS, or standalone. If the former,
MVS (thankfully) will protect itself against you. If the latter, then the
whole notion of an "SOC4" (even if you correct the spelling) is
meaningless. You may well get a program check 4 in the hardware, but S0C4
is an MVS system abend - a software concept that doesn't exist if you are
just running a tiny standalone program.

Tony H.
laddiehanus@yahoo.com [hercules-390]
2015-10-28 22:24:57 UTC
Permalink
For some reason my reply got stripped off but what I said was:

Using Hercules 3.11 I was able to use SSKE and Test Block. I have been working on the mods to add 64MB real addresssing, Dual Address Space and PC calls. Dont have much time to work on it so I have only tested the Extended Real Addressing. Its in a Standalone program so I can figure out how 3 features work while I also try to figure out where in MVS 3.8 the updates need to go. DAS in itself isnt so clear cut and cant do space switching PC calls with out it. It really looks like its a retirement project and I still have a few years till then .

Laddie Hanus
Peter Coghlan mailinglists@beyondthepale.ie [hercules-390]
2015-10-29 13:10:21 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
I just had a look into the storage protection logic and came to an interesting
finding: The logic as it is implemented in the sample OS originally, works
perfectly fine under Hercules in S/370 mode. After a few tests around
SSK/ISK/SSKE/ISKE I came to the conclusion that Hercules implements the
protection mechanism as it is described in the S/370 PoP for a system
_without_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed. I was a bit
surprised about that, because I up to now thought (but of course don't know
for sure) that real iron back then wasn't even available without that feature,
except for very small configurations.
I have been writing an update to Hercules which touches on storage protection.
My understanding of how storage keys work is strictly theoretical which doesn't
help matters. I took a look at how they are implemented in Hercules but
instead of this improving my understanding of them, it greatly confused me.

Compared to a real machine, Hercules has the added complication that it is
possible to select three different architecture modes at runtime and switching
between two modes can involve switching between 2K and 4K storage keys. It
appears that Hercules also allows the storage key page size associated with a
particular architecure mode to be specified at compile time using #defines in
feat370.h, feat390.h and feat900.h, leading to further complication.

I lost a lot of hair trying to figure out how this all works in Hercules. I
simply could not find a way that it could work consistently. The conclusion I
eventually came to is that over time, some additions and updates were made to
Hercules while failing to fully understand how the original storage key
mechanism worked. This probably resulted in storage key issues with the newly
added code. My suspicion is that when the new code failed to work as designed,
it was tweaked to make it work, even though the tweaks did not seem to make
sense.

I further suspect that if the storage key related #defines in featxxx.h are
changed to result in unusual storage key page sizes for particular architecture
modes, the results might not be consistent and correct without further tweaks
that don't seem to have a logical reason behind them being necessary.

I can only just about get this stuff to fit in my tiny brain so I could be
completely wrong about all this. However, I would suggest not taking it
completely for granted that the storage key mechanism in Hercules works
correctly in all cases.
Post by ***@id.ethz.ch [hercules-390]
So, just out of curiosity, I've the following question: Does anyone know
whether there is a archlvl option in Hercules that would make this facility
available? Or was this not implemented on purpose?
As far as I understand it, it is a compile time option, as described above.

Regards,
Peter Coghlan.
Laddie Hanus laddiehanus@yahoo.com [hercules-390]
2015-10-29 14:56:27 UTC
Permalink
It would be interesting to know if anyone has run MVS/370 SP 1.3.x or some release of VM/HPO. I agree it's confusing which is why I am not making changes into MVS directly until I test it standalone.

Laddie Hanus

Sent from my iPhone
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
I just had a look into the storage protection logic and came to an interesting
finding: The logic as it is implemented in the sample OS originally, works
perfectly fine under Hercules in S/370 mode. After a few tests around
SSK/ISK/SSKE/ISKE I came to the conclusion that Hercules implements the
protection mechanism as it is described in the S/370 PoP for a system
_without_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed. I was a bit
surprised about that, because I up to now thought (but of course don't know
for sure) that real iron back then wasn't even available without that feature,
except for very small configurations.
I have been writing an update to Hercules which touches on storage protection.
My understanding of how storage keys work is strictly theoretical which doesn't
help matters. I took a look at how they are implemented in Hercules but
instead of this improving my understanding of them, it greatly confused me.
Compared to a real machine, Hercules has the added complication that it is
possible to select three different architecture modes at runtime and switching
between two modes can involve switching between 2K and 4K storage keys. It
appears that Hercules also allows the storage key page size associated with a
particular architecure mode to be specified at compile time using #defines in
feat370.h, feat390.h and feat900.h, leading to further complication.
I lost a lot of hair trying to figure out how this all works in Hercules. I
simply could not find a way that it could work consistently. The conclusion I
eventually came to is that over time, some additions and updates were made to
Hercules while failing to fully understand how the original storage key
mechanism worked. This probably resulted in storage key issues with the newly
added code. My suspicion is that when the new code failed to work as designed,
it was tweaked to make it work, even though the tweaks did not seem to make
sense.
I further suspect that if the storage key related #defines in featxxx.h are
changed to result in unusual storage key page sizes for particular architecture
modes, the results might not be consistent and correct without further tweaks
that don't seem to have a logical reason behind them being necessary.
I can only just about get this stuff to fit in my tiny brain so I could be
completely wrong about all this. However, I would suggest not taking it
completely for granted that the storage key mechanism in Hercules works
correctly in all cases.
Post by ***@id.ethz.ch [hercules-390]
So, just out of curiosity, I've the following question: Does anyone know
whether there is a archlvl option in Hercules that would make this facility
available? Or was this not implemented on purpose?
As far as I understand it, it is a compile time option, as described above.
Regards,
Peter Coghlan.
laddiehanus@yahoo.com [hercules-390]
2015-10-29 15:18:56 UTC
Permalink
This is being way overthought

In a hyperion source tree from early this year (its also in 3.11 but I dont have that source tree right now.

FeatS370.h

#define FEATURE_2K_STORAGE_KEYS
#define FEATURE_BASIC_STORAGE_KEYS
#define FEATURE_EXTENDED_STORAGE_KEYS

in control.c

#if defined(FEATURE_EXTENDED_STORAGE_KEYS)
/*-------------------------------------------------------------------*/
/* B22B SSKE - Set Storage Key extended [RRF] */
/*-------------------------------------------------------------------*/
DEF_INST(set_storage_key_extended)

#if defined(FEATURE_EXTENDED_STORAGE_KEYS)
/*-------------------------------------------------------------------*/
/* B229 ISKE - Insert Storage Key Extended [RRE] */
/*-------------------------------------------------------------------*/
DEF_INST(insert_storage_key_extended)

These instructions along with test block have been working for me since 2008 when I started trying to figure out extended real addresssing. You dont need to add the XA feature.

I did not have to recompile hercules for it..

Laddie Hanus
opplr@hotmail.com [hercules-390]
2015-10-31 13:24:01 UTC
Permalink
Laddie wrote:

"It would be interesting to know if anyone has run MVS/370 SP 1.3.x or some release of VM/HPO. I agree it's confusing which is why I am not making changes into MVS directly until I test it standalone."

MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction is not implemented in Hercules.

3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.

For someone with the time and inclination to check, perhaps the Madnick OS would be a good test vehicle to run on a P/390 or 370/XT to determine whether the results are similar to results run under Hercules.

Then again, I may be misunderstanding the 2K/4K issues being discussed.

Phil - back to being a caregiver
'Dave G4UGM' dave.g4ugm@gmail.com [hercules-390]
2015-10-31 13:49:47 UTC
Permalink
If only I had one of those to test on
.


 but my copy of the book has arrived, perhaps take it away for some holiday reading
.



Dave



From: hercules-***@yahoogroups.com [mailto:hercules-***@yahoogroups.com]
Sent: 31 October 2015 13:24
To: hercules-***@yahoogroups.com
Subject: [hercules-390] Re: Sample OS - Madnick





Laddie wrote:

"It would be interesting to know if anyone has run MVS/370 SP 1.3.x or some release of VM/HPO. I agree it's confusing which is why I am not making changes into MVS directly until I test it standalone."

MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction is not implemented in Hercules.

3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.

For someone with the time and inclination to check, perhaps the Madnick OS would be a good test vehicle to run on a P/390 or 370/XT to determine whether the results are similar to results run under Hercules.

Then again, I may be misunderstanding the 2K/4K issues being discussed.

Phil - back to being a caregiver
Harold Grovesteen h.grovsteen@tx.rr.com [hercules-390]
2015-10-31 15:21:07 UTC
Permalink
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
______________________________________________________________________
______________________________________________________________________
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?

Lack of documentation may have contributed to its not being implemented.

Harold Grovesteen
Ivan Warren ivan@vmfacility.fr [hercules-390]
2015-10-31 15:23:40 UTC
Permalink
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
I guess this is part of ECPS:MVS... (This looks too close to ECPS:VM
E4xx instructions to be a coincidence)...

I know... I did the (poorly implemented) part of ECPS:VM (VM and CP
assists).

--Ivan



[Non-text portions of this message have been removed]
Ivan Warren ivan@vmfacility.fr [hercules-390]
2015-10-31 18:02:27 UTC
Permalink
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
I guess this is part of ECPS:MVS... (This looks too close to ECPS:VM
E4xx instructions to be a coincidence)...
I know... I did the (poorly implemented) part of ECPS:VM (VM and CP
assists).
--Ivan
And when I mean that I did it, I mean on hercules - on IBM built
systems, I think Lynn Wheeler is mostly responsible ;)

--Ivan



[Non-text portions of this message have been removed]
'John P. Hartmann' jphartmann@gmail.com [hercules-390]
2015-10-31 18:17:34 UTC
Permalink
With respect. No, Ivan.

ECPS:VM was an Endicott effort tied to the E series (4300).

Lynn did the scheduler enhancements which was originally a PRPQ.
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
I guess this is part of ECPS:MVS... (This looks too close to ECPS:VM
E4xx instructions to be a coincidence)...
I know... I did the (poorly implemented) part of ECPS:VM (VM and CP
assists).
--Ivan
And when I mean that I did it, I mean on hercules - on IBM built
systems, I think Lynn Wheeler is mostly responsible ;)
--Ivan
[Non-text portions of this message have been removed]
------------------------------------

------------------------------------

Community email addresses:
Post message: hercules-***@yahoogroups.com
Subscribe: hercules-390-***@yahoogroups.com
Unsubscribe: hercules-390-***@yahoogroups.com
List owner: hercules-390-***@yahoogroups.com

Files and archives at:
http://groups.yahoo.com/group/hercules-390

Get the latest version of Hercules from:
http://www.hercules-390.org


------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/hercules-390/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:
http://groups.yahoo.com/group/hercules-390/join
(Yahoo! ID required)

<*> To change settings via email:
hercules-390-***@yahoogroups.com
hercules-390-***@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
hercules-390-***@yahoogroups.com

<*> Your use of Yahoo Groups is subject to:
https://info.yahoo.com/legal/us/yahoo/utos/terms/
Ivan Warren ivan@vmfacility.fr [hercules-390]
2015-10-31 18:51:41 UTC
Permalink
Post by 'John P. Hartmann' ***@gmail.com [hercules-390]
With respect. No, Ivan.
ECPS:VM was an Endicott effort tied to the E series (4300).
Lynn did the scheduler enhancements which was originally a PRPQ.
Well the DMKDSPCH enhancement was a great deal ;

--Ivan



[Non-text portions of this message have been removed]
Maarten Hoes hoes.maarten@gmail.com [hercules-390]
2015-10-31 15:34:29 UTC
Permalink
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)

http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist

Gives me the impression that it is indeed part of a set of instructions.

I didnt get any hits that even remotely resemble anything like
documentation though, but that may just be my personal lack of good
google-fu


- Maarten
Maarten Hoes hoes.maarten@gmail.com [hercules-390]
2015-10-31 15:40:36 UTC
Permalink
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like
documentation though, but that may just be my personal lack of good
google-fu
Post by Maarten Hoes ***@gmail.com [hercules-390]
- Maarten
Oh, and then there's this:
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66


- Maarten
Maarten Hoes hoes.maarten@gmail.com [hercules-390]
2015-10-31 15:47:44 UTC
Permalink
Post by Maarten Hoes ***@gmail.com [hercules-390]
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is
set
Post by Maarten Hoes ***@gmail.com [hercules-390]
Post by Maarten Hoes ***@gmail.com [hercules-390]
Post by ***@hotmail.com [hercules-390]
to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE
instruction)?
Post by Maarten Hoes ***@gmail.com [hercules-390]
Post by Maarten Hoes ***@gmail.com [hercules-390]
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like
documentation though, but that may just be my personal lack of good
google-fu
Post by Maarten Hoes ***@gmail.com [hercules-390]
Post by Maarten Hoes ***@gmail.com [hercules-390]
- Maarten
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66
Post by Maarten Hoes ***@gmail.com [hercules-390]
- Maarten
And this, which is starting to look like 'documentation':

http://www.textfiles.com/bitsavers/pdf/ibm/370/MVS/GA22-7072-0_IBM_System_370_Extended_Facility_Jan78.pdf
'Dave Wade' dave.g4ugm@gmail.com [hercules-390]
2015-10-31 16:08:57 UTC
Permalink
Well you learn something new every day. I didn’t realize that MVS/SP would not run without the ECPS:MVS assists but looking at this:-

http://vm.marist.edu/~vmshare/browse?fn=MVS$4341 <http://vm.marist.edu/~vmshare/browse?fn=MVS$4341&ft=MEMO&args=ecps+mvs#hit> &ft=MEMO&args=ecps+mvs#hit

it appears it is true, but there is a note in there that a simulator was on the share tapes. There is some documentation on the instruction here

http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS/GA22-7079-1_IBM_System_370_Assists_for_MVS_Oct81.pdf

but I don’t know enough about MVS to even understand why it would be needed.

Dave
G4UGM

From: hercules-***@yahoogroups.com [mailto:hercules-***@yahoogroups.com]
Sent: 31 October 2015 15:41
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-390] Re: Sample OS - Madnick
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like documentation though, but that may just be my personal lack of good google-fu
- Maarten
Oh, and then there's this: http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66


- Maarten
'John P. Hartmann' jphartmann@gmail.com [hercules-390]
2015-10-31 16:10:56 UTC
Permalink
Unlike VM, MVS (deliberately) did not have a fallback when the assist
was not installed. Of course, it did not take Amdahl long to implement
it in macrocode. You get the drift?
Post by 'Dave Wade' ***@gmail.com [hercules-390]
Well you learn something new every day. I didn’t realize that MVS/SP
would not run without the ECPS:MVS assists but looking at this:-
http://vm.marist.edu/~vmshare/browse?fn=MVS$4341&ft=MEMO&args=ecps+mvs#hit
it appears it is true, but there is a note in there that a simulator was
on the share tapes. There is some documentation on the instruction here
http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS/GA22-7079-1_IBM_System_370_Assists_for_MVS_Oct81.pdf
but I don’t know enough about MVS to even understand why it would be needed.
Dave
G4UGM
*Sent:* 31 October 2015 15:41
*Subject:* Re: [hercules-390] Re: Sample OS - Madnick
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like documentation though, but that may just be my personal lack of good google-fu
- Maarten
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66
- Maarten
Laddie Hanus laddiehanus@yahoo.com [hercules-390]
2015-10-31 16:29:30 UTC
Permalink
Well I have my answer. I will assume that 64MB real, Dual Address Space, and PC calls have not been thoroughly tested by an IBM OS that used those features. I am ok with that. Since the assists were used primarily for performance and I am writing code to the latest S/370 POO. I would not

Sent from my iPhone
Post by 'John P. Hartmann' ***@gmail.com [hercules-390]
Unlike VM, MVS (deliberately) did not have a fallback when the assist
was not installed. Of course, it did not take Amdahl long to implement
it in macrocode. You get the drift?
Post by 'Dave Wade' ***@gmail.com [hercules-390]
Well you learn something new every day. I didn’t realize that MVS/SP
would not run without the ECPS:MVS assists but looking at this:-
http://vm.marist.edu/~vmshare/browse?fn=MVS$4341&ft=MEMO&args=ecps+mvs#hit
it appears it is true, but there is a note in there that a simulator was
on the share tapes. There is some documentation on the instruction here
http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS/GA22-7079-1_IBM_System_370_Assists_for_MVS_Oct81.pdf
but I don’t know enough about MVS to even understand why it would be needed.
Dave
G4UGM
*Sent:* 31 October 2015 15:41
*Subject:* Re: [hercules-390] Re: Sample OS - Madnick
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like documentation though, but that may just be my personal lack of good google-fu
- Maarten
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66
- Maarten
Laddie Hanus laddiehanus@yahoo.com [hercules-390]
2015-10-31 16:32:31 UTC
Permalink
Sorry touched the wrong spot on the phone. Finished the sentence I was writing.

Sent from my iPhone
Well I have my answer. I will assume that 64MB real, Dual Address Space, and PC calls have not been thoroughly tested by an IBM OS that used those features. I am ok with that. Since the assists were used primarily for performance and I am writing code to the latest S/370 POO. I would not use the assists anyway
Laddie hanus
Sent from my iPhone
Post by 'John P. Hartmann' ***@gmail.com [hercules-390]
Unlike VM, MVS (deliberately) did not have a fallback when the assist
was not installed. Of course, it did not take Amdahl long to implement
it in macrocode. You get the drift?
Post by 'Dave Wade' ***@gmail.com [hercules-390]
Well you learn something new every day. I didn’t realize that MVS/SP
would not run without the ECPS:MVS assists but looking at this:-
http://vm.marist.edu/~vmshare/browse?fn=MVS$4341&ft=MEMO&args=ecps+mvs#hit
it appears it is true, but there is a note in there that a simulator was
on the share tapes. There is some documentation on the instruction here
http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS/GA22-7079-1_IBM_System_370_Assists_for_MVS_Oct81.pdf
but I don’t know enough about MVS to even understand why it would be needed.
Dave
G4UGM
*Sent:* 31 October 2015 15:41
*Subject:* Re: [hercules-390] Re: Sample OS - Madnick
Post by Maarten Hoes ***@gmail.com [hercules-390]
Hi,
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE (IIRC) instruction
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control Register 0 bit 7 is set to 1.
Does anyone have documentation on the FIX PAGE instruction? Is this
just one of a set of instructions (for example a FREE PAGE instruction)?
Lack of documentation may have contributed to its not being implemented.
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set of instructions.
I didnt get any hits that even remotely resemble anything like documentation though, but that may just be my personal lack of good google-fu
- Maarten
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66
- Maarten
'Shelby Beach' shelby.beach@comcast.net [hercules-390]
2015-10-31 19:24:48 UTC
Permalink
Regarding the Dual Address Space Facility, that's probably the case which is
why I would guess that Greg Price implemented it with his ZP600023 usermod.

Shelby



________________________________

From: hercules-***@yahoogroups.com
[mailto:hercules-***@yahoogroups.com]
Sent: Saturday, October 31, 2015 9:30 AM
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-390] Re: Sample OS - Madnick




Well I have my answer. I will assume that 64MB real, Dual
Address Space, and PC calls have not been thoroughly tested by an IBM OS
that used those features. I am ok with that. Since the assists were used
primarily for performance and I am writing code to the latest S/370 POO. I
would not

Sent from my iPhone

On Oct 31, 2015, at 10:10 AM, "'John P. Hartmann'
***@gmail.com [hercules-390]" <hercules-***@yahoogroups.com> wrote:





Unlike VM, MVS (deliberately) did not have a fallback when
the assist
was not installed. Of course, it did not take Amdahl long to
implement
it in macrocode. You get the drift?

On 10/31/2015 05:08 PM, 'Dave Wade' ***@gmail.com
[hercules-390]
Well you learn something new every day. I didn't realize
that MVS/SP
would not run without the ECPS:MVS assists but looking at
this:-
http://vm.marist.edu/~vmshare/browse?fn=MVS$4341&ft=MEMO&args=ecps+mvs#hit
it appears it is true, but there is a note in there that a
simulator was
on the share tapes. There is some documentation on the
instruction here
http://bitsavers.trailing-edge.com/pdf/ibm/370/MVS/GA22-7079-1_IBM_System_37
0_Assists_for_MVS_Oct81.pdf
but I don't know enough about MVS to even understand why
it would be needed.
Dave
G4UGM
*Sent:* 31 October 2015 15:41
*Subject:* Re: [hercules-390] Re: Sample OS - Madnick
On Sat, Oct 31, 2015 at 4:34 PM, Maarten Hoes
Hi,
On Sat, Oct 31, 2015 at 4:21 PM, Harold
***@tx.rr.com <mailto:***@tx.rr.com>
[hercules-390]
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@hotmail.com [hercules-390]
MVS/SP does not IPL under Hercules as E502 FIX PAGE
(IIRC) instruction
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@hotmail.com [hercules-390]
is not implemented in Hercules.
3.8j runs on a P/390 in 370 mode when Control
Register 0 bit 7 is set
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by ***@hotmail.com [hercules-390]
to 1.
Does anyone have documentation on the FIX PAGE
instruction? Is this
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
just one of a set of instructions (for example a FREE
PAGE instruction)?
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Lack of documentation may have contributed to its not
being implemented.
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Harold Grovesteen
Not that I would know, but I can google ;)
http://www.cbttape.org/~jjaeger/opcodes.html#MVSassist
Gives me the impression that it is indeed part of a set
of instructions.
I didnt get any hits that even remotely resemble anything
like documentation though, but that may just be my personal lack of good
google-fu
- Maarten
http://sourceforge.net/p/hercules-390/git/ci/master/tree/assist.c#l66
- Maarten
Harold Grovesteen h.grovsteen@tx.rr.com [hercules-390]
2015-10-29 16:28:09 UTC
Permalink
On Thu, 2015-10-29 at 13:10 +0000, Peter Coghlan
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
I just had a look into the storage protection logic and came to an interesting
finding: The logic as it is implemented in the sample OS originally, works
perfectly fine under Hercules in S/370 mode. After a few tests around
SSK/ISK/SSKE/ISKE I came to the conclusion that Hercules implements the
protection mechanism as it is described in the S/370 PoP for a system
_without_ the STORAGE-KEY 4K-BYTE-BLOCK FACILITY installed. I was a bit
surprised about that, because I up to now thought (but of course don't know
for sure) that real iron back then wasn't even available without that feature,
except for very small configurations.
I have been writing an update to Hercules which touches on storage protection.
My understanding of how storage keys work is strictly theoretical which doesn't
help matters. I took a look at how they are implemented in Hercules but
instead of this improving my understanding of them, it greatly confused me.
Compared to a real machine, Hercules has the added complication that it is
possible to select three different architecture modes at runtime and switching
between two modes can involve switching between 2K and 4K storage keys. It
appears that Hercules also allows the storage key page size associated with a
particular architecure mode to be specified at compile time using #defines in
feat370.h, feat390.h and feat900.h, leading to further complication.
I lost a lot of hair trying to figure out how this all works in Hercules. I
simply could not find a way that it could work consistently. The conclusion I
eventually came to is that over time, some additions and updates were made to
Hercules while failing to fully understand how the original storage key
mechanism worked. This probably resulted in storage key issues with the newly
added code. My suspicion is that when the new code failed to work as designed,
it was tweaked to make it work, even though the tweaks did not seem to make
sense.
I further suspect that if the storage key related #defines in featxxx.h are
changed to result in unusual storage key page sizes for particular architecture
modes, the results might not be consistent and correct without further tweaks
that don't seem to have a logical reason behind them being necessary.
For those working with guest programs, I would not recommend changing
these features and rebuilding Hercules. Peter and I have had a number
of email exchanges on this topic, and I would agree. Don't mess with
them. There could be surprises.

Unfortunately, because Peter has been making changes to Hercules. He
can not avoid some of the quirks seen in the code.
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
I can only just about get this stuff to fit in my tiny brain so I could be
completely wrong about all this. However, I would suggest not taking it
completely for granted that the storage key mechanism in Hercules works
correctly in all cases.
Post by ***@id.ethz.ch [hercules-390]
So, just out of curiosity, I've the following question: Does anyone know
whether there is a archlvl option in Hercules that would make this facility
available? Or was this not implemented on purpose?
As far as I understand it, it is a compile time option, as described above.
Regards,
Peter Coghlan.
Harold Grovesteen
winkelmann@id.ethz.ch [hercules-390]
2015-10-29 18:32:28 UTC
Permalink
Post by Harold Grovesteen ***@tx.rr.com [hercules-390]
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules that would make this facility available?
Or was this not implemented on purpose?
probably it was implemented on purpose
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
I further suspect that if the storage key related #defines in featxxx.h are
changed to result in unusual storage key page sizes for particular architecture
modes, the results might not be consistent and correct without further tweaks
that don't seem to have a logical reason behind them being necessary.
For those working with guest programs, I would not recommend changing
these features and rebuilding Hercules. Peter and I have had a number
of email exchanges on this topic, and I would agree. Don't mess with
them. There could be surprises.
Hi Harold


Basically I agree that one should avoid changing too many feature definitions in the source, as the history behind those #define statements isn't always apparent and as such those modifications are always good for surprises. For that reason I originally asked whether there is an option (for example for the archlvl command) for that particular feature I wanted to activate. I always prefer a command (if there is one!) instead of changing the source. However, after Enrico pointed me to the #define defining the S/370 storage protection behavior it became immediately clear to me, why this had not been implemented as a command... .


Nonetheless, the change from double key 4K blocks to single key 4K blocks (which basically is the function implemented by the original S/370 STORAGE-KEY 4K-BYTE-BLOCK FACILITY) is relatively easy to understand and as such not dangerous from my point of view.


And sometimes, changing such a trivial part of the code, even brings bugs to light that probably lived in the dark since the original implementation of the double key/single key variety of storage protection schemes for S/370 mode in Hercules. I wouldn't mind bothering the list with this if the bug that came to light would affect the 4K single key block situation only, as this feature most probably was never user by anyone up to now. However, I'm relatively sure that this bug could also affect the default double key block situation and thus has the potential to produce some weird behavior:


There are some 30 locations in control.c where "#if defined" directives are used to compile either the 2K or the 4K variant of the code. Sadly, in four of these locations the logic is bad, using "#if defined" instead of "#if !defined". With the 2K (double key) scheme active this passes the compiler without throwing an error. Nonetheless I think it could lead to invalid results of ssk/isk/rrb at runtime (However, due to lack of time, I didn't analyze this further). Once one selects the 4K (single key) scheme (#define FEATURE_4K_STORAGE_KEYS as per Enrico's hint), those four statements make the compiler throw an error due to missing definitions. Looking at it one immediately sees that the logic is erroneously swapped and it's no problem to fix it.


I looked into the current Spinhawk and into the current Hyperion source. Both have this bug, as well as my old TK4- "branch" in which I detected it. The patch for the TK4- version of control,c is here:


https://polybox.ethz.ch/public.php?service=files&t=568917169a482f0a65893d99d6ffc985 https://polybox.ethz.ch/public.php?service=files&t=568917169a482f0a65893d99d6ffc985


This one should be easily adaptable to Spinhawk and Hyperion. I recommend to apply it to both repositories on occasion, but it's for sure not an urgent thing, given that in so many years nobody stumbled across it.


Cheers
JÃŒrgen
'John P. Hartmann' jphartmann@gmail.com [hercules-390]
2015-10-29 18:39:42 UTC
Permalink
Ivan pointed out to me a while ago that even with 4K keys the key array
has 2K entries. If my ailing memory serves.

Anyhow, as the 4K keys got around and were not supported by VM, I filled
up a warehouse with the remaining 2k key machines. Eventually HPO2 came
around and nobody threw egg in my face.
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@alice.it [hercules-390]
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Does anyone know whether there is a archlvl option in Hercules
that would make this facility available?
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Post by ***@alice.it [hercules-390]
Post by ***@alice.it [hercules-390]
Post by ***@id.ethz.ch [hercules-390]
Or was this not implemented on purpose?
probably it was implemented on purpose
if You look at feat370.h You will see
#define FEATURE_2K_STORAGE_KEYS
You might try changing it to
#define FEATURE_4K_STORAGE_KEYS
rebuild hercules and see what happens
I further suspect that if the storage key related #defines in
featxxx.h are
Post by ***@id.ethz.ch [hercules-390]
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
changed to result in unusual storage key page sizes for particular
architecture
Post by ***@id.ethz.ch [hercules-390]
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
modes, the results might not be consistent and correct without
further tweaks
Post by ***@id.ethz.ch [hercules-390]
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
that don't seem to have a logical reason behind them being necessary.
For those working with guest programs, I would not recommend changing
these features and rebuilding Hercules. Peter and I have had a number
of email exchanges on this topic, and I would agree. Don't mess with
them. There could be surprises.
Hi Harold
Basically I agree that one should avoid changing too many feature
definitions in the source, as the history behind those #define
statements isn't always apparent and as such those modifications are
always good for surprises. For that reason I originally asked whether
there is an option (for example for the archlvl command) for that
particular feature I wanted to activate. I always prefer a command (if
there is one!) instead of changing the source. However, after Enrico
pointed me to the #define defining the S/370 storage protection behavior
it became immediately clear to me, why this had not been implemented
as a command... .
Nonetheless, the change from double key 4K blocks to single key
4K blocks (which basically is the function implemented by the original
S/370 STORAGE-KEY 4K-BYTE-BLOCK FACILITY) is relatively easy to
understand and as such not dangerous from my point of view.
And sometimes, changing such a trivial part of the code, even brings
bugs to light that probably lived in the dark since the original
implementation of the double key/single key variety of storage
protection schemes for S/370 mode in Hercules. I wouldn't mind bothering
the list with this if the bug that came to light would affect the 4K
single key block situation only, as this feature most probably was never
user by anyone up to now. However, I'm relatively sure that this bug
could also affect the default double key block situation and thus has
There are some 30 locations in control.c where "#if defined" directives
are used to compile either the 2K or the 4K variant of the code. Sadly,
in four of these locations the logic is bad, using "#if defined" instead
of "#if !defined". With the 2K (double key) scheme active this passes
the compiler without throwing an error. Nonetheless I think it could
lead to invalid results of ssk/isk/rrb at runtime (However, due to lack
of time, I didn't analyze this further). Once one selects the 4K (single
key) scheme (#define FEATURE_4K_STORAGE_KEYS as per Enrico's hint),
those four statements make the compiler throw an error due to missing
definitions. Looking at it one immediately sees that the logic is
erroneously swapped and it's no problem to fix it.
I looked into the current Spinhawk and into the current Hyperion source.
Both have this bug, as well as my old TK4- "branch" in which I detected
https://polybox.ethz.ch/public.php?service=files&t=568917169a482f0a65893d99d6ffc985
This one should be easily adaptable to Spinhawk and Hyperion. I
recommend to apply it to both repositories on occasion, but it's for
sure not an urgent thing, given that in so many years nobody stumbled
across it.
Cheers
JÃŒrgen
Dave McGuire Mcguire@neurotica.com [hercules-390]
2015-10-29 19:02:28 UTC
Permalink
Post by 'John P. Hartmann' ***@gmail.com [hercules-390]
Anyhow, as the 4K keys got around and were not supported by VM, I filled
up a warehouse with the remaining 2k key machines.
Is there any chance that warehouse is still full? B-)

-Dave
--
Dave McGuire, AK4HZ
New Kensington, PA
Peter Coghlan mailinglists@beyondthepale.ie [hercules-390]
2015-10-29 21:23:43 UTC
Permalink
Post by ***@id.ethz.ch [hercules-390]
Basically I agree that one should avoid changing too many feature
definitions in the source, as the history behind those #define statements
isn't always apparent and as such those modifications are always good for
surprises. For that reason I originally asked whether there is an option
(for example for the archlvl command) for that particular feature I wanted
to activate. I always prefer a command (if there is one!) instead of
changing the source. However, after Enrico pointed me to the #define
defining the S/370 storage protection behavior it became immediately clear
to me, why this had not been implemented as a command... .
Nonetheless, the change from double key 4K blocks to single key 4K blocks
(which basically is the function implemented by the original S/370
STORAGE-KEY 4K-BYTE-BLOCK FACILITY) is relatively easy to understand and as
such not dangerous from my point of view.
And sometimes, changing such a trivial part of the code, even brings bugs to
light that probably lived in the dark since the original implementation of
the double key/single key variety of storage protection schemes for S/370
mode in Hercules. I wouldn't mind bothering the list with this if the bug
that came to light would affect the 4K single key block situation only, as
this feature most probably was never user by anyone up to now. However, I'm
relatively sure that this bug could also affect the default double key block
Please forgive me - I am feeling a bit slow today and it is not very clear to
me what you are saying here.

Are you saying that following Enrico's suggestion of defining
FEATURE_4K_STORAGE_KEYS instead of FEATURE_2K_STORAGE_KEYS in feat370.h caused
you to hit some compiler errors and you fixed them in passing?

(As you say, this stuff may look relatively easy to understand and as such not
dangerous but please beware that the more you try to figure out exactly what
it does and how it does it, the more you figure out that it seems to be doing
something quite different by a different path which may perversely and
coincidentally arrive at the desired result almost always, or maybe not.)
Post by ***@id.ethz.ch [hercules-390]
There are some 30 locations in control.c where "#if defined" directives are
used to compile either the 2K or the 4K variant of the code. Sadly, in four
of these locations the logic is bad, using "#if defined" instead of
"#if !defined". With the 2K (double key) scheme active this passes the
compiler without throwing an error. Nonetheless I think it could lead to
invalid results of ssk/isk/rrb at runtime (However, due to lack of time, I
didn't analyze this further). Once one selects the 4K (single key) scheme
(#define FEATURE_4K_STORAGE_KEYS as per Enrico's hint), those four
statements make the compiler throw an error due to missing definitions.
Looking at it one immediately sees that the logic is erroneously swapped
and it's no problem to fix it.
I'm not sure that this addresses all of the issues I came across when I looked
at this a few months ago.
Post by ***@id.ethz.ch [hercules-390]
I looked into the current Spinhawk and into the current Hyperion source.
Both have this bug, as well as my old TK4- "branch" in which I detected it.
https://polybox.ethz.ch/public.php?service=files&t=568917169a482f0a65893d99d6ffc985 https://polybox.ethz.ch/public.php?service=files&t=568917169a482f0a65893d99d6ffc985
This one should be easily adaptable to Spinhawk and Hyperion. I recommend to apply it to both repositories on occasion, but it's for sure not an urgent thing, given that in so many years nobody stumbled across it.
(I wonder does everything still work correctly with when compiling Hercules
without changing feat370.h but with the patch applied to control.c?)

I downloaded your patch. I notice that all the changes relate to
_FEATURE_2K_STORAGE_KEYS (with the leading underscore).

One of the issues I uncovered in my examination of the code was that there
may be some confusion as to the purpose of _FEATURE_2K_STORAGE_KEYS as
opposed to FEATURE_2K_STORAGE_KEYS (without the leading underscore).

As far as I understand it, originally, Hercules would allocate an array of
sufficient size to hold the required number of 2K storage keys for the main
storage size in use unless 2K storage keys were not to be used in any
architecture mode. If the latter was the case, only 4K storage keys would
ever be used and a storage key array of half the size would suffice and this
is what would be allocated. I believe the only purpose of
_FEATURE_2K_STORAGE_KEYS was to keep track of whether this optimisation had
been made [1]. If it has, then any architecture mode which has been compiled
for 4K storage keys needs to read or update two storage keys for each page
instead of one [2].

I think production Hercules still uses this scheme but Hyperion has diverged
somewhat and I think Hyperion always allocates a storage key array large enough
for 2K storage keys, even if none of the architecture modes is compiled for 2K
storage keys. I am not 100% sure but I suspect _FEATURE_2K_STORAGE_KEYS is
redundant in Hyperion and should either be always defined in Hyperion or the
code should be reworked to remove it entirely (unless it turns out to have been
pressed into service for something else that might not have been intended...)

I was going to try and hunt down some of the other discrepencies I found but I
think I've rambled on enough for now. The real point of my earlier posting was
just to say that if you come across storage key issues in an operating system
which is relatively new to Hercules, please do not automatically assume that
Hercules is doing the right thing and the operating system is doing the wrong
thing. It could be that a really obscure storage key issue in Hercules has
surfaced instead.

Regards,
Peter Coghlan.

[1] Even still, I don't think the original implementation would have worked
completely correctly for really perverse setups such as compiling Hercules
with 4K storage keys in 370 and 390 mode and 2K storage keys in z/Arch mode.
However, the issue that arises might never be a problem, for example, failing
to correctly preserve storage keys previously set when changing from 390 mode
to z/Arch mode...

[2] In the write case, there is no problem - store the same value twice. I
don't like to think about what should happen in the read case where the two
keys read turn out to be different somehow...
Martin@pi-sysprog.de [hercules-390]
2015-10-30 07:44:19 UTC
Permalink
Peter,
I don't like to think about what should happen in the read case where the
two keys read turn out to be different somehow...

I can tell what happens when HW maintains keys for 2k pages and
software expects it to be for 4 ....

no failure (as far as i can tell from the sysprog perspective) ----
but in some rare cases a COBOL-program would have
address-constants, that were relocated twice (=the difference to
the addresses at LNKEDT time was added twice)

And the underlying reason: the flag for doing the relocation was a
single byte in a pretty big unmodified area (hence it was sometimes on
the upper part of 4096 bytes (unnoticed by software)).
--
Martin

Pi_cap_CPU - all you ever need around MWLC/SCRT/CMT in z/VSE
more at http://www.picapcpu.de
Gerhard Postpischil gerhardp@charter.net [hercules-390]
2015-10-30 15:05:17 UTC
Permalink
Post by ***@pi-sysprog.de [hercules-390]
Peter,
I can tell what happens when HW maintains keys for 2k pages and
software expects it to be for 4 ....
no failure (as far as i can tell from the sysprog perspective) ----
but in some rare cases a COBOL-program would have
address-constants, that were relocated twice (=the difference to
the addresses at LNKEDT time was added twice)
This was also a problem with real hardware. In the eighties we got two
4341s, and all my attempts at a TSO logon failed with 0C4. Apparently
this didn't occur at IBM because we had SMF exits and other stuff. We
ran Wylbur, so this wasn't a high priority. But when I started digging,
I found that an MVCK instruction failed (in IBM code). The error was
repeatable, and occurred when one operand crossed a 2K boundary that
wasn't a 4K boundary. IBM came back a couple of weeks later with a new
microcode floppy, loaded it, and my TSO logon failed with an 0C4. The
same MVCK instruction had both operands crossing a 2K boundary not on a
4K bound. They finally fixed it. Some time later we upgraded to 4381s,
and I ran my MVCK test job - it failed again. I've had a vanity license
plate reading MVCK for the last thirty years, in two states.

I also looked at the Madnick OS. I added a bootstrap loader, and an
entry point on the END card (I have a disk resident IPL program that
reads object decks from a data set). In preparation for later and
greater things <g> I changed the code to determine the memory size,
allowing for larger partitions.

LA 3,8 SET ZERO KEY AND FETCH PROTECT
SR R10,R10 TEST ADDRESS GP15285
LA R11,2048 TEST INCREMENT GP15285
L R12,=A(1024*1024*16) MAXIMUM FOR AM24 GP15285
LA R0,IPLSTOND INTERCEPT FOR STORAGE END GP15285
ST R0,PGMNEW+4 SET STORAGE ACCESS FAIL GP15285
IPLSTLUP CLI R10,C' ' DOES STORAGE EXIST? GP15285
*TEST SSK R3,R10 SET THE STORAGE KEY GP15285
BXLE R10,R11,IPLSTLUP TEST ALL GP15285
B IPLSTSET SET STORAGE AVAILABLE GP15285
IPLSTOND SR R10,R11 BACK UP TO LAST VALID SIZE GP15285
IPLSTSET ST R10,CORESIZ SAVE SIZE OF STORAGE GP15285
LA R0,PGMHANDL RESTORE PROGRAM CHECK RTNE GP15285
ST R0,PGMNEW+4 SET STORAGE ACCESS FAIL GP15285
SLR R9,R9 ZERO GP15285
S R10,=A(VERYEND-PROGRAM) GET FREE SIZE GP15285
STM R9,R10,VERYEND INITIALIZE MEMORY CHAIN GP15285
*OLD* MVC VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE
*OLD* LA 3,8 SET ZERO KEY AND FETCH PROTECT
*OLD* L 2,CORESIZ START PAST THE LAST BLOCK
*PLCL S 2,=F'2048' GO TO THE PREVIOUS BLOCK
*OLD* BM IPLTH IF NEGATIVE, WE'RE THROUGH HERE
* SSK 3,2 ELSE SET THE STORAGE KEY TO

I didn't want to mess with the SSK, as I haven't had time to do any testing.

Gerhard Postpischil
Bradford, VT


------------------------------------

------------------------------------

Community email addresses:
Post message: hercules-***@yahoogroups.com
Subscribe: hercules-390-***@yahoogroups.com
Unsubscribe: hercules-390-***@yahoogroups.com
List owner: hercules-390-***@yahoogroups.com

Files and archives at:
http://groups.yahoo.com/group/hercules-390

Get the latest version of Hercules from:
http://www.hercules-390.org


------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/hercules-390/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:
http://groups.yahoo.com/group/hercules-390/join
(Yahoo! ID required)

<*> To change settings via email:
hercules-390-***@yahoogroups.com
hercules-390-***@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
hercules-390-***@yahoogroups.com

<*> Your use of Yahoo Groups is subject to:
https://info.yahoo.com/legal/us/yahoo/utos/terms/
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-10-31 01:29:28 UTC
Permalink
On 10/30/15, Gerhard Postpischil ***@charter.net [hercules-390]
<hercules-***@yahoogroups.com> wrote:

Is MVCK a machine instruction ? ... MACRO ?

I don't see it in POP or the reference card.
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I found that an MVCK instruction failed (in IBM code). The error was
repeatable, and occurred when one operand crossed a 2K boundary that
wasn't a 4K boundary. IBM came back a couple of weeks later with a new
microcode floppy, loaded it, and my TSO logon failed with an 0C4. The
same MVCK instruction had both operands crossing a 2K boundary not on a
4K bound. They finally fixed it. Some time later we upgraded to 4381s,
and I ran my MVCK test job - it failed again. I've had a vanity license
plate reading MVCK for the last thirty years, in two states.
'Shelby Beach' shelby.beach@comcast.net [hercules-390]
2015-10-31 01:34:10 UTC
Permalink
That's strange... I've found it in both ESA/390 and z/Architecture POP
manuals.

Shelby



________________________________

From: hercules-***@yahoogroups.com
[mailto:hercules-***@yahoogroups.com]
Sent: Friday, October 30, 2015 6:29 PM
To: hercules-***@yahoogroups.com
Subject: Re: [hercules-390] Re: Sample OS - Madnick (Hercules Error
Report)




On 10/30/15, Gerhard Postpischil ***@charter.net [hercules-390]
<hercules-***@yahoogroups.com> wrote:

Is MVCK a machine instruction ? ... MACRO ?

I don't see it in POP or the reference card.
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I found that an MVCK instruction failed (in IBM code). The error was
repeatable, and occurred when one operand crossed a 2K boundary that
wasn't a 4K boundary. IBM came back a couple of weeks later with a new
microcode floppy, loaded it, and my TSO logon failed with an 0C4. The
same MVCK instruction had both operands crossing a 2K boundary not on a
4K bound. They finally fixed it. Some time later we upgraded to 4381s,
and I ran my MVCK test job - it failed again. I've had a vanity license
plate reading MVCK for the last thirty years, in two states.
Mike Stramba mikestramba@gmail.com [hercules-390]
2015-10-31 02:06:21 UTC
Permalink
Ya, I found it now in POP 370 1987

It's not in 1975 POP / 1976 ref
Post by 'Shelby Beach' ***@comcast.net [hercules-390]
That's strange... I've found it in both ESA/390 and z/Architecture POP
manuals.
Shelby
________________________________
Sent: Friday, October 30, 2015 6:29 PM
Subject: Re: [hercules-390] Re: Sample OS - Madnick (Hercules Error
Report)
Is MVCK a machine instruction ? ... MACRO ?
I don't see it in POP or the reference card.
Post by Gerhard Postpischil ***@charter.net [hercules-390]
I found that an MVCK instruction failed (in IBM code). The error
was
Post by Gerhard Postpischil ***@charter.net [hercules-390]
repeatable, and occurred when one operand crossed a 2K boundary
that
Post by Gerhard Postpischil ***@charter.net [hercules-390]
wasn't a 4K boundary. IBM came back a couple of weeks later with a
new
Post by Gerhard Postpischil ***@charter.net [hercules-390]
microcode floppy, loaded it, and my TSO logon failed with an 0C4.
The
Post by Gerhard Postpischil ***@charter.net [hercules-390]
same MVCK instruction had both operands crossing a 2K boundary not
on a
Post by Gerhard Postpischil ***@charter.net [hercules-390]
4K bound. They finally fixed it. Some time later we upgraded to
4381s,
Post by Gerhard Postpischil ***@charter.net [hercules-390]
and I ran my MVCK test job - it failed again. I've had a vanity
license
Post by Gerhard Postpischil ***@charter.net [hercules-390]
plate reading MVCK for the last thirty years, in two states.
Rahim Azizarab rahimazizarab@yahoo.com [hercules-390]
2015-11-02 12:01:44 UTC
Permalink
There was a little anomaly in your Hercules start up that prevented your scripts/card_deck_load from executing.   
 export HERCULES_RC=scripts/card_deck_load
The above line was missing from your start_herc script.



regards;

Rahim Azizarab
  

  
Post by ***@pi-sysprog.de [hercules-390]
Peter,
I can tell what happens when HW maintains keys for 2k pages and
software expects it to be for 4 ....
no failure (as far as i can tell from the sysprog perspective) ----
but in some rare cases a COBOL-program would have
address-constants, that were relocated twice (=the difference to
the addresses at LNKEDT time was added twice)
This was also a problem with real hardware. In the eighties we got two
4341s, and all my attempts at a TSO logon failed with 0C4. Apparently
this didn't occur at IBM because we had SMF exits and other stuff. We
ran Wylbur, so this wasn't a high priority. But when I started digging,
I found that an MVCK instruction failed (in IBM code). The error was
repeatable, and occurred when one operand crossed a 2K boundary that
wasn't a 4K boundary. IBM came back a couple of weeks later with a new
microcode floppy, loaded it, and my TSO logon failed with an 0C4. The
same MVCK instruction had both operands crossing a 2K boundary not on a
4K bound. They finally fixed it. Some time later we upgraded to 4381s,
and I ran my MVCK test job - it failed again. I've had a vanity license
plate reading MVCK for the last thirty years, in two states.

I also looked at the Madnick OS. I added a bootstrap loader, and an
entry point on the END card (I have a disk resident IPL program that
reads object decks from a data set). In preparation for later and
greater things <g> I changed the code to determine the memory size,
allowing for larger partitions.

          LA    3,8                SET ZERO KEY AND FETCH PROTECT
          SR    R10,R10            TEST ADDRESS                GP15285
          LA    R11,2048            TEST INCREMENT              GP15285
          L    R12,=A(1024*1024*16)  MAXIMUM FOR AM24          GP15285
          LA    R0,IPLSTOND        INTERCEPT FOR STORAGE END    GP15285
          ST    R0,PGMNEW+4        SET STORAGE ACCESS FAIL      GP15285
IPLSTLUP CLI  R10,C' '            DOES STORAGE EXIST?          GP15285
*TEST    SSK  R3,R10              SET THE STORAGE KEY          GP15285
          BXLE  R10,R11,IPLSTLUP    TEST ALL                    GP15285
          B    IPLSTSET              SET STORAGE AVAILABLE      GP15285
IPLSTOND SR    R10,R11            BACK UP TO LAST VALID SIZE  GP15285
IPLSTSET ST    R10,CORESIZ        SAVE SIZE OF STORAGE        GP15285
          LA    R0,PGMHANDL        RESTORE PROGRAM CHECK RTNE  GP15285
          ST    R0,PGMNEW+4        SET STORAGE ACCESS FAIL      GP15285
          SLR  R9,R9              ZERO                        GP15285
          S    R10,=A(VERYEND-PROGRAM) GET FREE SIZE            GP15285
          STM  R9,R10,VERYEND      INITIALIZE MEMORY CHAIN      GP15285
*OLD*    MVC  VERYEND,=A(0,CORESIZE-(VERYEND-PROGRAM)) FREE CORE
*OLD*    LA    3,8                SET ZERO KEY AND FETCH PROTECT
*OLD*    L    2,CORESIZ          START PAST THE LAST BLOCK
*PLCL    S    2,=F'2048'          GO TO THE PREVIOUS BLOCK
*OLD*    BM    IPLTH              IF NEGATIVE, WE'RE THROUGH HERE
*        SSK  3,2                ELSE SET THE STORAGE KEY TO

I didn't want to mess with the SSK, as I haven't had time to do any testing.

Gerhard Postpischil
Bradford, VT


------------------------------------

------------------------------------

Community email addresses:
  Post message: hercules-***@yahoogroups.com
  Subscribe:    hercules-390-***@yahoogroups.com
  Unsubscribe:  hercules-390-***@yahoogroups.com
  List owner:  hercules-390-***@yahoogroups.com

Files and archives at:
  http://groups.yahoo.com/group/hercules-390

Get the latest version of Hercules from:
  http://www.hercules-390.org


------------------------------------

Yahoo Groups Links
winkelmann@id.ethz.ch [hercules-390]
2015-10-30 11:27:30 UTC
Permalink
Hi Peter


thanks for your elaborate post and sorry that I'm only able to answer very briefly -- as I already mentioned, my Hercules time budget is currently very tight.
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
Are you saying that following Enrico's suggestion of defining
FEATURE_4K_STORAGE_KEYS instead of FEATURE_2K_STORAGE_KEYS in feat370.h caused
you to hit some compiler errors and you fixed them in passing?
Exactly!
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
I'm not sure that this addresses all of the issues I came across when I looked
at this a few months ago.
It might well be that there are much more issues with this logic. I can only second to your earlier statement: The logic around storage protection looks a bit messy...


My intention here was _not_, to find and fix all errors that are in this code. In fact, when those compile time errors hadn't occurred I'd most probably not even cared at all to look at the code.


My intention only was to be able to test my 4k adaption of the Madnick OS in an environment behaving like a true 4k machine back in the '70s did... to tell for sure what Peter Flass would have only been able to assume in 2002 (and which I assume was the reason behind his decision to just remove storage protection completely): That it does in fact work on a 4k machine. And exactly this I was no able to confirm.
Post by Peter Coghlan ***@beyondthepale.ie [hercules-390]
(I wonder does everything still work correctly with when compiling Hercules
without changing feat370.h but with the patch applied to control.c?)
I didn't test this. However, given that this code segment objectively was defective before applying the patch this doesn't seem to be the primary question. On the contrary the question should rather be to find out, whether the defective code did in fact lead to erroneous behavior in 2K mode (which I very much assume) and, if so, whether the patch fixes that erroneous behavior. Anyway: I don't currently have the time to dive into this.


For me the desired result has been achieved: Storage protection works as per the PoO manual in S/370 mode with 4K (single key) blocks as well as with 2K (double key) blocks, selectable by FEATURE_4K_STORAGE_KEYS or FEATURE_2K_STORAGE_KEYS in feat370.h. So, personally, I have no need to chase problems resulting from contradicting settings per architecture, or "perverse" setups as you phrase it.



Cheers
JÃŒrgen
Continue reading on narkive:
Loading...