$ od -c -N 50000 [Pixel]<IFS>IfsScavenger.dm!1 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 233 031 0036340 < _ \0 \0 376 001 \0 264 371 / / 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 \r / / L a s t 0036520 m o d i f i e d J u l y 2 0036540 7 , 1 9 8 2 7 : 3 0 P M 0036560 b y B o g g s \r \r g e t " 0036600 I f s S c a v e n g e r . d e c 0036620 l " \r g e t " A l t o F i l e 0036640 S y s . d " \r g e t " I f s D 0036660 i r s . d e c l " \r g e t " S 0036700 t r e a m s . d " \r g e t " D 0036720 i s k s . d " \r \r e x t e r n a 0036740 l \r [ \r / / o u 376 001 \0 X w t g 0036760 o i n g p r o c e d u r e s \r 0037000 I f s S c a v e n g e r ; S c 0037020 a v N o B u f s P r o c ; S c 0037040 r a t c h \r S p l i t P u t s ; 0037060 L o g E r r o r s ; E x t e 0037100 n d F i l e \r \r / / i n c o m 0037120 i n g p r o c e d u r e s \r P 0037140 a s s 1 ; P a s s 2 ; D i s 0037160 k E d i t o r ; D u m p T r e 0037200 e ; D u m p L P T \r C r e a t 0037220 e K e y w o r d T a b l e ; I 0037240 n s e r t K e y w o r d ; C o 0037260 n f i r m ; G e t N u m b e r 0037300 \r O p e n D i s k ; C l o s e 0037320 D i s k ; S n a r f B u f f e 0037340 r \r G e t K e y w o r d ; 376 001 0037360 \0 356 261 I n i t C m d ; W R I T 0037400 E U D T \r C l o s e s ; P u t 0037420 s ; W s s ; W s ; A l l o 0037440 c a t e ; F r e e ; S e t B 0037460 l o c k ; Z e r o ; N o o p 0037500 \r C a l l S w a t ; I F S E r 0037520 r o r ; S y s E r r ; R e t 0037540 u r n F r o m \r O p e n F i l e 0037560 ; C r e a t e D i s k S t r e 0037600 a m ; F i l e L e n g t h ; 0037620 P o s i t i o n P a g e \r R e l 0037640 e a s e D i s k P a g e ; A s 0037660 s i g n D i s k P a g e ; A c 0037700 t O n D i s k P a g e s ; W r 0037720 i t e D i s k P a g e s \r D i s 0037740 k F i n d H o l e ; J u m p T 0037760 o F a 376 001 \0 b 211 ; G e t C u r 0040000 r e n t F a \r \r / / o u t g o 0040020 i n g s t a t i c s \r s c r a 0040040 t c h D i s k ; s c a v D i s 0040060 k \r n u m F i l e s ; n u m P 0040100 a g e s ; l p t ; p a s s ; 0040120 p h a s e \r e d i t H o m e F 0040140 l a g ; i n i t T r e e F l a 0040160 g ; i n i t L p t F l a g ; 0040200 d e b u g F l a g ; j u s t F 0040220 i x D i r F l a g \r \r / / i n 0040240 c o m i n g s t a t i c s \r d 0040260 s p ; k e y s ; s y s D i s 0040300 k ; n u m V M e m B u f s ; 0040320 s y s Z o n e \r w o r d s P e r 0040340 P a g e ; b y t e s P e r P a 0040360 g e \r ] \r \r s t 376 001 \0 342 255 a t i 0040400 c \r [ \r s c r a t c h D i s k ; 0040420 s c a v D i s k \r n u m F i l 0040440 e s ; n u m P a g e s ; l p 0040460 t ; p a s s ; p h a s e \r \r 0040500 e d i t H o m e F l a g = f 0040520 a l s e \r i n i t T r e e F l a 0040540 g = f a l s e \r i n i t L p 0040560 t F l a g = t r u e \r d e b 0040600 u g F l a g = f a l s e \r j 0040620 u s t F i x D i r F l a g = 0040640 f a l s e \r \r k b d K T ; k b 0040660 d C S \r ] \r \f \r / / - - - - - - 0040700 - - - - - - - - - - - - - - - - * 0040760 - - - - - - - - - - - - - 376 001 \0 0041000 < 322 - - - - - - - - - - - - - - 0041020 - - - - - - - - \r l e t I f s 0041040 S c a v e n g e r ( ) b e \r / 0041060 / - - - - - - - - - - - - - - - 0041100 - - - - - - - - - - - - - - - - * 0041200 - - - - - - - - - - \r [ \r W s ( 0041220 " I F S S c a v e n g e r o 0041240 f J u n e 1 6 , 1 9 8 3 " 0041260 ) \r W s ( " * N S t a r t e d 0041300 a t " ) ; W R I T E U D T ( 0041320 d s p , 0 , t r u e ) \r \r k 0041340 b d K T = C r e a t e K e y 0041360 w o r d T a b l e ( 1 3 , 1 ) 0041400 \r I 376 001 \0 , 300 n s e r t K e y w 0041420 o r d ( k b d K T , " D e b u 0041440 g " ) ! 0 = D e b u g \r I n 0041460 s e r t K e y w o r d ( k b d K 0041500 T , " D i s k E d i t o r " ) 0041520 ! 0 = S e t u p D i s k E d 0041540 i t o r \r I n s e r t K e y w o 0041560 r d ( k b d K T , " D u m p L 0041600 P T " ) ! 0 = D u m p L P T 0041620 \r I n s e r t K e y w o r d ( k 0041640 b d K T , " D u m p T r e e " 0041660 ) ! 0 = D u m p T r e e \r I 0041700 n s e r t K e y w o r d ( k b d 0041720 K T , " E d i t H o m e " ) ! 0041740 0 = E d i t H o m e \r I n s 0041760 e r t K e y w o r d ( k b d K T 0042000 , " I n i t 376 001 \0 p 274 L P T " 0042020 ) ! 0 = I n i t L P T \r I n 0042040 s e r t K e y w o r d ( k b d K 0042060 T , " I n i t T r e e " ) ! 0 0042100 = I n i t T r e e \r I n s e 0042120 r t K e y w o r d ( k b d K T , 0042140 " J u s t F i x D i r " ) ! 0 0042160 = J u s t F i x D i r \r I n 0042200 s e r t K e y w o r d ( k b d K 0042220 T , " P a s s 1 " ) ! 0 = 0042240 P a s s 1 \r I n s e r t K e y w 0042260 o r d ( k b d K T , " P a s s 0042300 2 " ) ! 0 = S e t u p P a s 0042320 s 2 \r I n s e r t K e y w o r d 0042340 ( k b d K T , " Q u i t " ) ! 0042360 0 = Q u i t \r I n s e r t K 0042400 e y w o r d ( k b d K T 376 001 \0 371 0042420 S , " S c a v e n g e " ) ! 0 0042440 = S c a v e n g e \r I n s e 0042460 r t K e y w o r d ( k b d K T , 0042500 " S c r a t c h " ) ! 0 = 0042520 S c r a t c h \r \r [ \r 0042540 k b d C S = I n i t C m d 0042560 ( 5 0 0 , 1 5 ) r e p e a t 0042600 u n t i l k b d C S n e 0 0042620 \r W s s ( k b d C S , " 0042640 * N * * " ) \r l e t k t 0042660 e = G e t K e y w o r d ( k 0042700 b d C S , k b d K T ) \r 0042720 P u t s ( k b d C S , $ * S ) 0042740 \r ( k t e ! 0 ) ( ) \r 0042760 C l o s e s ( k b d C S ) \r 0043000 ] r e p e a t \r ] \r \r / / 0043020 - 376 001 \0 R 334 - - - - - - - - - - 0043040 - - - - - - - - - - - - - - - - * 0043140 - - - - - - - - - - - - - - \r a 0043160 n d S e t u p ( P r o c , n 0043200 u m V P a g e s ) b e \r / / - 0043220 - - - - - - - - - - - - - - - - * 0043340 - - - - - - - - \r [ \r l e t b 0043360 u f f P t r , n u m B u f f s 0043400 = n i l , ( n u m V M e m 0043420 B u f s - n 376 001 \0 242 306 u m V P a 0043440 g e s ) * 4 \r [ \r 0043460 b u f f P t r = S n a r f B 0043500 u f f e r ( 0 , n u m B u f f 0043520 s ) ; i f b u f f P t r n 0043540 e 0 b r e a k \r n u m 0043560 B u f f s = n u m B u f f s 0043600 - 1 \r i f n u m B u f 0043620 f s e q 0 t h e n I F S 0043640 E r r o r ( 1 3 ) \r ] r 0043660 e p e a t \r P r o c ( b u f f P 0043700 t r , n u m B u f f s ) \r ] \r 0043720 \r / / T h e 1 6 b e l o w 0043740 i s 4 o p e n f i l e s 0043760 ( l p t + 3 s o r t f 0044000 i l e s ) + 1 2 p a g e s 0044020 f o r o v e r l a 376 001 \0 O 300 0044040 y s \r / / T h e 1 2 p a g 0044060 e s f o r o v e r l a y s 0044100 i s d e t e r m i n e d e m 0044120 p i r i c a l l y \r / / - - - - 0044140 - - - - - - - - - - - - - - - - * 0044260 - - - - - \r a n d S e t u p P 0044300 a s s 2 ( ) b e S e t u p ( 0044320 P a s s 2 , 1 6 ) \r / / - - - 0044340 - - - - - - - - - - - - - - - - * 0044440 376 001 \0 h 222 - - - - - - - - - - - 0044460 - - - - - - - - - - - \r \r / / - 0044500 - - - - - - - - - - - - - - - - * 0044620 - - - - - - - - \r a n d S e t 0044640 u p D i s k E d i t o r ( ) b 0044660 e S e t u p ( D i s k E d i t 0044700 o r , 1 0 ) \r / / - - - - - - 0044720 - - - - - - - - - - - - - - - - * 0045040 - - - \r \f 376 001 \0 037 301 \r / / - - - 0045060 - - - - - - - - - - - - - - - - * 0045200 - - - - - - \r a n d S c a v e 0045220 n g e ( ) b e \r / / - - - - - 0045240 - - - - - - - - - - - - - - - - * 0045360 - - - - \r [ \r l e t q u i t F 0045400 l a g = f a l s e \r l e t 0045420 d r i v e L i s t = v e c 0045440 7 ; S e t B l o c 376 001 \0 _ 257 k 0045460 ( d r i v e L i s t , - 1 , 0045500 8 ) \r i f C o n f i r m ( k b 0045520 d C S , " * N A r e a l l 0045540 o f t h e p a c k s s p i 0045560 n n i n g ? " ) t h e n \r 0045600 [ \r W s s ( k b d C S 0045620 , " * N H o w m a n y p a 0045640 c k s a r e t h e r e ? " 0045660 ) \r l e t n u m P a c k 0045700 s = G e t N u m b e r ( k b 0045720 d C S ) \r i f n u m P a 0045740 c k s g r 8 t h e n [ 0045760 W s s ( k b d C S , " * N T o 0046000 o m a n y : 8 m a x " ) ; 0046020 r e t u r n ] \r 0046040 [ \r l e t d i s 376 0046060 001 \0 301 243 k = O p e n D i s k 0046100 ( " * N S c a n p a c k o n 0046120 d r i v e " , 0 , t r u 0046140 e , f a l s e ) \r 0046160 i f d i s k n e 0 t h e 0046200 n \r [ \r 0046220 l e t d r i v e N 0046240 u m b e r = d i s k > > D S 0046260 K . d r i v e N u m b e r \r 0046300 C l o s e D i s k 0046320 ( d i s k ) \r 0046340 l e t d u p l i c a t e , h 0046360 o l e = f a l s e , - 1 \r 0046400 f o r i = 0046420 0 t o 7 d o \r 0046440 [ \r 0046460 376 001 \0 \r 213 i f d r i 0046500 v e L i s t ! i e q d r i v 0046520 e N u m b e r t h e n d u p 0046540 l i c a t e = t r u e \r 0046560 i f d r i 0046600 v e L i s t ! i e q - 1 & 0046620 h o l e e q - 1 t h e n 0046640 h o l e = i \r 0046660 ] \r 0046700 t e s t d u p l i c a t e \r 0046720 i f s o 0046740 W s s ( k b d C S , " * N S 0046760 a m e d r i v e s p e c i f 0047000 i e d t w i c e " ) \r 0047020 i f n o t \r 0047040 [ \r 0047060 376 001 \0 364 e 0047100 d r i v e L i s t ! h o l 0047120 e = d r i v e N u m b e r \r 0047140 i 0047160 f h o l e + 1 e q n u m P 0047200 a c k s b r e a k \r 0047220 ] \r 0047240 ] \r ] r 0047260 e p e a t \r q u i t F l a 0047300 g = C o n f i r m ( k b d C 0047320 S , " * N R e t u r n t o 0047340 E x e c i f a l l g o e s 0047360 w e l l ? " ) \r ] \r i 0047400 n i t L p t F l a g = t r u 0047420 e \r l e t d r i v e I n d e x 0047440 = 0 \r l e t o k = v a 0047460 l o f \r [ \r o k 376 001 0047500 \0 m 350 = P a s s 1 ( d r i v 0047520 e L i s t ! d r i v e I n d e x 0047540 ) \r d r i v e I n d e x 0047560 = d r i v e I n d e x + 1 \r 0047600 u n l e s s o k r e s 0047620 u l t i s f a l s e / / s 0047640 o m e t h i n g i s w r o n 0047660 g \r i f o k e q 1 2 0047700 3 4 5 6 b r e s u l t i s t 0047720 r u e / / a l l p a c k s 0047740 p r e s e n t a n d a c c 0047760 o u n t e d f o r \r / / 0050000 o k s h o u l d b e - 1 0050020 n o w , i n d i c a t i n g 0050040 s u c c e s s s c a n n i n 0050060 g t h a t p a c k \r ] 0050100 r e 376 001 \0 C L p e a t \r i f 0050120 o k t h e n S e t u p P a s 0050140 s 2 ( ) \r i f q u i t F l a g 0050160 t h e n Q u i t ( ) \r ] \r \f 0050200 \r / / - - - - - - - - - - - - - 0050220 - - - - - - - - - - - - - - - - * 0050320 - - - - - - - - - - - - \r a n d 0050340 D e b u g ( ) b e T o g g 0050360 l e F l a g ( l v d e b u g F 0050400 l a g ) \r / / - - - - - - - - - 0050420 - - - - - - - - - - - - - - - - * 0050500 - - - - - - - - 376 001 \0 376 223 - - - 0050520 - - - - - - - - - - - - - - - - 0050540 - - - - - \r \r / / - - - - - - - 0050560 - - - - - - - - - - - - - - - - * 0050700 - - \r a n d I n i t L P T ( ) 0050720 b e T o g g l e F l a g ( l 0050740 v i n i t L p t F l a g ) \r / 0050760 / - - - - - - - - - - - - - - - 0051000 - - - - - - - - - - - - - - - - * 0051100 - - - - - - - - - - \r \r / 376 001 \0 0051120 z 375 / - - - - - - - - - - - - - 0051140 - - - - - - - - - - - - - - - - * 0051240 - - - - - - - - - - - - \r a n d 0051260 I n i t T r e e ( ) b e T 0051300 o g g l e F l a g ( l v i n i 0051320 t T r e e F l a g ) \r / / - - - 0051340 - - - - - - - - - - - - - - - - * 0051460 - - - - - - \r \r / / - - - - - - 0051500 - - - - - - - - - - - - - - - - 0051520 - - 376 001 \0 \b D - - - - - - - - - 0051540 - - - - - - - - - - - - - - - - * 0051620 - - - - - - - - \r a n d E d i 0051640 t H o m e ( ) b e T o g g l 0051660 e F l a g ( l v e d i t H o m 0051700 e F l a g ) \r / / - - - - - - - 0051720 - - - - - - - - - - - - - - - - * 0052040 - - \r \r / / - - - - - - - - - - 0052060 - - - - - - - - - - - - - - - - * 0052120 - - - - - - - 376 001 \0 275 225 - - - - 0052140 - - - - - - - - - - - - - - - - * 0052200 - - - - \r a n d J u s t F i x 0052220 D i r ( ) b e T o g g l e F 0052240 l a g ( l v j u s t F i x D i 0052260 r F l a g ) \r / / - - - - - - - 0052300 - - - - - - - - - - - - - - - - * 0052420 - - \r \r / / - - - - - - - - - - 0052440 - - - - - - - - - - - - - - - - * 0052520 - - - - - - - - - - - - 376 001 \0 Q 0052540 276 - - - - - - - - - - - - - - - 0052560 - - - - \r a n d Q u i t ( ) 0052600 b e f i n i s h \r / / - - - - 0052620 - - - - - - - - - - - - - - - - * 0052740 - - - - - \r \r / / - - - - - - - 0052760 - - - - - - - - - - - - - - - - * 0053100 - - \r a n d T o g g l e F l a 0053120 g ( l v F l a g ) b e \r / / - 0053140 - 376 001 \0 m { - - - - - - - - - - 0053160 - - - - - - - - - - - - - - - - * 0053260 - - - - - - - - - - - - - \r / / 0053300 t o g g l e a f l a g \r [ 0053320 \r l v F l a g ! 0 = n o t 0053340 l v F l a g ! 0 \r W s s ( k b d 0053360 C S , l v F l a g ! 0 ? " Y 0053400 e s " , " N o " ) \r ] \r \r / / 0053420 - - - - - - - - - - - - - - - - * 0053540 - - - - - - 376 001 \0 h 266 - - - \r a 0053560 n d S c r a t c h ( n i l ; 0053600 n u m a r g s n a ) = v a 0053620 l o f \r / / - - - - - - - - - - 0053640 - - - - - - - - - - - - - - - - * 0053740 - - - - - - - - - - - - - - - \r 0053760 [ \r i f s c r a t c h D i s k 0054000 n e 0 & s c r a t c h D 0054020 i s k n e s y s D i s k t 0054040 h e n \r C l o s e D i s k 0054060 ( s c r a t c h D i s k , t r 0054100 u e ) \r i f n a g r 0 t 0054120 h e n W s ( " * N S c r a t c 0054140 h " ) \r s c r a t c 376 001 \0 % 337 0054160 h D i s k = O p e n D i s k 0054200 ( " d i s k : " , t r u e , 0054220 f a l s e , t r u e ) \r i f 0054240 s c r a t c h D i s k e q 0054260 0 t h e n W s s ( k b d C S 0054300 , " ( I s t h e p a c k 0054320 f o r m a t t e d ? ) " ) \r r 0054340 e s u l t i s s c r a t c h D 0054360 i s k \r ] \r \f \r / / - - - - - - 0054400 - - - - - - - - - - - - - - - - * 0054520 - - - \r a n d S c a v N o B u 0054540 f s P r o c ( ) b e C a l l 0054560 376 001 \0 \r 247 S w a t ( " N o V M 0054600 e m b u f f e r s " ) \r / / - 0054620 - - - - - - - - - - - - - - - - * 0054740 - - - - - - - - \r \r / / - - - - 0054760 - - - - - - - - - - - - - - - - * 0055100 - - - - - \r l e t S p l i t P 0055120 u t s ( s t , i t e m ) b e 0055140 \r / / - - - - - - - - - - - - - 0055160 - - - - - 376 001 \0 360 310 - - - - - - 0055200 - - - - - - - - - - - - - - - - * 0055300 - \r / / s p l i t s t r e a 0055320 m o p e r a t i o n f o r 0055340 d s p \r [ \r P u t s ( s t > > S 0055360 T . p a r 1 , i t e m ) \r P u 0055400 t s ( s t > > S T . p a r 2 , 0055420 i t e m ) \r ] \r \r / / - - - - - 0055440 - - - - - - - - - - - - - - - - * 0055560 - - - - \r a n d L 376 001 \0 254 242 o 0055600 g E r r o r s ( s t , e c , 0055620 p a r a m ) = v a l o f \r / 0055640 / - - - - - - - - - - - - - - - 0055660 - - - - - - - - - - - - - - - - * 0055760 - - - - - - - - - - \r [ \r m a n 0056000 i f e s t \r [ \r B F 0056020 S D i s k F u l l = 1 1 0 2 0056040 \r T F S D i s k F u l l 0056060 = 1 4 0 2 \r ] \r i f e 0056100 c e q B F S D i s k F u l l 0056120 % e c e q T F S D i s k 0056140 F u l l t h e n \r [ \r 0056160 C l o s e s ( d s p > > S 376 0056200 001 \0 304 345 T . p a r 2 ) \r d 0056220 s p > > S T . p a r 2 = A l 0056240 l o c a t e ( s y s Z o n e , 0056260 l S T ) \r S e t B l o c k 0056300 ( d s p > > S T . p a r 2 , N 0056320 o o p , l S T ) \r W s ( 0056340 " * N D P 0 i s f u l l - 0056360 l o g f i l e t r u n c a 0056400 t e d * N " ) \r R e t u r 0056420 n F r o m ( P u t s ) \r ] 0056440 \r S y s E r r ( s t , e c , 0056460 p a r a m ) \r ] \r \f \r / / - - - 0056500 - - - - - - - - - - - - - - - - * 0056600 - - - - 376 001 \0 ` 372 - - - - - - - 0056620 - - - - - - - - - - - \r a n d 0056640 E x t e n d F i l e ( t f s N a 0056660 m e , m a x P N , m i n P N 0056700 ) b e \r / / - - - - - - - - - 0056720 - - - - - - - - - - - - - - - - * 0057040 \r [ \r / / E x t e n d s a 0057060 f i l e u s i n g t h e l 0057100 e a s t p o s s i b l e n u 0057120 m b e r o f p a g e r u n 0057140 s , \r / / e a c h a s l 0057160 o n g a s p o s s i b l e . 0057200 \r l e t i f p 376 001 \0 312 307 = 0057220 v e c l F P ; Z e r o ( i f 0057240 p , l F P ) \r l e t s f = 0057260 O p e n F i l e ( t f s N a m 0057300 e , k s T y p e R e a d O n l 0057320 y , 0 , 0 , i f p , 0 , 0057340 0 , 0 , s c a v D i s k ) 0057360 \r l e t p n , f a = - 1 0057400 , v e c l F A \r i f s f 0057420 n e 0 t h e n \r [ \r 0057440 F i l e L e n g t h ( s f ) 0057460 \r G e t C u r r e n t F a 0057500 ( s f , f a ) \r C l o s 0057520 e s ( s f ) \r ] \r l e t 0057540 c a = A l l o c a t e ( s y 0057560 s Z o n e , w o r d s P e r P 0057600 a g e ) ; Z e r o ( c a , 376 001 0057620 \0 303 016 w o r d s P e r P a g e 0057640 ) \r [ \r l e t h o 0057660 l e S i z e = n i l \r 0057700 l e t h o l e V D A = D i 0057720 s k F i n d H o l e ( s c a v D 0057740 i s k , m a x P N - p n , l 0057760 v h o l e S i z e ) \r i 0060000 f h o l e V D A e q - 1 0060020 t e s t p n u l s m i n P 0060040 N \r i f s o I F S 0060060 E r r o r ( e c F i l e S y s t 0060100 e m F u l l ) \r i f 0060120 n o t b r e a k \r R e l 0060140 e a s e D i s k P a g e ( s c a 0060160 v D i s k , A s s i g n D i s 0060200 k P a g e ( s c a v D i s k , 0060220 h o l 376 001 \0 335 331 e V D A - 1 ) ) 0060240 \r t e s t p n e q - 0060260 1 \r i f s o s f 0060300 = O p e n F i l e ( t f s N a 0060320 m e , 0 , 0 , 0 , i f p 0060340 , 0 , 0 , 0 , s c a v D 0060360 i s k ) \r i f n o t 0060400 \r [ \r 0060420 l e t D A s = v 0060440 e c 2 \r D A 0060460 s ! 0 = e o f D A ; D A s 0060500 ! 1 = f i l l I n D A ; D 0060520 A s ! 2 = e o f D A \r 0060540 W r i t e D i s k P 0060560 a g e s ( s c a v D i s k , 0 0060600 , D A s - p n , i f p , p 0060620 n + 1 , p n + 376 001 \0 326 002 1 , 0060640 D C w r i t e L D , 0 , b y 0060660 t e s P e r P a g e , c a ) \r 0060700 D A s ! 0 = 0060720 f a > > F A . d a \r 0060740 W r i t e D i s k P a g 0060760 e s ( s c a v D i s k , 0 , 0061000 D A s - p n , i f p , p n + 0061020 1 , p n + 1 , - 1 , 0 , 0061040 b y t e s P e r P a g e , c a 0061060 ) \r D A s ! 0 0061100 = f i l l I n D A ; D A s 0061120 ! 1 = f a > > F A . d a ; 0061140 D A s ! 2 = f i l l I n D A 0061160 \r A c t O n D 0061200 i s k P a g e s ( s c a v D i s 0061220 k , 0 , D A s - p n + 376 001 \0 0061240 361 325 1 , i f p , p n , p n 0061260 , D C r e a d D , 0 , 0 , 0061300 c a ) \r D A 0061320 s ! 2 = h o l e V D A \r 0061340 W r i t e D i s k 0061360 P a g e s ( s c a v D i s k , 0061400 0 , D A s - p n + 1 , i f p 0061420 , p n , p n , - 1 , 0 , 0061440 b y t e s P e r P a g e , c 0061460 a ) \r s f = 0061500 C r e a t e D i s k S t r e a 0061520 m ( i f p , 0 , 0 , 0 , 0061540 0 , 0 , 0 , s c a v D i s 0061560 k ) \r f a > > 0061600 F A . d a = h o l e V D A \r 0061620 f a > > F A . 0061640 p a 376 \0 343 365 226 g e N u m b e r 0061660 = p n + 1 \r 0061700 f a > > F A . c h a r P o s = 0061720 0 \r J u m p 0061740 T o F a ( s f , f a ) \r 0061760 ] \r P o s i t 0062000 i o n P a g e ( s f , p n + h 0062020 o l e S i z e ) \r G e t C 0062040 u r r e n t F a ( s f , f a ) 0062060 \r C l o s e s ( s f ) \r 0062100 p n = f a > > F A . p a 0062120 g e N u m b e r \r ] r e 0062140 p e a t u n t i l p n e q 0062160 m a x P N \r F r e e ( s y s Z o 0062200 n e , c a ) \r ] \r 377 \0 \0 I f s 0062220 S c a v O v I n i t . b c p l \0 0062240 373 224 214 ! h \0 \0 376 001 \0 342 Z / / I 0062260 f s S c a v O v I n i t . b c p 0062300 l - o n c e o n l y c o 0062320 d e \r / / C o p y r i g h t 0062340 X e r o x C o r p o r a t i o 0062360 n 1 9 7 9 \r / / L a s t m 0062400 o d i f i e d D e c e m b e r 0062420 2 2 , 1 9 7 9 3 : 0 3 0062440 P M b y B o g g s \r \r g e t 0062460 " D i s k s . d " \r \r e x t e 0062500 r n a l \r [ \r / / o u t g o i 0062520 n g p r o c e d u r e s \r D e 0062540 c l a r e A l l O E P s ; I n 0062560 i t D i s k s F i n i s h \r \r / 0062600 / i n c o m i n g p r o c e 0062620 d u r e s \r P a s s 1 ; P a s 0062640 s 2 ; D i s k E d i t 376 001 \0 200 0062660 276 o r ; D u m p L P T ; D u 0062700 m p T r e e \r \r D e c l a r e O 0062720 E P ; I n i t B T r e e O E P 0062740 ; I n i t D i s k S t r e a m 0062760 s O E P \r I n i t C m d S c a n 0063000 O E P ; I n i t K e y w o r d 0063020 O E P ; I n i t S t r i n g O 0063040 E P \r \r T F S W r i t e P a g e 0063060 s ; T F S A s s i g n D i s k 0063100 P a g e ; T F S C r e a t e F 0063120 i l e \r T F S D e l e t e P a g 0063140 e s ; T F S R e l e a s e D i 0063160 s k P a g e ; T F S C l o s e 0063200 \r I F S O p e n D D ; B F S F 0063220 l u s h D D ; B F S D e s t r 0063240 o y D D M g r \r I F S C l o s e 0063260 D 376 001 \0 212 : D ; I F S L o c k 0063300 D D ; I F S U n l o c k D D ; 0063320 I F S R e a d D D P a g e \r B 0063340 F S C l o s e D D ; B F S L o 0063360 c k D D ; B F S U n l o c k D 0063400 D ; B F S R e a d D D P a g e 0063420 \r B F S W r i t e P a g e s ; 0063440 B F S A s s i g n D i s k P a g 0063460 e ; B F S C r e a t e F i l e 0063500 \r B F S D e l e t e P a g e s ; 0063520 B F S R e l e a s e D i s k P 0063540 a g e ; B F S C l o s e \r \r I 0063560 F S F i n i s h ; W s s ; I 0063600 F S E r r o r ; P r i n t R e 0063620 a l D A \r \r / / i n c o m i n 0063640 g s t a t i c s \r l v U s e r 0063660 F i n i s h 376 001 \0 272 ) P r o c ; 0063700 b f s D D M g r ; s y s D i 0063720 s k \r ] \r \r m a n i f e s t e 0063740 c B a d U F P = 2 3 \r \f \r / 0063760 / - - - - - - - - - - - - - - - 0064000 - - - - - - - - - - - - - - - - * 0064060 - - - - - - - - - - - - \r l e t 0064100 D e c l a r e A l l O E P s ( 0064120 o e v ) b e \r / / - - - - - - 0064140 - - - - - - - - - - - - - - - - * 0064240 - - - - - \r [ \r I n i t B T r e 0064260 e O E P ( o e v ) \r I 376 001 \0 034 m 0064300 n i t D i s k S t r e a m s O E 0064320 P ( o e v ) \r I n i t C m d S c 0064340 a n O E P ( o e v ) \r I n i t K 0064360 e y w o r d O E P ( o e v ) \r I 0064400 n i t S t r i n g O E P ( o e v 0064420 ) \r \r i f @ l v U s e r F i n 0064440 i s h P r o c n e I F S F i 0064460 n i s h t h e n I F S E r r 0064500 o r ( e c B a d U F P ) \r \r D e 0064520 c l a r e O E P ( o e v , l v 0064540 D i s k E d i t o r , l v 0064560 P a s s 1 , l v P a s s 2 , 0064600 \r l v D u m p L P T , l v 0064620 D u m p T r e e ) \r D e c l a 0064640 r e O E P ( o e v , l v I F 0064660 S O p e n D D , l v I F S C 0064700 376 001 \0 e 315 l o s e D D , l v 0064720 I F S L o c k D D , \r l v I 0064740 F S U n l o c k D D , l v I 0064760 F S R e a d D D P a g e ) \r D e 0065000 c l a r e O E P ( o e v , l v 0065020 T F S W r i t e P a g e s , 0065040 l v T F S D e l e t e P a g e 0065060 s , l v T F S C r e a t e F 0065100 i l e , \r l v T F S A s s i 0065120 g n D i s k P a g e , l v T 0065140 F S R e l e a s e D i s k P a g 0065160 e , l v T F S C l o s e ) \r 0065200 D e c l a r e O E P ( o e v , 0065220 l v B F S C l o s e D D , l 0065240 v B F S L o c k D D , l v 0065260 B F S U n l o c k D D , \r l v 0065300 B F S R 376 001 \0 275 005 e a d D D P 0065320 a g e , l v B F S F l u s h 0065340 D D , l v B F S D e s t r o 0065360 y D D M g r ) \r D e c l a r e O 0065400 E P ( o e v , l v B F S W r 0065420 i t e P a g e s , l v B F S 0065440 D e l e t e P a g e s , l v 0065460 B F S C r e a t e F i l e , \r 0065500 l v B F S A s s i g n D i s k 0065520 P a g e , l v B F S R e l e 0065540 a s e D i s k P a g e , l v 0065560 B F S C l o s e ) \r D e c l a r 0065600 e O E P ( o e v , l v I F S 0065620 F i n i s h , l v W s s , 0065640 l v P r i n t R e a l D A ) \r 0065660 ] \r \r / / - - - - - - - - - - - 0065700 - - - - - - - - - - 376 001 \0 z # - 0065720 - - - - - - - - - - - - - - - - * 0066000 - - - - - \r a n d I n i t D i 0066020 s k s F i n i s h ( ) b e \r / 0066040 / - - - - - - - - - - - - - - - 0066060 - - - - - - - - - - - - - - - - * 0066140 - - - - - - - - - - - - \r [ \r @ 0066160 l v U s e r F i n i s h P r o c 0066200 = I F S F i n i s h / / 0066220 n o w i n s t a l l p o i n 0066240 t e r t o s w a p p a b l e 0066260 v e r s i o n \r \r s y s D i s 0066300 k > > D S K . W r i t e D i s 376 0066320 001 \0 A 210 k P a g e s = B F S 0066340 W r i t e P a g e s \r s y s D i 0066360 s k > > D S K . A s s i g n D i 0066400 s k P a g e = B F S A s s i 0066420 g n D i s k P a g e \r s y s D i 0066440 s k > > D S K . C r e a t e D i 0066460 s k F i l e = B F S C r e a 0066500 t e F i l e \r s y s D i s k > > 0066520 D S K . D e l e t e D i s k P a 0066540 g e s = B F S D e l e t e P 0066560 a g e s \r s y s D i s k > > D S 0066600 K . R e l e a s e D i s k P a g 0066620 e = B F S R e l e a s e D i 0066640 s k P a g e \r s y s D i s k > > 0066660 D S K . C l o s e D i s k = 0066700 B F S C l o s e \r \r b f s D D M 0066720 g r > > 376 \0 346 260 220 D D M g r . L 0066740 o c k D D = B F S L o c k D 0066760 D \r b f s D D M g r > > D D M g 0067000 r . R e a d D D P a g e = B 0067020 F S R e a d D D P a g e \r b f s 0067040 D D M g r > > D D M g r . U n l 0067060 o c k D D = B F S U n l o c 0067100 k D D \r b f s D D M g r > > D D 0067120 M g r . F l u s h D D = B F 0067140 S F l u s h D D \r b f s D D M g 0067160 r > > D D M g r . C l o s e D D 0067200 = B F S C l o s e D D \r b f 0067220 s D D M g r > > D D M g r . D e 0067240 s t r o y D D M g r = B F S 0067260 D e s t r o y D D M g r \r ] \r 377 0067300 \0 \0 I f s S c a v C S D s p . b 0067320 c p l \0 373 226 ? 027 S \0 \0 376 001 \0 317 263 0067340 / / I f s S c a v C S D s p . 0067360 b c p l - - I f s S c a v 0067400 e n g e r d e p e n d e n t 0067420 p o r t i o n o f t h e \r / 0067440 / \t c o m m a n d s c a n n e 0067460 r p a c k a g e . T h i s 0067500 f i l e s t a r t e d o u 0067520 t l i f e a s \r / / \t C m d 0067540 S c a n D i s p l a y . b c p l 0067560 \r / / C o p y r i g h t X e 0067600 r o x C o r p o r a t i o n 0067620 1 9 7 9 , 1 9 8 0 \r / / L a 0067640 s t m o d i f i e d N o v e 0067660 m b e r 1 6 , 1 9 8 0 3 0067700 : 1 1 P M b y B o g g s \r 0067720 \r g e t " C m d S c a n . d e 0067740 376 001 \0 $ 216 c l " \r g e t " A l 0067760 t o D e f s . d " \r \r e x t e r 0070000 n a l \r [ \r / / o u t g o i n 0070020 g p r o c e d u r e s \r D e f 0070040 E r a s e ; D e f E r r o r ; 0070060 D e f B r e a k ; D e f E c 0070100 h o ; C m d E r r o r ; I n 0070120 v e r t W i n d o w \r \r / / i 0070140 n c o m i n g p r o c e d u r 0070160 e s \r C h a r W i d t h ; G e 0070200 t B i t P o s ; G e t L m a r 0070220 g ; E r a s e B i t s \r P u t 0070240 s ; R e s e t s ; W s s ; 0070260 S y s E r r ; N o o p \r C u r 0070300 r e n t P h r a s e ; B a c k 0070320 u p P h r a s e ; D i s m i s 0070340 s \r F i l 376 001 \0 356 \t e P o s ; 0070360 S e t F i l e P o s ; D o u b 0070400 l e I n c r e m e n t \r ] \r \r \r 0070420 / / - - - - - - - - - - - - - - 0070440 - - - - - - - - - - - - - - - - * 0070520 - - - - - - - - - - - - - \r l e 0070540 t D e f E r a s e ( c s , f 0070560 i r s t , l a s t , c o n t 0070600 e x t ) b e \r / / - - - - - - 0070620 - - - - - - - - - - - - - - - - * 0070720 - - - - - \r [ \r / / s c a v e n 0070740 g e r ' s d s p 376 001 \0 ? 032 i 0070760 s a s p l i t s t r e a m 0071000 : \r l e t d s = c s > > C 0071020 S . d s p S > > S T . p a r 1 0071040 / / p a r 1 - > d i s p l 0071060 a y s t r e a m \r l e t k s 0071100 = c s > > C S . d s p S > > 0071120 S T . p a r 2 / / p a r 2 0071140 - > d i s k s t r e a m \r l 0071160 e t b i t s = 0 \r l e t 0071200 c h a r s = 0 \r f o r i 0071220 = f i r s t t o l a s t 0071240 d o \r [ \r l e t c 0071260 h a r = c s > > C S . b u f 0071300 > > B u f ^ i \r i f c h 0071320 a r l s # 2 0 0 t h e n \r 0071340 [ \r i 376 0071360 001 \0 \r 233 f c h a r e q $ * 0071400 n t h e n b i t s = 9 9 0071420 9 9 \r c h a r s = 0071440 c h a r s + 1 \r 0071460 b i t s = b i t s + ( c 0071500 h a r g e # 4 0 ? C h a r 0071520 W i d t h ( d s , c h a r ) , 0071540 \r C h a r W i d t 0071560 h ( d s , $ ^ ) + C h a r W i 0071600 d t h ( d s , c h a r + # 1 0 0071620 0 ) ) \r ] \r ] 0071640 \r t e s t b i t s l e G e 0071660 t B i t P o s ( d s ) - G e t L 0071700 m a r g ( d s ) \r i f s o 0071720 E r a s e B i t s ( d s , - 0071740 b i t s ) \r i f n o t \r 0071760 376 001 \0 323 E [ / / e 0072000 r a s i n g p a s t l e f t 0072020 m a r g i n \r R e 0072040 s e t s ( d s ) \r f 0072060 o r i = 0 t o f i r s 0072100 t - 1 d o \r 0072120 i f c s > > C S . b u f > > B 0072140 u f ^ i l s # 2 0 0 t h e 0072160 n P u t s ( d s , c s > > C 0072200 S . b u f > > B u f ^ i ) \r 0072220 ] \r u n l e s s k s > 0072240 > S T . p u t s e q N o o p 0072260 d o \r [ \r l e t 0072300 f i l e P o s = v e c 1 ; 0072320 F i l e P o s ( k s , f i l 0072340 e P o s ) \r D o u b l e I 0072360 n c r e m e n t ( 376 001 \0 R = f i 0072400 l e P o s , - c h a r s ) \r 0072420 S e t F i l e P o s ( k s , 0072440 f i l e P o s ) \r ] \r ] 0072460 \r \r \r / / - - - - - - - - - - - 0072500 - - - - - - - - - - - - - - - - * 0072600 \r a n d D e f B r e a k ( c s 0072620 , c h a r ) = c h a r e 0072640 q $ * n % c h a r e q 0072660 $ * s % c h a r e q $ * 0072700 0 3 3 \r / / - - - - - - - - - - 0072720 - - - - - - - - - - - - - - - - * 0072760 - - - - - - - - - - - - - - 376 001 0073000 \0 G 305 - - - - - - - - - - - - - 0073020 - - - - - - \r \r / / - - - - - - 0073040 - - - - - - - - - - - - - - - - * 0073140 - - - - - \r a n d D e f E c h 0073160 o ( c s , c h a r ) = n o 0073200 t C u r r e n t P h r a s e ( 0073220 c s ) > > P D . P h r a s e T e 0073240 r m i n a t o r ( c s , c h a 0073260 r ) \r / / - - - - - - - - - - - 0073300 - - - - - - - - - - - - - - - - * 0073400 \r \f \r 376 001 \0 031 335 / / - - - - - - 0073420 - - - - - - - - - - - - - - - - * 0073520 - - - - - \r a n d D e f E r r 0073540 o r ( c s , e c ) b e \r / / 0073560 - - - - - - - - - - - - - - - - * 0073660 - - - - - - - - - - - \r [ \r c s 0073700 > > C S . e r r o r C o d e = 0073720 e c \r s w i t c h o n e c 0073740 i n t o \r [ \r c a s 0073760 e e c C m d D e l e t e : \r 0074000 W s s 376 001 \0 330 316 ( c s 0074020 > > C S . d s p S , " X X X 0074040 " ) / / f a l l i n t o 0074060 n e x t c a s e \r c a s 0074100 e e c C m d D e s t r o y : \r 0074120 [ c s > > C S . d 0074140 e s t r o y = t r u e ; B 0074160 a c k u p P h r a s e ( c s , 0074200 c s > > C S . i P h O u t ) ] 0074220 \r c a s e e c C m d T o 0074240 o L o n g : / / j u s t b 0074260 l i n k w i n d o w a n d 0074300 d o n o t h i n g \r 0074320 [ C m d E r r o r ( c s ) ; 0074340 e n d c a s e ] \r c a 0074360 s e e c K e y A m b i g u o u 0074400 s : \r c a s e e c 376 001 \0 0074420 026 0 B a c k u p A p p e n d : \r 0074440 [ C m d E r r o r 0074460 ( c s ) ; B a c k u p P h r a 0074500 s e ( c s , 0 , e d i t A p 0074520 p e n d ) ] \r c a s e 0074540 e c T o o M a n y P h r a s e s 0074560 : \r c a s e e c E n d O 0074600 f P h r a s e : \r S 0074620 y s E r r ( c s , e c ) \r 0074640 d e f a u l t : / / a l l 0074660 t y p e s o f s y n t a x 0074700 e r r o r s g e t s a m e 0074720 h a n d l i n g \r 0074740 C m d E r r o r ( c s , " ? 0074760 " ) / / f a l l i n t o 0075000 n e x t c a s e \r c a s 0075020 e 376 001 \0 L 237 e c B a c k u p R 0075040 e p l a c e : \r B a 0075060 c k u p P h r a s e ( c s ) \r 0075100 ] \r ] \r \r \r / / - - - - - - 0075120 - - - - - - - - - - - - - - - - * 0075220 - - - - - \r a n d C m d E r r 0075240 o r ( c s , s t r i n g ; n 0075260 u m a r g s n a ) b e \r / / 0075300 - - - - - - - - - - - - - - - - * 0075400 - - - - - - - - - - - \r / / D i 0075420 s p l a y s 376 001 \0 235 257 s t r i 0075440 n g i f p r e s e n t , b 0075460 l i n k s d i s p l a y w i 0075500 n d o w , a n d r e s e t s 0075520 k e y b o a r d \r [ \r i f n 0075540 a g r 1 & s t r i n g 0075560 n e 0 t h e n W s s ( c s 0075600 , s t r i n g ) \r I n v e r t 0075620 W i n d o w ( c s > > C S . d s 0075640 p S > > S T . p a r 1 ) \r D i s 0075660 m i s s ( 5 0 ) \r I n v e r t W 0075700 i n d o w ( c s > > C S . d s p 0075720 S > > S T . p a r 1 ) \r R e s e 0075740 t s ( c s > > C S . k e y S ) \r 0075760 ] \r \r \r / / - - - - - - - - - - 0076000 - - - - - - - - - - - - - - - - 0076020 - - - - - - - - - - - - 376 001 \0 e 0076040 177 - - - - - - - - - - - - - - - 0076060 - - - - - - - - - - - - - - - - 0076100 - - - - - - \r a n d I n v e r 0076120 t W i n d o w ( d s ) b e \r / 0076140 / - - - - - - - - - - - - - - - 0076160 - - - - - - - - - - - - - - - - * 0076240 - - - - - - - - - - - - \r [ \r l 0076260 e t d c b = d s > > D S . 0076300 f d c b \r [ \r d c b 0076320 > > D C B . b a c k g r o u n d 0076340 = n o t d c b > > D C B . 0076360 b a c k g r o u n d \r i f 0076400 d c b e q d s > > D S . l 0076420 d c b t h e n b r e a k \r 0076440 376 \0 # 257 o d c b = d c b 0076460 > > D C B . n e x t \r ] 0076500 r e p e a t \r ] \r 377 \0 \0 I f s S 0076520 c a v L p t . b c p l \0 373 231 p j 0076540 211 \0 \0 376 001 \0 023 C / / I f s S c 0076560 a v L p t . b c p l - - r o 0076600 u t i n e s f o r a c c e s 0076620 s i n g t h e l e a d e r 0076640 p a g e t a b l e \r / / C o 0076660 p y r i g h t X e r o x C o 0076700 r p o r a t i o n 1 9 7 9 , 0076720 1 9 8 0 , 1 9 8 2 \r / / L a 0076740 s t m o d i f i e d J u l y 0076760 2 9 , 1 9 8 2 3 : 0 6 0077000 P M b y B o g g s \r \r g e t 0077020 " I f s S c a v e n g e r . d 0077040 e c l " \r g e t " S t r e a m 0077060 s . d " \r g e t " D i s k s . 0077100 d " \r g e t " I f s . d e c l 0077120 " \r \r e x t e r n a l \r [ \r / / 0077140 o u t g o i n 376 001 \0 240 275 g p 0077160 r o c e d u r e s \r O p e n L P 0077200 T ; C l o s e L P T ; E n u 0077220 m e r a t e L P T ; F l u s h 0077240 L P T \r G e t L p t L p t e ; 0077260 G e t L p t F a ; G e t L p t 0077300 F s ; G e t L p t H o m e \r R 0077320 e a d L P T E ; W r i t e L P 0077340 T E ; G e t L p t S o r t e d 0077360 ; S e t L p t S o r t e d \r \r 0077400 G e t L p t e T y p e ; G e t 0077420 L p t e F l a g s ; G e t L p 0077440 t e L e n g t h ; G e t L p t 0077460 e D I F R e c \r G e t L p t e I 0077500 f p ; G e t L p t e F a ; G 0077520 e t L p t e I f s N a m e ; G 0077540 e t L p t e T f s N a m e 376 001 \0 0077560 353 u \r \r S e t L p t e T y p e ; 0077600 S e t L p t e F l a g s ; S 0077620 e t L p t e L e n g t h ; S e 0077640 t L p t e D I F R e c \r S e t L 0077660 p t e I f p ; S e t L p t e F 0077700 a ; S e t L p t e I f s N a m 0077720 e ; S e t L p t e T f s N a m 0077740 e \r \r / / i n c o m i n g p 0077760 r o c e d u r e s \r Z e r o ; 0100000 M o v e B l o c k ; S e t B l 0100020 o c k ; D e f a u l t A r g s 0100040 ; C o p y S t r i n g ; E x 0100060 t r a c t S u b s t r i n g \r O 0100100 p e n F i l e ; T r u n c a t 0100120 e D i s k S t r e a m ; D e l 0100140 e t e F i l e ; R e a d L e a 0100160 d e 376 001 \0 315 314 r P a g e \r F i l 0100200 e L e n g t h ; F i l e P o s 0100220 ; S e t F i l e P o s ; J u 0100240 m p T o F a ; G e t C u r r e 0100260 n t F a ; C l e a n u p D i s 0100300 k S t r e a m \r E n d o f s ; 0100320 G e t s ; P u t s ; C l o s 0100340 e s ; R e s e t s ; W r i t 0100360 e B l o c k ; R e a d B l o c 0100400 k \r D o u b l e D i f f e r e n 0100420 c e ; D o u b l e I n c r e m 0100440 e n t ; R e a d C a l e n d a 0100460 r ; P r i n t T i m e \r I F S 0100500 E r r o r ; A l l o c a t e ; 0100520 F r e e ; E n q u e u e ; 0100540 D e q u e u e ; C a l l S w a 0100560 t \r \r / / i 376 001 \0 l 322 n c o m 0100600 i n g s t a t i c s \r s y s Z 0100620 o n e ; d e b u g F l a g ; 0100640 p a s s ; p h a s e ; s c r 0100660 a t c h D i s k \r ] \r \r m a n i 0100700 f e s t \r [ \r e c S e t L P T E 0100720 = 5 0 7 \r e c M a l f o r m 0100740 e d L P T E = 5 0 8 \r d v T 0100760 y p e H o m e = 2 \r ] \r \f \r 0101000 s t r u c t u r e L P T E : \t 0101020 \t / / L e a d e r P a g e 0101040 T a b l e E n t r y \r [ \r t y 0101060 p e b i t 2 \t \t / / d v T 0101100 y p e F i l e , d v T y p e F 0101120 r e e , d v T y p e H o m e \r 0101140 f l a g s b i t 4 \t \t / / 0101160 b i t s d e f i n e d 376 001 \0 247 0101200 ] i n I f s S c a v e n g e 0101220 r . d e c l \r p r i v a t e F l 0101240 a g s b i t 2 = \r [ 0101260 \r d i r t y b i t \r 0101300 g o t L o n g e r b i t \r 0101320 ] \r l e n g t h b y t e \t 0101340 \t / / i n w o r d s i n c 0101360 l u d i n g t h i s o n e \r 0101400 i f p w o r d = @ I F P \r 0101420 f a w o r d = @ F A \t \t / 0101440 / o f l a s t b y t e i 0101460 n f i l e \r / / F o l l o w 0101500 i n g t h r e e i t e m s 0101520 a r e o f f s e t s r e l a 0101540 t i v e t o L P T E . t y p 0101560 e . \r / / I f t h e y a r 0101600 e 376 001 \0 + 033 z e r o , t h e 0101620 n n o s p a c e h a s b 0101640 e e n a l l o c a t e d . \r i 0101660 f s N a m e w o r d \r t f s N 0101700 a m e w o r d \r d i f R e c 0101720 w o r d \r ] \r m a n i f e s t \r 0101740 [ \r l e n L P T E H e a d e r 0101760 = s i z e L P T E / 1 6 \r m 0102000 a x L e n L P T E = 1 l s 0102020 h i f t s i z e L P T E . l 0102040 e n g t h \r ] \r \r s t r u c t u 0102060 r e L P T : \t \t / / l p t > 0102100 > S T . p a r 1 p o i n t s 0102120 a t t h i s \r [ \r f a w o r 0102140 d l F A \r l p t e w o r d 0102160 m a x L e n L P T E \r l p t h 0102200 w o r d = 376 001 \0 325 4 \r [ 0102220 \r s o r t e d w o r d \t 0102240 \t / / t r u e i f n o t 0102260 w r i t t e n s i n c e l a 0102300 s t s o r t e d \r f s 0102320 w o r d n D i s k s \r h 0102340 o m e w o r d l e n H o m e 0102360 \r ] \r ] \r m a n i f e s t 0102400 \r [ \r l e n L P T = s i z e 0102420 L P T / 1 6 \r l e n L P T H 0102440 = l e n L P T - o f f s e 0102460 t L P T . l p t h / 1 6 \r ] \r 0102500 \f \r / / R o u t i n e s f o 0102520 r d e a l i n g w i t h L 0102540 e a d e r P a g e T a b l e 0102560 f i l e s \r \r / / - - - - - - 0102600 - - - - - - - - - - - 376 001 \0 7 302 0102620 - - - - - - - - - - - - - - - - * 0102720 - - - - - - - - \r l e t O p e 0102740 n L P T ( n a m e , m a k e E 0102760 m p t y ) = v a l o f \r / / 0103000 - - - - - - - - - - - - - - - - * 0103120 - - - - - - - - - \r [ \r l e t 0103140 s t = O p e n F i l e ( n a 0103160 m e , 0 , 0 , 0 , 0 , 0103200 0 , 0 , 0 , s c r a t c h 0103220 376 001 \0 \f 265 D i s k ) \r i f s t 0103240 e q 0 t h e n I F S E r 0103260 r o r ( e c S c r a t c h F i l 0103300 e , n a m e ) \r l e t l p t 0103320 = A l l o c a t e ( s y s Z 0103340 o n e , l e n L P T ) ; Z e 0103360 r o ( l p t , l e n L P T ) \r 0103400 s t > > S T . p a r 1 = l p 0103420 t \r t e s t m a k e E m p t y 0103440 \r i f s o \r [ 0103460 \r S e t B l o c k ( 0103500 l v l p t > > L P T . f s , 0103520 - 1 , n D i s k s ) \r 0103540 F l u s h L P T ( s t ) \r 0103560 T r u n c a t e D i s 0103600 k S t r e a m ( s t ) \r 0103620 ] \r 376 001 \0 325 4 i f n o 0103640 t \r [ \r 0103660 l e t l p t e = G e t s ( 0103700 s t ) \r i f l p t 0103720 e < < L P T E . t y p e n e 0103740 d v T y p e H o m e t h e n 0103760 I F S E r r o r ( e c M a l f o 0104000 r m e d L P T E ) \r 0104020 R e a d B l o c k ( s t , l v 0104040 l p t > > L P T . l p t h , 0104060 l e n L P T H ) \r F 0104100 i l e L e n g t h ( s t ) / 0104120 / a p p e n d t o l p t \r 0104140 ] \r G e t C u r r e n 0104160 t F a ( s t , l v l p t > > 0104200 L P T . f a ) \r r e s u l t i s 0104220 s t \r ] \r \r / / - 376 001 \0 242 k - 0104240 - - - - - - - - - - - - - - - - * 0104360 - - - - - - - \r a n d C l o s 0104400 e L P T ( s t , d e l e t e ) 0104420 = v a l o f \r / / - - - - - 0104440 - - - - - - - - - - - - - - - - * 0104560 - - - - \r [ \r i f d e b u g F 0104600 l a g t h e n d e l e t e 0104620 = f a l s e \r u n l e s s 376 0104640 001 \0 / 332 d e l e t e d o F l 0104660 u s h L P T ( s t ) \r F r e e ( 0104700 s y s Z o n e , s t > > S T . 0104720 p a r 1 ) \r l e t l d = n 0104740 i l \r i f d e l e t e t h e 0104760 n \r [ \r l d = A 0105000 l l o c a t e ( s y s Z o n e , 0105020 1 l s h i f t s c r a t c 0105040 h D i s k > > D S K . l n P a g 0105060 e S i z e ) \r R e a d L e 0105100 a d e r P a g e ( s t , l d ) 0105120 \r ] \r C l o s e s ( s t ) 0105140 \r i f d e l e t e t h e n \r 0105160 [ \r D e l e t e F i 0105200 l e ( l v l d > > L D . n a m 0105220 e , 0 , 0 , 0 , 0 , s 0105240 c r a t 376 001 \0 g ` c h D i s k ) 0105260 \r F r e e ( s y s Z o n e 0105300 , l d ) \r ] \r r e s u l 0105320 t i s 0 \r ] \r \r / / - - - - - 0105340 - - - - - - - - - - - - - - - - * 0105460 - - - - \r a n d F l u s h L P 0105500 T ( s t ) b e \r / / - - - - - 0105520 - - - - - - - - - - - - - - - - * 0105640 - - - - \r [ \r R e 376 001 \0 @ 227 s e 0105660 t s ( s t ) \r l e t l p t e 0105700 = 0 \r l p t e < < L P T E . t 0105720 y p e = d v T y p e H o m e 0105740 \r l p t e < < L P T E . l e n g 0105760 t h = 1 + l e n L P T H \r P 0106000 u t s ( s t , l p t e ) \r W r 0106020 i t e B l o c k ( s t , l v 0106040 s t > > S T . p a r 1 > > L P T 0106060 . l p t h , l e n L P T H ) \r 0106100 C l e a n u p D i s k S t r e a 0106120 m ( s t ) \r ] \r \f \r / / - - - - 0106140 - - - - - - - - - - - - - - - - * 0106240 - - - - - - - - - - - - - - 376 001 0106260 \0 214 335 - - - - - - - \r a n d R 0106300 e a d L P T E ( s t , l p t e 0106320 ; n u m a r g s n a ) = 0106340 v a l o f \r / / - - - - - - - - 0106360 - - - - - - - - - - - - - - - - * 0106500 - \r / / R e a d s t h e n 0106520 e x t l p t e f r o m l p 0106540 t \r / / R e t u r n s p o 0106560 i n t e r t o l p t e o r 0106600 z e r o i f E O F e n c 0106620 o u n t e r e d . \r [ \r i f E 0106640 n d o f s ( s t ) r e s u l t 0106660 i s 376 001 \0 353 d 0 \r i f n a 0106700 l s 2 t h e n l p t e = 0106720 l v s t > > S T . p a r 1 > 0106740 > L P T . l p t e \r l p t e ! 0 0106760 = G e t s ( s t ) \r R e a d 0107000 B l o c k ( s t , l p t e + 1 0107020 , l p t e > > L P T E . l e n 0107040 g t h - 1 ) \r l p t e > > L P T 0107060 E . p r i v a t e F l a g s = 0107100 0 / / c l e a r d i r t 0107120 y a n d g o t L o n g e r 0107140 b i t s \r r e s u l t i s l p 0107160 t e \r ] \r \r / / - - - - - - - - 0107200 - - - - - - - - - - - - - - - - * 0107260 - - - - - - - - 376 001 \0 < R - - - 0107300 - - - - - - - - - - - - - - - - 0107320 - - - - - - \r a n d W r i t e 0107340 L P T E ( s t , l p t e ; n 0107360 u m a r g s n a ) b e \r / / 0107400 - - - - - - - - - - - - - - - - * 0107520 - - - - - - - - - \r / / W r i 0107540 t e a n l p t e a t t h 0107560 e c u r r e n t s t r e a m 0107600 p o s i t i o n \r / / B y 0107620 d e f a u l t , t h e l p t 0107640 e c o m e s f r o m t h e 0107660 l p t \r [ \r i f n a 376 001 \0 0107700 332 256 l s 2 t h e n l p t e 0107720 = l v s t > > S T . p a r 0107740 1 > > L P T . l p t e \r i f l 0107760 p t e > > L P T E . l e n g t h 0110000 e q 0 t h e n C a l l S 0110020 w a t ( " L P T E w i t h 0 0110040 l e n g t h " ) \r W r i t e B 0110060 l o c k ( s t , l p t e , l 0110100 p t e > > L P T E . l e n g t h 0110120 ) \r s t > > S T . p a r 1 > > L 0110140 P T . s o r t e d = f a l s 0110160 e \r ] \r \r / / - - - - - - - - - 0110200 - - - - - - - - - - - - - - - - * 0110300 - - 376 001 \0 350 330 - - - - - - - - - 0110320 - - - - - \r a n d G e t L p t 0110340 L p t e ( s t , i n i t I t ; 0110360 n u m a r g s n a ) = v 0110400 a l o f \r / / - - - - - - - - - 0110420 - - - - - - - - - - - - - - - - * 0110540 \r / / G e t a p o i n t e 0110560 r t o t h e l p t e i n 0110600 ' l p t ' . \r / / G e t i 0110620 t r e a d y f o r f i l l 0110640 i n g i f ' i n i t I t ' 0110660 i s t r u e . \r [ \r l e t l 0110700 p t e = l 376 001 \0 267 | v s t 0110720 > > S T . p a r 1 > > L P T . l 0110740 p t e \r i f n a g r 1 & 0110760 i n i t I t t h e n \r 0111000 [ \r Z e r o ( l p t e , 0111020 m a x L e n L P T E ) \r S 0111040 e t L p t e L e n g t h ( l p t 0111060 e , l e n L P T E H e a d e r 0111100 ) \r S e t L p t e T y p e 0111120 ( l p t e , d v T y p e F i l 0111140 e ) \r ] \r r e s u l t i s 0111160 l p t e \r ] \r \r / / - - - - - 0111200 - - - - - - - - - - - - - - - - * 0111300 - - - - - - - - - - - - 376 001 \0 302 0111320 245 - - - - - - - - \r a n d G e 0111340 t L p t F s ( s t ) = l v 0111360 s t > > S T . p a r 1 > > L P T 0111400 . f s \r / / - - - - - - - - - - 0111420 - - - - - - - - - - - - - - - - * 0111520 - - - - - - - - - - - - - - - \r 0111540 \r / / - - - - - - - - - - - - - 0111560 - - - - - - - - - - - - - - - - * 0111660 - - - - - - - - - - - - \r a n d 0111700 G e t L p t F a ( s t ) = 0111720 l 376 001 \0 S 020 v s t > > S T . p 0111740 a r 1 > > L P T . f a \r / / - - 0111760 - - - - - - - - - - - - - - - - * 0112100 - - - - - - - \r \r / / - - - - - 0112120 - - - - - - - - - - - - - - - - * 0112240 - - - - \r a n d G e t L p t H 0112260 o m e ( s t ) = l v s t > 0112300 > S T . p a r 1 > > L P T . h o 0112320 m e \r / / - 376 001 \0 Y 323 - - - - - 0112340 - - - - - - - - - - - - - - - - * 0112460 - - - \r \r / / - - - - - - - - - 0112500 - - - - - - - - - - - - - - - - * 0112620 \r a n d G e t L p t S o r t e 0112640 d ( s t ) = s t > > S T . p 0112660 a r 1 > > L P T . s o r t e d \r 0112700 / / - - - - - - - - - - - - - - 0112720 - - - - - - - - - - - 376 001 \0 346 021 0112740 - - - - - - - - - - - - - - - - * 0113040 \r \r / / - - - - - - - - - - - - 0113060 - - - - - - - - - - - - - - - - * 0113160 - - - - - - - - - - - - - \r a n 0113200 d S e t L p t S o r t e d ( s 0113220 t , v a l ) b e s t > > S 0113240 T . p a r 1 > > L P T . s o r t 0113260 e d = v a l \r / / - - - - - 0113300 - - - - - - - - - - - - - - - - * 0113340 376 001 \0 006 356 - - - - - - - - - - - 0113360 - - - - - - - - - - - - - - - - * 0113420 - - - - - - - - - \r \f \r / / - - 0113440 - - - - - - - - - - - - - - - - * 0113560 - - - - - - - \r a n d E n u m 0113600 e r a t e L P T ( s t , P r o 0113620 c , a r g ) b e \r / / - - - 0113640 - - - - - - - - - - - - - - - - * 0113740 - - - - - 376 001 \0 ` 323 - - - - - - 0113760 - - - - - - - - - - - \r / / E 0114000 n u m e r a t e s t h e L P 0114020 T , c a l l i n g P r o c ( 0114040 l p t e , a r g ) f o r e 0114060 a c h l p t e . \r / / T h e 0114100 e n u m e r a t i o n b e g 0114120 i n s a t t h e f i r s t 0114140 r e c o r d f o r t h e 0114160 c u r r e n t p a c k . \r / / 0114200 I f P r o c d i r t i e s 0114220 t h e l p t e , i t i s 0114240 w r i t t e n b a c k o n 0114260 t o t h e f i l e . \r / / 0114300 I f t h e l e n g t h c h 0114320 a n g e d s o t h a t i t 0114340 c a n ' t b e 376 001 \0 003 255 w 0114360 r i t t e n b a c k i n p 0114400 l a c e , \r / / i t i s 0114420 w r i t t e n o n a t e m 0114440 p o r a r y f i l e , a n d 0114460 a p p e n d e d t o t h e 0114500 r e a l f i l e \r / / a 0114520 f t e r t h e e n u m e r a 0114540 t i o n i s c o m p l e t e 0114560 . \r [ \r l e t o v f l L p t 0114600 = 0 \r J u m p T o F a ( s t , 0114620 l v s t > > S T . p a r 1 > 0114640 > L P T . f a ) \r l e t s t a 0114660 r t T i m e = v e c 1 ; 0114700 R e a d C a l e n d a r ( s t a 0114720 r t T i m e ) \r \r [ \r 0114740 l e t l p t e = R e a 376 0114760 001 \0 C " d L P T E ( s t ) \r 0115000 i f l p t e e q 0 b r 0115020 e a k / / e n d o f f i 0115040 l e \r l e t l e n g t h 0115060 = l p t e > > L P T E . l e 0115100 n g t h \r P r o c ( s t , 0115120 l p t e , a r g ) \r i 0115140 f l p t e > > L P T E . d i r 0115160 t y t h e n \r [ \r 0115200 i f l p t e > > L 0115220 P T E . g o t L o n g e r t h 0115240 e n \r [ \r 0115260 i f o v f l L p 0115300 t e q 0 t h e n \r 0115320 o v f l L p t 0115340 = O p e n L P T ( " I f s S c 0115360 a v e n 376 001 \0 b x g e r . o v f 0115400 l L p t " , t r u e ) \r 0115420 W r i t e B l o c k 0115440 ( o v f l L p t , l p t e , 0115460 l p t e > > L P T E . l e n g t 0115500 h ) \r l p t e 0115520 > > L P T E . t y p e = d v 0115540 T y p e F r e e \r 0115560 l p t e > > L P T E . l e n 0115600 g t h = l e n g t h \r 0115620 ] \r l e 0115640 t f i l e P o s = v e c 0115660 1 ; F i l e P o s ( s t , f 0115700 i l e P o s ) \r D o 0115720 u b l e I n c r e m e n t ( f i 0115740 l e P o s , - ( l e n g t h 0115760 l s h i f t 1 ) 376 001 \0 302 327 ) \r 0116000 S e t F i l e P o s 0116020 ( s t , f i l e P o s ) \r 0116040 W r i t e B l o c k ( s 0116060 t , l p t e , l e n g t h ) 0116100 \r s t > > S T . p a 0116120 r 1 > > L P T . s o r t e d = 0116140 f a l s e \r ] \r 0116160 ] r e p e a t \r \r i f o 0116200 v f l L p t n e 0 t h e n 0116220 \r [ \r R e s e t s ( 0116240 o v f l L p t ) \r [ 0116260 \r l e t l p t e 0116300 = R e a d L P T E ( o v f l L 0116320 p t ) \r i f l p t 0116340 e e q 0 b r e a k \r 0116360 i f l p t e > > L P 376 001 0116400 \0 k 255 T E . t y p e e q d v 0116420 T y p e F i l e t h e n \r 0116440 W r i t e B l o c 0116460 k ( s t , l p t e , l p t e 0116500 > > L P T E . l e n g t h ) \r 0116520 ] r e p e a t \r 0116540 C l o s e L P T ( o v f l L p 0116560 t , t r u e ) \r s t > > 0116600 S T . p a r 1 > > L P T . s o r 0116620 t e d = f a l s e \r ] 0116640 \r \r P r i n t T i m e ( s t a r 0116660 t T i m e ) \r ] \r \f \r / / t h e 0116700 s e r o u t i n e s g e t 0116720 f i e l d s o f a n l p t 0116740 e \r \r / / - - - - - - - - - - - 0116760 - - - - - - - - - - - - - - - - 0117000 - - - 376 001 \0 = \r - - - - - - - - 0117020 - - - - - - - - - - - - - - - - * 0117100 - - - \r a n d G e t L p t e T 0117120 y p e ( l p t e ) = l p t e 0117140 > > L P T E . t y p e \r / / - - 0117160 - - - - - - - - - - - - - - - - * 0117300 - - - - - - - \r \r / / - - - - - 0117320 - - - - - - - - - - - - - - - - * 0117400 - - - - - - - - 376 001 \0 214 332 - - - 0117420 - - - - - - - - - - - - - - - - 0117440 - - - - - - - - - \r a n d G e 0117460 t L p t e F l a g s ( l p t e ) 0117500 = l p t e > > L P T E . f l 0117520 a g s \r / / - - - - - - - - - - 0117540 - - - - - - - - - - - - - - - - * 0117640 - - - - - - - - - - - - - - - \r 0117660 \r / / - - - - - - - - - - - - - 0117700 - - - - - - - - - - - - - - - - * 0120000 - - - - - - - - - - - - \r 376 001 \0 0120020 g \v a n d G e t L p t e L e n 0120040 g t h ( l p t e ) = l p t e 0120060 > > L P T E . l e n g t h \r / / 0120100 - - - - - - - - - - - - - - - - * 0120220 - - - - - - - - - \r \r / / - - - 0120240 - - - - - - - - - - - - - - - - * 0120360 - - - - - - \r a n d G e t L p 0120400 t e I f p ( l p t e ) = l v 0120420 l 376 001 \0 I = p t e > > L P T E 0120440 . i f p \r / / - - - - - - - - - 0120460 - - - - - - - - - - - - - - - - * 0120600 \r \r / / - - - - - - - - - - - - 0120620 - - - - - - - - - - - - - - - - * 0120720 - - - - - - - - - - - - - \r a n 0120740 d G e t L p t e F a ( l p t e 0120760 ) = l v l p t e > > L P T 0121000 E . f a \r / / - - - - - - - - - 0121020 - - - - - - - 376 001 \0 P 367 - - - - 0121040 - - - - - - - - - - - - - - - - * 0121140 - - - - - \r \r / / - - - - - - - 0121160 - - - - - - - - - - - - - - - - * 0121300 - - \r a n d G e t L p t e I f 0121320 s N a m e ( l p t e ) = v a 0121340 l o f \r / / - - - - - - - - - - 0121360 - - - - - - - - - - - - - - - - * 0121420 - - - - - - - - - - - - 376 001 \0 # 0121440 301 - - - - - - - - - - - - - - - 0121460 - - - - - - - - - - - - - - - - 0121500 - - - - \r [ \r l e t i f s N a 0121520 m e = l p t e > > L P T E . 0121540 i f s N a m e \r r e s u l t i s 0121560 l p t e + ( i f s N a m e 0121600 ? i f s N a m e , o f f s e 0121620 t L P T E . i f s N a m e / 1 0121640 6 ) \r ] \r \r / / - - - - - - - - 0121660 - - - - - - - - - - - - - - - - * 0122000 - \r a n d G e t L p t e T f s 0122020 N a m e ( l p t e ) = v a l 0122040 o 376 001 \0 330 006 f \r / / - - - - - - 0122060 - - - - - - - - - - - - - - - - * 0122200 - - - \r [ \r l e t t f s N a m 0122220 e = l p t e > > L P T E . t 0122240 f s N a m e \r r e s u l t i s 0122260 l p t e + ( t f s N a m e ? 0122300 t f s N a m e , o f f s e t 0122320 L P T E . t f s N a m e / 1 6 0122340 ) \r ] \r \r / / - - - - - - - - - 0122360 - - - - - - - - - - - - - - - - * 0122440 - - - - - - 376 001 \0 267 \b - - - - - 0122460 - - - - - - - - - - - - - - - - 0122500 - - - - - \r a n d G e t L p t 0122520 e D I F R e c ( l p t e ) = 0122540 v a l o f \r / / - - - - - - - - 0122560 - - - - - - - - - - - - - - - - * 0122700 - \r [ \r l e t d i f R e c = 0122720 l p t e > > L P T E . d i f R 0122740 e c \r r e s u l t i s d i f R 0122760 e c n e 0 ? l p t e + d i 0123000 f R e c , 0 \r ] \r \f \r / / T 0123020 h e s e r o u t i n e s s e 0123040 t f i e l d s o f 376 001 \0 C 320 0123060 a n l p t e \r \r / / - - - - 0123100 - - - - - - - - - - - - - - - - * 0123220 - - - - - \r a n d S e t L p t 0123240 e T y p e ( l p t e , t y p e 0123260 ) b e \r / / - - - - - - - - - 0123300 - - - - - - - - - - - - - - - - * 0123420 \r [ \r l p t e > > L P T E . t y 0123440 p e = t y p e \r l p t e > > 0123460 376 001 \0 \n 337 L P T E . d i r t y 0123500 = t r u e \r ] \r \r / / - - - - 0123520 - - - - - - - - - - - - - - - - * 0123640 - - - - - \r a n d S e t L p t 0123660 e F l a g s ( l p t e , f l a 0123700 g s ) b e \r / / - - - - - - - 0123720 - - - - - - - - - - - - - - - - * 0124040 - - \r [ \r l p t e > > L P T E . 0124060 f l a g s 376 001 \0 \n 343 = f l a 0124100 g s \r l p t e > > L P T E . d i 0124120 r t y = t r u e \r ] \r \r / / 0124140 - - - - - - - - - - - - - - - - * 0124260 - - - - - - - - - \r a n d S e 0124300 t L p t e L e n g t h ( l p t e 0124320 , l e n g t h ) b e \r / / - 0124340 - - - - - - - - - - - - - - - - * 0124460 - - - - - - - - \r [ 376 001 \0 266 363 \r 0124500 l p t e > > L P T E . l e n g t 0124520 h = l e n g t h \r l p t e > 0124540 > L P T E . d i r t y = t r 0124560 u e \r ] \r \r / / - - - - - - - - 0124600 - - - - - - - - - - - - - - - - * 0124720 - \r a n d S e t L p t e I f p 0124740 ( l p t e , i f p ) b e \r / 0124760 / - - - - - - - - - - - - - - - 0125000 - - - - - - - - - - - - - - - - * 0125060 - - - - - - - - - - - - - - - 376 0125100 001 \0 366 { - - - - - - - - - - - \r 0125120 [ \r M o v e B l o c k ( l v l 0125140 p t e > > L P T E . i f p , i 0125160 f p , l F P ) \r l p t e > > L 0125200 P T E . d i r t y = t r u e 0125220 \r ] \r \r / / - - - - - - - - - - 0125240 - - - - - - - - - - - - - - - - * 0125340 - - - - - - - - - - - - - - - \r 0125360 a n d S e t L p t e F a ( l p 0125400 t e , f a ) b e \r / / - - - 0125420 - - - - - - - - - - - - - - - - * 0125500 - - - - 376 001 \0 253 8 - - - - - - - 0125520 - - - - - - - - - - - - - - - - 0125540 - - - - - - - - - - - \r [ \r M o 0125560 v e B l o c k ( l v l p t e > 0125600 > L P T E . f a , f a , l F 0125620 A ) \r l p t e > > L P T E . d i 0125640 r t y = t r u e \r ] \r \f \r / 0125660 / - - - - - - - - - - - - - - - 0125700 - - - - - - - - - - - - - - - - * 0126000 - - - - - - - - - - \r a n d S 0126020 e t L p t e I f s N a m e ( l p 0126040 t e , i f s N a m e ) b e \r 0126060 / / - - - - - - - - - - - - - - 0126100 - - - - - - - - - 376 001 \0 C ` - - 0126120 - - - - - - - - - - - - - - - - * 0126220 \r [ \r i f ( l p t e > > L P T 0126240 E . i f s N a m e e q 0 ) ? 0126260 t r u e , ( i f s N a m e > 0126300 > S t r i n g . l e n g t h g 0126320 r \r ( l p t e + l p t e > > L 0126340 P T E . i f s N a m e ) > > S t 0126360 r i n g . l e n g t h ) t h e 0126400 n \r [ \r l p t e > > 0126420 L P T E . i f s N a m e = l 0126440 p t e > > L P T E . l e n g t h 0126460 \r l p t e > > L P T E . l 0126500 e n g t h = l p t e > > 376 001 0126520 \0 317 Z L P T E . l e n g t h + 0126540 i f s N a m e > > S t r i n g 0126560 . l e n g t h r s h i f t 1 0126600 + 1 \r i f l p t e > > 0126620 L P T E . l e n g t h g r m 0126640 a x L e n L P T E t h e n I 0126660 F S E r r o r ( e c S e t L P T 0126700 E ) \r l p t e > > L P T E 0126720 . g o t L o n g e r = t r u 0126740 e \r ] \r C o p y S t r i n 0126760 g ( l p t e + l p t e > > L P T 0127000 E . i f s N a m e , i f s N a 0127020 m e ) \r l p t e > > L P T E . d 0127040 i r t y = t r u e \r ] \r \r / 0127060 / - - - - - - - - - - - - - - - 0127100 - - - - - - - - - - - - - - - - 0127120 - - - 376 001 \0 037 365 - - - - - - - - 0127140 - - - - - - - - - - - - - - - - * 0127200 - - - - - - - - - - - - - - - \r 0127220 a n d S e t L p t e T f s N a 0127240 m e ( l p t e , t f s N a m e 0127260 ) b e \r / / - - - - - - - - - 0127300 - - - - - - - - - - - - - - - - * 0127420 \r [ \r i f ( l p t e > > L P T 0127440 E . t f s N a m e e q 0 ) ? 0127460 t r u e , ( t f s N a m e > 0127500 > S t r i n g . l e n g t h g 0127520 r \r ( l p t e 376 001 \0 334 340 + l p 0127540 t e > > L P T E . t f s N a m e 0127560 ) > > S t r i n g . l e n g t h 0127600 ) t h e n \r [ \r l 0127620 p t e > > L P T E . t f s N a m 0127640 e = l p t e > > L P T E . l 0127660 e n g t h \r l p t e > > L 0127700 P T E . l e n g t h = l p t 0127720 e > > L P T E . l e n g t h + 0127740 t f s N a m e > > S t r i n g 0127760 . l e n g t h r s h i f t 1 0130000 + 1 \r i f l p t e > > 0130020 L P T E . l e n g t h g r m 0130040 a x L e n L P T E t h e n I 0130060 F S E r r o r ( e c S e t L P T 0130100 E ) \r l p t e > > L P T E 0130120 . g o t L o n g e r = 376 001 \0 0130140 366 370 t r u e \r ] \r C o p y 0130160 S t r i n g ( l p t e + l p t e 0130200 > > L P T E . t f s N a m e , 0130220 t f s N a m e ) \r l p t e > > L 0130240 P T E . d i r t y = t r u e 0130260 \r ] \r \r / / - - - - - - - - - - 0130300 - - - - - - - - - - - - - - - - * 0130400 - - - - - - - - - - - - - - - \r 0130420 a n d S e t L p t e D I F R e 0130440 c ( l p t e , d i f R e c ) 0130460 b e \r / / - - - - - - - - - - - 0130500 - - - - - - - - - - - - - - - - * 0130540 - - 376 001 \0 200 c - - - - - - - - - 0130560 - - - - - - - - - - - - - - - - * 0130620 - - - \r [ \r i f l p t e > > L 0130640 P T E . d i f R e c e q 0 0130660 t h e n \r [ \r l p t 0130700 e > > L P T E . d i f R e c = 0130720 l p t e > > L P T E . l e n g 0130740 t h \r l p t e > > L P T E 0130760 . l e n g t h = l p t e > > 0131000 L P T E . l e n g t h + l e 0131020 n D I F R e c \r i f l p 0131040 t e > > L P T E . l e n g t h 0131060 g r m a x L e n L P T E t h 0131100 e n I F S E r r o r ( e c S e 0131120 t L P T E ) \r l p t e > > 0131140 L P T E . g o 376 \0 c 322 250 t L o n 0131160 g e r = t r u e \r ] \r 0131200 M o v e B l o c k ( l p t e + l 0131220 p t e > > L P T E . d i f R e c 0131240 , d i f R e c , l e n D I F 0131260 R e c ) \r l p t e > > L P T E . 0131300 d i r t y = t r u e \r ] \r 377 0131320 \0 \0 I f s S c a v K b d . b c p 0131340 l \0 373 224 223 c 025 \0 \0 376 001 \0 242 d / / 0131360 I f s S c a v K b d . b c p l 0131400 - v a r i o u s k e y b o 0131420 a r d i n t e r a c t i o n 0131440 p r o c e d u r e s \r / / C o 0131460 p y r i g h t X e r o x C o 0131500 r p o r a t i o n 1 9 7 9 \r / 0131520 / L a s t m o d i f i e d 0131540 D e c e m b e r 2 7 , 1 9 7 0131560 9 1 : 4 4 P M b y B o 0131600 g g s \r \r g e t " C m d S c a 0131620 n . d e c l " \r g e t " D i s 0131640 k s . d " \r \r e x t e r n a l \r 0131660 [ \r / / o u t g o i n g p r 0131700 o c e d u r e s \r O p e n D i s 0131720 k ; S c a v C o n f i r m \r \r 0131740 / / i n c o m i n g p r 376 001 0131760 \0 244 ? o c e d u r e s \r T F S I 0132000 n i t ; B F S I n i t \r D e f 0132020 a u l t A r g s ; D i s m i s 0132040 s \r R e s e t s ; E r r o r s 0132060 ; W s ; W s s ; G e t s ; 0132100 P u t s ; C l o s e s \r C r 0132120 e a t e K e y w o r d T a b l e 0132140 ; D e s t r o y K e y w o r d 0132160 T a b l e ; I n s e r t K e y 0132200 w o r d \r I n i t C m d ; E n 0132220 a b l e C a t c h ; E n d C a 0132240 t c h ; T e r m i n a t i n g 0132260 C h a r \r B e g i n D e f a u l 0132300 t P h r a s e ; E n d D e f a 0132320 u l t P h r a s e \r G e t K e y 0132340 w o r d ; G e t N u m b e r ; 0132360 I n 376 001 \0 224 366 v e r t W i n d 0132400 o w \r \r / / i n c o m i n g 0132420 s t a t i c s \r s y s Z o n e ; 0132440 s y s D i s k ; k e y s ; 0132460 d s p ; t f s D D M g r ; b 0132500 f s D D M g r \r ] \r \r / / - - - 0132520 - - - - - - - - - - - - - - - - * 0132620 - - - - - - - - - \r l e t O p 0132640 e n D i s k ( s t r i n g , a 0132660 l l o c , f r e s h , d i a 0132700 b l o ; n u m a r g s n a ) 0132720 = v a l o f \r / / - - - - - 0132740 - - - - - - - - - - - - - - - - 0132760 - - - - - - - - 376 001 \0 e Z - - - 0133000 - - - - - - - - - - - - - - - - * 0133040 - - - - - - - - - - - - \r [ \r D 0133060 e f a u l t A r g s ( l v n a 0133100 , 1 , t r u e , f a l s e 0133120 , f a l s e ) \r l e t c s 0133140 = I n i t C m d ( 2 5 6 , 5 0133160 ) ; i f c s e q 0 r e 0133200 s u l t i s 0 \r W s s ( c s , 0133220 s t r i n g ) \r l e t d K T 0133240 = n i l \r i f E n a b l e 0133260 C a t c h ( c s ) t h e n [ 0133300 D e s t r o y K e y w o r d T 0133320 a b l e ( d K T ) ; E n d C a 0133340 t c h ( c s ) ] \r d K T = 0133360 C r e a t e K e y w o r d 376 001 \0 0133400 035 ' T a b l e ( 2 , 1 ) \r i f 0133420 d i a b l o t h e n I n s 0133440 e r t K e y w o r d ( d K T , 0133460 " D P " ) ! 0 = - 1 \r I n s 0133500 e r t K e y w o r d ( d K T , 0133520 " T P " ) ! 0 = 1 \r l e t 0133540 t r i d e n t = G e t K e y 0133560 w o r d ( c s , d K T , f a 0133600 l s e , P h r a s e T e r m i 0133620 n a t o r ) ! 0 g r 0 \r l e 0133640 t t e r m C h a r = T e r 0133660 m i n a t i n g C h a r ( c s ) 0133700 \r / / t h e r e m u s t b 0133720 e a b e t t e r w a y t 0133740 o d o t h i s . . . \r B e g 0133760 i n D e f a u l t P h r a s e ( 0134000 c s 376 001 \0 210 033 ) \r P u t s ( c s 0134020 , t e r m C h a r ) \r E n d D 0134040 e f a u l t P h r a s e ( c s ) 0134060 \r c s > > C S . e d i t C o n t 0134100 r o l = e d i t A p p e n d 0134120 \r l e t d r i v e N u m b e r 0134140 = G e t N u m b e r ( c s , 0134160 8 ) \r l e t d i s k = n 0134200 i l \r t e s t t r i d e n t \r 0134220 i f s o d i s k = T 0134240 F S I n i t ( s y s Z o n e , 0134260 a l l o c , d r i v e N u m b 0134300 e r , t f s D D M g r , f r 0134320 e s h ) \r i f n o t t e 0134340 s t d r i v e N u m b e r e 0134360 q s y s D i s k > > D S K . d 0134400 r i v e N u m 376 001 \0 024 341 b e r \r 0134420 i f s o d i s k 0134440 = s y s D i s k \r 0134460 i f n o t d i s k = B F S 0134500 I n i t ( s y s Z o n e , t r 0134520 u e , d r i v e N u m b e r , 0134540 b f s D D M g r ) \r i f d i 0134560 s k e q 0 t h e n E r r 0134600 o r s ( c s , 0 ) \r D e s t r 0134620 o y K e y w o r d T a b l e ( d 0134640 K T ) \r C l o s e s ( c s ) \r r 0134660 e s u l t i s d i s k \r ] \r \r 0134700 / / - - - - - - - - - - - - - - 0134720 - - - - - - - - - - - - - - - - * 0135000 - - - - - - - - - - - - 376 001 \0 327 0135020 , - - \r a n d P h r a s e T e 0135040 r m i n a t o r ( c s , c h a 0135060 r ) = \r / / - - - - - - - - - 0135100 - - - - - - - - - - - - - - - - * 0135200 - - - \r c h a r l s $ 0135220 A % ( c h a r g r $ Z 0135240 & c h a r l s $ a ) % 0135260 c h a r g r $ z \r \f \r / / - 0135300 - - - - - - - - - - - - - - - - * 0135400 - - - - - - - - - - - \r a n d 0135420 S 376 001 \0 354 254 c a v C o n f i r m 0135440 ( s t r i n g ; n u m a r g s 0135460 n a ) = v a l o f \r / / - 0135500 - - - - - - - - - - - - - - - - * 0135600 - - - - - - - - - - - \r [ \r i f 0135620 n a g r 0 t h e n W s 0135640 ( s t r i n g ) \r W s ( " [ C 0135660 o n f i r m ] " ) \r s w i t c 0135700 h o n G e t s ( k e y s ) i 0135720 n t o \r [ \r c a s e 0135740 $ Y : c a s e $ y : c a 0135760 s e $ * N : \r [ 0136000 W s ( " Y e s . " ) ; r e s u 0136020 l t i s t 376 001 \0 H 363 r u e ] 0136040 \r c a s e $ N : c a s 0136060 e $ n : c a s e $ * 1 7 7 0136100 : \r [ W s ( " N o 0136120 . " ) ; r e s u l t i s f a 0136140 l s e ] \r c a s e $ ? 0136160 : \r [ W s ( " Y e 0136200 s = Y | y | < c r > , N o 0136220 = N | n | < d e l > " ) ; 0136240 e n d c a s e ] \r d e f 0136260 a u l t : \r [ \r 0136300 I n v e r t W i n d o w 0136320 ( d s p > > S T . p a r 1 ) \r 0136340 D i s m i s s ( 1 0 0 0136360 ) \r I n v e r t W i 0136400 n d o w ( d s p > > S T . p a r 0136420 1 ) \r R e 376 \0 ! 2 276 0136440 s e t s ( k e y s ) \r 0136460 ] \r ] r e p e a t \r ] 0136500 \r 377 \0 \0 I f s S c a v P r i n t 0136520 . b c p l \0 373 224 223 S 260 \0 \0 376 001 \0 0136540 q W / / I f s S c a v P r i n 0136560 t . b c p l \r / / C o p y r i 0136600 g h t X e r o x C o r p o r 0136620 a t i o n 1 9 7 9 \r / / L a 0136640 s t m o d i f i e d D e c e 0136660 m b e r 2 8 , 1 9 7 9 3 0136700 : 5 9 A M b y B o g g s \r 0136720 \r g e t " I f s S c a v e n g 0136740 e r . d e c l " \r g e t " A l 0136760 t o F i l e S y s . d " \r g e t 0137000 " D i s k s . d " \r g e t " 0137020 T f s . d " \r \r e x t e r n a l 0137040 \r [ \r / / o u t g o i n g p 0137060 r o c e d u r e s \r P r i n t T 0137100 i m e ; P r i n t P L M E \r P 0137120 r i n t D i s k E r r o r ; P 0137140 r i 376 001 \0 = 027 n t R e a l D A \r 0137160 \r / / i n c o m i n g p r o 0137200 c e d u r e s \r P u t T e m p l 0137220 a t e ; W s \r R e a d C a l e 0137240 n d a r ; D o u b l e D i f f 0137260 e r e n c e \r \r / / i n c o m 0137300 i n g s t a t i c s \r d s p ; 0137320 p a s s ; p h a s e ; p l 0137340 m e \r ] \r \r / / - - - - - - - - 0137360 - - - - - - - - - - - - - - - - * 0137460 - - - - \r l e t P r i n t T i 0137500 m e ( s t a r t T i m e ) b e 0137520 \r / / - - - - - - - - - - - - - 0137540 - - - - - - - 376 001 \0 2 003 - - - - 0137560 - - - - - - - - - - - - - - - - * 0137640 - - - - \r [ \r l e t s t o p T 0137660 i m e = v e c 1 ; R e a 0137700 d C a l e n d a r ( s t o p T i 0137720 m e ) \r l e t s e c o n d s 0137740 = D o u b l e D i f f e r e n 0137760 c e ( s t o p T i m e , s t a 0140000 r t T i m e ) \r i f p a s s 0140020 n e 0 t h e n P u t T e m 0140040 p l a t e ( d s p , " * N [ $ 0140060 D - $ D ] " , p a s s , p 0140100 h a s e ) \r P u t T e m p l a t 0140120 e ( d s p , " T i m e = $ 0140140 D : $ 2 F 0 D " , s e 376 001 \0 017 0140160 254 c o n d s / 6 0 , s e c o n 0140200 d s r e m 6 0 ) \r ] \r \r / / 0140220 - - - - - - - - - - - - - - - - * 0140320 - - - - - - - - - - - - \r a n d 0140340 P r i n t P L M E ( v d a ) 0140360 b e \r / / - - - - - - - - - - - 0140400 - - - - - - - - - - - - - - - - * 0140500 - \r [ \r P u t T e m p l a t e ( 0140520 d s p , " * N [ $ D - $ D ] * 0140540 T F I D $ E U O ; $ U O , p 0140560 a 376 001 \0 360 331 g e n u m b e r 0140600 $ U O , n u m c h a r s $ 0140620 U O " , \r p a s s , p h a s 0140640 e , l v p l m e > > P L M E 0140660 . s n 1 , p l m e > > P L M E 0140700 . v n , \r p l m e > > P L M E 0140720 . p n , p l m e > > P L M E . 0140740 n u m C h a r s ) \r P u t T e m 0140760 p l a t e ( d s p , " * N [ $ 0141000 D - $ D ] * T c u r r e n t v 0141020 d a $ U O , p r e v i o u s 0141040 v d a $ U O , n e x t v 0141060 d a $ U O " , \r p a s s , 0141100 p h a s e , v d a , p l m e 0141120 > > P L M E . b a c k P , p l 0141140 m e > > P L M E . n e x t P ) \r 0141160 ] \r \f \r / / 376 001 \0 0 231 - - - - - 0141200 - - - - - - - - - - - - - - - - * 0141300 - - - - - - - \r a n d P r i n 0141320 t D i s k E r r o r ( c b ) b 0141340 e \r / / - - - - - - - - - - - - 0141360 - - - - - - - - - - - - - - - - * 0141460 \r / / C a l l e d f r o m 0141500 v a r i o u s H a r d d i s 0141520