*DECK NNPIIN
USETEXT NIPDEF
USETEXT AHEADER 
USETEXT LLCB
USETEXT NHEADER 
USETEXT PARAMS
USETEXT SUPMSG
  
PRGM NNPIIN;                 # SEND NPI/IN TO CCP                      #
STARTIMS; 
 #
*1DC  NNPIIN
* 
*     1. PROC NAME           AUTHOR              DATE 
*        NNPIIN              C. BITTNER          81/07/24 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        SEND NPI/IN TO CCP 
* 
*     3. METHOD USED
*        ALLOCATE BUFFER FOR MESSAGE
*        SET UP APPLICATION BLOCK HEADER
*        SET UP TEXT FOR NPI/IN MESSAGE 
*        LINK MESSAGE TO PIP OUTBOUND CHAIN 
* 
*     4. ENTRY PARAMETERS 
*        PARAMS1 - LLCB ADDRESS 
*        PARAMS2 - BAD TRIGGER FROM NETWORK 
*        PARAMS3 - CURRENT STATE OF CONNECTION
*        PARAMS4 - NETWORK CONNECTION NUMBER
*        PARAMS7 - STATE TABLE PROCESSOR
* 
*     5. EXIT PARAMETERS
*        NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED 
*        NIPDEF              AHEADER
*        LLCB                OSSIZE 
*        PARAMS              SUPMSG 
* 
*     7. ROUTINES CALLED
*        MGETS - ALLOCATE EMPTY BUFFER
*        NFOB - LINK BUFFER TO PIP OUTBOUND CHAIN 
*        XTRACE - TRACE PROCEDURE CALL
*        ABORT - ABORT NIP
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION 
*        THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY
*        SUBROUTINE OVLCALL.
*        THIS PROGRAM IS CALLED BY NBSTTP AND NCSTTP. 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY 
*CALL OSSIZE
* 
 #
STOPIMS;
  
# 
      EXTERNAL VARIABLES
# 
 XREF 
   BEGIN
   PROC ABORT;               # ABORT NIP                               #
   PROC MGETS;               # ALLOCATE EMPTY BUFFER                   #
   PROC NFOB;                # LINK BUFFER TO PIP OUTBOUND CHAIN       #
   PROC OMSG;                # DAYFILE MESSAGE                         #
   PROC XDUMPFL;             # DUMP NIP FL                             #
   PROC XTRACE;              # TRACE PROCEDURE CALL                    #
   LABEL RJMAIN;             # RETURN ADDRESS IN OVLCALL               #
   END
  
# 
      INTERNAL VARIABLES
# 
      ITEM BUFADDR;          # SM BUFFER                               #
  
      ARRAY NMSG [0:0] S(5);
        BEGIN 
        ITEM NMSG$TEXT  C(00,00,48) = 
            ["PROTOCOL VIOLATION, NPU DUMP REQUEST SENT."]; 
        ITEM NMSG$END   U(04,48,12) = [0];
        END 
  
#**********************************************************************#
  
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("NPIIN") ; 
      CONTROL FI; 
  
      P<LLCB> = PARAMS1;
  
      CONTROL IFEQ DEBUG,1; 
      IF LLCBHN[0] EQ 0 
          OR LLCBTN[0] EQ 0 
      THEN                   # NIP INTERNAL ERROR                      #
        ABORT(0,0); 
      CONTROL FI; 
  
# GET BUFFER TO HOLD NPI/IN MESSAGE                                    #
      MGETS(LNPIIN + BLKHSIZE + ABHSIZE,BUFADDR,TRUE);
  
# SET UP APPLICATION BLOCK HEADER                                      #
      P<AHEADER> = BUFADDR + BLKHSIZE;  # ADDRESS TO HOLD ABH          #
      ABHABT[0] = APPCMD;    # BLOCK TYPE                              #
      ABHACT[0] = CT8ASCII;  # CHARACTER TYPE                          #
      ABHTLC[0] = LNPIINC;   # TEXT LENGTH                             #
  
# SET UP NPI/IN MESSAGE      #
      P<SUPMSG> = BUFADDR + BLKHSIZE + ABHSIZE; 
      P<SMNIP> = P<SUPMSG>; 
      PFCSFC[0] = NPIDD; # SET HALT NPU FUNCTION CODE                  #
      NPIDPP[0] = X"59";  # DP = "Y" (ASCII) DUMP ON                   #
  
      NPITRIG[0] = PARAMS2;            # BAD TRIGGER FROM NETWORK      #
      NPICST[0] = PARAMS3;             # CURRENT STATE OF CONNECTION   #
      NPICN[0] = PARAMS4;              # NETWORK CONNECTION NUMBER     #
      NPISTP[0] = PARAMS7;             # STATE TABLE PROCESSOR         #
# LINK MESSAGE TO PIP OUTBOUND CHAIN                                   #
      NFOB(BUFADDR,P<LLCB>);
      OMSG(NMSG,0);          # DAYFILE *PROTOCOL VIOLATION*            #
      XDUMPFL;               # DUMP NIP FL TO DUMP                     #
      GOTO RJMAIN;           # RETURN TO CALLING PROGRAM               #
      END 
TERM
*ENDIF
