*DECK LOADER
          IDENT  LOADER,BASE+OFFSET 
          ABS 
 BASE     EQU    100B 
          LIST   D
          SST    FL,LA,ON,RA,T1,T2,T3,T4,T5 
          TITLE  LOADER - CYBER COMMON LOADER.
          COMMENT CYBER COMMON LOADER 
          SPACE  4
***       CONTROL DATA PROPRIETARY PRODUCT
*         COPYRIGHT CONTROL DATA CORP. - 1976, 1977, 1978, 1979, 1980,
*         1981, 1982. 
          SPACE  4,8
**        ************************************************************* 
*         * LOADER - BASIC LOADER FOR CONTROL-CARD-INITIATED LOADS.   * 
*         ************************************************************* 
* 
* 
*         WRITTEN FOR SCOPE 3.4, 71/10/01, BY 
* 
*         ALAN MCDEARMON     EVERYTHING EXCEPT ITEMS BELOW. 
*         P.M. OVERELL       MAP ROUTINE. 
* 
* 
*         ACKNOWLEDGMENTS 
* 
*         G.R. MANSFIELD     MACE C.P. LOADER DESIGN FROM WHICH THIS
*                            LOADER BEGAN.  ALSO I/O AND VARIOUS OTHER
*                            SUBROUTINES. 
* 
* 
*         MODIFIED IN AUTUMN, 1974, TO SERVE AS THE SINGLE LOADER FOR 
*         NOS 1.0, KRONOS 2.1, AND SCOPE 3.4 BY:                               .
* 
*         GREGG TOWNSEND     OVERLAY GENERATION, MAP ROUTINE
*         SIGMUND MALEK      DESIGN AND SYSTEM INTERFACE. 
*         DICK LARSON        NOS/KRONOS LIBRARY SEARCH AND SYSTEM MODS
*         JIM LANGE          NOS/KRONOS LIBRARY SEARCH AND SYSTEM MODS
*         C. J. LABATE       SYSTEM INTERFACE, SUPPORTING PROGRAMS
* 
*         MODIFIED IN SUMMER OF 1975 TO SERVE AS THE COMMON SEGMENT 
*         LOADER FOR NOS 1.0, NOS/BE 1.0, KRONOS 2.1, AND SCOPE 3.4 
*         BY G. EDWARD LOGG.
* 
*         MODIFIED IN 1975 TO SERVE AS CAPSULE GENERATOR AND STATIC 
*         CAPSULE LOADER IN SUPPORT OF *FDL* BY C. J. LABATE. 
          SPACE  4,8
**             THIS PROGRAM IS THE MAIN COMPONENT OF THE LOADER.  IT
*         CAN LOAD EITHER RELOCATABLE OR ABSOLUTE PROGRAMS.  IT IS
*         USED ONLY FOR CONTROL-CARD-INITIATED LOADS.  ANOTHER SIMILAR
*         PROGRAM (*LOADU*) IS USED FOR USER-CALL-INITIATED LOADS.  THE 
*         LOADER PORTION OF THE SCOPE ERS SHOULD BE CONSIDERED A
*         SUPPLEMENTARY REFERENCE, SINCE NO ATTEMPT HAS BEEN MADE TO
*         INCLUDE ALL OF THE ERS MATERIAL IN THE INTERNAL DOCUMENTATION 
*         WHICH FOLLOWS.
          SPACE  10,20
**        +++++++++++++++++++++++ 
*         + CODING CONVENTIONS. + 
*         +++++++++++++++++++++++ 
* 
* 
* 
*         1) LOCATION FIELD BEGINS IN COLUMN 2. 
* 
*         2) OPERATION FIELD BEGINS IN COLUMN 11. 
* 
*         3) OPERAND FIELD BEGINS IN COLUMN 18. 
* 
*         4) COMMENTS FIELD BEGINS IN COLUMN 30.
* 
*         6) AN ALL-BLANK LINE FOLLOWS ANY UNCONDITIONAL JUMP.
*            *SPACE*, *EJECT*, OR *TITLE* CARDS SUFFICE FOR THIS NEED.
* 
*         7) A GROUP OF ONE OR MORE COMMENT LINES (* IN COLUMN 1) IS
*            BOTH PRECEEDED AND FOLLOWED BY ONE OR MORE BLANK LINES.
*            *SPACE*, *EJECT*, OR *TITLE* CARDS SUFFICE FOR THIS NEED.
* 
*         8) ANY MNEMONIC NAME WHICH APPEARS IN COMMENT INFORMATION IS
*            BRACKETED BY ASTERISKS.  EXAMPLE:  THE ROUTINE *SYS=* IS 
*            CALLED BY *RDW=* WHILE PROCESSING A *LOAD* OR *SLOAD*
*            REQUEST. 
* 
*         9) THE IMS IS INCLUDED IN THE LISTING AND IS OF THE FORMAT TO 
*            BE USED AS INPUT TO THE DOCUMENTATION PROGRAM *DOCK*.  AS
*            A RESULT, THIS MATERIAL COMPOSES MOST OF THE LISTING 
*            COMMENT LINES.  NO MATTER HOW SMALL THE MODIFICATION TO
*            THE CODE, THOUGHT SHOULD BE GIVEN TO KEEPING THE IMS 
*            MATERIAL UP-TO-DATE. 
* 
*         10) FOR MORE INFORMATION ABOUT DESIRED CONVENTIONS TO WHICH 
*             THE LOADER ADHERES (AND SOME NOT COMPLETELY FOLLOWED),
*             THE FOLLOWING DOCUMENTS SERVE AS REFERENCE:                      .
* 
*                A)   CODING  -  A CODING CONVENTION. 
*                B)   DOCK  -  DOCUMENTATION PROCESSOR. 
          SPACE  4,8
