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