$ 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