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