INCVFCHK850

(George Source)

Macros used: ALTLENG, BACKSPACE, BBS, BC, BITDEFS, BS, BWNZ, BWZ, BXU, DOWN, FINDFCB, GEOERR, GETDIR, HUNTMISB, JBC, JBCS, JBS, JBSS, MENDAREA, MFREEW, MHUNTW, REWIND, SEG, SEGENTRY, SETBIT, SETNCORE, TESTREP, TESTREP2, TOPFCA, TOPFCB, TRACEIF, TRF, UP, UPPLUS

INCVFCHK850.txt
22FL ...      SEG   INCVFCHK,850,MIKE PUTNAM:BACK,INCDUMP   
22^=    #   
23DW          SEGENTRY K1INCVFCHK,X1
23YG          SEGENTRY K2INCVFCHK,X2
24D6          SEGENTRY K3INCVFCHK,X3
24XQ          SEGENTRY K4INCVFCHK,X4
252* ...#UNS FNSAD  
254Y ...(   
257H ...      SEGENTRY K5INCVFCHK,X5
25=6 ...      SEGENTRY K7INCVFCHK,X7
25#P ...)   
25CB    #   
25X2    #  THIS SEGMENT VALIDATES BLOCKS OF VITAL SYSTEM FILES AS THEY ARE  
26BL    #  DUMPED.  
26W=    #  ENTRY 1 IS CALLED WHEN SEGMENT INCMON REALISES IT HAS AN INDEXED 
27*W    #    FILE ON ITS HANDS. THIS ENTRY SETS UP AND INITIALISES ANY BLOCKS   
27TG    #    NEEDED.
28*6    #  ENTRY 2 IS CALLED WHEN INCMON HAS FINISHED ITS INITIAL VALIDATION
28SQ    #    OF A BLOCK (RECORD HEADERS AND INDEXING). THIS BLOCK CAN BE
29#B    #    FOUND AS A FILE/FRB IN THE ACTIVITY CHAIN. 
29S2    #  ENTRY 3 IS CALLED WHEN THE FILE HAS BEEN FULLY DUMPED. IT CARRIES
2=?L    #    OUT ANY FINAL CHECKS NEEDED AND TIDIES UP. 
2=R=    #  ENTRY 4 IS CALLED ON EOT/FAIL TO TIDY UP WITHOUT THE FINAL CHECKS.   
2?=W    #   
2?QG    #  FOR ALL ENTRIES THE CHECKING REQUIRED IS DEFINED BY THE INDEX NUMBER 
2#=6    #  WHICH IS HELD IN AWORK3  
2#PQ    #   
2*9B    #  USEFUL SUBROUTINES:- 
2*P2    #   
2*W8 ...#UNS FNSAD  
2B3B ...MLANCOMP    4HC1                   [ LANGUAGE OF DIRECTORY  
2B8L    XGEOERR                            [CALLED ON X0. GEOERRS   
2BN=          GEOERR   BRIEFPM,DUD VSF  
2C7W    #   
2CMG    SWITCH                             [VALIDATES AWORK3 AND USES IT
2D76                                       [AS A SWITCH TO THE APPROPRIATE CODE 
2DLQ                                       [CALLED ON X0
2F6B          LDX   7  AWORK3(2)
2F8^ ...#UNS FNSAD  
2F?J ...      BNZ   7  SW1                 [ JUMP IF INDEXED
2FB7 ...#UNS FNSAD  
2FDQ ...#SKI
2FH* ...(   
2FL2          SBN   7  2
2G5L          BPZ   7  SW1                 [J IF NO > 1 (DIRS AND NONINDEXEDS   
2GK=                                       [NOT HANDLED BY INCVFCHK)
2GT4 ...)   
2H4W    SWGEO GEOERR   BRIEFPM,INDEXNO  
2H82 ...#UNS FNSAD  
2H?6 ...SW1   SBN   7  8
2HB= ...#UNS FNSAD  
2HFB ...#SKI
2HJG    SW1   SBN   7  6
2J46          BPZ   7  SWGEO               [J IF NO > 7 
2JHQ          ADX   0  AWORK3(2)
2JKF ...#UNS FNSAD  
2JM8 ...(   
2JNX ...      SBN   0  1                   [ EXIT 0 0 FOR INDEXNO 1 
2JQL ...      EXIT  0  0                   [ EXIT 0 1 FOR INDEXNO 2 ETC 
2JS* ...)   
2JW4 ...#UNS FNSAD  
2JXR ...#SKI
2J^G ...(   
2K3B          SBN   0  2                   [EXIT 0 0 FOR INDEXNO 2  
2KH2          EXIT  0  0                   [EXIT 0 1 FOR INDEXNO 3    ETC   
2KQS ...)   
2L2L    #   
2LG=    #   
2L^W    #   
2MFG    #  ENTRY 1:-
2M^6    #   
2NDQ    X1    CALL  0  SWITCH              [SWITCH TO APPROPRIATE CODE  
2NKY ...#UNS FNSAD  
2NR6 ...      BRN      MDIR1               [ DIRECTORY  
2NYB          BRN      MDICT1              [DICTIONARY  
2PD2          BRN      MSER1               [SERIAL  
2PXL          BRN      MINC1               [INCINDEX
2QC=          BRN      MOUT1               [OUTPUT  
2QWW          BRN      MJOB1               [JOBLIST 
2RBG          BRN      MUSERJ1             [USER JOBLISTS   
2RW6    #   
2S*Q    #   
2STB    #  ENTRY 2:- WE SET UP A POINTER TO EACH RECORD IN THE BLOCK IN TURN
2T*2    #    AND SWITCH TO THE APPROPRIATE CODE.
2TSL    #   
2W#=    X2  
2WRW          LDN   0  A1                  [OFFSET DOWN BLOCK   
2X?G          STO   0  AWORK4(2)
2XR6          MHUNTW   3,FILE,FRB   
2Y=Q          ADN   3  A1                  [POINTER TO CURRENT RECORD   
2YQB    X2REC   
2^=2          LDX   0  0(3)                [GET RECORD HEADER   
2^PL          BNG   0  X2ENDRECB           [IF ITS A DUMMY REC IGNORE IT
329=          BNZ   0  X2YREC              [IF ITS END OF BLOCK GO UP   
32#B ...#UNS FNSAD  
32CG ...      UPPLUS   1
32GL ...#UNS FNSAD  
32KQ ...#STR
32NW          UP
338G    X2YREC  
33N6          CALL  0  SWITCH              [SWITCH TO APPROPRITE CODE   
33T# ...#UNS FNSAD  
342G ...      BRN      MDIR2               [ DIRECTORY  
347Q          BRN      MDICT2              [DICTIONARY  
34MB          BRN      MSER2               [SERIAL  
3572          BRN      MINC2               [INCINDEX
35LL          BRN      MOUT2               [OUTPUT  
366=          BRN      MJOB2               [JOBLIST 
36KW          BRN      MUSERJ2             [USER JOBLISTS   
375G    #   
37K6    X2ENDREC                           [CONTROL RETURNS HERE WHEN THE   
384Q                                       [INDIVIDUAL PATHS HAVE FINISHED  
38JB                                       [WITH A RECORD   
3942          LDX   2  FX2  
39HL          MHUNTW   3,FILE,FRB   
3=3=          ADX   3  AWORK4(2)           [POINTER TO RECORD   
3=GW    X2ENDRECB   
3?2G          LDEX  0  0(3)               [LENGTH OF REC
3?G6          ADS   0  AWORK4(2)           [UPDATE OFFSET   
3?^Q          ADX   3  0                   [AND REC POINTER 
3#FB          BRN      X2REC
3#^2    #   
3*DL    #   
3*Y=    #  ENTRY 3:-
3BCW    #   
3BXG    X3    CALL  0  SWITCH              [SWITCH TO APPROPRIATE CODE  
3C4N ...#UNS FNSAD  
3C9W ...      BRN      MDIR3               [ DIRECTORY  
3CC6          BRN      MDICT3              [DICTIONARY  
3CWQ          BRN      MSER3               [SERIAL  
3DBB          BRN      MINC3               [INCINDEX
3DW2          BRN      MOUT3               [OUTPUT  
3F*L          BRN      MJOB3               [JOBLIST 
3FT=          BRN      MUSERJ3             [USER JOBLISTS   
3G#W    #   
3GSG    #   
3H#6    #  ENTRY 4:-
3HRQ    #   
3J?B    X4    CALL  0  SWITCH              [SWITCH TO APPROPRIATE CODE  
3JDJ ...#UNS FNSAD  
3JKQ ...      BRN      MDIR4               [ DIRECTORY  
3JR2          BRN      MDICT4              [DICTIONARY  
3K=L          BRN      MSER4               [SERIAL  
3KQ=          BRN      MINC4               [INCINDEX
3L9W          BRN      MOUT4               [OUTPUT  
3LPG          BRN      MJOB4               [JOBLIST 
3M96          BRN      MUSERJ4             [USER JOBLISTS   
3MNQ    #   
3N8B    #   
3NN2    #  INCINDEX IS NOT YET INDEXED, OUTPUT IS EMPTIED AFTER A GENRES
3P7L    #  AND THERE IS NO CHECKING DONE ON JOBLISTS OF ANY SORT SO THE 
3PM=    #  BRANCHES ASSOCIATED WITH THESE GO STRAIGHT UP.   
3Q6W    #   
3Q=2 ...MSER1   
3Q*6 ...MSER2   
3QD= ...MSER3   
3QHB ...MSER4   
3QLG    MINC1   
3R66    MINC2   
3RKQ    MINC3   
3S5B    MINC4   
3SK2    MOUT1   
3T4L    MOUT2   
3TJ=    MOUT3   
3W3W    MOUT4   
3WHG    MJOB1   
3X36    MJOB2   
3XGQ    MJOB3   
3Y2B    MJOB4   
3YG2    MUSERJ1 
3Y^L    MUSERJ2 
3^F=    MUSERJ3 
3^YW    MUSERJ4 
4242 ...#UNS FNSAD  
4276 ...      UPPLUS   1
42== ...#UNS FNSAD  
42*B ...#STR
42DG          UP
42Y6    #   
43CQ    #   
43XB    #   
44C2    #  THE SERIAL + DICTIONARY CHECKS ARE AS FOLLOWS:-  
44WL    #  1) THE SPACEMT AND REALTIME BUDGETS MUST BE DEFINED IN THE LIST  
45B=    #    RECORD AT THE START OF DICTIONARY. 
45TW    #  2) ALL USERS NOTED IN SERIAL AS OWNING TAPES MUST HAVE A SPACEMT 
46*G    #    BUDGET RECORD THOUGH THIS ENTRY MAY BE ZERO.   
46T6    #  3) EVERY USERNAME QUOTED AS BEING THE SUPERIOR OF ANOTHER USER   
47#Q    #    MUST BE DEFINED IN ITS OWN DICTIONARY RECORD   
47SB    #  4)LOCAL NAMES IN DICTIONARY MUST HAVE BIT 0 OF THE 1ST WORD SET  
48#2    #  5)THE CNEWZ WORD MUST BE SET CORRECTLY FOR EACH RECORD IN DICTIONARY 
48RL    #   
49?=    #  THIS IS ACHIEVED AS FOLLOWS:-
49QW    #  1)ON INITIAL ENTRY FOR SERIAL CHECKING A FILE/FINTER5 BLOCK IS   
4==G    #    SET UP. THIS HOLDS DICTIONARY/SERIAL CROSSCHECKING DATA. THE FORMAT
4=Q6    #    IS:-   
4?9Q    #     NSWITCH   = A1    SWITCH WORD 
4?PB    #                       B23=>DICTIONARY LIST RECORD HAS BEEN CHECKED
4#92    #     NSPACEMT  = A1+1  BIT PATTERN IDENTIFYING THE SPACEMT BUDGET RECOR
4#NL    #                       PICKED UP FROM LIST RECORD WHEN WE PROCESS IT   
4*8=    #     NUSER     = A1+2  1ST OF A LIST OF 4WD ENTRIES
4*MW    #                       WORD 0-2  USERNAME  
4B7G    #                       WORD 3    BIT WORD  
4BM6    #                                 B23=>REFERRED TO AS A SUP USER
4C6Q    #                                 B22=>DEFINED IN DICTIONARY
4CLB    #                                 B21=>HOLDS TAPES SO MUST HAVE 
4D62    #                                 SPACEMT RECORD
4DKL    #                       THE END OF THESE ENTRIES IS DENOTED BY A ZERO WO
4F5=    #                       AN ENTRY FOR :MASTER WITH B22 SET IS PRESET 
4FJW    #                       INTO THE BLOCK  
4G4G    #   
4GJ6    #  2)AS EACH SERIAL AND DICTIONARY RECORD IS PROCESSED THE BLOCK IS 
4H3Q    #    UPDATED AS NECESSARY   
4HHB    #   
4J32    #  3)AFTER DICTIONARY IS COMPLETED EACH ENTRY IS CHECKED TO ENSURE  
4JGL    #    THAT NONE ARE REFERRED TO BUT NOT DEFINED  
4K2=    #   
4KFW    #  FINTER5 DEFINITIONS  
4K^G    #DEF  NSWITCH=A1
4LF6    #DEF  NSPACEMT=A1+1 
4LYQ    #DEF  NUSER=A1+2
4MDB          BITDEFS NSWITCH,23,NBLISTREC  
4MY2          BITDEFS  3,21,NBTAPES,NBDEF,NBSUP 
4NCL    #   
4NX=    #   
4PBW    MASTENT 
4PWG                   12HMASTER           [PRESET ENTRY FOR MASTER IN FINTER5  
4QB6                   2                   [STATE WORD  
4QTQ                   0                   [ZERO INDICATING EMPTY ENTRY 
4R*B    SPACEMT        8HSPACEMT
4RT2    REALTIME       8HREALTIME   
4S#L    #   
4SS=    SFINDFINT                          [S/R TO LOCATE FINTER5 FOR ALTLENG   
4T?W          MHUNTW   2,FILE,FINTER5   
4TRG          EXIT  1  0
4W?6    #   
4WQQ    MADDFINT                           [S/R TO ADD USERNAME IN X4-6 TO  
4X=B                                       [FINTER5 IF NECESSARY. CALLED ON X0  
4XQ2                                       [WITH X2=FX2. USES AWORK1+X7.
4Y9L                                       [ON EXIT X3->ENTRY,X1=FX1,X2=FX2 
4YP=                                       [MAY COORDINATE  
4^8W          SBX   0  FX1  
4^NG          STO   0  AWORK1(2)           [RELATIVISE AND SAVE LINK
5286          MHUNTW   3,FILE,FINTER5   
52MQ          LDX   1  ALOGLEN(3)   
537B          SBN   1  NUSER-A1 
53M2          SRL   1  2                   [COUNT OF ENTRIES IN BLOCK   
546L          ADN   3  NUSER               [X3->1ST ENTRY   
54L=    NXENT   
555W          LDX   0  0(3) 
55KG          BZE   0  NOTIN               [FOUND AN UNUSED ENTRY - J TO
5656          TXU   4  0(3)                [INSERT NEW ENTRY HERE   
56JQ          TXU   5  1(3) 
574B          TXU   6  2(3) 
57J2          BCC      YIN                 [J IF FOUND ENTRY
583L          ADN   3  4                   [INCREMENT POINTER   
58H=          BCT   1  NXENT               [IF SPACE LEFT IN BLOCK CONTINUE SEAR
592W                                       [OTHERWISE LENGTHEN BLOCK AND ADD
59GG                                       [ENTRY   
5=26          MHUNTW   2,FILE,FINTER5   
5=FQ          LDX   3  ALOGLEN(2)   
5=^B          ADN   3  100                 [SPACE FOR 25 MORE USERS 
5?F2          ALTLENG  2,3,SFINDFINT
5?YL          MHUNTW   2,FILE,FINTER5   
5#D=          ADN   3  A1(2)
5#XW          SBN   3  101  
5*CG    NOTIN   
5*X6          STO   4  0(3)                [STORE USERNAME  
5BBQ          STO   5  1(3) 
5BWB          STO   6  2(3) 
5CB2          STOZ     3(3)                [ZERO STATE WORD 
5CTL          STOZ     4(3)                [SHOW NEXT ENTRY EMPTY   
5D*=    YIN 
5DSW          LDX   1  FX1  
5F#G          LDX   2  FX2  
5FS6          LDX   0  AWORK1(2)           [RESTORE AND RESET LINK  
5G?Q          ADX   0  FX1  
5GRB          EXIT  0  0
5H?2    #   
5HQL    #   
5J== ...MDICT1                              [STARTING SERIAL. SET UP AND
5JPW                                       [INITIALISE BLOCK
5K9G          SETNCORE NUSER-A1+101,3,FILE,FINTER5  
5KP6                                       [ROOM FOR 25 ENTRIES + 1WD TO HOLD   
5L8Q                                       [ZERO
5LNB          STOZ     NSWITCH(3)   
5M82          LDN   1  MASTENT(1)   
5MML          LDN   2  NUSER(3) 
5N7=          MOVE  1  5
5N=B ...#UNS FNSAD  
5N*G ...      UPPLUS   1
5NDL ...#UNS FNSAD  
5NHQ ...#STR
5NLW          UP
5P6G    #   
5PL6    #   
62X2    MDICT2                             [X3->DICTIONARY RECORD   
63BL          MHUNTW   1,FILE,FINTER5   
63W=          JBSS     NOTLIST,1,NBLISTREC [J IF LISTREC PROCESSED ALREADY  
64*W          LDX   0  CNEWZ-A1(3)         [VALIDATE CNEWZ FOR LISTREC  
64TG          SBN   0  1
65*6          BZE   0  NEWZOK1  
65SQ          CALL  0  XGEOERR  
66#B    NEWZOK1 
66S2          LDX   4  IZCOUNT-A1(3)       [COUNT OF PRIV+BUDG SUBRECORDS   
67?L          LDN   2  IZLIST-A1(3)        [ADDR OF 1ST SUBREC  
67R=          LDX   1  FX1  
68=W          LDX   5  SPACEMT(1)          [PICK UP SPACEMT NAME
68QG          LDX   6  SPACEMT+1(1) 
69=6    NXBUDG1 
69PQ          TXU   5  1(2)                [IS THIS SUBREC SPACEMT  
6=9B          TXU   6  2(2) 
6=P2          BCC      SPACEFO             [J IF SO 
6?8L          ADN   2  4                   [OTHERWISE UPDATE POINTER
6?N=          BCT   4  NXBUDG1             [AND LOOP IF THERE ARE MORE  
6#7W          CALL  0  XGEOERR             [BREAK IF SPACEMT NOT DEFINED
6#MG    SPACEFO 
6*76          LDX   4  0(2) 
6*LQ          MHUNTW   1,FILE,FINTER5   
6B6B          STO   4  NSPACEMT(1)         [REMEMBER BIT PATTERN FOR LATER USE  
6BL2          LDX   4  IZCOUNT-A1(3)       [COUNT OF BUDG/PRIV SUBRECORDS   
6C5L          LDN   2  IZLIST-A1(3)        [X2->1ST SUBREC  
6CK=          LDX   1  FX1  
6D4W          LDX   5  REALTIME(1)         [GET REALTIME
6DJG          LDX   6  REALTIME+1(1)
6F46    NXBUDG2 
6FHQ          TXU   5  1(2)                [IS THIS SUBREC IT   
6G3B          TXU   6  2(2) 
6GH2          BCC      X2ENDREC            [J IF SO 
6H2L          ADN   2  4                   [OTHERWISE UPDATE SUBRECPOINTER  
6HG=          BCT   4  NXBUDG2             [AND LOOP IF MORE SUBRECS
6H^W          CALL  0  XGEOERR             [REALTIME NOT DEFINED - BREAK
6JFG    #   
6J^6    NOTLIST                            [NOT THE LIST RECORD 
6KDQ          LDX   0  CUSER-A1(3)  
6KYB          BNG   0  NUPDATE             [J IF NOT AN UPAATE RECORD   
6LD2          LDX   0  CNEWZ-A1(3)  
6LXL          SBN   0  2                   [VALIDATE CNEWZ FOR UPDATE REC   
6MC=          BZE   0  X2ENDREC 
6MWW          CALL  0  XGEOERR  
6NBG    #   
6NW6    NUPDATE                            [NEITHER LIST NOR UPDATE=> USER REC  
6P*Q          LDX   0  CNEWZ-A1(3)         [VALIDATE CNEWZ FOR USER REC 
6PTB          SBN   0  1
6Q*2          BZE   0  NEWZOK2  
6QSL          CALL  0  XGEOERR  
6R#=    NEWZOK2 
6RRW          LDX   0  CLOCN-A1(3)  
6S?G          BNG   0  YLOCNAME            [J IF NAMEREC APPARENTLY OK  
6SR6                                       [NOT A VERY GOOD TEST
6T=Q          CALL  0  XGEOERR  
6TQB    YLOCNAME
6W=2          LDX   4  CSUPUSER-A1(3)       [PICK UP USERNAME OF SUP
6WPL          LDX   5  CSUPUSER-A1+1(3) 
6X9=          LDX   6  CSUPUSER-A1+2(3) 
6XNW          CALL  0  MADDFINT            [INSERT ENTRY IF NEC 
6Y8G          BS       3,NBSUP             [SET BIT TO SHOW REFERRED TO 
6YN6          MHUNTW   3,FILE,FRB   
6^7Q          ADX   3  AWORK4(2)           [X3->REC 
6^MB          LDX   4  CUSER-A1(3)          [PICK UP USERNAME   
7272          LDX   5  CUSER-A1+1(3)
72LL          LDX   6  CUSER-A1+2(3)
736=          CALL  0  MADDFINT            [LOCATE OR SET UP ENTRY  
73KW          JBCS     USEDEF,3,NBDEF      [CHECK NOT ALREADY DEFINED   
745G          CALL  0  XGEOERR  
74K6    USEDEF  
754Q          MHUNTW   1,FILE,FRB   
75JB          ADX   1  AWORK4(2)           [X1->REC 
7642          TXU   4  CSUPUSER-A1(1)       [CHECK USER NOT HIS OWN SUP 
76HL          TXU   5  CSUPUSER-A1+1(1) 
773=          TXU   6  CSUPUSER-A1+2(1) 
77GW ...      BCS      X2ENDREC 
782G          CALL  0  XGEOERR             [USER=SUPERIOR   
7CSG    #   
7D#6    #   
7DRQ    MDICT3                             [END OF DICTIONARY   
7F?B          MHUNTW   3,FILE,FINTER5   
7FR2          LDN   3  NUSER(3)            [X3->1ST ENTRY   
7G=L    MD3LOOP 
7GQ=          LDX   4  0(3)                [EXIT IF FINISHED
7H9W          BZE   4  MDICT4   
7HPG          LDX   5  1(3)                [PICK UP USERNAME TO IDENTIFY IT IF B
7J96          LDX   6  2(3) 
7JNQ          JBC   NOTSUP,3,NBSUP         [J IF NOT REFERRED TO AS A SUP   
7K8B          JBS      NOTSUP,3,NBDEF      [OR IF ACTUALLY DEFINED  
7KN2          CALL  0  XGEOERR             [OTHERWISE BREAK 
7L7L    NOTSUP  
7LM=          ADN   3  4                   [INCREMENT POINTER   
7M6W          BRN   MD3LOOP 
7MLG    #   
7N66    #   
7P5B    MDICT4  
7PK2          MFREEW   FILE,FINTER5 
7PN6 ...#UNS FNSAD  
7PR= ...      UPPLUS  1 
7PWB ...#UNS FNSAD  
7P^G ...#STR
7Q4L          UP
7Q4N ...#UNS FNSAD  
7Q4Q ...(   
7Q4S ...MDIR1                              [ START OF DIRECTORY 
7Q4W ...      MHUNTW   1,FI,INDEXCHK
7Q4Y ...      LDN   0  NAME2A               [ SET LINK  
7Q52 ...      STO   0  INDEXLINK(1)               [ IN BLOCK
7Q54 ...      STOZ     INDEXECOPS(1)             [ ZEROIZE REST OF BLOCK
7Q56 ...      STOZ     INDEXNUM(1)             [
7Q58 ...      STOZ     INDEXTRAPS(1)             [  
7Q5= ...      UPPLUS  1 
7Q5# ...#   
7Q5B ...#   
7Q5D ...MDIR2                              [ BLOCK OF DIRECTORY 
7Q5G ...      MHUNTW   2,FI,INDEXCHK
7Q5J ...      LDX   0  INDEXLINK(2)               [ PICK UP LINK FROM  PREVIOUS 
7Q5L ...      ADX   0  FX1                 [ RELATIVISE LINK
7Q5N ...      EXIT  0  0                   [ BLOCK AND EXIT 
7Q5Q ...                                   [ X3 IS POINTING TO RECORD   
7Q5S ...#   
7Q5W ...#   
7Q5Y ...MDIR3                              [END OF DIRECTORY
7Q62 ...      MHUNTW   2,FI,INDEXCHK
7Q64 ...      LDX   0  INDEXLINK(2)               [ POINTER FROM LAST BLOCK 
7Q66 ...      LDN   3  0                   [ SHOW END OF DIRECTORY  
7Q68 ...      ADX   0  FX1  
7Q6= ...      EXIT  0  0                   [ FINISH CHECKING
7Q6# ...#   
7Q6B ...#   
7Q6D ...XENDIR  
7Q6G ...MDIR4                              [ EOT OR TAPE FAIL   
7Q6J ...      UPPLUS  1 
7Q6L ...#   
7Q6N ...NEXTDIREC                          [ GETS POINTER TO NEXT RECORD OF DIRE
7Q6Q ...      SBX   0  FX1  
7Q6S ...      STO   0  INDEXLINK(2)               [ PRESERVE LINK   
7Q6W ...      BRN      X2ENDREC            [ GET RECORD 
7Q6Y ...NAME2   
7Q72 ...      CALL  0  NEXTDIREC           [ X3-> NEXT RECORD   
7Q74 ...NAME2A  
7Q76 ...      BZE   3  XENDIR               [ END OF FILE   
7Q78 ...#   
7Q7= ...#  THE FOLLOWING CHECKS MUST BE IDENTICAL WITH THOSE IN B/MAP   
7Q7# ...#  BEFORE CHANGING ANY OF IT, CONSULT OWNER OF SEG BMAPONE  
7Q7B ...#   
7Q7D ...      LDEX  0  FRH(3)   
7Q7G ...      SBN   0  41   
7Q7J ...      BNZ   0  XCORRUPT 
7Q7L ...      BWNZ     ERESN(3),XCORRUPT
7Q7N ...XRET
7Q7Q ...      LDN   1  0
7Q7S ...      JBC   NINDEX2,3,BNINDEX      [J IF NOT INDEXED
7Q7W ...      LDX   1  EINDEXN(3)          [GET INDEX NO
7Q7Y ...NINDEX2 
7Q82 ...      STO   1  INDEXNUM(2)           [STORE EITHER 0 OR INDEX NO
7Q84 ...                                   [FOR LATER CHECKS AND FILE DUMPIMG   
7Q86 ...      LDX   0  ECOPSN(3)
7Q88 ...      STO   0  INDEXECOPS(2)           [STORE FOR LATER CHECKS  
7Q8= ...      JBC      NWK,3,BNWORK        [J IF NOT A WKFILE   
7Q8# ...      SETBIT   11,INDEXECOPS(2)        [SO LATER CODE KNOWS ITS A WF
7Q8B ...NWK 
7Q8D ...      LDX   0  ENUSEN(3)
7Q8G ...      STO   0  INDEXTRAPS(2)           [SIM. FOR TRAPS COUNT
7Q8J ...      LDEX  0  ECOPSN(3)
7Q8L ...      SBN   0  2
7Q8N ...      BPZ   0  XBENTA              [J IF MORE THAN 1 BLOCKS REC 
7Q8Q ...XRETA   
7Q8S ...      JBC   NCAREFUL,3,BNCARE      [J IF NOT CAREFUL
7Q8W ...      LDX   0  EAUTOCOUNTN(3)   
7Q8Y ...      ORX   0  ESAVECOUNTN(3)   
7Q92 ...      BNZ   0  XBENTB              [J IF FROZEN- CAN'T FREEZE   
7Q94 ...                                   [CAREFUL FILES   
7Q96 ...NCAREFUL
7Q98 ...      JBS   TAPE,3,BNLIB           [J IF A TAPE 
7Q9= ...      BWNZ     ESERN(3),XCORRUPT   [J IF NONZERO TSN
7Q9# ...      LDX   0  ELOC1N(3)
7Q9B ...      BPZ   0  XCORRUPT            [J IF 1ST CHAR LESS THEN #40 
7Q9D ...      LDX   0  EREELN(3)
7Q9G ...      SBN   0  1
7Q9J ...      BNZ   0  XCORRUPT            [J IF REEL NO NOT 1  
7Q9L ...      JBS   NODUMP2,3,BNTEMP       [J IF NOT PERMANENT  
7Q9N ...      BWZ      EUSE1N(3),NODUMP2  [J IF TERMINAL FILE   
7Q9Q ...      BWNZ     INDEXECOPS(2),ONLDIR    [J IF BLOCKS REC PRESENT 
7Q9S ...      JBC   XCORRUPT,3,BNERASE     [J IF A DIR OFFLINE AND NOT  
7Q9W ...                                   [TO-BE-ERASED
7Q9Y ...ONLDIR  
7Q=2 ...      LDX   1  FX1  
7Q=4 ...      LDX   0  ELANN(3) 
7Q=6 ...      BXU   0  MLANCOMP(1),XCORRUPT [J IF LANG NOT C1 FOR DIR   
7Q=8 ...      LDX   0  EGENN(3) 
7Q== ...      SBN   0  1
7Q=# ...      BNZ   0  XCORRUPT            [J IF GEN NOT 1 FOR DIR  
7Q=* ...#   
7Q=B ...#     CHECK THAT BFDIRBELOW IS SET OTHER WISE LIMB MAY BE LOST  
7Q=C ...#     IF A RESTORE IS DONE  
7Q=D ...      TOPFCB   1
7Q=F ...      JBC      XCORRUPT,1,BFDIRBELOW
7Q=G ...      LDX   1  FX1  
7Q=H ...#   
7Q=J ...NODUMP2                            [SKIP TO NEXT NAME REC   
7Q=K ...      LDEX  4  INDEXECOPS(2)
7Q=L ...      BZE   4  NOTBLOCK            [J IF NOT EXPECTING A BLOCKS REC 
7Q=M ...      CALL  0  NEXTDIREC           [ X3-> BLOCKS RECORD 
7Q=N ...      BZE   3  XCORRUPT            [J IF ENEXPCTED EOF  
7Q=P ...      BBS      11,INDEXECOPS(2),WK     [SKIP NEXT TEST FOR WFS TILL 
7Q=Q ...                                   [B7641 IS CURED  
7Q=S ...      LDEX  0  FRH(3)   
7Q=W ...      SBN   0  2                   [X0=NO OF BLOCKS IN REC  
7Q=Y ...      LDX   4  INDEXECOPS(2)
7Q?2 ...      SRL   4  15                  [ X4=NO OF BLOCKS EXPECTED   
7Q?4 ...      BXU   0  4,XBENTC            [J IF DIFFERENT  
7Q?6 ...WK  
7Q?8 ...      LDX   0  1(3)                [X0=RESIDENCE NO 
7Q?= ...      SBN   0  3
7Q?# ...      BNG   0  XBENTC              [J IF OUT OF RANGE   
7Q?B ...      SBN   0  64-3 
7Q?D ...      BPZ   0  XBENTC              [J IF OUT OF RANGE   
7Q?G ...NOTBLOCK
7Q?J ...      LDX   0  INDEXNUM(2)  
7Q?L ...      BZE   0  NOTINDEX            [J IF INDEX REC NOT EXPECTED 
7Q?N ...      CALL  0  NEXTDIREC         [ X3-> INDEX RECORD
7Q?Q ...      BZE   3  XCORRUPT            [J IF UNEXPECTED EOF 
7Q?S ...      LDEX  0  FRH(3)   
7Q?W ...      SBN   0  3                   [X0=NO OF BLOCKS INDEXED 
7Q?Y ...      LDX   4  INDEXECOPS(2)
7Q#2 ...      SRL   4  15                  [X4= NO OF BLOCKS EXPECTED   
7Q#4 ...      BXU   0  4,XBENTD            [J IF DIFFERENT  
7Q#6 ...      LDCT  0  #200 
7Q#8 ...      ERX   0  INDEXID-A1(3)
7Q#= ...      BNZ   0  XBENTD              [J IF NOT INDEX REC  
7Q## ...NOTINDEX
7Q#B ...      LDX   4  INDEXTRAPS(2)           [GET NO OF TRAPS EXPECTED
7Q#D ...      BZE   4  NAME2               [J IF NONE   
7Q#G ...NXTRAP  
7Q#J ...      STO   4  INDEXTRAPS(2)           [ SAVE NO OF TRAPS RECORDS   
7Q#L ...      CALL  0  NEXTDIREC           [ X3-> TRAPS RECORD  
7Q#N ...      BZE   3  XCORRUPT            [J IF UNEXPECTED EOF 
7Q#Q ...      LDX   4  INDEXTRAPS(2)           [ RESTORE NO OF TRAPS RECORDS LEF
7Q#S ...      LDEX  0  FRH(3)   
7Q#W ...      SBN   0  5                   [J IF REC HEADER NOT 5   
7Q#Y ...      BNZ   0  XCORRUPT 
7Q*2 ...      LDX   0  ETRUSER1-A1(3)   
7Q*4 ...      BPZ   0  XCORRUPT            [J IF 1ST CHAR OF USERNAME<#40   
7Q*6 ...      BCT   4  NXTRAP              [J TO DEAL WITH NEXT TRAP IF ANY 
7Q*8 ...      BRN      NAME2
7Q*= ...TAPE
7Q*# ...      NGX   0  ESERN(3) 
7Q*B ...      BPZ   0  XCORRUPT            [TSN MUST BE +VE 
7Q*D ...      BRN      NODUMP2  
7Q*G ...#  CHECK FAILURES BRANCHING TO XCORRUPT CAUSE IMMEDIATE GEOERR  
7Q*J ...#  THIS IS BECAUSE THE DUMP WOULD ITSELF BE CORRUPT ENOUGH TO BREAK 
7Q*L ...#  BACKMAP. THOSE BRANCHING TO A 'XBENT' LABEL SET A BIT WHICH CAUSES A 
7Q*N ...#  GEOERR AFTER THE DUMP IS COMPLETE. THESE ERRORS WILL BE CORRECTED BY 
7Q*Q ...#  GEN RES  
7Q*S ...XBENT   
7Q*W ...      BS    ,BDOGENRES              [ST CORRUPTION BIT IN INCWORD   
7Q*Y ...      BRN      XRET                [J BACK INTO MAINSTREAM CODE 
7QB2 ...XBENTA  
7QB4 ...      BS    ,BDOGENRES  
7QB6 ...      LDN   0  1
7QB8 ...      DEX   0  INDEXECOPS(2)           [ASSUME HAS 1 BLOCKS REC 
7QB= ...      BRN      XRETA
7QB# ...XBENTB  
7QBB ...      BS    ,BDOGENRES  
7QBD ...      BRN   NCAREFUL
7QBG ...XBENTC  
7QBJ ...      BS    ,BDOGENRES  
7QBL ...      BRN      NOTBLOCK 
7QBN ...XBENTD  
7QBQ ...      BS    ,BDOGENRES  
7QBS ...      BRN      NOTINDEX 
7QBW ...XCORRUPT
7QBX ...#     SET POINTERS AS IF REGULAR STEPS HAVE BEEN TAKEN  
7QBY ...#   
7QB^ ...      TOPFCA   2
7QC2 ...     SMO      FX2   
7QC3 ...      LDX   0  AWORK4   
7QC4 ...      STO    0  FREADWORD(2)
7QC8 ...      DOWN     INCEOT,4            [OUTPUT WARNING MESSAGE  
7QC= ...      UP                           [ PRETEND EOT OCCURRED TO
7QC# ...                                   [GIVE OPS A CHANCE   
7QCB ...#   
7QCD ...#  END OF BACKMAP CHECKS CODE   
7QCG ...#   
7QCJ ...#   
7QCL ...#   
7QCN ...)   
7QJ=    #   
7R3W    #   
7R46 ...#UNS FNSAD  
7R4B ...(   
7R4L ...#     COMES DOWN HERE FROM INCWRITE WHEN UPDATING DIRENT
7R4W ...#     FOR A DIRECTORY   
7R56 ...X5  
7R5B ...      HUNTMISB 1,FI,FDUMPCOM        [   
7R5L ...      JBC      SETBITS,1,BFDUMPCOM  [   
7R5W ...      MHUNTW   2,FILE,FINC          [   
7R66 ...      JBS      SETBITS,2,BINCMDUMP   [  
7R6B ...#     BFDUMPCOM SET , BINCMDUMP CLEAR - DONT CHANGE THE BITS
7R6L ...      UP
7R6W ...#     OTHERWISE SET BITS IF BFDUMPCOM SET,CLEAR THEM IF BFDUMPCOM CLEAR 
7R76 ...SETBITS 
7R7B ...      LDX   7  1                    [ STORE POINTER TO FDUMPCOM 
7R7L ...      MHUNTW   3,FILE,FWB           [ RENAMED DIR ENT   
7R7W ...      LDN   2  0                    [ POINTER IN FABSNB 
7R86 ...      FINDFCB  2,6,NORC             [ SEARCH FOR FCB IN CHAINS  
7R8B ...      LDX   1  7                    [ POINTER TO FDUMPCOM   
7R8L ...
7R8W ...      TESTREP  NOTFOUND,XNOTFOUND     [ JUMP IF FCB NOT THERE   
7R96 ...      LDX   2  6                    [ POINTER TO FCB
7R9B ...      TRF      1,BFDUMPCOM,2,BFDUMP [ MOVE BIT FROM FDUMPCOM TO FCB 
7R9L ...XNOTFOUND   
7R9W ...      TRF      1,BFDUMPCOM,3,BEDUMP [SET,CLEAR BIT IN DIR ENT   
7R=6 ...      UP
7R=B ...#   
7R=L ...#     COMES DOWN HERE FROM INCWRITE WHEN ONLY A JOBLIST(****)   
7R=W ...#     IS TO BE DUMPED IN THIS DIRECTORY 
7R?6 ...XJOBLIST
7R?B ...      12HJOBLIST
7R?L ...      1 
7R?W ...      1 
7R#6 ...      4H****
7R#B ...X7  
7R#L ...      MHUNTW   3,FILE,FLOCNB          [ MOVE 'JOBLIST'  
7R#W ...
7R*6 ...      LDN   1  XJOBLIST(1)                    [ INTO FLOCNB 
7R*B ...      LDN   2  A1(3)
7R*L ...      MOVE  1   6   
7R*W ...      GETDIR   1                    [POSITION AT JOBLIST DIRENT 
7RB6 ...      TRACEIF  K6INCVFCHK,99,299,FUSER1(2),JOBLISTG 
7RBB ...      TESTREP2  OK,ZFOUNDJOBL   
7RBL ...      REWIND                       [ CANT FIND JOBLIST  
7RBW ...      MHUNTW  1,FILE,FINC         [ BETTER SEARCH WHOLE DIRECTORY   
7RC6 ...      BC      1,BINCGETDIR          [  CLEAR JOBLIST BIT
7RCB ...      TRACEIF  K6INCVFCHK,99,299,FUSER1(2),JLISTMIS 
7RCL ...      TRACEIF  K6INCVFCHK,99,299,ACOMMUNE9(2),JLISTREP  
7RCW ...      UP
7RD6 ...ZFOUNDJOBL  
7RDB ...      BACKSPACE                       [ ABOUT TO READ NAME REC  
7RDL ...      MFREEW   FILE,ENT               [ FREE ENT SET UP BY GETDIR NOT NE
7RDW ...      MHUNTW      1,FILE,FINC     [ SET BIT TO DHOW SUCCESS IN GETDIR   
7RF6 ...      BS       1,BINCGETDIR 
7RFB ...      UP                            [OK FOUND JOBLIST   
7RFL ...)   
7RFW ...
7RHG          MENDAREA 20,K99INCVFCHK   
7S36    #   
7SGQ    #END
^^^^ ...174253040021
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1