Type ASSEMBLE
Source Lines : 2,116
Fixes Applied : 15
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [HRC309DS]
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