$ od -c -N 50000 [Indigo]<Alto-1822>PupTest.dm!1
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 233 m K 307 \0 \0 376 001 \0 247 337 / /
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 A u g u
0021660 s t 1 9 , 1 9 8 3 2 : 2
0021700 7 P M b y T a f t \r \r g e
0021720 t " P u p 0 . d e c l " \r g e
0021740 t " P u p 1 . d e c l " \r g e
0021760 t " P u p T e s t . d e c l "
0022000 \r g e t " S t r e a m s . d "
0022020 \r g e t " A l t o D e f s . d
0022040 " \r \r e x t e r n a l \r [ \r / /
0022060 o u t g o i n g p r o c e d
0022100 u r e s \r I n i t P u p T e s t
0022120 \r \r / / i n c o m i n g 376 001 \0
0022140 006 213 p r o c e d u r e s \r C r
0022160 e a t e D i s p l a y S t r e a
0022200 m ; S h o w D i s p l a y S t
0022220 r e a m \r C h a r W i d t h ;
0022240 I n v e r t L i n e ; G e t L
0022260 i n e P o s ; S e t B i t P o
0022300 s \r M y F r a m e ; U s c ;
0022320 L o a d R a m ; I n i t B c p
0022340 l R u n t i m e ; S t a r t I
0022360 O ; Z e r o \r P u p C h e c k
0022400 s u m ; U P u p C h e c k s u
0022420 m ; B l o c k E q ; U B l o
0022440 c k E q \r I n i t i a l i z e Z
0022460 o n e ; A d d T o Z o n e ;
0022500 A l l o c a t e ; I d l e \r I
0022520 n i t P u p L e v e l 1 ; E n
0022540 q u 376 001 \0 \r 262 e u e ; I n i t
0022560 i a l i z e C o n t e x t ; B
0022600 l o c k \r D e f a u l t O t h e
0022620 r P u p P r o c ; O t h e r S
0022640 p i g o t ; I n i t S t a t S
0022660 e r v \r B S P R e c e i v e ;
0022700 E F T P R e c e i v e ; E c h
0022720 o S e r v e r ; P u p T e s t
0022740 P a r a m s \r C o m m a n d ;
0022760 R e m o t e C o n t r o l ; O
0023000 t h e r S p i g o t P r o c e s
0023020 s \r P u t T e m p l a t e ; W
0023040 s ; W s s ; C o n f i r m \r
0023060 \r / / o u t g o i n g s t a
0023100 t i c s \r s e n d P o r t ; t
0023120 p ; c h e c k B u f f e r \r s
0023140 a v e d F i n 376 001 \0 213 311 i s h ;
0023160 s p i g o t Q ; c t x Q ;
0023200 b o o t F l a g \r s p y B u f f
0023220 e r ; s y s Z o n e ; d s p
0023240 \r \r / / i n c o m i n g s t
0023260 a t i c s \r P u p T e s t F i n
0023300 i s h ; m a x P u p D a t a B
0023320 y t e s \r l v U s e r F i n i s
0023340 h P r o c ; s y s F o n t ;
0023360 P u p T e s t I m p M c \r ] \r \r
0023400 m a n i f e s t \r [ \r s t k L i
0023420 m = # 3 3 5 \r b l a c k =
0023440 - 1 \r w h i t e = 0 \r ] \r
0023460 \r s t a t i c \r [ \r l a s t S h
0023500 o w n S t r e a m ; s a v e d
0023520 S w a t C P \r s p y B u f f e r
0023540 ; s y s Z o n e ; d 376 001 \0 320
0023560 m s p \r s e n d P o r t ; t p
0023600 ; c h e c k B u f f e r \r s a
0023620 v e d F i n i s h ; s p i g o
0023640 t Q ; c t x Q ; b o o t F l
0023660 a g \r ] \r \r s t r u c t u r e
0023700 B y t e ^ 0 , 0 b y t e \r \f \r
0023720 / / - - - - - - - - - - - - - -
0023740 - - - - - - - - - - - - - - - -
*
0024020 - - - - - - - - - - - - - - \r l
0024040 e t I n i t P u p T e s t ( )
0024060 b e \r / / - - - - - - - - - -
0024100 - - - - - - - - - - - - - - - -
*
0024160 - 376 001 \0 O 005 - - - - - - - - - -
0024200 - - - - - - - \r [ \r b o o t F l
0024220 a g = P u p T e s t P a r a
0024240 m s e q 0 / / h a c k .
0024260 . . s h o u l d b e d o n e
0024300 i n a c l e a n e r w a
0024320 y \r l e t v e r s i o n T e x
0024340 t = " P u p T e s t o f
0024360 A u g u s t 1 9 , 1 9 8 3 "
0024400 \r \r l e t f r e e B e g i n
0024420 = @ s t k L i m \r @ s t k L i
0024440 m = M y F r a m e ( ) - 1
0024460 0 0 0 \r l e t l e n g t h =
0024500 @ s t k L i m - f r e e B
0024520 e g i n \r l e t l e n I n i t
0024540 = l e n g t h l s 0 ?
0024560 # 7 7 7 7 7 376 001 \0 314 244 , l e n
0024600 g t h \r s y s Z o n e = I n
0024620 i t i a l i z e Z o n e ( f r e
0024640 e B e g i n , l e n I n i t )
0024660 \r f r e e B e g i n = f r e
0024700 e B e g i n + l e n I n i t
0024720 \r l e n g t h = l e n g t h
0024740 - l e n I n i t \r i f l e
0024760 n g t h g r 1 0 t h e n
0025000 A d d T o Z o n e ( s y s Z o n
0025020 e , f r e e B e g i n , l e
0025040 n g t h ) \r \r / / N o w l o a
0025060 d t h e m i c r o c o d e \r
0025100 i f L o a d R a m ( P u p T e
0025120 s t I m p M c , t r u e ) e
0025140 q 0 t h e n \r [ \r
0025160 I n i t B c p l R u 376 001 \0 223 J
0025200 n t i m e ( ) \r P u p C h
0025220 e c k s u m = U P u p C h e
0025240 c k s u m \r B l o c k E q
0025260 = U B l o c k E q \r ]
0025300 \r \r / / S e t u p t h e d
0025320 i s p l a y \r l a s t S h o w n
0025340 S t r e a m = M a k e B a r
0025360 ( w h i t e , 2 4 ) \r S h o w
0025400 D i s p l a y S t r e a m ( l a
0025420 s t S h o w n S t r e a m , D
0025440 S a l o n e ) \r S h o w D i s p
0025460 l a y S t r e a m ( M a k e B a
0025500 r ( w h i t e , 1 ) , D S b
0025520 e l o w , l a s t S h o w n S
0025540 t r e a m ) \r l e t l e n D S
0025560 = l D C B + 3 8 * ( ( s
0025600 376 001 \0 252 255 y s F o n t ! - 2 +
0025620 1 ) & - 2 ) + 1 \r l e t
0025640 t i t l e = C r e a t e D i
0025660 s p l a y S t r e a m ( 1 , A l
0025700 l o c a t e ( s y s Z o n e , l
0025720 e n D S ) , l e n D S , s y s F
0025740 o n t ) \r W s s ( t i t l e ,
0025760 v e r s i o n T e x t ) \r S e t
0026000 B i t P o s ( t i t l e , 4 5
0026020 0 ) \r P u t T e m p l a t e ( t
0026040 i t l e , " A l t o $ U O #
0026060 " , S t a r t I O ( 0 ) &
0026100 # 3 7 7 ) \r I n v e r t L i n e
0026120 ( t i t l e , G e t L i n e P
0026140 o s ( t i t l e ) ) \r G C S h o
0026160 w D i s p l a y S t r e a m ( M
0026200 a k e B a 376 001 \0 006 Y r ( b l a c
0026220 k , 2 ) ) \r G C S h o w D i s
0026240 p l a y S t r e a m ( t i t l e
0026260 ) \r G C S h o w D i s p l a y S
0026300 t r e a m ( M a k e B a r ( b l
0026320 a c k , 1 ) ) \r d s p = C
0026340 r e a t e D i s p l a y S t r e
0026360 a m ( 2 0 , A l l o c a t e (
0026400 s y s Z o n e , 7 0 0 0 ) ,
0026420 7 0 0 0 , s y s F o n t ) \r G
0026440 C S h o w D i s p l a y S t r e
0026460 a m ( d s p ) \r G C S h o w D i
0026500 s p l a y S t r e a m ( M a k e
0026520 B a r ( b l a c k , 1 ) ) \r \r
0026540 / / m o r e i n i t i a l i z
0026560 a t i o n ! \r s a v e d F i n i
0026600 s h = @ l v U s 376 001 \0 7 j e
0026620 r F i n i s h P r o c \r @ l v U
0026640 s e r F i n i s h P r o c =
0026660 P u p T e s t F i n i s h \r s p
0026700 y B u f f e r = A l l o c a
0026720 t e ( s y s Z o n e , 1 0 0 0
0026740 ) \r s e n d P o r t = A l l
0026760 o c a t e ( s y s Z o n e , l
0027000 e n P o r t ) \r c t x Q = A
0027020 l l o c a t e ( s y s Z o n e ,
0027040 2 ) ; c t x Q ! 0 = 0 \r
0027060 I d l e = B l o c k \r s p i
0027100 g o t Q = A l l o c a t e (
0027120 s y s Z o n e , 2 ) ; s p i
0027140 g o t Q ! 0 = 0 \r D e f a u
0027160 l t O t h e r P u p P r o c =
0027200 O t h e r S p i g o t \r I n 376
0027220 001 \0 u w i t P u p L e v e l 1 (
0027240 s y s Z o n e , c t x Q , 0
0027260 ) \r I n i t S t a t S e r v ( s
0027300 y s Z o n e , c t x Q ) \r u n
0027320 l e s s b o o t F l a g d o
0027340 P u p T e s t P a r a m s ( )
0027360 \r t p = A l l o c a t e ( s
0027400 y s Z o n e , l e n T P ) \r c
0027420 h e c k B u f f e r = A l l
0027440 o c a t e ( s y s Z o n e , (
0027460 m a x P u p D a t a B y t e s +
0027500 1 ) / 2 ) \r f o r i = 0
0027520 t o m a x P u p D a t a B y t
0027540 e s - 1 d o c h e c k B u f
0027560 f e r > > B y t e ^ i = i \r
0027600 \r E n q u e u e ( c t x Q , I n
0027620 i t i a 376 001 \0 # z l i z e C o n
0027640 t e x t ( A l l o c a t e ( s y
0027660 s Z o n e , ( a l t o ? 4 0
0027700 0 , 3 0 0 ) ) , \r ( a l t o
0027720 ? 4 0 0 , 3 0 0 ) , C o m
0027740 m a n d ) ) \r E n q u e u e ( c
0027760 t x Q , I n i t i a l i z e C o
0030000 n t e x t ( A l l o c a t e ( s
0030020 y s Z o n e , ( a l t o ? 2
0030040 0 0 , 1 5 0 ) ) , \r ( a l t
0030060 o ? 2 0 0 , 1 5 0 ) , R e
0030100 m o t e C o n t r o l ) ) \r E n
0030120 q u e u e ( c t x Q , I n i t i
0030140 a l i z e C o n t e x t ( A l l
0030160 o c a t e ( s y s Z o n e , (
0030200 a l t o ? 2 0 0 , 1 5 0 ) )
0030220 , \r ( a l t o ? 376 001 \0 232 g 2
0030240 0 0 , 1 5 0 ) , E c h o S e
0030260 r v e r ) ) \r E n q u e u e ( c
0030300 t x Q , I n i t i a l i z e C o
0030320 n t e x t ( A l l o c a t e ( s
0030340 y s Z o n e , ( a l t o ? 2
0030360 0 0 , 1 0 0 ) ) , \r ( a l t
0030400 o ? 2 0 0 , 1 0 0 ) , O t
0030420 h e r S p i g o t P r o c e s s
0030440 ) ) \r E n q u e u e ( c t x Q ,
0030460 I n i t i a l i z e C o n t e x
0030500 t ( A l l o c a t e ( s y s Z o
0030520 n e , ( a l t o ? 4 0 0 ,
0030540 3 0 0 ) ) , \r ( a l t o ? 4
0030560 0 0 , 3 0 0 ) , B S P R e c
0030600 e i v e ) ) \r E n q u e u e ( c
0030620 t x Q , I n i t i a l i z e 376 001
0030640 \0 317 / C o n t e x t ( A l l o c
0030660 a t e ( s y s Z o n e , ( a l
0030700 t o ? 4 0 0 , 3 0 0 ) ) , \r
0030720 ( a l t o ? 4 0 0 , 3 0 0
0030740 ) , E F T P R e c e i v e ) )
0030760 \r ] \r \f \r / / - - - - - - - - -
0031000 - - - - - - - - - - - - - - - -
*
0031100 - - \r a n d G C S h o w D i s
0031120 p l a y S t r e a m ( s t ) b
0031140 e \r / / - - - - - - - - - - - -
0031160 - - - - - - - - - - - - - - - -
*
0031240 - - - 376 001 \0 t 8 - - - - - - - -
0031260 - - - - \r [ \r S h o w D i s p l
0031300 a y S t r e a m ( s t , D S b
0031320 e l o w , l a s t S h o w n S
0031340 t r e a m ) \r l a s t S h o w n
0031360 S t r e a m = s t \r ] \r \r /
0031400 / - - - - - - - - - - - - - - -
0031420 - - - - - - - - - - - - - - - -
*
0031500 - - - - - - - - - - - - \r a n d
0031520 M a k e B a r ( b a c k g r o
0031540 u n d , n L i n e s ) = v
0031560 a l o f \r / / - - - - - - - - -
0031600 - - - - - - - - - - - - - - - -
*
0031640 - - - - - - - - 376 001 \0 263 036 - - -
0031660 - - - - - - - - - - - - - - - -
0031700 - - - - - - - \r [ \r s t r u c t
0031720 u r e B a r : [ f d c b
0031740 w o r d ; l d c b w o r d ;
0031760 @ D C B ] \r m a n i f e s t
0032000 l e n B a r = s i z e B
0032020 a r / 1 6 \r l e t b a r =
0032040 A l l o c a t e ( s y s Z o n e
0032060 , l e n B a r , f a l s e ,
0032100 t r u e ) \r Z e r o ( b a r ,
0032120 l e n B a r ) \r b a r > > B a
0032140 r . f d c b = l v b a r >
0032160 > B a r . n e x t \r b a r > > B
0032200 a r . l d c b = l v b a r
0032220 > > B a r . n e x t \r b a r > >
0032240 B a r . b a c k g r o u n 376 \0 J
0032260 036 272 d = b a c k g r o u n d
0032300 \r b a r > > B a r . w i d t h
0032320 = 0 \r b a r > > B a r . h e i
0032340 g h t = n L i n e s \r r e s
0032360 u l t i s b a r \r ] \r 377 \0 \0 P
0032400 u p T e s t B o o t . b c p l \0
0032420 373 224 024 027 X \0 \0 376 001 \0 D O / / P
0032440 u p T e s t B o o t . b c p l
0032460 - - g r o u n d o u t s o
0032500 m e u n d e f s \r / / C o p
0032520 y r i g h t X e r o x C o r
0032540 p o r a t i o n 1 9 7 9 \r / /
0032560 L a s t m o d i f i e d J
0032600 a n u a r y 6 , 1 9 7 9
0032620 4 : 3 6 P M b y B o g g s
0032640 \r \r e x t e r n a l \r [ \r / / o
0032660 u t g o i n g p r o c e d u r
0032700 e s \r I n i t A l t o C o m P r
0032720 o c ; I n i t A l t o E I A \r
0032740 \r / / o u t g o i n g s t a t
0032760 i c s \r e i a M c L o a d e d ;
0033000 c p M c L o a d e d ; P u p
0033020 T e s t C P M c \r ] \r \r 376 001 \0 R
0033040 266 s t a t i c [ e i a M c L
0033060 o a d e d ; c p M c L o a d e
0033100 d ; P u p T e s t C P M c ]
0033120 \r \r / / - - - - - - - - - - - -
0033140 - - - - - - - - - - - - - - - -
*
0033240 \r l e t I n i t A l t o C o m
0033260 P r o c ( ) b e [ ] \r / /
0033300 - - - - - - - - - - - - - - - -
*
0033400 - - - - - - - - - - - - \r \r / /
0033420 - - - - - - - - - - - - - - - -
0033440 - 376 \0 245 275 256 - - - - - - - - - -
0033460 - - - - - - - - - - - - - - - -
*
0033540 - \r a n d I n i t A l t o E I
0033560 A ( ) b e [ ] \r / / - - -
0033600 - - - - - - - - - - - - - - - -
*
0033700 - - - - - - - - - \r \r 377 \0 \0 P u
0033720 p T e s t B S P . b c p l \0 373 230
0033740 230 c 003 \0 \0 376 001 \0 272 } / / P u p
0033760 T e s t B S P . b c p l - P
0034000 u p p a c k a g e t e s t
0034020 p r o g r a m \r / / C o p y r
0034040 i g h t X e r o x C o r p o
0034060 r a t i o n 1 9 7 9 , 1 9 8
0034100 2 \r / / L a s t m o d i f i
0034120 e d F e b r u a r y 1 5 ,
0034140 1 9 8 2 5 : 2 7 P M b y
0034160 B o g g s \r \r g e t " P u p
0034200 0 . d e c l " \r g e t " P u p
0034220 1 . d e c l " \r g e t " P u p
0034240 R T P . d e c l " \r g e t " P
0034260 u p B S P . d e c l " \r g e t
0034300 " P u p T e s t . d e c l " \r \r
0034320 e x t e r n a l \r [ \r / / o u t
0034340 g o i n g p r o c 376 001 \0 a 310 e
0034360 d u r e s \r B S P R e c e i v e
0034400 ; B S P S e n d \r \r / / i n c
0034420 o m i n g p r o c e d u r e s
0034440 \r Z e r o ; M o v e B l o c k
0034460 ; B l o c k E q \r P u t s ;
0034500 E n d o f s ; C l o s e s ;
0034520 B l o c k ; F r e e ; A l l
0034540 o c a t e \r O p e n L e v e l 1
0034560 S o c k e t ; C l o s e L e v
0034600 e l 1 S o c k e t ; S e t A l
0034620 l o c a t i o n \r O p e n R T P
0034640 S o c k e t ; C l o s e R T P
0034660 S o c k e t ; C o m p u t e T
0034700 h r u p u t \r B S P R e a d B l
0034720 o c k ; B S P W r i t e B l o
0034740 c k ; C r e a t e B S P S t 376
0034760 001 \0 006 3 r e a m \r O p e n P o r
0035000 t ; P u t T e m p l a t e ;
0035020 G e t S t r i n g ; G e t P a
0035040 r t n e r ; W s ; W s s \r \r
0035060 / / i n c o m i n g s t a t i
0035100 c s \r S t a t e ; C m m d ;
0035120 c h e c k s u m s ; c h e c k
0035140 d a t a \r k e y s ; d s p ;
0035160 s y s Z o n e ; p b i C o u n
0035200 t \r c h e c k B u f f e r ; s
0035220 e n d P o r t ; t p ; c t x
0035240 Q \r ] \r \r m a n i f e s t \r [ \r
0035260 s o c k e t B S P T e s t =
0035300 6 \r r e a l T i m e C l o c k
0035320 = 4 3 0 b \r ] \r \r s t r u c t
0035340 u r e B y t e ^ 0 , 0 b y t
0035360 e \r \f \r 376 001 \0 # 304 / / - - - - -
0035400 - - - - - - - - - - - - - - - -
*
0035500 - - - - - - - \r l e t B S P R
0035520 e c e i v e ( ) b e \t / / a
0035540 c o n t e x t \r / / - - - - - -
0035560 - - - - - - - - - - - - - - - -
*
0035660 - - - - - - \r [ \r l e t i n B
0035700 u f f e r = A l l o c a t e
0035720 ( s y s Z o n e , 2 5 6 ) \r l
0035740 e t s o c = v e c l e n
0035760 B S P S o c \r 376 001 \0 < 213 [
0036000 \r O p e n L e v e l 1 S o
0036020 c k e t ( s o c , t a b l e
0036040 [ 0 ; 0 ; s o c k e t B S
0036060 P T e s t ] ) \r l e t
0036100 t o t a l = p b i C o u n t
0036120 / 2 \r S e t A l l o c a t
0036140 i o n ( s o c , t o t a l ,
0036160 t o t a l - 1 , t o t a l - 1
0036200 ) \r s o c > > P u p S o c
0036220 . d o C h e c k s u m = c h
0036240 e c k s u m s \r O p e n R
0036260 T P S o c k e t ( s o c , 0 ,
0036300 m o d e L i s t e n A n d R e
0036320 t u r n ) \r B l o c k ( )
0036340 r e p e a t u n t i l s o c
0036360 > > B S P S o c . s t a t e 376 001
0036400 \0 261 \a e q s t a t e O p e n
0036420 \r l e t s t r = C r
0036440 e a t e B S P S t r e a m ( s o
0036460 c ) \r [ \r
0036500 i f B S P R e a d B l o c k
0036520 ( s t r , i n B u f f e r ,
0036540 0 , 5 1 2 , 1 2 0 0 0 ) l
0036560 s 5 1 2 b r e a k / / 2
0036600 m i n \r i f c h
0036620 e c k d a t a t h e n u n l
0036640 e s s B l o c k E q ( c h e c
0036660 k B u f f e r , i n B u f f e
0036700 r , 2 5 6 ) d o \r
0036720 [ W s ( " * N R c v r
0036740 D a t a C o m p a r e E r
0036760 r o r . " ) ; b r e a k ] \r
0037000 376 001 \0 311 340 ] r e p
0037020 e a t \r C l o s e s ( s t
0037040 r ) \r ] r e p e a t \r ]
0037060 \r \r / / - - - - - - - - - - - -
0037100 - - - - - - - - - - - - - - - -
*
0037200 \r a n d B S P S e n d ( ) b
0037220 e \r / / - - - - - - - - - - - -
0037240 - - - - - - - - - - - - - - - -
*
0037340 \r [ \r W s ( " B S P S e n d .
0037360 " ) \r l e t s o c = v
0037400 e c l e n B S 376 001 \0 b 274 P S o
0037420 c \r t e s t C m m d e q 0
0037440 \r i f n o t [ C m m d
0037460 = 0 ; O p e n L e v e l 1
0037500 S o c k e t ( s o c , 0 , s
0037520 e n d P o r t ) ] \r i f
0037540 s o u n l e s s O p e n P o
0037560 r t ( " R e c e i v e P o r t
0037600 : " , s o c , 0 , s o c
0037620 k e t B S P T e s t ) r e t u
0037640 r n \r l e t t o t a l = p
0037660 b i C o u n t / 2 \r S e t A l l
0037700 o c a t i o n ( s o c , t o t
0037720 a l , t o t a l - 1 , t o t
0037740 a l - 1 ) \r W s ( " - C h e c
0037760 k s u m s " ) ; W s ( c h e
0040000 c k s u m s ? " e n a 376 001 \0
0040020 R " b l e d * N " , " d i s a
0040040 b l e d * N " ) \r s o c > > P u
0040060 p S o c . d o C h e c k s u m
0040100 = c h e c k s u m s \r t e s t
0040120 O p e n R T P S o c k e t ( s
0040140 o c ) \r i f s o W s ( "
0040160 C o n n e c t i o n o p e n .
0040200 ' ! ' = 1 0 , 0 0 0 b
0040220 y t e s * N " ) \r i f n o
0040240 t [ W s ( " F a i l e d . "
0040260 ) ; C l o s e L e v e l 1 S o
0040300 c k e t ( s o c ) ; r e t u r
0040320 n ] \r S t a t e = s t a t
0040340 e B S P \r l e t s t r = C
0040360 r e a t e B S P S t r e a m ( s
0040400 o c ) \r Z e r o ( t p , l e n
0040420 T P 376 001 \0 274 315 ) \r t p > > T P .
0040440 t i m e r = @ r e a l T i m
0040460 e C l o c k \r [ \r u
0040500 n l e s s B S P W r i t e B l
0040520 o c k ( s t r , c h e c k B u
0040540 f f e r , 0 , 5 1 2 ) t h
0040560 e n \r [ W s ( " *
0040600 N B S P W r i t e B l o c k F
0040620 a i l e d " ) ; b r e a k ]
0040640 \r t p > > T P . c o u n t
0040660 = t p > > T P . c o u n t
0040700 + 5 1 2 \r i f t p > >
0040720 T P . c o u n t g e 1 0 0 0
0040740 0 t h e n \r [ \r
0040760 t p > > T P . c o u n
0041000 t = t p > > T P . c o u n t
0041020 - 1 0 0 0 376 001 \0 203 376 0 \r
0041040 P u t s ( d s p , $ !
0041060 ) \r t p > > T P . b
0041100 i g C o u n t = t p > > T P
0041120 . b i g C o u n t + 1 \r
0041140 i f t p > > T P . b i g C
0041160 o u n t e q 5 0 t h e n
0041200 / / 5 0 0 , 0 0 0 b y t e s
0041220 \r [ \r
0041240 C o m p u t e T h r u
0041260 p u t ( t p ) \r
0041300 t p > > T P . b i g C o u n t
0041320 = 0 \r t p
0041340 > > T P . t i m e r = @ r e
0041360 a l T i m e C l o c k \r
0041400 ] \r ] \r
0041420 ] r e p e a t w h 376 \0 222 240
0041440 373 i l e E n d o f s ( k e y s
0041460 ) & s o c > > B S P S o c .
0041500 s t a t e e q s t a t e O p
0041520 e n & C m m d e q 0 \r t
0041540 e s t C l o s e s ( s t r ) \r
0041560 i f s o W s ( " * N C l
0041600 o s e d c l e a n l y " ) \r
0041620 i f n o t W s ( " * N C l
0041640 o s e d u n c l e a n l y " )
0041660 \r ] \r 377 \0 \0 P u p T e s t E F T
0041700 P . b c p l \0 373 230 230 c _ \0 \0 376 001
0041720 \0 8 263 / / P u p T e s t E F T
0041740 P . b c p l - P u p p a c
0041760 k a g e t e s t p r o g r a
0042000 m \r / / C o p y r i g h t X
0042020 e r o x C o r p o r a t i o n
0042040 1 9 7 9 , 1 9 8 2 \r / / L
0042060 a s t m o d i f i e d F e b
0042100 r u a r y 1 5 , 1 9 8 2
0042120 5 : 2 8 P M b y B o g g s
0042140 \r \r g e t " P u p E F T P . d
0042160 e c l " \r g e t " P u p T e s
0042200 t . d e c l " \r \r e x t e r n a
0042220 l \r [ \r / / o u t g o i n g p
0042240 r o c e d u r e s \r E F T P R e
0042260 c e i v e ; E F T P S e n d \r
0042300 \r / / i n c o m i n g p r o c
0042320 e d u 376 001 \0 @ } r e s \r G e t S
0042340 t r i n g ; G e t P a r t n e
0042360 r \r Z e r o ; M o v e B l o c
0042400 k ; B l o c k E q ; B l o c
0042420 k \r P u t s ; E n d o f s ;
0042440 F r e e ; A l l o c a t e \r S
0042460 e t A l l o c a t i o n ; C o
0042500 m p u t e T h r u p u t \r O p e
0042520 n P o r t ; P u t T e m p l a
0042540 t e ; W s ; W s s \r O p e n
0042560 E F T P S o c ; C l o s e E F
0042600 T P S o c ; S e n d E F T P E
0042620 n d \r S e n d E F T P B l o c k
0042640 ; R e c e i v e E F T P B l o
0042660 c k \r \r / / i n c o m i n g s
0042700 t a t i c s \r S t a t e ; C m
0042720 m d ; c h e c 376 001 \0 370 211 k s u
0042740 m s ; c h e c k d a t a \r k e
0042760 y s ; d s p ; s y s Z o n e
0043000 ; p b i C o u n t \r c h e c k
0043020 B u f f e r ; s e n d P o r t
0043040 ; t p \r ] \r \r m a n i f e s t
0043060 r e a l T i m e C l o c k =
0043100 4 3 0 b \r \f \r / / - - - - - -
0043120 - - - - - - - - - - - - - - - -
*
0043220 - - - - - - \r l e t E F T P R
0043240 e c e i v e ( ) b e \t / / a
0043260 c o n t e x t \r / / - - - - - -
0043300 - - - - - - - - - - - - - - - -
0043320 - - - - - - - - - - - - - 376 001 \0
0043340 362 027 - - - - - - - - - - - - - -
0043360 - - - - - - - - - - - - - - - -
0043400 - - - - - - - - - - - \r [ \r l e
0043420 t i n B u f f e r = A l l
0043440 o c a t e ( s y s Z o n e , 2
0043460 5 6 ) \r l e t s o c = v e
0043500 c l e n E F T P S o c \r
0043520 [ \r O p e n E F T P S o c
0043540 ( s o c , t a b l e [ 0 ;
0043560 0 ; s o c k e t E F T P R e
0043600 c e i v e ] , 0 ) \r l
0043620 e t t o t a l = p b i C o
0043640 u n t / 2 \r S e t A l l o
0043660 c a t i o n ( s o c , t o t a
0043700 l , t o t a l - 1 , t o t a
0043720 l - 1 ) \r s o c > > P u p
0043740 S o 376 001 \0 005 216 c . d o C h e c k
0043760 s u m = c h e c k s u m s \r
0044000 w h i l e R e c e i v e
0044020 E F T P B l o c k ( s o c , i
0044040 n B u f f e r , 5 1 2 , - 1
0044060 ) e q 5 1 2 d o \r
0044100 i f c h e c k d a t a t
0044120 h e n u n l e s s B l o c k
0044140 E q ( c h e c k B u f f e r ,
0044160 i n B u f f e r , 2 5 6 ) d
0044200 o \r [ W s (
0044220 " * N R c v r D a t a C o m
0044240 p a r e E r r o r . " ) ; b
0044260 r e a k ] \r C l o s e E
0044300 F T P S o c ( s o c ) \r ]
0044320 r e p e a t \r ] \r \r / / - - -
0044340 - - - - - - - 376 001 \0 375 \0 - - - -
0044360 - - - - - - - - - - - - - - - -
*
0044440 - - - - - - - - - - - - - - \r a
0044460 n d E F T P S e n d ( ) b e
0044500 \r / / - - - - - - - - - - - - -
0044520 - - - - - - - - - - - - - - - -
*
0044600 - - - - - - - - - - - - - - - \r
0044620 [ \r W s ( " E F T P S e n d .
0044640 " ) \r l e t s o c = v
0044660 e c l e n E F T P S o c \r t e
0044700 s t C m m d e q 0 \r
0044720 i f s o \r [ \r
0044740 l e t n a m e 376 001 \0 y
0044760 6 = v e c 4 0 \r
0045000 u n l e s s G e t S t r i n g
0045020 ( " R e c e i v e P o r t :
0045040 " , n a m e , t r u e , f
0045060 a l s e ) r e t u r n \r
0045100 i f G e t P a r t n e r
0045120 ( n a m e , d s p , s e n d
0045140 P o r t , 0 , s o c k e t E
0045160 F T P R e c e i v e ) b r e a
0045200 k \r ] r e p e a t
0045220 \r i f n o t \r
0045240 [ \r s e n d P o r t
0045260 > > P o r t . s o c k e t ^ 1
0045300 = 0 \r s e n d P o
0045320 r t > > P o r t . s o c k e t ^
0045340 2 = s o c k e t E F T P R e
0045360 c 376 001 \0 " 325 e i v e \r
0045400 ] \r O p e n E F T P S o c ( s
0045420 o c , 0 , s e n d P o r t )
0045440 \r l e t t o t a l = p b i
0045460 C o u n t / 2 \r S e t A l l o c
0045500 a t i o n ( s o c , t o t a l
0045520 , t o t a l - 1 , t o t a l
0045540 - 1 ) \r W s ( " - C h e c k s
0045560 u m s " ) ; W s ( c h e c k
0045600 s u m s ? " e n a b l e d .
0045620 * N " , " d i s a b l e d . *
0045640 N " ) \r s o c > > P u p S o c .
0045660 d o C h e c k s u m = c h e
0045700 c k s u m s \r t e s t S e n d
0045720 E F T P B l o c k ( s o c , c
0045740 h e c k B u f f e r , 5 1 2 ,
0045760 1 2 0 0 0 376 001 \0 \v 272 ) e q
0046000 5 1 2 \r i f s o W s ( "
0046020 C o n n e c t i o n o p e n .
0046040 ' ! ' = 1 0 , 0 0 0 b
0046060 y t e s * N " ) \r i f n o
0046100 t [ W s ( " F a i l e d . "
0046120 ) ; C l o s e E F T P S o c (
0046140 s o c ) ; r e t u r n ] \r S
0046160 t a t e = s t a t e E F T P
0046200 \r Z e r o ( t p , l e n T P )
0046220 \r t p > > T P . t i m e r =
0046240 @ r e a l T i m e C l o c k \r
0046260 [ \r i f S e n d E F
0046300 T P B l o c k ( s o c , c h e
0046320 c k B u f f e r , 5 1 2 , 1
0046340 2 0 0 0 ) n e 5 1 2 t h e
0046360 n \r [ W 376 001 \0 024 \a
0046400 s ( " * N S e n d E F T P B l o
0046420 c k F a i l e d " ) ; b r e
0046440 a k ] \r t p > > T P . c
0046460 o u n t = t p > > T P . c o
0046500 u n t + 5 1 2 \r i f
0046520 t p > > T P . c o u n t g e
0046540 1 0 0 0 0 t h e n \r
0046560 [ \r t p > > T P .
0046600 c o u n t = t p > > T P . c
0046620 o u n t - 1 0 0 0 0 \r
0046640 P u t s ( d s p , $ ! ) \r
0046660 t p > > T P . b i g
0046700 C o u n t = t p > > T P . b
0046720 i g C o u n t + 1 \r
0046740 i f t p > > T P . b i g C o u
0046760 n t e q 5 0 t h e n /
0047000 376 001 \0 367 017 / 5 0 0 , 0 0 0 b y
0047020 t e s \r [ \r
0047040 C o m p u t e T
0047060 h r u p u t ( t p ) \r
0047100 t p > > T P . b i g C o
0047120 u n t = 0 \r
0047140 t p > > T P . t i m e r =
0047160 @ r e a l T i m e C l o c k \r
0047200 ] \r
0047220 ] \r ] r e p e a t w h i
0047240 l e E n d o f s ( k e y s )
0047260 & C m m d e q 0 \r t e s t
0047300 S e n d E F T P E n d ( s o c
0047320 , 3 0 0 0 ) \r i f s o
0047340 W s ( " * N C l o s e d c l e
0047360 a n l y " ) \r i f n o t
0047400 W s ( " * 376 \0 ( 035 S N C l o s e
0047420 d u n c l e a n l y " ) \r C l
0047440 o s e E F T P S o c ( s o c ) \r
0047460 ] \r 377 \0 \0 P u p T e s t E c h o
0047500 . b c p l \0 373 230 230 c 247 \0 \0 376 001 \0
0047520 224 253 / / P u p T e s t E c h o
0047540 . b c p l \r / / C o p y r i g
0047560 h t X e r o x C o r p o r a
0047600 t i o n 1 9 7 9 , 1 9 8 2 \r
0047620 / / L a s t m o d i f i e d
0047640 F e b r u a r y 1 5 , 1 9
0047660 8 2 5 : 3 0 P M b y B
0047700 o g g s \r \r g e t " P u p 0 .
0047720 d e c l " \r g e t " P u p 1 .
0047740 d e c l " \r g e t " P u p T e
0047760 s t . d e c l " \r \r e x t e r n
0050000 a l \r [ \r / / o u t g o i n g
0050020 p r o c e d u r e s \r E c h o S
0050040 e r v e r ; E c h o U s e r \r
0050060 \r / / i n c o m i n g p r o c
0050100 e d u r e s \r P u t s ; E n d
0050120 o f 376 001 \0 370 036 s ; M o v e B l
0050140 o c k ; Z e r o \r G e t P B I
0050160 ; R e l e a s e P B I ; E x
0050200 c h a n g e P o r t s ; H L o
0050220 o k u p \r O p e n L e v e l 1 S
0050240 o c k e t ; C o m p l e t e P
0050260 u p ; C l o s e L e v e l 1 S
0050300 o c k e t \r S e t T i m e r ;
0050320 T i m e r H a s E x p i r e d ;
0050340 E n q u e u e ; D e q u e u
0050360 e ; B l o c k \r O t h e r S p
0050400 i g o t ; P r i n t P o r t ;
0050420 O p e n P o r t \r D i v i d e
0050440 3 2 x 1 6 ; B l o c k E q ;
0050460 D o u b l e I n c r e m e n t \r
0050500 P u t T e m p l a t e ; W s \r
0050520 \r / / i n c o 376 001 \0 341 M m i n g
0050540 s t a t i c s \r d s p ; k e
0050560 y s \r p u p R T ; m a x P u p
0050600 D a t a B y t e s \r C m m d ;
0050620 c h e c k s u m s ; c h e c k
0050640 d a t a ; s e n d P o r t ;
0050660 c h e c k B u f f e r \r ] \r \r m
0050700 a n i f e s t \r [ \r s o c k e t
0050720 E c h o = 5 \r t y p e E c h
0050740 o M e = 1 \r t y p e I m A n
0050760 E c h o = 2 \r ] \r \r s t r u
0051000 c t u r e B y t e ^ 0 , 0 b
0051020 y t e \r \f \r / / - - - - - - - -
0051040 - - - - - - - - - - - - - - - -
*
0051120 - - - - - - - - - - - - 376 001 \0 202
0051140 \b - - - - - - - - \r l e t E c
0051160 h o S e r v e r ( ) b e \t / /
0051200 a c o n t e x t \r / / - - - -
0051220 - - - - - - - - - - - - - - - -
*
0051320 - - - - - - - - \r [ \r l e t s
0051340 e r v e r S o c = v e c l
0051360 e n P u p S o c \r O p e n L e v
0051400 e l 1 S o c k e t ( s e r v e r
0051420 S o c , t a b l e [ 0 ;
0051440 0 ; s o c k e t E c h o ] )
0051460 \r [ \r B l o c k ( )
0051500 r e p e a t u n t i l s e r
0051520 v e r S o c > > P u p S o c . i
0051540 Q 376 001 \0 T 365 . h e a d n e 0
0051560 \r l e t p b i = D e
0051600 q u e u e ( l v s e r v e r S
0051620 o c > > P u p S o c . i Q ) \r
0051640 t e s t p b i > > P B I .
0051660 p u p . t y p e e q t y p e
0051700 E c h o M e \r i f n
0051720 o t O t h e r S p i g o t ( p
0051740 b i ) \r i f s o \r
0051760 [ \r
0052000 E x c h a n g e P o r t s
0052020 ( p b i ) \r /
0052040 / c o m p u t e c h e c k s u
0052060 m o n o u t g o i n g p a
0052100 c k e t \r / /
0052120 i f i n c o m i n g p a c
0052140 k e t c o 376 001 \0 304 264 m p u t e
0052160 d i t . \r s
0052200 e r v e r S o c > > P u p S o c
0052220 . d o C h e c k s u m = \r
0052240 p b i ! ( l e n
0052260 P B I O v e r h e a d + ( p b i
0052300 > > P B I . p u p . l e n g t h
0052320 - 1 ) r s h i f t 1 ) n e
0052340 - 1 \r C o m
0052360 p l e t e P u p ( p b i , t y
0052400 p e I m A n E c h o ) \r
0052420 s e r v e r S o c > >
0052440 P u p S o c . d o C h e c k s u
0052460 m = t r u e \r
0052500 P u t s ( d s p , $ $ ) \r
0052520 ] \r ]
0052540 r e p e a t \r ] \r \r / 376 001 \0 273 263
0052560 / - - - - - - - - - - - - - - -
0052600 - - - - - - - - - - - - - - - -
*
0052660 - - - - - - - - - - - - - \r a n
0052700 d E c h o U s e r ( ) b e \r
0052720 / / - - - - - - - - - - - - - -
0052740 - - - - - - - - - - - - - - - -
*
0053020 - - - - - - - - - - - - - - \r [
0053040 \r l e t u s e r S o c = v
0053060 e c l e n P u p S o c \r t e s
0053100 t C m m d e q 0 \r i
0053120 f n o t [ C m m d = 0 ;
0053140 O p e n L e v e l 1 S o c k e
0053160 376 001 \0 M 267 t ( u s e r S o c ,
0053200 0 , s e n d P o r t ) ] \r
0053220 i f s o u n l e s s O p
0053240 e n P o r t ( " E c h o t o :
0053260 " , u s e r S o c , 0 ,
0053300 s o c k e t E c h o ) r e t u
0053320 r n \r \r W s ( " - C h e c k s
0053340 u m s " ) ; W s ( c h e c k
0053360 s u m s ? " e n a b l e d "
0053400 , " d i s a b l e d " ) \r W s
0053420 ( " , D a t a c h e c k i n
0053440 g " ) ; W s ( c h e c k d a
0053460 t a ? " e n a b l e d * N " ,
0053500 " d i s a b l e d * N " ) \r u
0053520 s e r S o c > > P u p S o c . d
0053540 o C h e c k s u m = c h e c
0053560 k s u m s 376 001 \0 365 342 \r \r P r i n
0053600 t P o r t ( l v u s e r S o c
0053620 > > P u p S o c . l c l P o r t
0053640 ) ; W s ( " - > " ) \r l e
0053660 t r t e = H L o o k u p (
0053700 p u p R T , u s e r S o c > >
0053720 P u p S o c . f r n P o r t . n
0053740 e t ) \r i f r t e n e 0
0053760 & r t e > > R T E . h o p s
0054000 n e 0 t h e n \r P u t
0054020 T e m p l a t e ( d s p , " [
0054040 $ U O # $ U O # ] - > " , \r
0054060 r t e > > R T E . n d b
0054100 > > N D B . l o c a l N e t ,
0054120 r t e > > R T E . h o s t ) \r P
0054140 r i n t P o r t ( l v u s e r
0054160 S o c > > P u p S o 376 001 \0 \f 020 c
0054200 . f r n P o r t ) \r \r l e t o
0054220 u t = v e c 6 ; Z e r o
0054240 ( o u t , 6 ) \r l e t i n ,
0054260 i n T i m e s 1 0 0 = o u
0054300 t + 2 , o u t + 4 \r l e t n
0054320 u m D a t a B y t e s , n u m
0054340 D a t a W o r d s , p u p i d
0054360 = m a x P u p D a t a B y t
0054400 e s , 0 , 0 \r \r w h i l e
0054420 E n d o f s ( k e y s ) & C
0054440 m m d e q 0 d o \r [
0054460 \r l e t p b i = G e
0054500 t P B I ( u s e r S o c ) \r
0054520 / / p a c k e t s g e t l
0054540 o n g e r b y 1 b y t e
0054560 e a c h t i m e . \r n 376
0054600 001 \0 205 271 u m D a t a B y t e s
0054620 = n u m D a t a B y t e s +
0054640 1 \r i f n u m D a t a B
0054660 y t e s g r m a x P u p D a
0054700 t a B y t e s t h e n n u m
0054720 D a t a B y t e s = 0 \r
0054740 n u m D a t a W o r d s =
0054760 ( n u m D a t a B y t e s + 1
0055000 ) / 2 \r p u p i d = p
0055020 u p i d + 1 \r p b i > >
0055040 P B I . p u p . i d ^ 1 = 0
0055060 \r p b i > > P B I . p u p
0055100 . i d ^ 2 = p u p i d \r
0055120 M o v e B l o c k ( l v p b
0055140 i > > P B I . p u p . b y t e s
0055160 , c h e c k B u f f e r , n
0055200 u m D a 376 001 \0 227 366 t a W o r d s
0055220 ) \r C o m p l e t e P u p
0055240 ( p b i , t y p e E c h o M e
0055260 , n u m D a t a B y t e s + p
0055300 u p O v B y t e s ) \r D o
0055320 u b l e I n c r e m e n t ( o u
0055340 t ) \r \r l e t t i
0055360 m e O u t = n i l ; S e t
0055400 T i m e r ( l v t i m e O u t
0055420 , 1 5 0 ) / / 1 . 5 s e
0055440 c o n d s \r [ \r
0055460 B l o c k ( ) r e p e
0055500 a t u n t i l u s e r S o c >
0055520 > P u p S o c . i Q . h e a d
0055540 % \r T i m e r H a
0055560 s E x p i r e d ( l v t i m e
0055600 O u t ) \r 376 001 \0 211 263
0055620 p b i = D e q u e u e ( l v
0055640 u s e r S o c > > P u p S o c
0055660 . i Q ) \r i f p b
0055700 i e q 0 t h e n [ P u
0055720 t s ( d s p , $ ? ) ; b r e
0055740 a k ] \r i f p b
0055760 i > > P B I . p u p . t y p e
0056000 n e t y p e I m A n E c h o
0056020 t h e n \r [
0056040 O t h e r S p i g o t ( p b i )
0056060 ; l o o p ] \r D
0056100 o u b l e I n c r e m e n t ( i
0056120 n ) ; D o u b l e I n c r e m
0056140 e n t ( i n T i m e s 1 0 0 ,
0056160 1 0 0 ) \r / / n o t
0056200 e t h a t i f t h e r 376 001
0056220 \0 303 @ e i s a ' g a r b a
0056240 g e ' b y t e a t t h e
0056260 e n d o f t h e p a c k e
0056300 t , \r / / i t h
0056320 a s a k n o w n v a l u e
0056340 a n d w e c h e c k i t
0056360 . \r i f c h e c k
0056400 d a t a & n u m D a t a B y
0056420 t e s g r 0 t h e n \r
0056440 u n l e s s B l
0056460 o c k E q ( c h e c k B u f f e
0056500 r , l v p b i > > P B I . p
0056520 u p . b y t e s , n u m D a t
0056540 a W o r d s ) d o \r
0056560 W s ( " D a t a
0056600 c o m p a r e e r r o r * N "
0056620 ) \r 376 001 \0 321 \v t e s
0056640 t p b i > > P B I . p u p . i
0056660 d ^ 2 e q p u p i d \r
0056700 i f n o t [ P u
0056720 t s ( d s p , $ # ) ; R e l
0056740 e a s e P B I ( p b i ) ] \r
0056760 i f s o [ P
0057000 u t s ( d s p , $ ! ) ; R e
0057020 l e a s e P B I ( p b i ) ; b
0057040 r e a k ] \r ] r
0057060 e p e a t \r ] \r \r C l o s
0057100 e L e v e l 1 S o c k e t ( u s
0057120 e r S o c ) \r P u t T e m p l a
0057140 t e ( d s p , " * n O u t :
0057160 $ E D , I n : $ E D " , o
0057200 u t , i n ) \r w h i l e o u
0057220 t ! 0 n e 0 376 \0 252 254 341 d o
0057240 / / s c a l e s o d e n
0057260 o m i n a t o r i s l s 2
0057300 ^ 1 6 \r [ D i v i d e 3
0057320 2 x 1 6 ( i n T i m e s 1 0 0 ,
0057340 1 0 ) ; D i v i d e 3 2 x 1
0057360 6 ( o u t , 1 0 ) ] \r D i v
0057400 i d e 3 2 x 1 6 ( i n T i m e s
0057420 1 0 0 , o u t ! 1 ) \r P u t T
0057440 e m p l a t e ( d s p , " ,
0057460 $ U D % " , i n T i m e s 1 0
0057500 0 ! 1 ) \r ] \r 377 \0 \0 P u p T e s
0057520 t M i s c . b c p l \0 373 230 230 | J
0057540 \0 \0 376 001 \0 245 \b / / P u p T e s
0057560 t M i s c . b c p l \r / / C o
0057600 p y r i g h t X e r o x C o
0057620 r p o r a t i o n 1 9 8 0 ,
0057640 1 9 8 2 \r / / L a s t m o d
0057660 i f i e d F e b r u a r y 1
0057700 5 , 1 9 8 2 5 : 3 6 P M
0057720 b y B o g g s \r \r g e t "
0057740 p u p . d e c l " \r g e t " p
0057760 u p t e s t . d e c l " \r \r e x
0060000 t e r n a l \r [ \r / / o u t g
0060020 o i n g p r o c e d u r e s \r
0060040 M i s c S e r v i c e s \r \r / /
0060060 i n c o m i n g p r o c e d
0060100 u r e s \r W s ; P u t s ; G
0060120 e t s ; P u t T e m p l a t e
0060140 ; U N P A C 376 001 \0 345 256 K D T ;
0060160 W R I T E U D T \r G e t P B I
0060200 ; R e l e a s e P B I ; C o
0060220 m p l e t e P u p ; A p p e n
0060240 d S t r i n g T o P u p \r O p e
0060260 n L e v e l 1 S o c k e t ; C
0060300 l o s e L e v e l 1 S o c k e t
0060320 \r S e t T i m e r ; T i m e r
0060340 H a s E x p i r e d ; E n q u
0060360 e u e ; D e q u e u e ; B l
0060400 o c k ; M u l t E q \r C o n f
0060420 i r m ; G e t S t r i n g \r O
0060440 p e n P o r t ; R T T i t l e
0060460 ; R T E n t r y ; P r i n t
0060500 P o r t \r O t h e r S p i g o t
0060520 \r \r / / i n c o m i n g s t
0060540 a t i c s \r d s p ; k 376 001 \0 035
0060560 332 e y s \r ] \r \r m a n i f e s t
0060600 \r [ \r / / m i s c s e r v i
0060620 c e s p r o t o c o l s \r p s
0060640 M i s c S e r v = 4 \r \r p t
0060660 S t r i n g T i m e R e q u e s
0060700 t = 2 0 0 b \r p t S t r i n
0060720 g T i m e R e p l y = 2 0 1
0060740 b \r p t T e n e x T i m e R e q
0060760 u e s t = 2 0 2 b \r p t T e
0061000 n e x T i m e R e p l y = 2
0061020 0 3 b \r p t A l t o T i m e R e
0061040 q u e s t = 2 0 6 b \r p t A
0061060 l t o T i m e R e p l y = 2
0061100 0 7 b \r \r p t M a i l C h e c k
0061120 R e q u e s t = 2 1 4 b \r p
0061140 t M a i l C h e c k Y e s =
0061160 2 376 001 \0 k 376 1 1 b \r p t M a i l
0061200 C h e c k N o = 2 1 2 b \r p
0061220 t M a i l C h e c k E r r o r
0061240 = 2 1 3 b \r \r p t N a m e R e
0061260 q u e s t = 2 2 0 b \r p t N
0061300 a m e R e p l y = 2 2 1 b \r
0061320 p t N a m e A d d r E r r o r
0061340 = 2 2 2 b \r p t A d d r e s s
0061360 R e q u e s t = 2 2 3 b \r p
0061400 t A d d r e s s R e p l y =
0061420 2 2 4 b \r p t N e t D i r V e r
0061440 s i o n = 2 4 0 b \r \r p t W
0061460 h e r e U s e r R e q u e s t
0061500 = 2 3 0 b \r p t W h e r e U s
0061520 e r R e p l y = 2 3 1 b \r p
0061540 t W h e r e U s e r E r r o r
0061560 = 2 3 2 b 376 001 \0 177 q \r \r p t A
0061600 u t h R e q u e s t = 2 5 0
0061620 b \r p t A u t h Y e s = 2 5
0061640 1 b \r p t A u t h N o = 2 5
0061660 2 b \r \r p t V a l i d R e c i p
0061700 R e q u e s t = 2 6 6 b \r p
0061720 t V a l i d R e c i p Y e s =
0061740 2 6 7 b \r p t V a l i d R e c
0061760 i p N o = 2 7 0 b \r \r / /
0062000 R o u t i n g i n f o p r o
0062020 t o c o l \r p s R o u t e I n f
0062040 o = 2 \r \r p t R o u t e I n
0062060 f o R e q u e s t = 2 0 0 b
0062100 \r p t R o u t e I n f o R e p l
0062120 y = 2 0 1 b \r ] \r \r s t a t
0062140 i c [ m i s c I D ; m i s
0062160 c S o c ] \r \f \r / / 376 001 \0 L 004
0062200 - - - - - - - - - - - - - - - -
*
0062300 - - - - - - - - - - - - \r l e t
0062320 M i s c S e r v i c e s ( q u
0062340 i t ) b e \r / / - - - - - - -
0062360 - - - - - - - - - - - - - - - -
*
0062460 - - - - - \r [ \r l e t s o c
0062500 = v e c l e n P u p S o c ;
0062520 m i s c S o c = s o c \r u
0062540 n l e s s O p e n P o r t ( "
0062560 M i s c s e r v i c e s h o
0062600 376 001 \0 037 020 s t : " , s o c ,
0062620 0 , p s M i s c S e r v )
0062640 r e t u r n \r [ \r W
0062660 s ( " * N > > " ) \r s w i
0062700 t c h o n G e t s ( k e y s )
0062720 i n t o \r [ \r
0062740 c a s e $ A : c a s
0062760 e $ a : \r [
0063000 A u t h e n t i c a t e ( ) ;
0063020 e n d c a s e ] \r
0063040 c a s e $ D : c a s e $
0063060 d : \r [ D a
0063100 t e A n d T i m e ( ) ; e n d
0063120 c a s e ] \r c a s
0063140 e $ H : c a s e $ h : \r
0063160 [ q u i t =
0063200 f a l s 376 001 \0 267 X e ; b r e
0063220 a k ] \r c a s e
0063240 $ N : c a s e $ n : \r
0063260 [ N e t D i r e c
0063300 t o r y ( ) ; e n d c a s e
0063320 ] \r c a s e $ M :
0063340 c a s e $ m : \r
0063360 [ M a i l C h e c k ( )
0063400 ; e n d c a s e ] \r
0063420 c a s e $ Q : c a s e
0063440 $ q : \r [ q
0063460 u i t = C o n f i r m ( " Q
0063500 u i t " ) ; b r e a k ] \r
0063520 c a s e $ R : c
0063540 a s e $ r : \r
0063560 [ R o u t i n g I n f o ( )
0063600 ; e n d c a s e 376 001 \0 341 O ]
0063620 \r c a s e $ V :
0063640 c a s e $ v : \r
0063660 [ V a l i d a t e R e c i
0063700 p ( ) ; e n d c a s e ] \r
0063720 c a s e $ W : c a
0063740 s e $ w : \r
0063760 [ W h e r e I s U s e r ( ) ;
0064000 e n d c a s e ] \r
0064020 c a s e $ ? : \r
0064040 [ \r W s
0064060 ( " ? O n e o f t h e f
0064100 o l l o w i n g : " ) \r
0064120 W s ( " * n A u t h e
0064140 n t i c a t e , D a t e a n
0064160 d t i m e , H o s t , " ) \r
0064200 W s ( " * n 376
0064220 001 \0 = 244 N e t D i r e c t o r
0064240 y , M a i l c h e c k , Q
0064260 u i t , " ) \r
0064300 W s ( " * n R o u t i n g i n
0064320 f o , V a l i d a t e r e c
0064340 i p i e n t , W h e r e i s
0064360 U s e r . " ) \r
0064400 l o o p \r
0064420 ] \r ] \r ] r
0064440 e p e a t \r C l o s e L e v e l
0064460 1 S o c k e t ( s o c ) \r ] r
0064500 e p e a t u n t i l q u i t \r
0064520 \f \r / / - - - - - - - - - - - -
0064540 - - - - - - - - - - - - - - - -
*
0064620 - - - - 376 001 \0 371 T - - - - - - -
0064640 - - - - - \r a n d D a t e A n
0064660 d T i m e ( ) b e \r / / - - -
0064700 - - - - - - - - - - - - - - - -
*
0065000 - - - - - - - - - \r [ \r W s ( "
0065020 D a t e a n d t i m e p r
0065040 o t o c o l " ) \r [ \r
0065060 l e t p b i = G e t P
0065100 B I ( m i s c S o c ) \r \r
0065120 [ \r W s
0065140 ( " * N > > > " ) \r
0065160 s w i t c h o n G e t s ( k e
0065200 y s ) i n t o \r
0065220 [ \r 376 001 \0 m 214
0065240 c a s e $ T : c a s e
0065260 $ t : \r
0065300 [ \r W s
0065320 ( " T e n e x f o r m a t :
0065340 " ) \r p
0065360 b i > > P B I . p u p . t y p e
0065400 = p t T e n e x T i m e R e
0065420 q u e s t \r
0065440 b r e a k \r
0065460 ] \r c
0065500 a s e $ A : c a s e $ a :
0065520 \r [ \r
0065540 W s ( " A
0065560 l t o f o r m a t : " ) \r
0065600 p b i > >
0065620 P B I . p u p . t y p e = 376 001
0065640 \0 360 277 p t A l t o T i m e R e
0065660 q u e s t \r
0065700 b r e a k \r
0065720 ] \r c
0065740 a s e $ S : c a s e $ s :
0065760 \r [ \r
0066000 W s ( " S
0066020 t r i n g f o r m a t : " )
0066040 \r p b i
0066060 > > P B I . p u p . t y p e =
0066100 p t S t r i n g T i m e R e q
0066120 u e s t \r
0066140 b r e a k \r
0066160 ] \r c a
0066200 s e $ Q : c a s e $ q :
0066220 W s ( " Q u i t " ) / / f a l
0066240 l s 376 001 \0 _ l t h r o u g h \r
0066260 c a s e $ *
0066300 1 7 7 : [ R e l e a s e P B
0066320 I ( p b i ) ; r e t u r n ]
0066340 \r c a s e $
0066360 ? : \r [
0066400 \r W s (
0066420 " A l t o , T e n e x , S t
0066440 r i n g : " ) \r
0066460 l o o p \r
0066500 ] \r
0066520 ] \r ] r e p e a
0066540 t \r \r p b i > > P B
0066560 I . p u p . l e n g t h = p
0066600 u p O v B y t e s \r p b i
0066620 = S e n d C o m m a n d ( p
0066640 b i ) ; i f 376 001 \0 J 330 p b i
0066660 e q 0 l o o p \r \r
0066700 s w i t c h o n p b i > >
0066720 P B I . p u p . t y p e i n t
0066740 o \r [ \r
0066760 c a s e p t S t r i n g T i m
0067000 e R e p l y : \r
0067020 [ P r i n t C o n t e n t s
0067040 ( p b i ) ; e n d c a s e ]
0067060 \r c a s e p t T e
0067100 n e x T i m e R e p l y : \r
0067120 [ \r
0067140 f o r i = 1 t o p
0067160 b i > > P B I . p u p . l e n g
0067200 t h - p u p O v B y t e s d o
0067220 \r P u t
0067240 T e m p l a t e ( d s p , 376 001 \0
0067260 > 035 " $ U O " , p b i > > P
0067300 B I . p u p . b y t e s ^ i ) \r
0067320 e n d c a s e
0067340 \r ] \r
0067360 c a s e p t A l t o T i m
0067400 e R e p l y : \r
0067420 [ \r f o r
0067440 i = 1 t o p b i > > P B
0067460 I . p u p . l e n g t h - p u p
0067500 O v B y t e s d o \r
0067520 P u t T e m p l a
0067540 t e ( d s p , " $ U O " , p
0067560 b i > > P B I . p u p . b y t e
0067600 s ^ i ) \r l e
0067620 t u v = v e c 6 \r
0067640 U N P A C K D T ( l
0067660 v 376 001 \0 T 005 p b i > > P B I .
0067700 p u p . b y t e s ^ 1 , u v )
0067720 \r W s ( " =
0067740 " ) \r W R I T
0067760 E U D T ( d s p , u v ) \r
0070000 e n d c a s e \r
0070020 ] \r
0070040 ] \r \r R e l e a s e
0070060 P B I ( p b i ) \r ] r e
0070100 p e a t \r ] \r \f \r / / - - - - -
0070120 - - - - - - - - - - - - - - - -
*
0070220 - - - - - - - \r a n d N e t D
0070240 i r e c t o r y ( ) b e \r / /
0070260 - - - - - - - 376 001 \0 310 317 - - - -
0070300 - - - - - - - - - - - - - - - -
*
0070400 - \r [ \r W s ( " N e t d i r e
0070420 c t o r y p r o t o c o l "
0070440 ) \r [ \r l e t p b
0070460 i = G e t P B I ( m i s c S
0070500 o c ) \r \r [ \r
0070520 W s ( " * N > > > "
0070540 ) \r s w i t c h o n
0070560 G e t s ( k e y s ) i n t o
0070600 \r [ \r
0070620 c a s e $ A : c a
0070640 s e $ a : \r
0070660 [ \r 376 001 \0 246
0070700 3 b r e a k \r
0070720 ] \r
0070740 c a s e $ N : c a s e
0070760 $ n : \r
0071000 [ \r l
0071020 e t s t r i n g = v e c
0071040 4 0 \r u
0071060 n l e s s G e t S t r i n g (
0071100 " N a m e : " , s t r i n g
0071120 , t r u e , f a l s e ) r
0071140 e t u r n \r
0071160 A p p e n d S t r i n g T o
0071200 P u p ( p b i , 1 , s t r i
0071220 n g ) / / s e t s P u p .
0071240 l e n g t h \r
0071260 p b i > > P B I . p u p .
0071300 t 376 001 \0 } ; y p e = p t N a
0071320 m e R e q u e s t \r
0071340 b r e a k \r
0071360 ] \r
0071400 c a s e $ V : c a s e
0071420 $ v : \r
0071440 [ \r W
0071460 s ( " V e r s i o n o f n e
0071500 t d i r = " ) \r
0071520 p b i > > P B I .
0071540 p u p . w o r d s ^ 1 = 1 \r
0071560 p b i >
0071600 > P B I . p u p . w o r d s ^ 2
0071620 = 0 \r
0071640 p b i > > P B I . p u p . t y
0071660 p e = p t N e t D i r V e r
0071700 s i o n \r 376 001 \0 \f ;
0071720 p b i > > P B I . p
0071740 u p . l e n g t h = p u p O
0071760 v B y t e s + 4 \r
0072000 b r e a k \r
0072020 ] \r
0072040 c a s e $ Q : c a s e
0072060 $ q : W s ( " Q u i t " )
0072100 / / f a l l s t h r o u g h
0072120 \r c a s e $
0072140 * 1 7 7 : [ R e l e a s e P
0072160 B I ( p b i ) ; r e t u r n
0072200 ] \r c a s e
0072220 $ ? : \r
0072240 [ \r W s
0072260 ( " N a m e - > A d d r e s s ,
0072300 V e r s i o n o f 376 001 \0 226 350
0072320 N e t D i r : " ) \r
0072340 l o o p \r
0072360 ] \r
0072400 ] \r ] r e
0072420 p e a t \r \r p b i
0072440 = S e n d C o m m a n d ( p b
0072460 i ) ; i f p b i e q 0
0072500 r e t u r n \r \r s w
0072520 i t c h o n p b i > > P B I .
0072540 p u p . t y p e i n t o \r
0072560 [ \r c a s e
0072600 p t N a m e A d d r E r r o r
0072620 : \r [ P r i
0072640 n t C o n t e n t s ( p b i ) ;
0072660 e n d c a s e ] \r
0072700 c a s e p t N a m e R e p l
0072720 376 001 \0 001 307 y : \r
0072740 [ \r f o r
0072760 i = 1 t o p b i > > P B
0073000 I . p u p . l e n g t h - p u p
0073020 O v B y t e s b y 6 d o \r
0073040 [ P r
0073060 i n t P o r t ( l v p b i > >
0073100 P B I . p u p . b y t e s ^ i )
0073120 ; W s ( " " ) ] \r
0073140 e n d c a s e \r
0073160 ] \r c
0073200 a s e p t N e t D i r V e r s
0073220 i o n : \r [ \r
0073240 P u t T e m p
0073260 l a t e ( d s p , " $ U D " ,
0073300 p b i > > P B I . p u p . w o
0073320 r d s ^ 1 376 001 \0 200 357 ) \r
0073340 e n d c a s e \r
0073360 ] \r ] \r
0073400 \r R e l e a s e P B
0073420 I ( p b i ) \r ] r e p e
0073440 a t \r ] \r \f \r / / - - - - - - -
0073460 - - - - - - - - - - - - - - - -
*
0073560 - - - - - \r a n d W h e r e I
0073600 s U s e r ( ) b e \r / / - - -
0073620 - - - - - - - - - - - - - - - -
*
0073720 - - - - - - - - - \r 376 001 \0 6 370 [
0073740 \r l e t s t r i n g = v e
0073760 c 4 0 \r u n l e s s G e t S
0074000 t r i n g ( " W h e r e i s
0074020 u s e r : " , s t r i n g ,
0074040 t r u e , f a l s e ) r e
0074060 t u r n \r l e t p b i = G
0074100 e t P B I ( m i s c S o c ) \r A
0074120 p p e n d S t r i n g T o P u p
0074140 ( p b i , 1 , s t r i n g )
0074160 \r p b i = S e n d C o m m a
0074200 n d ( p b i , p t W h e r e U
0074220 s e r R e q u e s t ) \r i f p
0074240 b i e q 0 r e t u r n \r s
0074260 w i t c h o n p b i > > P B I
0074300 . p u p . t y p e i n t o \r
0074320 [ \r c a s e p t W 376
0074340 001 \0 246 . h e r e U s e r E r r o
0074360 r : \r [ W s ( " -
0074400 N o s u c h u s e r " ) ;
0074420 e n d c a s e ] \r c a
0074440 s e p t W h e r e U s e r R e
0074460 p l y : \r [ \r
0074500 t e s t p b i > > P B I
0074520 . p u p . l e n g t h e q p
0074540 u p O v B y t e s \r
0074560 i f s o W s ( " - N o
0074600 t l o g g e d i n " ) \r
0074620 i f n o t f o r
0074640 i = 1 t o p b i > > P
0074660 B I . p u p . l e n g t h - p u
0074700 p O v B y t e s b y 2 d o
0074720 \r [ \r
0074740 376 001 \0 230 }
0074760 P u t T e m p l a t e ( d s p ,
0075000 " - J o b $ D " , p b i
0075020 > > P B I . p u p . b y t e s ^
0075040 i ) \r t
0075060 e s t p b i > > P B I . p u p
0075100 . b y t e s ^ ( i + 1 ) e q
0075120 # 3 7 7 \r
0075140 i f s o W s ( " , D
0075160 e t a c h e d " ) \r
0075200 i f n o t P
0075220 u t T e m p l a t e ( d s p ,
0075240 " , T T Y $ 0 " , p b i >
0075260 > P B I . p u p . b y t e s ^ (
0075300 i + 1 ) ) \r
0075320 ] \r e n d c a s
0075340 e \r ] 376 001 \0 \n = \r
0075360 ] \r R e l e a s e P B I ( p
0075400 b i ) \r ] \r \f \r / / - - - - - -
0075420 - - - - - - - - - - - - - - - -
*
0075520 - - - - - - \r a n d R o u t i
0075540 n g I n f o ( ) b e \r / / - -
0075560 - - - - - - - - - - - - - - - -
*
0075660 - - - - - - - - - - \r / / N o
0075700 t e t h a t t h i s o n e
0075720 g o e s t o t h e g a t
0075740 e w a y i n f o s o c k 376 001
0075760 \0 T 246 e t i n s t e a d o f
0076000 m i s c s e r v i c e s \r [
0076020 \r l e t p b i = G e t P B
0076040 I ( m i s c S o c ) \r p b i > >
0076060 P B I . p u p . d P o r t . s o
0076100 c k e t ^ 1 = 0 \r p b i > >
0076120 P B I . p u p . d P o r t . s o
0076140 c k e t ^ 2 = p s R o u t e
0076160 I n f o \r p b i = S e n d C
0076200 o m m a n d ( p b i , p t R o
0076220 u t e I n f o R e q u e s t ,
0076240 p u p O v B y t e s , 1 ) \r i
0076260 f p b i t h e n \r [ \r
0076300 E n q u e u e ( l v m i
0076320 s c S o c > > P u p S o c . i Q
0076340 , p b i ) \r R T T i t l
0076360 e ( " 376 001 \0 263 006 F o r e i g n
0076400 r o u t i n g t a b l e : "
0076420 ) \r ] \r l e t c o u n t
0076440 = 0 \r l e t t i m e r =
0076460 n i l ; S e t T i m e r ( l
0076500 v t i m e r , 5 0 0 ) /
0076520 / 5 s e c o n d s \r [
0076540 \r B l o c k ( ) r e p e
0076560 a t u n t i l m i s c S o c >
0076600 > P u p S o c . i Q . h e a d
0076620 % T i m e r H a s E x p i r e
0076640 d ( l v t i m e r ) \r l
0076660 e t p b i = D e q u e u e
0076700 ( l v m i s c S o c > > P u p
0076720 S o c . i Q . h e a d ) ; i f
0076740 p b i e q 0 b r e a k \r
0076760 i f p b 376 001 \0 E 227 i > >
0077000 P B I . p u p . t y p e e q
0077020 p t R o u t e I n f o R e p l y
0077040 t h e n \r f o r
0077060 i = 1 t o p b i > > P B
0077100 I . p u p . l e n g t h - p u p
0077120 O v B y t e s b y 4 d o \r
0077140 R T E n t r y
0077160 ( p b i > > P B I . p u p . b y
0077200 t e s ^ i , p b i > > P B I .
0077220 p u p . b y t e s ^ ( i + 1 ) ,
0077240 \r p b i > >
0077260 P B I . p u p . b y t e s ^ ( i
0077300 + 2 ) , p b i > > P B I . p u
0077320 p . b y t e s ^ ( i + 3 ) , l
0077340 v c o u n t ) \r R e l e
0077360 a s e P B I ( p b i ) \r 376 001 \0
0077400 211 261 ] r e p e a t \r ] \r \f
0077420 \r / / - - - - - - - - - - - - -
0077440 - - - - - - - - - - - - - - - -
*
0077520 - - - - - - - - - - - - - - - \r
0077540 a n d A u t h e n t i c a t e
0077560 ( ) b e \r / / - - - - - - - -
0077600 - - - - - - - - - - - - - - - -
*
0077700 - - - - \r [ \r l e t n a m e
0077720 = v e c 4 0 \r u n l e s s
0077740 G e t S t r i n g ( " A u t h e
0077760 n t i c a t e u s e r : " ,
0100000 n 376 001 \0 036 373 a m e , t r u e
0100020 , f a l s e ) r e t u r n \r
0100040 l e t p s w = v e c 4 0
0100060 \r u n l e s s G e t S t r i n
0100100 g ( " p a s s w o r d : " ,
0100120 p s w , f a l s e , f a l
0100140 s e ) r e t u r n \r l e t p
0100160 b i = G e t P B I ( m i s c
0100200 S o c ) \r A p p e n d M e s a S
0100220 t r i n g T o P u p ( p b i ,
0100240 1 , n a m e ) \r A p p e n d M
0100260 e s a S t r i n g T o P u p ( p
0100300 b i , ( n a m e > > S t r i n
0100320 g . l e n g t h + 7 ) / 2 , p
0100340 s w ) \r p b i = S e n d C o
0100360 m m a n d ( p b i , p t A u t
0100400 h R e q u e s 376 001 \0 304 332 t ) \r i
0100420 f p b i e q 0 r e t u r
0100440 n \r s w i t c h o n p b i > >
0100460 P B I . p u p . t y p e i n t
0100500 o \r [ \r c a s e p
0100520 t A u t h Y e s : \r
0100540 [ W s ( " - G o o d " ) ;
0100560 e n d c a s e ] \r c a s
0100600 e p t A u t h N o : \r
0100620 [ W s ( " - N o " ) ;
0100640 P r i n t C o n t e n t s ( p
0100660 b i ) ; e n d c a s e ] \r
0100700 ] \r R e l e a s e P B I ( p
0100720 b i ) \r ] \r \r / / - - - - - - -
0100740 - - - - - - - - - - - - - - - -
*
0101000 - - - - - - - - - - - - 376 001 \0 |
0101020 036 - - - - - - - - - - - - - - -
0101040 - - - - - - - - - - \r a n d V
0101060 a l i d a t e R e c i p ( ) b
0101100 e \r / / - - - - - - - - - - - -
0101120 - - - - - - - - - - - - - - - -
*
0101220 \r [ \r l e t s t r i n g =
0101240 v e c 4 0 \r u n l e s s G e
0101260 t S t r i n g ( " V a l i d a t
0101300 e r e c i p i e n t : " ,
0101320 s t r i n g , t r u e , f a
0101340 l s e ) r e t u r n \r l e t
0101360 p b i = G e t P B I ( m i s
0101400 c S o c ) \r A p p e n d M e s a
0101420 S 376 001 \0 004 ^ t r i n g T o P u p
0101440 ( p b i , 1 , s t r i n g )
0101460 \r p b i = S e n d C o m m a
0101500 n d ( p b i , p t V a l i d R
0101520 e c i p R e q u e s t ) \r i f
0101540 p b i e q 0 r e t u r n \r
0101560 s w i t c h o n p b i > > P B
0101600 I . p u p . t y p e i n t o \r
0101620 [ \r c a s e p t V
0101640 a l i d R e c i p Y e s : \r
0101660 [ W s ( " - G o o d
0101700 " ) ; e n d c a s e ] \r
0101720 c a s e p t V a l i d R e c
0101740 i p N o : \r [ W s
0101760 ( " - B a d " ) ; e n d c a
0102000 s e ] \r ] \r R e l e a s
0102020 e P B I ( p 376 001 \0 252 P b i ) \r ]
0102040 \r \r / / - - - - - - - - - - - -
0102060 - - - - - - - - - - - - - - - -
*
0102160 \r a n d M a i l C h e c k ( )
0102200 b e \r / / - - - - - - - - - -
0102220 - - - - - - - - - - - - - - - -
*
0102320 - - \r [ \r l e t s t r i n g
0102340 = v e c 4 0 \r u n l e s s
0102360 G e t S t r i n g ( " M a i l
0102400 c h e c k f o r u s e r :
0102420 " , s t r i n g , 376 001 \0 272 %
0102440 t r u e , f a l s e ) r e t
0102460 u r n \r l e t p b i = G e
0102500 t P B I ( m i s c S o c ) \r A p
0102520 p e n d S t r i n g T o P u p (
0102540 p b i , 1 , s t r i n g ) \r
0102560 p b i = S e n d C o m m a n
0102600 d ( p b i , p t M a i l C h e
0102620 c k R e q u e s t ) \r i f p b
0102640 i e q 0 r e t u r n \r s w
0102660 i t c h o n p b i > > P B I .
0102700 p u p . t y p e i n t o \r
0102720 [ \r c a s e p t M a i
0102740 l C h e c k E r r o r : \r
0102760 [ W s ( " - N o s u
0103000 c h u s e r " ) ; e n d c a
0103020 s e ] \r c a s e p t M
0103040 376 001 \0 331 v a i l C h e c k N o :
0103060 \r [ W s ( " - N
0103100 o n e w m a i l " ) ; e n
0103120 d c a s e ] \r c a s e
0103140 p t M a i l C h e c k Y e s : \r
0103160 [ W s ( " - N e
0103200 w m a i l w a i t i n g "
0103220 ) ; P r i n t C o n t e n t s
0103240 ( p b i ) ; e n d c a s e ]
0103260 \r ] \r R e l e a s e P B I
0103300 ( p b i ) \r ] \r \f \r / / - - - -
0103320 - - - - - - - - - - - - - - - -
*
0103420 - - - - - - - - \r a n d S e n
0103440 d C o m m 376 001 \0 026 372 a n d ( o p
0103460 b i , t y p e , l e n g t h
0103500 , r e t r i e s ; n u m a r
0103520 g s n a ) = v a l o f \r /
0103540 / - - - - - - - - - - - - - - -
0103560 - - - - - - - - - - - - - - - -
*
0103640 - - - - - - - - - - - - - \r / /
0103660 r e t u r n s r e s p o n s
0103700 e p b i o r 0 i f t i
0103720 m e o u t \r [ \r i f n a l s
0103740 4 t h e n r e t r i e s
0103760 = 3 \r i f n a g e 3 t
0104000 h e n o p b i > > P B I . p u
0104020 p . l e n g t h = l e n g t
0104040 h \r i f n a g e 376 001 \0 305 354
0104060 2 t h e n o p b i > > P B I
0104100 . p u p . t y p e = t y p e
0104120 \r \r o p b i > > P B I . p u p .
0104140 i d ^ 2 = m i s c I D \r m i
0104160 s c I D = m i s c I D + 1 \r
0104200 l e t s o c = o p b i > >
0104220 P B I . s o c k e t \r l e t t
0104240 Q = v e c 1 ; t Q ! 0
0104260 = 0 \r o p b i > > P B I . q u
0104300 e u e = t Q \r E n q u e u e
0104320 ( t Q , o p b i ) \r l e t i
0104340 p b i = 0 \r \r f o r i =
0104360 1 t o r e t r i e s d o
0104400 \r [ \r B l o c k ( )
0104420 r e p e a t w h i l e t Q !
0104440 0 e q 0 \r C o m p l 376
0104460 001 \0 252 331 e t e P u p ( D e q u e
0104500 u e ( t Q ) ) \r \r l e t
0104520 t i m e r = n i l ; S e t
0104540 T i m e r ( l v t i m e r ,
0104560 2 0 0 ) / / 2 s e c \r
0104600 [ \r B l o c
0104620 k ( ) r e p e a t u n t i l
0104640 T i m e r H a s E x p i r e d (
0104660 l v t i m e r ) % s o c >
0104700 > P u p S o c . i Q . h e a d
0104720 n e 0 \r i p b i
0104740 = D e q u e u e ( l v s o c
0104760 > > P u p S o c . i Q ) \r
0105000 i f i p b i e q 0
0105020 b r e a k / / t i m e o u t
0105040 - r e t r a n s m i t \r
0105060 376 001 \0 S ^ i f M u l t
0105100 E q ( l v i p b i > > P B I .
0105120 p u p . i d , l v o p b i >
0105140 > P B I . p u p . i d ) t h e
0105160 n \r i f i p
0105200 b i > > P B I . p u p . t y p e
0105220 n e t y p e E r r o r b r
0105240 e a k \r O t h e r S
0105260 p i g o t ( i p b i ) ; i p b
0105300 i = 0 \r ] r e
0105320 p e a t \r i f i p b i
0105340 n e 0 b r e a k \r ] \r
0105360 \r B l o c k ( ) r e p e a t w
0105400 h i l e t Q ! 0 e q 0 \r R
0105420 e l e a s e P B I ( D e q u e u
0105440 e ( t Q ) ) \r r e s u l t i s
0105460 i p b i \r ] \r \r / 376 001 \0 330 \a / -
0105500 - - - - - - - - - - - - - - - -
*
0105600 - - - - - - - - - - - \r a n d
0105620 P r i n t C o n t e n t s ( p b
0105640 i ) b e \r / / - - - - - - - -
0105660 - - - - - - - - - - - - - - - -
*
0105760 - - - - \r [ \r f o r i = 1
0106000 t o p b i > > P B I . p u p
0106020 . l e n g t h - p u p O v B y t
0106040 e s d o \r P u t s ( d
0106060 s p , p b i > > P B I . p 376 001
0106100 \0 342 1 u p . b y t e s ^ i ) \r ]
0106120 \r \r / / - - - - - - - - - - - -
0106140 - - - - - - - - - - - - - - - -
*
0106240 \r a n d A p p e n d M e s a S
0106260 t r i n g T o P u p ( p b i ,
0106300 f i r s t W o r d , s t r i n
0106320 g ) b e \r / / - - - - - - - -
0106340 - - - - - - - - - - - - - - - -
*
0106440 - - - - \r [ \r s t r u c t u r e
0106460 M e s a S t r i n g : \r
0106500 [ \r 376 001 \0 8 234 l e n g t h
0106520 w o r d \r m a x L e n g
0106540 t h w o r d \r c h a r ^
0106560 1 , 1 b y t e \r ] \r l e
0106600 t m s = l v p b i > > P
0106620 B I . p u p . w o r d s + f
0106640 i r s t W o r d - 1 \r m s > >
0106660 M e s a S t r i n g . l e n g t
0106700 h = s t r i n g > > S t r i
0106720 n g . l e n g t h \r m s > > M e
0106740 s a S t r i n g . m a x L e n g
0106760 t h = ( s t r i n g > > S t
0107000 r i n g . l e n g t h + 1 ) &
0107020 - 2 \r f o r i = 1 t o
0107040 s t r i n g > > S t r i n g .
0107060 l e n g t h d o \r m s >
0107100 > M e s a S t r 376 \0 m 263 025 i n g
0107120 . c h a r ^ i = s t r i n g
0107140 > > S t r i n g . c h a r ^ i \r
0107160 p b i > > P B I . p u p . l e n
0107200 g t h = p u p O v B y t e s
0107220 + f i r s t W o r d * 2 + m s >
0107240 > M e s a S t r i n g . m a x L
0107260 e n g t h + 2 \r ] \r 377 \0 \0 P u p
0107300 T e s t I O . b c p l \0 373 230 230 {
0107320 u \0 \0 376 001 \0 330 021 / / P u p T e
0107340 s t I O . b c p l \r / / C o p
0107360 y r i g h t X e r o x C o r
0107400 p o r a t i o n 1 9 7 9 , 1
0107420 9 8 2 \r / / L a s t m o d i
0107440 f i e d F e b r u a r y 1 5
0107460 , 1 9 8 2 5 : 4 9 P M
0107500 b y B o g g s \r \r g e t " P
0107520 u p . d e c l " \r g e t " P u
0107540 p S t a t s . d e c l " \r g e t
0107560 " P u p T e s t . d e c l " \r
0107600 \r e x t e r n a l \r [ \r / / o u
0107620 t g o i n g p r o c e d u r e
0107640 s \r G e t S t r i n g ; G e t
0107660 N u m b e r ; P r i n t P o r
0107700 t ; C o n f i r m \r O p e n P
0107720 o r t ; C o m 376 001 \0 327 004 p u t
0107740 e T h r u p u t ; W s ; W s
0107760 s \r O t h e r S p i g o t ; O
0110000 t h e r S p i g o t P r o c e s
0110020 s \r P r i n t P u p R T ; R T
0110040 T i t l e ; R T E n t r y ;
0110060 P r i n t S t a t i s t i c s \r
0110100 \r / / i n c o m i n g p r o c
0110120 e d u r e s \r P u t s ; G e t
0110140 s ; E n d o f s ; R e s e t
0110160 s \r M o v e B l o c k ; Z e r
0110200 o ; D e f a u l t A r g s \r E
0110220 n q u e u e ; D e q u e u e ;
0110240 B l o c k \r P u t T e m p l a
0110260 t e ; E r a s e B i t s ; C
0110300 h a r W i d t h \r O p e n L e v
0110320 e l 1 S o c k e t ; R e 376 001 \0
0110340 " } l e a s e P B I ; G e t P
0110360 a r t n e r \r H L o o k u p ;
0110400 H E n u m e r a t e \r U p d a t
0110420 e A v e r a g e ; D i v i d e
0110440 3 2 x 1 6 \r \r / / s t a t i c s
0110460 \r d s p ; k e y s \r s p i g o
0110500 t Q ; p u p R T ; p b i F r
0110520 e e Q \r ] \r \r m a n i f e s t
0110540 r e a l T i m e C l o c k =
0110560 4 3 0 b \r \f \r / / - - - - - - -
0110600 - - - - - - - - - - - - - - - -
*
0110700 - - - - - \r l e t G e t S t r
0110720 i n g ( p r o m p t , a d d r
0110740 , 376 001 \0 275 236 e c h o , c r ;
0110760 n u m a r g s n a ) = v
0111000 a l o f \r / / - - - - - - - - -
0111020 - - - - - - - - - - - - - - - -
*
0111120 - - - \r [ \r / / m a k e a b
0111140 c p l s t r i n g f r o m
0111160 t h e k e y b o a r d \r / / i
0111200 f e c h o i s t r u e ,
0111220 e c h o t h e t y p e d c
0111240 h a r a c t e r s t o t h e
0111260 d i s p l a y \r / / r e t u r
0111300 n s f a l s e i f d e l
0111320 i s t y p e d ( r e t u r n
0111340 t o c o m 376 001 \0 5 231 m a n d
0111360 l e v e l ) \r / / a d d r i
0111400 s t h e a d d r e s s o f
0111420 t h e s t r i n g t h a t
0111440 s h o u l d g e t t h e
0111460 r e s u l t . \r / / p r o m p t
0111500 i s a p r o m p t s t r
0111520 i n g p r i n t e d i n t
0111540 h e o b v i o u s p l a c e
0111560 s \r i f n a l s 3 t h e
0111600 n e c h o = t r u e \r i f
0111620 n a l s 4 t h e n c r
0111640 = t r u e \r W s ( p r o m p
0111660 t ) \r l e t c o u n t = 0
0111700 \r [ \r l e t c h a
0111720 r = G e t s ( k e y s ) \r
0111740 s w i t c h o n c 376 001 \0 !
0111760 \ h a r i n t o \r
0112000 [ \r c a s e $ * S
0112020 : c a s e $ * N : c a s e
0112040 $ * 0 3 3 : \r
0112060 [ \r P u t s
0112100 ( d s p , ( c r ? $ * N ,
0112120 $ * S ) ) \r
0112140 a d d r > > S t r i n g . l e n
0112160 g t h = c o u n t \r
0112200 r e s u l t i s c o
0112220 u n t n e 0 \r
0112240 ] \r c a s e $
0112260 * 1 7 7 : \r [
0112300 W s ( " X X X " ) ; P u t s
0112320 ( d s p , ( c r ? $ * N ,
0112340 $ * S ) ) ; r e s u l t i s
0112360 376 001 \0 346 $ f a l s e ] \r
0112400 c a s e $ * 0 0 1 :
0112420 c a s e $ * 0 1 0 : \r
0112440 [ \r
0112460 i f c o u n t t h e n \r
0112500 [ \r
0112520 i f e c h o
0112540 t h e n \r
0112560 E r a s e B i t s ( d s
0112600 p , - C h a r W i d t h ( d s
0112620 p , a d d r > > S t r i n g .
0112640 c h a r ^ c o u n t ) ) \r
0112660 c o u n t =
0112700 c o u n t - 1 \r
0112720 ] \r
0112740 e n d c a s e \r
0112760 ] \r 376 001 \0 244 w d
0113000 e f a u l t : \r
0113020 [ \r i f c
0113040 o u n t l e 2 5 5 & c h
0113060 a r g e $ * S & c h a r
0113100 l e $ * 1 7 7 t h e n \r
0113120 [ \r
0113140 c o u n t =
0113160 c o u n t + 1 \r
0113200 a d d r > > S t r
0113220 i n g . c h a r ^ c o u n t =
0113240 c h a r \r
0113260 i f e c h o t h e n P
0113300 u t s ( d s p , c h a r ) \r
0113320 ] \r
0113340 e n d c a s e \r
0113360 ] \r 376 001 \0 $ 251
0113400 ] \r ] r e p e a
0113420 t \r ] \r \f \r / / - - - - - - - -
0113440 - - - - - - - - - - - - - - - -
*
0113540 - - - - \r a n d G e t N u m b
0113560 e r ( s t r i n g ) = v a l
0113600 o f \r / / - - - - - - - - - - -
0113620 - - - - - - - - - - - - - - - -
*
0113720 - \r [ \r W s ( s t r i n g ) \r l
0113740 e t r e s = 0 \r [ \r
0113760 l e t c h a r = G e
0114000 376 001 \0 f 373 t s ( k e y s ) \r
0114020 s w i t c h o n c h a r i
0114040 n t o \r [ \r
0114060 c a s e $ 0 : c a s e
0114100 $ 1 : c a s e $ 2 : c a s
0114120 e $ 3 : \r c a s e
0114140 $ 4 : c a s e $ 5 : c a
0114160 s e $ 6 : c a s e $ 7 : \r
0114200 [ \r
0114220 P u t s ( d s p , c h
0114240 a r ) \r r e s
0114260 = ( r e s l s h i f t 3
0114300 ) + ( c h a r & 7 ) \r
0114320 e n d c a s e \r
0114340 ] \r
0114360 c a s e $ * 0 0 1 : c a s
0114400 e $ * 0 376 001 \0 360 # 1 0 : \r
0114420 [ \r
0114440 E r a s e B i t s ( d s p ,
0114460 - C h a r W i d t h ( d s p ,
0114500 $ 0 + ( r e s & 7 ) ) ) \r
0114520 r e s = r e s
0114540 r s h i f t 3 \r
0114560 e n d c a s e \r
0114600 ] \r c a s e
0114620 $ * N : c a s e $ * S :
0114640 c a s e $ * 1 7 7 : r e s u
0114660 l t i s r e s \r ]
0114700 \r ] r e p e a t \r ] \r \r
0114720 / / - - - - - - - - - - - - - -
0114740 - - - - - - - - - - - - - - - -
*
0115000 - - - - - - - - - - 376 001 \0 # : -
0115020 - - - - - - - - - - - - - - - -
0115040 - - - \r a n d C o n f i r m (
0115060 p r o m p t ; n u m a r g s
0115100 n a ) = v a l o f \r / / - -
0115120 - - - - - - - - - - - - - - - -
*
0115220 - - - - - - - - - - \r [ \r i f
0115240 n a g r 0 t h e n W s (
0115260 p r o m p t ) ; W s ( " [ C o
0115300 n f i r m ] " ) \r s w i t c h
0115320 o n G e t s ( k e y s ) i n
0115340 t o \r [ \r c a s e
0115360 $ Y : c a s e $ y : c a s
0115400 e $ * N : \r [ 376
0115420 001 \0 321 m W s ( " Y e s . * N " )
0115440 ; r e s u l t i s t r u e
0115460 ] \r c a s e $ N : c a
0115500 s e $ n : c a s e $ * 1 7
0115520 7 : \r [ W s ( " N
0115540 o . * N " ) ; r e s u l t i s
0115560 f a l s e ] \r d e f a
0115600 u l t : \r [ W s (
0115620 " Y e s o r N o * N " ) ;
0115640 e n d c a s e ] \r ] \r ]
0115660 r e p e a t \r \r / / - - - - -
0115700 - - - - - - - - - - - - - - - -
*
0116000 - - - - - - - \r a n d P r i n
0116020 t P o r 376 001 \0 205 262 t ( p o r t )
0116040 b e \r / / - - - - - - - - - -
0116060 - - - - - - - - - - - - - - - -
*
0116160 - - \r P u t T e m p l a t
0116200 e ( d s p , " [ $ U O # $ U O #
0116220 $ U E O ] " , p o r t > > P o
0116240 r t . n e t , p o r t > > P o
0116260 r t . h o s t , \r l v
0116300 p o r t > > P o r t . s o c k e
0116320 t ) \r \r / / - - - - - - - - - -
0116340 - - - - - - - - - - - - - - - -
*
0116420 - - - - - - - - - 376 001 \0 270 207 - -
0116440 - - - - - - - \r a n d O p e n
0116460 P o r t ( s t r i n g , s o c
0116500 , f s 1 , f s 2 , l c l P
0116520 o r t ; n u m a r g s n a )
0116540 = v a l o f \r / / - - - - -
0116560 - - - - - - - - - - - - - - - -
*
0116660 - - - - - - - \r [ \r D e f a u l
0116700 t A r g s ( l v n a , - 2 ,
0116720 0 , 0 , 0 ) \r l e t f r
0116740 n P o r t = v e c l e n P
0116760 o r t \r l e t n a m e = v
0117000 e c 4 0 \r [ \r u n
0117020 l e s s G e t S t r i n g 376 001
0117040 \0 206 A ( s t r i n g , n a m e
0117060 , t r u e , f a l s e ) r
0117100 e s u l t i s f a l s e \r
0117120 i f G e t P a r t n e r ( n
0117140 a m e , d s p , f r n P o r
0117160 t , f s 1 , f s 2 ) b r e
0117200 a k \r ] r e p e a t \r O
0117220 p e n L e v e l 1 S o c k e t (
0117240 s o c , l c l P o r t , f r
0117260 n P o r t ) \r r e s u l t i s
0117300 t r u e \r ] \r \r / / - - - - - -
0117320 - - - - - - - - - - - - - - - -
*
0117420 - - - - - - \r a n d W s ( s t
0117440 r i n 376 001 \0 325 307 g ) b e W s
0117460 s ( d s p , s t r i n g ) \r /
0117500 / - - - - - - - - - - - - - - -
0117520 - - - - - - - - - - - - - - - -
*
0117600 - - - - - - - - - - - - - \r \r /
0117620 / - - - - - - - - - - - - - - -
0117640 - - - - - - - - - - - - - - - -
*
0117720 - - - - - - - - - - - - - \r a n
0117740 d W s s ( s t r e a m , s t
0117760 r i n g ) b e \r / / - - - - -
0120000 - - - - - - - - - - - - - - - -
*
0120040 - - - - - - - - 376 001 \0 331 301 - - -
0120060 - - - - - - - - - - - - - - - -
0120100 - - - - - - - - - - - - \r
0120120 f o r i = 1 t o s t r
0120140 i n g > > S t r i n g . l e n g
0120160 t h d o \r P u t s
0120200 ( s t r e a m , s t r i n g >
0120220 > S t r i n g . c h a r ^ i ) \r
0120240 \f \r / / - - - - - - - - - - - -
0120260 - - - - - - - - - - - - - - - -
*
0120360 \r a n d C o m p u t e T h r u
0120400 p u t ( t p ) = v a l o f \r
0120420 / / - - - - - - - - - - - - - -
0120440 - - - - - - - - - - - - - 376 001 \0
0120460 234 256 - - - - - - - - - - - - - -
0120500 - - - - - - - - - - - - - - - -
*
0120540 - - - \r [ \r l e t n u m =
0120560 v e c 1 \r M o v e B l o c k (
0120600 n u m , ( a l t o ? t a b l
0120620 e [ 1 9 ; - 2 8 4 6 8 ] ,
0120640 t a b l e [ 7 6 ; 1 9 2
0120660 6 4 ] ) , 2 ) \r D i v i d e 3
0120700 2 x 1 6 ( n u m , @ r e a l T
0120720 i m e C l o c k - t p > > T P .
0120740 t i m e r ) \r P u t T e m p l a
0120760 t e ( d s p , " [ $ U D 0
0121000 b y t e s / s e c ] * N " ,
0121020 n u m ! 1 ) \r t p > > T P . t
0121040 h r u p u t = n u m ! 1 \r t
0121060 p > 376 001 \0 G 266 > T P . a v e T h
0121100 r u p u t = t p > > T P . a
0121120 v e T h r u p u t e q 0 ?
0121140 t p > > T P . t h r u p u t , \r
0121160 U p d a t e A v e r a g e ( t
0121200 p > > T P . t h r u p u t , t
0121220 p > > T P . a v e T h r u p u t
0121240 , 8 ) \r ] \r \f \r / / - - - - -
0121260 - - - - - - - - - - - - - - - -
*
0121360 - - - - - - \r a n d P r i n t
0121400 P u p R T ( ) b e \r / / - - -
0121420 - - - - - - - - - - - - - - - -
*
0121460 - - - - - - - 376 001 \0 0 _ - - - -
0121500 - - - - - - - - - - - - - - - -
0121520 - - - - - - - - - - - - - \r [ \r
0121540 l e t P e r N e t ( r t e ,
0121560 l v C o u n t ) b e \r R
0121600 T E n t r y ( r t e > > R T E .
0121620 n e t , r t e > > R T E . n d
0121640 b > > N D B . l o c a l N e t ,
0121660 \r r t e > > R T E . h o
0121700 s t , r t e > > R T E . h o p
0121720 s , l v C o u n t ) \r l e t
0121740 c o u n t = 0 \r R T T i t l
0121760 e ( " L o c a l r o u t i n g
0122000 t a b l e : " ) \r H E n u m e
0122020 r a t e ( p u p R T , P e r N
0122040 e t , l v c o u n t ) \r P u
0122060 t s ( d s p , $ * N ) 376 001 \0 #
0122100 277 \r ] \r \r / / - - - - - - - - -
0122120 - - - - - - - - - - - - - - - -
*
0122220 - - - \r a n d R T T i t l e (
0122240 s t r i n g ) b e \r / / - - -
0122260 - - - - - - - - - - - - - - - -
*
0122360 - - - - - - - - - \r [ \r W s ( s
0122400 t r i n g ) \r W s ( " * N N e
0122420 t V i a H o p s |
0122440 N e t V i a H o p
0122460 s | N e t V i a
0122500 H 376 001 \0 272 257 o p s | N e t
0122520 V i a H o p s " ) \r W
0122540 s ( " * N - - - - - - - - - -
0122560 - - - - - - - | - - - - - - - -
0122600 - - - - - - - - - - | - - - - -
0122620 - - - - - - - - - - - - - | - -
0122640 - - - - - - - - - - - - - - - "
0122660 ) \r ] \r \r / / - - - - - - - - -
0122700 - - - - - - - - - - - - - - - -
*
0123000 - - - \r a n d R T E n t r y (
0123020 d N e t , v i a N e t , v i
0123040 a H o s t , h o p s , l v C
0123060 o u n t ) b e \r / / - - - - -
0123100 - - - - - - 376 001 \0 325 j - - - - -
0123120 - - - - - - - - - - - - - - - -
*
0123200 - - - - - - - - - - - - \r [ \r i
0123220 f @ l v C o u n t r e m 4
0123240 e q 0 t h e n W s ( " *
0123260 N " ) \r P u t T e m p l a t e
0123300 ( d s p , " $ U 3 O $ U 3 O
0123320 # $ U 3 F 0 O # $ U 2 O " ,
0123340 d N e t , v i a N e t , v
0123360 i a H o s t , h o p s ) \r u n
0123400 l e s s @ l v C o u n t r e
0123420 m 4 e q 3 d o W s ( "
0123440 | " ) \r @ l v C o u n t =
0123460 @ l v C o u n t + 1 \r ] \r \f
0123500 \r / / - - - - - - - - 376 001 \0 P ]
0123520 - - - - - - - - - - - - - - - -
*
0123620 - - - - \r a n d P r i n t S t
0123640 a t i s t i c s ( ) b e \r / /
0123660 - - - - - - - - - - - - - - - -
*
0123760 - - - - - - - - - - - - \r [ \r l
0124000 e t n e t = G e t N u m b
0124020 e r ( " s t a t i s t i c s f
0124040 o r n e t w o r k " ) \r l e
0124060 t r t e = H L o o k u p (
0124100 p u p R T , n e t ) \r i f r
0124120 376 001 \0 201 362 t e n e 0 t h e
0124140 n \r [ \r l e t p b
0124160 i = D e q u e u e ( p b i F
0124200 r e e Q ) \r i f r t e >
0124220 > R T E . n d b > > N D B . l e
0124240 v e l 0 S t a t s ( p b i , r
0124260 t e > > R T E . n d b ) t h e
0124300 n \r i f r t e > >
0124320 R T E . h o p s e q 0 t h
0124340 e n \r s w i t
0124360 c h o n p b i > > P B I . p u
0124400 p . w o r d s ^ 1 i n t o \r
0124420 [ \r
0124440 c a s e n e
0124460 t T y p e E t h e r : \r
0124500 [ P r i
0124520 n t E t h 376 001 \0 310 234 e r S t a t
0124540 s ( p b i ) ; e n d c a s e
0124560 ] \r c a
0124600 s e n e t T y p e S L A : \r
0124620 [
0124640 P r i n t S L A S t a t s ( p b
0124660 i ) ; e n d c a s e ] \r
0124700 ] \r E
0124720 n q u e u e ( p b i F r e e Q ,
0124740 p b i ) \r ] \r ] \r \r / /
0124760 - - - - - - - - - - - - - - - -
*
0125060 - - - - - - - - - - - - \r a n d
0125100 P r i n t E t h e r S t a t s
0125120 ( p b i ) b e \r / 376 001 \0 025 260 /
0125140 - - - - - - - - - - - - - - - -
*
0125240 - - - - - - - - - - - - \r [ \r W
0125260 s ( " * N E t h e r n e t S t
0125300 a t i s t i c s : " ) \r l e t
0125320 e s = l v p b i > > P B I
0125340 . p u p . w o r d s ^ 2 \r P u t
0125360 T e m p l a t e ( d s p , " *
0125400 n R c v : g o o d $ U D ,
0125420 b a d $ U D , o f f $ U D
0125440 " , \r e s > > E t h e r S t a
0125460 t s . p a c k e t s R c v d ,
0125500 e s > > E t h e r S t a t s . n
0125520 u m B a d R c v S t a t u s , 376
0125540 001 \0 306 264 \r e s > > E t h e r S
0125560 t a t s . i n p u t O f f ) \r P
0125600 u t T e m p l a t e ( d s p ,
0125620 " ; X m t : g o o d $ U D
0125640 , b a d $ U D ; I | O $
0125660 U D " , \r e s > > E t h e r S
0125700 t a t s . p a c k e t s S e n t
0125720 , e s > > E t h e r S t a t s
0125740 . n u m B a d X m t S t a t u s
0125760 , \r e s > > E t h e r S t a t
0126000 s . n u m I n U n d e r O u t )
0126020 \r W s ( " * N L d s : " ) \r f o
0126040 r i = 0 t o 1 5 d o
0126060 \r P u t T e m p l a t e (
0126100 d s p , " $ U D " , e s >
0126120 > E t h e r S t a t s . l o a d
0126140 T a b l 376 001 \0 \a 350 e ^ i ) \r P u
0126160 t T e m p l a t e ( d s p , "
0126200 ; O v f : $ U D " , e s >
0126220 > E t h e r S t a t s . l o a d
0126240 T a b l e ^ 1 6 ) \r ] \r \r / / -
0126260 - - - - - - - - - - - - - - - -
*
0126360 - - - - - - - - - - - \r a n d
0126400 P r i n t S L A S t a t s ( p b
0126420 i ) b e \r / / - - - - - - - -
0126440 - - - - - - - - - - - - - - - -
*
0126540 - - - - \r [ \r W s 376 001 \0 273 364 ( "
0126560 * N S L A S t a t i s t i c s
0126600 : * N " ) \r W s ( "
0126620 - - - - P a c k e t s - - -
0126640 - - - - - B y t e s -
0126660 - - - - - - - - - - E r
0126700 r o r s - - - - - - * n " ) \r W
0126720 s ( " L i n e S e n t
0126740 R e c e i v e d S e
0126760 n t R e c e i v e d
0127000 C R C S y n c C o n t
0127020 r o l S t a t e * n " ) \r
0127040 l e t m a x S L A H o s t =
0127060 p b i > > P B I . p u p . w o
0127100 r d s ^ 2 \r l e t m a x S L A
0127120 L i n e = p b i > > P B I .
0127140 p u p . w o r d s ^ ( m a x 376 001
0127160 \0 332 026 S L A H o s t + 3 ) \r f o
0127200 r l i n e = 0 t o m a
0127220 x S L A L i n e d o \r [
0127240 \r l e t s s = l v
0127260 p b i > > P B I . p u p . w o r
0127300 d s ^ ( m a x S L A H o s t + 4
0127320 + l e n S L A S t a t s * l i n
0127340 e ) \r i f s s > > S L A
0127360 S t a t s . s t a t e e q s
0127400 l a L i n e M i s s i n g l o
0127420 o p \r P u t T e m p l a t
0127440 e ( d s p , " $ 3 O $ 9 E D $
0127460 9 E D $ 1 0 E D $ 1 0 E D $
0127500 6 D $ 6 D $ 6 D $ S
0127520 * n " , \r l i n e , l
0127540 v s s > > S L A S t a t s . t
0127560 r a n 376 001 \0 312 ] s m i t P a c k
0127600 e t s , l v s s > > S L A S
0127620 t a t s . r e c e i v e P a c k
0127640 e t s , \r l v s s > >
0127660 S L A S t a t s . t r a n s m i
0127700 t B y t e s , l v s s > > S
0127720 L A S t a t s . r e c e i v e B
0127740 y t e s , \r s s > > S L
0127760 A S t a t s . b a d C R C , s
0130000 s > > S L A S t a t s . i n p u
0130020 t O v e r r u n , \r s s
0130040 > > S L A S t a t s . l i n e C
0130060 o n t r o l E r r o r , \r
0130100 s e l e c t o n s s > > S L
0130120 A S t a t s . s t a t e i n t
0130140 o \r [ \r
0130160 c a s e s l a 376 001 \0 023 346 L i n
0130200 e D o w n : " D o w n " \r
0130220 c a s e s l a L i n e
0130240 U p : " U p " \r c
0130260 a s e s l a L i n e L o o p e
0130300 d B a c k : " L o o p e d b
0130320 a c k " \r d e f a u
0130340 l t : " ? " \r ] )
0130360 \r ] \r W s ( " * n R o u t
0130400 i n g t a b l e : * n " ) \r f
0130420 o r i = 1 t o 4 d o
0130440 W s ( " H o s t L i n e H
0130460 o p s " ) \r l e t c o
0130500 u n t = 0 \r f o r i =
0130520 1 t o m a x S L A H o s t
0130540 d o \r [ \r l e t r
0130560 t e = l v p b i > > 376 001 \0
0130600 216 371 P B I . p u p . w o r d s ^
0130620 ( 2 + i ) \r i f r t e >
0130640 > S L A R T E . h o p C n t n
0130660 e # 3 7 7 t h e n \r
0130700 [ \r P u t T e m
0130720 p l a t e ( d s p , " $ S $ 3
0130740 O $ 3 O $ 3 D " , ( c
0130760 o u n t r e m 4 e q 0 ?
0131000 " * n " , " " ) ,
0131020 \r i , r t e > >
0131040 S L A R T E . l i n e , r t e
0131060 > > S L A R T E . h o p C n t )
0131100 \r c o u n t = c
0131120 o u n t + 1 \r ] \r
0131140 ] \r P u t s ( d s p , $
0131160 * n ) \r ] \r \f \r / / - - - - - -
0131200 - - 376 001 \0 321 335 - - - - - - - - -
0131220 - - - - - - - - - - - - - - - -
*
0131300 - - - - - - - - - - \r a n d O
0131320 t h e r S p i g o t ( p b i )
0131340 b e E n q u e u e ( s p i g o
0131360 t Q , p b i ) \r / / - - - - -
0131400 - - - - - - - - - - - - - - - -
*
0131500 - - - - - - \r \r / / - - - - - -
0131520 - - - - - - - - - - - - - - - -
*
0131600 - - - - - - - 376 001 \0 < 340 - - - -
0131620 - - - - - - - - - - \r a n d O
0131640 t h e r S p i g o t P r o c e s
0131660 s ( ) b e \r / / - - - - - - -
0131700 - - - - - - - - - - - - - - - -
*
0132000 - - - - \r [ \r w h i l e s p i
0132020 g o t Q ! 0 e q 0 d o B
0132040 l o c k ( ) \r l e t p b i =
0132060 D e q u e u e ( s p i g o t Q
0132100 ) \r l e t s t a r t B y t e
0132120 = 0 \r s w i t c h o n p b i
0132140 > > P B I . p u p . t y p e i
0132160 n t o \r [ \r c a s e
0132200 t y p e A b o r t : \r 376 001 \0 a
0132220 330 [ \r W
0132240 s ( " [ A b o r t ] " ) \r
0132260 s t a r t B y t e =
0132300 3 \r e n d c a s e \r
0132320 ] \r c a s e
0132340 t y p e E r r o r : \r
0132360 [ \r W s ( " [ E r
0132400 r o r ] " ) \r s t
0132420 a r t B y t e = 2 5 \r
0132440 e n d c a s e \r
0132460 ] \r c a s e t y p e I
0132500 n t e r r u p t : \r
0132520 [ \r W s ( " [ I n t
0132540 e r r u p t ] " ) \r
0132560 s t a r t B y t e = 3 \r
0132600 e n d c a s e \r
0132620 376 \0 264 \r 204 ] \r ] \r i
0132640 f s t a r t B y t e n e 0
0132660 t h e n \r [ \r f o
0132700 r i = s t a r t B y t e
0132720 t o p b i > > P B I . p u p .
0132740 l e n g t h - p u p O v B y t e
0132760 s d o \r P u t s (
0133000 d s p , p b i > > P B I . p u p
0133020 . b y t e s ^ i ) \r P u t
0133040 s ( d s p , $ * N ) \r ]
0133060 \r R e l e a s e P B I ( p b i )
0133100 \r ] r e p e a t \r 377 \0 \0 P u p
0133120 T e s t A l A . a s m \0 373 224 024 030
0133140 B \0 \0 376 001 \0 207 g ; P u p T e s
0133160 t A l a . a s m - A l t o
0133200 V e r s i o n \r ; C o p y r i
0133220 g h t X e r o x C o r p o r
0133240 a t i o n 1 9 7 9 \r ; L a s
0133260 t m o d i f i e d J u l y
0133300 2 7 , 1 9 7 8 2 : 3 1 P
0133320 M b y B o g g s \r \r . e n t
0133340 U B l o c k E q \r . e n t B
0133360 l o c k E q \r . e n t U P u p
0133400 C h e c k s u m \r \r . e n t M
0133420 u l D i v \r . e n t D o u b l
0133440 e U s c \r . e n t M u l P l u
0133460 s 3 2 x 1 6 \r . e n t D i v i
0133500 d e 3 2 x 1 6 \r . e n t U p d
0133520 a t e A v e r a g e \r \r ; B c
0133540 p l r u n t i 376 001 \0 262 314 m e
0133560 s t a t i c s \r g e t f r a m e
0133600 = 3 7 0 \r s t o r e a r g s
0133620 = 3 6 7 \r r e t u r n =
0133640 3 6 6 \r \r \t . s r e l \r \r U B l
0133660 o c k E q : \t . U B l o c k E q
0133700 \r B l o c k E q : \t . B l o c k
0133720 E q \r U P u p C h e c k s u m :
0133740 \t . U P u p C h e c k s u m \r \r
0133760 M u l D i v : \t \t . M u l D i v
0134000 \r D o u b l e U s c : \t . D o u
0134020 b l e U s c \r M u l P l u s 3 2
0134040 x 1 6 : \t . M u l P l u s 3 2 x
0134060 1 6 \r D i v i d e 3 2 x 1 6 : \t
0134100 . D i v i d e 3 2 x 1 6 \r U p d
0134120 a t e A v e r a g e : \t . U p d
0134140 a t e A v e r a g e \r \r \t 376 001 \0
0134160 214 232 . n r e l \r \r ; U B l o c
0134200 k E q ( a d r 1 , a d r 2 , c o
0134220 u n t ) - M i c r o c o d e
0134240 v e r s i o n \r ; C o m p a
0134260 r e t h e c o u n t w o r
0134300 d s s t a r t i n g a t a
0134320 d r 1 w i t h t h e c o r
0134340 r e s p o n d i n g \r ; w o r
0134360 d s s t a r t i n g a t a
0134400 d r 2 , a n d r e t u r n
0134420 t r u e i f f a l l t h e
0134440 c o r r e s p o n d i n g \r ;
0134460 w o r d s a r e e q u a l
0134500 . \r \r . U B l o c k E q : \r \t s
0134520 t a 3 1 2 \r \t l d a 3
0134540 3 2 \t \t ; g e t c o u n t
0134560 \r \t 376 001 \0 9 < # 6 6 0 0 0 \t \t \t
0134600 ; c a l l m i c r o c o d e
0134620 \r \t m o v 3 3 s z r \t \t ;
0134640 a c 3 = 0 i f a l l
0134660 i s w e l l \r \t s u b 0 0
0134700 s k p \r \t a d c 0 0 \r \t
0134720 l d a 3 1 2 \r \t j m p 1
0134740 3 \r \r ; B l o c k E q ( a d
0134760 r 1 , a d r 2 , c o u n t ) -
0135000 A s s e m b l y l a n g u a
0135020 g e v e r s i o n \r ; C o m
0135040 p a r e t h e c o u n t w
0135060 o r d s s t a r t i n g a t
0135100 a d r 1 w i t h t h e c
0135120 o r r e s p o n d i n g \r ; w
0135140 o r d s s t a r t i n g a t
0135160 a d r 2 , 376 001 \0 362 372 a n d
0135200 r e t u r n t r u e i f f
0135220 a l l t h e c o r r e s p o
0135240 n d i n g \r ; w o r d s a r
0135260 e e q u a l . \r \r . B l o c k
0135300 E q : \r \t s t a 3 1 2 \r \t
0135320 s t a 0 2 2 \t \t ; S t o
0135340 r e a d r 1 \r \t m o v 1 3
0135360 \t \t \t ; a c 3 _ a d r 2 \r
0135400 \r ; C o m p a r e t h e f
0135420 i r s t ( c o u n t m o d
0135440 8 ) w o r d s o n e a t
0135460 a t i m e \r b l e q 1 : \t l d
0135500 a 0 3 2 \t \t ; S e e i
0135520 f c o u n t m o d 8 =
0135540 0 \r \t l d a 1 c 7 \r \t a n d
0135560 # 0 1 s n r \r \t 376 001 \0 4
0135600 357 j m p b l e q 2 \t \t ; Y e
0135620 s , g o t o f a s t l o
0135640 o p \r \t l d a 0 @ 2 2 \t \t
0135660 ; N o , d o s l o w c o
0135700 m p a r e o f o n e w o r
0135720 d \r \t l d a 1 0 3 \r \t s e
0135740 0 1 \r \t j m p b l e q 5
0135760 \t \t ; N o t e q u a l , r
0136000 e t u r n f a l s e \r \t i s z
0136020 2 2 \t \t \t ; E q u a l ,
0136040 i n c r e m e n t a d d r e s
0136060 s e s \r \t i n c 3 3 \r \t d s
0136100 z 3 2 \t \t \t ; D e c r e m
0136120 e n t a n d t e s t c o u
0136140 n t \r \t j m p b l e q 1 \r \r
0136160 ; S e t u p f o r f a s
0136200 t 376 001 \0 ^ ] l o o p \r b l e q
0136220 2 : \t l d a 0 3 2 \t \t ;
0136240 C o m p u t e c o u n t / 8 \r
0136260 \t m o v z r 0 0 \r \t m o v z
0136300 r 0 0 \r \t m o v z r 0 0
0136320 s n r \r \t j m p b l e q 4
0136340 \t \t ; L e s s t h a n 8
0136360 w o r d s i n b l o c k \r \t
0136400 s t a 0 3 2 \t \t ; S t o
0136420 r e c o u n t / 8 \r \t l d a
0136440 0 2 2 \t \t ; G e t c u r
0136460 r e n t a d r 1 \r \f \r ; F a
0136500 s t l o o p . a c 0 / a
0136520 d r 1 , a c 3 / a d r 2 ,
0136540 c o u n t i n f r a m e t
0136560 e m p 3 . \r ; T h e p o r
0136600 t i o n i 376 001 \0 9 \n n s i d e
0136620 d i r . . . e i r i s n o
0136640 n - r e e n t r a n t d u e
0136660 t o t h e u s e \r ; o f
0136700 s a v e 2 . \r b l e q 3 : \t d i
0136720 r \t \t \t ; I n t e r l o c k
0136740 n o n - r e e n t r a n t p o
0136760 r t i o n \r \t s t a 2 s a v
0137000 e 2 \t \t ; S a v e f r a m e
0137020 p o i n t e r \r \t m o v 0
0137040 2 \t \t \t ; a c 2 _ a d r 1
0137060 \r \r \t l d a 0 0 2 \t \t ;
0137100 C o m p a r e 8 w o r d s ,
0137120 t o b l e q 6 i f f a i
0137140 l \r \t l d a 1 0 3 \r \t s e
0137160 0 1 \r \t j m p b l e q 6
0137200 \r \r \t l d a 0 1 376 001 \0 226 212
0137220 2 \r \t l d a 1 1 3 \r \t s e
0137240 0 1 \r \t j m p b l e q 6
0137260 \r \r \t l d a 0 2 2 \r \t l d
0137300 a 1 2 3 \r \t s e 0 1 \r
0137320 \t j m p b l e q 6 \r \r \t l d
0137340 a 0 3 2 \r \t l d a 1 3
0137360 3 \r \t s e 0 1 \r \t j m p
0137400 b l e q 6 \r \r \t l d a 0 4
0137420 2 \r \t l d a 1 4 3 \r \t s
0137440 e 0 1 \r \t j m p b l e q
0137460 6 \r \r \t l d a 0 5 2 \r \t l
0137500 d a 1 5 3 \r \t s e 0 1
0137520 \r \t j m p b l e q 6 \r \r \t l
0137540 d a 0 6 2 \r \t l d a 1
0137560 6 3 \r \t s e 0 1 \r \t j m
0137600 p b l e q 6 \r \r \t l d a 0
0137620 376 001 \0 L 325 7 2 \r \t l d a 1
0137640 7 3 \r \t s e 0 1 \r \t j m
0137660 p b l e q 6 \r \r \t l d a 0
0137700 c 1 0 \r \t a d d 0 3 \t \t \t ;
0137720 I n c r e m e n t a d r 2
0137740 b y 8 \r \t a d d 2 0 \t \t \t
0137760 ; I n c r e m e n t a d r 1
0140000 b y 8 , m o v e t o a
0140020 c 0 \r \t l d a 2 s a v e 2 \t
0140040 \t ; R e c o v e r f r a m e
0140060 p o i n t e r \r \t e i r \t \t \t
0140100 ; N o w r e e n t r a n t \r
0140120 \t d s z 3 2 \t \t \t ; D e c
0140140 r e m e n t a n d t e s t
0140160 c o u n t \r \t j m p b l e q
0140200 3 \t \t ; M o r e t o d o \r
0140220 \r b l e q 376 001 \0 ! * 4 : \t m k m
0140240 i n u s o n e 0 0 s k p \t
0140260 ; H e r e t o r e t u r n
0140300 t r u e \r b l e q 5 : \t m k
0140320 z e r o 0 0 \t \t ; H e r e
0140340 t o r e t u r n f a l s e
0140360 \r \t l d a 3 1 2 \r \t j m p
0140400 1 3 \r \r b l e q 6 : \t l d a
0140420 2 s a v e 2 \t \t ; H e r e
0140440 t o r e t u r n f a l s e
0140460 w h e n \r \t e i r \t \t \t ;
0140500 i n s i d e f a s t l o o p
0140520 \r \t j m p b l e q 5 \r \r c 7 :
0140540 \t 7 \r c 1 0 : \t 1 0 \r s a v e 2
0140560 : \t 0 \r \r ; P u p C h e c k s
0140600 u m m i c r o c o d e i n t
0140620 e r f a c e \r ; m 376 001 \0 ~ \0 i
0140640 c r o c o d e d r e p l a c e
0140660 m e n t f o r P u p C h e c
0140700 k s u m p r o c e d u r e i
0140720 n P u p A l 1 a . a s m \r \r .
0140740 U P u p C h e c k s u m : \r \t s
0140760 t a 3 1 2 \r \t m o v 0
0141000 1 \t \t \t ; a d d r e s s i n
0141020 A C 1 f o r m i c r o c o
0141040 d e \r \t m o v 0 3 \r \t l d a
0141060 3 0 3 \t \t ; g e t p u
0141100 p l e n g t h i n b y t e
0141120 s \r \t n e g 3 3 \t \t \t ; c
0141140 o m p u t e # w o r d s e
0141160 x c l u s i v e o f c h e c
0141200 k s u m \r \t c o m z r 3 3 \t
0141220 \t ; = ( # b y t e s 376
0141240 001 \0 u : - 1 ) / 2 \r \t m k z e r
0141260 o 0 0 \t \t ; i n i t c h
0141300 e c k s u m \r \t # 6 4 0 0 0 \t \t
0141320 \t ; c a l l m i c r o c o d
0141340 e \r \t l d a 3 1 2 \r \t j m
0141360 p 1 3 \r \r \r ; M u l D i v
0141400 ( a , b , c ) \r ; r e t u
0141420 r n s t h e u n s i g n e d
0141440 v a l u e ( a * b ) / c \r \r
0141460 . M u l D i v : \r \t s t a 3
0141500 1 2 \r \t m o v 2 3 \r \t m o
0141520