**        +++++++++++++++++++ 
*         + REGISTER USAGE. + 
*         +++++++++++++++++++ 
* 
* 
*         1) B1 IS ALWAYS TO BE LEFT EQUAL TO ONE (1).  ALL SUBROUTINES 
*            EXPECT THIS TO BE THE CASE AT ENTRY, EVEN IF NOT 
*            SPECIFICALLY STATED IN THE ENTRY INFORMATION.  NO CODE 
*            SHOULD CHANGE B1 UNLESS ALL OTHER B-REGISTERS ARE BEING
*            USED, AND THEN, IT MUST BE RESTORED IMMEDIATELY. 
* 
*         2) WITH VERY FEW EXCEPTIONS, ALL SUBROUTINES PRESERVE THE 
*            A0, X0, A5, AND X5 REGISTERS.  FOR SUBROUTINES WHICH DO NOT
*            REQUIRE THE USE OF MANY REGISTERS, THEY SHOULD REGARD THE
*            FOLLOWING REGISTERS AS THOSE WHICH ARE LEAST LIKELY TO BE
*            EXPECTED TO BE SAVED 
* 
*                X1, X2, X6, X7.
*                A1, A2, A6, A7.
*                B2, B3.
* 
*         3) THE SUBROUTINE DESCRIPTIONS OF THE REGISTERS USED DO NOT 
*            NECESSARILY INCLUDE THE REGISTERS USED BY THE SUBROUTINES
*            WHICH THAT SUBROUTINE CALLS.  FOR EXAMPLE, TO FIND ALL THE 
*            REGISTERS USED DURING A CALL TO *CTAB*, IT IS NECESSARY TO 
*            CHECK THE REGISTER USAGE DESCRIPTIONS FOR *CTAB* AND *AMU*.
          SPACE  4,8
**        ++++++++++++++++++++++
*         + MEMORY MANAGEMENT. +
*         ++++++++++++++++++++++
* 
* 
*              FOR ALL CONTROL-CARD-INITIATED LOADS, THE LOADABLE AREA
*         IS DEFINED TO BE THE REMAINDER OF THE FIELD LENGTH BEGINNING
*         AT RA+100B.  A TABLE MANAGEMENT SCHEME IS USED WHICH MAKES USE
*         OF THIS ENTIRE AREA.  THE LOADER IS PLACED BY *1AJ* 
*         BEGINNING AT RA+100B.  NOTE THE MANNER IN WHICH THIS FACT 
*         STEMS FROM THE DEFINITION OF THE SYMBOL *BASE* (=100B). 
* 
*              THE GENERAL CORE LAYOUT CONSISTS OF THE REQUIRED LOADER
*         CODE, FOLLOWED BY THE I/O BUFFER, FOLLOWED BY THE MANAGE
*         TABLE SPACE WHICH CONSISTS OF THE REMAINDER OF THE LOADABLE 
*         AREA.  THE CORE IMAGE IS BUILT IN THE FIRST MANAGE TABLE, 
*         AS THIS HAS THE ADVANTAGE OF NORMALLY AVOIDING THE MOVING OF
*         THIS TABLE, WHICH IS USUALLY THE LONGEST.  IF THE MANAGE
*         TABLES RUN OUT OF AVAILABLE SPACE, THE LOADER WILL ATTEMPT TO 
*         INCREASE THE FIELD LENGTH.
* 
*              DESPITE THE FACT THAT *LOADER* RESIDES AT RA+100B, THE 
*         CORE IMAGE IS BUILT SO AS TO EXECUTE AT RA+100B.  THE LAST
*         THING DONE PRIOR TO EXECUTION IS TO PLACE A SMALL PROGRAM 
*         (ABOUT 20B WORDS) AT THE TOP OF THE FIELD LENGTH.  THIS CODE
*         MOVES THE CORE IMAGE TO RA+100B, PRESETS REMAINING CORE, AND
*         ENTERS EXECUTION. 
          SPACE  4,8
