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