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