*DECK NPNIPSM USETEXT NIPDEF USETEXT DRHDR USETEXT MSGIDX USETEXT OVERLAY USETEXT PARAMP USETEXT PARAMS USETEXT SUPMSG USETEXT PT USETEXT LLCB USETEXT NHEADER USETEXT NBT PROC NPNIPSM(BUFADDR,ERROR); STARTIMS; # *1DC NPNIPSM * * 1. PROC NAME AUTHOR DATE * NPNIPSM C. BITTNER 82/06/18 * * 2. FUNCTIONAL DESCRIPTION * PROCESS MESSAGES FOR NIP FROM PIP INBOUND BUFFER * AND A-A MESSAGE QUEUE. * * 3. METHOD USED * MATCH PFCSFC AND JUMP TO CORRESPONDING ACTION * ORDINAL. * * 4. ENTRY PARAMETERS * BUFADDR - ADDRESS OF MESSAGE BLOCK * * 5. EXIT PARAMETERS * ERROR - FLAG SET TO TRUE IF GARBAGE MESSAGE * * 6. SYMPL TEXTS USED * NIPDEF DRHDR * PARAMP PARAMS * OVERLAY SUPMSG * LLCB NHEADER * * 7. ROUTINES CALLED * LOCLLCB - LOCATE LLCB * NCSTTP - NETWORK CONNECTION STATE TABLE * OVLCALL - LOAD AND EXECUTE OVERLAY * XTRACE - TRACE PROCEDURE CALL * * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * THIS PROCEDURE IS CALLED BY NEIB1. * # STOPIMS; # INPUT PARAMETERS # ITEM BUFADDR; # ADDRESS OF MESSAGE BLOCK # ITEM ERROR B; # GARBAGE MESSAGE FLAG RETURNED # # EXTERNAL VARIABLES # XREF BEGIN PROC LOCLLCB; # LOCATE LLCB # PROC NCSTTP; # NETWORK CONNECTION STATE TABLE # PROC OMSG; # ISSUE DAYFILE MESSAGE # PROC OVLCALL; # LOAD AND EXECUTE OVERLAY # PROC XTRACE; # TRACE PROCEDURE CALL # END # INTERNAL VARIABLES # DEF ENDTAB #19#; # SIZE OF PFC/SFC TABLE # ITEM NCSTRIG; # NCSTTP TRIGGER # ITEM I; # INDEX INTO PFC/SFC JUMP TABLE # ITEM NCN; # CONNECTION NUMBER # ITEM BADNBLK B; # FLAG FOR BAD NETWORK BLOCK # ITEM FOUND B; # FLAG FOR LOCATING THE NBT ENTRY # ITEM INDIX; # LOOP INDEX # ARRAY PFCSFCTAB [0:ENDTAB]; BEGIN ITEM NIPSMFC U(00,00,16) = [ICNTE,TCNTAN,TCNTA,ICNAP,ICNEX,ICNAPN, REGLL,REGCP,REGST,ESTOFF,CHCTE,NPIDD,NPIPP, TOTBTS,HOPSEND,REGHH,ICNAPA,HECP,INIDMDI, 0]; ITEM OVL$TRIG U(0,16,12) = [RICNTER,RTCNTAN,RTCNTAR,RICNAPR,RICNAPR,RICNAPN, ,,,,RCHCTEU,,, ,,,RICNAPA,,, 0]; END SWITCH SMCASEJT C1,C1,C1,C1,C1,C1, C01,C02,C03,C06,C1,C09,C09, C07,C08,C04,C1,C05,C10, C3; BEGIN CONTROL IFEQ DEBUG,1; XTRACE("NIPSM"); CONTROL FI; ERROR = FALSE; P = BUFADDR; P = P + BLKHSIZE + NBHSIZE; NIPSMFC[ENDTAB] = PFCSFC[0]; # GUARANTEE A MATCH # FOR I=0 WHILE NIPSMFC[I] NQ PFCSFC[0] DO # FIND MATCHING PFCSFC # BEGIN I = I + 1; END GOTO SMCASEJT[I]; # JUMP ON ACTION ORDINAL # C01: OVLNAME = NPREGLLP; # OVERLAY NAME # PARAMS5 = FALSE; # FLAG FOR ERROR # PARAMP1 = P; OVLCALL; # LOAD AND EXECUTE OVERLAY # IF PARAMS5 # IF ERROR OCCURS # THEN GOTO C3; # DISCARD REGLL # ELSE GOTO EXIT; # NORMAL EXIT # C02: OVLNAME = NPREGCPP; # OVERLAY NAME # GOTO C0; C03: OVLNAME = NPREGSTP; GOTO C0; C04: OVLNAME = NPREGHHP; GOTO C0; C05: OVLNAME = NPHECPP; GOTO C0; C06: OVLNAME = NPESTOFP; PARAMP2 = 0; GOTO C0; C07: OVLNAME = NTOTBTSP; GOTO C0; C08: OVLNAME = NPHOPMSP; GOTO C0; C09: OVLNAME = NPNPIDDP ; GOTO C0; C10: OVLNAME = NPININDP; GOTO C0; C0: # CALL PRIMARY OVERLAY TO PROCESS SM # PARAMP1 = P; OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO EXIT; C1: # CALL NCSTTP # P = P + BLKHSIZE; LOCLLCB(DN[0],SN[0],P); # LOCATE LLCB # IF P NQ 0 THEN BEGIN P = P; # BASE SM # NCN = ICNCN[0]; # CN FOR ICN/TCN/CHC # IF PFCSFC[0] EQ TCNTA THEN BEGIN RCBRK = TCNRC[0]; # SAVE REASON CODE # END IF PFCSFC[0] EQ ICNTE # ICNTE MESSAGE # THEN BEGIN FOUND = FALSE; FOR INDIX = 0 STEP NBTFETNO WHILE NOT FOUND AND INDIX LQ NBTMAXID DO BEGIN IF NBTIUF[INDIX] AND NBTHN[INDIX] EQ DN[0] THEN BEGIN FOUND = TRUE; IF NBTET[INDIX] EQ "ND" # IF MDI # THEN BEGIN ICNNET[0] = TRUE; # SET CDCNET FLAG # END END END END NCSTRIG = OVL$TRIG[I]; # SET NCSTTP TRIGGER # NCSTTP(P,NCN,NCSTRIG,P); GOTO EXIT; END ELSE GOTO C3; # PROCESS GARBAGE MESSAGE # C3: # PROCESS GARBAGE MESSAGE # ERROR = TRUE; EXIT: RETURN; END TERM