Comments (7)
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.
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.
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.
from vm370.
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.
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.
Issue resolved
from vm370.
Related Issues (20)
- Install KICKS
- EE changes the file mode number HOT 5
- GCC EXEC does not detach H file disk if KEEP specified HOT 1
- CMS commands issued by MECAFF editor get rc=-3. Issuing 'CMS' on the cmd line does not enter SUBSET.
- can we set a default for synonym files in profile ee HOT 1
- Please Remove Invalid ASSIST Files
- Please Add ASSIST Interpreter & Documentation HOT 1
- Add new HELP files made on 4/5/22
- add Kevin Jordan's SENDFILE, RECEIVE. and MAIL commands
- EXECIO Does Not Process Multiple Uses of STEM Correctly HOT 2
- Update to the release notes. HOT 3
- help system text for FS* mentions REXXEXT which should be REXXFUNC HOT 2
- Errors with more than 7 arguments given to REXX EXECs, bREXX does not even start HOT 12
- Update CMSMAIL with latest version
- Support FBLOCK for REXX filetype specification in BREXX
- Minor typos in help for dir, flist and listfiles HOT 2
- Address Exception at 022062 in routine EE$D HOT 1
- REXX: SIGNAL ON FAILURE isn't working (Not recognized). HOT 5
- CP TERM HILIGHT ON causes first & last row screen corruption on model 3 (32 line) screen HOT 2
- CP TERM HILIGHT ON causes first & last row screen corruption on 3270 model 4 (43 line) screen
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vm370.