FHDIRTWO864

(George Source)

Macros used: ACROSS, BBUS, BC, BITDEFS, BS, BXU, FCBFIND, FSHCODE, FSHENTRY, FSHSKIP, JBC, JFNZ, JMBS, MBC, MBS, MENDAREA, MHUNTW, NAME, SEG, SEGENTRY, STEPAGAIN, TOPFCB, TRANCHKN, TRANSBEG, TRANSFIN

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