FINDFS867

(George Source)

Macros used: ACROSS, ALTLEN, CHAIN, CLOSEWR, DOWN, EXOFILE, FREECORE, FSHSKIP, GEOERR, GEOSTOP, HUNT2, HUNTW, LADDP, MENDAREA, MFINDSU, MHUNT, MHUNTW, OPENST, READST, RELST, SEGENTRY, SETALLOC, SETNCORE, SETUPCORE, TESTREP, TESTREPNOT, UNLOCKSU, UP

FINDFS867.txt
22FL    #SEG  FINDFS70                     [FRANK BLUNDELL  
22^=    #LIS  K0FINDFS  
23DW    #     (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23YG          8HFINDFS  
24D6    #   
24XQ    #     THIS  CHAPTER SETS UP THE ALFTABLE  AND FDTABLE  IN THE   
25CB    #     INDEX CHAIN   
25X2    #     INFORMATION ABOUT THE FILES IS OBTAINED FROM A BSTB/FSTAB 
26BL    #     BLOCK SET UP BY FSTABLE   
26W=    #     FORMAT OF RECORDS:-   
27*W    #   
27TG    #   
28*6    #     WORD0    ]
28SQ    #         1    ] 12 CHARACTER FILENAME  
29#B    #         2    ]
29S2    #         3    B0-B5     DEVICE TYPE  (6,9,13,25 (7?))  
2=?L    #                 B6     SWAP FILE BIT  
2=R=    #              B7-B17    NOT USED   
2?=W    #              B18-B23   LOGICAL FILE NUMBER
2?QG    #         4    B6-B23    SERIAL NUMBER IF SPECIFIED AND DISC
2#=6    #                        ZERO IF DRUM   
2#PQ    #   
2*9B    #   
2*P2          SEGENTRY K1FINDFS,QK1FINDFS   
2B8L    #   
2BN=    #   
2C7W    XERR1          +24  
2CMG                   24HNO FILESTORE DESCRIPTION  
2D76    XN1            #77000000
2DLQ    XSUITA         +FIFSFAS            [ >1 FILE AREA   
2F6B    XSUITB         +FIFSFIC            [FIC SEPARATED FROM FILE AREA
2FL2    XSUITC         +FIFSRET            [RETENTION PEROOD NOT EXPIRED
2G5L    XSUITD         +FIFSSYF            [SYFLE BIT SET   
2GK=    XSUITE         +FIFSBUCK           [BUCKET > 1 BLOCK
2H4W    #   
2HJG    #   
2J46    #   
2JHQ    XR1   LDX   1  FX1  
2K3B          GEOSTOP  XERR1(1)            [NO FILESTORE
2KH2    #   
2L2L    #   
2LG=    QK1FINDFS   
2L^W          MHUNTW   1,BSTB,FSTAB 
2MFG          STOZ     AWORK1(2)           [USED FOR FDTABLE ALTLEN COUNT   
2M^6          LDX   0  FIRSS+3(1)   
2NDQ          BZE   0  XR1                 [JUMP IF NO FILESTORE
2NYB          LDN   6  0
2PD2          LDN   7  0
2PXL    Z2    SMO      7
2QC=          LDX   0  FIRSS+3(1)          [CALCULATE CORE REQUIRED 
2QWW          BZE   0  Z3                  [NO MORE 
2RBG          LDX   4  0                   [FOR ALFTABLE,FDTABLE
2RW6          ANDN  4  #77                 [LFN 
2S*Q          SRL   0  18                  [TYPE
2STB          ADN   6  3
2T*2          SBN   0  9
2TSL          BZE   0  Z1                  [JUMP IF 1964 DRUM   
2W#=          SBN   0  16   
2WRW          BZE   0  Z1                  [JUMP IF 2851 DRUM   
2X?G          ADN   6  3
2XR6    Z1    ADN   7  FIRLEN   
2Y=Q          BRN      Z2   
2YQB    Z3    SETUPCORE 6,3,BSTB,FDTABLE
2^=2          ADN   4  1
2^PL          SLL   4  1
329=          SETUPCORE 4,3,BSTB,ALFTABLE   
32NW          NGN   1  1                   [SET ALL WORDS -VE   
338G          STO   1  A1(3)
33N6          ADX   1  4
347Q          LDN   4  A1+1(3)  
34MB          ADN   3  A1   
3572          MOVE  3  0(1) 
35LL          SETNCORE GEXDLEN,3,EWDAS,GEXD 
366=          LDN   6  0                   [USED FOR FDTABLE POINTER
36KW          LDN   7  0                   [USED FOR MEND AREA POINTER  
375G    Z4    MHUNTW   1,BSTB,FSTAB 
37K6          SMO      7
384Q          LDX   0  FIRSS+3(1)   
38JB          BZE   0  XEND                [JUMP-NO MORE DESCRIPTIONS   
3942          SRL   0  18   
39HL          SBN   0  6
3=3=          BZE   0  T1   
3=GW          SBN   0  7
3?2G          BZE   0  T1                  [JUMP IF DISC
3?G6    #   
3?^Q    #   
3#FB    #     DRUM  PART
3#^2    #   
3*DL          SETNCORE BBUFF+129-A1,3,EWDAS,FDRUM   
3*Y=          MHUNTW   1,BSTB,FSTAB 
3BCW          SMO      7
3BXG          LDX   0  FIRSS+3(1)   
3CC6          SMO      FX1  
3CWQ          ANDX  0  XN1  
3DBB          STO   0  AGTYPE(3)
3DW2          ADN   3  ANAME
3F*L          SMO      7
3FT=          LDN   2  FIRSS(1) 
3G#W          MOVE  2  3                   [MOVE IN FILENAME
3GSG    U9    DOWN     FINDRUM,1           [FIND THE FILE   
3H#6          TESTREPNOT   OK,S1           [JUMP IF ERROR   
3HRQ          MHUNTW   3,EWDAS,FDRUM
3J?B          MHUNTW   2,BSTB,FDTABLE   
3JR2          MHUNTW   1,BSTB,FSTAB 
3K=L          LDX   0  AGTYPE(3)
3KQ=          SMO      6
3L9W          STO   0  A1(2)               [TYPE
3LPG          LDX   0  EXBSP+1(3)   
3M96          SMO      6
3MNQ          STO   0  A1+1(2)             [DATUM   
3N8B          LDX   0  EXBSP+2(3)   
3NN2          SMO      6
3P7L          STO   0  A1+2(2)             [LENGTH  
3PM=          SMO      7
3Q6W          LDX   4  FIRSS+3(1)   
3QLG          ANDN  4  #77  
3R66          MHUNTW   1,BSTB,ALFTABLE     [CHECK IF FILE USED BEFORE   
3RKQ    R2    LDX   5  A1(1)
3S5B          BNG   5  R1                  [NON EXISTANT
3SK2          ANDN  5  #7777
3T4L          SMO      5
3TJ=          LDX   0  A1+1(2)  
3W3W          SMO      6
3WHG          TXU   0  A1+1(2)  
3X36          BCS      R1                  [JUMP IF DATUM DIFFERENT 
3XGQ          LDX   0  A1(1)
3Y2B          SRL   0  12   
3YG2          ANDN  0  #1777               [CHECK  BSUN 
3Y^L          TXU   0  EXBSP(3) 
3^F=          BCC      S4                  [JUMP - FILE USED BEFORE 
3^YW    R1    ADN   1  2
42DG          BCT   4  R2   
42Y6          MHUNTW   1,BSTB,FSTAB 
43CQ          LDX   4  EXBSP(3)            [B.SUN   
43XB          SLL   4  12   
44C2          DSA   6  4                   [FDTABLE POINTER 
44WL          LDCT  0  4                   [GET SWAP BIT
45B=          SMO      7
45TW          ANDX  0  FIRSS+3(1)   
46*G          SLL   0  5
46T6          ORX   4  0
47#Q          SMO      7
47SB          LDX   0  FIRSS+3(1)   
48#2          LDX   5  0
48RL          SRL   0  18                  [X0= TYPE
49?=          ANDN  5  #77                 [X5= LFN 
49QW          LDX   2  EXBSP+2(3)          [LENGTH  
4==G          SBN   0  25   
4=Q6          BZE   0  R3                  [JUMP IF 2851
4?9Q          SRL   2  7                   [SHIFT TO BLOCKLETS  
4?PB    R3    STO   5  BLMP 
4#92          SLL   5  1
4#NL                                       [SET UP ALFTABLE ENTRY   
4*8=          MHUNTW   1,BSTB,ALFTABLE  
4*MW          SMO      5
4B7G          STO   4  A1(1)
4BM6          SMO      5
4C6Q          STO   2  A1+1(1)  
4CLB          ADN   7  FIRLEN              [UPDATE POINTERS 
4D62          ADN   6  3
4DKL          SETALLOC ADRDLIST(3)  
4F5=          FREECORE 3
4FJW          BRN      Z4                  [BACK FOR NEXT ONE   
4G4G    #   
4GJ6    #     DISC  PART
4H3Q    #   
4HHB    T1    SETNCORE FDCELLS-A1,3,EWDAS,EXOF  
4J32          MHUNTW   1,BSTB,FSTAB 
4JGL          LDN   0  BOPEN+BSPEC  
4K2=          STO   0  EXMARK(3)           [SET OPEN MARKERS
4KFW          STOZ     FIP+4(3)            [GENERATION NUMBER   
4K^G          LDN   5  FIP(3)   
4LF6          SMO      7
4LYQ          LDN   4  FIRSS(1) 
4MDB          MOVE  4  3                   [MOVE IN FILENAME
4MY2          SMO      7
4NCL          LDX   4  FIRSS+4(1)   
4NX=          BZE   4  T2                  [JUMP IF NOT SPECIFIED   
4PBW          STO   4  ASUSN(3) 
4PWG          LDN   0  BSERL+BSUPP  
4QB6          ORS   0  EXMARK(3)
4QTQ    T2    DOWN     EXOPEN,1            [OPEN FILE   
4R*B          TESTREPNOT   OK,S2
4RT2          MHUNTW   3,EWDAS,EXOF 
4S#L                                       [START CHECKS ON FILE
4SS=          LDEX  0  FIP+5(3) 
4T?W          SBN   0  1
4TRG          BNZ   0  S3FAREA             [MUST BE ONLY ONE FILE AREA  
4W?6          LDX   0  FDCELLS(3)   
4WQQ          TXU   0  ASUSN(3) 
4X=B          BCS      S3ASFIC             [FILE AREA MUST BE ON SAME UNIT AS FI
4XQ2          LDX   0  FIP+7(3) 
4Y9L          SRL   0  12                  [RETENTION PERIOD
4YP=          ADX   0  FIP+6(3)            [DATE WRITTEN
4^8W          LDX   4  EDATE
4^NG          TXL   4  FIP+6(3)            [CURRENT DATE < DATE LAST WRITTEN
5286          BCS      RPMISS              [J IF SO TO MISS RP CHECKS   
52MQ          TXL   4  0
537B          BCS      S3RETN              [RETENTION PERIOD NOT EXPIRED
53M2    RPMISS  
546L          LDCT  0  #100 
54L=          ANDX  0  FIP+5(3) 
555W          BNZ   0  S3SYFLE             [SYFLE BIT SET   
55KG          LDX   0  FIP+8(3) 
5656          ANDN  0  #77                 [BUCKET SIZE 
56JQ          SBN   0  1
574B          BNZ   0  S3BUCK              [BUCKET NOT ONE. 
57J2          LDN   1  BCCB                [CHECK IF THIS FILE SPECIFIED BEFORE 
583L    T4    LDX   1  BPTR(1)  
58H=          TXU   1  CXCC 
592W          BCC      T3                  [END OF CHAIN
59GG          LDX   0  BACK2(1) 
5=26          BZE   0  T3                  [NO1MORE EXOFS   
5=FQ          LDX   0  ASUSN(1) 
5=^B          TXU   0  ASUSN(3) 
5?F2          BCS      T4                  [JUMP IF SERIAL NUMBERS DIFFERENT
5?YL          LDX   0  HOME(1)  
5#D=          TXU   0  HOME(3)  
5#XW          BCS      T4                  [JUMP IF BS HOMES DIFFERENT  
5*CG          BRN      S4                  [FILE USED TWICE 
5*X6    T3    LDX   0  EDATE               [UPDATE  FIP 
5BBQ          STO   0  FIP+6(3)            [DATE WRITTEN
5BWB          LDX   0  FIP+4(3) 
5CB2          ANDN  0  #7777               [VERSION NUMBER  
5CTL          ADN   0  1
5D*=          DSA   0  FIP+4(3) 
5DSW          FSHSKIP  B,T9 
5F#G    (   
5FS6          LDX   2  3
5G?Q          MHUNTW   3,EWDAS,GEXD 
5GRB          OPENST   ASUSN(2)            [OPEN UNIT   
5H?2          READST   HOME(2),T5          [READ DOWN FIP CELL  
5HQL          TESTREP  OK,T7               [JUMP IF OK  
5J==          TESTREP  EXFAIL,S5           [OR FAIL 
5JPW    T8    GEOERR   1,FSTRAN 
5K9G    T7    LDX   1  ECOR(3)  
5KP6    T5    MHUNTW   2,EWDAS,EXOF 
5L8Q          ADN   1  2
5LNB          LDN   0  FIP(2)   
5M82          MOVE  0  15                  [MOVE IN NEW FIP 
5MML          CLOSEWR  W,HOME(2)           [REWRITE FIP CELL AND CLOSE UNIT 
5N7=          TESTREP  OK,T6               [JUMP IF  OK 
5NLW          TESTREPNOT   EXFAIL,T8
5P6G          BRN      S5   
5PL6    T6    MHUNTW   3,EWDAS,EXOF 
5Q5Q    T9  
5QKB    )   
5R52          LDN   0  1
5RJL          STO   0  COPEN(3)            [COUNT OF OPENS=1
5S4=          LDCT  0  #500 
5SHW          STO   0  EXMARK(3)           [OPEN FOR WRITING AND SYSTEM BITS
5T3G          MFINDSU  1,ASUSN(3)   
5TH6          MHUNTW   2,BSTB,FDTABLE   
5W2Q                                       [START REORGANISING FDCELL   
5WGB          LDX   5  ABSUN(1)            [GET BSUN FOR LATER  
5X22          LDX   4  HUNIT(1)            [AND D.L. PTR
5XFL          LDX   0  HTYPE(1) 
5X^=          SMO      6
5YDW          STO   0  A1(2)
5YYG          LDX   0  FDCELLS+1(3) 
5^D6          ADX   0  ASUBASE(1)          [START OF UNIT   
5^XQ          SMO      6
62CB          STO   0  A1+1(2)  
62X2          LDN   0  FDCELLS+2(3) 
63BL          SMO      6
63W=          LDN   1  A1+2(2)  
64*W          MOVE  0  3
64TG          NGNC  0  1
65*6          SMO      6
65SQ          ANDS  0  A1+3(2)  
66#B          LDX   0  FDCELLS(3)   
66S2          SMO      6
67?L          STO   0  A1+5(2)  
67R=          LDX   2  4
68=W          LDCT  0  #400 
68QG          LADDP    2,1  
69=6          ORS   0  BSUNIT2(1)          [SET 'IN USE BY SYSTEM' BIT  
69PQ          LDX   4  FDCELLS+5(3) 
6=9B          SBN   4  1
6=P2          EXOFILE  3                   [CHAIN IN EXOF   
6?8L          LDX   3  ASUSN(3) 
6?N=          UNLOCKSU 3
6#7W          RELST 3   
6#MG          MHUNTW   3,BSTB,ALFTABLE  
6*76          SLL   5  12   
6*LQ          DSA   6  5                   [FDTABLE POINTER 
6B6B          MHUNTW   1,BSTB,FSTAB 
6BL2          LDCT  0  4                   [SWAP BIT
6C5L          SMO      7
6CK=          ANDX  0  FIRSS+3(1)   
6D4W          SLL   0  5
6DJG          SMO      7
6F46          LDX   2  FIRSS+3(1)   
6FHQ          ANDN  2  #77  
6G3B          STO   2  BLMP                [LFN 
6GH2          SLL   2  1
6H2L          ORX   5  0
6HG=          SMO      2
6H^W          STO   5  A1(3)               [SET UP ALFTABLE 
6JFG          SMO      2
6J^6          STO   4  A1+1(3)  
6KDQ          ADN   7  FIRLEN              [UPDATE POINTERS 
6KYB          ADN   6  6
6LD2          BRN      Z4   
6LXL    #   
6MC=    #   
6MWW    #   
6NBG    #     NO MORE  FILES
6NW6    #     RECHAIN BLOCKS IN INDEX CHAIN ,ALTLEN IF NECESSARY
6P*Q    #   
6PTB    #   
6Q*2    XEND  MHUNTW   3,BSTB,ALFTABLE  
6QSL          LDX   4  BLMP 
6R#=          ADN   4  1
6RRW          SLL   4  1
6S?G          TXL   4  ALOGLEN(3)   
6SR6          BCC      XE2                 [JUMP IF RIGHT LENGTH
6T=Q          ALTLEN   3,4  
6TQB          MHUNTW   3,BSTB,ALFTABLE  
6W=2    XE2   CHAIN    3,BINDEX+1   
6WPL          MHUNTW   3,BSTB,FDTABLE   
6X9=          SMO      FX2  
6XNW          NGX   4  AWORK1   
6Y8G          BZE   4  XE1                 [JUMP IF NO FILES LOST   
6YN6          ADX   4  ALOGLEN(3)   
6^7Q          ALTLEN   3,4  
6^MB          MHUNTW   3,BSTB,FDTABLE   
7272    XE1   CHAIN    3,BINDEX+1   
72LL          MHUNT    3,EWDAS,GEXD 
736=          FREECORE 3
73KW          MHUNTW   1,BSTB,FSTAB 
745G          FREECORE 1
74K6          LDN   0  1
754Q          ADS   0  BLMP                [BLMP CONTAINS HIGHEST LFN +1
75JB    #SKI  CRAB  
7642    (   
76HL
773=    [     THE FOLLOWING SECTION IMPLEMENTS AN ENHANCEMENT TO AID POSTMORTEM 
77GW    [     FACILITIES. AT EMS THE LARGEST SWAP FILE IS LOCATED AND TWO   
782G    [     POINTERS INITIALISED. JSWAPDR WILL POINT TO THE DEVICE RECORD OF  
78G6    [     THIS FILE, AND JSWAPFD WILL POINT TO THE FILE DESCRIPTION RELAT-  
78^Q    [     -ING TO THE SWAP  FILE (IN THE FDTABLE)   
79FB    [   
79^2          LDN   7  6                   [MODIFIER INSIDE ALFTABLE
7=DL          LDN   6  0                   [X6 HOLDS SIZE OF LARGEST FILE   
7=Y=          HUNT2  3,BSTB,ALFTABLE,BINDEX 
7?CW    XA1   SMO      7
7?XG          LDX   0  A1(3)               [NEXT RECORD 
7#C6          BNG   0  XA2                 [MEANINGLESS IF NEGATIVE 
7#WQ          SLL   0  1                   [SWAP BIT
7*BB          BPZ   0  XA2                 [JUMP IF NOT SET 
7*W2          SMO      7
7B*L          LDX   1  A1+1(3)             [SIZE OF SWAP FILE   
7BT=          TXL   1  6                   [COMPARE WITH LARGEST SO FAR 
7C#W          BCS      XA2                 [JUMP IF X6>X1   
7CSG          LDX   5  0                   [RETAIN MODIFIER TO THIS RECORD  
7D#6          LDX   6  1                   [RETAIN SIZE 
7DRQ    XA2   ADN   7  2                   [UPDATE MODIFIER 
7F?B          TXL   7  ALOGLEN(3)          [TEST FOR END OF ALFTABLE
7FR2          BCS      XA1  
7G=L          LDX   0  5
7GQ=          SRL   5  1
7H9W          ANDN  5  #7777
7HPG         ADN   5  A1
7J96          STO   5  JSWAPFD             [PTR TO FILE DESCRIPTION 
7JNQ          SRL   0  13   
7K8B          ANDN  0  #1777               [ISOLATE BSUN
7KN2         MPY   0  ASBSAB
7L7L          NGX   1  1
7LM=          ADX   1  BBAC 
7M6W          ADX   1  ASBSAB              [GET PTR TO BSA  
7MLG    XA4   LDX   0  CPPTR(1)            [LOAD PTR TO DEVICE RECORD   
7N66          STO   0  JSWAPDR  
7NKQ    [   
7P5B    [   
7PK2    )   
7Q4L          HUNTW    3,EWDAS,EWMESS   
7QJ=          BNG   3  XE3  
7R3W          FREECORE 3
7RHG    #SKI JPSCF  
7S36    #SKI
7SGQ    XE3   UP
7T2B    #SKI JPSCF  
7TG2    XE3   ACROSS BRADSPLT,1 
7T^L    #   
7WF=    #   
7WYW    #     FILE  NOT SUITABLE FOR FILESTORE  
7XDG    #     OR FILE USED TWICE
7XY6    #     OUTPUT APPROPRIATE MESSAGE AND GO BACK FOR NEXT FIE   
7YCQ    #   
7YXB    S3FAREA 
7^C2          SMO      FX1  
7^WL          LDX   3  XSUITA   
82B=          BRN      S3AB 
82TW    S3ASFIC 
83*G          SMO      FX1  
83T6          LDX   3  XSUITB   
84#Q          BRN      S3AB 
84SB    S3RETN  
85#2          SMO      FX1  
85RL          LDX   3  XSUITC   
86?=          BRN   S3AB
86QW    S3SYFLE 
87=G          SMO      FX1  
87Q6          LDX   3  XSUITD   
889Q          BRN      S3AB 
88PB    S3BUCK  
8992          SMO      FX1  
89NL          LDX   3  XSUITE   
8=8=    #   
8=MW    S3AB  STO   3  AWORK2(2)
8?7G          DOWN      FSERR,1 
8?M6    #   
8#6Q    #     UP FROM FSERR WHEN FILE NOT AVAILABLE 
8#LB    #   
8*62    S3AC
8*KL          LDX   4  ACOMMUNE9(2)        [ADJUST AWORK1 WITH AMOUNT   
8B5=          ADS   4  AWORK1(2)           [CORE TO REMOVE FDTABLE  
8BJW          ADN   7  FIRLEN   
8C4G          BRN      Z4   
8CJ6    #   
8D3Q    S4    DOWN     FSERR,2  
8DHB          BRN      S3AC 
8F32    #   
8FGL    #     FAILURE  TO OPEN FILE,OR FAIL WHILST REWRITING FIP
8G2=    #   
8GFW    #   
8G^G    #   
8HF6    #   
8HYQ    S5    DOWN      FSERR,3 
8JDB          BRN      S3AC                [UP  
8JY2          BRN      U8                  [UPPLUS 1
8KCL    #   
8KX=    #     NOT OK REPLY FROM FINDRUM 
8LBW    #   
8LWG    S1    TESTREPNOT NOTFOUND,S2A   
8MB6          DOWN      FSERR,7 
8MTQ          BRN      S3AC                [UP  
8N*B          BRN      U8                  [UPPLUS 1
8NT2    S2A   GEOERR   1,WRNGREP
8P#L    S2    TESTREPNOT   EXFAIL,S2A   
8PS=          DOWN     FSERR,4  
8Q?W          BRN       S3AC
8QRG    #   
8R?6    #     UPPLUS 1 FROM FSERR WHEN FILE IS AVAILABLE
8RQQ    #   
8S=B    U8  
8SQ2          MHUNTW   1,BSTB,FSTAB 
8T9L          SMO      7
8TP=          LDX   0  FIRSS+3(1)   
8W8W          SRL   0  18   
8WNG          SBN   0  6                   [EDS 
8X86          BZE   0  T2   
8XMQ          SBN   0  7                   [EDS 
8Y7B          BZE   0  T2   
8YM2          BRN      U9                  [DRUMS   
8^6L          MENDAREA 30,K99FINDFS 
8^L=    #END
^^^^ ...554175650001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1