*DECK     NGIGO 
USETEXT NIPDEF
USETEXT NBT 
USETEXT OVERLAY 
USETEXT PARAMP
USETEXT PARAMS
USETEXT PT
USETEXT PWL 
PRGM NGIGO;                  # DAYFILE NETWORK RELATED MESSAGES        #
 STARTIMS;
 #
*1DC  NGIGO 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        NGIGO               E. GEE              86/09/23 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          DAYFILE NETWORK RELATED MESSAGES.
* 
*     3. METHOD USED. 
*          IF DISCARDING INTRAHOST MSG, 
*            CALL OMSG TO ISSUE DAYFILE MESSAGE.
*            CALL OVERLAY ODAYFL TO DAYFILE CONTENTS OF WORKLIST. 
*          ELSE (PROCESSING NETWORK MSG), 
*            IF PIP RELATED DAYFILE MESSAGE CODE, 
*              ADD PIP ORDINAL TO DAYFILE MESSAGE.
*              CALL OMSG TO ISSUE DAYFILE MESSAGE.
*              IF PIP MESSAGE FOR DAYFILE,
*                CALL OMSG TO ISSUE PIP DAYFILE MESSAGE.
*            ELSE (EST RELATED DAYFILE MESSAGE CODE), 
*              ADD EST ORDINAL TO DAYFILE MESSAGE.
*              CALL OMSG TO ISSUE DAYFILE MESSAGE.
*            IF ASSOCIATED WORKLIST IS TO BE DAYFILED,
*              CALL OVERLAY ODAYFL TO DAYFILE CONTENTS OF WORKLIST. 
*            IF NIP IS TO BE ABORTED, 
*              CALL ABORT TO ABORT NIP. 
*            ELSE (NIP DOES NOT NEED TO BE ABORTED),
*              IF HOST CONSOLE OPERATOR NEEDS TO BE ALERTED,
*              CALL KHOPMSG TO SEND MSG TO NIP K-DISPLAY. 
* 
*     4. ENTRY PARAMETERS.
*          NBTIDX            NBT INDEX OF NBT CURRENTLY BEING PROCESSED 
*                            = NBTMAXID + 1 IF PROCESSING INTRAHST QUEUE
*          PARAMP1           WORKLIST ASSOCIATED WITH DAYFILE MSG CODE
*          PARAMP4           DAYFILE MESSAGE CODE 
* 
*     5. EXIT PARAMETERS. 
*          NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*          NBT               NETWORK BUFFER TABLE 
*          NIPDEF            CONSTANT DEFINITIONS 
*          OVERLAY           TABLE FOR CALLING OVERLAYS 
*          PARAMP            BUFFER FOR PASSING PARAMS TO PRIMARY OVLS
*          PARAMS            BUFFER FOR PASSING PARAMS TO SECONDARY OVLS
*          PT                MISCELLANEOUS GLOBAL VARIABLES 
*          PWL               PRU WORKLIST TEMPLATE
* 
*     7. ROUTINES AND OVERLAYS CALLED.
*          ABORT             ISSUE DAYFILE MSG, IF ANY, AND THEN ABORT
*          KHOPMSG           SEND MSG TO NAM K-DISPLAY
*          ODAYFL     OVL    DISPLAY TEXT IN DAYFILE
*          OMSG              ISSUE DAYFILE MESSAGE
*          OVLCALL           LOAD AND EXECUTE OVERLAY 
*          XTRACE            RECORD PROCEDURE CALLS 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
*          *** PIP X ISSUED THE FOLLOWING MESSAGE.      *** 
*          *** PIP X SENT MSG WITH BAD BLOCK TYPE.      *** 
*          *** PIP X SENT PRU WORKLIST WITH BAD ADDR.   *** 
*          *** PIP X SENT PRU WORKLIST FOR NONPRU CON.  *** 
*          *** PIP X SENT WORKLIST WITH BAD OPCODE.     *** 
*          *** PIP X SENT PRU WORKLIST WITH BAD SM.     *** 
*          *** PIP X SENT PRU WORKLIST WITH BAD LENGTH. *** 
*          *** PIP X SENT REL WORKLIST WITH BAD LEVEL.  *** 
*          *** PIP X SENT UNEXPECTED RELEASE WORKLIST.  *** 
*          *** PIP X SENT TERM WORKLIST WITH BAD RC.    *** 
*          *** PIP X REJECTED DOWNLINE MSG.             *** 
*          *** EST XXX - BAD NODE NUMBER IN UPLINE MSG. *** 
*          *** EST XXX - UNSUPPORTED CHANNEL PROTOCOL.  *** 
*          *** EST XXX - BAD NETWORK BLOCK DISCARDED.   *** 
*          *** EST XXX - BAD NBSTTP TRIGGER FROM NETWK. *** 
*          *** EST XXX - MDI ERROR STATUS MESSAGE.      *** 
*          *** UNEXPECTED INTRAHOST MSG DISCARDED.      *** 
* 
*        THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
*        WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
*        TO RETURN TO THE CALLING PROGRAM.
* 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY OVERLAY 
*                        BUFFER SIZE MINUS 5 (313B WORDS).
* 
*        THIS OVERLAY IS CALLED BY NBSTTP, NEIB1, AND NPPWL.
* 
 #
 STOPIMS; 
