*DECK TXTGBUF 
USETEXT COMCBEG 
USETEXT COMCAPR 
USETEXT COMCCAE 
USETEXT COMQDEF 
USETEXT COMQFIL 
USETEXT COMQNET 
USETEXT COMQTXT 
    PROC TXTGBUF; 
      BEGIN    # TXTGBUF #
# 
**    TXTBGUF    GET EMPTY TEXT BUFFER. 
* 
*     PROC TXTGBUF
* 
*     ENTRY      ACN = AFT ENTRY INDEX. 
*                TXTBUF$EMP = POINTER TO EMPTY CHAIN. 
* 
*     EXIT       P<TXTBUF> = FWA OF EMPTY BUFFER
*                TXTBUF$OVF INCREMENTED IF OVERFLOW BUFFER OBTAINED 
*                BUFFER LINKED TO AFT CHAIN (FILETBF).
* 
*     PROCESS    IF BUFFER IN EMPTY CHAIN:  
*                  DELINK BUFFER
*                ELSE:  
*                  OBTAIN OVERFLOW BUFFER FROM CMM
*                  INCREMENT OVERFLOW COUNT.
*                LINK BUFFER TO AFT CHAIN 
*                INITIALIZE BUFFER HEADER.
# 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC CMMALF;               # GET CMM BUFFER # 
        PROC NAME;                 # DEBUG CODE # 
        END 
  
# 
****  XREF END
# 
  
  
  
        $BEGIN
        NAME("TXTGBUF");
        $END
  
      IF TXTBUF$EMP NE 0           # IF BUFFERS IN EMPTY CHAIN #
      THEN
        BEGIN 
        P<TXTBUF> = TXTBUF$EMP;    # GET FIRST BUFFER IN CHAIN #
        TXTBUF$EMP = TXTBUF$LNK;   # POINT TO NEXT EMPTY BUFFER # 
        TXTBUF$CMM = FALSE;        # NOT CMM BUFFER # 
        END 
  
      ELSE
        BEGIN                      # NO EMPTY BUFFERS # 
        CMMALF(LTXTBFW, 0, 0, P<TXTBUF>); # ALLOCATE CMM BUFFER # 
        TXTBUF$HDR = 0; 
        TXTBUF$CMM = TRUE;         # FLAG AS CMM BUFFER # 
        TXTBUF$OVF = TXTBUF$OVF + 1; # INCREMENT OVERFLOW COUNT # 
        END 
  
      TXTBUF$LNK = FILETBF;        # CURRENT AFT BUFFER CHAIN # 
      FILETBF = P<TXTBUF>;         # LINK TO HEAD OF CHAIN #
  
      END  # TXTGBUF #
    TERM
