*DECK NDLOVLD 
          IDENT  NDLOVLD
          ENTRY  NDLOVLD
          COMMENT OVERLAY LOADER
          TITLE   OVERLAY LOADER
*#
*1D   OVERLAY LOADER
* D   NDLOVLD 
* 
*     1. PROC NAME           AUTHOR          DATE 
*        NDLOVLD             J.E.JONES       78/07/07 
*                            A.T.GERMOND     79/07/03 
*                            D.K.ENDO        81/07/29 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        LOADS OVERLAYS.
* 
*     3. METHOD 
* 
*        DETERMINE IF PRIMARY OR SECONDARY OVERLAY IS REQUESTED.  IF
*        THE OVERLAY HAS ALREADY BEEN LOADED JUST SET UP THE RJ AND 
*        JUMP TO IT.  OTHERWISE, LOAD IT.  OVERLAY LOAD ERRORS CAUSE
*        PROC TO ABORT.  CLEAR THE SECONDARY DATA WORDS TO ZERO 
*        WHEN LOADING A NEW PRIMARY.  ALSO SAVE THE PRIMARY RETURN
*        ADDRESS TO PRESERVE IT IF SECONDARIES ARE LATER LOADED.
*        UPON RETURN FROM THE OVERLAY, FOR PRIMARIES, RESTORE THE 
*        RETURN ADDRESS IN CASE IT HAS BEEN CLOBBERED BY SECONDARY
*        OVERLAY LOADS.  FOR SECONDARIES, RESTORE THE PRIMARY NAME
*        IN CUROVL.  RETURN.
* 
*     4. ENTRY PARAMETERS 
*        OVL PARAM = 42/OVL NAME,6/0,6/PRI,6/SEC
* 
*     5. EXIT PARAMETERS
*        CUROVL        CURRENT OVERLAY SET IN EXTERNAL REF AREA 
* 
*     6. COMDECKS CALLED
*        NONE.
* 
*     7. CALLED BY
* 
*     8. ROUTINES CALLED
*        FOL.LOV             LOADER 
*        MESSAGE             ISSUE DAYFILE MESSAGE
* 
*     9. DAYFILE AND ERROR MESSAGES 
*        XXXXXXX OVERLAY LOAD ERROR.
*#
 NDLOVLD  BSSZ   1
          SA0    A1+1        SAVE PARAMETER LIST
          SA1    X1          GET OVERLAY NAME 
          BX6    X1 
          SA6    CUROVL      SAVE THE CURRENT OVERLAY 
          SB1    1
          SB2    B0          INITIALIZE OVERLAY INDEX 
          MX0    -6 
          BX3    -X0*X1      REQUESTED OVERLAY LEVEL
          ZR     X3,IDXOK 
          SB2    B1          B2=0 - PRIMARY   B2=1 - SECONDARY
  
 IDXOK    SA3    OVLLVL+B2   GET CURRENTLY LOADED OVL AT REQ LEVEL
          BX6    X1-X3
          NE     B2,TESTLD   JIF SECONDARY
          SA2    NDLOVLD
          BX7    X2 
          SA7    PRIRET      SAVE PRIMARY RTN ADDR
 TESTLD   ZR     X6,SETRJ    OVERLAY ALREADY LOADED 
          NE     B2,LOADIT   JIF SECONDARY
          SX6    B0 
          SA6    OVLLVL+B1   CLEAR THE SECONDARY VALUES WHEN
          SA6    RJUMP+B1       LOADING A NEW PRIMARY 
 LOADIT   BX0    X1          SAVE X1 IN CASE OF ERRORS
          BX6    X1 
          SA6    OVLLVL+B2   SAVE OVERLAY NAME
          RJ     =XFOL.LOV
          NG     B7,LDERR 
          SX6    B7 
          SA6    RJUMP+B2    SAVE B7 FOR REENTRY
 SETRJ    BSS    0
          SA3    RJX
          MX0    6
          BX3    X3*X0       CLEAR OLD ADDRESS
          SA2    RJUMP+B2 
          LX2    30 
          BX6    X3+X2       PUT CALLEE ADDRESS IN RJ INSTRUCTION 
          SA6    A3 
          RJ     CLEAR       CLEAR INSTRUCTION STACK SO NEW RJ PICKED UP
 CLEAR    BSSZ   1
 RJN      SA1    A0 
 RJX      RJ     0           GOTO CALLEE  ** CODE MODIFIED ** 
          SA2    CUROVL      CHECK OVERLAY LEVEL
          MX0    -6 
          BX2    -X0*X2      OVERLAY LEVEL
          NZ     X2,RSOVL    JIF SECONDARY
          SA2    PRIRET 
          AX2    30 
          SB3    X2 
          JP     B3 
 RSOVL    SA2    OVLLVL 
          BX7    X2          RESTORE CUROVL TO PRIMARY
          SA7    CUROVL 
          EQ     NDLOVLD
 LDERR    BSS 
          BX1    X0          OVERLAY NAME 
          MX0    42 
          SA3    ERRMSG 
          BX6    X0*X1
          BX3    -X0*X3      CLEAR OLD NAME 
          BX6    X3+X6       OR IN OVERLAY NAME 
          SA6    A3 
          SX6    B7 
          SA6    LDRERR 
          MESSAGE ERRMSG,,RECALL
          ABORT 
 ERRMSG   DIS    ,*        OVERLAY LOAD ERROR.* 
 LDRERR   DATA   0
*         MAKE EXTERNAL SO CALLING PROC CAN USE IT
          ENTRY  CUROVL 
 CUROVL   BSSZ   1
 PRIRET   BSSZ   1           PRIMARY RETURN ADDRESS 
 OVLLVL   BSSZ   2           OVERLAY LEVEL
 RJUMP    BSSZ   2           TRANSFER ADDRESSES (B7)
  
          END 
