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