$ od -c -N 50000 [Indigo]<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