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