$ 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