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