00 & !Retrieval Blockettes (RB) have lists of DCN's and pointers & ! to more RB's & !Attribute Blockettes (ATB) are used by RSX and RMS. They are & !not discussed here. & ! 100 ! & !open up and dimension the UFD; get cluster size & ! 110 PRINT "Account"; \ & INPUTLINE PPN$ \ & PPN$ = CVT$$(PPN$,-1%) 120 OPEN PPN$ FOR INPUT AS FILE #1% & !This is how to open up the UFD 130 DIM #1%, U%(3583%,7%) & !up to 3584 blockettes of 8 words each 140 CLU% = U%(31%,0%) & ! & !Every block in the UFD has a copy of the FDCM (file Directory & !cluster map). Its first (0th) word has the cluster size. The & !other words are device cluster numbers, the physical locations & !of parts of the file. & ! 200 ! & !look through this UFD & ! 210 PTR% = FNLINK%(U%(0%,0%)) & !first word of first blockette is a link to first NB 220 IF PTR% = 0% THEN GOTO 900 !a zero pointer is end of NB's 230 GOSUB 2000 !process this file 240 PTR% = FNLINK%(U%(PTR%,0%)) !get link to next NB 250 GOTO 220 900 ! & !done & ! 910 GOTO 32767 2000 ! & ! & ! SUBROUTINE: Print data for current file & ! & ! 2100 ! & !Data from Name Blockette & ! 2110 PRINT RAD$(U%(PTR%,1%)); & RAD$(U%(PTR%,2%)); "."; & RAD$(U%(PTR%,3%)); & !file name and extension 2120 PRINT USING "<###>", SWAP%(U%(PTR%,4%)) AND 255% & !protection code 2130 ST% = U%(PTR%,4%) AND 255% 2135 PRINT "Status Byte: "; 2140 FOR I% = 7% TO 0% STEP -1% 2150 PRINT USING "#", ( (2% ^ I%) AND ST% ) / 2% ^ I%; 2160 NEXT I% 2170 PRINT 2180 PRINT "Open regardless and open count: ", & ( SWAP%(U%(PTR%,5%)) AND 255% ), ( U%(PTR%,5%) AND 255% ) 2200 ! & !data from Accounting Blockette & ! & ! word 0: link to Attribute Blockette & ! word 1: date of last access & ! word 2: file size in blocks & ! word 3: date of creation & ! word 4: time of creation & ! word 5: run-time system name & ! word 6: " & ! word 7: file clustersize & ! & !for large data files, which have no run-time system, word & !five is set to zero (which is not valid for a RTS) and word & !six is used for the most significant part of the file size. & ! 2210 AB% = FNLINK%(U%(PTR%,6%)) & !get location of Accounting Blockette 2220 PRINT 'access: '; DATE$(U%(AB%,1%)); !date of last access 2230 PRINT ' creation: '; DATE$(U%(AB%,3%)); !date of creation 2240 PRINT ' '; TIME$(U%(AB%,4%)) !time of creation 2250 SIZE = U%(AB%,2%) \ & SIZE = SIZE + 65536. IF SIZE < 0 & !get size and adjust for "negatives" 2260 SIZE = SIZE + 65536. * U%(AB%,6%) UNLESS U%(AB%,5%) & !if a large file, add high order part. 2270 PRINT USING "SIZE: ######", SIZE 2280 PRINT "Run time system: ";RAD$(U%(AB%,5%)) + RAD$(U%(AB%,6%)) 2290 PRINT "Clustersize: ";U%(AB%,7%) 2300 ! & !some space before next file & ! 2310 PRINT \ PRINT 2990 RETURN 8000 ! & ! & ! FUNCTIONS & ! & ! 8010 ! & !convert link word to Blockette number & ! & !bits 9 to 11 are the cluster number. The first line gets & ! these bits and multiplies by cluster size & !bits 12 to 15 are block number. The next line gets these and & ! multiplies by 32 (number of blockettes per block) & !bits 4 to 8 are the blockette number. The last line adds & ! this. & !the other bits of the link are not relevant here & ! 8020 DEF FNLINK%(L%) = & ((( L% AND 3584%) / 512% ) * CLU% & + ( SWAP%( L% AND -4096% ) / 16% )) * 32% & + (( L% AND 496%) / 16%) 32767 END UFD BAS[.050020]UFD .BAS[.050020]   X1혀4¿|HÞï þÿÿ[ú«4ÿ;ßïöëÿÿÝûÿIßkûÿ(Ÿ«ûÿ&ûÿ'( «á«ôÑk ß«Hûÿ&ú«PïŠú«`ï‚ßï®ëÿÿŸ« ûÿüÐ\žËàïR™rP P2PPzPP{PPP÷PP2P~ûÿ®ñÿÿÿÿ\ÐÿŸ«ûÿªŸ«$ûÿ ûÿÐ\Ã\T‘D«á 0D«áó \ìÎ~ûÿŠŸ« ûÿhûÿi) «ô«á+Ô\ ^( «án ^( ïëÿÿn°«pÀ\Ð^«tú«xÿYÀ\^úË€ÿÐ\ßïÎêÿÿÝûÿ!ßkûÿŸ«ûÿþûÿÿÐVÕk<Ý\ÝûÿñžFË×ï˰<Ë´ßˬûÿÇûÿÌÖ\ÀVÑVkÆ”úˤÿ—1`þ@ÐïlüÿÿP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<¼SЬTЬ UÔQÕS><„PÑPÿùÐå¹P×S'{@PRPB¯ …×S{(PRPB¯’…×S@¯‰…¾@@Œ˜ ("@$$Ø#0$è#$8$%˜$%(%è$! @"FORRTLLIBRTL7-./% <=2&?'@O{[lP}M]\Nk`Kaðñòóôõö÷øùz^L~no|ÁÂÃÄÅÆÇÈÉÑÒÓÔÕÖרÙâãäåæçèéJàZ_my‚ƒ„…†‡ˆ‰‘’“”•–—˜™¢£¤¥¦§¨©ÀjС???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ÿ\ \\\\ \\\\\\\\\\ \\\\\\\\\\\\\\\\ \\\\\\\\\[.<(+!&\\\\\\\\\]$*);^-/\\\\\\\\|,%_>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\ÿ