$ od -c -N 50000 [Indigo]<AltoSource>FINDPKG.DM!2 0000000 377 \0 \0 f i n d p k g d e f s . d 0000020 \0 373 224 O D r \0 \0 376 \0 344 231 ] / / \r 0000040 / / U s e r d e f i n i t i 0000060 o n s f o r f i l e s e a 0000100 r c h i n g p a c k a g e \r / 0000120 / l a s t e d i t e d J u 0000140 n e 1 6 , 1 9 7 7 4 : 4 0000160 1 P M \r / / \r / / C o p y r 0000200 i g h t X e r o x C o r p o 0000220 r a t i o n 1 9 7 9 \r \r m a n 0000240 i f e s t \t / / c h a r a c t 0000260 e r c l a s s e s \r [ \t c l a 0000300 s s O t h e r = - 1 \r \t c l 0000320 a s s E x i t = - 2 \r \t c l 0000340 a s s S k i p = - 3 \r \t c l 0000360 a s s R e c o r d = - 4 \r ] 0000400 \r 377 \0 \0 f i n d i n t d e f s . 0000420 d \0 373 224 O D r \0 \0 376 001 \0 337 / / / 0000440 \r / / P a r a m e t e r s f 0000460 o r f i l e s e a r c h i n 0000500 g p a c k a g e \r / / l a s 0000520 t e d i t e d J u n e 1 7 0000540 , 1 9 7 7 1 : 1 8 P M \r 0000560 / / \r / / C o p y r i g h t 0000600 X e r o x C o r p o r a t i o 0000620 n 1 9 7 9 \r \r m a n i f e s t 0000640 \t / / m i c r o c o d e e n 0000660 t r y p o i n t s \r [ \t R e s 0000700 e t = 0 \r \t M a t c h = 0000720 1 \r \t F e t c h E v e n = 2 0000740 \r \t F e t c h O d d = 4 \r \t 0000760 S k i p = 6 \r \t R e c o r d 0001000 = 7 \r ] \r \r m a n i f e s t 0001020 \t / / r e g i s t e r s 376 \0 0001040 343 206 201 k n o w n t o F i n d 0001060 N e x t \r [ \t R p h a s e = 0001100 1 5 b \r \t R n e g K 1 = 1 6 0001120 b \r ] \r \r m a n i f e s t \r [ \t 0001140 J M P R A M = # 6 1 0 1 0 \t 0001160 / / " j u m p t o R A M " 0001200 o p c o d e \r ] \r \r s t r u c 0001220 t u r e \r [ \t b y t e s ^ 0 , 1 0001240 0 0 0 b b y t e \r ] \r \r e x t 0001260 e r n a l \t / / c o m m u n i 0001300 c a t i o n b e t w e e n F 0001320 i n d C o m p a n d F i n d 0001340 N e x t \r [ \t @ f N e g K \r \t @ 0001360 f N p h a s e \r \t @ f E x i t C 0001400 h a r \r ] \r 377 \0 \0 f i n d n e x 0001420 t . b c p l \0 373 226 ' 265 g \0 \0 376 001 0001440 \0 361 w / / \r / / F i l e s e 0001460 a r c h i n g p a c k a g e \r 0001500 / / l a s t e d i t e d O 0001520 c t o b e r 2 9 , 1 9 8 0 0001540 9 : 3 1 P M \r / / \r / / C 0001560 o p y r i g h t X e r o x C 0001600 o r p o r a t i o n 1 9 7 9 , 0001620 1 9 8 0 \r \r \t g e t " s t r 0001640 e a m s . d " \r \t g e t " a l 0001660 t o f i l e s y s . d " \r \t g e 0001700 t " f i n d i n t d e f s . d 0001720 " \r \r e x t e r n a l \t / / e 0001740 n t r i e s \r [ \t F i n d I n i 0001760 t S c a n \t / / ( s t r e a m 0002000 , b u f , b u f s i z e , 0002020 f a ) - > s s d \r \t F i n d 0002040 N e x 376 001 \0 301 322 t \t / / ( ) 0002060 - > p p o s / n o t n p a g 0002100 e s \r \t / / S e t u p b y 0002120 F i n d C o m p i l e o r 0002140 F i n d C o m p i l e S o f t \r 0002160 \t f i n d W r i t e R e g \t / / 0002200 ( r e g , v a l u e ) \r \t f 0002220 i n d J u m p R a m \t / / ( a 0002240 c 0 , a d d r , a c 3 ) - 0002260 > ( a c 0 , a c 1 , a c 3 0002300 ) \r ] \r \r \r e x t e r n a l \t / 0002320 / p r o c e d u r e s u s e 0002340 d \r [ \t \t / / O S \r \t G e t S 0002360 c a n S t r e a m B u f f e r \r 0002400 \t I n i t S c a n S t r e a m \r 0002420 \t L n P a g e S i z e \r \t M o v 0002440 e B l o c k \r ] 376 001 \0 \r 343 \r \r \r 0002460 s t a t i c \r [ \t @ f S s d \t / 0002500 / S c a n S t r e a m d e s 0002520 c r i p t o r \r \t @ f F a \t / / 0002540 F A f o r p a s s i n g 0002560 m a t c h p o s i t i o n t 0002600 o c a l l e r \r \t @ f P n \t / 0002620 / p a g e n u m b e r o f 0002640 c u r r e n t b u f f e r \r 0002660 \t @ f B u f \t / / c u r r e n 0002700 t b u f f e r \r \t @ f A d d r 0002720 \t / / c u r r e n t a d d r 0002740 e s s w i t h i n f B u f \r 0002760 \t @ f N c h a r s \t / / n u m 0003000 b e r o f c h a r s o f 0003020 d a t a i n f B u f \r \t @ f 0003040 O d d \t / / 1 i f s 376 001 \0 0003060 n M c a n e n d e d o n a 0003100 n o d d b y t e \r \t \t / / 0003120 e n t r i e s f o r F i n d 0003140 C o m p \r \t @ f N e g K \t / / 0003160 - K + 1 , w h e r e K i s 0003200 p a t t e r n l e n g t h 0003220 - f u z z \r \t @ f N p h a s e 0003240 \t / / n u m b e r o f p h 0003260 a s e s \r \t @ f E x i t C h a r 0003300 \t / / e x i t c h a r a c t 0003320 e r ( b o t h b y t e s ) \r 0003340 \t f i n d W r i t e R e g = 0003360 0 \r \t f i n d J u m p R a m = 0003400 0 \r ] \r \r \r l e t F i n d I 0003420 n i t S c a n ( s t , b u f , 0003440 b u f s i z e , f a ) = 0003460 v a 376 001 \0 032 | l o f \r [ \t l e t 0003500 l o g p s = L n P a g e S 0003520 i z e ( s t ) \r \t l e t p s 0003540 = 1 l s h i f t l o g p s 0003560 \r \t f B u f = b u f \r \t l e 0003600 t b u f s = f B u f + p s 0003620 + 1 \t / / + 1 t o s t o r 0003640 e e x i t c h a r a t e 0003660 n d \r \t l e t n b u f s = 0003700 ( b u f s i z e - p s - 1 ) / p 0003720 s \r \t f o r i = 0 t o 0003740 n b u f s - 1 d o \r \t f B 0003760 u f ! i = b u f s + ( i l 0004000 s h i f t l o g p s ) \r / / 0004020 * * * T h e f o l l o w i n 0004040 g s t a t e m e n t i s a 0004060 k l u d g e 376 001 \0 267 365 t o 0004100 o v e r c o m e t h e i n f 0004120 l e x i b l e \r / / * * * a 0004140 l l o c a t i o n p o l i c y 0004160 o f I n i t S c a n S t r e 0004200 a m \r \t i f n b u f s g r 0004220 3 t h e n n b u f s = 3 0004240 \r \t f S s d = I n i t S c a 0004260 n S t r e a m ( s t , f B u f 0004300 , n b u f s ) \r \t f F a = 0004320 f a \r \t f P n = 0 \r \t @ f B 0004340 u f = f E x i t C h a r \r \t 0004360 f N c h a r s = 0 \r \t f A d 0004400 d r = f B u f - 1 \r \t f O d 0004420 d = 1 \r \t f i n d W r i t e 0004440 R e g ( R n e g K 1 , f N e g 0004460 K ) \r \t i f f i n d J 376 001 \0 / 0004500 027 u m p R a m e q 0 t h e 0004520 n \r \t f i n d J u m p R a m 0004540 = t a b l e [ \r \t 5 5 0 0004560 0 1 b \t / / s t a 3 1 , 2 0004600 \r \t 3 5 0 0 3 b \t / / l 0004620 d a 3 3 , 2 \r \t J M P R 0004640 A M \r \t 1 1 0 0 1 b \t / / 0004660 i s z 1 , 2 \r \t 3 0 0004700 0 1 b \t / / j m p @ 1 , 2 \r 0004720 \t ] \r \t f i n d J u m p R a m 0004740 ( 1 7 7 7 b , R e s e t ) \r \t 0004760 r e s u l t i s f S s d \r ] \r 0005000 \r l e t F i n d N e x t ( ) 0005020 = v a l o f \r [ \t l e t l i 0005040 n k , n c t r , p h a s e 0005060 = n i l , n i l , n i l \t 0005100 / 376 001 \0 223 005 / p r e a l l o c 0005120 a t e f o r a s s e m b l y 0005140 c o d e \r \t l e t s a = 0005160 ( F e t c h E v e n + 1 ) - f O 0005200 d d \r \t l e t n e x t = t 0005220 a b l e [ \r \t 5 5 0 0 4 b 0005240 \t / / S T A 3 l i n k , 2 0005260 \r \t 6 4 0 6 b \t / / J 0005300 S R @ l v f i n d J u m p R a 0005320 m \r \t 2 \t / / 0005340 2 / / n a r g s \r \t 0005360 4 5 0 0 5 b \t / / S T A 1 0005400 n c t r , 2 \r \t 5 5 0 0 6 0005420 b \t / / S T A 3 p h a s e 0005440 , 2 \r \t 3 5 0 0 4 b \t / / 0005460 L D A 3 l i n k , 2 \r \t 0005500 1 4 0 376 001 \0 361 366 1 b \t / / 0005520 J M P 1 , 3 \r \t 0005540 0 \t / / l v f i n d J u m p R 0005560 a m : \r \t ] \r \t n e x t ! 7 0005600 = f i n d J u m p R a m \r \t 0005620 f A d d r = n e x t ( f A d 0005640 d r , s a ) \r \t f O d d = 0005660 ( ( p h a s e r s h i f t 1 0005700 1 ) + p h a s e ) & 1 \r 0005720 \t l e t p 1 = ( f A d d r 0005740 - f B u f ) * 2 + f O d d \r \t i 0005760 f n c t r g e 0 t h e n 0006000 \t / / r e a l m a t c h \r \t 0006020 [ f i n d J u m p R a m ( 5 0006040 7 7 7 b - ( f O d d l s h i f 0006060 t 1 1 ) , R e s e t ) \r \t 0006100 f F a > > F A . c 376 001 \0 \0 336 0006120 h a r P o s = p 1 \r \t 0006140 r e s u l t i s ( ( p h a s e 0006160 & 1 7 7 7 b ) - n c t r + f N p 0006200 h a s e ) r e m f N p h a s 0006220 e \t / / p o s i t i o n w i 0006240 t h i n p a t t e r n \r \t ] 0006260 \r \t t e s t p 1 e q f N c 0006300 h a r s \r \t i f s o \t / / r 0006320 e a l e n d o f b u f f e 0006340 r \r \t [ u n l e s s f i n 0006360 d b u f f e r ( ) r e s u l t 0006400 i s n o t f P n \r \t f 0006420 i n d W r i t e R e g ( R p h a 0006440 s e , p h a s e - 1 ) \t / / 0006460 b a c k u p p h a s e \r \t 0006500 f O d d = 1 \t / / f o 0006520 376 001 \0 \a \ r c e e v e n f e 0006540 t c h n e x t \r \t ] \r \t i 0006560 f n o t \t / / e x t r a n e o 0006600 u s e x i t c h a r \r \t [ 0006620 f i n d W r i t e R e g ( R p 0006640 h a s e , ( p h a s e - 1 ) 0006660 x o r 4 0 0 0 b ) \t / / i n 0006700 v e r t e v e n / o d d f l 0006720 a g \r \t ] \r ] r e p e a t \r 0006740 \r a n d f i n d b u f f e r ( 0006760 ) = v a l o f \r / / R e t 0007000 u r n s t r u e i f m o r 0007020 e d a t a \r [ \t l e t b u f 0007040 = G e t S c a n S t r e a m 0007060 B u f f e r ( f S s d ) \r \t i f 0007100 b u f e q 0 r e s u l t 0007120 i s f a 376 \0 367 270 201 l s e \r \t f 0007140 P n = f S s d > > S S D . p 0007160 a g e N u m b e r \r \t f A d d r 0007200 = f B u f - 1 \r \t f N c h a 0007220 r s = f S s d > > S S D . n 0007240 u m C h a r s \r \t f F a > > F A 0007260 . d a = f S s d > > S S D . 0007300 d a \r \t f F a > > F A . p a g e 0007320 N u m b e r = f P n \r \t M o 0007340 v e B l o c k ( f B u f , b u 0007360 f , ( f N c h a r s + 1 ) r 0007400 s h i f t 1 ) \t / / U g l y 0007420 b u t n e c e s s a r y \r \t 0007440 f B u f > > b y t e s ^ f N c h 0007460 a r s = f E x i t C h a r \r 0007500 \t r e s u l t i s t r u e \r ] 0007520 \r 377 \0 \0 f i n d n e x t a s m . 0007540 a s m \0 373 226 * 6 Q \0 \0 376 001 \0 314 - 0007560 ; A s s e m b l y l a n g u 0007600 a g e c o d e f o r n o n 0007620 - m i c r o c o d e d F i n d 0007640 P k g \r ; l a s t e d i t e 0007660 d O c t o b e r 3 1 , 1 9 0007700 8 0 6 : 1 2 P M \r ; C o 0007720 p y r i g h t X e r o x C o 0007740 r p o r a t i o n 1 9 8 0 \r \r 0007760 ; T h e p h a s e a r g u 0010000 m e n t / r e s u l t b e 0010020 l o w i s a c t u a l l y \r 0010040 ; 4 0 0 0 b * s w a p + p h a 0010060 s e , w h e r e s w a p = 1 0010100 m e a n s e v e n p h a s 0010120 e s a c c e s s o d d b y 0010140 t e . \r ; T h i s p e c u l 0010160 376 001 \0 326 375 i a r c o n v e n t 0010200 i o n i s f o r m i c r o 0010220 c o d e c o m p a t i b i l i 0010240 t y . \r \t . e n t f J u m p R 0010260 a m \t ; ( a r g , e n t r y 0010300 ) \r ; E n t r y # s a r e 0010320 : \r ; 0 \t R e s e t ( p h 0010340 a s e ) \r ; 2 \t N e x t E 0010360 v e n ( a d d r ) - > ( a d 0010400 d r , - 1 - o r - c t r - i n 0010420 d e x , p h a s e ) \r ; 0010440 3 \t N e x t O d d ( a d d r ) 0010460 - > s a m e \r \t . e n t f W 0010500 r i t e R e g \t ; ( r e g , 0010520 v a l u e ) \r ; R e g i s t e 0010540 r # s a r e : \r ; 1 5 b 0010560 \t p h a s 376 001 \0 372 244 e \r ; 1 0010600 6 b \t - n M a t c h + 1 \r \t . e 0010620 n t f S k i p , f E x i t , 0010640 f C l e a r , f C o u n t \r 0010660 \t . e n t f l v l v l v C t r 0010700 s , f n N c t r s , f l v D 0010720 i s p \r \r \t . s r e l \r \r f J u 0010740 m p R a m : \t . f J u m p R a m 0010760 \r f W r i t e R e g : \t . f W r 0011000 i t e R e g \r f S k i p : \t . f 0011020 S k i p \r f E x i t : \t . f E x 0011040 i t \r f C l e a r : \t . f C l e 0011060 a r \r \r \t . z r e l \r \r f C o u 0011100 n t : \t . f C o u n t \r \r ; l 0011120 v l v l v C t r s i s t h e 0011140 b a s e o f a t a b l e 0011160 i n d e x e d b 376 001 \0 204 322 y 0011200 p h a s e ; \r ; l v l v C t 0011220 r s p o i n t s t o t h e 0011240 b a s e o f a t a b l e 0011260 i n d e x e d b y c o u n 0011300 t e r # : \r ; e a c h 0011320 e n t r y i n t h i s t a 0011340 b l e p o i n t s t o a 0011360 c o u n t e r \r ; t h e 0011400 - 1 e n t r y i s t h e 0011420 s a m e a s t h e 0 e n 0011440 t r y \r f l v l v l v C t r s : 0011460 \t 0 \r l v l v C t r s : \t 0 \r l 0011500 v C t r s : \t 0 \t ; b a s e 0011520 o f c o u n t e r s \r f n N c 0011540 t r s : \t 0 \t ; - # o f 0011560 c o u n t e r s \r n N m a t c 376 0011600 001 \0 204 214 h : \t 0 \t ; - # o 0011620 f m a t c h e s r e q u i r 0011640 e d + 1 \r f l v D i s p : \t 0 0011660 \t ; b a s e o f d i s p a 0011700 t c h \r d a d d r : \t 0 \t ; p 0011720 o i n t e r t o d a t a \r o 0011740 d d B y t e : \t 0 \t ; e v e n 0011760 i f e v e n ( l e f t ) 0012000 b y t e , o d d i f o d d 0012020 b y t e \r f a c 2 : \t 0 \t ; 0012040 s a v e A C 2 i n s e a r 0012060 c h l o o p \r \r \t . n r e l \r 0012100 \r l i n k = 1 \r t e m p = 2 \r a 0012120 r g 3 = 3 \r \r ; S i m u l a t 0012140 e W r i t e R e g \r \r . f W r 0012160 i t e R e g : \r \t s t a 3 l 0012200 i n k , 376 001 \0 301 H 2 \r \t m o v r 0012220 # 0 0 s z c \r \t j m p 0012240 . f S e t P h a s e \r \t j m p 0012260 . f I n i t \r \r ; I n i t i 0012300 a l i z e w i t h n u m b e 0012320 r o f m a t c h e s \r \r . f 0012340 I n i t : \t a d c 0 0 \r \t a 0012360 d d 0 1 \t \t ; a c 1 _ 0012400 a c 1 - 1 \r \t s t a 1 n N m 0012420 a t c h \r \t l d a 3 @ f l v 0012440 l v l v C t r s \r \t l d a 3 0012460 0 , 3 \r \t s t a 3 l v C t r 0012500 s \r \t l d a 3 l i n k , 2 \r 0012520 \t j m p 1 , 3 \r \r ; S e t 0012540 p h a s e \r \r . f S e t P h a s 0012560 e : \r \t l d a 0 m 4 0 0 1 \r 0012600 \t a n d z r 1 376 001 \0 246 214 0 0012620 s z r \t ; c a r r y _ o d 0012640 d p h a s e , s k i p i f 0012660 s w a p n o t s e t \r \t 0012700 m o v c l 0 0 s k p \t ; 0012720 o d d b y t e f l a g _ 0012740 n o t o d d p h a s e ( 0012760 s w a p s e t ) \r \t m o v 0013000 l 0 0 \t ; o d d b y t e 0013020 f l a g _ o d d p h a s 0013040 e ( s w a p n o t s e t ) 0013060 \r \t s t a 0 o d d B y t e \r 0013100 \t i n c 1 1 \r \t l d a 0 0013120 m 1 7 7 7 \r \t a n d 0 1 \r \t 0013140 a d c 0 0 \r \t a d d 0 1 0013160 \t \t ; m a s k p h a s e \r \t 0013200 l d a 0 f l v l v l v C 376 001 0013220 \0 244 202 t r s \r \t a d d 1 0 \r 0013240 \t s t a 0 l v l v C t r s \r 0013260 \t l d a 3 l i n k , 2 \r \t j 0013300 m p 1 , 3 \r m 4 0 0 1 : \t 4 0 0013320 0 1 \r m 1 7 7 7 : \t 1 7 7 7 \r \r 0013340 ; S i m u l a t e J u m p R 0013360 a m \r \r . f J u m p R a m : \r \t 0013400 s t a 3 l i n k , 2 \r \t m o 0013420 v # 1 1 s n r \r \t j m 0013440 p . f R e s e t \r \t s t a 0 0013460 d a d d r \r \t s t a 2 f a 0013500 c 2 \r \t l d a 2 l v l v C t 0013520 r s \r \t m o v r # 1 1 s n 0013540 c \r \t j m p . f E v e n \r 0013560 \t l d a 1 @ d a d d r \r \t j 0013600 m p . f O d d \r \r ; R e s e 0013620 t c 376 001 \0 230 031 o u n t e r s 0013640 a n d p h a s e \r \r . f R e s 0013660 e t : \r \t s t a 3 l i n k , 0013700 2 \r \t l d a 3 l v C t r s \r 0013720 \t l d a 1 f n N c t r s \r \t 0013740 s t a 1 t e m p , 2 \r \t l d 0013760 a 1 n N m a t c h \r . f r 1 0014000 : \t s t a 1 0 , 3 \r \t i n c 0014020 3 3 \r \t i s z t e m p , 2 0014040 \r \t j m p . f r 1 \r \t m o 0014060 v 0 1 \r \t j m p . f S e t 0014100 P h a s e \r \r ; F i n d n e 0014120 x t m a t c h . C a r r y 0014140 = o d d B y t e , A C 2 = l v 0014160 l v C t r s , A C 1 = @ d a d 0014200 d r f o r . f O d d \r \r ; 0014220 D i s p a t c h 376 001 \0 c 236 h e 0014240 r e f o r s k i p c h a r 0014260 a c t e r \r \r . f S k i p : \t m 0014300 o v # 0 0 s z c \t ; c a 0014320 r r y = o d d B y t e \r \t j 0014340 m p . f O d d \r ; F a l l s 0014360 t h r o u g h t o . f E v 0014400 e n \r . f E v e n : \t i s z d 0014420 a d d r \r \t l d a 1 @ d a d 0014440 d r \r \t l d a 3 l c m a s k 0014460 \r \t a n d s 1 3 \r \t l d a 0014500 0 f l v D i s p \r \t a d d o 0014520 0 3 \t ; c a r r y _ 1 , 0014540 o d d b y t e n e x t \r \t 0014560 j m p @ 0 , 3 \r l c m a s k : 0014600 \t 7 7 4 0 0 \r \r ; D i s p a t 0014620 c h h e r e f o r a 376 001 \0 0014640 264 \b c h a r a c t e r n o t 0014660 a p p e a r i n g i n t h 0014700 e p a t t e r n . \r ; T h i 0014720 s i s e x a c t l y l i k 0014740 e a n o r d i n a r y c h 0014760 a r a c t e r w i t h a n 0015000 u l l t a b l e . \r \r . f c l 0015020 0 : \t l d a 2 f l v l v l v 0015040 C t r s \r \t l d a 3 0 , 2 \r 0015060 \t j m p . f c l 1 \r . f C l e 0015100 a r : \r \t i n c 2 2 \r \t l d 0015120 a 3 0 , 2 \r \t m o v # 3 0015140 3 s n r \r \t j m p . f c 0015160 l 0 \r . f c l 1 : \t l d a 0 0015200 n N m a t c h \r \t s t a 0 @ 0015220 - 1 , 3 \r \t m o v # 0 0 s 0015240 n c 376 001 \0 337 361 \t ; c a r r y = 0015260 o d d B y t e \r \t j m p . 0015300 f E v e n \r ; F a l l s t h 0015320 r o u g h t o . f O d d \r . 0015340 f O d d : \t l d a 3 r c m a 0015360 s k \r \t a n d 1 3 \r \t l d a 0015400 0 f l v D i s p \r \t a d d z 0015420 0 3 \t ; c a r r y _ 0 0015440 , e v e n b y t e n e x t 0015460 \r \t j m p @ 0 , 3 \r r c m a s 0015500 k : \t 1 7 7 \r \r ; D i s p a t 0015520 c h h e r e f o r e x i t 0015540 c h a r a c t e r \r \r . f E x 0015560 i t : \t s u b c l 1 1 \t ; 0015600 a c 1 _ c a r r y \r \t s t a 0015620 1 o d d B y t e \r \t i n c 0015640 2 2 \r \t a d 376 001 \0 L O c 1 0015660 1 \t \t ; N o t a r e a l 0015700 m a t c h \r ; H e r e f o r 0015720 e x i t o r m a t c h . 0015740 a c 1 = - 1 o r c o u n t 0015760 e r # \r . f O u t : \t l d a 0016000 0 0 , 2 \r \t m o v # 0 0 0016020 s n r \t ; C h e c k f o r 0016040 w r a p a r o u n d \r \t j m 0016060 p . f x 3 \r \t s t a 2 l v 0016100 l v C t r s \r \t l d a 0 f l 0016120 v l v l v C t r s \r \t s u b 0 0016140 2 \t \t ; C o m p u t e p h 0016160 a s e \r \t l d a 3 m 1 7 7 7 0016200 \r \t a n d 2 3 \t \t ; M i g 0016220 h t b e - 1 \r . f x 2 : \t l 0016240 d a 2 f a c 2 \t ; 376 001 \0 H 0016260 { R e s t o r e B c p l A C 0016300 2 \r \t i s z l i n k , 2 \t ; 0016320 D o n ' t s m a s h a c 3 \r 0016340 \t l d a 0 o d d B y t e \r \t 0016360 a d d r # 3 0 s n c \t ; 0016400 c a r r y _ o d d p h a s 0016420 e x o r o d d b y t e \r \t 0016440 j m p . f x 4 \r \t l d a 0016460 0 d a d d r \r \t j m p @ l i 0016500 n k , 2 \r . f x 3 : \t l d a 3 0016520 f l v l v l v C t r s \r \t s t 0016540 a 3 l v l v C t r s \r \t s u 0016560 b 3 3 \r \t j m p . f x 2 \r 0016600 . f x 4 : \t l d a 0 s w a p 0016620 b i t \r \t a d d 0 3 \t \t ; 0016640 S e t s w a p b i t i f 0016660 p 376 001 \0 274 \n h a s e p a r i t 0016700 y # b y t e p a r i t y \r 0016720 \t l d a 0 d a d d r \r \t j m 0016740 p @ l i n k , 2 \r s w a p b i 0016760 t : \t 4 0 0 0 \r \r ; D i s p a 0017000 t c h h e r e f o r o r d 0017020 i n a r y c h a r a c t e r . 0017040 C o d e i s \r ; \t j s r 0017060 @ f C o u n t \r ; \t t a b l e 0017100 o f c o u n t e r i n d i c 0017120 e s \r ; \t - 1 \r \r . f C o u n t 0017140 : \t s u b c l 1 1 \t ; a c 0017160 1 _ c a r r y \r \t i n c 2 0017200 2 \r \t l d a 0 0 , 2 \r \t m 0017220 o v # 0 0 s n r \r \t j 0017240 m p . f c 3 \t ; W r a p a 0017260 r o u n d 376 001 \0 J 305 t o p h 0017300 a s e 0 \r . f c 0 : \t s t a 0017320 2 l v l v C t r s \r . f c 1 : 0017340 \t l d a 2 0 , 3 \r \t a d d z 0017360 0 2 s z c \r \t j m p 0017400 . f c 2 \t ; R a n o f f e 0017420 n d o f t a b l e , n o 0017440 m a t c h \r \t i n c 3 3 \r \t 0017460 i s z @ 0 , 2 \r \t j m p 0017500 . f c 1 \r \t s t a 1 o d d B 0017520 y t e \r \t l d a 1 0 , 2 \t ; 0017540 M a t c h , r e t u r n c 0017560 o u n t e r # \r \t l d a 0 0017600 l v C t r s \r \t s u b 0 1 \r 0017620 \t l d a 2 l v l v C t r s \r 0017640 \t j m p . f O u t \r . f c 2 : 0017660 \t l d a 0 n N m a 376 \0 274 242 241 0017700 t c h \r \t s t a 0 @ 0 , 2 \t 0017720 ; R e s e t f i r s t c o 0017740 u n t e r o f n e x t c y 0017760 c l e \r \t l d a 2 l v l v C 0020000 t r s \r \t m o v r # 1 1 s 0020020 n c \t ; a c 1 = o d d B y t e 0020040 \r \t j m p . f E v e n \r \t 0020060 l d a 1 @ d a d d r \r \t j m 0020100 p . f O d d \r . f c 3 : \t l d 0020120 a 2 f l v l v l v C t r s \r 0020140 \t l d a 0 0 , 2 \r \t j m p 0020160 . f c 0 \r \r \t . e n d \r 377 \0 \0 f 0020200 i n d c o m p i l e . b c p l \0 0020220 373 225 361 203 020 \0 \0 376 001 \0 353 030 / / \r / 0020240 / F i l e s e a r c h p a 0020260 t t e r n c o m p i l e r \r / 0020300 / l a s t e d i t e d S e 0020320 p t e m b e r 1 8 , 1 9 8 0 0020340 5 : 3 1 P M \r / / \r / / 0020360 C o p y r i g h t X e r o x 0020400 C o r p o r a t i o n 1 9 7 9 0020420 , 1 9 8 0 \r \r \t g e t " f i 0020440 n d p k g d e f s . d " \r \t g e 0020460 t " f i n d i n t d e f s . d 0020500 " \r \r e x t e r n a l \t / / e 0020520 n t r y p o i n t \r [ \t F i n 0020540 d C o m p i l e \t / / ( p a t 0020560 , c h a r t a b [ , w i l d 0020600 c h a r , f u z z , o u t s 0020620 , s t o r e p r o c , 376 001 \0 245 0020640 4 r r e g s , l v T a b l e 0020660 s , z o n e ] ) - > e r r 0020700 o r / 0 \r ] \r \r \r e x t e r n a 0020720 l \r [ \t \t / / O . S . \r \t A l 0020740 l o c a t e \r \t D e f a u l t A 0020760 r g s ; D v e c \r \t M o v e B 0021000 l o c k ; M y F r a m e \r \t P 0021020 u t s \r \t R e t u r n F r o m \r 0021040 \t S e t B l o c k \r \t s y s Z o 0021060 n e \r \t U s c \r \t W s s \r \t Z e 0021100 r o \r \t \t / / r w r e g \r \t W 0021120 r i t e I n s R e g \r \t W r i t 0021140 e R e g \r \t \t / / T e m p l a 0021160 t e \r \t P u t T e m p l a t e \r 0021200 \t \t / / F i n d C o m p M u \r 0021220 \t f R a m I m a g e \r \t \t / / 0021240 F 376 001 \0 361 360 i n d N e x t \r \t f 0021260 i n d J u m p R a m \r \t f i n d 0021300 W r i t e R e g \r ] \r \r \r s t r 0021320 u c t u r e B S : \t / / B c 0021340 p l s t r i n g \r [ \t l e n g 0021360 t h b y t e \r \t c h a r ^ 1 , 0021400 2 5 5 b y t e \r ] \r \r s t r u 0021420 c t u r e M I F : \t / / M i 0021440 c r o i n s t r u c t i o n f 0021460 i e l d v a l u e \r [ \t w 0 0021500 w o r d \t / / a d d t h i s 0021520 t o w o r d 0 \r \t w 1 w 0021540 o r d \t / / a d d t h i s 0021560 t o w o r d 1 \r \t o p r o c 0021600 w o r d \t / / o u t p u t 0021620 p r o c e d u r e ( o r 0 = 0021640 W s s ) \r \t 376 001 \0 I 304 n a m e 0021660 w o r d 0 \t / / n a m e s 0021700 t a r t s h e r e \r ] \r \r \r m 0021720 a n i f e s t [ \r \t r a m s i 0021740 z e = 2 0 0 0 b \r \t c o n s 0021760 i z e = 4 0 0 b \r \t c h a r 0022000 s e t s i z e = 2 0 0 b \r \t 0022020 r e g s i z e = 1 0 0 b \r \t 0022040 m a x p a t s i z e = r e g 0022060 s i z e \r \t f i x e d r a m = 0022100 4 0 b \t / / s p a c e o c 0022120 c u p i e d b y c o m m o n 0022140 m i c r o c o d e \r \t S T A R 0022160 T = 2 0 b \t / / e n t r y 0022200 t o N o v a e m u l a t o 0022220 r \r \t w o r k a r e a = 1 0 0022240 b \t / / 2 - i n s t 376 001 \0 306 351 0022260 r u c t i o n w o r k a r e 0022300 a f o r R W R E G \r ] \r \r \r 0022320 s t a t i c [ \t / / o t h e 0022340 r s t a t i c s \r \t F C o u t 0022360 S t r e a m \t / / t r a c e 0022400 s t r e a m f o r s y m b o 0022420 l i c o u t p u t , o r 0 0022440 \r \t F C s t o r e P r o c \t / / 0022460 i f t r u e , s t o r e 0022500 i n s t r u c t i o n s i n 0022520 R A M \r \t t o p f r a m e \t / / 0022540 r e t u r n f r a m e i n 0022560 c a s e o f e r r o r \r \t 0022600 a l l o c b i t s \t / / b i t 0022620 t a b l e f o r a l l o c 0022640 a t i n g R A M \r \t r e g l i 0022660 376 001 \0 326 021 s t \t / / l i s t 0022700 o f R r e g i s t e r s \r \t 0022720 c o n s t l o c \t / / c o n s 0022740 t a n t l o c a t i o n s \r \t 0022760 c o n s t v a l \t / / c o n s 0023000 t a n t v a l u e s \r ] \r \r \r 0023020 l e t e r r o r ( s ) b e 0023040 R e t u r n F r o m ( t o p f r 0023060 a m e , s ) \r \r l e t t o o 0023100 l o n g ( ) b e e r r o r ( 0023120 " P a t t e r n t o o l o n 0023140 g " ) \r \r l e t F i n d C o m 0023160 p i l e ( p a t , c h a r t a 0023200 b , w i l d c h a r , f u z 0023220 z , o u t s , s t o r e p r 0023240 o c , r r e g s , l v T a b 0023260 l e s , 376 001 \0 315 z z o n e ; 0023300 n u m a r g s n a ) = v a 0023320 l o f \r [ \t l e t d u m m y 0023340 = n i l \t / / d e f a u l t 0023360 f o r l v T a b l e s \r \t l 0023400 e t s p r o c = s t o r e 0023420 p r o c \t / / T o a v o i d 0023440 d e f a u l t i n g e x p l 0023460 i c i t l y s u p p l i e d 0023500 v a l u e o f f a l s e \r \t 0023520 D e f a u l t A r g s ( l v n 0023540 a , - 2 , - 1 , 0 , 0 , 0023560 t r u e , t a b l e [ 1 ; 0023600 0 ; 7 7 7 7 7 b ; 1 7 7 7 0023620 7 6 b ] , l v d u m m y , 0023640 s y s Z o n e ) \r \t i f n a 0023660 g e 6 t h e n 376 001 \0 231 177 0023700 s t o r e p r o c = s p r o 0023720 c \r \t F C o u t S t r e a m , 0023740 F C s t o r e P r o c = o u 0023760 t s , s t o r e p r o c \r \t @ 0024000 l v T a b l e s = 0 \r \r / / 0024020 V a l i d a t e a n d u n 0024040 p a c k p a t t e r n \r \t f o 0024060 r c = 0 t o c h a r s 0024100 e t s i z e - 1 d o \r \t i f 0024120 ( c h a r t a b ! c g e 0 0024140 ) & ( c h a r t a b ! ( c h 0024160 a r t a b ! c ) n e c l a s 0024200 s O t h e r ) t h e n \r \t 0024220 e r r o r ( " I n v a l i d 0024240 c h a r t a b " ) \r \t l e t p 0024260 a t l e n = p a t > > B S 376 0024300 001 \0 332 306 . l e n g t h \r \t i f 0024320 p a t l e n e q 0 t h e n 0024340 e r r o r ( " N u l l p a t 0024360 t e r n n o t a l l o w e d 0024400 " ) \r \t l e t n p h a s e = 0024420 p a t l e n + ( p a t l e n & 0024440 1 ) \t / / a l w a y s e v e 0024460 n \r \t l e t x p a t = p a 0024500 t l e n + 1 \r \t D v e c ( F i n 0024520 d C o m p i l e , l v x p a 0024540 t ) \r \t x p a t ! 0 = p a t 0024560 l e n \r \t S e t B l o c k ( x p 0024600 a t + 1 , - 1 , p a t l e n 0024620 ) \r \t l e t c o u n t = v 0024640 e c c h a r s e t s i z e \r \t 0024660 Z e r o ( c o u n t , c h a r 0024700 s e t s 376 001 \0 234 346 i z e ) \r \t l 0024720 e t x c h a r = c h a r s 0024740 e t s i z e - 1 \r \t f o r i 0024760 = 1 t o p a t l e n d o 0025000 \t / / a l l o c a t e B d 0025020 i s p a t c h \r \t [ l e t 0025040 c = p a t > > B S . c h a r 0025060 ^ i \r \t i f c e q w 0025100 i l d c h a r t h e n \r \t 0025120 [ f u z z = f u z z + 0025140 1 \r \t l o o p \r \t 0025160 ] \r \t i f c h a r 0025200 t a b ! c g e 0 t h e n 0025220 c = c h a r t a b ! c \r \t 0025240 i f c h a r t a b ! c e 0025260 q c l a s s E x i t t h e n 0025300 x c h a r = 376 001 \0 215 % c \r 0025320 \t x p a t ! i = c \r \t 0025340 c o u n t ! c = c o u 0025360 n t ! c + 1 \r \t ] \r \t i f f 0025400 u z z g e p a t l e n t h 0025420 e n e r r o r ( " T o o f u 0025440 z z y " ) \r \r / / S e t u p 0025460 v a l u e s f o r F i n d 0025500 N e x t \r \t f N e g K = - p 0025520 a t l e n + 1 + f u z z \r \t f N 0025540 p h a s e = n p h a s e \r \t 0025560 f E x i t C h a r = ( x c h 0025600 a r l s h i f t 8 ) + x 0025620 c h a r \r \r / / F i r s t t 0025640 r y c o m p i l i n g t o 0025660 m i c r o c o d e , t h e n 0025700 t o a s s e m b l y c o 376 001 0025720 \0 F 016 d e \r \t l e t e r r = 0025740 F i n d C o m p i l e R a m ( 0025760 p a t , c h a r t a b , n p 0026000 h a s e , x p a t , c o u n 0026020 t , r r e g s ) \r \t i f e r 0026040 r e q 0 r e s u l t i s 0026060 0 \r \t r e s u l t i s F i n d 0026100 C o m p i l e S o f t ( p a t , 0026120 c h a r t a b , n p h a s e 0026140 , x p a t , c o u n t , l 0026160 v T a b l e s , z o n e ) \r ] 0026200 \r \f \r / / \r / / T h e v e r 0026220 s i o n o f t h e c o m p 0026240 i l e r t h a t p r o d u c 0026260 e s m i c r o c o d e \r / / \r 0026300 \r \r a n d F i n d C o m p i l 0026320 e R a 376 001 \0 034 , m ( p a t , c 0026340 h a r t a b , n p h a s e , 0026360 x p a t , c o u n t , r r e 0026400 g s ) = v a l o f \r [ \t t o 0026420 p f r a m e = M y F r a m e 0026440 ( ) \r \r / / M i s c e l l a n 0026460 e o u s s u b r o u t i n e s 0026500 \r \r \r / / I n i t i a l i z e 0026520 m i c r o i n s t r u c t i o 0026540 n f i e l d v a l u e s \r \t 0026560 m a n i f e s t q = 4 0 0 0026600 b \r \t l e t a l u P L U S 1 0026620 = t a b l e [ 5 * 2 0 0 b ; 0026640 0 ; 0 ; 2 * q + $ + ; $ 0026660 1 * q ] \r \t l e t a l u M I 0026700 N U S 1 = t a b l e [ 6 * 0026720 2 0 0 b ; 0 ; 376 001 \0 252 376 0 ; 0026740 2 * q + $ - ; $ 1 * q ] \r 0026760 \t l e t b s L O A D R = t 0027000 a b l e [ 1 * 2 0 b ; 0 ; 0027020 0 ; 2 * q + $ _ ; $ L * q 0027040 ] \r \t l e t f 1 T A S K = 0027060 t a b l e [ 2 * 1 b ; 0 ; 0027100 - 2 ; 4 * q + $ T ; $ A * q 0027120 + $ S ; $ K * q ] \r \t l e t 0027140 f 1 c o n s t = t a b l e 0027160 [ 7 * 1 b ; - 7 * 1 0 0 0 0 0027200 b ; - 1 ] \r \t l e t f 2 B 0027220 U S E Q 0 = t a b l e [ 0 0027240 ; 1 * 1 0 0 0 0 b ; - 2 ; 0027260 5 * q + $ B ; $ U * q + $ S ; 0027300 $ = * q + $ 0 ] \r \t l e t 0027320 f 2 B U S = t a b l e 376 001 \0 0027340 ' F [ 0 ; 4 * 1 0 0 0 0 b ; 0027360 - 2 ; 3 * q + $ B ; $ U * 0027400 q + $ S ] \r \t l e t f 2 I D 0027420 I S P = t a b l e [ 0 ; 0027440 1 5 b * 1 0 0 0 0 b ; - 2 ; 0027460 5 * q + $ I ; $ D * q + $ I ; 0027500 $ S * q + $ P ] \r \t l e t 0027520 L O A D L = t a b l e [ 0 0027540 ; - 1 * 2 0 0 0 b ; - 2 ; 0027560 2 * q + $ L ; $ _ * q ] \r \t 0027600 l e t r A C 0 = t a b l e 0027620 [ 3 l s h i f t 1 1 ; 0 0027640 ; 0 ; 3 * q + $ A ; $ C * 0027660 q + $ 0 ] \r \t l e t r P h a 0027700 s e = t a b l e [ R p h a 0027720 s e l s h i f t 1 1 ; 0 ; 0027740 0 376 001 \0 340 [ ; 5 * q + $ p ; 0027760 $ h * q + $ a ; $ s * q + $ 0030000 e ] \r \t l e t r N e g K 1 0030020 = t a b l e [ R n e g K 1 0030040 l s h i f t 1 1 ; 0 ; 0 ; 0030060 4 * q + $ - ; $ K * q + $ + 0030100 ; $ 1 * q ] \r \r / / I n i 0030120 t i a l i z e R A M \r \t l e t 0030140 R a m I m a g e = f R a m 0030160 I m a g e ( w o r k a r e a , 0030200 ( F C s t o r e P r o c e q 0030220 t r u e ? f i x e d r a m , 0030240 - 1 ) , e r r o r ) \t / / G 0030260 e t c o d e f r o m F i n 0030300 d C o m p M u \r \r \r / / R o u 0030320 t i n e t o p r o d u c e 0030340 m i c r o i n 376 001 \0 356 [ s t r u 0030360 c t i o n s \r \r l e t c o m m 0030400 e n t ( s ) b e \r i f F C o 0030420 u t S t r e a m n e 0 t h 0030440 e n P u t T e m p l a t e ( F 0030460 C o u t S t r e a m , " ; * 0030500 * * * * * * * * * * * * * * * * 0030520 * * * $ S * N " , s ) \r \r l 0030540 e t c t r s e l ( n ) = v 0030560 a l o f \r [ \t s t a t i c [ 0030600 c t r w 0 ; c t r w 1 = 0 0030620 ; c t r p r o c ; c t r n u 0030640 m ] \r \t l e t w c t r n ( s 0030660 t , p ) b e P u t T e m p 0030700 l a t e ( s t , " s $ O " , 0030720 @ p ) \r \t l e t r e g = r 0030740 e g l i s t ! n \r \t c t 376 001 \0 333 0030760 001 r w 0 = r e g l s h i f 0031000 t 1 1 + ( r e g g e 4 0031020 0 b ? 3 * 2 0 b , 0 * 2 0 b 0031040 ) \r \t c t r p r o c , c t r n 0031060 u m = w c t r n , n \r \t r 0031100 e s u l t i s l v c t r w 0 0031120 \r ] \r \r l e t c o n s e l ( n 0031140 ) = v a l o f \r [ \t s t a t 0031160 i c [ c o n w 0 ; c o n w 0031200 1 = 7 * 1 0 0 0 0 b ; c o 0031220 n p r o c ; c o n n u m ] \r 0031240 \t l e t w c o n n ( s t , p 0031260 ) b e P u t T e m p l a t e 0031300 ( s t , " = $ O " , c o n s 0031320 t v a l ! ( @ p ) ) \r \t l e t 0031340 l o c = c o n s t l o c ! n 0031360 \r 376 001 \0 377 / \t c o n w 0 = ( 0031400 l o c & 3 7 0 b ) l s h i f t 0031420 8 + ( l o c & 7 ) l s h 0031440 i f t 4 \r \t c o n p r o c , 0031460 c o n n u m = w c o n n , 0031500 n \r \t r e s u l t i s l v c 0031520 o n w 0 \r ] \r \r l e t i n s t 0031540 r ( l o c , n i l , n i l , 0031560 n i l , n i l , n i l , 0031600 n i l , n i l , n i l , n 0031620 i l ; n u m a r g s n a ) 0031640 = v a l o f \r [ \t l e t w 0 0031660 , w 1 = 1 0 b , 1 0 2 0 0031700 0 0 b \t / / n o - o p \r \t f o 0031720 r j = 1 t o n a - 2 0031740 d o \r \t [ l e t f = ( 0031760 l v l o c 376 001 \0 357 337 ) ! j \r \t 0032000 w 0 = w 0 + f > > 0032020 M I F . w 0 \r \t w 1 = 0032040 w 1 + f > > M I F . w 1 \r \t 0032060 ] \r \t l e t n e x t = ( 0032100 l v l o c ) ! ( n a - 1 ) \r \t 0032120 w 1 = w 1 + n e x t \r \t i f 0032140 F C o u t S t r e a m n e 0032160 0 t h e n \r \t [ P u t T e 0032200 m p l a t e ( F C o u t S t r e 0032220 a m , " $ 4 O : $ 6 U O $ 0032240 6 U O | $ 4 O : " , 0032260 l o c , w 0 , w 1 , l o c 0032300 ) \r \t f o r j = 1 0032320 t o n a - 2 d o \r \t 0032340 [ l e t f = ( l v l o 0032360 c ) ! j \r \t 376 001 \0 247 J 0032400 l e t p r o c = f > > M 0032420 I F . o p r o c \r \t 0032440 i f p r o c e q - 1 l o 0032460 o p \r \t t e s t p 0032500 r o c e q - 2 \r \t 0032520 i f s o \r \t [ i 0032540 f j g r 1 t h e n W s 0032560 s ( F C o u t S t r e a m , " 0032600 , " ) \r \t W s 0032620 s ( F C o u t S t r e a m , l 0032640 v f > > M I F . n a m e ) \r \t 0032660 ] \r \t i 0032700 f n o t \r \t ( p 0032720 r o c e q 0 ? W s s , p 0032740 r o c ) ( F C o u t S t r e a m 0032760 , l v f > > M I F . n a m e 0033000 376 001 \0 331 344 ) \r \t ] \r \t 0033020 P u t T e m p l a t e ( F C 0033040 o u t S t r e a m , ( n a e 0033060 q 2 ? " : $ O ; * N " , " 0033100 , : $ O ; * N " ) , n e x t 0033120 ) \r \t ] \r \t i f F C s t o r 0033140 e P r o c n e 0 t h e n 0033160 ( F C s t o r e P r o c e q 0033200 t r u e ? W r i t e I n s R e 0033220 g , F C s t o r e P r o c ) ( 0033240 l o c , l v w 0 ) \r \t r e s 0033260 u l t i s n e x t \r ] \r \r \r / 0033300 / B i t t a b l e r o u t 0033320 i n e s \r \r l e t g e t b i t 0033340 ( t a b , i ) = \r \t t a b ! 0033360 ( i r s h i f t 4 ) & ( 0033400 1 0 0 0 0 376 001 \0 177 ! 0 b r s h 0033420 i f t ( i & 1 7 b ) ) \r \r l e 0033440 t s e t b i t ( t a b , i ) 0033460 b e \t / / i n v e r t b i 0033500 t \r [ \t l e t p = t a b 0033520 + i r s h i f t 4 \r \t @ p 0033540 = @ p x o r ( 1 0 0 0 0 0033560 0 b r s h i f t ( i & 1 7 b 0033600 ) ) \r ] \r \r l e t a l l o c i 0033620 n s ( ) = v a l o f \r [ \t l 0033640 e t j = r a m s i z e / 1 0033660 6 - 1 \r \t w h i l e a l l o c 0033700 b i t s ! j e q 0 d o \r \t 0033720 [ i f j e q 0 t h e 0033740 n e r r o r ( " R A M f u l 0033760 l " ) \r \t j = j - 1 \r 0034000 \t ] \r \t l e t i 376 001 \0 m 0034020 = j * 1 6 + 1 5 \r \t w h i l e 0034040 g e t b i t ( a l l o c b i t 0034060 s , i ) e q 0 d o i 0034100 = i - 1 \r \t s e t b i t ( a l 0034120 l o c b i t s , i ) \r \t r e s 0034140 u l t i s i \r ] \r \r l e t p 0034160 r e a l l o c ( l o c , d e l 0034200 t a , n , t r y i n g ; n 0034220 u m a r g s n a ) = v a l 0034240 o f \r [ \t i f n a l s 4 0034260 t h e n t r y i n g = f a 0034300 l s e \r \t f o r m = 0 t 0034320 o n - 1 d o \r \t [ l e t 0034340 l c = l o c + m * d e l t 0034360 a \r \t i f g e t b i t ( 0034400 a l l o c b i t s , l c ) 376 0034420 001 \0 , \v e q 0 r e s u l t i 0034440 s - 1 \r \t u n l e s s 0034460 t r y i n g d o s e t b i t 0034500 ( a l l o c b i t s , l c ) \r 0034520 \t ] \r \t r e s u l t i s l o 0034540 c \r ] \r \r l e t f i n d a l l 0034560 o c ( l o c , d e l t a , n 0034600 , i n c ) = v a l o f \r [ 0034620 \t l e t l c , l i m = l 0034640 o c , r a m s i z e - d e l t 0034660 a * n \r \t w h i l e l c l e 0034700 l i m d o \r \t [ i f p 0034720 r e a l l o c ( l c , d e l t 0034740 a , n , t r u e ) n e - 0034760 1 t h e n \r \t [ p r 0035000 e a l l o c ( l c , d e l t a 0035020 , n ) 376 001 \0 3 207 \r \t 0035040 r e s u l t i s l c \r \t 0035060 ] \r \t l c = l c + 0035100 i n c \r \t ] \r \t e r r o r ( " 0035120 C a n ' t p r e a l l o c a t 0035140 e " ) \r ] \r \r \r / / M a i n 0035160 r o u t i n e s \r \r l e t n e 0035200 x t m a s k ( n ) = v a l o 0035220 f \r [ \t l e t m = 1 \r \t w 0035240 h i l e m l e n d o m 0035260 = m l s h i f t 1 \r \t r 0035300 e s u l t i s m - 1 \r ] \r \r / 0035320 / U n p a c k R r e g i s 0035340 t e r l i s t \r \t l e t r e 0035360 g v = v e c r e g s i z e 0035400 \r \t l e t p a t m a x = 0 0035420 \r \t f o r i = 376 001 \0 217 213 0 0035440 t o r e g s i z e - 1 d o 0035460 \r \t i f g e t b i t ( r r e 0035500 g s , i ) n e 0 t h e n 0035520 \r \t [ r e g v ! p a t m a x 0035540 = i \r \t p a t m a x 0035560 = p a t m a x + 1 \r \t ] \r \t 0035600 r e g l i s t = r e g v \r \t 0035620 p a t m a x = p a t m a x 0035640 & - 2 \r \r / / U n p a c k 0035660 p a t t e r n \r \t c o m m e n t 0035700 ( " P a t t e r n i s : " ) \r 0035720 \t c o m m e n t ( p a t ) \r \t i 0035740 f n p h a s e g r p a t m 0035760 a x t h e n t o o l o n g ( 0036000 ) \r \t l e t n p m a s k = 0036020 n e x t m a s k ( ( n p h a 376 001 0036040 \0 E 240 s e - 1 ) * 2 ) + 1 \r \t l 0036060 e t p a t l e n = x p a t 0036100 ! 0 \r \r / / S c a n c o n s 0036120 t a n t m e m o r y \r \t m a n 0036140 i f e s t [ n x c o n = 0036160 3 ] \r \t m a n i f e s t [ 0036200 n c o n s t = m a x p a t s 0036220 i z e + n x c o n ] \r \t l e t 0036240 c l o c , c v a l = v e 0036260 c n c o n s t , v e c n c 0036300 o n s t \r \t c l o c , c v a l 0036320 = c l o c + n x c o n , c 0036340 v a l + n x c o n \r \t f o r j 0036360 = - n x c o n t o n p h 0036400 a s e - 1 d o \r \t [ l e t 0036420 v a l = s e l e c t o n 0036440 j i 376 001 \0 376 r n t o \r \t 0036460 [ c a s e - 3 : 1 7 7 7 0036500 b \t / / f o r r e s e t t i 0036520 n g p h a s e \r \t 0036540 c a s e - 2 : 6 0 0 0 b \t / 0036560 / d i t t o \r \t c 0036600 a s e - 1 : - 1 \t / / f o 0036620 r s i g n a l l i n g m a t 0036640 c h \r \t d e f a u l 0036660 t : j \r \t ] \r \t 0036700 f o r i = 0 t o c o n 0036720 s i z e - 1 d o \r \t i 0036740 f R a m I m a g e ! i e q 0036760 v a l t h e n \r \t [ 0037000 c l o c ! j , c v a l ! j = 0037020 i , v a l ; g o t o f o 0037040 u n d ] \r \t 376 001 \0 260 037 e 0037060 r r o r ( " I n a d e q u a t e 0037100 c o n s t a n t m e m o r y 0037120 " ) \r f o u n d : \r \t ] \r \t c 0037140 o n s t l o c , c o n s t v a 0037160 l = c l o c , c v a l \r \r 0037200 / / A l l o c a t e d i s p 0037220 a t c h e s \r \t l e t a l b i 0037240 t s = v e c ( r a m s i z 0037260 e / 1 6 ) \r \t a l l o c b i t s 0037300 = a l b i t s \r \t S e t B l 0037320 o c k ( a l l o c b i t s , - 0037340 1 , r a m s i z e / 1 6 ) \r \t 0037360 l e t a b a s e = r a m s 0037400 i z e - c h a r s e t s i z e \r 0037420 \t p r e a l l o c ( a b a s e , 0037440 1 , c h a r s e t s i 376 001 \0 0037460 y $ z e ) \t / / a l l o c a t 0037500 e A d i s p a t c h \r \t l e 0037520 t l o c = ( n p m a s k 0037540 l s f i x e d r a m ? f i x 0037560 e d r a m , n p m a s k ) \r \t 0037600 p r e a l l o c ( 0 , 1 , l 0037620 o c ) \t / / s k i p b o t t 0037640 o m l o c . s \r \t l e t e n 0037660 d l o c = v e c ( m a x p 0037700 a t s i z e ) \r \t l e t i d l 0037720 o c = c o u n t \r \t f o r 0037740 c = 0 t o c h a r s e t 0037760 s i z e - 1 d o \t / / a l l 0040000 o c a t e B d i s p a t c h 0040020 \r \t t e s t i d l o c ! c 0040040 n e 0 \t / / o c c u r s i 0040060 n 376 001 \0 245 m p a t t e r n \r \t 0040100 i f s o \r \t [ l o c = 0040120 f i n d a l l o c ( l o c , 0040140 1 , n p h a s e , n p m a s 0040160 k ) \r \t i d l o c ! c 0040200 = l o c \r \t ] \r \t i f n 0040220 o t i d l o c ! c = - 1 \r 0040240 \t l e t c l r b a s e = f 0040260 i n d a l l o c ( 0 , 1 , n 0040300 p h a s e , n p m a s k ) \r \t 0040320 l e t c l r n e x t = a l 0040340 l o c i n s ( ) \r \t c o m m e n 0040360 t ( " L a s t t e s t " ) \r \t 0040400 l e t n e x t = 2 \r \t f o 0040420 r c t r = 0 t o n p h 0040440 a s e - 1 d o \r \t [ e n d 0040460 l o c ! c t r 376 001 \0 \r 177 = a 0040500 l l o c i n s ( ) \r \t n e 0040520 x t = f i n d a l l o c ( n 0040540 e x t , 1 , 2 , 2 ) \r \t 0040560 i n s t r ( e n d l o c ! c 0040600 t r , c t r s e l ( c t r ) , 0040620 b s L O A D R , n e x t ) \r 0040640 \t i n s t r ( n e x t , 0040660 r P h a s e , f 2 B U S , c 0040700 l r n e x t ) \r \t i n s t 0040720 r ( n e x t + 1 , L O A D L , 0040740 c o n s e l ( c t r ) , M a 0040760 t c h ) \r \t ] \r \r / / C o m 0041000 p i l e t e s t s e q u e n 0041020 c e s \r [ \t l e t t l o c s 0041040 = v e c m a x p a t s i z e 0041060 \r \t f o r c = 0 376 001 \0 W 0041100 220 t o c h a r s e t s i z e - 0041120 1 d o \r \t i f i d l o c ! 0041140 c n e - 1 t h e n \r \t [ 0041160 l e t c s = " C o d e 0041200 f o r ' ' " \r \t c s > 0041220 > B S . c h a r ^ 1 1 = c \r 0041240 \t c o m m e n t ( c s ) \r 0041260 \t l e t n l = - 1 \r 0041300 \t f o r i = 1 t o 0041320 p a t l e n d o \r \t 0041340 i f x p a t ! i e q c t 0041360 h e n \r \t [ n l = 0041400 n l + 1 ; t l o c s ! n l = 0041420 i ] \r \t f o r h = 0041440 0 t o n p h a s e - 1 d 0041460 o \r \t [ i f n l n 0041500 e 376 001 \0 J w 0 t h e n c o 0041520 m m e n t ( " N e w p h a s e 0041540 " ) \r \t l e t l o 0041560 c = i d l o c ! c + h \r \t 0041600 f o r j = 0 t 0041620 o n l d o \r \t 0041640 [ l e t c t r = ( h - t 0041660 l o c s ! j + 1 + n p h a s e ) 0041700 r e m n p h a s e \r \t 0041720 l e t n 1 = ( 0041740 j e q n l ? e n d l o c ! 0041760 c t r , a l l o c i n s ( ) ) 0042000 \r \t i n s t r 0042020 ( l o c , L O A D L , c t r 0042040 s e l ( c t r ) , a l u P L U 0042060 S 1 , f 2 B U S E Q 0 , n 1 0042100 ) \t / / * 376 001 \0 241 215 * * s h 0042120 o u l d h a v e T A S K \r \t 0042140 i f j n e 0042160 n l t h e n \r \t 0042200 [ n e x t = f i n 0042220 d a l l o c ( n e x t , 1 , 0042240 2 , 2 ) \r \t 0042260 i n s t r ( n 1 , c t r 0042300 s e l ( c t r ) , b s L O A D 0042320 R , n e x t ) \r \t 0042340 i n s t r ( n e x t 0042360 + 1 , L O A D L , c o n s e 0042400 l ( c t r ) , M a t c h ) \r \t 0042420 l o c 0042440 = n e x t \r \t 0042460 ] \r \t ] \r \t 0042500 ] \r \t ] \r ] \r 376 001 \0 \f 215 0042520 \r / / S t o r e C ( c o u 0042540 n t e r - c l e a r i n g ) c 0042560 o d e \r [ \t c o m m e n t ( " C 0042600 l e a r i n g c o u n t e r s 0042620 " ) \r \t i n s t r ( c l r n e x 0042640 t , L O A D L , r N e g K 1 0042660 , f 2 I D I S P , c l r b a 0042700 s e ) \r \t f o r h = 0 t 0042720 o n p h a s e - 1 d o \r \t 0042740 [ l e t l o c , f e t c h 0042760 = c l r b a s e + h , ( ( 0043000 h & 1 ) e q 0 ? F e t c h 0043020 O d d , F e t c h E v e n ) \r 0043040 \t l e t n h = ( h + 0043060 1 ) r e m n p h a s e \r \t 0043100 t e s t n h e q 0 \r \t 0043120 376 001 \0 027 300 i f s o \t / / 0043140 a l s o r e s e t p h a s e 0043160 \r \t [ n e x t = f 0043200 i n d a l l o c ( n e x t , 1 0043220 , 2 , 2 ) \r \t i 0043240 n s t r ( l o c , c t r s e l 0043260 ( n h ) , b s L O A D R , n 0043300 e x t ) \r \t l e t 0043320 n 1 = a l l o c i n s ( ) \r 0043340 \t i n s t r ( n e x 0043360 t , L O A D L , c o n s e l 0043400 ( - 3 ) , f 1 c o n s t , f 0043420 2 I D I S P , n 1 ) \r \t 0043440 i n s t r ( n e x t + 1 , 0043460 L O A D L , c o n s e l ( - 0043500 2 ) , f 1 c o n s t , a l u 0043520 M I N U S 376 001 \0 026 307 1 , f 2 I 0043540 D I S P , n 1 ) \r \t 0043560 i n s t r ( n 1 , r P h a s 0043600 e , b s L O A D R , f e t c 0043620 h ) \r \t ] \r \t i f 0043640 n o t \r \t [ i n s t r 0043660 ( l o c , c t r s e l ( n h ) 0043700 , b s L O A D R , f e t c h 0043720 ) \r \t ] \r \t ] \r ] \r \r 0043740 / / C o m p i l e r e s e t 0043760 s e q u e n c e \r [ \t c o m m 0044000 e n t ( " R e s e t a l l 0044020 c o u n t e r s " ) \r \t l e t 0044040 n 1 = a l l o c i n s ( ) \r 0044060 \t i n s t r ( R e s e t , L O 0044100 A D L , r N e g K 1 , n 1 ) 0044120 \r \t f o r i = 376 001 \0 I j 0 0044140 t o n p h a s e - 1 d o \r 0044160 \t [ l e t n 2 = a l l 0044200 o c i n s ( ) \r \t i n s t 0044220 r ( n 1 , c t r s e l ( i ) , 0044240 b s L O A D R , n 2 ) \r \t 0044260 n 1 = n 2 \r \t ] \r \t l 0044300 e t n 2 = a l l o c i n s 0044320 ( ) \r \t i n s t r ( n 1 , L O 0044340 A D L , r A C 0 , f 1 T A S 0044360 K , n 2 ) \r \t i n s t r ( n 2 0044400 , r P h a s e , b s L O A D 0044420 R , S T A R T ) \r ] \r \r / / 0044440 F i l l i n c h a r a c t e 0044460 r ( A ) d i s p a t c h \r \t 0044500 l e t x c h a r = c h a r 0044520 s e t s i z e - 1 \r [ \t c o m 376 0044540 001 \0 222 233 m e n t ( " A d i s p 0044560 a t c h " ) \r \t l e t o u t t 0044600 = F C o u t S t r e a m \r \t 0044620 f o r c = 0 t o c h a 0044640 r s e t s i z e - 1 d o \r \t 0044660 i f ( c h a r t a b ! c e q 0044700 c l a s s O t h e r ) & ( 0044720 i d l o c ! c n e - 1 ) t 0044740 h e n \r \t [ l e t l 1 = 0044760 a l l o c i n s ( ) \r \t i n 0045000 s t r ( l 1 , i d l o c ! c ) 0045020 \r \t i d l o c ! c = l 1 0045040 \r \t ] \r \t f o r c = 0 t 0045060 o c h a r s e t s i z e - 1 0045100 d o \r \t [ F C o u t S t r e 0045120 a m = o u t t \r \t l e 0045140 t c 1 376 001 \0 u 271 = c h a r 0045160 t a b ! c \r \t s w i t c h 0045200 o n c 1 i n t o \r \t [ 0045220 c a s e c l a s s S k i p : 0045240 \r \t i n s t r ( a b 0045260 a s e + c , S k i p ) \r \t 0045300 e n d c a s e \r \t 0045320 c a s e c l a s s R e c o 0045340 r d : \r \t i n s t r 0045360 ( a b a s e + c , L O A D L , 0045400 r P h a s e , R e c o r d ) 0045420 \r \t e n d c a s e \r 0045440 \t c a s e c l a s s 0045460 E x i t : \r \t i n s 0045500 t r ( a b a s e + c , L O A D 0045520 L , c o n s e l ( - 1 ) , M 0045540 a t c h ) \r \t 376 001 \0 Q k 0045560 e n d c a s e \r \t 0045600 c a s e c l a s s O t h e r : 0045620 \r \t c 1 = c \t / 0045640 / f a l l s t h r o u g h \r 0045660 \t d e f a u l t : \r \t 0045700 s w i t c h o n i 0045720 d l o c ! c 1 i n t o \r \t 0045740 [ c a s e - 1 : \r \t 0045760 F C o u t S t 0046000 r e a m = 0 \r \t 0046020 i n s t r ( a b a s e + c 0046040 , r P h a s e , f 2 B U S , 0046060 c l r n e x t ) \r \t 0046100 e n d c a s e \r \t 0046120 d e f a u l t : \r \t 0046140 i n s t r ( 376 001 0046160 \0 343 310 a b a s e + c , r P h a 0046200 s e , f 2 B U S , i d l o c 0046220 ! c 1 ) \t / / * * * s h o u 0046240 l d h a v e T A S K \r \t 0046260 ] \r \t ] \r \t ] \r 0046300 \t F C o u t S t r e a m = o 0046320 u t t \r ] \r \r / / S e t u p 0046340 v a l u e s f o r F i n d 0046360 N e x t \r \t f i n d J u m p R a 0046400 m = 0 \t / / F i n d I n i 0046420 t s e t s i t u p \r \t f i 0046440 n d W r i t e R e g = W r i 0046460 t e R e g \r \r \t r e s u l t i s 0046500 0 \r ] \r \f \r / / \r / / A n 0046520 a l t e r n a t i v e c o m p 0046540 i l e r t h a t d o e s n ' 0046560 t u 376 001 \0 S j s e m i c r o 0046600 c o d e \r / / \r \r \r a n d F i 0046620 n d C o m p i l e S o f t ( p a 0046640 t , c h a r t a b , n p h a 0046660 s e , x p a t , c o u n t , 0046700 l v T a b l e s , z o n e ) 0046720 = v a l o f \r [ \r e x t e r 0046740 n a l \r [ \t \t / / f p s o f t 0046760 a s m \r \t @ f l v l v l v C t r 0047000 s ; @ f n N c t r s ; @ f l 0047020 v D i s p \r \t f J u m p R a m ; 0047040 f W r i t e R e g \r \t f C l e 0047060 a r ; f S k i p ; f E x i t 0047100 ; @ f C o u n t \r ] \r \t t o p 0047120 f r a m e = M y F r a m e ( 0047140 ) \r \r / / M i s c e l l a n e 0047160 o u s s u b r 376 001 \0 367 345 o u t 0047200 i n e s \r \r l e t o u t b l k 0047220 ( a d d r , l e n ) b e \r [ 0047240 \t f o r i = 0 t o l e 0047260 n - 1 d o \r \t [ i f ( i 0047300 r e m 6 ) e q 0 t h e n 0047320 P u t T e m p l a t e ( F C o 0047340 u t S t r e a m , " * N $ 6 U 0047360 O " , a d d r + i ) \r \t P 0047400 u t T e m p l a t e ( F C o u t 0047420 S t r e a m , " $ 8 U O " , 0047440 a d d r ! i ) \r \t ] \r \t P u t s 0047460 ( F C o u t S t r e a m , $ * 0047500 N ) \r ] \r \r / / A l l o c a t 0047520 e s t a t e v e c t o r \r \t 0047540 l e t n c h a r s , n l i t 0047560 = 0 , 0 \r \t f o r 376 001 \0 0047600 352 ` i = 0 t o c h a r s 0047620 e t s i z e - 1 d o \r \t i 0047640 f c o u n t ! i n e 0 t 0047660 h e n n c h a r s , n l i t 0047700 = n c h a r s + 1 , n l i 0047720 t + c o u n t ! i \r \t i f n p 0047740 h a s e g r 3 7 6 b t h e 0047760 n t o o l o n g ( ) \t / / > 0050000 6 4 K o f t a b l e s n e 0050020 e d e d ! \r \t l e t s t a t e 0050040 = A l l o c a t e ( z o n e 0050060 , \r \t n p h a s e + \t / / 0050100 c o u n t e r s \r \t c h a r 0050120 s e t s i z e + \t / / A d i 0050140 s p a t c h \r \t 2 * n c h a 0050160 r s + n l i t + \t / / B d i 0050200 s p 376 001 \0 361 236 a t c h e s \r \t 0050220 n p h a s e + 2 + \t / / F i 0050240 r s t l e v e l o f c o u 0050260 n t e r a d d r e s s e s \r \t 0050300 n p h a s e * ( n p h a s e 0050320 + 1 ) , \t / / S e c o n d l 0050340 e v e l \r \t - 1 ) \r \t i f s 0050360 t a t e e q 0 t h e n t 0050400 o o l o n g ( ) \t / / C a n ' 0050420 t a l l o c a t e t a b l e 0050440 s \r \t @ l v T a b l e s = s 0050460 t a t e \r \t l e t c t r b a s 0050500 e = s t a t e \r \t l e t a 0050520 d i s p = c t r b a s e + n 0050540 p h a s e \r \t S e t B l o c 0050560 k ( a d i s p , f C l e a r , 0050600 c h a r s e 376 001 \0 037 221 t s i z 0050620 e ) \r \t l e t b d i s p = 0050640 a d i s p + c h a r s e t s i z 0050660 e \r \t l e t p p c b a s e = 0050700 b d i s p + 2 * n c h a r s + 0050720 n l i t + 1 \r \t l e t p c b a 0050740 s e = p p c b a s e + n p h 0050760 a s e + 1 \r \r / / P r o d u c 0051000 e B d i s p a t c h t a b 0051020 l e s \r [ \t l e t b p t r = 0051040 b d i s p \r \t f o r c = 0051060 0 t o c h a r s e t s i z e 0051100 - 1 d o \r \t i f c o u n t 0051120 ! c n e 0 t h e n \r \t [ 0051140 a d i s p ! c = b p t r \r \t 0051160 @ b p t r = 6 0 0 0 b + 0051200 l v f C o u n t \t / / 376 001 \0 327 0051220 ` j s r @ \r \t b p t r 0051240 = b p t r + 1 \r \t f o r 0051260 i = 1 t o x p a t ! 0 0051300 d o \r \t i f x p a t ! i 0051320 e q c t h e n \r \t [ 0051340 @ b p t r = i - 1 ; b p t 0051360 r = b p t r + 1 ] \r \t 0051400 @ b p t r = - 1 \r \t b p 0051420 t r = b p t r + 1 \r \t ] \r ] 0051440 \r \r / / F i l l i n c h a 0051460 r a c t e r ( A ) d i s p a 0051500 t c h \r [ \t f o r c = 0 0051520 t o c h a r s e t s i z e - 1 0051540 d o \r \t [ l e t c 1 = 0051560 c h a r t a b ! c \r \t l 0051600 e t d = n i l \r \t s 0051620 w 376 001 \0 267 q i t c h o n c 1 0051640 i n t o \r \t [ c a s e 0051660 c l a s s S k i p : \r \t 0051700 a d i s p ! c = f S k i 0051720 p \r \t e n d c a s e 0051740 \r \t c a s e c l a s 0051760 s R e c o r d : \r \t 0052000 a d i s p ! c = f E x i t \r 0052020 \t e n d c a s e \r \t 0052040 c a s e c l a s s E 0052060 x i t : \r \t a d i s 0052100 p ! c = f E x i t \r \t 0052120 e n d c a s e \r \t 0052140 c a s e c l a s s O t h e r 0052160 : \r \t e n d c a s e 0052200 \t / / a l r e a d y d o n e 0052220 \r \t 376 001 \0 231 023 d e f a 0052240 u l t : \r \t i f c 0052260 o u n t ! c 1 e q 0 l o o 0052300 p \r \t a d i s p ! c 0052320 = a d i s p ! c 1 \r \t 0052340 ] \r \t ] \r ] \r \r / / S e t 0052360 u p p o i n t e r t a b l e 0052400 s \r [ \t p p c b a s e ! - 1 = 0052420 - 1 \r \t l e t p = p c b 0052440 a s e \r \t f o r i = 0 t 0052460 o n p h a s e - 1 d o \r \t [ 0052500 p = p + 1 \r \t p p c b 0052520 a s e ! i = p \r \t f o r 0052540 j = 0 t o n p h a s e 0052560 - 1 d o \r \t p ! j = 0052600 c t r b a s e + ( ( i - j + n 0052620 p h a s e ) r e m 376 001 \0 004 373 0052640 n p h a s e ) \r \t p ! - 1 0052660 = p ! ( n p h a s e - 1 ) \r \t 0052700 p = p + n p h a s e \r \t 0052720 ] \r \t p p c b a s e ! n p h a s 0052740 e = 0 \r ] \r \r / / W r i t 0052760 e l i s t i n g \r i f F C o 0053000 u t S t r e a m n e 0 t h 0053020 e n \r [ \t o u t b l k ( a d i s 0053040 p , c h a r s e t s i z e ) \r 0053060 \t o u t b l k ( b d i s p , p 0053100 p c b a s e - b d i s p ) \r \t o 0053120 u t b l k ( p p c b a s e - 1 , 0053140 n p h a s e + 2 ) \r \t o u t b 0053160 l k ( p c b a s e , n p h a s 0053200 e * ( n p h a s e + 1 ) ) \r ] \r 0053220 \r / / S e t u p v a l u e 0053240 376 \0 255 < 324 s f o r F i n d N 0053260 e x t \r \t f i n d J u m p R a m 0053300 = f J u m p R a m \r \t f i n 0053320 d W r i t e R e g = f W r i 0053340 t e R e g \r \r / / S e t u p 0053360 d a t a f o r a s s e m b 0053400 l y c o d e \r \t f l v D i s p 0053420 = a d i s p \r \t f n N c t r 0053440 s = - n p h a s e \r \t f l v 0053460 l v l v C t r s = p p c b a 0053500 s e \r \r \t r e s u l t i s 0 \r 0053520 ] \r 377 \0 \0 f i n d c o m p m u . 0053540 b c p l \0 373 225 361 a = \0 \0 376 001 \0 036 0053560 271 / / \r / / W r a p p e r f 0053600 o r F i n d P k g A l t o 0053620 m i c r o c o d e \r / / l a s 0053640 t e d i t e d S e p t e m b 0053660 e r 1 8 , 1 9 8 0 1 2 : 0053700 3 2 P M \r / / \r / / C o p y 0053720 r i g h t X e r o x C o r p 0053740 o r a t i o n 1 9 8 0 \r \r e x 0053760 t e r n a l [ f R a m I m a 0054000 g e ] \t / / ( w o r k a r e 0054020 a , f i x e d r a m / - 1 , 0054040 e r r o r ) - > r a m I m a 0054060 g e \r \r e x t e r n a l \r [ \t \t 0054100 / / R W R E G \r \t R e a d C o 0054120 n R e g \r \t R e a d I n s R e g 0054140 \r \t R e g W o r k A r e a \r \t W 0054160 r 376 001 \0 217 260 i t e I n s R e g \r 0054200 ] \r \r l e t f R a m I m a g e 0054220 ( w o r k a r e a , f i x e d 0054240 r a m , e r r o r ) = v a 0054260 l o f \r [ \t l e t R a m I m a 0054300 g e = n i l \r \r \t g e t " 0054320 f i n d p k g . l s " \t / / S 0054340 e t s R a m I m a g e \r \r \t i 0054360 f f i x e d r a m g e 0 0054400 t h e n \r \t [ l e t v = 0054420 v e c 2 \r \t f o r i = 0054440 0 t o f i x e d r a m - 1 0054460 d o \r \t [ l e t p = 0054500 R a m I m a g e + 4 0 0 b + 2 0054520 * i \r \t W r i t e I n s 0054540 R e g ( i , p ) \r \t R 0054560 e a d I n s 376 001 \0 023 307 R e g ( i 0054600 , v ) \r \t i f ( v ! 0054620 0 n e p ! 0 ) % ( v ! 1 0054640 n e p ! 1 ) t h e n e r 0054660 r o r ( " C a n ' t w r i t e 0054700 i n t o R A M " ) \r \t ] 0054720 \r \t R e g W o r k A r e a 0054740 = w o r k a r e a \r \t f o 0054760 r i = 1 t o 3 7 7 b 0055000 d o \r \t i f R a m I m a 0055020 g e ! i n e 0 t h e n \r \t 0055040 i f R e a d C o n R e 0055060 g ( i ) n e R a m I m a g e 0055100 ! i t h e n \r \t e 0055120 r r o r ( " B a d c o n s t a 0055140 n t m e m o r y " ) \r \t ] \r \r 0055160 \t r e s u l t i s R 376 \0 \n 316 e 0055200 a m I m a g e \r ] \r 377 \0 \0 f i n 0055220 d p k g . m u \0 373 225 260 315 016 \0 \0 376 0055240 001 \0 r e ; M a i n m i c r o 0055260 c o d e f o r f i l e s e 0055300 a r c h e r \r ; l a s t e d 0055320 i t e d J u l y 3 1 , 1 9 0055340 8 0 5 : 5 2 P M \r ; C o 0055360 p y r i g h t X e r o x C o 0055400 r p o r a t i o n 1 9 7 9 , 0055420 1 9 8 0 \r \r # A L T O C O N S T 0055440 S 2 3 . M U ; \r \r ; C o n s t 0055460 a n t s a n d R r e g i s 0055500 t e r s \r $ 4 0 0 0 \t $ 4 0 0 0 0055520 ; \t ( h a s o t h e r n a m 0055540 e s i n C O N S T A N T S ) 0055560 \r \r $ A C 0 \t $ R 3 ; \r $ A C 1 0055600 \t $ R 2 ; \r $ A C 3 \t $ R 0 ; \r 0055620 \r $ n e w L \t $ R 4 0 ; \t t h e 0055640 M r 376 001 \0 > \n e g i s t e r 0055660 \r \r $ a d d r \t $ R 3 ; \t ( = A 0055700 C 0 ) m e m o r y a d d r e 0055720 s s \r $ c h a r \t $ R 1 4 ; \t S 0055740 a v e o d d c h a r a c t e 0055760 r \r $ p h a s e \t $ R 1 5 ; \t p 0056000 h a s e n u m b e r , e v e 0056020 n / o d d s w a p f l a g 0056040 i n b i t 4 ( f o r s k 0056060 i p c h a r . s ) \r $ - K + 1 0056100 \t $ R 1 6 ; \t n u m b e r o f 0056120 c h a r . s f o r m a t c 0056140 h \r \r ! 7 , 1 0 , R e s e t , M 0056160 a t c h , F e t c h E v e n , f 0056200 e S w a p , F e t c h O d d , f 0056220 o S w a p , S k i p , R e c o r 0056240 d ; \t e n t r i e 376 001 \0 322 ' s 0056260 t o m i c r o c o d e \r ! 1 3 0056300 , 4 , c i 0 , c i 1 , c i 2 , c 0056320 i 3 ; \t R W R E G w o r k a 0056340 r e a \r ! 2 0 , 1 , S T A R T ; 0056360 \t r e t u r n t o N o v a 0056400 e m u l a t o r \r ! 3 7 , 1 , t 0056420 r a p ; \t t r a p p e d i n s 0056440 t r u c t i o n s \r ! 1 6 0 0 , 0056460 1 , a d i s p ; \t c h a r a c t 0056500 e r d i s p a t c h \r \r ; R 0056520 e t u r n s t o N o v a e 0056540 m u l a t o r \r S T A R T : \t S 0056560 W M O D E ; \r \t : S T A R T 0056600 ; \r t r a p : \t S W M O D E ; \r 0056620 \t : t r a p ; \r \r ; M a i 0056640 n l o o p e n t r i e s 376 001 0056660 \0 v 276 . D i f f e r e n t 0056700 f o r e v e n / o d d c h a 0056720 r a c t e r \r ! 7 , 1 , f e x ; 0056740 \r F e t c h E v e n : \r \t M A R 0056760 _ L _ a d d r + 1 ; \r f 0057000 e 1 : \t a d d r _ L ; \r \t L 0057020 _ p h a s e + 1 , I R _ 0057040 p h a s e ; \r \t p h a s e _ 0057060 L ; \r f e x : \t L _ M D ; 0057100 \t O v e r r i d e I R _ d i 0057120 s p a t c h \r \t c h a r _ L 0057140 L C Y 8 ; \r \t S I N K _ 0057160 c h a r , B U S , T A S K ; 0057200 \t d i s p a t c h o n l e f 0057220 t c h a r \r \t c h a r _ L 0057240 , : a d i s p ; \r f o S w a p 0057260 : \t M 376 001 \0 024 361 A R _ L _ 0057300 a d d r + 1 , : f e 1 ; \t F 0057320 e t c h O d d w i t h e v e 0057340 n / o d d s w a p p e d \r ! 7 0057360 , 1 , f o x ; \r F e t c h O d d 0057400 : \r \t L _ p h a s e + 1 , 0057420 I R _ p h a s e ; \r f o 1 : 0057440 \t S I N K _ c h a r , B U 0057460 S , T A S K ; \t d i s p a t c 0057500 h o n r i g h t c h a r \r 0057520 f o x : \t p h a s e _ L , 0057540 : a d i s p ; \t O v e r r i d e 0057560 I R _ d i s p a t c h \r f e 0057600 S w a p : \t L _ p h a s e + 0057620 1 , I R _ p h a s e , : 0057640 f o 1 ; \t F e t c h E v e n w 0057660 i t h e v e n 376 001 \0 < 373 / o d 0057700 d s w a p p e d \r \r ; R e g 0057720 i s t e r a m a t c h . 0057740 L = c t r # w h i c h w a 0057760 s z e r o \r M a t c h : \r \t A 0060000 C 1 _ L ; \r \t L _ p h a 0060020 s e , T A S K ; \r \t A C 3 _ 0060040 L , : S T A R T ; \r \r ; R 0060060 e c o r d b o u n d a r y - 0060100 - n o t i m p l e m e n t e 0060120 d y e t \r ; R e c o r d : \r \r 0060140 ; S k i p c h a r a c t e r 0060160 \r ! 1 , 2 , s k e , s k o ; \r S 0060200 k i p : \r \t T _ p h a s e - 0060220 1 , B U S O D D ; \t U n d o 0060240 p h a s e i n c r e m e n t \r 0060260 \t L _ 4 0 0 0 X O R 376 \0 245 0060300 344 206 T , I D I S P , : s k 0060320 e ; \t I n v e r t s w a p b 0060340 i t \r s k e : \t p h a s e _ 0060360 L , : F e t c h O d d ; \t e v 0060400 e n p h a s e & n o w s 0060420 w a p p e d , o r o p p o s 0060440 i t e \r s k o : \t p h a s e _ 0060460 L , : F e t c h E v e n ; \t 0060500 o d d p h a s e & n o w 0060520 s w a p p e d , o r o p p o 0060540 s i t e \r \r \r 377 \0 \0 f i n d p k 0060560 g . l s \0 373 225 260 315 r \0 \0 376 001 \0 021 0060600 G \r \t R a m I m a g e = t a 0060620 b l e [ \r 0 b ; 0060640 1 b ; 2 b ; 1 7 7 0060660 7 7 6 b ; 1 7 7 7 7 7 b ; 1 7 7 0060700 7 7 7 b ; 1 7 b ; 1 7 7 0060720 7 7 7 b \r 3 b ; 0060740 4 b ; 5 b ; 0060760 6 b ; 7 b ; 0061000 1 0 b ; 1 7 7 7 7 0 b ; 1 7 7 0061020 7 7 0 b \r 2 0 b ; 0061040 3 7 b ; 4 0 b ; 0061060 7 7 b ; 1 0 0 b ; 0061100 1 7 7 b ; 2 0 0 b ; 0061120 7 b \r 3 7 7 b ; 1 7 7 0061140 4 0 0 b ; 2 0 0 0 b ; 0061160 4 0 0 b ; 4 2 0 b ; 0061200 5 376 001 \0 215 H 2 1 b ; 4 2 4 0061220 b ; 1 7 b \r 4 2 6 0061240 b ; 4 3 0 b ; 7 7 7 2 0061260 b ; 1 7 0 0 0 0 b ; 4 0 0 0 0 0061300 b ; 1 7 7 7 7 4 b ; 1 7 7 7 6 6 0061320 b ; 1 7 7 7 5 3 b \r 4 4 0 0 0 0061340 b ; 6 6 0 0 0 b ; 4 0 0 0 0061360 b ; 1 0 0 0 0 b ; 1 7 7 0 0 0 0061400 b ; 7 7 7 7 7 b ; 7 7 7 4 0 0061420 b ; 7 7 4 0 0 b \r 1 7 7 6 7 5 0061440 b ; 7 4 0 0 b ; 7 4 1 7 0061460 b ; 1 7 0 3 6 0 b ; 6 0 1 1 0 0061500 b ; 3 0 0 0 0 b ; 7 0 5 3 1 0061520 b ; 2 0 4 1 1 b \r 6 5 0 7 4 0061540 b ; 4 1 0 2 3 b ; 1 2 2 6 4 5 0061560 b ; 1 7 7 0 3 4 b ; 3 7 4 0 0 0061600 b ; 1 7 7 7 376 001 \0 225 \0 0 0 b ; 0061620 4 5 2 b ; 5 0 0 b \r 1 0061640 0 0 0 0 0 b ; 1 7 7 7 4 0 b ; 0061660 2 7 7 b ; 1 7 7 7 7 1 b ; 1 0061700 7 7 7 6 0 b ; 1 7 7 7 7 5 b ; 0061720 4 5 6 0 b ; 5 6 4 4 0 b \r 0061740 3 4 1 0 4 b ; 6 4 0 2 4 b ; 1 0061760 7 6 0 0 0 b ; 1 7 7 0 4 0 b ; 1 0062000 7 7 0 4 2 b ; 2 0 3 b ; 0062020 3 6 0 b ; 1 7 7 6 0 0 b \r 1 0062040 7 4 0 0 0 b ; 1 6 0 0 0 0 b ; 1 0062060 4 0 0 0 0 b ; 7 7 7 b ; 0062100 1 7 7 7 b ; 3 7 7 7 b ; 0062120 7 7 7 7 b ; 1 7 7 7 7 b \r 0062140 3 7 7 7 7 b ; 1 0 0 0 b ; 0062160 2 0 0 0 0 b ; 1 7 7 7 6 1 b ; 0062200 5 2 6 b ; 5 376 001 \0 341 354 0062220 2 7 b ; 4 7 0 b ; 6 0 0062240 0 0 b \r 4 6 0 b ; 1 4 0 0062260 2 3 b ; 6 0 0 b ; 6 0062300 0 1 b ; 6 0 2 b ; 6 0062320 0 3 b ; 6 0 4 b ; 6 0062340 0 5 b \r 6 0 6 b ; 6 0062360 0 7 b ; 6 1 0 b ; 6 0062400 1 2 b ; 4 2 2 b ; 4 0062420 2 3 b ; 4 0 2 b ; 1 7 7 7 0062440 6 0 b \r 5 2 3 b ; 5 0062460 2 4 b ; 1 7 7 7 5 7 b ; 1 7 7 7 0062500 4 4 b ; 1 7 7 7 7 3 b ; 0062520 1 2 b ; 1 7 7 7 0 1 b ; 0062540 3 7 b \r 7 0 0 0 b ; 1 0062560 7 6 b ; 1 7 7 5 7 6 b ; 0062600 3 0 b ; 1 5 b ; 1 7 0062620 376 001 \0 A X 7 0 b ; 1 0 1 7 7 1 b 0062640 ; 1 7 7 7 4 0 b \r 1 7 5 7 7 7 b 0062660 ; 1 1 b ; 1 3 b 0062700 ; 1 4 b ; 1 6 b 0062720 ; 6 0 b ; 7 7 6 b 0062740 ; 1 7 7 5 7 7 b \r 1 0 0 7 7 7 b 0062760 ; 1 7 7 6 7 7 b ; 1 7 7 7 1 4 b 0063000 ; 2 5 2 7 b ; 1 0 1 b 0063020 ; 6 3 0 b ; 6 3 1 b 0063040 ; 6 4 2 b \r 1 7 7 1 6 2 b 0063060 ; 1 7 7 1 3 0 b ; 2 2 b 0063100 ; 2 4 b ; 3 3 5 b 0063120 ; 1 3 7 7 b ; 4 0 1 b 0063140 ; 1 b \r 2 0 0 1 b 0063160 ; 2 1 b ; 2 3 b 0063200 ; 2 5 b ; 2 6 b 0063220 ; 376 001 \0 o 351 2 7 b ; 0063240 3 1 b ; 3 b \r 0063260 1 6 7 5 b ; 7 3 6 b ; 1 7 0063300 7 1 2 0 b ; 3 0 0 b ; 0063320 6 0 0 1 b ; 6 1 0 0 0 b ; 6 0063340 1 4 0 0 b ; 1 0 b \r 6 0063360 2 0 0 0 b ; 6 2 4 0 0 b ; 6 0063400 7 0 0 0 b ; 6 3 4 0 0 b ; 6 0063420 4 4 0 0 b ; 6 6 4 0 0 b ; 6 0063440 3 0 0 0 b ; 1 4 b \r 6 0063460 5 4 0 0 b ; 6 5 4 0 1 b ; 6 0063500 5 4 0 2 b ; 6 5 4 0 3 b ; 6 0063520 5 4 0 4 b ; 6 5 4 0 5 b ; 6 0063540 5 4 0 6 b ; 2 0 b \r 6 0063560 5 4 0 7 b ; 6 5 4 1 0 b ; 6 0063600 5 4 1 1 b ; 6 5 4 1 2 b ; 6 0063620 5 4 1 3 b ; 6 5 4 376 001 \0 ! 367 1 0063640 4 b ; 6 5 4 1 5 b ; 4 0063660 0 b \r 6 5 4 1 6 b ; 6 5 4 1 0063700 7 b ; 1 7 7 7 6 3 b ; 1 7 7 0 2 0063720 4 b ; 1 7 7 0 2 5 b ; 1 7 7 0 2 0063740 6 b ; 7 7 7 4 b ; 1 0 0063760 0 b \r 2 3 7 7 b ; 2 7 7 0064000 7 b ; 3 3 7 7 b ; 4 7 0064020 7 b ; 5 7 6 b ; 1 7 7 1 7 0064040 5 b ; 0 b ; 2 0 0064060 0 b \r 0 b ; 0064100 0 b ; 0 b ; * 0064140 0 b ; 0 b ; 3 0 0064160 0 b \r 0 b ; 0064200 0 b ; 0 b ; 0064220 0 b ; 0 b ; 376 0064240 001 \0 l 302 0 b ; 0 b ; 0064260 3 7 7 b \r 0 b ; 0064300 0 b ; 0 b ; * 0064360 0 b \r 0 b ; 0064400 0 b ; 0 b ; * 0064460 0 b \r 0 b ; 0064500 0 b ; 0 b ; * 0064560 0 b \r 0 b ; 0064600 0 b ; 0 b ; * 0064640 376 001 \0 257 247 0 b ; 0064660 0 b ; 0 b \r 0064700 1 0 b ; 1 0 2 0 0 0 b ; 1 0 0064720 0 3 0 b ; 1 0 2 0 3 0 b ; 1 5 0064740 2 1 1 b ; 1 0 0 0 1 6 b ; 6 5 0064760 2 1 0 b ; 4 0 0 2 6 b \r 6 5 0065000 2 1 0 b ; 4 0 0 2 6 b ; 1 5 0065020 2 1 1 b ; 1 0 0 0 1 6 b ; 6 5 0065040 4 1 0 b ; 6 0 3 4 b ; 0065060 1 0 b ; 1 0 2 0 0 0 b \r 0065100 1 0 b ; 1 0 2 0 0 0 b ; * 0065160 1 0 b ; 1 0 2 0 0 0 b \r 0065200 1 0 b ; 1 0 2 0 2 0 b ; 0065220 1 0 b ; 1 0 2 0 3 7 b ; 1 4 0065240 0 3 0 b ; 1 0 2 0 376 001 \0 X 263 2 1 0065260 b ; 1 3 0 b ; 1 0 0 0 2 3 0065300 b \r 0 b ; 1 0 2 0 1 4 0065320 b ; 6 5 2 1 0 b ; 4 0 0 2 2 0065340 b ; 6 4 0 3 0 b ; 1 0 2 0 1 7 0065360 b ; 6 0 0 3 6 b ; 1 0 2 0 2 4 0065400 b \r 6 0 0 1 2 b ; 1 4 2 0 2 5 0065420 b ; 6 0 0 3 0 b ; 1 0 3 6 0 0 0065440 b ; 6 0 0 1 2 b ; 1 4 2 0 2 7 0065460 b ; 6 4 0 3 0 b ; 1 0 3 6 0 0 0065500 b \r 6 4 0 1 2 b ; 1 0 0 0 3 1 0065520 b ; 3 0 b ; 1 0 2 0 2 0 0065540 b ; 6 4 0 3 0 b ; 1 0 2 0 0 4 0065560 b ; 6 4 0 3 0 b ; 1 0 2 0 0 2 0065600 b \r 2 5 0 5 7 b ; 5 0 0 3 2 0065620 b ; 1 0 b ; 1 0 2 0 0 0 0065640 b ; 1 0 b ; 1 0 2 0 376 \0 0065660 030 b : 0 0 b ; 0 b ; 1 0065700 0 2 0 1 5 b \r \t ] \r \r 377 \0 \0 c o 0065720 m p i l e f i n d p k g . c m \0 0065740 373 225 361 v 247 \0 \0 376 001 \0 g 320 M u / L 0065760 f i n d p k g . m u \r P a c k 0066000 m u / T f i n d p k g . m b 0066020 f i n d p k g . l s \r / / N o 0066040 w e d i t f i n d p k g . l 0066060 s b y r e m o v i n g a l 0066100 l b u t t h e f i r s t 0066120 4 0 ( d e c i m a l ) \r / / 0066140 l i n e s o f t h e t a b 0066160 l e d a t a - - f i n d c 0066200 o m p m u . b c p l d o e s 0066220 a g e t " f i n d p k g . l 0066240 s " \r B r a v o \r B c p l / F 0066260 f i n d c o m p i l e . b c p l 0066300 \r B c p l / F f i n d c o m p 0066320 m u . b c p l \r B c p l / F f 0066340 i n d n e x t . b c p l 376 \0 025 ^ 0066360 031 \r A s m f i n d n e x t a s 0066400 m . a s m \r 377 \0 \0 s e n d f i n 0066420 d p k g . c m \0 373 225 361 v 225 \0 \0 376 0066440 001 \0 321 311 F t p / - S M a x c 0066460 ^ \r C o n n e c t / C A l t o 0066500 s o u r c e ^ \r D u m p / C 0066520 f i n d p k g . d m f i n d p 0066540 k g d e f s . d f i n d i n t 0066560 d e f s . d f i n d n e x t . 0066600 b c p l f i n d n e x t a s m 0066620 . a s m f i n d c o m p i l e 0066640 . b c p l f i n d c o m p m u 0066660 . b c p l f i n d p k g . m u 0066700 f i n d p k g . l s c o m p 0066720 i l e f i n d p k g . c m s e 0066740 n d f i n d p k g . c m ^ \r C 0066760 o n n e c t / C A l t o ^ \r 0067000 D u m p / C f i n d p k g . d 0067020 m f i n d p k g d e f s . d 0067040 f i n d 376 \0 4 202 L n e x t . B R 0067060 f i n d n e x t a s m . B R 0067100 f i n d c o m p i l e . B R f 0067120 i n d c o m p m u . B R \r 374 0067136