cdc:nos2.source:nam5871:nfob
Table of Contents
NFOB
Table Of Contents
- [00013] PROC NFOB(BUFADDR,NCNBAD)
- [00083] PROC BLINK
- [00084] PROC LOCLLCB
- [00085] PROC NFOB1
- [00086] PROC NXBLINK
- [00087] PROC TWRITE
- [00088] PROC XTRACE
Source Code
- NFOB.txt
- *DECK NFOB
- USETEXT NIPDEF
- USETEXT AHEADER
- USETEXT ACNB
- USETEXT BPIPBUF
- USETEXT DBGBUF
- USETEXT DRHDR
- USETEXT NHEADER
- USETEXT LLCB
- USETEXT NCNB
- USETEXT STATTAB
- USETEXT SYSTIME
- PROC NFOB(BUFADDR,NCNBAD) ; # LINK BLOCK TO PIP OUTBOUND #
- STARTIMS;
- #
- *1DC NFOB
- *
- * 1. PROC NAME AUTHOR DATE
- * NFOB P.C.TAM 80/02/08
- * C. BITTNER 81/07/13
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * THIS ROUTINE IS RESPONSIBLE FOR LINKING MESSAGES TO THE PIP
- * OUTBOUND BUFFER CHAIN AND THE A-A INTRA-HOST
- * MESSAGE QUEUE.
- *
- * 3. METHOD USED.
- * CN NON-ZERO
- * ABT = BLK,MSG,CMD (SYNCHRONOUS SM)
- * IN REGULATION OR DOWNLINE BLOCK LIMIT REACHED
- * LINK MSG TO NCNB
- * NOT IN REGULATION
- * SET-UP NETWORK HEADER
- * ADD BSN TO DOWNLINE MESSAGES
- * CREATE ACKNOWLEDGE QUEUE ENTRY
- * RESET HOSTSIDE INACTIVITY TIMER
- * ABT = APPNET (ONE WORD NETWORK MSG-INITR,RST,TERM,...)
- * CN = 0
- * SET UP NETWORK HEADER
- * UPDATE STATISTICS
- * IF THE MESSAGE IS AN A-A INTRA-HOST MESSAGE
- * (DN OR SN = 0) THEN CALL NFOB1 TO QUEUE
- * THE MESSAGE TO THE A-A INTRA-HOST QUEUE
- * ELSE (IF NOT A-A INTRA-HOST MESSAGE)
- * CALL NXBLINK TO QUEUE THE MESSAGE TO
- * THE PIP OUTBOUND CHAIN.
- *
- * 4. ENTRY PARAMETERS.
- * BUFADD ADDRESS OF DATA MESSAGE
- * NCNBAD ADDRESS OF NCNB/LLCB
- *
- * 5. EXIT PARAMETERS.
- * NONE
- *
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED
- * BPIPBUF DRHDR DBGBUF NHEADER
- * NIPDEF ACNB NCNB STATTAB
- * SYSTIME AHEADER LLCB
- *
- * 7. ROUTINES CALLED.
- * BLINK LINK DATA MESSAGE TO NCNB
- * LOCLLCB LOCATE LLCB
- * NFOB1 INTRA-HOST LINK PROCESSOR
- * NXBLINK LINK MSG TO PIP OUTBOUND CHAIN
- * XTRACE TRACES CALLS
- *
- * 8. DAYFILE MESSAGES. NONE
- *
- #
- STOPIMS;
- #
- FORMAL PARAMS
- #
- ITEM BUFADDR ; # FWA OF BLOCK TO SEND TO NPU #
- ITEM NCNBAD ; # FWA OF NCNB/LLCB #
- #
- EXTERNAL VARIABLES
- #
- XREF BEGIN
- PROC BLINK; # LINK DATA MESSAGE TO NCNB #
- PROC LOCLLCB; # LOCATE LLCB #
- PROC NFOB1 ; # INTRA-HOST LINK PROCESSOR #
- PROC NXBLINK ; # LOG MESSAGE INTO PIP OUT #
- PROC TWRITE; # RECORD MESSAGE IN ZZZZZDN FILE #
- PROC XTRACE; # TRACE CALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM FETINDEX; # PRIORITY INDEX #
- ITEM INDEX2; # NBT FET INDEX FOR DOWNLINE DATA #
- ITEM ABHTEMP U; # TEMPORARY TO STORE ABH #
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1 ;
- XTRACE("NFOB ") ;
- CONTROL FI;
- P<DRHDRWD> = 0;
- P<NCNB> = NCNBAD;
- P<AHEADER> = BUFADDR + BLKHSIZE ;
- ABHTEMP = ABHWORD[0] ; # SAVE ABH #
- P<NHEADER> = P<AHEADER> ;
- P<AHEADER> = LOC(ABHTEMP) ;
- FETINDEX = 0; # INITIALIZE FET INDEX #
- IF NCNBID[0] EQ NCNBIDVALUE
- THEN
- BEGIN # CN NON-ZERO #
- LOCLLCB(NCNBHN[0],NCNBTN[0],P<LLCB>); # FIND MATCHING LLCB #
- IF ABHABT[0] NQ 0
- THEN # IT IS BLK, MSG, OR SYNCHRONOUS COMAND #
- BEGIN
- IF (NCNBNBO[0] GQ NCNBDBL[0]) OR NCNBHR[0] OR NCNBNR[0]
- THEN
- BEGIN # IN REGULATION OR NBL REACHED #
- BLINK(BUFADDR,NCNBAD); # LINK MSG TO NCNB #
- GOTO NFOB77;
- END
- ELSE
- BEGIN # SEND CONNECTION DATA TO NPU #
- NHWORD[0] = 0; # CLEAR NETWORK HEADER #
- IF ABHABT[0] NQ APPCMD
- THEN # DATA MESSAGE #
- BEGIN
- BT[0] = ABHABT[0] ; # BLOCK TYPE #
- NHDBC[0] = ABHDBC[0] ; # DATA BLOCK CLARIFIER #
- END
- ELSE
- BT[0] = NETCMD ; # SYNCH MESSAGE #
- # ADD BSN TO DOWNLINE MESSAGES #
- IF NCNBDBSN[0] LS 7
- THEN # BSN RANGES FROM 1 TO 7 #
- NCNBDBSN[0] = NCNBDBSN[0] + 1;
- ELSE
- NCNBDBSN[0] = 1;
- NHBSN[0] = NCNBDBSN[0]; # INSERT BSN INTO NETW HEADER #
- NCNBNBO[0] = NCNBNBO[0] + 1; # INCR DOWNLN BLK CTR #
- # CREATE ACKNOWLEDGE QUEUE ENTRY #
- # THE APPLICATION BLOCK HEADER WITH ADR=BSN IS ACKQ ENTRY #
- ABHADR[0] = NCNBDBSN[0]; # SAVE BSN IN ACKQ ENTRY #
- CMWORD[NCNBACKQ[0]+ACKHSIZE+NCNBAKIN[0]] = ABHWORD[0];
- IF (NCNBAKIN[0] + 1) GQ NCNBDBL[0]
- THEN
- NCNBAKIN[0] = 0; # RESET OFFSET TO BEGIN OF BUFFER #
- ELSE
- NCNBAKIN[0] = NCNBAKIN[0] + 1; # UPDATE IN PRT OFFSET #
- # RESET THE INACTIVITY COUNTER IN THE ACNB #
- P<ACNB> = NCNBACNB[0];
- IF P<ACNB> NQ 0
- THEN
- ACNBINACT[0] = RTSECS[0] + INACTVAL;
- CONTROL IFEQ STAT,1;
- NCNBTOTB[0] = NCNBTOTB[0] + 1;
- NCNBTOTC[0] = NCNBTOTC[0] + ABHTLC[0];
- CONTROL FI;
- END
- END
- NHADDR[0] = NCNBNADR[0]; # SET NETWORK NADRESS DN/SN/CN #
- IF BT[0] NQ NETBACK
- THEN # DELIVER BLOCK PROTOCOL ELEMENTS ON CONNECTION PRIORITY #
- BEGIN
- FETINDEX = NCNBPRI[0]; JCL1109 9
- IF FETINDEX EQ 1
- THEN # HIGH PRIORITY CONNECTION #
- BEGIN
- NHPRI[0] = TRUE;
- END
- ELSE
- BEGIN
- NHPRI[0] = FALSE;
- END
- END
- END
- ELSE # ASYNCHRONOUS SUPERVISORY MESSAGE #
- BEGIN
- P<LLCB> = NCNBAD ; # FWA OF LLCB #
- NHWORD[0] = 0; # CLEAR NETWORK HEADER #
- DN[0] = LLCBTN[0]; # DESTINATION NODE #
- SN[0] = LLCBHN[0]; # SOURCE NODE #
- BT[0] = NETCMD; # BLOCK TYPE #
- END
- INDEX2 = (LLCBNBTE[0]*NBTFETNO) + OSTFET + FETINDEX;
- NHACT[0] = ABHACT[0] ; # SET TEXT LENGTH #
- CC[0] = ABHTLC[0] ; # CHARACTER COUNT #
- CONTROL IFEQ STAT,1; # STATISTICS ON #
- LLCBCMTC[0] = LLCBCMTC[0] + CC[0];
- CONTROL FI;
- IF DN[0] EQ 0
- OR SN[0] EQ 0
- THEN # INTRA-HOST A TO A #
- NFOB1(BUFADDR) ;
- ELSE # NETWORK OUTBOUND DATA #
- NXBLINK(BUFADDR,INDEX2) ;
- NFOB77:
- RETURN;
- END
- TERM
cdc/nos2.source/nam5871/nfob.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator