cdc:nos2.source:nam5871:bldllcb
Table of Contents
BLDLLCB
Table Of Contents
- [00019] PRGM BLDLLCB
- [00100] PROC MGETS
- [00101] PROC BLINK
- [00102] PROC OSCHAPP
- [00104] PROC XTRACE
- [00105] PROC MGROW
- [00106] PROC MCLRIL
- [00107] PROC MSETIL
- [00108] PROC OMSG
- [00109] PROC RELCONN
- [00110] PROC BLDKWL
- [00111] PROC DAYTIME
- [00113] PROC ABORT
Source Code
- BLDLLCB.txt
- *DECK BLDLLCB
- USETEXT AHEADER
- USETEXT APPSTAT
- USETEXT FREETAB
- USETEXT LLCB
- USETEXT MSGIDX
- USETEXT NBT
- USETEXT NHEADER
- USETEXT NIPDEF
- USETEXT PARAMS
- USETEXT PT
- USETEXT AT
- USETEXT SUPMSG
- USETEXT TNT
- USETEXT KDIS
- USETEXT KSTTAB
- USETEXT DUMPFLG
- USETEXT PIT
- PRGM BLDLLCB;
- # BUILD LOGICAL LINK CONTROL BLOCK #
- STARTIMS;
- #
- *1DC BLDLLCB
- *
- * 1. PROC NAME AUTHOR DATE
- * BLDLLCB E.T. WAN 81/03/28
- *
- * 2. FUNCTIONAL DESCRIPTION
- * THIS ROUTINE BUILDS A LOGICAL LINK CONTROL BLOCK AND UPDATES
- * ITS HEADER.
- * ALSO, INFORM NVF ABOUT THE NEW LINK (FOR LID/PID)
- *
- * 3. METHOD USED
- * CALL MGETS TO GET BUFFER SPACE FOR THE LOGICAL LINK CONTROL
- * BLOCK AND UPDATE LIST POINTERS TO THE LLCB.
- * FILL IN THE HEADER OF THE LLCB.
- * SEARCH FOR MATCHING HOST NODE IN NBT WITH
- * DESTINATION NODE OF LOGICAL LINK. IF MATCHING
- * NBT ENTRY FOUND, THEN FILL IN LLCB ENTRY
- * INFORMATION. IF MATCHING ENTRY NOT FOUND
- * AND IN DEBUG MODE - ABORT NIP. UPDATE
- * K-DISPLAY STATUS INFORMATION IF NECESSARY.
- * UPDATE THE NUMBER OF LOGICAL LINKS IN THE TERMINAL NODE TABLE.
- *
- * 4. ENTRY PARAMETERS
- * PARAMS1 NETWORK BLOCK HEADER ADDRESS
- * PARAMS2 ADDRESS OF LOGICAL LINK CONTROL BLOCK
- * WHICH WILL LINK TO THE NEW CONTROL BLOCK
- * WITH ITS FORWARD POINTER.
- * IF NO SUCH A LLCB EXISTS, PARAMS2 IS ZERO.
- *
- * 5. EXIT PARAMETERS
- *
- * 6. COMDECKS CALLED
- * AHEADER
- * LLCB
- * NBT
- * NHEADER
- * NIPDEF
- * PARAMS
- * PT
- * SUPMSG
- * TNT
- * KDIS
- * OSSIZE
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * MGETS GET BUFFER SPACE
- * BLINK LINK A MESSAGE TO AN APPLICATION
- * OSCHAPP SCHEDULE APPLICATION
- * MGROW ALLOCATE EXTENDED BUFFER
- * OMSG OUTPUT DAYFILE MESSAGE
- * DAYTIME GET TIME IN DISPLAY
- * XTRACE TRACE CALLS
- * KADD ADD LINE TO STATUS DISPLY
- * KPUT UPDATE VALUE ON STATUS DISPLAY LINE
- *
- * 8. DAYFILE MESSAGES
- * "NIP INTERNAL ERROR - BLDLLCB"
- *
- * THIS PROGRAM IS A SECONDARY 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 SECONDARY
- *CALL OSSIZE
- *
- * THIS OVERLAY IS CALLED BY NPREGLL.
- *
- #
- STOPIMS;
- #
- **** EXTERNAL ENTRY POINTS
- #
- XREF
- BEGIN
- PROC MGETS; # GET BUFFER SPACE #
- PROC BLINK ;
- PROC OSCHAPP ;
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- PROC XTRACE; # RECORD TRACE #
- PROC MGROW ; # GROW TNT BUFFER #
- PROC MCLRIL ; # CLEAR INTERLOCK #
- PROC MSETIL ; # REQUEST INTERLOCK ROUTINE #
- PROC OMSG; # DAYFILE MESSAGE #
- PROC RELCONN ; # RELEASE CONNECTIONS #
- PROC BLDKWL; # FORMAT KWL TO ADD LLK TO STATUS DISPLAY #
- PROC DAYTIME ;
- CONTROL IFEQ DEBUG,1 ;
- PROC ABORT ;
- CONTROL FI ;
- END
- #
- * LOCAL VARIABLES
- #
- ITEM I; # LOOP CONTROL VARIABLE #
- ITEM IDXTN; # TNT WORD INDEX #
- ITEM INDX I ;
- ITEM BUFADDR ;
- ITEM NEWLLCB; # NEW LLCB #
- ITEM DTIME ;
- ITEM FOUND B ;
- ITEM KLGL U ; # POINTER TO STATUS DISPLAY BUFFER #
- ITEM KN U ; # INDEX INTO THE STATUS DISPLAY BUFFER #
- BEGIN # BLDLLCB #
- CONTROL IFEQ DEBUG,1 ;
- XTRACE("BLLCB") ;
- CONTROL FI;
- IF SHUTDOWN
- THEN
- GOTO RJMAIN;
- P<NHEADER> = PARAMS1; # LOCATION OF NETWORK HEADER #
- P<SMNIP> = P<NHEADER> + NBHSIZE; # LOCATION OF REG/LL SM #
- IDXTN = SN[0]; # TNT ENTRY INDEX #
- MGETS(LLCBSIZE,NEWLLCB,TRUE); # GET SPACE FOR LLCB #
- IF IDXTN GR TNTBS[0] - TNTHSIZE
- THEN
- BEGIN # NEED TO GROW TNT #
- MSETIL(0) ; # REQUEST INTERLOCK TO ALL PIP #
- MGROW(P<TNT>,IDXTN + TNTHSIZE,TRUE);
- PTTNT[0] = P<TNT> ; # UPDATE THE POINTER TABLE #
- MCLRIL ; # CLEAR INTERLOCK REQUESTED #
- END # NEED TO GROW TNT #
- IF TNTNLL[IDXTN] NQ 0 # LLCB EXISTED BEFORE NEWLLCB IS CREATED #
- THEN
- BEGIN
- P<LLCB> = PARAMS2; # MOVE TO PREVIOUS LLCB #
- LLCBFP[0] = NEWLLCB; # LINK FORWARD PTR TO NEW LLCB #
- END
- ELSE
- BEGIN
- TNTTN[IDXTN] = SN[0]; # INSERT TERMINAL NODE #
- TNTLLAD[IDXTN] = NEWLLCB; # INSERT ADDRESS OF NEWLLCB #
- END;
- P<LLCB> = NEWLLCB; # MOVE TO NEW LLCB #
- IF ATACBA[NVFAN] NQ 0
- THEN
- BEGIN # NVF ALREADY NETTED ON #
- #
- GET A BUFFER FOR MESSAGE TO INFORM NVF
- #
- MGETS( LCRSLL + ABHSIZE + BLKHSIZE , BUFADDR , TRUE ) ;
- #
- SET UP APPLICATION HEADER
- #
- P<AHEADER> = BUFADDR + BLKHSIZE ;
- ABHABT[0] = APPCMD ;
- ABHACT[0] = CT60TRANS ;
- ABHTLC[0] = LCRSLL ;
- #
- SET-UP THE MESSAGE ITSELF
- #
- P<SUPMSG> = BUFADDR + ABHSIZE + BLKHSIZE ;
- # #
- PFCSFC[0] = CRSLL ;
- P<SMNVF> = P<SUPMSG> ;
- # #
- CRSLDN [0] = SN[0] ; # DESTINATION NODE NUMBER #
- CRSLSN [0] = DN[0] ; # SOURCE NODE NUMBER #
- CRSLST [0] = 1 ; # LOGICAL LINK UP SIGNAL #
- #
- AND LINK MESSAGE TO NVF
- #
- BLINK ( BUFADDR,ATACBA[NVFAN]) ; # QUEUE TO NVF #
- OSCHAPP (ATACBA[NVFAN]) ;
- END # NVF ALREADY NETTED ON #
- #
- * FILL IN LOGICAL LINK CONTROL BLOCK HEADER. LLCB BLOCK SIZE HAS
- * BEEN FILLED IN BY MGETS.
- #
- LLCBID[0] = LLCBIDVALUE; # ID #
- # IF THIS NEW LLCB IS THE ONLY ONE IN THE LLCB RING THEN #
- # PARAMS2 MUST BE ZERO (NO PREVIOUS LLCB ), FORWARD POINTER #
- # AND BACKWARD POINTER ARE ZERO. #
- # IF THE NEW LLCB IS TO BE LINKED TO THE EXISTING RING #
- # FP IS ZERO AND BP IS PARAMS2, THE PREVIOUS LLCB #
- LLCBBP[0] = PARAMS2 ; # BACKWARD POINTER #
- LLCBFP[0] = 0 ; # FORWARD POINTER #
- LLCBHN[0] = DN[0]; # HOST NODE #
- LLCBTN[0] = SN[0]; # TERMINAL NODE #
- # LOOK FOR THE NBT THAT HAS THE HOST NUMBER MATCHING THE DN #
- FOUND = FALSE ;
- FOR I=0 STEP NBTFETNO WHILE (I LQ NBTMAXID)
- AND NOT FOUND
- DO
- BEGIN
- IF NBTHN[I] EQ DN[0]
- THEN
- BEGIN
- FOUND = TRUE ;
- INDX = I ;
- END
- END
- CONTROL IFEQ DEBUG,1 ;
- IF NOT FOUND
- THEN
- BEGIN
- D27M2[0] = "BLDLLCB";
- OMSG(DFMSG27,0); # DAYFILE "NIP INTERNAL ERROR" #
- ABORT(0,0) ;
- END
- CONTROL FI ;
- I = INDX ;
- #
- * THE CORRESPONDING NBT ENTRY WAS FOUND.
- #
- LLCBNBTE[0] = NBTINDX[I]; # GET INDEX OF CORRECT NBT ENTRY #
- LLCBCS[0] = REGC; # CS INDICATOR #
- LLCBNS[0] = REGN; # NS INDICATOR #
- LLCBHH[0] = REGH; # HOST TO HOST FLAG #
- LLCBNPC[0] = 0; # NUMBER OF PRU CONNECTIONS #
- LLCBHRL[0] = HRL; # HOST REGULATION #
- LLCBNRL[0] = REGB; # NPU REGULATION #
- LLCBNC[0] = 0; # NUMBER OF CONNECTIONS #
- LLCBCMTC[0] = 0; # CURRENT MESSAGE TRANSFER COUNT #
- LLCBLMTC[0] = 0; # LAST MESSAGE TRANSFER COUNT #
- LLCBPITIDX[0] = NBTPIP[I]; # SAVE PIP NUM IN LLCB #
- DAYTIME(DTIME);
- LLCBCRTM[0] = DTIME ;
- IF KDST[0]
- THEN # STATUS DISPLAY ON, ADD LLK ENTRY TO DISPLAY #
- BLDKWL(KST"LLK",DN[0],SN[0],KADDIDVALUE);
- TNTNLL[IDXTN] = TNTNLL[IDXTN] + 1; # INCREMENT LINK NUMBER #
- GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
- END # BLDLLCB #
- TERM
cdc/nos2.source/nam5871/bldllcb.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator