12 22FL SEG FHDIRTWO,860,FILESTORE 4 22_= # 20 23DW # THIS SEGMENT IS AN OVERFLOW FROM FHOBJDIR. IT CONTAINS THE MODE 21 23YG # #33 NAME RECORD ALTERATION CHECKS - A PIECE OF CODE WHICH WAS EASY 16 24D6 # TO TRANSFER WHEN THE OVERFLOW BECAME APPARENT. 4 24XQ # 21 25CB # IT IS ENTERED ACROSS FROM FHOBJDIR AND RETURNS ACROSS BY K2(NORMAL) 11 25X2 # K3(ILLEGAL) OR K4(REJECTION). 4 26BL # 12 26W= SEGENTRY K1FHDIRTWO,MAINENTRY 15 2764 ... FSHENTRY K2FHDIRTWO,XAFCBFIND,,XAFCBFIND 4 27*W # 4 27TG # 15 28*6 # AWORK AND ACC CONVENTIONS ARE AS FOR FHOBJ. 4 28SQ # 8 29#B # BIT IDENTIFIERS:- 20 29S2 BITDEFS AWORK4,23,MFHEOFMULT [WE'VE RUN OFF THE END OF A 20 2=?L [MULTIFILE. NO FURTHER PERIS 18 2=R= [CAN BE IMPLEMENTED. 21 2?=W BITDEFS AWORK4,22,MFHDIRMOD [THIS IS A DIRECTORY MODE WE'RE 16 2?QG [IMPLEMENTING 19 2#=6 BITDEFS AWORK4,21,MFHRECEOF [LAST READ PERI LEFT US 16 2#PQ [AFTER EOF. 20 2*9B BITDEFS AWORK4,20,MFHBLOCKEOF [SIMILAR BIT FOR BLOCK PERIS. 20 2*P2 [HAS TO BE HANDLED SEPARATELY 20 2B8L [OWING TO DIFFERENT POINTER 16 2BN= [CONVENTIONS. 20 2C7W BITDEFS AWORK4,19,MFHNOT1ST [THIS IS NOT THE 1ST PERI. 19 2CMG BITDEFS AWORK4,18,MFHDIROWN [USER OWNS THE FILES IN 17 2D76 [THIS DIRECTORY 20 2DLQ BITDEFS AWORK4,17,MFHNONSER [THIS IS A DA,DR, OR MT FILE 20 2F6B BITDEFS AWORK4,16,MFHCHUCKOFF [WE ARE THROWING THIS FILE 21 2FL2 [OFFLINE (SET DURING MODE #33). 20 2G5L BITDEFS AWORK4,15,MFHTRAPSALT [WE ARE ALTERING THIS FILE'S 20 2GK= [TRAPS (SET DURING MODE #33). 19 2H4W BITDEFS AWORK4,14,MFHTABSSET [THE TAB SYSTEM HAS BEEN 16 2HJG [INITIALISED. 4 2J46 # 4 2JHQ # 20 2K3B # THE FOLLOWING TABLE IS USED IN THE IMPLEMENTATION OF THE NAME REC 21 2KH2 # ALTERATION CHECKS IN MODE #33. EACH CHARACTER CORRESPONDS TO ONE WORD 20 2L2L # OF THE NAME RECORD AND CONTROLS UNDER WHAT CONDITIONS ALTERATION 11 2LG= # OF THAT WORD IS PERMITTED. 19 2L_W # THE BITS IN EACH CHARACTER HAVE THE FOLLOWING SIGNIFICANCE:- 15 2MFG # BIT 0 SET=> NO CHANGE PERMITTED (ILLEGAL). 21 2M_6 # BIT 1 SET=> IGNORE ATTEMPTED CHANGES (TRANSFER VALUE FROM OLD REC). 14 2NDQ # BIT 3 SET=> OWNERSHIP OF ENTRY NEEDED. 15 2NYB # BIT 4 SET=> FILE MUST NOT BE A SYSTEM FILE. 14 2PD2 # BIT 5 SET=> FILE MUST NOT BE IN USE. 4 2PXL # 21 2QC= # ALL BITS CLEAR DOES NOT NECESSARILY MEAN NO CHECKS ARE APPLIED SINCE 19 2QWW # THERE IS ALSO SOME CODE TO CHECK SPECIFIC BITS AND FIELDS. 4 2RBG # 5 2RW6 TABLEALT 17 2S*Q #40404040 [EREC,ERES,ESER,ELOC1 18 2STB #40404040 [ELOC2,ELOC3,EREEL,EGEN 20 2T*2 #00040400 [ERET,EWRITDAY,EWRITTIME,EGMTLA 17 2TSL #00400700 [ENUSE,ELAN,ETM,EBLL 15 2W#= #00000400 [EINF1-3,EU 19 2WRW #04040605 [EFLOW,EORG,EINDEX,EENDBUCK 20 2X?G #05052000 [EVERSION,EFILNUM,ESVCT,ESPARE3 18 2XR6 #00040400 [EALLOC,EDLA,ETLA,EAVACC 18 2Y=Q #04040005 [EDLD,ETLD,EINCLOOK,EINC 19 2YQB #20004040 [EAUTOCOUNT,ECOPS,EUSE1,EUSE2 14 2_=2 #40000000 [EUSE3 4 2_PL # 8 329= # SOME BIT MASKS 4 32NW # 20 338G ...MEINF1SAME #21357177 [BITS TO BE UNCHANGED IN EINF1 15 33N6 MEINF2SAME #37501242 [DITTO EINF2 21 347Q MEINF1REJ5 #06000200 [BITS IN EINF1 CAUSING REJECTION 5 15 34MB [IF CHANGED 15 3572 MEINF2REJ5 #02000000 [DITTO EINF2 18 35LL MASKECOPS #77700001 [PERMITTED BITS IN ECOPS 4 366= # 4 36KW # 21 375G # ******************************************************************* 4 37K6 # 21 384Q # WE HAVE ENTERED ACROSS FROM FHOBJDIR WITH THE DIRECTORY POSITIONED 21 38JB # HAVING JUST READ THE NAME RECORD. FIRST WE REFIND THE NAME RECORD. 4 3942 # 6 39HL MAINENTRY 7 3=3= STEPAGAIN 4 3=GW # 21 3?2G # NOW WE CARRY OUT THE NAME RECORD ALTERATION CHECKS. THE FIRST PHASE 20 3?G6 # CONSISTS OF A WORD BY WORD COMPARISION OF OLD AND NEW. IF A WORD 19 3?_Q # DIFFERS WE PICK UP THE CORRESPONDING CHARACTER FROM THE TABLE 20 3#FB # 'TABLEALT' (SEE START OF SEGMENT). THIS CHARACTER TELLS US UNDER 21 3#_2 # WHAT CONDITIONS THE CHANGE CAN BE ALLOWED. WE ACCUMULATE IN X5 A MASK 20 3*DL # OF THE 'OR'ED CONTROL CHARACTERS TO INDICATE WHAT TESTS WILL BE 6 3*Y= # REQUIRED. 4 3BCW # 16 3BXG LDN 5 0 [CLEAR TEST MASK 17 3CC6 STO 3 ACOMMUNE3(2) [KEEP PTR TO OLD REC. 10 3CWQ MHUNTW 2,FILE,FRB 16 3DBB ADN 2 A1 [X2->NEW RECORD 8 3DW2 SMO FX2 19 3F*L STO 2 ACOMMUNE2 [KEEP PTR TO NEW REC AS WELL 18 3FT= LDN 7 41 [NO OF WORDS TO COMPARE 6 3G#W MOREWORDS 9 3GSG LDX 0 FRH(2) 20 3H#6 ERX 0 FRH(3) [X0=DIFFERING BITS IN OLD +NEW 15 3HRQ BZE 0 NOCHANGE [J IF NONE 20 3J?B LDCH 4 TABLEALT(1) [PICK UP CHANGE CONTROL CHARACTER 7 3JR2 SRC 4 6 19 3K=L BNG 4 NILDATA [J IF CHANGE TOTALLY ILLEGAL 16 3KQ= SLC 4 1 [LOOK AT BIT 1 9 3L9W BPZ 4 NOTIGNORE 20 3LPG ERS 0 FRH(2) [IF IT'S SET WE FLIP THOSE NEW BITS 21 3M96 [THAT DIFFER AS WE IGNORE CHANGES TO 15 3MNQ [THIS WORD. 9 3N8B BRN NOCHANGE 6 3NN2 NOTIGNORE 21 3P7L SLC 4 5 [OTHERWISE WE OR THE REST OF THE CHAR 21 3PM= ORX 5 4 [INTO OUR ACCUMULATED TEST REQD MASK 5 3Q6W NOCHANGE 16 3QLG BCHX 1 / [ADVANCE CHAR PTR 16 3R66 ADN 2 1 [AND RECORD PTRS 7 3RKQ ADN 3 1 19 3S5B BCT 7 MOREWORDS [AND LOOP IF MORE TO COMPARE 8 3SK2 LDX 1 FX1 8 3T4L LDX 2 FX2 4 3TJ= # 20 3W3W # THE INDIVIDUAL BITS CHECKS NOW FOLLOW. FIRST WE LOOK AT EINF1+2. 20 3WHG # ANY ATTEMPT TO CHANGE THE MULTIFILE,EXOFILE,AND LIB BITS CAUSES A 21 3X36 # REJECT(5). ALSO THERE ARE A LOT OF BITS TO BE COPIED UNCHANGED FROM 7 3XGQ # OLD TO NEW. 4 3Y2B # 19 3YG2 LDX 3 ACOMMUNE3(2) [GET PTRS TO OLD AND NEW RECS 10 3Y_L LDX 2 ACOMMUNE2(2) 2 3_F= 9 3_YW LDX 4 EINF1N(2) 19 42DG ERX 4 EINF1N(3) [MASK OF CHANGED BITS IN EINF1 19 42Y6 LDX 0 MEINF1SAME(1) [MASK OF BITS TO BE COPIED 19 43CQ ANDX 0 4 [WORK OUT WHICH ARE DIFFERENT 20 43XB ERS 0 EINF1N(2) [AND FLIP THEM IN THE NEW RECORD 20 44C2 LDX 0 MEINF1REJ5(1) [MASK OF BITS NOT TO BE CHANGED 18 44WL ANDX 0 4 [HAS THE USER TRIED IT 17 45B= BNZ 0 REJECT5 [IF SO DO A REJECT 5 2 45TW 21 46*G LDX 4 EINF2N(2) [REPEAT CHECKS ON EINF2. NOT CODED 19 46T6 ERX 4 EINF2N(3) [AS A LOOP COS IT DOESNT SAVE 15 47#Q LDX 0 MEINF2SAME(1) [INSTRUCTIONS 7 47SB ANDX 0 4 9 48#2 ERS 0 EINF2N(2) 10 48RL LDX 0 MEINF2REJ5(1) 7 49?= ANDX 0 4 9 49QW BNZ 0 REJECT5 4 4==G # 20 4=Q6 # IF BIT BNDUMP IS GOING TO BE SET AFTER THIS PERI WE SET THE BITS 18 4?9Q # IN THE FCB WHICH FORCE DUMPER TO LOOK AT THIS DIRECTORY. 18 4?BY ...# WE CAN ONLY ALLOW THE BIT TO BE CLEARED IF THE USER OWNS 13 4?J6 ...# THE FILE AND IT IS NOT A SYSTEM FILE. 4 4?PB # 11 4#92 JBC NDUMPSET,2,BNDUMP 7 4#NL TOPFCB 1 12 4*8= MBS 1,BFDUMP,BFDIRUPDATE 8 4*MW LDX 1 FX1 9 4*XN ... BRN YDUMPSET 5 4B7G NDUMPSET 19 4B=L ... JBC YDUMPSET,3,BNDUMP[J UNLESS ACTUALLY CLEARING BIT 20 4B*Q ... ORN 5 6 [NOTE OWNERSHIP AND SYSFILE CHECK 14 4BDW ... [NEEDED 5 4BJ2 ...YDUMPSET 4 4BM6 # 21 4C6Q # IF THE USER IS CLEARING BIT 23 OF ECOPS WE SET A FEW BITS IN X5 TO 21 4CLB # INDICATE THAT THE 'SYSTEM FILE','NOT IN USE' AND POSSIBLY 'OWNERSHIP' 20 4D62 # CHECKS ARE REQUIRED. WE THEN SET THE SWITCH 'MFHCHUCKOFF' TO TELL 20 4DKL # IMPLEMENTATION CODE TO THROW THE FILE OFFLINE.IF THE BIT IS NOT 20 4F5= # BEING CLEARED WE COPY THE OLD BIT INTO THE NEW ECOPS TO HEAD OFF 20 4FJW # ANY MISGUIDED ATTEMPT TO SET THE BIT, AND CLEAR THE 'MFHCHUCKOFF' 6 4G4G # SWITCH. 19 4GJ6 # IF THE FILE IS NOT GOING TO END OFFLINE WE DO NOT PERMIT ANY 21 4H3Q # CHANGES IN THE FILE SIZE IN BITS 0-8 OF ECOPS AS THIS HAS TO TALLY 21 4HHB # EXACTLY WITH THE SIZE OF THE BLOCKS RECORD. OTHERWISE A GENERAL OR 11 4J32 # PARTIAL RESTORE WILL RESULT. 21 4JGL # FIRST HOWEVER WE ENSURE THAT NO ILLEGAL BITS HAVE BEEN SET IN ECOPS. 4 4K2= # 20 4KFW LDX 0 MASKECOPS(1) [MASK OF PERMITTED ECOPS BITS. 19 4K_G ANDS 0 ECOPSN(2) [CLEAR ANY OTHERS IN NEW REC 20 4LF6 LDEX 0 ECOPSN(2) [PICK UP B23 OF ECOPS IN NEW REC 14 4LYQ BNZ 0 NOTHROW [J IF SET 19 4MDB LDEX 0 ECOPSN(3) [PICK UP BIT FROM OLD ECOPS 21 4MY2 BZE 0 NOTHROW [J UNLESS ATTEMPTING TO THROW FILE OF 21 4NCL ORN 5 3 [SYSFILE AND NOT IN USE CHECKS NEEDED 17 4NX= BS FX2,MFHCHUCKOFF [SET CHUCK OFF SWITCH 21 4PBW JBC NOTHROWDUMP,3,BNDUMP[IF FILE TO BE DUMPED OWNERSHIP NEEDE 7 4PWG ORN 5 4 10 4QB6 BRN NOTHROWDUMP 5 4QTQ NOTHROW 19 4R*B LDEX 0 ECOPSN(3) [COPY ACROSS OLD ECOPS B23 20 4RT2 DEX 0 ECOPSN(2) [TO MAKE SURE USER DOESNT SET BIT 17 4S#L BC FX2,MFHCHUCKOFF [ENSURE SWITCH CLEAR 6 4SS= NOTHROWDUMP 19 4T?W BBUS 23,ECOPSN(2),NOTONLINE [J IF FILE WILL BE OFFLINE 8 4TRG LDCT 0 #777 9 4W?6 ORS 0 ECOPSN(2) 17 4WQQ ERS 0 ECOPSN(2) [MASK OUT NEW SIZE 9 4X=B ANDX 0 ECOPSN(3) 16 4XQ2 ORS 0 ECOPSN(2) [REPLACE BY OLD 6 4Y9L NOTONLINE 4 4YP= # 21 4_8W # IF THE FILE IS CAREFUL AND RANDOM IT MUST BE :SYSTEM.IDF. WE ENSURE 19 4_NG # THAT THE ORGANISATION STAYS RANDOM IN THIS CASE AS IDF IS AN 19 5286 # AMORPHOUS RANDOM FILE, AND OUR CODE WHICH MAKES TYPE MODE AND 20 52MQ # ORGANISATION BITS COMPATIBLE WOULD OTHERWISE MAKE IDF SERIAL. 4 537B # 17 53M2 JMBS NOTIDF,3,BNSERIAL,BNMT [J IF NOT RANDOM 16 546L JBC NOTIDF,3,BNCARE [J IF NOT CAREFUL 17 54L= MBC 2,BNSERIAL,BNMT [ENSURE STILL RANDOM 5 555W NOTIDF 4 556* ...# 21 556S ...# UNLESS A RESTORE TIME MACRO HAS BEEN INCLUDED THE FOLLOWING CHECKS 7 557? ...# ARE APPLIED:- 20 557Q ...# 1 THE USER MAY NOT ALTER INCNO OR FILE NUMBER FOR A FILE UNLESS 19 5589 ...# THE ALIEN FILESTORE FIELD WILL BE SET AFTER THIS PERI. 19 558N ...# 2 THE USER MAY NOT CLEAR THE ALIEN FILESTORE FIELD ONCE IT 12 5597 ...# IS SET FOR A FILESTORE FILE. 16 559L ...# IF EITHER OF THESE CHECKS FAILS WE DO A REJECT 7. 20 55=5 ...# THE NET EFFECT OF THE CHECKS IS TO PREVENT THE INTRODUCTION INTO 19 55=J ...# THE HOST FILESTORE OF BOGUS HOST FILESTORE INCREMENT NUMBERS. 21 55?3 ...# THE RESTORE TIME MACRO IS NECESSARY SINCE UNDER CERTAIN EXCEPTIONAL 18 55?G ...# AND CONTROLLED CONDITIONS USERS MAY HAVE A VALID REASON 20 55?_ ...# FOR MUCKING ABOUT WITH HOST FILESTORE INCREMENT NUMBERS,THOUGH 12 55#D ...# THEY DO THIS AT THEIR OWN RISK. 4 55#X ...# 21 55*B ... SEGENTRY K98FHDIRTWO [LABEL FOR RESTORE TIME MACRO TO MEND 6 55*T ... NULL 13 55B# ... JMBS OKINCCHECK,2,BNLIB,BNEXO 19 55BR ... JFNZ OKINCCHECK,2,FNFSNO [NO CHECK IF ALIEN FSNO SET. 18 55C= ... LDX 0 EINCN(2) [NEW INCREMENT NUMBER. 18 55CP ... BXU 0 EINCN(3),REJECT7 [IT MUST BE UNCHANGED. 10 55D8 ... LDX 0 EFILNUMN(2) 17 55DM ... BXU 0 EFILNUMN(3),REJECT7 [DITTO FILE NUMBER 6 55F6 ...OKINCCHECK 20 55FK ... SEGENTRY K97FHDIRTWO [ANOTHER RESTORE TIME MACRO LABEL 4 55G4 ...# 20 55GH ...# WE ALWAYS CHECK FOR NEGATIVE INCREMENT NUMBERS SINCE THEY WOULD 10 55H2 ...# FORCE A GENERAL RESTORE. 4 55HF ...# 9 55HY ... LDX 0 EINCN(2) 9 55JC ... BNG 0 REJECT7 4 55KG # 16 5656 # HAVING ASSEMBLED A LIST OF TESTS WE APPLY THEM 4 56JQ # 7 574B SRC 5 1 19 57J2 BPZ 5 NOINUSECHK [J UNLESS IN USE CHECK NEEDED 20 583L SBN 2 A1 [X2->BLOCK HOLDING NEW NAME REC 19 58H= NAME 2,FILE,ENT [CALL IT AN ENT FOR FINDFCB 10 58JM ... FSHCODE B,XFSHBFIND 4 58L4 ...( 14 58MF ...# FCBFIND MACRO MUST BE OBEYED ON MACHINE A 17 58NW ... TRANSBEG FSHFCBFIND,FHDIRTWO,2,FILE,ENT,ACOMMUNE2 15 58Q? ... BRN OKNOTINUSE ['OK' RETURN 16 58RN ... BRN REJECT ['ERROR' RETURN 6 58T5 ...XFSHBFIND 4 58WG ...) 6 58XX ...XAFCBFIND 7 58_# ... FSHSKIP B 18 592W FCBFIND 2,OKNOTINUSE [JUMP IF NO FCB FOR FILE 18 59GG BRN REJECT2 [REJECT PERI IF FCB FOUND 6 5=26 OKNOTINUSE 10 5=3T ... FSHCODE A,XFSHAFIND 4 5=5J ...( 21 5=7? ... TRANCHKN FSHFCBFIND,EQUAL,XFSHAFIND,XFSHAFIND [J IF NOT TRANSBEG'D 20 5=92 ... LDN 4 0 [OFFSET FOR LABEL 'OKNOTINUSE' 6 5==P ...XTRANSFIN 17 5=#D ... TRANSFIN 4 [RETURN TO MACHINE B 6 5=B7 ...XFSHAFIND 4 5=CW ...) 10 5=FQ MHUNTW 2,FILE,ENT 16 5=_B NAME 2,FILE,FRB [NAME BLOCK BACK 6 5?F2 NOINUSECHK 18 5?YL LDX 1 FX1 [RESTORE CORRUPTED PTRS 8 5#D= LDX 2 FX2 7 5#XW SRC 5 1 20 5*CG BPZ 5 NOSYSFILE [J UNLESS SYS FILE CHECK NEEDED 21 5*X6 JMBS REJECT3,3,BNCARE,BNINDEX,BNCOOR,BNREVERE[ERROR IF FILE 20 5BBQ [HAS ANY SYS FILE CHARACTERISTICS 6 5BWB NOSYSFILE 7 5CB2 SRC 5 1 20 5CTL BPZ 5 NOWNCHK [J IF NO OWNERSHIP CHECK NEEDED 19 5D*= JBC REJECT1,2,MFHDIROWN [J IF USER DONT OWN ENTRANT 5 5DSW NOWNCHK 20 5F#G ACROSS FHOBJDIR,2 [CHECKS OK - RETURN TO MAIN CODE 4 5FS6 # 21 5G?Q # ******************************************************************* 4 5GRB # 13 5H?2 # ERROR LINKS BACK TO THE MAIN SEGMENT. 4 5HQL # 5 5J== NILDATA 10 5JPW ACROSS FHOBJDIR,3 4 5K9G # 5 5KP6 REJECT1 7 5L8Q LDN 7 1 9 5LNB BRN REJECT 5 5M82 REJECT2 7 5MML LDN 7 2 10 5MP* ... FSHCODE A,XFSHAREJECT 4 5MR4 ...( 21 5MSR ... TRANCHKN FSHFCBFIND,EQUAL,REJECT,REJECT [J IF JUST TRANSBEG'D TO 19 5MWG ... LDN 4 1 [OFFSET FOR LABEL 'REJECT' 17 5MY9 ... BRN XTRANSFIN [RETURN TO MACHINE B 4 5M_Y ...) 6 5N3M ...XFSHAREJECT 7 5N5B ... FSHSKIP A 9 5N7= BRN REJECT 5 5NLW REJECT3 7 5P6G LDN 7 3 9 5PL6 BRN REJECT 5 5Q5Q REJECT5 7 5QKB LDN 7 5 9 5QP? ... BRN REJECT 5 5QT8 ...REJECT7 7 5Q_5 ... LDN 7 7 5 5R52 REJECT 10 5RJL ACROSS FHOBJDIR,4 4 5S4= # 11 5SHW MENDAREA 30,K99FHDIRTWO 4 5T3G # 4 5TH6 #END 6 ____ ...722075650002