$ od -c -N 50000 [_CD8_]<doradosource>MidasOtherSources.dm!4 0000000 377 \0 \0 M S a v e O t h e r S o u 0000020 r c e s . c m \0 376 \0 206 340 006 f t p 0000040 i v y c o n n e c t D o r 0000060 a d o S o u r c e ^ \r d u m p 0000100 / C M i d a s O t h e r S o u 0000120 r c e s . d m ^ \r M S a v e O 0000140 t h e r S o u r c e s . c m o 0000160 v e r l a y s i n i t . b c p l 0000200 m a k e f o n t . b c p l m 0000220 d i . b c p l m d i r s . b c 0000240 p l \r 377 \0 \0 o v e r l a y s i n 0000260 i t . b c p l \0 376 001 \0 352 277 / / \r 0000300 / / O V E R L A Y S I N I T . 0000320 B C P L - i n i t i a l i z 0000340 e s t r u c t u r e s f o r 0000360 O V E R L A Y S p a c k a g 0000400 e \r / / l a s t e d i t e d 0000420 S e p t e m b e r 7 , 1 9 0000440 7 6 1 0 : 4 2 A M \r / / \r 0000460 \r \t g e t " o v e r l a y s . 0000500 d " \r \t g e t " a l t o f i l 0000520 e s y s . d " \r \t g e t " d i 0000540 s k s . d " \r \r e x t e r n a l 0000560 \t / / p r o c e d u r e s d 0000600 e f i n e d \r [ \t O v e r l a y 0000620 S c a n \t / / ( f p t r , o 0000640 d v e c , l e n g t h [ , f 0000660 a , b u f , b u f s i 376 001 \0 0000700 240 224 z e , f i x v e c , f i 0000720 x s i z e ] ) - > n p a g e 0000740 s / - 1 \r \t O v e r l a y I n i 0000760 t \t / / ( o d v e c [ , f i 0001000 x v e c ] ) \r ] \r \r e x t e r n 0001020 a l \t / / p r o c e d u r e s 0001040 u s e d \r [ \t \t / / O . S . 0001060 \r \t S e t B l o c k ; M o v e 0001100 B l o c k ; Z e r o \r \t \t / / 0001120 B F S \r \t A c t O n D i s k P 0001140 a g e s \r ] \r \r e x t e r n a l 0001160 \t / / s t a t i c s u s e d 0001200 \r [ \t \t / / O . S . \r \t s y s 0001220 D i s k \r ] \r \r s t r u c t u r 0001240 e O D V : \t / / f i r s t 0001260 p a r t o f o v e r l a y 0001300 v e 376 001 \0 a 324 c t o r \r [ \t n o 0001320 v w o r d \t / / # o f o 0001340 v e r l a y s \r \t f p @ F P \t 0001360 / / F P f o r o v e r l a 0001400 y f i l e \r ] \r m a n i f e s 0001420 t l O D V = s i z e O D 0001440 V / 1 6 \r \r m a n i f e s t \r [ 0001460 \t M a x S c a n P a g e s = 0001500 4 0 \r ] \r \r s t a t i c \r [ \t O 0001520 V b u f \t / / p a g e b u f 0001540 f e r \r \t O V b s i z e \t / / 0001560 s i z e o f b u f f e r i 0001600 n p a g e s \r \t O V c u r p n 0001620 \t / / c u r r e n t f i r s 0001640 t p a g e i n b u f f e r 0001660 \r \t O V c u r n p \t / / c u r 0001700 r e n t # 376 001 \0 267 357 o f p 0001720 a g e s i n b u f f e r \r \t 0001740 O V d a s \t / / D A v e c t 0001760 o r f o r p a g e s i n 0002000 b u f f e r + 1 \r \t O V f p \t 0002020 / / o v e r l a y f i l e 0002040 F P \r ] \r \r \r l e t O v e r l 0002060 a y I n i t ( o d v , f i x v 0002100 ; n u m a r g s n a ) b e 0002120 \r [ \t e x t e r n a l \t / / i 0002140 n O V E R L A Y S \r \t [ O 0002160 v e r l a y F p \r \t O v e 0002200 r l a y F a u l t s \r \t @ 0002220 O v e r l a y N u m b e r \r \t 0002240 @ O v e r l a y F a u l t P 0002260 r o c \r \t F i r s t O D \r 0002300 \t L a s t O D \r \t 376 001 \0 237 0002320 ~ ] \r \t O v e r l a y F p = 0002340 l v o d v > > O D V . f p \r 0002360 \t O v e r l a y F a u l t s = 0002400 o d v + l O D V \r \t l e t n 0002420 o v = o d v > > O D V . n o 0002440 v \r \t S e t B l o c k ( O v e r 0002460 l a y F a u l t s , # 1 0 0 0 0002500 0 + l v O v e r l a y N u m b 0002520 e r , n o v ) \t / / I S Z \r 0002540 \t O v e r l a y F a u l t s ! ( 0002560 n o v - 1 ) = # 2 0 0 0 + l 0002600 v O v e r l a y F a u l t P r 0002620 o c \t / / J M P @ \r \t F i r 0002640 s t O D = O v e r l a y F a 0002660 u l t s + n o v \r \t L a s t O D 0002700 = F i r s t O D + ( n o v - 0002720 1 376 001 \0 f \n ) * O D s i z e \r \t 0002740 i f n a g e 2 t h e n \t 0002760 / / f i x u p s w a p p e 0003000 d - o u t s t a t i c s \r \t 0003020 [ l e t f i x p , v a l 0003040 = f i x v , O v e r l a y F 0003060 a u l t s \r \t w h i l e 0003100 @ f i x p g e 0 d o \r \t 0003120 [ l e t n f i x p = 0003140 f i x p + @ f i x p + 1 \r \t 0003160 [ f i x p = f 0003200 i x p + 1 \r \t 0003220 i f f i x p e q n f i x p 0003240 b r e a k \r \t 0003260 ( @ f i x p ) ! 0 = v a l 0003300 \r \t ] r e p e a 0003320 t \r \t 376 001 \0 c 266 v a 0003340 l = v a l + 1 \r \t ] 0003360 \r \t ] \r ] \r \r l e t O v e r 0003400 l a y S c a n ( f p t r , o d 0003420 v , l e n , f a , p b u f 0003440 , b s i z e , f i x v , f 0003460 s i z e ; n u m a r g s n a 0003500 ) = v a l o f \r [ \t / / I 0003520 n i t i a l i z e t h e w o 0003540 r k a r e a \r \t Z e r o ( o d 0003560 v , l e n ) \r \t M o v e B l o 0003600 c k ( l v o d v > > O D V . f 0003620 p , f p t r , l F P ) \r \t l 0003640 e t m a x o v s = ( l e n 0003660 - l O D V ) / ( O D s i z e + 1 0003700 ) \r \r \t l e t m y b u f = 0003720 v e c # 4 0 2 \r \t t 376 001 \0 235 367 0003740 e s t ( n a l s 6 ) % 0003760 ( b s i z e l s # 4 0 2 ) \r 0004000 \t i f s o O V b u f , O V b 0004020 s i z e = m y b u f , 1 \r 0004040 \t i f n o t \r \t [ O V b u f 0004060 , O V b s i z e = p b u f 0004100 , ( b s i z e - 1 ) / # 4 0 1 0004120 \r \t i f O V b s i z e 0004140 g r M a x S c a n P a g e s 0004160 t h e n O V b s i z e = M 0004200 a x S c a n P a g e s \r \t ] \r 0004220 \t O V d a s = O V b u f + ( 0004240 O V b s i z e l s h i f t 8 0004260 ) \r \t @ O V d a s = f p t r 0004300 > > F P . l e a d e r V i r t u 0004320 a l D a \r \t O V c u r p n , O 0004340 376 001 \0 @ \r V c u r n p = 0 , 0004360 0 \r \t O V f p = f p t r \r 0004400 \t l e t b u f = a d v a n 0004420 c e t o p a g e ( 1 , 2 ) \t / 0004440 / r e a d f i r s t d a t 0004460 a p a g e \r \t l e t p n = 0004500 b u f ! 1 + 1 \r \t i f p n 0004520 l s 2 r e s u l t i s 0 \t 0004540 / / n o o v e r l a y s \r \t 0004560 i f n a g e 4 t h e n \t 0004600 / / u s e f a \r \t [ O V 0004620 c u r p n , O V c u r n p , 0004640 @ O V d a s = f a > > F A . 0004660 p a g e N u m b e r , 0 , f 0004700 a > > F A . d a \r \t ] \r \t l e 0004720 t o v n u m = 0 \r \t l e t 0004740 o f v 376 001 \0 z 034 = o d v + 0004760 l O D V \r \t l e t f o d = 0005000 o f v + m a x o v s \r \t l e t 0005020 o d = f o d \r \t l e t f i 0005040 x i = 0 \r \r \t [ i f o 0005060 v n u m e q m a x o v s r 0005100 e s u l t i s - 1 \r \t o 0005120 d > > O D . f i r s t P n = 0005140 p n \r \t l e t b u f = 0005160 a d v a n c e t o p a g e ( p 0005200 n , M a x S c a n P a g e s ) 0005220 \r \t i f b u f e q 0 0005240 b r e a k \r \t o d > > O 0005260 D . d a = O V d a s ! ( ( b 0005300 u f - O V b u f ) r s h i f t 0005320 8 ) \r \t l e t s k i p 0005340 = b u f ! 1 + # 376 001 \0 214 374 2 0005360 0 \r \t l e t n p a g e s 0005400 = ( b u f ! 4 + # 3 7 7 ) 0005420 r s h i f t 8 \r \t l e t 0005440 b u f = a d v a n c e t o 0005460 p a g e ( p n + s k i p r 0005500 s h i f t 8 , M a x S c a n 0005520 P a g e s ) \r \t l e t w 0005540 n = s k i p & # 3 7 7 \r \t 0005560 l e t n = b u f ! w n 0005600 \r \t l e t n w = O V 0005620 b u f + ( O V c u r n p l s h 0005640 i f t 8 ) - b u f \r \t i 0005660 f n a g e 8 t h e n \r \t 0005700 [ i f f i x i + n + 0005720 1 g e f s i z e r e s u l 0005740 t i s - 2 \r \t f 376 0005760 001 \0 235 \0 i x v ! f i x i = n 0006000 \r \t f i x i = f 0006020 i x i + 1 \r \t ] \r \t 0006040 f o r i = 1 t o n 0006060 d o \r \t [ w n = w 0006100 n + 1 \r \t i f w n 0006120 g e n w t h e n \r \t 0006140 [ b u f = a d v a 0006160 n c e t o p a g e ( O V c u r p 0006200 n + O V c u r n p , M a x S c 0006220 a n P a g e s ) \r \t 0006240 w n = w n - n w \r \t 0006260 n w = O V c 0006300 u r n p l s h i f t 8 \r \t 0006320 ] \r \t l 0006340 e t s t a t = b u f ! w n 0006360 \r \t 376 001 \0 r 4 @ s t 0006400 a t = o f v + o v n u m \r \t 0006420 i f n a g e 8 0006440 t h e n \r \t [ 0006460 f i x v ! f i x i = s t a t 0006500 \r \t f i x i 0006520 = f i x i + 1 \r \t 0006540 ] \r \t w n = w 0006560 n + 1 \r \t ] \r \t p 0006600 n = p n + n p a g e s \r \t 0006620 o v n u m = o v n u m + 0006640 1 \r \t o d = o d + O D 0006660 s i z e \r \t ] r e p e a t \r 0006700 \r \t M o v e B l o c k ( o f v + 0006720 o v n u m , f o d , o d + O 0006740 D s i z e - f o d ) \t / / n e 0006760 e d 1 e x t r 376 001 \0 1 ^ a 0007000 f i r s t P n \r \t o d v > > O D 0007020 V . n o v = o v n u m \r \t O 0007040 v e r l a y I n i t ( o d v ) \r 0007060 \t i f n a g e 8 t h e n 0007100 f i x v ! f i x i = - 1 \r 0007120 \t r e s u l t i s f i x i + 1 0007140 \r ] \r \r a n d a d v a n c e t 0007160 o p a g e ( n e w p n , n p a 0007200 g e s ) = v a l o f \r [ \t w 0007220 h i l e n e w p n g e ( O 0007240 V c u r p n + O V c u r n p ) 0007260 d o \r [ \t l e t n e 0007300 x t d a = O V d a s ! O V c 0007320 u r n p \r \t i f n e x t d a 0007340 e q e o f D A r e s u l t i 0007360 s 0 \r \t O V c u r p n = 376 001 0007400 \0 221 { O V c u r p n + O V c u 0007420 r n p \r \t l e t n s p 0 = 0007440 M a x S c a n P a g e s - O V b 0007460 s i z e \r \t l e t n s p 1 = 0007500 n e w p n - O V c u r p n \r \t 0007520 l e t n s p = ( n s p 0 0007540 l s n s p 1 ? n s p 0 , n 0007560 s p 1 ) \r \t l e t n p 1 = 0007600 n s p + O V b s i z e \r \t i f 0007620 n p a g e s g r n p 1 t h 0007640 e n n p a g e s = n p 1 \r 0007660 \t l e t C A s = v e c M 0007700 a x S c a n P a g e s \r \t S e t 0007720 B l o c k ( C A s , O V b u f 0007740 , M a x S c a n P a g e s ) \r 0007760 \t f o r i = 1 t o O V 0010000 b s i 376 001 \0 264 a z e - 1 d o \r 0010020 \t C A s ! ( n s p + i ) 0010040 = O V b u f + ( i l s h i f 0010060 t 8 ) \r \t l e t D A s = 0010100 v e c M a x S c a n P a g e s 0010120 + 1 \r \t D A s ! 0 = n e x t 0010140 d a \r \t S e t B l o c k ( D A s 0010160 + 1 , f i l l I n D A , M a 0010200 x S c a n P a g e s ) \r \t l e t 0010220 l a s t n c = n i l \r \t l 0010240 e t l a s t p n = A c t O 0010260 n D i s k P a g e s ( s y s D i 0010300 s k , C A s - O V c u r p n , 0010320 D A s - O V c u r p n , O V 0010340 f p , O V c u r p n , O V c 0010360 u r p n + n p a g e s - 1 , D 0010400 C r e a d D , 376 \0 334 367 373 l v 0010420 l a s t n c ) \r \t O V c u r p n 0010440 = O V c u r p n + n s p \r \t 0010460 O V c u r n p = l a s t p n 0010500 + 1 - O V c u r p n \r \t M o v e 0010520 B l o c k ( O V d a s , D A s 0010540 + n s p , O V c u r n p + 1 ) 0010560 \r \t i f l a s t n c e q 0 0010600 t h e n \r \t [ O V c u r n 0010620 p = O V c u r n p - 1 ; O 0010640 V d a s ! O V c u r n p = e 0010660 o f D A ] \r ] \r \t r 0010700 e s u l t i s O V b u f + ( n 0010720 e w p n - O V c u r p n ) l s 0010740 h i f t 8 \r ] \r 377 \0 \0 m a k e 0010760 f o n t . b c p l \0 376 001 \0 207 312 / 0011000 / P r o g r a m t o m a k e 0011020 G A C H A 1 0 . b r \r \r g e t 0011040 " s t r e a m s . d " \r g e t 0011060 " a l t o f i l e s y s . d " 0011100 \r \r e x t e r n a l \r [ \t / / O 0011120 S \r \t O p e n F i l e ; F i l 0011140 e L e n g t h ; C a l l S w a 0011160 t ; P o s i t i o n P a g e \r 0011200 \t R e a d B l o c k ; C l o s 0011220 e s ; W r i t e B l o c k ; 0011240 P u t s \r \r / / D e f i n e d 0011260 h e r e \r \t M a k e F o n t \r ] 0011300 \r \r l e t M a k e F o n t ( L 0011320 a y o u t , u s e r P a r a m s 0011340 , C F A ) b e \r [ \t l e t F 0011360 o n t S t r e a m = O p e 376 0011400 001 \0 Y ! n F i l e ( " G A C H A 0011420 1 0 . A L " , k s T y p e R e a 0011440 d O n l y , w o r d I t e m ) \r 0011460 \t l e t S i z e F o n t = 0011500 ( F i l e L e n g t h ( F o n t 0011520 S t r e a m ) + 1 ) r s h i f 0011540 t 1 \r \t i f S i z e F o n t 0011560 n e 2 1 7 0 B t h e n C 0011600 a l l S w a t ( " W r o n g s 0011620 i z e " ) \r \t P o s i t i o n P 0011640 a g e ( F o n t S t r e a m , 1 0011660 ) \r \t l e t F o n t P = v 0011700 e c 3 0 0 0 \r \t R e a d B l o 0011720 c k ( F o n t S t r e a m , F o 0011740 n t P , S i z e F o n t ) \r \t C 0011760 l o s e s ( F o n t S t r e a m 0012000 ) \r \t l 376 001 \0 271 314 e t B R S t 0012020 r e a m = O p e n F i l e ( 0012040 " g a c h a 1 0 . b r " , k s T 0012060 y p e W r i t e O n l y , w o r 0012100 d I t e m ) \r \t f o r I = 0012120 0 t o 3 0 B d o \r \t [ P 0012140 u t s ( B R S t r e a m , t a b 0012160 l e [ \r \t \t 1 0 0 0 B ; \t 2 2 0012200 2 6 B ; \t 0 B ; \t 1 7 B ; \t 0 B 0012220 ; \t 2 5 B \r \t \t 0 B ; \t 3 0 B ; 0012240 \t 0 B ; \t 2 2 2 3 B ; \t 0 B ; \t 0012260 2 2 2 5 B \r \t \t 0 B ; \t 0 B ; \t 0012300 0 B ; \t 1 B ; \t 1 4 0 B ; \t 2 B 0012320 \r \t \t 2 5 0 6 B ; \t 6 7 5 5 6 B 0012340 ; \t 7 2 1 2 0 B ; \t 1 B ; \t 1 B 0012360 ; \t 2 B \r \t \t 2 1 7 2 B ] ! 0012400 I ) \r \t ] \r \t W r 376 \0 235 1 252 i t 0012420 e B l o c k ( B R S t r e a m , 0012440 F o n t P , S i z e F o n t ) \r 0012460 \t P u t s ( B R S t r e a m , 0 0012500 ) ; P u t s ( B R S t r e a m 0012520 , 7 7 7 7 7 B ) \r \t P u t s ( B 0012540 R S t r e a m , 1 ) ; P u t s 0012560 ( B R S t r e a m , 0 ) ; P u 0012600 t s ( B R S t r e a m , 0 ) \r \t 0012620 C l o s e s ( B R S t r e a m ) 0012640 ; f i n i s h \r ] \r 377 \0 \0 m d 0012660 i . b c p l \0 376 001 \0 300 S / / L 0012700 o o k u p E n t r i e s : \r / / 0012720 l a s t e d i t e d 4 D 0012740 e c e m b e r 1 9 7 7 b y 0012760 E . F i a l a \r \r / / L o 0013000 o k u p a c o l l e c t i 0013020 o n o f n a m e s i n a 0013040 d i r e c t o r y . \r / / 0013060 S i s t h e d i r e c t o 0013100 r y ( a d i s k s t r e a 0013120 m ) , w h i c h g e t s r 0013140 e s e t . \r / / N a m e V e 0013160 c i s a v e c t o r o f 0013200 C n t s t r i n g s : \r / / 0013220 z e r o s i n N 0013240 a m e V e c a r e i g n o r 0013260 e d . \r / / P r V e 376 001 \0 337 0013300 235 c i s a v e c t o r o 0013320 f l D V * C n t w o r d s 0013340 i n t o w h i c h t h e d 0013360 i r e c t o r y \r / / 0013400 e n t r i e s ( w i t h o u 0013420 t t h e n a m e ) a r e 0013440 r e a d . \r / / I f F i l 0013460 e s O n l y , o n l y l o o 0013500 k s a t d v T y p e F i l e 0013520 e n t r i e s . \r / / B u 0013540 f , i f s u p p l i e d , 0013560 i s a b u f f e r o f s 0013600 i z e B u f L e n \r \r / / 0013620 R e t u r n s n u m b e r o 0013640 f n a m e s n o t f o u n 0013660 d ( h o p e f u l l y 0 ) . 0013700 \r 376 001 \0 212 021 / / T h o s e 0013720 n a m e s w i l l h a v e 0013740 0 i n t h e f i r s t w 0013760 o r d o f t h e i r P r V 0014000 e c e n t r i e s . \r \r g 0014020 e t " A l t o F i l e S y s . 0014040 d " \r \r e x t e r n a l [ \r \t 0014060 \t / / D e f i n e d h e r e 0014100 \r \t L o o k u p E n t r i e s \r 0014120 \r \t \t / / O S \r \t R e s e t s 0014140 ; G e t s ; E n d o f s \r \t 0014160 D v e c \r \t M o v e B l o c k \r 0014200 \t R e a d B l o c k \r \t U s c \r 0014220 \t Z e r o \r \t ] \r \r m a n i f e 0014240 s t [ \r \t M i n B u f L e n 0014260 = l D V + l S T R I N G \t / / 0014300 M i n i m 376 001 \0 326 226 u m b u 0014320 f f e r s i z e \r \t M a x B u 0014340 f L e n = # 7 7 7 7 7 \t / / 0014360 M a x i m u m b u f f e r 0014400 s i z e t o a v o i d U s 0014420 c \r \t ] \r \r l e t L o o k u p 0014440 E n t r i e s ( S , N a m e V 0014460 e c , P r V e c , C n t , 0014500 F i l e s O n l y , B u f , 0014520 B u f L e n ) = v a l o f 0014540 \r [ L U E \t \r \t l e t t y p D 0014560 V = F i l e s O n l y ? 0014600 d v T y p e F i l e , d v T y p 0014620 e F r e e \r \t i f U s c ( B u 0014640 f L e n , M a x B u f L e n ) 0014660 g r 0 t h e n B u f L e 0014700 n = M a x B u f L 376 001 \0 O 235 0014720 e n \r \r \t l e t N o t F o u n 0014740 d = 0 \t \t / / N u m b e r 0014760 o f n a m e s n o t f o 0015000 u n d y e t \r \t f o r i = 0015020 0 t o C n t - 1 d o \r \t 0015040 i f N a m e V e c ! i n 0015060 e 0 t h e n N o t F o u n 0015100 d = N o t F o u n d + 1 \r \t 0015120 Z e r o ( P r V e c , l D V * C 0015140 n t ) \t / / C l e a r D V ' 0015160 s \r \t R e s e t s ( S ) \r \t l 0015200 e t e n d p = B u f \t / / 0015220 E n d o f v a l i d i n 0015240 f o i n b u f f e r \r \r \t u 0015260 n t i l E n d o f s ( S ) d 0015300 o \r \t [ F I L L \r \t e n d p 0015320 376 001 \0 \0 226 = R e a d B l o c 0015340 k ( S , e n d p , B u f + B u f 0015360 L e n - e n d p ) + e n d p \t / 0015400 / F i l l b u f f e r \r \t 0015420 l e t d v = B u f \r \t 0015440 [ I T E M \r \t l e t 0015460 e l e n = d v + d v > > 0015500 D V . l e n g t h \r \t u 0015520 n l e s s d v > > D V . t y p 0015540 e n e t y p D V d o \r \t 0015560 [ L O O K \r \t 0015600 i f ( e l e n - e n d p ) 0015620 g r 0 d o \t / / W h o l e 0015640 e n t r y i s n ' t i n 0015660 b u f f e r \r \t [ 0015700 M o v e B l o c k ( B u f , d 0015720 v , e n 376 001 \0 253 032 d p - d v ) 0015740 \r \t e n d p = 0015760 e n d p + B u f - d v \t / / 0016000 M o v e e n d p o i n t e r 0016020 d o w n \r \t b 0016040 r e a k \t \t \t / / L e t F I 0016060 L L r e a d s o m e m o r 0016100 e \r \t ] \r \t 0016120 l e t N a m e = d v + 0016140 l D V \t \t / / F a b r i c a t 0016160 e p o i n t e r t o n a m 0016200 e i n D V \r / / A p p e n d 0016220 a " . " i f n e c e s s 0016240 a r y \r \t l e t n 0016260 l e n = N a m e > > S T R I 0016300 N G . l e n g t h \r \t 0016320 i f N a m e > > 376 001 \0 q n S 0016340 T R I N G . c h a r ^ n l e n 0016360 n e $ . t h e n \r \t 0016400 [ \t N a m e > > S T R I N G 0016420 . l e n g t h = n l e n + 1 0016440 \r \t \t N a m e > > S T R I N G . 0016460 c h a r ^ ( n l e n + 1 ) = 0016500 $ . \r \t ] \r M D I l 0016520 o o p : f o r I 0016540 = 0 t o C n t - 1 d o \t 0016560 / / L o o p t h r o u g h 0016600 n a m e s \r \t [ l 0016620 e t t P = N a m e V e c ! 0016640 I \r / / I f t L e n - L e n 0016660 e q - 1 t h e n u s e r 0016700 d i d n ' t g i v e " . " \r 0016720 / / U p p e r c a s e m a 376 0016740 001 \0 A 370 t c h f i r s t c h 0016760 a r a t s a m e t i m e \r 0017000 \t \t i f ( ( N a m e ! 0 - 0017020 t P ! 0 ) & 1 7 7 3 3 7 B ) 0017040 n e 0 t h e n l o o p \r 0017060 \t l e t t L e 0017100 n , P r P t r = t P > > S T 0017120 R I N G . l e n g t h , n i l \r 0017140 \t i f ( ( N a 0017160 m e > > S T R I N G . c h a r ^ 0017200 t L e n - t P > > S T R I N 0017220 G . c h a r ^ t L e n ) \r \t 0017240 & 3 3 7 B 0017260 ) n e 0 t h e n l o o p 0017300 \r \t f o r J 0017320 = 1 t o ( ( t L e n - 1 ) 0017340 r s h 376 001 \0 \t ~ i f t 1 ) 0017360 d o \r \t \t i f ( ( N a m e 0017400 ! J - t P ! J ) & 1 5 7 0017420 7 3 7 B ) n e 0 t h e n 0017440 g o t o N O T E Q \r \t \t P r P 0017460 t r = P r V e c + ( I * l D 0017500 V ) \r \t / / I 0017520 f L e n n e t L e n , t 0017540 h e e x t r a c h a r a c t 0017560 e r m u s t b e \r \t 0017600 / / a f i n a l " 0017620 . " , s o t h e c o m p a 0017640 r i s o n i s s u c c e s s 0017660 f u l \r \t i f 0017700 P r P t r ! 0 e q 0 t h e 0017720 n N o t F o u n d = N o t 0017740 F o u n d - 1 \r \t 376 001 \0 314 G 0017760 M o v e B l o c k ( 0020000 P r P t r , d v , l D V ) \r 0020020 \t P r P t r ! 0 0020040 = 1 \r \t b r e a 0020060 k \r N O T E Q : \r \t 0020100 ] \r \t ] L O O K \r / / 0020120 S k i p o v e r t h e e n 0020140 t r y w e j u s t p r o c 0020160 e s s e d \r \t t e s t 0020200 ( e l e n - e n d p ) < 0 \r 0020220 \t i f s o d v = e 0020240 l e n \r \t i f n o t \r \t 0020260 [ f o r i = 1 0020300 t o e l e n - e n d p d o 0020320 G e t s ( S ) \r \t e 0020340 n d p = B u f ; b r e 376 \0 0020360 M = 344 a k \t \t / / R e a d s 0020400 o m e m o r e \r \t ] \r 0020420 \t ] I T E M r e p e a t \r 0020440 \t ] F I L L \r \r \t r e s u l t i 0020460 s N o t F o u n d \r ] L U E \r 0020500 377 \0 \0 m d i r s . b c p l \0 376 001 0020520 \0 ? 341 / / M D i r s . B c p l 0020540 - - O S D i r s . B c p l 0020560 s a n s D e l e t e F i l e 0020600 s t u f f \r / / L a s t e 0020620 d i t e d : 2 7 O c t o b e 0020640 r 1 9 7 9 \r \r g e t " A l t 0020660 o F i l e S y s . d " \r g e t 0020700 " D i s k s . d " \r g e t " S 0020720 t r e a m s . d " \r \r e x t e r 0020740 n a l \r [ \r / / o u t g o i n 0020760 g p r o c e d u r e s \r F i n 0021000 d F d E n t r y ; M a k e N e 0021020 w F d E n t r y ; P a r s e F 0021040 i l e N a m e ; O p e n F i l 0021060 e ; S t r i p V e r s i o n \r 0021100 \r / / i n c o m i n g p r o 0021120 c e d 376 001 \0 # N u r e s \r S c a 0021140 n D i r B u f f e r ; I n i t 0021160 S c a n S t r e a m ; G e t S 0021200 c a n S t r e a m B u f f e r ; 0021220 F i n i s h S c a n S t r e a 0021240 m \r P u t s ; R e s e t s ; 0021260 E r r o r s ; C l o s e s ; 0021300 W r i t e B l o c k ; S e t F 0021320 i l e P o s \r C r e a t e D i s 0021340 k S t r e a m ; G e t C o m p 0021360 l e t e F a ; L n P a g e S i 0021400 z e ; J u m p T o F a \r S y s 0021420 E r r ; C r e a t e D i s k F 0021440 i l e \r M o v e B l o c k ; Z 0021460 e r o ; N o o p ; D e f a u 0021500 l t A r g s ; D v e c ; M i 0021520 n \r \r / / o u 376 001 \0 - 341 t g o 0021540 i n g s t a t i c \r d i r V e 0021560 r s i o n s \r \r / / i n c o m 0021600 i n g s t a t i c s \r s y s Z 0021620 o n e ; s y s D i s k \r ] \r \r 0021640 s t a t i c [ d i r V e r s 0021660 i o n s = f a l s e ] \r \r 0021700 m a n i f e s t \r [ \r / / e r 0021720 r o r c o d e s \r e c D e T o 0021740 o B i g = 1 5 0 1 \r e c B a 0021760 d D e T y p e = 1 5 0 2 \r e 0022000 c B a d D i r N a m e = 1 5 0022020 0 3 \r e c F n T o o L o n g = 0022040 1 5 0 4 \r e c C a n t O p e n 0022060 F i l e = 1 5 0 5 \r \r m a x 0022100 E x t r a S p a c e = l S T 0022120 R I N G \r m a x D e S i z 376 001 \0 0022140 : 245 e = l D V + m a x L e n 0022160 g t h F n I n W o r d s + m a x 0022200 E x t r a S p a c e \r m a x F r 0022220 e e D e S i z e = ( 1 l s 0022240 h i f t s i z e D V . l e n 0022260 g t h ) - 1 \r \r f n M a s k = 0022300 n o t ( # 4 0 * ( # 4 0 0 + 0022320 1 ) ) / / 1 3 7 , , 1 3 7 i 0022340 n c a s e y o u d i d n ' 0022360 t g u e s s . . . \r \r / / v 0022400 e r s i o n c o n t r o l m 0022420 a s k s ( s e e d e f i n i 0022440 t i o n s o f v e r x x x 0022460 i n s t r e a m s . d ) \r v e 0022500 r C r M a s k = 4 0 0 0 0 B 0022520 \t / / i f n o n - z e r o , 0022540 c 376 001 \0 245 206 r e a t e f i l 0022560 e o k \r ] \r \r s t r u c t u r 0022600 e H D : / / H o l e D 0022620 e s c r i p t o r \r [ \r m a x S 0022640 i z e w o r d \r n e e d e d S 0022660 i z e w o r d \r p o s w o r 0022700 d \r ] \r c o m p i l e i f s i 0022720 z e H D / 1 6 n e 3 t h 0022740 e n [ E r r o r ( " C h a n 0022760 g e l H D i n S t r e a m 0023000 s . d " ) ] \r \r s t r u c t u 0023020 r e S D B : \t / / S c a n D 0023040 i r B u f f e r s t a t e - 0023060 - m u s t a g r e e w i t 0023100 h D i r S c a n A . a s m \r [ 0023120 \r n a m e w o r d \t / / - > 0023140 n a m e b 376 001 \0 H \0 e i n g 0023160 l o o k e d u p ( a l l 0023200 u p p e r - c a s e ) \r l e n g 0023220 t h w o r d \t / / n u m b e 0023240 r o f w o r d s t o c h 0023260 e c k i n n a m e \r i g n o 0023300 r e F r e e w o r d \t / / t 0023320 r u e t o s k i p o v e r 0023340 f r e e e n t r i e s , f 0023360 a l s e t o s t o p o n 0023400 e a c h o n e \r s c r a t c h 0023420 w o r d 5 \t / / s c r a t 0023440 c h r e g i o n u s e d b 0023460 y S c a n D i r B u f f e r 0023500 p r o c e d u r e \r ] \r m a n i 0023520 f e s t l e n S D B = s i 0023540 z e S D B / 1 6 \r \r s 376 001 \0 U 0023560 323 t r u c t u r e F S S : 0023600 / / F i l e S c a n S t a 0023620 t e \r [ \r b u f f e r w o r d 0023640 \t / / - > c u r r e n t b 0023660 u f f e r ( 0 = > h i t 0023700 e n d - o f - f i l e ) \r p o s 0023720 w o r d \t / / w o r d p o 0023740 s i t i o n i n b u f f e r 0023760 o f c u r r e n t d i r e 0024000 c t o r y e n t r y \r e n d P 0024020 o s w o r d \t / / w o r d 0024040 p o s i t i o n o f f i r s 0024060 t w o r d n o t i n b u 0024100 f f e r \r b a s e P o s w o r 0024120 d \t / / f i l e w o r d p 0024140 o s i t i o n o f f i r s t 0024160 376 001 \0 # 263 w o r d o f b u 0024200 f f e r \r s s d w o r d \t / / 0024220 - > S c a n S t r e a m 0024240 D e s c r i p t o r \r ] \r \f \r / 0024260 / - - - - - - - - - - - - - - - 0024300 - - - - - - - - - - - - - - - - * 0024360 - - - - - - - - - - - - \r l e t 0024400 F i n d F d E n t r y ( d i r 0024420 S , n a m e , c o m p a r e 0024440 F n , d v , h d , n i l , 0024460 \r e x t r a S p a c e ; 0024500 n u m a r g s n a ) = v 0024520 a l o f \r / / - - - - - - - - - 0024540 - - - - - - - - - - - - - - - - 0024560 - - - - - - 376 001 \0 246 7 - - - - - 0024600 - - - - - - - - - - - - - - - - * 0024640 - - - - - - - \r / / F i n d F 0024660 d E n t r y r e t u r n s t 0024700 h e p o s i t i o n , o r 0024720 - 1 i f t h e n a m e i 0024740 s n o t f o u n d . \r / / 0024760 T h e n a m e i s n o t 0025000 p a r s e d s o t h i s s 0025020 h o u l d h a v e a l r e a 0025040 d y b e e n d o n e . \r / / 0025060 I f d v i s s u p p l i 0025100 e d , t h e d v o f t h 0025120 e n a m e w e f i n d i 0025140 s r e t u r n e d i n i t 0025160 . \r / / I f h d 376 001 \0 267 242 0025200 i s s u p p l i e d , i t 0025220 i s f i l l e d i n w i t 0025240 h a h o l e d e s c r i p 0025260 t o r f o r a h o l e b 0025300 i g \r / / e n o u g h t o 0025320 h o l d a n e n t r y f 0025340 o r n a m e w i t h e x t 0025360 r a S p a c e e x t r a w o 0025400 r d s o f s p a c e . \r / / 0025420 I f c o m p a r e F n i s 0025440 s u p p l i e d , i t s h 0025460 o u l d r e t u r n 0 i f 0025500 t h e e n t r y s h o u l 0025520 d b e \r / / a c c e p t e 0025540 d . \r [ \r l e t e x t r a B u 0025560 f = 1 l s h i f t L n P 0025600 376 001 \0 316 k a g e S i z e ( d i r 0025620 S ) \r D v e c ( F i n d F d E n 0025640 t r y , l v e x t r a B u f 0025660 ) \r l e t d , h = v e c 0025700 l D V , v e c l H D \r D e 0025720 f a u l t A r g s ( l v n a , 0025740 - 2 , 0 , d , h , n i 0025760 l , 0 ) \r \r Z e r o ( h d , 0026000 l H D ) \r h d > > H D . n e e d 0026020 e d S i z e = e x t r a S p 0026040 a c e \r \r l e t l N a m e I n 0026060 W o r d s = n i l \r l e t 0026100 s d b = v e c l e n S D B 0026120 \r l e t c a p N a m e = v 0026140 e c m a x L e n g t h F n I n 0026160 W o r d s \r \r i f c o m p a r 0026200 e F n e 376 001 \0 W , q 0 t h 0026220 e n \r [ \r / / t h 0026240 e + 2 a d d s t h e l e 0026260 n g t h b y t e a n d r o 0026300 u n d s u p \r l e t t 0026320 = n a m e > > S T R I N G . 0026340 l e n g t h + 2 \r / / 0026360 t h e - 1 t a k e s o f 0026400 f t h e t r a i l i n g $ 0026420 . \r l N a m e I n W o r d 0026440 s = ( t - 1 ) r s h i f t 0026460 1 \r h d > > H D . n e e 0026500 d e d S i z e = M i n ( t 0026520 r s h i f t 1 + l D V + 0026540 e x t r a S p a c e , m a x 0026560 D e S i z e ) \r \r / / S 0026600 e t u p S c a n 376 001 \0 312 # D 0026620 i r B u f f e r s t a t e a 0026640 n d g e n e r a t e c a p i 0026660 t a l i z e d v e r s i o n 0026700 o f n a m e \r s d b > > 0026720 S D B . n a m e = c a p N a 0026740 m e \r s d b > > S D B . l 0026760 e n g t h = l N a m e I n W 0027000 o r d s \r s d b > > S D B 0027020 . i g n o r e F r e e = f a 0027040 l s e \r c a p N a m e ! 0 0027060 = n a m e ! 0 & 1 7 7 7 0027100 3 7 B \r f o r i = 1 0027120 t o l N a m e I n W o r d s 0027140 - 1 d o c a p N a m e ! i 0027160 = n a m e ! i & f n M a s 0027200 k \r ] \r \r l e t t e m 376 0027220 001 \0 @ 327 p D V = v e c m a 0027240 x D e S i z e \r l e t b e s t 0027260 P o s = - 1 \r l e t h o l 0027300 e F A = v e c l F A ; h 0027320 o l e F A > > F A . c h a r P o 0027340 s = 0 \r \r / / T h e f o 0027360 l l o w i n g m u s t b e 0027400 d e c l a r e d i n t h e 0027420 o r d e r d e f i n e d i n 0027440 t h e F S S s t r u c t u 0027460 r e \r l e t b u f f e r , p 0027500 o s , e n d P o s , b a s e 0027520 P o s , s s d = 0 , 0 , 0027540 0 , 0 , n i l \r l e t f 0027560 s s = l v b u f f e r \r \r 0027600 R e s e t s ( d i r S ) \r s s d 0027620 = I 376 001 \0 = 270 n i t S c a n 0027640 S t r e a m ( d i r S , l v 0027660 e x t r a B u f , 1 ) \r A d v 0027700 a n c e B u f f e r ( f s s ) \r 0027720 \r w h i l e b u f f e r n e 0027740 0 d o \r [ \r / / 0027760 A d v a n c e t h e p o i 0030000 n t e r t o t h e f i r s 0030020 t " i n t e r e s t i n g " 0030040 d i r e c t o r y e n t r y . 0030060 \r / / T h e c a l l 0030100 t o S c a n D i r B u f f e r 0030120 a c c e l e r a t e s t h e 0030140 s e a r c h , b u t i f 0030160 t h e c a l l i s \r / 0030200 / o m i t t e d t h e s e 0030220 a r c h s t i l 376 001 \0 377 005 l 0030240 w o r k s , o n l y m o r e 0030260 s l o w l y . \r i f c 0030300 o m p a r e F n e q 0 t h 0030320 e n \r p o s = S 0030340 c a n D i r B u f f e r ( b u f 0030360 f e r + p o s , b u f f e r + 0030400 e n d P o s , s d b ) - b 0030420 u f f e r \r \r / / N o w 0030440 i n s p e c t t h e e n t 0030460 r y c a r e f u l l y . \r 0030500 l e t f i l e P o s = b 0030520 a s e P o s + p o s \r 0030540 l e t t h i s D V = b u f 0030560 f e r + p o s \r l e t 0030600 l e n = t h i s D V > > D 0030620 V . l e n g t h \r s w 376 001 0030640 \0 200 216 i t c h o n t h i s D V 0030660 > > D V . t y p e i n t o \r 0030700 [ \r c a s 0030720 e d v T y p e F r e e : \r 0030740 [ \r 0030760 / / n o t e t h a t w 0031000 e n e v e r a c c u m u l a 0031020 t e a s e q u e n c e o f 0031040 f r e e b l o c k s l o n 0031060 g e r \r / / 0031100 t h a n n e e d e d S i z e + 0031120 ( s i z e o f b i g g e s t 0031140 f r e e b l o c k ) \r 0031160 i f s d b > > S D 0031200 B . i g n o r e F r e e t h e 0031220 n e n d c a s e / / a l 0031240 r e a 376 001 \0 6 022 d y f o u n d 0031260 h o l e \r i 0031300 f h d > > H D . p o s + h d > 0031320 > H D . m a x S i z e n e f 0031340 i l e P o s t h e n \r 0031360 [ / / N o t 0031400 a d j a c e n t t o p r e 0031420 v i o u s h o l e ; r e c o 0031440 r d b e g i n n i n g o f 0031460 n e w o n e \r 0031500 h d > > H D . m a x S i 0031520 z e = 0 \r 0031540 h d > > H D . p o s = 0031560 f i l e P o s \r 0031600 h o l e F A > > F A . d 0031620 a = s s d > > S S D . d a \r 0031640 376 001 \0 340 331 0031660 h o l e F A > > F A . p a g e 0031700 N u m b e r = s s d > > S S 0031720 D . p a g e N u m b e r \r 0031740 ] \r 0031760 h d > > H D . m a x S i 0032000 z e = h d > > H D . m a x S 0032020 i z e + l e n \r 0032040 s d b > > S D B . i g n o r e 0032060 F r e e = h d > > H D . m a 0032100 x S i z e g e h d > > H D . 0032120 n e e d e d S i z e \r 0032140 e n d c a s e \r 0032160 ] \r c a s 0032200 e d v T y p e F i l e : \r 0032220 [ \r 0032240 / / k e e p a m 376 001 \0 0032260 % p a l f o r m e d d i r e c 0032300 t o r y e n t r y f r o m 0032320 o v e r f l o w i n g t h i s 0032340 N a m e \r i f 0032360 l e n g r m a x D e S i z 0032400 e t h e n E r r o r s ( d i 0032420 r S , e c D e T o o B i g , 0032440 f i l e P o s ) \r 0032460 M o v e B l o c k ( t e m p 0032500 D V , t h i s D V , l e n ) 0032520 \r p o s = 0032540 p o s + l e n \r 0032560 i f p o s g e e n d P o 0032600 s t h e n \r 0032620 [ A d v a n c e B u f f 0032640 e r ( f s s ) ; M o v e B l o 0032660 c k 376 001 \0 361 ! ( t e m p D V + l 0032700 e n - p o s , b u f f e r , 0032720 p o s ) ] \r 0032740 t e s t c o m p a r e F n e 0032760 q 0 \r 0033000 i f s o \r 0033020 [ / / d e f a u l t 0033040 s y s t e m c o m p a r e F 0033060 n \r 0033100 t e m p D V ! l e n = 1 0033120 / / f a k e n e x t b l 0033140 o c k o f l e n g t h 1 0033160 t o s t o p s c a n \r 0033200 u n l e 0033220 s s S c a n D i r B u f f e r 0033240 ( t e m p D V , t e m p D V + 0033260 l e n + 1 , 376 001 \0 W 220 s d b ) 0033300 e q t e m p D V l o o p \r 0033320 ] 0033340 \r i f n 0033360 o t u n l e s s c o m p a r 0033400 e F n ( n a m e , t e m p D V 0033420 + l D V , t e m p D V ) e q 0033440 0 l o o p \r \r 0033460 / / I f w e g e t h 0033500 e r e , t h e d e s i r e d 0033520 e n t r y w a s f o u n d 0033540 \r M o v e B l 0033560 o c k ( d v , t e m p D V , 0033600 l D V ) \r b e 0033620 s t P o s = f i l e P o s \r 0033640 b r e a k \r 0033660 ] \r 376 001 \0 [ 0033700 360 d e f a u l t : / 0033720 / u n k n o w n t y p e o 0033740 f d i r e c t o r y e n t r 0033760 y \r [ \r 0034000 E r r o r s ( d i r 0034020 S , e c B a d D e T y p e , 0034040 f i l e P o s ) \r 0034060 e n d c a s e \r 0034100 ] \r ] \r 0034120 p o s = p o s + l e n \r 0034140 w h i l e p o s g e e n 0034160 d P o s & b u f f e r n e 0034200 0 d o A d v a n c e B u f 0034220 f e r ( f s s ) \r ] \r \r F 0034240 i n i s h S c a n S t r e a m ( 0034260 s s d ) \r \r / / I f w e f 0034300 o 376 001 \0 k 221 u n d a h o l e 0034320 a n d d i d n o t f i n 0034340 d a m a t c h i n g d i r 0034360 e c t o r y e n t r y , p o 0034400 s i t i o n \r / / t h e s t 0034420 r e a m t o t h e p a g e 0034440 c o n t a i n i n g t h e 0034460 h o l e . \r / / I f w e d 0034500 i d n o t f i n d a h o 0034520 l e , s e t t h e H D . p 0034540 o s t o e n d - o f - f i l 0034560 e . \r t e s t s d b > > S D B 0034600 . i g n o r e F r e e \r i 0034620 f s o i f b e s t P o s e 0034640 q - 1 t h e n J u m p T o 0034660 F a ( d i r S , h o l e F A ) 0034700 \r i f 376 001 \0 317 314 n o t h 0034720 d > > H D . p o s = b a s e 0034740 P o s + p o s \r \r r e s u l t i 0034760 s b e s t P o s \r ] \r \r / / - 0035000 - - - - - - - - - - - - - - - - * 0035100 - - - - - - - - - - \r a n d A 0035120 d v a n c e B u f f e r ( f s s 0035140 ) b e \r / / - - - - - - - - - 0035160 - - - - - - - - - - - - - - - - * 0035260 - - \r [ \r f s s > > F S S . b u 0035300 f f e r = G e t S 376 001 \0 252 226 0035320 c a n S t r e a m B u f f e r ( 0035340 f s s > > F S S . s s d ) \r f s 0035360 s > > F S S . b a s e P o s = 0035400 f s s > > F S S . b a s e P o 0035420 s + f s s > > F S S . e n d 0035440 P o s \r f s s > > F S S . p o s 0035460 = f s s > > F S S . p o s 0035500 - f s s > > F S S . e n d P o 0035520 s \r f s s > > F S S . e n d P o 0035540 s = f s s > > F S S . s s d 0035560 > > S S D . n u m C h a r s r 0035600 s h i f t 1 \r ] \r \f \r / / - - 0035620 - - - - - - - - - - - - - - - - * 0035720 376 001 \0 ? 323 - - - - - - - - - \r a 0035740 n d M a k e N e w F d E n t r 0035760 y ( d i r S , n a m e , d v 0036000 , h d , e x t r a S t u f f 0036020 ) b e \r / / - - - - - - - - - 0036040 - - - - - - - - - - - - - - - - * 0036140 - - \r / / M a k e a n e n 0036160 t r y ( n a m e , d v ) o 0036200 f s i z e h d > > H D . n e 0036220 e d e d S i z e i n d i r S 0036240 a t t h e h o l e \r / / 0036260 s p e c i f i e d b y h d . 0036300 T h i s h o l e i s o 0036320 f s i z 376 001 \0 242 312 e h d > > 0036340 H D . m a x S i z e , w h i c 0036360 h i s e i t h e r \r / / b 0036400 i g g e r t h a n h d > > H 0036420 D . n e e d e d S i z e o r 0036440 a t t h e e n d o f d i 0036460 r S . T h e h d ' s \r / / 0036500 m a x S i z e - n e e d e d S 0036520 i z e m u s t n o t b e 0036540 g r e a t e r t h a n m a x 0036560 F r e e D e S i z e ; h d ' s 0036600 \r / / p r o d u c e d b y 0036620 F i n d F d E n t r y h a v e 0036640 t h i s p r o p e r t y , 0036660 s i n c e t h e y a r e o 0036700 b t a i n e d b y \r / / c o 0036720 n c a t e n a t i n 376 001 \0 270 250 g 0036740 f r e e d e ' s u n t i l 0036760 a b i g e n o u g h h o 0037000 l e i s o b t a i n e d . \r 0037020 / / T h e n a m e s h o u 0037040 l d b e p a r s e d b y 0037060 t h e c a l l e r . \r [ \r l e 0037100 t l N a m e I n W o r d s = 0037120 n a m e > > S T R I N G . l e 0037140 n g t h r s h i f t 1 + 1 0037160 \r i f l N a m e I n W o r d s 0037200 g e m a x L e n g t h F n I 0037220 n W o r d s t h e n \r E 0037240 r r o r s ( d i r S , e c F n 0037260 T o o L o n g , n a m e ) \r d 0037300 v > > D V . t y p e = d v T 0037320 y p e F i l e \r d v > > D V . 376 0037340 001 \0 273 201 l e n g t h = h d > 0037360 > H D . n e e d e d S i z e \r S 0037400 e t F i l e P o s ( d i r S , 0037420 0 , 2 * ( h d > > H D . p o s 0037440 ) ) \r W r i t e B l o c k ( d i 0037460 r S , d v , l D V ) \r W r i 0037500 t e B l o c k ( d i r S , n a 0037520 m e , l N a m e I n W o r d s 0037540 ) \r W r i t e B l o c k ( d i r 0037560 S , e x t r a S t u f f , h 0037600 d > > H D . n e e d e d S i z e 0037620 - l D V - l N a m e I n W o r d 0037640 s ) \r \r l e t e x t r a = 0037660 h d > > H D . m a x S i z e - h 0037700 d > > H D . n e e d e d S i z e 0037720 \r i f e x t r a g r 0 t 0037740 h e n 376 001 \0 340 b / / m a k e 0037760 r e m a i n i n g w o r d s 0040000 i n t o a f r e e b l o 0040020 c k \r [ \r l e t h 0040040 = n i l \r h < < D V . 0040060 t y p e = d v T y p e F r e 0040100 e \r h < < D V . l e n g t 0040120 h = e x t r a \r P u t 0040140 s ( d i r S , h ) \r ] \r 0040160 ] \r \f \r / / - - - - - - - - - - 0040200 - - - - - - - - - - - - - - - - * 0040300 - \r a n d P a r s e F i l e N 0040320 a m e ( f n , n , l i s t , 0040340 v e r s i o n C 376 001 \0 033 & o n 0040360 t r o l ) = v a l o f \r / / 0040400 - - - - - - - - - - - - - - - - * 0040500 - - - - - - - - - - - \r / / P 0040520 a r s e s n i n t o f n , 0040540 a p p e n d i n g a $ . 0040560 i f n e c e s s a r y \r / / 0040600 R e t u r n s a d i r e c t 0040620 o r y s t r e a m i n w h 0040640 i c h t o l o o k f o r 0040660 t h e n a m e . \r / / l i s 0040700 t ! 0 = e r r R t n ; l i 0040720 s t ! 1 = z o n e ; l i s 0040740 t ! 3 = d i s k \r [ \r l 376 001 0040760 \0 016 / e t l e n g t h = n 0041000 > > S T R I N G . l e n g t h ; 0041020 l e t s e p = 0 \r f o r 0041040 i = 1 t o l e n g t h 0041060 d o \r [ \r l e t 0041100 c = n > > S T R I N G . c h 0041120 a r ^ i \r i f c e q 0041140 $ < % c e q $ > t h e 0041160 n s e p = i \r ] \r l 0041200 e t d i r F n = v e c m 0041220 a x L e n g t h F n I n W o r d 0041240 s \r E x t r a c t L e g a l F i 0041260 l e N a m e ( n , d i r F n , 0041300 0 , s e p - 1 ) \r E x t r a 0041320 c t L e g a l F i l e N a m e ( 0041340 n , f n , s e p , l e n g 0041360 t h ) 376 001 \0 265 m \r \r / / N o w 0041400 n e e d t o c h e c k t 0041420 o s e e i f d i r F n i 0041440 s n u l l ( i n w h i c h 0041460 c a s e u s e W o r k i n 0041500 g D i r ) \r / / o r < , i 0041520 n w h i c h c a s e u s e 0041540 S y s D i r \r l e t f p = 0041560 0 \r l e t d i s k = l i 0041600 s t ! 3 \r i f d i r F n > > S 0041620 T R I N G . l e n g t h e q 0041640 0 t h e n \r [ \r / 0041660 / A s s u m e w o r k i n g 0041700 d i r e c t o r y : \r f 0041720 p = d i s k > > D S K . f p 0041740 W o r k i n g D i r \r d i 0041760 r F n = d i 376 001 \0 | 245 s k > 0042000 > D S K . n a m e W o r k i n g 0042020 D i r \r i f n > > S T R 0042040 I N G . c h a r ^ s e p e q 0042060 $ < t h e n [ f p = d 0042100 i s k > > D S K . f p S y s D i 0042120 r ; d i r F n = 0 ] \r 0042140 ] \r r e s u l t i s O p e 0042160 n F i l e ( d i r F n , 0 , 0042200 0 , v e r s i o n C o n t r o 0042220 l , f p , l i s t ! 0 , l 0042240 i s t ! 1 , \r n i l , d i s 0042260 k , 0 , # 1 0 0 0 0 0 ) \r ] 0042300 \r \r / / - - - - - - - - - - - - 0042320 - - - - - - - - - - - - - - - - * 0042360 - - - - - - - - - - - - - 376 001 \0 0042400 334 276 - - - - - - - - - - - - - - 0042420 - - - - \r a n d E x t r a c t 0042440 L e g a l F i l e N a m e ( s r 0042460 c S , d e s t S , f i r s t 0042500 M i n u s 1 , l a s t ) b e 0042520 \r / / - - - - - - - - - - - - - 0042540 - - - - - - - - - - - - - - - - * 0042620 - - - - - - - - - - - - - - \r [ 0042640 \r l e t l e n g t h = l a 0042660 s t - f i r s t M i n u s 1 0042700 \r Z e r o ( d e s t S , ( l e 0042720 n g t h + 3 ) r s h i f t 1 0042740 ) / / i n p a r t i c u 0042760 l a r , z e r o l e n g t h 0043000 & 376 001 \0 211 322 g a r b a g e 0043020 b y t e \r i f l e n g t h g 0043040 r 0 t h e n \r [ \r 0043060 f o r i = 1 t o l e 0043100 n g t h d o / / m a k e 0043120 s u r e e a c h c h a r a c 0043140 t e r i s l e g a l \r 0043160 [ \r l e t c 0043200 h a r = s r c S > > S T R I 0043220 N G . c h a r ^ ( f i r s t M i 0043240 n u s 1 + i ) \r s w 0043260 i t c h o n c h a r i n t o 0043300 \r [ \r 0043320 d e f a u l t : \r 0043340 u n l e s s 0043360 ( ( c h a r & 1 3 7 B ) g e 0043400 $ A & ( 376 001 \0 p I c h a r 0043420 & 1 3 7 B ) l e $ Z ) % \r 0043440 ( c h 0043460 a r g e $ 0 & c h a r 0043500 l e $ 9 ) d o c h a r = 0043520 $ - \r c a s 0043540 e $ - : c a s e $ $ : c 0043560 a s e $ ! : c a s e $ ? : 0043600 \r c a s e $ 0043620 + : c a s e $ . : c a s e 0043640 $ < : c a s e $ > : \r 0043660 ] \r d 0043700 e s t S > > S T R I N G . c h a 0043720 r ^ i = c h a r \r 0043740 ] \r d e s t S > > S T R 0043760 I N G . l e n g t h = l e n 0044000 g t h \r S t r i p 376 001 \0 F 0044020 8 V e r s i o n ( d e s t S ) 0044040 / / a p p e n d $ . i f 0044060 n e c e s s a r y \r ] \r 0044100 ] \r \r / / - - - - - - - - - - - 0044120 - - - - - - - - - - - - - - - - * 0044220 \r a n d S e t W o r k i n g D 0044240 i r ( n a m e , f p , d i s 0044260 k ; n u m a r g s n a ) b 0044300 e \r / / - - - - - - - - - - - - 0044320 - - - - - - - - - - - - - - - - * 0044400 - - - - - - - - - - - - - - - \r 0044420 [ 376 001 \0 313 356 \r i f n a l s 0044440 3 t h e n d i s k = s y 0044460 s D i s k \r M o v e B l o c k ( 0044500 d i s k > > D S K . f p W o r k 0044520 i n g D i r , f p , l F P ) 0044540 \r M o v e B l o c k ( d i s k > 0044560 > D S K . n a m e W o r k i n g 0044600 D i r , n a m e , m a x L e 0044620 n g t h F n I n W o r d s ) \r ] 0044640 \r \f \r / / - - - - - - - - - - - 0044660 - - - - - - - - - - - - - - - - * 0044760 \r a n d O p e n F i l e ( n a 0045000 m e , k s T y p e , i t e m 0045020 S i z e , 376 001 \0 341 202 v e r s i 0045040 o n C o n t r o l , h i n t F 0045060 p , e r r R t n , \r z o n e 0045100 , n i l , d i s k , C r e 0045120 a t e S t r e a m , S N w o r 0045140 d ; n u m a r g s n a ) = 0045160 v a l o f \r / / - - - - - - - 0045200 - - - - - - - - - - - - - - - - * 0045300 - - - - \r [ \r l e t d e f a u 0045320 l t F p = v e c l F P \r D 0045340 e f a u l t A r g s ( l v n a 0045360 , - 1 , k s T y p e R e a d 0045400 W r i t e , w o r d I t e m , 0045420 0 , d e f a u l t 376 001 \0 ; 277 0045440 F p , S y s E r r , \r s y s 0045460 Z o n e , n i l , s y s D i 0045500 s k , C r e a t e D i s k S t 0045520 r e a m , 0 ) \r i f v e r s 0045540 i o n C o n t r o l e q 0 0045560 t h e n \r v e r s i o n C 0045600 o n t r o l = k s T y p e 0045620 e q k s T y p e R e a d O n l 0045640 y ? v e r L a t e s t , v e 0045660 r L a t e s t C r e a t e \r \r 0045700 [ / / r e p e a t \r 0045720 / / F o l l o w i n g c h 0045740 e c k t r i e s t o d e c 0045760 i d e w h e t h e r t h e 0046000 h i n t i s f i l l e d i 0046020 n . \r / / I t m a y 0046040 376 001 \0 307 G b e t h a t u s e 0046060 r j u s t w a n t s i t 0046100 f i l l e d i n . \r / / 0046120 O n t h e s e c o n d i 0046140 t e r a t i o n i t w i l l 0046160 a l w a y s c a l l C r e 0046200 a t e S t r e a m . \r i f 0046220 h i n t F p n e d e f a u 0046240 l t F p & h i n t F p > > F 0046260 P . v e r s i o n n e 0 t 0046300 h e n \r [ \r 0046320 l e t s = C r e a t e 0046340 S t r e a m ( h i n t F p , k 0046360 s T y p e , i t e m S i z e , 0046400 N o o p , e r r R t n , \r 0046420 z o n e , n i l , 0046440 d i s k 376 001 \0 225 217 ) \r 0046460 i f s n e 0 r e s u 0046500 l t i s s \r ] \r \r 0046520 i f d e f a u l t F p 0046540 e q 0 r e s u l t i s e r 0046560 r R t n ( n i l , e c C a n t 0046600 O p e n F i l e ) \r d e f 0046620 a u l t F p = 0 / / F 0046640 o r c e C r e a t e S t r e a 0046660 m t o b e d o n e o n 0046700 n e x t i t e r a t i o n \r \r 0046720 / / b l u n d e r c h 0046740 e c k \r i f n a m e e 0046760 q 0 % n a m e > > S T R I 0047000 N G . l e n g t h e q 0 r 0047020 e s u l t i s 0 \r \r l e 0047040 t f i x e d N a m 376 001 \0 X e 0047060 , d v , h d = v e c m 0047100 a x L e n g t h F n I n W o r d 0047120 s , v e c l D V , v e c 0047140 l H D \r \r / / s t r i p 0047160 o f f t h e d i r e c t o 0047200 r y i n f o , r e t u r n 0047220 a n a m e b o d y a n d 0047240 d i r s t r e a m \r l e 0047260 t c u r r e n t D i r S = 0047300 P a r s e F i l e N a m e ( f i 0047320 x e d N a m e , n a m e , l 0047340 v e r r R t n , v e r s i o 0047360 n C o n t r o l ) \r i f 0047400 c u r r e n t D i r S e q 0 0047420 r e s u l t i s 0 / / n 0047440 o s u c h d i r e c t o r 376 0047460 001 \0 217 340 y \r \r / / g o 0047500 l o o k i n t h e d i r e 0047520 c t o r y f o r t h e f i 0047540 l e . \r i f F i n d F d 0047560 E n t r y ( c u r r e n t D i r 0047600 S , f i x e d N a m e , 0 , 0047620 d v , h d ) e q - 1 t 0047640 h e n \r [ / / N 0047660 o t t h e r e ; a l l o w e 0047700 d t o c r e a t e ? \r 0047720 i f ( v e r s i o n C o 0047740 n t r o l & v e r C r M a s 0047760 k ) e q 0 t h e n \r 0050000 [ C l o s e s ( c 0050020 u r r e n t D i r S ) ; r e s 0050040 u l t i s 0 ] \r 0050060 l e t 376 001 \0 M 263 d i r C f a 0050100 = v e c l C F A ; G e t C 0050120 o m p l e t e F a ( c u r r e n 0050140 t D i r S , d i r C f a ) \r 0050160 C r e a t e D i s k F 0050200 i l e ( d i s k , f i x e d N 0050220 a m e , l v d v > > D V . f 0050240 p , l v d i r C f a > > C F 0050260 A . f p , S N w o r d ) \r 0050300 M a k e N e w F d E n t 0050320 r y ( c u r r e n t D i r S , 0050340 f i x e d N a m e , d v , h 0050360 d ) \r ] \r \r C 0050400 l o s e s ( c u r r e n t D i r 0050420 S ) \r M o v e B l o c k ( 0050440 h i n t F p , l v d v > > D 0050460 V . f p , l F P 376 001 \0 361 305 ) \r 0050500 ] r e p e a t \r ] \r \r \r 0050520 / / M o v e d t h i s f r o 0050540 m M D i r s . b c p l t o 0050560 a v o i d s w a p p i n g i 0050600 n D i r e c t o r y o v e r 0050620 l a y \r / / o n L o o k u p E 0050640 n t r i e s c a l l s d u r 0050660 i n g i n i t i a l i z a t i 0050700 o n , w h i c h i s u n n 0050720 e c e s s a r y \r / / w h e n 0050740 t e m p o r a r y f i l e s 0050760 a l r e a d y e x i s t . \r a 0051000 n d S t r i p V e r s i o n ( 0051020 f n , l v V e r s i o n E x i 0051040 s t s ; n u m a r g s n a ) 0051060 = v a l o f \r [ \t i f 376 \0 0051100 265 316 262 n a g r 1 t h e n 0051120 @ l v V e r s i o n E x i s t s 0051140 = f a l s e \r \t l e t l e 0051160 n = f n > > S T R I N G . l 0051200 e n g t h \r \t i f f n > > S T 0051220 R I N G . c h a r ^ l e n n e 0051240 $ . t h e n \r \t [ f n > > 0051260 S T R I N G . l e n g t h = 0051300 l e n + 1 \r \t f n > > S T 0051320 R I N G . c h a r ^ ( l e n + 1 0051340 ) = $ . \r \t ] \r \t r e s u l 0051360 t i s 0 \r ] \r 374 0051371