**        ++++++++++++++++++++++++++++++++++++++++++
*         + GENERAL DESCRIPTION OF LOAD PROCEDURE. +
*         ++++++++++++++++++++++++++++++++++++++++++
* 
* 
*              THIS SECTION DESCRIBES VERY BRIEFLY HOW A LOAD IS
*         PERFORMED AND INTRODUCES THE MAIN ROUTINES INVOLVED.  THIS IS 
*         THE ONLY SECTION WHICH DESCRIBES THE OVERALL PROCESS IN 
*         CHRONOLOGICAL ORDER, SINCE SUBSEQUENT COMPONENT DESCRIPTIONS
*         APPEAR IN THE ORDER THAT THEY APPEAR IN THE LISTING.  THE 
*         VARIOUS ROUTINES WITHIN *LOADER* ARE ORDERED IN SUCH A MANNER 
*         THAT CORE REQUIREMENTS ARE MINIMIZED. 
* 
*         1)   INITIALIZATION 
* 
*              A.   *LOADER* IS ENTERED AT ITS INITIALIZATION ROUTINE,
*                   CALLED *INIT*.  AT THIS TIME, OPTIONS ARE PICKED UP 
*                   AND VARIOUS TABLES ARE INITIALIZED. 
* 
*              B)   ALL CONTROL CARDS WHICH ARE PART OF THE LOAD
*                   SEQUENCE ARE CRACKED AND A TABLE OF LOADER REQUESTS 
*                   IS BUILT.  THIS IS DONE BY *LOADC*.  AFTER THIS HAS 
*                   BEEN COMPLETED, THE AREA OCCUPIED BY BOTH *INIT* AND
*                   *LOADC* IS RELEASED FOR THE MANAGE TABLE AREA.
* 
*                   THIS STEP DOES NOT TAKE PLACE DURING USER-CALL
*                   LOADS, SINCE ALL LOADER REQUESTS ARE SPECIFIED IN 
*                   THE CALL. 
* 
*         2)   REQUEST PROCESSING 
* 
*              A)   AT THE END OF INITIALIZATION, CONTROL TRANSFERS TO
*                   *REQ* WHICH IS THE MAIN REQUEST PROCESSING ROUTINE. 
*                   THE PROCESSING OF EACH REQUEST INVOLVES *REQ* 
*                   CALLING AN APPROPRIATE ROUTINE (*LOAD*, *SLOAD*,
*                   ETC).  THE MAJORITY OF THE CODE IN THE LOADER IS
*                   INVOLVED DURING THIS TIME.
* 
*              B)   THE FINAL REQUEST TO BE PROCESSED IS EITHER 
*                   *EXECUTE* OR *NOGO*.  THIS INITIATES LOAD COMPLETION
*                   BY THE ROUTINE *CPL*. 
* 
*         3)   LOAD COMPLETION:                                                .
* 
*              A)   *CPL* PERFORMS MANY FUNCTIONS WHICH MUST BE DONE
*                   AFTER ALL REQUESTS HAVE BEEN PROCESSED.  THIS 
*                   INVOLVES THE USE OF SEVERAL LOAD COMPLETION 
*                   ROUTINES.  THE MOST SIGNIFICANT ARE THOSE WHICH 
*                   CONTROL THE LOADING OF ROUTINES FROM VARIOUS
*                   LIBRARIES IN ORDER TO FIND EXTERNALS WHICH HAVE NOT 
*                   YET BEEN ENCOUNTERED.  AGAIN, THE MAJORITY OF THE 
*                   LOADER CODE IS INVOLVED.
* 
*              B)   THE MAP ROUTINE IS A SEPARATE OVERLAY WHICH IS
*                   LOADED ONLY IF A MAP IS REQUIRED OR IF THERE
*                   WERE ANY ERRORS DURING THE LOAD.  IT CAN
*                   OVERLAY MUCH CODE THAT IS NO LONGER NEEDED, AND 
*                   HENCE, THE TOTAL CORE REQUIREMENTS FOR A LOAD WITH A
*                   MAP ARE NO GREATER THAN FOR A LOAD WITHOUT A MAP. 
* 
*                   IF A MAP IS TO BE WRITTEN DURING AN OVERLAY 
*                   GENERATION LOAD, THE MAP OVERLAY IS LOADED AND
*                   EXECUTED AFTER WRITING OUT EACH COMPLETED OVERLAY.
*                   IF THE LOAD IS NOT YET FINISHED, THE OVERWRITTEN
*                   CODE WILL THEN BE RELOADED AND LOADING WILL 
*                   CONTINUE. 
* 
*              C)   IF *EXECUTE* IS THE LAST REQUEST, *CPL* EXITS TO
*                   *EXP* TO PERFORM THE FINAL PLACEMENT OF THE CORE
*                   IMAGE AND BEGIN EXECUTION.
          SPACE  4
