*DECK CMMVGF
          IDENT  CMM.VGF
  
          TITLE  COMMON MEMORY MANAGER, V1.0, CMM.VGF - VP CODE FOR GLF 
*CALL CMMCOM
          COMMENT  "SUBSYS"VP CODE FOR GROW AT LWA FIXED. 
          B1=1
 CMM.VGF  SPACE  4,10 
**        CMM.VGF - VARIABLE BLOCK CODE FOR GROW AT LWA FIXED.
* 
* 
*              THIS ROUTINE TRIES TO MOVE UP THE ORIGIN OF THE PRIMARY
*         VARIABLE REGION SO AS TO ALLOW FOR THE REQUESTED GROWTH 
*         OF THE LWA-END GROWTH FIXED BLOCK.
* 
*         ENTRY  PARAMETERS ARE IN SAVE AREA. 
*                (B1) = 1.
*                (A0) = FL. 
* 
*         EXIT   (X1) = 1 IF SUCCESS. 
*                       0 IF FAILURE. 
*                (B1) = 1.
*                (A0) = FL. 
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                B - 4, 5, 6, 7.
*                A - 1, 2, 3, 4, 5, 6, 7. 
  
  
          ENTRY  CMM.VGF
 CMM.VGF  EQ     *+400000B   ENTRY / EXIT 
          BX6    X0          SAVE X0
          LX7    X5          SAVE X5
          SA6    VGFSV
          SA7    A6+B1
          ERRNZ  P.ENDZ-1 
          SA1    A0-B1        ? (X1) = FWA PRIMARY VP REGION
          SA1    X1 
          AX1    18 
          SX1    X1 
          SA2    A0-NUM       ? (X2) = SPACE NEEDED 
                              ? (B1) = 1 - FL INCREASE ALLOWED
          RJ     =XCMM.PMV   -- PROCESS MULTIPLE VARIABLE REGIONS --
          MX1    0           SET FOR FAILURE
          ZR     X6,VGF2     IF SPACE NOT AVAILABLE 
          BX0    X6          (X0) = NEW FWA OF PRI VP REGION
          BX1    X7           ? (X1) = TOTAL FREE SPCCE 
          BX2    X2-X2        ? (X2) = 0 - INCREASE ALREADY ACCOUNTED 
          RJ     =XCMM.CRD   -- COMPUTE REGION DISTRIBUTION --
          BX5    X6          (X5) = FIXED BLOCK SHARE OF FREE SPACE 
          LX1    X0           ? (X1) = NEW FWA OF PRI VP REGION 
          BX2    X6           ? (X2) = FIXED BLOCK SHARE
          SA3    A0-NUM       ? (X3) = INCREASE 
          RJ     =XCMM.RVR   -- REARRANGE VARIABLE REGION --
          BX1    X0           ? (X1) = FWA OF NEW PRI VP REGION 
          SA2    A0-NUM       ? (X2) = SIZE OF NEW FREE REGION
          IX2    X5+X2               = FP SPACE + INCREASE
          RJ     =XCMM.AFR   -- ADD FREE REGION --
          SX1    B1          (X1) = 1 - SUCCESS 
 VGF2     SA2    VGFSV       RESTORE X0 
          SA5    A2+B1       RESTORE X5 
          BX0    X2 
          EQ     CMM.VGF     RETURN, (X1) = NZ IF SUCCESS 
  
 VGFSV    BSS    2           X0, X5 SAVE AREA 
 BFWA     EQU    MNARG1      EQUATES TO SAVE AREA 
 NUM      EQU    MNARG2 
  
          END 
