Table of Contents

DMSLDR Abstract

Statistics

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

Synopsis

Module

     DMSLDR (LDR)

Function

     THIS MODULE CONSISTS OF  THE FOLLOWING LOADER ROUTINES:
     DMSLDRA, DMSLDRB

Attributes

     REENTRANT, NUCLEUS RESIDENT

Operation

     THE START  EXECUTION ROUTINE RECEIVES CONTROL  FROM THE
     START COMMAND OR THE LDT CARD ROUTINE IF THE START OPTION
     WAS SPECIFIED.  THE START EXECUTION ROUTINE:

     1.   INITIALIZES FREE STORAGE.

     2.   CALLS THE DISK AND TYPE  OUTPUT PROGRAM (DMSLIO) TO
          PRINT  A STORAGE  MAP HEADER  FOR  COMMON, IF  THE
          REFTBL CONTAINS ANY COMMON ENTRIES.

     3.   SEARCHES  THE REFTBL  FOR ENTRIES  WITH A  NONZERO
          FLAG (COMMON, CXD, PR, AND REFERENCES TO UNDEFINED
          SYMBOLS).

          A.   A POINTER TO PR ENTRY IS PLACED IN A SEPARATE
               TABLE  DEPENDING  UPON  PR  ALIGNMENT:  BYTE,
               HALFWORD, FULLWORD, OR DOUBLEWORD.

          B.   A CXD  ENTRY IS MARKED "UNDEFINED"  FOR LATER
               PROCESSING AND  A POINTER  PLACED IN  SPECIAL
               CXD TABLE.

          C.   A  COMMON IS  DEFINED AT  THE NEXT  AVAILABLE
               LOAD  LOCATION   AND  THE   LOCATION  COUNTER
               (LOCCNT) IS  INCREASED BY  THE LENGTH  OF THE
               COMMON.    REFERENCES  TO   THE  COMMON   ARE
               PROCESSED   BY  CALLED   ADDEF.   THE   NAME,
               ADDRESS, AND LENGTH OF THE COMMON ARE PRINTED
               BY CALLING DMSLIO  VIA CMVAL.

          D.   A  REFERENCE   TO  AN  UNDEFINED   SYMBOL  IS
               REPLACED BY A VALUE OF ZERO BY CALLING ADDEF.

     4.   AFTER SCANNING  ENTIRE REFTBL,  THE DISK  AND TYPE
          OUTPUT  PROGRAM  (DMSLIO)  IS  CALLED  TO  PRINT  A
          STORAGE  MAP HEADER  FOR PR'S,  IF  THERE ARE  ANY
          PSEUDO-REGISTER ENTRIES IN THE  REFTBL.  THE NAME,
          VALUE, AND  LENGTH OF EACH  PR (THEY  WERE DEFINED
          EARLIER  WHEN  ESD  WAS   FIRST  ENCOUNTERED)  ARE
          PRINTED AS WELL AS THE CXD REQUEST, WHICH CAN ONLY
          BE DETERMINED AFTER ALL PR'S HAVE BEEN ASSIGNED.

     5.   THE  STARTING   ADDRESS  FOR  EXECUTION   IS  THEN
          DETERMINED: BY  ENTRY-POINT NAME  IS SUPPLIED,  BY
          START COMMAND  OR BY  THE START  EXECUTION ADDRESS
          (IN BRAD) SET  BY FIRST PROGRAM LOADED,  END CARD,
          LDT CARD, OR ENTRY CONTROL CARD.

     6.   A.   IF  ACTUAL   EXECUTION  IS   SUPPRESSED,  FOR
               EXAMPLE,  BY SPECIFYING  START (NO)  COMMAND,

               THE LIBRARY IS CLOSED,  LOAD MAP CLOSED, FREE
               STORAGE  RELEASED,  AND CONTROL  RETURNED  TO
               CALLER.  OTHERWISE, EXECUTION IS PERFORMED BY
               SETP 6B.

          B.   THE  MESSAGE "EXECUTION  BEGINS" IS  PRINTED,
               IF THE CMS/DOS ENVIRONMENT IS  NOT ACTIVE
               ( DOSCOMP+DOSSVC ).  THE GETMAIN/FREEMAIN
               STORAGE IS INITIALIZED (STRINIT).  IF THE
               CMS/DOS ENVIRONMENT  IS ACTIVE ( DOSSVC),
               A  CALL IS MADE TO DMSSMNAT TO INITIALIZE
               THE CMS/DOS PARTITION.
               THE SAVE AREA ADDRESS IS  SET IN REGISTER
               13, THE ENTRY POINT OF THE PROGRAM IS SET
               IN REGISTER 15, THE RETURN ADDRESS IS SET
               IN REGISTER 14,  AND  THE ADDRESS TO  THE
               PROGRAM'S PLIST IS SET IN REGISTER 1.
               An extended PLIST is supplied in R0.        HRC309DS
               IF THE CMS/DOS ENVIRONMENT IS ACTIVE
               ( DOSCOMP+DOSSVC ),  REGISTER 1 WILL THEN
               CONTAIN  THE  ENTRY POINT ADDRESS OF  THE
               PROGRAM TO BE EXECUTED.
               CONTROL IS THEN TRANSFERRED TO THE LOADED
               PROGRAM VIA 'LPSW' INSTRUCTION.
                                                           @VA04695
     NOTE: ANY CHANGES MADE TO THIS MODULE SHOULD ALSO     @VA04695
           BE CONSIDERED FOR DMSOLD.                       @VA04695

Calls to Other Routines

     DMSLIO  -  TO PRINT MESSAGES
     DMSLSBC -  TO DEFINE UNDEFINED ENTRIES AT ZERO
     SERCH1  -  IN DMSLDRB TO FIND STARTING NAME'S LOCATION