*COMDECK POE
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.POE - PUSH OVERFLOW EN
,TRY
*CALL CMMCOM
          COMMENT  "SUBSYS"PUSH OVERFLOW ENTRY. 
          B1=1
 CMM.POE  SPACE  4,10 
***       CMM.POE - PUSH OVERFLOW ENTRY.
* 
* 
*              THE PARAMETER VALUES ARE PUSHED ONTO THE OVERFLOW-ACTION 
*         STACK, FORMING THE TOP ENTRY.  AN INTEGER UNIQUELY
*         IDENTIFYING THIS ENTRY IS CREATED AND RETURNED AS ENTRY-ID. 
*              IF CMM IS IN OVERFLOW MODE AT THE TIME OF THIS CALL, 
*         A CALL-NUM VALUE OF 1 IS ASSOCIATED WITH THE CREATED ENTRY. 
* 
*         ENTRY  (X2) = PERCENT-USED TRIGGER. 
*                (X3) = CONTIGUOUS-FREE-WORDS TRIGGER.
*                (X4) = OVERFLOW SUBROUTINE ADDRESS.
* 
*         EXIT   (X1) = BITS 59-17 -- ZERO. 
*                       BITS 16-0  -- ENTRY-ID. 
*                (B1) = 1.
* 
*         SAVES  X - 0, 5.
*                B - 2, 3.
*                A - 0. 
  
  
          CMMENT  POE 
 CMM.POE  EQ     *+400000B   ENTRY / EXIT 
          SB1    1
          RJ     =XCMM.ICM   INITIALIZE AND SAVE A0 
          SX6    3RPOE       SAVE FUNCTION NAME 
          SA6    A0-MNFNAME 
          SA1    CMM.POE     SAVE RETURN ADDRESS
          LX1    30 
          BX6    X1 
          SA6    A0-MNRETURN
  
 IS       IFSAFE
          SA1    A0-IMAPM 
          ZR     X1,POE102
          UERR   CMEPMR,0    CALLED FROM POINTER-MAINTENANCE ROUTINE
  
 POE102   SX4    X4          VERIFY O-A-SUBR ADDRESS \ 2
          SB4    X4 
          LE     B4,B1,POE104 
 IS       ENDIF 
  
          SA1    A0-ENTRYID  ADVANCE ENTRY-ID 
          SX6    X1+B1       FORM O-A-S ENTRY WORD 0 IN X6
          SA6    A1 
          SX7    X3          SET CONTIGOUS TRIGGER                       CMMA026
          SB4    X3                                                      CMMA026
          GT     B4,POE4     IF SPECIFIED                                CMMA026
          SX7    B1          SET TO DEFAULT                              CMMA026
  
 IS       IFSAFE
          PL     X7,POE105
 POE104   UERR   CMETRIG,0   IMPROPERLY SPECIFIED TRIGGER VALUES
  
 POE105   BSS    0
 IS       ENDIF 
  
 POE4     LX6    36          FORM WORD 0
          BX6    X6+X7
          SA1    =1.0        SET FOR DEFAULT PERCENT USED TRIGGER 
          BX7    X1 
          SB4    X2+B1
          ZR     B4,POE6     IF PERCENT USED TRIG. NOT SPECIFIED
          BX7    X2          SET PERCENT USED TRIGGER 
  
 IS       IFSAFE
          MI     X2,POE104   ERROR IF PERCENT USED TRIGGER IS NEGATIVE
          IX1    X7-X1       VERIFY PERCENT USED TRIGGER < 1.0
          PL     X1,POE104
 IS       ENDIF 
  
 POE6     SX3    B1          SET CALL-NUM = 1 IN ENTRY WORD 0 
          LX4    18          SET O-A-SUBR ADDRESS 
          LX3    54 
          BX6    X6+X4
          BX6    X6+X3
          SX1    P.OAS        ? (X1) = INTERNAL TABLE NUMBER
          R=     X2,2         ? (X2) = ENTRY SIZE 
          RJ     =XCMM.CIA   -- CHANGE INTERNAL AREA -- 
          SA6    B7          STORE ENTRY WORD 0 
          SA7    A6-B1       STORE ENTRY WORD 1 
          AX6    36          (X1) = ENTRY-ID FOR RETURN 
          SX1    X6 
          SA2    A0-MNSAVEA0  RESTORE A0
          SA0    X2 
          EQ     CMM.POE     RETURN, (X1) = ENTRY-ID
  
          VFD    42/0,18/=XCMM.GOA  FORCE LOADING OF CMM.GOA
  
