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