¿ªÔÆÌåÓý

Re: How Big/Long is a CMS Module


 

Hello,
When I was in college (Ohio University), I developed a technique to run multiple commands from one program.

Basically, I created a dynamic loader to load the control program.? Once the control program work? was complete, it would call the dynamic loader in unload mode.

The dynamic loader would obtain free storage at the highest available area (enough to run the control program). It would load the control program in this area and the transfer control to it.? ?This is the gist of it.? This method allows for a multi-tasking CMS using interrupts.

While at Cray Research, I used it to allow customers to run the various Cray CMS commands while also running one normal command (e.g. editor, compiler, etc.)


The thing is, customers came back wanting me to allow them to use multiple CMS commands at the?same time. This was beyond the scope of the Cray VM Station.? ?Running our commands at the same time and one normal CMS command was the directive.

Could one create an OS that looks like CMS and allows you to run both foreground and multiple backgrounds tasks.? Yeah!? Figured most of it out years ago, but who would fund it?? I can't.? IBM?? Maybe, if they even thought of it.

I talked to an IBMer about it while working for Cray.? He was speechless. I told him I developed the idea in college. He could use it, as the idea and technique were from my college days.? Obviously, the IBM VM team never pursued multitasking CMS.

Note:? It isn't meant to have a massive overhead for CP. It is meant to give users the ability to do things in parallel, not one command at a time.

The key would be in setting the requirements.?


Thanks.

On Sun, Feb 4, 2024, 16:42 Dave Wade <dave.g4ugm@...> wrote:

Mark,

Not sure what you are planning, but if your program has issued any storage requests, the space at the end of the program will have been used to satisfy those requests so not available to load a second program.

?

From what I remember there are two ways to load another program and not have it overlay your program.

?

One is to use the transient program area.

The other is to use an auxiliary directory as used by the assembler.

?

In VM/CE we added the RESLIB & NUCXTXT commands which allow TEXT files to be loaded in high memory and called as commands.

REXX is installed in this manner.

?

Dave

?

?

?

From: [email protected] <[email protected]> On Behalf Of Mark A. Stevens via
Sent: Sunday, February 4, 2024 9:20 PM
To: [email protected]
Subject: [h390-vm] How Big/Long is a CMS Module

?

I've been trying find/figure this out. A CMS module is of a certain length/size. How do I find out what that size is? Why? because I want to call another module, and have it load above the first one, rather than on top of the first.

A related question is: Do I need to specify a full word, or double word, or 4K page boundary as the starting address for the second module? I understand the first one loads at X'020000'.

What I have found so far is DMSMOD which GENMOD and LOADMOD come from. It seems there is an 80 byte record at the beginning of the MODULE which contains a number of values, which are stored in NUCON areas, and then written out to the disk file being created.

FSVIEW: DMSMOD ASSEMBLE H1?????????? Lines 112-150/725 F80[1-79]? FSVIEW V1.2.5
*? OPERATION??????????????????????????????????????????????????????????? 00112000
*?????????????????????????????????????????????????????????????????????? 00113000
*???????? GENMOD-?????????????????????????????????????????????????????? 00114000
*?????????????????????????????????????????????????????????????????????? 00115000
*???????? GENMOD ISSUES THE START (NO) COMMAND TO FINISH LOADING OF???? 00116000
*???????? OBJECT PROGRAMS. NEXT ERASE THE OLD MODULE IF IT EXISTS.????? 00117000
*???????? THE START AND ENDING LOCATIONS ARE DETERMINED FROM THE??????? 00118000
*???????? USER OPTIONS 'TO' AND 'FROM' OR BY DEFAULT. THE DEFAULT?????? 00119000
*???????? START IS THE ADDRESS OF THE FIRST LOADER TABLE NAME, THE????? 00120000
*???????? DEFAULT END IS THE CURRENT SETTING OF LOCCNT IN NUCON.??????? 00121000
*???????? AN EIGHTY BYTE RECORD IS WRITTEN AS THE FIRST RECORD OF THE?? 00122000
*???????? THE MODULE. THIS RECORD CONSISTS OF THE NUCON LOADER INFORMA- 00123000
*???????? TION. NEXT THE TEXT INFORMATION IS WRITTEN TO THE MODULE????? 00124000
*???????? FILE IN VARIABLE SIZE RECORDS UP TO 65535 BYTES. IF THE?????? 00125000
*???????? MODULE IS NOT FOR A TRANSIENT ROUTINE AND NOMAP WAS NOT?????? 00126000
*???????? SPECIFIED THE LOADER TABLE IS WRITTEN AS THE LAST MODULE????? 00127000
*???????? FILE RECORD. CLOSE THE NEW MODULE FILE AND RETURN TO THE????? 00128000
*???????? CALLER.?????????????????????????????????????????????????????? 00129000
*?????????????????????????????????????????????????????????????????????? 00130000
*???????? LOADMOD-????????????????????????????????????????????????????? 00131000
*?????????????????????????????????????????????????????????????????????? 00132000
*???????? LOADMOD CHECKS FOR THE EXISTENCE OF THE REQUESTED MODULE????? 00133000
*???????? THEN READS THE TEXT INFORMATION INTO THE LOCATIONS SET??????? 00134000
*???????? UP WHEN THE MODULE WAS CREATED. THE MODULE NAME IS??????????? 00135000
*???????? STORED IN THE APPROPRIATE NUCON LOCATION. IF THERE IS???????? 00136000
*???????? A LOADER TABLE RECORD IN THE MODULE IT IS READ INTO?????????? 00137000
*???????? THE LOADER TABLE LOCATION IN STORAGE. SELECTED LOADER???????? 00138000
*???????? INFORMATION IS STORED IN NUCON. RETURN TO CALLER????????????? 00139000
*.????????????????????????????????????????????????????????????????????? 00140000

