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