*DECK NTOTBTS 
USETEXT NIPDEF
USETEXT AHEADER 
USETEXT NHEADER 
USETEXT PARAMP
USETEXT PT
USETEXT MSGIDX
USETEXT AT
USETEXT DRHDR 
USETEXT ACB 
USETEXT SUPMSG
  
PRGM NTOTBTS; 
 #
*1DC  NTOTBTS 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        NTOTBTS             C. BITTNER          82/09/01 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        PROCESS TIMEOUT BOOTSTRAP MESSAGE
* 
*     3. METHOD USED
*        SEND MESSAGE TO DAYFILE
*        DISCARD DUMP/LOAD MESSAGES QUEUED FOR NS.
* 
*     4. ENTRY PARAMETERS 
*        NONE 
* 
*     5. EXIT PARAMETERS
*        NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED 
*        NIPDEF     PT     MSGIDX 
*        AT     DRHDR     ACB 
*        SUPMSG 
* 
*     7. ROUTINES CALLED
*        OMSG - ISSUE DAYFILE MESSAGE 
*        MRELS - RELEASE BUFFER 
*        XTRACE - TRACE PROCEDURE CALL
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION 
*        "NS NOT RESPONDING TO NPU INIT REQUEST"
*        THIS IS A PRIMARY OVERLAY CALLED BY NPNIPSM. 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY 
*CALL OPSIZE
 #
# 
      EXTERNAL VARIABLES
# 
 XREF 
   BEGIN
   PROC OMSG;                # DAYFILE MESSAGE                         #
   PROC MRELS;               # RELEASE BUFFER                          #
   PROC XTRACE;              # TRACE PROCEDURE CALL                    #
   LABEL RJMAIN;             # RETURN ADDRESS IN OVLCALL               #
   END
  
# 
      INTERNAL VARIABLES
# 
  
      ITEM CURR;             # TEMPORARY VARIABLE                      #
      ITEM NEXT;
      ITEM PREVIOUS;
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("TOTBT");
      CONTROL FI; 
  
      OMSG(DFMSG17,0);  # NS NOT RESPONDING TO NPU INIT REQ            #
      IF PROCAN[NSORD] NQ 0 
      THEN
        BEGIN 
        P<ACB> = ATACBA[PROCAN[NSORD]]; 
        IF P<ACB> NQ 0
        THEN                 # ACB EXISTS FOR NS                       #
          BEGIN  # DISCARD DATA ON ACB                                 #
          P<DRHDRWD> = 0; 
          P<NHEADER> = PARAMP1; # FWA OF NETWORK HEADER FOR TOT/BS/R   #
          CURR = ACBDRFP[0];  # FIRST ENTRY                            #
          FOR CURR = CURR WHILE CURR NQ 0 
          AND CURR NQ LOC(ACBDRFP[0]) 
          DO
            BEGIN 
            NEXT = NEXTPTR[CURR]; 
            PREVIOUS = BACKPTR[CURR]; 
            P<AHEADER> = CURR + BLKHSIZE; # FWA OF ABH                 #
            P<SUPMSG> = P<AHEADER> + ABHSIZE; 
            IF PFCSFC[0] EQ NPUIN 
              AND DN[0] EQ ABHDN[0] 
            THEN # DISCARD NPU/IN/R QUEUED FOR THIS HOST NODE          #
              BEGIN   # DISCARD MESSAGE                                #
              IF PREVIOUS EQ LOC(ACBDRFP[0])
              THEN
                BEGIN  # CURR IS FIRST ENTRY IN RING                   #
                IF NEXT EQ LOC(ACBDRFP[0])
                THEN
                  BEGIN  # LAST AND ONLY ENTRY IN RING                 #
                  ACBDRFP[0] = 0; 
                  ACBDRBP[0] = 0; 
                  END 
                ELSE
                  BEGIN 
                  ACBDRFP[0] = NEXT;
                  BACKPTR[NEXT] = PREVIOUS; 
                  END 
                END 
              ELSE
                BEGIN  # CURR IS NOT FIRST ENTRY IN RING               #
                IF NEXT EQ LOC(ACBDRFP[0])
                THEN
                  BEGIN  # CURR IS LAST ENTRY                          #
                  ACBDRBP[0] = PREVIOUS;
                  NEXTPTR[PREVIOUS] = NEXT; 
                  END 
                ELSE
                  BEGIN  # CURR IS NOT LAST ENTRY                      #
                  NEXTPTR[PREVIOUS] = NEXT; 
                  BACKPTR[NEXT] = PREVIOUS; 
                  END 
                END 
              MRELS(CURR);
            END 
  
            CURR = NEXT;
            END 
          END 
        END 
  
      GOTO RJMAIN;           # RETURN TO CALLING PROGRAM               #
      END 
TERM
