*DECK NS$INL USETEXT ERR$NS USETEXT NAT$NS USETEXT PIC$NS PROC NS$INL(ERRCODE); # INITIATE NPU LOAD # # TITLE NS$INL - INITIATE NPU LOAD. # BEGIN # NS$INL # # ** NS$INL - INITIATE NPU LOAD. * * J.C. LEE 1981 * * THIS ROUTINE INITIATES NPU LOAD. * * PROC NS$INL(ERRCODE) * * ENTRY: * NONE. * * EXIT: * ERRCODE - IF A BAD PICB RECORD FOUND. * * METHOD: * CLEAR ACTIVITY-RETRY-COUNT. * CLEAR NPU-STATE. * SET NPU-PRIMARY-STATE TO "LOADING NPU". * LOCATE PICB-TSB. * IF PICB EXISTS: * SET XPCB-DIRECTIVE-INDEX TO PICB-INDEX * OF LPCB-HEADER. * SET XPCB-END-DIRECTIVE-INDEX TO PICB-INDEX * OF LPCB END DIRECTIVE. * START GLOBAL TIMER. * ELSE * SET ERROR CODE. * # ITEM ERRCODE U; # ERROR CODE # $BEGIN XREF BEGIN PROC NS$DBG; # TRACE PROCEDURE CALL # END $END XREF BEGIN PROC TSBINFO; # LOCATE TSB # PROC MOVEOK; # ALLOW TSB TO MOVE # FUNC NS$FEC U; # FORMAT ERROR CODE # PROC NS$LSN; # INCREMENT LOAD SEQUENCE NUMBER # PROC NS$SGT; # START ACTIVITY TIMER # END ITEM I I; # PICB INDEX OF FIRST LPCB ENTRY # ITEM K I; # PICB INDEX OF LAST LPCB ENTRY # ITEM PICBTSBN U; # TSB NUMBER OF PICB # ITEM TSBFWA U; # TSB FWA # ITEM TSBSIZE U; # TSB SIZE # CONTROL EJECT; $BEGIN NS$DBG("INL"); # TRACE CALL # $END ERRCODE = 0; NAT$STATE[0] = 0; # CLEAR NPU STATE # NAT$PSTATE[0] = S"NPS$LNPU"; # PRIMARY STATE - LOADING NPU # PICBTSBN = NAT$PITSBN[0]; # PICB TSB NUMBER # TSBINFO(TSBSIZE,TSBFWA,PICBTSBN); # LOCATE PICB TSB # P = TSBFWA; # FWA OF PICB # I = PICB$HDRL + PICB$PARWL + PICB$LDPCB[PICB$HDRL]; # HEADER INDX# K = I + PICB$LLPCB[PICB$HDRL] - 1; # INDEX TO LAST LPCB DIRECTIVE# IF PICB$PCBID[I] EQ ID$LPCB # VALID IDENTIFIER # AND K LQ PICB$BS[0] # LPCB SIZE OK # AND PICB$CODE[K] EQ DIRCODE"ENDPCB" # END DIRECTIVE EXISTS# THEN # VALID LPCB # BEGIN # INITIATE NPU LOAD PROCEDURE # NAT$PDIRI[0] = I; # CURRENT LPCB DIRECTIVE INDEX# NAT$PENDI[0] = K; # LAST LPCB DIRECTIVE INDEX # NS$LSN; # ASSIGN LSN FOR LOAD SEQUENCE # NS$SGT; # START ACTIVITY TIMER # END ELSE # NLF ERROR-BAD LPCB # BEGIN ERRCODE = NS$FEC(EC"ERR$FILE",FEC"ERR$LPCB"); END MOVEOK(PICBTSBN); # ALLOW PICB TO MOVE # RETURN; END # NS$INL # TERM