*DECK FCACK 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNAM 
USETEXT COMRQUE 
PROC FCACK; 
# TITLE FCACK - CREATE FC/ACK. #
  
      BEGIN  # FCACK #
  
# 
**    FCACK   - CREATE FC/ACK.
* 
*     CREATE FC/ACK FROM CONTROL MESSAGE INPUT. 
* 
*     PROC FCACK. 
* 
*     ENTRY   - QU$ADDRESS IS BASED ARRAY CONTAINING CONTROL MESSAGE. 
* 
*     EXIT    - FC/ACK IS QUEUED FOR APPLICATION IF FC/BRK IS NOT 
*               IN PROGRESS.
* 
*     PROCESS - INITIATE APPLICATION TABLE ARRAY POINTER. 
*               IF FC/BRK IN PROGRESS 
*               THEN: 
*                 FREE QUEUE ENTRY. 
*               ELSE: 
*               SAVE ACN. 
*               INITIALIZE ABT, ACT, AND TLC. 
*               INITIALIZE FC/ACK.
*               INSERT ACN AND ABN. 
*               INITIATE SUPERVISORY REPLY. 
*               RETURN. 
# 
  
# 
****  PROC FLACK - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC FREE;                   # FREE QUEUE ENTRY # 
        PROC SUPRPLY;                # INITIATE SUPERVISORY REPLY # 
        PROC OVRFLOW;                # CREATE OVERFLOW QUEUE ENTRY #
        END 
  
# 
****  PROC FCACK - XREF LIST END. 
# 
  
  
      ARRAY [0:0] S(1); 
        BEGIN  # FC/ACK PRESET #
        ITEM PRS$WD1    I(00,00,60); # WORD ONE # 
        ITEM PRS$FC     I(00,00,16) = [$FCACK];  # FC/ACK # 
        ITEM PRS$ACN    I(00,24,12); # ACN #
        ITEM PRS$ABN1   I(00,36,06); # ABN (TOP PART) # 
        ITEM PRS$ABN2   I(00,42,12); # ABN (LOWER PART) # 
        END 
  
CONTROL EJECT;
  
      P<APL$HEADER> = QU$APPL;
      P<CONNECTION> = P<APL$HEADER> + APL$LENGTH +
                        (QU$ACN - APL$MINACN) * CON$LENGTH; 
      IF CON$FC$BRK 
      THEN
        BEGIN 
        FREE; 
        END 
  
      ELSE
        BEGIN 
      $SUPTLC = 1;
      PRS$ACN = QU$ACN; 
      QU$BLKHDR = $SUPHDR;
      PRS$ABN1 = QU$CTLABN1;
      PRS$ABN2 = QU$CTLABN2;
      QU$SUPWD1 = PRS$WD1;
      QU$CHARGE = 0;
      QU$ERRLGL = FALSE;
      SUPRPLY;
      IF CON$ACKRD LS O"77777"
      THEN
        BEGIN  # INCREMENT ACKS READ #
        CON$ACKRD = CON$ACKRD + 1;
        END 
      ELSE
        BEGIN  # ACKS READ OVERFLOW # 
        CON$ACKRD = 1;
        OVRFLOW(CNT$ACKRD); 
        END 
  
        END 
  
      RETURN; 
      END  # FCACK #
  
      TERM
