$ od -c -N 50000 [_CD8_]<doradosource>LoadMB.dm!6 0000000 377 \0 \0 L o a d M B . b c p l \0 373 0000020 231 C 304 & \0 \0 376 001 \0 373 0 / / L o 0000040 a d M B . b c p l - - l o a 0000060 d s M B f i l e o n D o 0000100 r a d o \r \r / / L a s t m o 0000120 d i f i e d J u n e 2 5 , 0000140 1 9 8 2 6 : 1 8 P M b y 0000160 T a f t \r \r g e t " S t r e 0000200 a m s . d " \r g e t " A l t o 0000220 F i l e S y s . d " \r \r e x t e 0000240 r n a l \r [ \r / / i n c o m i 0000260 n g p r o c e d u r e s \r S e 0000300 t u p R e a d P a r a m ; R e 0000320 a d P a r a m ; E v a l P a r 0000340 a m \r O p e n F i l e ; C l o 0000360 s e s ; R e a d B l o c k ; 0000400 W r i t e B l o c k ; F i l e 0000420 P o s ; S e t F i l 376 001 \0 @ S 0000440 e P o s ; G e t C o m p l e t 0000460 e F a \r W s ; G e t s ; P u 0000500 t s ; R e s e t s ; R e a d 0000520 L e a d e r P a g e ; T r u n 0000540 c a t e D i s k S t r e a m \r P 0000560 u t T e m p l a t e ; E n q u 0000600 e u e \r Z e r o ; M o v e B l 0000620 o c k ; U s c ; C a l l S w 0000640 a t ; R e a d C a l e n d a r 0000660 ; A l l o c a t e \r \r / / i 0000700 n c o m i n g s t a t i c s \r 0000720 k e y s ; d s p ; s y s Z o 0000740 n e \r ] \r \r \r s t r u c t u r e 0000760 M B N a m e ^ 0 , 0 b y t 0001000 e / / t e r m i n a t e s 0001020 o n n u l l b y t e \r s t 0001040 376 001 \0 | 8 r u c t u r e S t r 0001060 i n g [ l e n g t h b y t 0001100 e ; c h a r ^ 1 , 1 b y t 0001120 e ] \r \r / / - - - - - - - - - 0001140 - - - - - - - - - - - - - - - - * 0001240 - - - \r s t r u c t u r e M B 0001260 : \t \t / / b l o c k f o r m 0001300 a t i n M B f i l e \r / / 0001320 - - - - - - - - - - - - - - - - * 0001420 - - - - - - - - - - - - \r [ \r w 0001440 o r d 0 376 001 \0 374 355 w o r d = 0001460 \r [ \r b l a n k b 0001500 y t e \t \t / / u s e d i n 0001520 M i d a s M B f i l e s , 0001540 b u t n o t i n n o r m a 0001560 l o n e s \r t y p e b 0001600 y t e \t \t / / b l o c k t y 0001620 p e \r ] \r d a t a : \r 0001640 [ \r s o u r c e L i n e 0001660 w o r d \t / / s o u r c e 0001700 l i n e n u m b e r \r v 0001720 a l u e ^ 0 , 0 w o r d \t / 0001740 / l e f t - a d j u s t e d 0001760 d a t a \r ] = \r m e m o 0002000 r y : \r [ \r m e m o 0002020 r y N u m w o r d \t / / m e 0002040 m o r y n u m b e 376 001 \0 037 D r 0002060 \r l o c a t i o n w o r 0002100 d \t / / f i r s t l o c a t 0002120 i o n i n m e m o r y \r 0002140 ] = \r f i x u p : \r [ 0002160 \r m e m o r y N u m w o 0002200 r d \t / / m e m o r y n u m 0002220 b e r \r l o c a t i o n 0002240 w o r d \t / / l o c a t i o n 0002260 i n m e m o r y \r f i 0002300 r s t B i t b y t e \t / / f 0002320 i e l d t o b e s t o r e 0002340 d i n t o \r l a s t B i 0002360 t b y t e \r v a l u e 0002400 w o r d \t \t / / v a l u e t 0002420 o b e s t o r e d \r ] 0002440 = \r m e m o r y N a m e : \r 376 0002460 001 \0 366 261 [ \r m e m o 0002500 r y N u m w o r d \t / / m e 0002520 m o r y n u m b e r \r w 0002540 i d t h w o r d \t \t / / m e 0002560 m o r y w i d t h \r n a 0002600 m e @ M B N a m e \t \t / / m 0002620 e m o r y n a m e \r ] 0002640 = \r a d d r e s s : \r [ \r 0002660 m e m o r y N u m w o r 0002700 d \t / / m e m o r y n u m b 0002720 e r \r v a l u e w o r d 0002740 \t \t / / a d d r e s s v a l 0002760 u e \r n a m e @ M B N a 0003000 m e \t \t / / a d d r e s s s 0003020 y m b o l n a m e \r ] 0003040 = \r u n d e f i n e d : \r 0003060 [ \r 376 001 \0 \t 350 m e m o r y 0003100 N u m w o r d \t / / m e m o 0003120 r y n u m b e r \r l o c 0003140 a t i o n w o r d \t / / l o 0003160 c a t i o n i n m e m o r y 0003200 \r f i r s t B i t b y t 0003220 e \t / / f i e l d t o b e 0003240 s t o r e d i n t o \r 0003260 l a s t B i t b y t e \r 0003300 n a m e @ M B N a m e \t \t / / 0003320 e x t e r n a l s y m b o l 0003340 n a m e \r ] \r ] \r \r m a 0003360 n i f e s t \r [ \r / / b l o c 0003400 k t y p e s \r m b E n d = 0003420 0 \t \t / / e n d o f M B 0003440 f i l e \r m b D a t a = 1 \t 0003460 \t / / s t o r e 376 001 \0 r d m 0003500 e m o r y d a t a a n d i 0003520 n c r e m e n t l o c a t i o 0003540 n \r m b M e m o r y = 2 \t \t 0003560 / / s e t m e m o r y n u 0003600 m b e r a n d l o c a t i o 0003620 n \r m b F i x u p = 3 \t \t / 0003640 / f o r w a r d r e f e r e 0003660 n c e f i x u p \r m b M e m o 0003700 r y N a m e = 4 \t / / c o 0003720 r r e l a t e m e m o r y n 0003740 a m e a n d n u m b e r \r m 0003760 b A d d r e s s = 5 \t \t / / 0004000 d e f i n e a d d r e s s 0004020 s y m b o l \r m b U n d e f i n 0004040 e d = 6 \t \t / / e x t e r 0004060 n a l r e f e r e n c e \r 376 001 0004100 \0 213 u \r / / b l o c k l e n 0004120 g t h s \r l e n M B D a t a = 0004140 o f f s e t M B . d a t a . 0004160 v a l u e / 1 6 / / + s 0004200 i z e o f v a l u e \r l e n 0004220 M B M e m o r y = o f f s e 0004240 t M B . m e m o r y . l o c a 0004260 t i o n / 1 6 + 1 \r l e n M B 0004300 F i x u p = o f f s e t M 0004320 B . f i x u p . v a l u e / 1 6 0004340 + 1 \r l e n M B M e m o r y N 0004360 a m e = o f f s e t M B . 0004400 m e m o r y N a m e . n a m e / 0004420 1 6 / / + s i z e o f 0004440 n a m e \r l e n M B A d d r e 0004460 s s = o f f s e t M B . a 0004500 d d r 376 001 \0 335 362 e s s . n a m e 0004520 / 1 6 / / + s i z e o 0004540 f n a m e \r l e n M B U n d e 0004560 f i n e d = o f f s e t M 0004600 B . u n d e f i n e d . n a m e 0004620 / 1 6 / / + s i z e o 0004640 f n a m e \r \r m a x M e m o r 0004660 y N u m = 5 0 \r m a x L e n 0004700 N a m e = 1 2 7 \r ] \r \r / / 0004720 - - - - - - - - - - - - - - - - * 0005020 - - - - - - - - - - - - \r s t r 0005040 u c t u r e I M : \t \t / / I 0005060 M w o r d , i n M B f i 0005100 l e o n l y \r 376 001 \0 330 @ / / - 0005120 - - - - - - - - - - - - - - - - * 0005220 - - - - - - - - - - - \r [ \r w o 0005240 r d 0 w o r d = \r [ 0005260 R S T K b i t 4 ; A L U F 0005300 b i t 4 ; B S E L b i t 0005320 3 ; L C b i t 3 ; A S 0005340 E L 0 1 b i t 2 ] = \r 0005360 [ R S T K 0 b i t 1 ; 0005400 r e s t 0 b i t 1 5 ] \r 0005420 w o r d 1 w o r d = \r 0005440 [ A S E L 2 b i t 1 ; B 0005460 L K b i t 1 ; F F b i t 0005500 8 ; J C N 0 5 b i t 376 001 \0 0005520 K 321 6 ] = \r [ A S 0005540 E L 2 B L K b i t 2 ; r e 0005560 s t 1 b i t 1 4 ] \r w o r 0005600 d 2 w o r d = \r [ J 0005620 C N 6 7 b i t 2 ; P E 0 2 0005640 0 b i t 1 ; P E 2 1 3 1 0005660 b i t 1 ; b l a n k b i t 0005700 1 2 ] \r w o r d 3 w o r d 0005720 = \r [ b l a n k b i 0005740 t 4 ; a b s o l u t e A d d 0005760 r b i t 1 2 ] \r ] \r \r / / 0006000 - - - - - - - - - - - - - - - - * 0006100 - - - - - - - - - - - - \r s t r 0006120 u c 376 001 \0 356 F t u r e I F U M 0006140 : \t \t / / I F U M w o r d , 0006160 i n M B f i l e a n d 0006200 i n I t e m \r / / - - - - - - 0006220 - - - - - - - - - - - - - - - - * 0006320 - - - - - - \r [ \r w o r d 0 w 0006340 o r d = \r [ b l a n k 0006360 b i t 5 ; P A b i t 1 0006400 ; I F A D b i t 1 0 = 0006420 [ I F A D 0 1 b i t 2 ; 0006440 I F A D 2 9 b i t 8 ] ] 0006460 \r w o r d 1 w o r d = \r 0006500 [ \r S G N b i t 1 ; 0006520 I P A R b 376 001 \0 Z } i t 3 0006540 = [ P 0 b i t ; P 1 0006560 b i t ; P 2 b i t ] ; L 0006600 E N b i t 2 ; \r R B A 0006620 S E B b i t 1 ; M E M B 0006640 b i t 3 = [ M E M B 0 0006660 b i t 1 ; M E M B 1 2 b i 0006700 t 2 ] ; \r T Y P E b 0006720 i t 2 ; N b i t 4 \r 0006740 ] \r ] \r \r m a n i f e s t \r [ 0006760 \r / / m a s k s d e f i n i 0007000 n g c o n t r i b u t i o n 0007020 o f e a c h w o r d t o 0007040 e a c h p a r i t y b i t \r 0007060 i f u m W 0 P 0 = 1 4 0 0 B 0007100 ; i f u m W 0 P 1 = 3 7 7 0007120 B ; i f u m W 0 P 2 376 001 \0 234 0007140 V = 2 0 0 0 B \r i f u m W 1 P 0007160 0 = 3 1 7 B ; i f u m W 1 0007200 P 1 = 0 B ; i f u m W 1 P 0007220 2 = 1 0 7 4 6 0 B \r ] \r \r / 0007240 / - - - - - - - - - - - - - - - 0007260 - - - - - - - - - - - - - - - - * 0007340 - - - - - - - - - - - - - \r s t 0007360 r u c t u r e R M : \t \t / / 0007400 R M w o r d , i n M B f 0007420 i l e a n d i n I t e m \r 0007440 / / - - - - - - - - - - - - - - 0007460 - - - - - - - - - - - - - - - - * 0007540 - 376 001 \0 220 " - - - - - - - - - - 0007560 - - - \r [ \r w o r d 0 w o r d 0007600 \r ] \r \r / / - - - - - - - - - - 0007620 - - - - - - - - - - - - - - - - * 0007720 - - \r s t r u c t u r e I t e 0007740 m : \t \t / / c o n t r o l s 0007760 t o r e i t e m \r / / - - - - 0010000 - - - - - - - - - - - - - - - - * 0010100 - - - - - - - - \r [ \r e x t r a 0010120 I M b i t 4 = \t \t / / e 0010140 x t r a b 376 001 \0 313 365 i t s f 0010160 o r I M d a t a \r [ 0010200 P E 0 2 0 b i t ; R S T K 0 0010220 b i t ; P E 2 1 3 1 b i t 0010240 ; B L K b i t ] \r z e r o 0010260 b i t 1 \t \t / / m u s t 0010300 b e z e r o \r b l a n k b i 0010320 t 8 \t \t / / u n u s e d , 0010340 l e a v e z e r o f o r n 0010360 o w \r t y p e b i t 3 \t \t / 0010400 / I t e m t y p e \r d a t a 0010420 : / / I M , I F U M , 0010440 o r R M \r [ \r a d 0010460 d r w o r d \t \t / / a d d r 0010500 e s s \r w o r d 0 w o r 0010520 d \t \t / / l e f t h a l f 0010540 ( I M , I F U M ) 376 001 \0 001 235 0010560 o r e n t i r e v a l u e 0010600 ( R M ) \r w o r d 1 w o 0010620 r d \t \t / / r i g h t h a l 0010640 f ( I M , I F U M ) \r 0010660 ] = \r e n d : \r [ \r 0010700 b l a n k w o r d \r c 0010720 h e c k s u m w o r d \t / / 0010740 c h e c k s u m o v e r e n 0010760 t i r e i t e m a r r a y \r 0011000 s t a r t A d d r w o r 0011020 d \t / / s t a r t i n g a d 0011040 d r e s s \r ] \r ] \r \r m a 0011060 n i f e s t \r [ \r / / I t e m 0011100 t y p e s \r i t e m I M = 0011120 0 \t \t / / I M d a t a \r i t 0011140 e m I F U M = 1 \t \t / / I 0011160 376 001 \0 354 234 F U M d a t a \r i t 0011200 e m E n d = 2 \t \t / / E n 0011220 d b l o c k \r i t e m R M = 0011240 3 \t \t / / R M d a t a \r \r 0011260 l e n I t e m = s i z e I 0011300 t e m / 1 6 \r ] \r \r / / - - - - 0011320 - - - - - - - - - - - - - - - - * 0011420 - - - - - - - - \r s t r u c t u 0011440 r e C S A r r a y : \t / / c 0011460 o n t r o l s t o r e a r r 0011500 a y \r / / - - - - - - - - - - - 0011520 - - - - - - - - - - - - - - - - * 0011560 - - - - - 376 001 \0 037 016 - - - - - - 0011600 - - - - - - - - - - - - - - - - 0011620 - - - - - - \r [ \r l e n g t h 0011640 w o r d \t \t / / l e n g t h 0011660 o f a r r a y ( I t e m s ) 0011700 \r m a x L e n g t h w o r d \t 0011720 \t / / m a x l e n g t h o 0011740 f a r r a y ( I t e m s ) \r 0011760 i t e m ^ 0 , 0 @ I t e m \r 0012000 ] \r \r / / - - - - - - - - - - - 0012020 - - - - - - - - - - - - - - - - * 0012120 - \r s t r u c t u r e M e s a 0012140 S t r i n g : [ l e n g t h 0012160 w o r d ; m a x 376 001 \0 \f d L 0012200 e n g t h w o r d ; c h a r 0012220 ^ 0 , 1 b y t e ] \r / / - - 0012240 - - - - - - - - - - - - - - - - * 0012340 - - - - - - - - - - \r \r / / - - 0012360 - - - - - - - - - - - - - - - - * 0012460 - - - - - - - - - - \r s t r u c 0012500 t u r e E B F i l e : \t / / 0012520 E t h e r B o o t a b l e f 0012540 o r m a t \r / / - - - - - - - - 0012560 - - - - - - - - - - - - - - - 376 0012600 001 \0 207 b - - - - - - - - - - - - 0012620 - - - - - - - - - - - - - - - - * 0012660 - - - - - - - - - \r [ \r o v e r 0012700 h e a d P a g e w o r d 2 5 0012720 6 = \r [ \r e t h e 0012740 r V e r s i o n N u m b e r w 0012760 o r d \r m u s t B e Z e r 0013000 o w o r d 2 \r c r e a 0013020 t i o n D a t e w o r d 2 \r 0013040 n a m e @ M e s a S t r 0013060 i n g \t / / n a m e o f t 0013100 h i s . e b f i l e \r 0013120 ] \r i t e m ^ 0 , 0 @ I t e 0013140 m \r ] \r \r / / - - - - - - - - - 0013160 - - - - - - - - - - - - - - - - 0013200 - - - - 376 001 \0 g 235 - - - - - - - 0013220 - - - - - - - - - - - - - - - - * 0013260 - - - - - - - - \r s t r u c t u 0013300 r e B R F i l e : \t / / B c 0013320 p l b i n a r y f o r m a t 0013340 \r / / - - - - - - - - - - - - - 0013360 - - - - - - - - - - - - - - - - * 0013440 - - - - - - - - - - - - - - - \r 0013460 [ \r b c p l V e r s i o n N u m 0013500 b e r w o r d \r f i l e L e n 0013520 g t h w o r d \r b l a n k w 0013540 o r d \t \t / / m u s t b e 0013560 z e r o \r n a m e T a b l e O f 0013600 f s e t w o r d 376 001 \0 L 036 \r b 0013620 l a n k w o r d \t \t / / m u 0013640 s t b e z e r o \r l a b e l 0013660 T a b l e O f f s e t w o r d 0013700 \r b l a n k w o r d \t \t / / 0013720 m u s t b e z e r o \r c o d 0013740 e O f f s e t w o r d \r b l a 0013760 n k w o r d \t \t / / m u s t 0014000 b e z e r o \r c h a i n T a 0014020 b l e O f f s e t w o r d \r b 0014040 l a n k w o r d \t \t / / m u 0014060 s t b e z e r o \r z c h a i 0014100 n T a b l e O f f s e t w o r 0014120 d \r b l a n k w o r d 3 \t \t 0014140 / / m u s t b e z e r o \r 0014160 l a b e l T a b l e w o r d 0014200 3 = \r [ \r l a 376 001 0014220 \0 " 0 b e l C o u n t w o r d 0014240 \t / / m u s t b e 1 \r 0014260 l a b e l N a m e N u m b e r 0014300 w o r d \t / / m u s t b e 0014320 1 \r l a b e l P C w o 0014340 r d \t \t / / m u s t b e 1 0014360 \r ] \r c h a i n T a b l e 0014400 w o r d 1 \t / / m u s t 0014420 b e z e r o \r z c h a i n T a 0014440 b l e w o r d 1 \t / / m u 0014460 s t b e z e r o \r n a m e T 0014500 a b l e w o r d 3 = \r 0014520 [ \r n a m e C o u n t 0014540 w o r d \t / / m u s t b e 0014560 1 \r n a m e D e s c r i p 0014600 t o r w o r d \t / / m u s t 0014620 b e 376 001 \0 265 265 1 4 0 b \r 0014640 b l a n k w o r d \r n 0014660 a m e S t r i n g w o r d 0 0014700 \t / / a c t u a l l y @ S t 0014720 r i n g \r ] \r c o d e w 0014740 o r d 2 = \r [ \r 0014760 c o d e L e n g t h w o r d \r 0015000 c o d e F i r s t w o r 0015020 d 1 \t \t / / s h o u l d b 0015040 e z e r o \r i t e m ^ 0015060 0 , 0 @ I t e m \r ] \r ] 0015100 \r \r / / - - - - - - - - - - - - 0015120 - - - - - - - - - - - - - - - - * 0015220 \r s t r u c t u 376 001 \0 b G r e 0015240 I n F i l e : \t / / I n p u t 0015260 f i l e d e s c r i p t o r 0015300 \r / / - - - - - - - - - - - - - 0015320 - - - - - - - - - - - - - - - - * 0015400 - - - - - - - - - - - - - - - \r 0015420 [ \r n e x t w o r d \r n a m e 0015440 w o r d \t \t / / - > c o m 0015460 p l e t e f i l e n a m e 0015500 s t r i n g \r c f a @ C F A \r 0015520 s t a r t A d d r w o r d \t \t 0015540 / / m i c r o c o d e s t a 0015560 r t i n g a d d r e s s f o 0015600 r t h i s o v e r l a y \r ] 0015620 \r m a n i f e s t l e n 376 001 \0 0015640 371 241 I n F i l e = s i z e 0015660 I n F i l e / 1 6 \r \r m a n i f 0015700 e s t \r [ \r m a x I t e m s = 0015720 4 0 9 6 + 1 0 2 4 + 2 5 6 + 1 0015740 / / I M + I F U M + R M + 0015760 E n d , e n o u g h f o r 0016000 o n e f u l l i m a g e \r l 0016020 e n C S A r r a y = o f f s 0016040 e t C S A r r a y . i t e m / 0016060 1 6 + m a x I t e m s * l e 0016100 n I t e m \r l e n E B F i l e 0016120 = o f f s e t E B F i l e . 0016140 i t e m / 1 6 / / + I t 0016160 e m a r r a y \r l e n B R F i 0016200 l e = o f f s e t B R F i 0016220 l e . n a m e S t r i n g / 1 6 0016240 376 001 \0 260 M / / + n a m e 0016260 s t r i n g + I t e m a 0016300 r r a y \r e t h e r V e r s i o 0016320 n N u m b e r = 0 l s h i 0016340 f t 8 + 1 / / * * * 0016360 C h a n g e t o 1 l s h 0016400 i f t 8 s o m e d a y * * 0016420 * \r b c p l V e r s i o n N u m 0016440 b e r = 2 l s h i f t 8 0016460 \r ] \r \r \r / / - - - - - - - - - 0016500 - - - - - - - - - - - - - - - - * 0016600 - - - \r l e t L o a d M B ( ) 0016620 b e \r / / - - - - - - - - - - 0016640 - - - - - - - 376 001 \0 344 $ - - - - 0016660 - - - - - - - - - - - - - - - - * 0016740 - - - - - - - \r [ \r W s ( " * n 0016760 L o a d M B o f J u n e 2 0017000 5 , 1 9 8 2 " ) \r \r l e t c 0017020 s A r r a y = v e c l e n 0017040 C S A r r a y ; Z e r o ( c s 0017060 A r r a y , l e n C S A r r a 0017100 y ) \r c s A r r a y > > C S A r 0017120 r a y . m a x L e n g t h = 0017140 m a x I t e m s \r \r l e t s t 0017160 r i n g V e c , s w i t c h V 0017200 e c = v e c 5 0 , v e c 0017220 5 0 \r S e t u p R e a d P a r 0017240 a m ( s t r i n g V e c 376 001 \0 227 0017260 205 , s w i t c h V e c ) \r \r l 0017300 e t W r i t e H e a d e r = 0017320 0 \r l e t v e r i f y = 0017340 f a l s e \r \r f o r i = 1 0017360 t o s w i t c h V e c ! 0 0017400 d o \r s w i t c h o n s 0017420 w i t c h V e c ! i i n t o \r 0017440 [ \r c a 0017460 s e $ B : c a s e $ b : \r 0017500 W r i t e H e 0017520 a d e r = W r i t e B R H e 0017540 a d e r \r e n 0017560 d c a s e \r c a s e 0017600 $ E : c a s e $ e : \r 0017620 W r i t e H e a d 0017640 e r = W r i t e E B H e a d 0017660 e 376 001 \0 035 t r \r 0017700 e n d c a s e \r c 0017720 a s e $ V : c a s e $ v : 0017740 \r v e r i f y 0017760 = t r u e \r 0020000 e n d c a s e \r d 0020020 e f a u l t : \r 0020040 F a i l ( " u n d e f i n e d 0020060 g l o b a l s w i t c h / 0020100 $ C " , s w i t c h V e c ! i 0020120 ) \r ] \r \r l e t s 0020140 t r e a m O u t = 0 \r l e t 0020160 o u t N a m e = v e c 5 0020200 0 \r l e t i n F i l e Q = 0020220 v e c 1 ; i n F i l e Q ! 0 0020240 = 0 \r l e t l a b e l N a 0020260 m e = v 376 001 \0 247 7 e c 5 0 0020300 \r M o v e B l o c k ( l a b e l 0020320 N a m e , " L o a d R a m T a 0020340 b l e " , 1 2 / 2 + 1 ) \r \r 0020360 [ / / r e p e a t \r 0020400 i f R e a d P a r a m ( 0 , 0020420 0 , 0 , 0 , t r u e ) 0020440 e q - 1 t h e n b r e a k 0020460 \r s w i t c h o n s w i 0020500 t c h V e c ! 0 i n t o \r 0020520 [ \r c a s e 0020540 0 : \r s w i 0020560 t c h V e c ! 1 = $ I / 0020600 / f a l l t h r u ( t r e 0020620 a t a s i n p u t f i l e 0020640 n a m e ) \r c a s 0020660 e 1 : \r 376 001 \0 224 274 0020700 s w i t c h o n s w i t 0020720 c h V e c ! 1 i n t o \r 0020740 [ \r 0020760 c a s e $ I : 0021000 c a s e $ i : \r 0021020 [ \r 0021040 l e t i n N 0021060 a m e = v e c 5 0 \r 0021100 l e t 0021120 s = E v a l P a r a m ( s t 0021140 r i n g V e c , " I W " , " 0021160 I n p u t M B f i l e n a 0021200 m e : " , i n N a m e ) \r 0021220 l e 0021240 t i n F i l e = A l l o c 0021260 a t e ( s y s Z o n e , l e n 0021300 376 001 \0 037 1 I n F i l e ) \r 0021320 l e t 0021340 l = i n N a m e > > S t r i 0021360 n g . l e n g t h r s h i f t 0021400 1 + 1 \r 0021420 i n F i l e > > I n F 0021440 i l e . n a m e = A l l o c 0021460 a t e ( s y s Z o n e , l ) \r 0021500 M 0021520 o v e B l o c k ( i n F i l e > 0021540 > I n F i l e . n a m e , i n 0021560 N a m e , l ) \r 0021600 G e t C o m p l 0021620 e t e F a ( s , l v i n F i 0021640 l e > > I n F i l e . c f a ) \r 0021660 C 0021700 l o s e s 376 001 \0 A F ( s ) \r 0021720 i n F 0021740 i l e > > I n F i l e . s t a r 0021760 t A d d r = - 1 / / h 0022000 a v e n ' t s e e n s t a r 0022020 t a d d r e s s y e t \r 0022040 E n q 0022060 u e u e ( i n F i l e Q , i n 0022100 F i l e ) \r 0022120 e n d c a s e \r 0022140 ] \r 0022160 c a s e $ 0022200 L : c a s e $ l : \r 0022220 u n l e s 0022240 s W r i t e H e a d e r e q 0022260 W r i t e B R H e a d e r d 0022300 o \r 376 001 \0 321 235 0022320 F a i l ( " / 0022340 L o n l y a l l o w e d w 0022360 i t h . B R o u t p u t " ) 0022400 \r 0022420 E v a l P a r a m ( s t r i n g 0022440 V e c , $ P , " L a b e l 0022460 f o r L o a d R a m t a b l 0022500 e : " , l a b e l N a m e ) 0022520 \r 0022540 e n d c a s e \r 0022560 c a s e $ O : c a s 0022600 e $ o : \r 0022620 s t r e a m O u t = 0022640 E v a l P a r a m ( s t r i n 0022660 g V e c , " O W " , " O u t 0022700 p u t f i l e n a m e : 376 0022720 001 \0 [ \ " , o u t N a m e ) \r 0022740 i 0022760 f W r i t e H e a d e r e q 0023000 0 t h e n W r i t e H e a 0023020 d e r = W r i t e E B H e a 0023040 d e r \r 0023060 e n d c a s e \r 0023100 c a s e $ S : 0023120 c a s e $ s : \r 0023140 i f i n F i l 0023160 e Q ! 0 e q 0 t h e n \r 0023200 0023220 F a i l ( " s t a r t a d d 0023240 r m u s t f o l l o w t h 0023260 e i n p u t f i l e t o 0023300 w h i c h i t a p p l i e s 0023320 " ) \r 376 001 \0 203 035 0023340 ( i n F i l e Q ! 0023360 1 ) > > I n F i l e . s t a r t 0023400 A d d r = \r 0023420 E v a l P a r a m 0023440 ( s t r i n g V e c , $ B , 0023460 " S t a r t i n g a d d r e s 0023500 s : " ) \r 0023520 e n d c a s e \r 0023540 d e f a u l t 0023560 : \r 0023600 F a i l ( " u n d e f i n e d 0023620 l o c a l s w i t c h / $ 0023640 C " , s w i t c h V e c ! 1 ) 0023660 \r 0023700 ] \r e n d c a 0023720 s e \r 376 001 \0 P Y d e 0023740 f a u l t : \r 0023760 F a i l ( " m u l t i p l e l 0024000 o c a l s w i t c h e s " ) \r 0024020 ] \r ] r e p 0024040 e a t \r \r i f i n F i l e Q ! 0024060 0 e q 0 t h e n F a i l 0024100 ( " n o i n p u t f i l e 0024120 s p e c i f i e d " ) \r \r i f 0024140 W r i t e H e a d e r n e 0 0024160 & s t r e a m O u t e q 0024200 0 t h e n \r [ / / 0024220 d e f a u l t o u t p u t f 0024240 i l e n a m e t o m a t c h 0024260 l a s t i n p u t f i l e 0024300 n a m e \r M o v e B l o c 0024320 k ( o u t N a m e , ( i n 376 001 0024340 \0 v 306 F i l e Q ! 1 ) > > I n F 0024360 i l e . n a m e , 5 0 ) \r 0024400 f o r i = 1 t o o u 0024420 t N a m e > > S t r i n g . l e 0024440 n g t h d o \r i f 0024460 o u t N a m e > > S t r i n g 0024500 . c h a r ^ i e q $ . t h 0024520 e n o u t N a m e > > S t r i 0024540 n g . l e n g t h = i - 1 \r 0024560 l e t i = o u t N a 0024600 m e > > S t r i n g . l e n g t 0024620 h \r o u t N a m e > > S t 0024640 r i n g . c h a r ^ ( i + 1 ) 0024660 = $ . \r o u t N a m e > 0024700 > S t r i n g . c h a r ^ ( i + 0024720 2 ) = W r i t e H e a d e r 0024740 e q 376 001 \0 353 ] W r i t e B R 0024760 H e a d e r ? $ b , $ e \r 0025000 o u t N a m e > > S t r i n 0025020 g . c h a r ^ ( i + 3 ) = W 0025040 r i t e H e a d e r e q W r 0025060 i t e B R H e a d e r ? $ r , 0025100 $ b \r o u t N a m e > > 0025120 S t r i n g . l e n g t h = 0025140 i + 3 \r s t r e a m O u t 0025160 = O p e n F i l e ( o u t N 0025200 a m e , k s T y p e W r i t e 0025220 O n l y , w o r d I t e m ) \r 0025240 ] \r \r l e t d e f a u l 0025260 t S t a r t A d d r = W r i 0025300 t e H e a d e r n e 0 ? 1 0025320 0 7 6 B , 1 0 7 0 B / / 0025340 b o o t , r e 376 001 \0 241 M s u m 0025360 e s t a r t a d d r s \r \r i 0025400 f W r i t e H e a d e r n e 0025420 0 t h e n \r W r i t e 0025440 H e a d e r ( s t r e a m O u t 0025460 , c s A r r a y , l a b e l 0025500 N a m e , o u t N a m e ) \r \r 0025520 l e t t o t a l I t e m s = 0025540 0 \r l e t i n F i l e = 0025560 i n F i l e Q ! 0 \r w h i l e 0025600 i n F i l e n e 0 d o \r 0025620 [ \r l e t s t r e a 0025640 m M B = O p e n F i l e ( i 0025660 n F i l e > > I n F i l e . n a 0025700 m e , k s T y p e R e a d O n 0025720 l y , c h a r I t e m , 0 , 0025740 \r l v i n F i l 376 001 \0 0025760 302 023 e > > I n F i l e . c f a . 0026000 f p ) \r i f s t r e a m 0026020 M B e q 0 t h e n C a l 0026040 l S w a t ( " F a i l e d t o 0026060 o p e n e x i s t i n g f 0026100 i l e " ) \r l e t i t e 0026120 m s = c s A r r a y > > C S 0026140 A r r a y . l e n g t h \r 0026160 R e a d M B F i l e ( s t r e a 0026200 m M B , c s A r r a y ) \r 0026220 C l o s e s ( s t r e a m M B 0026240 ) \r i f i n F i l e > > 0026260 I n F i l e . s t a r t A d d r 0026300 e q - 1 t h e n i n F i 0026320 l e > > I n F i l e . s t a r t 0026340 A d d r = d e f a u l t S t 0026360 a r 376 001 \0 217 215 t A d d r \r 0026400 A p p e n d E n d I t e m ( c s 0026420 A r r a y , i n F i l e > > I 0026440 n F i l e . s t a r t A d d r ) 0026460 \r i t e m s = c s A r 0026500 r a y > > C S A r r a y . l e n 0026520 g t h - i t e m s \r t 0026540 o t a l I t e m s = t o t a 0026560 l I t e m s + i t e m s \r 0026600 P u t T e m p l a t e ( d s 0026620 p , " * n $ D i t e m s r 0026640 e a d f r o m $ S ; s t a 0026660 r t i n g a d d r e s s = 0026700 $ U O B . " , \r i t e m 0026720 s , i n F i l e > > I n F i l 0026740 e . n a m e , i n F i l e > > 0026760 I n F i l e . 376 001 \0 270 305 s t a r 0027000 t A d d r ) \r i f W r i 0027020 t e H e a d e r n e 0 t h 0027040 e n \r [ / / w 0027060 r i t e c s A r r a y o u t 0027100 o n t o f i l e a n d r 0027120 e - u s e i t \r W 0027140 r i t e B l o c k ( s t r e a m 0027160 O u t , l v c s A r r a y > 0027200 > C S A r r a y . i t e m ^ 0 , 0027220 c s A r r a y > > C S A r r a 0027240 y . l e n g t h * l e n I t e m 0027260 ) \r Z e r o ( c s A 0027300 r r a y , l e n C S A r r a y 0027320 ) \r c s A r r a y > 0027340 > C S A r r a y . m a x L e n g 0027360 t h = m a x I t e m 376 001 \0 001 0027400 311 s \r ] \r i n 0027420 F i l e = i n F i l e > > I 0027440 n F i l e . n e x t \r ] \r 0027460 \r i f W r i t e H e a d e r 0027500 n e 0 t h e n \r [ \r 0027520 l e t p o s = v e c 0027540 1 ; F i l e P o s ( s t r e a 0027560 m O u t , p o s ) \r i f 0027600 W r i t e H e a d e r e q 0027620 W r i t e B R H e a d e r t h 0027640 e n \r [ \r 0027660 T r u n c a t e D i s k S t r 0027700 e a m ( s t r e a m O u t ) \r 0027720 F i x U p B R H e a d 0027740 e r ( s t r e a m O u t , t o 0027760 t a l I t e m s * l e n I t e m 0030000 , 376 001 \0 377 ` l a b e l N a m e 0030020 ) \r ] \r C l o 0030040 s e s ( s t r e a m O u t ) \r 0030060 P u t T e m p l a t e ( d s 0030100 p , " * n $ E D b y t e s 0030120 w r i t t e n o n $ S . " , 0030140 p o s , o u t N a m e ) \r 0030160 f i n i s h \r ] \r \r i 0030200 f v e r i f y t h e n \r 0030220 [ \r W s ( " * n L o a d 0030240 a n d b o o t ? " ) \r 0030260 [ / / r e p e a t \r 0030300 s w i t c h o n G e 0030320 t s ( k e y s ) i n t o \r 0030340 [ \r 0030360 c a s e $ Y : c a s e 0030400 $ y : c a 376 001 \0 231 q s e $ * 0030420 n : \r b 0030440 r e a k \r c a 0030460 s e $ N : c a s e $ n : 0030500 c a s e $ * 1 7 7 : \r 0030520 f i n i s h \r 0030540 d e f a u l t : 0030560 \r W s ( 0030600 " ? " ) \r ] \r 0030620 ] r e p e a t \r 0030640 ] \r \r l e t L o a d R a m 0030660 A n d J u m p = t a b l e 0030700 [ 6 1 0 3 6 B ; 1 4 0 1 B 0030720 ] \r L o a d R a m A n d J u m p 0030740 ( l v c s A r r a y > > C S A 0030760 r r a y . i t e m ^ 0 , t r u 0031000 e ) \r ] \r \r / / - - - 376 001 \0 264 6 0031020 - - - - - - - - - - - - - - - - * 0031120 - - - - - - - - - \r a n d F a 0031140 i l ( s t r i n g , p a r 1 , 0031160 p a r 2 , p a r 3 ) b e \r 0031200 / / - - - - - - - - - - - - - - 0031220 - - - - - - - - - - - - - - - - * 0031300 - - - - - - - - - - - - - - \r [ 0031320 \r W s ( " * n C o m m a n d e 0031340 r r o r : " ) \r P u t T e m p 0031360 l a t e ( d s p , s t r i n g 0031400 , p a r 1 , p a r 2 , p a 0031420 376 001 \0 332 305 r 3 ) \r W s ( " * n " 0031440 ) \r a b o r t \r ] \r \r / / - - - 0031460 - - - - - - - - - - - - - - - - * 0031560 - - - - - - - - - \r a n d R e 0031600 a d M B F i l e ( s t r e a m , 0031620 c s A r r a y ) b e \r / / - 0031640 - - - - - - - - - - - - - - - - * 0031740 - - - - - - - - - - - \r [ \r m a 0031760 n i f e s t l e n B u f = 0032000 1 0 2 4 \r m a n i f e s t m i 0032020 n L e n B 376 001 \0 $ 344 u f = 1 0032040 2 8 \r l e t m b B u f = v 0032060 e c l e n B u f \r l e t m b 0032100 = m b B u f \r l e t e n d 0032120 B u f = m b B u f \r l e t 0032140 i t e m = l v c s A r r a 0032160 y > > C S A r r a y . i t e m ^ 0032200 ( c s A r r a y > > C S A r r a 0032220 y . l e n g t h ) \r l e t e n 0032240 d I t e m = l v c s A r r 0032260 a y > > C S A r r a y . i t e m 0032300 ^ ( c s A r r a y > > C S A r r 0032320 a y . m a x L e n g t h ) \r l e 0032340 t m e m o r y N u m I M = 0032360 - 2 \r l e t m e m o r y N u m 0032400 I F U M = - 2 \r l e t m e 0032420 m o r y N u m R M 376 001 \0 230 K = 0032440 - 2 \r l e t m e m o r y N u 0032460 m = - 1 \r l e t a d d r 0032500 = n i l \r l e t m e m o r y 0032520 W i d t h s = v e c m a x 0032540 M e m o r y N u m ; Z e r o ( 0032560 m e m o r y W i d t h s , m a 0032600 x M e m o r y N u m ) \r l e t 0032620 n a m e = v e c m a x L e 0032640 n N a m e \r \r [ / / r 0032660 e p e a t \r i f ( e n d 0032700 B u f - m b ) l s m i n L e 0032720 n B u f t h e n \r 0032740 [ \r l e t w o r d 0032760 s R e m a i n i n g = e n d 0033000 B u f - m b \r M o v 0033020 e B l o c k ( m b B u f , m 376 0033040 001 \0 202 $ b , w o r d s R e m a 0033060 i n i n g ) \r m b 0033100 = m b B u f \r w o 0033120 r d s R e m a i n i n g = w 0033140 o r d s R e m a i n i n g + \r 0033160 R e a d B l o c k 0033200 ( s t r e a m , m b + w o r d 0033220 s R e m a i n i n g , l e n B 0033240 u f - w o r d s R e m a i n i n 0033260 g ) \r i f w o r d 0033300 s R e m a i n i n g l e 0 0033320 t h e n C a l l S w a t ( " M 0033340 i s s i n g E n d b l o c k 0033360 i n M B f i l e " ) \r 0033400 e n d B u f = m b B 0033420 u f + w o r d s R e m a i n i n 0033440 g \r 376 001 \0 \0 324 ] \r \r 0033460 s w i t c h o n m b > > 0033500 M B . t y p e i n t o \r 0033520 [ \r c a s e 0033540 m b E n d : \r 0033560 b r e a k \r \r c a s 0033600 e m b D a t a : \r 0033620 [ \r l e 0033640 t v a l u e = l v m b > 0033660 > M B . d a t a . v a l u e \r 0033700 t e s t m e m 0033720 o r y N u m e q m e m o r y 0033740 N u m I M i f s o \r 0033760 [ \r 0034000 i t e m > > I t e m . 0034020 t y p e = i t e m I M \r 0034040 376 001 \0 354 214 i 0034060 t e m > > I t e m . d a t a . a 0034100 d d r = v a l u e > > I M . 0034120 a b s o l u t e A d d r \r 0034140 i t e m > > I 0034160 t e m . d a t a . w o r d 0 = 0034200 v a l u e > > I M . r e s t 0 0034220 l s h i f t 1 + v a l u 0034240 e > > I M . A S E L 2 \r 0034260 i t e m > > I t 0034300 e m . d a t a . w o r d 1 = 0034320 v a l u e > > I M . r e s t 1 0034340 l s h i f t 2 + v a l u e 0034360 > > I M . J C N 6 7 \r 0034400 i t e m > > I t e 0034420 m . P E 0 2 0 = v a l u e > 0034440 > I M . P E 0 2 0 \r 376 001 0034460 \0 002 222 i t e m > 0034500 > I t e m . R S T K 0 = v a 0034520 l u e > > I M . R S T K 0 \r 0034540 i t e m > > 0034560 I t e m . P E 2 1 3 1 = v a 0034600 l u e > > I M . P E 2 1 3 1 \r 0034620 i t e m > 0034640 > I t e m . B L K = v a l u 0034660 e > > I M . B L K \r 0034700 i t e m = i t e 0034720 m + l e n I t e m \r 0034740 i f i t e m g e 0034760 e n d I t e m t h e n C a 0035000 l l S w a t ( " I t e m a r r 0035020 a y o v e r f l o w e d " ) \r 0035040 ] \r 0035060 376 001 \0 025 257 i f n o 0035100 t t e s t m e m o r y N u m 0035120 e q m e m o r y N u m I F U 0035140 M i f s o \r 0035160 [ \r 0035200 i t e m > > I t e m . t y p e 0035220 = i t e m I F U M \r 0035240 i t e m > > I t 0035260 e m . d a t a . a d d r = a 0035300 d d r \r 0035320 / / D e s p i t e w h a t 0035340 t h e m a n u a l s a y s , 0035360 t h e h a r d w a r e r e 0035400 a l l y w a n t s t o \r 0035420 / / s e e 0035440 e v e n p a r i t y - - 0035460 h e n c e t h 376 001 \0 216 o e " 0035500 n o t " i n t h e f o l l 0035520 o w i n g s t a t e m e n t s 0035540 \r v a l 0035560 u e > > I F U M . P 0 = n o 0035600 t O d d P a r i t y ( ( v a l 0035620 u e > > I F U M . w o r d 0 & 0035640 i f u m W 0 P 0 ) x o r \r 0035660 ( v a l 0035700 u e > > I F U M . w o r d 1 & 0035720 i f u m W 1 P 0 ) ) \r 0035740 v a l u e > > I 0035760 F U M . P 1 = n o t O d d 0036000 P a r i t y ( ( v a l u e > > I 0036020 F U M . w o r d 0 & i f u m 0036040 W 0 P 1 ) x o r \r 0036060 ( v a l u e 376 001 \0 0036100 _ 275 > > I F U M . w o r d 1 & 0036120 i f u m W 1 P 1 ) ) \r 0036140 v a l u e > > I 0036160 F U M . P 2 = n o t O d d 0036200 P a r i t y ( ( v a l u e > > I 0036220 F U M . w o r d 0 & i f u m 0036240 W 0 P 2 ) x o r \r 0036260 ( v a l u e > > I 0036300 F U M . w o r d 1 & i f u m 0036320 W 1 P 2 ) ) \r 0036340 i t e m > > I t e m . d a 0036360 t a . w o r d 0 = v a l u e 0036400 > > I F U M . w o r d 0 \r 0036420 i t e m > > I 0036440 t e m . d a t a . w o r d 1 = 0036460 v a l u e > > I F U M . w o r 0036500 d 1 376 001 \0 i 232 \r 0036520 i t e m = i t e m + 0036540 l e n I t e m \r 0036560 i f i t e m g e e 0036600 n d I t e m t h e n C a l l 0036620 S w a t ( " I t e m a r r a y 0036640 o v e r f l o w e d " ) \r 0036660 ] \r 0036700 i f n o t t e s t 0036720 m e m o r y N u m e q m e m 0036740 o r y N u m R M i f s o \r 0036760 [ \r 0037000 i t e m > > I t 0037020 e m . t y p e = i t e m R M 0037040 \r i t e 0037060 m > > I t e m . d a t a . a d d 0037100 r = a d d 376 001 \0 ^ 372 r \r 0037120 i t e m > > 0037140 I t e m . d a t a . w o r d 0 0037160 = v a l u e > > R M . w o r d 0037200 0 \r i t 0037220 e m = i t e m + l e n I t e 0037240 m \r i f 0037260 i t e m g e e n d I t e m 0037300 t h e n C a l l S w a t ( " 0037320 I t e m a r r a y o v e r f 0037340 l o w e d " ) \r 0037360 ] \r i 0037400 f n o t i f m e m o r y N u 0037420 m e q - 1 t h e n \r 0037440 C a l l S w a 0037460 t ( " D a t a f o r u n s p 0037500 e c i f i e d m e m o 376 001 \0 376 0037520 ? r y " ) \r a 0037540 d d r = a d d r + 1 \r 0037560 m b = m b + 0037600 l e n M B D a t a + m e m o 0037620 r y W i d t h s ! m e m o r y N 0037640 u m \r e n d c 0037660 a s e \r ] \r \r 0037700 c a s e m b M e m 0037720 o r y : \r m e 0037740 m o r y N u m = m b > > M B 0037760 . m e m o r y . m e m o r y N u 0040000 m \r i f m e 0040020 m o r y W i d t h s ! m e m o r 0040040 y N u m e q 0 t h e n \r 0040060 C a l l S 0040100 w a t ( " U n d e f i n e d m 0040120 e 376 001 \0 K y m o r y " ) \r 0040140 a d d r = m b > 0040160 > M B . m e m o r y . l o c a t 0040200 i o n \r m b 0040220 = m b + l e n M B M e m o 0040240 r y \r e n d c 0040260 a s e \r \r c a s e 0040300 m b F i x u p : \r 0040320 C a l l S w a t ( " F i x u 0040340 p b l o c k e n c o u n t e 0040360 r e d i n M B f i l e " ) 0040400 \r \r c a s e m b M 0040420 e m o r y N a m e : \r 0040440 [ \r l 0040460 e t n e w M e m o r y N u m 0040500 = m b > > M B . m e m o r y N 0040520 a m e . m e 376 001 \0 177 _ m o r y N 0040540 u m \r i f U 0040560 s c ( n e w M e m o r y N u m , 0040600 m a x M e m o r y N u m ) g 0040620 r 0 t h e n \r 0040640 C a l l S w a t ( " M 0040660 e m o r y n u m b e r o u t 0040700 o f b o u n d s " ) \r 0040720 m e m o r y W i d t 0040740 h s ! n e w M e m o r y N u m 0040760 = ( m b > > M B . m e m o r y 0041000 N a m e . w i d t h + 1 5 ) 0041020 r s h i f t 4 \r 0041040 l e t l e n N a m e = 0041060 R e a d N a m e ( l v m b > > 0041100 M B . m e m o r y N a m e . n a 0041120 m e , n a m e ) \r 376 001 \0 204 W 0041140 t e s t S t r 0041160 i n g E q ( n a m e , " I M " 0041200 ) i f s o m e m o r y N u m 0041220 I M = n e w M e m o r y N u 0041240 m \r i f n o t 0041260 t e s t S t r i n g E q ( n 0041300 a m e , " I F U M " ) i f s 0041320 o m e m o r y N u m I F U M 0041340 = n e w M e m o r y N u m \r 0041360 i f n o t i f 0041400 S t r i n g E q ( n a m e , 0041420 " R M " ) t h e n m e m o r 0041440 y N u m R M = n e w M e m o 0041460 r y N u m \r m 0041500 b = m b + l e n M B M e 0041520 m o r y N a m e + l e n N a 0041540 376 001 \0 e V m e \r 0041560 e n d c a s e \r 0041600 ] \r \r c a s e 0041620 m b A d d r e s s : \r 0041640 m b = m b + l e 0041660 n M B A d d r e s s + R e a 0041700 d N a m e ( l v m b > > M B . 0041720 a d d r e s s . n a m e , n a 0041740 m e ) \r e n d 0041760 c a s e \r \r c a s e 0042000 m b U n d e f i n e d : \r 0042020 C a l l S w a t ( 0042040 " U n d e f i n e d s y m b o 0042060 l b l o c k e n c o u n t e 0042100 r e d i n M B f i l e " ) 0042120 \r \r d e f a u l t : 0042140 \r 376 001 \0 351 372 C 0042160 a l l S w a t ( " U n k n o w n 0042200 b l o c k t y p e i n M 0042220 B f i l e " ) \r ] 0042240 \r ] r e p e a t \r \r c s 0042260 A r r a y > > C S A r r a y . l 0042300 e n g t h = ( i t e m - 0042320 l v c s A r r a y > > C S A r 0042340 r a y . i t e m ^ 0 ) / l e n I 0042360 t e m \r ] \r \r / / - - - - - - - 0042400 - - - - - - - - - - - - - - - - * 0042500 - - - - - \r a n d A p p e n d 0042520 E n d I t e m ( c s A r r a y , 0042540 s t a r t A d d r 376 001 \0 # | ) 0042560 b e \r / / - - - - - - - - - - 0042600 - - - - - - - - - - - - - - - - * 0042700 - - \r [ \r l e t i t e m = 0042720 l v c s A r r a y > > C S A r 0042740 r a y . i t e m ^ ( c s A r r a 0042760 y > > C S A r r a y . l e n g t 0043000 h ) \r c s A r r a y > > C S A r 0043020 r a y . l e n g t h = c s A 0043040 r r a y > > C S A r r a y . l e 0043060 n g t h + 1 \r i t e m > > I t 0043100 e m . t y p e = i t e m E n 0043120 d \r i t e m > > I t e m . e n d 0043140 . s t a r t A d d r = s t 376 0043160 001 \0 + 345 a r t A d d r \r l e t 0043200 c h e c k s u m = 0 \r l e t 0043220 f i r s t I t e m = l v 0043240 c s A r r a y > > C S A r r a y 0043260 . i t e m ^ 0 \r f o r i = 0043300 0 t o ( c s A r r a y > > C 0043320 S A r r a y . l e n g t h * 0043340 l e n I t e m ) - 1 d o \r 0043360 c h e c k s u m = c h e c 0043400 k s u m + f i r s t I t e m 0043420 ! i \r i t e m > > I t e m . e n 0043440 d . c h e c k s u m = - c h 0043460 e c k s u m \r ] \r \r / / - - - - 0043500 - - - - - - - - - - - - - - - - * 0043560 - - - - 376 001 \0 267 ! - - - - - - - 0043600 - - - - - - - - - - - - - \r a n 0043620 d R e a d N a m e ( m b N a m 0043640 e , s t r i n g N a m e ) = 0043660 v a l o f \r / / - - - - - - - 0043700 - - - - - - - - - - - - - - - - * 0044000 - - - - - \r / / C o n v e r t 0044020 s f r o m t h e M B n a 0044040 m e f o r m a t t o a n 0044060 o r m a l s t r i n g . \r / / 0044100 R e t u r n s t h e n u m 0044120 b e r o f w o r d s o c c 0044140 u p i e d b y m b N a m e . 0044160 \r [ \r l e t i 376 001 \0 \f 365 = 0044200 0 \r [ / / r e p e a t 0044220 \r l e t c h a r = m 0044240 b N a m e > > M B N a m e ^ i \r 0044260 i f c h a r e q 0 0044300 t h e n b r e a k \r s t 0044320 r i n g N a m e > > S t r i n g 0044340 . c h a r ^ ( i + 1 ) = c h 0044360 a r \r i = i + 1 \r 0044400 ] r e p e a t \r s t r i n g 0044420 N a m e > > S t r i n g . l e n 0044440 g t h = i \r r e s u l t i s 0044460 i r s h i f t 1 + 1 \r ] 0044500 \r \r / / - - - - - - - - - - - - 0044520 - - - - - - - - - - - - - - - - * 0044560 - - - - - - - - - - - - - - 376 001 0044600 \0 K % - - - - - - - - - - - - - 0044620 - - - - - \r a n d S t r i n g 0044640 E q ( s 1 , s 2 ) = v a l 0044660 o f \r / / - - - - - - - - - - - 0044700 - - - - - - - - - - - - - - - - * 0045000 - \r [ \r l e t l e n g t h = 0045020 s 1 > > S t r i n g . l e n g 0045040 t h \r i f l e n g t h n e 0045060 s 2 > > S t r i n g . l e n g t 0045100 h r e s u l t i s f a l s e 0045120 \r f o r i = 1 t o l e 0045140 n g t h d o \r [ \r 0045160 l e t c 1 , c 2 = s 1 > 0045200 > S t 376 001 \0 225 . r i n g . c h a 0045220 r ^ i , s 2 > > S t r i n g . 0045240 c h a r ^ i \r i f c 1 0045260 n e c 2 t h e n \r 0045300 u n l e s s ( c 1 x o r 0045320 4 0 B ) e q c 2 & \r 0045340 U s c ( ( c 1 & 1 3 0045360 7 B ) - $ A , $ Z - $ A ) l 0045400 e 0 r e s u l t i s f a l 0045420 s e \r ] \r r e s u l t i s 0045440 t r u e \r ] \r \r / / - - - - - 0045460 - - - - - - - - - - - - - - - - * 0045560 - - - - - - - \r a n d O d d P 0045600 a r i t y ( v a 376 001 \0 \b ' l u e 0045620 ) = v a l o f \r / / - - - - 0045640 - - - - - - - - - - - - - - - - * 0045740 - - - - - - - - \r / / R e t u 0045760 r n s t h e b i t w h i c 0046000 h , w h e n c o m b i n e d 0046020 w i t h v a l u e , w o u 0046040 l d m a k e i t h a v e \r 0046060 / / o d d p a r i t y . \r [ 0046100 \r v a l u e = v a l u e x 0046120 o r ( v a l u e r s h i f t 0046140 8 ) \r v a l u e = v a l u 0046160 e x o r ( v a l u e r s h 0046200 i f t 4 ) \r r e s u l t 376 001 \0 0046220 m 266 i s ( 1 1 3 1 5 1 B r s 0046240 h i f t ( v a l u e & 1 7 0046260 B ) ) & 1 \r ] \r \r / / - - - 0046300 - - - - - - - - - - - - - - - - * 0046400 - - - - - - - - - \r a n d W r 0046420 i t e E B H e a d e r ( s t r e 0046440 a m , c s A r r a y , n i l 0046460 , f i l e N a m e ) b e \r / 0046500 / - - - - - - - - - - - - - - - 0046520 - - - - - - - - - - - - - - - - * 0046600 - - - - - - - - - - - - - \r [ \r 0046620 l e 376 001 \0 005 235 t b u f = v 0046640 e c 2 5 6 / / = l e n 0046660 E B F i l e \r \r / / M a k e 0046700 t h e e m b e d d e d c r e 0046720 a t i o n d a t e b e t h 0046740 e s a m e a s t h e f i 0046760 l e ' s \r R e a d L e a d e r P 0047000 a g e ( s t r e a m , b u f ) 0047020 \r l e t c r e a t i o n D a t 0047040 e = v e c 1 ; M o v e B 0047060 l o c k ( c r e a t i o n D a t 0047100 e , l v b u f > > L D . c r 0047120 e a t e d , 2 ) \r Z e r o ( b 0047140 u f , l e n E B F i l e ) \r M 0047160 o v e B l o c k ( l v b u f > 0047200 > E B F i l e . c r e a t i o n 0047220 D a t e , c 376 001 \0 270 333 r e a t 0047240 i o n D a t e , 2 ) \r b u f > 0047260 > E B F i l e . e t h e r V e r 0047300 s i o n N u m b e r = e t h 0047320 e r V e r s i o n N u m b e r \r 0047340 M e s a F r o m B C P L S t r i 0047360 n g ( l v b u f > > E B F i l 0047400 e . n a m e , f i l e N a m e 0047420 ) \r W r i t e B l o c k ( s t r 0047440 e a m , b u f , l e n E B F 0047460 i l e ) \r ] \r \r / / - - - - - - 0047500 - - - - - - - - - - - - - - - - * 0047600 - - - - - - \r a n d W r i t e 0047620 B R H e a d e r ( s t r 376 001 \0 w 0047640 332 e a m , c s A r r a y , l 0047660 a b e l N a m e , n i l ) b 0047700 e \r / / - - - - - - - - - - - - 0047720 - - - - - - - - - - - - - - - - * 0050020 \r [ \r l e t b r F i l e = 0050040 v e c l e n B R F i l e ; Z 0050060 e r o ( b r F i l e , l e n B 0050100 R F i l e ) \r l e t n a m e L 0050120 e n g t h = l a b e l N a m 0050140 e > > S t r i n g . l e n g t h 0050160 / 2 + 1 \r b r F i l e > > B R F 0050200 i l e . b c p l V e r s i o n N 0050220 u m b e r = b c p l V e r s 0050240 i 376 001 \0 \r 370 o n N u m b e r \r / 0050260 / w i l l b e f i x e d 0050300 u p l a t e r : \r / / b r F 0050320 i l e > > B R F i l e . f i l e 0050340 L e n g t h = o f f s e t 0050360 B R F i l e . i t e m / 1 6 + 0050400 n a m e L e n g t h + c s 0050420 A r r a y L e n g t h \r b r F i 0050440 l e > > B R F i l e . n a m e T 0050460 a b l e O f f s e t = o f f 0050500 s e t B R F i l e . n a m e T 0050520 a b l e / 1 6 \r b r F i l e > > 0050540 B R F i l e . l a b e l T a b l 0050560 e O f f s e t = o f f s e t 0050600 B R F i l e . l a b e l T a b 0050620 l e / 1 6 \r b r F i l e > > B R 0050640 F i l e . c 376 001 \0 330 v o d e O f 0050660 f s e t = o f f s e t B R 0050700 F i l e . c o d e / 1 6 + n 0050720 a m e L e n g t h \r b r F i l e 0050740 > > B R F i l e . c h a i n T a 0050760 b l e O f f s e t = o f f s 0051000 e t B R F i l e . c h a i n T 0051020 a b l e / 1 6 \r b r F i l e > > 0051040 B R F i l e . z c h a i n T a b 0051060 l e O f f s e t = o f f s e 0051100 t B R F i l e . z c h a i n T 0051120 a b l e / 1 6 \r b r F i l e > > 0051140 B R F i l e . l a b e l C o u n 0051160 t = 1 \r b r F i l e > > B R 0051200 F i l e . l a b e l N a m e N u 0051220 m b e r = 1 \r b r F i l e > 0051240 > B R F i l e . l a b 376 001 \0 305 ) 0051260 e l P C = 1 \r b r F i l e > 0051300 > B R F i l e . n a m e C o u n 0051320 t = 1 \r b r F i l e > > B R 0051340 F i l e . n a m e D e s c r i p 0051360 t o r = 1 4 0 b \r W r i t e 0051400 B l o c k ( s t r e a m , b r 0051420 F i l e , l e n B R F i l e ) 0051440 \r W r i t e B l o c k ( s t r e 0051460 a m , l a b e l N a m e , n 0051500 a m e L e n g t h ) \r P u t s ( 0051520 s t r e a m , 0 ) \t \t / / c 0051540 o d e L e n g t h ( c s A r r 0051560 a y L e n g t h + 1 ) , w i l 0051600 l b e f i x e d u p l a 0051620 t e r \r P u t s ( s t r e a m , 0051640 0 ) \t \t / / c o d e F i r s 0051660 376 001 \0 H 364 t \r ] \r \r / / - - - - 0051700 - - - - - - - - - - - - - - - - * 0052000 - - - - - - - - \r a n d F i x 0052020 U p B R H e a d e r ( s t r e a 0052040 m , c s A r r a y L e n g t h 0052060 , l a b e l N a m e ) b e \r 0052100 / / - - - - - - - - - - - - - - 0052120 - - - - - - - - - - - - - - - - * 0052200 - - - - - - - - - - - - - - \r [ 0052220 \r l e t n a m e L e n g t h 0052240 = l a b e l N a m e > > S t r 0052260 i n g . l 376 001 \0 032 t e n g t h / 0052300 2 + 1 \r S e t F i l e P o s ( s 0052320 t r e a m , 0 , o f f s e t 0052340 B R F i l e . f i l e L e n g 0052360 t h / 8 ) \r P u t s ( s t r e a 0052400 m , o f f s e t B R F i l e 0052420 . i t e m / 1 6 + n a m e L 0052440 e n g t h + c s A r r a y L 0052460 e n g t h ) \r S e t F i l e P o 0052500 s ( s t r e a m , 0 , 2 * ( 0052520 l e n B R F i l e + n a m e L e 0052540 n g t h ) ) \r P u t s ( s t r e 0052560 a m , c s A r r a y L e n g t 0052600 h + 1 ) \r R e s e t s ( s t r e 0052620 a m ) / / s o O S w o 0052640 n ' t t r u n c a t e w h e 0052660 n w e c l o s e 376 001 \0 1 b ! 0052700 \r ] \r \r / / - - - - - - - - - - 0052720 - - - - - - - - - - - - - - - - * 0053020 - - \r a n d M e s a F r o m B 0053040 C P L S t r i n g ( m e s a S t 0053060 r i n g , b c p l S t r i n g 0053100 ) = v a l o f \r / / - - - - 0053120 - - - - - - - - - - - - - - - - * 0053220 - - - - - - - - \r / / R e t u 0053240 r n s t h e n u m b e r o 0053260 f w o r d s o c c u p i e 376 0053300 001 \0 x U d b y t h e m e s 0053320 a S t r i n g \r [ \r l e t l e 0053340 n g t h = b c p l S t r i n 0053360 g > > S t r i n g . l e n g t h 0053400 \r m e s a S t r i n g > > M e s 0053420 a S t r i n g . l e n g t h = 0053440 l e n g t h \r m e s a S t r i 0053460 n g > > M e s a S t r i n g . m 0053500 a x L e n g t h = ( l e n g 0053520 t h + 1 ) & - 2 \r f o r i 0053540 = 1 t o l e n g t h d 0053560 o m e s a S t r i n g > > M e 0053600 s a S t r i n g . c h a r ^ ( i 0053620 - 1 ) = b c p l S t r i n g 0053640 > > S t r i n g . c h a r ^ i \r 0053660 r e s u l t i s ( o f f s e t 0053700 M e s 376 \0 - 222 327 a S t r i n g 0053720 . c h a r ^ 0 / 1 6 ) + 0053740 ( l e n g t h + 1 ) r s h i f 0053760 t 1 \r ] \r 377 \0 \0 L o a d L o a 0054000 d M B . c m \0 373 231 - M L \0 \0 376 \0 0054020 % ! V B l d r / L V L o a d M 0054040 B G P T e m p l a t e A l 0054060 t o Q u e u e \r 377 \0 \0 L o a d M 0054100 B . c m \0 373 225 & 220 003 \0 \0 376 \0 $ 324 0054120 033 L o a d M B . b c p l L o a 0054140 d L o a d M B . c m L o a d M 0054160 B . c m \r 374 0054166