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