*DECK MEMCMM
USETEXT COMCBEG 
USETEXT COMMCOM 
    FUNC MEMCMM ((ADDR),LGTH) U;
# TITLE MEMCMM - GET/RETURN BUFFER VIA CYBER MEMORY MANAGER. #
  
      BEGIN  # MEMCMM # 
  
# 
**    MEMCMM     GET/RETURN BUFFER VIA CYBER MEMORY MANAGER.
* 
*     MEMCMM CALLS COMMON MEMORY MANAGER TO RETURN A PREVIOUSLY-
*     ASSIGNED BUFFER AND/OR TO ASSIGN A NEW BUFFER.
* 
*     FUNC MEMCMM ((ADDR), LGTH) U
* 
*     ENTRY      ADDR = FWA OF CURRENTLY ASSIGNED BUFFER. 
*                     = 0, IF NO BUFFER CURRENTLY ASSIGNED. 
*                LGTH = LENGTH OF BUFFER REQUIRED.
*                     = 0, IF NO BUFFER REQUIRED. 
* 
*     EXIT       MEMCMM = FWA OF BUFFER (IF LGTH .NE. 0). 
*                        = 0 (IF LGTH .EQ. 0).
* 
*     PROCESS    IF BUFFER CURRENTLY ASSIGNED (ADDR .NE. 0) 
*                  CALL CMMFRF TO RELEASE CURRENT BUFFER. 
*                IF NEW BUFFER REQUESTED (LGTH .NE. 0)
*                  CALL CMMALF TO OBTAIN BUFFER.
*                  MEMCMM = FWA OF BUFFER.
*                ELSE (NO NEW BUFFER REQUESTED) 
*                  MEMCMM = 0.
# 
  
      ITEM ADDR       U;           # FWA OF BUFFER TO RELEASE # 
      ITEM LGTH       U;           # LENGTH OF BUFFER NEEDED #
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC CMMALF;               # CMM ROUTINE TO ALLOCATE MEMORY # 
        PROC CMMFRF;               # CMM ROUTINE TO RELEASE MEMORY #
        PROC DBGNAME;              # DEBUG #
        END 
# 
****  XREF END
# 
  
  
      $BEGIN
      DBGNAME ("MEMCMM");          # DEBUG MESSAGE #
      $END
  
      IF  ADDR  NE  0              # IF BUFFER CURRENTLY ASSIGNED # 
      THEN
        BEGIN 
        CMMFRF (ADDR);             # FREE BUFFER CURRENTLY ASSIGNED # 
        END 
  
      IF LGTH NE 0                 # IF NEW BUFFER REQUESTED #
      THEN
        BEGIN 
        CMMALF (LGTH,0,CMMGRP,ADDR);
        MEMCMM = ADDR;             # FWA OF NEW BUFFER #
        END 
  
      ELSE
        BEGIN 
        MEMCMM = 0;                # FWA = 0 #
        END 
  
      END  # MEMCMM # 
  
    TERM