# 
 INPUT PARAMETERS.
# 
#  NONE                                                                #
# 
 OUTPUT PARAMETERS.  NONE 
  
                    EXTERNAL VARIABLES
# 
 XREF BEGIN 
   PROC ABORT;               # ABORT NIP                               #
   PROC KHOPMSG ;            # SEND MSG TO K-DISPLAY BUFFER            #
   PROC OMSG ;               # ISSUE DAYFILE MESSAGE                   #
   PROC OVLCALL;             # LOAD AND EXECUTE OVERLAY                #
   PROC XTRACE;              # TRACE CALLS                             #
   LABEL RJMAIN;             # RETURN ADDRESS IN OVLCALL               #
   END
# 
                    INTERNAL VARIABLES
# 
# 
 ARRAY PDAYMSG CONTAINS ALL THE PIP RELATED DAYFILE MESSAGES.  THE DMP
 FIELD IN THE ARRAY IS USED TO DETERMINE IF THE ASSOCIATED WORKLIST IS
 ALSO TO BE DUMPED.  THE ABT FIELD IN THE ARRAY IS USED TO DETERMINE
 IF NIP SHOULD ABORT AS A RESULT OF THE DAYFILE MESSAGE.  THE HOP FIELD 
 IN THE ARRAY IS USED TO DETERMINE IF THE HOP (HOST CONSOLE OPERATOR) 
 NEEDS TO BE ALERTED TO SEE THE DAYFILE MESSAGE.
# 
 ARRAY PDAYMSG [DMCMINPIP:DMCMAXPIP] S(5);
   BEGIN
   ITEM PDAYTXT C(0,0,40) = ["PIP X ISSUED THE FOLLOWING MESSAGE.     ",
                             "PIP X SENT MSG WITH BAD BLOCK TYPE.     ",
                             "PIP X SENT PRU WORKLIST WITH BAD ADDR.  ",
                             "PIP X SENT PRU WORKLIST FOR NONPRU CON. ",
                             "PIP X SENT WORKLIST WITH BAD OPCODE.    ",
                             "PIP X SENT PRU WORKLIST WITH BAD SM.    ",
                             "PIP X SENT PRU WORKLIST WITH BAD LENGTH.",
                             "PIP X SENT REL WORKLIST WITH BAD LEVEL. ",
                             "PIP X SENT UNEXPECTED RELEASE WORKLIST. ",
                             "PIP X SENT TERM WORKLIST WITH BAD RC.   ",
                             "PIP X REJECTED DOWNLINE MSG.            " 
                             ]; 
   ITEM PSOURCE C(0,0,5); 
   ITEM PDAYORD U(0,24,6);
   ITEM PDAYFIL U(4,0,12);
   ITEM PDAYDMP B(4,23,1) = [FALSE, 
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE]; 
   ITEM PDAYABT B(4,35,1) = [FALSE, 
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             FALSE];
   ITEM PDAYHOP B(4,47,1) = [FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE];
   END
  
