*DECK NPPWL
USETEXT NIPDEF
USETEXT NBT
USETEXT OVERLAY
USETEXT PARAMP
USETEXT PARAMS
USETEXT PCNB
USETEXT LLCB
USETEXT NCNB
USETEXT NCNT
USETEXT PWL
USETEXT PT
USETEXT APPSTAT
PROC NPPWL(BUFADDR); # PROCESS A PRU WORKLIST #
STARTIMS;
#
*1DC NPPWL
*
* 1. PROC NAME AUTHOR DATE
* NPPWL J.C. LEE 80/04/01
*
* 2. FUNCTIONAL DESCRIPTION.
* PROCESS A PRU WORKLIST
*
* 3. METHOD USED.
* LOCATE NETWORK-SIDE PCNB
* VALIDATE FOR A PCNB AND ALLOWED OPCODE VALUE,
* PROCESS PWL
*
* 4. ENTRY PARAMETERS.
* BUFADDR ADDRESS OF WORKLIST BUFFER
*
* 5. EXIT PARAMETERS.
* CODE ZERO IF THERE IS NO SPACE FOR BUFFER
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* NIPDEF OPSIZE OVERLAY
* PARAMP PCNB PWL
* LLCB NCNT APPSTAT
*
* 7. ROUTINES AND OVERLAYS CALLED.
* LOCLLCB LOCATE LLCB
* LOCNCNT LOCATE NCNT
* NCSTTP NETWORK CONNECTION STATE TAB PROCESSOR
* NBSTTP NETWORK BLOCK STATE TABLE PROC
* NGIGO OVL DAYFILE TEXT GENERATED BY NPU/PIP
* NPISM OVL PROCESS ILLEGAL SUPERVISORY MESSAGE
* XABTAPP OVL ROUTINE TO ABORT APPLICATION
* HAPFAIL OVL PROCESSS APPLICATION FAILURE
* NPPSM OVL PROCESS A PRU SUPERVISORY MESSAGE FROM PIP
* NRPWL OVL RELEASE A PROCESSED PWL
* OVLCALL LOAD AND EXECUTE OVERLAY
* XTRACE TRACE CALLS
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
* THIS PROCEDURE IS CALLED BY NEIB1 AND XSACB.
*
#
STOPIMS;
#
EXTERNAL VARIABLES
#
XREF
BEGIN
PROC LOCLLCB;
PROC LOCNCNT;
PROC NCSTTP;
PROC NBSTTP ;
PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
PROC XTRACE;
END
#
INTERNAL VARIABLES
#
ITEM BUFADDR; # BUFFER ADDRESS #
ITEM CODE; # RETURN VALUE #
ITEM PCNBADDR; # PCNB ADDRESS #
ITEM NCNTEAD; # NCNT ENTRY ADDRESS #
ITEM PRUCN; # PRU CONNECTION NUMBER #
ITEM REASON U ;
ITEM NCTRIGG ;
ITEM DISCRDF B ; # WAITING PIP CONN. TERMINATION #
SWITCH PWLOPJT ,NPWLOP1,NPWLOP2,NPWLOP3,NPWLOP4,NPWLOP5,NPWLOP6 ;
# ******************************************************************** #
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("NPPWL") ;
CONTROL FI;
P<PWLHDR> = BUFADDR; # PRU WORKLIST ADDRESS #
PARAMP4 = 0; # INITIALIZE NGIGO CALL FLAG #
DISCRDF = FALSE ;
IF PWLOP[0] EQ PWLOPDAYFI
OR ( PWLHN[0] EQ PWLTN[0] AND PWLOP[0] EQ PWLOPBPRU ) # OP =6 #
# ON A COUPLER, DAYFILE AS OP=5 #
THEN # DAYFILE TEXT FROM PIP #$
GOTO NPWLOP5 ; # DAYFILE TEXT FROM PIP #
PRUCN = PWLCN[0] ;
LOCLLCB(PWLHN[0],PWLTN[0],P<LLCB>);
LOCNCNT(P<LLCB>,PRUCN,NCNTEAD);
P<NCNT> = NCNTEAD;
PCNBADDR = NCNTNCNB[0];
# #
IF PCNBADDR EQ 0
THEN # CANNOT LOCATE PCNB #
BEGIN
PARAMP4 = DMCUCN; # UNKNOWN NETWORK CONNECTION NO #
END
ELSE
BEGIN # FOUND PCNB #
P<PCNB> = PCNBADDR; # PCNB ADDRESS #
IF PCNBID[0] NQ PCNBIDVALUE
AND PCNBID[0] NQ LCNBIDVALUE
THEN # NOT A PCNB #
BEGIN
IF PWLOP[0] EQ PWLOPBPRU # IF OP=6, JUST DAYFILE IT #
THEN
BEGIN
PARAMP4 = DMCPBPE;
END
ELSE # DAYFILE AND ABORT ON OP OTHER #
BEGIN # THAN 6. #
PARAMP4 = DMCNPCN;
END
END
ELSE
BEGIN
CODE = PWLOP[0]; # PRU WORKLIST OPCODE #
IF CODE LS PWLOPNSM
OR CODE GR PWLOPXPRU
THEN # BAD PWL OPCODE #
BEGIN
PARAMP4 = DMCBPWO; # BAD PWL OPCODE #
END
ELSE # VALID PWL OPCODE #
BEGIN
#
CALL NETWORK BLOCK TABLE TO VALIDATE STATE
#
PARAMP2 = 2 ; # PRESET TO INITIAL ERROR STATE #
NBSTTP(PCNBADDR,PRUDTA,P<PWLHDR>) ;
IF PARAMP2 EQ 2
THEN
BEGIN
PARAMP4 = 0; # CLEAR NGIGO CALL FLAG - NGIGO #
# OVERLAY HAS ALREADY BEEN CALLD#
GOTO NPPWL1 ; # TO PROCESS ILLEGAL PRU DATA #
END
IF PARAMP2 EQ 1
THEN
DISCRDF = TRUE ; # WE ARE WAITING FOR PRU TERMINATION #
GOTO PWLOPJT[CODE] ; # SWITCH ON OPCODE #
#
PROCESS PRU WORKLIST OPCODE FUNCTION
#
NPWLOP1:
OVLNAME = NPPSMP; # PROCESS A PRU SM FROM PIP #
IF DISCRDF
THEN
BEGIN
GOTO NPPWL1 ;
END
GOTO CALLOVL;
NPWLOP2:
OVLNAME = NRPWLP; # RELEASE A PROCESSED PWL #
GOTO CALLOVL;
NPWLOP3:
IF PWLRC[0] EQ 0
THEN
NCTRIGG = PIPR ;
ELSE
BEGIN
IF PWLRC[0] LQ IFTRC
AND PWLRC[0] GR 0
THEN
NCTRIGG = NXFTOFN ;
ELSE
# REASON CODE IS NOT WITHIN THE RANG#
BEGIN
PARAMP4 = DMCBTRC; # BAD TERMINATE PRU CON RC #
END
END
IF PARAMP4 EQ 0
THEN
BEGIN # EVERYTHING O.K. #
PARAMP1 = P<PWLHDR> ;
PARAMP2 = P<PCNB> ;
OVLNAME = NPPCTP ;
OVLCALL ;
IF PARAMP4 EQ 0 # NO ERROR IN SSTP CALL #
AND PARAMP2 NQ 0 # NCNB RETURNED #
THEN
BEGIN # NO ERROR FOUND, GO AHEAD #
P<NCNB> = PARAMP2 ; # CALL STATE PROCESSOR FOR #
NCSTTP(P<LLCB>,NCNBCN[0],NCTRIGG,P<PWLHDR>);
END # NCNB #
PARAMP4 = 0; # CLEAR NGIGO CALL FLAG #
END # EVERYTHING WENT O.K. #
GOTO NPPWL1 ;
NPWLOP4:
OVLNAME = NPISMP; # PROCESS ILLOGICAL SUP MSG #
GOTO CALLOVL;
NPWLOP5:
REASON = PWLRC[0]; # RC ASSOCIATED WITH DAY MSG #
IF REASON EQ DFTX
THEN # NIP IS TO DAYFILE PWL TEXT #
BEGIN
PARAMP4 = DMCPDM; # DMC FOR PIP DAYFILE MSG #
END
ELSE # NIP IS NOT TO DAYFILE MSG #
BEGIN
IF REASON EQ DFBPE
THEN # PIP DETECTED BLOCK PROTOCOL ER#
BEGIN # IN UPLINE MSG #
PARAMP4 = DMCBNBD; # DMC FOR IVT BLK PROTOCOL ERR #
END
ELSE # CHECK FOR OTHER DAYFILE CODES #
BEGIN
IF REASON EQ DFME
THEN # NIP IS TO DAYFILE MDI ERR STAT#
BEGIN
PARAMP4 = DMCMDS; # DMC FOR MDI DETAILED STATUS #
END
ELSE # NIP IS TO DAYFILE NO SUP MSG #
BEGIN
IF REASON EQ DFRDM
THEN # PIP REJECTED DOWNLINE MSG #
BEGIN
PARAMP4 = DMCRDM; # DMC FOR REJECTING DOWNLINE MSG#
END
ELSE # NIP IS TO DAYFILE NO SUP MSG #
BEGIN
PARAMP4 = DMCNSV; # DMC FOR NONSUPPORT MDI MSG #
END
END
END
END
GOTO NPPWL1 ;
NPWLOP6:
PARAMP4 = DMCPBPE; # PRU BLOCK PROTOCOL ERR WORKLST#
#
STATE TABLE CALL TO NCSTTP TO SEND TO PIP PWL WITH OP
9, PIP WILL RESPONSE PWL WITH OP = 3.
#
RCBRK = RCCB"NE" ; # RC = 20, NPU ERROR #
NCSTTP(P<LLCB>,PRUCN,NCBRKPC,P<PWLHDR>);
GOTO NPPWL1;
CALLOVL:
PARAMP1 = P<PWLHDR>; # PRU WORKLIST ADDRESS #
PARAMP2 = PCNBADDR; # PCNB ADDRESS #
OVLCALL; # CALL OVERLAY #
END
END
END
NPPWL1:
IF PARAMP4 NQ 0
THEN
BEGIN
PARAMP1 = P<PWLHDR>; # PRU WORKLIST ADDRESS #
OVLNAME = NGIGOP; # DAYFILE GARBLED TEXT #
OVLCALL; # CALL OVERLAY #
END
#
CHECK IF AN APPLICATION NEEDS TO BE ABORTED
#
IF ABTAPPF NQ 0
THEN
BEGIN
OVLNAME = XABTAPPP;
OVLCALL;
END
#
CHECK IF AN APPLICATION HAS FAILED
#
IF FAILADR NQ 0
THEN
BEGIN # PROCESS APPLICATION FAILURE #
OVLNAME = HAPFAILP;
OVLCALL;
END
RETURN;
END
TERM