Type ASSEMBLE
Source Lines : 867
Fixes Applied : 2
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R14326DS]
Module
DMSSLN
Function
HANDLE OS CONTENTS MANAGEMENT REQUESTS ISSUED UNDER CMS. (LINK, LOAD, XCTL, DELETE, ATTACH,EXIT)
Attributes
REENTRANT, SEGMENT RESIDENT
Operation
DMSSLN7 - XCTL 1. IF XCTL IS FROM NON-DYNAMICALLY LOADED PHASE GO TO DMSSLN6 STEP 2 (BELOW) 2. RELEASE STORAGE OCCUPIED BY CURRENT PHASE (LATEST RB ON LINK CHAIN DEFINES STORAGE AREA) 3. GO TO DYNAMIC (BELOW) DMSSLN6 - LINK 1. CALL RESIDENT (BELOW) TO CHECK FOR LINK TO CMS RESIDENT FUNCTION. 2. ISSUE GETMAIN FOR A NEW REQUEST BLOCK 3. IF ATTACH REQUEST SAVE ATTACHER'S R13 AND R15 IN THE RB. POINT R13 TO RB SAVE AREA FOR ATTACHEE 4. IF THIS IS A LOAD REQUEST GO TO STEP 7 5. CHAIN THIS RB AS LATEST ON LINK CHAIN. SAVE RESUME PSW IN RB. 6. IF COMPILER SWITCH IS ON GO TO LODMOD (BELOW), OTHERWISE, GO TO DYNAMIC (BELOW). 7. CHAIN THIS RB ON LOAD LIST. SET ZERO USE COUNT GO TO DYNAMIC STEP 2 (BELOW). DMSSLN42 - ATTACH 1. ISSUE STAE MACRO IF STAI EXIT IS REQUESTED BY ATTACHER. 2. GO TO DMSSLN6 (ABOVE). DMSSLN8 - LOAD 1. IF REQUESTED PHASE IS ON LOAD RB CHAIN GO TO DYNAMIC STEP 6 (BELOW). STEP 2 (ABOVE). 3. IF COMPILER SWITCH IS ON GO TO LODMOD STEP 2 (BELOW; OTHERWISE GO TO DMSSLN6 STEP 2 (ABOVE). DMSSLN9 - DELETE 1. IF COMPILER SWITCH IS ON RETURN TO DMSITS. 2. IF REQUESTED PHASE IS NOT ON LOAD RB CHAIN SET RETURN CODE 4 IN R15. AND RETURN TO DMSITS. 3. DECREMENT USE COUNT BY ONE. IF USE COUNT IS NOT ZERO RETURN TO DMSITS. 4. RELEASE PHASE STORAGE AREA, UNCHAIN AND FREEMAIN LOAD REQUEST BLOCK. ZERO R15 AND RETURN TO DMSITS. DMSSLN3 - EXIT FROM CALLED PHASE 1. IF NOT RETURN FROM SUBTASK (ATTACH) GO TO STEP 3. 2. POST ECB, EXECUTE END OF TASK EXIT ROUTINE IF ONE WAS REQUESTED. 3. RELEASE PHASE STORAGE, UNCHAIN AND FREE LATEST RB O LINK RB CHAIN. RESTORE REGISTERS IF RETURN FROM SUBTAS RETURN TO DMSITS. DYNAMIC - CALL CMS LOADER 1. IF REQUESTED PHASE IS ON LOAD REQUEST BLOCK CHAIN GO TO STEP 6. 2. SET PHASE NAME IN RB. ISSUE CONDITIONAL GETMAIN FOR AN AREA TO LOAD REQUESTED PHASE INTO. SET LOCATION COUNTER TO PHASE AREA. CALL DMSLDRB TO INCLUDE PHASE. 3. IF DMSLDR RETURNS AN ERROR CODE >4 ISSUE ABEND X'15A'. OTHERWISE RESET LOADER TABLE COUNT TO PRE-INCL COUNT. 4. RELEASE EXCESS PHASE STORAGE. 5. DETERMINE PHASE ENTRY POINT: A.USE STRTADDR VALUE IN NUCON IF COMPILER SWITCH IS O B.USE STRTADDR IF PHASE NAME OCCURED AS A MEMBER NAME IN A CMS TXTLIB (OS FORM - REF. TXTLIB COMMAND). C.USE ALIASENT IN NUCON IF PHASE NAME OCCURED IN LOAD CSECTS BUT WAS NOT THE TXTLIB MEMBER NAME (REAL ALI D.USE STRTADDR FOR ALL OTHER CASES (SYMBOLIC ALIAS). 6. RESET DYNAMIC FLAGS. 7. IF THIS IS A LOAD REQUEST GO TO STEP 9. 8. SET PHASE ENTRY ADDRESS IN CMS OLD PSW AND R15, SET THAT CALLED PHASE WILL RETURN TO AN SVC 3 INSTRUCTION. RETURN TO DMSITS WHICH WILL TRANSFER TO CALLED PHASE. 9. IF COMPILER SWITCH IS OFF INCREASE USE COUNT IN RB ONE AND SAVE ENTRY LOCATION IN LOAD RB. 10. SET R0 TO ENTRY LOCATION. RETURN TO DMSITS. THE ENTRY ADDR. IS FROM THE LOAD RB IF PHASE WAS ALREA IN STORAGE. LODMOD - LOADMOD A PHASE 1. SAVE REQUESTED NAME IN RB. IF REQUESTED NAME IS ON LOAD RB CHAIN GO TO DYNAMIC STEP 6 (ABOVE). 2. CALL DMSMOD TO BRING IN REQUESTED PHASE AS A CMS MO IF DMSMOD RETURNS NON ZERO RETURN CODE ISSUE ABEND X'1 3. GO TO DYNAMIC STEP 5 (ABOVE). RESIDENT CHECK REQUESTED PHASE NAME AGAINST CMS RESIDENT LIST (IECQBFG1 IS ONLY ENTRY). IF EQUAL GO TO RESIDENT ROUT OTHERWISE RETURN TO INTERNAL CALLER. DMSSLNAB - ABEND RECOVERY ENTERED WHEN AN ABEND (SVC 13) OCCURS IN CMS. DMSSLNAB RELEASES THE LOAD AND LINK REQUEST BLOCK CHAINS BY ZEROING THEIR RESPECTIVE ANCHORS IN NUCON. RETURN TO DMSABN.
Calls to Other Routines
DMSMOD, DMSLDRB