*COMDECK COE
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.COE - CHANGE OVERFLOW 
,ENTRY
*CALL CMMCOM
          COMMENT  "SUBSYS"CHANGE OVERFLOW ENTRY. 
          B1=1
 CMM.COE  SPACE  4,10 
***       CMM.COE - CHANGE OVERFLOW ENTRY.
* 
* 
*              IF NEW-TRIGGER-VALUE IS NOT -1, THE TRIGGER-VALUE OF 
*         THE OVERFLOW-ACTION STACK ENTRY IDENTIFIED BY ENTRY-ID IS 
*         CHANGED TO NEW-TRIGGER-VALUE.  IF NEW-CONTIG-WORDS-TRIGGER
*         IS NOT -1, THE CONTIG-WORDS-TRIGGER OF THE OVERFLOW-ACTION
*         STACK ENTRY IDENTIFIED BY ENTRY-ID IS CHANGED TO NEW-CONTIG-
*         WORDS-TRIGGER.  IF NEW-OVFLO-SUBR IS NOT -1, THE OVFLO-SUBR 
*         VALUE OF THE SAME STACK ENTRY IS CHANGED TO NEW-OVFLO-SUBR. 
* 
*         ENTRY  (X1) = BITS 59-17 -- ZERO. 
*                       BITS 16-0  -- ENTRY-ID. 
*                (X2) = NEW-PERCENT-USED-TRIGGER. 
*                (X3) = NEW-CONTIGUOUS-FREE-WORDS-TRIGGER.
*                (X4) = NEW-OVERFLOW-SUBROUTINE-ADDRESS.
* 
*         EXIT   (B1) = 1.
* 
*         SAVES  X - 0, 5.
*                B - 2, 3.
*                A - 0. 
  
  
          CMMENT  COE 
 CMM.COE  EQ     *+400000B   ENTRY / EXIT 
          SB1    1
          SX6    A0          SAVE A0
          SB4    X1          (B4) = ENTRY-ID
          SA1    RA65 
          SB5    X4          (B5) = NEW-SUBR-ADDRESS
          BX1    -X1
  
 IS       IFSAFE
          SX1    X1 
          PL     X1,COE102
          UERR   CMEFST,0,3RCOE  ILLEGAL 1ST CALL TO CMM
  
 COE102   BSS    0
 IS       ENDIF 
  
          SA1    X1          (A0) = FL
          SA0    X1 
          SA6    A0-MNSAVEA0  SAVE A0 
  
 IS       IFSAFE
          SX7    3RCOE       SAVE FUNCTION NAME 
          SA7    A0-MNFNAME 
          SA4    CMM.COE     SAVE RETURN ADDRESS
          LX4    30 
          BX6    X4 
          SA6    A0-MNRETURN
          SA1    A0-IMAPM 
          ZR     X1,COE104
          UERR   CMEPMR,0    CALLED FROM POINTER-MAINTENANCE ROUTINE
  
 COE104   BSS    0
 IS       ENDIF 
  
*         FIND P.OAS ENTRY CORRESPONDING TO SPECIFIED ENTRY-ID. 
  
          SA1    A0-P.OAS 
          SB7    B1+B1       (B7) = 2 
          SA4    X1+B7       1ST-1 ENTRY
  
          IFFAST  1 
 COE4     BSS    0
  
 IS       IFSAFE
          AX1    18          (X1) = REMAINING P.OAS WORDS 
          SX1    X1 
 COE4     NZ     X1,COE108   IF MORE ENTRIES
          UERR   CMENEID,0   NON-EXISTENT ENTRY-ID
  
 COE108   SX1    X1-2 
 IS       ENDIF 
  
          SA4    A4-B7       NEXT ENTRY 
          BX6    X4          COMPARE ENTRY-ID 
          AX6    36 
          SB6    X6 
          NE     B6,B4,COE4  IF NO MATCH
  
*         REPLACE SPECIFIED VALUES. 
  
          SB6    B5+B1
          MX7    42 
          ZR     B6,COE6     IF NEW-SUBR NOT SPECIFIED
  
          IFSAFE  1 
          LE     B5,B1,COE110  VERIFY (NEW-SUBR-ADR) \ 2
          LX4    -18         REPLACE SUBR-ADR 
          BX4    X7*X4
          SX1    B5 
          BX4    X4+X1
          LX4    18 
 COE6     SB6    X2+B1
          ZR     B6,COE8     IF NEW-PERCENT-TRIGGER NOT SPECIFIED 
  
 IS       IFSAFE
          MI     X2,COE110   VERIFY 0 @ (NEW-PERCENT-TRIGGER) < 1.0 
          SA1    =1.0 
          IX1    X2-X1
          PL     X1,COE110
 IS       ENDIF 
  
          BX6    X2          REPLACE PERCENT-TRIGGER
          SA6    A4-B1
 COE8     SB6    X3+B1
          ZR     B6,COE10    IF NEW-CONTIG-TRIGGER NOT SPECIFIED
  
 IS       IFSAFE
          GT     B6,B1,COE111  VERIFY 0 < (NEW-CONTIG) @ 377777B
 COE110   UERR   CMETRIG,0   IMPROPERLY SPECIFIED TRIGGER VALUES
  
 COE111   BSS    0
 IS       ENDIF 
  
          BX4    X7*X4       REPLACE CONTIG-TRIGGER 
          BX4    X4+X3
 COE10    BX6    X4          STORE NEW WORD 0 OF ENTRY
          SA6    A4 
          SA1    A0-MNSAVEA0  RESTORE A0
          SA0    X1 
          EQ     CMM.COE     RETURN 
  
