*         CTEXT  CTP$DFT_RESIDENT_ECM_NON_S0
*
*         THIS DECK DEFINES THE EXECUTE CIP MODULE FOR NON S0 MACHINES
 ECM      SPACE  4,15
**        ECM - EXECUTE CIP MODULE.
*
*         EXIT   RETURNS TO LOCATION *RCMRTN*.
*
*         USES   EI, T1, CM - CM+3, W0 - W3, *CALB*, *RDATA*.
*
*         CALLS  IIB, LOV, LSR, SPB, *TOEP*.
*
*         MACROS FINDCM, READMR, WRITMR.
*
*         NOTE   *2AP* REQUIRES THE OS BOUNDS REGISTER AND THE MEMORY
*         BOUNDS REGISTER TO BE SET UP PRIOR TO *2AP* UPDATING ITSELF
*         IN MEMORY.  MEMORY BOUNDS WILL BE DISABLED AND DFT IN OS BOUNDS
*         IS SET TO UPPER PP.



 ECM      SUBR               ENTRY/EXIT
          RJM    TIM         UPDATE TIMING OF EVENTS
          FINDCM 2AP         FIND CIP MODULE
          CRDL   W0
          STDL   T1
          SODL   W3          DELETE HEADER WORD
          LDDL   T1
          ADC    RR+1
          CRML   TOAP,W3     LOAD *2AP*
          LDM    UMEM        UPDATE *2AP* IN MEMORY FLAG
          ZJN    ECM1        IF NO UPDATE

*         SET OS BOUNDS AND DISABLE MEMORY BOUNDS, IF NECESSARY, BEFORE
*         CALLING *2AP* SINCE IT WILL OVERLAY THE SECONDARY ROUTINES OVERLAY.

          LDN    DSCM+2
          RJM    IIB
          CRDL   CM          GET CIP POINTER
          LRD    CM+1
          RJM    SPB         SET PP BOUNDS
          RJM    DBC         DISABLE MEMORY BOUNDS CHECKING
 ECM1     LDC    CALB        LOAD CALL BLOCK ADDRESS
          RJM    TOEP        CALL *2AP* TO PROCESS FUNCTION
          LDN    0
          STD    EI

*         CALL *2AP* TO UPDATE CIP IMAGE IF NECESSARY.

          LDM    UMEM        UPDATE *2AP* IN MEMORY FLAG
          ZJN    ECM3        IF NO UPDATE
          LDN    27          FUNCTION TO UPDATE *2AP* IN CENTRAL MEMORY
          STM    CALB
          LDC    CALB
          RJM    TOEP        RE-CALL *2AP* TO PROCESS FUNCTION
          LDN    0
          STD    EI

*         RELOAD SECONDARY ROUTINES OVERLAY.

 ECM3     RJM    LSR         RELOAD SECONDARY ROUTINES

*         REENABLE MEMORY BOUNDS CHECKING IF DISABLED FOR *2AP* CALL.

 ECM4     LDM    UMEM        CHECK NEED TO REENABLE MEMORY BOUNDS
          ZJN    ECM5        IF MEMORY BOUNDS WERE NOT DISABLED
          RJM    EBC         ENABLE BOUNDS CHECKING

*         RELOAD CURRENT OVERLAY.

 ECM5     LDM    CUOV        GET CURRENT OVERLAY
          RJM    LOV         RELOAD CURRENT OVERLAY
          RJM    TIM         UPDATE TIMING OF EVENTS
          LJM    ECMX        RETURN

