*DECK NVFIIVT USETEXT TXVCBNV PROC NVFIIVT; # TITLE NVFIIVT - INITIALIZES THE VOT AND VDT TABLES # BEGIN # NVFIIVT # # ** NVFIIVT - INITIALIZES THE VOT AND VDT TABLES * * A. LIM 81/08/07 * * THIS PROCEDURE INITIALIZES THE VCB-ORDINAL-TABLE(VOT) AND * THE VCB-DATA-VALID-INDICATOR-TABLE(VDT). * * PROC NVFIIVT * * ENTRY NONE * * EXIT VOT IS INITIALIZED TO FREE STATE, WHILE * VDT IS INITIALIZED TO INVALID STATE. * * NOTES NONE * * METHOD PHYSICAL FEATURES OF THE FILES SUCH AS THE * MAXIMUM-SECTOR-PER-TRACK(MST), MAXIMUM- * ENTRIES-PER-SECTOR(MES), ACTUAL-ENTRIES- * PER-SECTOR(AES), BITS-USED-IN-WORD, AND * WORDS-PER-TABLE, ARE DEFINED IN TXVCBNV. * FIRST, A BIT PATTERN OF MES BITS WITH AES * BITS SET IS BUILT. FOR EXAMPLE, MES = 8, * AND AES = 7, THEN THE BIT PATTERN WOULD * LOOK LIKE THIS: 11111110. * FINALLY THE VOT AND THE VDT TABLES WOULD BE * SET TO THE BIT PATTERN A BYTE AT A TIME * UNTIL MST TIMES IS EXHAUSTED. * # # ITEMS # ITEM BITPTN U; # BIT PATTERN # ITEM I,J,K,L I; # INDUCTION VARIABLES # ITEM SECWORD U; # SECTORS/WORD # ITEM WRDS U; # VOT AND VDT TABLE SIZE # ITEM WD U; # THE NTH WORD IN THE TABLE # CONTROL EJECT; SECWORD = BITSWORD$/MAXENSEC$; # CAL SECTORS/WORD # WRDS = (MAXSEC$ + SECWORD - 1)/SECWORD; # CAL TBL SIZ(VTSIZE$) # # SET BIT PATTERN # FOR I = 0 STEP 1 UNTIL MAXENSEC$ - 1 DO BEGIN IF I LQ ACTENSEC$ - 1 THEN BEGIN BBITPTN = 1; END ELSE BEGIN BBITPTN = 0; END END # FOR LOOP # # * INITIALIZES VOT AND VDT A BYTE AT A TIME WITH THE * AFORE-DEFINED BIT PATTERN # FOR J = 1 STEP SECWORD UNTIL MAXSEC$ DO BEGIN WD = J/SECWORD; K = MAXSEC$ - WD * SECWORD; IF K GR SECWORD THEN BEGIN K = SECWORD; END FOR L = 0 STEP 1 UNTIL K - 1 DO BEGIN B<12+L*MAXENSEC$, MAXENSEC$>VOT$WORD[WD] = B<0, MAXENSEC$>BITPTN; B<12+L*MAXENSEC$, MAXENSEC$>VDT$WORD[WD] = B<0, MAXENSEC$>BITPTN; END # FOR L LOOP # END # FOR J LOOP # RETURN; END # NVFIIVT # TERM