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