...
FSVIEW: DMSMOD ASSEMBLE H1?????????? Lines 289-327/725 F80[1-79]? FSVIEW V1.2.5
STBUFF?? LA??? R0,10????????? GET BUFFER FOR FIRST RECORD?????????????? 00289000
???????? DMSFREE DWORDS=(0),TYPCALL=BALR??????????????????????????????? 00290000
???????? LR??? R9,R1????????? R9 IS BUFFER ADDRESS????????????????????? 00291000
???????? ST??? R9,DSKLIN+28?? PUT IN PLIST????????????????????????????? 00292000
???????? MVC?? 0(80,R9),STRTADDR?? MOVE LOADER INFORMATION TO BUFFER??? 00293000
???????? STH?? R8,TBENT-STRTADDR(R9)??? SAVE LDR TABLE COUNT??????????? 00294000
???????? MVC?? DSKLIN+32(4),=XL4'50' SET TO WRITE 80 BYTES????????????? 00295000
???????? LA??? R1,DSKLIN????? ADDR. OF WRITE PLIST????????????????????? 00296000
???????? L???? R15,AWRBUF???? ADDR. OF WRBUF??????????????????????????? 00297000
???????? BALR? R14,R15??????? WRITE FIRST RECORD OF MODULE????????????? 00298000
...


NUCON

...
FSVIEW: CMSHRC MACLIB F1????????? Lines 1285-1323/3391 F80[1-79]? FSVIEW V1.2.5
STRTADDR DC??? 1F'0'????????? MODULE STARTING ADDRESS?????????????????? 00252100
FRSTLOC? DC??? 1F'0'????????? MODULE BEGINNING ADDRESS????????????????? 00252200
LASTLOC? DC??? 1F'0'????????? MODULE ENDING ADDRESS???????????????????? 00252300
LOCCNT?? DC??? 1F'0'????????? LOADER LOCATION COUNTER?????????????????? 00252400
LDRADDR? DC??? 1F'0'????????? LOADER RETURN ADDRESS???????????????????? 00252500
LDRRTCD? DC??? 1F'0'????????? LOADER RETURN CODE??????????????????????? 00252600
PSW????? DC??? 1D'0'????????? USER'S STARTING PSW?????????????????????? 00252700
LDRFLAGS DC??? 1F'0'????????? LOADER FLAGS????????????????????????????? 00252800
PRHOLD?? DC??? 1F'0'????????? PSEUDO REGISTER COUNTER?????????????????? 00252900
TBENT??? DC??? H'0'?????????? INITIALIZE TABLE ENTRIES TO?????????????? 00262000
*???????????????????????????? ZEROES??????????????????????????????????? 00262100
...

So when I hexdump, sorry HEXPRINT the file, I get the following which I edited, inserting spaces between each fullword.

HEX??? RECORD: 000001? RECORDLENGTH: 000080???????????????????????????????????????????????????? ?
?????? ---- +--- -|-- --+- ---| ---- +--- -|-- --+- ---| ---- +--- -|-- --+- ---| ---- +--- -|-- --+- ---|----+----|
000000 .... .... .... .... ...O .... .... .... .... .... .... .... .... .... .... Z... .... .... .... ....???????? ?
ZONE?? 0000 0000 0000 0000 002D 0000 0000 0001 4800 0000 0000 0000 0000 0000 0000 E000 0000 0000 0000 0006???????? ?
NUMBR? 0200 0200 0258 0258 0156 0000 0000 001F 4003 0000 0300 0000 0000 0000 0000 9000 0000 0000 0000 00E9???????? ?
???? ? |STRTADDR |FRSTLOC? |LASTLOC? |LOCCNT?? |LDRADDR? |LDRRTCD? |PSW??????????????? |LDRFLAGS |PRHOLD?? |

?????? 00020000? 00020508? 000125D6? 00000000? 44800003? 00030000? 00000000 00000000?? 00000000? 00000000 ?
?????? 00020000? 00020508? 00000000? 0000011F? 00000000? 00000000? 00000000 E9000000?? 00000000? 00000E69
...

If I map NUCON variables to those fields, then I end up with LOCCNT having a value of 000000000000011F. Therefor the length of the module is X'011F' or 287 decimal bytes.

Am I close, or just totally lost in the woods, and I should send up a flare?

?... Mark S.

Join [email protected] to automatically receive all group messages.