*DECK FFSUWTB 
USETEXT TEXTFFS 
      PROC FFSUWTB; 
*CALL COPYRITE
# TITLE FFSUWTB - WRITE TO TRACE BUFFER.                               #
  
      BEGIN                            # FFSUWTB                       #
# 
**    FFSUWTB  WRITE TO TRACE BUFFER
* 
*     A. LIM                           88/03/18 
* 
*     THIS PROCEDURE IS CALLED TO WRITE EITHER THE INDICATION OR THE
*     REQUEST BLOCK TO THE CIRCULAR TRACE BUFFER FOR DEBUGGING AID. 
* 
*     PROC FFSUWTB
* 
*     ENTRY    CTB   = STATIC CIRCULAR TRACE BUFFER.
*              CTBX  = INDEX INTO THE NEXT AVAILABLE CTB ENTRY
*              BTYPE = BLOCK TYPE.
*                      IND$, INDICATION BLOCK.
*                      REQ$, REQUEST BLOCK. 
*              LNAME = LAYER NAME.
*                      0, NAM 
*                      1, TCP 
*                      2, CM
*                      3, FTP 
* 
*     EXIT     BLOCK WRITTEN TO CTB.
* 
*     METHOD   USE *BTYPE* TO DETERMINE THE TYPE OF BLOCK.
*              USE *LNAME* AS INDEX INTO THE DISPLAY CODE 
*                ID TABLE TO GET THE ID AND PLACE INTO CTB. 
*              USE *LNAME* AS INDEX INTO THE APPROPRIATE
*                BLOCK AND PLACE THE BLOCK INTO CTB.
*              UPDATE CTBX. 
# 
  
# 
****  PROC FFSUWTB - XREF LIST
# 
      XREF
        BEGIN 
        END 
# 
****
# 
      ARRAY INDT[00:03] S(1); 
        BEGIN 
        ITEM INDMSG    C(00,00,10) =
          ["          ",               # NO INDICATION TO NAM          #
           "IND TO TCP",               # INDICATION FROM NAM TO TCP    #
           "IND TO CM ",               # INDICATION FROM TCP TO CM     #
           "IND TO FTP"];              # INDICATION FROM CM TO FTP     #
        END 
  
      ARRAY REQT[00:03] S(1); 
        BEGIN 
        ITEM REQMSG    C(00,00,10) =
          ["REQ TO NAM",               # REQUEST FROM TCP TO NAM       #
           "REQ TO TCP",               # REQUEST FROM CM TO TCP        #
           "REQ TO CM ",               # REQUEST FROM FTP TO CM        #
           "          "];              # NO REQUEST PROCESSED BY FTP   #
        END 
  
      CONTROL EJECT;
# 
**    START MAIN PROCEDURE
# 
      IF BTYPE EQ IND$
      THEN
        BEGIN                              # INDICATION BLOCK          #
        CTB$ID[CTBX]  = INDMSG[LNAME];     # GET DC INDICATION HEADER  #
        CTB$C20[CTBX] = IND$C20[LNAME-1];  # GET THE 2-WORD BLOCK      #
        END 
      ELSE
        BEGIN                              # REQUEST BLOCK             #
        CTB$ID[CTBX]  = REQMSG[LNAME];     # GET DC REQUEST HEADER     #
        CTB$C20[CTBX] = REQ$C20[LNAME];    # GET THE 2-WORD BLOCK      #
        END 
  
      CTBP = LOC(CTB[CTBX]);           # UPDATE CTB POINTER            #
  
      CTBX = CTBX + 1;                 # INCREMENT CTB ENTRY INDEX     #
      IF CTBX GR CTBSIZ$
      THEN
        BEGIN                          # BUFFER FULL                   #
        CTBX = 0;                      # WRITE TO BEGINNING OF BUFFER  #
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FFSUWTB                       #
  
      TERM
