*COMDECK ROS
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.ROS - RESET OVERFLOW S
,TACK 
*CALL CMMCOM
          COMMENT  "SUBSYS"RESET OVERFLOW STACK.
          B1=1
 CMM.ROS  SPACE  4,10 
***       CMM.ROS - RESET OVERFLOW STACK. 
* 
* 
*              IF ENTRY-ID IS NON-ZERO, THEN ENTRIES IN THE OVERFLOW- 
*         ACTION STACK ARE SUCCESSIVELY POPPED OFF THE TOP OF THE 
*         STACK UNTIL THE ENTRY IDENTIFIED BY ENTRY-ID IS THE ONE ON
*         THE TOP OF THE STACK.  IF ENTRY-ID IDENTIFIES THE CURRENT 
*         TOP ENTRY, THEN NO ACTION OCCURS.  IF ENTRY-ID IS ZERO, 
*         THEN THE OVERFLOW-ACTION STACK IS RESTORED TO ITS INITIAL 
*         STATE.
* 
*         ENTRY  (X1) = BITS 59-17 -- ZERO. 
*                       BITS 16-0  -- ENTRY-ID. 
* 
*         EXIT   (B1) = 1.
* 
*         SAVES  X - 0, 5.
*                B - 2, 3.
*                A - 0. 
  
  
          CMMENT  ROS 
 CMM.ROS  EQ     *+400000B   ENTRY / EXIT 
          SB1    1
          SA2    RA65 
          SX6    A0          SAVE A0
          BX2    -X2
  
 IS       IFSAFE
          SX1    X1 
          SX2    X2 
          PL     X2,ROS102
          UERR   CMEFST,0,3RROS  ILLEGAL 1ST CALL TO CMM
  
 ROS102   BSS    0
 IS       ENDIF 
  
          SA3    X2          (A0) = FL
          SA0    X3 
          SA6    A0-MNSAVEA0  SAVE A0 
          SB4    X1          (B4) = ENTRY-ID
  
 IS       IFSAFE
          SX7    3RROS       SAVE FUNCTION NAME 
          SA7    A0-MNFNAME 
          SA3    CMM.ROS     SAVE RETURN ADDRESS
          LX3    30 
          BX6    X3 
          SA6    A0-MNRETURN
          SA4    A0-IMAPM 
          ZR     X4,ROS104
          UERR   CMEPMR,0    CALLED FROM POINTER-MAINTENANCE ROUTINE
  
 ROS104   BSS    0
 IS       ENDIF 
  
          SB7    B1+B1       (B7) = 2 
          BX2    X2-X2       (X2) = -(NO. WORDS TO REMOVE FROM O-A-S) 
          SA1    A0-P.OAS 
          SB6    X1 
          AX1    18          (B5) = O-A-S SIZE
          SB5    X1 
          SA3    B6-B5       TOP-1 ENTRY
 ROS4     ZR     B5,ROS8     IF NO MORE ENTRIES 
          SX2    X2-2        ADVANCE REMOVE COUNT 
          SA3    A3+B7       NEXT-LOWER ENTRY 
          AX3    36          COMPARE ENTRY-ID 
          SB5    B5-B7
          SB6    X3 
          NE     B6,B4,ROS4  IF NO MATCH
          SX2    X2+B7       DECREASE REMOVE COUNT TO KEEP THIS ONE 
  
          IFSAFE  1 
          EQ     ROS106      BYPASS ERROR CHECK 
  
 ROS8     BSS    0
  
 IS       IFSAFE
          ZR     B4,ROS106   IF NO ENTRY-ID SPECIFIED 
          UERR   CMENEID,0   NON-EXISTENT ENTRY-ID
  
 ROS106   BSS    0
 IS       ENDIF 
  
          SX1    P.OAS        ? (X1) = INTERNAL BLOCK NUMBER
                              ? (X2) = NO. WORDS TO REMOVE
          RJ     =XCMM.CIA   -- CHANGE INTERNAL AREA -- 
          SA3    A0-MNSAVEA0  RESTORE A0
          SA0    X3 
          EQ     CMM.ROS     RETURN 
  