**        ++++++++++++++++++++++++++
*         + THE DEBUGGING VERSION. +
*         ++++++++++++++++++++++++++
* 
* 
*              THE INSTALLATION PARAMETER *IP.LDBG* CONTROLS THE
*         ASSEMBLY OF DEBUGGING CODE WITHIN THE LOADER.  WHEN THIS
*         SYMBOL IS SET NONZERO, THE FOLLOWING FEATURES ARE ENABLED:  
* 
*         1)   STATUS MESSAGES.  THE CURRENT STATUS OF THE LOAD IS
*              DISPLAYED ON THE B-DISPLAY -- MESSAGES SUCH AS 
*              *LOADING MYPROG  FROM LGO*, *SEARCHING SYSIO*, 
*              *WRITING OVERLAY*, AND SO FORTH.  IN DUMPS, THE LAST 
*              SUCH MESSAGE IS AVAILABLE IN *MSGL1* JUST FOLLOWING
*              THE TABLE POINTERS.
* 
*              IF SENSE SWITCH 5 IS ON, EACH MESSAGE WILL BE ISSUED TO
*              THE JOB DAYFILE TO TRACE THE FLOW OF CONTROL.
* 
*         2)   CODE MODIFICATION.  THE *LDPATCH* CARD ALLOWS CODE 
*              WITHIN THE LOADER OR ITS OVERLAYS TO BE CHANGED
*              A WORD AT A TIME, ALLOWING FOR QUICK TESTING OF
*              TINY MODIFICATIONS.  THIS CARD HAS TWO FORMS:  
* 
*                   LDPATCH(ADDR=VALUE) 
*                   LDPATCH(OVLNAME/ADDR=VALUE) 
* 
*              IN THE FIRST CASE, THE WORD IS MODIFIED WHEN THE CARD
*              IS READ; IN THE SECOND, EVERY TIME THE GIVEN OVERLAY 
*              IS LOADED. 
* 
*              THE LOADER DISABLES ITS SYSTEM PRIVILEGES UPON READING 
*              ONE OF THESE CARDS AND BEFORE MODIFYING ANY CODE.
* 
*         3)   P-REGISTER SAMPLING.  IF SENSE SWITCH 6 IS ON, 
*              *SMP* (KRONOS) OR *SPY* (SCOPE) WILL BE CALLED TO
*              SAMPLE THE P-REGISTER WHILE THE LOADER EXECUTES. 
*              NOTE THAT *PSAMP* (KRONOS) OR *PRNTSPY* (SCOPE) MUST 
*              LATER BE CALLED BY CONTROL CARD TO PRINT THE RESULTS.
* 
*         4)   DUMPS.  THE *DMP* CONTROL CARD REQUEST WILL
*              BE HONORED WITHIN A LOAD SEQUENCE. 
          SPACE  4,30 
