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