Table of Contents

DMSSLN Abstract

Statistics

Type ASSEMBLE
Source Lines : 867
Fixes Applied : 2
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R14326DS]

Synopsis

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