Giter Site home page Giter Site logo

Comments (7)

BobBolch avatar BobBolch commented on August 23, 2024

I ran the test case with CALLCMS calling DIR.

The CALLCMS MODULE and the DIR MODULE are both CMS User Area MODULE files and both LOAD at address X'20000'.
CMS content management is minimal. User programs usually load either in the transient area, art address X'E000', or in the user area at address X'20000'. When CALLCMS calls DIR, DIR overlays the CALLCMS MODULE in storage, so when DIR completes, the
CALLCMS program is no longer there, so you get a program check.

What to do: CMS MODULE files are not relocatable, but you can specify an address where they will be loaded.

GLOBAL TXTLIB GCCRES <--- we recommend using the native C runtime library, not GCCLIB
LOAD CALLCMS ( CLEAR ORIGIN 80000
GENMOD CALLCMS MODULE A2

The load address, X'80000' is just a guess of an address that will be higher than the largest MODULE file it will call that loads at X'20000'.

Please let me know if this is not clear. I am guessing that the other programs in your tests are seeing the same issue, but if not I can test them if I have an executable.

Bob Bolch

from vm370.

btiffin avatar btiffin commented on August 23, 2024

Awesome, Bob. Thanks. Development is a lot more fun now.

If you don't mind spending the time, I'll be hosting some of these trials at http://btiffin.users.sourceforge.net/vmce/ In that dir is http://btiffin.users.sourceforge.net/vmce/cbrain.c (I transfer this as V with LRECL 140), and a small test script http://btiffin.users.sourceforge.net/vmce/pbhello.cb V 80. and computus.cb, to show when Easter Sunday is for a given year.

I'll correct the tectonics to move the ORIGIN, but for now, this is the MODULE being whacked (as you explained), but this MODULE stays whacked across login/logout and even across shutdown and restart.

gcc cbrain (cms
load cbrain
genmod cbrain
cbrain pbhelllo

... works fine, but once another module get executed cbrain MODULE always triggers the DMSITP141T. *This example was from ORIGIN A0000, and running FSLIST in between runs.

L CMSUSER CMSUSER
DASD 190 LINKED R/O; R/W BY MAINT; R/O BY 004 USERS
DASD 19D LINKED R/O; R/W BY MAINT; R/O BY 002 USERS
DASD 19E LINKED R/O; R/W BY MAINT; R/O BY 004 USERS
LOGON AT 15:05:17 GMT FRIDAY 04/16/21
CMS Community Edition V1 R1.0

Y (19E) R/O
U (19D) R/O
'19D' REPLACES ' U (19D) '
U (19D) R/O
Ready; T=0.01/0.01 15:05:19
cbrain pbhello

DMSITP141T OPERATION EXCEPTION OCCURRED AT 0A0002 IN ROUTINE CBRAIN.
CMS
load cbrain (clear origin a0000
Ready; T=0.01/0.10 15:06:12
genmod cbrain
Ready; T=0.01/0.01 15:06:21

Stays trashed across the login.

Much appreciate the help, Bob. And you can probably close this ticket as "problem is between chair and keyboard".

from vm370.

BobBolch avatar BobBolch commented on August 23, 2024

I still plan to look into the cbrain part of the issue. I don't have any explanation for the behavior you are seeing, so I will get the source and do some experiments.

In later versions of VM, IBM introduced the Nucleus Extension architecture to allow user programs to be loaded in high memory. The IBM NUCXLOAD command had the capability to load and relocate a CMS MODULE file to high memory and let it be called in the normal CMS way by entering the MODULE filename as a command name. VM/370 does not have NUCXLOAD, because it does not have support in the program loader to relocate a MODULE to a separate address from where it was generated. However, CMS TEXT files CAN be relocated. VMCE V1 R1.1 will add a new command NUCXTEXT, which loads TEXT files in high memory so they can be accessed as Nucleus extensions. It might be possible to use your 'callcms' program effectively, using NUCXTEXT.
Bob

from vm370.

BobBolch avatar BobBolch commented on August 23, 2024

from vm370.

BobBolch avatar BobBolch commented on August 23, 2024

I tracked down the situation with cbrain.

It turns out that the cbrain module is not being corrupted. It is not being built like we think, because
of the defined behavior of the GENMOD command. This is what we see immediately after issuing the GENMOD CBRAIN
command (usinf the default load address of X'20000'):

st 20000 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
STORE COMPLETE
Ready; T=0.01/0.01 08:50:20
loadmod cbrain
Ready; T=0.01/0.01 08:50:26
d t20000.100
020000 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF E0 ................
020010 TO 020020 SUPPRESSED LINE(S) SAME AS ABOVE .....
020020 000818DF 5AF0C02C 50FD004C 50ED0048 .....0..&..<&...
020030 47F0C030 00000000 00000058 05C018B1 .0..............
020040 58A0C032 5820C036 58220000 D2032060 ............K..-

The code loaded at X'20000' by the LOAD command is NOT INCLUDED in the MODULE file.
Here is why. This is the sotorage layout after the LOAD command:

.000006 SD 020000
LONG@TO@ 020000
E 020264
CALLCMS 020508
CBHELP 020754
CBRAIN 0209F8
@@main 022310
MAIN 02231C
A 0224DC
MEMREG 02A4DC
S 02A4E0

Here is the definition of the START option of the GENMOD command:
FROM entry1
specifies an entry point or a control section name that represents the
starting virtual storage location from which a MODULE is generated.

If omitted, then the so-called "default load point" is whatever you specified on the LOAD command, with a defult of
the start of the User Area at address X'20000'. However, if you have an entry point in your loaded TEXT, that matches the module name, then that is taken to be the FROM address. The MODULE file then starts at address 209F8 where the CBRAIN symbol is defined.

To build the MODULE you want, supply a FROM operand on your GENMOD. In this case, LONG@TO@ starts at 20000, so that is what you want. Entering the command is complicated by the fact that @ is the default CHARDEL (character delete) editting character:

TERM CHARDEL OFF
LOAD CBRAIN ( CLEAR ORIGIN 20000 or whatever
GENMOD CBRAIN ( FROM LONG@TO@
TERM CHARDEL @

Make sense?

from vm370.

btiffin avatar btiffin commented on August 23, 2024

Yes, yes it does (fibbing for now kinda, I trust your analysis but don't have the whole picture in my head yet). ;-)

Thanks for the education lesson. This is base learnin' that still needs learnin'. These little hints are wondrous.

I've been keeping CP SET LINEDIT OFF and TERMINAL ESCAPE OFF in a profile exec when testing these engines.

Feel free to close this report. Initial trials working. Will keep on reading more docs.

Thanks a lot, Bob. This bodes well for setting up an attempt at getting some tools from busybox or Landley's toybox running under CMS, and will definitely help with polishing libforth.

from vm370.

BobBolch avatar BobBolch commented on August 23, 2024

Issue resolved

from vm370.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.