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