**        ++++++++++++++++++++++
*         + PROGRAM STRUCTURE. +
*         ++++++++++++++++++++++
* 
* 
*              THE FOLLOWING IS A DIAGRAM OF THE GENERAL CORE LAYOUT OF 
*         *LOADER* AND *LOADU*.  THE NAMES OF THE MOST SIGNIFICANT
*         ROUTINES ARE INCLUDED IN THE ORDER THEY APPEAR. 
* 
*           GENERAL                   SPECIFIC               NAME 
* 
*         ? *********** ? ******************************** ? ****** ? 
*         ?             ?                                  ?        ? 
*         ?             ? FET                              ?L       ?(A)
*         ?PERMANENT    ? SMALL ABSOLUTE LOAD              ?SETFET= ? 
*         ?SUBROUTINES  ? SUBROUTINES                      ?ABORT   ? 
*         ?SUBROUTINES  ?                                  ?SKIP=   ? 
*         ?             ?                                  ?RSF     ? 
*         ?             ?                                  ?RPV     ? 
*         ?             ?                                  ?CPM     ? 
*         ?             ?                                  ?WNB=    ? 
*         ?             ?                                  ?SYS=    ? 
*         ?             ?                                  ?LOADA   ? 
*         ?             ?                                  ?        ? 
*         ?FIXED LENGTH ? MANAGE TABLE POINTERS            ?        ? 
*         ?STORAGE AREA ? CONSTANTS, FLAGS                 ?FTAB    ? 
*         ?             ?                                  ?        ? 
*         ?MORE         ? I/O SUBROUTINES                  ?CIO=    ? 
*         ?             ?                                  ?RDW=    ? 
*         ?             ?                                  ?WTW=    ? 
*         ?             ?                                  ?WTC=    ? 
*         ?             ? SYSTEM REQUEST SUBROUTINES       ?RCL=    ? 
*         ?             ?                                  ?RCL=    ? 
*         ?             ?                                  ?MSG=    ? 
*         ?             ?                                  ?DMP=    ? 
*         ?             ?                                  ?MEM=    ? 
*         ?             ? ECS SUBROUTINES                  ?RE=     ? 
*         ?             ?                                  ?WE=     ? 
*         ?             ?                                  ?REW=    ? 
*         ?             ?                                  ?WEW=    ? 
*         ?             ? MISCELLANEOUS SUBROUTINES        ?CDD=    ? 
*         ?             ?                                  ?TCV=    ? 
*         ?             ?                                  ?SFN=    ? 
*         ?             ?                                  ?LFNCK   ? 
*         ?             ?                                  ?EPNCK   ? 
*         ?             ?                                  ?CFA     ? 
*         ?             ?                                  ?IOERR=  ? 
*         ?             ? TABLE MANAGEMENT SUBROUTINES     ?ATS=    ? 
*         ?             ?                                  ?TOV     ? 
*         ?             ?                                  ?ATF=    ? 
*         ?             ?                                  ?ADW=    ? 
*         ?             ?                                  ?AMU=    ? 
*         ?             ?                                  ?MTO=    ? 
*         ?             ?                                  ?APS=    ? 
*         ?             ?                                  ?CTAB=   ? 
*         ?             ?                                  ?MVE=    ? 
*         ?             ? PRESET ROUTINES                  ?PSM=    ? 
*         ?             ?                                  ?PSECS=  ? 
*         ?             ? OVERLAY LOAD ROUTINE             ?LOV     ? 
*         ?             ?                                  ?LMO     ? 
*         ?             ?                                  ?XEQ     ? 
*         ?             ? ERROR ROUTINE                    ?ERROR   ? 
*         ?             ?                                  ?        ? 
*         ?LOAD         ? MAIN ROUTINE                     ?CPL     ? 
*         ?COMPLETION   ?                                  ?EXP     ? 
*         ?CODE         ? WRITE ABSOLUTE OVERLAY           ?WOV     ?(B)
*         ?             ? SATISFY EXTERNALS                ?SAT     ? 
*         ?             ? SEARCH LIBRARY DIRECTORY         ?SLD     ? 
*         ?             ? LOAD LIBRARY PROGRAMS            ?LLP     ? 
*         ?             ? LINK BYTE CHAINS                 ?LBC     ? 
*         ?             ? FILL BYTE CHAINS                 ?FBC     ? 
*         ?             ? COMPLETE READ                    ?CPR     ? 
*         ?             ? SUBSTITUTE EXTERNAL NAME         ?SEN     ? 
*         ?             ? PROCESS REPLICATIONS             ?RPL     ? 
*         ?             ? UNSATISFIED EXTERNALS            ?USX     ? 
*         ?             ? WRITE LOADER INFORMATION         ?WLI     ? 
*         ?             ? BUILD 54-TABLE HEADER            ?B54     ? 
*         ?             ?                                  ?        ? 
*         ?REQUEST      ? MAIN ROUTINES                    ?STARTRQ ? 
*         ?PROCESSORS   ?                                  ?REQ     ? 
*         ?             ?                                  ?REQD    ? 
*         ?             ?                                  ?SETADR  ? 
*         ?             ? INDIVIDUAL REQUESTS              ?LOAD    ? 
*         ?             ?                                  ?LIBLOAD ? 
*         ?             ?                                  ?CMLOAD  ? 
*         ?             ?                                  ?SATISFY ? 
*         ?             ?                                  ?LIB     ? 
*         ?             ?                                  ?MAP     ? 
*         ?             ?                                  ?PRESET  ? 
*         ?             ?                                  ?ERR     ? 
*         ?             ?                                  ?REWIND  ? 
*         ?             ?                                  ?USEP    ? 
*         ?             ?                                  ?USE     ? 
*         ?             ?                                  ?SUBST   ? 
*         ?             ?                                  ?OMIT    ? 
*         ?             ?                                  ?FILES   ? 
*         ?             ?                                  ?DMP     ? 
*         ?             ?                                  ?ENTRY   ? 
*         ?             ?                                  ?        ? 
*         ?LOAD INPUT   ? CONTROL ROUTINE                  ?RDR     ? 
*         ?PROCESSORS   ? LOADER DIRECTIVE                 ?CKD     ? 
*         ?             ? TABLE PROCESSORS                 ?LDSET   ? 
*         ?             ?                                  ?PREFIX  ? 
*         ?             ?                                  ?PIDL    ? 
*         ?             ?                                  ?ENTR    ? 
*         ?             ?                                  ?TEXT    ? 
*         ?             ?                                  ?XTEXT   ? 
*         ?             ?                                  ?FILL    ? 
*         ?             ?                                  ?XFILL   ? 
*         ?             ?                                  ?LINK    ? 
*         ?             ?                                  ?XLINK   ? 
*         ?             ?                                  ?REPL    ? 
*         ?             ?                                  ?XREPL   ? 
*         ?             ?                                  ?XFER    ? 
*         ?             ?                                  ?OVL53   ? 
*         ?             ?                                  ?OVL51   ? 
*         ?             ?                                  ?OVL50   ? 
*         ?             ? LOAD INPUT SUBROUTINES           ?SKT     ? 
*         ?             ?                                  ?SKP     ? 
*         ?             ?                                  ?CKC     ? 
*         ?MORE         ? ENTER BLOCK DEFINITION           ?EBD     ? 
*         ?SUBROUTINES  ? ENTER LINK TABLE                 ?ELT     ? 
*         ?             ?                                  ?        ? 
*         ?INITIALIZER  ? CARD IMAGE SCANNER               ?GNE     ?(C)
*         ?             ?                                  ?CARD    ? 
*         ?             ?                                  ?LOADC   ? 
*         ?             ? INITIALIZATION                   ?INIT    ? 
*         ?             ? SELF-RELOCATION                  ?REL     ?(D)
*         ?             ?                                  ?        ? 
*         ? *********** ? ******************************** ? ****** ? 
* 
*         NOTES  (A)  THIS IS THE BEGINNING OF THE LOADABLE AREA, AND 
*                     IS DEFINED BY THE LOCATION *BASE*.
*                (B)  THE APPROPRIATE MAP OVERLAY (*LOADM* OR *LOADUM*) 
*                     IS LOADED HERE IF NEEDED.  ON AN OVERLAY
*                     GENERATION LOAD, *LOADZ* CAN BE LOADED HERE TO
*                     RESTORE THE CODE OVERWRITTEN BY *LOADM*.
*                (C)  THE CARD IMAGE SCANNER OVERLAY IS LOADED HERE WHEN
*                     NECESSARY IF CARD IMAGE DIRECTIVES ENCOUNTERED. 
*                     ON AN OVERLAY GENERATION LOAD, *LOADG* WILL BE
*                     LOADED IMMEDIATELY BEYOND *LOADC*.
*                (D)  THE SELF-RELOCATION ROUTINE IS IN *LOADU* ONLY. 
          SPACE  4,8