# 
 ARRAY EDAYMSG CONTAINS ALL THE EST RELATED DAYFILE MESSAGES.  THE DMP
 FIELD IN THE ARRAY IS USED TO DETERMINE IF THE ASSOCIATED WORKLIST IS
 ALSO TO BE DUMPED.  THE ABT FIELD IN THE ARRAY IS USED TO DETERMINE
 IF NIP SHOULD ABORT AS A RESULT OF THE DAYFILE MESSAGE.  THE HOP FIELD 
 IN THE ARRAY IS USED TO DETERMINE IF THE HOP (HOST CONSOLE OPERATOR) 
 NEEDS TO BE ALERTED TO SEE THE DAYFILE MESSAGE.
# 
 ARRAY EDAYMSG [DMCMINEST:DMCMAXEST] S(5);
   BEGIN
   ITEM EDAYTXT C(0,0,40) = ["EST XXX - BAD NODE NUMBER IN UPLINE MSG.",
                             "EST XXX - UNSUPPORTED CHANNEL PROTOCOL. ",
                             "EST XXX - BAD NETWORK BLOCK DISCARDED.  ",
                             "EST XXX - BAD NBSTTP TRIGGER FROM NETWK.",
                             "EST XXX - MDI ERROR STATUS MESSAGE.     ",
                             "EST XXX - PRU BLOCK PROTOCOL ERROR.     " 
                             ]; 
   ITEM ESOURCE C(0,0,7); 
   ITEM EDAYORD U(0,24,18); 
   ITEM EDAYFIL U(4,0,12) ; 
   ITEM EDAYDMP B(4,23,1) = [TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE,
                             TRUE]; 
   ITEM EDAYABT B(4,35,1) = [FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE];
   ITEM EDAYHOP B(4,47,1) = [TRUE,
                             TRUE,
                             FALSE, 
                             FALSE, 
                             FALSE, 
                             FALSE];
   END
  
 ARRAY INTRAMSG S(4); 
   BEGIN
   ITEM INTRATXT C(0,00,35) = ["UNEXPECTED INTRAHOST MSG DISCARDED."];
   ITEM INTRAFIL U(3,30,30) = [0];
   END
  
 CONTROL IFEQ DEBUG,1 ; 
                                       # DAYFILE MESSAGE TO ISSUE IF   #
   ARRAY ABTMSG S(4);                  # DAYFILE MESSAGE CODE IS BAD   #
     BEGIN
     ITEM ABTTXT C(0,0,32) = ["BAD DMC PASSED TO OVERLAY NGIGO."];
     ITEM ABTFIL U(3,12,48) = [0];
     END
 CONTROL FI;
  
 ITEM ABTNIP B;                        # ABORT NIP FLAG                #
 ITEM ALTHOP B;                        # ALERT CONSOLE OPERATOR FLAG   #
 ITEM DMC;                             # DAYFILE MESSAGE CODE          #
 ITEM DMPWL B;                         # DUMP WORKLIST TO DAYFILE FLAG #
  
#**********************************************************************#
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1 ;
        XTRACE("NGIGO") ; 
# 
        CHECK FOR VALID DAYFILE MESSAGE CODE
# 
        IF (PARAMP4 LS DMCMINPIP       ) OR 
           ( (PARAMP4 GR DMCMAXPIP) AND 
             (PARAMP4 LS DMCMINEST)    ) OR 
           (PARAMP4 GR DMCMAXEST       )
        THEN                           # BAD DAYFILE MESSAGE CODE      #
          BEGIN 
          ABORT(ABTMSG,0);             # ABORT NIP                     #
          END 
      CONTROL FI ;
  
      P<PWLHDR> = PARAMP1;             # PRU WORKLIST POINTER          #
      IF NBTIDX EQ NBTMAXID + 1 
      THEN                             # WAS PROCESSING INTRAHOST MSG  #
        BEGIN 
# 
        DISCARDING INTRAHOST MSG
# 
        OMSG(INTRAMSG,0);              # ISSUE DAYFILE MESSAGE         #
        PARAMS1 = P<PWLHDR>;           # ADDR OF WORKLIST TO DUMP      #
        PARAMS2 = PWLBS[0];            # SIZE OF WORKLIST TO DUMP      #
        OVLNAME = ODAYFLP;             # NAME OF OVERLAY TO LOAD       #
        OVLCALL;                       # LOAD AND EXECUTE OVERLAY      #
        END 
      ELSE                             # WAS PROCESSING NETWORK MSG    #
        BEGIN 
        DMC = PARAMP4;                 # DAYFILE MESSAGE CODE          #
        IF DMC LQ DMCMAXPIP 
        THEN                           # DAYFILE MSG IS PIP RELATED    #
          BEGIN 
