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