**        ++++++++++++++++++++++++
*         + USE OF COMMON DECKS. +
*         ++++++++++++++++++++++++
* 
* 
*              MOST OF THE CODE IN *LOADER* AND *LOADU* RESIDES IN
*         *UPDATE* COMMON DECKS.  THIS STRUCTURE WAS CHOSEN BECAUSE 
*         NEARLY ALL OF THE CODE MUST EXIST IN MORE THAN ONE ROUTINE. 
*         IT IS INTENDED TO ACCOMPLISH ONLY ONE OBJECTIVE:  TO REDUCE 
*         THE TOTAL NUMBER OF SOURCE STATEMENTS REQUIRED.  DUE TO THE 
*         OVERALL COMPLEXITY, SUPER-MODULARITY OF THIS COMMON DECK
*         STRUCTURE IS NOT POSSIBLE; IT WOULD NOT BE PRACTICAL TO WRITE 
*         A NEW ROUTINE AND USE ONE OF THESE COMMON DECKS WITHOUT 
*         CONSIDERABLE CHANGES.  THE GENERAL STRUCTURE IS AS FOLLOWS:          .
* 
*         1)   *LOADER* IS THE MAIN DECK COMPOSING THE CONTROL-CARD-
*              INITIATED LOADER, AND *LOADU* IS ITS USER-CALL 
*              COUNTERPART.  THESE ARE NOT COMMON DECKS.
* 
*         2)   THE COMMON DECKS *LDRCOM* AND *IPARAMS* ARE CALLED BY
*              BOTH *LOADER* AND *LOADU*.  ALSO NOTE THAT *LDRCOM*
*              IS CALLED BY THE USER-CALL INTERFACE ROUTINE, *UCLOAD*.
* 
*         3)   THE DECKS *BLOAD1*, *BLOAD2*, AND *BLOAD3* CONTAIN MOST
*              OF THE LOADER CODE.  THEY ARE CALLED BY BOTH *LOADER*
*              AND *LOADU*.  THE GENERATED CODE IS NOT COMPLETELY 
*              IDENTICAL DUE TO CONDITIONAL CODE CONTROLLED BY *IFCARD* 
*              AND *IFUSER*.
* 
*         4)   THE DECK *BLOADC* COMPOSES THE CARD IMAGE SCANNING CODE
*              WHICH IS USED FOR THE PROCESSING OF BOTH CONTROL CARDS 
*              AND CARD IMAGE DIRECTIVES.  IT IS CALLED BY *BLOAD3* TO
*              FORM THE CARD IMAGE SCANNING CODE IN BOTH *LOADER* AND 
*              *LOADU*.  IT IS ALSO CALLED BY BOTH *LOADER* AND 
*              *LOADU* TO FORM THE CARD SCANNING OVERLAYS *LOADC* AND 
*              *LOADUC*, RESPECTIVELY.
* 
*         4A)  THE DECK *BLOADG* CONTAINS THE CODE NEEDED DURING
*              OVERLAY GENERATION LOADS.  IT IS CALLED BY *LOADER*. 
* 
*         4B)  THE DECK *BLOADS* CONTAINS THE CODE NEEDED DURING SEGMENT
*         GENERATION LOADS.  IT IS CALLED BY *LOADER*.
* 
*         5)   THE DECK *BLOADM* COMPOSES THE MAP GENERATION CODE.  IT
*              IS CALLED BY BOTH *LOADER* AND *LOADU* TO FORM THE MAP 
*              OVERLAYS *LOADM* AND *LOADUM*, RESPECTIVELY. 
* 
*         6)   THE DECK *LOADREL* COMPOSES THE SELF-RELOCATION CODE 
*              NEEDED AT THE END OF THE LOADER USER-CALL PROGRAMS 
*              *LOADU*, *LOADUC*, AND *LOADUM*. 
          SPACE  4,8
