$ 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