Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!ucbvax!YKTVMH.BITNET!PERSHNG From: PERSHNG@YKTVMH.BITNET ("John A. Pershing Jr.") Newsgroups: comp.lang.asm370 Subject: (none) Message-ID: <8910181519.AA05760@brazos.rice.edu> Date: 18 Oct 89 14:30:38 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: IBM 370 Assembly Programming Discussion List Distribution: inet Organization: The Internet Lines: 43 CMS normally runs all programs in (virtual) Supervisor State -- if you find that you are in problem state, then there is something amiss. However, to try to keep you from shooting yourself in the foot, CMS protects its own storage areas with a Storage Key of x'F', and sets all "user" pages to a Key of x'E'. This is probably why you are having difficulty storing into the CAW. There are a number of ways to get around this annoying behavior: - The 'SET PROTECT OFF' command will tell CMS to stop trying to protect itself. - Since you are running in (virtual) Supervisor State, you can simply change your PSW key to x'0' using, e.g., LPSW. - If you are content to run below the 16M line, then the DMSKEY macro provides an "official" (now officially "not recommended") way to change your PSW key. - Typically, Key Zero is only needed for single instructions -- e.g., storing into the CAW. The "safest" way to proceed is to use the DMSEXS macro, which takes a single machine instruction as its operand and runs that one instruction in Key Zero. As with DMSKEY, this macro is officially "not recommended", and only works below the 16M line. The difference between the two PLISTs is explained adequately in the manuals -- although this explanation has moved around a bit during the past couple of releases. In my Release 6 library, it is in the "Application Development Guide for CMS" manual, in the "Program Invocation -- Supervisor Assisted Linkage" chapter. I believe that this information used to be in the "CMS User's Guide" prior to Release 5, and I don't know where it lives in the VM/XA library. It is a bit too involved to be explained in detail here. The additional DIAG codes (except for x'F0') are described in "System Facilities for Programming", SC24-5288. This manual was new with Release 5 or 6 of VM. VM/SP Release 5 does not have a DIAG x'F0' defined; I don't have the sources of Release 6 handy to see if it has been added in that release. John Pershing IBM Research, Yorktown Heights