*DECK LOADU 
          IDENT  LOADU,BASE+OFFSET,LOADU,4,0                             LDR0223
  
          ABS 
 BASE     EQU    0
          LIST   D
          SST    FL,ON,PLDP,RA,T1,T2,T3,T4,T5 
          TITLE  LOADU - USER-CALL LOADER.
          COMMENT USER-CALL LOADER
          SPACE  4
***       CONTROL DATA PROPRIETARY PRODUCT
*         COPYRIGHT CONTROL DATA CORP. - 1976, 1977, 1978, 1979, 1980,
*         1981, 1982. 
          SPACE  4,8
**        ************************************************************
*         * L O A D U  -  BASIC LOADER FOR USER-CALL-INITIATED LOAD. *
*         ************************************************************
* 
* 
*              THIS PROGRAM IS THE USER-CALL COUNTERPART OF THE PROGRAM 
*         *LOADER*.  THE TWO PROGRAMS ARE VERY SIMILAR.  THE
*         INTRODUCTORY MATERIAL IN THE *LOADER* IMS SHOULD BE 
*         CONSULTED FOR THE FOLLOWING ITEMS, SINCE THEY APPLY 
*         EQUALLY TO *LOADU*:                                                  .
* 
*         - AUTHORS.
*         - MODIFICATIONS.
*         - CODING CONVENTIONS. 
*         - REGISTER USAGE. 
*         - MEMORY MANAGEMENT.
*         - GENERAL DESCRIPTION OF LOAD PROCEDURE.
*         - PROGRAM STRUCTURE.
*         - USE OF COMMON DECKS.
          SPACE  4,8
**        ++++++++++++++++++++++
*         + MEMORY MANAGEMENT. +
*         ++++++++++++++++++++++
* 
* 
*              THE LOADABLE AREA IS NOT AUTOMATICALLY THE ENTIRE FIELD
*         LENGTH FROM RA+100B AS IT IS FOR CONTROL-CARD-INITIATED 
*         LOADS.  INSTEAD, IT IS DETERMINED FROM THE CONTENTS OF THE
*         USER CALL, OR, IF NOT SPECIFIED THERE, IT IS TAKEN AS THE 
*         AREA BEGINNING AT THE END OF THE LAST LOAD. 
* 
*              WITHIN THE LOADABLE AREA, THE SAME MEMORY MANAGEMENT 
*         SCHEME IS USED AS IN *LOADER*.  SINCE THE LOCATION OF THE 
*         LOADABLE AREA IS NOT KNOWN AS WITH *LOADER*, IT IS
*         NECESSARY TO BE ABLE TO RELOCATE *LOADU*.  THIS IS
*         ACCOMPLISHED BY THE CODE CONTAINED IN THE COMMON DECK 
*         *LOADREL*.
* 
*              IF FWA AND LWA WERE NOT SPECIFIED IN THE USER CALL AND 
*         THE COMMON MEMORY MANAGER (*CMM*) IS ACTIVE, THEN *CMM* WILL
*         BE CALLED IN CASE OF TABLE OVERFLOW TO GIVE THE LOADER MORE 
*         SPACE.  IN NO OTHER CASE WILL THE LOADER INCREASE THE FIELD 
*         LENGTH OR EXPAND BEYOND ITS ORIGINAL BOUNDS.  *CMM*, IF USED
*         AT ALL, IS USED ONLY TO GROW THE FIXED-POSITION BLOCK 
*         ALLOCATED BY *PILOAD* TO HOLD THE LOADER AND ITS TABLES;
*         EVERYTHING WITHIN THE BLOCK IS CONTROLLED BY THE LOADER"S 
*         OWN MEMORY MANAGER. 
          SPACE  4,8
**        ++++++++++++++++++++++
*         + ENTRY INFORMATION. +
*         ++++++++++++++++++++++
* 
* 
*              ENTRY TO *LOADU* TAKES PLACE AFTER IT HAS BEEN LOADED BY 
*         *LDV*, AS A RESULT OF THE USER CALL INITIALLY TRANSFERRING
*         CONTROL TO *UCLOAD*.  THE FOLLOWING CONSTITUTES ALL OF THE
*         ENTRY CONDITIONS EXPECTED BY *LOADU*:                                .
* 
*         1)   THE A0 REGISTER CONTAINS THE CM FIELD LENGTH, AND THE
*              X0 REGISTER CONTAINS THE ECS FIELD LENGTH. 
* 
*         2)   THE B7 REGISTER CONTAINS THE FIRST WORD ADDRESS OF THE 
*              LOADABLE AREA.  THIS ALLOWS FOR SELF-RELOCATION. 
* 
*         3)   THE X6 REGISTER CONTAINS THE FOLLOWING 
* 
*              VFD    6/0,18/RETURN,18/RQLWA,18/RQFWA 
* 
*              RETURN = ADDRESS TO RETURN AFTER THE LOAD IS COMPLETE. 
*              RQLWA  = LWA+1 OF USER CALL PARAMETER AREA.
*              RQFWA  = FWA OF USER CALL PARAMETER AREA.
          SPACE  4,8
**        +++++++++++++++++++++++++++ 
*         + PROCEDURE DESCRIPTIONS. + 
*         +++++++++++++++++++++++++++ 
* 
* 
*              THE REMAINDER OF THE *LOADU* IMS IS IDENTICAL TO THE 
*         *LOADER* IMS, DUE TO THE SIMILARITY OF THE TWO ROUTINES.
          SPACE  4,8
*CALL LDRCOM
          IPARAMS 
 IP.PD    CEQU   6
 IP.PS    CEQU   60D
          SPACE  4,8
          COMMENT (L "LEVEL").
  
          IFMACS USER        INDICATE USER-CALL LOADER
          IFGLSMAC           DEFINE *IFGLS* AND *IFNOTGLS* OPSYNS 
  
**DOCK    LIST   OFF
*CALL BLOAD1
*CALL BLOAD2
*CALL BLOAD3
 BLOADC   TITLE  EXTERNAL REQUEST SCANNER OVERLAY.
          IDENT  LOADUC,LOCC+1,LOCC+1,4,1                                LDR0223
          ORG    LOCC+1 
          QUAL   RRLOADUC 
 OVLYFWA  EQU    LOCC 
          QUAL   LOADCC 
  
          COMMENT LOADU - PROCESS CARD IMAGES.
          SPACE  5
*CALL BLOADC
 LOADREL' SET    1
          QUAL   RRLOADUC 
*CALL LOADREL 
          QUAL
 LOADCCE  BSS    0           END OF USER CALL C.C. SCAN OVERLAY 
 MAP      TITLE  LOAD MAP - MAIN CONTROL. 
          IDENT  LOADUM,LOCL+1,LOCL+1,4,2                                LDR0223
          ORG    LOCL+1 
          QUAL   RRLOADUM 
 OVLYFWA  EQU    LOCL 
          QUAL
          QUAL   LOADM
  
          COMMENT LOADU - WRITE LOAD MAP. 
*CALL BLOADM
 LOADUM#  BSS    0           INITIAL ENTRY TO LOADUM
          QUAL   RRLOADUM 
*CALL LOADREL 
          QUAL
 MAPEND   BSS    0           END OF MAP ROUTINE 
          ERRPL  MAPEND-LOCC IF *LOADUM* IS TOO BIG 
          ERRNG  LOCC+IP.LBUF-MAPEND-IP.MBUF
          END 
