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