$ od -c -N 50000 [Indigo]<AltoSource>SCAVENGER.DM!3 0000000 377 \0 \0 S c a v e n g e r . d e c 0000020 l \0 373 230 376 l 032 \0 \0 376 001 \0 o & / / 0000040 S c a v e n g e r . d e c l \r 0000060 / / C o p y r i g h t X e r 0000100 o x C o r p o r a t i o n 1 0000120 9 8 1 , 1 9 8 2 \r / / L a s 0000140 t m o d i f i e d M a y 2 0000160 , 1 9 8 2 1 0 : 5 2 P M 0000200 b y B o g g s \r \r / / - - - 0000220 - - - - - - - - - - - - - - - - * 0000340 - - - - - - \r s t r u c t u r e 0000360 F D : \t \t / / F i l e D e 0000400 s c r i p t o r \r / / - - - - - 0000420 - - - - - - - - - - - - - - 376 001 0000440 \0 351 205 - - - - - - - - - - - - - 0000460 - - - - - - - - - - - - - - - - * 0000540 - - - - - - - - - \r [ \r s n @ 0000560 S N \t \t \t / / s e r i a l n 0000600 u m b e r \r f i r s t V D A w 0000620 o r d \t \t / / v d a o f f 0000640 i r s t p a g e \r l a s t V D 0000660 A w o r d \t \t / / v d a o 0000700 f l a s t p a g e \r l a s t 0000720 P N w o r d \t \t / / p a g e 0000740 n u m b e r o f l a s t 0000760 p a g e \r l a s t N u m C h a r 0001000 s b i t 9 \t / / n u m b e 0001020 r o f b y t e s i n l a 0001040 s t 376 \0 364 206 257 p a g e \r b l a 0001060 n k b i t 3 \r d u p l i c a 0001100 t e b i t \t \t / / u s e d 0001120 b y s c a n p a s s \r r e g 0001140 i s t e r e d b i t \t \t / / 0001160 u s e d b y d i r e c t o r 0001200 y p a s s \r s t a t e b i t 0001220 2 \t \t / / s e e b e l o w 0001240 \r ] \r m a n i f e s t l e n F 0001260 D = s i z e F D / 1 6 \r \r 0001300 m a n i f e s t \r [ \r / / F 0001320 D . s t a t e v a l u e s : \r 0001340 f d B e i n g C h e c k e d = 0001360 0 \r f d T o B e C h e c k e d 0001400 = 1 \r f d G o o d = 2 \r 0001420 f d B a d = 3 \r ] \r 377 \0 \0 S 0001440 c a v e n g e r . b c p l \0 373 231 0001460 \b 323 220 \0 \0 376 001 \0 w I / / S c a 0001500 v e n g e r . b c p l - - A 0001520 l t o f i l e s y s t e m 0001540 s c a v e n g e r \r / / C o p 0001560 y r i g h t X e r o x C o r 0001600 p o r a t i o n 1 9 7 9 , 1 0001620 9 8 0 , 1 9 8 1 , 1 9 8 2 \r 0001640 / / L a s t m o d i f i e d 0001660 M a y 1 2 , 1 9 8 2 1 0001700 : 2 1 A M b y B o g g s \r 0001720 \r / / D e s i g n a n d c 0001740 o n s t r u c t i o n : J a m 0001760 e s H . M o r r i s , 1 9 0002000 7 4 . \r / / M a i n t e n a n 0002020 c e : R i c h a r d K . J 0002040 o h n s s o n , 1 9 7 6 - 1 9 0002060 8 1 . \r / / R e n 376 001 \0 005 F o 0002100 v a t i o n : D a v i d R . 0002120 B o g g s , 1 9 8 2 . \r \r g 0002140 e t " A l t o D e f s . d " \r 0002160 g e t " A l t o F i l e S y s 0002200 . d " \r g e t " S t r e a m s 0002220 . d " \r g e t " S y s D e f s 0002240 . d " \r g e t " D i s k s . d 0002260 " \r g e t " B F S . d " \r g e 0002300 t " S c a v e n g e r . d e c 0002320 l " \r \r e x t e r n a l \r [ \r / 0002340 / o u t g o i n g p r o c e 0002360 d u r e s \r S p l i t P u t s \r 0002400 \r / / i n c o m i n g p r o 0002420 c e d u r e s \r I n i t S c a v 0002440 e n g e r \r F i x D i r s ; S 0002460 c a n D i s k ; F o r A l l 376 0002500 001 \0 267 226 F D s \r C o n f i r m ; 0002520 G e t B i t ; W s ; W o u 0002540 l d H a v e \r S t a r t L o g ; 0002560 S t o p L o g ; X f e r P a 0002600 g e ; T r y D i s k \r \r E n d 0002620 o f s ; G e t s ; P u t s ; 0002640 C l o s e s ; R e s e t s \r 0002660 B F S I n i t ; C l o s e D i 0002700 s k ; V i r t u a l D i s k D 0002720 A ; R e a l D i s k D A \r O p 0002740 e n F i l e ; R e a d B l o c 0002760 k ; W r i t e B l o c k ; T 0003000 r u n c a t e D i s k S t r e a 0003020 m \r P o s i t i o n P a g e ; 0003040 S e t F i l e P o s ; G e t C 0003060 o m p l e t e F a ; F i l e L 0003100 e n g t 376 001 \0 312 320 h \r M o v e B 0003120 l o c k ; Z e r o ; D i s a 0003140 b l e I n t e r r u p t s ; D 0003160 o u b l e A d d ; R e t r y C 0003200 a l l ; N o o p \r A d d T o Z 0003220 o n e ; A l l o c a t e ; F 0003240 r e e ; E n q u e u e ; D e 0003260 q u e u e ; J u n t a ; C a 0003300 l l S w a t \r L o a d R a m ; 0003320 I n i t B c p l R u n t i m e ; 0003340 E t h e r B o o t ; P u t T 0003360 e m p l a t e ; S i m p l e D 0003400 s p P u t s \r I n i t i a l i z 0003420 e F s t r e a m ; S e t u p F 0003440 s t r e a m ; C u r r e n t P 0003460 o s \r \r / / o u t g o i n g 0003500 s t a t i c s \r l 376 001 \0 211 245 o g 0003520 ; l o g F l a g ; p t ; b 0003540 t \r \r / / i n c o m i n g s 0003560 t a t i c s \r s y s Z o n e ; 0003600 s y s D i s k ; k e y s ; d 0003620 s p \r m a x V D A ; a l t e r 0003640 F l a g ; l a b e l ; d a t 0003660 a \r u s e d B T ; b a d B T \r 0003700 R a m I m a g e \r ] \r \r s t a t 0003720 i c \r [ \r l o g ; l o g F l a 0003740 g ; p t ; b t \r l e n H a s 0003760 h T a b ; h a s h T a b ; r 0004000 a m F l a g \r ] \r \f \r / / - - - 0004020 - - - - - - - - - - - - - - - - * 0004100 - - - - - - - - - - - - - - 376 001 0004120 \0 350 323 - - - - - - - - - - - - - 0004140 - - - - - - - - - - - \r l e t 0004160 S c a v e n g e r ( b l v , u 0004200 p e , c f a ) b e \r / / - - 0004220 - - - - - - - - - - - - - - - - * 0004340 - - - - - - - \r [ \r r a m F l a 0004360 g = L o a d R a m ( R a m I 0004400 m a g e ) e q 0 \r i f r a 0004420 m F l a g t h e n I n i t B 0004440 c p l R u n t i m e ( ) \r J u n 0004460 t a ( ( r a m F l a g ? l e v 0004500 B u f f e r , l e v B c p l ) 0004520 , A 376 001 \0 332 w f t e r J u n t 0004540 a ) \r ] \r \r / / - - - - - - - - 0004560 - - - - - - - - - - - - - - - - * 0004700 - \r a n d A f t e r J u n t a 0004720 ( ) b e \r / / - - - - - - - - 0004740 - - - - - - - - - - - - - - - - * 0005060 - \r [ \r I n i t S c a v e n g e 0005100 r ( ) \r l e t f r e e E n d 0005120 = s y s Z o n 376 001 \0 230 375 e - 0005140 1 / / a h e m . . . \r l e t 0005160 f r e e B e g i n = r a m 0005200 F l a g ? I n i t S c a v e n 0005220 g e r , I n i t B c p l R u n 0005240 t i m e \r A d d T o Z o n e ( s 0005260 y s Z o n e , f r e e B e g i 0005300 n , f r e e E n d - f r e e B 0005320 e g i n ) \r p t = A l l o c 0005340 a t e ( s y s Z o n e , m a x 0005360 V D A + 1 ) \r b t = A l l o 0005400 c a t e ( s y s Z o n e , ( m 0005420 a x V D A / 1 6 + 1 ) * 2 ) \r 0005440 [ \r S c a n D i s k ( 0005460 ) \r F i x S N s ( ) \r 0005500 F i x D i r s ( ) \r i f 0005520 a l t e r F l a g t h 376 001 \0 0005540 \0 ' e n \r [ \r 0005560 F i x D D ( ) \r 0005600 C l o s e D i s k ( s y s D i 0005620 s k ) \r s y s D i s 0005640 k = B F S I n i t ( s y s Z 0005660 o n e , t r u e ) \r 0005700 i f s y s D i s k e q 0 0005720 t h e n C a l l S w a t ( " 0005740 B F S I n i t f a i l e d " ) 0005760 \r ] \r S t o p 0006000 L o g ( ) \r F i x G a r b 0006020 a g e ( ) \r l e t m e s 0006040 s a g e = l o g F l a g ? 0006060 ( l o g ? " S e e S c a v e 0006100 n g e r . L o g $ " , " E r r 0006120 o r s f o u n d " ) , \r 0006140 " 376 001 \0 ! 343 Y o u h a v e 0006160 a b e a u t i f u l f i l e 0006200 s y s t e m ! " \r i f 0006220 l o g n e 0 t h e n [ 0006240 C l o s e s ( l o g ) ; l o g 0006260 = 0 ] \r P u t T e m 0006300 p l a t e ( d s p , " * N $ S 0006320 " , m e s s a g e ) \r i 0006340 f a l t e r F l a g t h e n 0006360 W r i t e R e m C m ( m e s s 0006400 a g e ) \r u n l e s s l 0006420 o g F l a g & n o t a l t 0006440 e r F l a g d o F i n i s h 0006460 ( ) \r u n l e s s C o n 0006500 f i r m ( " * N D o i t a g 0006520 a i n , a l t e r i n g t h 0006540 e d i s k 376 001 \0 025 256 t o c 0006560 o r r e c t e r r o r s ? " 0006600 ) d o F i n i s h ( ) \r 0006620 a l t e r F l a g , l o g F 0006640 l a g , l o g = t r u e , 0006660 f a l s e , S t a r t L o g 0006700 ( ) \r ] r e p e a t \r ] 0006720 \r \r / / - - - - - - - - - - - - 0006740 - - - - - - - - - - - - - - - - * 0007040 - - - - - - - - - - - - - \r a n 0007060 d F i x D D ( ) b e \r / / - 0007100 - - - - - - - - - - - - - - - - * 0007140 - - - - - - - - - - - - 376 001 \0 o 0007160 \t - - - - - - - - - - - - - - - 0007200 - - - - - - - - - - - - - - - - 0007220 - - - - - - - - - - - - - \r [ \r 0007240 l e t d d = O p e n F i l 0007260 e ( " D i s k D e s c r i p t o 0007300 r " ) \r S e t F i l e P o s ( d 0007320 d , 0 , l K D H e a d e r + 0007340 s y s D i s k > > B F S D S K . 0007360 d i s k B T s i z e ) \r T r u n 0007400 c a t e D i s k S t r e a m ( d 0007420 d ) / / s o C l o s e s 0007440 w o n ' t t r u n c a t e \r R 0007460 e s e t s ( d d ) \r W r i t e B 0007500 l o c k ( d d , s y s D i s k 0007520 > > D S K . d i s k K d , l K 0007540 D H e a d e r ) \r W r i t e B l 0007560 o 376 001 \0 024 257 c k ( d d , u s e 0007600 d B T , s y s D i s k > > B F 0007620 S D S K . d i s k B T s i z e ) 0007640 \r C l o s e s ( d d ) \r ] \r \r / 0007660 / - - - - - - - - - - - - - - - 0007700 - - - - - - - - - - - - - - - - * 0010000 - - - - - - - - - - \r a n d W 0010020 r i t e R e m C m ( m e s s a g 0010040 e ) b e \r / / - - - - - - - - 0010060 - - - - - - - - - - - - - - - - * 0010160 - - - - - - 376 001 \0 317 R - - - - - 0010200 - - - - - - \r [ \r l e t f p 0010220 = v e c l F P ; Z e r o ( 0010240 f p , l F P ) \r l e t o u t 0010260 = O p e n F i l e ( " R e m 0010300 . C m " , k s T y p e W r i t 0010320 e O n l y , c h a r I t e m , 0010340 0 , f p ) \r l e t i n = 0010360 O p e n F i l e ( " R e m . C 0010400 m " , k s T y p e R e a d O n 0010420 l y , c h a r I t e m , 0 , 0010440 f p ) \r P u t T e m p l a t e 0010460 ( o u t , " / / $ S * N " , 0010500 m e s s a g e ) \r u n t i l 0010520 E n d o f s ( i n ) d o P u 0010540 t s ( o u t , G e t s ( i n ) 0010560 ) \r C l o s e s ( i n 376 001 \0 $ 216 0010600 ) \r C l o s e s ( o u t ) \r ] \r 0010620 \f \r / / - - - - - - - - - - - - 0010640 - - - - - - - - - - - - - - - - * 0010740 - - - - - - - - - - - - - \r a n 0010760 d F i x S N s ( ) b e \r / / 0011000 - - - - - - - - - - - - - - - - * 0011120 - - - - - - - - - \r / / T h i 0011140 s r o u t i n e i n s u r e 0011160 s t h a t t h e s e r i a 0011200 376 001 \0 W 332 l n u m b e r s o 0011220 f a l l f i l e s \r / / 0011240 a r e d i f f e r e n t b y 0011260 r e - w r i t i n g l a b e 0011300 l b l o c k s i f n e c e 0011320 s s a r y . \r / / I t a l s 0011340 o u p d a t e s s y s D i s 0011360 k ' s l a s t S N t o b e 0011400 t h e l a r g e s t S N 0011420 o f a n y f i l e . \r [ \r l 0011440 e n H a s h T a b = 1 \r F o 0011460 r A l l F D s ( F i n d M a x S 0011500 N ) \r h a s h T a b = A l l 0011520 o c a t e ( s y s Z o n e , l 0011540 e n H a s h T a b ) \r Z e r o ( 0011560 h a s h T a b , l e n H a s h 0011600 T a b ) \r 376 001 \0 030 8 F o r A l l 0011620 F D s ( C h a n g e S N ) \r F r 0011640 e e ( s y s Z o n e , h a s h 0011660 T a b ) \r ] \r \r / / - - - - - - 0011700 - - - - - - - - - - - - - - - - * 0012020 - - - \r a n d F i n d M a x S 0012040 N ( f d , n i l ) b e \r / / 0012060 - - - - - - - - - - - - - - - - * 0012200 - - - - - - - - - \r 376 001 \0 1 y [ 0012220 \r l e n H a s h T a b = l e 0012240 n H a s h T a b + 2 \r i f s 0012260 y s D i s k > > B F S D S K . l 0012300 a s t S n . p a r t 1 g r f 0012320 d > > F D . s n . p a r t 1 r 0012340 e t u r n \r i f s y s D i s k 0012360 > > B F S D S K . l a s t S n . 0012400 p a r t 1 e q f d > > F D . 0012420 s n . p a r t 1 & \r s y 0012440 s D i s k > > B F S D S K . l a 0012460 s t S n . w o r d 2 u g e f 0012500 d > > F D . s n . w o r d 2 r 0012520 e t u r n \r s y s D i s k > > B 0012540 F S D S K . l a s t S n . p a r 0012560 t 1 = f d > > F D . s n . p 0012600 a r t 1 \r s y s D i s k > > B 376 0012620 001 \0 K 5 F S D S K . l a s t S n 0012640 . w o r d 2 = f d > > F D . 0012660 s n . w o r d 2 \r ] \r \r / / - - 0012700 - - - - - - - - - - - - - - - - * 0013020 - - - - - - - \r a n d C h a n 0013040 g e S N ( f d , n i l ) b e 0013060 \r / / - - - - - - - - - - - - - 0013100 - - - - - - - - - - - - - - - - * 0013200 - - - - - - - - - - - - \r [ \r l 0013220 e t h 376 001 \0 277 t a = ( f d 0013240 > > F D . s n . w o r d 2 & 0013260 7 7 7 7 7 b ) r e m l e n H 0013300 a s h T a b \r [ \r i 0013320 f h a s h T a b ! h a e q 0013340 0 t h e n [ h a s h T a b 0013360 ! h a = f d ; r e t u r n 0013400 ] \r i f ( h a s h T a 0013420 b ! h a ) > > F D . s n . w o r 0013440 d 1 e q f d > > F D . s n . 0013460 w o r d 1 & \r ( h 0013500 a s h T a b ! h a ) > > F D . s 0013520 n . w o r d 2 e q f d > > F 0013540 D . s n . w o r d 2 b r e a k 0013560 \r h a = h a e q l 0013600 e n H a s h T a b - 1 ? 0 , 0013620 h a + 1 / / c 376 001 \0 F y o l 0013640 l i s i o n ; r e p r o b e \r 0013660 ] r e p e a t \r \r / / 0013700 f d i s a d u p l i c a t 0013720 e S N \r D o u b l e A d d ( l 0013740 v s y s D i s k > > B F S D S 0013760 K . l a s t S n , t a b l e 0014000 [ 0 ; 1 ] ) \r s y s D i s 0014020 k > > B F S D S K . l a s t S n 0014040 . d i r e c t o r y = 0 0014060 / / m a k e s u r e \r M o v e 0014100 B l o c k ( l v f d > > F D . 0014120 s n , l v s y s D i s k > > 0014140 B F S D S K . l a s t S n , l 0014160 S N ) \r \r / / c h a n g e t 0014200 h e f i l e ' s l a b e l s 0014220 \r l e t v d a = f d > 376 001 0014240 \0 351 223 > F D . f i r s t V D A \r 0014260 [ \r X f e r P a g e 0014300 ( D C r e a d L D , v d a ) \r 0014320 i f l a b e l > > D L . 0014340 p a g e N u m b e r e q 0 0014360 t h e n \r [ \r 0014400 l o g F l a g = t r u 0014420 e \r P u t T e m p l 0014440 a t e ( d s p , " * N $ P C h 0014460 a n g e d S e r i a l N u m b 0014500 e r o f $ S f r o m $ E 0014520 U O b t o $ E U O b . " , \r 0014540 W o u l d H a v e 0014560 , n i l , l v d a t a > > 0014600 L D . n a m e , l v l a b e 0014620 l > > D L . f i l e I d . s e r 0014640 i a l 376 001 \0 251 } N u m b e r , 0014660 l v f d > > F D . s n ) \r 0014700 ] \r M o v e B l o 0014720 c k ( l v l a b e l > > D L . 0014740 f i l e I d . s e r i a l N u m 0014760 b e r , l v f d > > F D . s 0015000 n , l S N ) \r l a b e l 0015020 > > D L . f i l e I d . v e r s 0015040 i o n = 1 \r i f a l 0015060 t e r F l a g t h e n X f e 0015100 r P a g e ( D C w r i t e L D , 0015120 v d a ) \r v d a = V 0015140 i r t u a l D i s k D A ( s y s 0015160 D i s k , l v l a b e l > > 0015200 D L . n e x t ) \r ] r e 0015220 p e a t u n t i l v d a e q 0015240 e o f D A \r ] 376 001 \0 345 n \r \n \f 0015260 \n \r / / - - - - - - - - - - - - 0015300 - - - - - - - - - - - - - - - - * 0015400 - - - - - - - - - - - - - \r \n a 0015420 n d F i x G a r b a g e ( ) 0015440 b e \r / / - - - - - - - - - - - 0015460 - - - - - - - - - - - - - - - - * 0015560 - - - - - - - - - - - - - - \r \n 0015600 [ \n \r l e t n e x t B a d D A 0015620 = 0 \r f o r v d a = 1 0015640 t o m a x V D A d o 376 001 \0 0015660 I - \r i f G e t B i t ( 0015700 b a d B T , v d a ) t h e n 0015720 [ n e x t B a d D A = v 0015740 d a ; b r e a k ] \r u n l e 0015760 s s n e x t B a d D A n e 0016000 0 r e t u r n \r \r l e t l a 0016020 s t G D A , p r e v G D A = 0016040 0 , 0 \r i f a l t e r F l 0016060 a g t h e n \r [ \r 0016100 / / C a p t u r e a d d r e 0016120 s s o f f i r s t p a g e 0016140 \r l e t s t r e a m = 0016160 O p e n F i l e ( " S c a v e 0016200 n g e r . G a r b a g e $ " ) \r 0016220 l e t c f a = v e c 0016240 l C F A ; G e t C o m p l e 0016260 t e 376 001 \0 357 003 F a ( s t r e a m 0016300 , c f a ) \r C l o s e s 0016320 ( s t r e a m ) \r \n \r \n / 0016340 / F i n d l a s t p a g e 0016360 o f S c a v e n g e r . G a 0016400 r b a g e $ \r l a s t G D 0016420 A = c f a > > C F A . f p . 0016440 l e a d e r V i r t u a l D a \r 0016460 \n \n [ \r 0016500 X f e r P a g e ( D C r e a d L 0016520 D , l a s t G D A ) \r \n 0016540 i f l a b e l > > D L . 0016560 n e x t e q 0 b r e a k \r 0016600 \n l a s t G D A = 0016620 V i r t u a l D i s k D A ( s 0016640 y s D i s k , l v l a b e l 0016660 > > D L . n e 376 001 \0 P 271 x t ) \r 0016700 \n ] r e p e a t \r 0016720 \n \n p r e v G D A = V 0016740 i r t u a l D i s k D A ( s y s 0016760 D i s k , l v l a b e l > > 0017000 D L . p r e v i o u s ) \r \n \r 0017020 \n / / F i x p r e v i o 0017040 u s p a g e ' s f o r w a r 0017060 d l i n k \r X f e r P a 0017100 g e ( D C r e a d L D , p r e 0017120 v G D A ) \r R e a l D i s 0017140 k D A ( s y s D i s k , n e x 0017160 t B a d D A , l v l a b e l 0017200 > > D L . n e x t ) \r X f 0017220 e r P a g e ( D C w r i t e L D 0017240 , p r e v G D A ) \r ] \r 0017260 \r \n \n / / S p l i c e 376 001 \0 ; 0017300 236 i n t h e b a d p a g 0017320 e s \r \n P u t T e m p l a t e ( 0017340 d s p , " * N $ P A d d e d 0017360 t h e s e p a g e s t o S 0017400 c a v e n g e r . G a r b a g e 0017420 $ $ : " , W o u l d H a v e , 0017440 n i l ) \r W s ( " * N V D A 0017460 N e w P N O 0017500 l d P N O l d S N " ) 0017520 \r \n l e t p r e v B a d D A 0017540 = p r e v G D A \r l e t c u 0017560 r r B a d D A = n e x t B a 0017600 d D A \r l e t o l d L a b e l 0017620 = v e c l D L \r \n \n 0017640 [ \r X f e r P a g e ( D C 0017660 r e a d L D , c u r r B a d D 0017700 A 376 001 \0 270 3 , 0 , o l d L a 0017720 b e l ) \r \n P u t T e m p 0017740 l a t e ( d s p , " * N $ U 5 0017760 O b $ U 5 D $ U 0020000 5 D $ E U O b " , \r 0020020 c u r r B a d D A , l a b 0020040 e l > > D L . p a g e N u m b e 0020060 r + 1 , o l d L a b e l > > D 0020100 L . p a g e N u m b e r , \r 0020120 l v o l d L a b e l > > D 0020140 L . f i l e I d . s e r i a l N 0020160 u m b e r ) \r \n \n R e a l 0020200 D i s k D A ( s y s D i s k , 0020220 p r e v B a d D A , l v l a 0020240 b e l > > D L . p r e v i o u s 0020260 ) \r \n [ \r 0020300 n e x t B 376 001 \0 X 300 a d D A 0020320 = n e x t B a d D A + 1 \r 0020340 i f n e x t B a d D 0020360 A g r m a x V D A t h e n 0020400 \r [ R e a l 0020420 D i s k D A ( s y s D i s k , 0020440 l a s t G D A , l v l a b e 0020460 l > > D L . n e x t ) ; b r e 0020500 a k ] \r i f G e 0020520 t B i t ( b a d B T , n e x t 0020540 B a d D A ) t h e n \r 0020560 [ R e a l D i s k D 0020600 A ( s y s D i s k , n e x t B 0020620 a d D A , l v l a b e l > > 0020640 D L . n e x t ) ; b r e a k 0020660 ] \r ] r e p e a t 0020700 \r \n \n l a b e l 376 001 \0 006 261 0020720 > > D L . p a g e N u m b e r 0020740 = l a b e l > > D L . p a g e 0020760 N u m b e r + 1 \r \n \n i 0021000 f a l t e r F l a g t h e n 0021020 X f e r P a g e ( D C w r i t 0021040 e L D , c u r r B a d D A ) \r 0021060 \n p r e v B a d D A = 0021100 c u r r B a d D A \r \n c u 0021120 r r B a d D A = n e x t B a 0021140 d D A \r \n ] r e p e a t 0021160 u n t i l c u r r B a d D A 0021200 g r m a x V D A \r \n \r \n / / 0021220 A d j u s t l a b e l i n 0021240 l a s t p a g e o f S c a 0021260 v e n g e r . G a r b a g e $ \r 0021300 \n l a b e l > > D L . n e x t 0021320 376 001 \0 255 n = 0 \r \n \n R e a l D 0021340 i s k D A ( s y s D i s k , p 0021360 r e v B a d D A , l v l a b 0021400 e l > > D L . p r e v i o u s ) 0021420 \r \n l a b e l > > D L . p a g e 0021440 N u m b e r = l a b e l > > 0021460 D L . p a g e N u m b e r + 1 0021500 \r \n l a b e l > > D L . n u m C 0021520 h a r s = 0 \r \n i f a l t 0021540 e r F l a g t h e n X f e r 0021560 P a g e ( D C w r i t e L D , 0021600 l a s t G D A ) \r \n ] \r \f \r / / 0021620 - - - - - - - - - - - - - - - - * 0021720 - - - - - 376 001 \0 p 335 - - - - - - 0021740 - - - - - - - - - - - - - - \r a 0021760 n d F i n i s h ( ) b e \r / 0022000 / - - - - - - - - - - - - - - - 0022020 - - - - - - - - - - - - - - - - * 0022120 - - - - - - - - - - \r [ \r l e t 0022140 s y s = C h e c k V i t a 0022160 l F i l e ( " S y s . b o o t " 0022200 , 2 5 6 ) \r l e t e x e c 0022220 = C h e c k V i t a l F i l e 0022240 ( " E x e c u t i v e . r u n " 0022260 , 1 0 0 ) \r l e t f o n t 0022300 = C h e c k V i t a l F i l e 0022320 ( " S y s F o n t . 376 001 \0 222 K a 0022340 l " , 4 ) \r i f a l t e r F 0022360 l a g & s y s n e 0 t 0022400 h e n / / R e i n s t a l l 0022420 s y s . b o o t \r [ X 0022440 f e r P a g e ( D C r e a d L D 0022460 , s y s ) ; X f e r P a g e 0022500 ( D C w r i t e H L D , 0 ) 0022520 ] \r i f s y s D i s k n e 0022540 0 t h e n C l o s e D i s k 0022560 ( s y s D i s k ) \r \r i f e x 0022600 e c e q 0 % f o n t e 0022620 q 0 % s y s e q 0 t 0022640 h e n \r [ \r R e s e 0022660 t s ( d s p ) \r W s ( " * 0022700 N I t ' s u n l i k e l y t 0022720 h i s d i s k w i l l b 376 0022740 001 \0 366 321 o o t . S o m e v 0022760 i t a l f i l e s a r e m 0023000 i s s i n g o r d a m a g e 0023020 d . " ) \r W s ( " * N F o 0023040 l l o w i n g e a c h f i l 0023060 e n a m e a r e s t e p s 0023100 o u t l i n i n g a w a y 0023120 t o r e c o v e r . " ) \r 0023140 u n l e s s s y s d o 0023160 W s ( " * N S y s . b o 0023200 o t : 1 ) N e t E x e c 2 ) 0023220 N e w O S 3 ) Y o u n e e d 0023240 t o I n s t a l l . " ) \r 0023260 u n l e s s e x e c d o 0023300 W s ( " * N E x e c u t 0023320 i v e . r u n : 1 ) N e t E x 0023340 e c 2 376 001 \0 ; 375 ) F t p 3 ) 0023360 R e t r i e v e ' E x e c u t 0023400 i v e . r u n ' . " ) \r u 0023420 n l e s s f o n t d o W s 0023440 ( " * N S y s F o n t . a 0023460 l : 1 ) N e t E x e c 2 ) F 0023500 t p 3 ) R e t r i e v e a 0023520 f o n t a s ' S y s F o n t 0023540 . a l ' . " ) \r i f C o 0023560 n f i r m ( " * N S h a l l I 0023600 g e t t h e N e t E x e c 0023620 ? " ) t h e n E t h e r B 0023640 o o t ( 1 0 b ) \r W s ( " 0023660 * N T y p e a n y c h a r a 0023700 c t e r t o t r y b o o t 0023720 i n g f r o m t h e d i s 0023740 k a n y w a y : 376 001 \0 _ b " ) 0023760 \r G e t s ( k e y s ) \r 0024000 ] \r C l o s e s ( d s p ) \r 0024020 \r / / B o o t t h e O S 0024040 f r o m t h e d i s k w i 0024060 t h o u t u s i n g S I O . 0024100 \r / / T h i s i s h o w 0024120 t h e m i c r o c o d e d o 0024140 e s i t . \r D i s a b l e I n 0024160 t e r r u p t s ( ) \r @ d i s p 0024200 l a y L i s t H e a d = 0 ; 0024220 f o r i = 0 t o 3 2 0024240 0 0 0 l o o p \r @ 2 = T r 0024260 y D i s k ( 0 , 0 , 0 , 0 0024300 ) \r M o v e B l o c k ( 4 0 2 b 0024320 , l a b e l , l D L ) \r M o 0024340 v e B l o c k ( 1 , d a t 376 001 0024360 \0 335 a a , 2 5 6 ) \r g o t o 0024400 1 \r ] \r \r / / - - - - - - - - - 0024420 - - - - - - - - - - - - - - - - * 0024540 \r a n d C h e c k V i t a l F 0024560 i l e ( n a m e , l e n g t h 0024600 ) = v a l o f \r / / - - - - 0024620 - - - - - - - - - - - - - - - - * 0024740 - - - - - \r / / R e t u r n s 0024760 0 376 001 \0 " 024 i f f i l e 0025000 i s m i s s i n g o r l e 0025020 s s t h e n l e n g t h p 0025040 a g e s l o n g . \r / / R e 0025060 t u r n s V D A o f p a g 0025100 e 1 o t h e r w i s e . \r [ 0025120 \r u n l e s s a l t e r F l a 0025140 g r e s u l t i s t r u e \r 0025160 l e t s = O p e n F i l e 0025200 ( n a m e , k s T y p e R e a 0025220 d O n l y ) ; i f s e q 0025240 0 r e s u l t i s 0 \r l e t 0025260 c f a , p n , v d a = 0025300 v e c l C F A , n i l , n 0025320 i l \r F i l e L e n g t h ( s ) 0025340 ; G e t C o m p l e t e F a ( 0025360 s , c f a ) \r 376 001 \0 201 N p n 0025400 = c f a > > C F A . f a . p a 0025420 g e N u m b e r \r P o s i t i o 0025440 n P a g e ( s , 1 ) ; G e t 0025460 C o m p l e t e F a ( s , c f 0025500 a ) \r v d a = c f a > > C F 0025520 A . f a . d a \r C l o s e s ( s 0025540 ) \r r e s u l t i s p n u l 0025560 s l e n g t h ? 0 , v d a 0025600 \r ] \r \f \r / / - - - - - - - - - 0025620 - - - - - - - - - - - - - - - - * 0025740 \r a n d S t a r t L o g ( ) 0025760 = v a l o f \r / / - - - 376 001 \0 0026000 \f 271 - - - - - - - - - - - - - - 0026020 - - - - - - - - - - - - - - - - * 0026120 - - - - - - - - \r [ \r l o g = 0026140 A l l o c a t e ( s y s Z o n 0026160 e , l F S ) \r I n i t i a l i 0026200 z e F s t r e a m ( l o g , c 0026220 h a r I t e m , L o g O v e r 0026240 f l o w , C a l l S w a t ) \r 0026260 L o g O v e r f l o w ( ) \r r e 0026300 s u l t i s l o g \r ] \r \r / / 0026320 - - - - - - - - - - - - - - - - * 0026400 - - 376 001 \0 016 323 - - - - - - - - - 0026420 - - - - - - - - - - - - - - - - 0026440 - - - - - - - - - - - - - - \r a 0026460 n d L o g O v e r f l o w ( n 0026500 i l , c h a r ; n u m a r g 0026520 s n a ) b e \r / / - - - - - 0026540 - - - - - - - - - - - - - - - - * 0026660 - - - - \r [ \r m a n i f e s t 0026700 [ b l k S i z e = 2 5 6 ; 0026720 b l k C h a r s = 2 * ( b 0026740 l k S i z e - 2 ) ] \r l e t 0026760 b u f = A l l o c a t e ( s 0027000 y s Z o n e , 376 001 \0 224 : b l k 0027020 S i z e , t r u e ) \r t e s t 0027040 b u f e q 0 \r i f s 0027060 o l o g > > S T . p u t s = 0027100 N o o p / / g u l p . . . 0027120 \r i f n o t \r 0027140 [ \r E n q u e u e ( 0027160 l o g , b u f ) \r 0027200 b u f ! 1 = b l k C h a r s 0027220 \r S e t u p F s t r 0027240 e a m ( l o g , b u f + 2 , 0027260 0 , b l k C h a r s ) \r 0027300 i f n a e q 2 t h 0027320 e n R e t r y C a l l ( l o g 0027340 , c h a r ) \r ] \r 0027360 ] \r \r / / - - - - - - - - - - - 0027400 - - - - - - - - - - - - 376 001 \0 356 0027420 Q - - - - - - - - - - - - - - - 0027440 - - - - - - - - - - - - - - - - * 0027520 - - - \r a n d S t o p L o g ( 0027540 ) b e \r / / - - - - - - - - - 0027560 - - - - - - - - - - - - - - - - * 0027700 \r [ \r l e t s = 0 \r i f 0027720 l o g F l a g & a l t e r F 0027740 l a g t h e n s = O p e 0027760 n F i l e ( " S c a v e n g e r 0030000 . L o g $ " , k s T y p e W r 0030020 i 376 001 \0 224 N t e O n l y , c h 0030040 a r I t e m ) \r [ \r 0030060 l e t b u f = l o g > > S 0030100 T . p a r 1 ; i f b u f e 0030120 q 0 b r e a k \r l o g 0030140 > > S T . p a r 1 = b u f ! 0030160 0 \r i f s t h e n \r 0030200 [ \r l e t 0030220 n c = b u f ! 0 e q 0 0030240 ? C u r r e n t P o s ( l o g 0030260 ) , b u f ! 1 \r W 0030300 r i t e B l o c k ( s , b u f 0030320 + 2 , n c / 2 ) \r 0030340 i f ( n c & 1 ) e q 1 0030360 t h e n P u t s ( s , ( ( 0030400 b u f + 2 ) ! ( n c / 2 ) ) r 0030420 s h i f t 376 001 \0 234 322 8 ) \r 0030440 ] \r F r e e ( s y 0030460 s Z o n e , b u f ) \r ] 0030500 r e p e a t \r F r e e ( s y s 0030520 Z o n e , l o g ) ; l o g 0030540 = s \r ] \r \r / / - - - - - - - 0030560 - - - - - - - - - - - - - - - - * 0030700 - - \r a n d S p l i t P u t s 0030720 ( n i l , c h a r ) b e \r / 0030740 / - - - - - - - - - - - - - - - 0030760 - - - - - - - - - - - - - - - - * 0031020 - - - - - - - - - - - 376 \0 f ~ 345 0031040 - - - - - - - - - - - - - - - - 0031060 - - - - - - - - - - - - - - - \r 0031100 [ \r S i m p l e D s p P u t s ( 0031120 d s p , c h a r ) / / a h 0031140 e m \r i f l o g n e 0 t 0031160 h e n P u t s ( l o g , c h 0031200 a r ) \r ] \r 377 \0 \0 S c a v I n i 0031220 t . b c p l \0 373 231 301 g 327 \0 \0 376 001 0031240 \0 246 304 / / S c a v I n i t - 0031260 - o n c e o n l y i n i t 0031300 i a l i z a t i o n \r / / C o 0031320 p y r i g h t X e r o x C o 0031340 r p o r a t i o n 1 9 7 9 , 0031360 1 9 8 0 , 1 9 8 1 , 1 9 8 2 0031400 \r / / L a s t m o d i f i e 0031420 d A p r i l 3 0 , 1 9 8 2 0031440 8 : 5 8 P M b y B o g 0031460 g s \r \r g e t " A l t o D e f 0031500 s . d " \r g e t " A l t o F i 0031520 l e S y s . d " \r g e t " S t 0031540 r e a m s . d " \r g e t " D i 0031560 s k s . d " \r g e t " B F S . 0031600 d " \r \r e x t e r n a l \r [ \r / 0031620 / o u t g o i n g p r o c e 0031640 d u r 376 001 \0 027 254 e s \r I n i t S 0031660 c a v e n g e r \r \r / / i n c 0031700 o m i n g p r o c e d u r e s 0031720 \r E d i t D i s k ; T r y D i 0031740 s k ; D i s k T o C u r s o r 0031760 ; W s ; C o n f i r m \r S t 0032000 a r t L o g ; S p l i t P u t 0032020 s ; S y s E r r ; F i n d D 0032040 S h a p e \r S c a v A s s i g n 0032060 D i s k P a g e ; S c a v R e 0032100 l e a s e D i s k P a g e \r \r C 0032120 r e a t e S i m p l e D s p S t 0032140 r e a m ; C r e a t e K e y b 0032160 o a r d S t r e a m \r S i m p l 0032200 e D s p E r a s e B i t s ; S 0032220 i m p l e D s p C h a r W i d t 0032240 h ; S i m p l 376 001 \0 017 " e D s 0032260 p D C B \r I n i t i a l i z e Z 0032300 o n e ; A l l o c a t e ; E 0032320 n d o f s ; G e t s ; P u t 0032340 s \r B F S I n i t ; B F S C r 0032360 e a t e F i l e ; B F S D e l 0032400 e t e P a g e s \r M o v e B l o 0032420 c k ; Z e r o ; M y F r a m 0032440 e ; I d l e \r P u t T e m p l 0032460 a t e \r \r / / o u t g o i n g 0032500 s t a t i c s \r s y s Z o n e 0032520 ; s y s D i s k ; d s p \r m 0032540 a x V D A ; a l t e r F l a g 0032560 ; l a b e l ; d a t a \r \r / 0032600 / i n c o m i n g s t a t i 0032620 c s \r g a c h a 1 0 ; k e y s 0032640 ; l o g \r ] \r \r s t a t 376 001 \0 0032660 250 024 i c \r [ \r s y s Z o n e ; 0032700 s y s D i s k ; d s p \r m a x 0032720 V D A ; a l t e r F l a g ; 0032740 l a b e l ; d a t a \r ] \r \r m 0032760 a n i f e s t \r [ \r d s p H e i 0033000 g h t = 1 0 0 \t / / s c a n 0033020 l i n e s \r d s p W i d t h 0033040 = 3 6 \t / / w o r d s \r ] \r \f 0033060 \r / / - - - - - - - - - - - - - 0033100 - - - - - - - - - - - - - - - - * 0033200 - - - - - - - - - - - - \r l e t 0033220 I n i t S c a v e n g e r ( ) 0033240 b e \r / / - - - - - - - - - - 0033260 - - 376 001 \0 207 250 - - - - - - - - - 0033300 - - - - - - - - - - - - - - - - * 0033400 - - - - \r [ \r / / c r e a t e 0033420 c u r s o r \r M o v e B l o c 0033440 k ( c u r s o r B i t M a p , 0033460 t a b l e [ 1 7 7 7 0 0 b ; 0033500 7 7 6 0 0 b ; 3 7 4 0 0 b ; 0033520 1 7 7 0 0 b ; 7 3 6 0 b ; \r 0033540 3 0 7 4 b ; 1 0 1 7 b ; 3 0033560 ; 0 ; 0 ; 0 ; 1 6 7 1 1 0033600 2 b ; 1 0 5 2 5 2 b ; 4 4 2 0033620 5 2 b ; 2 5 3 5 2 b ; 1 6 7 0033640 2 4 4 b ] , 1 6 ) \r I d l e 0033660 = D i s k 376 001 \0 356 326 T o C u 0033700 r s o r \r \r / / c r e a t e 0033720 s y s Z o n e \r m a n i f e s t 0033740 s t a c k L i m i t = 3 3 0033760 5 b \r l e t f r e e B e g i n 0034000 = @ s t a c k L i m i t \r l 0034020 e t f r e e E n d = M y F 0034040 r a m e ( ) - 1 5 0 0 \r @ s t 0034060 a c k L i m i t = f r e e E 0034100 n d \r i f f r e e E n d - f r 0034120 e e B e g i n l s 0 t h e 0034140 n f r e e B e g i n = f r 0034160 e e E n d - 7 7 7 7 7 b \r s y s 0034200 Z o n e = I n i t i a l i z 0034220 e Z o n e ( f r e e B e g i n , 0034240 f r e e E n d - f r e e B e g 0034260 i n ) \r \r / / c r e a 376 001 \0 377 0034300 217 t e k e y b o a r d , d i 0034320 s p l a y , a n d l o g s 0034340 t r e a m s \r l o g = S t a 0034360 r t L o g ( ) \r k e y s = C 0034400 r e a t e K e y b o a r d S t r 0034420 e a m ( ) \r d s p = C r e a 0034440 t e S i m p l e D s p S t r e a 0034460 m ( A l l o c a t e ( s y s Z o 0034500 n e , d s p H e i g h t * d s 0034520 p W i d t h , f a l s e , t 0034540 r u e ) , \r d s p W i d t h , 0034560 d s p H e i g h t , g a c h 0034600 a 1 0 ) \r d s p > > S T . p u t 0034620 s = S p l i t P u t s \r l e 0034640 t d s p D C B = S i m p l 0034660 e D s p D C B ( d s p ) \r d s p 0034700 D 376 001 \0 237 321 C B > > D C B . i n 0034720 d e n t a t i o n = 3 \r l e 0034740 t s p a c e D C B = A l l 0034760 o c a t e ( s y s Z o n e , l 0035000 D C B , f a l s e , t r u e 0035020 ) ; Z e r o ( s p a c e D C B 0035040 , l D C B ) \r s p a c e D C B 0035060 > > D C B . h e i g h t = 2 0035100 0 \r s p a c e D C B > > D C B . 0035120 n e x t = d s p D C B \r @ d 0035140 i s p l a y L i s t H e a d = 0035160 s p a c e D C B \r W s ( " A l 0035200 t o F i l e S y s t e m S 0035220 c a v e n g e r o f S e p t 0035240 e m b e r 2 9 , 1 9 8 2 " ) 0035260 \r \r / / d e f a u l t l a b 0035300 e l a n d 376 001 \0 320 262 d a t a 0035320 b u f f e r s - - u s e d 0035340 b y e v e r y o n e \r l a b 0035360 e l = A l l o c a t e ( s y 0035400 s Z o n e , l D L ) \r d a t a 0035420 = A l l o c a t e ( s y s Z 0035440 o n e , 2 5 6 ) \r \r / / g i 0035460 v e u s e r a c h a n c e 0035500 t o c h a n g e d i s k s 0035520 \r l e t e n g = ( t a b l 0035540 e [ 6 1 0 1 4 b ; 1 4 0 1 0035560 b ] ) ( ) < < V E R S . e n g 0035600 \r i f e n g l e 3 t h e 0035620 n i f C o n f i r m ( " * N 0035640 D o y o u w a n t t o c 0035660 h a n g e d i s k s ? " ) t 0035700 h e n \r [ \r 376 001 \0 244 F 0035720 W s ( " * N C h a n g e t h 0035740 e m n o w . T y p e a n 0035760 y c h a r a c t e r t o p 0036000 r o c e e d . " ) \r G e t 0036020 s ( k e y s ) \r ] \r W a i 0036040 t F o r D i s k ( 0 ) \r \r s y s 0036060 D i s k = B F S I n i t ( s 0036100 y s Z o n e , f a l s e , 0 0036120 , 0 , t r u e ) \r s y s D i 0036140 s k > > D S K . A s s i g n D i 0036160 s k P a g e = S c a v A s s 0036200 i g n D i s k P a g e \r s y s D 0036220 i s k > > D S K . R e l e a s e 0036240 D i s k P a g e = S c a v R 0036260 e l e a s e D i s k P a g e \r s 0036300 y s D i s k > > D S K . C r e a 0036320 376 001 \0 r \v t e D i s k F i l e 0036340 = B F S C r e a t e F i l e \r 0036360 s y s D i s k > > D S K . D e l 0036400 e t e D i s k P a g e s = B 0036420 F S D e l e t e P a g e s \r \f \r 0036440 / / I n i t S c a v e n g e r 0036460 ( c o n t ' d ) \r l e t r e 0036500 s = v a l o f / / d u m 0036520 m y c o n t r o l s t r u c 0036540 t u r e t o b r e a k t w 0036560 o l o o p s \r [ \r l e t s t 0036600 a t u s = T r y D i s k ( 0 0036620 , 0 , 0 , 1 ) & D S T 0036640 g o o d S t a t u s M a s k \r l 0036660 e t d s = d a t a + F 0036700 i n d D S h a p e ( d a t a ) 0036720 + 1 \r t e 376 001 \0 275 = s t s t a 0036740 t u s e q D S T g o o d S t 0036760 a t u s & d s > > D S H A P 0037000 E . n H e a d s e q 2 & \r 0037020 ( d s > > D S H A P E . n D i 0037040 s k s e q 1 % d s > > D 0037060 S H A P E . n D i s k s e q 0037100 2 ) & \r ( d s > > D S H A P 0037120 E . n T r a c k s e q 2 0 3 0037140 % d s > > D S H A P E . n T 0037160 r a c k s e q 4 0 6 ) & \r 0037200 ( d s > > D S H A P E . n S e 0037220 c t o r s e q 1 2 % d s 0037240 > > D S H A P E . n S e c t o r 0037260 s e q 1 4 ) \r i f s o 0037300 \r [ \r s 0037320 y s D i s k > > B F 376 001 \0 % 213 S 0037340 D S K . n D i s k s = d s > 0037360 > D S H A P E . n D i s k s \r 0037400 s y s D i s k > > B F 0037420 S D S K . n T r a c k s = d 0037440 s > > D S H A P E . n T r a c k 0037460 s \r s y s D i s k > 0037500 > B F S D S K . n S e c t o r s 0037520 = d s > > D S H A P E . n S 0037540 e c t o r s \r ] \r 0037560 i f n o t \r [ \r 0037600 i f s y s D i s k 0037620 > > B F S D S K . n D i s k s 0037640 e q 2 t h e n \r 0037660 i f T r y D i s k ( 1 , 0037700 0 , 0 , 0 ) < < D S T . f 0037720 i n a l S t a t u s n e 0 376 0037740 001 \0 b E t h e n \r 0037760 s y s D i s k > > B 0040000 F S D S K . n D i s k s = 1 0040020 \r i f s y s D i s 0040040 k > > B F S D S K . n T r a c k 0040060 s e q 4 0 6 t h e n \r 0040100 i f T r y D i s 0040120 k ( 0 , 2 0 3 , 0 , 0 ) < 0040140 < D S T . f i n a l S t a t u s 0040160 n e 0 t h e n \r 0040200 s y s D i s k > > 0040220 B F S D S K . n T r a c k s = 0040240 2 0 3 \r i f s y 0040260 s D i s k > > B F S D S K . n S 0040300 e c t o r s e q 1 4 t h e 0040320 n \r i f T r 0040340 y D i s 376 001 \0 360 333 k ( 0 , 0 , 0040360 0 , 1 3 ) < < D S T . f i n 0040400 a l S t a t u s n e 0 t h 0040420 e n \r s 0040440 y s D i s k > > B F S D S K . n 0040460 S e c t o r s = 1 2 \r 0040500 ] \r \r [ \r l e 0040520 t c u r P a r t = e n g 0040540 g r 3 ? ( t a b l e [ 6 0040560 1 0 3 7 b ; 1 4 0 1 b ] ) ( 0040600 0 ) , n i l \r P u t s ( 0040620 d s p , $ * N ) ; i f e n 0040640 g g r 3 t h e n P u t T 0040660 e m p l a t e ( d s p , " P a 0040700 r t i t i o n : $ D , " , 0040720 c u r P a r t ) \r P u t T 0040740 e m p l a t e ( d 376 001 \0 V ~ s p 0040760 , " D i s k s : $ D , C y 0041000 l i n d e r s : $ D , H e a 0041020 d s : 2 , S e c t o r s : 0041040 $ D " , \r s y s D i s k 0041060 > > B F S D S K . n D i s k s , 0041100 s y s D i s k > > B F S D S K 0041120 . n T r a c k s , s y s D i s 0041140 k > > B F S D S K . n S e c t o 0041160 r s ) \r P u t T e m p l a 0041200 t e ( d s p , " * N R e a d y 0041220 t o s c a v e n g e a $ 0041240 S m o d e l - $ S $ S f i l 0041260 e s y s t e m " , \r ( 0041300 s y s D i s k > > B F S D S K . 0041320 n D i s k s e q 1 ? " s i 0041340 n g l e " , " d u a l " ) 376 001 0041360 \0 362 240 , \r ( s y s D i s 0041400 k > > B F S D S K . n T r a c k 0041420 s e q 2 0 3 ? " 3 1 " , 0041440 " 4 4 " ) , \r ( e n g 0041460 g r 3 ? ( s y s D i s k > > 0041500 B F S D S K . n S e c t o r s 0041520 e q 1 2 ? " 1 2 - s e c t o 0041540 r " , " 1 4 - s e c t o r 0041560 " ) , " " ) ) \r i f C 0041600 o n f i r m ( " [ c o n f i r 0041620 m ] " ) t e s t ( k b d A d 0041640 ! 2 & 4 0 0 0 b ) e q 0 0041660 \r i f s o [ E d 0041700 i t D i s k ( ) ; b r e a k 0041720 ] i f n o t r e s u l t i s 0041740 0 \r i f e n g g r 0041760 3 t 376 001 \0 324 \n h e n \r 0042000 [ \r l e t n 0042020 e w P a r t = G e t N u m b 0042040 e r ( " * N P a r t i t i o n 0042060 n u m b e r " , c u r P a r 0042100 t ) \r i f n e w P 0042120 a r t n e c u r P a r t & 0042140 n e w P a r t n e 0 t h 0042160 e n \r [ ( t 0042200 a b l e [ 6 1 0 3 7 b ; 1 0042220 4 0 1 b ] ) ( n e w P a r t ) 0042240 ; b r e a k ] \r 0042260 ] \r u n l e s s T r y D 0042300 i s k ( 1 , 0 , 0 , 0 ) < 0042320 < D S T . n o t R e a d y d o 0042340 \r s y s D i s k > > 0042360 B F S D S K . n 376 001 \0 266 306 D i s 0042400 k s = C o n f i r m ( " * N 0042420 U s e b o t h d i s k s ? " 0042440 ) ? 2 , 1 \r u n l e s 0042460 s T r y D i s k ( 0 , 2 0 3 0042500 , 0 , 0 ) < < D S T . s e e 0042520 k F a i l d o \r s 0042540 y s D i s k > > B F S D S K . n 0042560 T r a c k s = C o n f i r m 0042600 ( " * N U s e a l l 4 0 6 0042620 c y l i n d e r s ? " ) ? 4 0 0042640 6 , 2 0 3 \r u n l e s s 0042660 T r y D i s k ( 0 , 0 , 0 0042700 , 1 3 ) < < D S T . f i n a l 0042720 S t a t u s e q b a d S e c 0042740 t o r d o \r s y s 0042760 D i s k > > B F S D S K . 376 001 \0 0043000 226 ; n S e c t o r s = C o n 0043020 f i r m ( " * N U s e a l l 0043040 1 4 s e c t o r s ? " ) ? 1 0043060 4 , 1 2 \r ] r e p e a 0043100 t \r ] r e p e a t / / a 0043120 l s o v a l o f \r \r i f s y 0043140 s D i s k > > B F S D S K . n D 0043160 i s k s e q 2 t h e n W 0043200 a i t F o r D i s k ( 1 ) \r m a 0043220 x V D A = s y s D i s k > > 0043240 B F S D S K . n D i s k s * 0043260 s y s D i s k > > B F S D S K . 0043300 n T r a c k s * \r 2 * s 0043320 y s D i s k > > B F S D S K . n 0043340 S e c t o r s - 1 \r s y s D i 0043360 s k > > B F S D S K . d i s k B 0043400 T s 376 001 \0 Q i z e = m a x 0043420 V D A / 1 6 + 1 \r a l t e r F 0043440 l a g = C o n f i r m ( " * 0043460 N M a y I a l t e r y o u 0043500 r d i s k t o c o r r e c 0043520 t e r r o r s ? " ) \r W s ( " 0043540 * N P r o c e e d i n g w i t 0043560 h s c a v e n g e . . . " ) \r 0043600 ] \r \f \r / / - - - - - - - - - - 0043620 - - - - - - - - - - - - - - - - * 0043720 - - - - - - - - - - - - - - - \r 0043740 a n d G e t N u m b e r ( p r 0043760 o m p t , n u m b e r ) = 0044000 v a l o f \r / 376 001 \0 * V / - - - 0044020 - - - - - - - - - - - - - - - - * 0044140 - - - - - - \r [ \r W s ( p r o m 0044160 p t ) \r P u t T e m p l a t e ( 0044200 d s p , " $ U O " , n u m b 0044220 e r ) \r l e t d i g i t T y p 0044240 e d = f a l s e \r [ \r 0044260 l e t c h a r = G e 0044300 t s ( k e y s ) \r s w i t 0044320 c h o n c h a r i n t o \r 0044340 [ \r c a s 0044360 e $ * N : c a s e $ * S : 0044400 c a s e $ * 0 3 3 : 376 001 \0 266 0044420 350 \r r e s u l 0044440 t i s n u m b e r \r 0044460 c a s e $ * 1 7 7 : \r 0044500 W s ( " X X X " ) 0044520 ; r e s u l t i s 0 \r 0044540 c a s e $ 0 t o $ 7 0044560 : \r [ \r 0044600 u n l e s s d i g 0044620 i t T y p e d w h i l e n u 0044640 m b e r n e 0 d o \r 0044660 [ \r 0044700 S i m p l e D s p 0044720 E r a s e B i t s ( d s p , - 0044740 S i m p l e D s p C h a r W i d 0044760 t h ( d s p , ( n u m b e r & 0045000 7 ) + $ 0 ) ) \r 0045020 376 001 \0 G 341 n u m b e r 0045040 = n u m b e r r s h i f t 0045060 3 \r ] \r 0045100 n u m b e r 0045120 = n u m b e r l s h i f t 0045140 3 + c h a r - $ 0 \r 0045160 P u t s ( d s p , c 0045200 h a r ) \r d i 0045220 g i t T y p e d = t r u e \r 0045240 e n d c a s e 0045260 \r ] \r 0045300 c a s e $ * 0 0 1 : c a 0045320 s e $ * 0 1 0 : \r 0045340 [ \r i f 0045360 n u m b e r n e 0 t h e 0045400 n \r S i 0045420 m p l e D s 376 001 \0 ? 250 p E r a s 0045440 e B i t s ( d s p , - S i m p 0045460 l e D s p C h a r W i d t h ( d 0045500 s p , ( n u m b e r & 7 ) + $ 0045520 0 ) ) \r n u m 0045540 b e r = n u m b e r l s h 0045560 i f t 3 \r e 0045600 n d c a s e \r 0045620 ] \r ] \r ] r 0045640 e p e a t \r ] \r \r / / - - - - - 0045660 - - - - - - - - - - - - - - - - * 0046000 - - - - \r a n d W a i t F o r 0046020 D i s k ( d s k ) b 376 001 \0 m * 0046040 e \r / / - - - - - - - - - - - - 0046060 - - - - - - - - - - - - - - - - * 0046160 - - - - - - - - - - - - - \r [ \r 0046200 i f T r y D i s k ( d s k , 0046220 0 , 0 , 0 ) < < D S T . n o 0046240 t R e a d y t h e n \r [ 0046260 \r P u t T e m p l a t e ( 0046300 d s p , " * N W a i t i n g 0046320 f o r d r i v e $ D t o 0046340 b e c o m e r e a d y . . . " 0046360 , d s k ) \r u n t i l 0046400 d i s k S t a t u s > > D S T . 0046420 n o t R e a d y e q 0 l o 0046440 376 \0 032 R 314 o p \r W s ( " R 0046460 e a d y ! " ) \r ] \r ] \r 377 0046500 \0 \0 S c a v E d i t . b c p l \0 0046520 373 230 374 ] 021 \0 \0 376 001 \0 331 : / / S 0046540 c a v E d i t - - D i s k 0046560 e d i t o r \r / / C o p y r i 0046600 g h t X e r o x C o r p o r 0046620 a t i o n 1 9 7 9 , 1 9 8 0 0046640 , 1 9 8 1 , 1 9 8 2 \r / / 0046660 L a s t m o d i f i e d M a 0046700 y 2 , 1 9 8 2 2 : 2 5 0046720 P M b y B o g g s \r \r g e t 0046740 " A l t o F i l e S y s . d " 0046760 \r g e t " D i s k s . d " \r g 0047000 e t " B F S . d " \r \r e x t e 0047020 r n a l \r [ \r / / o u t g o i 0047040 n g p r o c e d u r e s \r E d 0047060 i t D i s k \r \r / / i n c o m 0047100 i n g p r o c e d u r e s \r C 0047120 o n f i r m ; W s ; 376 001 \0 0047140 } X f e r P a g e \r P u t T e m 0047160 p l a t e ; V i r t u a l D i 0047200 s k D A \r P u t s ; G e t s ; 0047220 R e s e t s \r S i m p l e D s 0047240 p E r a s e B i t s ; S i m p 0047260 l e D s p C h a r W i d t h \r \r 0047300 / / i n c o m i n g s t a t 0047320 i c s \r s y s Z o n e ; s y s 0047340 D i s k ; k e y s ; d s p \r 0047360 l a b e l ; d a t a ; l o g 0047400 F l a g \r ] \r \r s t a t i c \r [ 0047420 \r a d d r e s s ; n u m b e r 0047440 ; n u m b e r T y p e d ; t 0047460 e r m C h a r \r p a g e O p e n 0047500 ; c e l l O p e n ; p a g e 0047520 D i r t y \r ] \r \f \r / / - - - - 0047540 - 376 001 \0 / @ - - - - - - - - - - 0047560 - - - - - - - - - - - - - - - - * 0047660 - - - - - - - - - - \r l e t E 0047700 d i t D i s k ( ) b e \r / / - 0047720 - - - - - - - - - - - - - - - - * 0050040 - - - - - - - - \r [ \r l o g F l 0050060 a g = t r u e / / w r i 0050100 t e l o g \r W s ( " * N D i s 0050120 k e d i t o r h e r e . 0050140 I f y o u 376 001 \0 313 c d o n ' 0050160 t k n o w w h a t I a m 0050200 t y p e ' Q < c r > ' N O 0050220 W ! * N " ) \r E x a m i n e P a 0050240 g e ( t r u e ) \r \r s w i t c h 0050260 o n G e t N u m b e r ( ) i 0050300 n t o \r [ \r c a s e 0050320 $ / : \r a d d r e 0050340 s s = n u m b e r \r 0050360 E x a m i n e P a g e ( n o 0050400 t n u m b e r T y p e d ) \r 0050420 e n d c a s e \r 0050440 c a s e $ ^ : c a s e $ * 0050460 L : \r t e s t n u 0050500 m b e r T y p e d \r 0050520 i f s o W s ( " ? " ) 0050540 \r i 376 001 \0 320 264 0050560 f n o t \r 0050600 [ \r a 0050620 d d r e s s = a d d r e s s 0050640 + ( t e r m C h a r e q 0050660 $ * L ? 1 , - 1 ) \r 0050700 E x a m i n e P 0050720 a g e ( t r u e ) \r 0050740 ] \r e n 0050760 d c a s e \r c a s e $ \ 0051000 : \r t e s t n u m 0051020 b e r T y p e d % n o t p 0051040 a g e O p e n \r 0051060 i f s o W s ( " ? " ) \r 0051100 i f n o t \r 0051120 [ \r 0051140 a d d r e s s 0051160 376 001 \0 316 335 = V i r t u a l D i 0051200 s k D A ( s y s D i s k , l v 0051220 l a b e l > > D L . p r e v i 0051240 o u s ) \r 0051260 E x a m i n e P a g e ( t r u 0051300 e ) \r ] 0051320 \r e n d c a s e \r 0051340 c a s e $ L : c a s e 0051360 $ l : \r E d i t P a 0051400 g e ( l a b e l , 8 ) \r 0051420 e n d c a s e \r c a 0051440 s e $ D : c a s e $ d : \r 0051460 E d i t P a g e ( d 0051500 a t a , 2 5 6 ) \r 0051520 e n d c a s e \r c a s e 0051540 $ Q : c a s e $ q : \r 0051560 i f 376 001 \0 267 247 C o n f i 0051600 r m ( " * N Q u i t d i s k 0051620 e d i t o r [ c o n f i r m ] 0051640 " ) b r e a k \r e 0051660 n d c a s e \r c a s e $ 0051700 * N : \r P u t s ( d 0051720 s p , $ * N ) \r p 0051740 a g e O p e n = f a l s e \r 0051760 e n d c a s e \r 0052000 c a s e $ * 1 7 7 : e n d 0052020 c a s e \r d e f a u l t : 0052040 W s ( " ? " ) ; e n d c a 0052060 s e \r ] r e p e a t \r ] 0052100 \r \f \r / / - - - - - - - - - - - 0052120 - - - - - - - - - - - - - - - - * 0052160 - - - - - - - - - - 376 001 \0 : 312 - 0052200 - - - - - - - - - - - - - - - - * 0052240 - - - \r a n d E d i t P a g e 0052260 ( b u f f e r , l e n g t h ) 0052300 b e \r / / - - - - - - - - - - 0052320 - - - - - - - - - - - - - - - - * 0052420 - - - - - - - - - - - - - - - \r 0052440 [ \r i f n u m b e r T y p e d 0052460 % n o t p a g e O p e n 0052500 t h e n [ W s ( " ? " ) ; 0052520 r e t u r n ] \r l e t d i 0052540 s k A d d r e s s = a d d r 0052560 e s s ; a d d r e s s = 376 0052600 001 \0 ^ c 0 \r l e t d i s k N u 0052620 m b e r = n u m b e r ; n 0052640 u m b e r = 0 \r p a g e D i 0052660 r t y = f a l s e \r P u t T 0052700 e m p l a t e ( d s p , " * N 0052720 E d i t i n g $ S r e c o r 0052740 d * N " , b u f f e r e q 0052760 l a b e l ? " l a b e l " , 0053000 " d a t a " ) \r E x a m i n e C 0053020 e l l ( b u f f e r , l e n g 0053040 t h , t r u e ) \r \r s w i t c 0053060 h o n G e t N u m b e r ( ) 0053100 i n t o \r [ \r c a s 0053120 e $ / : \r a d d r 0053140 e s s = n u m b e r \r 0053160 E x a m i n e C e l l ( b 0053200 u f f e 376 001 \0 351 \0 r , l e n g 0053220 t h , n o t n u m b e r T y 0053240 p e d ) \r e n d c a 0053260 s e \r c a s e $ ^ : c 0053300 a s e $ * L : \r i 0053320 f D e p o s i t C e l l ( b u 0053340 f f e r ) t h e n \r 0053360 [ \r a 0053400 d d r e s s = a d d r e s s 0053420 + ( t e r m C h a r e q 0053440 $ * L ? 1 , - 1 ) \r 0053460 E x a m i n e C e l l 0053500 ( b u f f e r , l e n g t h , 0053520 t r u e ) \r 0053540 ] \r e n d c a s e \r 0053560 c a s e $ Q : c a s e 0053600 $ q : \r 376 001 \0 $ 311 0053620 i f C o n f i r m ( " * N Q u 0053640 i t p a g e e d i t o r [ 0053660 c o n f i r m ] " ) b r e a k 0053700 \r e n d c a s e \r 0053720 c a s e $ * N : \r 0053740 P u t s ( d s p , $ * N ) 0053760 \r D e p o s i t C e 0054000 l l ( b u f f e r ) \r 0054020 e n d c a s e \r c a s e 0054040 $ * 1 7 7 : e n d c a s e \r 0054060 d e f a u l t : W s ( " 0054100 ? " ) ; e n d c a s e \r 0054120 ] r e p e a t \r \r n u m b e 0054140 r = d i s k N u m b e r \r a 0054160 d d r e s s = d i s k A d d 0054200 r e s s \r i f p a g e D i 376 001 0054220 \0 246 017 r t y t h e n X f e r 0054240 P a g e ( D C w r i t e L D , 0054260 a d d r e s s ) \r E x a m i n e 0054300 P a g e ( t r u e ) \r ] \r \r / / 0054320 - - - - - - - - - - - - - - - - * 0054440 - - - - - - - - - \r a n d E x 0054460 a m i n e P a g e ( p r i n t A 0054500 d d r e s s ) b e \r / / - - - 0054520 - - - - - - - - - - - - - - - - * 0054620 - - - 376 001 \0 9 246 - - - - - - - - 0054640 - - - - - - - - - - - \r [ \r i f 0054660 a d d r e s s e q e o f D 0054700 A t h e n [ W s ( " ? " 0054720 ) ; p a g e O p e n = f a 0054740 l s e ; r e t u r n ] \r i f 0054760 p r i n t A d d r e s s t h 0055000 e n P u t T e m p l a t e ( d 0055020 s p , " * N $ U 6 O b " , a 0055040 d d r e s s ) \r W s ( " / 0055060 " ) \r \r X f e r P a g e ( D C r 0055100 e a d L D , a d d r e s s ) \r 0055120 n u m b e r = V i r t u a l 0055140 D i s k D A ( s y s D i s k , 0055160 l v l a b e l > > D L . n e x 0055200 t ) \r P u t T e m p l a t e ( d 0055220 s p , " S N 376 001 \0 206 3 $ E U 0055240 O b , P N $ U D , N C $ 0055260 U D , b a c k P $ U O b , 0055300 n e x t P $ U O b " , \r l 0055320 v l a b e l > > D L . f i l e 0055340 I d . s e r i a l N u m b e r , 0055360 l a b e l > > D L . p a g e N 0055400 u m b e r , l a b e l > > D L 0055420 . n u m C h a r s , \r V i r t 0055440 u a l D i s k D A ( s y s D i s 0055460 k , l v l a b e l > > D L . 0055500 p r e v i o u s ) , n u m b e 0055520 r ) \r \r p a g e O p e n = t 0055540 r u e \r ] \r \f \r / / - - - - - - 0055560 - - - - - - - - - - - - - - - - * 0055620 - - - - - - - - - - - - - 376 001 \0 0055640 303 222 - - - - - - - - - - - - - - 0055660 - - - - - - - - - - - - - - - - 0055700 - - - - - - - - \r a n d E x a 0055720 m i n e C e l l ( b u f f e r , 0055740 l e n g t h , p r i n t A d 0055760 d r e s s ) b e \r / / - - - - 0056000 - - - - - - - - - - - - - - - - * 0056120 - - - - - \r [ \r i f a d d r e 0056140 s s u g e l e n g t h t h 0056160 e n \r [ i f t e r m C 0056200 h a r n e $ * L t h e n 0056220 W s ( " ? " ) ; c e l l O p 0056240 e n 376 001 \0 306 J = f a l s e ; 0056260 r e t u r n ] \r i f p r i 0056300 n t A d d r e s s t h e n P 0056320 u t T e m p l a t e ( d s p , 0056340 " * N $ U O b " , a d d r e s 0056360 s ) \r i f b u f f e r e q 0056400 l a b e l t h e n W s ( s e 0056420 l e c t o n a d d r e s s i 0056440 n t o \r [ \r c a s e 0056460 0 : " = n e x t " \r 0056500 c a s e 1 : " = b a 0056520 c k " \r c a s e 2 : 0056540 " = 0 " \r c a 0056560 s e 3 : " = N C " 0056600 \r c a s e 4 : " = 0056620 P N " \r c a s e 5 0056640 : " = V 376 001 \0 217 034 N 0056660 " \r c a s e 6 : " = 0056700 S N 1 " \r c a s e 0056720 7 : " = S N 2 " \r 0056740 ] ) \r W s ( " / " ) \r \r 0056760 P u t T e m p l a t e ( d s p , 0057000 " $ 6 U O b " , b u f 0057020 f e r ! a d d r e s s ) \r i f 0057040 b u f f e r e q d a t a t 0057060 h e n / / a l s o d i s p 0057100 l a y a s c h a r a c t e r 0057120 s \r [ \r l e t l e 0057140 f t = b u f f e r ! a d d r 0057160 e s s r s h i f t 8 \r 0057200 l e t r i g h t = b u f f 0057220 e r ! a d d r e s s & 3 7 7 0057240 b \r P u t T e m p 376 001 \0 7 0057260 \v l a t e ( d s p , " $ 3 U O 0057300 b $ 3 U O b " , l e f 0057320 t , r i g h t ) \r P r i 0057340 n t C h a r ( l e f t ) \r 0057360 P r i n t C h a r ( r i g h t ) 0057400 \r ] \r \r n u m b e r = 0057420 b u f f e r ! a d d r e s s \r c 0057440 e l l O p e n = t r u e \r ] 0057460 \r \r / / - - - - - - - - - - - - 0057500 - - - - - - - - - - - - - - - - * 0057600 - - - - - - - - - - - - - \r a n 0057620 d P r i n t C h a r ( c h a r 0057640 ) b e \r / / - - - - - - - - - 0057660 - 376 001 \0 346 373 - - - - - - - - - - 0057700 - - - - - - - - - - - - - - - - * 0060000 - - - - - \r [ \r i f c h a r 0060020 l s 4 0 b t h e n P u t T 0060040 e m p l a t e ( d s p , " ^ $ 0060060 C " , c h a r + 1 0 0 b ) \r i 0060100 f c h a r g e 4 0 b & 0060120 c h a r l s 1 7 6 b t h e 0060140 n P u t s ( d s p , c h a r 0060160 ) \r ] \r \r / / - - - - - - - - - 0060200 - - - - - - - - - - - - - - - - * 0060260 - - - - - - 376 001 \0 4 305 - - - - - 0060300 - - - - - - - - - - - - - - - - 0060320 - - - - - \r a n d D e p o s i 0060340 t C e l l ( b u f f e r ) = 0060360 v a l o f \r / / - - - - - - - - 0060400 - - - - - - - - - - - - - - - - * 0060520 - \r [ \r i f n u m b e r T y p 0060540 e d t e s t c e l l O p e n 0060560 \r i f s o \r [ 0060600 \r b u f f e r ! a d 0060620 d r e s s = n u m b e r \r 0060640 p a g e D i r t y = 0060660 t r u e \r 376 001 \0 377 P 0060700 ] \r i f n o t \r 0060720 [ \r W s ( " ? 0060740 " ) \r r e s u l t i 0060760 s f a l s e \r ] \r 0061000 c e l l O p e n = f a l s e 0061020 \r r e s u l t i s t r u e \r ] 0061040 \r \f \r / / - - - - - - - - - - - 0061060 - - - - - - - - - - - - - - - - * 0061160 - - - - - - - - - - - - - - \r a 0061200 n d G e t N u m b e r ( ) = 0061220 v a l o f \r / / - - - - - - - 0061240 - - - - - - - - - - - - - - - - * 0061300 376 001 \0 Q ) - - - - - - - - - - - 0061320 - - - - - - - - - - - - - - - - * 0061360 - - - - - - - \r [ \r m a n i f e 0061400 s t m a x S t r i n g C h a r 0061420 s = 7 / / 6 o c t a l 0061440 d i g i t s + m i n u s 0061460 s i g n \r l e t s t r i n g 0061500 = v e c m a x S t r i n g C 0061520 h a r s / / 1 c h a r p 0061540 e r w o r d \r l e t c o u n 0061560 t = 0 / / c h a r s i 0061600 n s t r i n g \r [ \r 0061620 t e r m C h a r = G e t s 0061640 ( k e y s ) \r s w i t c h 0061660 o n t e r m C h a r i n t o 0061700 \r 376 001 \0 265 X [ \r 0061720 c a s e $ 0 t o $ 0061740 7 : c a s e $ - : \r 0061760 i f ( t e r m C h a 0062000 r e q $ - ) ? ( c o u n 0062020 t e q 0 ) , ( c o u n t 0062040 l s m a x S t r i n g C h a r 0062060 s ) t h e n \r 0062100 [ \r 0062120 P u t s ( d s p , t e r m 0062140 C h a r ) \r 0062160 c o u n t = c o u n t 0062200 + 1 \r s 0062220 t r i n g ! c o u n t = t e 0062240 r m C h a r \r 0062260 ] \r e n 0062300 d c a s e \r 376 001 \0 I a 0062320 c a s e $ * 0 0 1 : c a s 0062340 e $ * 0 1 0 : / / ^ A , 0062360 B S \r i f c 0062400 o u n t n e 0 t h e n \r 0062420 [ \r 0062440 S i m p l e D 0062460 s p E r a s e B i t s ( d s p , 0062500 - S i m p l e D s p C h a r W 0062520 i d t h ( d s p , s t r i n g 0062540 ! c o u n t ) ) \r 0062560 c o u n t = c o u 0062600 n t - 1 \r 0062620 ] \r e n d 0062640 c a s e \r c a s e 0062660 $ * 0 2 7 : / / ^ W \r 0062700 f o r i = c 376 0062720 001 \0 | 307 o u n t t o 1 b y 0062740 - 1 d o \r 0062760 S i m p l e D s p E r a s 0063000 e B i t s ( d s p , - S i m p 0063020 l e D s p C h a r W i d t h ( d 0063040 s p , s t r i n g ! i ) ) \r 0063060 c o u n t = 0063100 0 \r e n d c a 0063120 s e \r c a s e $ * 0063140 1 7 7 : W s ( " X X X " ) ; 0063160 c o u n t = 0 / / f a 0063200 l l s t h r o u g h \r 0063220 d e f a u l t : b r e a k 0063240 \r ] \r ] r e 0063260 p e a t \r n u m b e r T y p e d 0063300 = c o u n t n e 0 \r i f 0063320 n u m 376 \0 355 Z V b e r T y p e 0063340 d t h e n \r [ \r n 0063360 u m b e r = 0 \r l e t 0063400 m i n u s = f a l s e \r 0063420 i f s t r i n g ! 1 e q 0063440 $ - t h e n m i n u s = 0063460 t r u e \r f o r i = 0063500 ( m i n u s ? 2 , 1 ) t 0063520 o c o u n t d o \r 0063540 n u m b e r = n u m b e r 0063560 l s h i f t 3 + ( s t r 0063600 i n g ! i & 7 ) \r i f 0063620 m i n u s t h e n n u m b 0063640 e r = - n u m b e r \r 0063660 ] \r r e s u l t i s t e r m C 0063700 h a r \r ] \r 377 \0 \0 S c a v S c a 0063720 n . b c p l \0 373 231 301 g 271 \0 \0 376 001 0063740 \0 330 / / S c a v S c a n . b 0063760 c p l - - a n a l y z e s 0064000 t h e d i s k \r / / C o p y 0064020 r i g h t X e r o x C o r p 0064040 o r a t i o n 1 9 7 9 , 1 9 0064060 8 0 , 1 9 8 1 , 1 9 8 2 \r / 0064100 / L a s t m o d i f i e d 0064120 S e p t e m b e r 2 9 , 1 9 0064140 8 2 1 : 3 0 A M b y B 0064160 o g g s \r \r g e t " A l t o F 0064200 i l e S y s . d " \r g e t " A 0064220 l t o D e f s . d " \r g e t " 0064240 S t r e a m s . d " \r g e t " 0064260 D i s k s . d " \r g e t " B F 0064300 S . d " \r g e t " S c a v e n 0064320 g e r . d e c l " \r \r e x t e r 0064340 n a l 376 001 \0 005 u \r [ \r / / o u 0064360 t g o i n g p r o c e d u r e 0064400 s \r S c a n D i s k ; C r e a 0064420 t e D ; F o r A l l F D s ; 0064440 C h e c k e d V D A \r \r / / i 0064460 n c o m i n g p r o c e d u r 0064500 e s \r X f e r P a g e ; X f e 0064520 r E r r o r ; G e t B i t ; 0064540 S e t B i t \r G e t S t r i n g 0064560 ; C o n f i r m ; W s ; S 0064600 y s E r r \r \r G e t D i s k C b 0064620 ; D o D i s k C o m m a n d \r 0064640 V i r t u a l D i s k D A ; I 0064660 n i t i a l i z e D i s k C B Z 0064700 \r I d l e ; N o o p ; Z e r 0064720 o ; S e t B l o c k ; M o v 0064740 e B l o c k \r A 376 001 \0 016 032 l l o 0064760 c a t e ; F r e e ; E n q u 0065000 e u e ; D e q u e u e ; U n 0065020 q u e u e \r P u t T e m p l a t 0065040 e \r \r / / o u t g o i n g s 0065060 t a t i c s \r u s e d B T ; b 0065100 a d B T ; f d b Q \r b a n z a 0065120 i F l a g \r \r / / i n c o m i 0065140 n g s t a t i c s \r s y s Z o 0065160 n e ; s y s D i s k ; d s p 0065200 ; l o g \r m a x V D A ; a l 0065220 t e r F l a g ; l a b e l ; 0065240 d a t a \r l o g F l a g ; p t 0065260 ; b t \r ] \r \r s t a t i c \r [ 0065300 \r u s e d B T ; b a d B T ; 0065320 f d b Q ; r d b Q \r b a n z a 0065340 i F l a g ; r e s t a r 376 001 \0 0065360 v z t F l a g \r ] \r \f \r m a n i 0065400 f e s t \r [ \r / / p t r e 0065420 s e r v e d v a l u e s : \r p 0065440 t F r e e = - 1 \r p t I n c 0065460 o r = - 2 \r p t G o o d = 0065500 - 3 \r p t B a d = - 4 \r p 0065520 t T o B e C h e c k e d = - 0065540 5 \r ] \r \r s t r u c t u r e R 0065560 D : \t \t / / R u n D e s c r 0065600 i p t o r \r [ \r f d w o r d \t 0065620 \t \t / / - > f d f o r t 0065640 h i s f i l e \r f i r s t B a 0065660 c k w o r d \t \t / / b a c k 0065700 P o f f i r s t p a g e 0065720 o f r u n \r f i r s t P N w 0065740 o r d \t \t / / P N o f f i 0065760 r s 376 001 \0 < 1 t p a g e o f 0066000 r u n \r l a s t N e x t w o 0066020 r d \t \t / / n e x t P o f 0066040 l a s t p a g e o f r u n 0066060 \r u s e d b i t \t \t / / t h 0066100 i s R D i s p a r t o f 0066120 a c h a i n s t a r t i n 0066140 g f r o m a n F D \r l a s 0066160 t P N b i t 1 5 \t \t / / P 0066200 N o f l a s t p a g e o 0066220 f r u n \r ] \r m a n i f e s t 0066240 l e n R D = s i z e R D 0066260 / 1 6 \r \r s t r u c t u r e D 0066300 B : \t \t / / F i l e o r R 0066320 u n D e s c r i p t o r B l 0066340 o c k \r [ \r l i n k w o r d \t 0066360 \t / / - > 376 001 \0 277 363 n e x t 0066400 D B o r z e r o i f n 0066420 o n e \r p t r w o r d \t \t / / 0066440 D B - r e l a t i v e p t r 0066460 t o n e x t a v a i l a b 0066500 l e w o r d \r m a x w o r d 0066520 \t \t / / D B - r e l a t i v e 0066540 p t r t o f i r s t w o 0066560 r d n o t i n D B \r ] \r m 0066600 a n i f e s t l e n D B = 0066620 s i z e D B / 1 6 \r \r s t r u 0066640 c t u r e D Q : \t \t / / Q u 0066660 e u e o f D B s \r [ \r h e a 0066700 d w o r d \t \t / / h e a d 0066720 o f q u e u e o f D B s \r 0066740 t a i l w o r d \t \t / / t a 0066760 i l o f q u e u e 376 001 \0 005 0067000 % o f D B s \r l e n D w o r 0067020 d \t \t / / l e n g t h o f 0067040 D s i n a D B o n t h 0067060 i s q u e u e \r ] \r m a n i f 0067100 e s t l e n D Q = s i z e 0067120 D Q / 1 6 \r \r s t r u c t u r 0067140 e S t r i n g [ l e n g t 0067160 h b y t e ; c h a r ^ 1 , 1 0067200 b y t e ] \r \f \r / / - - - - 0067220 - - - - - - - - - - - - - - - - * 0067340 - - - - - \r l e t S c a n D i 0067360 s k ( ) b e \r / / - - - - - - 0067400 - 376 001 \0 276 \a - - - - - - - - - - 0067420 - - - - - - - - - - - - - - - - * 0067520 - - - - - - - - \r [ \r Z e r o ( 0067540 p t , m a x V D A + 1 ) ; p 0067560 t ! 0 = p t G o o d / / 0067600 p a g e z e r o \r Z e r o ( b 0067620 t , m a x V D A / 8 + 1 ) \r f 0067640 d b Q = A l l o c a t e ( s 0067660 y s Z o n e , l e n D Q ) ; 0067700 Z e r o ( f d b Q , l e n D Q 0067720 ) ; f d b Q > > D Q . l e n D 0067740 = l e n F D \r r d b Q = 0067760 A l l o c a t e ( s y s Z o n e 0070000 , l e n D 376 001 \0 373 242 Q ) ; Z 0070020 e r o ( r d b Q , l e n D Q ) 0070040 ; r d b Q > > D Q . l e n D 0070060 = l e n R D \r \r s y s Z o n e 0070100 ! 2 = S c a n O u t O f S p 0070120 a c e \r [ \r / / S 0070140 c a n t h e d i s k b u i 0070160 l d i n g d a t a s t r u c 0070200 t u r e s a n d d o i n g 0070220 p a g e - l e v e l c h e c k 0070240 s \r r e s t a r t F l a g 0070260 = f a l s e \r l e t 0070300 z o n e L e n g t h = s y s 0070320 D i s k > > D S K . l e n g t h 0070340 C B Z + 2 8 * s y s D i s k 0070360 > > D S K . l e n g t h C B \r 0070400 l e t c b z = 376 001 \0 336 016 0070420 A l l o c a t e ( s y s Z o n 0070440 e , z o n e L e n g t h ) \r 0070460 I n i t i a l i z e D i s k 0070500 C B Z ( s y s D i s k , c b z 0070520 , 0 , z o n e L e n g t h , 0070540 S c a n R e t r y , l v S 0070560 c a n E r r o r ) \r c b z 0070600 > > C B Z . c l e a n u p R o u 0070620 t i n e = S c a n C l e a n 0070640 u p \r S c a n R e t r y : 0070660 l e t s c a n V D A = c 0070700 b z > > C B Z . e r r o r D A \r 0070720 w h i l e s c a n V D A 0070740 l e m a x V D A & n o t 0070760 r e s t a r t F l a g d o \r 0071000 [ \r i f 0071020 376 001 \0 7 226 p t ! s c a n V D A 0071040 e q 0 t h e n \r 0071060 D o D i s k C o m m a n 0071100 d ( s y s D i s k , G e t D i 0071120 s k C b ( s y s D i s k , c b 0071140 z ) , d a t a , s c a n V D 0071160 A , 0 , 0 , D C r e a d L 0071200 D ) \r i f ( s c a 0071220 n V D A & 7 7 b ) e q 0 0071240 t h e n I d l e ( ) \r 0071260 s c a n V D A = s c a 0071300 n V D A + 1 \r ] \r 0071320 w h i l e @ c b z > > C 0071340 B Z . q u e u e H e a d n e 0071360 0 d o G e t D i s k C b ( s 0071400 y s D i s k , c b z ) \r 0071420 F r e e ( 376 001 \0 022 S s y s Z o n 0071440 e , c b z ) \r i f r e 0071460 s t a r t F l a g l o o p \r 0071500 f o r v d a = 0 t o 0071520 m a x V D A i f p t ! v d 0071540 a e q p t T o B e C h e c k 0071560 e d t h e n p t ! v d a = 0071600 0 \r \r / / D o f i l 0071620 e - l e v e l c h e c k s \r 0071640 r e s t a r t F l a g = 0071660 f a l s e \r F o r A l l F 0071700 D s ( C h e c k F i l e ) \r 0071720 C o m p a c t D B s ( ) \r 0071740 ] r e p e a t w h i l e r 0071760 e s t a r t F l a g \r s y s Z o 0072000 n e ! 2 = S y s E r r \r F r 0072020 e e ( s y s Z o n e 376 001 \0 235 217 , 0072040 r d b Q ) \r \r / / C r e a t 0072060 e u s e d - p a g e a n d 0072100 b a d - p a g e b i t - t a b 0072120 l e s \r u s e d B T = b t ; 0072140 Z e r o ( u s e d B T , m a 0072160 x V D A / 1 6 + 1 ) \r b a d B T 0072200 = b t + m a x V D A / 1 6 + 0072220 1 ; Z e r o ( b a d B T , m 0072240 a x V D A / 1 6 + 1 ) \r f o r 0072260 v d a = 0 t o m a x V D 0072300 A d o \r [ \r l e t 0072320 p = p t ! v d a \r t 0072340 e s t p e q p t F r e e \r 0072360 i f s o s y s D i 0072400 s k > > B F S D S K . f r e e P 0072420 a g e s = s y s D i s k > 376 0072440 001 \0 370 i > B F S D S K . f r e e 0072460 P a g e s + 1 \r i 0072500 f n o t S e t B i t ( u s e d 0072520 B T , v d a , t r u e ) \r 0072540 u n l e s s p e q p t 0072560 G o o d % p e q p t F r 0072600 e e % p e q p t I n c o 0072620 r d o \r [ S e t 0072640 B i t ( b a d B T , v d a , 0072660 t r u e ) ; l o g F l a g = 0072700 t r u e ] \r ] \r f o r 0072720 v d a = m a x V D A + 1 0072740 t o ( m a x V D A / 1 6 ) * 1 0072760 6 + 1 5 d o S e t B i t ( u 0073000 s e d B T , v d a , t r u e 0073020 ) \r ] \r \f \r / / - - - - - - - - 0073040 - - - - 376 001 \0 331 230 - - - - - - - 0073060 - - - - - - - - - - - - - - - - * 0073160 - - - - - - \r a n d S c a n C 0073200 l e a n u p ( d i s k , c b , 0073220 c b z ) b e \r / / - - - - - 0073240 - - - - - - - - - - - - - - - - * 0073360 - - - - \r [ \r i f r e s t a r 0073400 t F l a g r e t u r n \r l e t 0073420 v d a = V i r t u a l D i 0073440 s k D A ( s y s D 376 001 \0 375 ` i s 0073460 k , l v c b > > C B . d i s 0073500 k A d d r e s s ) \r l e t d l 0073520 = c b > > C B . l a b e l A 0073540 d d r e s s \r \r / / C h e c k 0073560 f o r s p e c i a l l a b 0073600 e l s \r l e t f i d = l v 0073620 d l > > D L . f i l e I d \r i 0073640 f f i d ! 0 e q - 1 & 0073660 f i d ! 1 e q - 1 & f i 0073700 d ! 2 e q - 1 t h e n [ 0073720 p t ! v d a = p t F r e e 0073740 ; r e t u r n ] \r i f f i 0073760 d ! 0 e q - 2 & f i d ! 0074000 1 e q - 2 & f i d ! 2 0074020 e q - 2 t h e n [ p t ! 0074040 v d a = p t I n c o r ; 376 001 0074060 \0 177 272 r e t u r n ] \r \r l e 0074100 t p n = d l > > D L . p a 0074120 g e N u m b e r \r l e t n c 0074140 = d l > > D L . n u m C h a r 0074160 s \r l e t n e x t P = C h 0074200 e c k e d V D A ( l v d l > > 0074220 D L . n e x t ) \r l e t b a c 0074240 k P = C h e c k e d V D A ( 0074260 l v d l > > D L . p r e v i o 0074300 u s ) \r \r / / C h e c k f o 0074320 r o b v i o u s d a m a g e 0074340 \r i f n c u g r 5 1 2 % 0074360 p n u g r m a x V D A % 0074400 n e x t P e q v d a % 0074420 b a c k P e q v d a % \r 0074440 n e x t P e q e o f D A & 0074460 ( n 376 001 \0 306 340 c e q 5 1 2 0074500 % p n e q 0 % b a c 0074520 k P e q e o f D A ) % \r 0074540 b a c k P e q e o f D A & 0074560 ( n c n e 5 1 2 % p n 0074600 n e 0 ) % \r n e x t P 0074620 n e e o f D A & ( n c n 0074640 e 5 1 2 % n e x t P u g 0074660 r m a x V D A ) % \r b a c 0074700 k P n e e o f D A & ( p 0074720 n e q 0 % b a c k P u 0074740 g r m a x V D A ) t h e n 0074760 [ p t ! v d a = p t B a d 0075000 ; r e t u r n ] \r \r / / W 0075020 o r k o n t h e F D \r l e 0075040 t s n = l v d l > > D L 0075060 . f i l e I d . 376 001 \0 237 225 s e r 0075100 i a l N u m b e r \r l e t b e 0075120 s t , d u p l i c a t e = 0075140 0 , f a l s e \r l e t h a 0075160 = ( s n > > S N . w o r d 2 0075200 & 7 7 7 7 7 b ) r e m ( m 0075220 a x V D A / 8 + 1 ) \r l e t f 0075240 d = v a l o f \r [ \r 0075260 l e t f = b t ! h a ; 0075300 i f f e q 0 r e s u l 0075320 t i s b e s t \r i f f 0075340 > > F D . s n . w o r d 2 e q 0075360 s n > > S N . w o r d 2 & 0075400 f > > F D . s n . w o r d 1 e 0075420 q s n > > S N . w o r d 1 t 0075440 h e n \r [ \r 0075460 i f b a c k P n e 376 001 \0 0075500 ; g e o f D A r e s u l t i 0075520 s f \r i f f > > 0075540 F D . f i r s t V D A e q v 0075560 d a r e s u l t i s f \r 0075600 t e s t f > > F D . f 0075620 i r s t V D A e q 0 \r 0075640 i f s o b e s t 0075660 = f \r i f n 0075700 o t [ f > > F D . d u p l i 0075720 c a t e = t r u e ; d u p 0075740 l i c a t e = t r u e ] \r 0075760 ] \r h a = 0076000 h a e q m a x V D A / 8 ? 0076020 0 , h a + 1 \r ] r e p 0076040 e a t \r i f f d e q 0 t 0076060 h e n \r [ \r f d = 0076100 C 376 001 \0 231 N r e a t e D ( f d 0076120 b Q ) ; i f f d e q 0 0076140 r e t u r n \r l e t h a 0076160 = ( s n > > S N . w o r d 2 0076200 & 7 7 7 7 7 b ) r e m ( 0076220 m a x V D A / 8 + 1 ) \r 0076240 [ \r i f b t ! 0076260 h a e q 0 t h e n [ b 0076300 t ! h a = f d ; b r e a k 0076320 ] / / i n s e r t \r 0076340 h a = h a e q m a 0076360 x V D A / 8 ? 0 , h a + 1 0076400 / / c o l l i s i o n ; r e 0076420 p r o b e \r ] r e 0076440 p e a t \r f d > > F D . s 0076460 n . w o r d 1 = s n > > S N 0076500 . w o r d 1 \r 376 001 \0 h 207 f 0076520 d > > F D . s n . w o r d 2 = 0076540 s n > > S N . w o r d 2 \r 0076560 f d > > F D . d u p l i c a t 0076600 e = d u p l i c a t e \r 0076620 ] \r i f b a c k P e q e 0076640 o f D A t h e n f d > > F D 0076660 . f i r s t V D A = v d a \r 0076700 i f n e x t P e q e o f D 0076720 A t h e n \r [ \r f 0076740 d > > F D . l a s t V D A = 0076760 v d a \r f d > > F D . l a 0077000 s t P N = p n \r f d > 0077020 > F D . l a s t N u m C h a r s 0077040 = n c \r ] \r u n l e s 0077060 s f d > > F D . s t a t e e 0077100 q f d B e i n g C h e 376 001 \0 306 0077120 317 c k e d % f d > > F D . d 0077140 u p l i c a t e r e t u r n \r 0077160 \f \r / / S c a n C l e a n u p 0077200 ( c o n t ' d ) \r \r / / W o 0077220 r k o n t h e R D \r l e t 0077240 r d = p t ! ( v d a - 1 ) 0077260 \r i f r d e q 0 % r d 0077300 u g e 1 7 7 0 0 0 b % r 0077320 d > > R D . f d n e f d % 0077340 b a c k P n e v d a - 1 0077360 % \r r d > > R D . l a s t P N 0077400 + 1 n e p n % r d > > R 0077420 D . l a s t N e x t n e v d 0077440 a t h e n \r [ \r r 0077460 d = C r e a t e D ( r d b Q 0077500 ) ; i f r d e q 0 r e 0077520 t 376 001 \0 x 021 u r n \r r d > 0077540 > R D . f d = f d \r r 0077560 d > > R D . f i r s t B a c k 0077600 = b a c k P \r r d > > R 0077620 D . f i r s t P N = p n \r 0077640 ] \r r d > > R D . l a s t N 0077660 e x t = n e x t P \r r d > > 0077700 R D . l a s t P N = p n \r \r 0077720 / / e n t e r p a g e i n 0077740 p t \r t e s t n e x t P e 0077760 q e o f D A & r d > > R D 0100000 . f i r s t B a c k e q e o 0100020 f D A \r i f s o / / s 0100040 i n g l e - r u n f i l e : 0100060 a b a n d o n R D \r 0100100 [ \r f d > > F D . 0100120 s t a t e 376 001 \0 321 217 = f d G 0100140 o o d \r f o r v 0100160 = f d > > F D . f i r s t V D 0100200 A t o f d > > F D . l a s t 0100220 V D A d o p t ! v = p t 0100240 G o o d \r r d b Q > 0100260 > D Q . t a i l > > D B . p t r 0100300 = r d b Q > > D Q . t a i l 0100320 > > D B . p t r - l e n R D 0100340 \r ] \r i f n o 0100360 t p t ! v d a = r d \r ] \r 0100400 \r / / - - - - - - - - - - - - - 0100420 - - - - - - - - - - - - - - - - * 0100520 - - - - - - - - - - - 376 001 \0 267 L 0100540 - \r a n d S c a n O u t O f S 0100560 p a c e ( z n , e c , l S b 0100600 D a t a ) = v a l o f \r / / 0100620 - - - - - - - - - - - - - - - - * 0100740 - - - - - - - - - \r [ \r / / s 0100760 e t e v e r y o t h e r f 0101000 d i n s t a t e f d B e i 0101020 n g C h e c k e d t o s t a 0101040 t e f d T o B e C h e c k e d 0101060 \r r e s t a r t F l a g = 0 0101100 \r F o r A l l F D s ( R e m o v 0101120 e H a l f ) \r \r / / f l u s h 0101140 376 001 \0 347 W a l l R D s \r f o 0101160 r v d a = 0 t o m a x 0101200 V D A d o \r [ \r l 0101220 e t r d = p t ! v d a \r 0101240 i f r d n e 0 & r 0101260 d u l s 1 7 7 0 0 0 b t h 0101300 e n \r p t ! v d a 0101320 = r d > > R D . f d > > F D . 0101340 s t a t e e q f d T o B e C 0101360 h e c k e d ? p t T o B e C h 0101400 e c k e d , 0 \r ] \r C o 0101420 m p a c t D B s ( ) \r \r r e s u 0101440 l t i s 0 \r ] \r \r / / - - - - 0101460 - - - - - - - - - - - - - - - - * 0101540 - - - - - 376 001 \0 270 M - - - - - - 0101560 - - - - - - - - - - - - - - - - 0101600 - - - - - - - - - - \r a n d R 0101620 e m o v e H a l f ( f d , n i 0101640 l ) b e \r / / - - - - - - - - 0101660 - - - - - - - - - - - - - - - - * 0102000 - \r [ \r i f f d > > F D . s t 0102020 a t e e q f d B e i n g C h 0102040 e c k e d t h e n \r [ \r 0102060 i f ( r e s t a r t F l 0102100 a g & 1 ) n e 0 t h e 0102120 n f d > > F D . s t a t e = 0102140 f d T o B e C h e 376 001 \0 l ] c 0102160 k e d \r r e s t a r t F l 0102200 a g = r e s t a r t F l a g 0102220 + 1 \r ] \r i f f d > > 0102240 F D . d u p l i c a t e t h e 0102260 n f d > > F D . s t a t e = 0102300 f d B e i n g C h e c k e d \r 0102320 ] \r \f \r / / - - - - - - - - - - 0102340 - - - - - - - - - - - - - - - - * 0102440 - - - - - - - - - - - - - - - \r 0102460 a n d S c a n E r r o r ( n i 0102500 l , c b , n i l ) b e \r / 0102520 / - - - - - - - - - - - - - - - 0102540 - - - - - - - - - - - - - - - 376 0102560 001 \0 i 216 - - - - - - - - - - - - 0102600 - - - - - - - - - - - - - - - - * 0102640 - - - - - - - - - - - - - - - \r 0102660 [ \r X f e r E r r o r ( n i l , 0102700 c b , n i l ) \r l e t v d 0102720 a = V i r t u a l D i s k D 0102740 A ( s y s D i s k , l v c b 0102760 > > C B . d i s k A d d r e s s 0103000 ) \r l e t h e a d e r , l a 0103020 b e l , d a t a = v e c 0103040 2 , c b > > C B . l a b e l A 0103060 d d r e s s , c b > > C B . d 0103100 a t a A d d r e s s \r i f c b 0103120 > > C B . s t a t u s < < D S T 0103140 . f i n a l S t a t u s e q 0103160 c h e c 376 001 \0 l D k E r r o r 0103200 t h e n / / h e a d e r c 0103220 h e c k e r r o r \r [ \r 0103240 X f e r P a g e ( D C r e 0103260 a d H L D , v d a , d a t a 0103300 , l a b e l , h e a d e r , 0103320 l v N o o p ) \r i f 0103340 ( c b > > C B . d i s k A d d r 0103360 e s s x o r 2 ) e q h e 0103400 a d e r > > D H . d i s k A d d 0103420 r e s s & \r n o t 0103440 b a n z a i F l a g t h e n \r 0103460 [ \r P u 0103500 t T e m p l a t e ( d s p , " 0103520 * N T h e d i s k i n d r 0103540 i v e $ D l o o k s l i k 0103560 e d i s k $ D 376 001 \0 005 341 " 0103600 , \r c b > > C B . 0103620 d i s k A d d r e s s . d i s k 0103640 , h e a d e r > > D H . d i s 0103660 k A d d r e s s . d i s k ) \r 0103700 b a n z a i F l a g 0103720 = B a n z a i ( " o f a f 0103740 i l e s y s t e m . " ) \r 0103760 ] \r ] \r i f a l 0104000 t e r F l a g t h e n i f 0104020 C o n f i r m ( " * N M a y I 0104040 r e w r i t e t h e p a g 0104060 e ? " ) t h e n \r [ \r 0104100 X f e r P a g e ( D C w r i 0104120 t e H L D , v d a , d a t a 0104140 , l a b e l , 0 , l v N 0104160 o o p ) \r i f ( X f 376 001 0104200 \0 332 \f e r P a g e ( D C r e a d 0104220 D , v d a , d a t a , l a 0104240 b e l , 0 , l v N o o p ) 0104260 & \r D S T g o o d S t 0104300 a t u s M a s k ) n e D S T 0104320 g o o d S t a t u s t h e n \r 0104340 [ \r W s 0104360 ( " . I t ' s i n c o r r 0104400 i g a b l e . " ) \r 0104420 S e t B l o c k ( l v l a b e 0104440 l > > D L . f i l e I d , - 2 0104460 , l F I D ) \r X f 0104500 e r P a g e ( D C w r i t e H L 0104520 D , v d a , d a t a , l a 0104540 b e l , 0 , l v N o o p ) 0104560 \r ] \r ] \r ] \r 0104600 \r / / 376 001 \0 253 207 - - - - - - - - 0104620 - - - - - - - - - - - - - - - - * 0104740 - \r a n d C h e c k e d V D A 0104760 ( l v R e a l D A ) = v a l 0105000 o f \r / / - - - - - - - - - - - 0105020 - - - - - - - - - - - - - - - - * 0105120 - - - - - - - - - - - - - - \r [ 0105140 \r i f l v R e a l D A > > D A 0105160 . r e s t o r e n e 0 r e 0105200 s u l t i s - 376 001 \0 337 | 3 \r i 0105220 f l v R e a l D A > > D A . s 0105240 e c t o r g e s y s D i s k 0105260 > > B F S D S K . n S e c t o r 0105300 s r e s u l t i s - 3 \r i f 0105320 l v R e a l D A > > D A . t r 0105340 a c k g e s y s D i s k > > 0105360 B F S D S K . n T r a c k s r 0105400 e s u l t i s - 3 \r i f l v 0105420 R e a l D A > > D A . d i s k 0105440 g e s y s D i s k > > B F S D 0105460 S K . n D i s k s t h e n \r 0105500 [ \r u n l e s s b a 0105520 n z a i F l a g d o \r 0105540 [ \r W s ( " * N 0105560 T h i s l o o k s l i k e 0105600 p a r t o f a t w o 376 001 \0 0105620 202 373 d i s k f i l e s y s 0105640 t e m , " ) \r b a 0105660 n z a i F l a g = B a n z a 0105700 i ( " b u t y o u a r e s 0105720 c a v e n g i n g a s i n g 0105740 l e d i s k . " ) \r 0105760 ] \r r e s u l t i s - 0106000 3 \r ] \r r e s u l t i s 0106020 V i r t u a l D i s k D A ( s y 0106040 s D i s k , l v R e a l D A ) 0106060 \r ] \r \r / / - - - - - - - - - - 0106100 - - - - - - - - - - - - - - - - * 0106200 - - - - - - - - - - - - - - - \r 0106220 a n 376 001 \0 F 344 d B a n z a i ( 0106240 s t r i n g ) = v a l o f \r 0106260 / / - - - - - - - - - - - - - - 0106300 - - - - - - - - - - - - - - - - * 0106400 - - - - - - - - - - - \r [ \r l o 0106420 g F l a g = t r u e \r W s ( 0106440 s t r i n g ) \r W s ( " * N C h 0106460 e c k y o u r d i s k s , 0106500 t h e n t y p e * " B A N Z 0106520 A I ! * " " ) \r l e t a n s 0106540 w e r = G e t S t r i n g ( 0106560 " i f y o u w i s h t o 0106600 c o n t i n u e s c a v e n g 0106620 i n g : " ) 376 001 \0 314 i \r l e t 0106640 b a n z a i = " B A N Z A 0106660 I ! " \r i f a n s w e r > > S 0106700 t r i n g . l e n g t h n e 0106720 b a n z a i > > S t r i n g . l 0106740 e n g t h f i n i s h \r f o r 0106760 i = 1 t o b a n z a i 0107000 > > S t r i n g . l e n g t h 0107020 d o \r [ \r l e t c 0107040 1 = a n s w e r > > S t r i 0107060 n g . c h a r ^ i \r i f 0107100 c 1 g e $ a & c 1 l e 0107120 $ z t h e n c 1 = c 1 0107140 - ( $ a - $ A ) \r l e t 0107160 c 2 = b a n z a i > > S t r 0107200 i n g . c h a r ^ i \r i f 0107220 c 2 g e $ a & 376 001 \0 200 0107240 X c 2 l e $ z t h e n c 0107260 2 = c 2 - ( $ a - $ A ) \r 0107300 i f c 1 n e c 2 f i 0107320 n i s h \r ] \r F r e e ( s 0107340 y s Z o n e , a n s w e r ) \r 0107360 r e s u l t i s t r u e \r ] \r 0107400 \f \r / / - - - - - - - - - - - - 0107420 - - - - - - - - - - - - - - - - * 0107520 - - - - - - - - - - - - - \r a n 0107540 d C h e c k F i l e ( f d , 0107560 n i l ) b e \r / / - - - - - - 0107600 - - - - - - - - - - - - - - - - * 0107640 - 376 001 \0 224 } - - - - - - - - - - 0107660 - - - - - - - - - - - - - - - - * 0107720 - - - - - - - - \r [ \r i f f d 0107740 > > F D . s t a t e n e f d 0107760 B e i n g C h e c k e d t h e 0110000 n \r [ \r i f f d > 0110020 > F D . s t a t e e q f d T 0110040 o B e C h e c k e d t h e n \r 0110060 [ \r f d 0110100 > > F D . s t a t e = f d B 0110120 e i n g C h e c k e d \r 0110140 r e s t a r t F l a g = 0110160 t r u e \r ] \r 0110200 r e t u r n \r ] \r \r / / 0110220 c h e c k i t s s t r u c t 0110240 u r e \r l e 376 001 \0 G 0 t v d a 0110260 , l a s t R D = f d > > F 0110300 D . f i r s t V D A , 0 \r f d 0110320 > > F D . s t a t e = v a l 0110340 o f \r [ \r l e t r 0110360 d = p t ! v d a \r i f 0110400 r d e q 0 % r d u g 0110420 e 1 7 7 0 0 0 b % r d > > 0110440 R D . u s e d n e 0 r e s 0110460 u l t i s f d B a d \r t 0110500 e s t f d > > F D . d u p l i 0110520 c a t e \r i f s o 0110540 r d > > R D . f d = f d \r 0110560 i f n o t i f r d 0110600 > > R D . f d n e f d r e 0110620 s u l t i s f d B a d \r 0110640 i f l a s t R D n 376 001 \0 \n 224 0110660 e 0 t h e n \r i 0110700 f l a s t R D > > R D . l a s 0110720 t P N + 1 n e r d > > R D . 0110740 f i r s t P N % \r 0110760 l a s t R D n e p t ! ( r 0111000 d > > R D . f i r s t B a c k ) 0111020 r e s u l t i s f d B a d \r 0111040 r d > > R D . u s e d = 0111060 t r u e \r i f r d > > 0111100 R D . l a s t N e x t e q e 0111120 o f D A t h e n \r 0111140 [ \r i f f d > > F 0111160 D . d u p l i c a t e n e 0 0111200 t h e n \r [ 0111220 \r f d > > F D 0111240 . l a s t P N = r d > > R D 0111260 376 001 \0 255 \n . l a s t P N \r 0111300 f d > > F D . l a s 0111320 t V D A = v d a + ( r d 0111340 > > R D . l a s t P N - r d 0111360 > > R D . f i r s t P N ) \r 0111400 X f e r P a g e ( 0111420 D C r e a d L D , f d > > F D 0111440 . l a s t V D A ) \r 0111460 f d > > F D . l a s t N u 0111500 m C h a r s = l a b e l > > 0111520 D L . n u m C h a r s \r 0111540 ] \r r e s 0111560 u l t i s f d G o o d \r 0111600 ] \r v d a , l a s 0111620 t R D = r d > > R D . l a s 0111640 t N e x t , r d \r ] r 0111660 e p e a t 376 001 \0 D / \r i f f d 0111700 > > F D . s t a t e n e f d 0111720 G o o d r e t u r n \r \r / / 0111740 m a r k i t g o o d \r v d a 0111760 = f d > > F D . f i r s t V 0112000 D A \r [ \r l e t r 0112020 d = p t ! v d a \r w h 0112040 i l e p t ! v d a e q r d 0112060 d o [ p t ! v d a = p 0112100 t G o o d ; v d a = v d a 0112120 + 1 ] \r v d a = r 0112140 d > > R D . l a s t N e x t \r 0112160 ] r e p e a t u n t i l 0112200 v d a e q e o f D A \r ] \r \r 0112220 / / - - - - - - - - - - - - - - 0112240 - - - - - - - - - - - - - - - - 0112260 - - - - - - - - - - 376 001 \0 e \b - 0112300 - - - - - - - - - - - - - - - - * 0112360 \r a n d F o r A l l F D s ( P 0112400 r o c , a r g ) b e \r / / - 0112420 - - - - - - - - - - - - - - - - * 0112540 - - - - - - - - \r / / E n u m 0112560 e r a t e s a l l a c t i v 0112600 e F D s a n d c a l l s 0112620 P r o c ( f d , a r g ) \r [ \r 0112640 l e t f d b = f d b Q ! 0 0112660 ; w h i l e f d b n e 376 0112700 001 \0 ! 314 0 d o \r [ \r 0112720 l e t p t r = l e n D B 0112740 ; w h i l e p t r l s f 0112760 d b > > D B . p t r d o \r 0113000 [ \r l e t 0113020 f d = f d b + p t r \r 0113040 P r o c ( f d , a r 0113060 g ) \r p t r = p 0113100 t r + l e n F D \r 0113120 ] \r f d b = f d b > 0113140 > D B . l i n k \r ] \r ] \r 0113160 \f \r / / - - - - - - - - - - - - 0113200 - - - - - - - - - - - - - - - - * 0113300 - - - - 376 001 \0 266 O - - - - - - - 0113320 - - \r a n d C r e a t e D ( q 0113340 ) = v a l o f \r / / - - - - 0113360 - - - - - - - - - - - - - - - - * 0113500 - - - - - \r / / r e t u r n s 0113520 a p o i n t e r t o a n 0113540 R D o r a n F D . \r [ \r 0113560 m a n i f e s t d b S i z e 0113600 = 2 4 0 + l e n D B / 0113620 / d i v i s i b l e b y l e 0113640 n F D a n d l e n R D \r l e 0113660 t d b , l e n D = q > > 0113700 D Q . t a i l , 376 001 \0 232 @ q > 0113720 > D Q . l e n D \r i f q > > D 0113740 Q . h e a d e q 0 % d b 0113760 > > D B . p t r + l e n D g r 0114000 d b > > D B . m a x t h e n 0114020 \r [ \r d b = A l 0114040 l o c a t e ( s y s Z o n e , 0114060 d b S i z e ) ; i f d b e 0114100 q 0 r e s u l t i s 0 \r 0114120 Z e r o ( d b , d b S i z 0114140 e ) \r d b > > D B . p t r 0114160 = l e n D B \r d b > > 0114200 D B . m a x = d b S i z e \r 0114220 E n q u e u e ( q , d b 0114240 ) \r ] \r l e t d = d 0114260 b + d b > > D B . p t r \r d 0114300 b > > D B . p t r = d b 376 001 0114320 \0 237 D > > D B . p t r + l e 0114340 n D \r r e s u l t i s d \r ] \r 0114360 \r / / - - - - - - - - - - - - - 0114400 - - - - - - - - - - - - - - - - * 0114500 - - - - - - - - - - - - \r a n d 0114520 C o m p a c t D B s ( ) b e 0114540 \r / / - - - - - - - - - - - - - 0114560 - - - - - - - - - - - - - - - - * 0114660 - - - - - - - - - - - - \r [ \r l 0114700 e t l o w e s t F D B = L 0114720 o w e 376 001 \0 256 027 s t F D B ( ) \r 0114740 [ \r l e t r d b 0114760 = D e q u e u e ( r d b Q ) ; 0115000 i f r d b e q 0 b r e 0115020 a k \r t e s t r d b u 0115040 g r l o w e s t F D B \r 0115060 i f s o \r 0115100 [ \r M o v e 0115120 B l o c k ( r d b , l o w e s 0115140 t F D B , r d b > > D B . m a 0115160 x ) \r U n q u 0115200 e u e ( f d b Q , l o w e s t 0115220 F D B ) \r F r 0115240 e e ( s y s Z o n e , l o w e 0115260 s t F D B ) \r 0115300 E n q u e u e ( f d b Q , r d 0115320 b ) \r 376 001 \0 W Z 0115340 l o w e s t F D B = L o w 0115360 e s t F D B ( ) \r 0115400 ] \r i f n o t 0115420 F r e e ( s y s Z o n e , r d 0115440 b ) \r ] r e p e a t \r Z 0115460 e r o ( b t , m a x V D A / 8 0115500 + 1 ) \r F o r A l l F D s ( R e 0115520 h a s h F D ) \r ] \r \r / / - - - 0115540 - - - - - - - - - - - - - - - - * 0115660 - - - - - - \r a n d R e h a s 0115700 h F D ( f d , n i l ) b e \r 0115720 / / - - - - - - - - - - - 376 001 \0 0115740 200 331 - - - - - - - - - - - - - - 0115760 - - - - - - - - - - - - - - - - * 0116060 \r [ \r l e t h a = ( f d > 0116100 > F D . s n . w o r d 2 & 7 0116120 7 7 7 7 b ) r e m ( m a x V 0116140 D A / 8 + 1 ) \r [ \r 0116160 i f b t ! h a e q 0 t h 0116200 e n [ b t ! h a = f d ; 0116220 r e t u r n ] \r h a 0116240 = h a e q m a x V D A / 8 0116260 ? 0 , h a + 1 \r ] r 0116300 e p e a t \r ] \r \r / / - - - - - 0116320 - - - - - - - - - - - - - - - - 0116340 - - 376 001 \0 , 226 - - - - - - - - - 0116360 - - - - - - - - - - - - - - - - * 0116440 - - - - - - - - - \r a n d L o 0116460 w e s t F D B ( ) = v a l o 0116500 f \r / / - - - - - - - - - - - - 0116520 - - - - - - - - - - - - - - - - * 0116620 - - - - - - - - - - - - - \r [ \r 0116640 l e t l o w e s t F D B = 0116660 1 7 7 7 7 7 b \r l e t f d b 0116700 = f d b Q ! 0 ; w h i l e 0116720 f d b n e 0 d o \r [ 0116740 \r i f 376 \0 W 025 341 f d b 0116760 u l s l o w e s t F D B t h 0117000 e n l o w e s t F D B = f 0117020 d b \r f d b = f d b > 0117040 > D B . l i n k \r ] \r r e 0117060 s u l t i s l o w e s t F D B 0117100 \r ] \r 377 \0 \0 S c a v D i r s . b 0117120 c p l \0 373 231 301 h 7 \0 \0 376 001 \0 264 304 0117140 / / S c a v D i r s . b c p l 0117160 - - R e c o n s t r u c t 0117200 D i r e c t o r i e s \r / / C 0117220 o p y r i g h t X e r o x C 0117240 o r p o r a t i o n 1 9 7 9 , 0117260 1 9 8 0 , 1 9 8 1 , 1 9 8 0117300 2 \r / / L a s t m o d i f i 0117320 e d S e p t e m b e r 2 9 , 0117340 1 9 8 2 1 : 3 2 A M b 0117360 y B o g g s \r \r g e t " S t 0117400 r e a m s . d " \r g e t " A l 0117420 t o F i l e S y s . d " \r g e t 0117440 " D i s k s . d " \r g e t " 0117460 B F S . d " \r g e t " S c a v 0117500 e n g e r . d e c l " \r \r e x t 0117520 e r n a l \r [ \r / / o u t g o 0117540 376 001 \0 \a \0 i n g p r o c e d u 0117560 r e s \r F i x D i r s \r \r / / 0117600 i n c o m i n g p r o c e d u 0117620 r e s \r G e t B i t ; S e t B 0117640 i t ; G e t S t r i n g ; X 0117660 f e r P a g e ; W s ; C o p 0117700 y S t r i n g \r C r e a t e D ; 0117720 F o r A l l F D s ; F i n d 0117740 D S h a p e ; W o u l d H a v 0117760 e ; C h e c k e d V D A \r \r F 0120000 i n d F d E n t r y ; M a k e 0120020 N e w F d E n t r y \r F i l e L 0120040 e n g t h ; F i l e P o s ; 0120060 S e t F i l e P o s \r R e a d B 0120100 l o c k ; W r i t e B l o c k 0120120 ; R e a d L e a d e r P a g e 0120140 \r C r e a 376 001 \0 237 324 t e D i s k 0120160 S t r e a m ; T r u n c a t e 0120200 D i s k S t r e a m \r R e a l D 0120220 i s k D A ; V i r t u a l D i 0120240 s k D A ; A s s i g n D i s k 0120260 P a g e \r M o v e B l o c k ; 0120300 Z e r o ; D o u b l e A d d ; 0120320 D o u b l e U s c \r A l l o c 0120340 a t e ; F r e e ; E n q u e 0120360 u e ; D e q u e u e \r P u t T 0120400 e m p l a t e ; C l o s e s ; 0120420 G e t s ; P u t s \r \r / / 0120440 i n c o m i n g s t a t i c s 0120460 \r s y s Z o n e ; s y s D i s 0120500 k ; d s p \r a l t e r F l a g 0120520 ; l a b e l ; d a t a \r l o 0120540 g F l a g ; k e y 376 001 \0 023 033 s 0120560 ; m a x V D A \r b a d B T ; 0120600 u s e d B T ; p t ; f d b Q 0120620 \r b a n z a i F l a g \r ] \r \r m 0120640 a n i f e s t m a x L e n D V 0120660 = l D V + m a x L e n g t h 0120700 F n I n W o r d s + 1 2 8 / 0120720 / f r o m d i r s . b c p l \r 0120740 \r s t a t i c \r [ \r d i r F D \t 0120760 \t / / f d o f c u r r e n 0121000 t d i r e c t o r y \r d i r N 0121020 a m e \t \t / / s t r i n g n 0121040 a m e o f c u r r e n t d 0121060 i r e c t o r y \r d i r S t \t \t 0121100 / / s t r e a m o p e n o 0121120 n c u r r e n t d i r e c t 0121140 o r y \r n e w D v Q \t \t / / 376 0121160 001 \0 006 \v q u e u e o f D V s 0121200 t o a d d t o c u r r e 0121220 n t d i r e c t o r y \r ] \r \r 0121240 s t r u c t u r e S t r i n g 0121260 [ l e n g t h b y t e ; 0121300 c h a r ^ 1 , 1 b y t e ] \r 0121320 \r / / - - - - - - - - - - - - - 0121340 - - - - - - - - - - - - - - - - * 0121440 - - - - - - - - - - - - \r l e t 0121460 F i x D i r s ( ) b e \r / / 0121500 - - - - - - - - - - - - - - - - * 0121560 - - - - 376 001 \0 u 244 - - - - - - - 0121600 - - - - - - - - - - - - - - - - 0121620 - - - - - - - - - - - - - - \r [ 0121640 \r / / M a k e s u r e S y 0121660 s D i r e x i s t s \r G u a r 0121700 a n t e e S y s D i r ( ) \r \r / 0121720 / V e r i f y a n d c o m 0121740 p a c t d i r e c t o r i e s 0121760 \r F o r A l l F D s ( C h e c k 0122000 D i r ) \r \r / / I n s e r t 0122020 l o s t f i l e s \r F o r A l 0122040 l F D s ( I n s e r t F i l e ) 0122060 \r \r C l o s e D i r ( ) \r \r w h 0122100 i l e f d b Q ! 0 n e 0 0122120 d o F r e e ( s y s Z o n e , 0122140 D e q u e u e ( f d b Q ) ) \r 0122160 F r e e ( s y s Z 376 001 \0 * 327 o n 0122200 e , f d b Q ) \r ] \r \f \r / / - 0122220 - - - - - - - - - - - - - - - - * 0122340 - - - - - - - - \r a n d G u a 0122360 r a n t e e S y s D i r ( ) b 0122400 e \r / / - - - - - - - - - - - - 0122420 - - - - - - - - - - - - - - - - * 0122520 - - - - - - - - - - - - - \r [ \r 0122540 l e t f d = F i n d F i l 0122560 e ( 1 ) \r i f f d n e 376 001 0122600 \0 4 H 0 & f d > > F D . s t 0122620 a t e e q f d G o o d & \r 0122640 f d > > F D . s n . w o r d 1 0122660 e q 1 0 0 0 0 0 b & f d 0122700 > > F D . s n . w o r d 2 e q 0122720 1 4 4 b r e t u r n \r \r / / 0122740 m a i n d i r e c t o r y 0122760 i s l o s t ! \r u n l e s s 0123000 a l t e r F l a g d o \r 0123020 [ \r W s ( " * N T h e m 0123040 a i n d i r e c t o r y ( S 0123060 y s D i r ) i s l o s t . " 0123100 ) \r W s ( " * N I c a n 0123120 n o t p r o c e e d w i t h 0123140 o u t a l t e r i n g y o u 0123160 r d i s k . " ) \r W s ( 0123200 " * N 376 001 \0 353 ~ T y p e a n y 0123220 k e y t o f i n i s h . " 0123240 ) \r G e t s ( k e y s ) \r 0123260 f i n i s h \r ] \r \r 0123300 / / r i p o f f p a g e 0123320 1 o f d i s k \r t e s t G 0123340 e t B i t ( b a d B T , 1 ) \r 0123360 i f s o S e t B i t ( b 0123400 a d B T , 1 , f a l s e ) \r 0123420 i f n o t t e s t G e 0123440 t B i t ( u s e d B T , 1 ) \r 0123460 i f n o t S e t B 0123500 i t ( u s e d B T , 1 , t r 0123520 u e ) \r i f s o \r 0123540 [ \r 0123560 W s ( " * N P a g e 1 0123600 o f t h e d 376 001 \0 201 2 i s k 0123620 w a s r i p p e d o f f 0123640 t o m a k e S y s D i r . " 0123660 ) \r W s ( " * 0123700 N S c a v e n g e a g a i n 0123720 t o r e c o v e r t h e d 0123740 a m a g e d f i l e . " ) \r 0123760 ] \r \r / / f i 0124000 n d a s e c o n d p a g e 0124020 f o r S y s D i r \r l e t 0124040 p a g e 1 = A s s i g n D i 0124060 s k P a g e ( s y s D i s k , 0124100 1 ) \r \r / / W r i t e p a g 0124120 e 0 o f S y s D i r \r Z e 0124140 r o ( d a t a , 2 5 6 ) \r C o 0124160 p y S t r i n g ( l v d a t a 0124200 > > L D . n a m e , " S 376 001 \0 0124220 320 * y s D i r . " ) \r l a b e l 0124240 > > D L . f i l e I d . s e r i 0124260 a l N u m b e r . w o r d 1 = 0124300 1 0 0 0 0 0 b \r l a b e l > > 0124320 D L . f i l e I d . s e r i a l 0124340 N u m b e r . w o r d 2 = 1 0124360 4 4 b \r l a b e l > > D L . f i 0124400 l e I d . v e r s i o n = 1 0124420 \r l a b e l > > D L . p a g e N 0124440 u m b e r = 0 \r l a b e l > 0124460 > D L . n u m C h a r s = 5 0124500 1 2 \r l a b e l > > D L . p r e 0124520 v i o u s = 0 \r R e a l D i 0124540 s k D A ( s y s D i s k , p a 0124560 g e 1 , l v l a b e l > > D 0124600 L . n e x t ) \r X f e r P a g e 0124620 ( D 376 001 \0 352 203 C w r i t e L D , 0124640 1 ) \r \r / / W r i t e p a 0124660 g e 1 o f S y s D i r \r l 0124700 a b e l > > D L . p a g e N u m 0124720 b e r = 1 \r l a b e l > > D 0124740 L . n u m C h a r s = 0 \r R 0124760 e a l D i s k D A ( s y s D i s 0125000 k , 1 , l v l a b e l > > 0125020 D L . p r e v i o u s ) \r l a b 0125040 e l > > D L . n e x t = 0 \r 0125060 X f e r P a g e ( D C w r i t e 0125100 L D , p a g e 1 ) \r \r / / E 0125120 n t e r i n F D l i s t 0125140 s o F o r A l l F D s w i l 0125160 l g e n e r a t e i t \r i f 0125200 f d e q 0 t h e n f d 0125220 = C r e a 376 001 \0 @ 224 t e D ( 0125240 f d b Q ) \r f d > > F D . s n . 0125260 w o r d 1 = 1 0 0 0 0 0 b \r 0125300 f d > > F D . s n . w o r d 2 0125320 = 1 4 4 b \r f d > > F D . f i 0125340 r s t V D A = 1 \r f d > > F 0125360 D . s t a t e = f d G o o d 0125400 \r ] \r \f \r / / - - - - - - - - - 0125420 - - - - - - - - - - - - - - - - * 0125540 \r a n d C h e c k D i r ( f d 0125560 , n i l ) b e \r / / - - - - 0125600 - - - - - - - - - - - - - - - - 0125620 - - - - - - - - - - - - 376 001 \0 0 0125640 004 - - - - - - - - - - - - - - - 0125660 - - - - - - - - - - - - - - - - * 0125720 - - - - - - - - - - \r / / V e 0125740 r i f y a n d c o m p a c t 0125760 a d i r e c t o r y \r [ \r u 0126000 n l e s s f d > > F D . s n . 0126020 d i r e c t o r y & f d > > 0126040 F D . s t a t e e q f d G o 0126060 o d r e t u r n / / n o t 0126100 a d i r e c t o r y f i l 0126120 e \r O p e n D i r ( f d ) \r l e 0126140 t q = v e c 1 ; q ! 0 0126160 = 0 ; n e w D v Q = q 0126200 \r \r l e t m a x F i l e s = 0126220 m a x V D A / 1 1 \r l e t h 0126240 e 376 001 \0 312 311 a p , b u f f e r 0126260 = p t , p t + m a x F i l 0126300 e s \r l e t r e a d P o s = 0126320 v e c 1 ; F i l e P o s ( 0126340 d i r S t , r e a d P o s ) \r 0126360 l e t w r i t e P o s = v 0126400 e c 1 ; F i l e P o s ( d i 0126420 r S t , w r i t e P o s ) \r l 0126440 e t m a n g l e d D i r = 0126460 f a l s e ; u n t i l m a n 0126500 g l e d D i r d o \r [ \r 0126520 S e t F i l e P o s ( d i 0126540 r S t , r e a d P o s ) \r 0126560 l e t n W o r d s = R e 0126600 a d B l o c k ( d i r S t , b 0126620 u f f e r , 1 0 * m a x F i l 0126640 e s ) ; i 376 001 \0 276 221 f n W o 0126660 r d s e q 0 b r e a k \r 0126700 l e t n F i l e s , i n 0126720 D V = 0 , b u f f e r \r 0126740 w h i l e i n D V u l s 0126760 b u f f e r + n W o r d s & 0127000 n F i l e s l s m a x F i 0127020 l e s d o \r [ \r 0127040 l e t t y p e , l 0127060 e n g t h = i n D V > > D V 0127100 . t y p e , i n D V > > D V . 0127120 l e n g t h \r i f 0127140 l e n g t h e q 0 % l e 0127160 n g t h g r m a x L e n D V 0127200 % \r ( t y p e 0127220 n e d v T y p e F i l e & 0127240 t y p e n e d v T 376 001 \0 u 3 0127260 y p e F r e e ) t h e n \r 0127300 [ \r 0127320 P u t T e m p l a t e ( d s 0127340 p , " * N S t r a n g e e n 0127360 t r y i n d i r e c t o r y 0127400 $ S . " , d i r N a m e ) \r 0127420 m a n g l e d 0127440 D i r = t r u e \r 0127460 l o g F l a g = t r 0127500 u e \r b r e a 0127520 k \r ] \r 0127540 i f i n D V + l e n g t 0127560 h u g r b u f f e r + n W o 0127600 r d s b r e a k / / d v 0127620 o v e r f l o w s b u f f e r 0127640 \r i f t y p e e 0127660 376 001 \0 264 361 q d v T y p e F i l 0127700 e t h e n \r 0127720 [ \r h e a p ! 0127740 n F i l e s = i n D V \r 0127760 n F i l e s = 0130000 n F i l e s + 1 \r 0130020 ] \r i n D V 0130040 = i n D V + l e n g t h 0130060 / / a d v a n c e t o n e 0130100 x t d v \r ] \r 0130120 l e t l e n = v e c 1 0130140 ; l e n ! 0 = 0 ; l e n 0130160 ! 1 = ( i n D V - b u f f e 0130200 r ) l s h i f t 1 \r D 0130220 o u b l e A d d ( r e a d P o s 0130240 , l e n ) \r \r l e t l 0130260 , r = 376 001 \0 324 o n F i l e 0130300 s r s h i f t 1 , n F i l 0130320 e s - 1 \r i f n F i l e 0130340 s g r 1 t h e n / / h 0130360 e a p s o r t o n l e a d 0130400 e r V D A \r [ \r 0130420 l e t d v = n i 0130440 l \r t e s t l g 0130460 r 0 \r i f s 0130500 o [ l = l - 1 ; d v 0130520 = h e a p ! l ] \r 0130540 i f n o t \r 0130560 [ \r 0130600 d v = h e a p ! r 0130620 ; h e a p ! r = h e a p ! 0130640 0 \r r 0130660 = r - 1 \r 376 001 \0 235 < 0130700 i f r e q 0130720 0 t h e n [ h e a p ! 0 0130740 = d v ; b r e a k ] \r 0130760 ] \r 0131000 l e t j , i = l , 0131020 n i l \r [ \r 0131040 i = j \r 0131060 j = j l s h 0131100 i f t 1 + 1 \r 0131120 i f j g r r b r e a 0131140 k \r i f j 0131160 l s r t h e n \r 0131200 i f ( h e a p ! j 0131220 ) > > D V . f p . l e a d e r V 0131240 i r t u a l D a u l s ( h e 0131260 a p ! ( j + 1 ) ) > > D V . f 376 0131300 001 \0 003 231 p . l e a d e r V i r t 0131320 u a l D a t h e n j = j 0131340 + 1 \r i f ( 0131360 h e a p ! j ) > > D V . f p . l 0131400 e a d e r V i r t u a l D a u 0131420 l s d v > > D V . f p . l e a 0131440 d e r V i r t u a l D a b r e 0131460 a k \r h e a p 0131500 ! i = h e a p ! j \r 0131520 ] r e p e a t \r 0131540 h e a p ! i = d v \r 0131560 ] r e p e a t \r 0131600 f o r i = 0 t o n 0131620 F i l e s - 1 d o C h e c k 0131640 D V ( h e a p ! i ) \r \f \r / / 0131660 C h e c k D i r ( c o n t ' d 0131700 ) \r \r 376 001 \0 H 341 S e t F i 0131720 l e P o s ( d i r S t , w r i 0131740 t e P o s ) \r l e t o u 0131760 t D V = b u f f e r ; w h 0132000 i l e o u t D V u l s i n 0132020 D V d o \r [ \r 0132040 i f o u t D V > > D V 0132060 . t y p e e q d v T y p e F 0132100 i l e t h e n \r 0132120 i f a l t e r F l a g t 0132140 h e n W r i t e B l o c k ( d 0132160 i r S t , o u t D V , o u t 0132200 D V > > D V . l e n g t h ) \r 0132220 o u t D V = o u t 0132240 D V + o u t D V > > D V . l 0132260 e n g t h \r ] \r 0132300 F i l e P o s ( 376 001 \0 u e d i 0132320 r S t , w r i t e P o s ) \r 0132340 ] \r \r / / a p p e n d a 0132360 n y n e w D V s c r e a t 0132400 e d b y C h e c k D V \r i f 0132420 n e w D v Q ! 0 n e 0 t 0132440 h e n \r [ \r S e t F 0132460 i l e P o s ( d i r S t , w r 0132500 i t e P o s ) \r [ \r 0132520 l e t n e w D V 0132540 = D e q u e u e ( n e w D v Q 0132560 ) ; i f n e w D V e q 0 0132600 b r e a k \r W r i 0132620 t e B l o c k ( d i r S t , n 0132640 e w D V + 1 , ( n e w D V + 1 0132660 ) > > D V . l e n g t h ) \r 0132700 F r e e ( s y s Z o 376 001 0132720 \0 ; \0 n e , n e w D V ) \r 0132740 ] r e p e a t \r 0132760 F i l e P o s ( d i r S t , w 0133000 r i t e P o s ) \r ] / 0133020 / e n d o f " u n t i l 0133040 m a n g l e d D i r d o " l 0133060 o o p \r \r / / F i l l o u t 0133100 f i l e w i t h f r e e 0133120 e n t r i e s \r l e t f i l e 0133140 L e n g t h = v e c 1 ; 0133160 F i l e L e n g t h ( d i r S t 0133200 , f i l e L e n g t h ) \r S e 0133220 t F i l e P o s ( d i r S t , 0133240 w r i t e P o s ) \r Z e r o ( b 0133260 u f f e r , 1 0 0 ) \r b u f f 0133300 e r > > D V . t y p e = d v 0133320 T y p 376 001 \0 j 217 e F r e e \r b u 0133340 f f e r > > D V . l e n g t h 0133360 = 1 0 0 \r i f a l t e r F l 0133400 a g t h e n \r [ \r 0133420 l e t l e f t = v e c 1 0133440 ; M o v e B l o c k ( l e f t 0133460 , f i l e L e n g t h , 2 ) 0133500 \r l e t p o s = v e 0133520 c 1 ; F i l e P o s ( d i r 0133540 S t , p o s ) \r p o s ! 0133560 0 = n o t p o s ! 0 ; p 0133600 o s ! 1 = n o t p o s ! 1 0133620 \r D o u b l e A d d ( p o 0133640 s , t a b l e [ 0 ; 1 0133660 ] ) \r D o u b l e A d d ( 0133700 l e f t , p o s ) \t / / D o u 0133720 b l e S u b t r 376 001 \0 x . a c t 0133740 ( l e f t , p o s ) \r i 0133760 f D o u b l e U s c ( l e f t 0134000 , t a b l e [ 0 ; 1 ] 0134020 ) l e 0 b r e a k \r 0134040 i f D o u b l e U s c ( l e f 0134060 t , t a b l e [ 0 ; 2 0 0134100 0 ] ) l s 0 t h e n \r 0134120 b u f f e r > > D V . 0134140 l e n g t h = l e f t ! 1 0134160 r s h i f t 1 \r W r i t 0134200 e B l o c k ( d i r S t , b u 0134220 f f e r , b u f f e r > > D V 0134240 . l e n g t h ) \r ] r e 0134260 p e a t \r \r i f a l t e r F l 0134300 a g t h e n T r u n c a t e 0134320 D i s k S t r e a m ( d i 376 001 \0 0134340 005 Z r S t ) / / p o s s i b 0134360 l e o d d b y t e \r ] \r \f \r 0134400 / / - - - - - - - - - - - - - - 0134420 - - - - - - - - - - - - - - - - * 0134520 - - - - - - - - - - - \r a n d 0134540 C h e c k D V ( d v ) b e \r / 0134560 / - - - - - - - - - - - - - - - 0134600 - - - - - - - - - - - - - - - - * 0134700 - - - - - - - - - - \r [ \r l e t 0134720 n a m e , n e w D V = l 0134740 v 376 001 \0 232 231 d v > > D V . n a 0134760 m e , 0 \r i f a l t e r F l 0135000 a g t h e n u n l e s s L 0135020 e g a l N a m e ( n a m e ) d 0135040 o \r n a m e = G e t N 0135060 a m e ( " * N F i l e n a m e 0135100 * " $ S * " h a s b a d s 0135120 y n t a x . " , n a m e ) \r i 0135140 f n a m e n e l v d v > 0135160 > D V . n a m e t h e n \r 0135200 [ \r l e t l e n g t h 0135220 = l D V + n a m e > > S 0135240 t r i n g . l e n g t h l s h 0135260 i f t 1 + 1 \r n e w D 0135300 V = A l l o c a t e ( s y s 0135320 Z o n e , l e n g t h + 1 ) \r 0135340 l e t 376 001 \0 305 z o l d D 0135360 V = d v ; d v = n e w 0135400 D V + 1 \r o l d D V > > D 0135420 V . t y p e = d v T y p e F 0135440 r e e \r d v > > D V . t y 0135460 p e = d v T y p e F i l e \r 0135500 d v > > D V . l e n g t h 0135520 = l e n g t h \r M o v 0135540 e B l o c k ( l v d v > > D V 0135560 . f p , l v o l d D V > > D 0135600 V . f p , l F P ) \r C o 0135620 p y S t r i n g ( l v d v > > 0135640 D V . n a m e , n a m e ) \r 0135660 F r e e ( s y s Z o n e , 0135700 n a m e ) \r n a m e = 0135720 l v d v > > D V . n a m e \r 0135740 l o g F l a g = 376 001 \0 { 0135760 206 t r u e \r ] \r \r l e t 0136000 f d = F i n d F i l e ( d v 0136020 > > D V . f p . l e a d e r V i 0136040 r t u a l D a ) \r i f f d e 0136060 q 0 % f d > > F D . s t a 0136100 t e e q f d B a d t h e n 0136120 / / d v d o e s n o t 0136140 d e s c r i b e a w f f . \r 0136160 [ \r l o g F l a g 0136200 = t r u e \r f d = S 0136220 a l v a g e ( d v , f d ) 0136240 / / b u t a l l m a y n o 0136260 t b e l o s t . . . \r 0136300 t e s t f d e q 0 \r 0136320 i f n o t P u t T e m p 0136340 l a t e ( d s p , " * N $ P S 0136360 a 376 001 \0 352 p l v a g e d $ S > 0136400 $ S , S N $ E U O b . " , \r 0136420 W o u l d H a v 0136440 e , n i l , d i r N a m e , 0136460 n a m e , l v d v > > D V 0136500 . f p . s e r i a l N u m b e r 0136520 ) \r i f s o \r 0136540 [ \r 0136560 P u t T e m p l a t e ( d s p 0136600 , " * N $ P D e l e t e d e 0136620 n t r y f o r $ S > $ S , 0136640 S N $ E U O b . " , \r 0136660 W o u l d H a v e , 0136700 n i l , d i r N a m e , n 0136720 a m e , l v d v > > D V . f 0136740 p . s e r i a l N u m b e r ) \r 0136760 376 001 \0 302 W t e 0137000 s t n e w D V n e 0 \r 0137020 i f s o F 0137040 r e e ( s y s Z o n e , n e w 0137060 D V ) \r 0137100 i f n o t d v > > D V . t y p 0137120 e = d v T y p e F r e e \r 0137140 r e t u r n \r 0137160 ] \r ] \r 0137200 \r / / F i x S N s m a y h 0137220 a v e c h a n g e d t h e 0137240 f i l e ' s S N \r d v > > D V 0137260 . f p . s e r i a l N u m b e r 0137300 . w o r d 1 = f d > > F D . 0137320 s n . w o r d 1 \r d v > > D V . 0137340 f p . s e r i a l N u m b e r . 0137360 w o r d 2 = f d > 376 001 \0 225 034 0137400 > F D . s n . w o r d 2 \r d v > 0137420 > D V . f p . v e r s i o n = 0137440 1 \r \r t e s t f d > > F D . 0137460 r e g i s t e r e d \r i 0137500 f s o P u t T e m p l a t e ( 0137520 d s p , " * N $ S > $ S , S 0137540 N $ E U O b , i s a l s o 0137560 l i s t e d u n d e r a n 0137600 o t h e r n a m e . " , \r 0137620 d i r N a m e , n a m e , 0137640 l v f d > > F D . s n ) \r 0137660 i f n o t A d j u s t L e 0137700 a d e r ( d v , f d ) \r \r i f 0137720 n e w D V n e 0 t e s t 0137740 d v > > D V . t y p e e q 0137760 d v T y p e F i l e \r i f 0140000 376 001 \0 323 221 s o E n q u e u e ( 0140020 n e w D v Q , n e w D V ) \r 0140040 i f n o t F r e e ( s y s 0140060 Z o n e , n e w D V ) \r ] \r \f 0140100 \r / / - - - - - - - - - - - - - 0140120 - - - - - - - - - - - - - - - - * 0140220 - - - - - - - - - - - - \r a n d 0140240 S a l v a g e ( d v , f d ) 0140260 = v a l o f \r / / - - - - 0140300 - - - - - - - - - - - - - - - - * 0140400 - - - - - 376 001 \0 \t \b - - - - - - 0140420 - - - - - - - - - - \r / / d v 0140440 i s a n e n t r y f r o 0140460 m a d i r e c t o r y f o 0140500 r w h i c h n o v a l i d 0140520 F D e x i s t s . \r / / I 0140540 t m a y b e t h a t a 0140560 c h a i n o f p a g e s s 0140600 t a r t s t h e r e , b u t 0140620 t h a t i t i s i l l e 0140640 g a l \r / / i n s o m e 0140660 w a y , i n w h i c h c a 0140700 s e a l l o f t h e c h 0140720 a i n ' s p a g e s a r e 0140740 i n b a d B T . \r / / I f 0140760 t h e r e i s a c h a i n 0141000 , f o l l o w i 376 001 \0 e 9 t 0141020 s f o r w a r d l i n k s 0141040 a n d r e p a i r m i n o r 0141060 d a m a g e , \r / / t r u 0141100 n c a t i n g i f m a j o r 0141120 d a m a g e i s e n c o u 0141140 n t e r e d . \r / / R e t u r 0141160 n s a n f d i f t h e 0141200 f i l e i s s a l v a g e d 0141220 , o t h e r w i s e r e t u 0141240 r n s 0 . \r [ \r l e t p r e 0141260 v V D A , c u r V D A , n e 0141300 x t V D A = 0 , d v > > D 0141320 V . f p . l e a d e r V i r t u 0141340 a l D a , n i l \r b a n z a i 0141360 F l a g = - 1 \r i f C h e 0141400 c k e d V D A ( c u r V D A ) 376 0141420 001 \0 002 9 e q - 3 r e s u l 0141440 t i s 0 \r u n l e s s G e t 0141460 B i t ( b a d B T , c u r V D 0141500 A ) r e s u l t i s 0 \r l e 0141520