$ 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