$ od -c -N 50000 [Indigo]<Portola>Nova>GATEWAY.DM!1 0000000 377 \0 \0 G a t e w a y . b c p l \0 0000020 376 001 \0 264 = / / G a t e w a y . 0000040 b c p l \r \r / / L a s t m o 0000060 d i f i e d M a r c h 1 0 , 0000100 1 9 7 9 3 : 3 0 P M b 0000120 y B o g g s \r \r g e t " P u 0000140 p 0 . d e c l " \r g e t " P u 0000160 p 1 . d e c l " \r \r e x t e r n 0000200 a l \r [ \r / / o u t g o i n g 0000220 p r o c e d u r e s \r G a t e 0000240 w a y ; G a t e w a y F i n i 0000260 s h \r \r / / i n c o m i n g 0000300 p r o c e d u r e s \r G a t e w 0000320 a y I n i t ; C a l l C o n t 0000340 e x t L i s t ; E n q u e u e 0000360 ; S e t A l l o c a t i o n \r 0000400 A d d T o Z o n e ; A l l o c 0000420 a t e ; 376 001 \0 f \f F r e e ; 0000440 C a l l D o s ; R e s e t T i 0000460 m e S e r v \r W s ; E n d o f 0000500 s ; G e t s ; H a l t G a t 0000520 e w a y ; S e t T i m e r ; 0000540 T i m e r H a s E x p i r e d \r 0000560 \r / / o u t g o i n g s t a 0000600 t i c s \r v e r s i o n T e x t 0000620 \r \r / / i n c o m i n g s t 0000640 a t i c s \r p b i F r e e Q ; 0000660 l e n P B I ; n d b Q ; s o 0000700 c k e t Q ; d P S I B ; n u 0000720 m N e t s \r u s e r F i n i s h 0000740 P r o c ; s y s Z o n e ; c 0000760 t x Q ; k e y s \r ] \r \r s t a 0001000 t i c v e r s i o n T e x t \r 0001020 \r m a n i f e s t \r 376 001 \0 343 243 [ 0001040 \r / / D o s c o m m a n d s 0001060 \r r e s e t = 6 5 0 0 0 b \r 0001100 e r t n = 6 6 4 0 0 b \r ] \r 0001120 \f \r / / - - - - - - - - - - - - 0001140 - - - - - - - - - - - - - - - - * 0001240 \r l e t G a t e w a y ( b l v 0001260 ) b e \r / / - - - - - - - - - 0001300 - - - - - - - - - - - - - - - - * 0001400 - - - \r [ \r v e r s i o n T e x 0001420 t = " N o v a G a t e w 376 0001440 001 \0 036 206 a y o f M a r c h 0001460 1 0 , 1 9 7 9 " \r \r G a t e w 0001500 a y I n i t ( b l v ) \r \r / / 0001520 t h r o w a w a y i n i t i 0001540 a l i z a t i o n c o d e , 0001560 a d d s p a c e t o z o n 0001600 e , \r A d d T o Z o n e ( s y s 0001620 Z o n e , G a t e w a y I n i 0001640 t , b l v ! 2 9 - G a t e w a 0001660 y I n i t - 1 ) \r \r / / t u r 0001700 n a l l r e m a i n i n g 0001720 s t o r a g e i n t o p b i 0001740 s e x c e p t f o r a s 0001760 m a l l c h u n k \r l e t p 0002000 b i C o u n t = 0 \r l e t 0002020 f r e e S l o p = A l l o c 0002040 a t e ( 376 001 \0 ~ 203 s y s Z o n e 0002060 , 4 0 0 ) \r [ \r l 0002100 e t p b i = A l l o c a t 0002120 e ( s y s Z o n e , l e n P B 0002140 I , t r u e ) \r i f p 0002160 b i e q 0 b r e a k \r 0002200 E n q u e u e ( p b i F r e e 0002220 Q , p b i ) \r p b i C o 0002240 u n t = p b i C o u n t + 1 0002260 \r ] r e p e a t \r F r e 0002300 e ( s y s Z o n e , f r e e S 0002320 l o p ) \r \r / / f i x a l l 0002340 o c a t i o n s t o r e f l 0002360 e c t r e a l n u m b e r 0002400 o f p b i s \r p b i C o u n t 0002420 = p b i C o u n t - n u m N 0002440 e t s \r l e t f 376 001 \0 R 244 a k 0002460 e S o c = d P S I B - o 0002500 f f s e t P u p S o c . p s i 0002520 b / 1 6 \r S e t A l l o c a t i 0002540 o n ( f a k e S o c , p b i C 0002560 o u n t , p b i C o u n t - 1 0002600 , p b i C o u n t - 1 ) \r l e 0002620 t s o c = s o c k e t Q ! 0002640 0 \r w h i l e s o c n e 0 0002660 d o \r [ / / u p d a 0002700 t e a l l o c a t i o n s i 0002720 n a l l s o c k e t s \r 0002740 S e t A l l o c a t i o n ( s 0002760 o c , p b i C o u n t , p b 0003000 i C o u n t - 1 , p b i C o u 0003020 n t - 1 ) \r s o c = s 0003040 o c ! 0 \r ] \r l e t 376 001 0003060 \0 002 322 n d b = n d b Q ! 0 \r 0003100 w h i l e n d b n e 0 d 0003120 o \r [ / / u p d a t e 0003140 g a t e w a y a l l o c a t 0003160 i o n s i n n d b s \r 0003200 n d b > > N D B . n u m G P B I 0003220 = p b i C o u n t r s h i 0003240 f t 1 \r n d b = n d 0003260 b ! 0 \r ] \r \r R e s e t T 0003300 i m e S e r v ( ) \r W s ( " * * 0003320 * * G a t e w a y i n o p 0003340 e r a t i o n * * * * * N * L 0003360 " ) \r \r l e t q u i t T i m e 0003400 r = 0 \r [ \r i f 0003420 q u i t T i m e r n e 0 0003440 & T i m e r H a s E x p i r e 0003460 d ( l 376 001 \0 250 310 v q u i t T i 0003500 m e r ) t h e n q u i t T i 0003520 m e r = 0 \r u n l e s 0003540 s E n d o f s ( k e y s ) s 0003560 w i t c h o n G e t s ( k e y 0003600 s ) i n t o \r [ \r 0003620 c a s e $ Q : c 0003640 a s e $ q : \r 0003660 [ \r W s ( " 0003700 * N Q u i t [ C o n f i r m ] 0003720 " ) \r S e t 0003740 T i m e r ( l v q u i t T i m 0003760 e r , 1 0 0 0 ) \r 0004000 e n d c a s e \r 0004020 ] \r c a s e 0004040 $ * 1 7 7 : c a s e $ N : 0004060 c a s e $ n 376 001 \0 d I : \r 0004100 i f q u i t T 0004120 i m e r n e 0 t h e n \r 0004140 [ W s ( 0004160 " N o . * N " ) ; q u i t T i 0004200 m e r = 0 ; e n d c a s e 0004220 ] \r c a s e $ * 0004240 N : c a s e $ Y : c a s e 0004260 $ y : \r i f 0004300 q u i t T i m e r n e 0 0004320 t h e n \r 0004340 [ W s ( " Y e s . * N " ) ; 0004360 H a l t G a t e w a y ( ) ; 0004400 q u i t T i m e r = 0 ; e 0004420 n d c a s e ] \r d 0004440 e f a u l t : \r 0004460 [ W s ( " * N ? - 376 001 \0 0004500 020 z T h e r e i s o n l y 0004520 o n e c o m m a n d : Q U I 0004540 T " ) ; e n d c a s e ] \r 0004560 ] \r C a l l C o 0004600 n t e x t L i s t ( c t x Q ! 0 0004620 ) \r ] r e p e a t \r ] \r 0004640 \r / / - - - - - - - - - - - - - 0004660 - - - - - - - - - - - - - - - - * 0004740 - - - - - - - - - - - - - - - \r 0004760 a n d G a t e w a y F i n i s 0005000 h ( c o d e ) b e \r / / - - - 0005020 - - - - - - - - - - - - - - - - * 0005100 - - 376 \0 303 240 334 - - - - - - - - - 0005120 - - - - - - - - - - - - - - \r [ 0005140 \r W s ( " * * * * S h u t d o 0005160 w n c o m p l e t e * * * * 0005200 * N * L " ) / / w e l l , 0005220 n o t q u i t e , b u t 0005240 c l o s e e n o u g h \r w h i 0005260 l e u s e r F i n i s h P r o 0005300 c n e 0 d o u s e r F i 0005320 n i s h P r o c ( ) \r C a l l D 0005340 o s ( r e s e t ) \r C a l l D o 0005360 s ( e r t n , n i l , n i l 0005400 , c o d e ) \r ] \r 377 \0 \0 G a t 0005420 e w a y I n i t . b c p l \0 376 001 0005440 \0 252 F / / G a t e w a y I n i 0005460 t . b c p l - - i n i t i a 0005500 l i z a t i o n f o r G a t 0005520 e w a y . b c p l \r \r / / L a 0005540 s t m o d i f i e d F e b r 0005560 u a r y 9 , 1 9 7 9 4 : 0005600 0 4 P M b y B o g g s \r \r 0005620 g e t " S t r e a m s . d " \r 0005640 \r e x t e r n a l \r [ \r / / o 0005660 u t g o i n g p r o c e d u r 0005700 e s \r G a t e w a y I n i t \r \r 0005720 / / i n c o m i n g p r o c 0005740 e d u r e s \r C r e a t e M i s 0005760 c S e r v ; C r e a t e E c h 0006000 o S e r v ; I n i t P u p L e 0006020 v e l 1 \r C r e a t e G a t e C 0006040 o n S 376 001 \0 $ o e r v ; C r e 0006060 a t e S t a t S e r v ; R e a 0006100 d G a t e P a r a m \r I n i t E 0006120 F T P P a c k a g e ; I n i t 0006140 N o v a A l t o \r I n i t i a l 0006160 i z e Z o n e ; A d d T o Z o 0006200 n e ; A l l o c a t e ; Z e 0006220 r o \r I n i t i a l i z e C o n 0006240 t e x t ; B l o c k ; M y F 0006260 r a m e ; E n q u e u e \r E n 0006300 t e r D e b u g g e r ; D o s 0006320 B r e a k ; B r e a k L o c ; 0006340 C a l l D o s ; M a k e D o 0006360 s S t r i n g \r O p e n F i l e 0006400 ; G e t s ; C l o s e s ; 0006420 E n d o f s ; C a l l S w a t 0006440 \r P u t s ; W 376 001 \0 232 221 s ; 0006460 W s s ; W n s \r \r / / o u t 0006500 g o i n g s t a t i c s \r c t 0006520 x Q ; p r e s e r v e D e b u 0006540 g g e r \r \r / / i n c o m i n 0006560 g s t a t i c s \r s y s Z o n 0006600 e ; d o s A c ; d s p \r ] \r 0006620 \r s t a t i c \r [ \r c t x Q \r s 0006640 a w C R = f a l s e \r p r e 0006660 s e r v e D e b u g g e r = 0006700 f a l s e \r ] \r \r m a n i f e s 0006720 t \r [ \r s t a c k E n d = 3 0006740 3 5 b \r e x e c = 6 3 4 0 0 0006760 b \r p c h a r = 7 0 0 0 0 b 0007000 \r g a t e w a y Q u i t C o d e 0007020 = 1 2 3 4 5 / / D o s 0007040 " . e r t n " c o d e 376 001 \0 0007060 335 262 t o s i g n a l n o r m 0007100 a l Q u i t \r ] \r \f \r / / - - 0007120 - - - - - - - - - - - - - - - - * 0007220 - - - - - - - - - - \r l e t G 0007240 a t e w a y I n i t ( b l v ) 0007260 b e \r / / - - - - - - - - - - - 0007300 - - - - - - - - - - - - - - - - * 0007400 - \r [ \r d s p = l v D o s 0007420 D s p P u t s - o f f s e t 0007440 S T . p u t s / 1 6 \r i f @ 0007460 4 0 376 001 \0 \0 F 6 b n e - 1 0007500 & @ B r e a k L o c e q 4 0007520 0 1 b t h e n \r [ \r 0007540 W s ( " N o b r e a k p o i 0007560 n t * N * L t o m a k e a 0007600 b r e a k f i l e t y p e : 0007620 * N * L " ) \r W n s 0007640 ( d s p , B r e a k L o c , 0007660 1 , 8 ) ; W s ( " $ B * N * 0007700 L " ) \r W n s ( d s 0007720 p , D o s B r e a k , 1 , 0007740 8 ) ; W s ( " $ R * N * L " ) 0007760 \r W s ( " T h e n t y p 0010000 e : S A V E G A T E W A Y 0010020 < C R > * N * L E n t e r i n g 0010040 d e b u g g e r . . . " ) \r 0010060 @ 4 0 4 b 376 001 \0 r ' = b 0010100 l v ! 2 9 / / r e s e t N 0010120 M A X t o t o p o f c o 0010140 d e \r E n t e r D e b u g 0010160 g e r ( ) \r ] \r \r l e t 0010200 c o d e E n d = b l v ! 2 9 0010220 \r l e t f r e e E n d = @ 0010240 s t a c k E n d \r l e t f r e 0010260 e B e g i n = M y F r a m e 0010300 ( ) + 2 0 0 \r @ s t a c k E n 0010320 d = f r e e B e g i n \r s y 0010340 s Z o n e = I n i t i a l i 0010360 z e Z o n e ( f r e e B e g i n 0010400 , f r e e E n d - f r e e B e 0010420 g i n ) \r c t x Q = A l l o 0010440 c a t e ( s y s Z o n e , 2 ) 0010460 ; c t x Q ! 0 = 0 376 001 \0 275 0010500 302 \r \r / / I f / I g l o b 0010520 a l s w i t c h i s p r e 0010540 s e n t , t h e n w e a r 0010560 e t h e " i n f e r i o r " 0010600 \r / / g a t e w a y p r o g 0010620 r a m a n d w e s h o u l 0010640 d g o a h e a d a n d r 0010660 u n . I f / I i s n o 0010700 t \r / / p r e s e n t , t h 0010720 e n w e s h o u l d w r i 0010740 t e a C O M . C M w i t h 0010760 / I s e t a n d o v e r 0011000 l a y \r / / t h e g a t e w 0011020 a y p r o g r a m r e c u r 0011040 s i v e l y . \r / / I f / D 0011060 g l o b a l s w i t c h i 0011100 s 376 001 \0 \a 243 p r e s e n t , 0011120 s e t t h e p r e s e r v e 0011140 D e b u g g e r f l a g . \r l 0011160 e t s t r = O p e n F i l 0011200 e ( " C O M . C M " , k s T y 0011220 p e R e a d O n l y , c h a r 0011240 I t e m ) \r u n t i l G e t s 0011260 ( s t r ) e q 0 l o o p 0011300 / / s k i p o v e r s u b 0011320 s y s t e m n a m e \r i f ( 0011340 G e t s ( s t r ) & # 2 0 ) 0011360 n e 0 t h e n p r e s e 0011400 r v e D e b u g g e r = t r 0011420 u e / / t e s t / D \r l 0011440 e t i n f e r i o r G a t e w 0011460 a y = ( G e t s ( s t r ) 0011500 & # 2 0 0 376 001 \0 325 l ) n e 0011520 0 / / t e s t / I \r C l 0011540 o s e s ( s t r ) \r \r u n l e s 0011560 s i n f e r i o r G a t e w a 0011600 y d o \r [ / / w e 0011620 a r e t h e " s u p e r i o 0011640 r " . D o r e c u r s i v 0011660 e o v e r l a y \r W s ( 0011700 " * n * l * * * * G a t e w a 0011720 y r e s t a r t i n g * * * 0011740 * * n * l " ) \r s t r = 0011760 O p e n F i l e ( " C O M . C 0012000 M " , k s T y p e W r i t e O 0012020 n l y , c h a r I t e m ) \r 0012040 W s s ( s t r , " G A T E 0012060 W A Y * 0 0 0 " ) \r P u t 0012100 s ( s t r , ( p r e 376 001 \0 230 276 0012120 s e r v e D e b u g g e r ? # 0012140 2 0 , 0 ) ) / / s e t 0012160 / D i f a p p r o p r i a t 0012200 e \r W s s ( s t r , " * 0012220 2 0 0 * 0 0 0 * 0 0 0 * 3 7 7 " 0012240 ) / / s e t / I , t e 0012260 r m i n a t e C O M . C M \r 0012300 C l o s e s ( s t r ) \r 0012320 l e t s = v e c 5 \r 0012340 s = M a k e D o s S t r 0012360 i n g ( " G A T E W A Y . S V " 0012400 , s ) \r C a l l D o s ( 0012420 e x e c , s , 0 , - 1 ) \r 0012440 i f d o s A c ! 2 e q 0012460 g a t e w a y Q u i t C o d e 0012500 f i n i s h / / n o r m a 0012520 376 001 \0 205 ' l " Q u i t " \r 0012540 ] r e p e a t / / c r a 0012560 s h o r f o r c e d r e s 0012600 t a r t \r \f \r / / G a t e w a 0012620 y I n i t ( c o n t ' d ) \r \r 0012640 I n i t N o v a A l t o ( s y s 0012660 Z o n e ) \r I n i t P u p L e v 0012700 e l 1 ( s y s Z o n e , c t x 0012720 Q , 0 ) \r I n i t E F T P P a 0012740 c k a g e ( s y s Z o n e ) \r C 0012760 r e a t e E c h o S e r v ( s y 0013000 s Z o n e , c t x Q ) \r C r e 0013020 a t e M i s c S e r v ( s y s Z 0013040 o n e , c t x Q ) \r C r e a t 0013060 e S t a t S e r v ( s y s Z o n 0013100 e , c t x Q ) \r C r e a t e G 0013120 a t e C o 376 001 \0 355 210 n S e r v ( 0013140 ) \r R e a d G a t e P a r a m ( 0013160 ) \t / / m u s t F O L L O W 0013200 s e r v e r i n i t i a l i 0013220 z a t i o n \r \r u n l e s s p 0013240 r e s e r v e D e b u g g e r 0013260 % @ 4 0 6 b e q - 1 d o 0013300 \r [ \r / / f l u s h 0013320 t h e d e b u g g e r . \r 0013340 / / W e k n o w t h a t 0013360 @ 4 0 6 b i s a p o i n 0013400 t e r t o t h e f i r s t 0013420 w o r d o f \r / / t h 0013440 e d e b u g g e r , t h a t 0013460 B U T I L i s t h e n e 0013500 x t t h i n g l o a d e d 0013520 a f t e r \r / 376 001 \0 d , / 0013540 i t , a n d t h a t t h e 0013560 l o a d v e c t o r i s 0013600 t h e f i r s t t h i n g 0013620 i n B U T I L . \r A d d 0013640 T o Z o n e ( s y s Z o n e , 0013660 @ 4 0 6 b , b l v - @ 4 0 6 b 0013700 ) \r @ 4 0 6 b = - 1 \r 0013720 ] \r ] \r \r \r / / - - - - - 0013740 - - - - - - - - - - - - - - - - * 0014040 - - - - - - - \r a n d D o s D 0014060 s p P u t s ( n i l , c h a r 0014100 ) b e \r / / - - - - - - - - - 0014120 - - - - - - - - - - - - - - - 376 0014140 \0 222 347 325 - - - - - - - - - - - - 0014160 - - - - - - - - - - - - - - - - * 0014220 - - - - - - - - \r [ \r i f s a 0014240 w C R & c h a r n e $ * 0014260 L t h e n C a l l D o s ( p 0014300 c h a r , $ * L ) \r C a l l D 0014320 o s ( p c h a r , c h a r ) \r 0014340 s a w C R = c h a r e q 0014360 $ * N \r ] \r 377 \0 \0 G a t e F o r 0014400 w a r d . d e c l \0 376 001 \0 203 200 / 0014420 / G a t e F o r w a r d . d e 0014440 c l \r \r / / L a s t m o d i 0014460 f i e d J a n u a r y 2 6 , 0014500 1 9 7 9 3 : 4 4 P M b 0014520 y B o g g s \r \r m a n i f e s 0014540 t \r [ \r r o u t e B c s t I n t 0014560 e r v a l = 3 0 0 0 / / 0014600 3 0 s e c o n d s \r \r p s R o 0014620 u t e I n f o = 2 \t \t / / 0014640 w e l l k n o w n , r e g i 0014660 s t e r e d s o c k e t \r \r p 0014700 t R o u t e R e q u e s t = 0014720 2 0 0 b \r p t R o u t e R e p l 0014740 y = 2 0 1 b \r p t R o u t e 0014760 E r r o r = 2 0 2 b \r p t S 0015000 t a t s R e q u e s t = 2 376 0015020 001 \0 \r q 0 3 b \r p t S t a t s R 0015040 e p l y = 2 0 4 b \r \r g f S 0015060 t a t s V e r s i o n = 1 \r 0015100 ] \r \r / / - - - - - - - - - - - 0015120 - - - - - - - - - - - - - - - - * 0015220 - \r s t r u c t u r e Q u e u 0015240 e : \t / / S i n g l y l i n 0015260 k e d l i s t , u s u a l l 0015300 y m a i n t a i n e d F I F 0015320 O \r / / - - - - - - - - - - - - 0015340 - - - - - - - - - - - - - - - - * 0015420 - - - - 376 001 \0 325 326 - - - - - - - 0015440 - - - - - \r [ \r h e a d w o r 0015460 d \t \t / / - > f i r s t t 0015500 h i n g ; 0 i f q u e u e 0015520 i s e m p t y \r t a i l w 0015540 o r d \t \t / / - > l a s t 0015560 t h i n g ; u n d e f i n e d 0015600 i f q u e u e i s e m p 0015620 t y \r ] \r \r / / - - - - - - - - 0015640 - - - - - - - - - - - - - - - - * 0015740 - - - - \r s t r u c t u r e S 0015760 t a t s : \r / / - - - - - - - - 0016000 - - - - - - - - - - - - - - - - 0016020 - - - - - - - - - 376 001 \0 n 020 - - 0016040 - - - - - - - - - - - - - - - - * 0016100 - - - - - - - - - \r [ \r v e r s 0016120 i o n w o r d \t \t / / = g 0016140 f S t a t s V e r s i o n \r r o 0016160 u t e R e q s w o r d 2 \t / 0016200 / n u m b e r o f r o u t 0016220 e i n f o r e q u e s t s \r 0016240 n u m N e t s w o r d \t \t / / 0016260 n u m b e r o f n e t w o 0016300 r k s \r n u m T M E s w o r d 0016320 \t \t / / n u m b e r o f T 0016340 M E s i n t h i s p a c k 0016360 e t \r / / n u m N e t s n e t 0016400 n u m b e r s , o n e w o 0016420 r d e a c h \r / / n u m T 376 001 0016440 \0 341 > M E s T M E s , 3 w 0016460 o r d s e a c h \r ] \r m a n i 0016500 f e s t l e n S t a t s = 0016520 s i z e S t a t s / 1 6 / 0016540 / s i z e o f f i x e d p 0016560 a r t o n l y \r \r / / - - - - 0016600 - - - - - - - - - - - - - - - - * 0016700 - - - - - - - - \r s t r u c t u 0016720 r e G F : \t \t / / ' g l o b 0016740 a l f r a m e ' f o r G a 0016760 t e w a y F o r w a r d e r \r 0017000 / / - - - - - - - - - - - - - - 0017020 - - - - - - - - - - - - - - - - 0017040 - - - 376 001 \0 E 240 - - - - - - - - 0017060 - - - - - - - - - - - - - - - - * 0017120 - - - \r [ \r t m w o r d \t \t \t 0017140 / / - > T r a n s i t M a 0017160 t r i x \r s t a t s @ S t a t 0017200 s \r r o u t e B c s t T i m e r 0017220 w o r d \t / / t i m e r f 0017240 o r b r o a d c a s t i n g 0017260 r o u t i n g i n f o \r i Q 0017300 @ Q u e u e \t \t / / f o r w a 0017320 r d e r i n p u t q u e u e 0017340 \r t Q @ Q u e u e \t \t / / f 0017360 o r w a r d e r t r a n s m i 0017400 t t e d q u e u e \r ] \r m a n 0017420 i f e s t l e n G F = s i 0017440 z e G F / 1 6 376 001 \0 262 265 \r \r / 0017460 / - - - - - - - - - - - - - - - 0017500 - - - - - - - - - - - - - - - - * 0017560 - - - - - - - - - - - - - \r s t 0017600 r u c t u r e T M E : \t \t / / 0017620 T r a n s i t M a t r i x 0017640 E n t r y \r / / - - - - - - - - 0017660 - - - - - - - - - - - - - - - - * 0017760 - - - - \r [ \r s d N e t w o r 0020000 d = [ s N e t b y t e ; 0020020 d N e t b y t e ] \r c o u 0020040 n t w o r d 2 \r ] \r m 376 \0 377 0020060 \a 240 a n i f e s t l e n T M E 0020100 = s i z e T M E / 1 6 \r \r 0020120 / / - - - - - - - - - - - - - - 0020140 - - - - - - - - - - - - - - - - * 0020220 - - - - - - - - - - - - - - \r s 0020240 t r u c t u r e T M : [ @ 0020260 H T P ; T M E ^ 0 , 1 : @ T M 0020300 E ] / / T r a n s i t 0020320 M a t r i x h a s h t a b l 0020340 e \r / / - - - - - - - - - - - - 0020360 - - - - - - - - - - - - - - - - * 0020460 \r 377 \0 \0 G a t e F o r w a r d . 0020500 b c p l \0 376 001 \0 253 362 / / G a t 0020520 e F o r w a r d . b c p l - - 0020540 L e v e l 1 c o d e i m 0020560 p l e m e n t i n g g a t e w 0020600 a y f u n c t i o n s \r \r / / 0020620 L a s t m o d i f i e d F 0020640 e b r u a r y 8 , 1 9 7 9 0020660 3 : 3 3 P M b y B o g g 0020700 s \r \r g e t " P u p 0 . d e c 0020720 l " \r g e t " P u p 1 . d e c 0020740 l " \r g e t " G a t e F o r w 0020760 a r d . d e c l " \r \r e x t e r 0021000 n a l \r [ \r / / o u t g o i n 0021020 g p r o c e d u r e s \r F o r 0021040 w a r d e r ; F o r w a r d e 0021060 r C t x ; T M L o o k u p \r \r 0021100 / / i n c o m i n 376 001 \0 037 253 g 0021120 p r o c e d u r e s \r G e t P 0021140 B I ; R e l e a s e P B I ; 0021160 P u p E r r o r ; E x c h a n 0021200 g e P o r t s ; C o m p l e t 0021220 e P u p ; R o u t e P u p \r O 0021240 n e s C o m p l e m e n t A d d 0021260 ; O n e s C o m p l e m e n t 0021300 S u b t r a c t ; L e f t C y 0021320 c l e \r S e t T i m e r ; T i 0021340 m e r H a s E x p i r e d ; D 0021360 o u b l e I n c r e m e n t ; 0021400 M o v e B l o c k \r C a l l S w 0021420 a t ; B l o c k ; E n q u e 0021440 u e ; D e q u e u e ; H E n 0021460 u m e r a t e ; H H a s h \r \r 0021500 / / o u t g o i n g s t a 376 0021520 001 \0 360 270 t i c s \r @ g f ; g a 0021540 t e w a y G o i n g D o w n \r \r 0021560 / / i n c o m i n g s t a t 0021600 i c s \r p u p R T ; p b i F r 0021620 e e Q ; u n k n o w n N e t \r 0021640 n d b Q ; g a t e w a y L i s 0021660 t e n e r S o c \r m a x P u p D 0021700 a t a B y t e s ; p u p R T C 0021720 h a n g e d \r ] \r \r s t a t i c 0021740 [ @ g f ; g a t e w a y G 0021760 o i n g D o w n = f a l s e 0022000 ] \r \f \r / / - - - - - - - - - 0022020 - - - - - - - - - - - - - - - - * 0022120 - - - \r 376 001 \0 360 ? l e t F o r 0022140 w a r d e r C t x ( ) b e \r / 0022160 / - - - - - - - - - - - - - - - 0022200 - - - - - - - - - - - - - - - - * 0022260 - - - - - - - - - - - - - \r [ \r 0022300 B l o c k ( ) \r \r w h i l e g 0022320 f > > G F . t Q . h e a d n e 0022340 0 d o \r [ \r l e 0022360 t p b i = D e q u e u e ( 0022400 l v g f > > G F . t Q ) \r 0022420 p b i > > P B I . n d b > > N 0022440 D B . n u m G P B I = p b i 0022460 > > P B I . n d b > > N D B . n 0022500 u m G P B I + 1 \r R e l 0022520 e a s e P B I ( p 376 001 \0 343 \0 b i 0022540 ) \r ] \r \r / / t i m e 0022560 t o b r o a d c a s t r o u 0022600 t i n g i n f o r m a t i o n 0022620 ? \r i f T i m e r H a s E x p 0022640 i r e d ( l v g f > > G F . r 0022660 o u t e B c s t T i m e r ) % 0022700 p u p R T C h a n g e d t h 0022720 e n \r [ \r l e t p 0022740 b i = G e t P B I ( g a t e 0022760 w a y L i s t e n e r S o c , 0023000 t r u e ) \r i f p b i 0023020 n e 0 t h e n \r 0023040 [ \r p u p R T C h a 0023060 n g e d = f a l s e \r 0023100 p b i > > P B I . a l l N 0023120 e t s = t r u e \r 376 001 0023140 \0 234 343 p b i > > P B I . b 0023160 y p a s s Z e r o N e t = t 0023200 r u e \r S e n d R o 0023220 u t e I n f o ( p b i ) \r 0023240 S e t T i m e r ( l v g 0023260 f > > G F . r o u t e B c s t T 0023300 i m e r , r o u t e B c s t I 0023320 n t e r v a l ) \r ] 0023340 \r ] \r \r / / a r e t h 0023360 e r e a n y p a c k e t s 0023400 t o f o r w a r d ? \r l e t 0023420 p b i = D e q u e u e ( l v 0023440 g f > > G F . i Q ) ; i f 0023460 p b i e q 0 r e t u r n \r 0023500 \r / / P u p d e s t i n a t 0023520 i o n a n d s o u r c e n 0023540 e t s 376 001 \0 ~ 023 \r l e t d N e 0023560 t , s N e t = p b i > > P 0023600 B I . p u p . d P o r t . n e t 0023620 , p b i > > P B I . p u p . s 0023640 P o r t . n e t \r l e t p s n 0023660 = p b i > > P B I . n d b > 0023700 > N D B . l o c a l N e t / 0023720 / P h y s i c a l s o u r c e 0023740 n e t \r \r / / W e a r e e 0023760 x p e r i m e n t a l l y a l 0024000 l o w i n g ' d i r e c t e d 0024020 b r o a d c a s t s ' : b r 0024040 o a d c a s t p a c k e t s \r 0024060 / / d e s t i n e d f o r 0024100 a n e t O T H E R T H A N 0024120 T H E O N E O N W H I C 0024140 H T H E Y A 376 001 \0 204 024 R R I 0024160 V E . \r t e s t d N e t e q 0024200 0 % s N e t e q 0 % 0024220 / / d e s t o r s o u r 0024240 c e n e t u n s p e c i f i 0024260 e d ? \r ( p b i > > P B I . p 0024300 u p . d P o r t . h o s t e q 0024320 0 & d N e t e q p b i 0024340 > > P B I . n d b > > N D B . l 0024360 o c a l N e t ) \r i f s o 0024400 R e l e a s e P B I ( p b i ) 0024420 / / d o n ' t f o r w a r 0024440 d \r i f n o t \r 0024460 [ \r l e t v = 0024500 p b i ! ( o f f s e t P B I 0024520 . p u p . t r a n s p o r t / 1 0024540 6 ) \r p b i > 376 001 \0 0024560 266 353 > P B I . p u p . h o p C n 0024600 t = p b i > > P B I . p u p 0024620 . h o p C n t + 1 \r 0024640 t e s t p b i > > P B I . p u 0024660 p . h o p C n t e q 0 \r 0024700 i f s o P u p E 0024720 r r o r ( p b i , 1 0 0 4 b , 0024740 " D i s c a r d e d b y 8 0024760 t h g a t e w a y " ) \r 0025000 i f n o t \r 0025020 [ \r 0025040 U p d a t e P u p C 0025060 h e c k s u m ( l v p b i > > 0025100 P B I . p u p , o f f s e t 0025120 P u p . t r a n s p o r t / 1 6 0025140 , v ) \r 0025160 p 376 001 \0 317 272 b i > > P B I . q 0025200 u e u e = l v g f > > G F 0025220 . t Q / / w h e r e t o 0025240 q u e u e w h e n d o n e \r 0025260 l e t 0025300 p d h = R o u t e P u p ( p 0025320 b i ) / / t r y t o r o 0025340 u t e i t \r 0025360 l e t n d b = p b i 0025400 > > P B I . n d b \r 0025420 t e s t n d b n 0025440 e 0 / / d o w e k n o 0025460 w h o w t o r o u t e i 0025500 t ? \r 0025520 i f s o t e s t n d b > 0025540 > N D B . n u m G P B I g r 0025560 0 / / i s 376 001 \0 $ 344 t h e 0025600 r e r o o m ? \r 0025620 i f n o t 0025640 P u p E r r o r ( p b i , 1 0025660 0 0 7 b , " G a t e w a y O 0025700 Q o v e r f l o w " ) \r 0025720 i 0025740 f s o \r 0025760 [ \r 0026000 0026020 n d b > > N D B . n u m G P B I 0026040 = n d b > > N D B . n u m G 0026060 P B I - 1 \r 0026100 ( n d b 0026120 > > N D B . e n c a p s u l a t 0026140 e P u p ) ( p b i , p d h ) \r 0026160 376 001 \0 301 0026200 q ( n d b > > 0026220 N D B . l e v e l 0 T r a n s m 0026240 i t ) ( p b i ) \r 0026260 T M 0026300 I n c r e m e n t ( p s n , n 0026320 d b > > N D B . l o c a l N e t 0026340 ) \r 0026360 l o o p \r 0026400 0026420 ] \r 0026440 i f n o t \r 0026460 [ / / d 0026500 o n ' t k n o w h o w t o 0026520 r o u t e t o d N e t \r 0026540 0026560 u n k n o w n N e t = d N 0026600 e 376 001 \0 271 342 t / / i n i t i 0026620 a t e a p r o b e \r 0026640 R e 0026660 l e a s e P B I ( p b i ) / 0026700 / d i s c a r d \r 0026720 ] \r 0026740 ] \r 0026760 ] \r T M I n c r e m e n t ( p 0027000 s n , 0 ) / / i n c r e m 0027020 e n t d i s c a r d e d c o 0027040 u n t f o r p s n \r ] r e 0027060 p e a t \r \f \r / / - - - - - - - 0027100 - - - - - - - - - - - - - - - - * 0027200 - - - - - \r 376 001 \0 340 0 a n d F 0027220 o r w a r d e r ( p b i ) b e 0027240 \r / / - - - - - - - - - - - - - 0027260 - - - - - - - - - - - - - - - - * 0027340 - - - - - - - - - - - - - - - \r 0027360 / / P u p R o u t e p a s s 0027400 e s o n P B I s ( f r o m 0027420 S o c k e t 2 ) w h i c h 0027440 i t d o e s n ' t h a n d 0027460 l e . \r [ \r E x c h a n g e P o 0027500 r t s ( p b i ) / / d o 0027520 t h i s h e r e r a t h e r 0027540 t h a n i n e a c h c a 0027560 s e \r s w i t c h o n p b i > 0027600 > P B I . p u p . t y 376 001 \0 i 243 0027620 p e i n t o \r [ \r 0027640 c a s e p t R o u t e R e q u 0027660 e s t : \r [ \r 0027700 / / d o n ' t a n s w e 0027720 r p r o b e s f r o m n e 0027740 t w o r k s w h o s e i d e 0027760 n t i t y w e d o n ' t k 0030000 n o w \r i f p b i 0030020 > > P B I . p u p . d P o r t . 0030040 n e t n e 0 t h e n \r 0030060 [ \r 0030100 S e n d R o u t e I n f o ( 0030120 p b i ) \r D o 0030140 u b l e I n c r e m e n t ( l v 0030160 g f > > G F . s t a t s . r o 0030200 u t e R e q s ) \r 0030220 376 001 \0 217 360 r e t u r n \r 0030240 ] \r e 0030260 n d c a s e \r ] \r 0030300 c a s e p t S t a t s R e 0030320 q u e s t : \r [ \r 0030340 l e t s t a t s = 0030360 l v p b i > > P B I . p u p 0030400 . w o r d s \r M o v 0030420 e B l o c k ( l v p b i > > P 0030440 B I . p u p . w o r d s , l v 0030460 g f > > G F . s t a t s , l 0030500 e n S t a t s ) \r l 0030520 e t p t r = l e n S t a t 0030540 s + 1 \r \r l e t 0030560 n d b = n d b Q ! 0 ; w h 0030600 i l e n d b n e 0 d o \r 0030620 376 001 \0 313 M [ \r 0030640 / / s k i p 0030660 n e t s w h o s e i d e n t 0030700 i t y w e d o n ' t k n o 0030720 w \r i f n d 0030740 b > > N D B . l o c a l N e t 0030760 n e 0 t h e n \r 0031000 [ \r 0031020 s t a t s > > S t a t s 0031040 . n u m N e t s = s t a t s 0031060 > > S t a t s . n u m N e t s 0031100 + 1 \r p 0031120 b i > > P B I . p u p . w o r d 0031140 s ^ p t r = n d b > > N D B 0031160 . l o c a l N e t \r 0031200 p t r = p t r 0031220 + 1 \r 376 001 \0 322 372 0031240 ] \r n 0031260 d b = n d b > > N D B . l i 0031300 n k \r ] \r \r 0031320 / / i f a n y b o d 0031340 y e l s e n e e d s T M E 0031360 n u m e r a t e , r e w r i t 0031400 e t h i s p r o c e d u r e 0031420 \r f o r i = 0 0031440 t o ( 1 l s h i f t g f 0031460 > > G F . t m > > T M . l o g S 0031500 i z e ) - 1 d o \r 0031520 i f g f > > G F . t m > 0031540 > T M . T M E ^ i . s d N e t 0031560 n e - 1 t h e n \r 0031600 [ \r 0031620 i f ( p t r + l e 376 0031640 001 \0 361 l n T M E - 1 ) g r ( 0031660 m a x P u p D a t a B y t e s 0031700 r s h i f t 1 ) b r e a k \r 0031720 s t a t 0031740 s > > S t a t s . n u m T M E s 0031760 = s t a t s > > S t a t s . 0032000 n u m T M E s + 1 \r 0032020 M o v e B l o c k 0032040 ( l v p b i > > P B I . p u p 0032060 . w o r d s ^ p t r , \r 0032100 l v g f > > 0032120 G F . t m > > T M . T M E ^ i . 0032140 s d N e t , l e n T M E ) \r 0032160 p t r = 0032200 p t r + l e n T M E \r 0032220 ] \r \r 0032240 C 376 001 \0 261 352 o m p l e t e 0032260 P u p ( p b i , p t S t a t s 0032300 R e p l y , p u p O v B y t e 0032320 s + ( p t r - 1 ) l s h i 0032340 f t 1 ) \r r e t u 0032360 r n \r ] \r ] \r 0032400 R e l e a s e P B I ( p b i ) \r 0032420 ] \r \f \r / / - - - - - - - - - - 0032440 - - - - - - - - - - - - - - - - * 0032540 - - \r a n d U p d a t e P u p 0032560 C h e c k s u m ( p u p , i n 0032600 d e x , o l d V a l u e ) b 0032620 e \r / / - - - - - - - - - - - - 0032640 - - - - - - - - - 376 001 \0 \f \f - - 0032660 - - - - - - - - - - - - - - - - * 0032740 - - - - - \r / / U p d a t e 0032760 P u p c h e c k s u m t o 0033000 a c c o u n t f o r c h a n 0033020 g i n g o n e w o r d i n 0033040 t h e P u p \r / / T y p i 0033060 c a l c a l l ( c h a n g i 0033100 n g T r a n s p o r t b y t 0033120 e ) : \r / / \t l e t o l d W o 0033140 r d = p u p ! ( o f f s e t 0033160 P u p . t r a n s p o r t / 1 0033200 6 ) \r / / \t p u p > > P u p . t 0033220 r a n s p o r t = n e w V a 0033240 l u e \r / / \t U p d a t e P 376 001 0033260 \0 220 347 u p C h e c k s u m ( p u 0033300 p , o f f s e t P u p . t r 0033320 a n s p o r t / 1 6 , o l d W 0033340 o r d ) \r [ \r l e t l e n = 0033360 ( p u p > > P u p . l e n g t 0033400 h - 1 ) r s h i f t 1 \r i f 0033420 p u p ! l e n n e - 1 t 0033440 h e n \r p u p ! l e n = 0033460 O n e s C o m p l e m e n t A 0033500 d d ( p u p ! l e n , \r 0033520 L e f t C y c l e ( O n e s C o 0033540 m p l e m e n t S u b t r a c t 0033560 ( p u p ! i n d e x , o l d V 0033600 a l u e ) , l e n - i n d e x 0033620 ) ) \r ] \r \r / / - - - - - - - - 0033640 - - - - - - - - - - - - - - - - 0033660 - - - 376 001 \0 224 365 - - - - - - - - 0033700 - - - - - - - - - - - - - - - - * 0033740 - - - - - - - - - \r a n d S e 0033760 n d R o u t e I n f o ( p b i ) 0034000 b e \r / / - - - - - - - - - - 0034020 - - - - - - - - - - - - - - - - * 0034120 - - \r / / B u i l d a n d 0034140 s e n d a r o u t i n g i 0034160 n f o p a c k e t i n p b 0034200 i . \r / / C a l l e r i s 0034220 a s s u m e d t o h a v e 0034240 f i x e d u p t h e p o r 0034260 t s p r o p e 376 001 \0 323 307 r l y 0034300 . \r [ \r p b i > > P B I . p u p 0034320 . l e n g t h = 0 \r H E n u 0034340 m e r a t e ( p u p R T , P e 0034360 r R T E , p b i ) \r C o m p l 0034400 e t e P u p ( p b i , p t R o 0034420 u t e R e p l y , p b i > > P 0034440 B I . p u p . l e n g t h + p u 0034460 p O v B y t e s ) \r ] \r \r / / - 0034500 - - - - - - - - - - - - - - - - * 0034600 - - - - - - - - - - - \r a n d 0034620 P e r R T E ( r t e , p b i ) 0034640 b e \r / / - - - - - - - - - - 0034660 - - - - - - - - - - - - - 376 001 \0 0034700 236 230 - - - - - - - - - - - - - - 0034720 - - - - - - - - - - - - - - - - * 0034760 - - - - - - - \r [ \r i f r t e 0035000 > > R T E . n e t n e 0 t 0035020 h e n \r [ \r l e t 0035040 c = p b i > > P B I . p u p 0035060 . l e n g t h \r p b i > > 0035100 P B I . p u p . b y t e s ^ ( c 0035120 + 1 ) = r t e > > R T E . n 0035140 e t \r p b i > > P B I . p 0035160 u p . b y t e s ^ ( c + 2 ) = 0035200 r t e > > R T E . n d b > > N 0035220 D B . l o c a l N e t \r p 0035240 b i > > P B I . p u p . b y t e 0035260 s ^ ( c + 3 ) = r t e > > R 0035300 T E 376 001 \0 321 \a . h o s t \r 0035320 / / I f w e a r e a b o 0035340 u t t o g o d o w n , s 0035360 a y t h a t w e a r e a 0035400 t e r r i b l e r o u t e 0035420 t o a n y w h e r e \r p 0035440 b i > > P B I . p u p . b y t e 0035460 s ^ ( c + 4 ) = g a t e w a 0035500 y G o i n g D o w n ? m a x H 0035520 o p s + 1 , r t e > > R T E . 0035540 h o p s \r p b i > > P B I 0035560 . p u p . l e n g t h = c + 0035600 4 \r ] \r ] \r \r / / - - - - 0035620 - - - - - - - - - - - - - - - - * 0035700 - - - - - - - 376 001 \0 273 323 - - - - 0035720 - - - - - - - - - - - - - \r a n 0035740 d T M L o o k u p ( t m , s 0035760 N e t , d N e t , f i n d F 0036000 r e e ; n u m a r g s n a ) 0036020 = v a l o f \r / / - - - - - 0036040 - - - - - - - - - - - - - - - - * 0036140 - - - - - - - \r [ \r l e t k e 0036160 y = s N e t l s h i f t 0036200 8 + d N e t \r l e t i P r 0036220 o b e = n i l \r l e t i n 0036240 c r e m e n t = H H a s h ( 0036260 t m > > T M . l o g S i z e , 0036300 k e y , l v i P r o 376 001 \0 270 0036320 374 b e ) \r l e t p r o b e = 0036340 i P r o b e \r [ \r 0036360 l e t t m e = l v t m > 0036400 > T M . T M E ^ p r o b e \r 0036420 i f t m e > > T M E . s d N 0036440 e t e q k e y t h e n r 0036460 e s u l t i s t m e \r i 0036500 f t m e > > T M E . s d N e t 0036520 e q - 1 t h e n \r 0036540 r e s u l t i s n a g e 0036560 4 & f i n d F r e e ? t 0036600 m e , 0 / / f a i l \r 0036620 p r o b e = ( p r o b e + 0036640 i n c r e m e n t ) & ( ( 1 0036660 l s h i f t t m > > T M . l 0036700 o g S i z e ) - 1 ) \r ] 0036720 r 376 001 \0 + 3 e p e a t u n t i l 0036740 p r o b e e q i P r o b e 0036760 \r r e s u l t i s 0 / / f 0037000 a i l . S e a r c h e d t 0037020 h e w h o l e t a b l e \r ] 0037040 \r \r / / - - - - - - - - - - - - 0037060 - - - - - - - - - - - - - - - - * 0037160 \r a n d T M I n c r e m e n t 0037200 ( s N e t , d N e t ) b e \r 0037220 / / - - - - - - - - - - - - - - 0037240 - - - - - - - - - - - - - - - - * 0037320 - - - - - - 376 001 \0 _ 376 - - - - - 0037340 - - - \r / / L o o k s u p 0037360 s N e t , , d N e t i n t h 0037400 e t r a n s i t m a t r i x 0037420 h a s h t a b l e . \r / / 0037440 C r e a t e s a n e n t r y 0037460 i f n o t f o u n d t h 0037500 e n i n c r e m e n t s t h 0037520 e c o u n t . \r [ \r l e t t 0037540 m e = T M L o o k u p ( g f 0037560 > > G F . t m , s N e t , d 0037600 N e t , t r u e ) \r i f t m 0037620 e e q 0 t h e n r e t u 0037640 r n / / t a b l e f u l 0037660 l ! \r i f t m e > > T M E . s 0037700 d N e t e q - 1 t h e n 0037720 / / e m p t y t 376 \0 R 245 277 0037740 m e \r t m e > > T M E . s 0037760 d N e t = s N e t l s h i 0040000 f t 8 + d N e t \r D o u b 0040020 l e I n c r e m e n t ( l v t 0040040 m e > > T M E . c o u n t ) \r ] 0040060 \r \r 377 \0 \0 G a t e F o r I n i t 0040100 . b c p l \0 376 001 \0 | 214 / / G a 0040120 t e F o r I n i t . b c p l - 0040140 - i n i t i a l i z a t i o n 0040160 f o r G a t e F o r w a r d 0040200 . b c p l \r \r / / L a s t m 0040220 o d i f i e d F e b r u a r y 0040240 8 , 1 9 7 9 3 : 3 0 P 0040260 M b y B o g g s \r \r g e t 0040300 " P u p 0 . d e c l " \r g e t 0040320 " P u p 1 . d e c l " \r g e t 0040340 " G a t e F o r w a r d . d e c 0040360 l " \r \r e x t e r n a l \r [ \r / 0040400 / o u t g o i n g p r o c e 0040420 d u r e s \r I n i t F o r w a r 0040440 d e r \r \r / / i n c o m i n g 0040460 p r o c e d u r e s \r T M L o 0040500 o k u p \r A l l o c a 376 001 \0 I 357 0040520 t e ; Z e r o ; S y s E r r 0040540 ; S e t T i m e r \r \r / / i 0040560 n c o m i n g s t a t i c s \r 0040600 @ g f ; n d b Q ; n u m N e 0040620 t s ; g a t e w a y I Q ; s 0040640 y s Z o n e \r ] \r \r \r / / - - - 0040660 - - - - - - - - - - - - - - - - * 0040760 - - - - - - - - - \r l e t I n 0041000 i t F o r w a r d e r ( n u m P 0041020 B I ) b e \r / / - - - - - - - 0041040 - - - - - - - - - - - - - - - - * 0041120 376 001 \0 307 W - - - - - - - - - - - 0041140 - - - - - - - - - - \r / / n u 0041160 m P B I i s t h e n u m b 0041200 e r o f P B I s i n t h 0041220 e s y s t e m \r [ \r g f = 0041240 A l l o c a t e ( s y s Z o n e 0041260 , l e n G F ) ; Z e r o ( g 0041300 f , l e n G F ) \r \r / / P u 0041320 p 1 I n i t i n i t i a l i z 0041340 e s g a t e w a y I Q t o 0041360 - > p b i F r e e Q \r g a t e 0041400 w a y I Q = l v g f > > G 0041420 F . i Q \r \r / / g a t e w a y 0041440 s t a t i s t i c s \r g f > > 0041460 G F . s t a t s . v e r s i o n 0041500 = g f S t a t s V e r s i o 0041520 n \r l e t 376 001 \0 F 254 l o g T M 0041540 S i z e = ( n u m N e t s * 0041560 ( n u m N e t s + 1 ) * 1 0 ) / 0041600 8 \r f o r i = 1 t o 1 0041620 6 d o \r [ / / r o u 0041640 n d u p t o n e x t p o 0041660 w e r o f 2 a n d t a k 0041700 e l o g \r l o g T M S i 0041720 z e = l o g T M S i z e r 0041740 s h i f t 1 \r i f l o 0041760 g T M S i z e e q 0 t h e 0042000 n [ l o g T M S i z e = 0042020 i ; b r e a k ] \r ] \r 0042040 l e t l e n T M = l e n H 0042060 T P + l e n T M E * ( 1 l s h 0042100 i f t l o g T M S i z e ) \r l 0042120 e t t m = A l 376 001 \0 W G l 0042140 o c a t e ( s y s Z o n e , l 0042160 e n T M ) ; Z e r o ( t m , 0042200 l e n T M ) \r t m > > H T P . e 0042220 n u m e r a t e = S y s E r 0042240 r \r t m > > H T P . d e l e t e 0042260 = S y s E r r \r t m > > H T 0042300 P . l o o k u p = T M L o o 0042320 k u p \r t m > > H T P . i n s e 0042340 r t = S y s E r r \r t m > > 0042360 H T P . l o g S i z e = l o 0042400 g T M S i z e \r f o r i = 0042420 0 t o ( 1 l s h i f t l 0042440 o g T M S i z e ) - 1 d o 0042460 / / i n i t t o e m p t y \r 0042500 t m > > T M . T M E ^ i . 0042520 s d N e t = - 1 \r g f > > 376 0042540 001 \0 & 211 G F . t m = t m \r \r 0042560 / / w a i t 3 0 s e c b 0042600 e f o r e f i r s t r o u t 0042620 i n g i n f o b r o a d c a 0042640 s t \r S e t T i m e r ( l v g 0042660 f > > G F . r o u t e B c s t T 0042700 i m e r , 3 0 0 0 ) \r \r / / 0042720 N o n e t m a y h a v e 0042740 m o r e t h a n 1 / 2 o f 0042760 t h e P B I s w a i t i n 0043000 g o n i t s O Q \r l e t 0043020 n d b = n d b Q ! 0 ; w h 0043040 i l e n d b n e 0 d o \r 0043060 [ \r n d b > > N D B 0043100 . n u m G P B I = n u m P B 0043120 I / 2 \r n d b = n d b 0043140 ! 0 \r 376 \0 \a 332 A ] \r ] \r \r 0043160 377 \0 \0 G a t e P a r a m e t e r 0043200 . b c p l \0 376 001 \0 343 316 / / G a 0043220 t e P a r a m e t e r . b c p l 0043240 \r \r / / L a s t m o d i f i 0043260 e d M a r c h 5 , 1 9 7 9 0043300 3 : 5 0 P M b y B o g 0043320 g s \r \r g e t " P u p 0 . d e 0043340 c l " \r g e t " P u p 1 . d e 0043360 c l " \r g e t " S t r e a m s 0043400 . d " \r \r e x t e r n a l \r [ \r 0043420 / / o u t g o i n g p r o c 0043440 e d u r e s \r R e a d G a t e P 0043460 a r a m \r \r / / i n c o m i n 0043500 g p r o c e d u r e s \r M y F 0043520 r a m e ; G o t o F r a m e ; 0043540 G a t e w a y F i n i s h ; 0043560 H I n s e r t \r O p e n F i l e 0043600 ; C l o s e s ; E 376 001 \0 002 226 0043620 n d o f s ; G e t s ; P u t 0043640 s ; W s \r A d d N a m e T o B 0043660 F Q ; S e t N a m e B c s t I 0043700 n t e r v a l ; S e t B o o t 0043720 B c s t I n t e r v a l \r S e t 0043740 T i m e C o r r e c t i o n ; 0043760 S e t T i m e Z o n e ; S e t 0044000 T i m e D S T \r \r / / i n c o 0044020 m i n g s t a t i c s \r d s p 0044040 ; p u p R T ; n d b Q \r p r 0044060 e s e r v e D e b u g g e r \r ] 0044100 \r \r m a n i f e s t \r [ \r m a x 0044120 A t o m C h a r s = 3 0 \r n 0044140 u m A t o m W o r d s = m a 0044160 x A t o m C h a r s r s h i f 0044200 t 1 + 1 \r g a t e w a y Q u 0044220 376 001 \0 001 306 i t C o d e = 1 2 0044240 3 4 5 / / D o s " . e r t 0044260 n " c o d e t o s i g n a 0044300 l n o r m a l Q u i t \r ] \r 0044320 \r s t a t i c [ p a r a m F 0044340 i l e ; i n C o m m e n t ; 0044360 e n d ; b u f f e r ; l a s 0044400 t N u m b e r W a s P o s i t i 0044420 v e ] \r \r / / - - - - - - - - 0044440 - - - - - - - - - - - - - - - - * 0044540 - - - - \r l e t R e a d G a t 0044560 e P a r a m ( ) b e \r / / - - 0044600 - - - - - - - - - - - - - - - - 0044620 - - - - - 376 001 \0 \v 263 - - - - - - 0044640 - - - - - - - - - - - - - - - - * 0044700 - - - - - - - - - - - - - - - \r 0044720 [ \r p a r a m F i l e = O p 0044740 e n F i l e ( " G A T E P A R A 0044760 M E T E R . T X T " , k s T y 0045000 p e R e a d O n l y , c h a r 0045020 I t e m ) \r i f p a r a m F i 0045040 l e e q 0 t h e n P a r 0045060 a m E r r o r ( " C a n ' t o 0045100 p e n G A T E P A R A M E T E 0045120 R . T X T * n " ) \r l e t v 0045140 = v e c n u m A t o m W o r 0045160 d s ; b u f f e r = v \r e 0045200 n d = M y F r a m e ( ) \r i 0045220 n C o m m e n t = 376 001 \0 # 034 0045240 f a l s e \r I n t e r p r e t P 0045260 a r a m ( ) \r C l o s e s ( p a 0045300 r a m F i l e ) \r ] \r \f \r / / - 0045320 - - - - - - - - - - - - - - - - * 0045420 - - - - - - - - - - - \r a n d 0045440 I n t e r p r e t P a r a m ( ) 0045460 b e \r / / - - - - - - - - - - 0045500 - - - - - - - - - - - - - - - - * 0045600 - - \r [ \r l e t a t o m = 0045620 R e a d A t o m ( ) \r s w i t 376 0045640 001 \0 023 n c h o n a t o m > > S 0045660 t r i n g . c h a r ^ 1 i n t 0045700 o \r [ \r c a s e $ 0045720 B : c a s e $ b : / / B 0045740 o o t < c o d e > < f i l e 0045760 n a m e > \r [ \r 0046000 l e t b f n = R e 0046020 a d N u m b e r ( 8 ) \r 0046040 l e t n a m e = R e a 0046060 d A t o m ( ) \r A d 0046100 d N a m e T o B F Q ( b f n , 0046120 n a m e ) \r e n d c 0046140 a s e \r ] \r c 0046160 a s e $ C : c a s e $ c : 0046200 / / C o r r e c t i o n < 0046220 s i g n > < c o r r e c t i o 0046240 n i n 376 001 \0 353 202 s e c o n d 0046260 s p e r d a y ) > \r 0046300 [ \r l e t s e 0046320 c o n d s = R e a d N u m b 0046340 e r ( 1 0 ) \r S e t 0046360 T i m e C o r r e c t i o n ( s 0046400 e c o n d s , l a s t N u m b 0046420 e r W a s P o s i t i v e ) \r 0046440 e n d c a s e \r 0046460 ] \r c a s e $ D : 0046500 c a s e $ d : \r 0046520 [ \r s w i t c h o n 0046540 a t o m > > S t r i n g . c h 0046560 a r ^ 2 i n t o \r 0046600 [ \r c a 0046620 s e $ E : c a s e $ e : 0046640 / / D e b u g 376 001 \0 M 315 - - 0046660 r e t a i n t h e d e b u 0046700 g g e r \r 0046720 [ \r p 0046740 r e s e r v e D e b u g g e r 0046760 = t r u e \r 0047000 e n d c a s e \r 0047020 ] \r 0047040 c a s e $ S : c a s e 0047060 $ s : / / D S T < b e g i 0047100 n d a y > < e n d d a y > 0047120 \r [ \r 0047140 l e t b 0047160 e g i n D S T = R e a d N u 0047200 m b e r ( 1 0 ) \r 0047220 l e t e n d D S T 0047240 = R e a d N u m b e r ( 1 376 001 0047260 \0 < 006 0 ) \r 0047300 S e t T i m e D S T ( b e g 0047320 i n D S T , e n d D S T ) \r 0047340 e n d c a 0047360 s e \r ] 0047400 \r ] \r 0047420 e n d c a s e \r 0047440 ] \r c a s e $ H : c a 0047460 s e $ h : / / H o s t < 0047500 n e t T y p e > < d e v i c e 0047520 c o d e > < n e t > < h o 0047540 s t > \r [ \r 0047560 l e t n e t T y p e = 0047600 R e a d N u m b e r ( 8 ) \r 0047620 l e t d e v i c e N u 0047640 m = R e a d N u m b e r ( 8 0047660 ) \r 376 001 \0 p 022 l e t 0047700 n e t = R e a d N u m b e 0047720 r ( 8 ) \r l e t h 0047740 o s t = R e a d N u m b e r 0047760 ( 8 ) \r l e t n d 0050000 b = n d b Q ! 0 ; w h i l 0050020 e n d b n e 0 d o \r 0050040 [ \r 0050060 i f n d b > > N D B . n e 0050100 t T y p e e q n e t T y p e 0050120 & n d b > > N D B . d e v i 0050140 c e N u m e q d e v i c e N 0050160 u m t h e n \r 0050200 [ \r 0050220 i f n d b > > N D B . l o 0050240 c a l H o s t n e 0 & n 0050260 d b > > N D B . 376 001 \0 314 v l o c 0050300 a l H o s t n e h o s t t 0050320 h e n \r 0050340 P a r a m E r r o r ( " W 0050360 r o n g G A T E P A R A M E T 0050400 E R . T X T f o r t h i s 0050420 g a t e w a y * N " ) \r 0050440 n d b > > N D B 0050460 . l o c a l N e t = n e t \r 0050500 n d b > 0050520 > N D B . l o c a l H o s t = 0050540 h o s t \r 0050560 l e t r t e = H I n s 0050600 e r t ( p u p R T , n e t ) \r 0050620 r t e > 0050640 > R T E . n d b = n d b \r 0050660 r t 376 001 \0 0050700 005 217 e > > R T E . h o s t = 0050720 h o s t \r 0050740 b r e a k \r 0050760 ] \r n d 0051000 b = n d b > > N D B . l i n 0051020 k \r ] \r 0051040 i f n d b e q 0 t 0051060 h e n W s ( " N o i n t e r 0051100 f a c e f o r a b o v e n 0051120 e t * N " ) \r e n d 0051140 c a s e \r ] \r \f \r / 0051160 / I n t e r p r e t P a r a m 0051200 ( C o n t ' d ) \r \r c a 0051220 s e $ P : c a s e $ p : 0051240 / / P r o b e < H o u r s > 0051260 \r [ \r l 0051300 e t 376 001 \0 016 ) h o u r s = 0051320 R e a d N u m b e r ( 1 0 ) \r 0051340 S e t N a m e B c s t 0051360 I n t e r v a l ( h o u r s ) \r 0051400 S e t B o o t B c s 0051420 t I n t e r v a l ( h o u r s ) 0051440 \r e n d c a s e \r 0051460 ] \r c a s e $ 0051500 Z : c a s e $ z : / / Z 0051520 o n e < s i g n : + i s 0051540 W e s t o f G r e e n w i c 0051560 h > < H o u r s > : < M i n u 0051600 t e s > \r [ \r 0051620 l e t z o n e H = R 0051640 e a d N u m b e r ( 1 0 ) \r 0051660 l e t z o n e S = 0051700 n o t l a s 376 001 \0 243 251 t N u m 0051720 b e r W a s P o s i t i v e \r 0051740 l e t z o n e M = 0051760 R e a d N u m b e r ( 1 0 ) \r 0052000 S e t T i m e Z o n 0052020 e ( z o n e S , z o n e H , 0052040 z o n e M ) \r e n d 0052060 c a s e \r ] \r 0052100 d e f a u l t : \r [ 0052120 \r l e t c h a r 0052140 = R e a d C h a r ( ) \r 0052160 i f c h a r e q - 1 0052200 % c h a r e q $ * N e 0052220 n d c a s e \r ] r 0052240 e p e a t \r ] \r ] r e p 0052260 e a t \r \r / / - - - - - - - - - 0052300 - - - - - - - - - - - - 376 001 \0 = 0052320 U - - - - - - - - - - - - - - - 0052340 - - - - - - - - - - - - - - - - * 0052400 - - - - - - - - \r a n d I s B 0052420 r e a k ( c h a r ) = \r / / - 0052440 - - - - - - - - - - - - - - - - * 0052540 - - - - - - - - - - - \r c 0052560 h a r e q $ * N % c h a 0052600 r e q $ * S % c h a r 0052620 e q $ * T % \r c h a 0052640 r e q - 1 % c h a r e 0052660 q $ ; % c h a r e q $ 0052700 : % c h a r e q $ , \r \r 0052720 / 376 001 \0 X 002 / - - - - - - - - - 0052740 - - - - - - - - - - - - - - - - * 0053040 - - - \r a n d P a r a m E r r 0053060 o r ( s t r i n g ) b e \r / / 0053100 - - - - - - - - - - - - - - - - * 0053200 - - - - - - - - - - - - \r [ \r W 0053220 s ( s t r i n g ) \r G a t e w a 0053240 y F i n i s h ( g a t e w a y Q 0053260 u i t C o d e ) \r ] \r \f \r / / - 0053300 - - - - - - - - - - - - - - - - 0053320 - - - - - - 376 001 \0 351 264 - - - - - 0053340 - - - - - - - - - - - - - - - - * 0053420 \r a n d R e a d N u m b e r ( 0053440 r a d i x ; n u m a r g s n 0053460 a ) = v a l o f \r / / - - - 0053500 - - - - - - - - - - - - - - - - * 0053600 - - - - - - - - - \r / / i n t 0053620 e r p r e t s t h e n e x t 0053640 a t o m a s a n u m b e 0053660 r i n t h e g i v e n r 0053700 a d i x \r [ \r i f n a e q 0053720 0 t h e n r a d i 376 001 \0 k 234 0053740 x = 8 \r l e t a t o m = 0053760 R e a d A t o m ( ) \r l e t 0054000 n u m b e r = 0 \r l a s t N 0054020 u m b e r W a s P o s i t i v e 0054040 = t r u e \r f o r i = 0054060 1 t o a t o m > > S t r i n 0054100 g . l e n g t h d o \r [ 0054120 \r l e t c h a r = a 0054140 t o m > > S t r i n g . c h a r 0054160 ^ i \r i f i e q 1 0054200 & ( c h a r e q $ - % 0054220 c h a r e q $ + ) t h e n 0054240 \r [ l a s t N u m 0054260 b e r W a s P o s i t i v e = 0054300 c h a r e q $ + ; l o o 0054320 p ] \r c h a r = c h 0054340 376 001 \0 t 340 a r - $ 0 \r u n 0054360 l e s s c h a r g e 0 & 0054400 c h a r l e r a d i x - 1 0054420 d o \r P a r a m E 0054440 r r o r ( " * N [ R e a d N u m 0054460 b e r ] - i l l e g a l c 0054500 h a r a c t e r i n n u m b 0054520 e r " ) \r n u m b e r = 0054540 n u m b e r * r a d i x 0054560 + c h a r \r ] \r r e s u 0054600 l t i s n u m b e r \r ] \r \r / 0054620 / - - - - - - - - - - - - - - - 0054640 - - - - - - - - - - - - - - - - * 0054720 - - - - - - - - - - - - - \r a n 0054740 d R e a 376 001 \0 l } d A t o m ( 0054760 ) = v a l o f \r / / - - - - 0055000 - - - - - - - - - - - - - - - - * 0055100 - - - - - - - - \r / / r e t u 0055120 r n s p o i n t e r t o a 0055140 s t r i n g \r / / g o e s 0055160 t o t o p f r a m e i f 0055200 e n d o f f i l e b e f o 0055220 r e r e a d i n g a n y c 0055240 h a r s \r [ \r l e t c h a r 0055260 = n i l \r [ / / i g 0055300 n o r e l e a d i n g j u n 0055320 k \r c h a r = R e a d 0055340 C h a r ( ) \r 376 001 \0 317 254 i 0055360 f c h a r e q - 1 t h e 0055400 n G o t o F r a m e ( e n d ) 0055420 \r u n l e s s I s B r e 0055440 a k ( c h a r ) b r e a k \r 0055460 ] r e p e a t \r l e t c 0055500 o u n t = 0 \r [ / 0055520 / c o l l e c t a n a t o m 0055540 \r c o u n t = c o u n 0055560 t + 1 \r i f c o u n 0055600 t g r m a x A t o m C h a r 0055620 s t h e n \r P a r 0055640 a m E r r o r ( " * N [ R e a d 0055660 A t o m ] - a t o m t o o 0055700 l o n g " ) \r b u f f e 0055720 r > > S t r i n g . c h a r ^ c 0055740 o u n t = c h a r \r 376 0055760 001 \0 @ 340 c h a r = R e a d C 0056000 h a r ( ) \r i f I s B r 0056020 e a k ( c h a r ) b r e a k \r 0056040 ] r e p e a t \r b u f f 0056060 e r > > S t r i n g . l e n g t 0056100 h = c o u n t \r r e s u l t 0056120 i s b u f f e r \r ] \r \r / / - 0056140 - - - - - - - - - - - - - - - - * 0056240 - - - - - - - - - - - \r a n d 0056260 R e a d C h a r ( ) = v a l 0056300 o f \r / / - - - - - - - - - - - 0056320 - - - - - - - - - - - - - - - - * 0056360 - - - - 376 001 \0 272 $ - - - - - - - 0056400 - - - - - - - - - - - - - - - - 0056420 - - - - - - \r / / r e t u r n 0056440 s t h e n e x t c h a r a 0056460 c t e r i n t h e s t r e 0056500 a m \r / / r e t u r n s - 1 0056520 o n e n d o f f i l e \r 0056540 [ \r u n t i l E n d o f s ( p 0056560 a r a m F i l e ) d o \r 0056600 [ / / f i l t e r o u t 0056620 c o m m e n t s h e r e \r 0056640 l e t c h a r = G e t s 0056660 ( p a r a m F i l e ) ; P u t 0056700 s ( d s p , c h a r ) \r 0056720 i f c h a r e q $ * N t 0056740 h e n i n C o m m e n t = 0056760 f a l s e \r 376 \0 ] 245 _ i f 0057000 i n C o m m e n t l o o p \r 0057020 i f c h a r e q $ ; 0057040 t h e n i n C o m m e n t 0057060 = t r u e \r r e s u l t 0057100 i s c h a r \r ] \r r e s 0057120 u l t i s - 1 \r ] \r 377 \0 \0 G a 0057140 t e C o n S e r v . d e c l \0 376 0057160 001 \0 002 022 / / G a t e C o n S e 0057200 r v . d e c l - - G a t e C 0057220 o n t r o l p r o t o c o l \r 0057240 \r / / L a s t m o d i f i e 0057260 d M a r c h 7 , 1 9 7 9 0057300 4 : 2 5 P M b y B o g g 0057320 s \r \r m a n i f e s t \r [ \r g c 0057340 S o c k e t 1 = 3 1 4 1 5 \t 0057360 / / n o t w e l l k n o w 0057400 n s e r v e r s o c k e t \r 0057420 g c S o c k e t 2 = 9 2 6 5 0057440 \r g c P a s s w o r d = 2 7 0057460 1 8 2 \t / / h i g h w o r d 0057500 o f P u p I D \r \r / / p 0057520 u p t y p e s \r p t S t o r e 0057540 = 2 0 0 b \t \t / / s t o r 0057560 e f i 376 001 \0 256 202 l e o n t o 0057600 g a t e w a y d i s k \r p t 0057620 E x a m i n e = 2 0 1 b \t / 0057640 / e x a m i n e m e m o r y 0057660 \r p t D e p o s i t = 2 0 2 0057700 b \t / / d e p o s i t m e m 0057720 o r y \r p t R e s t a r t = 0057740 2 0 3 b \t / / r e s t a r t 0057760 g a t e w a y p r o g r a m \r 0060000 / / 2 0 4 b \t u s e d t o 0060020 b e c h e c k r e s u l t 0060040 o f l a s t s t o r e \r / / 0060060 2 0 5 b u s e d t o b e 0060100 r e s e t t i m e b y b 0060120 r o a d c a s t i n g \r / / 2 0060140 0 6 b \t u s e d t o b e r 0060160 e s e t t i m e 376 001 \0 332 ) f 0060200 r o m a s p e c i f i c p 0060220 o r t \r p t S t a t s = 2 0 0060240 7 b \t \t / / g a t e w a y s 0060260 t a t i s t i c s \r p t A c k 0060300 = 2 1 0 b \t \t / / a c k n o 0060320 w l e d g e p r e v i o u s 0060340 c o m m a n d \r p t N a c k = 0060360 2 1 1 b \t \t / / n e g a t i 0060400 v e a c k n o w l e d g m e n 0060420 t f o r c o m m a n d \r p t 0060440 H a l t = 2 1 2 b \t \t / / 0060460 h a l t g a t e w a y a n d 0060500 d o n ' t r e s t a r t \r p 0060520 t R e t r i e v e = 2 1 3 b 0060540 \t / / r e t r i e v e a f 0060560 i l e f r o m g a t e w 376 001 0060600 \0 $ o a y d i s k \r \r / / s 0060620 t a t u s o f l a s t S t 0060640 o r e \r s t a t u s Y e s = 0060660 - 1 \r s t a t u s B u s y = 0060700 - 2 \r s t a t u s N o = - 3 0060720 \r \r g c S t a t s V e r s i o n 0060740 = 1 \r ] \r \r / / - - - - - - 0060760 - - - - - - - - - - - - - - - - * 0061060 - - - - - - \r s t r u c t u r e 0061100 S t a t s : \t / / G a t e w 0061120 a y S t a t i s t i c s \r / / 0061140 - - - - - - - - - - - - - - - - * 0061200 - - - 376 001 \0 037 O - - - - - - - - 0061220 - - - - - - - - - - - - - - - - * 0061260 - \r [ \r v e r s i o n w o r d 0061300 \t \t / / = g c S t a t s V e 0061320 r s i o n \r s t a r t T i m e ^ 0061340 0 , 1 w o r d \t / / T i m e 0061360 g a t e w a y w a s s t a 0061400 r t e d \r f t p S t a t u s w 0061420 o r d \t \t / / s t a t u s o 0061440 f m o s t r e c e n t F T 0061460 P \r f r e e P B I s w o r d \t 0061500 \t / / n u m b e r o f f r 0061520 e e p a c k e t b u f f e r 0061540 s \r f r e e P a g e s w o r d 0061560 \t \t / / n u m b e r o f f 0061600 r e e d i s k 376 001 \0 C 313 p a 0061620 g e s \r v e r s i o n T e x t 0061640 w o r d \t / / B C P L s t r 0061660 i n g s t a r t s h e r e \r 0061700 ] \r m a n i f e s t l e n S t 0061720 a t s = o f f s e t S t a 0061740 t s . v e r s i o n T e x t / 1 0061760 6 / / n o t i n c l u d i 0062000 n g s t r i n g \r \r / / - - - 0062020 - - - - - - - - - - - - - - - - * 0062120 - - - - - - - - - \r s t r u c t 0062140 u r e G C S : \t \t / / ' g l 0062160 o b a l f r a m e ' f o r 0062200 G a t e C o n t r o l S 376 001 \0 0062220 177 273 e r v e r \r / / - - - - - - 0062240 - - - - - - - - - - - - - - - - * 0062340 - - - - - - \r [ \r s o c w o r 0062360 d \t \t / / - > S e r v e r ' 0062400 s s o c k e t \r s t a t s @ 0062420 S t a t s \r f t p C t x w o r 0062440 d \t \t / / - > P B I u s e 0062460 d a s a c t x o r 0 0062500 i f n o c t x a c t i v e 0062520 \r q u i t C o d e w o r d \t \t 0062540 / / 0 o r d o s . e r r 0062560 R t n c o d e . N o n z e 0062600 r o = > s t o p \r r e s t a 0062620 r t 376 \0 I 363 240 T i m e r w o r 0062640 d \t / / t i m e d e l a y 0062660 b e f o r e s t o p p i n g \r 0062700 ] \r m a n i f e s t l e n G C 0062720 S = s i z e G C S / 1 6 \r 0062740 377 \0 \0 G a t e C o n S e r v . b 0062760 c p l \0 376 001 \0 201 K / / G a t e 0063000 C o n S e r v . b c p l - - 0063020 G a t e w a y c o n t r o l 0063040 s e r v e r \r \r / / L a s t 0063060 m o d i f i e d M a r c h 7 0063100 , 1 9 7 9 4 : 1 1 P M 0063120 b y B o g g s \r \r g e t " P 0063140 u p E F T P . d e c l " \r g e t 0063160 " P u p S e r v F t p . d e c 0063200 l " \r g e t " G a t e C o n S 0063220 e r v . d e c l " \r \r e x t e r 0063240 n a l \r [ \r / / o u t g o i n 0063260 g p r o c e d u r e s \r G a t 0063300 e C o n S e r v C t x ; H a l 0063320 t G a t e w a y \r \r / / i n c 0063340 o m i n g p r o c e d u r e s 0063360 \r L o c k N a m e 376 001 \0 215 254 S e 0063400 r v ; U n l o c k N a m e S e 0063420 r v ; G e t T i m e \r L o c k 0063440 B o o t S e r v ; U n l o c k 0063460 B o o t S e r v ; S t r i n g 0063500 C o m p a r e \r G a t e w a y F 0063520 i n i s h ; C h a t r ; P u 0063540 p S e r v R e c e i v e ; P u 0063560 p S e r v S e n d \r I n i t i a 0063600 l i z e C o n t e x t ; B l o 0063620 c k \r A l l o c a t e ; F r e 0063640 e ; M o v e B l o c k ; Z e 0063660 r o \r E n q u e u e ; D e q u 0063700 e u e ; U n q u e u e ; Q u 0063720 e u e L e n g t h \r S e t T i m 0063740 e r ; T i m e r H a s E x p i 0063760 r e d \r G e t P B I ; R e 376 001 0064000 \0 u y l e a s e P B I ; C o m 0064020 p l e t e P u p ; S e t P u p 0064040 I D \r E x c h a n g e P o r t s 0064060 ; A p p e n d S t r i n g T o 0064100 P u p \r \r / / o u t g o i n g 0064120 s t a t i c s \r @ g c s \r \r / 0064140 / i n c o m i n g s t a t i 0064160 c s \r s y s Z o n e ; c t x Q 0064200 ; v e r s i o n T e x t ; C 0064220 t x R u n n i n g \r p b i T Q ; 0064240 p b i F r e e Q ; g a t e w 0064260 a y G o i n g D o w n ; l e n 0064300 P u p \r ] \r \r s t a t i c @ g 0064320 c s \r \r m a n i f e s t \r [ \r / 0064340 / D O S . e r t n c o d e 0064360 s \r q u i t = 1 2 3 4 5 \r r 0064400 e s t 376 001 \0 031 231 a r t = 1 0 0064420 0 0 \r ] \r \r s t r u c t u r e 0064440 G C T X : \t \t / / G a t e C o 0064460 n t r o l C T X \r [ \r b l a n 0064500 k w o r d 3 \r p b i w o r 0064520 d \r ] \r m a n i f e s t G C T 0064540 X e x t r a = s i z e G C 0064560 T X / 1 6 - 3 \r \r / / - - - - 0064600 - - - - - - - - - - - - - - - - * 0064700 - - - - - - - \r l e t H a l t 0064720 G a t e w a y ( ) b e \r / / - 0064740 - - - - - - - - - - - - - - - - * 0065000 - - - - - - - - 376 001 \0 G < - - - 0065020 - - - - - - - - - - - - - - - - 0065040 - - - - - - - - - - - - - - - \r 0065060 [ \r g c s > > G C S . q u i t C 0065100 o d e = q u i t \r g a t e w 0065120 a y G o i n g D o w n = t r 0065140 u e \r / / D a l l y f o r 0065160 1 5 s e c o n d s w h i l e 0065200 w e b r o a d c a s t r o 0065220 u t i n g t a b l e s t h a 0065240 t s a y w e a r e \r / / 0065260 a t e r r i b l e r o u t e 0065300 t o e v e r y w h e r e s 0065320 o t h a t p e o p l e c a 0065340 n f i n d w a y s a r o u 0065360 n d u s . \r S e t T i m e r ( 0065400 l v g c s > > G C S . r 376 001 \0 0065420 266 201 e s t a r t T i m e r , 1 0065440 5 0 0 ) \r ] \r \f \r / / - - - - - 0065460 - - - - - - - - - - - - - - - - * 0065560 - - - - - - \r a n d G a t e C 0065600 o n S e r v C t x ( ) b e \r / 0065620 / - - - - - - - - - - - - - - - 0065640 - - - - - - - - - - - - - - - - * 0065720 - - - - - - - - - - - - \r [ \r 0065740 [ / / i d l e l o o 0065760 p \r B l o c k ( ) \r 0066000 i f g c s > > G C S . s t a t 0066020 s . 376 001 \0 8 266 s t a r t T i m e 0066040 ^ 0 e q 0 t h e n \r 0066060 G e t T i m e ( l v g c 0066100 s > > G C S . s t a t s . s t a 0066120 r t T i m e ) \r i f g c 0066140 s > > G C S . f t p C t x n e 0066160 0 & g c s > > G C S . s t 0066200 a t s . f t p S t a t u s n e 0066220 s t a t u s B u s y t h e n 0066240 \r [ \r c 0066260 o m p i l e t e s t n o v a \r 0066300 i f s o [ 0066320 R e l e a s e P B I ( g c s > > 0066340 G C S . f t p C t x - o f f s e 0066360 t P B I . p u p / 1 6 ) ] \r 0066400 i f n o t [ 0066420 F r e e ( s 376 001 \0 | 304 y s Z o 0066440 n e , g c s > > G C S . f t p 0066460 C t x ) ] \r g c s 0066500 > > G C S . f t p C t x = 0 0066520 \r ] \r i f g 0066540 c s > > G C S . q u i t C o d e 0066560 n e 0 & g c s > > G C S 0066600 . f t p C t x e q 0 & \r 0066620 T i m e r H a s E x p i r 0066640 e d ( l v g c s > > G C S . r 0066660 e s t a r t T i m e r ) t h e 0066700 n \r [ \r 0066720 L o c k B o o t S e r v ( ) \r 0066740 L o c k N a m e S e r 0066760 v ( ) \r G a t e w a 0067000 y F i n i s h ( g c s > > G C S 0067020 . q u i t C o d e ) \r 376 001 \0 241 0067040 024 ] \r ] r e p 0067060 e a t u n t i l g c s > > G C 0067100 S . s o c > > P u p S o c . i Q 0067120 . h e a d n e 0 \r \r l e t 0067140 p b i = D e q u e u e ( l v 0067160 g c s > > G C S . s o c > > P 0067200 u p S o c . i Q ) \r i f p b i 0067220 > > P B I . p u p . d P o r t . 0067240 h o s t e q 0 % p b i > 0067260 > P B I . p u p . i d ^ 1 n e 0067300 g c P a s s w o r d t h e n 0067320 \r [ R e l e a s e P B I 0067340 ( p b i ) ; l o o p ] \r E x 0067360 c h a n g e P o r t s ( p b i ) 0067400 / / d o t h i s h e r e 0067420 r a t h e r t h a n i n 0067440 e 376 001 \0 l 223 a c h c a s e \r \r 0067460 s w i t c h o n p b i > > P B 0067500 I . p u p . t y p e i n t o \r 0067520 [ \r c a s e p t E 0067540 x a m i n e : \r [ \r 0067560 / / e x a m i n e 0067600 a b l o c k o f w o r d s 0067620 w h o s e s t a r t i n g 0067640 a d d r e s s \r / / 0067660 a n d l e n g t h a r e g 0067700 i v e n i n t h e f i r s 0067720 t 2 w o r d s o f t h e 0067740 \r / / r e q u e s t 0067760 P u p . r e t u r n t h 0070000 e b l o c k s t a r t i n g 0070020 i n w o r d 3 . \r 0070040 M o v e 376 001 \0 236 343 B l o c k 0070060 ( l v p b i > > P B I . p u p 0070100 . w o r d s ^ 3 , p b i > > P 0070120 B I . p u p . w o r d s ^ 1 , \r 0070140 p b i > > P B I . 0070160 p u p . w o r d s ^ 2 ) \r 0070200 C o m p l e t e P u p ( p 0070220 b i , p t A c k , p b i > > 0070240 P B I . p u p . w o r d s ^ 2 0070260 l s h i f t 1 + p u p O v 0070300 B y t e s + 4 ) \r e 0070320 n d c a s e \r ] \r 0070340 c a s e p t D e p o s i t 0070360 : \r [ \r 0070400 / / d e p o s i t a b l o c 0070420 k o f w o r d s w h o s e 0070440 s t a r t i n g a 376 001 \0 202 334 0070460 d d r e s s \r / / a 0070500 n d l e n g t h a r e g i 0070520 v e n i n t h e f i r s t 0070540 2 w o r d s o f t h e \r 0070560 / / r e q u e s t 0070600 P u p . t h e d a t a s 0070620 t a r t s a t w o r d 3 . 0070640 \r M o v e B l o c k 0070660 ( p b i > > P B I . p u p . w o 0070700 r d s ^ 1 , l v p b i > > P 0070720 B I . p u p . w o r d s ^ 3 , \r 0070740 p b i > > P B I . 0070760 p u p . w o r d s ^ 2 ) \r 0071000 C o m p l e t e P u p ( p 0071020 b i , p t A c k , p u p O v 0071040 B y t e s ) \r e n d 0071060 376 001 \0 ? 246 c a s e \r 0071100 ] \r c a s e p t H a l t 0071120 : \r [ \r 0071140 / / h a l t t h e g a t e w 0071160 a y p r o g r a m \r 0071200 H a l t G a t e w a y ( ) \r 0071220 C o m p l e t e P u p 0071240 ( p b i , p t A c k , p u p 0071260 O v B y t e s ) \r e 0071300 n d c a s e \r ] \r 0071320 c a s e p t R e s t a r t 0071340 : \r [ \r 0071360 / / r e s t a r t t h e G a 0071400 t e w a y p r o g r a m \r 0071420 g c s > > G C S . q u i 0071440 t C o d e = r e s t a r t \r 0071460 376 001 \0 023 354 S e t T i 0071500 m e r ( l v g c s > > G C S . 0071520 r e s t a r t T i m e r , 5 0 0071540 0 ) / / d a l l y f o r 0071560 5 s e c o n d s \r 0071600 C o m p l e t e P u p ( p b i 0071620 , p t A c k , p u p O v B y 0071640 t e s ) \r e n d c a 0071660 s e \r ] \r \f \r / / 0071700 G a t e C o n S e r v ( c o n 0071720 t ' d ) \r \r c a s e p t 0071740 S t o r e : \r / / S 0071760 t o r e a f i l e o n t 0072000 h e g a t e w a y d i s k 0072020 w h o s e n a m e i s g i 0072040 v e n \r / / i n 0072060 t h e P u p c o 376 001 \0 F ? n 0072100 t e n t s . T h e s e r v 0072120 e r r e s p o n d s w i t h 0072140 a n a c k \r / / 0072160 c o n t a i n i n g t h e 0072200 p o r t t o w h i c h t h 0072220 e f i l e s h o u l d b e 0072240 E F T P ' e d . \r c a s 0072260 e p t R e t r i e v e : \r 0072300 / / R e t r i e v e a 0072320 f i l e f r o m t h e g 0072340 a t e w a y d i s k w h o s 0072360 e n a m e i s g i v e n \r 0072400 / / i n t h e 0072420 P u p c o n t e n t s . T 0072440 h e s e r v e r g e n e r a 0072460 t e s n o a c k : i t 376 0072500 001 \0 371 024 j u s t s t a r t s \r 0072520 / / E F T P i n g 0072540 t h e f i l e t o t h e 0072560 s o u r c e p o r t o f 0072600 t h e i n c o m i n g p a c 0072620 k e t . \r [ \r 0072640 i f g c s > > G C S . f 0072660 t p C t x e q 0 & g c s 0072700 > > G C S . q u i t C o d e e 0072720 q 0 t h e n \r 0072740 [ \r l e t 0072760 c t x = a l t o ? A l l 0073000 o c a t e ( s y s Z o n e , 1 0073020 2 0 0 , t r u e ) , v a l o 0073040 f \r [ \r 0073060 l e t 0073100 p b i 376 001 \0 245 227 = G e t P B 0073120 I ( g c s > > G C S . s o c , 0073140 t r u e ) \r 0073160 r e s u l t i s p b i e 0073200 q 0 ? 0 , l v p b i > > 0073220 P B I . p u p \r 0073240 ] \r i 0073260 f c t x n e 0 t h e n \r 0073300 [ \r 0073320 g c s > > G 0073340 C S . f t p C t x = c t x \r 0073360 g c s > 0073400 > G C S . s t a t s . f t p S t 0073420 a t u s = s t a t u s B u s 0073440 y \r c t 0073460 x > > G C T X . p b i = p b 0073500 i \r 376 001 \0 240 354 0073520 f o r i = p b i > > 0073540 P B I . p u p . l e n g t h - p 0073560 u p O v B y t e s t o 1 b 0073600 y - 1 d o \r 0073620 p b i > > P B I . 0073640 p u p . b y t e s ^ ( i + 1 ) 0073660 = p b i > > P B I . p u p . b 0073700 y t e s ^ i \r 0073720 p b i > > P B I . p u p . 0073740 b y t e s ^ 1 = p b i > > P 0073760 B I . p u p . l e n g t h - p u 0074000 p O v B y t e s \r 0074020 E n q u e u e ( c t x 0074040 Q , I n i t i a l i z e C o n 0074060 t e x t ( c t x , ( a l t o ? 0074100 1 2 0 0 , l e n P u p ) 376 001 0074120 \0 E 314 , \r 0074140 ( p b i > > P B I . p u p . 0074160 t y p e e q p t S t o r e ? 0074200 G C S S t o r e , G C S R e 0074220 t r i e v e ) , \r 0074240 G C T X e x t r a ) 0074260 ) \r e n 0074300 d c a s e \r 0074320 ] \r ] \r 0074340 R e l e a s e P B I ( 0074360 p b i ) \r e n d c a 0074400 s e \r ] \r c a 0074420 s e p t S t a t s : \r 0074440 [ \r l e t s t 0074460 a t s = l v p b i > > P B 0074500 I . p u p . w o r d s \r 0074520 M 376 001 \0 322 , o v e B l o c k 0074540 ( s t a t s , l v g c s > > 0074560 G C S . s t a t s , l e n S t 0074600 a t s ) \r s t a t s 0074620 > > S t a t s . f r e e P B I s 0074640 = Q u e u e L e n g t h ( p 0074660 b i F r e e Q ) \r l 0074700 e t l e n V e r s i o n T e x 0074720 t = v e r s i o n T e x t > 0074740 > S t r i n g . l e n g t h r 0074760 s h i f t 1 + 1 \r 0075000 M o v e B l o c k ( l v s t 0075020 a t s > > S t a t s . v e r s i 0075040 o n T e x t , v e r s i o n T 0075060 e x t , l e n V e r s i o n T 0075100 e x t ) \r C o m p l 0075120 e t e P u p ( p 376 001 \0 E E b i , 0075140 p t A c k , p u p O v B y t 0075160 e s + ( l e n S t a t s + l e n 0075200 V e r s i o n T e x t ) * 2 ) \r 0075220 e n d c a s e \r 0075240 ] \r d e f a u l t 0075260 : \r R e l e a s e P 0075300 B I ( p b i ) \r ] \r ] r 0075320 e p e a t \r \f \r / / - - - - - - 0075340 - - - - - - - - - - - - - - - - * 0075440 - - - - - \r a n d G C S S t o 0075460 r e ( c t x ) b e \r / / - - - 0075500 - - - - - - - - - - - - - - - - 0075520 - - - - - - - - - - - - - 376 001 \0 0075540 030 4 - - - - - - - - - - - - - - 0075560 - - - - - - - - - - - - - - - - 0075600 - - - - - - - - - - - - - \r / / 0075620 A s e p a r a t e c o n t 0075640 e x t t h a t d o e s t h 0075660 e f i l e t r a n s f e r . 0075700 \r / / I t s i g n a l s t 0075720 h a t i t i s d o n e b 0075740 y c h a n g i n g g c s > > 0075760 G C S . s t a t s . f t p S t a 0076000 t u s \r / / t o a n y t h 0076020 i n g o t h e r t h a n s 0076040 t a t u s B u s y . \r [ \r l e t 0076060 p b i = c t x > > G C T X 0076100 . p b i \r l e t f t p = v 0076120 e c l e n F T P ; Z e r o ( 0076140 f t 376 001 \0 315 , p , l e n F T P 0076160 ) \r f t p > > F T P . f r n P o 0076200 r t = l v p b i > > P B I 0076220 . p u p . d P o r t \r Z e r o ( 0076240 l v p b i > > P B I . p u p . 0076260 s P o r t . s o c k e t , 2 ) 0076300 / / l e t O p e n L e v e 0076320 l 1 S o c k e t p i c k t h 0076340 e s o c k e t \r f t p > > F T 0076360 P . l c l P o r t = l v p 0076400 b i > > P B I . p u p . s P o r 0076420 t / / b u t u s e n e t 0076440 , h o s t i n r e q u e s t 0076460 p u p \r f t p > > F T P . r e 0076500 a l N a m e = l v p b i > 0076520 > P B I . p u p . b y t e s \r f 0076540 t p > > F T P 376 001 \0 320 Y . t e m 0076560 p N a m e = " T E M P . G C 0076600 " \r f t p > > F T P . t i m e O 0076620 u t 1 = 1 0 0 \r f t p > > F 0076640 T P . t i m e O u t 2 = 2 0 0076660 0 0 / / 2 0 s e c o n d s 0076700 \r f t p > > F T P . p r o c 1 0076720 = G a t e C o n S t a r t \r f 0076740 t p > > F T P . p r o c 2 = 0076760 G a t e C o n E n d \r \r l e t 0077000 s t a t u s = P u p S e r v 0077020 R e c e i v e ( f t p ) ? s t 0077040 a t u s Y e s , s t a t u s N 0077060 o \r i f s t a t u s e q s 0077100 t a t u s Y e s t h e n \r 0077120 [ \r U n l o c k B o o t 0077140 S e r v ( l v p b i > 376 001 \0 317 0077160 316 > P B I . p u p . b y t e s ) 0077200 \r U n l o c k N a m e S e 0077220 r v ( ) \r ] \r \r R e l e a 0077240 s e P B I ( p b i ) \r U n q u e 0077260 u e ( c t x Q , c t x ) \r g c 0077300 s > > G C S . s t a t s . f t p 0077320 S t a t u s = s t a t u s 0077340 / / s i g n a l t h a t w 0077360 e a r e d o n e \r / / r e 0077400 t u r n i n g f r o m a c 0077420 o n t e x t c a u s e s a n 0077440 i m p l i c i t B l o c k ( 0077460 ) \r ] \r \r / / - - - - - - - - - 0077500 - - - - - - - - - - - - - - - - * 0077560 - 376 001 \0 / H - - - - - - - - - - 0077600 - - - - - - - \r a n d G a t e 0077620 C o n S t a r t ( s o c ) b e 0077640 \r / / - - - - - - - - - - - - - 0077660 - - - - - - - - - - - - - - - - * 0077740 - - - - - - - - - - - - - - \r / 0077760 / T h i s i s w h e r e 0100000 t h e a c k c o n t a i n i 0100020 n g t h e E F T P p o r t 0100040 g e t s g e n e r a t e d . 0100060 \r [ \r l e t p b i = G e t 0100100 P B I ( s o c , t r u e ) ; 0100120 i f p b i n e 0 t h e n 0100140 \r [ \r S e t P u p I 0100160 D ( p b i , 376 001 \0 357 M l v C 0100200 t x R u n n i n g > > G C T X . 0100220 p b i > > P B I . p u p . i d ) 0100240 \r M o v e B l o c k ( l v 0100260 p b i > > P B I . p u p . w o 0100300 r d s , l v s o c > > P u p 0100320 S o c . l c l P o r t , l e n 0100340 P o r t ) \r C o m p l e t 0100360 e P u p ( p b i , p t A c k , 0100400 p u p O v B y t e s + l e n P 0100420 o r t * 2 ) \r ] \r ] \r \r / 0100440 / - - - - - - - - - - - - - - - 0100460 - - - - - - - - - - - - - - - - * 0100540 - - - - - - - - - - - - \r a n d 0100560 G a t e C o n E n d 376 001 \0 * 335 0100600 ( s t r e a m ) b e \r / / - - 0100620 - - - - - - - - - - - - - - - - * 0100720 - - - - - - - - - \r [ \r c o m p 0100740 i l e i f n o v a t h e n \r 0100760 [ \r l e t f n = 0101000 l v C t x R u n n i n g > > 0101020 G C T X . p b i > > P B I . p u 0101040 p . b y t e s \r i f S t 0101060 r i n g C o m p a r e ( f n , 0101100 " . S V " , f n > > S t r i n 0101120 g . l e n g t h - 2 ) e q 0 0101140 t h e n \r C h a t 0101160 r ( s t r e a m , 2 0 0 0 0 b 0101200 376 001 \0 034 333 ) / / s e t " 0101220 S " a t t r i b u t e f o r 0101240 . S V f i l e \r ] \r L 0101260 o c k B o o t S e r v ( ) \r L o 0101300 c k N a m e S e r v ( ) \r ] \r \r 0101320 / / - - - - - - - - - - - - - - 0101340 - - - - - - - - - - - - - - - - * 0101420 - - - - - - - - - - - - - \r a n 0101440 d G C S R e t r i e v e ( c t 0101460 x ) b e \r / / - - - - - - - - 0101500 - - - - - - - - - - - - - - - - * 0101600 - - - \r / 376 001 \0 240 Z / A s e 0101620 p a r a t e c o n t e x t t 0101640 h a t d o e s t h e f i l 0101660 e t r a n s f e r . \r / / I 0101700 t s i g n a l s t h a t i 0101720 t i s d o n e b y c h a 0101740 n g i n g g c s > > G C S . s 0101760 t a t s . f t p S t a t u s \r / 0102000 / t o a n y t h i n g o 0102020 t h e r t h a n s t a t u s 0102040 B u s y . \r [ \r l e t p b i 0102060 = c t x > > G C T X . p b i \r 0102100 l e t f t p = v e c l e 0102120 n F T P ; Z e r o ( f t p , 0102140 l e n F T P ) \r f t p > > F T P 0102160 . f r n P o r t = l v p b 0102200 i > > P B I . p u p 376 001 \0 271 201 . 0102220 d P o r t \r Z e r o ( l v p b 0102240 i > > P B I . p u p . s P o r t 0102260 . s o c k e t , 2 ) / / l 0102300 e t O p e n L e v e l 1 S o c 0102320 k e t p i c k t h e s o c 0102340 k e t \r f t p > > F T P . l c l 0102360 P o r t = l v p b i > > P 0102400 B I . p u p . s P o r t / / 0102420 b u t u s e n e t , h o s t 0102440 i n r e q u e s t p u p \r 0102460 f t p > > F T P . r e a l N a m 0102500 e = l v p b i > > P B I . 0102520 p u p . b y t e s \r f t p > > F 0102540 T P . t i m e O u t 1 = 5 0 0102560 0 / / 5 s e c o n d s \r 0102600 f t p > > F T P . t i m e O u 376 0102620 \0 346 F 340 t 2 = 2 0 0 0 / 0102640 / 2 0 s e c o n d s \r \r l e t 0102660 s t a t u s = P u p S e r 0102700 v S e n d ( f t p ) ? s t a t 0102720 u s Y e s , s t a t u s N o \r 0102740 \r R e l e a s e P B I ( p b i ) 0102760 \r U n q u e u e ( c t x Q , c 0103000 t x ) \r g c s > > G C S . s t a 0103020 t s . f t p S t a t u s = s 0103040 t a t u s / / s i g n a l 0103060 t h a t w e a r e d o n e 0103100 \r / / r e t u r n i n g f r 0103120 o m a c o n t e x t c a u 0103140 s e s a n i m p l i c i t 0103160 B l o c k ( ) \r ] \r 377 \0 \0 G a t 0103200 e C o n I n i t . b c p l \0 376 001 0103220 \0 366 315 / / G a t e C o n I n i 0103240 t . b c p l \r \r / / L a s t 0103260 m o d i f i e d F e b r u a r 0103300 y 6 , 1 9 7 9 1 1 : 2 9 0103320 P M b y B o g g s \r \r g e 0103340 t " P u p 0 . d e c l " \r g e 0103360 t " P u p 1 . d e c l " \r g e 0103400 t " G a t e C o n S e r v . d 0103420 e c l " \r \r e x t e r n a l \r [ 0103440 \r / / o u t g o i n g p r o 0103460 c e d u r e s \r C r e a t e G a 0103500 t e C o n S e r v \r \r / / i n 0103520 c o m i n g p r o c e d u r e 0103540 s \r G a t e C o n S e r v C t x 0103560 ; O p e n L e v e l 1 S o c k 0103600 e t ; E n q u e u e \r A l l o 0103620 c a t 376 001 \0 344 5 e ; Z e r o ; 0103640 I n i t i a l i z e C o n t e 0103660 x t \r \r / / i n c o m i n g 0103700 s t a t i c s \r @ g c s \r s y s 0103720 Z o n e ; c t x Q \r ] \r \r m a 0103740 n i f e s t g c s s s = a 0103760 l t o ? 2 0 0 , 1 0 0 / 0104000 / g a t e c o n t r o l s e 0104020 r v e r s t a c k s i z e \r 0104040 \r / / - - - - - - - - - - - - - 0104060 - - - - - - - - - - - - - - - - * 0104140 - - - - - - - - - - - - - - \r l 0104160 e t C r e a t e G a t e C o n 0104200 S e r v ( ) b e \r / / - - - - 0104220 - - - - - - - - 376 001 \0 275 < - - - 0104240 - - - - - - - - - - - - - - - - * 0104320 - - - - - - - - - - - - \r [ \r g 0104340 c s = A l l o c a t e ( s y 0104360 s Z o n e , l e n G C S ) ; 0104400 Z e r o ( g c s , l e n G C S 0104420 ) \r g c s > > G C S . s t a t s 0104440 . v e r s i o n = g c S t a 0104460 t s V e r s i o n \r E n q u e u 0104500 e ( c t x Q , I n i t i a l i 0104520 z e C o n t e x t ( A l l o c a 0104540 t e ( s y s Z o n e , g c s s 0104560 s ) , g c s s s , \r G a t e 0104600 C o n S e r v C t x ) ) \r g c s 0104620 > > G C S . s o c = A 376 \0 a 0104640 020 223 l l o c a t e ( s y s Z o n 0104660 e , l e n P u p S o c ) \r O p 0104700 e n L e v e l 1 S o c k e t ( g 0104720 c s > > G C S . s o c , t a b 0104740 l e [ 0 ; g c S o c k e t 0104760 1 ; g c S o c k e t 2 ] ) \r 0105000 ] \r \r 377 \0 \0 G a t e w a y . c m 0105020 \0 376 \0 302 211 244 G a t e w a y . b c 0105040 p l G a t e w a y I n i t . b 0105060 c p l G a t e F o r w a r d . 0105100 d e c l G a t e F o r w a r d 0105120 . b c p l G a t e F o r I n i 0105140 t . b c p l G a t e P a r a m 0105160 e t e r . b c p l G a t e C o 0105200 n S e r v . d e c l G a t e C 0105220 o n S e r v . b c p l G a t e 0105240 C o n I n i t . b c p l G a t 0105260 e w a y . c m C o m p i l e G 0105300 a t e w a y . c m L o a d G a 0105320 t e w a y . c m 377 \0 \0 C o m p i 0105340 l e G a t e w a y . c m \0 376 \0 254 0105360 234 { B C P L / F G A T E W A Y 0105400 . B C P L ; B C P L / F G A 0105420 T E W A Y I N I T . B C P L ; 0105440 B C P L / F G A T E F O R W A 0105460 R D . B C P L ; B C P L / F 0105500 G A T E F O R I N I T . B C P L 0105520 ; B C P L / F G A T E P A R 0105540 A M E T E R . B C P L ; B C P 0105560 L / F G A T E C O N S E R V . 0105600 B C P L ; B C P L / F G A T 0105620 E C O N I N I T . B C P L \r 377 \0 0105640 \0 L o a d G a t e w a y . c m \0 0105660 376 001 \0 \a k B L D R / L / V 7 0 0105700 0 / W 1 2 0 0 / N B U T I L 0105720 / U D E B U G 3 / I G A T E 0105740 W A Y G A T E F O R W A R D 0105760 G A T E C O N S E R V P U P E 0106000 C H O S E R V P U P M I S C S 0106020 E R V P U P N A M E S E R V 0106040 P U P N A M E C O R E P U P T 0106060 I M E S E R V P U P B O O T S 0106100 E R V P U P S E R V F T P E 0106120 T H E R B O O T P U P E F T P 0106140 P U P 1 O P E N C L O S E P 0106160 U P 1 B P U P N V 1 A P U P 0106200 R O U T E P U P S T A T S E R 0106220 V P U P N V E T H B P U P N 0106240 V E T H A P U P N V I M P B 0106260 P U P N V 376 001 \0 234 # I M P A P 0106300 U P N V S L A B P U P N V S L 0106320 A A N V C O N T E X T N V C 0106340 O N T E X T I N I T N V D O S 0106360 I N T B N V D O S I N T A N 0106400 O V A D O S B N O V A D O S A 0106420 N O V A A L T O B N O V A A 0106440 L T O A N O V A T T Y N V R 0106460 I N G B Y T E S A L L O C N 0106500 O V A Q U E U E N O V A T I M 0106520 E R G A T E W A Y I N I T G 0106540 A T E F O R I N I T G A T E C 0106560 O N I N I T G A T E P A R A M 0106600 E T E R P U P 1 I N I T P U 0106620 P N V E T H I N I T P U P N V 0106640 I M P I N I T P U P N V S L A 0106660 I N I T P U P E C 376 \0 7 k s H 0106700 O I N I T P U P M I S C I N I 0106720 T P U P N A M E I N I T P U 0106740 P T I M E I N I T P U P B O O 0106760 T I N I T \r 374 0106767