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