**        ++++++++++++++++++++++
*         + ENTRY INFORMATION. +
*         ++++++++++++++++++++++
* 
* 
*              FORMAT 1 - CALLED BY *1AJ*, *LDV* OR *LDR*.
* 
*         1)   THE A0 REGISTER CONTAINS THE CM FIELD LENGTH, AND THE
*              X0 REGISTER CONTAINS THE ECS FIELD LENGTH. 
* 
*         2)   THE IMAGE OF THE FIRST LOADER CONTROL CARD IN THE LOAD 
*              SEQUENCE IS IN RA+70B THROUGH RA+77B.
* 
*         3)   THE FOLLOWING IS SET UP STARTING AT FL-1 FOR SCOPE OR
*              NOS/BE.
* 
*              FL-1     VFD   42/LIBNAME1,18/LNT1 
*                       .     . 
*                       .     . 
*              FL-N     VFD   42/LIBNAMEN,18/LNTN 
*              FL-N-1   VFD   12/CP,12/JFL,12/NFL,12/FN,12/-0 
* 
*              LIBNAME - ONE OF N LIBRARIES COMPOSING THE GLOBAL
*                        LIBRARY SET.  IF THE GLOBAL LIBRARY SET IS 
*                        NULL, THERE ARE NO WORDS OF THIS FORMAT. 
* 
*              LNT     - ORDINAL IN THE LIBRARY NAME TABLE (LNT) OR 77B 
*                        IF THE LIBRARY IS A USER LIBRARY.  THIS FIELD
*                        IS CURRENTLY IGNORED BY THE LOADER.
* 
*              CP      - CONTENTS OF BYTE ZERO OF CONTROL POINT AREA
*                        WORD *W.CPLDR1*.  THIS CONTAINS VARIOUS LOADER 
*                        OPTIONS SUCH AS THE MAP AND REDUCE OPTIONS.
* 
*              JFL     - JOB CARD FL/100B.
* 
*              NFL     - NOMINAL FL/100B. 
* 
*              FN      - MEANINGFUL ONLY IF THE CARD IMAGE IN RA+70B IS 
*                        THAT OF A PROGRAM CALL.  IF FN = 0, THE PROGRAM
*                        CALL SPECIFIES A LIBRARY ENTRY POINT.  IF FN 
*                        IS NON-ZERO, THEN THE PROGRAM CALL SPECIFIES 
*                        A LOCAL FILE FOR WHICH *FN* IS THE FNT ADDRESS.
*                        THE LOADER USES THIS FIELD ONLY AS A FLAG
*                        WHETHER OR NOT THE LOAD IS FROM A LOCAL FILE.
* 
* 
*              FORMAT 2 - CALLED BY *LDV* OR *LDR*. 
* 
*         1)   A0 AND X0 ARE AS DESCRIBED ABOVE.
* 
*         2)   RA+64B IS USED TO DETERMINE THE TYPE OF REQUEST. 
* 
*              LOACL FILE LOAD. 
*              RA+64B   VFD   42/LFN,18/**
* 
*              LFN = LOCAL FILE TO BE LOADED. 
* 
*              REQUEST TABLE CALL.
*              RA+64B   VFD   12/0,18/LEN,12/0,18/FWA 
* 
*              LEN = LENGTH OF TABLE. 
*              FWA = FWA OF LOADER REQUEST TABLE TO BE USED INSTEAD OF
*                    CRACKING CONTROL STATEMENTS.  FWA .GE. 2 AND 
*                    FWA+LEN .LE. 54B.
* 
*         3)   ENTRY IS AT *LDR=* AND THE LOAD COMPLETED FLAG, BIT
*              29 OF RA+67B, IS SET.
* 
*         4)   RA+70B THRU RA+77B CONTAINS THE LAST CONTROL CARD IMAGE. 
* 
* 
*              FORMAT 3 - CALLED TO LOAD A LOCAL FILE BY *1AJ*. 
*                       - VALID FOR KRONOS/NOS ONLY.
* 
*         1)   A0 AND X0 ARE AS DESCRIBED ABOVE.
* 
*         2)   THE FIRST LOADER CONTROL CARD IMAGE IS PASSED AS 
*              DESCRIBED ABOVE. 
* 
*         3)   ENTRY IS AT *LDR=* AND THE LOAD COMPLETED FLAG, BIT
*              29 OF RA+67B, IS NOT SET.
* 
* 
*              FORMAT 4 - CALLED TO LOAD A RELOCATABLE FROM THE *CLD*.
*                       - VALID UNDER KRONOS/NOS ONLY.
* 
*         1)   A0 AND X0 ARE AS DESCRIBED ABOVE.
* 
*         2)   THE ENTIRE COMMUNICATION AREA HAS ALREADY BEEN 
*              COMPLETELY SETUP FOR US. 
* 
*         3)   ENTRY IS AT *SLDR=*. 
* 
          SPACE  4,8
****
*CALL LDRCOM
****
 IPLBUF   SET    IP.LBUF-1
 IPLBUF   SET    IPLBUF/64*64 
          IPARAMS 
 IP.MECS  CEQU   7777B       IF NO IP.MECS IN IPTEXT FORCE ECS CODE 
 IP.PD    CEQU   6           IF NO IP.PD IN IPTEXT FORCE 6 LPI
 IP.PS    CEQU   60D         IF NO IP.PS IN IPTEXT FORCE 60 LINES/PAGE
          SPACE  4,8
          COMMENT (L "LEVEL").
          IFMACS CARD        INDICATE CARD-CALL LOADER
  
          IFGLSMAC           DEFINE *IFGLS* AND *IFNOTGLS* OPSYNS 
*CALL BLOAD1
*CALL BLOAD2
*CALL BLOAD3
  
**DOCK    LIST   OFF
 BLOADC   TITLE  EXTERNAL REQUEST SCANNER OVERLAY.
          IDENT  LOADC,LOCC+1,LOCC+1,1,1
          ORG    LOCC+1 
  
          COMMENT LOADER - PROCESS CARD IMAGES. 
          SPACE  5
 SCAN'    SET    1
          QUAL   LOADCC 
*CALL BLOADC
  
 LOCG     EQU    /LOADC/BREAK 
  
**DOCK    LIST   *
          TITLE  OVERLAY GENERATION CODE. 
          IDENT  LOADG,LOCG+1,LOCG+1,1,2
*CALL BLOADG
          USE    // 
 END      BSS    0
          SPACE  4
          QUAL
          TITLE  SEGMENT LOAD GENERATION. 
          IDENT  LOADS,LOCG+1,LOCG+1,1,3
*CALL BLOADS
          QUAL
          TITLE  *LOADZ* OVERLAY. 
          IDENT  LOADZ,LOCL+1,LOCL+1,1,0
          COMMENT LOADER - RESUME OVERLAY GENERATION. 
  
**        +++++++++++++++++++++ 
*         +  *LOADZ* OVERLAY  + 
*         +++++++++++++++++++++ 
* 
*              THIS OVERLAY IS COMPOSED OF THE COMMON DECKS *BLOAD2*, 
*         *BLOADC*, AND *BLOADG*.  THUS IT CONSISTS OF ALL THE CODE 
*         FROM *LOADER* BETWEEN THE SYMBOLS *LOCL* AND *LOCC* 
*         PLUS ALL THE CODE FROM THE OVERLAYS *LOADC* AND *LOADG*,
*         ALL AT THE SAME LOCATIONS AS IN THOSE OVERLAYS. 
* 
*              *LOADZ* IS CALLED WHEN THOSE OVERLAYS HAVE BEEN LOADED 
*         ONCE, THEN OVERWRITTEN BY *LOADM* (THE MAP WRITER), AND ARE 
*         NOW NEEDED AGAIN.  THIS HAPPENS WHEN *OVERLAY* CARDS SPECIFY
*         THE GENERATION OF MORE THAN JUST ONE (0,0) OVERLAY. 
* 
*              SINCE *LOADZ* MERELY COMBINES INTO ONE OVERLAY THREE 
*         SECTIONS OF CODE WHICH HAVE ALREADY BEEN LISTED, *LOADZ*
*         ITSELF WILL NOT BE LISTED.  BETWEEN THE TWO FOLLOWING *LIST*
*         CARDS ARE 
*                *CALL BLOAD2 
*                                  IDENT
*                                  ORG    LOCC+1
*                                  QUAL   LOADCC
*                *CALL BLOADC 
*                                  IDENT
*                *CALL BLOADG 
  
  
**DOCK    LIST   OFF
          LIST   -L,-R
*CALL BLOAD2
          IDENT 
          ORG    LOCC+1 
          QUAL   LOADCC 
*CALL BLOADC
          IDENT 
*CALL BLOADG
          LIST   *
**DOCK    LIST   *
 MAP      TITLE  LOAD MAP - MAIN CONTROL. 
          IDENT  LOADM,LOCL+1,LOCL+1,2,0
          ORG    LOCL+1 
          QUAL   LOADM
  
          COMMENT LOADER - WRITE LOAD MAP.
*CALL BLOADM
          QUAL
 MAPEND   BSS    0           END OF MAP ROUTINE 
          ERRPL  MAPEND-LOCC IF *LOADM* IS TOO BIG
          ERRNG  LOCC+IP.LBUF-MAPEND-IP.MBUF
          END 
