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