# 
          DISCARDING PIP RELATED MSG
# 
          ALTHOP = PDAYHOP[DMC];       # ALERT CONSOLE OPERATOR FLAG   #
          ABTNIP = PDAYABT[DMC];       # ABORT NIP FLAG                #
          DMPWL = PDAYDMP[DMC];        # DUMP CONTENTS OF WORKLIST FLAG#
          PDAYORD[DMC] = NBTPIP[NBTIDX]+27; # ADD PIP ORD TO DAY MSG   #
          PDAYFIL[DMC] = 0;            # ADD ZERO BYTE TERMINATOR      #
          OMSG(PDAYMSG[DMC],0);        # ISSUE DAYFILE MESSAGE         #
          IF DMC EQ DMCPDM
          THEN                         # PIP SENT MSG FOR DAYFILE      #
            BEGIN 
            OMSG(P<PWLHDR>+BLKHSIZE+PWLHSIZE,0);  # ISSUE PIP DAY MSG  #
            END 
          END 
        ELSE                           # MUST BE EST RELATED DAY MSG   #
          BEGIN 
# 
          DISCARDING EST RELATED MSG
# 
          ALTHOP = EDAYHOP[DMC];       # ALERT CONSOLE OPERATOR FLAG   #
          ABTNIP = EDAYABT[DMC];       # ABORT NIP FLAG                #
          DMPWL = EDAYDMP[DMC];        # DUMP CONTENTS OF WORKLIST FLAG#
                                       # ADD EST ORDINAL TO DAYFILE MSG#
          EDAYORD[DMC] = (NBTEST1[NBTIDX]+27)*64*64 + 
                         (NBTEST2[NBTIDX]+27)*64 +
                          NBTEST3[NBTIDX]+27; # CONVERT TO DISPLAY CODE#
          EDAYFIL[DMC] = 0;            # ADD ZERO BYTE TERMINATOR      #
          OMSG(EDAYMSG[DMC],0);        # ISSUE DAYFILE MESSAGE         #
          END 
# 
        DAYFILE CONTENTS OF WORKLIST IF NECESSARY 
# 
        IF DMPWL
        THEN                           # NEED TO DAYFILE CONTENTS OF WL#
          BEGIN 
          PARAMS1 = P<PWLHDR>;         # ADDR OF WORKLIST TO DUMP      #
          PARAMS2 = PWLBS[0];          # SIZE OF WORKLIST TO DUMP      #
          OVLNAME = ODAYFLP;           # NAME OF OVERLAY TO LOAD       #
          OVLCALL;                     # LOAD AND EXECUTE OVERLAY      #
          END 
# 
        ABORT NIP IF NECESSARY
# 
        IF ABTNIP 
        THEN                           # NEED TO ABORT NIP             #
          BEGIN 
          ABORT(0,0);                  # ABORT NIP                     #
          END 
        ELSE                           # DO NOT NEED TO ABORT NIP      #
          BEGIN 
# 
          ALERT HOP IF NECESSARY
# 
          IF ALTHOP 
          THEN                         # CONSOLE OPERATOR NEEDS TO BE  #
            BEGIN                      # INFORMED ABOUT ERROR CONDITION#
            IF DMC LQ DMCMAXPIP 
            THEN                       # PIP RELATED DAYFILE MSG       #
              BEGIN 
              KHOPMSG(LOC(PDAYMSG[DMC]));# SEND DAY MSG TO NAM K-DISPLY#
              END 
            ELSE                       # EST RELATED DAYFILE MSG       #
              BEGIN 
              KHOPMSG(LOC(EDAYMSG[DMC]));# SEND DAY MSG TO NAM K-DISPLY#
              END 
            END 
          END 
        END 
      GOTO RJMAIN;                     # RETURN TO CALLING PROGRAM     #
  
      END 
      TERM
