*COMDECK UNL
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.UNL - UNLOAD
          IPARAMS 
 OPSYS    MICRO  1,7,*"OS.NAME"_"OS.VER"* 
*CALL CMMCOM
          COMMENT  "SUBSYS"UNLOAD.
          B1=1
 CMM.UNL  SPACE  4
***       CMM.UNL - UNLOAD. 
* 
* 
*              THIS CALL SPECIFIES THAT THE AREA BOUNDED BY FWA AND 
*         LWA IS TO BE -UNLOADED-.  ANY UNLOAD-ACTION SUBROUTINES 
*         PENDING UPON ANY PORTION OF THIS AREA ARE CALLED. 
* 
*         ENTRY  (X1) = UNLOAD-FWA. 
*                (X2) = UNLOAD-LWA. 
* 
*         EXIT   (B1) = 1.
* 
*         SAVES  X - 0, 5.
*                B - 2, 3.
*                A - 0. 
  
  
          CMMENT  UNL 
 CMM.UNL  EQ     *+400000B   ENTRY / EXIT 
          SB1    1
          RJ     =XCMM.ICM   INITIALIZE AND SET A0
          IX6    X1-X2
          NZ     X1,UNL2     IF LWA = 0, SET TO FWA+1 
          SX1    X2+B1
 UNL2     ZR     X6,UNL4     IF FWA = LWA, EXIT 
  
 IS       IFSAFE
          SX6    3RUNL       SAVE FUNCTION NAME 
          SA6    A0-MNFNAME 
          SA4    CMM.UNL     SAVE RETURN ADDRESS
          LX4    30 
          BX6    X4 
          SA6    A0-MNRETURN
          SA3    A0-IMAPM 
          SA4    A0-IMAUA 
          ZR     X3,UNL101
          UERR   CMEPMR,0    CALLED FROM POINTER-MAINTENANCE ROUTINE
  
 UNL101   ZR     X4,UNL102
          UERR   CMEUAR,0    CALLED FROM UNLOAD-ACTION SUBR 
  
 UNL102   IX6    X1-X2
          PL     X6,UNL103   IF LWA NOT GT FWA
          PL     X1,UNL104   IF NEITHER NEGATIVE
 UNL103   UERR   CMETRIG,0   IMPROPERLY SPECIFIED TRIGGER VALUES
  
 UNL104   BSS    0
 IS       ENDIF 
  
          SA3    A0-P.UAS 
          AX3    18 
          SX3    X3 
          ZR     X3,UNL4     IF NO UNLOAD-ACTION SUBRS
  
 IS       IFSAFE
          SX6    =YCMM.PUA
          PL     X6,UNL106
          UERR   CMENEED,3RPUA  CMM.PUA NEEDED BUT NOT PRESENT
  
 UNL106   BSS    0
 IS       ENDIF 
  
                              ? (X1) = FWA
                              ? (X2) = LWA
          RJ     =YCMM.PUA   -- PROCESS UNLOAD ACTION --
 UNL4     SA1    A0-MNSAVEA0  RESTORE A0
          SA0    X1 
          EQ     CMM.UNL     RETURN 
          SPACE  4,10 
*         ALTERNATE ENTRY POINT TO CMM.UNL TO RETURN TO SCOPE 2 
*         OPERATING SYSTEM. 
  
 OS       IFC    EQ,*"OPSYS"*SCOPE 2* 
          CMMENT  UN2 
 CMM.UN2  BSS    0
          RJ     CMM.UNL
          MJ     434B        RETURN TO OU.LOL 
 OS       ENDIF 
  
