cdc:nos2.source:nam5871:ns_xpd
Table of Contents
NS$XPD
Table Of Contents
- [00016] PROC NS$XPD(ERRCODE)
- [00018] NS$XPD - PROCESS DUMP/LOAD PROCEDURE DIRECTIVES.
- [00022] PROCESS DUMP/LOAD PROCEDURE DIRECTIVES.
- [00075] PROC NS$DBG
- [00081] PROC MOVEOK
- [00082] PROC NETPUT
- [00083] PROC NS$FBH
- [00084] FUNC NS$FEC U
- [00085] PROC NS$FLN
- [00086] PROC NS$FLR
- [00087] PROC NS$GNW
- [00088] PROC NS$INL
- [00089] PROC NS$MSG
- [00090] PROC NS$SDB
- [00091] PROC NS$SLB
- [00092] PROC NS$SLT
- [00093] PROC NS$TNA
- [00094] PROC RECALL
- [00095] PROC RETERN
- [00096] PROC RETTSB
- [00097] PROC TSBINFO
- [00098] PROC WRITEF
Source Code
- NS$XPD.txt
- *DECK NS$XPD
- USETEXT COM$NS
- USETEXT DEF$NS
- USETEXT DTSB$NS
- USETEXT ERR$NS
- USETEXT NAT$NS
- USETEXT NDCB$NS
- USETEXT NPT$NS
- USETEXT NST$NS
- USETEXT PFC$NS
- USETEXT PIC$NS
- USETEXT SMB$NS
- USETEXT SMD$NS
- USETEXT STC$NS
- PROC NS$XPD(ERRCODE); # PROCESS DUMP/LOAD PROCEDURE DIRECTIVES #
- # TITLE NS$XPD - PROCESS DUMP/LOAD PROCEDURE DIRECTIVES. #
- BEGIN # NS$XPD #
- #
- ** NS$XPD - PROCESS DUMP/LOAD PROCEDURE DIRECTIVES.
- *
- * J.C. LEE 1981
- *
- * THIS ROUTINE PROCESSES DUMP/LOAD PROCEDURE DIRECTIVES.
- *
- * PROC NS$XPD(ERRCODE)
- *
- * ENTRY:
- * NONE.
- *
- * EXIT:
- * ERRCODE.
- *
- * METHOD:
- * CLEAR ERRCODE.
- * LOCATE PICB.
- * SET DONE TO FALSE.
- * SET I TO 0.
- * WHILE NOT DONE
- * AND ERRCODE EQ 0
- * AND LQ NAT$PENDI:
- * DO
- * INCREMENT INDEX TO NEXT DIRECTIVE.
- * UPDATE PICB DIRECTIVE INDEX.
- * CLEAR SECONDARY STATE.
- * STORE DIRECTIVE IN NAT.
- * CASE ON PRIMARY STATE TO DETERMINE IF DIRECTIVE IS
- * VALID FOR THE PROCEDURE CONTROL BLOCK IN PROCESS:
- * 1) ILLEGAL STATE:
- * DAYFILE MESSAGE AND ABORT.
- * 2) SAM-LOAD:
- * CASE ON XPCB DIRECTIVE CODE.
- * (ILLEGAL, LOAD, START, ILLEGAL, ILLEGAL,
- * ILLEGAL, ILLEGAL)
- * 3) NPU-DUMP:
- * CASE ON XPCB DIRECTIVE CODE.
- * (DUMP, LOAD, START, ILLEGAL, ILLEGAL,
- * ILLEGAL, SAVE-DUMP, ILLEGAL)
- * 4) NPU-LOAD:
- * CASE ON XPCB DIRECTIVE.
- * (DUMP, LOAD, START, ILLEGAL, START-C,
- * LOAD-NCB, ILLEGAL, ILLEGAL)
- * EXECUTE XPCB DIRECTIVE.
- * ENDWHILE
- *
- #
- ITEM ERRCODE U; # ERROR CODE #
- $BEGIN
- XREF
- BEGIN
- PROC NS$DBG; # TRACE PROCEDURE CALLS #
- END
- $END
- XREF
- BEGIN
- PROC MOVEOK; # ALLOW TSB TO MOVE #
- PROC NETPUT; # NETPUT #
- PROC NS$FBH; # FORMAT ABH FOR NETWORK SM #
- FUNC NS$FEC U; # FORMAT ERROR CODE #
- PROC NS$FLN; # SEND NPU/DT/R(LOAD NDCB) #
- PROC NS$FLR; # FIND LOAD MODULE RECORD #
- PROC NS$GNW; # GET NPU WORD #
- PROC NS$INL; # INITIATE NPU LOAD #
- PROC NS$MSG; # DISPATCH MESSAGE #
- PROC NS$SDB; # SEND DUMP BATCH #
- PROC NS$SLB; # SEND LOAD BATCH #
- PROC NS$SLT; # START RESPONSE TIMER #
- PROC NS$TNA; # TERMINATE NPU ACTIVITY #
- PROC RECALL; # MACREL RECALL #
- PROC RETERN; # MACREL RETURN #
- PROC RETTSB; # RELEASE TSB #
- PROC TSBINFO; # LOCATE TSB #
- PROC WRITEF; # MACREL WRITEF #
- END
- STATUS XPCBCODE # CASES FOR XPCB DIRECTIVE PROCESSING #
- DUMP, # DUMP SPECIFIED AREA #
- LOAD, # LOAD SPECIFIED MODULE #
- START, # START NPU, WAIT FOR RESPONSE #
- STARTC, # RESTORE NDCB, START NPU #
- LOADNCB, # LOAD NDCB #
- SAVENDF, # SAVE NPU DUMP FILE #
- ENDSPCB, # END OF SPCB #
- ENDDPCB, # END OF DPCB #
- ENDLPCB, # END OF LPCB #
- ILLEGAL, # ILLEGAL XPCB DIRECTIVE #
- ;
- ITEM CODE U; # DIRECTIVE CODE #
- ITEM DONE B; # CURRENT DIRECTIVE PROCESSED #
- ITEM K I; # TEMPORARY, PICB INDEX #
- ITEM I I; # INDUCTION VARIABLE #
- ITEM LMNAME C(6); # LOAD MODULE NAME #
- ITEM PICBTSBN U; # TSB NO OF PICB TSB #
- ITEM RI U; # RANDOM INDEX OF FIRST MODULE RECORD #
- ITEM SS U; # TEMPORARY VARIABLE #
- ITEM TSBFWA U; # TSB FWA #
- ITEM TSBSIZE U; # TSB SIZE #
- ARRAY VDIRTAB [0:DIRCODE"ENDPCB"] S(1);
- BEGIN # VALID DIRECTIVE TABLE FOR XPCB #
- ITEM LSAMCODE S:XPCBCODE(00,06,18) = [ # VALID SPCB DIRECTIVE #
- S"ILLEGAL",
- S"LOAD",
- S"ILLEGAL",
- S"ILLEGAL",
- S"STARTC",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ENDSPCB",
- ];
- ITEM DNPUCODE S:XPCBCODE(00,24,18) = [ # VALID DPCB DIRECTIVE #
- S"DUMP",
- S"LOAD",
- S"START",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"SAVENDF",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ENDDPCB",
- ];
- ITEM LNPUCODE S:XPCBCODE(00,42,18) = [ # VALID LPCB DIRECTIVE #
- S"DUMP",
- S"LOAD",
- S"START",
- S"ILLEGAL",
- S"STARTC",
- S"LOADNCB",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ILLEGAL",
- S"ENDLPCB",
- ];
- END
- DEF L$EM30 # 3 #;
- DEF DM$EM30 # DM$LOCAL+DM$EVENT+DM$NAMLOG #; # ROUTING OPT #
- ARRAY MSG$EM30 [0:0] S(L$EM30);
- BEGIN
- ITEM EM27$TEXT C(0,0,27) = # EVENT MESSAGE TEXT #
- ["NPUNAME, LOADING (XXXXXX). "];
- ITEM EM30$NPNAM C(0,00,7); # NPU NAME #
- ITEM EM30$LMNAM C(01,48,06); # LOAD MODULE NAME #
- ITEM EM30$END U(02,42,18) = [0]; # END OF TEXT #
- END
- $BEGIN
- DEF L$EM60 # 4 #;
- DEF DM$EM60 # DM$LOCAL+DM$NAMLOG #; # ROUTING OPT #
- ARRAY MSG$EM60 [0:0] S(L$EM60);
- BEGIN
- ITEM EM60$TEXT C(0,0,32) = # MESSAGE TEXT #
- ["NPUNAME, ILLEGAL PICB DIRECTIVE."];
- ITEM EM60$NPNAM C(0,00,7); # NPU NAME #
- ITEM EM60$END U(3,12,48) = [0]; # END OF TEXT #
- END
- $END
- DEF L$EM11 # 3 #;
- DEF DM$EM11 # DM$LOCAL+DM$EVENT+DM$NAMLOG #; # ROUTING OPT #
- ARRAY MSG$EM11 [0:0] S(L$EM11);
- BEGIN
- ITEM EM11$TEXT C(0,0,28) = # EVENT MESSAGE TEXT #
- ["NPUNAME, SAM LOAD COMPLETED."];
- ITEM EM11$NPNAM C(0,00,7); # NPU NAME #
- ITEM EM11$END U(02,48,12) = [0]; # END OF TEXT #
- END
- DEF L$EM22 # 4 #;
- DEF DM$EM22 # DM$LOCAL+DM$EVENT+DM$NAMLOG #; # ROUTING OPT #
- ARRAY MSG$EM22 [0:0] S(L$EM22);
- BEGIN
- ITEM EM22$TEXT C(0,0,32) = # EVENT MESSAGE TEXT #
- ["NPUNAME, DUMP XXXXXXX COMPLETED."];
- ITEM EM22$NPNAM C(0,00,7); # NPU NAME #
- ITEM EM22$NDPFN C(1,24,7); # NPU DUMP FILE PFN #
- ITEM EM22$END U(3,12,48) = [0]; # END OF TEXT #
- END
- DEF L$EM31 # 3 #;
- DEF DM$EM31 # DM$LOCAL+DM$EVENT+DM$NAMLOG #; # ROUTING OPT #
- ARRAY MSG$EM31 [0:0] S(L$EM31);
- BEGIN
- ITEM EM31$TEXT C(0,0,24) = # EVENT MESSAGE TEXT #
- ["NPUNAME, LOAD COMPLETED."];
- ITEM EM31$NPNAM C(0,00,7); # NPU NAME #
- ITEM EM31$END U(2,24,36) = [0]; # END OF TEXT #
- END
- DEF L$XPDABT # 2 #;
- DEF DM$XPDABT # DM$LOCAL+DM$ABORT #; # ROUTING OPTIONS #
- ARRAY MSG$XPDABT [0:0] S(L$XPDABT);
- BEGIN
- ITEM XPDA$TEXT C(0,0,18) = # MESSAGE TEXT #
- ["INVALID NPU STATE."];
- ITEM XPDA$END U(01,48,12) = [0]; # END OF TEXT #
- END
- SWITCH XPCBCASE:XPCBCODE # STATUS SWITCH FOR DIRECTIVE PROCESSING#
- C$DUMP:DUMP, # DUMP DIRECTIVE #
- C$LOAD:LOAD, # LOAD DIRECTIVE #
- C$START:START, # START DIRECTIVE #
- C$STARTC:STARTC, # STARTC DIRECTIVE #
- C$LOADNCB:LOADNCB, # LOAD NCB DIRECTIVE #
- C$SAVENDF:SAVENDF, # SAVE NDF DIRECTIVE #
- C$ENDSPCB:ENDSPCB, # END DIRECTIVE IN SPCB #
- C$ENDDPCB:ENDDPCB, # END DIRECTIVE IN DPCB #
- C$ENDLPCB:ENDLPCB, # END DIRECTIVE IN LPCB #
- C$ILLEGAL:ILLEGAL; # ILLEGAL DIRECTIVE #
- SWITCH NPSCASE:PRISTATE # STATUS SWITCH FOR NPU PRIMARY STATE #
- NPS0:NPS$NONO, # IDLE STATE #
- NPS1:NPS$LSAM, # LOADING SAM #
- NPS2:NPS$DNPU, # DUMPING NPU #
- NPS3:NPS$LNPU, # LOADING NPU #
- NPS0:NPS$DNDCB; # DUMPING NDCB #
- CONTROL EJECT;
- $BEGIN
- NS$DBG("XPD");
- $END
- ERRCODE = 0;
- DONE = FALSE;
- I = 0;
- PICBTSBN = NAT$PITSBN[0]; # TSB NUMBER OF PICB TSB #
- TSBINFO(TSBSIZE,TSBFWA,PICBTSBN); # LOCATE PICB #
- P<PICB> = TSBFWA; # FWA OF PICB #
- FOR K = 0 WHILE NOT DONE
- AND ERRCODE EQ 0
- AND I LQ NAT$PENDI[0]
- DO # PROCESS NEXT XPCB DIRECTIVE #
- BEGIN
- I = NAT$PDIRI[0] + 1; # INCREMENT INDEX TO NEXT DIRECTIVE #
- NAT$PDIRI[0] = I; # UPDATE PICB DIRECTIVE INDEX #
- NAT$SSTATE[0] = 0; # CLEAR SECONDARY STATE #
- NAT$PCBDIR[0] = PICB$ENTRY[I]; # STORE DIRECTIVE IN NAT #
- CODE = NAT$CODE[0]; # DIRECTIVE CODE #
- #
- CASE ON PRIMARY STATE TO DETERMINE IF DIRECTIVE IS VALID
- FOR THE PROCEDURE CONTROL BLOCK CURRENTLY BEING PROCESSED
- #
- SS = NAT$PSTATE[0]; # PRIMARY STATE #
- GOTO NPSCASE[SS];
- NPS0: # ILLEGAL STATE, ABORT NS #
- BEGIN
- NS$MSG(MSG$XPDABT,L$XPDABT,DM$XPDABT);
- END
- NPS1: # LOADING SAM #
- CODE = LSAMCODE[CODE];
- GOTO NPSXPCB;
- NPS2: # DUMPING NPU #
- CODE = DNPUCODE[CODE];
- GOTO NPSXPCB;
- NPS3: # LOADING NPU #
- CODE = LNPUCODE[CODE];
- GOTO NPSXPCB;
- NPSXPCB: # SWITCH ON XPCB DIRECTIVE CODE #
- GOTO XPCBCASE[CODE];
- C$DUMP: # PROCESS DUMP DIRECTIVE #
- NS$SDB; # SEND DUMP BATCH #
- NAT$SSTATE[0] = S"NSS$WDUMP"; # WAITING FOR DUMP RESPONSE #
- NS$SLT; # START RESPONSE TIMER #
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- C$LOAD: # PROCESS LOAD DIRECTIVE #
- LMNAME = NAT$LMNAME[0]; # NAME OF LOAD MODULE #
- NS$FLR(LMNAME,RI,SS,ERRCODE); # FIND LOAD MODULE ON NLF #
- SENDLB:
- IF ERRCODE EQ 0
- THEN # LOAD MODULE FOUND #
- BEGIN
- NS$SLB(LMNAME,RI,ERRCODE); # SEND LOAD BATCH #
- IF ERRCODE EQ 0
- THEN # LOAD BATCH SENT #
- BEGIN
- NS$SLT; # START RESPONSE TIMER #
- NAT$SSTATE[0] = S"NSS$WLOAD"; # WAITING FOR LOAD RESPONSE #
- EM30$NPNAM[0] = NPNAM; # NPU NAME #
- EM30$LMNAM[0] = LMNAME; # LOAD MODULE NAME #
- NS$MSG(MSG$EM30,L$EM30,DM$EM30); # DISPATCH EVENT MSG #
- END
- END
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- C$START: # PROCESS START DIRECTIVE #
- NS$FBH(LNPUDTSR,TRUE); # FORMAT ABH FOR NETWORK SM #
- PFCSFC[0] = NPUDT; # FORMAT NPU/DT/R(START) #
- NPUPO[0] = NAT$PN[0]; # SET PORT NUMBER #
- NPUSP[0] = NAT$SPN[0]; # SET SUBPORT NUMBER #
- NPULS[0] = NAT$LSN[0]; # SET LOAD SEQUENCE NO #
- NPUCC[0] = CMDCODE"CC$STRTR"; # SET COMMAND CODE #
- NETPUT(ABH$WORD,SMB$BUFFER); # SEND NPU/DT/R(START) #
- NAT$SSTATE[0] = S"NSS$WSTART"; # WAITING FOR START RESPONSE #
- NS$SLT; # START RESPONSE TIMER #
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- C$STARTC: # PROCESS STARTC DIRECTIVE #
- IF NAT$PSTATE[0] EQ S"NPS$LSAM"
- THEN # LOADING SAM #
- BEGIN # SEND NPU/DT/R(STARTC) #
- NS$FBH(LNPUDTSC,TRUE); # FORMAT ABH FOR NETWORK SM #
- PFCSFC[0] = NPUDT;
- NPUPO[0] = NAT$PN[0]; # SET PORT NUMBER #
- NPUSP[0] = NAT$SPN[0]; # SET SUBPORT NUMBER #
- NPULS[0] = NAT$LSN[0]; # SET LOAD SEQUENCE NUMBER #
- NPUCC[0] = CMDCODE"CC$STRTC";# SET COMMAND CODE #
- NETPUT(ABH$WORD,SMB$BUFFER); # SEND STARTC REQUEST #
- GOTO NEXTDIR; # PROCESS NEXT SPCB DIRECTIVE #
- END
- NS$FLN(FALSE); # SEND NPU/DT/R (LOAD NDCB) #
- NAT$SSTATE[0] = S"NSS$WNDCB"; # WAITING FOR LOAD NDCB RESPONSE#
- NS$SLT; # START RESPONSE TIMER #
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- C$LOADNCB: # PROCESS LOAD NCB DIRECTIVE #
- IF NPT$NCBSZ[NTORD] LQ NAT$NCBSZ[0]
- THEN # NCB SIZE WITHIN ALLOWED LIMIT #
- BEGIN # LOAD NCB INTO NPU #
- LMNAME = "NCB"; # LOAD MODULE IS NCB #
- RI = NPT$NCBRI[NTORD]; # RANDOM INDEX OF NCB ON NCF #
- NAT$NCBFWA[0] = NAT$DIRP2[0]; # NCB FWA #
- NAT$LMNAME[0] = LMNAME; # SAVE LOAD MODULE NAME #
- END
- ELSE # NCB SIZE EXCEEDS ALLOWED LIMIT#
- BEGIN
- ERRCODE = NS$FEC(EC"ERR$FILE",FEC"ERR$NCBSIZ");
- END
- GOTO SENDLB; # SEND LOAD BATCH #
- C$SAVENDF:
- NAT$F$SNDF[0] = TRUE; # SET SAVE NPU DUMP FLAG #
- GOTO NEXTDIR; # CONTINUE WITH NEXT DIRECTIVE #
- C$ILLEGAL: # PROCESS ILLEGAL XPCB DIRECTIVE #
- $BEGIN
- EM60$NPNAM[0] = NPNAM; # NPU NAME #
- NS$MSG(MSG$EM60,L$EM60,DM$EM60); # DISPATCH MESSAGE #
- $END
- NAT$DEC[0] = NAT$DEC[0] + 1; # INCREMENT DIRECTIVE ERROR CNT #
- IF NAT$DEC[0] GR MAX$DEC
- THEN # ILLEGAL DIRECTIVE IN PICB #
- BEGIN
- ERRCODE = NS$FEC(EC"ERR$FILE",FEC"ERR$PICBD");
- END
- GOTO NEXTDIR; # CONTINUE WITH NEXT DIRECTIVE #
- C$ENDSPCB: # PROCESS END OF SAM LOAD PROCEDURE #
- STC$SAML = STC$SAML + 1; # INCREMENT NO OF SAM LOADS #
- EM11$NPNAM[0] = NPNAM; # NPU NAME #
- NS$MSG(MSG$EM11,L$EM11,DM$EM11); # DISPATCH MESSAGE #
- TSBINFO(TSBSIZE,TSBFWA,NPT$NSTTSB[NTORD]); # LOCATE NST #
- P<NST> = TSBFWA;
- NST$SAMSPC[0] = 0; # CLEAR CONSECUTIVE SAM PREEMPT COUNT #
- MOVEOK(NPT$NSTTSB[NTORD]); # ALLOW NST TO MOVE #
- NS$TNA; # TERMINATE NPU ACTIVITY #
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- C$ENDDPCB: # PROCESS END OF NPU DUMP PROCEDURE #
- TSBINFO(TSBSIZE,TSBFWA,NAT$NDTSBN[0]); # LOCATE DUMP TSB #
- P<DTSB$HDR> = TSBFWA;
- P<DTSB$FET> = TSBFWA + L$DTSBHDR; # FWA OF DUMP FET #
- WRITEF(DTSB$FET); # WRITE END OF FILE TO NPXXXYY #
- EM22$NPNAM[0] = NPNAM; # SET NPU NAME #
- EM22$NDPFN[0] = DFET$LFN[0]; # SET PFN OF NPU DUMP FILE #
- NS$MSG(MSG$EM22,L$EM22,DM$EM22); # DISPATCH MESSAGE #
- STC$DUMPS = STC$DUMPS + 1; # INCREMENTS DUMPS GENERATED #
- TSBINFO(TSBSIZE,TSBFWA,NPT$NSTTSB[NTORD]); # LOCATE NST TSB #
- P<NST> = TSBFWA; # FWA OF NST #
- TSBINFO(TSBSIZE,TSBFWA,NAT$SMTSBN[0]); # LOCATE DUMP NDCB RESP #
- P<NDCB> = TSBFWA; # FWA OF DUMP NDCB RESPONSE #
- NST$DPDATE[0] = DTSB$PDATE[0]; # MOST RECENT DUMP DATE/TIME #
- NST$NDFPFN[0] = DFET$LFN[0]; # MOST RECENT DUMP FILE PFN #
- NS$GNW(NDCB,LNPUDTDN,NDCBINDEX"NDCB$HALTC",SS);
- NST$NHC[0] = SS; # SET NPU HALT CODE #
- NS$GNW(NDCB,LNPUDTDN,NDCBINDEX"NDCB$PREG",SS);
- NST$NPR[0] = SS; # RESET NPU P-REGISTER CONTENT #
- MOVEOK(NPT$NSTTSB[NTORD]); # ALLOW NST TO MOVE #
- MOVEOK(NAT$SMTSBN[0]); # ALLOW NDCB DUMP RESP TO MOVE #
- RECALL(DTSB$FET); # WAIT UNTIL WRITEF COMPLETES #
- RETERN(DTSB$FET); # RETURN NPU DUMP FILE #
- RECALL(DTSB$FET); # WAIT UNTIL RECALL COMPLETES #
- RETTSB(NAT$NDTSBN[0]); # RELEASE DUMP TSB #
- NAT$NDTSBN[0] = 0; # CLEAR DUMP TSB NUMBER #
- NAT$F$SNDF[0] = FALSE; # CLEAR SAVE NDF FLAG #
- NS$INL(ERRCODE); # INITIATE NPU LOAD #
- GOTO NEXTDIR; # CONTINUE WITH NEXT DIRECTIVE #
- C$ENDLPCB: # PROCESS END OF NPU LOAD PROCEDURE #
- EM31$NPNAM[0] = NPNAM; # SET NPU NAME #
- NS$MSG(MSG$EM31,L$EM31,DM$EM31); # DISPATCH EVENT MESSAGE #
- TSBINFO(TSBSIZE,TSBFWA,NPT$NSTTSB[NTORD]); # LOCATE NST #
- P<NST> = TSBFWA; # UPDATE NST #
- NST$LPDATE[0] = NAT$LPDATE[0]; # SET MOST RECENT LOAD DATE/TIME#
- NST$LC[0] = NST$LC[0] + 1; # INCREMENT LOAD COUNT #
- NST$SLFC[0] = 0; # CLEAR SUCCESSIVE LOAD FAILURE COUNT #
- IF CURTIME LS NST$DTIMER[0]
- THEN # ANOTHER LOAD BEFORE DTIMER EXPIRES #
- BEGIN # INCREMENT LOAD COUNT WITHIN DTIMER #
- NST$LCOUNT[0] = NST$LCOUNT[0] + 1;
- END
- ELSE # DTIMER ALREADY TIMES OUT #
- BEGIN
- NST$DTIMER[0] = CURTIME + DTIMER; # RESTART DTIMER #
- NST$LCOUNT[0] = 1; # RESET LOAD COUNT WITHIN DTIMER TO 1 #
- END
- MOVEOK(NPT$NSTTSB[NTORD]); # ALLOW NST TO MOVE #
- IF NAT$F$RMTL[0]
- THEN # LOADING REMOTE NPU #
- BEGIN
- STC$REML = STC$REML + 1; # INCREMENT REMOTE LOAD COUNT #
- NS$FBH(LNPUIN,TRUE); # FORMAT ABH FOR NPU/IN/N #
- PFCSFC[0] = NPUINN;
- NPUPO[0] = NAT$PN[0]; # SET PORT NUMBER #
- NPUSP[0] = NAT$SPN[0]; # SET SUBPORT NUMBER #
- NPULT[0] = LOADTYPE"LT$REMOT"; # SET REMOTE LOAD TYPE #
- NETPUT(ABH$WORD,SMB$BUFFER); # SEND NPU/IN/N #
- END
- ELSE # LOADING LOCAL NPU #
- STC$LOCL = STC$LOCL + 1; # INCREMENT NO OF LOCAL LOADS #
- NS$TNA; # TERMINATE NPU ACTIVITY #
- GOTO EXITXPCB; # EXIT DIRECTIVE PROCESSING #
- EXITXPCB: # DIRECTIVE DONE, EXIT XPCB PROCESSING #
- DONE = TRUE;
- NEXTDIR:
- END
- MOVEOK(PICBTSBN); # ALLOW PICB TO MOVE #
- RETURN;
- END # NS$XPD #
- TERM
cdc/nos2.source/nam5871/ns_xpd.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator