*DECK NS$IDN USETEXT COM$NS USETEXT DEF$NS USETEXT LTSB$NS PROC NS$IDN; # INITIATE NPU DUMP FILE INDEX # # TITLE NS$IDN - INITIATE NPU DUMP FILE INDEX. # BEGIN # NS$IDN # # ** NS$IDN - INITIATE NPU DUMP FILE INDEX. * * J.C. LEE 1981 * * THIS ROUTINE INITIATES NPU DUMP FILE INDEX. * * PROC NS$IDN * * ENTRY: * NONE. * * EXIT: * NONE. * * METHOD: * DETERMINE IF A CATLIST ENTRY IS AN NPU DUMP FILE, I.E. * NP(NIN)XX. IF AN NPU DUMP FILE IS FOUND, FLAG THE DUMP * FILE INDEX IN THE NPU DUMP FILE INDEX BIT-MAP TO * INDICATE THE INDEX IS IN USE. CATLIST THE DUMP FILE. * IF DUMP INDEX FULL, DAYFILE MESSAGE AND ABORT NS. * # XREF BEGIN PROC NS$CAT; # ISSUE CATLIST MACRO CALL # PROC NS$MSG; # DISPATCH MESSAGE # END DEF CATESIZE # 16 #; # CATLIST ENTRY SIZE # DEF CHAR$F # 06 #; # DISPLAY-CODED ALPHA F # ITEM DONE B = FALSE; # DUMP FILE INDEX FOUND FLAG # ITEM HEXCHAR1 U; # HEX CHARACTER 1 # ITEM HEXCHAR2 U; # HEX CHARACTER 2 # ITEM I I; # TEMPORARY # ITEM J I; # TEMPORARY # ITEM K I; # TEMPORARY # DEF L$DNERR # 2 #; DEF DM$DNERR # DM$ABORT+DM$SYSLOC #; ARRAY MSG$DNERR [0:0] S(L$DNERR); BEGIN ITEM DNERR$TEXT C(00,00,17) = # MESSAGE TEXT # ["DUMP INDEX FULL."]; ITEM DNERR$END U(01,42,18) = [0]; # END OF TEXT # END ARRAY FBUFFER [0:PRUSIZE] S(1) ; BEGIN # CIO BUFFER FOR USER CATALOG DATA # ITEM PFNAME C(0,0,7) ; # PERM. FILE NAME # ITEM PFNAME1 C(0,0,2) ; # FIRST 2 CHARS # ITEM PFNIN C(0,12,3) ; # NEXT 3 CHARS ( NIN) # ITEM DUMPID U(0,30,12); # DUMP INDEX # ITEM ID1 U(0,30,6) ; # FIRST HEX CHARACTER # ITEM ID2 U(0,36,6) ; # SECOND HEX CHARACTER # ITEM FILETYPE B(0,48,1) ; END ARRAY FET [1:L$LFET] S(1) ; BEGIN # FET FOR CATLIST MACRO CALL # ITEM WORD1 U(0,0,60) = [L$LFET(0)] ; END ARRAY BITDUMP [0:4] S(1) ; BEGIN # BIT MAP FOR ACTIVE NPU DUMP FILE INDEX # ITEM WORDX U(0,0,60) = [5(0)] ; END CONTROL EJECT; # SET UP FET FOR CATLIST CALL # P = LOC(FET); # FET ADDRESS # LFET$LFN[0] = "ZZZZZZZ" ; LFET$FM[0] = TRUE ; LFET$COMP[0] = TRUE ; LFET$LEN[0] = L$LFET - 5 ; LFET$FIRST[0] = LOC(FBUFFER) ; LFET$LIMIT[0] = LOC(FBUFFER) + PRUSIZE + 1 ; # DETERMINE IF A CATLIST ENTRY IS AN NPU DUMP FILE IE. NP(NIN)XX WHERE XX ARE DISPLAY-CODED HEXADECIMAL CHARACTERS. IF AN NPU DUMP FILE IS FOUND, FLAG THE DUMP FILE INDEX IN THE NPU DUMP FILE INDEX BIT MAP TO INDICATE THE INDEX IS IN USE. # FOR J = J WHILE LFET$CODE[0] NQ O"1033" DO # PROCESS USER CATALOG UNTIL EOI REACHED # BEGIN NS$CAT(FET) ; # DO THE CATLIST # FOR I = 0 STEP CATESIZE WHILE I LS (LFET$IN[0] - LFET$OUT[0]) DO BEGIN IF FILETYPE[I+1] # DIRECT ACCRESS FILE # AND PFNAME1[I] EQ "NP" # IT IS NPU DUMP FILE # AND PFNIN[I] EQ NIN # SAME NIN # THEN BEGIN # AN ACTIVE NPU DUMP FILE FOUND # HEXCHAR1 = ID1[I]; # FIRST HEX CHARACTER OF DUMP INDEX # HEXCHAR2 = ID2[I]; # NEXT HEX CHARACTER OF DUMP INDEX # IF HEXCHAR1 LQ CHAR$F THEN # ITS A HEX CHARACTER A THROUGH F # HEXCHAR1 = HEXCHAR1 + 9; ELSE # ITS A HEX CHARACTER 0 THROUGH 9 # HEXCHAR1 = HEXCHAR1 - O"33"; IF HEXCHAR2 LQ CHAR$F THEN HEXCHAR2 = HEXCHAR2 + 9; ELSE HEXCHAR2 = HEXCHAR2 - O"33"; K = HEXCHAR1*16 + HEXCHAR2; # DUMP INDEX VALUE # J = K / 60 ; K = K - ( J * 60 ) ; BWORDX[J] = 1 ; END END END # FIND THE FIRST FREE DUMP FILE INDEX FROM THE BIT MAP # FOR I=0 STEP 1 WHILE NOT DONE AND I LQ MAX$NDFDN DO # SCAN THROUGH THE BIT MAP # BEGIN # TO LOCATE THE FIRST FREE DUMP INDEX # J = I/60; # BIT MAP WORD INDEX # K = I - (J*60); # BIT POSITION IN WORD # IF BWORDX[J] EQ 0 THEN # FOUND FREE DUMP INDEX # BEGIN # SET DUMP NUMBER FOR NEXT NPU DUMP # DN = I; DONE = TRUE; END END # END FOR LOOP # IF NOT DONE THEN # DUMP INDEX FULL, ABORT NS # NS$MSG(MSG$DNERR,L$DNERR,DM$DNERR); # DAYFILE AND ABORT # RETURN; END # NS$IND # TERM