*COMDECK SUA
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.SUA - SET UNL-ACT SUBR
*CALL CMMCOM
          COMMENT  "SUBSYS"SET UNLOAD-ACTION SUBR.
          B1=1
 CMM.SUA  SPACE  4
***       CMM.SUA - SET UNLOAD-ACTION SUBR. 
* 
* 
*              THIS CALL CAUSES A TABLE ENTRY TO BE MADE WHICH
*         MARKS THE SPECIFIED UNLOAD-ACTION SUBROUTINE AS -PENDING- 
*         WITH RESPECT TO THE SPECIFIED TRIGGER AREA.  THIS SUBROUTINE
*         WILL REMAIN PENDING UNTIL IT IS EITHER REMOVED FROM THE 
*         TABLE BY THE DELETE-UNLOAD-ACTION-SUBR CALL, OR UNTIL 
*         ITS ENTRY POINT ADDRESS IS ITSELF UNLOADED.  WHENEVER THIS
*         SUBROUTINE IS PENDING, AND ANY PORTION OF THE SPECIFIED 
*         TRIGGER AREA IS UNLOADED BY A LOAD-OVERLAY, SET-DABA, OR
*         UNLOAD CALL, THEN THE SUBROUTINE WILL BE CALLED.
* 
*         ENTRY  (X1) = TRIGGER-FWA.
*                (X2) = TRIGGER-LWA.
*                (X3) = UNLOAD-SUBR.
* 
*         EXIT   (X6) = BITS 59-17 -- ZERO. 
*                       BITS 16-0  -- UNLOAD-ID.
*                (B1) = 1.
* 
*         SAVES  X - 0, 5.
*                B - 2, 3.
*                A - 0. 
  
  
          CMMENT  SUA 
 CMM.SUA  EQ     *+400000B   ENTRY / EXIT 
          SB1    1
          RJ     =XCMM.ICM   INITIALIZE AND SET A0
          NZ     X2,SUA2     IF LWA = 0, SET TO FWA+1 
          SX2    X1+B1
 SUA2     SX6    3RSUA       SAVE FUNCTION NAME 
          SA6    A0-MNFNAME 
          SA4    CMM.SUA     SAVE RETURN ADDRESS
          LX4    30 
          BX6    X4 
          SA6    A0-MNRETURN
  
 IS       IFSAFE
          SA4    A0-IMAPM 
          ZR     X4,SUA101
          UERR   CMEPMR,0    CALLED FROM POINTER-MAINTENANCE ROUTINE
  
 SUA101   IX6    X1-X2
          PL     X6,SUA103   IF LWA NOT GT FWA
          PL     X1,SUA104   IF NEITHER NEGATIVE
 SUA103   UERR   CMETRIG,0   IMPROPERLY SPECIFIED TRIGGER VALUES
  
 SUA104   BSS    0
 IS       ENDIF 
  
          SA4    A0-UNLOADID  ADVANCE UNLOAD-ID 
          SX6    X4+B1       FORM UNLOAD-ACTION TABLE ENTRY 
          SA6    A4 
          LX6    36 
          LX2    18 
          BX6    X6+X2
          BX6    X6+X1
          BX7    X3 
          SX1    P.UAS        ? INTERNAL BLOCK NUMBER 
          R=     X2,2         ? ENTRY SIZE
          RJ     =XCMM.CIA   -- CHANGE INTERNAL AREA -- 
          SA6    B7          STORE NEW U-A ENTRY
          SA7    A6-B1
          SA2    A0-MNSAVEA0  RESTORE A0
          AX6    36          (X6) = UNLOAD-ID FOR RETURN
          SA0    X2 
          EQ     CMM.SUA     RETURN 
  
          VFD    42/0,18/=XCMM.PUA  FORCE LOAD OF UNLOAD-ACTION PROC
  
