cdc:nos2.source:nam5871:ns_exc
Table of Contents
NS$EXC
Table Of Contents
- [00008] PROC NS$EXC
- [00010] NS$EXC - NS EXECUTIVE.
- [00014] NS EXECUTIVE.
- [00055] PROC NS$DBG
- [00061] PROC NDLOVLD
- [00062] PROC NETCHEK
- [00063] PROC NETWAIT
- [00064] FUNC NS$FEC U
- [00065] PROC NS$MSG
- [00066] PROC NS$OFF
- [00067] PROC NS$SHD
- [00068] PROC NS$SMP
- [00069] PROC MOVEOK
- [00070] PROC RECALL
- [00071] PROC RTIME
- [00072] PROC TSBINFO
- [00073] PROC XFLMGR
Source Code
- NS$EXC.txt
- *DECK NS$EXC
- USETEXT COM$NS
- USETEXT DEF$NS
- USETEXT ERR$NS
- USETEXT NAT$NS
- USETEXT NPT$NS
- PROC NS$EXC; # NS EXECUTIVE #
- # TITLE NS$EXC - NS EXECUTIVE. #
- BEGIN # NS$EXC #
- #
- ** NS$EXC - NS EXECUTIVE.
- *
- * J.C. LEE 1981
- *
- * THIS IS THE NS MAIN PROGRAM. IT IS THE EXECUTIVE.
- *
- * PROC NS$EXC
- *
- * ENTRY:
- * NONE.
- *
- * EXIT:
- * NONE.
- *
- * METHOD:
- * LOAD AND EXECUTE NS INITIALIZATION OVERLAY.
- * THIS PROC CONSISTS PRIMARY OF A LARGE LOOP.
- * EACH TIME THROUGH THE LOOP, THE FOLLOWING IS DONE:
- * GET REAL TIME CLOCK READING AND SET CURRENT TIME
- * IN SECONDS.
- * IF NS NOT IN NORMAL MODE AND STARTUP MODE TIMER
- * EXPIRED:
- * SET NS TO NORMAL MODE.
- * CALL SM PROCESSOR TO PROCESS ALL INCOMING SMS.
- * IF FORCE SHUTDOWN IN EFFECT:
- * NETOFF NS.
- * STOP RUN.
- * IF NOT FORCE SHUTDOWN:
- * CHECK NPU ACTIVITY TIMER.
- * IF NPU-TIMEOUT-INTERVAL NQ 0:
- * SET NETWAIT TIME TO NPU-TIMEOUT-INTERVAL.
- * ELSE:
- * SET NETWAIT TIME TO 4095 SECONDS.
- * CALL TSB MANAGER TO PERFORM MEMORY COMPACTION.
- * LOOP TERMINATES WHEN NS NETOFF, OR ERROR IS DETECTED.
- *
- #
- $BEGIN
- XREF
- BEGIN
- PROC NS$DBG; # TRACE PROCEDURE CALL #
- END
- $END
- XREF
- BEGIN
- PROC NDLOVLD; # OVERLAY LOADER #
- PROC NETCHEK; # AIP NETCHEK CALL #
- PROC NETWAIT; # NETWAIT #
- FUNC NS$FEC U; # FORMAT ERROR CODE #
- PROC NS$MSG; # MESSAGE DISPATCHER #
- PROC NS$OFF; # DISCONNECT FROM NETWORK #
- PROC NS$SHD; # SHUTDOWN PROCESSOR #
- PROC NS$SMP; # SUPERVISORY MESSAGE PROCESSOR #
- PROC MOVEOK; # ALLOW TSB TO MOVE #
- PROC RECALL; # RECALL #
- PROC RTIME; # GET REAL TIME CLOCK READING #
- PROC TSBINFO; # LOCATE TSB #
- PROC XFLMGR; # EXCESS FIELD LENGTH MANAGER #
- END
- ITEM ERRCODE U; # ERROR CODE #
- ITEM GTIMER U; # ACTIVITY TIMER #
- ITEM I I; # LOOP VARIABLE #
- ITEM LTIMER U; # RESPONSE TIMER #
- ITEM NATFWA U; # NAT FWA #
- ITEM NATSIZE U; # NAT SIZE #
- ITEM NEXTNATTSB U; # NAT TSB NUMBER #
- ITEM TSBN U; # TSB NUMBER #
- DEF L$CSHDMSG # 3 #; # MESSAGE SIZE #
- DEF DM$CSHDMSG # DM$LOCAL + DM$NAMLOG #; # ROUTING OPTIONS #
- ARRAY MSG$CSHD [0:0] S(L$CSHDMSG);
- BEGIN # SHUTDOWN COMPLETED MESSAGE #
- ITEM CSHD$TEXT C(00,00,25) =
- ["SHUTDOWN COMPLETED."];
- ITEM CSHD$END U(02,30,30) = [0];
- END
- ARRAY REALTIME [0:0] S(1);
- BEGIN # STATUS WORD FOR RTIME CALL #
- ITEM CURSEC U(00,00,24); # SECOND CLOCK #
- ITEM CURMS U(00,24,36); # MILLISECOND CLOCK #
- END
- ARRAY NSI$OVLY [0:0] S(1);
- BEGIN # INITIALIZATION OVERLAY NAME AND LEVEL #
- ITEM NO$NAM C(00,00,07) = ["NSIOVLY"];
- ITEM NO$LV1 U(00,42,09) = [1];
- ITEM NO$LV2 U(00,51,09) = [0];
- END
- ARRAY MKD$OVLY [0:0] S(1);
- BEGIN # K-DISPLAY MANAGER OVERLAY NAME/LEVEL #
- ITEM MO$NAM C(00,00,07) = ["MKDOVLY"];
- ITEM MO$LV1 U(00,42,09) = [3];
- ITEM MO$LV2 U(00,51,09) = [0];
- END
- ARRAY ERR$OVLY [0:0] S(1);
- BEGIN # ERROR PROCESSOR OVERLAY NAME AND LEVEL #
- ITEM EO$NAM C(00,00,07) = ["ERROVLY"];
- ITEM EO$LV1 U(00,42,09) = [5];
- ITEM EO$LV2 U(00,51,09) = [0];
- END
- CONTROL EJECT;
- $BEGIN
- NS$DBG("EXC");
- $END
- #
- LOAD AND EXECUTE NS INITIALIZATION OVERLAY
- #
- NDLOVLD(NSI$OVLY);
- FOR I = 0
- DO # NS EXECUTIVE LOOP #
- BEGIN
- RTIME(REALTIME); # GET REAL TIME CLOCK READING #
- CURTIME = CURSEC[0]; # SET CURRENT TIME IN SECONDS #
- IF NSM NQ M$NORMAL # NS NOT IN NORMAL MODE #
- AND CURTIME GR NMTIME # STARTUP MODE TIMER EXPIRED #
- THEN
- NSM = M$NORMAL; # SET NS TO NORMAL MODE #
- #
- CALL SUPERVISORY MESSAGE PROCESSOR TO PROCESS ALL
- INCOMING SUPERVISORY MESSAGES
- #
- NS$SMP;
- IF NOT FORCESHUT
- THEN # FORCE SHUTDOWN IS NOT IN EFFECT #
- BEGIN
- #
- CHECK NPU ACTIVITY TIMERS FOR EXPIRATION
- #
- NEXTNATTSB = NPT$NLHEAD[0]; # HEAD PTR OF NAT LIST #
- FOR I = 0 WHILE NEXTNATTSB NQ 0
- DO # MORE NAT IN LIST #
- BEGIN # CHECK NAT FOR TIMER EXPIRATION#
- TSBINFO(NATSIZE,NATFWA,NEXTNATTSB); # LOCATE NAT #
- P<NAT> = NATFWA; # FWA OF NAT #
- TSBN = NEXTNATTSB; # SAVE CURRENT NAT TSBN #
- NEXTNATTSB = NAT$NLFP[0]; # NEXT NAT IN LIST #
- LTIMER = NAT$LTIMER[0]; # RESPONSE TIMER #
- GTIMER = NAT$GTIMER[0]; # ACTIVITY TIMER #
- IF CURTIME GR LTIMER
- OR (GTIMER NQ 0
- AND CURTIME GR GTIMER)
- THEN # TIMEOUT ERROR #
- BEGIN
- NTORD = NAT$NTORD[0]; # NPU TABLE ORDINAL #
- ERRCODE = NS$FEC(EC"ERR$TIMER",0);
- NDLOVLD(ERR$OVLY,ERRCODE); # PROCESS TIMEOUT ERROR #
- IF NPT$NATTSB[NTORD] NQ 0
- THEN
- NEXTNATTSB = TSBN;
- END
- ELSE # TIMER(S) ARE STILL RUNNING #
- BEGIN
- MOVEOK(TSBN); # ALLOW NAT TO MOVE #
- END
- END
- END
- IF FORCESHUT # FORCE SHUTDOWN IN EFFECT #
- OR (GRADSHUT AND NPT$NLHEAD[0] EQ 0) # GRADUAL SHUTDOWN/NO NP#
- THEN # SHUTDOWN NS #
- BEGIN
- NS$MSG(MSG$CSHD,L$CSHDMSG,DM$CSHDMSG);
- NS$OFF; # DISCONNECT FROM NETWORK #
- STOP; # ENDRUN #
- END
- IF DCW$F$SKD[0]
- THEN # K-DISPLAY DATA TO SEND #
- NDLOVLD(MKD$OVLY); # CALL K-DISPLAY MANAGER #
- #
- PERFORM EXCESS FIELD LENGTH PROCESSING
- #
- XFLMGR;
- #
- GIVE UP CPU WHILE WAITING FOR NEXT INPUT
- #
- IF NPT$NLHEAD[0] NQ 0
- THEN # ACTIVE NPU(S) STILL EXIST #
- BEGIN # STAY IN CONTROL POINT UNTIL ACTIVITY COMPLETED #
- NETCHEK; # FLUSH WORKLIST AND GET UPDATED S/I STATUS #
- RECALL(0); # RELINQUISH CPU WHILE WAITING FOR INPUT #
- END
- ELSE # NO ACTIVE NPU #
- NETWAIT(MAX$NWTIME,FALSE);
- END
- RETURN;
- END # NS$EXC #
- TERM
cdc/nos2.source/nam5871/ns_exc.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator