*DECK OVLLDR
          IDENT  OVLLDR 
          TITLE  OVLLDR - LOAD RHF OVERLAY. 
          SYSCOM B1 
*CALL COMCMAC 
  
          ENTRY  OVLLDR 
  
*                PARAMETERS 
  
          ENTRY  OVLNAME
          ENTRY  HHA
          ENTRY  OVL2FLG
          ENTRY  OVLPFWA
          ENTRY  OVLSFWA
  
**        OVLLDR - CALLS LDV TO LOAD OVERLAY THEN EXECUTES IT 
* 
          SPACE  4
**        THIS ROUTINE CALLS LDV TO LOAD THE REQUESTED OVERLAY
*         THEN EXECUTES IT.  THIS ROUTINE IS SPECIALLY DESIGNED 
*         FOR USE BY SYMPL PROGRAMS.  OVLLDR IS A PROCEDURE THAT
*         SHOULD BE DECLARED IN SYMPL AS: 
* 
*         XREF
*           BEGIN 
*           PROC OVLLDR;
*           END 
* 
*         SYMPL REFERENCE FOR THIS ROUTINE: 
* 
*         OVLLDR("OVERLAY NAME", PARAMETER LIST ADDRESS); 
* 
*         ENTRY - A1 IS ADDRESS OF PARAMETER LIST 
*                 X1 IS OVERLAY NAME
*                 FLAG INDICATING PRIMARY OR SECONDARY OVERLAY
*                 FIRST WORD ADDRESS OF OVERLAY 
*                 ADDRESS OF WAIT ROUTINE IF SECONDARY OVERLAY
* 
*         PROCESS - IF OVERLAY LOADED 
*                     EXECUTE OVERLAY 
*                   ELSE
*                     DETERMINE IF PRIMARY OR SECONDARY OVERLAY 
*                     SET UP LOADER PARAMETERS
*                     CALL LDV
*                     IF SECONDARY OVERLAY
*                       CALL WAIT 
*                     EXECUTE OVERLAY 
*                   RETURN
* 
*         EXIT - OVERLAY EXECUTED 
* 
*         NOTE - OVERLAY NAME MUST BE OF THE FORM 
*                   XXXPPSS 
*                WHERE XXX IS COMPONENT NAME, 
*                      PP  IS THE TWO OCTAL DIGIT PRIMARY LEVEL NUMBER, 
*                      SS  IS THE TWO OCTAL DIGIT SECONDARY LEVEL NO. 
          SPACE  4,10 
          IF     -DEF,RA.LDR,1
 RA.LDR   EQU    LDRR 
          SPACE  4
 OVLLDR   SUBR
          SB1    1
          SX6    A1+1              SAVE PARAMETER LIST ADDRESS
          SA6    OVLPARAM 
  
*         IF OVERLAY IS ALREADY LOADED SKIP THE LOAD
  
          SA2    X1                NAME OF OVERLAY TO LOAD
          MX0    42 
          BX6    X0*X2
          SA3    OVLNAME           NAME OF PREVIOUS OVERLAY 
          BX2    X3-X6             COMPARE PREVIOUS TO NEW
          ZR     X2,EXEC           IF OVERLAY ALREADY LOADED
          SA6    A3                PUT NAME IN LOADER PARAMETER LIST
  
*         SET UP LOADER PARAMETER LIST TO LOAD OVERLAY
  
          MX0    4*6
          LX6    3*6               SHIFT OVER 'XXX' 
          BX5    X0*X6             MASK 'PPSS'
          SB7    B0                FLAG OCTAL CONVERSION
          RJ     =XDXB=            CONVERT DISPLAY CODE TO BINARY 
          LX6    12-0              SHIFT LEVEL NUMBERS OVER 
          SX4    2140B             N, U, V FLAGS = 1
          BX6    X4+X6             MERGE LEVEL NUMBERS AND FLAGS
          LX6    48-12             (X6) = 12/LEVEL NO,12/FLAGS,36/0 
          SA2    OVLSFWA           SECONDARY OVERLAY FWA
          SA3    OVL2FLG
          NZ     X3,OVL10          IF SECONDARY OVERLAY 
          SA2    OVLPFWA           PRIMARY OVERLAY FWA
 OVL10    BSS    0
          SA4    HHA               OVERLAY LWA
          SX4    X4                CLEAN OUT LWA
          LX4    18 
          BX6    X4+X6             ADD LWA
          BX6    X2+X6             ADD FWA
          SA2    LOADPL            CLEAR LOADER PARAMETER LIST STATUS 
          SA6    A2+B1             STORE SECOND WORD OF PARAMETER LIST
          MX0    42 
          BX6    X0*X2
          SA6    A2 
  
*         MAKE LOADER REQUEST TO LOAD OVERLAY 
  
          SA3    OVL2FLG
          NZ     X3,OVL20          IF SECONDARY OVERLAY 
          SYSTEM   LDV,RCL,LOADPL 
          EQ     EXEC 
  
*         CALL LDV WITHOUT RECALL - THEN SIMULATE RJ TO WAIT ROUTINE
  
 OVL20    BSS    0
          SA1    RA.LDR            GET LDV COMPLETION WORD
          SX6    B1 
          LX6    29-0 
          BX6    -X6*X1            CLEAR BIT 29 OF RA.LDR 
          SA6    A1 
 NOS      IFEQ   OS$NOS 
          SYSTEM LDX,,LOADPL
 NOS      ELSE
          SYSTEM   LDV,,LOADPL
 NOS      ENDIF 
          SA1    WAITPRM
          RJ     =XWAITR
  
  
*         SET UP RETURN AND ENTER OVERLAY 
  
 EXEC     BSS    0
          SA2    LOADPL+1          ENTRY POINT ADDRESS
          SB7    X2 
          SA2    OVLLDR            PLACE OVLLDR RETURN AT ENTRY POINT 
          BX6    X2 
          SA6    B7 
          SA1    OVLPARAM          PARAMETER LIST ADDRESS FOR OVERLAY 
          SA1    X1 
          JP     B7+1              SIMULATE RJ TO OVERLAY 
  
  
*         LOADER PARAMETER LIST ( 3 WORD VARIETY )
  
 LOADPL   VFD    42/0LSYSOVL,18/0  LIBRARY NAME 
          CON    **                12/LEVEL,12/FLAGS,18/LWA,18/FWA
 OVLNAME  BSSZ   1
  
*         OVERLAY LOADING PARAMETERS
  
 OVL2FLG  BSSZ   1                 SECONDARY OVERLAY FLAG 
 OVLSFWA  BSSZ   1                 SECONDARY OVERLAY FWA
 OVLPFWA  BSSZ   1                 PRIMARY OVERLAY FWA
 HHA      BSSZ   1                 HIGHEST HIGH ADDRESS 
 OVLPARAM BSSZ   1                 OVERLAY PARAMETER LIST ADDRESS 
 WAITPRM  VFD    60/ADDR           ADDRESS OF WORD WITH ADDRESS FOR WAIT
 ADDR     CON    RA.LDR            ADDRESS OF LDV COMPLETION BIT
  
          END 
