$ od -c -N 50000 [Indigo]<AltoSource>EtherBoot.dm!1 0000000 377 \0 \0 E t h e r B o o t L o a d 0000020 e r . a s m \0 373 233 + S 335 \0 \0 376 001 0000040 \0 264 300 ; E t h e r B o o t L o 0000060 a d e r . a s m - - A l t o 0000100 E t h e r n e t b o o t l 0000120 o a d e r \r ; I m p l e m e n 0000140 t e d ( w i t h m u c h b 0000160 l o o d a n d s w e a t ) 0000200 b y E . A . T a f t , J 0000220 u l y 1 9 7 6 . \r ; C o p y 0000240 r i g h t X e r o x C o r p 0000260 o r a t i o n 1 9 7 9 , 1 9 0000300 8 3 \r ; L a s t m o d i f i 0000320 e d J u n e 3 0 , 1 9 8 3 0000340 1 : 4 2 P M b y B o g 0000360 g s \r \r . e n t b o o t L o a 0000400 d e r P a c k e t \r . e n t m 0000420 a y D a y P a c k e t \r \r . s r 0000440 e l \r 376 001 \0 035 006 \r b o o t L o a 0000460 d e r P a c k e t : . b o o t 0000500 L o a d e r P a c k e t \r m a y 0000520 D a y P a c k e t : . m a y D 0000540 a y P a c k e t \r \r . n r e l \r 0000560 \r ; F o r m a t o f a n 0000600 E t h e r n e t - e n c a p s u 0000620 l a t e d P u p \r e t h e r A 0000640 d r = 0 \t \t ; D e s t i n 0000660 a t i o n / s o u r c e b y t 0000700 e s \r e t h e r T y p e = 1 0000720 \t \t ; E t h e r n e t t y p 0000740 e w o r d \r p u p L e n g t h 0000760 = 2 \t \t ; P u p l e n g 0001000 t h \r p u p T y p e = 3 \t \t 0001020 ; T r a n s p o r t c o n t 0001040 r o l a n d 376 001 \0 200 1 t y p 0001060 e \r p u p I D = 4 \t \t ; P 0001100 u p I D ( 2 w o r d s ) \r 0001120 p u p D N e t H o s t = 6 \t 0001140 \t ; P u p d e s t i n a t i 0001160 o n n e t / h o s t \r p u p D 0001200 S o c k e t = 7 \t \t ; P u 0001220 p d e s t i n a t i o n s o 0001240 c k e t ( 2 w o r d s ) \r p 0001260 u p S N e t H o s t = 1 1 \t 0001300 ; P u p s o u r c e n e t 0001320 / h o s t \r p u p S S o c k e t 0001340 = 1 2 \t \t ; P u p s o u 0001360 r c e s o c k e t \r p u p C o 0001400 n t e n t s = 1 4 \t ; P u 0001420 p c o n t e n t s s t a r t 0001440 h e r e \r \r t y p e B r 376 001 \0 0001460 z } e a t h O f L i f e = 6 0001500 0 2 \t ; E t h e r n e t t y 0001520 p e f o r a b o o t l o 0001540 a d e r p a c k e t \r t y p e 0001560 P u p = 1 0 0 0 \t \t ; E t 0001600 h e r n e t t y p e f o r 0001620 a P u p \r t y p e M a y d a y 0001640 = 2 4 4 \t ; P u p t y p 0001660 e f o r b o o t f i l e 0001700 r e q u e s t \r s o c k e t M i 0001720 s c S e r v i c e s = 4 \t ; 0001740 S o c k e t t o w h i c h 0001760 r e q u e s t s h o u l d 0002000 b e s e n t \r s o c k e t E F 0002020 T P R e c e i v e r = 2 0 \t 0002040 ; O u r E F T P r e c e i 0002060 v e 376 001 \0 360 021 r s o c k e t \r 0002100 \r p a g e 0 o r i g i n = 3 0002120 \t \t ; W h e r e p a g e 0 0002140 p o r t i o n o f l o a d 0002160 e r r u n s \r p a g e 1 o r i 0002200 g i n = 6 2 4 \t ; W h e r 0002220 e p a g e 1 p o r t i o n 0002240 o f l o a d e r w i l l 0002260 r u n \r \r ; E t h e r n e t 0002300 c o n t r o l w o r d a d d 0002320 r e s s e s \r e P L o c = 6 0002340 0 0 \r e B L o c = 6 0 1 \r e 0002360 E L o c = 6 0 2 \r e L L o c 0002400 = 6 0 3 \r e I C L o c = 0002420 6 0 4 \r e I P L o c = 6 0 5 0002440 \r e O C L o c = 6 0 6 \r e O 0002460 P L o c = 376 001 \0 224 252 6 0 7 \r 0002500 e H L o c = 6 1 0 \r \r ; C 0002520 o n v e n i e n t c o n s t a 0002540 n t f o r a c c e s s i n g 0002560 E t h e r n e t c o n t r o 0002600 l w o r d s b y \r ; d i s 0002620 p l a c e m e n t a d d r e s 0002640 s i n g \r e B a s e = 7 7 7 0002660 \r \f \r ; T h e E t h e r n e 0002700 t B o o t L o a d e r . \r ; 0002720 T h e f i r s t t w o w 0002740 o r d s a r e r e s e r v e 0002760 d f o r t h e E t h e r n 0003000 e t h e a d e r . \r ; T h e 0003020 A l t o j u m p s t o t 0003040 h e t h i r d w o r d o f 0003060 t h e p a c k e t 376 001 \0 303 0003100 256 a f t e r r e c e i p t . \r 0003120 \r . b o o t L o a d e r P a c k 0003140 e t : \t ; A b s o l u t e a 0003160 d d r e s s = 1 a t r u 0003200 n t i m e \r \t 0 \t \t ; D e s t 0003220 i n a t i o n / s o u r c e ( 0003240 f i l l e d i n a t r u n 0003260 t i m e ) \r \t t y p e B r e a t 0003300 h O f L i f e \r \r ; T h e f 0003320 o l l o w i n g c o d e r u 0003340 n s o n l y i n p a g e 0003360 0 a n d n e v e r m i g r 0003400 a t e s t o p a g e 1 . \r 0003420 p a g e 0 i m a g e : \t ; A b 0003440 s o l u t e a d d r e s s = 0003460 3 a t r u n t i m e \r \r ; 0003500 376 001 \0 016 025 S e t t h e p a 0003520 r a m e t e r t h a t d e t 0003540 e r m i n e s t h e d e s i 0003560 r e d b o o t f i l e \r \t l 0003600 d a 0 @ c 1 7 7 0 3 5 \t \t ; 0003620 G e t k e y b o a r d b i 0003640 t s \r \t c o m 0 0 \t \t \t ; 0003660 T u r n t h e m r i g h t 0003700 s i d e u p \r \t s t a 0 . 0003720 m a y D a y P a c k e t + p u p 0003740 I D + 1 ; U s e a s l o 0003760 w 1 6 b i t s o f P u p 0004000 I D \r \r ; C o r r e c t a 0004020 l l m e m o r y p a r i t y 0004040 b y r e a d i n g a n d 0004060 w r i t i n g a l l w o r d 0004100 s i n m 376 001 \0 200 372 e m o r y 0004120 \r ; ( n o t e t h a t i n 0004140 t e r r u p t s a r e o f f 0004160 , s o t h e p a r i t y 0004200 e r r o r s w o n ' t c a u 0004220 s e t r o u b l e ) . \r ; E 0004240 t h e r B o o t p r o c e d u 0004260 r e e n t e r s h e r e . \r 0004300 b o o t 0 : \t m k m i n u s o n 0004320 e 0 0 \t \t ; F i r s t s 0004340 o u r c e a d r = 0 ( - 0004360 1 ) \r \t l d a 3 k 1 0 0 0 \t 0004400 \t ; C o u n t = - 1 7 7 0 0004420 0 0 \r \t c o m 3 1 \t \t \t ; 0004440 L a s t d e s t a d r = 0004460 1 7 6 7 7 7 \r \t b l t \r \r ; Z 0004500 e r o s e l e c t e 376 001 \0 ~ 352 0004520 d r e g i o n s i n p a g 0004540 e 1 \r \t m k z e r o 0 0 \r 0004560 \t l d a 1 c 4 2 7 \t \t ; Z 0004600 e r o 4 0 1 - 4 2 7 \r \t l d a 0004620 3 m 2 7 \r \t b l k s \r \t l d 0004640 a 1 c 5 6 7 \t \t ; Z e r o 0004660 4 3 1 - 5 6 7 \r \t l d a 3 0004700 m 1 3 7 \r \t b l k s \r \t l d a 0004720 1 c 7 7 7 \t \t ; Z e r o 6 0004740 0 0 - 7 7 7 \r \t l d a 3 m 2 0004760 0 0 \r \t b l k s \r \r ; C o p y 0005000 t o p p a r t o f b o o 0005020 t l o a d e r u p t o p 0005040 a g e 1 ( n o t e a c 1 0005060 s t i l l c o n t a i n s 7 0005100 7 7 ) \r \t l d a 0 p P a g e 0005120 376 001 \0 a 271 1 C o d e \r \t l d a 0005140 3 m P a g e 1 C o u n t \r \t b 0005160 l t \r \r ; S e t u p a " 0005200 M a y d a y " p a c k e t t 0005220 o b r o a d c a s t \r \t m o v 0005240 z r 1 1 \t \t ; M a k e m 0005260 a s k = 3 7 7 \r \t s t a 1 0005300 @ . e r r c n t \t \t ; M a x 0005320 a l l o w a b l e o u t p u 0005340 t e r r o r s = 3 7 7 \r \t 0005360 l d a 0 c 3 \t \t ; R e s e 0005400 t E t h e r n e t \r \t s i o \r 0005420 \t a n d 1 0 \t \t \t ; M a s 0005440 k l o c a l e t h e r n e t 0005460 a d d r e s s \r \t l d a 2 0005500 . e B a s e \r \t s t a 0 e H 0005520 L o c - e 376 001 \0 367 267 B a s e 2 0005540 \t ; S t o r e f o r m i c 0005560 r o c o d e \r \t j s r b o o t 0005600 1 \t \t ; M a k e p o i n t e 0005620 r t o o u t p u t p a c k 0005640 e t \r \r ; T h e " M a y d a 0005660 y " p a c k e t t h a t w 0005700 e b r o a d c a s t \r . m a y 0005720 D a y P a c k e t : 0 \t ; D 0005740 e s t i n a t i o n / s o u r c 0005760 e ( f i l l e d i n ) \r k 1 0006000 0 0 0 : \t 1 0 0 0 \t \t ; E t h 0006020 e r n e t p a c k e t t y p 0006040 e = t y p e P u p \r \t 2 2 . 0006060 \t \t ; P u p l e n g t h \r \t 0006100 t y p e M a y d a y \t ; T r a 0006120 n s p o r t c o n 376 001 \0 004 312 t 0006140 r o l / t y p e \r t i m e o u t 0006160 : 0 \t \t ; P u p I D \r \t 0 0006200 \t \t ; \r \t 0 \t \t ; D e s t i 0006220 n a t i o n n e t / h o s t 0006240 ( b r o a d c a s t o r f i 0006260 l l e d i n ) \r \t 0 \t \t ; D 0006300 e s t i n a t i o n s o c k e 0006320 t \r \t s o c k e t M i s c S e r 0006340 v i c e s \r \t 0 \t \t ; S o u r 0006360 c e n e t / h o s t ( f i l 0006400 l e d i n a t r u n t i m 0006420 e ) \r \t 0 \t \t ; S o u r c e 0006440 s o c k e t ( E F T P r e c 0006460 e i v e r ) \r \t s o c k e t E F 0006500 T P R e c e i v e r \r \t - 1 \t \t 0006520 ; N i l c h e c k s u m \r 376 0006540 001 \0 351 220 \r b o o t 1 : \t s t a 0006560 3 e O P L o c - e B a s e 2 0006600 \t ; S e t p o i n t e r t 0006620 o p a c k e t \r \t l d a 1 0006640 e t h e r A d r 3 \r \t a d d 0006660 0 1 \r \t s t a 1 e t h e r 0006700 A d r 3 \t ; S e t E t h e 0006720 r n e t s o u r c e h o s t 0006740 = m e \r \t l d a 1 p u p 0006760 S N e t H o s t 3 \r \t a d d 0007000 0 1 \r \t s t a 1 p u p S N 0007020 e t H o s t 3 \t ; S e t P 0007040 u p s o u r c e h o s t = 0007060 m e \r \t l d a 0 d 1 3 \r \t 0007100 s t a 0 e O C L o c - e B a 0007120 s e 2 \t ; S e t s i z e 0007140 o f p 376 001 \0 234 371 a c k e t \r \f 0007160 \r ; P a g e 0 p o r t i o 0007200 n o f b o o t l o a d e r 0007220 ( c o n t ' d ) \r \r ; L o o 0007240 p h e r e f o r e a c h 0007260 r e t r a n s m i s s i o n o 0007300 f b r o a d c a s t r e q u 0007320 e s t \r b o o t 2 : \t l d a 0 0007340 c 3 \t \t ; R e s e t E t h 0007360 e r n e t \r \t s i o \r \t j s r 0007400 @ . D o E t h e r O u t p u t \t 0007420 ; S e n d p a c k e t o f 0007440 f \r \r ; S e t u p t o r 0007460 e c e i v e r e p l y \r b o o 0007500 t 3 : \t l d a 3 . e B a s e 0007520 \t \t ; F o r a c c e s s i n 0007540 g E t h e r n e 376 001 \0 177 323 t 0007560 c o n t r o l w o r d s \r \t l 0007600 d a 2 c 1 0 0 0 \t \t ; W h 0007620 e r e t o p u t r e p l y 0007640 ( p a g e 2 ) \r \t s t a 2 0007660 e I P L o c - e B a s e 3 \r 0007700 \t l d a 0 d 2 6 9 \t \t ; M 0007720 a x l e n g t h \r \t s t a 0 0007740 e I C L o c - e B a s e 3 \r 0007760 \t s t a 0 @ . m a x L e n g 0010000 t h \r \t m k z e r o 0 0 \t \t 0010020 ; Z e r o p o s t l o c a 0010040 t i o n \r \t s t a 0 e P L o 0010060 c - e B a s e 3 \r \t l d a 0 0010100 c 2 \t \t ; e t h e r I n p u 0010120 t C o m m a n d \r \t s i o \t \t \t 0010140 ; F i r e u p r e c e 376 001 0010160 \0 232 361 i v e r \r \r ; A w a i t 0010200 r e p l y \r b o o t 4 : \t l d 0010220 a 0 e P L o c - e B a s e 0010240 3 \t ; A n y t h i n g h a p 0010260 p e n e d ? \r \t s z 0 0 \r \t 0010300 j m p b o o t 6 \t \t ; Y e 0010320 s \r \t m u l \t \t \t ; N o , w 0010340 a s t e t i m e \r \t d s z t 0010360 i m e o u t \t \t ; T i m e d 0010400 o u t ( a b o u t 1 s e c 0010420 o n d ) ? \r \t j m p b o o t 0010440 4 \t \t ; N o , k e e p w a 0010460 i t i n g \r \t d s z r e t r i 0010500 e s \t \t ; Y e s , t o o m 0010520 a n y r e t r i e s ? \r \t j 0010540 m p b o o t 2 \t \t ; N o , 0010560 s e n 376 001 \0 / 334 d a n o t h e 0010600 r r e q u e s t \r \t l d a 0 0010620 c 3 \t \t ; Y e s , r e s e 0010640 t i n t e r f a c e a n d 0010660 g i v e u p \r \t s i o \r \t j m 0010700 p @ G i v e U p \t \t ; R e t 0010720 u r n t o c a l l e r o r 0010740 l o o p \r \r G i v e U p : \t B 0010760 o m b - D \t \t \t ; O v e r w r 0011000 i t t e n b y E t h e r B o 0011020 o t i f r e t u r n O n F a 0011040 i l \r \r ; H e r e w h e n 0011060 h a v e p o s s i b l e r e 0011100 p l y \r b o o t 6 : \t l d a 3 0011120 c 3 7 7 \t \t ; G o o d i n 0011140 p u t d o n e s t a t u s ? 0011160 \r \t s e 3 0 376 001 \0 y 337 \r \t 0011200 j m p b o o t 3 \t \t ; N o , 0011220 i g n o r e \r \t l d a 0 e 0011240 t h e r T y p e 2 \t ; Y e s 0011260 , i s i t a P u p ? \r \t 0011300 l d a 1 c 1 0 0 0 \r \t s e 0011320 0 1 \r \t j m p b o o t 3 \t 0011340 \t ; N o , i g n o r e \r \t l 0011360 d a 0 p u p T y p e 2 \t \t 0011400 ; Y e s , g e t P u p t 0011420 y p e \r \t a n d 3 0 \r \t l d 0011440 a 3 p u p I D + 1 2 \t \t ; 0011460 G e t s e q u e n c e n u 0011500 m b e r \r \t l d a 1 c 3 0 \t 0011520 \t ; E F T P d a t a ? \r \t s 0011540 n e 0 1 \r \t s z 3 3 \t \t 0011560 \t ; S e q u e n c e n 376 001 \0 0011600 s < u m b e r z e r o ? \r \t 0011620 j m p b o o t 3 \t \t ; N o , 0011640 i g n o r e \r \f \r ; P a g e 0011660 0 p o r t i o n o f b o 0011700 o t l o a d e r ( c o n t ' 0011720 d ) \r \r ; W e g o t a g 0011740 o o d p a c k e t , s e t 0011760 u p f o r t r a n s f e r . 0012000 \r \t l d a 0 e t h e r A d r 0012020 2 \t ; G e t d e s t / s o 0012040 u r c e w o r d \r \t s t a 0 0012060 @ . g o o d D e s t S o u r c 0012100 e \t ; S a v e i t \r \t l d a 0012120 3 . a c k P a c k e t \t ; 0012140 W h e r e w e w i l l b u 0012160 i l d t h e A c k \r \t s t a 0012200 3 376 001 \0 T W @ . e O P L o c 0012220 \t \t ; S e t p o i n t e r 0012240 ( c o u n t a l r e a d y o 0012260 k ) \r \t s t a 3 4 2 6 - a c 0012300 k P a c k e t + D 3 \t ; C u 0012320 r s o r c o o r d i n a t e s 0012340 = ( 5 3 1 , 5 3 1 ) \r \t s t 0012360 a 3 4 2 7 - a c k P a c k e 0012400 t + D 3 \r \t m o v s 0 0 \t 0012420 \t ; S w a p s o u r c e a 0012440 n d d e s t i n a t i o n \r \t 0012460 s t a 0 e t h e r A d r 3 0012500 \t ; S t o r e i n A c k \r 0012520 \t l d a 0 c 1 0 0 0 \t \t ; 0012540 T y p e = P u p \r \t s t a 0012560 0 e t h e r T y p e 3 \r \t l 0012600 d a 0 d 2 376 001 \0 361 \ 2 \t \t ; 0012620 P u p l e n g t h = 2 2 0012640 \r \t s t a 0 p u p L e n g t 0012660 h 3 \r \t i n c 1 0 \t \t \t ; 0012700 P u p t y p e = A c k 0012720 = 3 1 \r \t s t a 0 p u p T 0012740 y p e 3 \r \t l d a 0 p u p 0012760 D N e t H o s t 2 \t ; C o p 0013000 y a n d e x c h a n g e s 0013020 o u r c e a n d \r \t s t a 0 0013040 p u p S N e t H o s t 3 \t ; 0013060 d e s t i n a t i o n p o 0013100 r t s \r \t l d a 0 p u p D S 0013120 o c k e t 2 \r \t s t a 0 p 0013140 u p S S o c k e t 3 \r \t l d a 0013160 0 p u p D S o c k e t + 1 0013200 2 \r \t s t a 0 p u p 376 001 \0 270 0013220 Z S S o c k e t + 1 3 \r \t l d 0013240 a 0 p u p S N e t H o s t 0013260 2 \r \t s t a 0 p u p D N e t 0013300 H o s t 3 \r \t l d a 0 p u 0013320 p S S o c k e t 2 \r \t s t a 0013340 0 p u p D S o c k e t 3 \r \t 0013360 l d a 0 p u p S S o c k e t 0013400 + 1 2 \r \t s t a 0 p u p D 0013420 S o c k e t + 1 3 \r \t d s z 0013440 p u p C o n t e n t s 3 \t ; 0013460 P u p c h e c k s u m = n 0013500 i l ( - 1 ) \r \r ; N o w r 0013520 e a d a n d d i s c a r d 0013540 p a c k e t 0 ( w h i c h 0013560 h a s t h e d i s k b o o 0013600 t l o a d e r ) \r ; a n d 0013620 r 376 001 \0 362 333 e a d p a c k e t 0013640 1 , w h i c h c o n t a i 0013660 n s t h e d a t a d e s t 0013700 i n e d f o r p a g e 0 . 0013720 \r \t j s r @ . D o E t h e r O 0013740 u t p u t \t ; A c k t h e 0013760 p a c k e t w e j u s t g 0014000 o t \r \t i s z @ . s e q N u m 0014020 \t \t ; A d v a n c e t o s 0014040 e q u e n c e n u m b e r 1 0014060 \r \t j s r @ . R e c e i v e E 0014100 F T P P a c k e t \t ; R e a d 0014120 p a c k e t 1 \r \r ; S e t 0014140 u p t o t r a n s f e r 0014160 p a c k e t d a t a i n t o 0014200 p a g e 0 a n d j u m p 0014220 t o r e 376 001 \0 y 223 m a i n i 0014240 n g \r ; b o o t c o d e i 0014260 n p a g e 1 \r \t l d a 0 0014300 p P a g e 2 D a t a \t ; F i r 0014320 s t s o u r c e a d r - 1 0014340 \r \t l d a 1 c 3 7 7 \t \t ; 0014360 L a s t d e s t a d r \r \t c 0014400 o m 1 3 \t \t \t ; - n u m 0014420 b e r o f w o r d s ( 4 0 0014440 0 ) \r \t l d a 2 p P a g e 2 0014460 P a c k e t \t ; W h e r e t 0014500 o s t a r t r e a d i n g 0014520 p a c k e t 2 \r \t j m p @ . 0014540 C o n t i n u e B o o t \t ; J 0014560 u m p t o c o d e i n p 0014600 a g e 1 \r \r \r c 1 7 7 0 3 5 : 0014620 1 7 7 0 3 5 \r d 2 2 376 001 \0 031 362 0014640 : \t 2 2 . \r d 2 6 9 : \t 2 6 9 . 0014660 \r c 4 2 7 : \t 4 2 7 \r c 5 6 7 : 0014700 \t 5 6 7 \r . e O P L o c : e O 0014720 P L o c \r . e B a s e : \r c 7 7 0014740 7 : \t 7 7 7 \r m 2 7 : \t - 2 7 \r 0014760 m 1 3 7 : \t - 1 3 7 \r m 2 0 0 : 0015000 \t - 2 0 0 \r p P a g e 1 C o d e 0015020 : p a g e 1 i m a g e - p a g 0015040 e 0 i m a g e + p a g e 0 o r i 0015060 g i n - 1 \r m P a g e 1 C o u n 0015100 t : p a g e 1 o r i g i n - 1 0015120 0 0 0 \r p P a g e 2 D a t a : 0015140 1 0 0 0 + 1 2 . - 1 \t ; W h e 0015160 r e p a g e 0 d a t a s 0015200 i t s w h e n i n p a g e 0015220 2 \r p P a g e 2 P a c k e t : 0015240 376 001 \0 y 347 1 0 0 0 - 1 2 . \t ; 0015260 W h e r e t o s t a r t 0015300 r e a d i n g p a c k e t 2 0015320 \r . a c k P a c k e t : a c k 0015340 P a c k e t - D \t ; W h e r e 0015360 A c k p a c k e t i s b 0015400 u i l t \r . D o E t h e r O u t 0015420 p u t : D o E t h e r O u t p 0015440 u t - D \r . R e c e i v e E F T 0015460 P P a c k e t : R e c e i v e 0015500 E F T P P a c k e t - D \r . C o 0015520 n t i n u e B o o t : C o n t 0015540 i n u e B o o t - D \r . m a x L 0015560 e n g t h : m a x L e n g t h 0015600 - D \r . g o o d D e s t S o u r 0015620 c e : g o o d D e s t S o u r 0015640 c e - D \r 376 001 \0 O 333 . e r r c n 0015660 t : e r r c n t - D \r . s e q 0015700 N u m : s e q N u m - D \r r e 0015720 t r i e s : 3 0 . \t \t ; M a 0015740 x n u m b e r o f b r o a 0015760 d c a s t r e t r i e s \r \f \r 0016000 ; P a g e 1 p o r t i o n 0016020 o f b o o t p r o g r a m 0016040 \r \r p a g e 1 i m a g e : \r \r \r 0016060 ; A s s e m b l e v a r i a 0016100 b l e s a n d c o n s t a n 0016120 t s h e r e s o t h e y 0016140 c a n b e r e a c h e d \r ; 0016160 f r o m t h e p a g e 0 0016200 c o d e a l s o . \r \r \r ; 0016220 C o n s t a n t s \r c 2 : \t 2 \r 0016240 c 3 : \t 3 \r d 1 3 : 376 001 \0 A ) \t 0016260 1 3 . \r c 3 0 : \t 3 0 \t \t ; t 0016300 y p e E F T P D a t a \r c 3 7 7 0016320 : \t 3 7 7 \r c 1 0 0 0 : \t 1 0 0 0016340 0 \r m d 1 2 : \t - 1 2 . \r \r D 0016360 = p a g e 1 i m a g e - p a g 0016400 e 1 o r i g i n \t ; L o a d 0016420 - r u n t i m e d i s p l a 0016440 c e m e n t \r ; N o t e - \r 0016460 ; T o g e n e r a t e a 0016500 p a g e 1 p c - r e l a t i 0016520 v e a d d r e s s f o r a 0016540 b s o l u t e a d d r e s s 0016560 " X " \r ; w r i t e " X + 0016600 D " . \r ; T o g e n e r a t 0016620 e a n a b s o l u t e ( r 0016640 u n t i m e ) p a g e 1 376 0016660 001 \0 ] 027 a d d r e s s f o r 0016700 l a b e l " X " \r ; w r i 0016720 t e " X - D " . \r \r ; E t h 0016740 e r n e t c o n t r o l w o 0016760 r d s a d d r e s s e s , f 0017000 o r r e f e r e n c i n g r 0017020 e l a t i v e \r ; t o t h e 0017040 p a g e 1 p o r t i o n 0017060 o f t h e b o o t l o a d 0017100 e r . \r r E P L o c = e P L 0017120 o c + D \r r E B L o c = e B 0017140 L o c + D \r r E E L o c = e 0017160 E L o c + D \r r E L L o c = 0017200 e L L o c + D \r r E I C L o c 0017220 = e I C L o c + D \r r E I P L 0017240 o c = e I P L o c + D \r r E 0017260 O C L o 376 001 \0 374 210 c = e O C 0017300 L o c + D \r r E O P L o c = 0017320 e O P L o c + D \r r E H L o c 0017340 = e H L o c + D \r \r ; R a n 0017360 d o m p a g e 1 w o r d s 0017400 w e u s e a s t e m p o 0017420 r a r i e s . \r ; A l l a r 0017440 e a s s u m e d t o b e 0017460 i n i t i a l i z e d t o z 0017500 e r o . \r \r ; 4 0 0 - 4 1 4 0017520 a r e u s e d f o r s c r 0017540 a t c h \r \r a c k P a c k e t 0017560 = 4 3 1 + D \t ; 1 3 . w o 0017600 r d s i n w h i c h A c k 0017620 p a c k e t i s b u i l t 0017640 . \r \t \t \t ; T h i s i s t 0017660 h e c u r s o r 376 001 \0 024 C b 0017700 i t m a p ! \r e r r c n t = 0017720 5 6 4 + D \t \t ; O u t p u t 0017740 e r r o r c o u n t d o w n \r 0017760 r e c r e t = 5 6 5 + D \t \t 0020000 ; R e t u r n f r o m R e 0020020 c e i v e E F T P P a c k e t \r 0020040 s e q N u m = 5 6 6 + D \t \t 0020060 ; C u r r e n t E F T P s 0020100 e q u e n c e n u m b e r \r g 0020120 o o d D e s t S o u r c e = 0020140 5 6 7 + D \t ; E t h e r n e t 0020160 a d d r e s s o f m e / p 0020200 a r t n e r \r m a x L e n g t h 0020220 = 6 1 1 + D \t ; M a x i 0020240 n p u t p a c k e t l e n g 0020260 t h ( 2 6 9 o r 1 2 ) 376 001 0020300 \0 } 022 \r d a l l y T i m e o u t 0020320 = 6 1 2 + D \t ; T i m e o 0020340 u t f o r e n d d a l l y 0020360 i f n o n z e r o \r e n d F 0020400 l a g = 6 1 3 + D \t \t ; Z 0020420 e r o i f p a c k e t w a 0020440 s D a t a , n o n z e r o 0020460 i f E n d \r \r \r . a c k I D 1 0020500 : a c k P a c k e t - D + p u 0020520 p I D + 1 ; P o i n t e r 0020540 t o A c k ' s s e q u e n 0020560 c e n u m b e r \r \f \r ; P a 0020600 g e 1 p o r t i o n o f 0020620 b o o t l o a d e r ( c o n 0020640 t ' d ) \r ; S u b r o u t i n 0020660 e s c a l l e d f r o m b 0020700 o t h 376 001 \0 } 306 p a g e 0 0020720 a n d p a g e 1 \r \r ; R e 0020740 c e i v e E F T P p a c k e 0020760 t \r ; \t 2 / w h e r e t o 0021000 p u t i t i n m e m o r y 0021020 \r ; A c 2 i s u n c h a n 0021040 g e d u p o n r e t u r n . 0021060 \r ; e n d F l a g w i l l 0021100 b e z e r o i f a D a t 0021120 a w a s r e c e i v e d , 0021140 n o n z e r o i f E n d . \r 0021160 ; I f d a l l y T i m e o u 0021200 t i s n o n z e r o , i t 0021220 w i l l b e c o u n t e d 0021240 d o w n a n d t h e \r ; 0021260 r o u t i n e w i l l r e t 0021300 u r n i f i 376 001 \0 205 $ t r 0021320 e a c h e s z e r o . \r \r R e 0021340 c e i v e E F T P P a c k e t : 0021360 \r \t s t a 3 r e c r e t \t \t 0021400 ; S a v e r e t u r n \r \t s 0021420 t a 2 r E I P L o c \t \t ; 0021440 S e t i n p u t p o i n t e 0021460 r \r \r ; A w a i t a n e w 0021500 p a c k e t \r r e c 1 : \t l d 0021520 a 0 m a x L e n g t h \t \t ; 0021540 S e t c o u n t \r \t s t a 0021560 0 r E I C L o c \r \t m k z e r 0021600 o 0 0 \t \t ; Z e r o p o 0021620 s t l o c a t i o n \r \t s t a 0021640 0 r E P L o c \r \t l d a 0 0021660 c 2 \t \t ; e t h e r I n p u 0021700 t C o m m a n d = 2 \r 376 001 \0 0021720 217 266 \t s i o \t \t \t ; F i r e 0021740 u p r e c e i v e r \r r e c 1 0021760 a : \t l d a 0 r E P L o c \t 0022000 \t ; W a i t f o r s o m e 0022020 t h i n g t o h a p p e n \r 0022040 \t m o v s 0 1 s z r \r \t 0022060 j m p r e c 1 b \t \t ; S o m 0022100 e t h i n g h a p p e n e d , 0022120 c h e c k i t \r \t l d a 0 0022140 d a l l y T i m e o u t \t ; 0022160 N o a c t i v i t y y e t , 0022200 c h e c k t i m e o u t \r \t 0022220 s z 0 0 \r \t d s z d a l 0022240 l y T i m e o u t \t ; O n e 0022260 i s s e t , c o u n t i t 0022300 d o w n \r \t j m p r e c 0022320 1 a 376 001 \0 g 216 \t \t ; N o t s 0022340 e t o r n o t y e t t i 0022360 m e d o u t \r \t j m p @ r e 0022400 c r e t \t \t ; T i m e d o u 0022420 t , r e t u r n n o w \r \r ; 0022440 A p a c k e t h a s a r 0022460 r i v e d . A c c e p t i 0022500 f g o o d i n p u t o r 0022520 b u f f e r o v e r r u n . \r 0022540 ; T h i s c o d e i s a 0022560 b i t m y s t e r i o u s 0022600 b e c a u s e t h e w a y 0022620 i t w o r k s i s t o \r ; 0022640 s e t a c 1 = 1 0 0 0 0022660 i f f t h e s t a t u s i 0022700 s a c c e p t a b l e . T 0022720 h i s t h e 376 001 \0 \f 341 n g e 0022740 t s \r ; c o m p a r e d w i 0022760 t h t h e i n c o m i n g 0023000 E t h e r n e t t y p e w h 0023020 i c h s h o u l d b e 1 0 0023040 0 0 . \r r e c 1 b : \t l d a 3 0023060 c 3 7 7 \r \t a n d s 3 1 \t 0023100 \t ; A c 1 _ 1 0 0 0 i f 0023120 f p o s t c o d e = 2 \r 0023140 \t s n e 0 3 \t \t \t ; G o o 0023160 d n o r m a l i n p u t d 0023200 o n e s t a t u s ? \r \t l d 0023220 a 1 c 1 0 0 0 \t \t ; Y e s 0023240 , m a k e i t l o o k l 0023260 i k e p o s t 2 \r \r ; E n 0023300 s u r e t h a t i t i s 0023320 a n E F T P D a t a 376 001 \0 ) 0023340 343 o r E n d f r o m t h 0023360 e c o r r e c t p a r t n e 0023400 r \r \t l d a 0 e t h e r T y 0023420 p e 2 \t ; G e t e t h e r 0023440 n e t t y p e w o r d \r \t s 0023460 e 0 1 \t \t \t ; I s i t 0023500 a P u p ? ( 1 0 0 0 ) \r \t 0023520 j m p r e c 1 \t \t ; N o , 0023540 i g n o r e \r \t l d a 0 e t 0023560 h e r A d r 2 \t ; G e t d 0023600 e s t i n a t i o n / s o u r c 0023620 e w o r d \r \t l d a 1 g o 0023640 o d D e s t S o u r c e \t ; C 0023660 o r r e c t p a r t n e r ? \r 0023700 \t s e 0 1 \r \t j m p r e 0023720 c 1 \t \t ; N o , i g n o r e 0023740 376 001 \0 c b ( s h o u l d r e 0023760 a l l y a b o r t ) \r \t l d a 0024000 0 p u p T y p e 2 \t \t ; 0024020 G e t P u p t y p e \r \t a n 0024040 d 3 0 \r \t l d a 1 c 3 0 0024060 \t \t ; S w i t c h o n i t 0024100 \r \t s u b 0 1 s n r \r \t 0024120 j m p r e c 3 \t \t ; G o t 0024140 D a t a p a c k e t \r \t i n c 0024160 1 0 \r \t i n c 0 0 s z 0024200 r \t \t ; S k i p i f E n d 0024220 \r \t j m p r e c 1 \t \t ; N 0024240 e i t h e r D a t a n o r 0024260 E n d , i g n o r e \r r e c 3 0024300 : \t s t a 1 e n d F l a g \t 0024320 \t ; S e t n o n z e r o i 0024340 f t h i s 376 001 \0 022 s i s a 0024360 n E n d \r \r ; G o t a n 0024400 E F T P D a t a o r e n d 0024420 p a c k e t . \r ; N o w c 0024440 h e c k s e q u e n c e n u 0024460 m b e r a n d s e n d A c 0024500 k \r \t l d a 0 p u p I D + 1 0024520 2 \t \t ; G e t p a c k e t 0024540 s e q u e n c e n u m b e r 0024560 \r \t s t a 0 @ . a c k I D 1 0024600 \t \t ; S e t i t f o r p 0024620 o s s i b l e A c k \r \t l d a 0024640 1 s e q N u m \t \t ; G e t 0024660 e x p e c t e d s e q u e n 0024700 c e n u m b e r \r \t s u b 1 0024720 0 s n r \t \t ; I s i t 0024740 t h e r i g h t o 376 001 \0 357 S 0024760 n e ? \r \t j m p r e c 4 \t \t 0025000 ; Y e s \r \t i n c 0 0 s 0025020 n r \t \t ; N o , r e t r a n 0025040 s m i s s i o n o f l a s t 0025060 o n e ? \r \t j s r D o E t 0025100 h e r O u t p u t \t ; Y e s , 0025120 a c k i t \r \t j m p r e c 0025140 1 \t \t ; I g n o r e i t a 0025160 n d l o o k f o r n e x t 0025200 \r \r ; H e r e w h e n g o 0025220 t a n e w p a c k e t \r r 0025240 e c 4 : \t i s z s e q N u m \t 0025260 \t ; A d v a n c e s e q u e 0025300 n c e n u m b e r \r \t l d a 0025320 3 r e c r e t \t \t ; R e s t 0025340 o r e r e t u r n p c \r \t \t 0025360 376 001 \0 032 J \t \t ; F a l l i n 0025400 t o D o E t h e r O u t p u t 0025420 \r \f \r ; P a g e 1 p o r t 0025440 i o n o f b o o t l o a d 0025460 e r ( c o n t ' d ) \r \r ; D 0025500 o E t h e r n e t o u t p u 0025520 t \r ; A s s u m e s t h e 0025540 p a c k e t a n d e O P L o 0025560 c a n d e O C L o c a r e 0025600 s e t u p \r ; D o e s n 0025620 o t c l o b b e r a c 2 \r \r 0025640 D o E t h e r O u t p u t : \r \t 0025660 l d a 1 k 7 7 7 \r \t n e g l 0025700 1 0 \t \t ; D e l a y a b 0025720 o u t 2 m s t o e n s u 0025740 r e t h a t \r \t i n c 0 0 0025760 s z r \t 376 001 \0 @ > \t ; o u 0026000 r a c k i s h e a r d \r k 0026020 7 7 7 : \t 7 7 7 \t \t \t ; ( O 0026040 t h e r w i s e k n o w n a 0026060 s " j m p . - 1 " ) \r \t s t 0026100 a 0 r E P L o c \t \t ; Z e 0026120 r o p o s t l o c a t i o n 0026140 \r \t s t a 0 r E L L o c \t \t 0026160 ; Z e r o l o a d l o c a 0026200 t i o n \r \t s t a 0 r E I C 0026220 L o c \t \t ; Z e r o i n p u 0026240 t c o u n t l o c a t i o n 0026260 \r \t m k o n e 0 0 \t \t ; e 0026300 t h e r O u t p u t C o m m a n 0026320 d = 1 \r \t s i o \t \t \t ; S 0026340 t a r t o u t p u t \r \t l d a 0026360 0 r E P L o c \t 376 001 \0 ' 221 \t 0026400 ; W a i t f o r s o m e t 0026420 h i n g t o h a p p e n \r \t 0026440 s n z 0 0 \r \t j m p . - 0026460 2 \r \t s n e 0 1 \t \t \t ; G 0026500 o o d o u t p u t d o n e ? 0026520 ( = 7 7 7 ) \r \t j m p 0026540 0 3 \t \t ; Y e s , d o n e 0026560 , r e t u r n \r \t d s z e r 0026600 r c n t \t \t ; N o , c h e c 0026620 k e r r o r c o u n t e r \r 0026640 \t j m p D o E t h e r O u t 0026660 p u t \t ; R e t r y \r \r ; I 0026700 f w e g e t t o o m a n 0026720 y e r r o r s , p r o b a b 0026740 l y t h e E t h e r n e t 0026760 i n t e r f a c e \r ; i s 376 0027000 001 \0 C N b r o k e n , s o w 0027020 e s h o u l d r e s e t a 0027040 n d g i v e u p l e s t 0027060 w e p o l l u t e \r ; t h e 0027100 E t h e r n e t i n d e f i 0027120 n i t e l y \r B o m b : \t l d a 0027140 0 c 3 \t \t ; e t h e r R e 0027160 s e t C o m m a n d \r \t s i o \r 0027200 c 4 0 0 : \t 4 0 0 \t \t \t ; ( O 0027220 t h e r w i s e k n o w n a 0027240 s " j m p . " ) \r \f \r ; * 0027260 * M a i n p a g e 1 p r 0027300 o g r a m * * \r ; C o n t r 0027320 o l r e s u m e s h e r e 0027340 w h e n t h e p a g e 0 0027360 c o d e i s f i n i s h e d 0027400 . \r ; 376 001 \0 \a z W h e n w e 0027420 g e t h e r e , t h e s 0027440 e c o n d d a t a p a c k e 0027460 t o f t h e t r a n s f e 0027500 r h a s \r ; b e e n r e c 0027520 e i v e d ( t h e o n e d 0027540 e s t i n e d f o r p a g e 0027560 0 ) a n d n o w r e s i 0027600 d e s \r ; i n p a g e 2 , 0027620 a n d t h e a c ' s a r 0027640 e s e t u p s u c h t h 0027660 a t b l t w i l l m o v e 0027700 \r ; t h e d a t a t o p 0027720 a g e 0 . T h i s c o d 0027740 e ' s r e s p o n s i b i l i 0027760 t y i s t o r e c e i v e 0030000 \r ; t h e r e 376 001 \0 S L m a 0030020 i n i n g p a g e s o f t 0030040 h e t r a n s f e r a n d 0030060 s t o r e t h e m s t a r t 0030100 i n g a t \r ; p a g e 2 . 0030120 T h e f o l l o w i n g 0030140 v a r i a b l e s a r e a l 0030160 r e a d y s e t u p : \r ; \t 0030200 g o o d D e s t S o u r c e \t e 0030220 x p e c t e d E t h e r n e t 0030240 d e s t / s o u r c e w o r 0030260 d \r ; \t s e q N u m \t \t t h e 0030300 n e x t e x p e c t e d E F 0030320 T P s e q u e n c e n u m b 0030340 e r ( 2 ) \r ; \t a c 2 \t \t p o 0030360 i n t s t o p l a c e t o 0030400 s t o r e n e x t p a 376 001 0030420 \0 365 267 c k e t \r ; \t \t \t ( 1 0 0 0030440 0 m i n u s t h e o f f s 0030460 e t p u p C o n t e n t s ) \r 0030500 ; A l s o , a n A c k p 0030520 a c k e t h a s a l r e a d 0030540 y b e e n b u i l t a t 0030560 a c k P a c k e t . \r \r C o n t 0030600 i n u e B o o t : \r \t b l t \t \t 0030620 \t ; C o p y d a t a t o 0030640 p a g e 0 \r \r ; T h e m a 0030660 i n l o o p o f t h e E 0030700 F T P b o o t l o a d s e 0030720 q u e n c e . \r ; F i r s t , 0030740 s a v e a w a y t h e s 0030760 t u f f a t t h e e n d 0031000 o f t h e p r e v i o u s 0031020 p a g 376 001 \0 260 017 e \r ; t h a t 0031040 w i l l g e t c l o b b e 0031060 r e d b y t h e n e w P 0031100 u p ' s h e a d e r . \r ; L 0031120 o c a t i o n s 4 0 0 - 4 1 3 0031140 a r e u s e d f o r s c 0031160 r a t c h . \r b o o t l p : \t m 0031200 k m i n u s o n e 0 0 \t \t ; 0031220 C o m p u t e f i r s t s 0031240 o u r c e a d r - 1 \r \t a d 0031260 d 2 0 \r \t l d a 3 m d 1 0031300 2 \t \t ; - 1 2 . ( n u m b e 0031320 r o f w o r d s ) \r \t l d a 0031340 1 c 3 7 7 \t \t ; C o m p u 0031360 t e p o i n t e r t o l a 0031400 s t w o r d o f \r \t s u b 0031420 3 1 \t \t \t ; 376 001 \0 202 356 s a 0031440 v e a r e a \r \t b l t \t \t \t ; 0031460 S a v e t h e d a t a \r \r 0031500 ; N o w r e c e i v e t h 0031520 e n e x t D a t a ( o r 0031540 E n d ) p a c k e t \r \t j s r 0031560 R e c e i v e E F T P P a c k 0031600 e t \r \r ; N o w r e s t o r 0031620 e t h e c l o b b e r e d 0031640 r e g i o n \r \t l d a 0 c 3 0031660 7 7 \t \t ; P o i n t e r t o 0031700 s t a r t o f s a v e a 0031720 r e a - 1 \r \t l d a 3 m d 0031740 1 2 \t \t ; - 1 2 . ( n u m b 0031760 e r o f w o r d s ) \r \t c o 0032000 m 3 1 \t \t \t ; C o m p u t 0032020 e p o i n t e r t o 376 001 \0 0032040 272 241 l a s t w o r d o f \r \t 0032060 a d d 2 1 \t \t \t ; c l o 0032100 b b e r e d r e g i o n \r \t b 0032120 l t \t \t \t ; M o v e t h e 0032140 d a t a b a c k \r \r ; U n l 0032160 e s s m e m o r y i s n o 0032200 w f u l l , a d v a n c e 0032220 t h e p o i n t e r a n d 0032240 r e p e a t . \r ; I f w e 0032260 j u s t r e a d i n t o t 0032300 h e l a s t p a g e o f 0032320 m e m o r y , s e t t h e 0032340 p o i n t e r t o \r ; a s 0032360 c r a t c h r e g i o n a t 0032400 4 0 0 a n d s e t t h e 0032420 c o u n t s o t h a t o 0032440 n l 376 001 \0 231 245 y a m i n i m 0032460 u m - \r ; l e n g t h P u p 0032500 ( e . g . , t h e E n d 0032520 t h a t w e a r e e x p e 0032540 c t i n g ) w i l l b e \r ; 0032560 a c c e p t e d . \r \t l d a 0032600 1 c 4 0 0 \t \t ; A m o u n t 0032620 t o a d v a n c e p o i n 0032640 t e r b y \r \t s e 1 2 \t \t 0032660 \t ; S k i p i f a l r e a 0032700 d y a t s c r a t c h r e 0032720 g i o n \r \t a d d 1 2 \t \t 0032740 ; N o r m a l l y , a d v a 0032760 n c e p o i n t e r \r \t l d a 0033000 0 e n d F l a g \r \t l d a 0033020 3 m e m O v e r f l o w \r \t s 0033040 n z 0 0 \t 376 001 \0 A E \t \t ; 0033060 W a s a n E n d r e c e i 0033100 v e d ? \r \t s n e 2 3 \t \t \t 0033120 ; O r b e y o n d e n d 0033140 o f m e m o r y ? \r \t m o v 0033160 1 2 s k p \t \t ; Y e s , 0033200 s e t p o i n t e r t o 0033220 4 0 0 \r \t j m p b o o t l p 0033240 \t \t ; N o , c o n t i n u e 0033260 n o r m a l l y \r \t l d a 1 0033300 d 1 3 \t \t ; L i m i t p a 0033320 c k e t l e n g t h t o m 0033340 i n i m u m \r \t s t a 1 m a 0033360 x L e n g t h \r \t s n z 0 0 0033400 \t \t \t ; R e c e i v e d E n 0033420 d ? \r \t j m p b o o t l p \t 0033440 \t ; N o , c o n t i 376 001 \0 214 0033460 257 n u e \r \t d s z d a l l y T 0033500 i m e o u t \t ; Y e s , e n 0033520 a b l e t i m e o u t ( s e 0033540 t t o - 1 ) \r \t j s r R e 0033560 c e i v e E F T P P a c k e t \t 0033600 ; A w a i t s e c o n d E 0033620 n d o r t i m e o u t \r \t l 0033640 d a 0 c 3 \t \t ; R e s e t 0033660 t h e E t h e r n e t \r \t s 0033700 i o \r \t j m p @ 0 \t \t \t ; J 0033720 u m p i n t o t h e b o o 0033740 t l o a d ! \r \r m e m O v e r f 0033760 l o w : 1 7 7 0 0 0 - 1 2 . 0034000 ; W h e r e a c 2 w i l 0034020 l p o i n t w h e n m e m 0034040 o r y i s f u l l \r \r \r ; 0034060 * 376 001 \0 1 001 * W a r n i n g 0034100 * * \r ; T h e l a s t 1 2 0034120 w o r d s o f p a g e 1 0034140 g e t c l o b b e r e d d 0034160 u r i n g t h e a c t o f 0034200 \r ; r e c e i v i n g p a g 0034220 e 2 . T h i s i s o k 0034240 s i n c e t h o s e 1 2 0034260 w o r d s a r e s a v e d \r 0034300 ; a n d r e s t o r e d . 0034320 H o w e v e r , t h e s t 0034340 u f f i n t h o s e w o r 0034360 d s m u s t n o t b e \r ; 0034400 e x e c u t e d o r r e f 0034420 e r e n c e d w h i l e i n 0034440 t h e c l o b b e r e d s 0034460 t a t e ! \r 376 \0 \a 251 331 \r \t . e n 0034500 d \r 377 \0 \0 E t h e r B o o t C a 0034520 l l e r . b c p l \0 373 233 + ~ 3 \0 0034540 \0 376 001 \0 354 J / / E t h e r B o 0034560 o t C a l l e r . b c p l - - 0034600 C a l l s E t h e r B o o t 0034620 L o a d e r \r / / C o p y r i 0034640 g h t X e r o x C o r p o r 0034660 a t i o n 1 9 8 3 \r / / L a 0034700 s t m o d i f i e d J u n e 0034720 3 0 , 1 9 8 3 1 : 4 7 0034740 P M b y B o g g s \r \r e x t 0034760 e r n a l \r [ \r / / o u t g o 0035000 i n g p r o c e d u r e \r E t 0035020 h e r B o o t \r \r / / i n c o 0035040 m i n g s t a t i c s \r b o o 0035060 t L o a d e r P a c k e t ; m 0035100 a y D a y P a c k e t \r ] \r \r / 0035120 / - - - - - - - - - - - - - - - 0035140 - - - - - - 376 001 \0 302 252 - - - - - 0035160 - - - - - - - - - - - - - - - - * 0035240 - - - - - - - - - - - - - - - \r 0035260 l e t E t h e r B o o t ( b f 0035300 n , n i l , p d h , d P o 0035320 r t , s P o r t ; n u m a r 0035340 g s n a ) b e \r / / - - - - 0035360 - - - - - - - - - - - - - - - - * 0035500 - - - - - \r / / b f n i s 0035520 t h e b o o t f i l e n u 0035540 m b e r t o r e q 376 001 \0 026 233 0035560 u e s t i n t h e m a y d 0035600 a y p a c k e t . \r / / r e 0035620 t u r n O n F a i l h a s b 0035640 e e n d e i m p l e m e n t e 0035660 d . \r / / p d h i s t h e 0035700 E t h e r n e t h o s t t 0035720 o w h i c h t h e m a y d 0035740 a y i s s e n t ( d e f a 0035760 u l t i s 0 : b r o a d c 0036000 a s t ) . \r / / d P o r t i 0036020 s p u t i n t h e m a y 0036040 d a y P u p ; i t o v e r 0036060 r i d e s p d h . \r / / s P 0036100 o r t i s p u t i n t h 0036120 e m a y d a y P u p . \r [ \r 0036140 m a y D a y P a c k e t ! 5 = 0036160 376 001 \0 \b 272 b f n \r i f n a 0036200 g r 2 t h e n \r [ \r 0036220 m a y D a y P a c k e t ! 0 0036240 = p d h l s h i f t 8 \r 0036260 m a y D a y P a c k e t ! 0036300 6 = p d h \r ] \r i f 0036320 n a g r 3 t h e n M y M 0036340 o v e B l o c k ( m a y D a y P 0036360 a c k e t + 6 , d P o r t , 0036400 3 ) \r i f n a g r 4 t h 0036420 e n M y M o v e B l o c k ( m 0036440 a y D a y P a c k e t + 9 , s 0036460 P o r t , 3 ) \r f o r i = 0036500 0 t o 2 5 5 d o 1 ! i 0036520 = b o o t L o a d e r P a c 0036540 k e t ! i / / c a n ' t c 0036560 a l l a 376 001 \0 \n 323 p r o c e 0036600 d u r e ! \r g o t o 6 \r ] \r \r 0036620 / / - - - - - - - - - - - - - - 0036640 - - - - - - - - - - - - - - - - * 0036740 - - - - - - - - - - - \r a n d 0036760 M y M o v e B l o c k ( d e s t 0037000 , s r c , c n t ) b e f 0037020 o r i = 0 t o c n t - 0037040 1 d o d e s t ! i = s r 0037060 c ! i \r / / - - - - - - - - - - 0037100 - - - - - - - - - - - - - - - - * 0037160 - - - - - - - - - - 376 \0 026 360 345 - 0037200 - - - - - - - - - - - - - - - - 0037220 - - - - \r 377 \0 \0 E t h e r B o o 0037240 t M a i n . b c p l \0 373 223 361 366 304 0037260 \0 \0 376 001 \0 $ } / / C o p y r i 0037300 g h t X e r o x C o r p o r 0037320 a t i o n 1 9 7 9 \r \r / / E 0037340 t h e r B o o t M a i n . b c p 0037360 l \r \r / / \t L a s t m o d i f 0037400 i e d J a n u a r y 2 , 1 0037420 9 7 8 3 : 3 7 P M \r \r e x 0037440 t e r n a l \r [ \r E t h e r B o 0037460 o t ; S e t u p R e a d P a r 0037500 a m ; R e a d P a r a m \r M o 0037520 v e B l o c k ; E n a b l e I 0037540 n t e r r u p t s ; W s \r ] \r 0037560 \r l e t E t h e r B o o t M a 0037600 i n ( ) b e \r [ \r S e t u p R 0037620 e a d P a r a m ( ) \r l e t b 0037640 f n = R e a d P a r a m ( $ 0037660 B , " B o o t 376 001 \0 ^ 337 f i l 0037700 e n u m b e r : " ) \r l e t 0037720 h o s t = R e a d P a r a 0037740 m ( $ B , " B o o t s e r v 0037760 e r h o s t n u m b e r : 0040000 " , 0 , 0 , t r u e ) \r i 0040020 f h o s t e q - 1 t h e 0040040 n h o s t = 0 \r l e t s 0040060 a v e M e m = v e c # 1 4 0040100 0 0 \r l e t M y M o v e B l o 0040120 c k = M o v e B l o c k 0040140 / / L o c a l c o p y b e 0040160 c a u s e E t h e r B o o t 0040200 c l o b b e r s s t a t i c s 0040220 \r M o v e B l o c k ( s a v e M 0040240 e m , 0 , # 1 4 0 0 ) \r E t 0040260 h e r B o o t ( b f n , 376 \0 261 / 0040300 212 t r u e , h o s t ) \r M y 0040320 M o v e B l o c k ( 0 , s a v 0040340 e M e m , # 4 2 7 ) \r M y M o 0040360 v e B l o c k ( # 4 3 1 , s a 0040400 v e M e m + # 4 3 1 , # 5 7 0 0040420 - # 4 3 1 ) \r M y M o v e B l o 0040440 c k ( # 6 0 0 , s a v e M e m 0040460 + # 6 0 0 , # 1 4 0 0 - # 6 0 0040500 0 ) \r E n a b l e I n t e r r u 0040520 p t s ( ) \r W s ( " E t h e r B 0040540 o o t f a i l e d . " ) \r ] \r 0040560 \r \r 377 \0 \0 L o a d E t h e r B o 0040600 o t . c m \0 373 233 + O 021 \0 \0 376 \0 B 0040620 265 342 B L D R E t h e r B o o t 0040640 / S E t h e r B o o t M a i n 0040660 E t h e r B o o t C a l l e r 0040700 E t h e r B o o t L o a d e r 0040720 G P \r 377 \0 \0 D u m p E t h e r 0040740 B o o t . c m \0 373 223 361 366 304 \0 \0 376 0040760 \0 7 J S t o r e / c E t h e 0041000 r B o o t . b r D u m p / c 0041020 E t h e r B o o t . d m @ E t 0041040 h e r B o o t . c m @ 377 \0 \0 E t 0041060 h e r B o o t . c m \0 373 233 + O $ 0041100 \0 \0 376 \0 j 9 x E t h e r B o o t 0041120 L o a d e r . a s m E t h e r 0041140 B o o t C a l l e r . b c p l 0041160 E t h e r B o o t M a i n . b c 0041200 p l L o a d E t h e r B o o t 0041220 . c m D u m p E t h e r B o o 0041240 t . c m E t h e r B o o t . c 0041260 m 374 0041262