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