1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 1 ($$$LOGO.) F 2 2 INPUT $$$LOGO. 1 2 3 4 5 6 7 8 9 10 * ......... BBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 11 * ................. BBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 12 * ..........##......... BBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 13 * ............##........... BBBBBB BBBBBB TTTTTT TTTTTT TTTTTT IIIIII 14 * .............##............ BBBBBB BBBBBB TTTTT TTTTTT TTTTT IIIIII 15 * .............##............ BBBBBB BBBBBBB TTTT TTTTTT TTTT IIIIII 16 * ..............##............. BBBBBBBBBBBBBBBBBBB TTTTTT IIIIII 17 * ..............##............. BBBBBBBBBBBBBBBBB TTTTTT IIIIII 18 * ..............##............. BBBBBBBBBBBBBBBBBBB TTTTTT IIIIII 19 * .............##.............. BBBBBB BBBBBB TTTTTT IIIIII 20 * ...........##.............. BBBBBB BBBBBB TTTTTT IIIIII 21 * ..........##............... BBBBBB BBBBBB TTTTTT IIIIII 22 * ........##............... BBBBBB BBBBBBB TTTTTT IIIIII 23 * .....##.............. BBBBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 24 * ................. BBBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 25 * ......... BBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 26 * 27 * 28 * ****** Copyright 1982, 1983, 1984, 1985, 1986, 1987, 1988, 29 * 1989, 1990, 1991, 1992 BTI Computer Systems ****** 30 * 31 * This document and the program it describes are the exclusive property 32 * of and proprietary to BTI Computer Systems. No use, reproduction, or 33 * disclosure of this document or its contents, either in full or in part, 34 * by any means whatsoever regardless of purpose may be made without the 35 * prior written consent of BTI Computer Systems. 36 * 37 * BTI Computer Systems 38 * Sunnyvale, California 94086 3 4 5 * RRRRRR IIII EEEEEE 6 * RR RR II EE 7 * RR RR II EE 8 * RRRRRR II EEEEE 9 * RR II EE 10 * RR II EE 11 * RR IIII EEEEEE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 2 F 0 13 14 ********************************************************************************** 15 * * 16 * Revision Date * 17 * -------- ---- * 18 * A9003 20 Mar 90 * 19 * Project begun. * 20 * * 21 * A9007 27 Jul 90 * 22 * Change made to respect old format volumes. * 23 * If the volume format does not allow empty/tiny * 24 * RAFs, we check for the raf type using FDLRAF * 25 * and we do not convert the FDE to the new format. * 26 * If the volume does support the new format, we * 27 * do convert FDEs. CG * 28 * A9208 06 Aug 92 * 29 * Fixes to ensure that blocks marked accounted for. RC * 30 * * 31 ********************************************************************************** 32 33 INPUT RECIPE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 3 (RECIPE) F 3 Recipe 3 4 ********************************************************************************** 5 * * 6 * The recipe for 'pie in the sky' * 7 * * 8 * Step 1: Read the disk sequentially. Record some information * 9 * about each block. This includes * 10 * FBI Type * 11 * File serial number * 12 * Account name (or pointer thereto) * 13 * Relative block number * 14 * These records are stored in an array indexed by disk address. * 15 * Any block which is seen to have been substituted is noted. * 16 * * 17 * Step 2: Rebuild the disk. * 18 * * 19 * * 20 *Wasn't that easy? What? You want some elaboration on step 2? * 21 *Ok. Here's the deal. We want to build a tree in memory which * 22 *looks like what the volume structure is supposed to look like. * 23 *To make this feasible from a memory usage standpoint, we are * 24 *going to initially limit the hierarchy to: * 25 * * 26 * Volume Label * 27 * | * 28 * Security Block * 29 * / | \ * 30 * IDXs * 31 * / | \ * 32 * Directory Things * 33 * | / | \ * 34 * +----------+ UDIR2s * 35 * |File count| * 36 * +----------+ * 37 * * 38 *That is, the main item that we leave out of the tree is nodes for * 39 *individual files, although we do attach a number to each account * 40 *which is the number of files that we have seen that belong in this * 41 *account. A 'Directory Thing' is of course a UDIR1, although we * 42 *may not know whether it should be a small or large directory. * 43 *There are also ancillary items all over the place (share list * 44 *blocks, authorization list blocks, etc) but these are just * 45 *attached to things rather than having a hierarchichal role. Each * 46 *node has a 'hypothetical' attribute, which is false if we have * 47 *read the corresponding block from the disk and true otherwise. * 48 * * 49 *We are going to step through the array we built and try to place * 50 *each block (except free blocks, etc) in the tree in the proper * 51 *place. If we can't get there from the root, we fill in the nodes * 52 *that should be there but aren't and call these 'hypothetical'. * 53 *For example, if the next block is a UDIR2 for account Frog.Pond, * 54 *but the appropriate IDX block has not been seen, we create a * 55 *hypothetical IDX node, then create a hypothetical Directory Thing * 56 *for Frog.Pond as a child of the IDX, and make that the parent of * 57 *our UDIR2. If we find the object we are looking for in the tree, * 58 *we turn off its hypotheticalness and remember the disk address of * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 4 (RECIPE) F 3 Recipe 59 *the real thing. * 60 * * 61 *If the disk block is a data block we do this instead: scan the * 62 *list of blocks we have already inspected to see if we have seen * 63 *this file before. (From a performance point of view, we'll * 64 *probably want to implement a shortcut of some kind for this.) * 65 *If not, we find its Directory Thing in the tree and increment its * 66 *file count. This file count is reduced when we attach a UDIR2 (by * 67 *the number of entries therein). When we're done, the file count * 68 *will tell us if any UDIR2s are missing. (It is possibly legitimate * 69 *for the file count to be negative after subtracting UDIR2 counts, * 70 *because of any file directory entries for zero-length files.) * 71 * * 72 *When we attribute reality to any node, we mark the corresponding * 73 *block in the array 'accounted for'. * 74 * * 75 *When we have gone through the entire volume, we know that any * 76 *node which is marked 'hypothetical' was lost. We can also tell, * 77 *from the file count, whether a large directory is missing any * 78 *UDIR2s, and how many we have to create to hold the un-pointed-to * 79 *files. Any real reference to a block which we put on our 'has * 80 *been substituted' list can be changed to refer to the disk * 81 *address from which the block was actually read. * 82 * * 83 *Any hypothetical file system objects higher in the hierarchy * 84 *than data blocks or data index blocks can now be realized with * 85 *the information in its subtree. (References to nonexistent * 86 *non-hierarchy objects must simply be deleted.) * 87 * * 88 *Next we need to visit each file directory entry in the tree, * 89 *and verify the existence and sanity of the referenced file. * 90 *For indexed file types, this simply means to check that each * 91 *referenced file block exists and properly belongs to that file, * 92 *zeroing the index reference if the block fails to measure up. * 93 *For sequential files, the file chain can be followed and * 94 *verified. Each data block verified gets marked 'accounted for'. * 95 * * 96 *Next, we can try to gather up orphaned subfiles by scanning the * 97 *volume array for data blocks which are unaccounted for. Any SAF * 98 *blocks found on this pass, even if belonging to a previously * 99 *verified file, can be put into a newly created RAF from which the * 100 *data records could be easily recovered by an online program with * 101 *a little human help in finding a starting place. * 102 * * 103 * * 104 * * 105 * Brass Tacks * 106 * (an unusual ingredient in pie) * 107 * * 108 *Here are some thoughts on what will be needed in the various data * 109 *structures used in this scheme. * 110 * * 111 *The Disk Block Array must hold at least the following information: * 112 * * 113 * FBI Type 5 bits * 114 * Acct Sernum 12 bits (an index into the table of actual values) * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 5 (RECIPE) F 3 Recipe 115 * File Sernum 44 bits * 116 * Relative Block 24 bits * 117 * 'Accounted for' 1 bit * 118 * * 119 *for a total of 86 bits per block. Given the number of times * 120 *that this array will need to be scanned, this is a critical area * 121 *of concentration for increasing performance. Eyeballing a test * 122 *program, I see that to linearly search a 70000 entry table takes * 123 *well over one second, maybe closer to two. Even assuming an * 124 *expectation value of 1/4 the maximum size for the number of * 125 *entries we need to inspect, this is still a problem. Using LSRCH * 126 *is so much faster that it behooves us to find a way to use it, * 127 *despite the penalty of a link field in the above record structure. * 128 *This requires finding 17 bits. Filling the record to three words * 129 *means we have ten bits filler. The relative block field, * 130 *currently addressing the problem of rebuilding a 16 million block * 131 *volume, could reasonably lose six bits, reducing it to a 1/4 * 132 *million block range. System time values (meaning file sernums) * 133 *have a leading '3' between 1963 and 1998 AD. This three could * 134 *reasonably be assumed in the stored value, reclaiming two bits * 135 *and giving us what we need for a link field. (If we really want * 136 *to be finicky, since we need only one of those two bits, we could * 137 *keep the other one as an indicator of a leading 3 or leading 4, * 138 *validating the time through the year 2032.) * 139 * * 140 *A very simple way to have this data amenable to list searching * 141 *and still retain random addressability is to map the array into * 142 *the lower half of the page file. There would still have to be * 143 *more than one space used, each searched individually (as a list), * 144 *because a maximum of 43000 entries would fit in each. This is * 145 *making online and offline versions quite different, but the whole * 146 *process of constructing and searching this table can be easily * 147 *encapsulated. * 148 * * 149 *If we assume the above, then the upper half of the page file has * 150 *ample space for the tree we'll build, which will consist of the * 151 *following records representing each node type. Presumably the * 152 *space is sufficient that the records need not be packed. * 153 * * 154 * VOL node Security 1 disk address * 155 * Security 2 disk address * 156 * Pointer to SEC node * 157 * * 158 * SEC node 1 .. 253 pointers to IDX nodes * 159 * * 160 * IDX node IDX bucket number * 161 * 1 .. 204 * 162 * { Account name * 163 * Pointer to DIR node } * 164 * * 165 * DIR node Account name * 166 * File count * 167 * UDIR1 disk address * 168 * Account Share List disk address * 169 * 1 .. 185 pointers to UDIR2 nodes * 170 * * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 6 (RECIPE) F 3 Recipe 171 * UDIR2 node Filename in first entry * 172 * UDIR2 disk address * 173 * * 174 * * 175 *The following are notes made during the construction of the program. * 176 * * 177 *There is, of course, no real purpose served by having the VOL * 178 *and SEC nodes as part of the hierarchy in memory... they are * 179 *represented just by a few simple variables. The pointer to the * 180 *tree structure therefore points to an IDX node. The DIR nodes * 181 *are in a chain hanging off of the appropriate IDX node... the * 182 *UDIR2 nodes are in a chain hanging off of a DIR node and are * 183 *sorted by the first filename they represent. * 184 * * 185 *In this first version of the program, any structures found on * 186 *the disk which will be recreated later, or which are useless, are * 187 *freed during the first pass through the Disk Block Array. These * 188 *include IDX blocks, AFT blocks, ADT blocks, swapping blocks, and * 189 *the substitution block. Swapping blocks are obviously left over * 190 *from a system crash... the substitution block will be rebuilt * 191 *because, since this program is presumably being run on a copy * 192 *of the damaged pack, any block which reads as having a FBIDA * 193 *different from its actual address would have been noted in the * 194 *substitution list of the old pack and not the new one... The ADT * 195 *will be rebuilt at the end of the program... AFT blocks are useless * 196 *anyway... IDXs are impractical to use, even if they exist on the * 197 *disk, because we may not be able to know for certain how many IDX * 198 *buckets there were, so we may hash our lists differently than they * 199 *were on the original pack. We decide on the number of original * 200 *buckets to allocate after the first disk scan, when we know how * 201 *many different accounts are represented on the volume. * 202 * * 203 *Actually, the whole thing about substituted blocks is wrong * 204 *anyway. When the bad pack is copied, substitutions are undone, * 205 *even if the copy is made by DiskDup. We may not want the program * 206 *to rely on being run on a copy, but it is the case that a copy * 207 *will have no substituted blocks (at least until and unless DiskDup * 208 *is changed to recover from write errors). * 209 * * 210 *Because there is no information being kept about individual * 211 *files during the first pass through the DBA, any File Share List * 212 *blocks that we see cannot be marked accounted for at that time. * 213 *They will have to be hooked up with their files during a later * 214 *pass which looks for unaccounted blocks. The following blocks are * 215 *marked accounted for: * 216 * Free blocks (and blocks that we make free) * 217 * Account shared list blocks * 218 * UDIR1 blocks * 219 * Any data block verified by a Minor AB inspection * 220 * Any Minor AB verified by a Major AB inspection * 221 * SAF blocks between load point and EOD or AEOD * 222 * * 223 *Before the initial scan, the bad tracks list is read. The DBA * 224 *entry for each recorded bad block has the FBI type set to 'test * 225 *block'. This is a type that won't impact anything else in the * 226 *program. The initial scan skips any blocks for which a FBI type * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 7 (RECIPE) F 3 Recipe 227 *has already been recorded. * 228 * * 229 *An additional attribute was added to the DBA elements, the * 230 *BLKLOST field. This indicates that the structure is known to * 231 *have lost data. This is mostly used to give warnings, but also * 232 *to know, during directory verification, whether a SAF should be * 233 *changed to a RAF. This is done if the root block is missing or if * 234 *the BLKLOST flag is set. The first step of this file type change * 235 *is unmarking all of the blocks belonging to the SAF. (Before this * 236 *is done, there will in general be both marked and unmarked * 237 *blocks.) So far, this is the only time that the accounted for * 238 *flag is ever cleared after being set. * 239 * * 240 *It is vital, during the initial volume scan, that the occurrence * 241 *of any type of block in any way associated with a single data * 242 *file, cause a call to FILEINDIR. This routine decides if any * 243 *part of the file has already been seen, by finding the first * 244 *DBA element with the same file serial number and comparing its * 245 *subscript to the current blocknumber. If they are the same, the * 246 *current block is the first one seen from the file and the file * 247 *count in the directory thing needs to be incremented. * 248 * * 249 ********************************************************************************** 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 8 F 0 Recipe 35 36 37 OUTERBLOCK BLOCK 38 EXT 39 40 START ONPLSTART 41 START2 OPLSTART 42 43 INPUT SOURCE.OPSYS:MACHDEFS 44 INPUT SOURCE.OPSYS:IODEFS 45 INPUT SOURCE.OPSYS:DISKDEFS 46 INPUT SOURCE.OPSYS:PAGEDEFS 47 INPUT SOURCE.OPSYS:IBLOCK 48 INPUT SOURCE.OPSYS:VIRTDEFS 49 INPUT SOURCE.OPSYS:HALTDEFS 50 INPUT BOOT.OPSYS:OPLVECTORS 51 INPUT BOOT.OPSYS:DISKCB 52 INPUT $$$MACROS 1 * Including MACROS.ASSEM Version A8607. 53 54 NOLIST MACROS 55 INPUT DEFS 2 0000000B ABS 3 ACCTIBITS EQU 11 The number of bits used to index 4 into the ACCTTABLE 5 6 * Format of a Disk Block Array element 7 00000400 8 DBAENTRY BASE R0 000800B0 0 ZBM 9 DBAACCT BSSB ACCTIBITS Index into the Acct Sernum table 00081610 0 ZBM 10 DBASEEN BSSB 1 The 'accounted for' flag 00081810 0 ZBM 11 DBABLKLOST BSSB 1 1 sez block was deleted from index 12 (set on MajAB MinAB CCB SAFRoot only) 13 BSSB WORDLNTH-ADDRESS-DISPB DBAACCT filler for alignment 00081F10 0 ZBM 14 DBANEXT BSSB ADDRESS Pointer to next entry 00080121 0 ZBM 15 DBARELBLK BSSB 18 Relative block number 00082451 0 ZBM 16 DBAFBITYPE BSSB 5 FBI Type 00082E91 0 ZBM 17 DBAFSN1 BSSB 9 File serial number 00160802 0 BASE 18 DBAFSN2 BSS 1 19 * The file serial number is stored in 41 bits. Since system time 20 * values have a 3 or 4 in the high nibble up until 2032 AD, this means 21 * that the stored value lost either a significant 01 (binary) or a 10 22 * from the high end. The highest bit stored is a 1 if the original 23 * nibble was 3, and 0 if it was 4. Thus it is used as a flag to 24 * reconstruct the original 44 bit value. 00082E11 0 ZBM 25 DBAFSN3FLAG EQU DBAFSN1/BIT 23 26 DRCT 00000003 ABS 27 DBDESCLEN EQU DISPW DBAENTRY 28 ORG DBAENTRY 29 * This macro gets the real 44 bit value into two registers 30 * from the 41 bit value in the DBA element pointed to 31 RESTOREFSN MACRO , , 32 LD $(2) $(1),DBAFSN1 33 LD $(3) $(1),DBAFSN3FLAG 34 RSB $(3) 4 35 ST $(3) $(2)/BITS 19:23 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 9 (DEFS) F 14 Variable Definitions 36 LD $(3) $(1),DBAFSN2 37 EMAC 38 39 * Format of an IDX node 40 00000400 41 IDXN BASE R0 00160000 0 CACH 42 IDXNBUCKET BSSB 8 The bucket number of this IDX 00081010 0 ZBM 43 IDXNFAKE BSSB 1 The Hypothetical flag 44 BSSB WORDLNTH-ADDRESS-DISPB IDXNBUCKET 00081F10 0 ZBM 45 IDXNNEXT BSSB ADDRESS Pointer to next IDX node 00160801 0 BASE 46 IDXNDA BSS 1 The disk address of this IDX block 000800F2 0 ZBM 47 IDXNDIRCNT BSSB WORDLNTH-ADDRESS How many entries in DIRLIST 00081F12 0 ZBM 48 IDXNDIRLIST BSSB ADDRESS List of IDX entries 49 DRCT 00000003 ABS 50 IDXNLEN EQU DISPW IDXN 51 ORG IDXN 52 53 54 * Format of a Directory Thing node 55 00000400 56 DIRN BASE R0 000800B0 0 ZBM 57 DIRNACCT BSSB ACCTIBITS The ACCTTABLE index 00081610 0 ZBM 58 DIRNFAKE BSSB 1 The Hypothetical flag 59 BSSB WORDLNTH-ADDRESS-DISPB DIRNACCT 00081F10 0 ZBM 60 DIRNNEXT BSSB ADDRESS Pointer to next DIR node 00160801 0 BASE 61 DIRNDA BSS 1 Disk address of the directory 00160802 0 BASE 62 DIRNASLDA BSS 1 Disk address of the share list 00160803 0 BASE 63 DIRNAUTHDA BSS 1 Disk address of an authorization list 00160804 0 BASE 64 DIRNFILCNT BSS 1 Number of files attributed to this account 00160805 0 BASE 65 DIRNFAKECNT BSS 1 Number of FDEs that have been invented 00160806 0 BASE 66 DIRNU2LIST BSS 1 List of UDIR2 nodes 67 DRCT 00000007 ABS 68 DIRNLEN EQU DISPW DIRN 69 ORG DIRN 70 71 72 * Format of a UDIR2 node 73 00000400 74 DIR2N BASE R0 75 BSSB WORDLNTH-ADDRESS 00081F10 0 ZBM 76 DIR2NNEXT BSSB ADDRESS Next UDIR2 node for the account 00160801 0 BASE 77 DIR2NNAME BSS 2 Name from first FDE in this UDIR2 00160803 0 BASE 78 DIR2NEXT BSS 1 Extension from first FDE 00160804 0 BASE 79 DIR2NDA BSS 1 Disk address of this UDIR2 00160805 0 BASE 80 DIR2NFILCNT BSS 1 81 DRCT 00000006 ABS 82 DIR2NLEN EQU DISPW DIR2N 83 ORG DIR2N 84 00003000 ABS 85 PROGPLACE EQU 03000 00000004 ABS 86 PROGPAGES EQU 4 How many pages we need for code (will 87 be caught if it's too small) 00004000 ABS 88 VARPLACE EQU PROGPLACE+(PROGPAGES*WPP) 89 90 INITPSECT PROGPLACE,VARPLACE,VARIABLES 91 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 10 (DEFS) F 14 Variable Definitions 92 93 ********************************************************************************** 94 * * 95 * Global Variables * 96 * * 97 ********************************************************************************** 98 99 * All variables in the program which must be page-aligned must be 100 * defined here. 00000010 ABS 101 PNDBDESC EQU (DISPW MA 0)/WPP 00004000 102 DBDESCWNDO BSS WPP*2 The page used to access a DBA element 00004800 103 READPLACE BSS WPP Generic area for reading the disk 00004C00 104 DIR1PLACE BSS WPP 00005000 105 DIR2PLACE BSS WPP 00005400 106 MINPLACE BSS WPP Page for a minor access block 00005800 107 MAJPLACE BSS WPP Page for a major access block 00005C00 108 SECPLACE BSS WPP Page for a security block 00006000 109 FREEPLACE BSS WPP Page for a free block 110 00000400 ABS 111 MAXACCTS EQU 1024 00006400 112 ACCTNAMES BSS MAXACCTS*3 113 00007000 114 PFREADPLACE BSS 1 The VREAD address for READPLACE 00007001 115 READFBI BSS FBILNTH The FBI associated with READPLACE 116 0000700C 117 PFDIR1PLACE BSS 1 Address for UDIR1PLACE 0000700D 118 DIR1FBI BSS FBILNTH FBI for UDIR1PLACE 119 00007018 120 PFDIR2PLACE BSS 1 Address for UDIR2PLACE 00007019 121 DIR2FBI BSS FBILNTH FBI for UDIR2PLACE 122 00007024 123 PFMINPLACE BSS 1 Address for MINPLACE 00007025 124 MINFBI BSS FBILNTH FBI for MINPLACE 125 00007030 126 PFMAJPLACE BSS 1 Address for MAJPLACE 00007031 127 MAJFBI BSS FBILNTH FBI for MAJPLACE 128 0000703C 129 PFSECPLACE BSS 1 Address for SECPLACE 0000703D 130 SECFBI BSS FBILNTH FBI for SECPLACE 131 00007048 132 PFFREEPLACE BSS 1 Address for FREEPLACE 00007049 133 FREEFBI BSS FBILNTH FBI for FREEPLACE 134 00007054 135 DISKNAME BSS 1 PAK6 name of the target drive 00007055 136 DISKCB BSS DCBLEN 0000705D 137 OUTBUF BSS 25 line output buffer 00000084 ABS 138 LINEBUFFLEN EQU 132 00007076 139 LINEBUFFER BSS 0 02007076 140 LINEBUFFERC BSSC LINEBUFFLEN 00007097 141 OFFLINE BSS 1 sez 1 if offline, 0 if online 142 00007098 143 VOLNORAFTYP BSS 1 1 sez volume is old format (RAFs 144 are small or large only) 00007099 145 SECDA BSS 2 Disk address of security blocks 0000709B 146 IDXBUCKETS BSS 1 number of IDX buckets 0000709C 147 IDXNLIST BSS 1 Pointer to IDX nodes 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 11 (DEFS) F 14 Variable Definitions 0000709D 148 ACCTCOUNT BSS 1 count of accounts in ACCTNAMES table 149 0000709E 150 RUNDATE BSS 1 0000709F 151 NEXTSERNUM BSS 2 Serial number to use for invented structures 152 153 * This temporary buffer is for use in calling PREPOUT to print 154 * filenames 155 000070A1 156 PACCTNAME BSS 3 157 158 CLEAR MACRO BufferName,Value,FBIType (CLEAR MAJ,0,FBITLRAF) 159 LEA R0 $(1)PLACE 160 LD R1 CPP 161 FILLI R0 R1 $(2) 162 LEA R0 $(1)FBI 163 LD R1 FBILNTH*CPW 164 FILLI R0 R1 0 165 LEA R0 $(1)FBI 166 LD R1 $(3) 167 ST R1 R0,FBITYPE 168 LD R1 RUNDATE 169 ST R1 R0,FBILCD 170 EMAC 171 WRITEBLK MACRO DA,PREFIX,ERRORLOC 172 BLOCK 173 CMZ $(1) 174 JGT DAOK 175 HALT 42 176 DAOK CALL @VWRITE 177 PARV $(1) 178 PARV PF$(2)PLACE 179 PAR $(2)FBI 180 PARL $(3) 181 END 182 EMAC 56 INPUT MAIN 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 12 (MAIN) F 15 Mainline 3 4 PROG 03000 FE0E3005 5 JMP OPLSTART ensure that start at 3000 works 6 * --- 03001 41393230 7 VERSION TEXTZ "A9208" 8 9 ********************************************************************************** 10 * * 11 * We start here if running under ONPL (online). We must be * 12 * sure we have exclusive use of the disk if we are to actually * 13 * rebuild it. * 14 * * 15 ********************************************************************************** 16 00003003 17 ONPLSTART LABEL 03003 EC007097 18 STZ OFFLINE say we are running under ONPL 03004 FE0E3006 19 JMP ONPLMERGE and merge in with OPL code 20 * --- 21 22 ********************************************************************************** 23 * * 24 * Start from OPL. We ask the operator who to rebuild and then * 25 * do it. We set the OFFLINE flag since we do a couple of illegal * 26 * online instructions (PFRD) that must be skipped. * 27 * * 28 ********************************************************************************** 29 00003005 30 OPLSTART LABEL 03005 EDC07097 31 STW OFFLINE say we are running under OPL 00003006 32 ONPLMERGE LABEL 03006 DC5013FB @ 33 CALLNP @VGETDATE get the current time and date 03007 E680709F 23 34 ST2 R2 NEXTSERNUM 03008 600AA800 0 2 CBM 35 LD R0 R2/BITS 20:19 want the 32-bit version 03009 604AC140 1 3 CBM 36 LD R1 R3/BITS 0:19 0300A E44A1940 1 0 CBM 37 ST R1 R0/BITS 12:31 0300B E400709E 0 38 ST R0 RUNDATE and presto, the current date 39 40 * Identify ourselves 41 0300C DC5013E3 @ 42 CALLNP @VDISPLAY 0300D 5049494E 43 ASCII 2,PIINTHES 0300F 0B190000 44 VFD "KY " AND 03F3F0000 45 46 * Get parameters and open the disk 03010 DC403033 47 CALLNP GETPARAMS 48 03011 DC4039E7 49 CALLNP MEMINIT 03012 DC4039C1 50 CALLNP FSINIT 03013 DC003A69 51 CALL DBAINIT 03014 4040705A 52 PARVL DISKCB/DCBVOLSIZE 03015 FE0E3031 53 JMP INITERR 54 55 * Make up all of the buffer addressing parameters that 56 * we hand to VREAD. 57 03016 DC003C1F 58 CALL MKREADPARM 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 13 (MAIN) F 15 Mainline 03017 41004800 59 PAR READPLACE 03018 40007000 60 PARL PFREADPLACE 03019 DC003C1F 61 CALL MKREADPARM 0301A 41004C00 62 PAR DIR1PLACE 0301B 4000700C 63 PARL PFDIR1PLACE 0301C DC003C1F 64 CALL MKREADPARM 0301D 41005000 65 PAR DIR2PLACE 0301E 40007018 66 PARL PFDIR2PLACE 0301F DC003C1F 67 CALL MKREADPARM 03020 41005400 68 PAR MINPLACE 03021 40007024 69 PARL PFMINPLACE 03022 DC003C1F 70 CALL MKREADPARM 03023 41005800 71 PAR MAJPLACE 03024 40007030 72 PARL PFMAJPLACE 03025 DC003C1F 73 CALL MKREADPARM 03026 41005C00 74 PAR SECPLACE 03027 4000703C 75 PARL PFSECPLACE 03028 DC003C1F 76 CALL MKREADPARM 03029 41006000 77 PAR FREEPLACE 0302A 40007048 78 PARL PFFREEPLACE 79 80 * Okay, here we do some real work 81 0302B DC4031BE 82 CALLNP SCANVOLUME read entire volume 0302C DC40325F 83 CALLNP BUILDTREE now build structure 0302D DC4033F1 84 CALLNP VERIFYFILES check that everything fits 0302E DC40389A 85 CALLNP WRITEIDX 0302F DC4038DB 86 CALLNP WRITEADT 87 00003030 88 ENDPROGRAM LABEL 03030 5C8013F0 89 LDPC VDONEEXIT 90 * --- 91 00003031 92 INITERR LABEL 03031 00000000 93 HALT 0 94 * --- 00003032 95 ALONEBADF LABEL 03032 00000000 96 HALT 0 97 * --- 98 57 INPUT GETPARAMS 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 14 (GETPARAMS) F 16 Parameter line parsing 3 4 BLOCK 5 ENTRY GETPARAMS 6 7 BEGFRAME 00178801 6 BASE 8 SAVER1 BSS 1 9 ENDFRAME 10 03033 DD5F8002 6 STAK 11 GETPARAMS ENTRNP PUSH 03034 DC1013F9 @ 12 CALL @VPREPOUT output the header messages 03035 41003001 13 PAR VERSION version of program 03036 40003063 14 PARL HELLOMSG pointer to header message 15 03037 EE007099 16 STZ2 SECDA clear out security block addresses 03038 EC00709B 17 STZ IDXBUCKETS clear count of buckets 03039 EC00709C 18 STZ IDXNLIST clear IDX node list pointer 0303A EC00709D 19 STZ ACCTCOUNT clear entry count for ACCTNAMES table 20 0000303B 21 MAIN1 LABEL 0303B DC5013F5 @ 22 CALLNP @VFETCHITEM get name of source disk 0303C F2783073 1 23 JBF R1/BIT 28 MAIN3 Skip if something was found 24 25 * The user didn't supply any parameters. Prompt for them. 26 0303D DC1013F9 @ 27 CALL @VPREPOUT 0303E 400031BD 28 PARL BLANKFMT 0303F DC1013F9 @ 29 CALL @VPREPOUT 03040 41003136 30 PAR INSTR1 03041 400031BB 31 PARL INSTRFMT1 03042 DC1013F9 @ 32 CALL @VPREPOUT 03043 41003148 33 PAR INSTR2 03044 400031BB 34 PARL INSTRFMT1 03045 DC1013F9 @ 35 CALL @VPREPOUT 03046 4100315A 36 PAR INSTR3 03047 400031BB 37 PARL INSTRFMT1 03048 DC1013F9 @ 38 CALL @VPREPOUT 03049 41003163 39 PAR INSTR4 0304A 400031BB 40 PARL INSTRFMT1 0304B DC1013F9 @ 41 CALL @VPREPOUT 0304C 41003175 42 PAR INSTR5 0304D 400031BB 43 PARL INSTRFMT1 0304E DC1013F9 @ 44 CALL @VPREPOUT 0304F 41003186 45 PAR INSTR6 03050 400031BB 46 PARL INSTRFMT1 03051 DC1013F9 @ 47 CALL @VPREPOUT 03052 41003198 48 PAR INSTR7 03053 400031BB 49 PARL INSTRFMT1 03054 DC1013F9 @ 50 CALL @VPREPOUT 03055 410031AB 51 PAR INSTR8 03056 400031BB 52 PARL INSTRFMT1 03057 DC1013F9 @ 53 CALL @VPREPOUT 03058 400031BD 54 PARL BLANKFMT 00003059 55 MAIN2 LABEL 03059 DC1013F9 @ 56 CALL @VPREPOUT Prompt 0305A 40003068 57 PARL PROMPT 58 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 15 (GETPARAMS) F 16 Parameter line parsing 59 * Fetch stuff from the console 60 0305B 60440084 1 IMM 61 LD R1 LINEBUFFLEN Buffer length 0305C 38807076 2 62 LEA R2 LINEBUFFER Start of the thing 0305D DC5013F3 @ 63 CALLNP @VREADLINE Read a line 0305E 30440084 1 IMM 64 RSB R1 LINEBUFFLEN See what's left 0305F FA4A3059 1 65 JLEZ R1 MAIN2 Ask again if we didn't get anything 66 67 * We got something. Terminate the buffer and take it from the top 68 03060 EC323072 1 @ 69 STZ @LINEBUFFP(R1) 03061 39007076 4 70 LEA R4 LINEBUFFER For FETCHITEM 03062 FE0E303B 71 JMP MAIN1 Try again 72 * --- 73 03063 20504945 74 HELLOMSG TEXTZ " PIE Version \C1\." 03068 2A456E74 75 PROMPT TEXTZ "*Enter name of disk to reconstruct: " 03072 020C7076 76 LINEBUFFP PTR LINEBUFFERC 77 00003073 78 MAIN3 LABEL 03073 F27C310E 1 79 JBF R1/BIT 30 PARMERROR jump if didn't get symbol 03074 FACC3032 3 80 JNEZ R3 ALONEBADF only a 6 char symbol is allowed 03075 E4807054 2 81 ST R2 DISKNAME save it 82 03076 60007054 0 83 LD R0 DISKNAME R0 = disk name 03077 60440000 1 IMM 84 LD R1 0 indicate we are using system's subs area 03078 61047055 4 IMM 85 LD R4 ADR DISKCB R4 -> our disk control block 03079 DC5013EB @ 86 CALLNP @VOPENDISK open the disk 0307A FA0230F6 0 87 JEQZ R0 SHARE jump if successful 0307B DC003C10 88 CALL FINDTEXTZ find right error message 0307C 41520000 0 REG 89 PARV R0 0307D 40003085 90 PARL OPENERRTAB 0307E 60520000 1 0 REG 91 LD R1 R0 R1 -> error message 0307F DC1013F9 @ 92 CALL @VPREPOUT tell user about our troubles 03080 41007054 93 PAR DISKNAME 03081 40164400 1 @R 94 PARL @R1 03082 DC003C2A 95 CALL FATALERROR 03083 4147FFFF IMM 96 PARV -1 03084 40040000 IMM 97 PARL 0 98 * --- 99 00003085 100 OPENERRTAB LABEL errors from OPENDISK 03085 20457272 101 TEXTZ " Error code zero." 0308A 20496E76 102 TEXTZ " Invalid disk name, \R1\." 03091 205C5231 103 TEXTZ " \R1\ is not a disk." 03097 20446973 104 TEXTZ " Disk \R1\ is not online." 0309E 20457272 105 TEXTZ " Error reading pack label on \R1\." 030A7 20457272 106 TEXTZ " Error reading volume label on \R1\." 030B1 20457272 107 TEXTZ " Error reading substitution block on \R1\." 030BC 20496E73 108 TEXTZ " Insufficient memory for substitution list for \R1\." 030CA 20496E74 109 TEXTZ " Internal error attempting to mount \R1\." 030D5 20536F6D 110 TEXTZ " Someone else already has \R1\ maintenance mounted." 030E2 205C5231 111 TEXTZ " \R1\ is writeprotected." 030E9 20496E73 112 TEXTZ " Insufficient system resources to mount \R1\." 030F5 00000000 113 VFD 0 114 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 16 (GETPARAMS) F 16 Parameter line parsing 000030F6 115 SHARE LABEL 030F6 E4578801 1 6 BASE 116 ST R1 SP,SAVER1 save R1 030F7 5C007097 117 CMZ OFFLINE see if we need exclusive disk access 030F8 FE0C3100 118 JNE ASK if not then go announce ourself 119 * \ / 030F9 60578801 1 6 BASE 120 LD R1 SP,SAVER1 030FA 5C124000 1 REG 121 CMZ R1 do we have exclusive access? 030FB FE023100 122 JEQ ASK if so then go announce ourself 123 * \ / 030FC DC1013F9 @ 124 CALL @VPREPOUT tell user he can't mess with the DISK 030FD 41007054 125 PAR DISKNAME the disk 030FE 4000312A 126 PARL BUSYDSKM what to say 030FF FE0E3030 127 JMP ENDPROGRAM 128 * --- 129 00003100 130 ASK LABEL 03100 DC1013F9 @ 131 CALL @VPREPOUT Ask if we really should do it 03101 41007054 132 PAR DISKNAME 03102 4000311F 133 PARL VERIFYMSG 03103 DC5013F1 @ 134 CALLNP @VREADCHAR read the answer 03104 60520000 1 0 REG 135 LD R1 R0 save it in R1 03105 6004000D 0 IMM 136 LD R0 00D 03106 DC5013F2 @ 137 CALLNP @VWRITECHAR echo a CR 03107 6004000A 0 IMM 138 LD R0 00A 03108 DC5013F2 @ 139 CALLNP @VWRITECHAR echo a LF 03109 28440020 1 IMM 140 BSUB R1 020 convert response to upper case 0310A 64440059 1 IMM 141 CPR R1 "Y" verify a "Y" 0310B FE02310D 142 JEQ DONE "YES" answer, done with GETPARAMS 0310C 5C8013F0 143 LDPC VDONEEXIT Return to OPL 144 * --- 145 0000310D 146 DONE LABEL 0310D 5D1F8002 6 STAK 147 LEAVE POP 148 * --- 149 0000310E 150 PARMERROR LABEL 0310E DC1013F9 @ 151 CALL @VPREPOUT 0310F 40003111 152 PARL FORMATMSG 03110 FE0E3059 153 JMP MAIN2 154 * --- 155 03111 20506C65 156 FORMATMSG TEXTZ " Please enter the hardware name of the disk (DSKscu)" 0311F 2A526563 157 VERIFYMSG TEXTZ "*Reconstruct disk \R1\. Proceed? [Y|N] " 0312A 20074469 158 BUSYDSKM TEXTZ " Disk \R1\ already mounted. Cannot change it." 159 03136 20202020 160 INSTR1 TEXTZ " PieInTheSky will reconstruct a volume which is missing some file" 03148 626C6F63 161 INSTR2 TEXTZ "blocks, leaving it consistent but possibly (almost certainly) missing" 0315A 6163636F 162 INSTR3 TEXTZ "accounts, files, or file blocks." 03163 20202020 163 INSTR4 TEXTZ " While it runs, it will inform you of the names of files which lost" 03175 64617461 164 INSTR5 TEXTZ "data, or files whose directory entry it deleted because there was" 03186 696E7375 165 INSTR6 TEXTZ "insufficient information with which to build a valid file structure." 03198 20202020 166 INSTR7 TEXTZ " It will also give messages stating that SAF fragments are recoverable." 031AB 54686973 167 INSTR8 TEXTZ "This recovery is done by an online program, .!!!Fs:SafRecover." 031BB 205C4331 168 INSTRFMT1 TEXTZ " \C1\" 031BD 20000000 169 BLANKFMT TEXTZ " " 170 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 17 (GETPARAMS) F 16 Parameter line parsing 171 END GETPARAMS 58 INPUT SCANVOLUME 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 18 (SCANVOLUME) F 17 Volume Scanner 3 4 BLOCK 5 ENTRY SCANVOLUME 6 7 ********************************************************************************** 8 * * 9 * This procedure reads the disk from beginning to end and * 10 * sets the corresponding Disk Block Array element appropriately * 11 * for the block seen. Blocks identified in the Bad Tracks List, * 12 * and the 'good' block of a substitution pair (which cause a * 13 * FBI check error when read directly), are marked accounted for * 14 * so that they are not included in the ADT at the end of the program. * 15 * * 16 ********************************************************************************** 17 18 SCANVOLUME BLOCK 19 ENTRY SCANVOLUME 20 21 BEGFRAME 00178801 6 BASE 22 BLOCKNUMBER BSS 1 The current block number 00178802 6 BASE 23 DBAPTR BSS 1 24 ENDFRAME 25 031BE DD5F8003 6 STAK 26 SCANVOLUME ENTRNP PUSH 031BF DC403211 27 CALLNP GETVOLREV get the volume format revision 031C0 DC4031F7 28 CALLNP DOBADBLOCKS load in the bad trax info 031C1 EDD78801 6 BASE 29 STW SP,BLOCKNUMBER indicate starting place 000031C2 30 BLOCKLOOP LABEL 031C2 60D78801 3 6 BASE 31 LD R3 SP,BLOCKNUMBER pick up current block number 031C3 DC003ADC 32 CALL DBAACCESS Get the descriptor for this block 031C4 4052C000 3 REG 33 PARVL R3 031C5 5C081610 0 ZBM 34 CMZ R0,DBASEEN Skip bad blocks 031C6 FE0C31DF 35 JNE NEXT 031C7 E4178802 0 6 BASE 36 ST R0 SP,DBAPTR save ptr to DBA entry 031C8 DC1013E0 @ 37 CALL @VREAD 031C9 4152C000 3 REG 38 PARV R3 Disk address 031CA 41407000 39 PARV PFREADPLACE Data location (description of) 031CB 41007001 40 PAR READFBI FBI location 031CC 41440000 IMM 41 PARV 0 FBI type (any) 031CD 400031E7 42 PARL READERROR 031CE 60178802 0 6 BASE 43 LD R0 SP,DBAPTR 031CF EC081610 0 ZBM 44 STZ R0,DBASEEN Block has not been accounted for 031D0 38C07001 3 45 LEA R3 READFBI 031D1 6048C080 1 3 ZBM 46 LD R1 R3,FBITYPE Save block type 031D2 E4482451 1 0 ZBM 47 ST R1 R0,DBAFBITYPE Make sure the rest is zero for a 031D3 6444007F 1 IMM 48 CPR R1 FBITFREE free block 031D4 FE0231DF 49 JEQ NEXT 031D5 6256C808 123 BASE 50 LD2 R1 R3,FBISERNO Save file serial number 031D6 E4482E91 1 0 ZBM 51 ST R1 R0,DBAFSN1 (must be done this way because 031D7 E4960802 2 0 BASE 52 ST R2 R0,DBAFSN2 bit field > 32 bits) 031D8 6048D184 1 3 ZBM 53 LD R1 R3,FBIRELBLK Save relative block number 031D9 E4480121 1 0 ZBM 54 ST R1 R0,DBARELBLK 031DA 60920000 2 0 REG 55 LD R2 R0 Save pointer to DBA entry 031DB DC003A38 56 CALL ACCTADD put the account in the table 031DC 4356C805 3 BASE 57 PARV2 R3,FBIACCT 031DD 4056C807 3 BASE 58 PARVL R3,FBIPROJ 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 19 (SCANVOLUME) F 17 Volume Scanner 031DE E40880B0 0 2 ZBM 59 ST R0 R2,DBAACCT and put account index into block info 000031DF 60 NEXT LABEL 031DF BCD78801 3 6 BASE 61 INCL R3 SP,BLOCKNUMBER Get next block number 031E0 64C0705A 3 62 CPR R3 DISKCB/DCBVOLSIZE Have we done the whole volume? 031E1 FE0831C2 63 JLT BLOCKLOOP No, continue 64 * \ / 65 66 * Now we want to decide how many IDX buckets we'll have 67 031E2 6000709D 0 68 LD R0 ACCTCOUNT 031E3 180400CC 0 IMM 69 ADD R0 IDXECNT 031E4 140400A3 0 IMM 70 DIV R0 (IDXECNT*80)/100 031E5 E400709B 0 71 ST R0 IDXBUCKETS 72 031E6 5D1F8003 6 STAK 73 LEAVE POP 74 * --- 75 76 ********************************************************************************** 77 * If the error is an FBIDA mismatch, it may just be a * 78 * substitute block. If the current address appears in the * 79 * substitution list as a substitute, we mark the current address * 80 * off limits, because it contains the real data for the * 81 * substituted block. * 82 * For any other error, we treat the block as free. * 83 * (Actually, we flag it as a swapping block. It will then be * 84 * freed by BUILDTREE.) * 85 ********************************************************************************** 86 000031E7 87 READERROR LABEL 031E7 64040002 0 IMM 88 CPR R0 ECFBI Is it an FBI error? 031E8 FE0C31F2 89 JNE MAKEITFREE 031E9 60570804 1 4 BASE 90 LD R1 R4,DCBSUBLIST 031EA 60178801 0 6 BASE 91 LD R0 SP,BLOCKNUMBER 031EB 3C164802 0 1 BASE 92 LSRCH R0 R1,2 Is the current block a substitute? 031EC FE0C31F2 93 JNE MAKEITFREE 031ED DC003ADC 94 CALL DBAACCESS Yes, mark it accounted for 031EE 40520000 0 REG 95 PARVL R0 031EF EDC81610 0 ZBM 96 STW R0,DBASEEN 031F0 EC082451 0 ZBM 97 STZ R0,DBAFBITYPE 031F1 FE0E31DF 98 JMP NEXT 99 * --- 000031F2 100 MAKEITFREE LABEL Some other kind of error -- free the block 031F2 DC003ADC 101 CALL DBAACCESS 031F3 40520000 0 REG 102 PARVL R0 031F4 6044000B 1 IMM 103 LD R1 FBITSYS 031F5 E4482451 1 0 ZBM 104 ST R1 R0,DBAFBITYPE 031F6 FE0E31DF 105 JMP NEXT 106 * --- 107 108 END SCANVOLUME 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 20 (SCANVOLUME) F 17 Volume Scanner 110 111 DOBADBLOCKS BLOCK 112 ENTRY DOBADBLOCKS 113 114 ********************************************************************************** 115 * This procedure reads the bad tracks list and marks each * 116 * bad block on the volume accounted for in the Disk Block Array. * 117 ********************************************************************************** 118 119 BEGFRAME 120 ENDFRAME 121 031F7 DD5F8001 6 STAK 122 DOBADBLOCKS ENTRNP PUSH 031F8 DC1013E0 @ 123 CALL @VREAD Read the pack label 031F9 41440000 IMM 124 PARV 0 031FA 41407000 125 PARV PFREADPLACE 031FB 41007001 126 PAR READFBI 031FC 41440000 IMM 127 PARV 0 031FD 40003210 128 PARL READERROR 031FE DC1013E0 @ 129 CALL @VREAD Read the bad tracks list 031FF 41404818 130 PARV READPLACE/PLBDTRXDA 03200 41407000 131 PARV PFREADPLACE 03201 41007001 132 PAR READFBI 03202 41440002 IMM 133 PARV FBITBTRX 03203 40003210 134 PARL READERROR 03204 38C04800 3 135 LEA R3 READPLACE point to start of table 00003205 136 BADLOOP LABEL 03205 6008D180 0 3 ZBM 137 LD R0 R3,BTRXEL/MSBLKFIELD pick up next bad block number 03206 FA02320F 0 138 JEQZ R0 DONE zero sez done 03207 DC003ADC 139 CALL DBAACCESS map in DBA entry 03208 40520000 0 REG 140 PARVL R0 03209 EDC81610 0 ZBM 141 STW R0,DBASEEN mark block as already seen 0320A 6044007E 1 IMM 142 LD R1 FBITESTB 0320B E4482451 1 0 ZBM 143 ST R1 R0,DBAFBITYPE 0320C 18C40002 3 IMM 144 ADD R3 BTRXLNTH advance to next BTRX entry 0320D 64C44C00 3 IMM 145 CPR R3 ADR(READPLACE(WPP)) 0320E FE083205 146 JLT BADLOOP 147 * \ / 0000320F 148 DONE LABEL 0320F 5D1F8001 6 STAK 149 LEAVE POP 150 * --- 00003210 151 READERROR LABEL 03210 00000057 152 HALT 87 153 * --- 154 155 END DOBADBLOCKS 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 21 (SCANVOLUME) F 17 Volume Scanner 157 158 GETVOLREV BLOCK 159 ENTRY GETVOLREV 160 161 ********************************************************************************** 162 * Get the volume label and learn something about the volume. * 163 ********************************************************************************** 164 165 BEGFRAME 166 ENDFRAME 167 03211 DD5F8001 6 STAK 168 GETVOLREV ENTRNP PUSH 03212 DC1013E0 @ 169 CALL @VREAD Read the volume label 03213 41440001 IMM 170 PARV VOLLABELDA 03214 41407000 171 PARV PFREADPLACE 03215 41007001 172 PAR READFBI 03216 41440004 IMM 173 PARV FBITVL 03217 4000321C 174 PARL READERROR 03218 6000480D 0 175 LD R0 READPLACE/VLVREV get pack revision format 03219 78022000 0 IMM 176 AND R0 REVVOLLRAF isolate the bit which says 0321A E4007098 0 177 ST R0 VOLNORAFTYP whether this volume has 0321A E4007098 0 178 two or four kinds of RAFs 0321B 5D1F8001 6 STAK 179 LEAVE POP 180 * --- 181 0000321C 182 READERROR LABEL 0321C 00000058 183 HALT 88 184 185 END GETVOLREV 186 187 END 59 INPUT TREEOPS 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 22 (TREEOPS) F 18 Tree operations 3 4 TREEOPS BLOCK 5 6 ********************************************************************************** 7 * This module is responsible for all operations on the * 8 * internal volume-analog tree. There is one major routine to * 9 * build the tree, and various utility entrypoints to find various * 10 * types of nodes. * 11 ********************************************************************************** 12 13 ENTRY FINDIDX 14 ENTRY FINDDIR 15 ENTRY BUILDTREE 16 17 VARS 000070A4 18 BLOCKNUM BSS 1 Block counter during DBA scanning 19 20 PROG 21 22 FINDIDX BLOCK 23 ENTRY FINDIDX 24 25 ********************************************************************************** 26 * This routine will find and return a pointer to the node * 27 * corresponding to the appropriate IDX block, given an account * 28 * table index. If it did not exist, it is created with no notice * 29 * to the caller. * 30 ********************************************************************************** 31 32 BEGFRAME 00178801 6 BASE 33 ACCTINDEX BSS 1 The index of the target account 34 in the ACCTTABLE 00178802 6 BASE 35 DA BSS 1 The disk address of the IDX block 36 (may be zero if not known) 00178803 6 BASE 37 BUCKETNUM BSS 1 The IDX bucket number 38 ENDFRAME 39 0321D DD1F8004 6 STAK 40 FINDIDX ENTR PUSH 0321E C1578801 6 BASE 41 STPV SP,ACCTINDEX 0321F C0578802 6 BASE 42 STPVL SP,DA 03220 60178801 0 6 BASE 43 LD R0 SP,ACCTINDEX 03221 DC003A5F 44 CALL ACCTFIND 03222 40520000 0 REG 45 PARVL R0 46 * Find which IDX bucket to use 03223 744A1000 1 0 CBM 47 XOR R1 R0/BITS 8:7 03224 744AA000 1 2 CBM 48 XOR R1 R2/BITS 16:15 03225 EC120000 0 REG 49 STZ R0 03226 58C40010 IMM 50 IORPSR PSRMODIF 03227 1400709B 0 51 DIV R0 IDXBUCKETS 03228 58840010 IMM 52 CLBPSR PSRMODIF 03229 6080709C 2 53 LD R2 IDXNLIST See if the bucket exists 0322A 38C0709C 3 54 LEA R3 IDXNLIST 0322B 4C568000 1 2 CACH 55 RLSHLE R1 R2,IDXNBUCKET 0322C FE0C322F 56 JNE NOBUCKET 0322D 60128000 0 2 REG 57 LD R0 R2 Load pointer into return register 0322E FE0E323A 58 JMP DONE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 23 (TREEOPS) F 18 Tree operations 59 * --- 0000322F 60 NOBUCKET LABEL 0322F E4578803 1 6 BASE 61 ST R1 SP,BUCKETNUM Not there, must create it 03230 DC0039C8 62 CALL FSGET Get space for an IDX node 03231 40440003 IMM 63 PARVL IDXNLEN 03232 E4881F10 2 0 ZBM 64 ST R2 R0,IDXNNEXT New.Next <- Found 03233 E408DF10 0 3 ZBM 65 ST R0 R3,IDXNNEXT Prior.Next <- New 03234 60578803 1 6 BASE 66 LD R1 SP,BUCKETNUM Store bucket number 03235 E4560000 1 0 CACH 67 ST R1 R0,IDXNBUCKET 03236 EDC81010 0 ZBM 68 STW R0,IDXNFAKE All IDX nodes start out hypothetical 03237 EC160801 0 BASE 69 STZ R0,IDXNDA 03238 EC0800F2 0 ZBM 70 STZ R0,IDXNDIRCNT No DIR entries yet 03239 EC081F12 0 ZBM 71 STZ R0,IDXNDIRLIST 0000323A 72 DONE LABEL 0323A 5D1F8004 6 STAK 73 LEAVE POP 74 * --- 75 76 END FINDIDX 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 24 (TREEOPS) F 18 Tree operations 78 79 FINDDIR BLOCK 80 ENTRY FINDDIR 81 82 ********************************************************************************** 83 * This routine will find and return a pointer to the node * 84 * corresponding to the Directory Thing belonging to a given * 85 * account. If it did not exist, it is created with no notice to * 86 * the caller. * 87 ********************************************************************************** 88 89 BEGFRAME 00178801 6 BASE 90 ACCTINDEX BSS 1 The index of the target account 91 in the ACCTTABLE 00178802 6 BASE 92 DA BSS 1 The disk address of the directory 93 (may be zero if not known) 00178803 6 BASE 94 IDXNODE BSS 1 Pointer to the proper IDX node 95 ENDFRAME 96 0323B DD1F8004 6 STAK 97 FINDDIR ENTR PUSH 0323C C1578801 6 BASE 98 STPV SP,ACCTINDEX The account we're looking for 0323D C0578802 6 BASE 99 STPVL SP,DA The disk address (if known) 0323E 60178801 0 6 BASE 100 LD R0 SP,ACCTINDEX 0323F DC00321D 101 CALL FINDIDX 03240 41520000 0 REG 102 PARV R0 The account of interest 03241 40440000 IMM 103 PARVL 0 Don't know the IDX address 03242 E4178803 0 6 BASE 104 ST R0 SP,IDXNODE Save pointer to the IDX node 03243 60081F12 0 0 ZBM 105 LD R0 R0,IDXNDIRLIST Look for a DIR node for the 03244 60578801 1 6 BASE 106 LD R1 SP,ACCTINDEX target account 03245 3C4800B0 1 0 ZBM 107 LSRCH R1 R0,DIRNACCT 03246 FE023258 108 JEQ FOUND 03247 DC0039C8 109 CALL FSGET Get space for a DIR node 03248 40440007 IMM 110 PARVL DIRNLEN 03249 60578801 1 6 BASE 111 LD R1 SP,ACCTINDEX Set the account name index 0324A E44800B0 1 0 ZBM 112 ST R1 R0,DIRNACCT 0324B EC160802 0 BASE 113 STZ R0,DIRNASLDA No share list block 0324C EC160806 0 BASE 114 STZ R0,DIRNU2LIST No UDIR2s 0324D 60578803 1 6 BASE 115 LD R1 SP,IDXNODE Retrieve IDX node pointer 0324E D00840F2 1 ZBM 116 INC R1,IDXNDIRCNT One more dir entry 0324F 60920000 2 0 REG 117 LD R2 R0 Get new node pointer 03250 E0885F12 2 1 ZBM 118 EXCH R2 R1,IDXNDIRLIST Put new node at head of list 03251 E4881F10 2 0 ZBM 119 ST R2 R0,DIRNNEXT And place rest of list behind it 03252 60578802 1 6 BASE 120 LD R1 SP,DA Get the disk address 03253 64440000 1 IMM 121 CPR R1 0 Is the address not yet known? 03254 EC481610 0 ZBM 122 STLEQ R0,DIRNFAKE Make node hypothetical if so 03255 E4560801 1 0 BASE 123 ST R1 R0,DIRNDA 03256 EC160804 0 BASE 124 STZ R0,DIRNFILCNT No files seen yet for this account 03257 FE0E325E 125 JMP DONE 126 * --- 00003258 127 FOUND LABEL 03258 5C081610 0 ZBM 128 CMZ R0,DIRNFAKE Is this a hypothetical node? 03259 FE02325E 129 JEQ DONE No, we're done 0325A 60578802 1 6 BASE 130 LD R1 SP,DA Yes, should we make it real? 0325B FA42325E 1 131 JEQZ R1 DONE No 0325C EC081610 0 ZBM 132 STZ R0,DIRNFAKE Yes, make it not hypothetical 0325D E4560801 1 0 BASE 133 ST R1 R0,DIRNDA and remember where it is 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 25 (TREEOPS) F 18 Tree operations 134 * \ / 0000325E 135 DONE LABEL 0325E 5D1F8004 6 STAK 136 LEAVE POP 137 * --- 138 END FINDDIR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 26 (TREEOPS) F 18 Tree operations 140 141 BUILDTREE BLOCK 142 143 ********************************************************************************** 144 * This procedure scans through the disk block array taking * 145 * the appropriate action as dictated by the block type. The * 146 * action may build up the file system tree in memory, free up the * 147 * block (because it is a structure that will be recreated), or * 148 * allocate files to directories. Also, indexed files have their * 149 * indexes verified at this point. * 150 ********************************************************************************** 151 152 ENTRY BUILDTREE 153 154 BEGFRAME 155 ENDFRAME 156 0325F DD5F8001 6 STAK 157 BUILDTREE ENTRNP PUSH 03260 60040002 0 IMM 158 LD R0 2 start after Pack Label and Bootstrap 03261 E40070A4 0 159 ST R0 BLOCKNUM 00003262 160 BLOCKLOOP LABEL 03262 DC003ADC 161 CALL DBAACCESS get access to the DBA entry 03263 40520000 0 REG 162 PARVL R0 03264 60482451 1 0 ZBM 163 LD R1 R0,DBAFBITYPE pick up type of this block 03265 50440016 1 IMM 164 MIN R1 FBITAUTLB+1 03266 5D62326D 1 165 XCT ACTIONS(R1) case by FBI type 03267 BC0070A4 0 166 INCL R0 BLOCKNUM advance to next block 03268 6400705A 0 167 CPR R0 DISKCB/DCBVOLSIZE are we at the volume end 03269 FE083262 168 JLT BLOCKLOOP if not, continue 169 * \ / 0326A 5D1F8001 6 STAK 170 LEAVE POP 171 * ||| patch out above for debug 0326B DC4033B2 172 CALLNP PRINTTREE debugging call 0326C 5D1F8001 6 STAK 173 LEAVE POP 174 * --- 175 0000326D 176 ACTIONS LABEL 0326D FEC00000 177 NOP 0 Type 0 - shouldn't happen 0326D FEC00000 178 (could be a substitute -- see SCANVOLUME) 0326E FEC00000 179 NOP 0 Pack label - shouldn't happen 0326F FEC00000 180 NOP 0 Bad trax - don't touch 03270 FEC00000 181 NOP 0 Boot block - don't touch 03271 FEC00000 182 NOP 0 Volume label - shouldn't happen 03272 FEC00000 183 NOP 0 Substitution list 03273 DC4032B0 184 CALLNP NOTESECBLK Security block 03274 DC403284 185 CALLNP FREEUPBLOCK ADT block 03275 DC403284 186 CALLNP FREEUPBLOCK IDX block 03276 DC403368 187 CALLNP DOUDIR1 UDIR1 block 03277 DC40336E 188 CALLNP DOUDIR2 UDIR2 block 03278 DC403284 189 CALLNP FREEUPBLOCK Swapping block 03279 DC403323 190 CALLNP VERIFYSAF SAF block 0327A DC4032B6 191 CALLNP VERIFYMAJ Major access block 0327B DC4032E2 192 CALLNP VERIFYRAF Minor access block 0327C DC403364 193 CALLNP DODATABLOCK RAF data 0327D DC403284 194 CALLNP FREEUPBLOCK AFT block 0327E DC40329C 195 CALLNP DOASL Account share list 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 27 (TREEOPS) F 18 Tree operations 0327F DC4032A4 196 CALLNP DOFSL File share list 03280 DC4032E9 197 CALLNP VERIFYCODE Code control block 03281 DC403364 198 CALLNP DODATABLOCK Code data 03282 DC4032A8 199 CALLNP DOAUTHLIST Authorization list block 03283 FEC00000 200 NOP 0 free block 201 202 END BUILDTREE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 28 (TREEOPS) F 18 Tree operations 204 205 FREEUPBLOCK BLOCK 206 ENTRY FREEUPBLOCK 207 208 ********************************************************************************** 209 * This procedure changes the FBI type of the current block * 210 * to 'free' and writes out a free block. * 211 ********************************************************************************** 212 213 BEGFRAME 214 ENDFRAME 215 03284 DD5F8001 6 STAK 216 FREEUPBLOCK ENTRNP PUSH 03285 6044007F 1 IMM 217 LD R1 FBITFREE Describe block as free 03286 E4482451 1 0 ZBM 218 ST R1 R0,DBAFBITYPE 03287 EDC81610 0 ZBM 219 STW R0,DBASEEN and accounted for 220 CLEAR READ,0FF,FBITFREE 03293 38007001 0 221 LEA R0 READFBI 03294 604070A4 1 222 LD R1 BLOCKNUM Set disk address 03295 E4481181 1 0 ZBM 223 ST R1 R0,FBIDA 03296 DC1013E1 @ 224 CALL @VWRITE and write it out 03297 414070A4 225 PARV BLOCKNUM 03298 41407000 226 PARV PFREADPLACE 03299 41007001 227 PAR READFBI 0329A 400033F0 228 PARL WRITEERROR 0329B 5D1F8001 6 STAK 229 LEAVE POP 230 * --- 231 232 END FREEUPBLOCK 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 29 (TREEOPS) F 18 Tree operations 234 235 DOASL BLOCK 236 ENTRY DOASL 237 238 ********************************************************************************** 239 * Handle Account Share List * 240 ********************************************************************************** 241 242 BEGFRAME 243 ENDFRAME 244 0329C DD5F8001 6 STAK 245 DOASL ENTRNP PUSH 0329D EDC81610 0 ZBM 246 STW R0,DBASEEN Block is accounted for 0329E DC00323B 247 CALL FINDDIR Get DIR pointer 0329F 414800B0 0 ZBM 248 PARV R0,DBAACCT 032A0 40440000 IMM 249 PARVL 0 032A1 604070A4 1 250 LD R1 BLOCKNUM Store share list disk address 032A2 E4560802 1 0 BASE 251 ST R1 R0,DIRNASLDA 032A3 5D1F8001 6 STAK 252 LEAVE POP 253 * --- 254 END DOASL 255 256 DOFSL BLOCK 257 ENTRY DOFSL 258 259 ********************************************************************************** 260 * Handle File Share List * 261 ********************************************************************************** 262 263 BEGFRAME 264 ENDFRAME 265 032A4 DD5F8001 6 STAK 266 DOFSL ENTRNP PUSH 032A5 DC00339E 267 CALL FILEINDIR Ensure file is counted in proper dir 032A6 40520000 0 REG 268 PARVL R0 032A7 5D1F8001 6 STAK 269 LEAVE POP 270 * --- 271 END DOFSL 272 273 DOAUTHLIST BLOCK 274 ENTRY DOAUTHLIST 275 276 ********************************************************************************** 277 * Handle Auth List * 278 ********************************************************************************** 279 280 BEGFRAME 281 ENDFRAME 282 032A8 DD5F8001 6 STAK 283 DOAUTHLIST ENTRNP PUSH 032A9 EDC81610 0 ZBM 284 STW R0,DBASEEN Block is accounted for 032AA DC00323B 285 CALL FINDDIR Get DIR pointer 032AB 414800B0 0 ZBM 286 PARV R0,DBAACCT 032AC 40440000 IMM 287 PARVL 0 032AD 604070A4 1 288 LD R1 BLOCKNUM Store auth list disk address 032AE E4560803 1 0 BASE 289 ST R1 R0,DIRNAUTHDA 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 30 (TREEOPS) F 18 Tree operations 032AF 5D1F8001 6 STAK 290 LEAVE POP 291 * --- 292 293 END DOAUTHLIST 294 295 NOTESECBLK BLOCK 296 ENTRY NOTESECBLK 297 298 ********************************************************************************** 299 * Handle Security Block * 300 ********************************************************************************** 301 302 BEGFRAME 303 ENDFRAME 304 032B0 DD5F8001 6 STAK 305 NOTESECBLK ENTRNP PUSH 032B1 604070A4 1 306 LD R1 BLOCKNUM Get current block number and 032B2 5C007099 307 CMZ SECDA store in SECDA, or SECDA(1) 032B3 ED920000 0 REG 308 STLNE R0 if this is the second one 032B4 E4607099 1 0 309 ST R1 SECDA(R0) 032B5 5D1F8001 6 STAK 310 LEAVE POP 311 * --- 312 313 END NOTESECBLK 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 31 (TREEOPS) F 18 Tree operations 315 316 VERIFYMAJ BLOCK 317 ENTRY VERIFYMAJ 318 319 ********************************************************************************** 320 * This procedure checks that each block referenced by a * 321 * major access block is indeed a minor access block. Ones that * 322 * are not have the reference removed. Good ones are marked * 323 * accounted for. * 324 ********************************************************************************** 325 326 BEGFRAME 327 ENDFRAME 328 00000010 BYTE 329 MODIFIED EQU BIT 0 330 032B6 DD5F8001 6 STAK 331 VERIFYMAJ ENTRNP PUSH 032B7 DC00339E 332 CALL FILEINDIR Ensure file is counted in proper dir 032B8 40520000 0 REG 333 PARVL R0 032B9 DC1013E0 @ 334 CALL @VREAD 032BA 414070A4 335 PARV BLOCKNUM Disk address 032BB 41407000 336 PARV PFREADPLACE Data location (description of) 032BC 41007001 337 PAR READFBI FBI location 032BD 41440000 IMM 338 PARV 0 FBI type (any) 032BE 400032DA 339 PARL READERROR 032BF 60C403FF 3 IMM 340 LD R3 WPP-1 Initialize block index 032C0 EC0BC010 7 CBM 341 STZ R7/MODIFIED 000032C1 342 LOOP LABEL 032C1 60A64800 2 3 343 LD R2 READPLACE(R3) Get disk address 032C2 FA8232CE 2 344 JEQZ R2 NEXT Continue if a hole 032C3 6880705A 2 345 UCPR R2 DISKCB/DCBVOLSIZE Within range of volume? 032C4 FE0632CA 346 JGE ZAPIT 032C5 DC003ADC 347 CALL DBAACCESS Get description of the referenced block 032C6 40528000 2 REG 348 PARVL R2 032C7 60482451 1 0 ZBM 349 LD R1 R0,DBAFBITYPE Get type of the block 032C8 6444000E 1 IMM 350 CPR R1 FBITSRAF Is it a minor access block? 032C9 FE0232CD 351 JEQ MARKIT Yes, as it should be 000032CA 352 ZAPIT LABEL 032CA EC264800 3 353 STZ READPLACE(R3) 032CB EDCBC010 7 CBM 354 STW R7/MODIFIED 032CC FE0E32CE 355 JMP NEXT 356 * --- 357 000032CD 358 MARKIT LABEL 032CD EDC81610 0 ZBM 359 STW R0,DBASEEN Block is accounted for 360 * \ / 000032CE 361 NEXT LABEL 032CE D052C000 3 REG 362 DEC R3 032CF FE0632C1 363 JGE LOOP 032D0 F3C032D9 7 364 JBF R7/MODIFIED DONE 032D1 DC003ADC 365 CALL DBAACCESS Remember that the file lost data 032D2 404070A4 366 PARVL BLOCKNUM 032D3 EDC81810 0 ZBM 367 STW R0,DBABLKLOST 032D4 DC1013E1 @ 368 CALL @VWRITE 032D5 414070A4 369 PARV BLOCKNUM 032D6 41407000 370 PARV PFREADPLACE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 32 (TREEOPS) F 18 Tree operations 032D7 41007001 371 PAR READFBI 032D8 400033F0 372 PARL WRITEERROR 373 * \ / 000032D9 374 DONE LABEL 032D9 5D1F8001 6 STAK 375 LEAVE POP 376 * --- 377 378 ********************************************************************************** 379 * We were unable to read the major access block. Change the * 380 * current block to free, and let the access block be rebuilt * 381 * later. * 382 ********************************************************************************** 383 000032DA 384 READERROR LABEL 032DA DC003ADC 385 CALL DBAACCESS 032DB 404070A4 386 PARVL BLOCKNUM 032DC 6044007F 1 IMM 387 LD R1 FBITFREE 032DD E4482451 1 0 ZBM 388 ST R1 R0,DBAFBITYPE 032DE EC082E91 0 ZBM 389 STZ R0,DBAFSN1 032DF EC160802 0 BASE 390 STZ R0,DBAFSN2 032E0 EC0800B0 0 ZBM 391 STZ R0,DBAACCT 032E1 FE0E32D9 392 JMP DONE 393 * --- 394 395 END VERIFYMAJ 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 33 (TREEOPS) F 18 Tree operations 397 398 VERIFYRAF BLOCK 399 ENTRY VERIFYRAF 400 ENTRY VERIFYCODE 401 402 ********************************************************************************** 403 * This procedure verifies a minor access block, either for a * 404 * RAF or for a CODE. Each reference is verified to point to the * 405 * proper type of data block. Any reference that does not is * 406 * removed. Ones that do check out are marked accounted for. * 407 ********************************************************************************** 408 409 BEGFRAME 00178801 6 BASE 410 FBITYP BSS 1 00178802 6 BASE 411 TEMP BSS 1 00178803 6 BASE 412 RELBLK BSS 1 A representative relative block number 00178804 6 BASE 413 PUSHMIN BSS 1 CALL link for internal procedure 00178804 6 BASE 414 POPMIN EQU PUSHMIN 415 ENDFRAME 416 00000010 BYTE 417 MODIFIED EQU BIT 0 418 032E2 DD5F8005 6 STAK 419 VERIFYRAF ENTRNP PUSH 032E3 DC00339E 420 CALL FILEINDIR Ensure file is counted in proper dir 032E4 40520000 0 REG 421 PARVL R0 032E5 DC0032F0 422 CALL VERIFYMIN 032E6 41440400 IMM 423 PARV WPP 032E7 4044000F IMM 424 PARVL FBITRAFD 032E8 5D1F8005 6 STAK 425 LEAVE POP 426 * --- 427 032E9 DD5F8005 6 STAK 428 VERIFYCODE ENTRNP PUSH 032EA DC00339E 429 CALL FILEINDIR Ensure file is counted in proper dir 032EB 40520000 0 REG 430 PARVL R0 032EC DC0032F0 431 CALL VERIFYMIN 032ED 414403E8 IMM 432 PARV CCBMAXPAGE 032EE 40440014 IMM 433 PARVL FBITCODED 032EF 5D1F8005 6 STAK 434 LEAVE POP 435 * --- 436 032F0 DD178804 6 BASE 437 VERIFYMIN ENTR SP,PUSHMIN 032F1 C156D001 3 REG 438 STPV R3+1 Number of entries to check, minus 1 032F2 C0578801 6 BASE 439 STPVL SP,FBITYP 032F3 EC178803 6 BASE 440 STZ SP,RELBLK 032F4 E4D78802 3 6 BASE 441 ST R3 SP,TEMP 032F5 DC1013E0 @ 442 CALL @VREAD 032F6 414070A4 443 PARV BLOCKNUM Disk address 032F7 41407000 444 PARV PFREADPLACE Data location (description of) 032F8 41007001 445 PAR READFBI FBI location 032F9 41440000 IMM 446 PARV 0 FBI type (any) 032FA 4000331B 447 PARL READERROR 032FB 60D78802 3 6 BASE 448 LD R3 SP,TEMP 032FC EC0BC010 7 CBM 449 STZ R7/MODIFIED 000032FD 450 LOOP LABEL 032FD 60A64800 2 3 451 LD R2 READPLACE(R3) Get disk address 032FE 608A9180 2 2 CBM 452 LD R2 R2/MSBLKFIELD 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 34 (TREEOPS) F 18 Tree operations 032FF FA82330D 2 453 JEQZ R2 NEXT Continue if a hole 03300 6880705A 2 454 UCPR R2 DISKCB/DCBVOLSIZE Within range of volume? 03301 FE063307 455 JGE ZAPIT 03302 DC003ADC 456 CALL DBAACCESS Get description of the referenced block 03303 40528000 2 REG 457 PARVL R2 03304 60482451 1 0 ZBM 458 LD R1 R0,DBAFBITYPE Get type of the block 03305 64578801 1 6 BASE 459 CPR R1 SP,FBITYP Is it the right type? 03306 FE02330A 460 JEQ MARKIT Yes, as it should be 00003307 461 ZAPIT LABEL 03307 EC264800 3 462 STZ READPLACE(R3) 03308 EDCBC010 7 CBM 463 STW R7/MODIFIED 03309 FE0E330D 464 JMP NEXT 465 * --- 466 0000330A 467 MARKIT LABEL 0330A EDC81610 0 ZBM 468 STW R0,DBASEEN Block is accounted for 0330B 60480121 1 0 ZBM 469 LD R1 R0,DBARELBLK pick up relative block number 0330C E4578803 1 6 BASE 470 ST R1 SP,RELBLK of dependant block 471 * \ / 0000330D 472 NEXT LABEL 0330D D052C000 3 REG 473 DEC R3 move to next entry 0330E FE0632FD 474 JGE LOOP if not done, continue 475 * \ / 0330F DC003ADC 476 CALL DBAACCESS 03310 404070A4 477 PARVL BLOCKNUM 478 * Unfortunately, minor access blocks do not carry RELBLK 479 * information which will be useful later, so we'll save the 480 * relative block number (in the minor block spectrum, i.e., the 481 * data page relblk div 0400) in the DBA 03311 60498163 1 6 ZBM 482 LD R1 SP,RELBLK/BITS 0:21 03312 E4480121 1 0 ZBM 483 ST R1 R0,DBARELBLK 03313 F3C0331A 7 484 JBF R7/MODIFIED DONE Did this file lose data? 03314 EDC81810 0 ZBM 485 STW R0,DBABLKLOST 03315 DC1013E1 @ 486 CALL @VWRITE 03316 414070A4 487 PARV BLOCKNUM 03317 41407000 488 PARV PFREADPLACE 03318 41007001 489 PAR READFBI 03319 400033F0 490 PARL WRITEERROR 491 * \ / 0000331A 492 DONE LABEL 0331A 5D178804 6 BASE 493 LEAVE SP,POPMIN 494 * --- 495 496 * We were unable to read the minor access (code control) 497 * block. We'll mark the block free and access block will be 498 * built later. 0000331B 499 READERROR LABEL 0331B DC003ADC 500 CALL DBAACCESS 0331C 404070A4 501 PARVL BLOCKNUM 0331D 6044007F 1 IMM 502 LD R1 FBITFREE 0331E E4482451 1 0 ZBM 503 ST R1 R0,DBAFBITYPE 0331F EC082E91 0 ZBM 504 STZ R0,DBAFSN1 03320 EC160802 0 BASE 505 STZ R0,DBAFSN2 03321 EC0800B0 0 ZBM 506 STZ R0,DBAACCT 03322 FE0E331A 507 JMP DONE 508 * --- 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 35 (TREEOPS) F 18 Tree operations 509 510 END VERIFYRAF 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 36 (TREEOPS) F 18 Tree operations 512 513 VERIFYSAF BLOCK 514 ENTRY VERIFYSAF 515 516 ********************************************************************************** 517 * This procedure, called for SAF data blocks, attaches the * 518 * file to a directory as normal. In addition, if the block is * 519 * the first block of the file, the links are followed as long * 520 * they are valid and each block visited is marked accounted for. * 521 ********************************************************************************** 522 523 BEGFRAME 00178801 6 BASE 524 PRIORBLOCK BSS 1 00178802 6 BASE 525 CURBLOCK BSS 1 00178803 6 BASE 526 RELBLOCK BSS 1 00178804 6 BASE 527 THISFSN BSS 2 Serial number of the SAF 528 ENDFRAME 529 03323 DD5F8006 6 STAK 530 VERIFYSAF ENTRNP PUSH 531 RESTOREFSN R0,R1,R2 03329 E6578804 126 BASE 532 ST2 R1 SP,THISFSN 0332A 5C080121 0 ZBM 533 CMZ R0,DBARELBLK Remember if this is the first file block 0332B DC00339E 534 CALL FILEINDIR 0332C 40520000 0 REG 535 PARVL R0 0332D FE0C335F 536 JNE DONE 537 538 * This is the first block of a SAF. We will mark each block in 539 * the chain accounted for until the chain ends or is bad, except 540 * the first one. This we leave unmarked so that we will find it 541 * again later if it happens that there is no FDE pointing to it. 542 0332E EC178803 6 BASE 543 STZ SP,RELBLOCK 0332F 60C070A4 3 544 LD R3 BLOCKNUM 03330 E4D78802 3 6 BASE 545 ST R3 SP,CURBLOCK 00003331 546 SAFLOOP LABEL 03331 FAC2335F 3 547 JEQZ R3 DONE Normal EOD 03332 DC1013E0 @ 548 CALL @VREAD 03333 4152C000 3 REG 549 PARV R3 Disk address 03334 41407000 550 PARV PFREADPLACE Data location (description of) 03335 41007001 551 PAR READFBI FBI location 03336 41440000 IMM 552 PARV 0 FBI type (any) 03337 4000334C 553 PARL FIXPRIOR 03338 62007009 01 554 LD2 R0 READFBI/FBISERNO 03339 66178804 016 BASE 555 CPR2 R0 SP,THISFSN Still in the same file? 0333A FE0C334C 556 JNE FIXPRIOR No, how did that happen? 0333B 38C07001 3 557 LEA R3 READFBI 0333C 6008D184 0 3 ZBM 558 LD R0 R3,FBIRELBLK 0333D 64178803 0 6 BASE 559 CPR R0 SP,RELBLOCK Relative block number as expected? 0333E FE0C334C 560 JNE FIXPRIOR No, the rest of the file loses 0333F 5C178803 6 BASE 561 CMZ SP,RELBLOCK Is this the first block? 03340 FE023345 562 JEQ SAFNEXT Yes, don't mark this one 03341 60178802 0 6 BASE 563 LD R0 SP,CURBLOCK No, mark block accounted for 03342 DC003ADC 564 CALL DBAACCESS 03343 40520000 0 REG 565 PARVL R0 03344 EDC81610 0 ZBM 566 STW R0,DBASEEN 00003345 567 SAFNEXT LABEL 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 37 (TREEOPS) F 18 Tree operations 03345 D0178803 6 BASE 568 INC SP,RELBLOCK 03346 60978802 2 6 BASE 569 LD R2 SP,CURBLOCK Remember current block for fixing 03347 E4978801 2 6 BASE 570 ST R2 SP,PRIORBLOCK 03348 60C8D180 3 3 ZBM 571 LD R3 R3,FBIFLINK Get next block number 03349 E4D78802 3 6 BASE 572 ST R3 SP,CURBLOCK 0334A 64C0705A 3 573 CPR R3 DISKCB/DCBVOLSIZE Make sure we stay in the universe 0334B FE0A3331 574 JLE SAFLOOP Round and Round we go 575 * \ / 576 * We get here for an unusable block. Go back to the 577 * prior SAF block and remove the pointer that points here. 0000334C 578 FIXPRIOR LABEL 0334C 60178801 0 6 BASE 579 LD R0 SP,PRIORBLOCK 0334D FA02335F 0 580 JEQZ R0 DONE 0334E DC1013E0 @ 581 CALL @VREAD 0334F 41520000 0 REG 582 PARV R0 Disk address 03350 41407000 583 PARV PFREADPLACE Data location (description of) 03351 41007001 584 PAR READFBI FBI location 03352 41440000 IMM 585 PARV 0 FBI type (any) 03353 40003360 586 PARL READERROR 03354 38007001 0 587 LEA R0 READFBI 03355 EC081180 0 ZBM 588 STZ R0,FBIFLINK 03356 DC003ADC 589 CALL DBAACCESS Remember that the file lost data 03357 404070A4 590 PARVL BLOCKNUM 03358 EDC81810 0 ZBM 591 STW R0,DBABLKLOST 03359 38C07001 3 592 LEA R3 READFBI 0335A DC1013E1 @ 593 CALL @VWRITE 0335B 4148D181 3 ZBM 594 PARV R3,FBIDA 0335C 41407000 595 PARV PFREADPLACE 0335D 41007001 596 PAR READFBI 0335E 400033F0 597 PARL WRITEERROR 0000335F 598 DONE LABEL 0335F 5D1F8006 6 STAK 599 LEAVE POP 600 * --- 601 602 * Couldn't re-read the block we just read!! 00003360 603 READERROR LABEL 03360 DC003ADC 604 CALL DBAACCESS 03361 404070A4 605 PARVL BLOCKNUM 03362 EDC81810 0 ZBM 606 STW R0,DBABLKLOST 03363 FE0E335F 607 JMP DONE 608 * --- 609 610 END VERIFYSAF 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 38 (TREEOPS) F 18 Tree operations 612 613 DODATABLOCK BLOCK 614 ENTRY DODATABLOCK 615 616 BEGFRAME 617 ENDFRAME 618 03364 DD5F8001 6 STAK 619 DODATABLOCK ENTRNP PUSH 03365 DC00339E 620 CALL FILEINDIR Ensure file is counted in proper dir 03366 40520000 0 REG 621 PARVL R0 03367 5D1F8001 6 STAK 622 LEAVE POP 623 * --- 624 625 END DODATABLOCK 626 627 DOUDIR1 BLOCK 628 ENTRY DOUDIR1 629 630 BEGFRAME 631 ENDFRAME 632 03368 DD5F8001 6 STAK 633 DOUDIR1 ENTRNP PUSH 03369 EDC81610 0 ZBM 634 STW R0,DBASEEN Block is accounted for 0336A DC00323B 635 CALL FINDDIR 0336B 414800B0 0 ZBM 636 PARV R0,DBAACCT 0336C 404070A4 637 PARVL BLOCKNUM 0336D 5D1F8001 6 STAK 638 LEAVE POP 639 * --- 640 641 END DOUDIR1 642 643 DOUDIR2 BLOCK 644 ENTRY DOUDIR2 645 646 ********************************************************************************** 647 * This procedure handles a secondary directory block. A * 648 * reference to the UDIR2 is added to the chain hanging off of the * 649 * account's Directory Thing node, and the number of file directory * 650 * entries in the block is subtracted from the file count in the * 651 * Directory Thing. * 652 ********************************************************************************** 653 654 BEGFRAME 00178801 6 BASE 655 DIRNPTR BSS 1 Pointer to DIR node for proper account 00178802 6 BASE 656 DIR2NPTR BSS 1 Pointer to new DIR2 node 657 ENDFRAME 658 0336E DD5F8003 6 STAK 659 DOUDIR2 ENTRNP PUSH 0336F DC00323B 660 CALL FINDDIR 03370 414800B0 0 ZBM 661 PARV R0,DBAACCT 03371 40440000 IMM 662 PARVL 0 03372 E4178801 0 6 BASE 663 ST R0 SP,DIRNPTR 03373 DC1013E0 @ 664 CALL @VREAD Read the UDIR2 block 03374 414070A4 665 PARV BLOCKNUM Disk address 03375 41407000 666 PARV PFREADPLACE Data location (description of) 03376 41007001 667 PAR READFBI FBI location 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 39 (TREEOPS) F 18 Tree operations 03377 41440000 IMM 668 PARV 0 FBI type (any) 03378 4000339D 669 PARL DONE 670 * Count the number of FDEs in the UDIR2 03379 EC120000 0 REG 671 STZ R0 0337A 38404800 1 672 LEA R1 READPLACE 0000337B 673 COUNTLOOP LABEL 0337B 64444BE8 1 IMM 674 CPR R1 ADR(READPLACE(UDLFDE)) Past end of block? 0337C FE043381 675 JGT COUNTDONE 0337D 5C164800 1 BASE 676 CMZ R1,0 Valid FDE? 0337E FE023381 677 JEQ COUNTDONE No, we're done 0337F 18440018 1 IMM 678 ADD R1 FDLNTH Advance to next entry 03380 FA20337B 0 679 IRJ R0 COUNTLOOP And continue on 680 * --- 681 00003381 682 COUNTDONE LABEL 03381 60920000 2 0 REG 683 LD R2 R0 03382 60578801 1 6 BASE 684 LD R1 SP,DIRNPTR Get the DIR node back 03383 B0164804 0 1 BASE 685 RSBM R0 R1,DIRNFILCNT Account for some of the account's files 03384 DC0039C8 686 CALL FSGET Get space for new UDIR2 node 03385 40440006 IMM 687 PARVL DIR2NLEN 03386 E4960805 2 0 BASE 688 ST R2 R0,DIR2NFILCNT Save the number of entries 03387 E4178802 0 6 BASE 689 ST R0 SP,DIR2NPTR Save the DIR2 node pointer 03388 608070A4 2 690 LD R2 BLOCKNUM Save the UDIR2 disk address 03389 E4960804 2 0 BASE 691 ST R2 R0,DIR2NDA 0338A 61004804 4 692 LD R4 READPLACE/FDEXTEN And the extension of the first file 0338B E5160803 4 0 BASE 693 ST R4 R0,DIR2NEXT 0338C 62804802 23 694 LD2 R2 READPLACE/FDNAME And the name 0338D E6960801 230 BASE 695 ST2 R2 R0,DIR2NNAME 696 * Add the DIR2 node into the chain in the appropriate place 0338E 60578801 1 6 BASE 697 LD R1 SP,DIRNPTR 0338F 38164806 0 1 BASE 698 LEA R0 R1,DIRNU2LIST R0 => previous entry 03390 60564806 1 1 BASE 699 LD R1 R1,DIRNU2LIST R1 => current entry 03391 FA423399 1 700 JEQZ R1 FOUND 00003392 701 SRCHLOOP LABEL 03392 6A964801 231 BASE 702 UCPR2 R2 R1,DIR2NNAME 03393 FE043397 703 JGT NEXT 03394 FE083399 704 JLT FOUND 03395 69164803 4 1 BASE 705 UCPR R4 R1,DIR2NEXT 03396 FE0A3399 706 JLE FOUND 00003397 707 NEXT LABEL 03397 60124000 0 1 REG 708 LD R0 R1 03398 FA763392 1 709 LJNA R1 SRCHLOOP Look at next entry, if there is one 710 * \ / 00003399 711 FOUND LABEL 03399 60978802 2 6 BASE 712 LD R2 SP,DIR2NPTR Get back the DIR2 node 0339A E4489F10 1 2 ZBM 713 ST R1 R2,DIR2NNEXT New.Next := Found 0339B E4881F10 2 0 ZBM 714 ST R2 R0,DIR2NNEXT Prior.Next := New 0339C 61047055 4 IMM 715 LD R4 ADR DISKCB Restore DCB pointer 0000339D 716 DONE LABEL 0339D 5D1F8003 6 STAK 717 LEAVE POP 718 * --- 719 720 END DOUDIR2 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 40 (TREEOPS) F 18 Tree operations 722 723 FILEINDIR BLOCK 724 ENTRY FILEINDIR 725 726 ********************************************************************************** 727 * This procedure is called whenever a block is seen which is * 728 * part of a file (including share list blocks and things). It * 729 * makes sure that the given file is reflected in the file count of * 730 * the owning account's Directory Thing node, by searching the DBA * 731 * for any block from the same file. If it finds a block at a lower * 732 * address than the current block, it knows that this file has * 733 * already been counted. The account's file count is later compared * 734 * to the count of file directory entries to see if any FDEs are * 735 * missing. * 736 ********************************************************************************** 737 738 BEGFRAME 00178801 6 BASE 739 ACCTINDEX BSS 1 ACCTTABLE index for the owning account 740 ENDFRAME 741 0339E DD1F8002 6 STAK 742 FILEINDIR ENTR PUSH 0339F C0520000 0 REG 743 STPVL R0 033A0 604800B0 1 0 ZBM 744 LD R1 R0,DBAACCT 033A1 E4578801 1 6 BASE 745 ST R1 SP,ACCTINDEX 746 RESTOREFSN R0,R1,R2 Get the actual file serial number 033A7 DC003B07 747 CALL DBAFINDFILE 033A8 43544000 12 PAIR 748 PARV2 PAIR R1 File serial number to find 033A9 40440001 IMM 749 PARVL 1 Where to start looking 033AA 640070A4 0 750 CPR R0 BLOCKNUM Have we seen this file before? 033AB FE0833B1 751 JLT DONE Yes, we're done 033AC 60178801 0 6 BASE 752 LD R0 SP,ACCTINDEX 033AD DC00323B 753 CALL FINDDIR No, add it to the directory's count 033AE 41520000 0 REG 754 PARV R0 033AF 40440000 IMM 755 PARVL 0 033B0 D0160804 0 BASE 756 INC R0,DIRNFILCNT 757 * \ / 000033B1 758 DONE LABEL 033B1 5D1F8002 6 STAK 759 LEAVE POP 760 * --- 761 762 END FILEINDIR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 41 (TREEOPS) F 18 Tree operations 764 765 PRINTTREE BLOCK 766 ENTRY PRINTTREE 767 768 ********************************************************************************** 769 * Debugging code to print out the structure build by BUILDTREE. * 770 ********************************************************************************** 771 772 BEGFRAME 00178801 6 BASE 773 IDXPTR BSS 1 00178802 6 BASE 774 DIRPTR BSS 1 775 ENDFRAME 776 033B2 DD5F8003 6 STAK 777 PRINTTREE ENTRNP PUSH 033B3 6000709C 0 778 LD R0 IDXNLIST 033B4 E4178801 0 6 BASE 779 ST R0 SP,IDXPTR 000033B5 780 IDXLOOP LABEL 033B5 60D78801 3 6 BASE 781 LD R3 SP,IDXPTR 033B6 DC1013F9 @ 782 CALL @VPREPOUT 033B7 4116C000 3 CACH 783 PAR R3,IDXNBUCKET 033B8 400033DA 784 PARL IDXMESSAGE 033B9 60C8DF12 3 3 ZBM 785 LD R3 R3,IDXNDIRLIST 033BA E4D78802 3 6 BASE 786 ST R3 SP,DIRPTR 000033BB 787 DIRLOOP LABEL 033BB FAC233D2 3 788 JEQZ R3 DIREND 033BC DC003A5F 789 CALL ACCTFIND 033BD 4048C0B0 3 ZBM 790 PARVL R3,DIRNACCT 033BE E60033D7 01 791 ST2 R0 ANAME 033BF E48033D9 2 792 ST R2 DIVPRJ 033C0 DC1013F9 @ 793 CALL @VPREPOUT 033C1 410033D7 794 PAR ANAME 033C2 410033D9 795 PAR DIVPRJ 033C3 4116C801 3 BASE 796 PAR R3,DIRNDA 033C4 4116C804 3 BASE 797 PAR R3,DIRNFILCNT 033C5 400033E0 798 PARL DIRMESSAGE 033C6 E4D78802 3 6 BASE 799 ST R3 SP,DIRPTR 033C7 60D6C806 3 3 BASE 800 LD R3 R3,DIRNU2LIST 000033C8 801 DIR2LOOP LABEL 033C8 FAC233CF 3 802 JEQZ R3 DIR2END 033C9 DC1013F9 @ 803 CALL @VPREPOUT 033CA 4116C804 3 BASE 804 PAR R3,DIR2NDA 033CB 4116C805 3 BASE 805 PAR R3,DIR2NFILCNT 033CC 400033EA 806 PARL DIR2MSG 033CD 60C8DF10 3 3 ZBM 807 LD R3 R3,DIR2NNEXT 033CE FE0E33C8 808 JMP DIR2LOOP 809 * --- 000033CF 810 DIR2END LABEL 033CF 60D78802 3 6 BASE 811 LD R3 SP,DIRPTR 033D0 60C8DF10 3 3 ZBM 812 LD R3 R3,DIRNNEXT 033D1 FE0E33BB 813 JMP DIRLOOP 814 * --- 000033D2 815 DIREND LABEL 033D2 60D78801 3 6 BASE 816 LD R3 SP,IDXPTR 033D3 60C8DF10 3 3 ZBM 817 LD R3 R3,IDXNNEXT 033D4 E4D78801 3 6 BASE 818 ST R3 SP,IDXPTR 033D5 FACC33B5 3 819 JNEZ R3 IDXLOOP 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 42 (TREEOPS) F 18 Tree operations 820 033D6 5D1F8003 6 STAK 821 LEAVE POP 822 * --- 823 033D8 00000000 824 ANAME VFD 0,0 033D9 00000000 825 DIVPRJ VFD 0 033DA 20494458 826 IDXMESSAGE TEXTZ " IDX bucket number \D1\" 033E0 20202020 827 DIRMESSAGE TEXTZ " \S1\.\R2\, DA \H3,5\, count=\D4\" 033EA 20202020 828 DIR2MSG TEXTZ " \H1,5\, \D2\" 829 830 END PRINTTREE 831 033F0 00000022 832 WRITEERROR HALT 022 833 834 END TREEOPS 60 INPUT VERIFYFILES 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 43 (VERIFYFILES) F 19 File verification 3 4 VERIFYFILES BLOCK 5 ENTRY VERIFYFILES 6 7 BLOCK 8 9 ********************************************************************************** 10 * This module is responsible for making the file system * 11 * consistent. This means that every file has a FDE in a directory * 12 * and every FDE points to a valid file. * 13 ********************************************************************************** 14 15 ENTRY VERIFYFILES 16 17 BEGFRAME 00178801 6 BASE 18 CURRENTIDX BSS 1 00178802 6 BASE 19 CURRENTDIR BSS 1 20 ENDFRAME 21 033F1 DD5F8003 6 STAK 22 VERIFYFILES ENTRNP PUSH 033F2 6000709C 0 23 LD R0 IDXNLIST 033F3 FA023401 0 24 JEQZ R0 DONE 000033F4 25 IDXLOOP LABEL 033F4 E4178801 0 6 BASE 26 ST R0 SP,CURRENTIDX 033F5 60081F12 0 0 ZBM 27 LD R0 R0,IDXNDIRLIST 033F6 FA0233FF 0 28 JEQZ R0 IDXDONE 000033F7 29 DIRLOOP LABEL 033F7 E4178802 0 6 BASE 30 ST R0 SP,CURRENTDIR 033F8 DC003402 31 CALL REALIZEDIR Ensure directory is real and sufficient 033F9 40520000 0 REG 32 PARVL R0 033FA 60178802 0 6 BASE 33 LD R0 SP,CURRENTDIR 033FB DC0034FA 34 CALL VERIFYDIR And verify all file directory entries 033FC 40520000 0 REG 35 PARVL R0 033FD 60178802 0 6 BASE 36 LD R0 SP,CURRENTDIR 033FE FA3633F7 0 37 LJNA R0 DIRLOOP 38 * \ / 000033FF 39 IDXDONE LABEL 033FF 60178801 0 6 BASE 40 LD R0 SP,CURRENTIDX 03400 FA3633F4 0 41 LJNA R0 IDXLOOP 42 * \ / 00003401 43 DONE LABEL 44 03401 5D1F8003 6 STAK 45 LEAVE POP 46 * --- 47 48 END 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 44 (VERIFYFILES) F 19 File verification 50 51 REALIZEDIR BLOCK 52 ENTRY REALIZEDIR 53 54 ********************************************************************************** 55 * This procedure will make sure that a directory block exists * 56 * for the given directory node, and that there are sufficient * 57 * directory entries (real or invented) for the number of files that * 58 * we've seen. * 59 * Calling format: * 60 * CALL REALIZEDIR * 61 * PARL * 62 ********************************************************************************** 63 64 BEGFRAME 00178801 6 BASE 65 DIRPTR BSS 1 Pointer to the directory node to realize 00178802 6 BASE 66 DIR2PTR BSS 1 Pointer to newly created DIR2 node 67 ENDFRAME 68 00000010 BYTE 69 DELFLAG EQU BIT 0 Flag showing whether a UDIR2 entry was 70 deleted from the UDIR1 71 72 03402 DD1F8003 6 STAK 73 REALIZEDIR ENTR PUSH 03403 C0578801 6 BASE 74 STPVL SP,DIRPTR 03404 5C081610 0 ZBM 75 CMZ R0,DIRNFAKE Is this directory hypothetical? 03405 FE0C342C 76 JNE ITSAFAKE 77 ********************************************************************************** 78 * * 79 * The directory exists, but if it is a large directory we must * 80 * verify that all the UDIR2 pointers therein point to real UDIR2 * 81 * blocks. Any that don't are deleted, and then new UDIR2s are * 82 * created with fake filenames, as in the case of a hypothetical * 83 * directory. * 84 * * 85 ********************************************************************************** 03406 DC1013E0 @ 86 CALL @VREAD Read in the UDIR1 03407 41560801 0 BASE 87 PARV R0,DIRNDA 03408 4140700C 88 PARV PFDIR1PLACE 03409 4100700D 89 PAR DIR1FBI 0340A 41440000 IMM 90 PARV 0 0340B 40003898 91 PARL READERROR 0340C 38C04C00 3 92 LEA R3 DIR1PLACE 0340D 5C08C01A 3 ZBM 93 CMZ R3,UDTYPE Is it a large dir? 0340E FE023495 94 JEQ DONE No, nothing to do 0340F 38C04C60 3 95 LEA R3 DIR1PLACE/UDFDLIST 03410 EC0BC010 7 CBM 96 STZ R7/DELFLAG 00003411 97 CHECKLOOP LABEL 03411 64C44FF8 3 IMM 98 CPR R3 ADR(DIR1PLACE(UD1LINDX)) 03412 FE043428 99 JGT ALLCHECKED 03413 5C16C803 3 BASE 100 CMZ R3,UDINDXDAW 03414 FE023428 101 JEQ ALLCHECKED 03415 DC003ADC 102 CALL DBAACCESS Get description of supposed 03416 4048D183 3 ZBM 103 PARVL R3,UDINDXADR UDIR2 block 03417 60082451 0 0 ZBM 104 LD R0 R0,DBAFBITYPE Get actual block type 03418 6404000A 0 IMM 105 CPR R0 FBITUDIR2 Is it a UDIR2? 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 45 (VERIFYFILES) F 19 File verification 03419 FE0C341C 106 JNE NOTUDIR2 No, go delete it 0341A 18C40005 3 IMM 107 ADD R3 UDINDXLEN Advance to next entry 0341B FE0E3411 108 JMP CHECKLOOP 109 * --- 0000341C 110 NOTUDIR2 LABEL 0341C 6012C000 0 3 REG 111 LD R0 R3 Move following entries up one 0341D 6096D005 2 3 REG 112 LD R2 R3+UDINDXLEN 0341E 604AECA0 1 3 CBM 113 LD R1 R3/BITS 22:31 0341F 30440400 1 IMM 114 RSB R1 WPP 03420 10440005 1 IMM 115 SUB R1 UDINDXLEN 03421 1C440004 1 IMM 116 MUL R1 CPW 03422 DA088800 0 21 117 MOVE R0 R2 R1 03423 38004FF8 0 118 LEA R0 DIR1PLACE(UD1LINDX) Zero out the last entry 03424 60440014 1 IMM 119 LD R1 UDINDXLEN*CPW 03425 DA000800 0 1 120 FILLI R0 R1 0 03426 EDCBC010 7 CBM 121 STW R7/DELFLAG 03427 FE0E3411 122 JMP CHECKLOOP 123 * --- 00003428 124 ALLCHECKED LABEL 03428 F3C03495 7 125 JBF R7/DELFLAG DONE If all UDIR2s present, we're done 03429 FB6834A3 5 126 JSR R5 MKDIR2LOOP 0342A 60978801 2 6 BASE 127 LD R2 SP,DIRPTR 0342B FE0E3458 128 JMP FILLDIR1 129 * --- 130 131 ********************************************************************************** 132 * The directory is hypothetical so we must 1) make sure we * 133 * have enough UDIR2s for the file count, and 2) construct a UDIR1 * 134 * block for it. * 135 ********************************************************************************** 136 0000342C 137 ITSAFAKE LABEL 138 CLEAR DIR1,0,FBITUDIR1 03437 FB6834A3 5 139 JSR R5 MKDIR2LOOP 140 03438 60178801 0 6 BASE 141 LD R0 SP,DIRPTR Get and store the account name 03439 DC003A5F 142 CALL ACCTFIND (in both the account name and 0343A 404800B0 0 ZBM 143 PARVL R0,DIRNACCT the initial program fields) 0343B E6004C00 01 144 ST2 R0 DIR1PLACE/UDACCT 0343C E6004C0B 01 145 ST2 R0 DIR1PLACE/UDHPRAC 0343D E4804C02 2 146 ST R2 DIR1PLACE/UDPROJ 0343E E4804C0D 2 147 ST R2 DIR1PLACE/UDHPRACP 0343F 620034A0 01 148 LD2 R0 PAKINITIAL Complete the initial program name 03440 E6004C10 01 149 ST2 R0 DIR1PLACE/UDHPR 03441 600034A2 0 150 LD R0 PAKLOGON 03442 E4004C12 0 151 ST R0 DIR1PLACE/UDHPREXT 03443 BE00709F 01 152 INCL2 R0 NEXTSERNUM Set account's serial number 03444 E6004C20 01 153 ST2 R0 DIR1PLACE/UDSERNO 03445 E6004C03 01 154 ST2 R0 DIR1PLACE/UDPASS Set unmatchable password 03446 38404C00 1 155 LEA R1 DIR1PLACE 03447 60178801 0 6 BASE 156 LD R0 SP,DIRPTR 03448 60960803 2 0 BASE 157 LD R2 R0,DIRNAUTHDA Set authorization list address 03449 E4964840 2 1 BASE 158 ST R2 R1,UDAUTHLIST 0344A 60960802 2 0 BASE 159 LD R2 R0,DIRNASLDA Set share list address 0344B E496483C 2 1 BASE 160 ST R2 R1,UDSHLLIST 0344C 5C128000 2 REG 161 CMZ R2 Set 'share list on disk' flag 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 46 (VERIFYFILES) F 19 File verification 0344D 3896483C 2 1 BASE 162 LEA R2 R1,UDSHLLIST 0344E ED888010 2 ZBM 163 STLNE R2,SHLDSKFLG 164 * We want to set the encryption flag to YES, but since that is 165 * signified by a zero bit, we don't have to do anything 0344F 5C160806 0 BASE 166 CMZ R0,DIRNU2LIST Set large/small directory flag 03450 ED88401A 1 ZBM 167 STLNE R1,UDTYPE 03451 3856482B 1 1 BASE 168 LEA R1 R1,UDLIMITS 03452 EDC84041 1 ZBM 169 STW R1,PRIVWORD/LIMFACCESS Give BTI file access 03453 EDC84841 1 ZBM 170 STW R1,PRIVWORD/LIMPACCESS and password access 03454 38804C4E 2 171 LEA R2 DIR1PLACE/UDTITLE Set account title 03455 38C03496 3 172 LEA R3 ACCTTITLE 03456 60440028 1 IMM 173 LD R1 TITLELEN 03457 DA88C800 2 31 174 MOVE R2 R3 R1 175 * \ / 176 177 ********************************************************************************** 178 * * 179 * We must now fill in skeleton FDEs, if the directory is * 180 * small, or ensure that all UDIR2s in the DIR2 list have an entry * 181 * in the UDIR1 block. A hypothetical UDIR1 will have none at this * 182 * point, but a real one will have the entry for UDIR2s that were * 183 * not lost. Entries for UDIR2s that were lost have been compressed * 184 * out, and those UDIR2s have now been replaced by new ones which * 185 * are at the end of the list. Any entries that survived will be * 186 * identical to their representation in the DIR2 list, so we don't * 187 * have to bother skipping over the ones that are there already. * 188 * Note that an invented FDE will have zero for the file type * 189 * and for the disk address. This flags it as a created FDE which * 190 * has not yet been linked up with a file, so the FDE verifier will * 191 * know not to delete it. * 192 * * 193 ********************************************************************************** 194 195 * \ / 00003458 196 FILLDIR1 LABEL 03458 5C160806 0 BASE 197 CMZ R0,DIRNU2LIST 03459 FE0C3468 198 JNE ADDUDIR2S 0345A 38C04C60 3 199 LEA R3 DIR1PLACE(UDFDLIST) Initialize FDE pointer 0345B 60960804 2 0 BASE 200 LD R2 R0,DIRNFILCNT How many entries to create 0345C FA8A3495 2 201 JLEZ R2 DONE 0000345D 202 ENTRYLOOP2 LABEL 0345D EDD6C000 3 CACH 203 STW R3,FDSUN Establish this FDE as used 0345E 6004005A 0 IMM 204 LD R0 PURGESDV Set standard purge interval 0345F E416C018 0 3 CACH 205 ST R0 R3,FDPURGE 03460 60178801 0 6 BASE 206 LD R0 SP,DIRPTR 03461 DC003875 207 CALL MKFAKENAME Make up a file name 03462 41160805 0 BASE 208 PAR R0,DIRNFAKECNT 03463 4316C802 3 BASE 209 PAR2 R3,FDNAME 03464 4016C804 3 BASE 210 PARL R3,FDEXTEN 03465 18C40018 3 IMM 211 ADD R3 FDLNTH 03466 FAA2345D 2 212 DRJ R2 ENTRYLOOP2 03467 FE0E3475 213 JMP ENTRIESDONE 214 * --- 00003468 215 ADDUDIR2S LABEL 03468 60978801 2 6 BASE 216 LD R2 SP,DIRPTR Get list of DIR2 nodes 03469 60968806 2 2 BASE 217 LD R2 R2,DIRNU2LIST 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 47 (VERIFYFILES) F 19 File verification 0346A 38C04C60 3 218 LEA R3 DIR1PLACE(UDFDLIST) Initialize UDINDX pointer 0000346B 219 INDXLOOP LABEL 0346B 62168801 012 BASE 220 LD2 R0 R2,DIR2NNAME Store the filename 0346C E616C800 013 BASE 221 ST2 R0 R3,UDINDXNAM 0346D 60168803 0 2 BASE 222 LD R0 R2,DIR2NEXT the extension 0346E E416C802 0 3 BASE 223 ST R0 R3,UDINDXEXT 0346F 60168805 0 2 BASE 224 LD R0 R2,DIR2NFILCNT the number of entries 03470 E416C00C 0 3 CACH 225 ST R0 R3,UDINDXNUM 03471 60168804 0 2 BASE 226 LD R0 R2,DIR2NDA and the disk address 03472 E408D183 0 3 ZBM 227 ST R0 R3,UDINDXADR 03473 18C40005 3 IMM 228 ADD R3 UDINDXLEN Advance to next entry 03474 FAB6346B 2 229 LJNA R2 INDXLOOP And go round again 230 * \ / 231 00003475 232 ENTRIESDONE LABEL 03475 60978801 2 6 BASE 233 LD R2 SP,DIRPTR 03476 D1889610 2 ZBM 234 CLRT R2,DIRNFAKE Directory is real 03477 FE02348C 235 JEQ WRITEDIR1 Jump if it was real already 03478 DC403BB2 236 CALLNP GETFREEBLK It was fake, find a home for it 03479 E4168801 0 2 BASE 237 ST R0 R2,DIRNDA Save in directory node 0347A DC003ADC 238 CALL DBAACCESS 0347B 40520000 0 REG 239 PARVL R0 0347C 604880B0 1 2 ZBM 240 LD R1 R2,DIRNACCT Update the DBA entry 0347D E44800B0 1 0 ZBM 241 ST R1 R0,DBAACCT 0347E EDC81610 0 ZBM 242 STW R0,DBASEEN 0347F EC080121 0 ZBM 243 STZ R0,DBARELBLK 03480 EC082E91 0 ZBM 244 STZ R0,DBAFSN1 03481 EC160802 0 BASE 245 STZ R0,DBAFSN2 03482 60440009 1 IMM 246 LD R1 FBITUDIR1 03483 E4482451 1 0 ZBM 247 ST R1 R0,DBAFBITYPE 03484 3800700D 0 248 LEA R0 DIR1FBI Set the FBI 03485 E4480080 1 0 ZBM 249 ST R1 R0,FBITYPE 03486 60568801 1 2 BASE 250 LD R1 R2,DIRNDA 03487 E4481181 1 0 ZBM 251 ST R1 R0,FBIDA 03488 62004C00 01 252 LD2 R0 DIR1PLACE/UDACCT 03489 E6007012 01 253 ST2 R0 DIR1FBI/FBIACCT 0348A 60004C02 0 254 LD R0 DIR1PLACE/UDPROJ 0348B E4007014 0 255 ST R0 DIR1FBI/FBIPROJ 0000348C 256 WRITEDIR1 LABEL 257 WRITEBLK (R2,DIRNDA),DIR1,WRITEERROR 03494 FE0E3495 258 JMP DONE 259 * --- 260 00003495 261 DONE LABEL 03495 5D1F8003 6 STAK 262 LEAVE POP 263 * --- 264 03496 43726561 265 ACCTTITLE TEXTZ "Created by file system reconstructor" 00000028 ABS 266 TITLELEN EQU DISPC ACCTTITLE 034A0 77B44C83 267 PAKINITIAL PAK12 INITIAL 034A2 8A28CA00 268 PAKLOGON PAK6 LOGON 269 270 000034A3 271 MKDIR2LOOP LABEL 034A3 60178801 0 6 BASE 272 LD R0 SP,DIRPTR 034A4 60560804 1 0 BASE 273 LD R1 R0,DIRNFILCNT Number of files we need entries for 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 48 (VERIFYFILES) F 19 File verification 034A5 FA4A34F8 1 274 JLEZ R1 DIR2SDONE No more files, we're done 034A6 64440026 1 IMM 275 CPR R1 UDFDECNT If more than 38 files, we need a UDIR2 034A7 FE0434AA 276 JGT MKUDIR2 034A8 5C160806 0 BASE 277 CMZ R0,DIRNU2LIST If there are already UDIR2s, we need another 034A9 FE0234F8 278 JEQ DIR2SDONE for remaining files 000034AA 279 MKUDIR2 LABEL 034AA 6087FFFF 2 IMM 280 LD R2 -1 Find the end of the DIR2 node list 034AB 38560806 1 0 BASE 281 LEA R1 R0,DIRNU2LIST (by searching for nonexistent value) 034AC 60160806 0 0 BASE 282 LD R0 R0,DIRNU2LIST 034AD 48881F10 2 0 ZBM 283 RLSRCH R2 R0,DIR2NNEXT 034AE 62940000 2301 PAIR 284 LD2 R2 PAIR R0 Save end of list pointer in R3 034AF DC0039C8 285 CALL FSGET Get space for new DIR2 node 034B0 40440006 IMM 286 PARVL DIR2NLEN 034B1 E408DF10 0 3 ZBM 287 ST R0 R3,DIR2NNEXT Add it to the end of the list 034B2 E4178802 0 6 BASE 288 ST R0 SP,DIR2PTR 034B3 60920000 2 0 REG 289 LD R2 R0 034B4 60578801 1 6 BASE 290 LD R1 SP,DIRPTR 034B5 60164804 0 1 BASE 291 LD R0 R1,DIRNFILCNT Get number of files still to create 034B6 5004002A 0 IMM 292 MIN R0 UD2FDECNT But not more than will fit in a UDIR2 034B7 E4168805 0 2 BASE 293 ST R0 R2,DIR2NFILCNT Make that the UDIR2 entry count 034B8 B0164804 0 1 BASE 294 RSBM R0 R1,DIRNFILCNT And reduce number of files to go 034B9 DC403BB2 295 CALLNP GETFREEBLK Allocate a disk block for the UDIR2 034BA E4168804 0 2 BASE 296 ST R0 R2,DIR2NDA 034BB DC003ADC 297 CALL DBAACCESS Update the block description 034BC 40520000 0 REG 298 PARVL R0 034BD 60D20000 3 0 REG 299 LD R3 R0 034BE EDC8D610 3 ZBM 300 STW R3,DBASEEN 034BF 62007015 01 301 LD2 R0 DIR1FBI/FBISERNO pick up account serial number 034C0 E408EE91 0 3 ZBM 302 ST R0 R3,DBAFSN1 034C1 E456C802 1 3 BASE 303 ST R1 R3,DBAFSN2 034C2 EC08C121 3 ZBM 304 STZ R3,DBARELBLK 034C3 6044000A 1 IMM 305 LD R1 FBITUDIR2 034C4 E448E451 1 3 ZBM 306 ST R1 R3,DBAFBITYPE 034C5 60178801 0 6 BASE 307 LD R0 SP,DIRPTR 034C6 600800B0 0 0 ZBM 308 LD R0 R0,DIRNACCT 034C7 E408C0B0 0 3 ZBM 309 ST R0 R3,DBAACCT 310 311 CLEAR DIR2,0,FBITUDIR2 034D3 60178801 0 6 BASE 312 LD R0 SP,DIRPTR 034D4 DC003A5F 313 CALL ACCTFIND Set account name in FBI 034D5 404800B0 0 ZBM 314 PARVL R0,DIRNACCT 034D6 E600701E 01 315 ST2 R0 DIR2FBI/FBIACCT 034D7 E4807020 2 316 ST R2 DIR2FBI/FBIPROJ 034D8 62007015 01 317 LD2 R0 DIR1FBI/FBISERNO pick up account serial number 034D9 E6007021 01 318 ST2 R0 DIR2FBI/FBISERNO and place in UDIR2 FBI 034DA 38C07019 3 319 LEA R3 DIR2FBI 034DB 60978802 2 6 BASE 320 LD R2 SP,DIR2PTR Set disk address 034DC 60168804 0 2 BASE 321 LD R0 R2,DIR2NDA 034DD E408D181 0 3 ZBM 322 ST R0 R3,FBIDA 323 034DE 60968805 2 2 BASE 324 LD R2 R2,DIR2NFILCNT Number of FDEs to create 034DF 38C05000 3 325 LEA R3 DIR2PLACE Position of first entry 000034E0 326 ENTRYLOOP1 LABEL 034E0 EDD6C000 3 CACH 327 STW R3,FDSUN Establish this FDE as used 034E1 6004005A 0 IMM 328 LD R0 PURGESDV Set purge interval 034E2 E416C018 0 3 CACH 329 ST R0 R3,FDPURGE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 49 (VERIFYFILES) F 19 File verification 034E3 60178801 0 6 BASE 330 LD R0 SP,DIRPTR 034E4 DC003875 331 CALL MKFAKENAME And give it a name 034E5 41160805 0 BASE 332 PAR R0,DIRNFAKECNT 034E6 4316C802 3 BASE 333 PAR2 R3,FDNAME 034E7 4016C804 3 BASE 334 PARL R3,FDEXTEN 034E8 18C40018 3 IMM 335 ADD R3 FDLNTH 034E9 FAA234E0 2 336 DRJ R2 ENTRYLOOP1 337 034EA 60978802 2 6 BASE 338 LD R2 SP,DIR2PTR Transfer the first name to the 034EB 62005002 01 339 LD2 R0 DIR2PLACE/FDNAME DIR2 node 034EC E6168801 012 BASE 340 ST2 R0 R2,DIR2NNAME 034ED 60005004 0 341 LD R0 DIR2PLACE/FDEXTEN 034EE E4168803 0 2 BASE 342 ST R0 R2,DIR2NEXT 343 344 WRITEBLK (R2,DIR2NDA),DIR2,WRITEERROR 034F7 FE0E34A3 345 JMP MKDIR2LOOP And go make another UDIR2 346 * --- 347 000034F8 348 DIR2SDONE LABEL 034F8 5C934000 5 REG 349 LDPC R5 350 * --- 351 034F9 00000001 352 WRITEERROR HALT 1 353 354 END REALIZEDIR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 50 (VERIFYFILES) F 19 File verification 356 357 VERIFYDIR BLOCK 358 ENTRY VERIFYDIR 359 360 ********************************************************************************** 361 * This procedure will verify that a directory includes FDEs * 362 * for all files owned by the account and will remove FDEs relating * 363 * to files that were totally lost. * 364 * Calling format: * 365 * CALL VERIFYDIR * 366 * PARVL * 367 ********************************************************************************** 368 369 BEGFRAME 00178801 6 BASE 370 DIRPTR BSS 1 Pointer to the directory node 00178802 6 BASE 371 FDEPTR BSS 1 Pointer to UDIR2 reference in UDIR1 372 ENDFRAME 373 034FA DD1F8003 6 STAK 374 VERIFYDIR ENTR PUSH 034FB C0578801 6 BASE 375 STPVL SP,DIRPTR 034FC DC1013E0 @ 376 CALL @VREAD Read in the UDIR1 034FD 41560801 0 BASE 377 PARV R0,DIRNDA 034FE 4140700C 378 PARV PFDIR1PLACE 034FF 4100700D 379 PAR DIR1FBI 03500 41440000 IMM 380 PARV 0 03501 40003898 381 PARL READERROR 03502 38004C00 0 382 LEA R0 DIR1PLACE 03503 5C08001A 0 ZBM 383 CMZ R0,UDTYPE Is this a large directory? 03504 FE0C3516 384 JNE LARGEDIR 03505 38404C60 1 385 LEA R1 DIR1PLACE/UDFDLIST Point to beginning of FDEs 03506 38804FE8 2 386 LEA R2 DIR1PLACE(UDLFDE) and to the end 03507 60178801 0 6 BASE 387 LD R0 SP,DIRPTR 03508 DC003535 388 CALL VERIFYFDES 03509 41520000 0 REG 389 PARV R0 0350A 42544000 12 PAIR 390 PARV2L PAIR R1 0350B FE0E3534 391 JMP DONE 0350C 3800700D 0 392 LEA R0 DIR1FBI 393 WRITEBLK (R0,FBIDA),DIR1,WRITEERROR 03515 FE0E3534 394 JMP DONE 395 * --- 396 00003516 397 LARGEDIR LABEL 03516 38004C60 0 398 LEA R0 DIR1PLACE/UDFDLIST 03517 E4178802 0 6 BASE 399 ST R0 SP,FDEPTR 00003518 400 DIR2LOOP LABEL 03518 5C081183 0 ZBM 401 CMZ R0,UDINDXADR Is there another entry? 03519 FE023534 402 JEQ DIR1DONE 0351A DC1013E0 @ 403 CALL @VREAD Read the next UDIR2 block 0351B 41481183 0 ZBM 404 PARV R0,UDINDXADR 0351C 41407018 405 PARV PFDIR2PLACE 0351D 41007019 406 PAR DIR2FBI 0351E 41440000 IMM 407 PARV 0 0351F 40003898 408 PARL READERROR 03520 38405000 1 409 LEA R1 DIR2PLACE First FDE to verify 03521 388053D8 2 410 LEA R2 DIR2PLACE(UD2LFDE) and the last 03522 60178801 0 6 BASE 411 LD R0 SP,DIRPTR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 51 (VERIFYFILES) F 19 File verification 03523 DC003535 412 CALL VERIFYFDES 03524 41520000 0 REG 413 PARV R0 03525 42544000 12 PAIR 414 PARV2L PAIR R1 03526 FE0E3530 415 JMP NOWRITE2 03527 38007019 0 416 LEA R0 DIR2FBI 417 WRITEBLK (R0,FBIDA),DIR2,WRITEERROR 418 * \ / 00003530 419 NOWRITE2 LABEL 03530 60040005 0 IMM 420 LD R0 UDINDXLEN 03531 B8178802 0 6 BASE 421 ADDB R0 SP,FDEPTR 03532 64044FF8 0 IMM 422 CPR R0 ADR(DIR1PLACE(UD1LINDX)) 03533 FE0A3518 423 JLE DIR2LOOP 00003534 424 DIR1DONE LABEL 00003534 425 DONE LABEL 03534 5D1F8003 6 STAK 426 LEAVE POP 427 * --- 428 429 END VERIFYDIR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 52 (VERIFYFILES) F 19 File verification 431 432 VERIFYFDES BLOCK 433 ENTRY VERIFYFDES 434 435 ********************************************************************************** 436 * This procedure verifies each FDE in a range delimited * 437 * by the starting and ending pointers provided. * 438 * Calling format: * 439 * CALL VERIFYFDES * 440 * PARV2L , * 441 ********************************************************************************** 442 443 BEGFRAME 00178801 6 BASE 444 DIRPTR BSS 1 Pointer to DIR node 00178802 6 BASE 445 DIRCHANGED BSS 1 1 sez Verifyxxxx modified the FDE page 00178803 6 BASE 446 TEMPR2R3 BSS 2 447 ENDFRAME 448 00000010 BYTE 449 DELETEFLAG EQU BIT 0 1 sez entry just verified was deleted 450 03535 DD1F8005 6 STAK 451 VERIFYFDES ENTR PUSH 03536 C1578801 6 BASE 452 STPV SP,DIRPTR 03537 C2548000 23 PAIR 453 STPV2L PAIR R2 03538 EC178802 6 BASE 454 STZ SP,DIRCHANGED 00003539 455 LOOP LABEL 03539 6492C000 2 3 REG 456 CPR R2 R3 Are we at the end of the range? 0353A FE043551 457 JGT DONE 0353B 5C168800 2 BASE 458 CMZ R2,FDSTART Are we out of entries? 0353C FE023551 459 JEQ DONE 0353D EC0BC010 7 CBM 460 STZ R7/DELETEFLAG 0353E 60578801 1 6 BASE 461 LD R1 SP,DIRPTR 0353F 5C08AA60 2 ZBM 462 CMZ R2,FDET Is this an invented entry? (zero type) 03540 FE023547 463 JEQ DOFAKE 03541 DC00357D 464 CALL VERIFYREAL No, verify a real FDE 03542 41524000 1 REG 465 PARV R1 03543 40528000 2 REG 466 PARVL R2 03544 FB683553 5 467 JSR R5 RETARDPTR Special return, delete FDE request 03545 EDD78802 6 BASE 468 STW SP,DIRCHANGED Special return, FDE was modified 03546 FE0E354C 469 JMP FINDSIZE 470 * --- 00003547 471 DOFAKE LABEL 03547 DC00362B 472 CALL VERIFYFAKE Yes, find a file to attach to it 03548 41524000 1 REG 473 PARV R1 03549 40528000 2 REG 474 PARVL R2 0354A FB683553 5 475 JSR R5 RETARDPTR Special return, delete FDE request 0354B EDD78802 6 BASE 476 STW SP,DIRCHANGED Special return, FDE was modified 477 * \ / 0000354C 478 FINDSIZE LABEL 0354C F7C0354F 7 479 JBT R7/DELETEFLAG NEXT Set the file size if the FDE still exists 0354D DC00383D 480 CALL SETFILESIZE 0354E 40528000 2 REG 481 PARVL R2 0000354F 482 NEXT LABEL 0354F 18840018 2 IMM 483 ADD R2 FDLNTH 03550 FE0E3539 484 JMP LOOP 485 * --- 486 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 53 (VERIFYFILES) F 19 File verification 00003551 487 DONE LABEL 03551 19D78802 7 6 BASE 488 ADD R7 SP,DIRCHANGED Special return if any FDE was modified 03552 5D1F8005 6 STAK 489 LEAVE POP 490 * --- 491 492 * We got here because the verifier requested that the current 493 * FDE be deleted. We need to move up all FDEs following the 494 * current one, write zeros over what was the last one, back up the 495 * end pointer, and back up the current pointer which will be 496 * advanced in the main loop. 497 00003553 498 RETARDPTR LABEL 03553 E6978803 236 BASE 499 ST2 R2 SP,TEMPR2R3 03554 60178801 0 6 BASE 500 LD R0 SP,DIRPTR Tell the user that a FDE is being deleted 03555 600800B0 0 0 ZBM 501 LD R0 R0,DIRNACCT 03556 DC003A5F 502 CALL ACCTFIND 03557 40520000 0 REG 503 PARVL R0 03558 E60070A1 01 504 ST2 R0 PACCTNAME 03559 E48070A3 2 505 ST R2 PACCTNAME(2) 0355A 60978803 2 6 BASE 506 LD R2 SP,TEMPR2R3 0355B DC00384F 507 CALL FREEFILE 0355C 4256880A 2 BASE 508 PARV2L R2,FDSERNO 0355D 60978803 2 6 BASE 509 LD R2 SP,TEMPR2R3 0355E 60D38000 3 6 REG 510 LD R3 SP 0355F DC1013F9 @ 511 CALL @VPREPOUT 03560 410070A1 512 PAR PACCTNAME 03561 410070A3 513 PAR PACCTNAME(2) 03562 41168802 2 BASE 514 PAR R2,FDNAME 03563 41168804 2 BASE 515 PAR R2,FDEXTEN 03564 40003573 516 PARL DELETEMSG 03565 62978803 236 BASE 517 LD2 R2 SP,TEMPR2R3 03566 60128000 0 2 REG 518 LD R0 R2 Move entries up one slot 03567 18040018 0 IMM 519 ADD R0 FDLNTH 03568 6052C000 1 3 REG 520 LD R1 R3 03569 10528000 1 2 REG 521 SUB R1 R2 0356A 1C440004 1 IMM 522 MUL R1 CPW 0356B DA880800 2 01 523 MOVE R2 R0 R1 0356C 60440018 1 IMM 524 LD R1 FDLNTH Clear out last slot 0356D DAC00800 3 1 525 FILLI R3 R1 0 0356E 62978803 236 BASE 526 LD2 R2 SP,TEMPR2R3 Restore pointers 0356F 10840018 2 IMM 527 SUB R2 FDLNTH And move them back one entry 03570 10C40018 3 IMM 528 SUB R3 FDLNTH 03571 EDCBC010 7 CBM 529 STW R7/DELETEFLAG 03572 5C934000 5 REG 530 LDPC R5 531 * --- 03573 2044656C 532 DELETEMSG TEXTZ " Deleted FDE for \S1\.\R2\:\S3\.\R4\" 533 534 END VERIFYFDES 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 54 (VERIFYFILES) F 19 File verification 536 537 VERIFYREAL BLOCK 538 ENTRY BLKLOSTMSG 539 ENTRY VERIFYREAL 540 541 ********************************************************************************** 542 * This procedure will verify a file pointed to by a non- * 543 * invented directory entry. This may involve creating access * 544 * blocks that are missing from indexed file types, and it may * 545 * convert a bad SAF to a RAF which will need online processing to * 546 * recover what remains of the original file. It may also choose to * 547 * punt, in which case a special return is made to the calling * 548 * routine requesting that the FDE be deleted. * 549 ********************************************************************************** 550 551 BEGFRAME 00178801 6 BASE 552 FDEPTR BSS 1 Pointer to the directory entry to verify 00178802 6 BASE 553 DIRPTR BSS 1 Pointer to its DIR node 00178803 6 BASE 554 ROOTDA BSS 1 The root disk address for the file 00178804 6 BASE 555 SAVER2R3 BSS 2 556 ENDFRAME 557 00000010 BYTE 558 LOSTFLAG EQU BIT 0 Used during minor AB inspection 00000210 BYTE 559 FDEMOD EQU BIT 1 Used to remember to do a 'fde modified' return 00000410 BYTE 560 FDEDEL EQU BIT 2 Used to remember to do a 'delete fde' return 561 0357D DD1F8006 6 STAK 562 VERIFYREAL ENTR PUSH 0357E C1578802 6 BASE 563 STPV SP,DIRPTR 0357F C0578801 6 BASE 564 STPVL SP,FDEPTR 03580 E6978804 236 BASE 565 ST2 R2 SP,SAVER2R3 03581 19C40002 7 IMM 566 ADD R7 2 Assume 'ok entry' return 03582 EC0BC210 7 CBM 567 STZ R7/FDEMOD 03583 EC0BC410 7 CBM 568 STZ R7/FDEDEL 03584 60482A60 1 0 ZBM 569 LD R1 R0,FDET Get device type 03585 60803623 2 570 LD R2 DEVTYPES 03586 5C1A8C00 21 @R 571 CMZ @R2(R1) Does this type need verification? 03587 FE023600 572 JEQ DONE 03588 E4569001 1 2 REG 573 ST R1 R2+1 Save type, biased to zero origin 03589 60081185 0 0 ZBM 574 LD R0 R0,FDDA Get root disk address 0358A E4178803 0 6 BASE 575 ST R0 SP,ROOTDA 0358B DC003ADC 576 CALL DBAACCESS And get the description of that block 0358C 40520000 0 REG 577 PARVL R0 0358D 5CA43624 2 578 LDPC JUMPTAB(R2) Do check appropriate to device type 579 * --- 580 0000358E 581 CHECKSAF LABEL 0358E 60482451 1 0 ZBM 582 LD R1 R0,DBAFBITYPE Is it a SAF block? 0358F 6444000C 1 IMM 583 CPR R1 FBITSAF 03590 FE0C3596 584 JNE BADSAF 03591 5C080121 0 ZBM 585 CMZ R0,DBARELBLK Is the block relative number zero? 03592 FE0C3596 586 JNE BADSAF 03593 5C081810 0 ZBM 587 CMZ R0,DBABLKLOST Did this file lose data? 03594 FE0C3596 588 JNE BADSAF Yes 03595 FE0E35FF 589 JMP SEENDONE 590 * --- 591 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 55 (VERIFYFILES) F 19 File verification 00003596 592 BADSAF LABEL 03596 60938000 2 6 REG 593 LD R2 SP 03597 DC00371C 594 CALL CHGSAFTORAF 03598 41568802 2 BASE 595 PARV R2,DIRPTR 03599 40568801 2 BASE 596 PARVL R2,FDEPTR 0359A EDCBC210 7 CBM 597 STW R7/FDEMOD Indicate FDE was modified 0359B 60978801 2 6 BASE 598 LD R2 SP,FDEPTR 0359C 5C089186 2 ZBM 599 CMZ R2,FDLEN Does the file have any blocks? 0359D FE043600 600 JGT DONE 0359E EDCBC410 7 CBM 601 STW R7/FDEDEL No, delete FDE 0359F FE0E3600 602 JMP DONE 603 * --- 604 000035A0 605 CHECKRAF LABEL 606 ********************************************************************************** 607 * We make the raf type branch decision in two different ways, * 608 * depending on whether the volume is the old (FDLRAF) or new * 609 * (FDRAFTYPE) format. * 610 ********************************************************************************** 035A0 60578801 1 6 BASE 611 LD R1 SP,FDEPTR 035A1 5C007098 612 CMZ VOLNORAFTYP Does this volume support 4 raf types? 035A2 FE0C35A5 613 JNE OLDWAY No, do the old way 035A3 60887C20 2 1 ZBM 614 LD R2 R1,FDRAFTYPE 035A4 5CA43627 2 615 LDPC RAFJUMP(R2) 616 * --- 617 000035A5 618 OLDWAY LABEL 035A5 5C086810 1 ZBM 619 CMZ R1,FDLRAF Small or large Raf? 035A6 FE0C35CB 620 JNE LARGERAF 035A7 FE0E35B9 621 JMP SMALLRAF 622 * --- 623 624 ********************************************************************************** 625 * Normally, there is nothing to do for an empty RAF. However, * 626 * we need to check whether this FDE is in the old format, when the * 627 * only RAF types were small and large. If the root block address * 628 * is non-zero, that indicates the old format, and we need to change * 629 * FDRAFTYPE to small or large based on FDLRAF (the old small/large * 630 * flag). * 631 ********************************************************************************** 632 000035A8 633 EMPTYRAF LABEL 035A8 5C085185 1 ZBM 634 CMZ R1,FDDA Is there a root block? 035A9 FE023600 635 JEQ DONE No, it really is an empty RAF, so we're done 035AA D1886810 1 ZBM 636 CLRT R1,FDLRAF Yes, see if the RAF is small or large 035AB 60840002 2 IMM 637 LD R2 RAFTSMALL Assume small 035AC FE0235AE 638 JEQ GOTSIZE assumption correct 035AD 60840003 2 IMM 639 LD R2 RAFTLARGE Made an ass of u and me 000035AE 640 GOTSIZE LABEL 035AE E4887C20 2 1 ZBM 641 ST R2 R1,FDRAFTYPE Save raf type in new format 035AF EDCBC210 7 CBM 642 STW R7/FDEMOD Directory entry was modified 035B0 FE0E35A0 643 JMP CHECKRAF Start over with correct raf type 644 * --- 645 000035B1 646 TINYRAF LABEL 035B1 60882451 2 0 ZBM 647 LD R2 R0,DBAFBITYPE Root of tiny RAF should be a data block 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 56 (VERIFYFILES) F 19 File verification 035B2 6484000F 2 IMM 648 CPR R2 FBITRAFD 035B3 FE0235FF 649 JEQ SEENDONE It is, everything's OK 035B4 EC085185 1 ZBM 650 STZ R1,FDDA It's not, make the RAF empty 035B5 EC087C20 1 ZBM 651 STZ R1,FDRAFTYPE 035B6 EC085186 1 ZBM 652 STZ R1,FDLEN 035B7 EDCBC210 7 CBM 653 STW R7/FDEMOD Indicate FDE was modified 035B8 FE0E3606 654 JMP WARNBLKLOST And inform user 655 * --- 656 000035B9 657 SMALLRAF LABEL 035B9 6084000E 2 IMM 658 LD R2 FBITSRAF Root of small RAF should be Minor AB 035BA 64882451 2 0 ZBM 659 CPR R2 R0,DBAFBITYPE 035BB FE0235C7 660 JEQ SRAFOK 035BC 60D38000 3 6 REG 661 LD R3 SP It's not, create one 035BD DC0037C6 662 CALL BUILDAB 035BE 41528000 2 REG 663 PARV R2 Type of AB we need 035BF 4156C802 3 BASE 664 PARV R3,DIRPTR Pointer to DIR node 035C0 4156C801 3 BASE 665 PARV R3,FDEPTR Pointer to FDE 035C1 41440000 IMM 666 PARV 0 Range of blocks to include 035C2 404403FF IMM 667 PARVL WPP-1 035C3 60578801 1 6 BASE 668 LD R1 SP,FDEPTR Set root block address 035C4 E4085185 0 1 ZBM 669 ST R0 R1,FDDA 035C5 EDCBC210 7 CBM 670 STW R7/FDEMOD Indicate FDE was modified 035C6 FE0E3600 671 JMP DONE 672 * --- 673 000035C7 674 SRAFOK LABEL 035C7 EDC81610 0 ZBM 675 STW R0,DBASEEN File is OK, mark the root block 035C8 5C081810 0 ZBM 676 CMZ R0,DBABLKLOST Did this file lose data? 035C9 FE0C3606 677 JNE WARNBLKLOST Yes, warn the user 035CA FE0E3600 678 JMP DONE 679 * --- 680 000035CB 681 LARGERAF LABEL 035CB 6084000D 2 IMM 682 LD R2 FBITLRAF Should be a Major AB 035CC 64882451 2 0 ZBM 683 CPR R2 R0,DBAFBITYPE 035CD FE0235D9 684 JEQ LRAFOK 035CE 60D38000 3 6 REG 685 LD R3 SP It's not, create one 035CF DC0037C6 686 CALL BUILDAB 035D0 41528000 2 REG 687 PARV R2 Type of AB we need 035D1 4156C802 3 BASE 688 PARV R3,DIRPTR Pointer to DIR node 035D2 4156C801 3 BASE 689 PARV R3,FDEPTR Pointer to FDE 035D3 41440000 IMM 690 PARV 0 Range of blocks to include 035D4 404403FF IMM 691 PARVL WPP-1 (Relative block numbers of minor ABs) 035D5 60578801 1 6 BASE 692 LD R1 SP,FDEPTR Set root block address 035D6 E4085185 0 1 ZBM 693 ST R0 R1,FDDA 035D7 EDCBC210 7 CBM 694 STW R7/FDEMOD Indicate FDE was modified 035D8 FE0E3600 695 JMP DONE 696 * --- 697 698 * If the BLKLOST flag is set, we can go ahead as usual and 699 * give a warning... if it is not set, however, we cannot assume that 700 * it is correct because the flag may be set in one of the minor 701 * access blocks. Whether it is set in the major is dependent on 702 * the order in which the blocks were seen. We therefore must 703 * examine the subordinate BLKLOST flags. 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 57 (VERIFYFILES) F 19 File verification 704 000035D9 705 LRAFOK LABEL 035D9 EDC81610 0 ZBM 706 STW R0,DBASEEN File is here, mark the root block 035DA 5C081810 0 ZBM 707 CMZ R0,DBABLKLOST 035DB FE0C3606 708 JNE WARNBLKLOST Flag already on, no need to look 035DC EC0BC010 7 CBM 709 STZ R7/LOSTFLAG 035DD 60178803 0 6 BASE 710 LD R0 SP,ROOTDA Read in the major AB 035DE DC1013E0 @ 711 CALL @VREAD 035DF 41520000 0 REG 712 PARV R0 035E0 41407000 713 PARV PFREADPLACE 035E1 41007001 714 PAR READFBI 035E2 41440000 IMM 715 PARV 0 035E3 400035F3 716 PARL MAJREADERR 035E4 608403FF 2 IMM 717 LD R2 WPP-1 Prepare pointer into major AB 000035E5 718 CHECKLOOP LABEL 035E5 60244800 0 2 719 LD R0 READPLACE(R2) Get minor AB address 035E6 FA0235EB 0 720 JEQZ R0 CHECKNEXT No block there, continue 035E7 DC003ADC 721 CALL DBAACCESS Get description of block 035E8 40520000 0 REG 722 PARVL R0 035E9 5C081810 0 ZBM 723 CMZ R0,DBABLKLOST Is the data lost flag on? 035EA FE0C35EE 724 JNE RAFLOSTD yes, done 725 * \ / 000035EB 726 CHECKNEXT LABEL 035EB D0528000 2 REG 727 DEC R2 035EC FE0635E5 728 JGE CHECKLOOP 729 * \ / 035ED F3C03600 7 730 JBF R7/LOSTFLAG DONE jump if no lost data 000035EE 731 RAFLOSTD LABEL 035EE 60178803 0 6 BASE 732 LD R0 SP,ROOTDA 035EF DC003ADC 733 CALL DBAACCESS 035F0 40520000 0 REG 734 PARVL R0 035F1 EDC81810 0 ZBM 735 STW R0,DBABLKLOST 035F2 FE0E3606 736 JMP WARNBLKLOST 737 * --- 738 000035F3 739 MAJREADERR LABEL 035F3 EDCBC010 7 CBM 740 STW R7/LOSTFLAG 035F4 FE0E35EE 741 JMP RAFLOSTD 742 * --- 743 000035F5 744 CHECKCODE LABEL 035F5 60482451 1 0 ZBM 745 LD R1 R0,DBAFBITYPE Is it a Code Control Block? 035F6 64440013 1 IMM 746 CPR R1 FBITCCB 035F7 FE0C35FC 747 JNE BADCODE 035F8 EDC81610 0 ZBM 748 STW R0,DBASEEN Mark root block accounted for 035F9 5C081810 0 ZBM 749 CMZ R0,DBABLKLOST Has this file lost data? 035FA FE0C3606 750 JNE WARNBLKLOST Yes, warn the user 035FB FE0E3600 751 JMP DONE 752 * --- 753 000035FC 754 BADCODE LABEL 035FC EDCBC410 7 CBM 755 STW R7/FDEDEL Request that FDE be deleted 035FD EDCBC210 7 CBM 756 STW R7/FDEMOD 035FE FE0E3600 757 JMP DONE 758 * --- 759 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 58 (VERIFYFILES) F 19 File verification 000035FF 760 SEENDONE LABEL 035FF EDC81610 0 ZBM 761 STW R0,DBASEEN File is OK, mark the root block 00003600 762 DONE LABEL 03600 F3C23602 7 763 JBF R7/FDEMOD NOMOD Was the FDE modified? 03601 11C40001 7 IMM 764 SUB R7 1 Yes, indicate so to the caller 00003602 765 NOMOD LABEL 03602 F3C43604 7 766 JBF R7/FDEDEL NODEL Do we want it deleted? 03603 11C40001 7 IMM 767 SUB R7 1 Yes, ask caller to do so 00003604 768 NODEL LABEL 03604 62978804 236 BASE 769 LD2 R2 SP,SAVER2R3 03605 5D1F8006 6 STAK 770 LEAVE POP 771 * --- 772 00003606 773 WARNBLKLOST LABEL 03606 60178802 0 6 BASE 774 LD R0 SP,DIRPTR Inform the user that a file has 03607 DC003A5F 775 CALL ACCTFIND lost data 03608 404800B0 0 ZBM 776 PARVL R0,DIRNACCT 03609 E60070A1 01 777 ST2 R0 PACCTNAME 0360A E48070A3 2 778 ST R2 PACCTNAME(2) 0360B 60978801 2 6 BASE 779 LD R2 SP,FDEPTR 0360C EDC8B610 2 ZBM 780 STW R2,FDGHOST 0360D 60D38000 3 6 REG 781 LD R3 SP 0360E DC1013F9 @ 782 CALL @VPREPOUT 0360F 410070A1 783 PAR PACCTNAME 03610 410070A3 784 PAR PACCTNAME(2) 03611 41168802 2 BASE 785 PAR R2,FDNAME 03612 41168804 2 BASE 786 PAR R2,FDEXTEN 03613 40003615 787 PARL BLKLOSTMSG 03614 FE0E3600 788 JMP DONE 789 * --- 790 03615 20576172 791 BLKLOSTMSG TEXTZ " Warning: Some data lost from \S1\.\R2\:\S3\.\R4\" 792 03622 70000000 793 DEVTYPESB VFD 070000000 03623 00483622 794 DEVTYPES PTR DEVTYPESB/BIT 0 03624 0000358E 795 JUMPTAB ADR CHECKSAF 03625 000035A0 796 ADR CHECKRAF 03626 000035F5 797 ADR CHECKCODE 03627 000035A8 798 RAFJUMP ADR EMPTYRAF 03628 000035B1 799 ADR TINYRAF 03629 000035B9 800 ADR SMALLRAF 0362A 000035CB 801 ADR LARGERAF 802 803 END VERIFYREAL 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 59 (VERIFYFILES) F 19 File verification 805 806 VERIFYFAKE BLOCK 807 ENTRY VERIFYFAKE 808 809 BEGFRAME 00178801 6 BASE 810 FDEPTR BSS 1 Pointer to the directory entry to verify 00178802 6 BASE 811 DIRPTR BSS 1 Pointer to its DIR node 00178803 6 BASE 812 BLOCKNUM BSS 1 Index into DBA 00178804 6 BASE 813 SERNUM BSS 2 Serial number of the file 814 * The following are for RAF processing 00178806 6 BASE 815 MAJORDA BSS 1 Where we saw a major access block 00178807 6 BASE 816 MINORDA BSS 1 Where we saw a minor access block 00178808 6 BASE 817 DATADA BSS 1 Where we saw a data block 00178809 6 BASE 818 LARGESTREL BSS 1 The largest RELBLK we've seen on a RAF data block 819 0017880A 6 BASE 820 SAVER2R3 BSS 2 821 ENDFRAME 822 00000010 BYTE 823 LOSTFLAG EQU BIT 0 824 0362B DD1F800C 6 STAK 825 VERIFYFAKE ENTR PUSH 0362C C1578802 6 BASE 826 STPV SP,DIRPTR 0362D C0578801 6 BASE 827 STPVL SP,FDEPTR 0362E E697880A 236 BASE 828 ST2 R2 SP,SAVER2R3 0362F 19C40001 7 IMM 829 ADD R7 1 This procedure always modifies the FDE 03630 EC178803 6 BASE 830 STZ SP,BLOCKNUM 831 * \ / 832 833 * First step: find a block belonging to the current account 834 * which is not accounted for, and which is part of a file (not a 835 * sharelist or something) 836 837 * \ / 00003631 838 SEARCHLOOP LABEL 03631 60938000 2 6 REG 839 LD R2 SP 03632 DC003B67 840 CALL DBAFINDACCT 03633 60168802 0 2 BASE 841 LD R0 R2,DIRPTR 03634 414800B0 0 ZBM 842 PARV R0,DIRNACCT 03635 BC168803 0 2 BASE 843 INCL R0 R2,BLOCKNUM 03636 40520000 0 REG 844 PARVL R0 03637 FA023704 0 845 JEQZ R0 DONE No more blocks found (The only way this 03637 FA023704 0 846 can happen, I think, is if the share list 03637 FA023704 0 847 block is the only survivor from the file) 03638 E4178803 0 6 BASE 848 ST R0 SP,BLOCKNUM 03639 DC003ADC 849 CALL DBAACCESS 0363A 40520000 0 REG 850 PARVL R0 0363B 5C081610 0 ZBM 851 CMZ R0,DBASEEN Is block accounted for? 0363C FE0C3631 852 JNE SEARCHLOOP Yes, keep looking 0363D 60482451 1 0 ZBM 853 LD R1 R0,DBAFBITYPE Is the block part of a file structure? 0363E F6723631 1 854 JBT R1/BIT 25 SEARCHLOOP (skip free blocks and other oddities) 0363F 60803707 2 855 LD R2 FILEBLOCKS 03640 5C1A8C00 21 @R 856 CMZ @R2(R1) 03641 FE0C364A 857 JNE FILETYPEDSP 03642 64440012 1 IMM 858 CPR R1 FBITFSLB Is it the file's share list? 03643 FE0C3631 859 JNE SEARCHLOOP 03644 EDC81610 0 ZBM 860 STW R0,DBASEEN Block is accounted for 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 60 (VERIFYFILES) F 19 File verification 03645 60978803 2 6 BASE 861 LD R2 SP,BLOCKNUM 03646 60578801 1 6 BASE 862 LD R1 SP,FDEPTR 03647 EDCA8010 2 CBM 863 STW R2/SHLDSKFLGB Indicate share list is separate 03648 E4964814 2 1 BASE 864 ST R2 R1,FDSHL And store in directory entry 03649 FE0E3631 865 JMP SEARCHLOOP 866 * --- 867 868 * Now record file serial number and branch according to file type 0000364A 869 FILETYPEDSP LABEL 0364A EDC81610 0 ZBM 870 STW R0,DBASEEN Block is accounted for 871 RESTOREFSN R0,R2,R3 03650 E0578801 1 6 BASE 872 EXCH R1 SP,FDEPTR (Is this cheating?) 03651 E696480A 231 BASE 873 ST2 R2 R1,FDSERNO 03652 E0578801 1 6 BASE 874 EXCH R1 SP,FDEPTR 03653 E6978804 236 BASE 875 ST2 R2 SP,SERNUM 03654 6444000C 1 IMM 876 CPR R1 FBITSAF 03655 FE0236EA 877 JEQ DOSAF 03656 6444000F 1 IMM 878 CPR R1 FBITRAFD 03657 FE0A366E 879 JLE DORAF 880 * \ / 881 * For a CODE, we need to see if we have a CCB. If so, fine, 882 * else we delete the file. 883 03658 EDD78803 6 BASE 884 STW SP,BLOCKNUM 00003659 885 CCBSEARCH LABEL 03659 60938000 2 6 REG 886 LD R2 SP 0365A DC003B07 887 CALL DBAFINDFILE Find the next file block 0365B 43568804 2 BASE 888 PARV2 R2,SERNUM 0365C BC168803 0 2 BASE 889 INCL R0 R2,BLOCKNUM 0365D 40520000 0 REG 890 PARVL R0 0365E FA02366C 0 891 JEQZ R0 NOCCB The root block was lost 0365F E4178803 0 6 BASE 892 ST R0 SP,BLOCKNUM 03660 DC003ADC 893 CALL DBAACCESS Get the block description 03661 40520000 0 REG 894 PARVL R0 03662 60482451 1 0 ZBM 895 LD R1 R0,DBAFBITYPE 03663 64440013 1 IMM 896 CPR R1 FBITCCB Is it a code control block? 03664 FE0C3659 897 JNE CCBSEARCH No, keep looking 898 * \ / We now have a CCB 03665 EDC81610 0 ZBM 899 STW R0,DBASEEN Block is accounted for 03666 60978801 2 6 BASE 900 LD R2 SP,FDEPTR 03667 60578803 1 6 BASE 901 LD R1 SP,BLOCKNUM Set root disk address 03668 E4489185 1 2 ZBM 902 ST R1 R2,FDDA 03669 60440003 1 IMM 903 LD R1 HTYPECODE Set file type 0366A E448AA60 1 2 ZBM 904 ST R1 R2,FDET 0366B FE0E3704 905 JMP DONE 906 * --- 907 0000366C 908 NOCCB LABEL 0366C 11C40001 7 IMM 909 SUB R7 1 Request file be deleted 0366D FE0E3704 910 JMP DONE 911 * --- 912 913 * For a RAF, we need to see what kind of a RAF it will be -- 914 * large, small, etc. To do this we need to scan the DBA, and find 915 * either an existing major access block or a data block with a 916 * RELBLK > WPP. 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 61 (VERIFYFILES) F 19 File verification 917 0000366E 918 DORAF LABEL 0366E 60978801 2 6 BASE 919 LD R2 SP,FDEPTR Set file type to RAF 0366F 60040002 0 IMM 920 LD R0 HTYPERAF 03670 E408AA60 0 2 ZBM 921 ST R0 R2,FDET 03671 EC178806 6 BASE 922 STZ SP,MAJORDA 03672 EC178807 6 BASE 923 STZ SP,MINORDA 03673 EC178808 6 BASE 924 STZ SP,DATADA 03674 D1578809 6 BASE 925 STMW SP,LARGESTREL 03675 EDD78803 6 BASE 926 STW SP,BLOCKNUM 00003676 927 RAFTYPELOOP LABEL 03676 60938000 2 6 REG 928 LD R2 SP 03677 DC003B07 929 CALL DBAFINDFILE Find the next file block 03678 43568804 2 BASE 930 PARV2 R2,SERNUM 03679 BC168803 0 2 BASE 931 INCL R0 R2,BLOCKNUM 0367A 40520000 0 REG 932 PARVL R0 0367B FA023694 0 933 JEQZ R0 RAFTYPEDONE No more blocks, see what we found 0367C E4178803 0 6 BASE 934 ST R0 SP,BLOCKNUM 0367D DC003ADC 935 CALL DBAACCESS 0367E 40520000 0 REG 936 PARVL R0 0367F 60482451 1 0 ZBM 937 LD R1 R0,DBAFBITYPE 03680 6444000D 1 IMM 938 CPR R1 FBITLRAF Is it a major access block? 03681 FE0C3685 939 JNE NOTMAJOR 03682 60978803 2 6 BASE 940 LD R2 SP,BLOCKNUM Yes, we're done 03683 E4978806 2 6 BASE 941 ST R2 SP,MAJORDA Remember where we saw it 03684 FE0E36A7 942 JMP ITSLARGE 943 * --- 00003685 944 NOTMAJOR LABEL 03685 6444000E 1 IMM 945 CPR R1 FBITSRAF Is it a minor access block? 03686 FE0C368A 946 JNE NOTMINOR 03687 60978803 2 6 BASE 947 LD R2 SP,BLOCKNUM Yes, remember where we saw it 03688 E4978807 2 6 BASE 948 ST R2 SP,MINORDA 03689 FE0E3693 949 JMP RAFTYPENEXT 950 * --- 0000368A 951 NOTMINOR LABEL 0368A 6444000F 1 IMM 952 CPR R1 FBITRAFD Is it a data block? 0368B FE0C3693 953 JNE RAFTYPENEXT No, ignore it this time around 0368C 60480121 1 0 ZBM 954 LD R1 R0,DBARELBLK 0368D 64440400 1 IMM 955 CPR R1 WPP Is relative block number > 1023? 0368E FE0636A7 956 JGE ITSLARGE Yes, it's a large file 0368F 54578809 1 6 BASE 957 MAX R1 SP,LARGESTREL Remember the largest RELBLK 03690 E4578809 1 6 BASE 958 ST R1 SP,LARGESTREL 03691 60178803 0 6 BASE 959 LD R0 SP,BLOCKNUM Remember where we saw a data block 03692 E4178808 0 6 BASE 960 ST R0 SP,DATADA 00003693 961 RAFTYPENEXT LABEL 03693 FE0E3676 962 JMP RAFTYPELOOP 963 * --- 964 00003694 965 RAFTYPEDONE LABEL 03694 60978801 2 6 BASE 966 LD R2 SP,FDEPTR 03695 5C178809 6 BASE 967 CMZ SP,LARGESTREL 03696 FE02369C 968 JEQ ITSTINY Only block zero seen, it's Tiny 03697 FE0436A2 969 JGT ITSSMALL 00003698 970 ITSEMPTY LABEL No data blocks seen, it's Empty 03698 60040000 0 IMM 971 LD R0 RAFTEMPTY Easy case 03699 E408BC20 0 2 ZBM 972 ST R0 R2,FDRAFTYPE Set type to Empty 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 62 (VERIFYFILES) F 19 File verification 0369A EC089186 2 ZBM 973 STZ R2,FDLEN Set length to zero 0369B FE0E3704 974 JMP DONE 975 * --- 976 0000369C 977 ITSTINY LABEL 0369C 60040001 0 IMM 978 LD R0 RAFTTINY Just as easy 0369D E408BC20 0 2 ZBM 979 ST R0 R2,FDRAFTYPE Set type to Tiny 0369E 60178808 0 6 BASE 980 LD R0 SP,DATADA Set data address 0369F E4089185 0 2 ZBM 981 ST R0 R2,FDDA 036A0 EDC89186 2 ZBM 982 STW R2,FDLEN Set length to one 036A1 FE0E3704 983 JMP DONE 984 * --- 985 000036A2 986 ITSSMALL LABEL 036A2 60040002 0 IMM 987 LD R0 RAFTSMALL Set RAF type to Small 036A3 E408BC20 0 2 ZBM 988 ST R0 R2,FDRAFTYPE 036A4 6084000E 2 IMM 989 LD R2 FBITSRAF and verify a minor AB as the root 036A5 60D78807 3 6 BASE 990 LD R3 SP,MINORDA 036A6 FE0E36AC 991 JMP CHEKRAFROOT 992 * --- 993 000036A7 994 ITSLARGE LABEL 036A7 60978801 2 6 BASE 995 LD R2 SP,FDEPTR 036A8 60040003 0 IMM 996 LD R0 RAFTLARGE Set RAF type to Large 036A9 E408BC20 0 2 ZBM 997 ST R0 R2,FDRAFTYPE 036AA 6084000D 2 IMM 998 LD R2 FBITLRAF and verify a major AB as the root 036AB 60D78806 3 6 BASE 999 LD R3 SP,MAJORDA 1000 * \ / 000036AC 1001 CHEKRAFROOT LABEL 036AC DC003ADC 1002 CALL DBAACCESS Get the access block description 036AD 4052C000 3 REG 1003 PARVL R3 036AE 60482451 1 0 ZBM 1004 LD R1 R0,DBAFBITYPE 036AF 64528000 1 2 REG 1005 CPR R1 R2 Is it the right type? 036B0 FE0C36E0 1006 JNE MAKERAFROOT 036B1 EDC81610 0 ZBM 1007 STW R0,DBASEEN Yes, mark it accounted for 036B2 60978801 2 6 BASE 1008 LD R2 SP,FDEPTR and set it in the directory 036B3 E4C89185 3 2 ZBM 1009 ST R3 R2,FDDA 036B4 5C081810 0 ZBM 1010 CMZ R0,DBABLKLOST Did the file lose data? 036B5 FE0C36B8 1011 JNE WARNBLKLOST 036B6 6444000D 1 IMM 1012 CPR R1 FBITLRAF 036B7 FE0C3704 1013 JNE DONE 1014 * \ / 1015 * As in the case with surviving file directory entries for 1016 * RAFs, a reset BLKLOST flag cannot be relied upon for a major 1017 * access block. So we need to check the flags in the minor blocks. 1018 * \ / 000036B8 1019 WARNBLKLOST LABEL 036B8 EC0BC010 7 CBM 1020 STZ R7/LOSTFLAG 036B9 DC1013E0 @ 1021 CALL @VREAD Read the major access block 036BA 4152C000 3 REG 1022 PARV R3 036BB 41407000 1023 PARV PFREADPLACE 036BC 41007001 1024 PAR READFBI 036BD 41440000 IMM 1025 PARV 0 036BE 400036E0 1026 PARL MAKERAFROOT 036BF 608403FF 2 IMM 1027 LD R2 WPP-1 Prepare pointer into major AB 000036C0 1028 CHECKLOOP LABEL 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 63 (VERIFYFILES) F 19 File verification 036C0 60244800 0 2 1029 LD R0 READPLACE(R2) Get minor AB address 036C1 FA0236C8 0 1030 JEQZ R0 CHECKNEXT Skip over holes 036C2 DC003ADC 1031 CALL DBAACCESS Get access to minor's description 036C3 40520000 0 REG 1032 PARVL R0 036C4 5C081810 0 ZBM 1033 CMZ R0,DBABLKLOST Was data lost? 036C5 FE0236C8 1034 JEQ CHECKNEXT 036C6 EDCBC010 7 CBM 1035 STW R7/LOSTFLAG Yes, remember and exit 036C7 FE0E36CA 1036 JMP CHECKDONE 1037 * --- 1038 000036C8 1039 CHECKNEXT LABEL 036C8 D0528000 2 REG 1040 DEC R2 Check the entire major access block 036C9 FE0636C0 1041 JGE CHECKLOOP 1042 * \ / 000036CA 1043 CHECKDONE LABEL 036CA 60178801 0 6 BASE 1044 LD R0 SP,FDEPTR 036CB 60081185 0 0 ZBM 1045 LD R0 R0,FDDA 036CC DC003ADC 1046 CALL DBAACCESS 036CD 40520000 0 REG 1047 PARVL R0 036CE 604BC010 1 7 CBM 1048 LD R1 R7/LOSTFLAG 036CF E4481810 1 0 ZBM 1049 ST R1 R0,DBABLKLOST 036D0 FA423704 1 1050 JEQZ R1 DONE 036D1 60178802 0 6 BASE 1051 LD R0 SP,DIRPTR Data was indeed lost, give a warning 036D2 DC003A5F 1052 CALL ACCTFIND 036D3 404800B0 0 ZBM 1053 PARVL R0,DIRNACCT 036D4 E60070A1 01 1054 ST2 R0 PACCTNAME 036D5 E48070A3 2 1055 ST R2 PACCTNAME(2) 036D6 60978801 2 6 BASE 1056 LD R2 SP,FDEPTR 036D7 EDC8B610 2 ZBM 1057 STW R2,FDGHOST 036D8 60D38000 3 6 REG 1058 LD R3 SP 036D9 DC1013F9 @ 1059 CALL @VPREPOUT 036DA 410070A1 1060 PAR PACCTNAME 036DB 410070A3 1061 PAR PACCTNAME(2) 036DC 41168802 2 BASE 1062 PAR R2,FDNAME 036DD 41168804 2 BASE 1063 PAR R2,FDEXTEN 036DE 40003615 1064 PARL BLKLOSTMSG 036DF FE0E3704 1065 JMP DONE 1066 * --- 1067 000036E0 1068 MAKERAFROOT LABEL 036E0 60D38000 3 6 REG 1069 LD R3 SP 036E1 DC0037C6 1070 CALL BUILDAB Create the missing root block 036E2 41528000 2 REG 1071 PARV R2 Type of access block we need 036E3 4156C802 3 BASE 1072 PARV R3,DIRPTR 036E4 4156C801 3 BASE 1073 PARV R3,FDEPTR 036E5 41440000 IMM 1074 PARV 0 036E6 404403FF IMM 1075 PARVL WPP-1 036E7 60978801 2 6 BASE 1076 LD R2 SP,FDEPTR Set root address into directory 036E8 E4089185 0 2 ZBM 1077 ST R0 R2,FDDA 036E9 FE0E3704 1078 JMP DONE 1079 * --- 1080 1081 1082 ********************************************************************************** 1083 * For a SAF, we need to see if we have the root block. If so, * 1084 * the BLKLOST flag will determine whether the file is good or needs * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 64 (VERIFYFILES) F 19 File verification 1085 * to be turned into a RAF. If there is no root block, we make it a * 1086 * RAF. * 1087 ********************************************************************************** 1088 000036EA 1089 DOSAF LABEL 036EA EDD78803 6 BASE 1090 STW SP,BLOCKNUM 000036EB 1091 ROOTSRCH LABEL 036EB 60938000 2 6 REG 1092 LD R2 SP 036EC DC003B07 1093 CALL DBAFINDFILE Find another block from this file 036ED 43568804 2 BASE 1094 PARV2 R2,SERNUM 036EE BC168803 0 2 BASE 1095 INCL R0 R2,BLOCKNUM 036EF 40520000 0 REG 1096 PARVL R0 036F0 FA0236FF 0 1097 JEQZ R0 BADSAF No more blocks, file lost its root 036F1 E4178803 0 6 BASE 1098 ST R0 SP,BLOCKNUM 036F2 DC003ADC 1099 CALL DBAACCESS Get disk block description 036F3 40520000 0 REG 1100 PARVL R0 036F4 5C080121 0 ZBM 1101 CMZ R0,DBARELBLK Is this the root? 036F5 FE0C36EB 1102 JNE ROOTSRCH No, keep looking 1103 036F6 5C081810 0 ZBM 1104 CMZ R0,DBABLKLOST It has a root, but is it complete? 036F7 FE0C36FF 1105 JNE BADSAF 1106 * The file is ok, mark the root block and link it to a directory entry 036F8 EDC81610 0 ZBM 1107 STW R0,DBASEEN Block is accounted for 036F9 60D78801 3 6 BASE 1108 LD R3 SP,FDEPTR Found the root block 036FA 60178803 0 6 BASE 1109 LD R0 SP,BLOCKNUM Save the disk address 036FB E408D185 0 3 ZBM 1110 ST R0 R3,FDDA 036FC 60040001 0 IMM 1111 LD R0 HTYPESAF Set file type to SAF 036FD E408EA60 0 3 ZBM 1112 ST R0 R3,FDET 036FE FE0E3708 1113 JMP GETSLB 1114 * --- 1115 000036FF 1116 BADSAF LABEL 036FF 60938000 2 6 REG 1117 LD R2 SP 03700 DC00371C 1118 CALL CHGSAFTORAF 03701 41568802 2 BASE 1119 PARV R2,DIRPTR 03702 40568801 2 BASE 1120 PARVL R2,FDEPTR 03703 FE0E3704 1121 JMP DONE 1122 * \ / 00003704 1123 DONE LABEL 03704 6297880A 236 BASE 1124 LD2 R2 SP,SAVER2R3 03705 5D1F800C 6 STAK 1125 LEAVE POP 1126 * --- 1127 03706 000F1800 1128 FILEBLOCKSB VFD 0000F1800 03707 00483706 1129 FILEBLOCKS PTR FILEBLOCKSB/BIT 0 1130 1131 1132 ********************************************************************************** 1133 * After the directory entry is all set with respect to the * 1134 * file type and the disk address, there still might be a share list * 1135 * block which hasn't been seen yet. Finding this is a common * 1136 * requirement for all file types, so we come through here after * 1137 * building the file. * 1138 ********************************************************************************** 1139 00003708 1140 GETSLB LABEL 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 65 (VERIFYFILES) F 19 File verification 03708 60978801 2 6 BASE 1141 LD R2 SP,FDEPTR 03709 5C168814 2 BASE 1142 CMZ R2,FDSHL Have we seen the SLB already? 0370A FE0C3704 1143 JNE DONE Yes, we don't need to do this 0370B BCD78803 3 6 BASE 1144 INCL R3 SP,BLOCKNUM 0370C DC003B07 1145 CALL DBAFINDFILE Find another block from this file 0370D 4356880A 2 BASE 1146 PARV2 R2,FDSERNO 0370E 4052C000 3 REG 1147 PARVL R3 0370F FA023704 0 1148 JEQZ R0 DONE File had no share list 03710 E4178803 0 6 BASE 1149 ST R0 SP,BLOCKNUM 03711 DC003ADC 1150 CALL DBAACCESS 03712 40520000 0 REG 1151 PARVL R0 03713 60482451 1 0 ZBM 1152 LD R1 R0,DBAFBITYPE Is this the file's share list block? 03714 64440012 1 IMM 1153 CPR R1 FBITFSLB 03715 FE0C3708 1154 JNE GETSLB No, keep looking 03716 EDC81610 0 ZBM 1155 STW R0,DBASEEN Block is accounted for 03717 60178803 0 6 BASE 1156 LD R0 SP,BLOCKNUM 03718 EDCA0010 0 CBM 1157 STW R0/SHLDSKFLGB 03719 60578801 1 6 BASE 1158 LD R1 SP,FDEPTR 0371A E4164814 0 1 BASE 1159 ST R0 R1,FDSHL 0371B FE0E3704 1160 JMP DONE 1161 * --- 1162 1163 END VERIFYFAKE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 66 (VERIFYFILES) F 19 File verification 1165 1166 CHGSAFTORAF BLOCK 1167 ENTRY CHGSAFTORAF 1168 1169 ********************************************************************************** 1170 * This procedure will change a SAF to a RAF in the proper * 1171 * format for an online recovery program. It may return with the * 1172 * file size in the directory entry equal to zero, which means that * 1173 * there were no data blocks associated with the file. * 1174 ********************************************************************************** 1175 1176 BEGFRAME 00178801 6 BASE 1177 DIRPTR BSS 1 00178802 6 BASE 1178 FDEPTR BSS 1 00178803 6 BASE 1179 BLOCKNUM BSS 1 1180 * The following two variables are used to find the lowest-numbered 1181 * block of a SAF which survived, if the root did not 00178804 6 BASE 1182 MINSAFBLK BSS 1 The non-root block closest to the SAF root 00178805 6 BASE 1183 MINSAFPLC BSS 1 The address of the that block 00178806 6 BASE 1184 MININDEX BSS 1 The last slot used in the minor AB 1185 ENDFRAME 1186 0371C DD1F8007 6 STAK 1187 CHGSAFTORAF ENTR PUSH 0371D C1578801 6 BASE 1188 STPV SP,DIRPTR 0371E C0578802 6 BASE 1189 STPVL SP,FDEPTR 1190 1191 * First step is to unmark all blocks belonging to the SAF (any 1192 * blocks in an uninterrupted chain beginning with the root will 1193 * have been marked accounted for). 0371F EDD78803 6 BASE 1194 STW SP,BLOCKNUM 00003720 1195 UNACCLOOP LABEL 03720 60938000 2 6 REG 1196 LD R2 SP 03721 DC003B07 1197 CALL DBAFINDFILE Find another block from this file 03722 4356880A 2 BASE 1198 PARV2 R2,FDSERNO 03723 BC168803 0 2 BASE 1199 INCL R0 R2,BLOCKNUM 03724 40520000 0 REG 1200 PARVL R0 03725 FA02372B 0 1201 JEQZ R0 UNACCDONE No more blocks 03726 E4178803 0 6 BASE 1202 ST R0 SP,BLOCKNUM 03727 DC003ADC 1203 CALL DBAACCESS Get disk block description 03728 40520000 0 REG 1204 PARVL R0 03729 EC081610 0 ZBM 1205 STZ R0,DBASEEN Mark block not accounted for 0372A FE0E3720 1206 JMP UNACCLOOP 1207 * --- 1208 1209 * Create a minor access block, reassign the block to this file, 1210 * and store some values in the directory entry 1211 0000372B 1212 UNACCDONE LABEL 1213 CLEAR MIN,0,FBITSRAF Create an empty minor AB 03736 DC403BB2 1214 CALLNP GETFREEBLK 1215 03737 60978802 2 6 BASE 1216 LD R2 SP,FDEPTR Point the FDE at it 03738 38C07025 3 1217 LEA R3 MINFBI 03739 E4089185 0 2 ZBM 1218 ST R0 R2,FDDA 0373A E408D181 0 3 ZBM 1219 ST R0 R3,FBIDA 0373B 6216880A 012 BASE 1220 LD2 R0 R2,FDSERNO 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 67 (VERIFYFILES) F 19 File verification 0373C E616C808 013 BASE 1221 ST2 R0 R3,FBISERNO 0373D EDC89186 2 ZBM 1222 STW R2,FDLEN 0373E 60040002 0 IMM 1223 LD R0 RAFTSMALL Make the file a RAF 0373F E408BC20 0 2 ZBM 1224 ST R0 R2,FDRAFTYPE 03740 60040002 0 IMM 1225 LD R0 HTYPERAF 03741 E408AA60 0 2 ZBM 1226 ST R0 R2,FDET 03742 60178801 0 6 BASE 1227 LD R0 SP,DIRPTR 03743 DC003A5F 1228 CALL ACCTFIND 03744 404800B0 0 ZBM 1229 PARVL R0,DIRNACCT 03745 E616C805 013 BASE 1230 ST2 R0 R3,FBIACCT 03746 E496C807 2 3 BASE 1231 ST R2 R3,FBIPROJ 03747 DC003ADC 1232 CALL DBAACCESS Change the block's description 03748 4048D181 3 ZBM 1233 PARVL R3,FBIDA 03749 6044000E 1 IMM 1234 LD R1 FBITSRAF 0374A E4482451 1 0 ZBM 1235 ST R1 R0,DBAFBITYPE 0374B 6256C808 123 BASE 1236 LD2 R1 R3,FBISERNO 0374C E4482E91 1 0 ZBM 1237 ST R1 R0,DBAFSN1 0374D E4960802 2 0 BASE 1238 ST R2 R0,DBAFSN2 0374E EDC81610 0 ZBM 1239 STW R0,DBASEEN 1240 0374F D1578806 6 BASE 1241 STMW SP,MININDEX 00003750 1242 SAFRAFLOOP LABEL 03750 FB6837A9 5 1243 JSR R5 SAFSRCH Find the head of a subchain 03751 5C178804 6 BASE 1244 CMZ SP,MINSAFBLK 03752 FE083780 1245 JLT SAFRAFDONE 03753 60178805 0 6 BASE 1246 LD R0 SP,MINSAFPLC 03754 E4178803 0 6 BASE 1247 ST R0 SP,BLOCKNUM 03755 DC003ADC 1248 CALL DBAACCESS 03756 40520000 0 REG 1249 PARVL R0 00003757 1250 CHAINLOOP LABEL 03757 EDC81610 0 ZBM 1251 STW R0,DBASEEN Mark the block accounted for 03758 6044000F 1 IMM 1252 LD R1 FBITRAFD and identify it as a RAF data block 03759 E4482451 1 0 ZBM 1253 ST R1 R0,DBAFBITYPE 0375A 60178803 0 6 BASE 1254 LD R0 SP,BLOCKNUM 0375B BC578806 1 6 BASE 1255 INCL R1 SP,MININDEX Store the block number in the minor AB 0375C E4225400 0 1 1256 ST R0 MINPLACE(R1) 0375D 60578802 1 6 BASE 1257 LD R1 SP,FDEPTR Bump the file size 0375E D0085186 1 ZBM 1258 INC R1,FDLEN 0375F DC1013E0 @ 1259 CALL @VREAD Read in the block 03760 41520000 0 REG 1260 PARV R0 03761 41407000 1261 PARV PFREADPLACE 03762 41007001 1262 PAR READFBI 03763 41440000 IMM 1263 PARV 0 03764 4000377D 1264 PARL CHAINDONE 03765 38007001 0 1265 LEA R0 READFBI 03766 6084000F 2 IMM 1266 LD R2 FBITRAFD Change the block to RAF data 03767 E4880080 2 0 ZBM 1267 ST R2 R0,FBITYPE 03768 60978806 2 6 BASE 1268 LD R2 SP,MININDEX Set its relative block number 03769 E4881184 2 0 ZBM 1269 ST R2 R0,FBIRELBLK 0376A EC081180 0 ZBM 1270 STZ R0,FBIFLINK Clear out SAF links 0376B EC081182 0 ZBM 1271 STZ R0,FBIBLINK 1272 WRITEBLK (R0,FBIDA),READ,WRITEERROR 1273 * CALL @VWRITE And write it back 1274 * PARV R0,FBIDA 1275 * PARV PFREADPLACE 1276 * PAR READFBI 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 68 (VERIFYFILES) F 19 File verification 1277 * PARL WRITEERROR 03774 38007001 0 1278 LEA R0 READFBI 03775 60C81180 3 0 ZBM 1279 LD R3 R0,FBIFLINK Get the next block address 03776 E4D78803 3 6 BASE 1280 ST R3 SP,BLOCKNUM 03777 DC003ADC 1281 CALL DBAACCESS 03778 4052C000 3 REG 1282 PARVL R3 03779 60482451 1 0 ZBM 1283 LD R1 R0,DBAFBITYPE 0377A 6444000C 1 IMM 1284 CPR R1 FBITSAF Still in the SAF chain? 0377B FE0C377D 1285 JNE CHAINDONE No, we're done 0377C FE0E3757 1286 JMP CHAINLOOP Yes, keep going 1287 * --- 1288 0000377D 1289 CHAINDONE LABEL 1290 * We have reached a break in the chain. We leave a hole in 1291 * the RAF as a signal of this, then go back and look for the 1292 * beginning of another subchain. 0377D D0178806 6 BASE 1293 INC SP,MININDEX 0377E EDD78803 6 BASE 1294 STW SP,BLOCKNUM Start the search from the beginning 0377F FE0E3750 1295 JMP SAFRAFLOOP Go do the next subchain 1296 * --- 1297 00003780 1298 SAFRAFDONE LABEL 03780 5C005400 1299 CMZ MINPLACE Were any blocks found? 03781 FE0C3785 1300 JNE WRITEIT 03782 60978802 2 6 BASE 1301 LD R2 SP,FDEPTR Set length to zero, this will cause 03783 EC089186 2 ZBM 1302 STZ R2,FDLEN the FDE to be deleted 03784 FE0E379B 1303 JMP DONE 1304 * --- 1305 00003785 1306 WRITEIT LABEL 03785 38807025 2 1307 LEA R2 MINFBI 1308 WRITEBLK (R2,FBIDA),MIN,WRITEERROR 1309 * CALL @VWRITE 1310 * PARV R2,FBIDA 1311 * PARV PFMINPLACE 1312 * PAR MINFBI 1313 * PARL WRITEERROR 0378E 60178801 0 6 BASE 1314 LD R0 SP,DIRPTR 0378F DC003A5F 1315 CALL ACCTFIND 03790 404800B0 0 ZBM 1316 PARVL R0,DIRNACCT 03791 E60070A1 01 1317 ST2 R0 PACCTNAME 03792 E48070A3 2 1318 ST R2 PACCTNAME(2) 03793 60978802 2 6 BASE 1319 LD R2 SP,FDEPTR 03794 DC1013F9 @ 1320 CALL @VPREPOUT 03795 410070A1 1321 PAR PACCTNAME 03796 410070A3 1322 PAR PACCTNAME(2) 03797 41168802 2 BASE 1323 PAR R2,FDNAME 03798 41168804 2 BASE 1324 PAR R2,FDEXTEN 03799 4000379C 1325 PARL FRAGMSG 0379A FE0E379B 1326 JMP DONE 1327 * --- 1328 0000379B 1329 DONE LABEL 0379B 5D1F8007 6 STAK 1330 LEAVE POP 1331 * --- 1332 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 69 (VERIFYFILES) F 19 File verification 0379C 20534146 1333 FRAGMSG TEXTZ " SAF fragments recoverable from \S1\.\R2\:\S3\.\R4\" 1334 1335 * This internal subroutine will scan the DBA for blocks 1336 * belonging to the current file which have not been accounted for, 1337 * and will remember the one with the lowest relative block number. 1338 * If SP, MINSAFBLK < 0, then no block was found. 1339 000037A9 1340 SAFSRCH LABEL 037A9 D1578804 6 BASE 1341 STMW SP,MINSAFBLK 037AA EDD78803 6 BASE 1342 STW SP,BLOCKNUM 000037AB 1343 SAFSRCH1 LABEL 037AB 60978802 2 6 BASE 1344 LD R2 SP,FDEPTR 037AC BCD78803 3 6 BASE 1345 INCL R3 SP,BLOCKNUM 037AD DC003B07 1346 CALL DBAFINDFILE Find another block from this file 037AE 4356880A 2 BASE 1347 PARV2 R2,FDSERNO 037AF 4052C000 3 REG 1348 PARVL R3 037B0 FA0237C5 0 1349 JEQZ R0 SAFSEXIT No more blocks, and the root was not found 037B1 E4178803 0 6 BASE 1350 ST R0 SP,BLOCKNUM 037B2 DC003ADC 1351 CALL DBAACCESS Get the description of the block 037B3 40520000 0 REG 1352 PARVL R0 037B4 60482451 1 0 ZBM 1353 LD R1 R0,DBAFBITYPE Is it a share list? 037B5 64440012 1 IMM 1354 CPR R1 FBITFSLB 037B6 FE0C37BC 1355 JNE SAFCHECKREL 037B7 60978803 2 6 BASE 1356 LD R2 SP,BLOCKNUM Yes, put pointer in FDE 037B8 EDCA8010 2 CBM 1357 STW R2/SHLDSKFLGB Indicate share list is separate 037B9 60578802 1 6 BASE 1358 LD R1 SP,FDEPTR 037BA E4964814 2 1 BASE 1359 ST R2 R1,FDSHL 037BB FE0E37C4 1360 JMP SAFS1NEXT 1361 * --- 1362 000037BC 1363 SAFCHECKREL LABEL 037BC 5C081610 0 ZBM 1364 CMZ R0,DBASEEN Has this block been accounted for? 037BD FE0C37C4 1365 JNE SAFS1NEXT Yes, keep looking 037BE 60480121 1 0 ZBM 1366 LD R1 R0,DBARELBLK 037BF 68578804 1 6 BASE 1367 UCPR R1 SP,MINSAFBLK Is it the lowest block we've seen? 037C0 FE0437C4 1368 JGT SAFS1NEXT 037C1 E4578804 1 6 BASE 1369 ST R1 SP,MINSAFBLK 037C2 60578803 1 6 BASE 1370 LD R1 SP,BLOCKNUM 037C3 E4578805 1 6 BASE 1371 ST R1 SP,MINSAFPLC 1372 * \ / 000037C4 1373 SAFS1NEXT LABEL 037C4 FE0E37AB 1374 JMP SAFSRCH1 1375 * --- 1376 000037C5 1377 SAFSEXIT LABEL 037C5 5C934000 5 REG 1378 LDPC R5 1379 * --- 1380 1381 END CHGSAFTORAF 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 70 (VERIFYFILES) F 19 File verification 1383 1384 BUILDAB BLOCK 1385 ENTRY BUILDAB 1386 1387 ********************************************************************************** 1388 * This procedure will create a (Major/Minor) access block * 1389 * given the File Directory Entry of the file which is lacking one. * 1390 * Calling format: * 1391 * CALL BUILDAB * 1392 * PARV FBITLRAF / FBITSRAF * 1393 * PARV Pointer to DIR node * 1394 * PARV Pointer to FDE * 1395 * PARV Low block number to include * 1396 * PARVL High block number to include * 1397 * Returns: * 1398 * R0 = disk address of access block * 1399 ********************************************************************************** 1400 1401 BEGFRAME 00178801 6 BASE 1402 ABTYPE BSS 1 00178802 6 BASE 1403 DIRPTR BSS 1 00178803 6 BASE 1404 FDEPTR BSS 1 00178804 6 BASE 1405 LOWBLOCK BSS 1 00178805 6 BASE 1406 HIGHBLOCK BSS 1 00178806 6 BASE 1407 BLOCKNUM BSS 1 Position in DBA of block we found 00178807 6 BASE 1408 PAGEPTR BSS 1 Pointer to the forming AB 00178808 6 BASE 1409 FBIPTR BSS 1 Pointer to the FBI for the AB 00178809 6 BASE 1410 VWRITEADDR BSS 1 The memory address for VWRITE 0017880A 6 BASE 1411 MININDEX BSS 1 Index into major for created minor 1412 ENDFRAME 1413 1414 VARS 000070A5 1415 SERNUM BSS 2 The file serial number 1416 PROG 1417 037C6 DD1F800B 6 STAK 1418 BUILDAB ENTR PUSH 037C7 C1578801 6 BASE 1419 STPV SP,ABTYPE 037C8 C1578802 6 BASE 1420 STPV SP,DIRPTR 037C9 C1578803 6 BASE 1421 STPV SP,FDEPTR 037CA C1578804 6 BASE 1422 STPV SP,LOWBLOCK 037CB C0578805 6 BASE 1423 STPVL SP,HIGHBLOCK 037CC 60178801 0 6 BASE 1424 LD R0 SP,ABTYPE 037CD 6404000E 0 IMM 1425 CPR R0 FBITSRAF Get appropriate buffer ptrs 037CE FE0C37D3 1426 JNE ITSMAJOR according to block type 037CF 38005400 0 1427 LEA R0 MINPLACE 037D0 38407025 1 1428 LEA R1 MINFBI 037D1 60807024 2 1429 LD R2 PFMINPLACE 037D2 FE0E37D6 1430 JMP STOREPTRS 1431 * --- 1432 000037D3 1433 ITSMAJOR LABEL 037D3 38005800 0 1434 LEA R0 MAJPLACE 037D4 38407031 1 1435 LEA R1 MAJFBI 037D5 60807030 2 1436 LD R2 PFMAJPLACE 1437 * \ / 000037D6 1438 STOREPTRS LABEL 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 71 (VERIFYFILES) F 19 File verification 037D6 E4178807 0 6 BASE 1439 ST R0 SP,PAGEPTR 037D7 E4578808 1 6 BASE 1440 ST R1 SP,FBIPTR 037D8 E4978809 2 6 BASE 1441 ST R2 SP,VWRITEADDR 1442 037D9 60441000 1 IMM 1443 LD R1 CPP Zero out the page 037DA DA000800 0 1 1444 FILLI R0 R1 0 037DB 60178808 0 6 BASE 1445 LD R0 SP,FBIPTR and its FBI 037DC 6044002C 1 IMM 1446 LD R1 FBILNTH*CPW 037DD DA000800 0 1 1447 FILLI R0 R1 0 037DE 60D78808 3 6 BASE 1448 LD R3 SP,FBIPTR Set block type 037DF 60978801 2 6 BASE 1449 LD R2 SP,ABTYPE 037E0 E488C080 2 3 ZBM 1450 ST R2 R3,FBITYPE 037E1 DC403BB2 1451 CALLNP GETFREEBLK 037E2 E408D181 0 3 ZBM 1452 ST R0 R3,FBIDA Set disk address in FBI 037E3 60D78803 3 6 BASE 1453 LD R3 SP,FDEPTR and in the directory entry 037E4 E408D185 0 3 ZBM 1454 ST R0 R3,FDDA 037E5 DC003ADC 1455 CALL DBAACCESS Access block description 037E6 40520000 0 REG 1456 PARVL R0 037E7 E4882451 2 0 ZBM 1457 ST R2 R0,DBAFBITYPE Set new block type 037E8 EDC81610 0 ZBM 1458 STW R0,DBASEEN Block is accounted for 037E9 6256C80A 123 BASE 1459 LD2 R1 R3,FDSERNO Set file serial number 037EA E4482E91 1 0 ZBM 1460 ST R1 R0,DBAFSN1 037EB E4960802 2 0 BASE 1461 ST R2 R0,DBAFSN2 037EC 60978802 2 6 BASE 1462 LD R2 SP,DIRPTR 037ED 604880B0 1 2 ZBM 1463 LD R1 R2,DIRNACCT Set account index 037EE E44800B0 1 0 ZBM 1464 ST R1 R0,DBAACCT 037EF DC003A5F 1465 CALL ACCTFIND Get account name 037F0 40524000 1 REG 1466 PARVL R1 037F1 60D78808 3 6 BASE 1467 LD R3 SP,FBIPTR and store in FBI 037F2 E616C805 013 BASE 1468 ST2 R0 R3,FBIACCT 037F3 E496C807 2 3 BASE 1469 ST R2 R3,FBIPROJ 037F4 60178803 0 6 BASE 1470 LD R0 SP,FDEPTR Set file serial number in FBI 037F5 6216080A 010 BASE 1471 LD2 R0 R0,FDSERNO 037F6 E616C808 013 BASE 1472 ST2 R0 R3,FBISERNO 037F7 E60070A5 01 1473 ST2 R0 SERNUM And save for the search 1474 037F8 D0178801 6 BASE 1475 INC SP,ABTYPE Get the type of block we'll be 037F8 D0178801 6 BASE 1476 indexing (Maj -> Min, Min -> Data) 037F9 EC178806 6 BASE 1477 STZ SP,BLOCKNUM 000037FA 1478 SEARCHLOOP LABEL 037FA 60938000 2 6 REG 1479 LD R2 SP 037FB DC003B07 1480 CALL DBAFINDFILE 037FC 434070A5 1481 PARV2 SERNUM 037FD BC168806 0 2 BASE 1482 INCL R0 R2,BLOCKNUM 037FE 40520000 0 REG 1483 PARVL R0 037FF FA023811 0 1484 JEQZ R0 SEARCHDONE No more blocks found 03800 E4178806 0 6 BASE 1485 ST R0 SP,BLOCKNUM 03801 DC003ADC 1486 CALL DBAACCESS 03802 40520000 0 REG 1487 PARVL R0 03803 60482451 1 0 ZBM 1488 LD R1 R0,DBAFBITYPE Right block type? 03804 64578801 1 6 BASE 1489 CPR R1 SP,ABTYPE 03805 FE0C3810 1490 JNE SEARCHNEXT 03806 60480121 1 0 ZBM 1491 LD R1 R0,DBARELBLK Is block in proper range? 03807 64578804 1 6 BASE 1492 CPR R1 SP,LOWBLOCK 03808 FE083810 1493 JLT SEARCHNEXT 03809 64578805 1 6 BASE 1494 CPR R1 SP,HIGHBLOCK 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 72 (VERIFYFILES) F 19 File verification 0380A FE043810 1495 JGT SEARCHNEXT 0380B EDC81610 0 ZBM 1496 STW R0,DBASEEN Yes, mark it accounted for 0380C 784403FF 1 IMM 1497 AND R1 WPP-1 Get offset into access block 0380D 60178806 0 6 BASE 1498 LD R0 SP,BLOCKNUM 0380E 60978807 2 6 BASE 1499 LD R2 SP,PAGEPTR 0380F E41C8800 0 21 BASE 1500 ST R0 R2,0(R1) and store in the access block 1501 * \ / 00003810 1502 SEARCHNEXT LABEL 03810 FE0E37FA 1503 JMP SEARCHLOOP 1504 * --- 1505 1506 ********************************************************************************** 1507 * The access block now references all existing subordinate * 1508 * blocks. However, if we are building a major access block, if * 1509 * there are any data blocks not marked accounted for, this * 1510 * indicates that a minor access block was missing and needs to be * 1511 * built. * 1512 ********************************************************************************** 1513 00003811 1514 SEARCHDONE LABEL 03811 60178801 0 6 BASE 1515 LD R0 SP,ABTYPE 03812 6404000E 0 IMM 1516 CPR R0 FBITSRAF Are we building a major AB? 03813 FE0C3833 1517 JNE WRITEIT 03814 EDD78806 6 BASE 1518 STW SP,BLOCKNUM Prepare to search for unacc blocks 00003815 1519 UNACCLOOP LABEL 03815 BC978806 2 6 BASE 1520 INCL R2 SP,BLOCKNUM 03816 DC003B07 1521 CALL DBAFINDFILE 03817 434070A5 1522 PARV2 SERNUM 03818 40528000 2 REG 1523 PARVL R2 03819 FA023833 0 1524 JEQZ R0 WRITEIT No unacc data block exist, we're done 0381A E4178806 0 6 BASE 1525 ST R0 SP,BLOCKNUM 0381B DC003ADC 1526 CALL DBAACCESS 0381C 40520000 0 REG 1527 PARVL R0 0381D 5C081610 0 ZBM 1528 CMZ R0,DBASEEN Is this block accounted for? 0381E FE0C3832 1529 JNE UNACCNEXT 0381F 60482451 1 0 ZBM 1530 LD R1 R0,DBAFBITYPE 03820 6444000F 1 IMM 1531 CPR R1 FBITRAFD Is it a RAF data block? 03821 FE0C3832 1532 JNE UNACCNEXT 03822 60880121 2 0 ZBM 1533 LD R2 R0,DBARELBLK We found one, get its relative block number 03823 288403FF 2 IMM 1534 BSUB R2 WPP-1 Get low range of the missing AB 03824 60D28000 3 2 REG 1535 LD R3 R2 Get position in major AB of minor AB ptr 03825 14C40400 3 IMM 1536 DIV R3 WPP 03826 E4D7880A 3 6 BASE 1537 ST R3 SP,MININDEX 03827 60D38000 3 6 REG 1538 LD R3 SP Get that AB built 03828 DC0037C6 1539 CALL BUILDAB 03829 4144000E IMM 1540 PARV FBITSRAF 0382A 4156C802 3 BASE 1541 PARV R3,DIRPTR 0382B 4156C803 3 BASE 1542 PARV R3,FDEPTR 0382C 41528000 2 REG 1543 PARV R2 0382D 188403FF 2 IMM 1544 ADD R2 WPP-1 0382E 40528000 2 REG 1545 PARVL R2 0382F 6057880A 1 6 BASE 1546 LD R1 SP,MININDEX Store the DA of the minor AB into 03830 60978807 2 6 BASE 1547 LD R2 SP,PAGEPTR the major AB 03831 E41C8800 0 21 BASE 1548 ST R0 R2,0(R1) 00003832 1549 UNACCNEXT LABEL 03832 FE0E3815 1550 JMP UNACCLOOP Look for more missing minors 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 73 (VERIFYFILES) F 19 File verification 1551 * --- 1552 00003833 1553 WRITEIT LABEL 03833 60D38000 3 6 REG 1554 LD R3 SP Write out the access block 03834 DC1013E1 @ 1555 CALL @VWRITE 03835 6016C808 0 3 BASE 1556 LD R0 R3,FBIPTR 03836 41481181 0 ZBM 1557 PARV R0,FBIDA 03837 4156C809 3 BASE 1558 PARV R3,VWRITEADDR 03838 4116CC08 3 FPVR 1559 PAR @(R3,FBIPTR) 03839 40003899 1560 PARL WRITEERROR 0383A 60178808 0 6 BASE 1561 LD R0 SP,FBIPTR Return the disk address in R0 0383B 60081181 0 0 ZBM 1562 LD R0 R0,FBIDA 0383C 5D1F800B 6 STAK 1563 LEAVE POP 1564 * --- 1565 1566 END BUILDAB 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 74 (VERIFYFILES) F 19 File verification 1568 1569 SETFILESIZE BLOCK 1570 ENTRY SETFILESIZE 1571 1572 BEGFRAME 00178801 6 BASE 1573 FDEPTR BSS 1 00178802 6 BASE 1574 BLOCKNUM BSS 1 00178803 6 BASE 1575 SAVER2R3 BSS 2 1576 ENDFRAME 1577 0383D DD1F8005 6 STAK 1578 SETFILESIZE ENTR PUSH 0383E C0578801 6 BASE 1579 STPVL SP,FDEPTR 0383F E6978803 236 BASE 1580 ST2 R2 SP,SAVER2R3 03840 EC081186 0 ZBM 1581 STZ R0,FDLEN 03841 EDD78802 6 BASE 1582 STW SP,BLOCKNUM 00003842 1583 LOOP LABEL 03842 60938000 2 6 REG 1584 LD R2 SP 03843 DC003B07 1585 CALL DBAFINDFILE Find next file block 03844 60168801 0 2 BASE 1586 LD R0 R2,FDEPTR 03845 4356080A 0 BASE 1587 PARV2 R0,FDSERNO 03846 BC168802 0 2 BASE 1588 INCL R0 R2,BLOCKNUM 03847 40520000 0 REG 1589 PARVL R0 03848 FA02384D 0 1590 JEQZ R0 DONE No more 03849 E4178802 0 6 BASE 1591 ST R0 SP,BLOCKNUM 0384A 60978801 2 6 BASE 1592 LD R2 SP,FDEPTR Bump file size 0384B D0089186 2 ZBM 1593 INC R2,FDLEN 0384C FE0E3842 1594 JMP LOOP 1595 * --- 1596 0000384D 1597 DONE LABEL 0384D 62978803 236 BASE 1598 LD2 R2 SP,SAVER2R3 0384E 5D1F8005 6 STAK 1599 LEAVE POP 1600 * --- 1601 1602 END SETFILESIZE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 75 (VERIFYFILES) F 19 File verification 1604 1605 FREEFILE BLOCK 1606 ENTRY FREEFILE 1607 1608 BEGFRAME 00178801 6 BASE 1609 SERNUM BSS 2 00178803 6 BASE 1610 BLOCKNUM BSS 1 1611 ENDFRAME 1612 0384F DD1F8004 6 STAK 1613 FREEFILE ENTR PUSH 03850 C2578801 6 BASE 1614 STPV2L SP,SERNUM 1615 CLEAR FREE,0FF,FBITFREE 0385C EDD78803 6 BASE 1616 STW SP,BLOCKNUM 0000385D 1617 FREELOOP LABEL 0385D 60938000 2 6 REG 1618 LD R2 SP 0385E DC003B07 1619 CALL DBAFINDFILE Find the next file block 0385F 43568801 2 BASE 1620 PARV2 R2,SERNUM 03860 BC168803 0 2 BASE 1621 INCL R0 R2,BLOCKNUM 03861 40520000 0 REG 1622 PARVL R0 03862 FA023874 0 1623 JEQZ R0 DONE 03863 E4178803 0 6 BASE 1624 ST R0 SP,BLOCKNUM 03864 DC003ADC 1625 CALL DBAACCESS Get description of block 03865 40520000 0 REG 1626 PARVL R0 03866 6044007F 1 IMM 1627 LD R1 FBITFREE 03867 E4482451 1 0 ZBM 1628 ST R1 R0,DBAFBITYPE Set block type to free 03868 EC082E91 0 ZBM 1629 STZ R0,DBAFSN1 Zero file serial number 03869 EC160802 0 BASE 1630 STZ R0,DBAFSN2 0386A EC0800B0 0 ZBM 1631 STZ R0,DBAACCT and account index 0386B 60178803 0 6 BASE 1632 LD R0 SP,BLOCKNUM 0386C 38407049 1 1633 LEA R1 FREEFBI 0386D E4085181 0 1 ZBM 1634 ST R0 R1,FBIDA 0386E DC1013E1 @ 1635 CALL @VWRITE 0386F 41520000 0 REG 1636 PARV R0 03870 41407048 1637 PARV PFFREEPLACE 03871 41007049 1638 PAR FREEFBI 03872 40003899 1639 PARL WRITEERROR 03873 FE0E385D 1640 JMP FREELOOP Look for more 1641 * --- 1642 00003874 1643 DONE LABEL 03874 5D1F8004 6 STAK 1644 LEAVE POP 1645 * --- 1646 1647 END FREEFILE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 76 (VERIFYFILES) F 19 File verification 1649 1650 MKFAKENAME BLOCK 1651 ENTRY MKFAKENAME 1652 1653 ********************************************************************************** 1654 * This routine generates a name for a file recovered with * 1655 * no directory entry. * 1656 ********************************************************************************** 1657 1658 BEGFRAME 00178801 6 BASE 1659 COUNT BSS 1 Address of a number to use in the name 00178802 6 BASE 1660 NAMEPTR BSS 1 Where to put the name 00178803 6 BASE 1661 EXTPTR BSS 1 Where to put the extension 00178804 6 BASE 1662 NAMEBUFF BSS 0 00178010 6 CACH 1663 NAMEBUFFC BSSC 8 00178806 6 BASE 1664 SAVER2R3 BSS 2 1665 ENDFRAME 1666 03875 DD1F8008 6 STAK 1667 MKFAKENAME ENTR PUSH 03876 C1178801 6 BASE 1668 STP SP,COUNT 03877 C3178802 6 BASE 1669 STP2 SP,NAMEPTR 03878 C0178803 6 BASE 1670 STPL SP,EXTPTR 03879 E6978806 236 BASE 1671 ST2 R2 SP,SAVER2R3 1672 * Make a string consisting of a 39 byte followed by five 1 bytes. 1673 * By adding the value of each digit of COUNT to the appropriate 1674 * character, we will have the values we want to use for packing. 0387A 62003896 01 1675 LD2 R0 STARTPATERN 0387B E6178804 016 BASE 1676 ST2 R0 SP,NAMEBUFF 0387C BC178C01 0 6 FPVR 1677 INCL R0 @(SP,COUNT) 0387D 38978015 2 6 CACH 1678 LEA R2 SP,NAMEBUFFC(5) 0000387E 1679 LOOP LABEL 0387E FA023888 0 1680 JEQZ R0 NAMEMADE 0387F 60520000 1 0 REG 1681 LD R1 R0 03880 1444000A 1 IMM 1682 DIV R1 10 03881 E452C000 1 3 REG 1683 ST R1 R3 03882 1C44000A 1 IMM 1684 MUL R1 10 03883 30520000 1 0 REG 1685 RSB R1 R0 03884 98568400 1 2 @R 1686 ADDM R1 @R2 03885 D0D28000 2 REG 1687 DECP R2 03886 6012C000 0 3 REG 1688 LD R0 R3 03887 FE0E387E 1689 JMP LOOP 1690 * --- 1691 00003888 1692 NAMEMADE LABEL 03888 60040000 0 IMM 1693 LD R0 0 03889 38978010 2 6 CACH 1694 LEA R2 SP,NAMEBUFFC 0388A 60C7FFFA 3 IMM 1695 LD R3 -6 0388B 58C40010 IMM 1696 IORPSR PSRMODIF 0000388C 1697 PACKIT LABEL Generate PAK6 word for the string 0388C 1C040028 0 IMM 1698 MUL R0 40 0388D 18568400 1 2 @R 1699 ADD R1 @R2 0388E D0928000 2 REG 1700 INCP R2 0388F 60124000 0 1 REG 1701 LD R0 R1 03890 FAE0388C 3 1702 IRJ R3 PACKIT 03891 60440000 1 IMM 1703 LD R1 0 Second six characters are spaces 03892 E6178C02 016 FPVR 1704 ST2 R0 @(SP,NAMEPTR) Store the name 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 77 (VERIFYFILES) F 19 File verification 03893 EC178C03 6 FPVR 1705 STZ @(SP,EXTPTR) 03894 62978806 236 BASE 1706 LD2 R2 SP,SAVER2R3 03895 5D1F8008 6 STAK 1707 LEAVE POP 1708 * --- 1709 03897 01010000 1710 STARTPATERN VFD 027010101,001010000 PAK6 characters for "_00000" 1711 1712 END MKFAKENAME 1713 1714 03898 00000002 1715 READERROR HALT 2 03899 00000001 1716 WRITEERROR HALT 1 1717 1718 END VERIFYFILES 61 INPUT MOPUP 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 78 (MOPUP) F 20 Mopping up operations 3 4 MOPUP BLOCK 5 ENTRY WRITEIDX 6 ENTRY WRITEADT 7 8 WRITEIDX BLOCK 9 ENTRY WRITEIDX 10 11 BEGFRAME 00178801 6 BASE 12 IDXPTR BSS 1 00178802 6 BASE 13 BUCKETNUM BSS 1 14 ENDFRAME 15 0389A DD5F8003 6 STAK 16 WRITEIDX ENTRNP PUSH 0000389B 17 STARTOVER LABEL 0389B DC40393F 18 CALLNP READSECBLK 19 * First step is to make sure that none of our IDX 20 * chains is overfilled. 0389C 6000709C 0 21 LD R0 IDXNLIST get pointer to IDX element list 0000389D 22 CHECKLOOP LABEL 0389D 604800F2 1 0 ZBM 23 LD R1 R0,IDXNDIRCNT pick up number of accounts here 0389E 644400CC 1 IMM 24 CPR R1 IDXECNT is this possible? 0389F FE0438A2 25 JGT MUSTREHASH jump if not 038A0 FA36389D 0 26 LJNA R0 CHECKLOOP move to next element 038A1 FE0E38A4 27 JMP WRITEEMOUT 28 * --- 000038A2 29 MUSTREHASH LABEL 038A2 DC403998 30 CALLNP REHASHIDX 038A3 FE0E389B 31 JMP STARTOVER 32 * --- 33 000038A4 34 WRITEEMOUT LABEL 038A4 EC005C28 35 STZ SECPLACE/SECIDXSIZ Zero all the IDX info in the 038A5 EC005C2A 36 STZ SECPLACE/SECIDXENTS Security block 038A6 38005C2C 0 37 LEA R0 SECPLACE/SECIDXPTR 038A7 604403F4 1 IMM 38 LD R1 MAXIDXSIZE*CPW 038A8 DA000800 0 1 39 FILLI R0 R1 0 40 038A9 D1578802 6 BASE 41 STMW SP,BUCKETNUM 038AA 60C0709C 3 42 LD R3 IDXNLIST 000038AB 43 IDXLOOP LABEL 038AB E4D78801 3 6 BASE 44 ST R3 SP,IDXPTR 45 CLEAR READ,0,FBITIDX clear area for IDX 038B7 DC403BB2 46 CALLNP GETFREEBLK get available disk block 038B8 BC578802 1 6 BASE 47 INCL R1 BUCKETNUM 038B9 E4225C2C 0 1 48 ST R0 SECPLACE/SECIDXPTR(R1) Store IDX DA 038BA D0005C28 49 INC SECPLACE/SECIDXSIZ One more bucket 038BB 38807001 2 50 LEA R2 READFBI 038BC E4089181 0 2 ZBM 51 ST R0 R2,FBIDA 038BD DC003ADC 52 CALL DBAACCESS 038BE 40520000 0 REG 53 PARVL R0 038BF EDC81610 0 ZBM 54 STW R0,DBASEEN 55 038C0 61178801 4 6 BASE 56 LD R4 SP,IDXPTR 038C1 61091F12 4 4 ZBM 57 LD R4 R4,IDXNDIRLIST 038C2 FB0238CD 4 58 JEQZ R4 DIRSDONE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 79 (MOPUP) F 20 Mopping up operations 038C3 38C04800 3 59 LEA R3 READPLACE Setup pointer into IDX page 000038C4 60 DIRLOOP LABEL 038C4 D0005C2A 61 INC SECPLACE/SECIDXENTS One more dir in IDX 038C5 DC003A5F 62 CALL ACCTFIND Get the account name 038C6 404900B0 4 ZBM 63 PARVL R4,DIRNACCT 038C7 E616C800 013 BASE 64 ST2 R0 R3,IDXACNO and store it 038C8 E496C802 2 3 BASE 65 ST R2 R3,IDXACNOP 038C9 60170801 0 4 BASE 66 LD R0 R4,DIRNDA Store the disk address 038CA E416C803 0 3 BASE 67 ST R0 R3,IDXDIRDA 038CB 18C40005 3 IMM 68 ADD R3 IDXLNTH 038CC FB3638C4 4 69 LJNA R4 DIRLOOP Do next account 70 * \ / 000038CD 71 DIRSDONE LABEL 038CD 39007055 4 72 LEA R4 DISKCB Write out the IDX block 038CE 38C07001 3 73 LEA R3 READFBI 74 WRITEBLK (R3,FBIDA),READ,WRITEERROR 038D7 60D78801 3 6 BASE 75 LD R3 SP,IDXPTR Do the next bucket 038D8 FAF638AB 3 76 LJNA R3 IDXLOOP 77 038D9 DC40395E 78 CALLNP WRITESECBLK 038DA 5D1F8003 6 STAK 79 LEAVE POP 80 * --- 81 82 END WRITEIDX 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 80 (MOPUP) F 20 Mopping up operations 84 85 WRITEADT BLOCK 86 ENTRY WRITEADT 87 88 BEGFRAME 00178801 6 BASE 89 LISTSIZE BSS 1 00178802 6 BASE 90 CHAINNUM BSS 1 00178803 6 BASE 91 FIRSTBLOCK BSS 1 00178804 6 BASE 92 LASTBLOCK BSS 1 00178805 6 BASE 93 CHAINBLKS BSS 1 00178806 6 BASE 94 BLOCKCOUNT BSS 1 00178807 6 BASE 95 CURRENT BSS 1 00178808 6 BASE 96 PREVIOUS BSS 1 00178809 6 BASE 97 INDEX BSS 1 98 ENDFRAME 99 038DB DD5F800A 6 STAK 100 WRITEADT ENTRNP PUSH 101 CLEAR FREE,0FF,FBITFREE 102 038E7 6000705A 0 103 LD R0 DISKCB/DCBVOLSIZE Get maximum length of each chain 038E8 14040008 0 IMM 104 DIV R0 SECADTNUM 038E9 18040008 0 IMM 105 ADD R0 SECADTNUM 038EA E4178801 0 6 BASE 106 ST R0 SP,LISTSIZE 038EB 60040000 0 IMM 107 LD R0 0 038EC E4178802 0 6 BASE 108 ST R0 SP,CHAINNUM 000038ED 109 CHAINLOOP LABEL 038ED 38605C08 1 0 110 LEA R1 SECPLACE/SECADTTOP(R0) Make pointers into security block info 038EE E4578803 1 6 BASE 111 ST R1 SP,FIRSTBLOCK 038EF 38605C10 1 0 112 LEA R1 SECPLACE/SECADTBTM(R0) 038F0 E4578804 1 6 BASE 113 ST R1 SP,LASTBLOCK 038F1 38605C18 1 0 114 LEA R1 SECPLACE/SECADTCNT(R0) 038F2 E4578805 1 6 BASE 115 ST R1 SP,CHAINBLKS 116 038F3 EC178808 6 BASE 117 STZ SP,PREVIOUS 038F4 EC178806 6 BASE 118 STZ SP,BLOCKCOUNT 038F5 DC403BB2 119 CALLNP GETFREEBLK Get the first block for the chain 038F6 E4178C03 0 6 FPVR 120 ST R0 @(SP,FIRSTBLOCK) 038F7 FA023936 0 121 JEQZ R0 CHAINDONE 038F8 E4178807 0 6 BASE 122 ST R0 SP,CURRENT 000038F9 123 BLOCKLOOP LABEL 038F9 60178807 0 6 BASE 124 LD R0 SP,CURRENT 038FA FA023936 0 125 JEQZ R0 CHAINDONE 038FB DC003ADC 126 CALL DBAACCESS 038FC 40520000 0 REG 127 PARVL R0 038FD EDC81610 0 ZBM 128 STW R0,DBASEEN 129 CLEAR READ,0,FBITADT Zero out the new ADT block 03909 D1578809 6 BASE 130 STMW SP,INDEX Prepare to fill it up 0390A D0178806 6 BASE 131 INC SP,BLOCKCOUNT 0000390B 132 ENTRYLOOP LABEL 0390B DC403BB2 133 CALLNP GETFREEBLK Get a free block 0390C FA023918 0 134 JEQZ R0 BLOCKDONE 0390D BC578809 1 6 BASE 135 INCL R1 SP,INDEX Store its address in the ADT block 0390E E4224800 0 1 136 ST R0 READPLACE(R1) 0390F D0178806 6 BASE 137 INC SP,BLOCKCOUNT One more block in the chain 03910 38407049 1 138 LEA R1 FREEFBI 03911 E4085181 0 1 ZBM 139 ST R0 R1,FBIDA 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 81 (MOPUP) F 20 Mopping up operations 03912 DC003ADC 140 CALL DBAACCESS Mark it accounted for 03913 40520000 0 REG 141 PARVL R0 03914 EDC81610 0 ZBM 142 STW R0,DBASEEN 03915 60578809 1 6 BASE 143 LD R1 SP,INDEX Get another if there's more room 03916 644400C8 1 IMM 144 CPR R1 ADTECNT 03917 FE08390B 145 JLT ENTRYLOOP 146 * \ / 00003918 147 BLOCKDONE LABEL 03918 60178806 0 6 BASE 148 LD R0 SP,BLOCKCOUNT Is this list getting too long? 03919 64178801 0 6 BASE 149 CPR R0 SP,LISTSIZE 0391A FE04391D 150 JGT FAKEEND 0391B DC403BB2 151 CALLNP GETFREEBLK No, get what will be the next ADT block 0391C FE0E391E 152 JMP GOTNEXT 153 * --- 154 0000391D 155 FAKEEND LABEL 0391D 60040000 0 IMM 156 LD R0 0 Yes, say there is no next block 157 * \ / 0000391E 158 GOTNEXT LABEL 0391E 38807001 2 159 LEA R2 READFBI 0391F 60578808 1 6 BASE 160 LD R1 SP,PREVIOUS Set backward and forward links in ADT block 03920 E4489182 1 2 ZBM 161 ST R1 R2,FBIBLINK 03921 E4089180 0 2 ZBM 162 ST R0 R2,FBIFLINK 03922 60578807 1 6 BASE 163 LD R1 SP,CURRENT 03923 E4489181 1 2 ZBM 164 ST R1 R2,FBIDA 03924 DC003ADC 165 CALL DBAACCESS 03925 40520000 0 REG 166 PARVL R0 03926 EDC81610 0 ZBM 167 STW R0,DBASEEN 03927 38007001 0 168 LEA R0 READFBI Write out the full ADT block 169 WRITEBLK (R0,FBIDA),READ,WRITEERROR 03930 60178807 0 6 BASE 170 LD R0 SP,CURRENT Previous <- Current 03931 E4178808 0 6 BASE 171 ST R0 SP,PREVIOUS 03932 38407001 1 172 LEA R1 READFBI Current <- Next 03933 60085180 0 1 ZBM 173 LD R0 R1,FBIFLINK 03934 E4178807 0 6 BASE 174 ST R0 SP,CURRENT 03935 FE0E38F9 175 JMP BLOCKLOOP Make another ADT block 176 * --- 177 00003936 178 CHAINDONE LABEL 03936 60178808 0 6 BASE 179 LD R0 SP,PREVIOUS Set the end of chain pointer 03937 E4178C04 0 6 FPVR 180 ST R0 @(SP,LASTBLOCK) 03938 60178806 0 6 BASE 181 LD R0 SP,BLOCKCOUNT Set the chain count 03939 E4178C05 0 6 FPVR 182 ST R0 @(SP,CHAINBLKS) 183 0393A BC178802 0 6 BASE 184 INCL R0 SP,CHAINNUM Go do another chain 0393B 64040008 0 IMM 185 CPR R0 SECADTNUM 0393C FE0838ED 186 JLT CHAINLOOP 0393D DC40395E 187 CALLNP WRITESECBLK 0393E 5D1F800A 6 STAK 188 LEAVE POP 189 * --- 190 191 END WRITEADT 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 82 (MOPUP) F 20 Mopping up operations 193 194 READSECBLK BLOCK 195 ENTRY READSECBLK 196 197 BEGFRAME 198 ENDFRAME 199 0393F DD5F8001 6 STAK 200 READSECBLK ENTRNP PUSH 03940 60007099 0 201 LD R0 SECDA Get a security block DA 03941 FA023952 0 202 JEQZ R0 MAKEONE No security block was seen 03942 DC1013E0 @ 203 CALL @VREAD 03943 41407099 204 PARV SECDA 03944 4140703C 205 PARV PFSECPLACE 03945 4100703D 206 PAR SECFBI 03946 41440000 IMM 207 PARV 0 03947 40003949 208 PARL TRYNEXT 03948 FE0E395D 209 JMP DONE 210 * --- 211 00003949 212 TRYNEXT LABEL 03949 6000709A 0 213 LD R0 SECDA(1) 0394A FA023952 0 214 JEQZ R0 MAKEONE 0394B DC1013E0 @ 215 CALL @VREAD 0394C 4140709A 216 PARV SECDA(1) 0394D 4140703C 217 PARV PFSECPLACE 0394E 4100703D 218 PAR SECFBI 0394F 41440000 IMM 219 PARV 0 03950 40003996 220 PARL READERROR 03951 FE0E395D 221 JMP DONE 222 * --- 223 00003952 224 MAKEONE LABEL 225 CLEAR SEC,0,FBITSEC 0000395D 226 DONE LABEL 0395D 5D1F8001 6 STAK 227 LEAVE POP 228 * --- 229 230 END READSECBLK 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 83 (MOPUP) F 20 Mopping up operations 232 233 WRITESECBLK BLOCK 234 ENTRY WRITESECBLK 235 236 BEGFRAME 237 ENDFRAME 238 0395E DD5F8001 6 STAK 239 WRITESECBLK ENTRNP PUSH 0395F 60807099 2 240 LD R2 SECDA Get first disk address 03960 FA8C3967 2 241 JNEZ R2 GOTFIRST Don't have one, get a free block 03961 DC403BB2 242 CALLNP GETFREEBLK 03962 E4007099 0 243 ST R0 SECDA 03963 60920000 2 0 REG 244 LD R2 R0 03964 DC003ADC 245 CALL DBAACCESS 03965 40520000 0 REG 246 PARVL R0 03966 EDC81610 0 ZBM 247 STW R0,DBASEEN 248 * \ / 00003967 249 GOTFIRST LABEL 03967 3800703D 0 250 LEA R0 SECFBI 03968 E4881181 2 0 ZBM 251 ST R2 R0,FBIDA 252 WRITEBLK R2,SEC,WRITEERROR 253 03971 6080709A 2 254 LD R2 SECDA(1) Get second disk address 03972 FA8C3979 2 255 JNEZ R2 GOTSECOND Don't have one, get a free block 03973 DC403BB2 256 CALLNP GETFREEBLK 03974 E400709A 0 257 ST R0 SECDA(1) 03975 60920000 2 0 REG 258 LD R2 R0 03976 DC003ADC 259 CALL DBAACCESS 03977 40520000 0 REG 260 PARVL R0 03978 EDC81610 0 ZBM 261 STW R0,DBASEEN 00003979 262 GOTSECOND LABEL 03979 3800703D 0 263 LEA R0 SECFBI 0397A E4881181 2 0 ZBM 264 ST R2 R0,FBIDA 265 WRITEBLK R2,SEC,WRITEERROR 266 03983 DC1013E0 @ 267 CALL @VREAD Read in the volume label 03984 41440001 IMM 268 PARV VOLLABELDA 03985 41407000 269 PARV PFREADPLACE 03986 41007001 270 PAR READFBI 03987 41440000 IMM 271 PARV 0 03988 40003996 272 PARL READERROR 03989 60007099 0 273 LD R0 SECDA Set the security block addresses 0398A E4004812 0 274 ST R0 READPLACE/VLSECBDA 0398B 6000709A 0 275 LD R0 SECDA(1) 0398C E4004813 0 276 ST R0 READPLACE/VLSECB2DA 277 WRITEBLK VOLLABELDA,READ,WRITEERROR 03995 5D1F8001 6 STAK 278 LEAVE POP 279 * --- 280 281 END WRITESECBLK 282 03996 00000013 283 READERROR HALT 013 03997 00000014 284 WRITEERROR HALT 014 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 84 (MOPUP) F 20 Mopping up operations 286 287 REHASHIDX BLOCK 288 ENTRY REHASHIDX 289 290 BEGFRAME 00178801 6 BASE 291 OLDBUCKET BSS 1 Pointer to the next bucket in the old 292 chain to be rehashed 00178802 6 BASE 293 NEXTDIR BSS 1 Points to the next dir node to rehash 294 ENDFRAME 295 03998 DD5F8003 6 STAK 296 REHASHIDX ENTRNP PUSH 03999 BCC0709B 3 297 INCL R3 IDXBUCKETS We'll make one more bucket than before 0399A EC128000 2 REG 298 STZ R2 R2 => last created node 0000399B 299 MAKEIDXNODE LABEL 0399B DC0039C8 300 CALL FSGET Get space for one node 0399C 40440003 IMM 301 PARVL IDXNLEN 0399D E4881F10 2 0 ZBM 302 ST R2 R0,IDXNNEXT 0399E E4D69001 3 2 REG 303 ST R3 R2+1 Get number of this bucket 0399F E4960000 2 0 CACH 304 ST R2 R0,IDXNBUCKET and store it 039A0 EDC81010 0 ZBM 305 STW R0,IDXNFAKE 039A1 EC160801 0 BASE 306 STZ R0,IDXNDA 039A2 EC0800F2 0 ZBM 307 STZ R0,IDXNDIRCNT 039A3 EC081F12 0 ZBM 308 STZ R0,IDXNDIRLIST 039A4 60920000 2 0 REG 309 LD R2 R0 Remember address of this new node 039A5 FAE2399B 3 310 DRJ R3 MAKEIDXNODE and go make another 039A6 E080709C 2 311 EXCH R2 IDXNLIST Get old list head and set new 039A7 E4978801 2 6 BASE 312 ST R2 SP,OLDBUCKET Set starting bucket for scan of old list 000039A8 313 IDXLOOP LABEL 039A8 60089F10 0 2 ZBM 314 LD R0 R2,IDXNNEXT Remember the one following for next time 039A9 E4178801 0 6 BASE 315 ST R0 SP,OLDBUCKET 039AA 60089F12 0 2 ZBM 316 LD R0 R2,IDXNDIRLIST Get the first directory node 000039AB 317 DIRLOOP LABEL 039AB FA3039BE 0 318 JZA R0 NEXTIDX 039AC 60C81F10 3 0 ZBM 319 LD R3 R0,DIRNNEXT Remember the following dir node 039AD E4D78802 3 6 BASE 320 ST R3 SP,NEXTDIR 039AE 60D20000 3 0 REG 321 LD R3 R0 Save pointer to current dir node 039AF DC003A5F 322 CALL ACCTFIND Get the account name 039B0 4048C0B0 3 ZBM 323 PARVL R3,DIRNACCT 039B1 744A1000 1 0 CBM 324 XOR R1 R0/BITS 8:7 Get the new bucket number in R1 039B2 744AA000 1 2 CBM 325 XOR R1 R2/BITS 16:15 039B3 EC120000 0 REG 326 STZ R0 039B4 58C40010 IMM 327 IORPSR PSRMODIF 039B5 1400709B 0 328 DIV R0 IDXBUCKETS 039B6 58840010 IMM 329 CLBPSR PSRMODIF 039B7 6080709C 2 330 LD R2 IDXNLIST Find the IDX node for that bucket 039B8 3C168000 0 2 CACH 331 LSRCH R0 R2,IDXNBUCKET 039B9 60089F12 0 2 ZBM 332 LD R0 R2,IDXNDIRLIST Get pointer to first dir node 039BA E408DF10 0 3 ZBM 333 ST R0 R3,DIRNNEXT Put current dir at the head 039BB E4C89F12 3 2 ZBM 334 ST R3 R2,IDXNDIRLIST 039BC 60178802 0 6 BASE 335 LD R0 SP,NEXTDIR Get the next dir to rehash 039BD FE0E39AB 336 JMP DIRLOOP 337 * --- 338 000039BE 339 NEXTIDX LABEL 039BE 60978801 2 6 BASE 340 LD R2 SP,OLDBUCKET Get current IDX node 039BF FAB639A8 2 341 LJNA R2 IDXLOOP and go do the next one 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 85 (MOPUP) F 20 Mopping up operations 342 * \ / 039C0 5D1F8003 6 STAK 343 LEAVE POP 344 * --- 345 346 END REHASHIDX 347 348 END MOPUP 62 63 INPUT FREESPACE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 86 (FREESPACE) F 21 Free space management 3 4 FS BLOCK 5 6 ********************************************************************************** 7 * This module manages free space needs. This is a simplistic * 8 * package that assumes that no space given out will need to be * 9 * freed later. It depends on an external memory manager from which * 10 * it gets memory a page at a time. * 11 * While it can allocate a block which crosses a page boundary, * 12 * it cannot dispense a block greater than WPP words. This may need * 13 * to change. * 14 ********************************************************************************** 15 16 ENTRY FSINIT 17 ENTRY FSGET 18 19 VARS 000070A7 20 FREEPTR BSS 1 Word address of next free chunk 21 22 PROG 23 24 * Initialize free storage variables. 25 26 FSINIT BLOCK 27 ENTRY FSINIT 28 29 BEGFRAME 30 ENDFRAME 31 039C1 DD5F8001 6 STAK 32 FSINIT ENTRNP PUSH 039C2 6004001D 0 IMM 33 LD R0 FIRSTFREEPN first available page 039C3 1C040400 0 IMM 34 MUL R0 WPP make word address 039C4 E40070A7 0 35 ST R0 FREEPTR and save as next address 039C5 60441000 1 IMM 36 LD R1 CPP clear out the whole page 039C6 DA000800 0 1 37 FILLI R0 R1 0 039C7 5D1F8001 6 STAK 38 LEAVE POP 39 * --- 40 41 END FSINIT 42 43 FSGET BLOCK 44 ENTRY FSGET 45 46 BEGFRAME 00178801 6 BASE 47 LENGTH BSS 1 Number of words requested 00178802 6 BASE 48 VIRTUALPAGE BSS 1 Virtual page number of new page 00178803 6 BASE 49 SAVER2R3 BSS 2 50 ENDFRAME 51 039C8 DD1F8005 6 STAK 52 FSGET ENTR PUSH 039C9 C0520000 0 REG 53 STPVL R0 parameter is size requested 039CA E6978803 236 BASE 54 ST2 R2 SP,SAVER2R3 039CB 5C007097 55 CMZ OFFLINE are we offline? 039CC FE0C39D0 56 JNE OFFL jump if so 039CD 180070A7 0 57 ADD R0 FREEPTR Online, just push the pointer past 039CE E00070A7 0 58 EXCH R0 FREEPTR the requested region and return 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 87 (FREESPACE) F 21 Free space management 039CF FE0E39E5 59 JMP DONE the old value 60 * --- 000039D0 61 OFFL LABEL 039D0 60520000 1 0 REG 62 LD R1 R0 039D1 184070A7 1 63 ADD R1 FREEPTR Check if the size requested will 039D2 6085FC00 2 IMM 64 LD R2 01FC00 fit entirely in the current page 039D3 6C4070A7 12 65 MCPR R1 FREEPTR 039D4 FE0C39D8 66 JNE NEEDNEWPAGE 039D5 600070A7 0 67 LD R0 FREEPTR Yes it will, get the current pointer 039D6 E44070A7 1 68 ST R1 FREEPTR and bump it for next time 039D7 FE0E39E5 69 JMP DONE 70 * --- 71 72 ********************************************************************************** 73 * There is insufficient space in the current page for the area * 74 * requested. We need to get an additional physical memory page and * 75 * map it into the next higher page in our virtual address space. * 76 ********************************************************************************** 77 000039D8 78 NEEDNEWPAGE LABEL 039D8 E4178801 0 6 BASE 79 ST R0 SP,LENGTH 039D9 60CA5E70 3 1 CBM 80 LD R3 R1/BITS 15:21 Get virtual page number needed 039DA 7CC40080 3 IMM 81 IOR R3 MONPF 039DB E4D78802 3 6 BASE 82 ST R3 SP,VIRTUALPAGE 039DC DC403A03 83 CALLNP ALLOCPAGE Get a physical page 039DD 60D78802 3 6 BASE 84 LD R3 SP,VIRTUALPAGE 039DE 00D20000 0 REG 85 LDPF R0 Map in the new page 039DF 1CC40400 3 IMM 86 MUL R3 WPP Zero out the page 039E0 60041000 0 IMM 87 LD R0 CPP 039E1 DAC00000 3 0 88 FILLI R3 R0 0 039E2 60178801 0 6 BASE 89 LD R0 SP,LENGTH Now give out the memory normally 039E3 180070A7 0 90 ADD R0 FREEPTR 039E4 E00070A7 0 91 EXCH R0 FREEPTR 92 * \ / 000039E5 93 DONE LABEL 039E5 62978803 236 BASE 94 LD2 R2 SP,SAVER2R3 039E6 5D1F8005 6 STAK 95 LEAVE POP 96 * --- 97 98 END FSGET 99 100 END FS 64 INPUT MEMORY 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 88 (MEMORY) F 22 Physical memory page management 3 4 PHYSMEM BLOCK 5 6 ********************************************************************************** 7 * This module allocates physical memory on a page-by-page * 8 * basis. It should only be called in the offline environment. * 9 ********************************************************************************** 10 11 ENTRY MEMINIT 12 ENTRY ALLOCPAGE 13 14 VARS 15 00000001 ABS 16 MEMDEVICE EQU 1 WRU device number for memory 000070A8 17 CURSLOT BSS 1 The VRA slot from which we are 18 taking memory 000070A9 19 CURGRAN BSS 1 The current granule number 000070AA 20 GRANPAGES BSS 1 The number of pages we've already 21 given out from the current granule 000070AB 22 GRANULARITY BSS 1 How many pages are in each granule 23 of the current memory device 000070AC 24 MEMORYMAP BSS 1 Bit mask of existent granules 000070AD 25 SLOTPAGES BSS 1 The number of pages we've given out 26 from the current slot (includes 27 non-existent pages that were skipped) 28 29 PROG 30 31 MEMINIT BLOCK 32 ENTRY MEMINIT 33 34 ********************************************************************************** 35 * This procedure must be called before any call to ALLOCPAGE. * 36 * Calling format: * 37 * CALLNP MEMINIT * 38 ********************************************************************************** 39 40 BEGFRAME 41 ENDFRAME 42 039E7 DD5F8001 6 STAK 43 MEMINIT ENTRNP PUSH 039E8 601013E6 0 @ 44 LD R0 @VMEMPF Get a prototype page map value for 039E8 601013E6 0 @ 45 the boot memory 039E9 604A0840 1 0 CBM 46 LD R1 R0/PFSLOT Get the boot memory slot number 039EA E44070A8 1 47 ST R1 CURSLOT 48 * Now get the memory map for this slot 039EB 60124000 0 1 REG 49 LD R0 R1 039EC 1C040010 0 IMM 50 MUL R0 WRUIMAX 039ED 60200204 0 0 51 LD R0 WRUIPROTO/WRU4(R0) 039EE E40070AC 0 52 ST R0 MEMORYMAP 53 54 ********************************************************************************** 55 * We now must pretend that we've already allocated the pages * 56 * containing DISKBOOT, ONPL, and our code and data. This means we * 57 * must count the number of granules and pages representing that * 58 * many pages. * 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 89 (MEMORY) F 22 Physical memory page management 59 ********************************************************************************** 60 61 * First, find the granularity of the current memory 039EF 60220370 0 1 62 LD R0 IBSLOTS(R1) Get the WRU for this slot 039F0 600A2040 0 0 CBM 63 LD R0 R0/WRUMEMINC 039F1 60840010 2 IMM 64 LD R2 16 000039F2 65 MEMDOUBLE LABEL 039F2 18928000 2 2 REG 66 ADD R2 R2 039F3 FA2639F2 0 67 JDR R0 MEMDOUBLE 039F4 E48070AB 2 68 ST R2 GRANULARITY 69 70 * Now find our starting point. Note that this code assumes that 71 * a free page will be found in the boot slot. 039F5 6004001F 0 IMM 72 LD R0 31 Candidate granule number 039F6 6044001E 1 IMM 73 LD R1 FIRSTFREEPN+1 Number of pages we need to 'allocate' 039F7 388070AC 2 74 LEA R2 MEMORYMAP 039F8 38888010 2 2 ZBM 75 LEA R2 R2,0/BIT 0 000039F9 76 FINDGRAN LABEL 039F9 5C1A8400 20 @R 77 CMZ @R2(R0) Does the current granule position exist? 039FA FE0239FE 78 JEQ NEXTGRAN No, continue on 039FB 644070AB 1 79 CPR R1 GRANULARITY Does this granule contain all the pages? 039FC FE0A39FF 80 JLE FOUNDGRAN Yes, we found the correct granule 039FD 104070AB 1 81 SUB R1 GRANULARITY Account for the pages we found 000039FE 82 NEXTGRAN LABEL 039FE FA2239F9 0 83 DRJ R0 FINDGRAN Look for the next granule 84 * --- 85 000039FF 86 FOUNDGRAN LABEL 039FF E40070A9 0 87 ST R0 CURGRAN Set the current granule 03A00 E44070AA 1 88 ST R1 GRANPAGES and the page position therein 03A01 E44070AD 1 89 ST R1 SLOTPAGES Also the page position in the slot 03A02 5D1F8001 6 STAK 90 LEAVE POP 91 * --- 92 93 END MEMINIT 94 95 ALLOCPAGE BLOCK 96 ENTRY ALLOCPAGE 97 98 ********************************************************************************** 99 * This procedure is used to allocate a page of physical memory. * 100 * Calling format: * 101 * CALLNP ALLOCPAGE * 102 * Returns: * 103 * R0 = Page map value of the page * 104 ********************************************************************************** 105 106 BEGFRAME 107 ENDFRAME 108 03A03 DD5F8001 6 STAK 109 ALLOCPAGE ENTRNP PUSH 03A04 600070AA 0 110 LD R0 GRANPAGES Get pages already given 03A05 640070AB 0 111 CPR R0 GRANULARITY Any more available from here? 03A06 FE083A32 112 JLT BUILDPM Yes, just give out a page 00003A07 113 STARTOVER LABEL 114 * This granule is all used up. Go to the next one. 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 90 (MEMORY) F 22 Physical memory page management 03A07 388070AC 2 115 LEA R2 MEMORYMAP 03A08 38888010 2 2 ZBM 116 LEA R2 R2,0/BIT 0 03A09 EC0070AA 117 STZ GRANPAGES 00003A0A 118 NEXTGRAN LABEL 03A0A D04070A9 119 DEC CURGRAN 03A0B 604070A9 1 120 LD R1 CURGRAN 03A0C 64440018 1 IMM 121 CPR R1 24 Reached end of memory map? 03A0D FE083A14 122 JLT NEXTSLOT 03A0E 5C1A8C00 21 @R 123 CMZ @R2(R1) Does this granule exist? 03A0F FE0C3A32 124 JNE BUILDPM Yes, we're ready to continue 03A10 600070AB 0 125 LD R0 GRANULARITY No, skip past the nonexistent pages 03A11 980070AA 0 126 ADDM R0 GRANPAGES 03A12 980070AD 0 127 ADDM R0 SLOTPAGES 03A13 FE0E3A0A 128 JMP NEXTGRAN and keep looking 129 * --- 130 131 * This memory device is all used up. Look for another one. 00003A14 132 NEXTSLOT LABEL 03A14 BC4070A8 1 133 INCL R1 CURSLOT 03A15 64440010 1 IMM 134 CPR R1 NUMSLOTS Are we all out of slots? 03A16 FE083A23 135 JLT SLOTOK No, continue 03A17 DC003C2A 136 CALL FATALERROR Yes, we're SOL 03A18 41403A1A 137 PARV HALTCODE 03A19 40003A1B 138 PARL TXNOMEM "Insufficient memory" 139 * --- 140 03A1A 00173300 141 HALTCODE VFD HALTW3300 03A1B 496E7375 142 TXNOMEM TEXTZ "Insufficient physical memory" 143 00003A23 144 SLOTOK LABEL 03A23 60220370 0 1 145 LD R0 IBSLOTS(R1) Get WRU0 for this slot 03A24 600A0040 0 0 CBM 146 LD R0 R0/WRU0TYPE Get device type 03A25 64040001 0 IMM 147 CPR R0 MEMDEVICE Is it memory? 03A26 FE0C3A14 148 JNE NEXTSLOT No, keep looking 03A27 60124000 0 1 REG 149 LD R0 R1 03A28 1C040010 0 IMM 150 MUL R0 WRUIMAX 03A29 60200204 0 0 151 LD R0 WRUIPROTO/WRU4(R0) Get memory map 03A2A F62C3A14 0 152 JBT R0/WRUMEMNONE NEXTSLOT Skip broken memory slots 03A2B F62E3A14 0 153 JBT R0/WRUMEMBAD NEXTSLOT 03A2C E40070AC 0 154 ST R0 MEMORYMAP 03A2D EC0070AA 155 STZ GRANPAGES 03A2E EC0070AD 156 STZ SLOTPAGES 03A2F 6004001F 0 IMM 157 LD R0 31 03A30 E40070A9 0 158 ST R0 CURGRAN 03A31 FE0E3A07 159 JMP STARTOVER 160 * --- 161 00003A32 162 BUILDPM LABEL 163 * Here we build the page map value for the page we're going to return 03A32 600070AD 0 164 LD R0 SLOTPAGES Set page number and zero other fields 03A33 604070A8 1 165 LD R1 CURSLOT 03A34 E44A0840 1 0 CBM 166 ST R1 R0/PFSLOT Set slot number, and we're done 03A35 D00070AA 167 INC GRANPAGES 03A36 D00070AD 168 INC SLOTPAGES 03A37 5D1F8001 6 STAK 169 LEAVE POP 170 * --- 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 91 (MEMORY) F 22 Physical memory page management 171 172 END ALLOCPAGE 173 174 END PHYSMEM 65 INPUT ACCTTABLE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 92 (ACCTTABLE) F 23 account name table manager 3 4 ACCTTABLE BLOCK 5 ENTRY ACCTADD 6 ENTRY ACCTFIND 7 ENTRY ACCTCOUNT 8 9 ********************************************************************************** 10 * This module is responsible for maintaining an array of * 11 * account names. The Disk Block Array contains, for each block, an * 12 * index into this array which describes the account that the block * 13 * belongs to. * 14 * Entrypoints exist for looking up an account name and adding * 15 * a new one to the list. * 16 ********************************************************************************** 17 18 ACCTADD BLOCK 19 ENTRY ACCTADD 20 21 ********************************************************************************** 22 * This procedure will add an account serial number to the list. * 23 * Calling format: * 24 * CALL ACCTADD * 25 * PARV2 * 26 * PARVL * 27 * Returns: * 28 * R0 = list index * 29 ********************************************************************************** 30 31 BEGFRAME 00178801 6 BASE 32 SAVER2R3 BSS 2 00178803 6 BASE 33 SAVER4 BSS 1 34 ENDFRAME 35 03A38 DD1F8004 6 STAK 36 ACCTADD ENTR PUSH 03A39 E6978801 236 BASE 37 ST2 R2 SP,SAVER2R3 03A3A E5178803 4 6 BASE 38 ST R4 SP,SAVER4 03A3B C3544000 12 PAIR 39 STPV2 PAIR R1 03A3C C0520000 0 REG 40 STPVL R0 41 * See if the account is already stored 03A3D 60C40000 3 IMM 42 LD R3 0 initialize counter 03A3E 39006400 4 43 LEA R4 ACCTNAMES load pointer to first table entry 00003A3F 44 LOOP LABEL 03A3F 64C0709D 3 45 CPR R3 ACCTCOUNT any more entries to check? 03A40 FE023A47 46 JEQ NOTTHERE jump if not 03A41 64170802 0 4 BASE 47 CPR R0 R4,2 Does the divprj match? 03A42 FE0C3A45 48 JNE NEXT 03A43 66570800 124 BASE 49 CPR2 R1 R4,0 How about the name? 03A44 FE023A52 50 JEQ ITSINTHERE 00003A45 51 NEXT LABEL 03A45 19040003 4 IMM 52 ADD R4 3 Advance to next entry 03A46 FAE03A3F 3 53 IRJ R3 LOOP 54 * --- 00003A47 55 NOTTHERE LABEL 03A47 60C0709D 3 56 LD R3 ACCTCOUNT load index to table end 03A48 64C40400 3 IMM 57 CPR R3 MAXACCTS Have we reached the account limit? 03A49 FE063A56 58 JGE TOOMANY jump if so, error 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 93 (ACCTTABLE) F 23 account name table manager 03A4A 39006400 4 59 LEA R4 ACCTNAMES No, store the new account name 03A4B 1CC40003 3 IMM 60 MUL R3 3 03A4C E45D1800 1 43 BASE 61 ST R1 R4,0(R3) 03A4D E49D1801 2 43 BASE 62 ST R2 R4,1(R3) 03A4E E41D1802 0 43 BASE 63 ST R0 R4,2(R3) 03A4F 6000709D 0 64 LD R0 ACCTCOUNT load index to this (new) entry 03A50 D000709D 65 INC ACCTCOUNT and increase count of entries 03A51 FE0E3A53 66 JMP DONE 67 * --- 68 00003A52 69 ITSINTHERE LABEL entry found, 03A52 6012C000 0 3 REG 70 LD R0 R3 return its index 00003A53 71 DONE LABEL 03A53 62978801 236 BASE 72 LD2 R2 SP,SAVER2R3 03A54 61178803 4 6 BASE 73 LD R4 SP,SAVER4 03A55 5D1F8004 6 STAK 74 LEAVE POP 75 * --- 76 00003A56 77 TOOMANY LABEL 03A56 DC003C2A 78 CALL FATALERROR 03A57 40003A58 79 PARL TXTOOMANY 80 * --- 81 03A58 546F6F20 82 TXTOOMANY TEXTZ "Too many accounts on volume" 83 84 END ACCTADD 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 94 (ACCTTABLE) F 23 account name table manager 86 87 ACCTFIND BLOCK 88 ENTRY ACCTFIND 89 90 ********************************************************************************** 91 * This procedure returns an account name given its index. * 92 * Calling format: * 93 * CALL ACCTFIND * 94 * PARVL * 95 * Returns: * 96 * R0, R1 = Account name * 97 * R2 = Account DivPrj * 98 ********************************************************************************** 99 100 BEGFRAME 00178801 6 BASE 101 SAVER3R4 BSS 2 102 ENDFRAME 103 03A5F DD1F8003 6 STAK 104 ACCTFIND ENTR PUSH 03A60 E6D78801 346 BASE 105 ST2 R3 SP,SAVER3R4 03A61 C052C000 3 REG 106 STPVL R3 03A62 39006400 4 107 LEA R4 ACCTNAMES load pointer to table 03A63 1CC40003 3 IMM 108 MUL R3 3 multiply by table entry size 03A64 601D1800 0 43 BASE 109 LD R0 R4,0(R3) 03A65 605D1801 1 43 BASE 110 LD R1 R4,1(R3) 03A66 609D1802 2 43 BASE 111 LD R2 R4,2(R3) 03A67 62D78801 346 BASE 112 LD2 R3 SP,SAVER3R4 03A68 5D1F8003 6 STAK 113 LEAVE POP 114 * --- 115 END ACCTFIND 116 117 END ACCTTABLE 66 INPUT DBAMGR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 95 (DBAMGR) F 24 Disk Block Array Management 3 4 DBAMGR BLOCK 5 6 ********************************************************************************** 7 * This module manages the Disk Block Array. Its first task is * 8 * to accept definitions of disk block from the initial scan of the * 9 * disk. Later it will give access to individual block definitions. * 10 * * 11 * There are significantly different versions of this code for * 12 * the on- and off-line environments. In either case, the DBA is * 13 * managed as a virtual array, subscripted by disk block number, and * 14 * the entrypoint DBAACCESS is used to get access to a particular * 15 * array element. There is a memory page, labelled by DBDESCWNDO, * 16 * dedicated to providing access to elements of this array. The * 17 * online and offline versions are both responsible for somehow * 18 * getting the requested element to appear in that memory page. * 19 * * 20 * Online, the array is stored on a RAF, and the required file * 21 * page is provided via FRMAPIN. Offline, the array is stored in one * 22 * or more virtual address spaces, one of which is always loaded * 23 * into the user half of the CPU's page files. Each of these * 24 * address spaces contains a contiguous portion of the entire array. * 25 * Within each space, the elements are still stored as an array, but * 26 * each element has a link to the next so that list searching * 27 * instructions can be used when particular kinds of blocks are * 28 * being sought. When the proper element is found, the page map * 29 * value corresponding to DBDESCWNDO is set equal to the PMV for the * 30 * user-space page, thus making the element available to PIE. The * 31 * first element in each subspace begins at address 1. * 32 * Offline, the elements can span a page boundary, online they do not. * 33 * * 34 ********************************************************************************** 35 36 ENTRY DBAINIT 37 ENTRY DBAACCESS 38 ENTRY DBAFINDFILE 39 ENTRY DBAFINDACCT 40 ENTRY GETFREEBLK 41 42 43 VARS 44 45 * Online variables 46 000070AE 47 LUN BSS 1 Scratch RAF to hold the DBA 000070AF 48 CURRENTPAGE BSS 1 Page number mapped from LUN 000070B0 49 HIGHPAGE BSS 1 The page containing the last DBA entry 00000155 ABS 50 DESCSPPAGE EQU WPP/DBDESCLEN 51 52 53 * Offline variables 54 00000004 ABS 55 MAXSPACES EQU 4 0000AAAA ABS 56 SPACESIZE EQU (128*WPP-1)/DBDESCLEN How many disk block descriptions 57 fit into each subspace 000070B1 58 SPACEPFS BSS MAXSPACES Pointers to PFMAP list for each subspace 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 96 (DBAMGR) F 24 Disk Block Array Management 000070B5 59 HIGHSPACE BSS 1 Number of subspaces minus 1 000070B6 60 MAPPEDSPACE BSS 1 Index of the subspace currently 61 mapped into PF 0-127 62 63 64 000070B7 65 FREESTART BSS 2 Holds the space number and virtual address 66 (or page number and offset) from which to 67 search for a free block 68 PROG 69 70 71 * The format of the list entries used by LLPF 72 00003A69 73 PML BASE 02000000 DISP 74 PMLPAGE BSSC 1 Virtual page number 75 BSSB 7 7C400000 DISP 76 PMLNEXT BSSB 17 Next list element 00000001 DISP 77 PMLPMVALUE BSS 1 Page map value 78 DRCT 79 ORG PML 80 81 DBAINIT BLOCK 82 ENTRY DBAINIT 83 84 ********************************************************************************** 85 * This procedure does any initialization neccessary in order * 86 * to fulfill this module's function. Online, this means opening a * 87 * unit to store the DBA on, offline, this means allocating physical * 88 * memory pages for as many subspaces as will be necessary, and * 89 * initializing the list links therein. * 90 * * 91 * Calling format: * 92 * CALL DBAINIT * 93 * PARVL * 94 * JMP * 95 ********************************************************************************** 96 97 BEGFRAME 00178801 6 BASE 98 BLOCKSTOGO BSS 1 The number of disk blocks not yet 99 represented in the array 00178802 6 BASE 100 SPACES BSS 1 How many subspaces we'll need 00178803 6 BASE 101 CURSPACE BSS 1 The number of the subspace that 102 we are creating 00178804 6 BASE 103 SAVER2R3 BSS 2 00178806 6 BASE 104 SAVER4 BSS 1 105 ENDFRAME 106 03A69 DD1F8007 6 STAK 107 DBAINIT ENTR PUSH 03A6A C0520000 0 REG 108 STPVL R0 109 03A6B E6978804 236 BASE 110 ST2 R2 SP,SAVER2R3 03A6C E5178806 4 6 BASE 111 ST R4 SP,SAVER4 03A6D 5C007097 112 CMZ OFFLINE are we running offline? 03A6E FE0C3A84 113 JNE OFFLINEINIT yes, jump to offline code 03A6F 14040155 0 IMM 114 DIV R0 DESCSPPAGE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 97 (DBAMGR) F 24 Disk Block Array Management 03A70 18040001 0 IMM 115 ADD R0 1 03A71 E40070B0 0 116 ST R0 HIGHPAGE 03A72 60040122 0 IMM 117 LD R0 URFREELUN Get a free local unit number 03A73 09040063 IMM 118 UREQ 99 03A74 FA083A81 0 119 JLTZ R0 FILEERROR error if no unit available 03A75 E44070AE 1 120 ST R1 LUN save the unit number returned 03A76 60040268 0 IMM 121 LD R0 FRNOPENCW Open a scratch raf 03A77 60440005 1 IMM 122 LD R1 5 03A78 38803A82 2 123 LEA R2 TXRAF "" 03A79 088070AE 124 FREQ LUN 03A7A FA083A81 0 125 JLTZ R0 FILEERROR 03A7B D14070AF 126 STMW CURRENTPAGE No page mapped in yet 03A7C EC0070B7 127 STZ FREESTART 03A7D 38004000 0 128 LEA R0 DBDESCWNDO 03A7E E40070B8 0 129 ST R0 FREESTART(1) 03A7F 19C40001 7 IMM 130 ADD R7 1 03A80 FE0E3A9C 131 JMP DONE That's all there is 132 * --- 133 00003A81 134 FILEERROR LABEL 03A81 DC403C3C 135 CALLNP SYSTEMERROR Give error and croak 136 * --- 137 03A82 3C524146 138 TXRAF TEXTZ "" 139 00003A84 140 OFFLINEINIT LABEL 03A84 E4178801 0 6 BASE 141 ST R0 SP,BLOCKSTOGO 03A85 1804AAA9 0 IMM 142 ADD R0 SPACESIZE-1 Find out how many subspaces 03A86 1404AAAA 0 IMM 143 DIV R0 SPACESIZE are necessary 03A87 64040004 0 IMM 144 CPR R0 MAXSPACES 03A88 FE043A9F 145 JGT OFFLERROR 03A89 E4178802 0 6 BASE 146 ST R0 SP,SPACES 03A8A 10040001 0 IMM 147 SUB R0 1 03A8B E40070B5 0 148 ST R0 HIGHSPACE 03A8C EC178803 6 BASE 149 STZ SP,CURSPACE 150 00003A8D 151 SPACELOOP LABEL 03A8D 60178801 0 6 BASE 152 LD R0 SP,BLOCKSTOGO Get the size of this subspace 03A8E 5004AAAA 0 IMM 153 MIN R0 SPACESIZE (they're all the same except 03A8F B0178801 0 6 BASE 154 RSBM R0 SP,BLOCKSTOGO the last one may be smaller) 03A90 60578803 1 6 BASE 155 LD R1 SP,CURSPACE 03A91 DC003AAB 156 CALL CREATESPACE Allocate memory for the subspace 03A92 41520000 0 REG 157 PARV R0 Block descriptors needed 03A93 40524000 1 REG 158 PARVL R1 Subspace index 03A94 BC178803 0 6 BASE 159 INCL R0 SP,CURSPACE 03A95 64178802 0 6 BASE 160 CPR R0 SP,SPACES Make as many as we need 03A96 FE083A8D 161 JLT SPACELOOP 162 03A97 DC003AD6 163 CALL SETSPACE Make the first subspace current 03A98 40440000 IMM 164 PARVL 0 03A99 EC0070B7 165 STZ FREESTART 03A9A EDC070B8 166 STW FREESTART(1) 03A9B 19C40001 7 IMM 167 ADD R7 1 advance to skip return 168 00003A9C 169 DONE LABEL 03A9C 62978804 236 BASE 170 LD2 R2 SP,SAVER2R3 restore registers 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 98 (DBAMGR) F 24 Disk Block Array Management 03A9D 61178806 4 6 BASE 171 LD R4 SP,SAVER4 03A9E 5D1F8007 6 STAK 172 LEAVE POP 173 * --- 174 00003A9F 175 OFFLERROR LABEL 03A9F DC003C2A 176 CALL FATALERROR 03AA0 41403AA2 177 PARV HALTCODE 03AA1 40003AA3 178 PARL TXTOOBIG "Volume too big for this program" 179 * --- 180 03AA2 00173301 181 HALTCODE VFD HALTW3301 03AA3 566F6C75 182 TXTOOBIG TEXTZ "Volume too big for this program" 183 184 END DBAINIT 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 99 (DBAMGR) F 24 Disk Block Array Management 186 187 CREATESPACE BLOCK 188 ENTRY CREATESPACE 189 190 ********************************************************************************** 191 * * 192 * This procedure initializes a subspace by allocating physical * 193 * memory, setting the list links into the array elements, and * 194 * creating a virtual memory mapping list which can be used to map * 195 * the subspace into the user half of the page file. * 196 * * 197 ********************************************************************************** 198 199 BEGFRAME 00178801 6 BASE 200 ELEMENTS BSS 1 The number of elements to create 00178802 6 BASE 201 SPACENUMBER BSS 1 00178803 6 BASE 202 VADDRESS BSS 1 The virtual address to add to the chain 00178804 6 BASE 203 PAGENUMBER BSS 1 The page for which we are creating an 204 LLPF element 00178805 6 BASE 205 SAVEPM BSS 1 206 ENDFRAME 207 03AAB DD1F8006 6 STAK 208 CREATESPACE ENTR PUSH 03AAC C1578801 6 BASE 209 STPV SP,ELEMENTS 03AAD C0578802 6 BASE 210 STPVL SP,SPACENUMBER 03AAE 60178801 0 6 BASE 211 LD R0 SP,ELEMENTS Get number of pages needed 03AAF 14040155 0 IMM 212 DIV R0 WPP/DBDESCLEN 03AB0 18040001 0 IMM 213 ADD R0 1 03AB1 DC0039C8 214 CALL FSGET Get some free memory for the VM list 03AB2 18120000 0 0 REG 215 ADD R0 R0 LLPF list has two words per entry 03AB3 40520000 0 REG 216 PARVL R0 03AB4 60578802 1 6 BASE 217 LD R1 SP,SPACENUMBER 03AB5 E42270B1 0 1 218 ST R0 SPACEPFS(R1) Store the head of the VM list 03AB6 D1578804 6 BASE 219 STMW SP,PAGENUMBER 03AB7 60C40090 3 IMM 220 LD R3 PNDBDESC+MONPF We are going to use the description 03AB8 80978805 6 BASE 221 PFRD SP,SAVEPM window, so save its real mapping 03AB9 EDD78803 6 BASE 222 STW SP,VADDRESS Each space starts at word 1 (for LSRCH) 223 00003ABA 224 LOOP LABEL 03ABA 6009ACA3 0 6 ZBM 225 LD R0 SP,VADDRESS/DISPFIELD 03ABB 64040003 0 IMM 226 CPR R0 DBDESCLEN Have we crossed into the next page? 03ABC FE063ACC 227 JGE SAMEPAGE No, just set the link 03ABC FE063ACC 228 Yes, initialize the new page 03ABD DC403A03 229 CALLNP ALLOCPAGE Get a PM value for a free physical page 03ABE 60578802 1 6 BASE 230 LD R1 SP,SPACENUMBER Locate the list entry for this virtual page 03ABF 606270B1 1 1 231 LD R1 SPACEPFS(R1) 03AC0 BC978804 2 6 BASE 232 INCL R2 SP,PAGENUMBER 03AC1 3B1C5000 4 12 BASE 233 LEA2 R4 R1,0(R2) (VM list is stored contiguously) 03AC2 E4970000 2 4 CACH 234 ST R2 R4,PMLPAGE Set virtual page number 03AC3 60571002 1 4 REG 235 LD R1 R4+2 R1 => next entry 03AC4 E4491F10 1 4 ZBM 236 ST R1 R4,PMLNEXT Set link to next page mapping 03AC5 E4170801 0 4 BASE 237 ST R0 R4,PMLPMVALUE Set page map value for this page 238 03AC6 60C40090 3 IMM 239 LD R3 PNDBDESC+MONPF Map in the page 03AC7 00D20000 0 REG 240 LDPF R0 03AC8 38004000 0 241 LEA R0 DBDESCWNDO and fill it with zeroes 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 100 (DBAMGR) F 24 Disk Block Array Management 03AC9 60441000 1 IMM 242 LD R1 CPP 03ACA DA000800 0 1 243 FILLI R0 R1 0 244 03ACB 6009ACA3 0 6 ZBM 245 LD R0 SP,VADDRESS/DISPFIELD 00003ACC 246 SAMEPAGE LABEL 03ACC 60440003 1 IMM 247 LD R1 DBDESCLEN 03ACD B8578803 1 6 BASE 248 ADDB R1 SP,VADDRESS Get address of next element 03ACE E4604000 1 0 249 ST R1 DBDESCWNDO(R0) Store in the current element 03ACF D0578801 6 BASE 250 DEC SP,ELEMENTS Continue for as many as needed 03AD0 FE043ABA 251 JGT LOOP 252 253 * In the last entry, we need to zero the link 03AD1 EC204000 0 254 STZ DBDESCWNDO(R0) Terminate the DBA element list 255 03AD2 EC091F10 4 ZBM 256 STZ R4,PMLNEXT Terminate the VM list 03AD3 60C40090 3 IMM 257 LD R3 PNDBDESC+MONPF Restore the description window 03AD4 00D78805 6 BASE 258 LDPF SP,SAVEPM 03AD5 5D1F8006 6 STAK 259 LEAVE POP 260 * --- 261 262 END CREATESPACE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 101 (DBAMGR) F 24 Disk Block Array Management 264 265 SETSPACE BLOCK 266 ENTRY SETSPACE 267 268 ********************************************************************************** 269 * This routine will map the requested subspace into the lower * 270 * half of the page file. * 271 * * 272 * Calling format: * 273 * CALL SETSPACE * 274 * PARVL * 275 ********************************************************************************** 276 277 BEGFRAME 278 ENDFRAME 279 03AD6 DD1F8001 6 STAK 280 SETSPACE ENTR PUSH 03AD7 C0520000 0 REG 281 STPVL R0 03AD8 E40070B6 0 282 ST R0 MAPPEDSPACE Remember which subspace is current 03AD9 606070B1 1 0 283 LD R1 SPACEPFS(R0) Get the VM list 03ADA 81804000 1 284 LLPF R1 and map it in 03ADB 5D1F8001 6 STAK 285 LEAVE POP 286 * --- 287 288 END SETSPACE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 102 (DBAMGR) F 24 Disk Block Array Management 290 291 DBAACCESS BLOCK 292 ENTRY DBAACCESS 293 294 ********************************************************************************** 295 * This procedure will return a pointer to the requested disk * 296 * block description. * 297 * * 298 * Calling format: * 299 * CALL DBAACCESS * 300 * PARVL * 301 * Returns: * 302 * R0 = pointer to disk block description * 303 ********************************************************************************** 304 305 BEGFRAME 00178801 6 BASE 306 OFFSET BSS 1 Word offset in file page 00178802 6 BASE 307 SAVER2R3 BSS 2 308 ENDFRAME 309 03ADC DD1F8004 6 STAK 310 DBAACCESS ENTR PUSH 03ADD C0524000 1 REG 311 STPVL R1 03ADE E6978802 236 BASE 312 ST2 R2 SP,SAVER2R3 03ADF 5C007097 313 CMZ OFFLINE 03AE0 FE023AF4 314 JEQ ONLINEACCES 03AE1 EC120000 0 REG 315 STZ R0 03AE2 58C40010 IMM 316 IORPSR PSRMODIF Get which subspace the block is in 03AE3 1404AAAA 0 IMM 317 DIV R0 SPACESIZE 03AE4 60A070B1 2 0 318 LD R2 SPACEPFS(R0) Get the head of the memory list for 03AE4 60A070B1 2 0 319 that space 03AE5 58840010 IMM 320 CLBPSR PSRMODIF 03AE6 1C440003 1 IMM 321 MUL R1 DBDESCLEN Get virtual address of starting element 03AE7 18440001 1 IMM 322 ADD R1 1 03AE8 600A5E70 0 1 CBM 323 LD R0 R1/FLDPAGE Get virtual pagenumber 03AE9 3A9C8000 2 20 BASE 324 LEA2 R2 R2,0(R0) Point to PML entry for that page 03AEA 60C40090 3 IMM 325 LD R3 PNDBDESC+MONPF Get page number for the description window 03AEB 00D68801 2 BASE 326 LDPF R2,PMLPMVALUE Map in the element's page 03AEC 604A6CA0 1 1 CBM 327 LD R1 R1/DISPFIELD Get the element's word offset 03AED 644403FC 1 IMM 328 CPR R1 WPP-1-DBDESCLEN Does it cross into the next page? 03AEE FE0A3AF1 329 JLE SAMEPAGE No, no problem 03AEF 60C40091 3 IMM 330 LD R3 PNDBDESC+1+MONPF Yes, map the next page too 03AF0 00D68803 2 BASE 331 LDPF R2,PMLPMVALUE(2) 00003AF1 332 SAMEPAGE LABEL 03AF1 38004000 0 333 LEA R0 DBDESCWNDO Build pointer to the requested element 03AF2 18124000 0 1 REG 334 ADD R0 R1 03AF3 FE0E3B05 335 JMP DONE 336 * --- 337 00003AF4 338 ONLINEACCES LABEL 03AF4 58C40010 IMM 339 IORPSR PSRMODIF 03AF5 EC120000 0 REG 340 STZ R0 03AF6 14040155 0 IMM 341 DIV R0 DESCSPPAGE R0 = page number 03AF7 58840010 IMM 342 CLBPSR PSRMODIF 03AF8 1C440003 1 IMM 343 MUL R1 DBDESCLEN R1 = word offset in page 03AF9 640070AF 0 344 CPR R0 CURRENTPAGE Right page already mapped in? 03AFA FE023B03 345 JEQ NOMAP Yes, skip the map in 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 103 (DBAMGR) F 24 Disk Block Array Management 03AFB E4578801 1 6 BASE 346 ST R1 SP,OFFSET 03AFC 60520000 1 0 REG 347 LD R1 R0 Get file page in right register 03AFD E44070AF 1 348 ST R1 CURRENTPAGE 03AFE 60840010 2 IMM 349 LD R2 PNDBDESC Get memory page 03AFF 60040091 0 IMM 350 LD R0 FRMAPIN 03B00 088070AE 351 FREQ LUN Map in the page 03B01 FA083C08 0 352 JLTZ R0 MAPERROR 03B02 60578801 1 6 BASE 353 LD R1 SP,OFFSET 00003B03 354 NOMAP LABEL 03B03 38004000 0 355 LEA R0 DBDESCWNDO Get pointer to the window 03B04 18124000 0 1 REG 356 ADD R0 R1 and make pointer to the description 00003B05 357 DONE LABEL 03B05 62978802 236 BASE 358 LD2 R2 SP,SAVER2R3 03B06 5D1F8004 6 STAK 359 LEAVE POP 360 * --- 361 362 END DBAACCESS 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 104 (DBAMGR) F 24 Disk Block Array Management 364 365 DBAFINDFILE BLOCK 366 ENTRY DBAFINDFILE 367 368 ********************************************************************************** 369 * This procedure will find a block belonging to a given file, * 370 * identified by file serial number. * 371 * Calling format: * 372 * CALL DBAFINDFILE * 373 * PARV2 * 374 * PARVL * 375 * ST R0 * 376 ********************************************************************************** 377 378 BEGFRAME 00178801 6 BASE 379 SERIALNO BSS 2 00178803 6 BASE 380 SPACENO BSS 1 The index of space being searched 00178804 6 BASE 381 STARTADDR BSS 1 Virtual address to start search 382 ENDFRAME 383 03B07 DD1F8005 6 STAK 384 DBAFINDFILE ENTR PUSH 03B08 C3578801 6 BASE 385 STPV2 SP,SERIALNO 03B09 C0524000 1 REG 386 STPVL R1 03B0A 5C007097 387 CMZ OFFLINE 03B0B FE023B35 388 JEQ ONLINEFIND 03B0C 58C40010 IMM 389 IORPSR PSRMODIF Change starting element to space number 03B0D EC120000 0 REG 390 STZ R0 and element 03B0E 1404AAAA 0 IMM 391 DIV R0 SPACESIZE R0=space #, R1=element # 03B0F 58840010 IMM 392 CLBPSR PSRMODIF 03B10 E4178803 0 6 BASE 393 ST R0 SP,SPACENO 03B11 1C440003 1 IMM 394 MUL R1 DBDESCLEN Get address within the subspace 03B12 18440001 1 IMM 395 ADD R1 1 03B13 E4578804 1 6 BASE 396 ST R1 SP,STARTADDR 03B14 60178803 0 6 BASE 397 LD R0 SP,SPACENO 00003B15 398 SPACELOOP LABEL 03B15 DC003AD6 399 CALL SETSPACE 03B16 40520000 0 REG 400 PARVL R0 401 * This is a fast search of the DBA subspace based on the low 402 * 32 bits of the file serial number. 00003B17 403 SEARCHLOOP LABEL 03B17 60578802 1 6 BASE 404 LD R1 SP,SERIALNO(1) 03B18 60178804 0 6 BASE 405 LD R0 SP,STARTADDR 03B19 59840040 IMM 406 CLBMSR MSRFRELOC 03B1A 3C560802 1 0 BASE 407 LSRCH R1 R0,DBAFSN2 03B1B FE0C3B29 408 JNE NEXTSPACE 409 * We found a match on those bits, now we have to see if it's a 410 * complete match. 411 RESTOREFSN R0,R2,R3 03B21 59C40040 IMM 412 IORMSR MSRFRELOC 03B22 66978801 236 BASE 413 CPR2 R2 SP,SERIALNO 03B23 FE023B30 414 JEQ FOUNDOFFL 415 * It didn't match after all. Now advance to the next element 416 * in order to resume the search. We do this by retrieving the list 417 * link rather than just adding DBDESCLEN in case we stopped on the 418 * last element in the subspace. 03B24 59840040 IMM 419 CLBMSR MSRFRELOC 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 105 (DBAMGR) F 24 Disk Block Array Management 03B25 60081F10 0 0 ZBM 420 LD R0 R0,DBANEXT 03B26 59C40040 IMM 421 IORMSR MSRFRELOC 03B27 E4178804 0 6 BASE 422 ST R0 SP,STARTADDR 03B28 FE0E3B17 423 JMP SEARCHLOOP 424 * --- 425 00003B29 426 NEXTSPACE LABEL 03B29 59C40040 IMM 427 IORMSR MSRFRELOC 03B2A EDD78804 6 BASE 428 STW SP,STARTADDR 03B2B BC178803 0 6 BASE 429 INCL R0 SP,SPACENO Try the next subspace, 03B2C 640070B5 0 430 CPR R0 HIGHSPACE if there is one 03B2D FE0A3B15 431 JLE SPACELOOP 03B2E EC120000 0 REG 432 STZ R0 That was the last one, file not found 03B2F FE0E3B64 433 JMP DONE 434 * --- 435 00003B30 436 FOUNDOFFL LABEL 03B30 14040003 0 IMM 437 DIV R0 DBDESCLEN Get element number in this space 03B31 60578803 1 6 BASE 438 LD R1 SP,SPACENO Count elements in prior subspaces 03B32 1C44AAAA 1 IMM 439 MUL R1 SPACESIZE 03B33 18124000 0 1 REG 440 ADD R0 R1 Add 'em to get true DBA subscript 03B34 FE0E3B64 441 JMP DONE 442 * --- 443 00003B35 444 ONLINEFIND LABEL 03B35 EC120000 0 REG 445 STZ R0 Change starting position to page 03B36 58C40010 IMM 446 IORPSR PSRMODIF number and element number 03B37 14040155 0 IMM 447 DIV R0 DESCSPPAGE 03B38 58840010 IMM 448 CLBPSR PSRMODIF 03B39 640070AF 0 449 CPR R0 CURRENTPAGE Is the right page already mapped? 03B3A FE023B43 450 JEQ GOTPAGE 03B3B E4578804 1 6 BASE 451 ST R1 SP,STARTADDR No, map it in 03B3C 60520000 1 0 REG 452 LD R1 R0 03B3D E44070AF 1 453 ST R1 CURRENTPAGE 03B3E 60040091 0 IMM 454 LD R0 FRMAPIN 03B3F 60840010 2 IMM 455 LD R2 PNDBDESC 03B40 088070AE 456 FREQ LUN 03B41 FA083C08 0 457 JLTZ R0 MAPERROR 03B42 60578804 1 6 BASE 458 LD R1 SP,STARTADDR 459 * \ / 00003B43 460 GOTPAGE LABEL 03B43 38004000 0 461 LEA R0 DBDESCWNDO Point to beginning of window 03B44 1C440003 1 IMM 462 MUL R1 DBDESCLEN Change element number to word offset 03B45 18124000 0 1 REG 463 ADD R0 R1 Make pointer to first element 03B46 60578802 1 6 BASE 464 LD R1 SP,SERIALNO(1) Value to search for 00003B47 465 ENTRYLOOP LABEL 03B47 64560802 1 0 BASE 466 CPR R1 R0,DBAFSN2 This element match? 03B48 FE0C3B50 467 JNE ENTRYNEXT No, try next 468 RESTOREFSN R0,R2,R3 03B4E 66978801 236 BASE 469 CPR2 R2 SP,SERIALNO Does the whole thing match? 03B4F FE023B5F 470 JEQ FOUNDONL 00003B50 471 ENTRYNEXT LABEL 03B50 18040003 0 IMM 472 ADD R0 DBDESCLEN Advance to next entry 03B51 640443FF 0 IMM 473 CPR R0 ADR DBDESCWNDO(DBDESCLEN*DESCSPPAGE) 03B52 FE0A3B47 474 JLE ENTRYLOOP Continue if still within the page 03B53 600070AF 0 475 LD R0 CURRENTPAGE Try next page 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 106 (DBAMGR) F 24 Disk Block Array Management 03B54 640070B0 0 476 CPR R0 HIGHPAGE 03B55 FE043B65 477 JGT NOTFOUND No more pages, not found 03B56 60561001 1 0 REG 478 LD R1 R0+1 Map in the next page 03B57 E44070AF 1 479 ST R1 CURRENTPAGE 03B58 60040091 0 IMM 480 LD R0 FRMAPIN 03B59 60840010 2 IMM 481 LD R2 PNDBDESC 03B5A 088070AE 482 FREQ LUN 03B5B FA083C08 0 483 JLTZ R0 MAPERROR 03B5C 38004000 0 484 LEA R0 DBDESCWNDO And search it 03B5D 60578802 1 6 BASE 485 LD R1 SP,SERIALNO(1) 03B5E FE0E3B47 486 JMP ENTRYLOOP 487 * --- 488 00003B5F 489 FOUNDONL LABEL 03B5F 10044000 0 IMM 490 SUB R0 ADR DBDESCWNDO Change pointer to offset in page 03B60 14040003 0 IMM 491 DIV R0 DBDESCLEN Get element number in page 03B61 604070AF 1 492 LD R1 CURRENTPAGE Get number in prior pages 03B62 1C440155 1 IMM 493 MUL R1 DESCSPPAGE 03B63 18124000 0 1 REG 494 ADD R0 R1 Add for final answer 495 * \ / 00003B64 496 DONE LABEL 03B64 5D1F8005 6 STAK 497 LEAVE POP 498 * --- 499 00003B65 500 NOTFOUND LABEL 03B65 EC120000 0 REG 501 STZ R0 03B66 FE0E3B64 502 JMP DONE 503 * --- 504 505 END DBAFINDFILE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 107 (DBAMGR) F 24 Disk Block Array Management 507 508 DBAFINDACCT BLOCK 509 ENTRY DBAFINDACCT 510 511 ********************************************************************************** 512 * This procedure will find a block belonging to a given * 513 * account, identified by its index in the account name array. * 514 * Calling format: * 515 * CALL DBAFINDACCT * 516 * PARV * 517 * PARVL * 518 * ST R0 * 519 ********************************************************************************** 520 521 BEGFRAME 00178801 6 BASE 522 ACCTINDEX BSS 1 The account to search for 00178802 6 BASE 523 SPACENO BSS 1 The index of space being searched 00178803 6 BASE 524 STARTADDR BSS 1 Virtual address to start search 525 ENDFRAME 526 03B67 DD1F8004 6 STAK 527 DBAFINDACCT ENTR PUSH 03B68 C1578801 6 BASE 528 STPV SP,ACCTINDEX 03B69 C0524000 1 REG 529 STPVL R1 03B6A 5C007097 530 CMZ OFFLINE 03B6B FE023B87 531 JEQ ONLINEFIND 03B6C 58C40010 IMM 532 IORPSR PSRMODIF Change starting element to space number 03B6D EC120000 0 REG 533 STZ R0 and element 03B6E 1404AAAA 0 IMM 534 DIV R0 SPACESIZE R0=space #, R1=element # 03B6F 58840010 IMM 535 CLBPSR PSRMODIF 03B70 E4178802 0 6 BASE 536 ST R0 SP,SPACENO 03B71 1C440003 1 IMM 537 MUL R1 DBDESCLEN Get address within the subspace 03B72 18440001 1 IMM 538 ADD R1 1 03B73 E4578803 1 6 BASE 539 ST R1 SP,STARTADDR 03B74 60178802 0 6 BASE 540 LD R0 SP,SPACENO 00003B75 541 SPACELOOP LABEL 03B75 DC003AD6 542 CALL SETSPACE 03B76 40520000 0 REG 543 PARVL R0 03B77 60578801 1 6 BASE 544 LD R1 SP,ACCTINDEX 03B78 60178803 0 6 BASE 545 LD R0 SP,STARTADDR 03B79 59840040 IMM 546 CLBMSR MSRFRELOC 03B7A 3C4800B0 1 0 ZBM 547 LSRCH R1 R0,DBAACCT 03B7B 59C40040 IMM 548 IORMSR MSRFRELOC 03B7C FE023B82 549 JEQ FOUNDOFFL 03B7D BC178802 0 6 BASE 550 INCL R0 SP,SPACENO Try the next subspace, 03B7E 640070B5 0 551 CPR R0 HIGHSPACE if there is one 03B7F FE083B75 552 JLT SPACELOOP 03B80 EC120000 0 REG 553 STZ R0 The account was not found 03B81 FE0E3BAF 554 JMP DONE 555 * --- 556 00003B82 557 FOUNDOFFL LABEL 03B82 14040003 0 IMM 558 DIV R0 DBDESCLEN Get element number in this subspace 03B83 60578802 1 6 BASE 559 LD R1 SP,SPACENO Count elements in prior subspaces 03B84 1C44AAAA 1 IMM 560 MUL R1 SPACESIZE 03B85 18124000 0 1 REG 561 ADD R0 R1 Add 'em to get true DBA subscript 03B86 FE0E3BAF 562 JMP DONE 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 108 (DBAMGR) F 24 Disk Block Array Management 563 * --- 564 00003B87 565 ONLINEFIND LABEL 03B87 EC120000 0 REG 566 STZ R0 Change starting position to page 03B88 58C40010 IMM 567 IORPSR PSRMODIF number and element number 03B89 14040155 0 IMM 568 DIV R0 DESCSPPAGE 03B8A 58840010 IMM 569 CLBPSR PSRMODIF 03B8B 640070AF 0 570 CPR R0 CURRENTPAGE Is the right page already mapped? 03B8C FE023B95 571 JEQ GOTPAGE 03B8D E4578803 1 6 BASE 572 ST R1 SP,STARTADDR No, map it in 03B8E 60520000 1 0 REG 573 LD R1 R0 03B8F E44070AF 1 574 ST R1 CURRENTPAGE 03B90 60040091 0 IMM 575 LD R0 FRMAPIN 03B91 60840010 2 IMM 576 LD R2 PNDBDESC 03B92 088070AE 577 FREQ LUN 03B93 FA083C08 0 578 JLTZ R0 MAPERROR 03B94 60578803 1 6 BASE 579 LD R1 SP,STARTADDR 580 * \ / 00003B95 581 GOTPAGE LABEL 03B95 38004000 0 582 LEA R0 DBDESCWNDO Point to beginning of window 03B96 1C440003 1 IMM 583 MUL R1 DBDESCLEN Change element number to word offset 03B97 18124000 0 1 REG 584 ADD R0 R1 Make pointer to first element 03B98 60578801 1 6 BASE 585 LD R1 SP,ACCTINDEX Value to search for 00003B99 586 ENTRYLOOP LABEL 03B99 644800B0 1 0 ZBM 587 CPR R1 R0,DBAACCT This element match? 03B9A FE023BAA 588 JEQ FOUNDONL 03B9B 18040003 0 IMM 589 ADD R0 DBDESCLEN Advance to next entry 03B9C 640443FF 0 IMM 590 CPR R0 ADR DBDESCWNDO(DBDESCLEN*DESCSPPAGE) 03B9D FE0A3B99 591 JLE ENTRYLOOP Continue if still within the page 03B9E 600070AF 0 592 LD R0 CURRENTPAGE Try next page 03B9F 640070B0 0 593 CPR R0 HIGHPAGE 03BA0 FE043BB0 594 JGT NOTFOUND No more pages, not found 03BA1 60561001 1 0 REG 595 LD R1 R0+1 Map in the next page 03BA2 E44070AF 1 596 ST R1 CURRENTPAGE 03BA3 60040091 0 IMM 597 LD R0 FRMAPIN 03BA4 60840010 2 IMM 598 LD R2 PNDBDESC 03BA5 088070AE 599 FREQ LUN 03BA6 FA083C08 0 600 JLTZ R0 MAPERROR 03BA7 38004000 0 601 LEA R0 DBDESCWNDO And search it 03BA8 60578801 1 6 BASE 602 LD R1 SP,ACCTINDEX 03BA9 FE0E3B99 603 JMP ENTRYLOOP 604 * --- 605 00003BAA 606 FOUNDONL LABEL 03BAA 10044000 0 IMM 607 SUB R0 ADR DBDESCWNDO Change pointer to offset in page 03BAB 14040003 0 IMM 608 DIV R0 DBDESCLEN Get element number in page 03BAC 604070AF 1 609 LD R1 CURRENTPAGE Get number in prior pages 03BAD 1C440155 1 IMM 610 MUL R1 DESCSPPAGE 03BAE 18124000 0 1 REG 611 ADD R0 R1 Add for final answer 612 * \ / 00003BAF 613 DONE LABEL 03BAF 5D1F8004 6 STAK 614 LEAVE POP 615 * --- 616 00003BB0 617 NOTFOUND LABEL 03BB0 60040000 0 IMM 618 LD R0 0 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 109 (DBAMGR) F 24 Disk Block Array Management 03BB1 FE0E3BAF 619 JMP DONE 620 * --- 621 622 END DBAFINDACCT 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 110 (DBAMGR) F 24 Disk Block Array Management 624 625 GETFREEBLK BLOCK 626 ENTRY GETFREEBLK 627 628 ********************************************************************************** 629 * This procedure returns the disk address of a free block. It * 630 * starts searching the DBA from the position of the last free block * 631 * it returned, returning zero if there is not another free block. * 632 * Calling format: * 633 * CALLNP GETFREEBLK * 634 * ST R0 * 635 ********************************************************************************** 636 637 BEGFRAME 00178801 6 BASE 638 SPACENO BSS 1 The index of space being searched 00178802 6 BASE 639 SAVER2R3 BSS 2 640 ENDFRAME 641 03BB2 DD5F8004 6 STAK 642 GETFREEBLK ENTRNP PUSH 03BB3 E6978802 236 BASE 643 ST2 R2 SP,SAVER2R3 03BB4 5C007097 644 CMZ OFFLINE 03BB5 FE023BD3 645 JEQ ONLINEFIND 03BB6 600070B7 0 646 LD R0 FREESTART 03BB7 E4178801 0 6 BASE 647 ST R0 SP,SPACENO 00003BB8 648 SPACELOOP LABEL 03BB8 DC003AD6 649 CALL SETSPACE 03BB9 40520000 0 REG 650 PARVL R0 03BBA 600070B8 0 651 LD R0 FREESTART(1) Get starting address 03BBB 6044001F 1 IMM 652 LD R1 FBITFREE/BITS 27:31 Search this space for a free block 03BBC 59840040 IMM 653 CLBMSR MSRFRELOC Search user address space 00003BBD 654 RESEARCH LABEL 03BBD 3C482451 1 0 ZBM 655 LSRCH R1 R0,DBAFBITYPE Find a free block 03BBE FE0C3BC3 656 JNE NEXTSPACE No more in the current space 03BBF 5C081610 0 ZBM 657 CMZ R0,DBASEEN Has it been allocated? 03BC0 FE023BCC 658 JEQ FOUNDOFFL No, success 03BC1 60081F10 0 0 ZBM 659 LD R0 R0,DBANEXT Yes, continue looking 03BC2 FE0E3BBD 660 JMP RESEARCH 661 * --- 662 00003BC3 663 NEXTSPACE LABEL 03BC3 59C40040 IMM 664 IORMSR MSRFRELOC 03BC4 BC178801 0 6 BASE 665 INCL R0 SP,SPACENO Try the next subspace, 03BC5 640070B5 0 666 CPR R0 HIGHSPACE if there is one 03BC6 FE043BCA 667 JGT NOFREE 03BC7 E40070B7 0 668 ST R0 FREESTART 03BC8 EDC070B8 669 STW FREESTART(1) 03BC9 FE0E3BB8 670 JMP SPACELOOP 671 * --- 672 00003BCA 673 NOFREE LABEL 03BCA EC120000 0 REG 674 STZ R0 No free blocks exist 03BCB FE0E3C04 675 JMP DONE 676 * --- 677 00003BCC 678 FOUNDOFFL LABEL 03BCC 59C40040 IMM 679 IORMSR MSRFRELOC 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 111 (DBAMGR) F 24 Disk Block Array Management 03BCD E40070B8 0 680 ST R0 FREESTART(1) 03BCE 14040003 0 IMM 681 DIV R0 DBDESCLEN Get element number in this subspace 03BCF 60578801 1 6 BASE 682 LD R1 SP,SPACENO Count elements in prior subspaces 03BD0 1C44AAAA 1 IMM 683 MUL R1 SPACESIZE 03BD1 18124000 0 1 REG 684 ADD R0 R1 Add 'em to get true DBA subscript 03BD2 FE0E3C04 685 JMP DONE 686 * --- 687 00003BD3 688 ONLINEFIND LABEL 03BD3 604070B7 1 689 LD R1 FREESTART Get page number to start looking in 03BD4 644070AF 1 690 CPR R1 CURRENTPAGE 03BD5 FE023BDB 691 JEQ RIGHTONE 03BD6 E44070AF 1 692 ST R1 CURRENTPAGE 03BD7 60040091 0 IMM 693 LD R0 FRMAPIN 03BD8 60840010 2 IMM 694 LD R2 PNDBDESC 03BD9 088070AE 695 FREQ LUN 03BDA FA083C08 0 696 JLTZ R0 MAPERROR 00003BDB 697 RIGHTONE LABEL 03BDB 600070B8 0 698 LD R0 FREESTART(1) Get pointer where we left off 03BDC 38004000 0 699 LEA R0 DBDESCWNDO 03BDD 6044001F 1 IMM 700 LD R1 FBITFREE/BITS 27:31 Value to search for 03BDE 388043FC 2 701 LEA R2 DBDESCWNDO(DBDESCLEN*(DESCSPPAGE-1)) 702 * Address of last entry in page 00003BDF 703 ENTRYLOOP LABEL 03BDF 64482451 1 0 ZBM 704 CPR R1 R0,DBAFBITYPE This element match? 03BE0 FE0C3BE3 705 JNE ENTRYNEXT 03BE1 5C081610 0 ZBM 706 CMZ R0,DBASEEN Has it been accounted for? 03BE2 FE023BFE 707 JEQ FOUNDONL No, we've found one 708 * \ / 00003BE3 709 ENTRYNEXT LABEL 03BE3 18040003 0 IMM 710 ADD R0 DBDESCLEN Advance to next entry 03BE4 64128000 0 2 REG 711 CPR R0 R2 03BE5 FE0A3BDF 712 JLE ENTRYLOOP Continue if still within the page 03BE6 600070AF 0 713 LD R0 CURRENTPAGE Try next page 03BE7 640070B0 0 714 CPR R0 HIGHPAGE 03BE8 FE043C06 715 JGT NOTFOUND No more pages, not found 03BE9 60561001 1 0 REG 716 LD R1 R0+1 Map in the next page 03BEA E44070AF 1 717 ST R1 CURRENTPAGE 03BEB E44070B7 1 718 ST R1 FREESTART 03BEC 60040091 0 IMM 719 LD R0 FRMAPIN 03BED 60840010 2 IMM 720 LD R2 PNDBDESC 03BEE 088070AE 721 FREQ LUN 03BEF FA083C08 0 722 JLTZ R0 MAPERROR 723 * Calculate address of last entry on the page 03BF0 600070AF 0 724 LD R0 CURRENTPAGE All pages have DESCSPPAGE entries 03BF1 640070B0 0 725 CPR R0 HIGHPAGE except for the HIGHPAGE 03BF2 FE0C3BFA 726 JNE NOTHIGHEST 03BF3 EC124000 1 REG 727 STZ R1 03BF4 60970805 2 4 BASE 728 LD R2 R4,DCBVOLSIZE 03BF5 58C40010 IMM 729 IORPSR PSRMODIF 03BF6 14440155 1 IMM 730 DIV R1 DESCSPPAGE 03BF7 58840010 IMM 731 CLBPSR PSRMODIF 03BF8 1C840003 2 IMM 732 MUL R2 DBDESCLEN 03BF9 FE0E3BFB 733 JMP GOTEND 734 * --- 735 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 112 (DBAMGR) F 24 Disk Block Array Management 00003BFA 736 NOTHIGHEST LABEL 03BFA 388043FC 2 737 LEA R2 DBDESCWNDO(DBDESCLEN*(DESCSPPAGE-1)) 738 * \ / 00003BFB 739 GOTEND LABEL 03BFB 38004000 0 740 LEA R0 DBDESCWNDO And search it 03BFC 6044001F 1 IMM 741 LD R1 FBITFREE/BITS 27:31 03BFD FE0E3BDF 742 JMP ENTRYLOOP 743 * --- 744 00003BFE 745 FOUNDONL LABEL 03BFE E40070B8 0 746 ST R0 FREESTART(1) Remember position for next time 03BFF 10044000 0 IMM 747 SUB R0 ADR DBDESCWNDO Change pointer to offset in page 03C00 14040003 0 IMM 748 DIV R0 DBDESCLEN Get element number in page 03C01 604070AF 1 749 LD R1 CURRENTPAGE Get number in prior pages 03C02 1C440155 1 IMM 750 MUL R1 DESCSPPAGE 03C03 98520000 1 0 REG 751 ADDM R1 R0 Add for final answer 00003C04 752 DONE LABEL 03C04 62978802 236 BASE 753 LD2 R2 SP,SAVER2R3 03C05 5D1F8004 6 STAK 754 LEAVE POP 755 * --- 756 00003C06 757 NOTFOUND LABEL 03C06 60040000 0 IMM 758 LD R0 0 03C07 FE0E3C04 759 JMP DONE 760 * --- 761 762 END GETFREEBLK 763 00003C08 764 MAPERROR LABEL 03C08 DC403C3C 765 CALLNP SYSTEMERROR 766 * --- 767 768 END DBAMGR 67 INPUT MISC 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 113 (MISC) F 25 Odds and Ends 3 4 BLOCK 5 ENTRY FINDTEXTZ 6 7 BEGFRAME 00178801 6 BASE 8 INDEX BSS 1 9 ENDFRAME 10 03C09 20457272 11 ERRSTRING TEXTZ " Error code out of range." 12 03C10 DD1F8002 6 STAK 13 FINDTEXTZ ENTR PUSH 03C11 C1578801 6 BASE 14 STPV SP,INDEX 03C12 C0120000 0 REG 15 STPL R0 R0 -> string zero 16 00003C13 17 LOOP LABEL 03C13 5C160800 0 BASE 18 CMZ R0,0 off end of table? 03C14 FE023C1D 19 JEQ GIVEERR jump if yes 03C15 5C178801 6 BASE 20 CMZ SP,INDEX 03C16 FE083C1D 21 JLT GIVEERR jump if index too small 03C17 FE023C1E 22 JEQ RETURN jump if found right string 03C18 604400FF 1 IMM 23 LD R1 0FF reasonable max length for string 03C19 DA1C0800 0 1 24 SRCHI R0 R1 000 look for zero byte at end 03C1A 38160801 0 0 BASE 25 LEA R0 R0,1 R0 = word addr of next string 03C1B D0578801 6 BASE 26 DEC SP,INDEX 03C1C FE0E3C13 27 JMP LOOP try next string 28 * --- 29 00003C1D 30 GIVEERR LABEL index out of range 03C1D 60043C09 0 IMM 31 LD R0 ADR ERRSTRING return pointer to error string 32 * \ / 33 00003C1E 34 RETURN LABEL R0 = addr of string 03C1E 5D1F8002 6 STAK 35 LEAVE POP 36 * --- 37 38 END 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 114 (MISC) F 25 Odds and Ends 40 41 MKREADPARM BLOCK 42 ENTRY MKREADPARM 43 44 ********************************************************************************** 45 * This procedure returns the appropriate address parameter * 46 * to pass to VREAD for reading into the given buffer. In the * 47 * case of online execution, we use the memory address. For * 48 * offline, we make up a PF value. * 49 ********************************************************************************** 50 51 BEGFRAME 00178801 6 BASE 52 BUFFERADR BSS 1 Address of the data buffer 00178802 6 BASE 53 PFADDR BSS 1 Address of the word to contain 54 the VREAD address of the buffer 55 ENDFRAME 56 03C1F DD1F8003 6 STAK 57 MKREADPARM ENTR PUSH 03C20 C1178801 6 BASE 58 STP SP,BUFFERADR 03C21 C0178802 6 BASE 59 STPL SP,PFADDR 60 03C22 60178801 0 6 BASE 61 LD R0 SP,BUFFERADR 03C23 5C007097 62 CMZ OFFLINE Online, just use the memory address 03C24 FE023C28 63 JEQ DONE 03C25 604A1E70 1 0 CBM 64 LD R1 R0/FLDPAGE Offline, we need a page map value 03C26 601013E6 0 @ 65 LD R0 @VMEMPF Get page map prototype 03C27 E44A28C0 1 0 CBM 66 ST R1 R0/PFPAGENUM Insert page number for the buffer 67 * \ / 00003C28 68 DONE LABEL 03C28 E4178C02 0 6 FPVR 69 ST R0 @(SP,PFADDR) 03C29 5D1F8003 6 STAK 70 LEAVE POP 71 * --- 72 73 END MKREADPARM 74 68 INPUT ERRORS 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 115 (ERRORS) F 26 Error handling 3 4 BLOCK 5 ENTRY SYSTEMERROR 6 ENTRY FATALERROR 7 8 ********************************************************************************** 9 * This be our final resting place when we just can't go on. * 10 ********************************************************************************** 11 12 FATALERROR BLOCK 13 ENTRY FATALERROR 14 15 ********************************************************************************** 16 * This routine will end the program after printing an error * 17 * message. Calling format: * 18 * CALL FATALERROR * 19 * PARV HALTCODE * 20 * PARL ERRORMESSAGE * 21 * * 22 * The halt code may be specified as -1 in order not to disturb * 23 * the front panel display. The error message pointer may be null * 24 * if there is no message to print. * 25 ********************************************************************************** 26 27 BEGFRAME 00178801 6 BASE 28 HALTCODE BSS 1 00178802 6 BASE 29 MESSAGEPTR BSS 1 30 ENDFRAME 31 03C2A DD1F8003 6 STAK 32 FATALERROR ENTR PUSH 03C2B C1578801 6 BASE 33 STPV SP,HALTCODE 03C2C C0178802 6 BASE 34 STPL SP,MESSAGEPTR 03C2D 60178802 0 6 BASE 35 LD R0 SP,MESSAGEPTR pick up pointer to message 03C2E FA023C31 0 36 JEQZ R0 NOMESSAGE jump if none provided 03C2F DC1013F9 @ 37 CALL @VPREPOUT print it 03C30 40160400 0 @R 38 PARL @R0 00003C31 39 NOMESSAGE LABEL 03C31 5C007097 40 CMZ OFFLINE are we running offline? 03C32 FE023C3A 41 JEQ STOPPROG jump if not, do STOP 03C33 60178801 0 6 BASE 42 LD R0 SP,HALTCODE Build the requested halt instruction 03C34 FA2E3C36 0 43 JNEMW R0 REALCODE 03C35 60003C39 0 44 LD R0 NOMSGHALT 00003C36 45 REALCODE LABEL 03C36 18003C38 0 46 ADD R0 HALTPROTO instruction 03C37 5D520000 0 REG 47 XCT R0 And halt 48 * --- 49 03C38 00000000 50 HALTPROTO HALT 0 03C39 003FFFFF 51 NOMSGHALT VFD NOHALTCODE 52 00003C3A 53 STOPPROG LABEL 03C3A 6004007B 0 IMM 54 LD R0 URSTOPAZR 03C3B 09040000 IMM 55 UREQ 0 56 * --- 57 58 END FATALERROR 1 Assembler C9101 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:20 PAGE 116 (ERRORS) F 26 Error handling 60 61 SYSTEMERROR BLOCK 62 ENTRY SYSTEMERROR 63 64 ********************************************************************************** 65 * This routine is called in the online environment after a * 66 * failed Executive Request, with R0 containing the error code. * 67 * This routine does not return. * 68 ********************************************************************************** 69 70 BEGFRAME 00000034 ABS 71 MAXERRORLEN EQU 52 00178004 6 CACH 72 BUFFER BSSC MAXERRORLEN 73 ENDFRAME 74 03C3C DD5F800E 6 STAK 75 SYSTEMERROR ENTRNP PUSH 03C3D 608A3080 2 0 CBM 76 LD R2 R0/CH3 03C3E 38578004 1 6 CACH 77 LEA R1 SP,BUFFER 03C3F 60040028 0 IMM 78 LD R0 URERRORGET 03C40 09040034 IMM 79 UREQ MAXERRORLEN 03C41 30440034 1 IMM 80 RSB R1 MAXERRORLEN 03C42 38178004 0 6 CACH 81 LEA R0 SP,BUFFER 03C43 EC1A0800 01 CACH 82 STZ CACH R0,0(R1) 03C44 38578004 1 6 CACH 83 LEA R1 SP,BUFFER 03C45 DC003C2A 84 CALL FATALERROR 03C46 41440000 IMM 85 PARV 0 03C47 40164400 1 @R 86 PARL @R1 87 * --- 88 89 END SYSTEMERROR 90 91 END 69 70 * We can now verify that we reserved enough space for our code, 71 * and define where free memory starts. 72 PROG 00003C48 73 PROGCHECK LABEL 74 * The following declaration will produce an assembly time error 75 * if PROGPAGES was not defined large enough. 76 * Well, you might think it would but in fact it doesn't. 77 * No one knows why. 78 *PROGSPACE EQU (DISP MA 0)-PROGPLACE 79 *PROGFILL BSS PROGPAGES*WPP-PROGSPACE 80 81 VARS 000074B8 ABS 82 FREESTART EQU ((DISPW MA 0)+WPP-1) 0000001D ABS 83 FIRSTFREEPN EQU FREESTART/WPP 84 85 END OUTERBLOCK 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 1 ABTYPE 00178801 F 19 1402= 1419s 1424 1449 1475s 1489 1515 ACCTADD 00003A38 F 17 56 F 23 5 18= 19 36= ACCTCOUNT 0000709D F 14 148= F 16 19s F 17 68 F 23 7 45 56 64 65s ACCTFIND 00003A5F F 18 44 789 F 19 142 313 502 775 1052 1228 1315 1465 F 20 62 322 F 23 6 87= 88 104= ACCTIBITS 0000000B F 14 3= 9 57 ACCTINDEX 00178801 F 18 33= 41s 43 ACCTINDEX 00178801 F 18 90= 98s 100 106 111 ACCTINDEX 00178801 F 18 739= 745s 752 ACCTINDEX 00178801 F 24 522= 528s 544 585 602 ACCTNAMES 00006400 F 14 112= F 23 43a 59a 107a ACCTTABLE F 23 4= 117 ACCTTITLE 00003496 F 19 172a 265= 266e ACTIONS 0000326D F 18 165 176= ADDRESS 00000011 F 4 26= 35e 36e 37e 38e 134e 232 233 F 14 13 14 44 45 47 48 59 60 75 76 ADDUDIR2S 00003468 F 19 198j 215= ADTECNT 000000C8 F 6 1505= 1511 F 20 144 *ADTLIST 00000000 F 6 1511= ALLCHECKED 00003428 F 19 99j 101j 124= ALLOCPAGE 00003A03 F 21 83 F 22 12 95= 96 109= F 24 229 ALONEBADF 00003032 F 15 95= F 16 80j ANAME 000033D7 F 18 791s 794a 824= *APROGB5S 0000032E F 8 226= *APROGBC 0000032D F 8 225= ASK 00003100 F 16 118j 122j 130= *AUTHDSK 0016C804 F 6 1756= *AUTHDSKA 0016C805 F 6 1757= *AUTHENTBG 00000004 F 6 1749= *AUTHLELEN 0000000C F 6 1762= AUTHLENTRY 000007B0 F 6 1752= 1762e *AUTHSDSK 0016C806 F 6 1758= *AUTHSDSKA 0016C807 F 6 1759= *AUTHTIME 00000000 F 6 1746= *AUTHTIMEA 00000001 F 6 1747= *AUTHVNAME 0016C800 F 6 1753= BADCODE 000035FC F 19 747j 754= BADLOOP 00003205 F 17 136= 146j BADSAF 00003596 F 19 584j 586j 588j 592= BADSAF 000036FF F 19 1097j 1105j 1116= *BFDCHKSEG 0000000A F 5 665= *BFDEF18 00000230 F 5 733= *BFDEF9A 00000240 F 5 739= *BFDFNCLFLT 00000011 F 5 748= *BFDFNCLOFS 00000044 F 5 759= *BFDFNDSE 00000081 F 5 761= *BFDFNDSINT 00000028 F 5 756= *BFDFNDSL 00000082 F 5 762= *BFDFNENINT 00000024 F 5 755= *BFDFNOFSB 00000042 F 5 758= *BFDFNOFSF 00000041 F 5 757= *BFDFNRDS 00000084 F 5 763= *BFDFNRESET 00000048 F 5 760= *BFDFNSAFE 00000020 F 5 752= *BFDFNSISE 00000021 F 5 753= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 2 *BFDFNSOLNT 00000014 F 5 750= *BFDFNUISE 00000022 F 5 754= *BFDFNUOLNT 00000018 F 5 751= *BFDFNZERO 00000012 F 5 749= *BFDFORMAT 00000260 F 5 774= *BFDFORMATW F0783C1E F 5 775= *BFDFUNC 00000220 F 5 746= *BFDIDSTEST 00002080 F 5 669= *BFDINTBIT 00003010 F 5 787= *BFDINTERNS 00000250 F 5 742= *BFDMAGICHD 000000FF F 5 809= *BFDNUMSEGS 0000000A F 5 664= *BFDPRESENT 00002080 F 5 741= *BFDREAD 00000230 F 5 765= *BFDREADY 00001080 F 5 740= *BFDSACYL 00000100 F 5 681= *BFDSAHEAD 00002080 F 5 682= *BFDSASEC 00003080 F 5 683= *BFDSEEK 00000210 F 5 679= *BFDSEGSIZE 00000073 F 5 663= *BFDSELECT 00000200 F 5 744= *BFDSELECTB 00000008 F 5 777= *BFDSS 00000220 F 5 685= *BFDSSCEOV 00003610 F 5 717= *BFDSSDNUM 00002030 F 5 699= *BFDSSEBITS 00001080 F 5 694= *BFDSSERRCD 00003840 F 5 720= *BFDSSFAULT 00000E10 F 5 693= *BFDSSHDECD 00003030 F 5 707= *BFDSSIFPE 00002C10 F 5 704= *BFDSSLOSTD 00002A10 F 5 703= *BFDSSNSAFE 00000410 F 5 688= *BFDSSOLINT 00000010 F 5 686= *BFDSSONCYL 00000A10 F 5 691= *BFDSSRDY 00000810 F 5 690= *BFDSSRSPER 00002E10 F 5 705= *BFDSSSKERR 00000C10 F 5 692= *BFDSSWCERR 00002810 F 5 702= *BFDSSWPROT 00000610 F 5 689= *BFDUNITS 00000008 F 5 666= *BFDUNLDCYL 000003FF F 5 810= *BFDWRCH 00000250 F 5 772= *BFDWRITE 00000240 F 5 770= BHALT 00020000 F 10 331= 363e 366e 372e 375e 376e 379e 380e 383e 384e 385e 386e 387e 388e 389e 390e 391e 392e 393e 394e 395e 396e 397e 398e 399e 400e 401e 404e 405e 408e 409e 410e 411e 412e 413e 414e 415e 416e 417e 418e 419e 420e 421e 422e 423e 426e 429e 430e 431e 432e 433e 434e 435e 436e 465e 466e 467e 782e 783e 784e 785e 786e 788e 789e 790e 791e 792e BLANKFMT 000031BD F 16 28a 54a 169= BLKLOSTMSG 00003615 F 19 538 787a 791= 1064a BLOCKCOUNT 00178806 F 20 94= 118s 131s 137s 148 181 BLOCKDONE 00003918 F 20 134j 147= BLOCKLOOP 000031C2 F 17 30= 63j BLOCKLOOP 00003262 F 18 160= 168j BLOCKLOOP 000038F9 F 20 123= 175j 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 3 BLOCKNUM 000070A4 F 18 18= 159s 166s 222 225 250 288 306 335 366 369 386 443 477 487 501 544 590 605 637 665 690 750 BLOCKNUM 00178803 F 19 812= 830s 843s 848s 861 884s 889s 892s 901 926s 931s 934s 940 947 959 1090s 1095s 1098s 1109 1144s 1149s 1156 BLOCKNUM 00178803 F 19 1179= 1194s 1199s 1202s 1247s 1254 1280s 1294s 1342s 1345s 1350s 1356 1370 BLOCKNUM 00178806 F 19 1407= 1477s 1482s 1485s 1498 1518s 1520s 1525s BLOCKNUM 00178802 F 19 1574= 1582s 1588s 1591s BLOCKNUM 00178803 F 19 1610= 1616s 1621s 1624s 1632 BLOCKNUMBER 00178801 F 17 22= 29s 31 61s 91 BLOCKSIZE 00000400 F 6 6= 933e 1233e 1572e 2210e 2223e BLOCKSTOGO 00178801 F 24 98= 141s 152 154s *BOOTCLOC 00000331 F 8 240= *BOOTDA 00000002 F 6 981= *BOOTDEVCB 00000316 F 8 151= *BOOTDEVPF 00000316 F 8 152= BOOTFBIBF 0000031F F 8 172= 193e BOOTLOC 00001000 F 4 154= 155e *BOOTREV 00000001 F 6 985= *BOOTRKPCYL 00000319 F 8 156= *BOOTSCPTRK 00000318 F 8 155= *BOOTUNIT 00000317 F 8 153= *BOOTYPE 00000330 F 8 239= *BTRXACDE 00000030 F 6 928= *BTRXDATE 00000001 F 6 930= *BTRXECNT 00000200 F 6 933= BTRXEL 00000000 F 6 922= 931e F 17 137 *BTRXFSDE 00000040 F 6 929= *BTRXLCDE 00000010 F 6 926= BTRXLNTH 00000002 F 6 931= 933e F 17 144 *BTRXREASON 00000080 F 6 923= *BTRXRTDE 00000020 F 6 927= BUCKETNUM 00178803 F 18 37= 61s 66 BUCKETNUM 00178802 F 20 13= 41s 47s BUFFER 00178004 F 26 72= 77a 81a 83a BUFFERADR 00178801 F 25 52= 58s 61 BUILDAB 000037C6 F 19 662 686 1070 1384= 1385 1418= 1539 1566 BUILDPM 00003A32 F 22 112j 124j 162= BUILDTREE 0000325F F 15 83 F 18 15 141= 152 157= *BUSCIP 60000000 F 5 39= *BUSCREAD 20000000 F 5 35= *BUSCREAD2 30000000 F 5 36= *BUSCRMW 10000000 F 5 34= *BUSCST 50000000 F 5 38= *BUSCWRITE 00000000 F 5 33= *BUSCWRU 40000000 F 5 37= BUSYDSKM 0000312A F 16 126a 158= BYTEDISP 000028C0 F 6 55= 2365e 2470e *CAIMABORT 0000000D F 4 261= *CAIMALLXR 00000007 F 4 255= *CAIMARITH 00000003 F 4 251= *CAIMBREAK 00000006 F 4 254= *CAIMCALL 00000002 F 4 250= *CAIMCKBDS 00000004 F 4 252= *CAIMGUNIT 0000000E F 4 262= *CAIMINST 00000001 F 4 249= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 4 *CAIMMPV 00000005 F 4 253= *CAIMMSG 0000000B F 4 259= *CAIMNEPATH 00000009 F 4 257= *CAIMNETERM 00000008 F 4 256= *CAIMTIME 0000000A F 4 258= *CAIMVMF 0000000C F 4 260= *CAINTADR 0016080A F 4 244= *CAINTENABL 0008001B F 4 247= CAINTMASK 0016080B F 4 245= 247e *CALINK 0016080C F 4 266= *CALLNAME 00000314 F 8 137= CALNTH 0000000F F 4 274= 275e *CALOG 00000004 F 4 275= *CAMSR 00160801 F 4 234= *CANUMREGS 0000000C F 4 265= *CANUMUREGS 0000000A F 4 264= CAPC 00081F10 F 4 233= 265e F 6 2538e *CAPSR 000800F0 F 4 232= CAR0 00160802 F 4 235= 264e F 6 2539e *CAR1 00160803 F 4 236= *CAR2 00160804 F 4 237= *CAR3 00160805 F 4 238= *CAR4 00160806 F 4 239= *CAR5 00160807 F 4 240= *CAR6 00160808 F 4 241= *CAR7 00160809 F 4 242= *CASTACKPTR 0016080D F 4 268= *CAXOPERAND 0016080E F 4 272= *CCB2TRANS 0016080A F 6 2539= *CCBALWFRC 00003E10 F 6 2530= *CCBBACKUP 00080421 F 6 2529= *CCBDIVFRC 00003A10 F 6 2532= *CCBFLD2TRN 00000000 F 9 578= *CCBFLDBKUP 0000001A F 9 576= *CCBFLDIAR 0000000B F 9 565= *CCBFLDIMR 0000000A F 9 564= *CCBFLDMGR 00000019 F 9 575= *CCBFLDMNTR 00000016 F 9 572= *CCBFLDMNTW 00000017 F 9 573= *CCBFLDOPR 00000018 F 9 574= *CCBFLDOWND 00000010 F 9 566= CCBFLDPC 00000008 F 9 562= 577e *CCBFLDPSR 00000009 F 9 563= *CCBFLDPTRN 00000008 F 9 577= CCBFLDR0 00000000 F 9 554= 578e *CCBFLDR1 00000001 F 9 555= *CCBFLDR2 00000002 F 9 556= *CCBFLDR3 00000003 F 9 557= *CCBFLDR4 00000004 F 9 558= *CCBFLDR5 00000005 F 9 559= *CCBFLDR6 00000006 F 9 560= *CCBFLDR7 00000007 F 9 561= *CCBFLDRG1 00000011 F 9 567= *CCBFLDRG2 00000012 F 9 568= *CCBFLDRG3 00000013 F 9 569= *CCBFLDRG4 00000014 F 9 570= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 5 *CCBFLDRG5 00000015 F 9 571= *CCBINFO 000003E8 F 6 2552= CCBINFOL 00000018 F 6 2541= 2545e CCBINFPROT 00000839 F 6 2517= 2541e 2542a *CCBMAINTR 00083210 F 6 2524= *CCBMAINTW 00083410 F 6 2525= *CCBMANAGR 00083A40 F 6 2527= CCBMAXPAGE 000003E8 F 6 2545= 2547 F 18 432 *CCBOPREQ 00083620 F 6 2526= *CCBOWNDIR 00080211 F 6 2528= *CCBOWNFRC 00003C10 F 6 2531= *CCBPAGE0 00000000 F 6 2546= CCBPERMIT 00160800 F 6 2518= 2536 CCBPREGS 00160808 F 6 2537= 2538e 2539e *CCBPRJFRC 00003810 F 6 2533= *CCBPROTECT 00000010 F 6 2551= *CCBPTRANS 00081F18 F 6 2538= *CCBRSTCTG1 00080050 F 6 2519= *CCBRSTCTG2 00080A50 F 6 2520= *CCBRSTCTG3 00081450 F 6 2521= *CCBRSTCTG4 00081E50 F 6 2522= *CCBRSTCTG5 00082850 F 6 2523= CCBSEARCH 00003659 F 19 885= 897j *CCBUSRFRC 00003610 F 6 2534= *CH0 00000080 F 4 43= *CH1 00001080 F 4 44= *CH2 00002080 F 4 45= CH3 00003080 F 4 46= F 26 76 CHAINBLKS 00178805 F 20 93= 115s 182s CHAINDONE 0000377D F 19 1264a 1285j 1289= CHAINDONE 00003936 F 20 121j 125j 178= CHAINLOOP 00003757 F 19 1250= 1286j CHAINLOOP 000038ED F 20 109= 186j CHAINNUM 00178802 F 20 90= 108s 184s CHALT 00030000 F 10 332= 738e 739e 740e 743e 748e 749e *CHARM MACRO F 13 298= CHECKCODE 000035F5 F 19 744= 797a CHECKDONE 000036CA F 19 1036j 1043= CHECKLOOP 00003411 F 19 97= 108j 122j CHECKLOOP 000035E5 F 19 718= 728j CHECKLOOP 000036C0 F 19 1028= 1041j CHECKLOOP 0000389D F 20 22= 26j CHECKNEXT 000035EB F 19 720j 726= CHECKNEXT 000036C8 F 19 1030j 1034j 1039= CHECKRAF 000035A0 F 19 605= 643j 796a CHECKSAF 0000358E F 19 581= 795a CHEKRAFROOT 000036AC F 19 991j 1001= CHGSAFTORAF 0000371C F 19 594 1118 1166= 1167 1187= 1381 *CIAAEOP 00003810 F 5 894= *CIABOARDS 00000008 F 5 884= *CIABRDF 00003430 F 5 886= *CIACHARS 00000100 F 5 896= *CIAEOP 00003A10 F 5 893= *CIAERR 00003610 F 5 895= *CIAERROR 00000203 F 5 903= *CIAFULL 00003C10 F 5 892= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 6 *CIAINTACK 00000201 F 5 898= *CIAINTMASK 00000202 F 5 900= *CIAMODE 00000209 F 5 940= *CIAMODEM 00000002 F 5 943= *CIAMODEN 00000000 F 5 941= *CIAMODET 00000001 F 5 942= *CIAPBAUD 00002100 F 5 990= *CIAPECHO 00001410 F 5 984= *CIAPFI 00001810 F 5 986= *CIAPFO 00001A10 F 5 987= *CIAPICH 00002080 F 5 949= *CIAPMODM 00003E10 F 5 951= *CIAPOCH 00001080 F 5 948= *CIAPORT 00000280 F 5 945= *CIAPPBRD 00000008 F 5 885= *CIAPSIB 00001C10 F 5 988= *CIAPSOB 00001E10 F 5 989= *CIAPSTAT 00000080 F 5 947= *CIAPSTS 00001610 F 5 985= *CIAPWAIT 00003C10 F 5 950= *CIASDREAD 00000207 F 5 932= *CIASETTICK 00000206 F 5 926= *CIASREAD 00000204 F 5 922= *CIASRWACK 00000080 F 5 934= *CIASRWCNT 00002100 F 5 936= *CIASRWMSK 00001080 F 5 935= *CIASWRITE 00000205 F 5 924= *CIATICK 00003E10 F 5 891= CIATICKPSEC 000001C6 F 5 929= 930e *CIATICKTIME 0000002D F 5 930= CIATPS 0000000A F 5 928= 930e *CIATRMBUFL 00000100 F 5 887= *CIAVERSION 00000208 F 5 938= *CIAWHYINT 00000201 F 5 889= CIX 00001800 F 7 234= 235e CLEAR MACRO F 14 158= F 18 220 F 19 138 311 1213 1615 F 20 45 101 129 225 CONAREA 00000000 F 4 231= 274e 276a COUNT 00178801 F 19 1659= 1668s 1677s COUNTDONE 00003381 F 18 675j 677j 682= COUNTLOOP 0000337B F 18 673= 679j CPP 00001000 F 4 34= F 5 1154e 1159e 1168e F 18 220 F 19 138 311 1213 1443 1615 F 20 45 101 129 225 F 21 36 87 F 24 242 *CPU4 00000001 F 5 75= *CPUA 00000002 F 5 224= *CPUCCA 0000000A F 5 216= *CPUCOFFSET 00030000 F 5 229= *CPUI 00000001 F 5 223= *CPUIAPR 00000004 F 5 235= *CPUMSR 00000009 F 5 215= *CPUOOFFSET 00020000 F 5 221= CPUPAGE 00000400 F 7 217= 218e 260a *CPUPC 00000008 F 5 214= *CPUPFOFSET 00010000 F 5 219= *CPUPMS 00000004 F 5 226= *CPUPSR 00000000 F 5 222= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 7 *CPUPT 00000360 F 8 289= *CPUPTCHCMD 00000703 F 5 238= *CPUQ 00000003 F 5 225= *CPUREG 00000000 F 5 213= *CPUREGOFST 00000000 F 5 212= *CPURUN 00000000 F 5 231= *CPUSCYCLE 00000002 F 5 233= *CPUSSTEP 00000003 F 5 234= *CPUSTOP 00000001 F 5 232= *CPUUCODELD 00000700 F 5 237= *CPUUS 00000005 F 5 227= CPW 00000004 F 4 31= 34e F 5 1159e F 6 1174 2205 2206 F 18 220 F 19 116 119 138 311 522 1213 1446 1615 F 20 38 45 101 129 225 CRANDALL 00000000 F 6 5= 2642a CREATESPACE 00003AAB F 24 156 187= 188 208= 262 *CTDIOSIZE 000047F8 F 5 1159= CURBLOCK 00178802 F 18 525= 545s 563 569 572s CURGRAN 000070A9 F 22 19= 87s 119s 120 158s CURRENT 00178807 F 20 95= 122s 124 163 170 174s CURRENTDIR 00178802 F 19 19= 30s 33 36 CURRENTIDX 00178801 F 19 18= 26s 40 CURRENTPAGE 000070AF F 24 48= 126s 344 348s 449 453s 475 479s 492 570 574s 592 596s 609 690 692s 713 717s 724 749 CURSLOT 000070A8 F 22 17= 47s 133s 165 CURSPACE 00178803 F 24 101= 149s 155 159s *CUSTNUM 00000100 F 6 1145= DA 00178802 F 18 35= 42s DA 00178802 F 18 92= 99s 120 130 DATADA 00178808 F 19 817= 924s 960s 980 *DATEHORD 00082800 F 6 164= DBAACCESS 00003ADC F 17 32 94 101 139 F 18 161 347 365 385 456 476 500 564 589 604 F 19 102 238 297 576 721 733 849 893 935 1002 1031 1046 1099 1150 1203 1232 1248 1281 1351 1455 1486 1526 1625 F 20 52 126 140 165 245 259 F 24 37 291= 292 310= DBAACCT 000800B0 F 14 9= 13 F 17 59s F 18 248 286 391s 506s 636 661 744 F 19 241s 309s 1464s 1631s F 24 547 587 DBABLKLOST 00081810 F 14 11= F 18 367s 485s 591s 606s F 19 587 676 707 723 735s 749 1010 1033 1049s 1104 DBAENTRY 00000400 F 14 8= 27e 28a DBAFBITYPE 00082451 F 14 16= F 17 47s 97s 104s 143s F 18 163 218s 349 388s 458 503s F 19 104 247s 306s 582 647 659 683 745 853 895 937 1004 1152 1235s 1253s 1283 1353 1457s 1488 1530 1628s F 24 655 704 DBAFINDACCT 00003B67 F 19 840 F 24 39 508= 509 527= DBAFINDFILE 00003B07 F 18 747 F 19 887 929 1093 1145 1197 1346 1480 1521 1585 1619 F 24 38 365= 366 384= DBAFSN1 00082E91 F 14 17= 25e F 17 51s F 18 389s 504s 531 746 F 19 244s 302s 871 1237s 1460s 1629s F 24 411 468 DBAFSN2 00160802 F 14 18= F 17 52s F 18 390s 505s 531 746 F 19 245s 303s 871 1238s 1461s 1630s F 24 407 411 466 468 DBAFSN3FLAG 00082E11 F 14 25= F 18 531 746 F 19 871 F 24 411 468 DBAINIT 00003A69 F 15 51 F 24 36 81= 82 107= DBAMGR F 24 4= 768 DBANEXT 00081F10 F 14 14= F 24 420 659 DBAPTR 00178802 F 17 23= 36s 43 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 8 DBARELBLK 00080121 F 14 15= F 17 54s F 18 469 483s 533 F 19 243s 304s 585 954 1101 1366 1491 1533 DBASEEN 00081610 F 14 10= F 17 34 44s 96s 141s F 18 219s 246s 284s 359s 468s 566s 634s F 19 242s 300s 675s 706s 748s 761s 851 860s 870s 899s 1007s 1107s 1155s 1205s 1239s 1251s 1364 1458s 1496s 1528 F 20 54s 128s 142s 167s 247s 261s F 24 657 706 DBDESCLEN 00000003 F 14 27= F 24 50e 56e 212 226 247 321 328 343 394 437 462 472 473a 491 537 558 583 589 590a 608 681 701a 710 732 737a 748 DBDESCWNDO 00004000 F 14 102= F 24 128a 241a 249s 254s 333a 355a 461a 473a 484a 490a 582a 590a 601a 607a 699a 701a 737a 740a 747a *DCBBTRAX 00081187 F 12 27= DCBFILLADR 00160802 F 12 15= 28e *DCBFILLLEN 00000006 F 12 28= DCBLEN 00000008 F 12 30= F 14 136 *DCBLUN 0016001C F 12 26= *DCBMAIMNT 00080216 F 12 22= *DCBNORETRY 00080416 F 12 23= *DCBNOSUBS 00080016 F 12 21= *DCBPFILE 00160800 F 12 13= *DCBSCSI 00080816 F 12 25= *DCBSECPTRK 00160802 F 12 16= DCBSUBLIST 00160804 F 12 18= F 17 90 *DCBTRKPCYL 00160803 F 12 17= *DCBUNIT 00160801 F 12 14= *DCBVERIFY 00080616 F 12 24= DCBVOLSIZE 00160805 F 12 19= F 15 52 F 17 62 F 18 167 345 454 573 F 20 103 F 24 728 DCBWORD 00160806 F 12 20= 21e 22e 23e 24e 25e DELETEFLAG 00000010 F 19 449= 460s 479j 529s DELETEMSG 00003573 F 19 516a 532= DELFLAG 00000010 F 19 69= 96s 121s 125j DESCSPPAGE 00000155 F 24 50= 114 341 447 473a 493 568 590a 610 701a 730 737a 750 *DEVBIT 00000200 F 5 599= *DEVERPFE 000000E0 F 9 210= *DEVERPIBO 000000E2 F 9 212= *DEVERPPE 000000E1 F 9 211= *DEVERTRE 000000E3 F 9 214= DEVTYPES 00003623 F 19 570 794= DEVTYPESB 00003622 F 19 793= 794a DHALT 00040000 F 10 333= 573e 768e 769e 773e 778e DIR1DONE 00003534 F 19 402j 424= DIR1FBI 0000700D F 14 118= F 19 89a 138a 138a 248a 253s 255s 257a 301 317 379a 392a 393a DIR1PLACE 00004C00 F 14 104= F 15 62a F 19 92a 95a 98a 118a 138a 144s 145s 146s 147s 149s 151s 153s 154s 155a 171a 199a 218a 252 254 382a 385a 386a 398a 422a DIR2END 000033CF F 18 802j 810= DIR2FBI 00007019 F 14 121= F 19 311a 311a 315s 316s 318s 319a 344a 406a 416a 417a DIR2LOOP 000033C8 F 18 801= 808j DIR2LOOP 00003518 F 19 400= 423j DIR2MSG 000033EA F 18 806a 828= DIR2N 00000400 F 14 74= 82e 83a DIR2NDA 00160804 F 14 79= F 18 691s 804a F 19 226 296s 321 344 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 9 344 DIR2NEXT 00160803 F 14 78= F 18 693s 705 F 19 222 342s DIR2NFILCNT 00160805 F 14 80= F 18 688s 805a F 19 224 293s 324 DIR2NLEN 00000006 F 14 82= F 18 687 F 19 286 DIR2NNAME 00160801 F 14 77= F 18 695s 702 F 19 220 340s DIR2NNEXT 00081F10 F 14 76= F 18 713s 714s 807 F 19 283 287s DIR2NPTR 00178802 F 18 656= 689s 712 DIR2PLACE 00005000 F 14 105= F 15 65a F 19 311a 325a 339 341 409a 410a DIR2PTR 00178802 F 19 66= 288s 320 338 DIR2SDONE 000034F8 F 19 274j 278j 348= DIRCHANGED 00178802 F 19 445= 454s 468s 476s 488 DIREND 000033D2 F 18 788j 815= DIRLOOP 000033BB F 18 787= 813j DIRLOOP 000033F7 F 19 29= 37j DIRLOOP 000038C4 F 20 60= 69j DIRLOOP 000039AB F 20 317= 336j DIRMESSAGE 000033E0 F 18 798a 827= DIRN 00000400 F 14 56= 68e 69a DIRNACCT 000800B0 F 14 57= 59 F 18 107 112s 790 F 19 143 240 308 314 501 776 842 1053 1229 1316 1463 F 20 63 323 DIRNASLDA 00160802 F 14 62= F 18 113s 251s F 19 159 DIRNAUTHDA 00160803 F 14 63= F 18 289s F 19 157 DIRNDA 00160801 F 14 61= F 18 123s 133s 796a F 19 87 237s 250 257 257 377 F 20 66 DIRNFAKE 00081610 F 14 58= F 18 122s 128 132s F 19 75 234s DIRNFAKECNT 00160805 F 14 65= F 19 208a 332a DIRNFILCNT 00160804 F 14 64= F 18 124s 685s 756s 797a F 19 200 273 291 294s DIRNLEN 00000007 F 14 68= F 18 110 DIRNNEXT 00081F10 F 14 60= F 18 119s 812 F 20 319 333s DIRNPTR 00178801 F 18 655= 663s 684 697 DIRNU2LIST 00160806 F 14 66= F 18 114s 698a 699 800 F 19 166 197 217 277 281a 282 DIRPTR 00178802 F 18 774= 786s 799s 811 DIRPTR 00178801 F 19 65= 74s 127 141 156 206 216 233 272 290 307 312 330 DIRPTR 00178801 F 19 370= 375s 387 411 DIRPTR 00178801 F 19 444= 452s 461 500 DIRPTR 00178802 F 19 553= 563s 595 664 688 774 DIRPTR 00178802 F 19 811= 826s 841 1051 1072 1119 DIRPTR 00178801 F 19 1177= 1188s 1227 1314 DIRPTR 00178802 F 19 1403= 1420s 1462 1541 DIRSDONE 000038CD F 20 58j 71= DISKCB 00007055 F 14 136= F 15 52 F 16 85a F 17 62 F 18 167 345 454 573 715a F 20 72a 103 DISKCTLBLK 00000400 F 12 12= 30e 31a DISKNAME 00007054 F 14 135= F 16 81s 83 93a 125a 132a DISPFIELD 00002CA0 F 4 150= F 24 225 245 327 DIVPRJ 000033D9 F 18 792s 795a 825= DOASL 0000329C F 18 195 235= 236 245= 254 DOAUTHLIST 000032A8 F 18 199 273= 274 283= 293 DOBADBLOCKS 000031F7 F 17 28 111= 112 122= 155 DODATABLOCK 00003364 F 18 193 198 613= 614 619= 625 DOFAKE 00003547 F 19 463j 471= DOFSL 000032A4 F 18 196 256= 257 266= 271 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 10 DONE 0000310D F 16 142j 146= DONE 0000320F F 17 138j 148= DONE 0000323A F 18 58j 72= DONE 0000325E F 18 125j 129j 131j 135= DONE 000032D9 F 18 364j 374= 392j DONE 0000331A F 18 484j 492= 507j DONE 0000335F F 18 536j 547j 580j 598= 607j DONE 0000339D F 18 669a 716= DONE 000033B1 F 18 751j 758= DONE 00003401 F 19 24j 43= DONE 00003495 F 19 94j 125j 201j 258j 261= DONE 00003534 F 19 391j 394j 425= DONE 00003551 F 19 457j 459j 487= DONE 00003600 F 19 572j 600j 602j 635j 671j 678j 695j 730j 751j 757j 762= 788j DONE 00003704 F 19 845j 905j 910j 974j 983j 1013j 1050j 1065j 1078j 1121j 1123= 1143j 1148j 1160j DONE 0000379B F 19 1303j 1326j 1329= DONE 0000384D F 19 1590j 1597= DONE 00003874 F 19 1623j 1643= DONE 0000395D F 20 209j 221j 226= DONE 000039E5 F 21 59j 69j 93= DONE 00003A53 F 23 66j 71= DONE 00003A9C F 24 131j 169= DONE 00003B05 F 24 335j 357= DONE 00003B64 F 24 433j 441j 496= 502j DONE 00003BAF F 24 554j 562j 613= 619j DONE 00003C04 F 24 675j 685j 752= 759j DONE 00003C28 F 25 63j 68= DORAF 0000366E F 19 879j 918= DOSAF 000036EA F 19 877j 1089= DOUDIR1 00003368 F 18 187 627= 628 633= 641 DOUDIR2 0000336E F 18 188 643= 644 659= 720 *DSKLIM 00092187 F 6 1614= *DSKSAVL 00090186 F 6 1612= *DSKUSD 00091188 F 6 1615= *DSKWARN 00093186 F 6 1613= *DVCTBFD 00000001 F 5 613= *DVCTCOMM 00000008 F 5 615= *DVCTCTC 0000000A F 5 617= *DVCTLPC 00000002 F 5 614= *DVCTMTC 00000009 F 5 616= *DVCTSDC 0000000C F 5 619= *DVCTVTC 0000000B F 5 618= DVSNDISP 0000FA00 F 6 93= 95e *DVSNPART1 00000170 F 6 94= *DVSNPART2 0000007D F 6 95= *DWRUDD 00002080 F 5 623= *DWRUMREV 00001080 F 5 621= *DWRUTYPE 00000080 F 5 611= *ECBLKREUS 0000000D F 12 74= *ECCHAN 00000003 F 12 64= *ECDA 0000000C F 12 73= *ECDATA 00000001 F 12 62= ECFBI 00000002 F 12 63= F 17 88 *ECFBIACCT 00000009 F 12 70= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 11 *ECFBIBDAT 00000019 F 12 86= *ECFBIBLNE 00000011 F 12 78= *ECFBIBLNK 0000000B F 12 72= *ECFBIFDAT 00000013 F 12 80= *ECFBIFLAG 0000000F F 12 76= *ECFBIFLNK 0000000E F 12 75= *ECFBIFSN 0000000A F 12 71= *ECFBINBAN 00000015 F 12 82= *ECFBINBFS 00000018 F 12 85= *ECFBINBPJ 00000016 F 12 83= *ECFBIODAT 00000012 F 12 79= *ECFBIPROJ 00000017 F 12 84= *ECFBIRBN 00000014 F 12 81= *ECFBISUB 00000010 F 12 77= *ECFBITYPE 00000008 F 12 69= *ECMPE 00000007 F 12 68= *ECNOCODE 00000000 F 12 61= *ECNOTRDY 00000005 F 12 66= *ECRECBAD 0000001D F 12 90= *ECSAFBAD 0000001C F 12 89= *ECSEEK 00000004 F 12 65= *ECSUBENT 0000001B F 12 88= *ECUDIRORD 0000001A F 12 87= *ECWRPROT 00000006 F 12 67= ELEMENTS 00178801 F 24 200= 209s 211 250s EMPTYRAF 000035A8 F 19 633= 798a ENDPROGRAM 00003030 F 15 88= F 16 127j ENTRIESDONE 00003475 F 19 213j 232= ENTRYLOOP 0000390B F 20 132= 145j ENTRYLOOP 00003B47 F 24 465= 474j 486j ENTRYLOOP 00003B99 F 24 586= 591j 603j ENTRYLOOP 00003BDF F 24 703= 712j 742j ENTRYLOOP1 000034E0 F 19 326= 336j ENTRYLOOP2 0000345D F 19 202= 212j ENTRYNEXT 00003B50 F 24 467j 471= ENTRYNEXT 00003BE3 F 24 705j 709= ERRSTRING 00003C09 F 25 11= 31a *EVARCLEAR 00000360 F 8 271= *EWRUINFO 00000300 F 8 64= EXTPTR 00178803 F 19 1661= 1670s 1705s FAKEEND 0000391D F 20 150j 155= FATALERROR 00003C2A F 16 95 F 22 136 F 23 78 F 24 176 F 26 6 12= 13 32= 84 FBIACCT 00168805 F 6 780= F 17 57 F 19 253s 315s 1230s 1468s FBIBLINK 00089182 F 6 749= F 19 1271s F 20 161s *FBICKSUM 0016880A F 6 784= *FBICSMASK FFE00000 F 6 788= FBIDA 00089181 F 6 747= F 18 223s 594 F 19 251s 322s 393 393 417 417 1219s 1233 1272 1272 1308 1308 1452s 1557 1562 1634s F 20 51s 74 74 139s 164s 169 169 251s 264s *FBIDEFFLAGS 00088221 F 6 746= FBIFLAGS 00088041 F 6 740= 741e 742e 744e 745e 746e FBIFLINK 00089180 F 6 738= F 18 571 588s F 19 1270s 1279 F 20 162s 173 *FBIGMASK FFC00000 F 6 787= FBILCD 00168803 F 6 777= F 18 220s F 19 138s 311s 1213s 1615s F 20 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 12 45s 101s 129s 225s FBILNTH 0000000B F 6 7= 783 786e 787e 788e F 8 172 192e F 14 115 118 121 124 127 130 133 F 18 220 F 19 138 311 1213 1446 1615 F 20 45 101 129 225 *FBILOG 00000004 F 6 786= *FBIMEMERR 00088611 F 6 745= *FBINOREWRIT 00088011 F 6 741= *FBINOSUB 00088411 F 6 744= *FBIPOINTRS 00001C80 F 7 239= FBIPROJ 00168807 F 6 781= F 17 58 F 19 255s 316s 1231s 1469s FBIPTR 00178808 F 19 1409= 1440s 1445 1448 1467 1556 1559a 1561 FBIRELBLK 00089184 F 6 779= F 17 53 F 18 558 F 19 1269s FBISERNO 00168808 F 6 782= F 17 50 F 18 554 F 19 301 317 318s 1221s 1236 1472s FBITADT 00000007 F 6 759= F 20 129 *FBITAFT 00000010 F 6 768= *FBITASLB 00000011 F 6 769= FBITAUTLB 00000015 F 6 773= F 18 164 *FBITBOOT 00000003 F 6 755= FBITBTRX 00000002 F 6 754= F 17 133 FBITCCB 00000013 F 6 771= F 19 746 896 FBITCODED 00000014 F 6 772= F 18 433 FBITESTB 0000007E F 6 774= F 17 142 FBITFREE 0000007F F 6 775= F 17 48 F 18 217 220 387 502 F 19 1615 1627 F 20 101 F 24 652 700 741 FBITFSLB 00000012 F 6 770= F 19 858 1153 1354 FBITIDX 00000008 F 6 760= F 20 45 FBITLRAF 0000000D F 6 765= F 19 682 938 998 1012 *FBITPL 00000001 F 6 753= FBITRAFD 0000000F F 6 767= F 18 424 F 19 648 878 952 1252 1266 1531 FBITSAF 0000000C F 6 764= F 19 583 876 1284 FBITSEC 00000006 F 6 758= F 20 225 FBITSRAF 0000000E F 6 766= F 18 350 F 19 658 945 989 1213 1234 1425 1516 1540 *FBITSUBS 00000005 F 6 757= FBITSYS 0000000B F 6 763= F 17 103 FBITUDIR1 00000009 F 6 761= F 19 138 246 FBITUDIR2 0000000A F 6 762= F 19 105 305 311 FBITVL 00000004 F 6 756= F 17 173 FBITYP 00178801 F 18 410= 439s 459 FBITYPE 00088080 F 6 734= F 17 46 F 18 220s F 19 138s 249s 311s 1213s 1267s 1450s 1615s F 20 45s 101s 129s 225s *FBIWCHK 00088211 F 6 742= FBIWORDA 00168800 F 6 731= 734e 738e 783 FBIWORDB 00168801 F 6 732= 740e 747e FBIWORDC 00168802 F 6 733= 749e FBIWORDE 00168804 F 6 778= 779e *FDACCESSES 0016C80C F 6 1847= *FDACSAO 00000002 F 6 1789= *FDACSLK 0008D040 F 6 1780= *FDACSMW 00000004 F 6 1791= *FDACSNWB 00003E10 F 6 1792= *FDACSRO 00000001 F 6 1788= *FDACSRW 00000000 F 6 1787= *FDACSXO 00000003 F 6 1790= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 13 *FDCREDAT 0016C80F F 6 1854= *FDCUSE 0008C101 F 6 1830= FDDA 0008D185 F 6 1835= F 19 574 634 650s 669s 693s 902s 981s 1009s 1045 1077s 1110s 1218s 1454s FDEDEL 00000410 F 19 560= 568s 601s 755s 766j FDEMOD 00000210 F 19 559= 567s 597s 642s 653s 670s 694s 756s 763j *FDEND 0016C811 F 6 1856= *FDEPP 0016C810 F 6 1855= FDEPROT 000007BC F 6 1775= 1860e FDEPTR 00178802 F 19 371= 399s 421s FDEPTR 00178801 F 19 552= 564s 596 598 611 665 668 689 692 779 FDEPTR 00178801 F 19 810= 827s 862 872s 874s 900 919 966 995 1008 1044 1056 1073 1076 1108 1120 1141 1158 FDEPTR 00178802 F 19 1178= 1189s 1216 1257 1301 1319 1344 1358 FDEPTR 00178803 F 19 1404= 1421s 1453 1470 1542 FDEPTR 00178801 F 19 1573= 1579s 1586 1592 FDET 0008EA60 F 6 1801= F 19 462 569 904s 921s 1112s 1226s FDEXTEN 0016C804 F 6 1833= F 18 692 F 19 210a 334a 341 515a 786a 1063a 1324a *FDFBD 0008DE10 F 6 1793= *FDFLOG 0008FA10 F 6 1823= *FDFWWSC 0008E610 F 6 1799= FDGHOST 0008F610 F 6 1821= F 19 780s 1057s *FDLACC 0016C808 F 6 1842= *FDLBU 0016C809 F 6 1843= *FDLCD 0016C807 F 6 1841= FDLEN 0008D186 F 6 1838= F 19 599 652s 973s 982s 1222s 1258s 1302s 1581s 1593s FDLNTH 00000018 F 6 1860= 2211e 2212e 2223e 2234e 2238e F 18 678 F 19 211 335 483 519 524 527 528 FDLRAF 0008E810 F 6 1800= F 19 619 636s *FDMWACS 0008E2FC F 6 1850= FDNAME 0016C802 F 6 1832= F 18 694 F 19 209a 333a 339 514a 785a 1062a 1323a *FDNBU 0008E010 F 6 1794= *FDPRIV 0008D830 F 6 1786= *FDPURG 0008E410 F 6 1796= FDPURGE 0016C018 F 6 1836= F 19 205s 329s *FDRACS 0008C10C F 6 1848= FDRAFTYPE 0008FC20 F 6 1824= F 19 614 641s 651s 972s 979s 988s 997s 1224s *FDRFB 0008E210 F 6 1795= *FDRUSE 0008C10D F 6 1851= FDSERNO 0016C80A F 6 1844= F 19 508 873s 1146 1198 1220 1347 1459 1471 1587 FDSHL 0016C814 F 6 1858= F 19 864s 1142 1159s 1359s FDSTART 0016C800 F 6 1776= 1857 F 19 458 FDSUN 0016C000 F 6 1779= F 19 203s 327s *FDTRANS 0008F810 F 6 1822= *FDUSRFLD 0016C80E F 6 1853= *FDWACS 0008E01C F 6 1849= *FDWUSE 0008E10D F 6 1852= FHALT 00060000 F 10 334= 619e 622e 765e *FILAEOD 0000000B F 6 2362= FILAEODB 00003C10 F 6 2356= 2362e 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 14 FILEBLOCKS 00003707 F 19 855 1129= FILEBLOCKSB 00003706 F 19 1128= 1129a FILEERROR 00003A81 F 24 119j 125j 134= FILEINDIR 0000339E F 18 267 332 420 429 534 620 723= 724 742= 762 FILEODB 00003E10 F 6 2355= 2361e 2362e *FILEOF 00000008 F 6 2360= FILETYPEDSP 0000364A F 19 857j 869= FILLDIR1 00003458 F 19 128j 196= *FILNEOD 00000009 F 6 2361= *FILREODB 00003A10 F 6 2357= *FILRLEN 00001B30 F 6 2350= FILSFLAGB 00003810 F 6 2359= 2360e 2361e 2362e *FILTYPE 00001040 F 6 2343= FINDDIR 0000323B F 18 14 79= 80 97= 247 285 635 660 753 FINDGRAN 000039F9 F 22 76= 83j FINDIDX 0000321D F 18 13 22= 23 40= 101 FINDSIZE 0000354C F 19 469j 478= FINDTEXTZ 00003C10 F 16 88 F 25 5 13= FIRSTBLOCK 00178803 F 20 91= 111s 120s FIRSTFREEPN 0000001D F 0 83= F 21 33 F 22 73 FIXPRIOR 0000334C F 18 553a 556j 560j 578= *FLDABSPG 000014C0 F 4 151= FLDADRS 00001F10 F 4 36= 40e *FLDBITS 00001F60 F 4 42= *FLDCHARS 00001F30 F 4 41= FLDMODE 00001450 F 4 39= 40e *FLDMODEADR 00001560 F 4 40= FLDPAGE 00001E70 F 4 37= F 24 323 F 25 64 *FLDRELOCB 00001C10 F 4 35= *FNAMBLKLEN 0000000A F 12 100= FNBLKPROT 00000400 F 12 92= 100e 101a FORMATMSG 00003111 F 16 152a 156= FOUND 00003258 F 18 108j 127= FOUND 00003399 F 18 700j 704j 706j 711= FOUNDGRAN 000039FF F 22 80j 86= FOUNDOFFL 00003B30 F 24 414j 436= FOUNDOFFL 00003B82 F 24 549j 557= FOUNDOFFL 00003BCC F 24 658j 678= FOUNDONL 00003B5F F 24 470j 489= FOUNDONL 00003BAA F 24 588j 606= FOUNDONL 00003BFE F 24 707j 745= *FOURSECSD 00005265 F 6 184= *FOURSECSH 0000036E F 6 183= *FOURSECSM 0000000E F 6 182= *FPSWITCHX 00000313 F 8 130= *FRAGACCT 000001CD F 9 625= *FRAGACCTT 000001CF F 9 630= *FRAGBUSY 000001C9 F 9 622= *FRAGCPUL 000001C0 F 9 613= *FRAGCPUU 000001C1 F 9 614= *FRAGDFLTR 000001D2 F 9 632= *FRAGDSKL 000001C4 F 9 617= *FRAGDSKU 000001C5 F 9 618= *FRAGENCF 000001D3 F 9 638= *FRAGFAC 000001CA F 9 623= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 15 *FRAGINITP 000001CE F 9 627= FRAGMSG 0000379C F 19 1325a 1333= *FRAGPWAC 000001CB F 9 624= *FRAGSAVL 000001C7 F 9 620= *FRAGSERNO 000001D0 F 9 635= *FRAGSHAD 000001D1 F 9 631= *FRAGSSCF 000001C8 F 9 621= *FRAGWARN 000001C6 F 9 619= *FRAGWLCKL 000001C2 F 9 615= *FRAGWLCKU 000001C3 F 9 616= *FRALIAS 000001A0 F 9 598= *FRASACCT 000001ED F 9 651= *FRASACCTT 000001EF F 9 656= *FRASCPUL 000001E0 F 9 641= *FRASCPUU 000001E1 F 9 642= *FRASDFLTR 000001F2 F 9 660= *FRASDSKL 000001E4 F 9 645= *FRASENCF 000001F3 F 9 663= *FRASFAC 000001EA F 9 649= *FRASINITP 000001EE F 9 653= *FRASPASS 000001F0 F 9 658= *FRASPWAC 000001EB F 9 650= *FRASSAVL 000001E7 F 9 647= *FRASSSCF 000001E8 F 9 648= *FRASWARN 000001E6 F 9 646= *FRASWLCKL 000001E2 F 9 643= *FRASWLCKU 000001E3 F 9 644= *FRBKSP 00000016 F 9 297= *FRBLKLIM 00000150 F 9 529= *FRBLKUSED 00000151 F 9 532= *FRCACCESS 000000C0 F 9 432= *FRCATALOG 000000E0 F 9 454= *FRCG2TRANS 00000181 F 9 539= *FRCGBCKUP 0000018C F 9 550= *FRCGMANAGR 00000189 F 9 547= *FRCGMANTR 0000018A F 9 548= *FRCGMANTW 0000018B F 9 549= *FRCGOPREQ 00000188 F 9 546= *FRCGOWND 00000182 F 9 540= *FRCGPTRANS 00000180 F 9 538= *FRCGRG1 00000183 F 9 541= *FRCGRG2 00000184 F 9 542= *FRCGRG3 00000185 F 9 543= *FRCGRG4 00000186 F 9 544= *FRCGRG5 00000187 F 9 545= *FRCHAIN 00000130 F 9 515= *FRCHGTRANS 000000C1 F 9 433= *FRCLEAR 00000011 F 9 292= *FRCLOSE 00000060 F 9 388= *FRCLRVVFU 00000251 F 9 697= *FRCONCP 00000133 F 9 521= *FRCREATP 00000134 F 9 518= *FRCS2TRANS 00000191 F 9 581= *FRCSBCKUP 0000019C F 9 592= *FRCSMANAGR 00000199 F 9 589= *FRCSMANTR 0000019A F 9 590= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 16 *FRCSMANTW 0000019B F 9 591= *FRCSOPREQ 00000198 F 9 588= *FRCSOWND 00000192 F 9 582= *FRCSPTRANS 00000190 F 9 580= *FRCSRG1 00000193 F 9 583= *FRCSRG2 00000194 F 9 584= *FRCSRG3 00000195 F 9 585= *FRCSRG4 00000196 F 9 586= *FRCSRG5 00000197 F 9 587= *FRCYCLE 0000001D F 9 303= *FRDELPAGE 00000098 F 9 419= *FRDESTROY 00000170 F 9 535= *FRDEVSTAT 0000001F F 9 305= *FRECHOGET 00000242 F 9 692= *FRECHOOFF 00000241 F 9 690= *FRECHOUNIT 00000240 F 9 688= FREEFBI 00007049 F 14 133= F 19 1615a 1615a 1633a 1638a F 20 101a 101a 138a FREEFILE 0000384F F 19 507 1605= 1606 1613= 1647 FREELOOP 0000385D F 19 1617= 1640j FREEPLACE 00006000 F 14 109= F 15 77a F 19 1615a F 20 101a FREEPTR 000070A7 F 21 20= 35s 57 58s 63 65 67 68s 90 91s FREESTART 000070B7 F 24 65= 127s 129s 165s 166s 646 651 668s 669s 680s 689 698 718s 746s FREESTART 000074B8 F 0 82= 83e FREEUPBLOCK 00003284 F 18 185 186 189 194 205= 206 216= 232 *FREPP 0000001E F 9 304= *FREQUIP 00000050 F 9 347= *FREQUIPMW 00000054 F 9 350= *FREQUIPNA 00000057 F 9 351= *FREQUIPR 00000051 F 9 349= *FREQUIPW 00000050 F 9 348= *FRFILELOCK 00000200 F 9 666= *FRFILELOKT 00000202 F 9 674= *FRFILEULOK 00000201 F 9 667= *FRFORCE 0000001A F 9 301= *FRFWSP 00000015 F 9 296= *FRGETCCB 0000018F F 9 553= *FRGETTRANS 000000C2 F 9 436= *FRINSRTP 00000132 F 9 517= *FRMAKEPATH 00000270 F 9 700= FRMAPIN 00000091 F 9 404= F 24 350 454 480 575 597 693 719 *FRMAPINOC 00000094 F 9 406= *FRMAPINR 00000092 F 9 405= *FRMODACS 000000D0 F 9 439= *FRMODFLOG 000000DB F 9 450= *FRMODFWWSC 000000D4 F 9 443= *FRMODGHOST 000000D7 F 9 446= *FRMODLBKU 000000D6 F 9 445= *FRMODLRD 000000D9 F 9 448= *FRMODLWD 000000D8 F 9 447= *FRMODNBKUP 000000D3 F 9 442= *FRMODPRGI 000000D2 F 9 441= *FRMODTRANS 000000DA F 9 449= *FRMODUSRN 000000D5 F 9 444= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 17 *FRNOPEN 00000260 F 9 361= *FRNOPENC 00000268 F 9 366= *FRNOPENCMW 0000026C F 9 369= *FRNOPENCNA 0000026F F 9 370= *FRNOPENCR 00000269 F 9 368= FRNOPENCW 00000268 F 9 367= F 24 121 *FRNOPENMW 00000264 F 9 364= *FRNOPENNA 00000267 F 9 365= *FRNOPENR 00000261 F 9 363= *FRNOPENW 00000260 F 9 362= *FROPEN 00000050 F 9 353= *FROPENMW 00000054 F 9 356= *FROPENNA 00000057 F 9 357= *FROPENR 00000051 F 9 355= *FROPENW 00000050 F 9 354= *FRPGPROTG 00000096 F 9 413= *FRPGPROTS 00000097 F 9 416= *FRPOSITION 00000090 F 9 400= *FRRAFCPOS 00000095 F 9 410= *FRRAFLAST 00000093 F 9 408= *FRRAFNEXT 00000099 F 9 421= *FRREAD 00000030 F 9 323= *FRREADB 00000031 F 9 324= *FRREADSHL 000000E1 F 9 455= *FRRELEASE 00000013 F 9 294= *FRRENAMER 00000100 F 9 461= *FRRESLOCKR 00000203 F 9 669= *FRRESLOCKT 00000206 F 9 679= *FRRESLOCKW 00000204 F 9 670= *FRRESLOKT 00000206 F 9 678= *FRRESSWTCH 00000290 F 9 703= *FRRESULOCK 00000205 F 9 671= *FRREWIND 00000012 F 9 293= *FRRWRITE 00000020 F 9 313= *FRRWRITEB 00000022 F 9 316= *FRRWRITEC 00000025 F 9 319= *FRRWRITEF 00000023 F 9 317= *FRRWRITEL 00000024 F 9 318= *FRRWRITET 00000020 F 9 314= *FRRWRITETF 00000021 F 9 315= *FRSAVE 00000070 F 9 392= *FRSEFB 00000018 F 9 299= *FRSEFF 00000017 F 9 298= *FRSEOD 00000014 F 9 295= *FRSETCCB 0000019F F 9 595= *FRSETUPP 00000131 F 9 516= *FRSETVVFU 00000250 F 9 695= *FRSHARE 000000A0 F 9 425= *FRSREAD 00000032 F 9 325= *FRSREADB 00000033 F 9 326= *FRSTATUS 00000010 F 9 291= *FRSWRITE 000002A0 F 9 339= *FRSWRITEB 000002A2 F 9 342= *FRSWRITEF 000002A3 F 9 343= *FRSWRITET 000002A0 F 9 340= *FRSWRITETF 000002A1 F 9 341= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 18 *FRTBREAK 000001B5 F 9 608= *FRTCLRXOFF 000001B6 F 9 610= *FRTDELAY 000001B4 F 9 606= *FRTFLSHI 000001B1 F 9 602= *FRTFLSHIO 000001B2 F 9 603= *FRTFLSHO 000001B0 F 9 601= *FRTGETBKSP 00000124 F 9 493= *FRTGETBRCH 00000233 F 9 506= *FRTGETCRD 00000121 F 9 490= *FRTGETCW 00000126 F 9 495= *FRTGETECHO 00000128 F 9 497= *FRTGETFFD 00000123 F 9 492= *FRTGETHTD 00000232 F 9 505= *FRTGETINFO 00000234 F 9 510= *FRTGETIRAT 0000012C F 9 500= *FRTGETKILL 00000125 F 9 494= *FRTGETLFD 00000122 F 9 491= *FRTGETMODE 00000230 F 9 503= *FRTGETOPT 00000231 F 9 504= *FRTGETPORT 0000012E F 9 501= *FRTGETRATE 00000129 F 9 498= *FRTGETRCVR 0000012F F 9 502= *FRTGETSH 00000127 F 9 496= *FRTGETTCG 0000012A F 9 499= *FRTGETTCS 0000012B F 9 512= *FRTGETTYPE 00000120 F 9 488= *FRTGETXOIQ 00000235 F 9 507= *FRTRESET 000001B3 F 9 604= *FRTSETBKSP 00000114 F 9 469= *FRTSETBRCH 00000223 F 9 482= *FRTSETCRD 00000111 F 9 466= *FRTSETCW 00000116 F 9 471= *FRTSETECHO 00000118 F 9 473= *FRTSETFFD 00000113 F 9 468= *FRTSETHTD 00000222 F 9 481= *FRTSETIRAT 0000011C F 9 476= *FRTSETKILL 00000115 F 9 470= *FRTSETLFD 00000112 F 9 467= *FRTSETMODE 00000220 F 9 479= *FRTSETOPT 00000221 F 9 480= *FRTSETORAT 0000011D F 9 477= *FRTSETRATE 00000119 F 9 474= *FRTSETSH 00000117 F 9 472= *FRTSETTCG 0000011A F 9 475= *FRTSETTCS 0000011B F 9 485= *FRTSETTRNS 0000011F F 9 478= *FRTSETTYPE 00000110 F 9 464= *FRTSETXOIQ 00000224 F 9 483= *FRUNEQUIP 00000060 F 9 386= *FRUNITID 00000210 F 9 682= *FRUNITIE 00000211 F 9 683= *FRUNITIGET 00000212 F 9 685= *FRUNSAVE 00000080 F 9 396= *FRUNSHARE 000000B0 F 9 429= *FRUOPEN 00000280 F 9 374= *FRUOPENC 00000288 F 9 379= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 19 *FRUOPENCMW 0000028C F 9 382= *FRUOPENCNA 0000028F F 9 383= *FRUOPENCR 00000289 F 9 381= *FRUOPENCW 00000288 F 9 380= *FRUOPENMW 00000284 F 9 377= *FRUOPENNA 00000287 F 9 378= *FRUOPENR 00000281 F 9 376= *FRUOPENW 00000280 F 9 375= *FRWFM 00000019 F 9 300= *FRWRITE 00000040 F 9 329= *FRWRITEB 00000042 F 9 332= *FRWRITEC 00000045 F 9 335= *FRWRITEF 00000043 F 9 333= *FRWRITEL 00000044 F 9 334= *FRWRITEMOD 0000001C F 9 302= *FRWRITET 00000040 F 9 330= *FRWRITETF 00000041 F 9 331= *FRXSAVE 00000140 F 9 525= FS F 21 4= 100 FSGET 000039C8 F 18 62 109 686 F 19 285 F 20 300 F 21 17 43= 44 52= F 24 214 FSINIT 000039C1 F 15 50 F 21 16 26= 27 32= GETFREEBLK 00003BB2 F 19 236 295 1214 1451 F 20 46 119 133 151 242 256 F 24 40 625= 626 642= GETPARAMS 00003033 F 15 47 F 16 5 11= GETSLB 00003708 F 19 1113j 1140= 1154j GETVOLREV 00003211 F 17 27 158= 159 168= 185 GIVEERR 00003C1D F 25 19j 21j 30= GOTEND 00003BFB F 24 733j 739= GOTFIRST 00003967 F 20 241j 249= GOTNEXT 0000391E F 20 152j 158= GOTPAGE 00003B43 F 24 450j 460= GOTPAGE 00003B95 F 24 571j 581= GOTSECOND 00003979 F 20 255j 262= GOTSIZE 000035AE F 19 638j 640= GRANPAGES 000070AA F 22 20= 88s 110 117s 126s 155s 167s GRANULARITY 000070AB F 22 22= 68s 79 81 111 125 *HALTB1001 00021001 F 10 363= *HALTB1002 00021002 F 10 372= *HALTB1004 00021004 F 10 366= *HALTB3010 00023010 F 10 379= *HALTB3011 00023011 F 10 380= *HALTB3100 00023100 F 10 383= *HALTB3101 00023101 F 10 384= *HALTB3102 00023102 F 10 385= *HALTB3103 00023103 F 10 386= *HALTB3104 00023104 F 10 387= *HALTB3106 00023106 F 10 388= *HALTB3107 00023107 F 10 389= *HALTB3108 00023108 F 10 390= *HALTB3109 00023109 F 10 391= *HALTB310A 0002310A F 10 392= *HALTB310B 0002310B F 10 393= *HALTB310C 0002310C F 10 394= *HALTB310D 0002310D F 10 395= *HALTB310E 0002310E F 10 396= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 20 *HALTB310F 0002310F F 10 397= *HALTB3110 00023110 F 10 398= *HALTB3111 00023111 F 10 399= *HALTB3112 00023112 F 10 400= *HALTB3113 00023113 F 10 401= *HALTB3200 00023200 F 10 404= *HALTB3201 00023201 F 10 405= *HALTB4004 00024004 F 10 408= *HALTB4011 00024011 F 10 409= *HALTB4012 00024012 F 10 410= *HALTB4013 00024013 F 10 411= *HALTB4014 00024014 F 10 412= *HALTB4015 00024015 F 10 413= *HALTB4016 00024016 F 10 414= *HALTB4017 00024017 F 10 415= *HALTB4018 00024018 F 10 416= *HALTB4019 00024019 F 10 417= *HALTB4021 00024021 F 10 418= *HALTB4022 00024022 F 10 419= *HALTB4023 00024023 F 10 420= *HALTB4024 00024024 F 10 421= *HALTB4100 00024100 F 10 423= *HALTB5000 00025000 F 10 429= *HALTB5001 00025001 F 10 430= *HALTB5002 00025002 F 10 431= *HALTB5003 00025003 F 10 432= *HALTB5004 00025004 F 10 433= *HALTB5005 00025005 F 10 434= *HALTB5006 00025006 F 10 435= *HALTB5007 00025007 F 10 436= *HALTB6040 00026040 F 10 466= *HALTB6044 00026044 F 10 467= *HALTB7001 00027001 F 10 782= *HALTB7002 00027002 F 10 783= *HALTB7003 00027003 F 10 784= *HALTB7004 00027004 F 10 785= *HALTB7007 00027007 F 10 786= *HALTB7009 00027009 F 10 789= *HALTB700A 0002700A F 10 790= *HALTB700B 0002700B F 10 791= *HALTB700C 0002700C F 10 792= *HALTC1200 00031200 F 10 738= *HALTC1201 00031201 F 10 739= *HALTC1202 00031202 F 10 740= *HALTC1210 00031210 F 10 743= *HALTC1215 00031215 F 10 748= *HALTC1216 00031216 F 10 749= HALTCODE 00003A1A F 22 137 141= HALTCODE 00003AA2 F 24 177 181= HALTCODE 00178801 F 26 28= 33s 42 *HALTD00A5 000400A5 F 10 573= *HALTD1254 00041254 F 10 769= *HALTD1261 00041261 F 10 773= *HALTD1281 00041281 F 10 778= *HALTF1250 00061250 F 10 765= *HALTH0021 00080021 F 10 508= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 21 *HALTH0050 00080050 F 10 583= *HALTH0051 00080051 F 10 584= *HALTH00C1 000800C1 F 10 495= *HALTH00C3 000800C3 F 10 497= *HALTH0CSC 00080C00 F 10 498= *HALTH0DSC 00080D00 F 10 496= *HALTI0800 00090800 F 10 577= *HALTI0801 00090801 F 10 579= *HALTM00C0 000D00C0 F 10 494= *HALTM00C5 000D00C5 F 10 502= *HALTM00C6 000D00C6 F 10 503= *HALTM00C7 000D00C7 F 10 504= *HALTP0103 00100103 F 10 589= *HALTP10D2 001010D2 F 10 617= *HALTP10D3 001010D3 F 10 618= HALTPROTO 00003C38 F 26 46 50= *HALTS0000 00130000 F 10 478= *HALTS0001 00130001 F 10 479= *HALTS0002 00130002 F 10 480= *HALTS0004 00130004 F 10 481= *HALTS0005 00130005 F 10 482= *HALTS0007 00130007 F 10 483= *HALTS0008 00130008 F 10 484= *HALTS0010 00130010 F 10 491= *HALTS0022 00130022 F 10 509= *HALTS0023 00130023 F 10 510= *HALTS0030 00130030 F 10 516= *HALTS0031 00130031 F 10 517= *HALTS0032 00130032 F 10 518= *HALTS0033 00130033 F 10 519= *HALTS0035 00130035 F 10 520= *HALTS0037 00130037 F 10 521= *HALTS0040 00130040 F 10 513= *HALTS0062 00130062 F 10 529= *HALTS0063 00130063 F 10 530= *HALTS0070 00130070 F 10 540= *HALTS0071 00130071 F 10 541= *HALTS0072 00130072 F 10 542= *HALTS0080 00130080 F 10 545= *HALTS0081 00130081 F 10 546= *HALTS0082 00130082 F 10 547= *HALTS0083 00130083 F 10 548= *HALTS0084 00130084 F 10 549= *HALTS0086 00130086 F 10 552= *HALTS0087 00130087 F 10 553= *HALTS0088 00130088 F 10 554= *HALTS0089 00130089 F 10 555= *HALTS008A 0013008A F 10 556= *HALTS008B 0013008B F 10 557= *HALTS008C 0013008C F 10 558= *HALTS008D 0013008D F 10 559= *HALTS008E 0013008E F 10 560= *HALTS008F 0013008F F 10 561= *HALTS0090 00130090 F 10 564= *HALTS0091 00130091 F 10 565= *HALTS00A0 001300A0 F 10 568= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 22 *HALTS00A1 001300A1 F 10 569= *HALTS00A3 001300A3 F 10 571= *HALTS00A4 001300A4 F 10 572= *HALTS00A6 001300A6 F 10 574= *HALTS00C8 001300C8 F 10 505= *HALTS00D0 001300D0 F 10 535= *HALTS00D1 001300D1 F 10 536= *HALTS00D2 001300D2 F 10 537= *HALTS00E0 001300E0 F 10 524= *HALTS00E1 001300E1 F 10 525= *HALTS00E2 001300E2 F 10 526= *HALTS0101 00130101 F 10 587= *HALTS0102 00130102 F 10 588= *HALTS0104 00130104 F 10 590= *HALTS0105 00130105 F 10 591= *HALTS0210 00130210 F 10 600= *HALTS0213 00130213 F 10 601= *HALTS0214 00130214 F 10 602= *HALTS10A0 001310A0 F 10 605= *HALTS10B0 001310B0 F 10 608= *HALTS10B1 001310B1 F 10 609= *HALTS10B2 001310B2 F 10 610= *HALTS10C0 001310C0 F 10 613= *HALTS10D5 001310D5 F 10 620= *HALTS10D6 001310D6 F 10 621= *HALTS10D8 001310D8 F 10 623= *HALTS10E0 001310E0 F 10 626= *HALTS10E1 001310E1 F 10 627= *HALTS10E2 001310E2 F 10 628= *HALTS1108 00131108 F 10 648= *HALTS1110 00131110 F 10 651= *HALTS1111 00131111 F 10 652= *HALTS1112 00131112 F 10 653= *HALTS1113 00131113 F 10 654= *HALTS1114 00131114 F 10 655= *HALTS1115 00131115 F 10 656= *HALTS1116 00131116 F 10 657= *HALTS1118 00131118 F 10 659= *HALTS111A 0013111A F 10 660= *HALTS111B 0013111B F 10 661= *HALTS111C 0013111C F 10 662= *HALTS1120 00131120 F 10 665= *HALTS1128 00131128 F 10 637= *HALTS1129 00131129 F 10 638= *HALTS1131 00131131 F 10 641= *HALTS1132 00131132 F 10 642= *HALTS1133 00131133 F 10 643= *HALTS1134 00131134 F 10 644= *HALTS1135 00131135 F 10 645= *HALTS1140 00131140 F 10 668= *HALTS1141 00131141 F 10 669= *HALTS1142 00131142 F 10 670= *HALTS1148 00131148 F 10 673= *HALTS1149 00131149 F 10 674= *HALTS1150 00131150 F 10 677= *HALTS1151 00131151 F 10 678= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 23 *HALTS1160 00131160 F 10 681= *HALTS1161 00131161 F 10 682= *HALTS1162 00131162 F 10 683= *HALTS1163 00131163 F 10 684= *HALTS1164 00131164 F 10 685= *HALTS1165 00131165 F 10 686= *HALTS1166 00131166 F 10 687= *HALTS1167 00131167 F 10 688= *HALTS1168 00131168 F 10 689= *HALTS1169 00131169 F 10 690= *HALTS116A 0013116A F 10 691= *HALTS116B 0013116B F 10 692= *HALTS116C 0013116C F 10 693= *HALTS116D 0013116D F 10 694= *HALTS1170 00131170 F 10 697= *HALTS1171 00131171 F 10 698= *HALTS1172 00131172 F 10 699= *HALTS1180 00131180 F 10 702= *HALTS1181 00131181 F 10 703= *HALTS1191 00131191 F 10 706= *HALTS1192 00131192 F 10 707= *HALTS1193 00131193 F 10 708= *HALTS1198 00131198 F 10 709= *HALTS1199 00131199 F 10 710= *HALTS119A 0013119A F 10 711= *HALTS119C 0013119C F 10 712= *HALTS11A0 001311A0 F 10 715= *HALTS11B0 001311B0 F 10 718= *HALTS11B1 001311B1 F 10 719= *HALTS11B2 001311B2 F 10 720= *HALTS11C0 001311C0 F 10 723= *HALTS11C1 001311C1 F 10 724= *HALTS11C2 001311C2 F 10 725= *HALTS11D0 001311D0 F 10 728= *HALTS11E0 001311E0 F 10 731= *HALTS11E1 001311E1 F 10 732= *HALTS11E2 001311E2 F 10 733= *HALTS11E3 001311E3 F 10 734= *HALTS11E5 001311E5 F 10 735= *HALTS11F0 001311F0 F 10 634= *HALTS1211 00131211 F 10 744= *HALTS1214 00131214 F 10 747= *HALTS1218 00131218 F 10 750= *HALTS1224 00131224 F 10 753= *HALTS1225 00131225 F 10 754= *HALTS1226 00131226 F 10 755= *HALTS1227 00131227 F 10 756= *HALTS1228 00131228 F 10 757= *HALTS1229 00131229 F 10 758= *HALTS1230 00131230 F 10 761= *HALTS1231 00131231 F 10 762= *HALTS1251 00131251 F 10 766= *HALTS1252 00131252 F 10 767= *HALTS1255 00131255 F 10 770= *HALTS1280 00131280 F 10 777= *HALTS1282 00131282 F 10 779= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 24 *HALTS1300 00131300 F 10 631= *HALTS700D 0013700D F 10 793= *HALTS700E 0013700E F 10 794= *HALTW3210 00173210 F 10 440= *HALTW3211 00173211 F 10 441= *HALTW3212 00173212 F 10 442= *HALTW3213 00173213 F 10 444= *HALTW3220 00173220 F 10 447= *HALTW3221 00173221 F 10 448= *HALTW3230 00173230 F 10 451= *HALTW3231 00173231 F 10 452= *HALTW3232 00173232 F 10 453= *HALTW3233 00173233 F 10 454= *HALTW3234 00173234 F 10 455= HALTW3300 00173300 F 10 460= F 22 141x HALTW3301 00173301 F 10 461= F 24 181x *HALTZ1212 001A1212 F 10 745= *HALTZ1213 001A1213 F 10 746= HEADPAGE 00001C00 F 7 237= 238e 239e *HEADPMV 00000387 F 8 312= HELLOMSG 00003063 F 16 14a 74= HHALT 00080000 F 10 335= 495e 496e 497e 498e 508e 583e 584e 594e HIGHBLOCK 00178805 F 19 1406= 1423s 1494 HIGHPAGE 000070B0 F 24 49= 116s 476 593 714 725 HIGHSPACE 000070B5 F 24 59= 148s 430 551 666 *HLTSV1270 002A1270 F 10 774= *HLTSV7000 002A7000 F 10 799= *HLTSV7100 002A7100 F 10 800= *HLTSV7101 002A7101 F 10 801= *HLTSV7200 002A7200 F 10 802= *HLTSV7300 002A7300 F 10 803= *HLTSV7310 002A7310 F 10 804= *HLTSV7311 002A7311 F 10 805= *HLTSV7320 002A7320 F 10 806= *HLTSV7380 002A7380 F 10 807= *HLTSV7381 002A7381 F 10 808= *HLTSV7390 002A7390 F 10 809= *HLTSV7391 002A7391 F 10 810= *HLTSV73A0 002A73A0 F 10 811= *HLTSV73A1 002A73A1 F 10 812= *HLTSV73B0 002A73B0 F 10 813= *HLTSV73B1 002A73B1 F 10 814= *HTYPECDR 0000000A F 6 1813= HTYPECODE 00000003 F 6 1806= F 19 903 *HTYPECT 0000000D F 6 1816= *HTYPEDIR 00000005 F 6 1808= *HTYPELAST 00000010 F 6 1819= *HTYPELP 0000000B F 6 1814= *HTYPEMT 0000000C F 6 1815= *HTYPENULL 00000006 F 6 1809= *HTYPEPATH 00000004 F 6 1807= HTYPERAF 00000002 F 6 1805= F 19 920 1225 HTYPESAF 00000001 F 6 1804= F 19 1111 *HTYPETASK 00000009 F 6 1812= *HTYPETERM 00000007 F 6 1810= *HTYPEVOL 0000000E F 6 1817= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 25 *HTYPEVT 0000000F F 6 1818= *IBLKPATCH 00000332 F 8 242= *IBLOCK 00000200 F 8 41= IBSLOTS 00000370 F 8 298= F 22 62 145 *IBSTACK 00000360 F 8 260= IDXACNO 00178800 F 6 1566= 1571e F 20 64s IDXACNOP 00178802 F 6 1567= F 20 65s IDXBUCKETS 0000709B F 14 146= F 16 17s F 17 71s F 18 51 F 20 297s 328 IDXDIRDA 00178803 F 6 1569= F 20 67s *IDXDIRDA2 00178804 F 6 1570= IDXDONE 000033FF F 19 28j 39= IDXECNT 000000CC F 6 1572= F 17 69 70 F 20 24 *IDXHASH MACRO F 6 1335= IDXLNTH 00000005 F 6 1571= 1572e F 20 68 IDXLOOP 000033B5 F 18 780= 819j IDXLOOP 000033F4 F 19 25= 41j IDXLOOP 000038AB F 20 43= 76j IDXLOOP 000039A8 F 20 313= 341j IDXMESSAGE 000033DA F 18 784a 826= IDXN 00000400 F 14 41= 50e 51a IDXNBUCKET 00160000 F 14 42= 44 F 18 55 67s 783a F 20 304s 331 IDXNDA 00160801 F 14 46= F 18 69s F 20 306s IDXNDIRCNT 000800F2 F 14 47= F 18 70s 116s F 20 23 307s IDXNDIRLIST 00081F12 F 14 48= F 18 71s 105 118s 785 F 19 27 F 20 57 308s 316 332 334s IDXNFAKE 00081010 F 14 43= F 18 68s F 20 305s IDXNLEN 00000003 F 14 50= F 18 63 F 20 301 IDXNLIST 0000709C F 14 147= F 16 18s F 18 53 54a 778 F 19 23 F 20 21 42 311s 330 IDXNNEXT 00081F10 F 14 45= F 18 64s 65s 817 F 20 302s 314 IDXNODE 00178803 F 18 94= 104s 115 IDXPTR 00178801 F 18 773= 779s 781 816 818s IDXPTR 00178801 F 20 12= 44s 56 75 IHALT 00090000 F 10 336= 577e 579e INDEX 00178809 F 20 97= 130s 135s 143 INDEX 00178801 F 25 8= 14s 20 26s INDXLOOP 0000346B F 19 219= 229j INITERR 00003031 F 15 53j 92= INITPAGE 00002000 F 7 241= 242e INITPSECT MACRO F 13 63= 72 F 14 90 INSTR1 00003136 F 16 30a 160= INSTR2 00003148 F 16 33a 161= INSTR3 0000315A F 16 36a 162= INSTR4 00003163 F 16 39a 163= INSTR5 00003175 F 16 42a 164= INSTR6 00003186 F 16 45a 165= INSTR7 00003198 F 16 48a 166= INSTR8 000031AB F 16 51a 167= INSTRFMT1 000031BB F 16 31a 34a 37a 40a 43a 46a 49a 52a 168= *INTDEVICES 00000312 F 8 118= INTSOFF 0000E000 F 4 82= 86e INTSON 0000F000 F 4 81= 83e 85e *IPRPPUCHAN 00001080 F 5 56= *IPRPPUSTAT 00002100 F 5 57= *IPRSSUSTAT 00003080 F 5 403= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 26 ITSAFAKE 0000342C F 19 76j 137= *ITSEMPTY 00003698 F 19 970= ITSINTHERE 00003A52 F 23 50j 69= ITSLARGE 000036A7 F 19 942j 956j 994= ITSMAJOR 000037D3 F 19 1426j 1433= ITSSMALL 000036A2 F 19 969j 986= ITSTINY 0000369C F 19 968j 977= *IZONEWORD 0000032F F 8 238= JUMPTAB 00003624 F 19 578 795= *KEYH 0400032A F 8 222= *KEYIND 0000032A F 8 223= *KEYPWDATE 0000032B F 8 224= *L 00001000 F 8 204= LARGEDIR 00003516 F 19 384j 397= LARGERAF 000035CB F 19 620j 681= 801a LARGESTREL 00178809 F 19 818= 925s 957 958s 967 LASTBLOCK 00178804 F 20 92= 113s 180s LENGTH 00178801 F 21 47= 79s 89 LETTERSPOT 00001460 F 10 330= 331e 332e 333e 334e 335e 336e 337e 338e 339e 340e 341e 355e *LIMACSALW 00003E10 F 6 1602= *LIMACSDIV 00003A10 F 6 1604= *LIMACSPROJ 00003810 F 6 1605= *LIMACSSYS 00003C10 F 6 1603= *LIMACSUSR 00003610 F 6 1606= LIMFACCESS 00000040 F 6 1596= F 19 169s LIMITS 0000079C F 6 1592= 1618e LIMITSIZE 00000009 F 6 1618= 2199 2200 *LIMLOGSPOT 00001A50 F 6 1599= LIMPACCESS 00000840 F 6 1597= F 19 170s LINEBUFFER 00007076 F 14 139= F 16 62a 70a LINEBUFFERC 02007076 F 14 140= F 16 76a LINEBUFFLEN 00000084 F 14 138= 140 F 16 61 64 LINEBUFFP 00003072 F 16 69s 76= LISTSIZE 00178801 F 20 89= 106s 149 *LOCKBIT 80000000 F 4 17= LOCKBITB 00000010 F 4 16= 17e *LOGSLOTS 00000004 F 4 48= LOOP 000032C1 F 18 342= 363j LOOP 000032FD F 18 450= 474j LOOP 00003539 F 19 455= 484j LOOP 00003842 F 19 1583= 1594j LOOP 0000387E F 19 1679= 1689j LOOP 00003A3F F 23 44= 53j LOOP 00003ABA F 24 224= 251j LOOP 00003C13 F 25 17= 27j LOSTFLAG 00000010 F 19 558= 709s 730j 740s LOSTFLAG 00000010 F 19 823= 1020s 1035s 1048 LOWBLOCK 00178804 F 19 1405= 1422s 1492 *LPCLRCTL 00000201 F 5 1444= *LPINT 00000080 F 5 1435= *LPLOADVFU 0000020C F 5 1447= *LPNOP 00000200 F 5 1442= *LPSETCTL 00000202 F 5 1445= *LPSKIP 00000210 F 5 1450= *LPSTATUS 00000220 F 5 1452= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 27 *LPSTBADWRT 00003610 F 5 1476= *LPSTBUFE 00000610 F 5 1455= *LPSTBUFRDY 00002E10 F 5 1473= *LPSTERROR 00000840 F 5 1456= *LPSTFAULT 00000010 F 5 1453= *LPSTILINE 00003410 F 5 1475= *LPSTIPRE 00003010 F 5 1474= *LPSTIRDY 00003E10 F 5 1478= *LPSTIVFU 00003C10 F 5 1477= *LPSTOOP 00000210 F 5 1454= *LPSTPSKP 00001610 F 5 1470= *LPSTREADY 00002410 F 5 1472= *LPSTUNIT 00001840 F 5 1471= *LPSTVFU 00001410 F 5 1469= *LPWRFORM 00001E10 F 5 1481= *LPWRHDR 00002C20 F 5 1482= *LPWRITE 00000240 F 5 1480= *LPWRLNTH 00003080 F 5 1483= *LPWRUITYP 00003460 F 5 1440= *LPWRUOPT 00002080 F 5 1438= *LPWRUPPUE 00003010 F 5 1439= LRAFOK 000035D9 F 19 684j 705= LUN 000070AE F 24 47= 120s 124 351 456 482 577 599 695 721 *LUNAIN 000000C9 F 9 232= *LUNAOUT 000000CA F 9 233= *LUNCMCNTL 000000D2 F 9 236= *LUNCMLOW 000000C9 F 9 235= *LUNSERR 00000003 F 9 230= *LUNSIN 00000001 F 9 228= *LUNSOUT 00000002 F 9 229= LWPP 0000000A F 4 33= 37e 134e MAIN1 0000303B F 16 21= 71j MAIN2 00003059 F 16 55= 65j 153j MAIN3 00003073 F 16 23j 78= MAJFBI 00007031 F 14 127= F 19 1435a MAJORDA 00178806 F 19 815= 922s 941s 999 MAJPLACE 00005800 F 14 107= F 15 71a F 19 1434a MAJREADERR 000035F3 F 19 716a 739= MAKEIDXNODE 0000399B F 20 299= 310j MAKEITFREE 000031F2 F 17 89j 93j 100= MAKEONE 00003952 F 20 202j 214j 224= MAKERAFROOT 000036E0 F 19 1006j 1026a 1068= MAPERROR 00003C08 F 24 352j 457j 483j 578j 600j 696j 722j 764= MAPPEDSPACE 000070B6 F 24 60= 282s MARKIT 000032CD F 18 351j 358= MARKIT 0000330A F 18 460j 467= *MATEDATE1 80000005 F 6 871= *MATEDATE2 80000006 F 6 872= *MATERUNNUM 04000004 F 6 869= *MATEVOLSIZ 80000004 F 6 870= MAXACCTS 00000400 F 14 111= 112 F 23 57 MAXAFTSIZE 000000FD F 6 1321= 1362 MAXERRORLEN 00000034 F 26 71= 72 79 80 MAXIDXSIZE 000000FD F 6 1320= 1321e 1361 F 20 38 *MAXLOCAL 00000064 F 9 231= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 28 MAXMAPVALS 00000004 F 4 166= F 7 244a 248a MAXSPACES 00000004 F 24 55= 58 144 MEMDEVICE 00000001 F 22 16= 147 MEMDOUBLE 000039F2 F 22 65= 67j MEMINIT 000039E7 F 15 49 F 22 11 31= 32 43= MEMORYMAP 000070AC F 22 24= 52s 74a 115a 154s MESSAGEPTR 00178802 F 26 29= 34s 35 MHALT 000D0000 F 10 337= 494e 502e 503e 504e MINFBI 00007025 F 14 124= F 19 1213a 1213a 1217a 1307a 1308a 1428a MININDEX 00178806 F 19 1184= 1241s 1255s 1268 1293s MININDEX 0017880A F 19 1411= 1537s 1546 MINORDA 00178807 F 19 816= 923s 948s 990 MINPLACE 00005400 F 14 106= F 15 68a F 19 1213a 1256s 1299 1427a MINSAFBLK 00178804 F 19 1182= 1244 1341s 1367 1369s MINSAFPLC 00178805 F 19 1183= 1246 1371s *MIRRORSECT 00000380 F 6 861= MKDIR2LOOP 000034A3 F 19 126j 139j 271= 345j MKFAKENAME 00003875 F 19 207 331 1650= 1651 1667= 1712 MKREADPARM 00003C1F F 15 58 61 64 67 70 73 76 F 25 41= 42 57= 73 MKUDIR2 000034AA F 19 276j 279= MODIFIED 00000010 F 18 329= 341s 354s 364j MODIFIED 00000010 F 18 417= 449s 463s 484j *MONBIT 00003010 F 4 148= *MONMSR 0000F1F0 F 4 85= *MONMSRIOFF 0000E1F0 F 4 86= MONPF 00000080 F 4 136= 153e 155e F 7 218e 221e 225e 229e 232e 235e 238e 242e 246e 250e F 8 312e F 21 81 F 24 220 239 257 325 330 MOPUP F 20 4= 348 MSBLKFIELD 00001180 F 6 38= 738e 747e 749e 779e 1694e F 17 137 F 18 452 MSBLKLOG 00000018 F 4 30= F 6 38e 39e 1612 1613 1614 1615 1834 1835 1838 2247 MSECSD 05265C00 F 6 177= 184e MSECSH 0036EE80 F 6 176= 177e 183e MSECSM 0000EA60 F 6 175= 176e 182e MSECSS 000003E8 F 6 174= 175e MSRFORMON 000001F0 F 4 84= 85e 86e MSRFRELOC 00000040 F 4 77= 84e F 24 406 412 419 421 427 546 548 653 664 679 MSRFRELOCB 00003210 F 4 68= 77e *MSRIAPRB 00002A10 F 4 61= MSRINTCNT 00002040 F 4 56= 81e 81e 82e 82e MSRIRELOC 00000010 F 4 79= 84e MSRIRELOCB 00003610 F 4 70= 79e MSRMON 00000100 F 4 74= 84e MSRMONB 00002E10 F 4 63= 74e *MSRMPEPRCB 00001E10 F 4 54= *MSRPFINTE 00000800 F 4 75= MSRPFINTEB 00002810 F 4 58= 75e MSRPRELOC 00000020 F 4 78= 84e MSRPRELOCB 00003410 F 4 69= 78e *MSRRSTRT 00000080 F 4 52= *MSRSLOT 00003840 F 4 72= MSRSRELOC 00000080 F 4 76= 84e 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 29 MSRSRELOCB 00003010 F 4 67= 76e *MSRTRACEIB 00002C10 F 4 62= *MTCMERASE 00000260 F 5 1421= *MTCMFUNC 00000230 F 5 1403= *MTCMREAD 00000240 F 5 1417= *MTCMRESET 00000200 F 5 1401= *MTCMWRITE 00000250 F 5 1419= *MTDIOSIZE 0000C000 F 5 1154= *MTDST9 00003010 F 5 1369= *MTDSTBOT 00003610 F 5 1373= *MTDSTBREW 00003A10 F 5 1376= *MTDSTDEN 00003E10 F 5 1379= *MTDSTEOT 00003210 F 5 1371= *MTDSTPRS 00003C10 F 5 1378= *MTDSTRDY 00003410 F 5 1372= *MTDSTTPK 00003A10 F 5 1377= *MTDSTWPRT 00003810 F 5 1375= *MTFNBKSP 00000006 F 5 1408= *MTFNCYCLE 00000001 F 5 1404= *MTFNDENSEL 0000000C F 5 1413= *MTFNDSCIOF 00000008 F 5 1410= *MTFNDSCION 00000009 F 5 1411= *MTFNFWSP 00000007 F 5 1409= *MTFNOFFL 0000000A F 5 1412= *MTFNREWIND 00000002 F 5 1405= *MTFNSEFB 00000004 F 5 1406= *MTFNSEFF 00000005 F 5 1407= *MTFNTRSEL 00000010 F 5 1414= *MTFNWFM 00000018 F 5 1415= *MTIDSTEST 00002080 F 5 1174= *MTINTREQ 00000080 F 5 1399= *MTLD2STAT 00000220 F 5 1381= *MTLDDRVST 00000240 F 5 1386= *MTLDSTAT 00000210 F 5 1204= *MTSELECT 00000008 F 5 1397= *MTSTANER 00000410 F 5 1207= *MTSTDPPE 00002010 F 5 1342= *MTSTDRVST 00003080 F 5 1366= *MTSTDSC 00000010 F 5 1205= *MTSTEOF 00001010 F 5 1218= *MTSTERSTAT 00001650 F 5 1226= *MTSTSCIEN 00000210 F 5 1206= *MTSTTMBK 00000002 F 5 1222= *MTSTTMBKB 00001210 F 5 1224= *MTSTTMD 00001220 F 5 1219= *MTSTTMFW 00000001 F 5 1221= *MTSTTMFWB 00001410 F 5 1225= *MTSTTMLOST 00000003 F 5 1223= MUSTREHASH 000038A2 F 20 25j 29= *NAME 00000005 F 12 96= NAMEBUFF 00178804 F 19 1662= 1676s NAMEBUFFC 00178010 F 19 1663= 1678a 1694a *NAMEEXT 00000007 F 12 97= NAMEMADE 00003888 F 19 1680j 1692= NAMEPTR 00178802 F 19 1660= 1669s 1704s NEEDNEWPAGE 000039D8 F 21 66j 78= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 30 NEXT 000031DF F 17 35j 49j 60= 98j 105j NEXT 000032CE F 18 344j 355j 361= NEXT 0000330D F 18 453j 464j 472= NEXT 00003397 F 18 703j 707= NEXT 0000354F F 19 479j 482= NEXT 00003A45 F 23 48j 51= NEXTDIR 00178802 F 20 293= 320s 335 NEXTGRAN 000039FE F 22 78j 82= NEXTGRAN 00003A0A F 22 118= 128j NEXTIDX 000039BE F 20 318j 339= NEXTSERNUM 0000709F F 14 151= F 15 34s F 19 152s NEXTSLOT 00003A14 F 22 122j 132= 148j 152j 153j NEXTSPACE 00003B29 F 24 408j 426= NEXTSPACE 00003BC3 F 24 656j 663= *NMTPUNITS 00000004 F 5 1152= *NNVMCLOCKS 00000300 F 6 340= NOBUCKET 0000322F F 18 56j 60= NOCCB 0000366C F 19 891j 908= NODEL 00003604 F 19 766j 768= NOFREE 00003BCA F 24 667j 673= NOHALTCODE 003FFFFF F 10 357= F 26 51x NOMAP 00003B03 F 24 345j 354= NOMESSAGE 00003C31 F 26 36j 39= NOMOD 00003602 F 19 763j 765= NOMSGHALT 00003C39 F 26 44 51= NOTESECBLK 000032B0 F 18 184 295= 296 305= 313 NOTFOUND 00003B65 F 24 477j 500= NOTFOUND 00003BB0 F 24 594j 617= NOTFOUND 00003C06 F 24 715j 757= NOTHIGHEST 00003BFA F 24 726j 736= NOTMAJOR 00003685 F 19 939j 944= NOTMINOR 0000368A F 19 946j 951= NOTTHERE 00003A47 F 23 46j 55= NOTUDIR2 0000341C F 19 106j 110= NOWRITE2 00003530 F 19 415j 419= NPS 00000080 F 4 134= 135e 136e 148e F 7 244a 248a F 8 259a 311 NUMSLOTS 00000010 F 4 47= 48e F 8 63 259a 289 298 F 22 134 *NVMBASE 00000002 F 6 208= NVMCLKBYTS 00000004 F 6 300= 301 340 *NVMDATDRFT 00000033 F 6 237= NVMDEADCNT 00000010 F 6 303= 305 *NVMDEATH 00000080 F 6 307= *NVMDEATHE 00000060 F 6 304= *NVMFACACC 00000001 F 6 257= *NVMFACCPU 00000001 F 6 251= *NVMFACCTC 00000001 F 6 272= *NVMFACCTU 00000001 F 6 275= *NVMFACDISK 00000001 F 6 266= *NVMFACLPC 00000001 F 6 269= *NVMFACMCU 00000001 F 6 245= *NVMFACMSC 00000001 F 6 263= *NVMFACMTC 00000001 F 6 278= *NVMFACMTU 00000001 F 6 281= *NVMFACPAGE 00000020 F 6 248= *NVMFACPORT 00000008 F 6 260= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 31 *NVMFACPPU 00000001 F 6 254= *NVMFACVTC 00000001 F 6 284= *NVMFACVTU 00000001 F 6 287= *NVMLFPPW 00000011 F 6 214= *NVMLFPPW1 00000012 F 6 215= *NVMLFPPW2 0000001A F 6 216= *NVMMAXACC 00000044 F 6 256= *NVMMAXCPU 00000042 F 6 250= *NVMMAXCTC 00000049 F 6 271= *NVMMAXCTU 0000004A F 6 274= *NVMMAXDISK 00000047 F 6 265= *NVMMAXLPC 00000048 F 6 268= *NVMMAXMCU 00000040 F 6 244= *NVMMAXMSC 00000046 F 6 262= *NVMMAXMTC 0000004B F 6 277= *NVMMAXMTU 0000004C F 6 280= *NVMMAXPAGE 00000041 F 6 247= *NVMMAXPORT 00000045 F 6 259= *NVMMAXPPU 00000043 F 6 253= *NVMMAXVTC 0000004D F 6 283= *NVMMAXVTU 0000004E F 6 286= *NVMRFPPW 00000000 F 6 210= *NVMRFPPW1 00000001 F 6 211= *NVMRFPPW2 00000009 F 6 212= *NVMSIZE 00000080 F 6 207= *NVMSSN 0000003C F 6 242= *NVMSSUSN 00000038 F 6 240= *NVMTAPEPW 00000022 F 6 233= *ODBADNAME 00000001 F 12 41= *ODBADPL 00000004 F 12 44= *ODBADSB 00000006 F 12 46= *ODBADVL 00000005 F 12 45= *ODISYR 0000000B F 12 51= *ODNOTDISK 00000002 F 12 42= *ODOFFLINE 00000003 F 12 43= *ODOOPS 00000008 F 12 48= *ODPFM 0000000A F 12 50= *ODSUBBIG 00000007 F 12 47= *ODVIU 00000009 F 12 49= OFFL 000039D0 F 21 56j 61= OFFLERROR 00003A9F F 24 145j 175= OFFLINE 00007097 F 14 141= F 15 18s 31s F 16 117 F 21 55 F 24 112 313 387 530 644 F 25 62 F 26 40 OFFLINEINIT 00003A84 F 24 113j 140= OFFSET 00178801 F 24 306= 346s 353 OLDBUCKET 00178801 F 20 291= 312s 315s 340 OLDWAY 000035A5 F 19 613j 618= ONEBITS FFFFFFFF F 4 15= 81e 82e ONLINEACCES 00003AF4 F 24 314j 338= ONLINEFIND 00003B35 F 24 388j 444= ONLINEFIND 00003B87 F 24 531j 565= ONLINEFIND 00003BD3 F 24 645j 688= ONPLMERGE 00003006 F 15 19j 32= ONPLSTART 00003003 F 0 40a F 15 17= *ONVMCLOCKS 00000050 F 6 301= OPENERRTAB 00003085 F 16 90a 100= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 32 OPLSTART 00003005 F 0 41a F 15 5j 30= OPLVECTPC! 00000400 F 11 10= 54a *ORADDAFT 000000A2 F 9 1079= *ORATTACH 00000013 F 9 1001= *ORBKCACCT 00000051 F 9 1039= *ORBKUPACT 000000C1 F 9 1090= *ORBKUPDONE 000000C4 F 9 1096= *ORBKUPFIL 000000C2 F 9 1091= *ORBKUPVOL 000000C0 F 9 1089= *ORBUSYVOL 00000047 F 9 1034= *ORCANOPMSG 00000162 F 9 1201= *ORCAUTHDL 000000F2 F 9 1133= *ORCAUTHSL 000000F3 F 9 1134= *ORCHGAUTHL 000000E1 F 9 1121= *ORCLRPNUM 00000171 F 9 1205= *ORCPUSTOP 000001B1 F 9 1256= *ORCPUSTRT 000001B2 F 9 1257= *ORCREACCT 00000050 F 9 1038= *ORCREAUTHE 000000F0 F 9 1128= *ORCREAUTHL 000000E0 F 9 1118= *ORCVOLNAME 00000190 F 9 1222= *ORCVOLNEWO 00000193 F 9 1231= *ORCVOLPWD 00000191 F 9 1225= *ORCVOLSSN 00000192 F 9 1228= *ORCVOLTITLE 00000194 F 9 1234= *ORDELAFT 000000A3 F 9 1080= *ORDESACCT 00000060 F 9 1042= *ORDESAUTHE 000000F8 F 9 1129= *ORDESAUTHL 000000E8 F 9 1124= *ORDEVINFO 00000110 F 9 1150= *ORDISMOUNT 00000041 F 9 1016= *ORDISMTDRV 00000045 F 9 1027= *ORFORMAT 00000152 F 9 1186= *ORGAUTENS 000000FF F 9 1141= *ORGAUTHDL 000000FA F 9 1137= *ORGAUTHSL 000000FB F 9 1138= *ORGENOPMSG 00000160 F 9 1196= *ORGETAUTHL 000000E9 F 9 1125= *ORGETFP 000000C3 F 9 1092= *ORGETOPMSG 00000161 F 9 1199= *ORGETTRC 00000138 F 9 1165= *ORGOODBYE 00000011 F 9 997= *ORGSYSINFO 000001A0 F 9 1249= *ORGVOLNAME 00000198 F 9 1237= *ORGVOLNEWO 0000019B F 9 1243= *ORGVOLSSN 0000019A F 9 1240= *ORGVOLTITLE 0000019C F 9 1246= *ORHEADCHK 00000154 F 9 1190= *ORHELLO 00000010 F 9 995= *ORINHIBVOL 00000042 F 9 1019= *ORINITEND 000000D4 F 9 1111= *ORINITFMT 00000155 F 9 1192= *ORINITVOL 000000D0 F 9 1104= *ORLOGONP 00000012 F 9 999= *ORMAINTR 00000140 F 9 1175= *ORMAINTRSUB 00000142 F 9 1176= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 33 *ORMAINTW 00000150 F 9 1181= *ORMAPFP 000000C5 F 9 1100= *ORMOUNT 00000040 F 9 1014= *ORMOUNTMAI 000000B0 F 9 1084= *ORMOUNTVOL 00000046 F 9 1031= *ORPABORT 00000093 F 9 1070= *ORPALLOW 00000071 F 9 1046= *ORPEVICT 00000091 F 9 1067= *ORPGO 000001D1 F 9 1262= *ORPINFO 00000072 F 9 1049= *ORPINHIB 00000070 F 9 1045= *ORPRESET 00000074 F 9 1053= *ORPROCINFO 00000092 F 9 1069= *ORPSTOP 000001D0 F 9 1261= *ORPTERMIN 00000090 F 9 1066= *ORPUTFP 000000D3 F 9 1107= *ORPUTPFP 000000D5 F 9 1115= *ORPWARN 00000073 F 9 1051= *ORRCVRACT 000000D1 F 9 1105= *ORRCVRACTL 000000D6 F 9 1108= *ORRCVRFIL 000000D2 F 9 1106= *ORREADAFT 000000A0 F 9 1074= *ORREADCNT 00000101 F 9 1144= *ORREADIDX 000000A1 F 9 1077= *ORREADNVM 00000141 F 9 1178= *ORRESETDRV 00000156 F 9 1193= *ORRESETVM 00000014 F 9 1003= *ORRWCOUNTS 00000103 F 9 1146= *ORSECTRK 00000153 F 9 1188= *ORSESSINFO 00000092 F 9 1068= *ORSETCPU 000001B0 F 9 1253= *ORSETPNUM 00000170 F 9 1204= *ORSLEEP 00000030 F 9 1009= *ORSTOPDYNW 00000132 F 9 1163= *ORSTOPMON 00000131 F 9 1162= *ORSTOPTRC 00000130 F 9 1161= *ORSTOPXMON 00000133 F 9 1164= *ORSTRTBAT 00000180 F 9 1210= *ORSTRTDYNW 00000122 F 9 1156= *ORSTRTJOB 00000182 F 9 1216= *ORSTRTMON 00000121 F 9 1155= *ORSTRTSPLR 00000183 F 9 1218= *ORSTRTTERM 00000181 F 9 1214= *ORSTRTTRC 00000120 F 9 1153= *ORSTRTXMON 00000123 F 9 1157= *ORTADJUST 00000081 F 9 1058= *ORTAKEPAGS 000001C0 F 9 1259= *ORTIMPAR 00000082 F 9 1063= *ORTZONE 00000080 F 9 1056= *ORVANISH 00000020 F 9 1006= *ORVINFO 00000043 F 9 1022= *ORVOLHANDLE 000000B1 F 9 1085= *ORVOLINFO 00000044 F 9 1025= *ORWRITECNT 00000102 F 9 1145= *ORWRITENVM 00000151 F 9 1183= *OUTBUF 0000705D F 14 137= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 34 PACCTNAME 000070A1 F 14 156= F 19 504s 505s 512a 513a 777s 778s 783a 784a 1054s 1055s 1060a 1061a 1317s 1318s 1321a 1322a PACKIT 0000388C F 19 1697= 1702j *PAGEANDISP 00001560 F 4 145= *PAGEFIELD 00001C80 F 4 147= PAGENUMBER 00178804 F 24 203= 219s 232s PAGEPTR 00178807 F 19 1408= 1439s 1499 1547 PAKINITIAL 000034A0 F 19 148 267= PAKLOGON 000034A2 F 19 150 268= *PARAMM MACRO F 13 280= PARMERROR 0000310E F 16 79j 150= PASIGBITS 00003070 F 7 224= 226e PFADDR 00178802 F 25 53= 59s 69s PFALTBIT 00001C10 F 4 129= 131e *PFCNTL 00001A30 F 4 127= PFDIR1PLACE 0000700C F 14 117= F 15 63a F 19 88 257 378 393 PFDIR2PLACE 00007018 F 14 120= F 15 66a F 19 344 405 417 PFFREEPLACE 00007048 F 14 132= F 15 78a F 19 1637 PFMAJPLACE 00007030 F 14 126= F 15 72a F 19 1436 PFMAP 00000380 F 8 311= 312e PFMINPLACE 00007024 F 14 123= F 15 69a F 19 1308 1429 *PFNOREFVAL 00060000 F 4 131= PFPAGENUM 000028C0 F 4 133= F 25 66s *PFPTR 0012C000 F 4 124= PFREADPLACE 00007000 F 14 114= F 15 60a F 17 39 125 131 171 F 18 226 336 370 444 488 550 583 595 666 F 19 713 1023 1261 1272 F 20 74 169 269 277 *PFREFBIT 00001E10 F 4 130= PFROBIT 00001A10 F 4 128= 131e PFSECPLACE 0000703C F 14 129= F 15 75a F 20 205 217 252 265 *PFSIZE 00000100 F 4 135= PFSLOT 00000840 F 4 126= F 22 46 166s PGNUMFLD 00000140 F 6 52= 2364e PGNUMFLDMAJ 000000A0 F 6 53= 2466e PGNUMFLDMIN 000014A0 F 6 54= 2468e PHALT 00100000 F 10 338= 589e 597e 616e 617e 618e *PHPNAV 00000311 F 8 108= PHYSMEM F 22 4= 174 PLBDTRXDA 00000018 F 6 838= F 17 130 *PLCYLPPCK 00000012 F 6 835= *PLDA 00000000 F 6 814= *PLFLAGS 00000004 F 6 822= *PLFORMNEW 00002E10 F 6 824= *PLFORMRFRB 00002C10 F 6 825= *PLFRMTRID 00000005 F 6 827= *PLINIDATE 00000007 F 6 828= *PLINITSCANS 00000009 F 6 829= *PLMAKER 00000000 F 6 818= PLMODESN 00000021 F 6 844= 845e *PLMODESNL 0000004C F 6 845= *PLNODRVID 00003010 F 6 823= *PLSDFREV 0000001F F 6 842= *PLSDPID 0000001B F 6 841= *PLSDVID 00000019 F 6 840= *PLSECPTRK 00000010 F 6 833= *PLSERIAL 00000000 F 6 817= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 35 *PLSERNO 00000001 F 6 819= *PLSIZE 00000013 F 6 836= *PLTRKPCYL 00000011 F 6 834= PML 00003A69 F 24 73= 79a PMLNEXT 7C400000 F 24 76= 236s 256s PMLPAGE 02000000 F 24 74= 234s PMLPMVALUE 00000001 F 24 77= 237s 326 331 *PNBOOTLOC 00000084 F 4 155= *PNCIX 00000086 F 7 235= *PNCPUPAGE 00000081 F 7 218= PNDBDESC 00000010 F 14 101= F 24 220 239 257 325 330 349 455 481 576 598 694 720 PNHEADPAGE 00000087 F 7 238= F 8 312e *PNINITPAGE 00000088 F 7 242= *PNPAGEZERO 00000080 F 4 153= *PNPPLWNDO 000000FB F 7 246= *PNUSERMEM 000000FC F 7 250= *PNWNDO1 00000082 F 7 221= *PNWNDO12 00000041 F 7 226= PNWNDO2 00000083 F 7 225= 226e *PNWNDO3 00000084 F 7 229= *PNWNDO4 00000085 F 7 232= POPMIN 00178804 F 18 414= 493 *PORTALWRIT 0000008B F 5 1076= *PORTBOF 00003010 F 5 1017= *PORTBREAK 00000087 F 5 1068= *PORTBRK 00003610 F 5 1020= *PORTCD 00003A10 F 5 1022= *PORTCHKPAR 00003810 F 5 1085= *PORTCIRATE 00000081 F 5 1052= *PORTCLRAIN 0000008C F 5 1078= *PORTCORATE 00000082 F 5 1053= *PORTCRALL 0000001F F 5 1103= PORTCRCXON 00003A10 F 5 1100= 1103e *PORTCRESET 0000008E F 5 1097= PORTCRFBR 00003610 F 5 1098= 1103e 1104e PORTCRFI 00003E10 F 5 1102= 1103e PORTCRFO 00003C10 F 5 1101= 1103e PORTCRFS 00003810 F 5 1099= 1103e 1104e *PORTCRINIT 00000018 F 5 1104= *PORTCS 00003E10 F 5 1024= *PORTCSTAT 00000083 F 5 1056= *PORTCSTAT2 0000008D F 5 1080= *PORTCZAP 0000008F F 5 1106= *PORTDSR 00003C10 F 5 1023= *PORTDWELL 00000086 F 5 1066= *PORTECHOOF 00000089 F 5 1072= *PORTECHOON 00000088 F 5 1070= *PORTEVENP 00000002 F 5 1093= *PORTFBRK 00003410 F 5 1019= *PORTFFE 00003210 F 5 1018= *PORTFLUSHI 00000085 F 5 1064= *PORTFLUSHO 00000084 F 5 1062= *PORTHIBIT 00000001 F 5 1092= *PORTIERR 00000091 F 5 1114= *PORTLAST 00003010 F 5 1013= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 36 *PORTNOPAR 00000000 F 5 1091= *PORTODDP 00000003 F 5 1094= *PORTPARITY 00003A20 F 5 1087= *PORTPCINIT 00000090 F 5 1111= *PORTRI 00003810 F 5 1021= *PORTSBRK 00003410 F 5 1083= *PORTSCD 00003210 F 5 1058= *PORTSCTS 00003010 F 5 1081= *PORTSDTR 00003410 F 5 1059= *PORTSRDE 00003610 F 5 1084= *PORTSRI 00003010 F 5 1057= *PORTSRTS 00003810 F 5 1060= *PORTSSTOP2 00003E10 F 5 1095= *PORTSTAT 00003210 F 5 1014= *PORTSXOF 00003210 F 5 1082= *PORTWRITIN 0000008A F 5 1074= PPLWINDOW 0001EC00 F 7 245= 246e *PPU3WRD 00000008 F 5 589= *PPUABORT 00000001 F 5 572= *PPUADDR1 00000005 F 5 582= *PPUADDR2 00000007 F 5 587= *PPUAMEMA 00001560 F 5 584= *PPUASLOT 00000840 F 5 583= *PPUCABLED 00000000 F 5 542= *PPUCCOUNT 000022F0 F 5 580= *PPUCHAN 00003020 F 5 539= *PPUCHANS 00000004 F 5 540= *PPUCHANS1 00000002 F 5 573= *PPUCHANS2 00000003 F 5 574= *PPUCLAST 00002010 F 5 579= *PPUCNT1 00000004 F 5 578= *PPUCNT2 00000006 F 5 586= *PPUIBCNR 00003210 F 5 552= *PPUIBTR 00002010 F 5 564= *PPUICIA 00002810 F 5 559= *PPUICONF 00002A10 F 5 558= *PPUIDMAD 00003E10 F 5 545= *PPUIDMAE 00003A10 F 5 547= *PPUIDMANB 00003010 F 5 553= *PPUIDPPE 00002410 F 5 562= *PPUIINTC 00003810 F 5 548= *PPUIINTP 00003C10 F 5 546= *PPUIINTR 00002C10 F 5 556= *PPUILAST 00003410 F 5 551= *PPUIMPE 00002E10 F 5 555= *PPUINTSTAT 00000001 F 5 544= *PPUIPIA 00002610 F 5 561= *PPUIROLL 00003610 F 5 550= *PPUITOUT 00001E10 F 5 569= *PPUIXTRA 00002210 F 5 563= *PPURESET 00000000 F 5 571= *PPUSCSTAT 00000003 F 5 576= *PPUSSSTAT 00000002 F 5 575= *PREPOUTM MACRO F 13 251= PREVIOUS 00178808 F 20 96= 117s 160 171s 179 PRINTTREE 000033B2 F 18 172 765= 766 777= 830 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 37 PRIORBLOCK 00178801 F 18 524= 570s 579 PRIVWORD 00170801 F 6 1595= F 19 169s 170s PROG MACRO F 0 72 F 13 82= F 15 4 F 18 20 F 19 1416 F 21 22 F 22 29 F 24 68 *PROGCHECK 00003C48 F 0 73= PROGPAGES 00000004 F 14 86= 88e PROGPLACE 00003000 F 14 85= 88e 90e 90e 90e PROGRAM! 00003C48 F 0 72a 81e 81= F 13 72e 72e 72a 72= F 14 90= F 15 4a F 18 17e 17= 20a F 19 1414e 1414= 1416a F 21 19= 19e 22a F 22 14e 14= 29a F 24 43= 43e 68a PROMPT 00003068 F 16 57a 75= PSECT! 00000001 F 0 72a 72a 72e 72e 72= 81e 81e 81a 81a 81= F 13 72= F 14 90= F 15 4= 4a 4a 4e 4e F 18 17e 17e 17a 17= 17a 20a 20= 20e 20e 20a F 19 1414e 1414= 1414a 1414e 1414a 1416a 1416e 1416e 1416a 1416= F 21 19a 19e 19= 19a 19e 22a 22a 22e 22e 22= F 22 14e 14a 14= 14a 14e 29a 29a 29e 29= 29e F 24 43e 43e 43a 43a 43= 68= 68e 68e 68a 68a *PSRBCDOTRP 00002C10 F 4 90= *PSRCARRY 00000004 F 4 100= PSRCARRYB 00003A10 F 4 96= 100e *PSRCONDB 00003C20 F 4 97= *PSRFIXATRP 00003010 F 4 91= *PSRFLTATRP 00003210 F 4 92= PSRMODIF 00000010 F 4 99= F 18 50 52 F 19 1696 F 20 327 329 F 24 316 320 339 342 389 392 446 448 532 535 567 569 729 731 PSRMODIFB 00003610 F 4 94= 99e PSROVERFB 00003810 F 4 95= 101e *PSROVERFLOW 00000008 F 4 101= *PSRUNDETRP 00003410 F 4 93= PURGESDV 0000005A F 6 1837= F 19 204 328 PUSHMIN 00178804 F 18 413= 414e 437s *PWRUPADDR 00000000 F 4 12= *RAFCHARIDX 000028C0 F 6 2470= RAFJUMP 00003627 F 19 615 798= RAFLOSTD 000035EE F 19 724j 731= 741j *RAFMAJINDX 000000A0 F 6 2466= *RAFMININDX 000014A0 F 6 2468= RAFTEMPTY 00000000 F 6 1825= F 19 971 RAFTLARGE 00000003 F 6 1828= F 19 639 996 RAFTSMALL 00000002 F 6 1827= F 19 637 987 1223 RAFTTINY 00000001 F 6 1826= F 19 978 RAFTYPEDONE 00003694 F 19 933j 965= RAFTYPELOOP 00003676 F 19 927= 962j RAFTYPENEXT 00003693 F 19 949j 953j 961= READERROR 000031E7 F 17 42a 87= READERROR 00003210 F 17 128a 134a 151= READERROR 0000321C F 17 174a 182= READERROR 000032DA F 18 339a 384= READERROR 0000331B F 18 447a 499= READERROR 00003360 F 18 586a 603= READERROR 00003898 F 19 91a 381a 408a 1715= READERROR 00003996 F 20 220a 272a 283= READFBI 00007001 F 14 115= F 17 40a 45a 126a 132a 172a F 18 220a 220a 221a 227a 337a 371a 445a 489a 551a 554 557a 584a 587a 592a 596a 667a F 19 714a 1024a 1262a 1265a 1272a 1278a F 20 45a 45a 50a 73a 74a 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 38 129a 129a 159a 168a 169a 172a 270a 277a READPLACE 00004800 F 14 103= F 15 59a F 17 130 135a 145a 175 F 18 220a 343 353s 451 462s 672a 674a 692 694 F 19 719 1029 F 20 45a 59a 129a 136s 274s 276s READSECBLK 0000393F F 20 18 194= 195 200= 230 REALCODE 00003C36 F 26 43j 45= REALIZEDIR 00003402 F 19 31 51= 52 73= 354 REHASHIDX 00003998 F 20 30 287= 288 296= 346 RELBLK 00178803 F 18 412= 440s 470s 482 RELBLOCK 00178803 F 18 526= 543s 559 561 568s *RELESEFLAG 0000031E F 8 165= RESEARCH 00003BBD F 24 654= 660j RESTOREFSN MACRO F 14 31= F 18 531 746 F 19 871 F 24 411 468 *RESTRWORD 00170800 F 6 1593= RETARDPTR 00003553 F 19 467j 475j 498= RETURN 00003C1E F 25 22j 34= *REVBACKUP 00000000 F 6 13= *REVMNTVOL 18000000 F 6 10= REVVOLLRAF 10000000 F 6 11= F 17 176 *REVVOLUME 08000000 F 6 9= RIGHTONE 00003BDB F 24 691j 697= ROOTDA 00178803 F 19 554= 575s 710 732 ROOTSRCH 000036EB F 19 1091= 1102j *ROUNDS 00000003 F 8 205= *RTYPEBIN 00000002 F 6 2346= *RTYPECOMM 00000005 F 6 2349= *RTYPEFORM 00000003 F 6 2347= *RTYPELABEL 00000004 F 6 2348= *RTYPETEXT 00000000 F 6 2344= *RTYPETEXTF 00000001 F 6 2345= RUNDATE 0000709E F 14 150= F 15 38s F 18 220 F 19 138 311 1213 1615 F 20 45 101 129 225 *SAFBLKNUM 00000140 F 6 2364= *SAFCHARNUM 000028C0 F 6 2365= SAFCHECKREL 000037BC F 19 1355j 1363= SAFLOOP 00003331 F 18 546= 574j SAFNEXT 00003345 F 18 562j 567= SAFRAFDONE 00003780 F 19 1245j 1298= SAFRAFLOOP 00003750 F 19 1242= 1295j SAFS1NEXT 000037C4 F 19 1360j 1365j 1368j 1373= SAFSEXIT 000037C5 F 19 1349j 1377= SAFSRCH 000037A9 F 19 1243j 1340= SAFSRCH1 000037AB F 19 1343= 1374j SAMEPAGE 00003ACC F 24 227j 246= SAMEPAGE 00003AF1 F 24 329j 332= SAVEPM 00178805 F 24 205= 221s 258 SAVER1 00178801 F 16 8= 116s 120 SAVER2R3 00178804 F 19 555= 565s 769 SAVER2R3 0017880A F 19 820= 828s 1124 SAVER2R3 00178803 F 19 1575= 1580s 1598 SAVER2R3 00178806 F 19 1664= 1671s 1706 SAVER2R3 00178803 F 21 49= 54s 94 SAVER2R3 00178801 F 23 32= 37s 72 SAVER2R3 00178804 F 24 103= 110s 170 SAVER2R3 00178802 F 24 307= 312s 358 SAVER2R3 00178802 F 24 639= 643s 753 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 39 SAVER3R4 00178801 F 23 101= 105s 112 SAVER4 00178803 F 23 33= 38s 73 SAVER4 00178806 F 24 104= 111s 171 SCANVOLUME 000031BE F 15 82 F 17 5 18= 19 26= SEARCHDONE 00003811 F 19 1484j 1514= SEARCHLOOP 00003631 F 19 838= 852j 854j 859j 865j SEARCHLOOP 000037FA F 19 1478= 1503j SEARCHLOOP 00003B17 F 24 403= 423j SEARCHNEXT 00003810 F 19 1490j 1493j 1495j 1502= SECADTBTM 00000010 F 6 1354= F 20 112a SECADTCNT 00000018 F 6 1355= F 20 114a SECADTNUM 00000008 F 6 1322= 1353 1354 1355 F 20 104 105 185 SECADTTOP 00000008 F 6 1353= F 20 110a *SECAFTENTS 0000002B F 6 1360= *SECAFTPTR 00000129 F 6 1362= *SECAFTSIZ 00000029 F 6 1358= *SECBKUPE 00000240 F 6 1396= *SECBUDATE 00000001 F 6 1348= SECDA 00007099 F 14 145= F 16 16s F 18 307 309s F 20 201 204 213 216 240 243s 254 257s 273 275 *SECDATCOR 0000022F F 6 1372= *SECDATDRFT 0000022E F 6 1370= *SECDATERR 0000022D F 6 1369= SECFBI 0000703D F 14 130= F 20 206a 218a 225a 225a 250a 252a 263a 265a SECIDXENTS 0000002A F 6 1359= F 20 36s 61s SECIDXPTR 0000002C F 6 1361= F 20 37a 48s SECIDXSIZ 00000028 F 6 1357= F 20 35s 49s *SECLASTDT 00000229 F 6 1367= *SECLASTSL 0000022B F 6 1368= *SECMNTDAT 00000002 F 6 1350= *SECNUMACC 00000235 F 6 1385= *SECNUMCPU 00000233 F 6 1383= *SECNUMCTC 0000023A F 6 1390= *SECNUMCTU 0000023B F 6 1391= *SECNUMDISK 00000238 F 6 1388= *SECNUMLPC 00000239 F 6 1389= *SECNUMMCU 00000231 F 6 1381= *SECNUMMSC 00000237 F 6 1387= *SECNUMMTC 0000023C F 6 1392= *SECNUMMTU 0000023D F 6 1393= *SECNUMPAGE 00000232 F 6 1382= *SECNUMPORT 00000236 F 6 1386= *SECNUMPPU 00000234 F 6 1384= *SECNUMVTC 0000023E F 6 1394= *SECNUMVTU 0000023F F 6 1395= SECPLACE 00005C00 F 14 108= F 15 74a F 20 35s 36s 37a 48s 49s 61s 110a 112a 114a 225a *SECSUN 00000000 F 6 1347= *SECTZONE 00000226 F 6 1364= SEENDONE 000035FF F 19 589j 649j 760= *SELFDATE1 80000001 F 6 866= *SELFDATE2 80000002 F 6 867= *SELFRUNNUM 04000000 F 6 864= *SELFVOLSIZ 80000000 F 6 865= SERIALNO 00178801 F 24 379= 385s 404 413 464 469 485 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 40 SERNUM 00178804 F 19 813= 875s 888 930 1094 SERNUM 000070A5 F 19 1415= 1473s 1481 1522 SERNUM 00178801 F 19 1609= 1614s 1620 SETFILESIZE 0000383D F 19 480 1569= 1570 1578= 1602 SETSPACE 00003AD6 F 24 163 265= 266 280= 288 399 542 649 SHALT 00130000 F 10 339= 478e 479e 480e 481e 482e 483e 484e 487e 491e 505e 509e 510e 513e 516e 517e 518e 519e 520e 521e 524e 525e 526e 529e 530e 531e 532e 535e 536e 537e 540e 541e 542e 545e 546e 547e 548e 549e 552e 553e 554e 555e 556e 557e 558e 559e 560e 561e 564e 565e 568e 569e 571e 572e 574e 587e 588e 590e 591e 600e 601e 602e 605e 608e 609e 610e 613e 620e 621e 623e 626e 627e 628e 631e 634e 637e 638e 641e 642e 643e 644e 645e 648e 651e 652e 653e 654e 655e 656e 657e 659e 660e 661e 662e 665e 668e 669e 670e 673e 674e 677e 678e 681e 682e 683e 684e 685e 686e 687e 688e 689e 690e 691e 692e 693e 694e 697e 698e 699e 702e 703e 706e 707e 708e 709e 710e 711e 712e 715e 718e 719e 720e 723e 724e 725e 728e 731e 732e 733e 734e 735e 744e 747e 750e 753e 754e 755e 756e 757e 758e 761e 762e 766e 767e 770e 777e 779e 793e 794e SHARE 000030F6 F 16 87j 115= *SHLACCT 0016C801 F 6 1704= *SHLACCTP 0016C803 F 6 1705= *SHLACCTSYS 0016C806 F 6 1709= *SHLACTOPT 0008C220 F 6 1697= *SHLACTPRIV 0008C630 F 6 1698= *SHLACTPRVM 00000002 F 6 1701= *SHLACTPRVR 00000001 F 6 1700= *SHLACTPRVW 00000000 F 6 1699= *SHLACTPRVX 00000003 F 6 1702= *SHLACTPW 0008C210 F 6 1695= *SHLACTSYS 0008C410 F 6 1696= *SHLDISK 0008D180 F 6 1694= SHLDSKFLG 0008C010 F 6 1693= F 19 163s SHLDSKFLGB 00000010 F 6 1691= 1693e F 19 863s 1157s 1357s *SHLENTLEN 00000004 F 6 1706= *SHLENTPLEN 00000006 F 6 1708= *SHLENTRYF 0008CC10 F 6 1703= *SHLENTSLEN 00000007 F 6 1710= SHLFLAGW 0016C800 F 6 1688= 1693e 1694e 1695e 1696e 1697e 1698e 1703e 1706e 1708e 1710e *SHLPWORD 0016C804 F 6 1707= SIZELOG2 0000000C F 8 203= 204e SLOTOK 00003A23 F 22 135j 144= SLOTPAGES 000070AD F 22 25= 89s 127s 156s 164 168s *SLTTCPU 00000002 F 5 69= *SLTTMEM 00000001 F 5 68= *SLTTPPU 00000003 F 5 70= *SLTTSSU 00000004 F 5 71= *SLTTUNK 00000000 F 5 67= SMALLRAF 000035B9 F 19 621j 657= 800a *SMUPCC 00001840 F 5 127= *SMUPCMND 00000C10 F 5 126= *SMUPCRCEL 00000002 F 5 135= SPACELOOP 00003A8D F 24 151= 161j SPACELOOP 00003B15 F 24 398= 431j SPACELOOP 00003B75 F 24 541= 552j SPACELOOP 00003BB8 F 24 648= 670j SPACENO 00178803 F 24 380= 393s 397 429s 438 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 41 SPACENO 00178802 F 24 523= 536s 540 550s 559 SPACENO 00178801 F 24 638= 647s 665s 682 SPACENUMBER 00178802 F 24 201= 210s 217 230 SPACEPFS 000070B1 F 24 58= 218s 231 283 318 SPACES 00178802 F 24 100= 146s 160 SPACESIZE 0000AAAA F 24 56= 142 143 153 317 391 439 534 560 683 SRAFOK 000035C7 F 19 660j 674= SRCHLOOP 00003392 F 18 701= 709j *SSUALARM 00003610 F 5 447= *SSUBOOTFP 00000010 F 5 469= *SSUBREAKB 00002E10 F 5 426= *SSUCHARIN 0000000D F 5 451= *SSUCHAROUT 00000008 F 5 425= *SSUCLOCKL 00000002 F 5 415= *SSUCLOCKU 00000001 F 5 414= *SSUCLOKAD 00000017 F 5 505= *SSUCOFFSET 00001400 F 5 409= *SSUCPUBUSE 00000007 F 5 422= *SSUCPUERR 00000006 F 5 421= *SSUCPUHALT 00000005 F 5 420= *SSUDECCLK 00000004 F 5 417= *SSUDISP03 0000000A F 5 443= *SSUDISP47 0000000B F 5 444= *SSUDISP89 0000000C F 5 445= *SSUDWELLB 00002C10 F 5 427= *SSUERRLOG 00000012 F 5 485= *SSUFENCE 00000009 F 5 433= *SSUFPSWCH 00000011 F 5 472= *SSUHORN 00003410 F 5 446= *SSUIMCI 00003010 F 5 460= *SSUIMCLKSTR 00003610 F 5 463= *SSUIMCO 00003210 F 5 461= *SSUIMERR 00003810 F 5 464= *SSUIMFPS 00003C10 F 5 466= *SSUIMNVM 00003A10 F 5 465= *SSUIMTICK 00003E10 F 5 467= *SSUINCCLK 00000003 F 5 416= *SSUINTMASK 0000000F F 5 458= *SSUMAXCC 000000FF F 5 428= *SSUMISCST 0000000E F 5 453= *SSUMSBC 00003C10 F 5 455= *SSUMSLFP 00003E10 F 5 454= *SSUMSNVM 00003A10 F 5 456= *SSUNVM 00001800 F 5 509= *SSUPF 00000310 F 8 107= *SSURFP 00000010 F 5 474= *SSUROFFSET 00001000 F 5 407= SSUSW1 00003810 F 5 479= 483e SSUSW2 00003A10 F 5 480= 483e SSUSW3 00003C10 F 5 481= 483e SSUSW4 00003E10 F 5 482= 483e *SSUSWITCH 00003840 F 5 483= *SSUSWMAINT 00003410 F 5 477= STARTADDR 00178804 F 24 381= 396s 405 422s 428s 451s 458 STARTADDR 00178803 F 24 524= 539s 545 572s 579 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 42 STARTOVER 0000389B F 20 17= 31j STARTOVER 00003A07 F 22 113= 159j STARTPATERN 00003896 F 19 1675 1710= *STOPB1003 00021003 F 10 375= *STOPB2XXX 00022000 F 10 376= *STOPB4025 00024025 F 10 422= *STOPB4031 00024031 F 10 426= *STOPB600X 00026000 F 10 465= *STOPB7008 00027008 F 10 788= *STOPD1253 00041253 F 10 768= *STOPF10D4 000610D4 F 10 619= *STOPF10D7 000610D7 F 10 622= *STOPH0700 00080700 F 10 594= *STOPP0200 00100200 F 10 597= *STOPP10D1 001010D1 F 10 616= STOPPROG 00003C3A F 26 41j 53= *STOPS001A 0013001A F 10 487= *STOPS0064 00130064 F 10 531= *STOPS0065 00130065 F 10 532= *STORE 00000000 F 4 14= STOREPTRS 000037D6 F 19 1430j 1438= *STPDUBL 00000C10 F 4 29= *STPNLAST 00000810 F 4 27= *STPVALUE 00000A10 F 4 28= SUBSBADDY 00000000 F 6 1229= 1232e *SUBSECNT 00000200 F 6 1233= SUBSLNTH 00000002 F 6 1232= 1233e *SUBSSUB 00000001 F 6 1231= SVHLT 002A0000 F 10 355= 774e 799e 800e 801e 802e 803e 804e 805e 806e 807e 808e 809e 810e 811e 812e 813e 814e *SYSACCT 00000000 F 12 93= *SYSPROJ 00000002 F 12 94= SYSTEMERROR 00003C3C F 24 135 765 F 26 5 61= 62 75= *SYSTNUM 00002100 F 6 1146= *TALPH 00003C10 F 11 48= *TBLNK 00003610 F 11 51= *TDELM 00003A10 F 11 49= TEMP 00178802 F 18 411= 441s 448 TEMPR2R3 00178803 F 19 446= 499s 506 509 517 526 *TEOL 00003810 F 11 50= *TERR 00000000 F 11 52= THISFSN 00178804 F 18 527= 532s 555 *TIMLIM 00170802 F 6 1608= *TIMUSD 00170803 F 6 1609= TINYRAF 000035B1 F 19 646= 799a TITLELEN 00000028 F 19 173 266= *TNUM 00003E10 F 11 47= TOOMANY 00003A56 F 23 58j 77= TPHDR 0000032A F 8 194= 202a *TPHDRBF 0000031F F 8 193= *TPHDRDATE 00000003 F 8 197= *TPHDRDCKS 00000009 F 8 199= *TPHDRHCKS 0000000A F 8 200= *TPHDRIND 00000002 F 8 196= *TPHDRLNTH 0000000B F 8 192= *TPHDRTAG 00000000 F 8 195= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 43 TREEOPS F 18 4= 834 TRYNEXT 00003949 F 20 208a 212= TXNOMEM 00003A1B F 22 138a 142= TXRAF 00003A82 F 24 123a 138= TXTOOBIG 00003AA3 F 24 178a 182= TXTOOMANY 00003A58 F 23 79a 82= UD 00000000 F 6 2162= 2205 2210e 2238e *UD1LFDE 000003D8 F 6 2234= UD1LINDX 000003F8 F 6 2256= F 19 98a 118a 422a UD2FDECNT 0000002A F 6 2212= 2238e F 19 292 UD2LFDE 000003D8 F 6 2238= F 19 410a UDACCT 00000000 F 6 2163= F 19 144s 252 UDAUTHLIST 00000040 F 6 2203= F 19 158s *UDBYE 0000001A F 6 2180= *UDBYEAC 00000015 F 6 2177= *UDBYEACP 00000017 F 6 2178= *UDBYEACPW 00000018 F 6 2179= *UDBYEEXT 0000001C F 6 2181= *UDBYEPW 0000001D F 6 2182= *UDENCRFLG 00000010 F 6 2186= UDFDECNT 00000026 F 6 2211= 2234e F 19 275 UDFDLIST 00000060 F 6 2207= 2210e 2234e 2256e F 19 95a 199a 218a 385a 398a UDFDSIZE 000003A0 F 6 2210= 2211e 2252e UDHPR 00000010 F 6 2174= F 19 149s UDHPRAC 0000000B F 6 2171= F 19 145s UDHPRACP 0000000D F 6 2172= F 19 147s *UDHPRACPW 0000000E F 6 2173= UDHPREXT 00000012 F 6 2175= F 19 151s *UDHPRPW 00000013 F 6 2176= UDINDCNT 000000B9 F 6 2252= 2256e UDINDXADR 0008D183 F 6 2247= F 19 103 227s 401 404 *UDINDXDA2 0016C804 F 6 2248= UDINDXDAW 0016C803 F 6 2245= F 19 100 UDINDXEXT 0016C802 F 6 2244= F 19 223s UDINDXLEN 00000005 F 6 2251= 2252e 2256e F 19 107 112 115 119 228 420 UDINDXNAM 0016C800 F 6 2243= F 19 221s UDINDXNUM 0016C00C F 6 2246= F 19 225s UDINDXPROT 00000834 F 6 2242= 2251e UDLFDE 000003E8 F 6 2223= F 18 674a F 19 386a UDLIMITS 0000002B F 6 2198= F 19 168a UDPASS 00000003 F 6 2165= F 19 154s *UDPRIORITY 00000029 F 6 2189= *UDPRIVS 0000002A F 6 2190= UDPROJ 00000002 F 6 2164= F 19 146s 254 UDSERNO 00000020 F 6 2187= F 19 153s *UDSFLAGS 0000001F F 6 2183= UDSHLLIST 0000003C F 6 2202= F 19 160s 162a UDSHLSIZE 00000004 F 6 1713= 1857 1858 2202 UDTITLE 0000004E F 6 2206= F 19 171a UDTITLEL 00000048 F 6 2204= 2205 2206 UDTYPE 0008001A F 6 2169= F 19 93 167s 383 UDWORDB 0000000A F 6 2168= 2169e *UINTARTHOV 00000010 F 9 67= *UINTATTACH 00000075 F 9 94= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 44 *UINTBCDO 0000000F F 9 66= *UINTBREAK 00000020 F 9 79= *UINTBRKINS 00000079 F 9 95= *UINTCEM 00000008 F 9 59= *UINTCHAIN 0000007B F 9 97= *UINTCKB 0000000C F 9 63= *UINTDIV0 00000011 F 9 68= *UINTFIXOVN 00000013 F 9 70= *UINTFIXOVP 00000012 F 9 69= *UINTFLTOVN 00000014 F 9 71= *UINTFLTOVP 00000016 F 9 73= *UINTFLTUFN 00000015 F 9 72= *UINTFLTUFP 00000017 F 9 74= *UINTGUNIT 00000028 F 9 87= *UINTIMI 00000006 F 9 57= *UINTIMS 00000003 F 9 54= *UINTINST 00000018 F 9 76= *UINTIONOV 0000000A F 9 61= *UINTLOGIN 0000007F F 9 107= *UINTLOGOFF 0000007A F 9 96= *UINTMPV 00000074 F 9 93= *UINTMSG 00000026 F 9 85= *UINTNEPATH 00000023 F 9 82= *UINTNETERM 00000022 F 9 81= *UINTOPRQ 0000007D F 9 99= *UINTOPRQA 00000027 F 9 86= *UINTOPRQL 00000001 F 9 100= *UINTOPRQP 00000005 F 9 104= *UINTOPRQT 00000002 F 9 101= *UINTOPRQUL 00000004 F 9 103= *UINTOPRQW 00000003 F 9 102= *UINTPARL 00000009 F 9 60= *UINTPTERM 0000007E F 9 105= *UINTSTKO 0000000E F 9 65= *UINTSTNG 0000000D F 9 64= *UINTTDISC 00000024 F 9 83= *UINTTIMCUT 00000021 F 9 80= *UINTTIMINT 00000025 F 9 84= *UINTTRACEI 0000001F F 9 77= *UINTUMODE 00000002 F 9 53= *UINTUMP 00000004 F 9 55= *UINTUNDEF 00000018 F 9 75= *UINTUOP 00000001 F 9 52= *UINTUOP2 0000000B F 9 62= *UINTVAR 0000007C F 9 98= *UINTVMFDE 00000071 F 9 90= *UINTVMFIDS 00000072 F 9 91= *UINTVMFISR 00000073 F 9 92= *UINTVMFPE 00000070 F 9 89= *UINTXTI 00000007 F 9 58= *UMEMLOCK 0001F00F F 7 257= *UMEMPSA 0001F00E F 7 256= *UMEMSIZE 0000000A F 7 252= *UMEMXTRA 0001F00D F 7 254= UNACCDONE 0000372B F 19 1201j 1212= UNACCLOOP 00003720 F 19 1195= 1206j 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 45 UNACCLOOP 00003815 F 19 1519= 1550j UNACCNEXT 00003832 F 19 1529j 1532j 1549= *UPR15 000000F0 F 4 38= *URACCTCPUL 000000A8 F 9 849= *URACCTWCL 000000A9 F 9 852= *URBLKLIM 000000B2 F 9 863= *URBLKUSED 000000B3 F 9 866= *URBYE 00000090 F 9 836= *URCANOPMSG 00000151 F 9 945= *URCERPROC 00000089 F 9 830= *URCLRDEBUG 00000086 F 9 822= *URCLRTIMIN 00000142 F 9 939= *URCNAME 00000180 F 9 964= *URCPTIMEG 000000A1 F 9 843= *URCPTIMES 000000A0 F 9 840= *URDELAY 00000140 F 9 933= *URDELAYR 00000143 F 9 934= *URDROPPRIV 00000182 F 9 968= URERRORGET 00000028 F 9 751= F 26 78 *UREXCLPAGE 000000C2 F 9 874= *URFORCEP 000000C4 F 9 875= URFREELUN 00000122 F 9 922= F 24 117 *URFREEPAGE 000000C0 F 9 869= *URFSERNO 00000061 F 9 782= *URGENOPMSG 00000150 F 9 943= *URGETMSG 00000161 F 9 951= *URGETMSGA 00000162 F 9 953= *URGETPNUM 00000170 F 9 960= *URGETSSN 00000053 F 9 762= *URGETVERS 00000054 F 9 764= *URGIVELUN 00000123 F 9 924= *URGIVEUNIT 00000190 F 9 971= *URGRUNLUN 00000120 F 9 918= *URINTRGO 0000008A F 9 833= *URINTRTN 00000082 F 9 818= *URLEA 00000130 F 9 928= *URLEA2 00000131 F 9 929= *URLOADFACT 00000051 F 9 756= *URLUNITS 00000057 F 9 772= *URMAPINAS 00000110 F 9 915= *URMAYIRUN 00000055 F 9 766= *URNEXTLUN 00000121 F 9 920= *URPACKFI 00000101 F 9 910= *URPACKFS 00000102 F 9 911= *URPACKI 00000100 F 9 907= *URPAGETYPE 000000C1 F 9 872= *URPAKTIME 0000006C F 9 799= *URPAKTIML 0000006D F 9 800= *URPDSTRY 000000D2 F 9 884= *URPDSTRYA 000000D3 F 9 887= *URPDSTRYAP 000000D6 F 9 890= *URPDSTRYP 000000D5 F 9 889= *URPGETREG 000000F0 F 9 903= *URPGO 000000D0 F 9 881= *URPROCINFO 00000052 F 9 760= *URPROCLVL 00000058 F 9 774= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 46 *URPSETREG 000000E0 F 9 899= *URPSTEP 000000D4 F 9 882= *URRAWDATE 00000060 F 9 781= *URRCVUNIT 00000191 F 9 974= *URSCINTARM 00000081 F 9 816= *URSCMSGA 00000164 F 9 956= *URSENDERR 00000087 F 9 826= *URSENDMSG 00000160 F 9 948= *URSERPROC 00000088 F 9 829= *URSESBLKG 000000B1 F 9 860= *URSESBLKS 000000B0 F 9 856= *URSESSINFO 00000052 F 9 759= *URSESWCLK 000000A7 F 9 846= *URSETDEBUG 00000085 F 9 821= *URSETLGFSES 00000181 F 9 966= *URSETTIMIN 00000141 F 9 937= *URSSINTARM 00000080 F 9 815= *URSSMSGA 00000163 F 9 955= *URSTOP 00000070 F 9 803= *URSTOPA 00000078 F 9 808= *URSTOPAR 0000007A F 9 810= *URSTOPAZ 00000079 F 9 809= URSTOPAZR 0000007B F 9 811= F 26 54 *URSTOPI 00000074 F 9 807= *URSTOPIA 0000007C F 9 812= *URSTOPR 00000072 F 9 805= *URSTOPZ 00000071 F 9 804= *URSTOPZR 00000073 F 9 806= *URTRAFFIC 00000050 F 9 755= *URUDRPINFO 00000056 F 9 769= *URUGDATE 00000064 F 9 793= *URULDATE 00000065 F 9 794= *URUNLDATE 00000063 F 9 788= *URUNRDATE 00000062 F 9 787= *URVARGET 00000020 F 9 742= *URVARGETS 00000021 F 9 747= *URVARSET 00000010 F 9 734= *URVARSETS 00000011 F 9 738= *URWRITEP 000000C5 F 9 876= USERMEM 0001F000 F 7 249= 250e 252e *USERMSR 0000F000 F 4 83= VADDRESS 00178803 F 24 202= 222s 225 245 248s *VARAREA 0000032A F 8 216= VARIABLES! 000070B9 F 0 72e 72= 81a F 13 72= F 14 90e 90e 90a 90= F 15 4e 4= F 18 17a 20e 20= F 19 1414a 1416= 1416e F 21 19a 22= 22e F 22 14a 29e 29= F 24 43a 68e 68= VARPLACE 00004000 F 14 88= 90e VARS MACRO F 0 81 F 13 74= F 18 17 F 19 1414 F 21 19 F 22 14 F 24 43 *VCLOSEDISK 000013EC F 11 26= *VDISKCB 000013E4 F 11 18= VDISPLAY 000013E3 F 11 17= F 15 42 VDONEEXIT 000013F0 F 11 32= F 15 89 F 16 143 VERIFYCODE 000032E9 F 18 197 400 428= VERIFYDIR 000034FA F 19 34 357= 358 374= 429 VERIFYFAKE 0000362B F 19 472 806= 807 825= 1163 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 47 VERIFYFDES 00003535 F 19 388 412 432= 433 451= 534 VERIFYFILES 000033F1 F 15 84 F 19 4= 5 15 22= 1718 VERIFYMAJ 000032B6 F 18 191 316= 317 331= 395 VERIFYMIN 000032F0 F 18 422 431 437= VERIFYMSG 0000311F F 16 133a 157= VERIFYRAF 000032E2 F 18 192 398= 399 419= 510 VERIFYREAL 0000357D F 19 464 537= 539 562= 803 VERIFYSAF 00003323 F 18 190 513= 514 530= 610 *VERRLOGPT1 000013FA F 11 42= *VERRLOGPTR 000013EA F 11 24= VERSION 00003001 F 15 7= F 16 13a *VEXTRACPUS 000013FC F 11 44= *VFETCHFNM 000013F6 F 11 38= VFETCHITEM 000013F5 F 11 37= F 16 22 *VFETCHITMH 000013F8 F 11 40= VGETDATE 000013FB F 11 43= F 15 33 VIRTUALPAGE 00178802 F 21 48= 82s 84 *VLAVREV 0000000C F 6 1163= *VLBKUPE 00000040 F 6 1175= *VLCDATE 00000008 F 6 1158= *VLFLAGINV 00000210 F 6 1161= *VLFLAGNEWO 00000410 F 6 1162= *VLFLAGS 0000000B F 6 1160= VLSECB2DA 00000013 F 6 1171= F 20 276s VLSECBDA 00000012 F 6 1170= F 20 274s *VLSSN 00000000 F 6 1140= *VLSUBSDA 00000010 F 6 1168= *VLTITLE 00000020 F 6 1174= VLTITLELEN 00000080 F 6 1173= 1174 *VLVNAME 00000004 F 6 1149= *VLVPASSW 00000006 F 6 1152= VLVREV 0000000D F 6 1165= F 17 175 VMEMPF 000013E6 F 11 20= F 22 44 F 25 65 *VMEMSPACE 000013ED F 11 27= *VOLFIELD 00000080 F 6 39= VOLLABELDA 00000001 F 6 1137= F 17 170 F 20 268 277 277 VOLNORAFTYP 00007098 F 14 143= F 17 177s F 19 612 VOPENDISK 000013EB F 11 25= F 16 86 *VPF4SSU 000013E5 F 11 19= *VPFWNDO1 000013E8 F 11 22= *VPFWNDO2 000013E9 F 11 23= VPREPOUT 000013F9 F 11 41= F 16 12 27 29 32 35 38 41 44 47 50 53 56 92 124 131 151 F 18 782 793 803 F 19 511 782 1059 1320 F 26 37 VREAD 000013E0 F 11 14= F 17 37 123 129 169 F 18 334 442 548 581 664 F 19 86 376 403 711 1021 1259 F 20 203 215 267 VREADCHAR 000013F1 F 11 33= F 16 134 VREADLINE 000013F3 F 11 35= F 16 63 *VSCANOVER 000013F7 F 11 39= *VSLOTWRU 000013E7 F 11 21= *VSRCHDIR 000013E2 F 11 16= *VSRCHDIRSN 000013EE F 11 28= *VTDIOSIZE 0000C000 F 5 1168= VWRITE 000013E1 F 11 15= F 18 224 368 486 593 F 19 257 344 393 417 1272 1308 1555 1635 F 20 74 169 252 265 277 VWRITEADDR 00178809 F 19 1410= 1441s 1558 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 48 VWRITECHAR 000013F2 F 11 34= F 16 137 139 *VWRITELINE 000013F4 F 11 36= *WAITCOUNT 00040000 F 4 106= WARNBLKLOST 00003606 F 19 654j 677j 708j 736j 750j 773= WARNBLKLOST 000036B8 F 19 1011j 1019= WHALT 00170000 F 10 340= 440e 441e 442e 444e 447e 448e 451e 452e 453e 454e 455e 460e 461e *WLCKLIM 00170804 F 6 1610= *WLCKUSD 00170805 F 6 1611= WNDO1 00000800 F 7 220= 221e WNDO2 00000C00 F 7 223= 225e WNDO3 00001000 F 7 228= 229e WNDO4 00001400 F 7 231= 232e WORDLNTH 00000020 F 4 25= 35e 36e 36e 37e 37e 38e 232 F 14 13 44 47 59 75 WPP 00000400 F 0 82e 83e F 4 32= 33e 34e 155e F 6 6e 2212e 2545e F 7 214a 217 218e 220 221e 223 225e 228 229e 231 232e 234 235e 237 238e 241 242e 244a 244a 245 246e 248a 248a 250e 251 F 8 40a 259a F 14 88e 101e 102 103 104 105 106 107 108 109 F 17 145a F 18 340 423 F 19 114 667 691 717 955 1027 1075 1497 1534 1536 1544 F 21 34 86 F 24 50e 56e 212 328 WRITEADT 000038DB F 15 86 F 20 6 85= 86 100= WRITEBLK MACRO F 14 171= F 19 257 344 393 417 1272 1308 F 20 74 169 252 265 277 WRITEDIR1 0000348C F 19 235j 256= WRITEEMOUT 000038A4 F 20 27j 34= WRITEERROR 000033F0 F 18 228a 372a 490a 597a 832= WRITEERROR 000034F9 F 19 257a 344a 352= WRITEERROR 00003899 F 19 393a 417a 1272a 1308a 1560a 1639a 1716= WRITEERROR 00003997 F 20 74a 169a 252a 265a 277a 284= WRITEIDX 0000389A F 15 85 F 20 5 8= 9 16= WRITEIT 00003785 F 19 1300j 1306= WRITEIT 00003833 F 19 1517j 1524j 1553= WRITESECBLK 0000395E F 20 78 187 233= 234 239= 281 *WRU0 00000000 F 8 43= *WRU0CPUSUB 00001040 F 5 74= *WRU0DD 00000D20 F 5 73= *WRU0INT 00000A10 F 5 72= *WRU0MREV 00003080 F 5 76= *WRU0SMUDEV 00000001 F 5 85= WRU0TYPE 00000040 F 5 66= F 22 146 *WRU1 00000001 F 8 44= *WRU10 0000000A F 8 53= *WRU11 0000000B F 8 54= *WRU12 0000000C F 8 55= *WRU13 0000000D F 8 56= *WRU14 0000000E F 8 57= *WRU15 0000000F F 8 58= *WRU2 00000002 F 8 45= *WRU3 00000003 F 8 46= WRU4 00000004 F 8 47= F 22 51 151 *WRU5 00000005 F 8 48= *WRU6 00000006 F 8 49= *WRU7 00000007 F 8 50= *WRU8 00000008 F 8 51= *WRU9 00000009 F 8 52= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 49 WRUIMAX 00000010 F 8 60= 63 F 22 50 150 *WRUINFO 00000200 F 8 63= WRUIPROTO 00000200 F 8 42= 60e 61a F 22 51 151 WRUMEMBAD 00002E10 F 5 99= F 22 153j *WRUMEMDEVT 00001040 F 5 83= *WRUMEMHERE 00003080 F 5 100= WRUMEMINC 00002040 F 5 86= F 22 63 *WRUMEMNO0 00002E10 F 5 90= WRUMEMNONE 00002C10 F 5 98= F 22 152j *XALOG 00000007 F 7 255= *XREQERAIR 000000BA F 9 183= *XREQERBFN 0000008F F 9 129= *XREQERBSBL 0000009E F 9 149= *XREQERBVAR 00000097 F 9 142= *XREQERDAA 000000B0 F 9 173= *XREQERDCM 000000C3 F 9 192= *XREQERDIO 000000C4 F 9 194= *XREQERDNA 000000AF F 9 172= *XREQERDNC 000000B1 F 9 174= *XREQERDNR 000000AE F 9 171= *XREQERDSE 0000009F F 9 150= *XREQERDSKL 00000087 F 9 117= *XREQERESDL 000000C5 F 9 196= *XREQERFAU 00000089 F 9 119= *XREQERFBZ 0000008A F 9 121= *XREQERFHBD 00000090 F 9 130= *XREQERFIP 000000A8 F 9 163= *XREQERFNF 0000008D F 9 124= *XREQERFPRG 00000092 F 9 132= *XREQERIAUT 000000A7 F 9 162= *XREQERILOP 00000091 F 9 131= *XREQERILR 00000080 F 9 109= *XREQERINHI 000000A9 F 9 164= *XREQERISAV 00000088 F 9 118= *XREQERISYR 00000093 F 9 133= *XREQERITK 000000C9 F 9 200= *XREQERITM 000000CA F 9 201= *XREQERLAE 00000083 F 9 113= *XREQERLAS 0000008B F 9 122= *XREQERLBZ 000000C6 F 9 197= *XREQERLNE 00000081 F 9 111= *XREQERLNS 0000008C F 9 123= *XREQERLPE 00000095 F 9 137= *XREQERMNRP 000000A2 F 9 157= *XREQERMWNA 00000086 F 9 116= *XREQERNAE 0000008E F 9 128= *XREQERNDS 000000B6 F 9 179= *XREQERNDT 000000B7 F 9 180= *XREQERNFSV 0000009D F 9 148= *XREQERNR 000000AC F 9 169= *XREQERNSE 000000AB F 9 168= *XREQERNSL 000000AA F 9 167= *XREQERNSPP 000000A3 F 9 158= *XREQERNSS 000000B5 F 9 178= *XREQERNSV 000000A6 F 9 161= *XREQEROFC 000000A0 F 9 155= 1 Jimbo's CREF Extractor 2.0 Pie In The Sky Filesystem Reconstructor 10-Aug-92 12:22 PAGE 50 *XREQEROIO 000000B9 F 9 182= *XREQERPFM 00000084 F 9 114= *XREQERPNS 00000094 F 9 136= *XREQERPOB 00000082 F 9 112= *XREQERPWW 00000096 F 9 138= *XREQERREOD 000000A4 F 9 159= *XREQERRIB 000000B8 F 9 181= *XREQERRNA 00000085 F 9 115= *XREQERSCU 000000C7 F 9 198= *XREQERSDE 000000C0 F 9 189= *XREQERSIB 000000BD F 9 186= *XREQERSIO 000000BB F 9 184= *XREQERSIU 00000099 F 9 144= *XREQERSPB 000000BF F 9 188= *XREQERSUSP 000000AD F 9 170= *XREQERTMD 000000C2 F 9 191= *XREQERUAM 0000009A F 9 145= *XREQERUIB 000000BE F 9 187= *XREQERUKC 000000B3 F 9 176= *XREQERUKF 000000B4 F 9 177= *XREQERUKP 000000BC F 9 185= *XREQERUKS 000000B2 F 9 175= *XREQERULT 000000C1 F 9 190= *XREQERVBB 000000C8 F 9 199= *XREQERVIU 000000A1 F 9 156= *XREQERVLB 0000009B F 9 146= *XREQERVNMR 0000009C F 9 147= *XREQERWANA 000000A5 F 9 160= *XREQERWPT 00000098 F 9 143= *XREQRSTR 00000050 F 6 1594= *XRFLDCODE 00002CA0 F 9 266= XRFLDNRWD 00002210 F 9 270= 271e *XRFLDREQ 00002C60 F 9 268= *XRFLDSUBOP 00003840 F 9 267= XRFLDSUSP 00001E20 F 9 272= 273e 274e XRMAIFLD 00002630 F 9 1168= 1169e 1170e 1171e *XRNOERRS 00000800 F 9 1170= *XRNOREWND 00004000 F 9 271= *XRNOSUB 00001000 F 9 1169= *XRSUSPERR 00008000 F 9 274= *XRSUSPNORM 00000000 F 9 273= *XRWWCHK 00000400 F 9 1171= ZAPIT 000032CA F 18 346j 352= ZAPIT 00003307 F 18 455j 461= ZERO 00000000 F 4 11= 12e 155e F 7 214a 218e 221e 225e 229e 232e 235e 238e 242e 246e 250e ZHALT 001A0000 F 10 341= 745e 746e