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