$ od -c -N 50000 [Indigo]<Chipmonk>rommaker>rommaker-sources.dm!16 0000000 377 \0 \0 m b . m e s a \0 373 227 251 237 033 0000020 \0 \0 376 001 \0 % k - - f i l e : 0000040 M B . m e s a \r - - l a s t 0000060 m o d i f i e d b y M c C 0000100 r e i g h t , A u g u s t 1 0000120 8 , 1 9 8 1 1 0 : 4 6 A 0000140 M \r - - w r i t t e n b y 0000160 M c C r e i g h t , A u g u s 0000200 t 4 , 1 9 8 1 2 : 4 4 0000220 P M \r \r - - T h i s i n t e 0000240 r f a c e s u p p o r t s t 0000260 h e i n t e r n a l i z i n g 0000300 o f t h e M i c r o B i 0000320 n a r y f o r m a t \r - - f 0000340 i l e o r i g i n a l l y i 0000360 n t r o d u c e d b y D e u 0000400 t s c h i n t h e e a r l 0000420 y 1 9 7 0 ' 376 001 \0 304 005 s a n 0000440 d n o w \r - - u s e d t o 0000460 r e p r e s e n t a l l o 0000500 f o u r R O M d a t a . 0000520 A s d e f i n e d i n M 0000540 a x c D o c u m e n t 9 . 2 0000560 , \r - - d a t e d J u l y 0000600 6 , 1 9 7 2 , p a g e s 3 0000620 0 - 3 2 , t h e f o r m a t 0000640 i s a s e q u e n c e o 0000660 f M B I t e m s . \r \r D I R E 0000700 C T O R Y \r S t r e a m D e 0000720 f s : F R O M " S t r e a m 0000740 D e f s " ; \r \r M B : D E F I 0000760 N I T I O N S = P U B L I C 0001000 \r \r B E G I N \r \r - - 0001020 T Y P E S \r \r 376 001 \0 202 0001040 244 M B I t e m T y p e : T 0001060 Y P E = M A C H I N E D E 0001100 P E N D E N T { \r e n d 0001120 ( 0 ) , d a t a W o r d ( 1 ) 0001140 , s e t L C ( 2 ) , f i x u 0001160 p ( 3 ) , m e m N a m e ( 4 ) 0001200 , a d d r S y m ( 5 ) , e x 0001220 t R e f ( 6 ) } ; \r M B I t 0001240 e m : T Y P E = M A C H I 0001260 N E D E P E N D E N T R E C 0001300 O R D [ \r u g h ( 0 ) 0001320 : S E L E C T i t e m T y p 0001340 e ( 0 ) : M B I t e m T y p e 0001360 F R O M \r e n d 0001400 = > [ ] , \r d a t 0001420 a W o r d = > [ - - i 0001440 n 376 001 \0 7 . c u r r e n t m 0001460 e m o r y a t c u r r e n t 0001500 L C , t h e n a d v a n c 0001520 e L C \r l i n 0001540 e N o ( 1 ) : C A R D I N A L 0001560 , \r b i t s ( 2 0001600 ) : P A C K E D A R R A Y 0001620 [ 0 . . 0 ) O F B O O L E A 0001640 N - - h i g h o r d e r 0001660 i n [ 0 ] \r ] 0001700 , \r s e t L C = > 0001720 [ m e m N o ( 1 ) , l o c a 0001740 t i o n ( 2 ) : C A R D I N A 0001760 L ] , - - m a k e t h i 0002000 s m e m o r y a n d L C 0002020 c u r r e n t \r f i 0002040 x u p = > 376 001 \0 314 " [ \r 0002060 m e m N o ( 1 ) , 0002100 l o c a t i o n ( 2 ) : C A R 0002120 D I N A L , \r f 0002140 i r s t B i t ( 3 : 0 . . 7 ) , 0002160 l a s t B i t ( 3 : 8 . . 1 5 0002200 ) : [ 0 . . 2 5 5 ] , \r 0002220 b i t s ( 4 ) : P A 0002240 C K E D A R R A Y [ 0 . . 1 0002260 5 ] O F B O O L E A N ] , 0002300 - - h i g h o r d e r i n 0002320 [ 0 ] \r m e m N a 0002340 m e = > [ \r 0002360 m e m N o ( 1 ) , w i d t h ( 0002400 2 ) : C A R D I N A L , n a 0002420 m e ( 3 ) : P A C K E D A R 0002440 R A Y [ 0 . . 0 ) 376 001 \0 a 035 0002460 O F C H A R A C T E R ] , \r 0002500 a d d r S y m = > 0002520 [ \r m e m N o ( 0002540 1 ) , l o c a t i o n ( 2 ) : 0002560 C A R D I N A L , \r 0002600 n a m e ( 3 ) : P A C K 0002620 E D A R R A Y [ 0 . . 0 ) 0002640 O F C H A R A C T E R ] , \r 0002660 e x t R e f = > [ 0002700 \r m e m N o ( 1 0002720 ) , l o c a t i o n ( 2 ) : 0002740 C A R D I N A L , \r 0002760 f i r s t B i t ( 3 : 0 . . 0003000 7 ) , l a s t B i t ( 3 : 8 . 0003020 . 1 5 ) : [ 0 . . 2 5 5 ] , \r 0003040 n a m e ( 4 ) : 0003060 376 001 \0 \t x P A C K E D A R R 0003100 A Y [ 0 . . 0 ) O F C H A 0003120 R A C T E R ] , \r E 0003140 N D C A S E ] ; \r \r M B H a 0003160 n d l e : T Y P E = M B M 0003200 e m o r y P t r ; \r \r M B M 0003220 e m o r y P t r : T Y P E = 0003240 L O N G P O I N T E R T O 0003260 M B M e m o r y ; \r M B M 0003300 e m o r y : T Y P E = R E 0003320 C O R D [ \r n e x t M 0003340 e m : M B M e m o r y P t r 0003360 _ N I L , \r n a m e : 0003400 L O N G S T R I N G _ N 0003420 I L , \r z o n e : U N 0003440 C O U N T E D Z O N E _ N 0003460 I L , \r 376 001 \0 324 E m e m 0003500 N o , l e n g t h , w i d t 0003520 h : C A R D I N A L , \r 0003540 w o r d s : M B W o r d P t 0003560 r _ N I L , \r s y m 0003600 b o l s : M B S y m P t r _ 0003620 N I L ] ; \r \r M B W o r d 0003640 P t r : T Y P E = L O N G 0003660 P O I N T E R T O M B W o 0003700 r d ; \r M B W o r d : T Y 0003720 P E = R E C O R D [ \r 0003740 n e x t W o r d : M B W o 0003760 r d P t r _ N I L , \r 0004000 l o c a t i o n : L O N G 0004020 C A R D I N A L , \r v a 0004040 l u e : P A C K E D S E Q U 0004060 E N C E C O M P U 376 001 \0 034 X T 0004100 E D C A R D I N A L O F B 0004120 O O L E A N - - l o w o r 0004140 d e r i n [ 0 ] \r ] 0004160 ; \r \r M B S y m P t r : T 0004200 Y P E = L O N G P O I N T 0004220 E R T O M B S y m ; \r M 0004240 B S y m : T Y P E = R E C 0004260 O R D [ \r n e x t S y 0004300 m : M B S y m P t r , l o c 0004320 a t i o n : L O N G C A R D 0004340 I N A L , n a m e : L O N G 0004360 S T R I N G ] ; \r \r B i t 0004400 S o u r c e : T Y P E = R 0004420 E C O R D [ \r i n v e r 0004440 t : B O O L E A N _ F A L 0004460 S E , \r s : S E L E 376 0004500 001 \0 366 z C T s o u r c e : * 0004520 F R O M \r c o n s 0004540 t a n t F a l s e = > N U L 0004560 L , \r a d d r B i t 0004600 = > [ i n d e x : C A R D 0004620 I N A L ] , \r E N D 0004640 C A S E \r ] ; \r P e 0004660 r m u t a t i o n : T Y P E 0004700 = R E C O R D [ \r s e 0004720 q : S E Q U E N C E l e n g 0004740 t h : C A R D I N A L O F 0004760 B i t S o u r c e \r ] ; 0005000 \r - - P e r m u t a t 0005020 i o n [ 0 ] s a y s h o w 0005040 t o c o m p u t e t h e l 0005060 o w - o r d e r b i t \r P 0005100 e r m u 376 001 \0 210 2 t a t i o n P 0005120 t r : T Y P E = L O N G 0005140 P O I N T E R T O P e r m u 0005160 t a t i o n ; \r \r - - 0005200 P R O C E D U R 0005220 E S \r \r \r I l l e g a l M 0005240 B F o r m a t : S I G N A L ; 0005260 \r \r R e a d M B : P R O C 0005300 E D U R E [ \r s : S 0005320 t r e a m D e f s . S t r e a m 0005340 H a n d l e - - a w o r d 0005360 s t r e a m - - , z : 0005400 U N C O U N T E D Z O N E ] \r 0005420 R E T U R N S [ M B H 0005440 a n d l e ] ; \r \r F r e e M 0005460 B : P R O C E D U R E [ m b 0005500 : M B H a n d l 376 001 \0 223 371 e ] 0005520 ; \r \r F r e e M B M e m o r 0005540 y : P R O C E D U R E [ m e 0005560 m P : L O N G P O I N T E R 0005600 T O M B M e m o r y P t r ] 0005620 ; \r \r F i n d M B M e m o r 0005640 y : P R O C E D U R E [ m b 0005660 : M B H a n d l e , m e m N 0005700 a m e : S T R I N G ] R E T 0005720 U R N S [ M B M e m o r y P t 0005740 r ] ; \r \r A n a l y z e M e 0005760 m o r y : P R O C E D U R E 0006000 [ m e m : M B M e m o r y P t 0006020 r ] \r R E T U R N S [ 0006040 d e c o d e W i d t h , w o r 0006060 d C o u n t , w o r d W i d t 0006100 h : C A R D I N A L ] ; \r 376 001 0006120 \0 R 374 \r S u p p r e s s D e 0006140 f a u l t W o r d s : P R O C 0006160 E D U R E [ m e m : M B M e 0006200 m o r y P t r , d e f a u l t 0006220 : B O O L E A N ] ; \r \r R 0006240 e C a s t : P R O C E D U R E 0006260 [ m e m : M B M e m o r y P 0006300 t r , n e w W o r d W i d t h 0006320 : C A R D I N A L ] ; \r 0006340 - - s t e a l s l o w - o 0006360 r d e r a d d r e s s b i t 0006400 s t o w i d e n t h e w 0006420 o r d b y a p o w e r o 0006440 f 2 . \r - - p u t s 0006460 a l l o r i g i n a l b i 0006500 t 0 ' s t o g e t h e r , 0006520 t h e 376 001 \0 ! 234 n a l l b i 0006540 t 1 ' s , t h e n b i t 0006560 2 ' s , e t c . \r \r P e r 0006600 m u t e A d d r e s s : P R O 0006620 C E D U R E [ m e m : M B M 0006640 e m o r y P t r , p : P e r 0006660 m u t a t i o n P t r ] ; \r \r 0006700 P e r m u t e D a t a : P R 0006720 O C E D U R E [ m e m : M B 0006740 M e m o r y P t r , p : P e 0006760 r m u t a t i o n P t r ] ; \r \r 0007000 F i n d M B B i t : P R O 0007020 C E D U R E [ \r m b : 0007040 M B H a n d l e , m e m N a 0007060 m e : S T R I N G , w o r d 0007100 : L O N G C A R D I N A L , 0007120 b i t : C A 376 \0 . 272 005 R D I 0007140 N A L ] \r R E T U R N S 0007160 [ B O O L E A N ] ; \r \r E 0007200 N D . - - M B \r \r 377 \0 \0 m b 0007220 i m p l . m e s a \0 373 227 251 261 374 \0 0007240 \0 376 001 \0 J Y - - f i l e : 0007260 M B I m p l . m e s a \r - - l 0007300 a s t m o d i f i e d b y 0007320 M c C r e i g h t , A u g u s 0007340 t 1 8 , 1 9 8 1 5 : 1 0 0007360 P M \r - - w r i t t e n b 0007400 y M c C r e i g h t , A u g 0007420 u s t 4 , 1 9 8 1 2 : 4 0007440 4 P M \r \r D I R E C T O R Y \r 0007460 I n l i n e D e f s : F R 0007500 O M " I n l i n e D e f s " , 0007520 \r M B : F R O M " M B " 0007540 , \r S t r e a m D e f s : 0007560 F R O M " S t r e a m D e f s 0007600 " , \r S t r i n g D e f s : 0007620 F R O M " S t r i n g D e f 0007640 s " ; \r \r \r 376 001 \0 362 257 M B I m p 0007660 l : P R O G R A M I M P O R 0007700 T S I n l i n e D e f s , S t 0007720 r i n g D e f s E X P O R T S 0007740 M B = P U B L I C \r \r 0007760 B E G I N O P E N M B ; \r \r 0010000 I l l e g a l M B F o r m a 0010020 t : S I G N A L = C O D E 0010040 ; \r \r c u r M B : M B H a 0010060 n d l e _ N I L ; \r c u 0010100 r M e m : M B M e m o r y P t 0010120 r _ N I L ; - - a l w 0010140 a y s i n c u r M B \r c 0010160 u r W o r d : M B W o r d P t 0010200 r _ N I L ; - - a l w 0010220 a y s i n c u r M e m \r \r 0010240 R e a d M B : P R 376 001 \0 k 323 0010260 O C E D U R E [ \r s : 0010300 S t r e a m D e f s . S t r e 0010320 a m H a n d l e - - a w o 0010340 r d s t r e a m - - , z 0010360 : U N C O U N T E D Z O N E 0010400 ] \r R E T U R N S [ m 0010420 b : M B H a n d l e ] = \r 0010440 B E G I N \r F a k 0010460 e I t e m : T Y P E = A R 0010500 R A Y [ 0 . . 9 9 ] O F W 0010520 O R D ; \r f a k e I t e 0010540 m : F a k e I t e m ; \r 0010560 i t e m : L O N G P O I N 0010600 T E R T O M B I t e m _ 0010620 L O N G [ L O O P H O L E [ @ f 0010640 a k e I t e m ] ] ; \r c 0010660 376 001 \0 H N u r L C : C A R D I 0010700 N A L ; - - i n c u r M 0010720 e m \r \r G e t N e x t I 0010740 t e m : P R O C E D U R E = 0010760 \r B E G I N - - 0011000 f a k e I t e m a n d i t 0011020 e m m u s t l i e i n t 0011040 h e s a m e s t o r a g e \r 0011060 i : C A R D I N A 0011100 L ; \r f a k e I t e 0011120 m [ 0 ] _ s . g e t [ s ] ; 0011140 \r S E L E C T i t 0011160 e m . i t e m T y p e F R O M 0011200 \r e n d = > 0011220 R E T U R N ; \r 0011240 d a t a W o r d = > \r 0011260 376 001 \0 N 227 F O R i 0011300 I N [ 1 . . 1 + ( c u r 0011320 M e m . w i d t h + 1 5 ) / 0011340 1 6 ] D O \r 0011360 f a k e I t e m [ i ] _ 0011400 s . g e t [ s ] E N D L O O 0011420 P ; \r s e t L C 0011440 = > F O R i I N [ 1 . 0011460 . 2 ] D O f a k e I t e m [ 0011500 i ] _ s . g e t [ s ] E N 0011520 D L O O P ; \r f 0011540 i x u p = > F O R i I N 0011560 [ 1 . . 4 ] D O f a k e I 0011600 t e m [ i ] _ s . g e t [ s 0011620 ] E N D L O O P ; \r 0011640 m e m N a m e , a d d r 0011660 S y m = > \r 376 001 \0 272 226 0011700 B E G I N \r 0011720 F O R i I N [ 0011740 1 . . 2 ] D O f a k e I t e 0011760 m [ i ] _ s . g e t [ s ] 0012000 E N D L O O P ; \r 0012020 F O R i I N [ 3 . . 0012040 9 9 ] D O \r 0012060 c : P A C K E D A R R 0012100 A Y [ 0 . . 1 ] O F C H A 0012120 R A C T E R ; \r 0012140 f a k e I t e m [ i ] 0012160 _ s . g e t [ s ] ; \r 0012200 c _ L O O P 0012220 H O L E [ f a k e I t e m [ i ] 0012240 , P A C K E D A R R A Y [ 0012260 0 . . 1 ] O F C H A R A C 376 0012300 001 \0 N 215 T E R ] ; \r 0012320 I F c [ 0 ] = 0012340 0 C O R c [ 1 ] = 0 C 0012360 T H E N E X I T ; \r 0012400 E N D L O O P ; \r 0012420 E N D ; \r 0012440 e x t R e f = > 0012460 \r B E G I N 0012500 \r F O R i 0012520 I N [ 1 . . 3 ] D O f a 0012540 k e I t e m [ i ] _ s . g e 0012560 t [ s ] E N D L O O P ; \r 0012600 F O R i I N 0012620 [ 4 . . 9 9 ] D O \r 0012640 c : P A C K E 0012660 D A R R A Y [ 0 . . 1 ] O 0012700 F C H 376 001 \0 331 t A R A C T E R 0012720 ; \r f a 0012740 k e I t e m [ i ] _ s . g e 0012760 t [ s ] ; \r 0013000 c _ L O O P H O L E [ f 0013020 a k e I t e m [ i ] , P A C K 0013040 E D A R R A Y [ 0 . . 1 ] 0013060 O F C H A R A C T E R ] ; \r 0013100 I F c [ 0013120 0 ] = 0 C O R c [ 1 ] 0013140 = 0 C T H E N E X I T ; \r 0013160 E N D L 0013200 O O P ; \r E 0013220 N D ; \r E N D C 0013240 A S E ; \r E N D ; \r 0013260 \r F i n d M e m : P R 0013300 O C E D U R E [ 376 001 \0 E 223 m e 0013320 m N o : C A R D I N A L ] R 0013340 E T U R N S [ m : M B M e m 0013360 o r y P t r ] = { \r 0013400 F O R m _ m b , m . 0013420 n e x t M e m U N T I L m 0013440 = N I L O R m . m e m N o 0013460 = m e m N o D O E N D L 0013500 O O P } ; \r \r m b _ 0013520 N I L ; \r s . r e s e t 0013540 [ s ] ; \r D O \r 0013560 G e t N e x t I t e m [ ] ; 0013600 \r W I T H d i t e 0013620 m : i t e m S E L E C T F 0013640 R O M \r e n d 0013660 = > E X I T ; \r 0013700 d a t a W o r d = > \r 376 001 0013720 \0 243 u B E G I 0013740 N \r w : M 0013760 B W o r d P t r _ F i n d W 0014000 o r d [ c u r M e m , c u r L 0014020 C ] ; \r F O 0014040 R i : C A R D I N A L I N 0014060 [ 0 . . c u r M e m . w i d t 0014100 h ) D O \r 0014120 w . v a l u e [ i ] _ d 0014140 i t e m . b i t s [ i ] E N D 0014160 L O O P ; \r 0014200 c u r L C _ c u r L C + 0014220 1 ; \r E N D 0014240 ; \r s e t L C 0014260 = > B E G I N c u r M e m 0014300 _ F i n d M e m [ d i t e m . 0014320 m e m 376 001 \0 361 305 N o ] ; c u r 0014340 L C _ d i t e m . l o c a t 0014360 i o n ; E N D ; \r 0014400 f i x u p = > \r 0014420 B E G I N \r 0014440 w : M B W o r d P t 0014460 r _ F i n d W o r d [ F i n 0014500 d M e m [ d i t e m . m e m N o 0014520 ] , d i t e m . l o c a t i o 0014540 n ] ; \r F O 0014560 R i : C A R D I N A L I N 0014600 [ d i t e m . f i r s t B i t 0014620 . . d i t e m . l a s t B i t ] 0014640 D O \r 0014660 w . v a l u e [ i ] _ d i t 0014700 e m . b i t s [ i - d i t e 0014720 m . f i r s t B 376 001 \0 J 336 i t ] 0014740 E N D L O O P ; \r 0014760 E N D ; \r 0015000 m e m N a m e = > \r 0015020 B E G I N \r 0015040 n a m e L e n : C 0015060 A R D I N A L ; \r 0015100 m b _ z . N E W [ \r 0015120 M B M e m 0015140 o r y _ [ \r 0015160 z o n e : z , n e x 0015200 t M e m : m b , n a m e : 0015220 N I L , m e m N o : d i t e 0015240 m . m e m N o , l e n g t h : 0015260 0 , \r 0015300 w i d t h : d i t e m . w i d 0015320 t h , w o r d s : N I 376 001 \0 0015340 277 316 L , s y m b o l s : N I 0015360 L ] ] ; \r F 0015400 O R n a m e L e n _ 0 , 0015420 n a m e L e n + 1 W H I L 0015440 E d i t e m . n a m e [ n a m 0015460 e L e n ] # 0 C D O E N 0015500 D L O O P ; \r 0015520 m b . n a m e _ z . N E W 0015540 [ S t r i n g B o d y [ n a m 0015560 e L e n ] ] ; \r 0015600 F O R i : C A R D I N A 0015620 L I N [ 0 . . n a m e L e n 0015640 ) D O m b . n a m e [ i ] 0015660 _ d i t e m . n a m e [ i ] 0015700 E N D L O O P ; \r 0015720 m b . n a m e . l e n g t 0015740 h 376 001 \0 242 260 _ n a m e L e n 0015760 ; \r E N D ; 0016000 \r a d d r S y m 0016020 = > \r B E 0016040 G I N \r n a 0016060 m e L e n : C A R D I N A L ; 0016100 \r m : M B 0016120 M e m o r y P t r _ F i n d 0016140 M e m [ d i t e m . m e m N o ] 0016160 ; \r m . s y 0016200 m b o l s _ z . N E W [ \r 0016220 M B S y m 0016240 _ [ n e x t S y m : m . s 0016260 y m b o l s , l o c a t i o n 0016300 : d i t e m . l o c a t i o n 0016320 , n a m e : N I L ] ] ; \r 0016340 376 001 \0 * ; F O 0016360 R n a m e L e n _ 0 , n 0016400 a m e L e n + 1 W H I L E 0016420 d i t e m . n a m e [ n a m e 0016440 L e n ] # 0 C D O E N D 0016460 L O O P ; \r 0016500 m . s y m b o l s . n a m e _ 0016520 z . N E W [ S t r i n g B o d 0016540 y [ n a m e L e n ] ] ; \r 0016560 F O R i : C 0016600 A R D I N A L I N [ 0 . . n 0016620 a m e L e n ) D O \r 0016640 m . s y m b o l s 0016660 . n a m e [ i ] _ d i t e m 0016700 . n a m e [ i ] E N D L O O P 0016720 ; \r m . s y 0016740 m b o l s . n a m e . l 376 001 \0 _ 0016760 A e n g t h _ n a m e L e n 0017000 ; \r E N D ; 0017020 \r E N D C A S E 0017040 = > S I G N A L I l l e g 0017060 a l M B F o r m a t ; \r 0017100 E N D L O O P ; \r E 0017120 N D ; - - o f R e a d M 0017140 B \r \r F r e e M B M e m o r 0017160 y : P R O C E D U R E [ m e 0017200 m P : L O N G P O I N T E R 0017220 T O M B M e m o r y P t r ] 0017240 = \r B E G I N \r 0017260 I F c u r M B = m e m P 0017300 ^ T H E N c u r M B _ N 0017320 I L ; \r I F m e m P ^ 0017340 # N I L T H E N \r 0017360 376 001 \0 377 ; B E G I N \r 0017400 m : M B M e m o r y P t 0017420 r _ m e m P ^ ; \r 0017440 z : U N C O U N T E D Z O 0017460 N E _ m . z o n e ; \r 0017500 z . F R E E [ @ m . n a m 0017520 e ] ; \r F r e e M B 0017540 M e m o r y W o r d s [ m ] ; \r 0017560 F r e e M B M e m o 0017600 r y S y m b o l s [ m ] ; \r 0017620 m e m P ^ _ m . n e 0017640 x t M e m ; \r z . F 0017660 R E E [ @ m ] ; \r E 0017700 N D ; \r E N D ; \r \r 0017720 F r e e M B M e m o r y W o r d 0017740 s : P R O C E D U R E [ m e 0017760 m : M B M 376 001 \0 004 ^ e m o r y 0020000 P t r ] = \r B E G I N 0020020 \r W H I L E m e m . w 0020040 o r d s # N I L D O \r 0020060 w : M B W o r d P t r 0020100 _ m e m . w o r d s ; \r 0020120 m e m . w o r d s _ 0020140 w . n e x t W o r d ; \r 0020160 m e m . z o n e . F R E E [ 0020200 @ w ] ; \r E N D L O 0020220 O P ; \r E N D ; \r \r 0020240 F r e e M B M e m o r y S y m b 0020260 o l s : P R O C E D U R E [ 0020300 m e m : M B M e m o r y P t r 0020320 ] = \r B E G I N \r 0020340 W H I L E m e m . s y m b 0020360 o l s # N I L D 376 001 \0 352 F 0020400 O \r s : M B S y m 0020420 P t r _ m e m . s y m b o l 0020440 s ; \r m e m . s y m 0020460 b o l s _ s . n e x t S y m 0020500 ; \r m e m . z o n e 0020520 . F R E E [ @ s . n a m e ] ; \r 0020540 m e m . z o n e . F 0020560 R E E [ @ s ] ; \r E 0020600 N D L O O P ; \r E N D ; 0020620 \r \r F r e e M B : P R O C 0020640 E D U R E [ m b : M B H a n 0020660 d l e ] = { \r W H I 0020700 L E m b # N I L D O F 0020720 r e e M B M e m o r y [ @ m b ] 0020740 E N D L O O P } ; \r \r F i 0020760 n d W o r d : P R O C E D U R 0021000 376 001 \0 200 355 E [ m : M B M e m 0021020 o r y P t r , l o c a t i o n 0021040 : L O N G C A R D I N A L ] 0021060 \r R E T U R N S [ w : 0021100 M B W o r d P t r ] = \r 0021120 B E G I N - - w o r d 0021140 s a p p e a r i n a d d r 0021160 e s s o r d e r \r l a 0021200 s t w : M B W o r d P t r _ 0021220 N I L ; \r w _ \r 0021240 I F m = c u r M e 0021260 m A N D c u r W o r d # 0021300 N I L A N D c u r W o r d . 0021320 l o c a t i o n < = l o c a 0021340 t i o n T H E N \r 0021360 c u r W o r d E L S E m . w 0021400 o r d s ; 376 001 \0 2 001 \r W 0021420 H I L E w # N I L A N D 0021440 w . l o c a t i o n < l o 0021460 c a t i o n D O l a s t w 0021500 _ w ; w _ w . n e x t W 0021520 o r d E N D L O O P ; \r 0021540 I F w = N I L O R l 0021560 o c a t i o n < w . l o c a 0021600 t i o n T H E N \r 0021620 B E G I N - - i n s e r t 0021640 a n e w w o r d \r 0021660 w _ m . z o n e . N E W 0021700 [ \r M B W o r d 0021720 [ m . w i d t h ] _ [ n e 0021740 x t W o r d : w , l o c a t 0021760 i o n : l o c a t i o n , v 0022000 a l u e : N U L L 376 001 \0 7 324 ] 0022020 ] ; \r F O R i : 0022040 C A R D I N A L I N [ 0 . . 0022060 m . w i d t h ) D O w . v a 0022100 l u e [ i ] _ F A L S E E 0022120 N D L O O P ; \r I F 0022140 l a s t w = N I L T H E 0022160 N m . w o r d s _ w E L 0022200 S E l a s t w . n e x t W o r 0022220 d _ w ; \r E N D 0022240 ; \r I F m = c u r 0022260 M e m T H E N c u r W o r d 0022300 _ w ; \r E N D ; 0022320 - - o f F i n d W o r d \r \r 0022340 F i n d M B M e m o r y : 0022360 P R O C E D U R E [ m b : M 0022400 B H a n d l e , m e m N a m 376 0022420 001 \0 \f 5 e : S T R I N G ] R 0022440 E T U R N S [ M B M e m o r y 0022460 P t r ] = \r B E G I N 0022500 \r F O R m e m : M B 0022520 M e m o r y P t r _ m b , 0022540 m e m . n e x t M e m W H I L 0022560 E m e m # N I L D O \r 0022600 I F E q u i v a l e 0022620 n t L o n g S t r i n g s [ m e 0022640 m . n a m e , m e m N a m e ] 0022660 T H E N R E T U R N [ m e m 0022700 ] ; E N D L O O P ; \r 0022720 R E T U R N [ N I L ] ; \r 0022740 E N D ; \r \r A n a l y z e 0022760 M e m o r y : P R O C E D U R 0023000 E [ m e m : M B M e m o r y 0023020 P t r ] 376 001 \0 R 316 \r R E 0023040 T U R N S [ d e c o d e W i d 0023060 t h , w o r d C o u n t , w 0023100 o r d W i d t h : C A R D I N 0023120 A L ] = \r B E G I N \r 0023140 m a x A d d r e s s : 0023160 L O N G C A R D I N A L _ 0023200 0 ; \r w o r d W i d t h 0023220 _ m e m . w i d t h ; \r 0023240 d e c o d e W i d t h _ 0023260 0 ; \r w o r d C o u n t 0023300 _ 0 ; \r F O R w : 0023320 M B W o r d P t r _ m e m 0023340 . w o r d s , w . n e x t W o 0023360 r d W H I L E w # N I L 0023400 D O \r W H I L E 0023420 w . l o c a t i o 376 001 \0 334 030 n 0023440 > m a x A d d r e s s D O \r 0023460 m a x A d d r e 0023500 s s _ 2 * m a x A d d r e s 0023520 s + 1 ; d e c o d e W i d t h 0023540 _ d e c o d e W i d t h + 0023560 1 ; E N D L O O P ; \r 0023600 w o r d C o u n t _ w 0023620 o r d C o u n t + 1 ; \r 0023640 E N D L O O P ; \r 0023660 E N D ; - - o f A n a 0023700 l y z e M e m o r y \r \r S u 0023720 p p r e s s D e f a u l t W o r 0023740 d s : P R O C E D U R E [ m 0023760 e m : M B M e m o r y P t r , 0024000 d e f a u l t : B O O L E A 0024020 N ] = \r B E G I N 376 001 0024040 \0 320 253 \r p W o r d : L 0024060 O N G P O I N T E R T O M 0024100 B W o r d P t r _ @ m e m . 0024120 w o r d s ; \r F O R w 0024140 : M B W o r d P t r _ p W 0024160 o r d ^ , p W o r d ^ W H I 0024200 L E w # N I L D O \r 0024220 F O R i : C A R D I 0024240 N A L I N [ 0 . . m e m . w 0024260 i d t h ) D O \r 0024300 I F w . v a l u e [ i ] # 0024320 d e f a u l t T H E N G O 0024340 T O n o t D e f a u l t ; \r 0024360 R E P E A T \r 0024400 n o t D e f a u 0024420 l t = > p W o r d _ @ w 0024440 . n e 376 001 \0 004 214 x t W o r d ; \r 0024460 F I N I S H 0024500 E D = > { t : M B W o r d 0024520 P t r _ w ; p W o r d ^ 0024540 _ w . n e x t W o r d ; m e 0024560 m . z o n e . F R E E [ @ t ] } 0024600 ; \r E N D L O O 0024620 P ; \r E N D L O O P 0024640 ; \r E N D ; \r \r R e 0024660 C a s t : P R O C E D U R E 0024700 [ m e m : M B M e m o r y P t 0024720 r , n e w W o r d W i d t h : 0024740 C A R D I N A L ] = \r 0024760 B E G I N \r - - s t 0025000 e a l s l o w - o r d e r a 0025020 d d r e s s b i t s t o w 0025040 i d e n t h e 376 001 \0 260 020 w o 0025060 r d b y a p o w e r o f 0025100 2 . \r - - p u t s 0025120 a l l o r i g i n a l b i t 0025140 0 ' s t o g e t h e r , t 0025160 h e n a l l b i t 1 ' s , 0025200 t h e n b i t 2 ' s , e 0025220 t c . \r n e w M e m : 0025240 M B M e m o r y _ m e m ^ ; 0025260 \r f a c t o r : C A R 0025300 D I N A L ; \r F O R f 0025320 a c t o r _ 1 , 2 * f a c 0025340 t o r W H I L E f a c t o r 0025360 * m e m . w i d t h < n e w W o 0025400 r d W i d t h D O \r 0025420 E N D L O O P ; \r n e 0025440 w M e m . w i d t h _ 376 001 \0 0025460 016 250 f a c t o r * m e m . w i d 0025500 t h ; \r n e w M e m . w 0025520 o r d s _ N I L ; \r 0025540 c u r M e m _ N I L ; \r 0025560 F O R w : M B W o r d P 0025600 t r _ m e m . w o r d s , 0025620 w . n e x t W o r d W H I L E 0025640 w # N I L D O \r 0025660 n e w W : M B W o r d P t r 0025700 _ F i n d W o r d [ @ n e w M 0025720 e m , w . l o c a t i o n / f 0025740 a c t o r ] ; \r F O 0025760 R i : C A R D I N A L I N 0026000 [ 0 . . m e m . w i d t h ) 0026020 D O \r n e w W . 0026040 v a l u e [ I n l i n e D e f s 0026060 . L 376 001 \0 : 245 o w H a l f [ f a 0026100 c t o r * i + ( w . l o c a t i 0026120 o n M O D f a c t o r ) ] ] 0026140 _ w . v a l u e [ i ] ; \r 0026160 E N D L O O P ; \r 0026200 E N D L O O P ; \r 0026220 F r e e M B M e m o r y W 0026240 o r d s [ m e m ] ; \r F 0026260 r e e M B M e m o r y S y m b o 0026300 l s [ @ n e w M e m ] ; \r 0026320 m e m ^ _ n e w M e m ; \r 0026340 E N D ; \r \r P e r m 0026360 u t e A d d r e s s : P R O C 0026400 E D U R E [ m e m : M B M e 0026420 m o r y P t r , p : P e r m 0026440 u t a t i o n P t r ] = \r 0026460 B E G I N 376 001 \0 351 9 \r 0026500 n e w M e m : M B M e m o r 0026520 y _ m e m ^ ; \r n e 0026540 w M e m . w o r d s _ N I L 0026560 ; \r c u r M e m _ N 0026600 I L ; \r F O R w : M 0026620 B W o r d P t r _ m e m . w 0026640 o r d s , w . n e x t W o r d 0026660 W H I L E w # N I L D O \r 0026700 l o c : L O N G 0026720 C A R D I N A L _ 0 ; \r 0026740 n e w W : M B W o r d 0026760 P t r ; \r F O R i 0027000 : C A R D I N A L D E C R E 0027020 A S I N G I N [ 0 . . p . l 0027040 e n g t h ) D O \r 0027060 W I T H p . s e q 376 001 \0 V 0027100 \f [ i ] S E L E C T F R O M 0027120 \r c o n s t 0027140 a n t F a l s e = > l o c 0027160 _ 2 * l o c + ( I F i n v e 0027200 r t T H E N 1 E L S E 0 0027220 ) ; \r a d d 0027240 r B i t = > l o c _ 2 * 0027260 l o c + ( I F I n l i n e D e 0027300 f s . B I T X O R [ i n v e r t 0027320 , w . v a l u e [ i n d e x ] 0027340 ] T H E N 1 E L S E 0 ) 0027360 ; \r E N D C 0027400 A S E ; \r E N D 0027420 L O O P ; \r n e w W 0027440 _ F i n d W o r d [ @ n e w 0027460 M e m , l o c ] ; \r 0027500 376 001 \0 275 _ F O R i : C A R 0027520 D I N A L I N [ 0 . . m e m 0027540 . w i d t h ) D O \r 0027560 n e w W . v a l u e [ i ] 0027600 _ w . v a l u e [ i ] ; \r 0027620 E N D L O O P ; \r 0027640 E N D L O O P ; \r 0027660 F r e e M B M e m o r y W 0027700 o r d s [ m e m ] ; \r F 0027720 r e e M B M e m o r y S y m b o 0027740 l s [ @ n e w M e m ] ; \r 0027760 m e m ^ _ n e w M e m ; \r 0030000 E N D ; \r \r P e r m 0030020 u t e D a t a : P R O C E D U 0030040 R E [ m e m : M B M e m o r 0030060 y P t r , p : P e r m u t a 0030100 t i o n P t 376 001 \0 p 254 r ] = \r 0030120 B E G I N \r n e 0030140 w M e m : M B M e m o r y _ 0030160 m e m ^ ; \r n e w M e 0030200 m . w i d t h _ p . l e n g 0030220 t h ; \r n e w M e m . w 0030240 o r d s _ N I L ; \r 0030260 c u r M e m _ N I L ; \r 0030300 F O R w : M B W o r d P 0030320 t r _ m e m . w o r d s , 0030340 w . n e x t W o r d W H I L E 0030360 w # N I L D O \r 0030400 n e w W : M B W o r d P t r 0030420 _ F i n d W o r d [ @ n e w M 0030440 e m , w . l o c a t i o n ] ; 0030460 \r F O R i : C A 0030500 R D I N A L I N [ 376 001 \0 l 300 0030520 0 . . p . l e n g t h ) D O \r 0030540 W I T H p . s 0030560 e q [ i ] S E L E C T F R O 0030600 M \r c o n s 0030620 t a n t F a l s e = > n e w 0030640 W . v a l u e [ i ] _ i n v 0030660 e r t ; \r a 0030700 d d r B i t = > n e w W . v 0030720 a l u e [ i ] _ I n l i n e 0030740 D e f s . B I T X O R [ i n v e 0030760 r t , w . v a l u e [ i n d e 0031000 x ] ] ; \r E 0031020 N D C A S E ; \r 0031040 E N D L O O P ; \r E 0031060 N D L O O P ; \r F r e e 0031100 M B M e m o r y W o r d s [ m e 0031120 376 001 \0 > 037 m ] ; \r m e m 0031140 ^ _ n e w M e m ; \r 0031160 E N D ; \r \r F i n d M B B i 0031200 t : P R O C E D U R E [ \r 0031220 m b : M B H a n d l e , 0031240 m e m N a m e : S T R I N G 0031260 , w o r d : L O N G C A R 0031300 D I N A L , b i t : C A R D 0031320 I N A L ] \r R E T U R N 0031340 S [ B O O L E A N ] = \r 0031360 B E G I N \r l a s t 0031400 W o r d : M B W o r d P t r ; 0031420 \r I F c u r M B # 0031440 m b O R c u r M e m = N 0031460 I L \r O R N O T 0031500 E q u i v a l e n t L o n g S t 0031520 r i n g s 376 001 \0 315 027 [ m e m N a 0031540 m e , c u r M e m . n a m e ] 0031560 T H E N \r B E G I 0031600 N \r c u r M B _ 0031620 m b ; \r c u r M e m 0031640 _ m b ; \r c u r 0031660 W o r d _ N I L ; \r 0031700 F O R c u r M e m _ m 0031720 b , c u r M e m . n e x t M e 0031740 m U N T I L c u r M e m = 0031760 N I L \r O R 0032000 E q u i v a l e n t L o n g S t 0032020 r i n g s [ m e m N a m e , c 0032040 u r M e m . n a m e ] D O E 0032060 N D L O O P ; \r E N 0032100 D ; \r I F c u r W o r 0032120 d = N I L O R 376 001 \0 177 256 0032140 w o r d < c u r W o r d . l 0032160 o c a t i o n T H E N c u r 0032200 W o r d _ c u r M e m . w o 0032220 r d s ; \r l a s t W o r 0032240 d _ c u r W o r d ; \r 0032260 W H I L E c u r W o r d # 0032300 N I L A N D c u r W o r d 0032320 . l o c a t i o n < w o r d 0032340 D O \r l a s t W o 0032360 r d _ c u r W o r d ; c u 0032400 r W o r d _ c u r W o r d . 0032420 n e x t W o r d ; E N D L O O 0032440 P ; \r I F w o r d = 0032460 c u r W o r d . l o c a t i o 0032500 n T H E N R E T U R N [ c u 0032520 r W o r d . v a l u e [ b i t 376 0032540 001 \0 1 223 ] ] \r E L S E 0032560 { c u r W o r d _ l a s t W 0032600 o r d - - f o r n e x t 0032620 s e a r c h - - ; R E T U 0032640 R N [ F A L S E ] } ; \r 0032660 E N D ; - - o f F i n d 0032700 M B B i t \r \r E q u i v a l 0032720 e n t L o n g S t r i n g s : 0032740 P R O C E D U R E [ a , b : 0032760 L O N G S T R I N G ] R E 0033000 T U R N S [ B O O L E A N ] 0033020 = \r B E G I N \r 0033040 I F a . l e n g t h # b . 0033060 l e n g t h T H E N R E T U 0033100 R N [ F A L S E ] ; \r F 0033120 O R i : C A R D I N A L I 0033140 N [ 0 376 \0 254 g s . . a . l e n 0033160 g t h ) D O \r I F 0033200 S t r i n g D e f s . U p p e 0033220 r C a s e [ a [ i ] ] # S t 0033240 r i n g D e f s . U p p e r C a 0033260 s e [ b [ i ] ] T H E N \r 0033300 R E T U R N [ F A L 0033320 S E ] ; \r E N D L O 0033340 O P ; \r R E T U R N [ T 0033360 R U E ] ; \r E N D ; \r \r 0033400 E N D . - - o f M B I 0033420 m p l \r \r 377 \0 \0 r o m i m p l . 0033440 m e s a \0 373 230 % u 030 \0 \0 376 001 \0 031 0033460 256 - - R O M I m p l . m e s a 0033500 \r - - a p r o g r a m t o 0033520 r u n w i t h i n C h i p 0033540 m o n k \r \r - - l a s t m o 0033560 d i f i e d b y E . M c C 0033600 r e i g h t , N o v e m b e r 0033620 2 0 , 1 9 8 1 1 : 0 0 0033640 P M \r - - w r i t t e n b y 0033660 E . M c C r e i g h t , A 0033700 u g u s t 7 , 1 9 8 1 3 0033720 : 5 2 P M \r \r D I R E C T O R 0033740 Y \r C h i p U s e r I n t , 0033760 \r M B , \r p p d d e f s 0034000 , \r p p d e f s , \r R o 0034020 m M a k e r D e f s , \r S e 0034040 g m e n t D e f s , \r S t r 0034060 e 376 001 \0 327 Y a m D e f s , \r 0034100 S t r i n g D e f s ; \r \r R o m 0034120 I m p l : P R O G R A M \r 0034140 I M P O R T S \r C h i p 0034160 U s e r I n t , M B , p p d 0034200 e f s , R o m M a k e r D e f 0034220 s , \r S e g m e n t D e 0034240 f s , S t r e a m D e f s \r 0034260 E X P O R T S R o m M a k e 0034300 r D e f s = \r B E G I N 0034320 O P E N C h i p U s e r I n t 0034340 , p p d d e f s , p p d e f 0034360 s , R o m M a k e r D e f s ; 0034400 \r \r C a n t B u i l d R o m 0034420 : P R O C E D U R E [ w h y , 0034440 e x p l a n a t i o n : S T 0034460 R I N G _ 376 001 \0 262 212 N I L ] 0034500 = \r { E x p l a i n [ 0034520 w h a t : " C a n ' t b u i 0034540 l d R o m [ C o n f i r m ] 0034560 " , w h y : w h y , \r 0034600 e x p l a n a t i o n : 0034620 e x p l a n a t i o n ] } ; \r \r 0034640 B u i l d R o m : P U B L 0034660 I C P R O C E D U R E [ ] = 0034700 \r B E G I N \r r 0034720 o m D e c o d e r , r o m D a 0034740 t a : D C e l l P r ; \r \r 0034760 r o m D e c o d e r T o p L 0035000 e f t C o r n e r , r o m D e 0035020 c o d e r L e f t M i d , \r 0035040 r o m D e c o d e r B o 0035060 t t o m L e f t C o r 376 001 \0 b 212 0035100 n e r : C e l l ; \r r 0035120 o m D e c o d e r T o p , r o 0035140 m D e c o d e r T o p M i d : 0035160 C e l l ; \r r o m D e c 0035200 o d e r M i d V , r o m D e c 0035220 o d e r M i d H , r o m D e c 0035240 o d e r M i d V H : C e l l ; 0035260 \r r o m D e c o d e r B 0035300 o t t o m , r o m D e c o d e 0035320 r B o t t o m M i d : C e l l 0035340 ; \r r o m D e c o d e r 0035360 D a t a T o p , r o m D e c o 0035400 d e r D a t a , r o m D e c o 0035420 d e r D a t a M i d , \r 0035440 r o m D e c o d e r D a t a 0035460 B o t t o m : C e l l ; \r \r 0035500 376 001 \0 022 3 r o m D a t a T 0035520 o p M i d , r o m D a t a B o 0035540 t t o m M i d , r o m O u t M 0035560 u x M i d : C e l l ; \r 0035600 r o m D a t a M i d V , r o 0035620 m D a t a M i d H , r o m D a 0035640 t a M i d V H : C e l l ; \r 0035660 r o m D a t a T o p R i g 0035700 h t C o r n e r , r o m D a t 0035720 a R i g h t , r o m D a t a R 0035740 i g h t M i d , \r r 0035760 o m D a t a B o t t o m R i g h 0036000 t C o r n e r : C e l l ; \r \r 0036020 r o m D e c o d e r L e 0036040 f t , r o m D a t a T o p , 0036060 r o m D a t a B o t t o m , r 0036100 o m O u t 376 001 \0 L O M u x : D 0036120 C e l l ; \r - - c o l 0036140 u m n : F A L S E = > e v 0036160 e n c o l u m n , T R U E 0036200 = > o d d c o l u m n \r \r 0036220 d e c o d e C e l l , d 0036240 a t a C e l l : C e l l ; 0036260 - - s a m p l e s f o r m 0036300 e a s u r e m e n t s \r \r \r 0036320 F i n d R o m C e l l s : 0036340 P R O C E D U R E [ c e l l F 0036360 a m i l y : S T R I N G ] = 0036400 \r B E G I N \r 0036420 r o m D e c o d e r _ 0036440 F i n d D C e l l P r [ c e l l 0036460 F a m i l y : c e l l F a m i 0036500 l y , r e q u i r 376 001 \0 L k e 0036520 d : T R U E , \r 0036540 m e m b e r P r e f i x : " 0036560 D e c o d e r " L ] ; \r 0036600 d e c o d e C e l l _ r 0036620 o m D e c o d e r [ T R U E ] [ 0036640 F A L S E ] ; \r \r - 0036660 - M i d V i s a v e r t 0036700 i c a l c o l u m n o f c 0036720 e l l s , M i d H i s a \r 0036740 - - h o r i z o n 0036760 t a l r o w o f c e l l s 0037000 , a n d M i d V H i s t 0037020 h e c e l l t h a t \r 0037040 - - h a p p e n s a t 0037060 t h e i r i n t e r s e c t 0037100 i o n s . \r \r r o 376 0037120 001 \0 316 002 m D e c o d e r M i d H 0037140 _ F i n d C e l l [ \r 0037160 c e l l F a m i l y : 0037200 c e l l F a m i l y , m e m 0037220 b e r : " D e c o d e r M i d 0037240 H " L , h C o m p a t : d e 0037260 c o d e C e l l ] ; \r 0037300 r o m D e c o d e r M i d V 0037320 _ F i n d C e l l [ \r 0037340 c e l l F a m i l y : 0037360 c e l l F a m i l y , m e m b 0037400 e r : " D e c o d e r M i d V 0037420 " L , v C o m p a t : d e c 0037440 o d e C e l l ] ; \r 0037460 r o m D e c o d e r M i d V H 0037500 _ F i n d C e l l [ \r 0037520 376 001 \0 301 246 c e l l F a m 0037540 i l y : c e l l F a m i l y , 0037560 m e m b e r : " D e c o d e 0037600 r M i d V H " L , h C o m p a 0037620 t : r o m D e c o d e r M i d 0037640 V , \r v C o m p 0037660 a t : r o m D e c o d e r M i 0037700 d H , \r r e q u 0037720 i r e d : r o m D e c o d e r 0037740 M i d V # N I L A N D r o m 0037760 D e c o d e r M i d H # N I L ] 0040000 ; \r \r r o m D a t a 0040020 _ F i n d D C e l l P r [ c 0040040 e l l F a m i l y : c e l l F 0040060 a m i l y , r e q u i r e d : 0040100 T R U E , \r m 0040120 e m b e r P r e f 376 001 \0 274 307 i x 0040140 : " D a t a " L ] ; \r 0040160 d a t a C e l l _ r o m 0040200 D a t a [ F A L S E ] [ F A L S 0040220 E ] ; \r C h e c k P 0040240 i t c h C o m p a t a b i l i t 0040260 y [ d e c o d e C e l l , d a 0040300 t a C e l l , v e r t i c a l 0040320 , [ 1 , 2 ] , [ 1 , 1 ] 0040340 ] ; \r r o m D a t a 0040360 M i d H _ F i n d C e l l [ 0040400 \r c e l l F a m 0040420 i l y : c e l l F a m i l y , 0040440 m e m b e r : " D a t a M i 0040460 d H " L , h C o m p a t : d 0040500 a t a C e l l , \r 0040520 v C o m p a t : r o m D 376 001 0040540 \0 020 4 e c o d e r M i d H , \r 0040560 r e q u i r e d : 0040600 r o m D e c o d e r M i d H # 0040620 N I L ] ; \r r o m D 0040640 a t a M i d V _ F i n d C e 0040660 l l [ \r c e l l 0040700 F a m i l y : c e l l F a m i 0040720 l y , m e m b e r : " D a t 0040740 a M i d V " L , v C o m p a t 0040760 : d a t a C e l l ] ; \r 0041000 r o m D a t a M i d V H 0041020 _ F i n d C e l l [ \r 0041040 c e l l F a m i l y : 0041060 c e l l F a m i l y , m e m b 0041100 e r : " D a t a M i d V H " L 0041120 , h C o m p a t : r o m D a 0041140 t a M 376 001 \0 354 265 i d V , \r 0041160 v C o m p a t : r o 0041200 m D a t a M i d H , \r 0041220 r e q u i r e d : r o m 0041240 D a t a M i d V # N I L A N D 0041260 r o m D a t a M i d H # N I L 0041300 ] ; \r \r r o m D e c 0041320 o d e r L e f t _ F i n d D 0041340 C e l l [ \r c e 0041360 l l F a m i l y : c e l l F a 0041400 m i l y , m e m b e r P r e f 0041420 i x : " D e c o d e r L e f t 0041440 " L , v C o m p a t : d e c 0041460 o d e C e l l ] ; \r 0041500 r o m D e c o d e r L e f t M i 0041520 d _ F i n d C e l l [ \r 0041540 c e 376 001 \0 021 361 l l F 0041560 a m i l y : c e l l F a m i l 0041600 y , m e m b e r : " D e c o 0041620 d e r L e f t M i d " L , v C 0041640 o m p a t : r o m D e c o d e 0041660 r M i d H , \r r 0041700 e q u i r e d : r o m D e c o 0041720 d e r M i d H # N I L ] ; \r 0041740 r o m D e c o d e r T o 0041760 p L e f t C o r n e r _ F i 0042000 n d C e l l [ \r 0042020 c e l l F a m i l y : c e l l 0042040 F a m i l y , m e m b e r : 0042060 " D e c o d e r T o p L e f t C 0042100 o r n e r " L ] ; \r 0042120 r o m D e c o d e r B o t t o m 0042140 L e f t C o r n e r _ 376 001 \0 0042160 364 . F i n d C e l l [ \r 0042200 c e l l F a m i l y : 0042220 c e l l F a m i l y , m e m b 0042240 e r : " D e c o d e r B o t t 0042260 o m L e f t C o r n e r " L ] ; 0042300 \r \r r o m D e c o d 0042320 e r T o p _ F i n d C e l l 0042340 [ \r c e l l F a 0042360 m i l y : c e l l F a m i l y 0042400 , m e m b e r : " D e c o d 0042420 e r T o p " L , h C o m p a t 0042440 : d e c o d e C e l l ] ; \r 0042460 r o m D e c o d e r T 0042500 o p M i d _ F i n d C e l l 0042520 [ \r c e l l F a 0042540 m i l y : c e l l F a m i l y 0042560 , 376 001 \0 256 216 m e m b e r : " 0042600 D e c o d e r T o p M i d " L , 0042620 h C o m p a t : r o m D e c 0042640 o d e r M i d V , \r 0042660 r e q u i r e d : r o m D 0042700 e c o d e r M i d V # N I L ] ; 0042720 \r r o m D e c o d e 0042740 r B o t t o m _ F i n d C e 0042760 l l [ \r c e l l 0043000 F a m i l y : c e l l F a m i 0043020 l y , m e m b e r : " D e c 0043040 o d e r B o t t o m " L , h C 0043060 o m p a t : d e c o d e C e l 0043100 l ] ; \r r o m D e c 0043120 o d e r B o t t o m M i d _ 0043140 F i n d C e l l [ \r 0043160 c e l l F 376 001 \0 B + a m i l 0043200 y : c e l l F a m i l y , m 0043220 e m b e r : " D e c o d e r B 0043240 o t t o m M i d " L , h C o m 0043260 p a t : r o m D e c o d e r M 0043300 i d V , \r r e q 0043320 u i r e d : r o m D e c o d e 0043340 r M i d V # N I L ] ; \r \r 0043360 r o m D e c o d e r D a t 0043400 a _ F i n d C e l l [ \r 0043420 c e l l F a m i l y 0043440 : c e l l F a m i l y , m e 0043460 m b e r : " D e c o d e r D a 0043500 t a " L , v C o m p a t : d 0043520 a t a C e l l ] ; \r 0043540 r o m D e c o d e r D a t a T o 0043560 p _ F i n d C e l l 376 001 \0 250 0043600 001 [ \r c e l l F 0043620 a m i l y : c e l l F a m i l 0043640 y , m e m b e r : " D e c o 0043660 d e r D a t a T o p " L , h C 0043700 o m p a t : r o m D e c o d e 0043720 r D a t a ] ; \r r o 0043740 m D e c o d e r D a t a M i d 0043760 _ F i n d C e l l [ \r 0044000 c e l l F a m i l y : 0044020 c e l l F a m i l y , m e m b 0044040 e r : " D e c o d e r D a t a 0044060 M i d " L , h C o m p a t : 0044100 r o m D e c o d e r D a t a , \r 0044120 v C o m p a t : 0044140 r o m D e c o d e r M i d H , 0044160 \r r e q u i r e 0044200 d 376 001 \0 323 \ : r o m D e c o d 0044220 e r M i d H # N I L ] ; \r 0044240 r o m D e c o d e r D a t 0044260 a B o t t o m _ F i n d C e 0044300 l l [ \r c e l l 0044320 F a m i l y : c e l l F a m i 0044340 l y , m e m b e r : " D e c 0044360 o d e r D a t a B o t t o m " L 0044400 , \r h C o m p a 0044420 t : r o m D e c o d e r D a t 0044440 a ] ; \r \r r o m D a 0044460 t a T o p _ F i n d D C e l 0044500 l [ \r c e l l F 0044520 a m i l y : c e l l F a m i l 0044540 y , m e m b e r P r e f i x : 0044560 " D a t a T o p " L , h C o 0044600 m p a t : 376 001 \0 5 : d a t a C 0044620 e l l ] ; \r r o m D 0044640 a t a T o p M i d _ F i n d 0044660 C e l l [ \r c e 0044700 l l F a m i l y : c e l l F a 0044720 m i l y , m e m b e r : " D 0044740 a t a T o p M i d " L , h C o 0044760 m p a t : r o m D a t a M i d 0045000 V , \r r e q u i 0045020 r e d : r o m D a t a M i d V 0045040 # N I L ] ; \r r o m 0045060 D a t a B o t t o m _ F i n 0045100 d D C e l l [ \r 0045120 c e l l F a m i l y : c e l l 0045140 F a m i l y , m e m b e r P r 0045160 e f i x : " D a t a B o t t o 0045200 m " L , h C o m p a 376 001 \0 361 305 0045220 t : d a t a C e l l ] ; \r 0045240 r o m D a t a B o t t o 0045260 m M i d _ F i n d C e l l [ 0045300 \r c e l l F a m 0045320 i l y : c e l l F a m i l y , 0045340 m e m b e r : " D a t a B o 0045360 t t o m M i d " L , h C o m p 0045400 a t : r o m D a t a M i d V , 0045420 \r r e q u i r e 0045440 d : r o m D a t a M i d V # N 0045460 I L ] ; \r \r r o m O 0045500 u t M u x _ F i n d D C e l 0045520 l [ c e l l F a m i l y : c e 0045540 l l F a m i l y , m e m b e r 0045560 P r e f i x : " O u t M u x " 0045600 L ] ; \r C h e c k P 0045620 376 001 \0 { 327 i t c h C o m p a t a 0045640 b i l i t y [ d a t a C e l l , 0045660 r o m O u t M u x [ F A L S E 0045700 ] , h o r i z o n t a l , [ 0045720 2 , 1 ] , [ 1 , 1 ] ] ; \r 0045740 r o m O u t M u x M 0045760 i d _ F i n d C e l l [ \r 0046000 c e l l F a m i l 0046020 y : c e l l F a m i l y , m 0046040 e m b e r : " O u t M u x M i 0046060 d " L , h C o m p a t : r o 0046100 m D a t a M i d V , \r 0046120 r e q u i r e d : r o m 0046140 O u t M u x [ F A L S E ] # N I 0046160 L A N D r o m D a t a M i d 0046200 V # N I L ] ; \r \r r 0046220 o m D a t 376 001 \0 ; 361 a T o p R i 0046240 g h t C o r n e r _ F i n d 0046260 C e l l [ \r c e 0046300 l l F a m i l y : c e l l F a 0046320 m i l y , m e m b e r : " D 0046340 a t a T o p R i g h t C o r n e 0046360 r " L ] ; \r r o m D 0046400 a t a R i g h t _ F i n d C 0046420 e l l [ \r c e l 0046440 l F a m i l y : c e l l F a m 0046460 i l y , m e m b e r : " D a 0046500 t a R i g h t " L , v C o m p 0046520 a t : d a t a C e l l ] ; \r 0046540 r o m D a t a R i g h 0046560 t M i d _ F i n d C e l l [ 0046600 \r c e l l F a m 0046620 i l y : c e l l F 376 001 \0 } Y a 0046640 m i l y , m e m b e r : " D 0046660 a t a R i g h t M i d " L , v 0046700 C o m p a t : r o m D a t a M 0046720 i d H , \r r e q 0046740 u i r e d : r o m D a t a M i 0046760 d H # N I L ] ; \r r 0047000 o m D a t a B o t t o m R i g h 0047020 t C o r n e r _ F i n d C e 0047040 l l [ \r c e l l 0047060 F a m i l y : c e l l F a m i 0047100 l y , m e m b e r : " D a t 0047120 a B o t t o m R i g h t C o r n 0047140 e r " L ] ; \r E N D 0047160 ; - - o f F i n d R o m C 0047200 e l l s \r \r b o d y H e 0047220 i g h t , d e c o d e r D a 376 0047240 001 \0 267 032 t a X , d a t a X , 0047260 d a t a R i g h t X : l o c N 0047300 u m ; \r d e c o d e r W 0047320 i d t h , w o r d s P e r D a 0047340 t a R o w , w o r d C o u n t 0047360 , w o r d W i d t h , \r 0047400 l o g W o r d s P e r D a 0047420 t a R o w : I N T E G E R ; \r 0047440 d a t a M i d H G a p , 0047460 d e c o d e M i d V G a p , 0047500 d a t a M i d V G a p : l o c 0047520 N u m _ 0 ; \r i n v 0047540 e r t D a t a : B O O L E A N 0047560 ; \r \r f i l e N a m e , 0047600 m e m N a m e , c e l l F a 0047620 m i l y , r o m N a m e : S 0047640 T R I N 376 001 \0 211 k G _ N I L 0047660 ; \r s : S t r e a m D 0047700 e f s . S t r e a m H a n d l e 0047720 _ N I L ; \r m b : 0047740 M B . M B H a n d l e _ N I 0047760 L ; \r m b M e m : M B 0050000 . M B M e m o r y P t r _ N 0050020 I L ; \r \r B E G I N 0050040 E N A B L E P u n t = > 0050060 G O T O E x i t R o m ; - - 0050100 f o r E X I T S \r 0050120 f i l e N a m e _ R e q u 0050140 e s t S t r i n g [ " " L , " 0050160 D a t a f i l e : " L , " . 0050200 m b f o r m a t " L ] ; \r 0050220 f i l e N a m e _ F 0050240 i x E x t e n s i 376 001 \0 H \0 o n 0050260 [ f i l e N a m e , " . m b " 0050300 L ] ; \r s _ S t 0050320 r e a m D e f s . N e w W o r d 0050340 S t r e a m [ \r 0050360 f i l e N a m e , S t r e a m 0050400 D e f s . R e a d ! \r 0050420 S e g m e n t D e f s . 0050440 F i l e N a m e E r r o r = > 0050460 { \r C a n 0050500 t B u i l d R o m [ " C a n ' t 0050520 f i n d . m b f i l e " L 0050540 , n a m e ] ; G O T O E x 0050560 i t R o m } ] ; \r m 0050600 b _ M B . R e a d M B [ \r 0050620 s , u z ! \r 0050640 M B . I l l e 376 001 0050660 \0 370 006 g a l M B F o r m a t = 0050700 > \r { C a n 0050720 t B u i l d R o m [ " I s n ' t 0050740 . m b f o r m a t " L , f 0050760 i l e N a m e ] ; G O T O E 0051000 x i t R o m } ] ; \r \r 0051020 m e m N a m e _ R e q u e 0051040 s t S t r i n g [ , , " M e m 0051060 o r y n a m e i n . m b 0051100 f i l e : " L ] ; \r 0051120 m b M e m _ M B . F i n d M 0051140 B M e m o r y [ m b , m e m N 0051160 a m e ] ; \r I F m 0051200 b M e m = N I L T H E N 0051220 { C a n t B u i l d R o m [ " M 0051240 e m o r y i s n ' t i n . 0051260 m b 376 001 \0 230 021 f i l e " L , 0051300 m e m N a m e ] ; G O T O E 0051320 x i t R o m } ; \r \r 0051340 c e l l F a m i l y _ R e q 0051360 u e s t S t r i n g [ , , " C 0051400 e l l f a m i l y : " L ] ; \r 0051420 \r F i n d R o m C e 0051440 l l s [ c e l l F a m i l y ] ; 0051460 \r \r w o r d s P e r 0051500 D a t a R o w _ 1 ; l o g 0051520 W o r d s P e r D a t a R o w 0051540 _ 0 ; \r I F r o 0051560 m O u t M u x [ F A L S E ] # N 0051600 I L T H E N \r 0051620 B E G I N \r t : 0051640 I N T E G E R _ R e q u e 0051660 s t I n t e g e 376 001 \0 262 006 r [ " 0051700 W o r d s p e r r o w : " L 0051720 , " ( p o w e r o f 2 ) " 0051740 L ] ; \r F O R 0051760 w o r d s P e r D a t a R o w 0052000 _ 1 , 2 * w o r d s P e r D 0052020 a t a R o w W H I L E w o r 0052040 d s P e r D a t a R o w < t D 0052060 O \r l o g W 0052100 o r d s P e r D a t a R o w _ 0052120 l o g W o r d s P e r D a t a 0052140 R o w + 1 ; \r 0052160 E N D L O O P ; \r 0052200 E N D ; \r \r M B 0052220 . R e C a s t [ m e m : m b M 0052240 e m , n e w W o r d W i d t h 0052260 : m b M e m . w i d t h 376 001 \0 0052300 ( 241 * w o r d s P e r D a t a R 0052320 o w ] ; \r i n v e r 0052340 t D a t a _ H e S a y s Y e 0052360 s [ " S h a l l I i n v e r 0052400 t t h e d a t a ? " L ] ; \r 0052420 I F H e S a y s Y 0052440 e s [ " I s a m i s s i n g 0052460 d a t a c e l l e q u i v 0052500 a l e n t t o e i t h e r " 0052520 L , \r " r e a l 0052540 d a t a c e l l ? " L ] T 0052560 H E N \r M B . S 0052600 u p p r e s s D e f a u l t W o 0052620 r d s [ m e m : m b M e m , \r 0052640 d e f a u l t : 0052660 H e S a y s Y e s [ s 1 : " W 0052700 h i 376 001 \0 324 333 c h o n e ? " L 0052720 , s 3 : " ( 0 o r 1 ) " 0052740 L ] # i n v e r t D a t a ] ; \r 0052760 [ d e c o d e r W i 0053000 d t h , w o r d C o u n t , 0053020 w o r d W i d t h ] _ M B . 0053040 A n a l y z e M e m o r y [ m b 0053060 M e m ] ; \r \r d e c 0053100 o d e r W i d t h _ d e c o 0053120 d e r W i d t h + l o g W o r d 0053140 s P e r D a t a R o w ; \r 0053160 w o r d C o u n t _ w 0053200 o r d C o u n t + ( w o r d 0053220 C o u n t M O D 2 ) + 2 * l 0053240 o g W o r d s P e r D a t a R o 0053260 w ; \r \r I F r o m 0053300 D a t a M i d 376 001 \0 u 321 H # N I 0053320 L T H E N \r d 0053340 a t a M i d H G a p _ C e l 0053360 l S i z e [ d a t a C e l l ] . 0053400 y * \r R e q 0053420 u e s t I n t e g e r [ " D a t 0053440 a c e l l s v e r t i c a l 0053460 l y p e r m i d c e l l 0053500 r o w ? " L ] ; \r I 0053520 F r o m D e c o d e r M i d V 0053540 # N I L T H E N \r 0053560 d e c o d e M i d V G a p 0053600 _ C e l l S i z e [ d e c o d 0053620 e C e l l ] . x * \r 0053640 R e q u e s t I n t e g 0053660 e r [ " D e c o d e r c e l l 0053700 s h o r i z o n t a l 376 001 \0 303 0053720 310 l y p e r m i d c e l l 0053740 c o l u m n ? " L ] ; \r 0053760 I F r o m D a t a M i d 0054000 V # N I L T H E N \r 0054020 d a t a M i d V G a p _ 0054040 C e l l S i z e [ d a t a C e 0054060 l l ] . x * \r 0054100 R e q u e s t I n t e g e r [ 0054120 " D a t a c e l l s h o r i 0054140 z o n t a l l y p e r m i d 0054160 c e l l c o l u m n ? " L ] 0054200 ; \r \r b o d y H e i 0054220 g h t _ B l o c k S i z e [ 0054240 c e l l : d e c o d e C e l l 0054260 , r e p : [ x : 1 , y : 0054300 w o r d C o u n t ] , \r 0054320 376 001 \0 372 R m i d C e l 0054340 l : r o m D a t a M i d H , 0054360 m i d G a p : [ d a t a M i d 0054400 V G a p , d a t a M i d H G a 0054420 p ] ] . y ; \r d e c 0054440 o d e r D a t a X _ B l o c 0054460 k S i z e [ c e l l : d e c o 0054500 d e C e l l , r e p : [ x : 0054520 d e c o d e r W i d t h , y 0054540 : 1 ] , \r m i 0054560 d C e l l : r o m D e c o d e 0054600 r M i d V , m i d G a p : [ 0054620 d e c o d e M i d V G a p , d 0054640 a t a M i d H G a p ] ] . x ; \r 0054660 d a t a X _ d e 0054700 c o d e r D a t a X + C e l l S 0054720 i z e [ r o 376 001 \0 245 037 m D e c o 0054740 d e r D a t a ] . x ; \r 0054760 d a t a R i g h t X _ d 0055000 a t a X + B l o c k S i z e [ c 0055020 e l l : d a t a C e l l , r 0055040 e p : [ x : w o r d W i d t 0055060 h , y : 1 ] , \r 0055100 m i d C e l l : r o m D a 0055120 t a M i d V , m i d G a p : 0055140 [ d a t a M i d V G a p , d a 0055160 t a M i d H G a p ] ] . x ; \r \r 0055200 R e p e a t [ \r 0055220 c e l l : r o m D 0055240 e c o d e r L e f t [ F A L S E 0055260 ] , p : [ 0 , 0 ] , c o r 0055300 n e r : t o p R i g h t , \r 0055320 d i r : 376 001 \0 371 034 0055340 d o w n , r e p : w o r d 0055360 C o u n t , \r m 0055400 i d C e l l : r o m D e c o d 0055420 e r L e f t M i d , m i d G a 0055440 p : d a t a M i d H G a p , \r 0055460 a l t C e l l : 0055500 r o m D e c o d e r L e f t [ 0055520 T R U E ] , a l t M o d : 2 0055540 ] ; \r R e p e a t [ 0055560 \r c e l l : r 0055600 o m D e c o d e r T o p L e f t 0055620 C o r n e r , p : [ 0 , 0 ] 0055640 , c o r n e r : b o t t o m 0055660 R i g h t ] ; \r R e 0055700 p e a t [ \r c e 0055720 l l : r o m D e c o d e r B o 0055740 376 001 \0 275 214 t t o m L e f t C o r 0055760 n e r , p : [ 0 , b o d y 0056000 H e i g h t ] , c o r n e r : 0056020 t o p R i g h t ] ; \r \r 0056040 R e p e a t [ \r 0056060 c e l l : r o m D e c o 0056100 d e r T o p , p : [ 0 , 0 ] 0056120 , c o r n e r : b o t t o m 0056140 L e f t , \r r e 0056160 p : d e c o d e r W i d t h , 0056200 \r m i d C e l l 0056220 : r o m D e c o d e r T o p M 0056240 i d , m i d G a p : d e c o 0056260 d e M i d V G a p ] ; \r 0056300 R e p e a t [ \r 0056320 c e l l : r o m D e c o d 0056340 e r B o t 376 001 \0 \r c t o m , p 0056360 : [ 0 , b o d y H e i g h t 0056400 ] , c o r n e r : t o p L e 0056420 f t , \r d i r : 0056440 r i g h t , r e p : d e c 0056460 o d e r W i d t h , \r 0056500 m i d C e l l : r o m D 0056520 e c o d e r B o t t o m M i d , 0056540 m i d G a p : d e c o d e M 0056560 i d V G a p , \r 0056600 n a m e : [ b a s i c N a m e 0056620 : " A d d r " L , x : [ - 0056640 1 , d e c o d e r W i d t h - 0056660 1 ] ] ] ; \r \r R e p 0056700 e a t [ c e l l : r o m D e c 0056720 o d e r D a t a T o p , \r 0056740 p : [ d 376 001 \0 205 030 e 0056760 c o d e r D a t a X , 0 ] , 0057000 c o r n e r : b o t t o m L e 0057020 f t ] ; \r R e p e a 0057040 t [ \r c e l l : 0057060 r o m D e c o d e r D a t a , 0057100 p : [ d e c o d e r D a t a 0057120 X , 0 ] , d i r : d o w n 0057140 , r e p : w o r d C o u n t 0057160 / 2 , \r m i d C 0057200 e l l : r o m D e c o d e r D 0057220 a t a M i d , m i d G a p : 0057240 d a t a M i d H G a p ] ; \r 0057260 R e p e a t [ c e l l : 0057300 r o m D e c o d e r D a t a B 0057320 o t t o m , p : [ d e c o d 0057340 e r D a t a X , b o d y H e 376 0057360 001 \0 037 037 i g h t ] ] ; \r \r 0057400 R e p e a t [ c e l l : 0057420 r o m D a t a T o p [ F A L S E 0057440 ] , \r p : [ d 0057460 a t a X , 0 ] , c o r n e r 0057500 : b o t t o m L e f t , d i 0057520 r : r i g h t , r e p : w 0057540 o r d W i d t h , \r 0057560 m i d C e l l : r o m D a 0057600 t a T o p M i d , m i d G a p 0057620 : d a t a M i d V G a p , \r 0057640 a l t C e l l : 0057660 r o m D a t a T o p [ T R U E ] 0057700 , a l t M o d : 2 ] ; \r 0057720 R e p e a t [ c e l l : 0057740 r o m D a t a T o p R i g h t 0057760 C o r n 376 001 \0 > W e r , \r 0060000 p : [ d a t a R i g 0060020 h t X , 0 ] , c o r n e r : 0060040 b o t t o m L e f t ] ; \r 0060060 R e p e a t [ c e l l : 0060100 r o m D a t a R i g h t , p 0060120 : [ d a t a R i g h t X , 0 0060140 ] , d i r : d o w n , r e 0060160 p : w o r d C o u n t / 2 , \r 0060200 m i d C e l l : 0060220 r o m D a t a R i g h t M i d 0060240 , m i d G a p : d a t a M i 0060260 d H G a p ] ; \r R e 0060300 p e a t [ c e l l : r o m D a 0060320 t a B o t t o m R i g h t C o r 0060340 n e r , p : [ d a t a R i g 0060360 h t X , b o d y 376 001 \0 Q 255 H e 0060400 i g h t ] ] ; \r \r I 0060420 F w o r d s P e r D a t a R o 0060440 w = 1 T H E N \r 0060460 R e p e a t [ c e l l : r o 0060500 m D a t a B o t t o m [ F A L S 0060520 E ] , \r p : 0060540 [ d a t a X , b o d y H e i 0060560 g h t ] , d i r : r i g h t 0060600 , r e p : w o r d W i d t h 0060620 , \r m i d C 0060640 e l l : r o m D a t a B o t t 0060660 o m M i d , m i d G a p : d 0060700 a t a M i d V G a p , \r 0060720 a l t C e l l : r 0060740 o m D a t a B o t t o m [ T R U 0060760 E ] , a l t M o d : 2 , 376 001 0061000 \0 357 314 \r n a 0061020 m e : [ b a s i c N a m e : 0061040 " D a t a " L , x : [ 1 , 0061060 0 ] ] ] \r E L S E \r 0061100 R e p e a t [ c 0061120 e l l : r o m O u t M u x [ F 0061140 A L S E ] , \r 0061160 p : [ d a t a X , b o d y 0061200 H e i g h t ] , d i r : r i 0061220 g h t , r e p : w o r d W i 0061240 d t h / 2 , \r 0061260 m i d C e l l : r o m O u t 0061300 M u x M i d , m i d G a p : 0061320 d a t a M i d V G a p , \r 0061340 a l t C e l l : 0061360 r o m O u t M u x [ T R U E ] , 0061400 a l 376 001 \0 306 x t M o d : w o 0061420 r d s P e r D a t a R o w / 2 , 0061440 \r n a m e : 0061460 [ b a s i c N a m e : " D a 0061500 t a " L , x : [ 2 , 0 ] ] 0061520 ] ; \r \r M a k e D e 0061540 c o d e r B l o c k [ c e l l s 0061560 : r o m D e c o d e r , p : 0061600 [ 0 , 0 ] , r e p : [ d 0061620 e c o d e r W i d t h , w o r 0061640 d C o u n t ] , \r 0061660 p a i r s T o D a t a A r r a 0061700 y : l o g W o r d s P e r D a 0061720 t a R o w , m e m : m b M e 0061740 m , \r m i d C e 0061760 l l S i z e : [ x : C e l l 0062000 S i z e [ r o m 376 001 \0 203 243 D e c 0062020 o d e r M i d V ] . x , y : 0062040 C e l l S i z e [ r o m D e c o 0062060 d e r M i d H ] . y ] , \r 0062100 m i d G a p : [ d e 0062120 c o d e M i d V G a p , d a t 0062140 a M i d H G a p ] , \r 0062160 i n v e r t A d d r e s s 0062200 : H e S a y s Y e s [ " S h a 0062220 l l I i n v e r t a d d r 0062240 e s s i n p u t s ? " L ] ] ; 0062260 \r \r M a k e M i d G 0062300 r i d [ p : [ 0 , 0 ] , c e 0062320 l l : d e c o d e C e l l , 0062340 r e p : [ d e c o d e r W i d 0062360 t h , w o r d C o u n t ] , \r 0062400 m i d V C 376 001 \0 0062420 x V e l l : r o m D e c o d e 0062440 r M i d V , m i d H C e l l : 0062460 r o m D e c o d e r M i d H , 0062500 m i d V H C e l l : r o m D 0062520 e c o d e r M i d V H , \r 0062540 m i d G a p : [ d e 0062560 c o d e M i d V G a p , d a t 0062600 a M i d H G a p ] ] ; \r \r 0062620 M a k e D a t a B l o c k 0062640 [ c e l l s : r o m D a t a , 0062660 p : [ d a t a X , 0 ] , 0062700 r e p : [ w o r d W i d t h , 0062720 w o r d C o u n t / 2 ] , \r 0062740 d e c o d e P a i 0062760 r s : l o g W o r d s P e r D 0063000 a t a R o w , m e m : m b M 0063020 e m 376 001 \0 243 246 , \r 0063040 m i d C e l l S i z e : [ x 0063060 : C e l l S i z e [ r o m D a 0063100 t a M i d V ] . x , y : C e 0063120 l l S i z e [ r o m D a t a M i 0063140 d H ] . y ] , \r 0063160 m i d G a p : [ d a t a M i d 0063200 V G a p , d a t a M i d H G a 0063220 p ] , \r i n v e 0063240 r t D a t a : i n v e r t D a 0063260 t a , \r i n v e 0063300 r t A d d r e s s : H e S a y 0063320 s Y e s [ " E x t r a i n v e 0063340 r s i o n f o r a d d r e s 0063360 s d e c o d e " L , \r 0063400 " i n d a t a a 0063420 r r a y ? " L 376 001 \0 254 370 ] ] ; \r 0063440 \r M a k e M i d G r 0063460 i d [ p : [ d a t a X , 0 ] , 0063500 c e l l : d a t a C e l l , 0063520 r e p : [ w o r d W i d t h 0063540 , w o r d C o u n t / 2 ] , \r 0063560 m i d V C e l l 0063600 : r o m D a t a M i d V , m 0063620 i d H C e l l : r o m D a t a 0063640 M i d H , m i d V H C e l l : 0063660 r o m D a t a M i d V H , \r 0063700 m i d G a p : [ 0063720 d a t a M i d V G a p , d a t 0063740 a M i d H G a p ] ] ; \r \r 0063760 r o m N a m e _ R e q 0064000 u e s t S t r i n g [ , , " N 0064020 a m e o f c o m p l 376 001 \0 220 0064040 247 e t e d R o m c e l l : " 0064060 L ] ; \r I F r o m 0064100 N a m e # N I L A N D r o m 0064120 N a m e . l e n g t h > 0 T H 0064140 E N \r B E G I N 0064160 \r D r a w C e l 0064200 l [ M a k e N e w C e l l [ r o 0064220 m N a m e , l p p ] . o b ] ; 0064240 \r r o m N a m e 0064260 _ N I L ; - - g a v e 0064300 s t r i n g b o d y t o 0064320 c e l l \r E N D 0064340 \r E L S E A d d T 0064360 o M a s t e r L i s t [ l p p ] 0064400 ; \r l p p _ N I 0064420 L ; - - g a v e a w a y 0064440 l 376 001 \0 G 016 i s t \r \r 0064460 E X I T S E x i t R o m = 0064500 > N U L L ; \r E N 0064520 D ; \r \r f l u s h D e l 0064540 [ l p p ] ; \r I F f i 0064560 l e N a m e # N I L T H E 0064600 N F r e e S t r i n g [ f i l 0064620 e N a m e ] ; \r I F m 0064640 e m N a m e # N I L T H E 0064660 N F r e e S t r i n g [ m e m 0064700 N a m e ] ; \r I F c e 0064720 l l F a m i l y # N I L T 0064740 H E N F r e e S t r i n g [ c 0064760 e l l F a m i l y ] ; \r 0065000 I F r o m N a m e # N I L 0065020 T H E N F r e e S t r i n g 0065040 [ r o m N a 376 001 \0 * { m e ] ; \r 0065060 I F s # N I L T 0065100 H E N s . d e s t r o y [ s ] 0065120 ; \r a n y C h a n g e s 0065140 _ s i n c e I O c h a n g e 0065160 s _ T R U E ; \r E N 0065200 D ; - - o f B u i l d R o 0065220 m \r \f \r M a k e D e c o d e 0065240 r B l o c k : P R O C E D U R 0065260 E [ c e l l s : D C e l l P 0065300 r , p , r e p : P o i n t 0065320 , \r p a i r s T o D a t 0065340 a A r r a y : I N T E G E R , 0065360 m e m : M B . M B M e m o r 0065400 y P t r , \r m i d C e l 0065420 l S i z e : P o i n t _ [ 0065440 0 , 0 ] , m i d G a 376 001 \0 362 321 0065460 p : P o i n t _ [ 0 , 0 ] 0065500 , \r i n v e r t A d d r 0065520 e s s : B O O L E A N _ F 0065540 A L S E ] = \r B E G I 0065560 N - - h i g h - o r d e r 0065600 b i t o n t h e l e f t , 0065620 b i t s p a s s e d s t r 0065640 a i g h t \r - - t 0065660 h r o u g h f o r d a t a 0065700 b l o c k d e c o d i n g o 0065720 n t h e r i g h t . A s 0065740 s u m e s \r - - t 0065760 h a t d a t a b l o c k d 0066000 e c o d i n g h a p p e n s 0066020 i n t h e t o p \r 0066040 - - 2 * p a i r s T o D a t 0066060 376 001 \0 334 D a A r r a y d a t a 0066100 r o w s . \r \r w : M 0066120 B . M B W o r d P t r _ m e 0066140 m . w o r d s ; \r F O R 0066160 i y : I N T E G E R I N 0066200 [ 0 . . 2 * p a i r s T o D a t 0066220 a A r r a y ) D O - - t r 0066240 i v i a l d e c o d e \r 0066260 F O R i x : I N T E G 0066300 E R I N [ 0 . . r e p . x ) 0066320 D O \r r i g h 0066340 t C o l u m n : B O O L E A N 0066360 _ i x = r e p . x - 1 - 0066400 i y / 2 ; \r P l 0066420 a c e C e l l [ p , c e l l s 0066440 [ \r r i g h 0066460 t C o l u 376 001 \0 345 350 m n A N D 0066500 ( ( i y M O D 2 = 0 ) # i 0066520 n v e r t A d d r e s s ) ] \r 0066540 [ r i g h t C 0066560 o l u m n A N D ( ( i y M 0066600 O D 2 # 0 ) # i n v e r t A d 0066620 d r e s s ) ] , \r 0066640 [ i x , i y ] , m i d 0066660 C e l l S i z e , m i d G a p 0066700 ] ; \r E N D L O 0066720 O P ; \r E N D L O O 0066740 P ; \r F O R i y : I 0066760 N T E G E R I N [ 2 * p a i 0067000 r s T o D a t a A r r a y . . r 0067020 e p . y ) D O \r l 0067040 o c : L O N G C A R D I N A 0067060 L _ w . l o c a 376 001 \0 375 365 t 0067100 i o n ; \r F O R i 0067120 x : I N T E G E R I N [ r 0067140 e p . x - p a i r s T o D a t a 0067160 A r r a y . . r e p . x ) D O 0067200 \r P l a c e C e 0067220 l l [ p , c e l l s [ F A L S 0067240 E ] [ F A L S E ] , [ i x , 0067260 i y ] , m i d C e l l S i z e 0067300 , m i d G a p ] ; \r 0067320 E N D L O O P ; \r 0067340 F O R i x : I N T E G E 0067360 R D E C R E A S I N G I N \r 0067400 [ 0 . . r e p . 0067420 x - p a i r s T o D a t a A r r 0067440 a y ) D O \r P 0067460 l a c e C e l l [ p , c e l 376 0067500 001 \0 9 g l s [ ( ( l o c M O D 0067520 2 ) # 0 ) # i n v e r t A d d 0067540 r e s s ] \r 0067560 [ ( ( l o c M O D 2 ) = 0 ) 0067600 # i n v e r t A d d r e s s ] , 0067620 \r [ i x , 0067640 i y ] , m i d C e l l S i z e 0067660 , m i d G a p ] ; \r 0067700 l o c _ l o c / 2 ; \r 0067720 E N D L O O P ; 0067740 \r I F w . n e x t 0067760 W o r d # N I L T H E N 0070000 w _ w . n e x t W o r d ; \r 0070020 E N D L O O P ; \r 0070040 E N D ; \r \r \r M a k e 0070060 D a t a B l o c k : P R O C E 0070100 D U R E 376 001 \0 262 K [ c e l l s 0070120 : D C e l l P r , p , r e 0070140 p : P o i n t , d e c o d e 0070160 P a i r s : I N T E G E R , \r 0070200 m e m : M B . M B M e 0070220 m o r y P t r , \r m i d 0070240 C e l l S i z e : P o i n t 0070260 _ [ 0 , 0 ] , m i d G a p : 0070300 P o i n t _ [ 0 , 0 ] , \r 0070320 i n v e r t A d d r e s 0070340 s , i n v e r t D a t a : B 0070360 O O L E A N _ F A L S E ] 0070400 = \r B E G I N \r 0070420 w 0 : M B . M B W o r d P t r 0070440 ; \r m a s k : I N T E 0070460 G E R _ 1 ; \r F O R 0070500 i y : I N T E 376 001 \0 \ 323 G E 0070520 R I N [ 0 . . d e c o d e P 0070540 a i r s ) D O \r F 0070560 O R i x : I N T E G E R I 0070600 N [ 0 . . r e p . x ) D O \r 0070620 t : B O O L E 0070640 A N _ i x M O D 2 * m a 0070660 s k > = m a s k ; \r 0070700 P l a c e C e l l [ p , 0070720 c e l l s [ t # i n v e r t A 0070740 d d r e s s ] [ t = i n v e r t 0070760 A d d r e s s ] , \r 0071000 [ i x , i y ] , m i 0071020 d C e l l S i z e , m i d G a 0071040 p ] ; \r E N D L 0071060 O O P ; \r m a s k 0071100 _ 2 * m a s k ; \r 376 001 0071120 \0 226 2 E N D L O O P ; \r 0071140 w 0 _ m e m . w o r d s 0071160 ; \r F O R i y : I N 0071200 T E G E R I N [ d e c o d e 0071220 P a i r s . . r e p . y ) D O 0071240 \r w 1 : M B . M B 0071260 W o r d P t r _ I F w 0 . 0071300 n e x t W o r d # N I L T 0071320 H E N w 0 . n e x t W o r d 0071340 E L S E w 0 ; \r F 0071360 O R i x : I N T E G E R I 0071400 N [ 0 . . r e p . x ) D O \r 0071420 P l a c e C e l 0071440 l [ p , c e l l s [ w 0 . v a 0071460 l u e [ i x ] # i n v e r t D a 0071500 t a ] \r [ w 1 . 0071520 v a l 376 \0 214 206 ` u e [ i x ] # i 0071540 n v e r t D a t a ] , [ i x , 0071560 i y ] , m i d C e l l S i z 0071600 e , m i d G a p ] ; \r 0071620 E N D L O O P ; \r 0071640 w 0 _ w 1 . n e x t W 0071660 o r d ; \r E N D L O 0071700 O P ; \r E N D ; \r \r \r 0071720 E N D . - - o f R o m I 0071740 m p l \r 377 \0 \0 d e c o d e r i m 0071760 p l . m e s a \0 373 230 % \ 004 \0 \0 376 0072000 001 \0 K 354 - - D e c o d e r I m 0072020 p l . m e s a \r - - a p r o 0072040 g r a m t o r u n w i t h 0072060 i n C h i p m o n k \r \r - - 0072100 l a s t m o d i f i e d b y 0072120 E . M c C r e i g h t , 0072140 N o v e m b e r 2 0 , 1 9 8 0072160 1 1 1 : 2 6 A M \r - - w 0072200 r i t t e n b y E . M c C 0072220 r e i g h t , A u g u s t 7 0072240 , 1 9 8 1 3 : 5 2 P M \r 0072260 \r D I R E C T O R Y \r C h i 0072300 p U s e r I n t , \r p p d e 0072320 f s , \r R o m M a k e r D e 0072340 f s ; \r \r D e c o d e r I m p l 0072360 : P R O G R A M \r I M P O 0072400 R T S 376 001 \0 021 306 C h i p U s e 0072420 r I n t , p p d e f s , R o 0072440 m M a k e r D e f s \r E X P 0072460 O R T S R o m M a k e r D e f 0072500 s = \r B E G I N O P E N 0072520 C h i p U s e r I n t , p p 0072540 d e f s , R o m M a k e r D e 0072560 f s ; \r \r \r D e c o d e P a 0072600 t t e r n P t r : T Y P E = 0072620 L O N G P O I N T E R T O 0072640 D e c o d e P a t t e r n _ 0072660 \r N I L ; \r D e c o 0072700 d e P a t t e r n : T Y P E 0072720 = R E C O R D [ \r p a 0072740 t t e r n : S E Q U E N C E 0072760 m a x : I N T E G E R O F 0073000 I N T E G E R ] ; 376 001 \0 \0 376 \r \r 0073020 \r B u i l d D e c o d e r : 0073040 P U B L I C P R O C E D U R 0073060 E [ ] = \r B E G I N \r 0073100 d e c o d e r : D C e 0073120 l l P r ; \r \r d e c o d 0073140 e r T o p L e f t C o r n e r , 0073160 d e c o d e r L e f t M i d , 0073200 \r d e c o d e r B o 0073220 t t o m L e f t C o r n e r : 0073240 C e l l ; \r d e c o d e 0073260 r L e f t , d e c o d e r T o 0073300 p , d e c o d e r B o t t o m 0073320 , d e c o d e r R i g h t : 0073340 D C e l l ; \r d e c o d 0073360 e r T o p M i d , d e c o d e 0073400 r B o t t o m M i d : C e 376 001 0073420 \0 } 345 l l ; \r d e c o d 0073440 e r M i d V , d e c o d e r M 0073460 i d H , d e c o d e r M i d V 0073500 H : C e l l ; \r d e c 0073520 o d e r T o p R i g h t C o r n 0073540 e r , d e c o d e r R i g h t 0073560 M i d , \r d e c o d 0073600 e r B o t t o m R i g h t C o r 0073620 n e r : C e l l ; \r \r 0073640 d e c o d e C e l l : C e l l 0073660 ; - - s a m p l e f o r 0073700 m e a s u r e m e n t s \r \r \r 0073720 F i n d D e c o d e r C 0073740 e l l s : P R O C E D U R E 0073760 [ c e l l F a m i l y : S T R 0074000 I N G ] = \r B E G 0074020 I N \r 376 001 \0 260 \v d e 0074040 c o d e r _ F i n d D C e l 0074060 l P r [ c e l l F a m i l y : 0074100 c e l l F a m i l y , r e q u 0074120 i r e d : T R U E , \r 0074140 m e m b e r P r e f i x 0074160 : " D e c o d e " L ] ; \r 0074200 d e c o d e C e l l _ 0074220 d e c o d e r [ T R U E ] [ F 0074240 A L S E ] ; \r \r - - 0074260 M i d V i s a v e r t i 0074300 c a l c o l u m n o f c e 0074320 l l s , M i d H i s a \r 0074340 - - h o r i z o n t 0074360 a l r o w o f c e l l s , 0074400 a n d M i d V H i s t h 0074420 e c e l l t 376 001 \0 ! " h a t 0074440 \r - - h a p p e n 0074460 s a t t h e i r i n t e r 0074500 s e c t i o n s . \r \r 0074520 d e c o d e r M i d H _ F 0074540 i n d C e l l [ \r 0074560 c e l l F a m i l y : c e l 0074600 l F a m i l y , m e m b e r : 0074620 " M i d H " L , h C o m p a 0074640 t : d e c o d e C e l l ] ; \r 0074660 d e c o d e r M i d 0074700 V _ F i n d C e l l [ \r 0074720 c e l l F a m i l y 0074740 : c e l l F a m i l y , m e 0074760 m b e r : " M i d V " L , v 0075000 C o m p a t : d e c o d e C e 0075020 l l ] ; \r d e 376 001 \0 0075040 204 [ c o d e r M i d V H _ F 0075060 i n d C e l l [ \r 0075100 c e l l F a m i l y : c e l 0075120 l F a m i l y , m e m b e r : 0075140 " M i d V H " L , h C o m p 0075160 a t : d e c o d e r M i d V , 0075200 \r v C o m p a t 0075220 : d e c o d e r M i d H , \r 0075240 r e q u i r e d : 0075260 d e c o d e r M i d V # N I L 0075300 A N D d e c o d e r M i d H 0075320 # N I L ] ; \r \r d e 0075340 c o d e r L e f t _ F i n d 0075360 D C e l l [ \r c 0075400 e l l F a m i l y : c e l l F 0075420 a m i l y , m e m b e r P r e 0075440 f i 376 001 \0 274 ' x : " L e f t " 0075460 L , v C o m p a t : d e c o 0075500 d e C e l l ] ; \r d 0075520 e c o d e r L e f t M i d _ 0075540 F i n d C e l l [ \r 0075560 c e l l F a m i l y : c e 0075600 l l F a m i l y , m e m b e r 0075620 : " L e f t M i d " L , v C 0075640 o m p a t : d e c o d e r M i 0075660 d H , \r r e q u 0075700 i r e d : d e c o d e r M i d 0075720 H # N I L ] ; \r d e 0075740 c o d e r T o p L e f t C o r n 0075760 e r _ F i n d C e l l [ \r 0076000 c e l l F a m i l 0076020 y : c e l l F a m i l y , m 0076040 e m b e r : 376 001 \0 R # " T o p 0076060 L e f t C o r n e r " L ] ; \r 0076100 d e c o d e r B o t t 0076120 o m L e f t C o r n e r _ F 0076140 i n d C e l l [ \r 0076160 c e l l F a m i l y : c e l 0076200 l F a m i l y , m e m b e r : 0076220 " B o t t o m L e f t C o r n 0076240 e r " L ] ; \r \r d e 0076260 c o d e r T o p _ F i n d D 0076300 C e l l [ \r c e 0076320 l l F a m i l y : c e l l F a 0076340 m i l y , m e m b e r P r e f 0076360 i x : " T o p " L , h C o m 0076400 p a t : d e c o d e C e l l ] 0076420 ; \r d e c o d e r T 0076440 o p M i d _ F i n d 376 001 \0 376 0076460 220 C e l l [ \r c 0076500 e l l F a m i l y : c e l l F 0076520 a m i l y , m e m b e r : " 0076540 T o p M i d " L , h C o m p a 0076560 t : d e c o d e r M i d V , \r 0076600 r e q u i r e d 0076620 : d e c o d e r M i d V # N I 0076640 L ] ; \r d e c o d e 0076660 r B o t t o m _ F i n d D C 0076700 e l l [ \r c e l 0076720 l F a m i l y : c e l l F a m 0076740 i l y , m e m b e r P r e f i 0076760 x : " B o t t o m " L , h C 0077000 o m p a t : d e c o d e C e l 0077020 l ] ; \r d e c o d e 0077040 r B o t t o m M i d _ F i n 0077060 d 376 001 \0 027 w C e l l [ \r 0077100 c e l l F a m i l y : 0077120 c e l l F a m i l y , m e m b 0077140 e r : " B o t t o m M i d " L 0077160 , h C o m p a t : d e c o d 0077200 e r M i d V , \r 0077220 r e q u i r e d : d e c o d e 0077240 r M i d V # N I L ] ; \r \r 0077260 d e c o d e r R i g h t 0077300 _ F i n d D C e l l [ \r 0077320 c e l l F a m i l y : 0077340 c e l l F a m i l y , m e m 0077360 b e r P r e f i x : " R i g h 0077400 t " L , \r v C o 0077420 m p a t : d e c o d e C e l l 0077440 ] ; \r d e c o d e r 0077460 T o p R i g 376 001 \0 024 0 h t C o r 0077500 n e r _ F i n d C e l l [ \r 0077520 c e l l F a m i 0077540 l y : c e l l F a m i l y , 0077560 m e m b e r : " T o p R i g h 0077600 t C o r n e r " L ] ; \r 0077620 d e c o d e r R i g h t M i 0077640 d _ F i n d C e l l [ \r 0077660 c e l l F a m i l y 0077700 : c e l l F a m i l y , m e 0077720 m b e r : " R i g h t M i d " 0077740 L , \r v C o m p 0077760 a t : d e c o d e r M i d H , 0100000 \r r e q u i r e 0100020 d : d e c o d e r M i d H # N 0100040 I L ] ; \r d e c o d 0100060 e r B o t t o m R i g 376 001 \0 246 ` 0100100 h t C o r n e r _ F i n d C 0100120 e l l [ \r c e l 0100140 l F a m i l y : c e l l F a m 0100160 i l y , m e m b e r : " B o 0100200 t t o m R i g h t C o r n e r " 0100220 L ] ; \r \r E N D ; 0100240 - - o f F i n d D e c o d e 0100260 r C e l l s \r \r b o d y 0100300 H e i g h t , d e c o d e r R 0100320 i g h t X : l o c N u m ; \r 0100340 d e c o d e r W i d t h , 0100360 d e c o d e r H e i g h t : 0100400 I N T E G E R ; \r m i d 0100420 H G a p , m i d V G a p : l 0100440 o c N u m _ 0 ; \r p 0100460 a t : D e c o d e P a t t e r 0100500 376 001 \0 { 333 n P t r ; \r c 0100520 e l l F a m i l y , d e c o d 0100540 e r N a m e : S T R I N G _ 0100560 N I L ; \r \r B E G 0100600 I N E N A B L E P u n t = 0100620 > G O T O E x i t D e c o d 0100640 e r ; \r \r c e l l F 0100660 a m i l y _ R e q u e s t S 0100700 t r i n g [ " C e l l f a m i 0100720 l y : " L ] ; \r F i 0100740 n d D e c o d e r C e l l s [ c 0100760 e l l F a m i l y ] ; \r \r 0101000 d e c o d e r W i d t h 0101020 _ R e q u e s t I n t e g e r 0101040 [ " D e c o d e r w i d t h 0101060 i n b i t s ? " L ] ; \r 0101100 d e 376 001 \0 ^ 225 c o d e r H 0101120 e i g h t _ R e q u e s t I 0101140 n t e g e r [ " D e c o d e r 0101160 h e i g h t i n c e l l s ? 0101200 " L ] ; \r p a t _ 0101220 u z . N E W [ D e c o d e P a 0101240 t t e r n [ d e c o d e r H e i 0101260 g h t ] ] ; \r I F 0101300 H e S a y s Y e s [ " I s d e 0101320 c o d e p a t t e r n a ' 0101340 F O R ' l o o p ? " L ] T H 0101360 E N \r B E G I N 0101400 \r s t a r t : 0101420 I N T E G E R _ R e q u e s 0101440 t I n t e g e r [ " S t a r t i 0101460 n g v a l u e ? " L , \r 0101500 " ( a 376 001 \0 352 2 t 0101520 t o p ) " L ] ; \r 0101540 s t e p : I N T E G E R 0101560 _ R e q u e s t I n t e g e r 0101600 [ " I n t e r v a l b e t w e 0101620 e n v a l u e s ? " L , \r 0101640 " ( d o w n w a 0101660 r d ) " L ] ; \r 0101700 F O R i : I N T E G E R I 0101720 N [ 0 . . d e c o d e r H e i 0101740 g h t ) D O \r 0101760 p a t . p a t t e r n [ i ] 0102000 _ s t a r t ; \r 0102020 s t a r t _ s t a r 0102040 t + s t e p ; \r 0102060 E N D L O O P ; \r 0102100 E N D \r E L 376 0102120 001 \0 J s S E \r B 0102140 E G I N \r p a t 0102160 . p a t t e r n [ 0 ] _ R e 0102200 q u e s t I n t e g e r [ " F i 0102220 r s t d e c o d e v a l u e 0102240 ? " L , \r " 0102260 ( a t t o p ) " L ] ; \r 0102300 F O R i : I N T E 0102320 G E R I N [ 1 . . d e c o d 0102340 e r H e i g h t ) D O \r 0102360 p a t . p a t t e 0102400 r n [ i ] _ R e q u e s t I 0102420 n t e g e r [ " N e x t d e c 0102440 o d e v a l u e ? " L , \r 0102460 " ( d o w n w a 0102500 r d ) " L ] ; \r 0102520 E N 376 001 \0 ` 006 D L O O P ; \r 0102540 E N D ; \r \r 0102560 I F d e c o d e r M i 0102600 d H # N I L T H E N \r 0102620 m i d H G a p _ C e 0102640 l l S i z e [ d e c o d e C e l 0102660 l ] . y * \r 0102700 R e q u e s t I n t e g e r [ " 0102720 C e l l s v e r t i c a l l y 0102740 p e r m i d c e l l r o 0102760 w ? " L ] ; \r I F 0103000 d e c o d e r M i d V # N I L 0103020 T H E N \r m i d 0103040 V G a p _ C e l l S i z e [ 0103060 d e c o d e C e l l ] . x * \r 0103100 R e q u e s t 0103120 I n t e g e r [ " 376 001 \0 Y 2 C e 0103140 l l s h o r i z o n t a l l y 0103160 p e r m i d c e l l c o 0103200 l u m n ? " L ] ; \r \r 0103220 b o d y H e i g h t _ B l 0103240 o c k S i z e [ c e l l : d e 0103260 c o d e C e l l , r e p : [ 0103300 x : 1 , y : d e c o d e r 0103320 H e i g h t ] , \r 0103340 m i d C e l l : d e c o d e 0103360 r M i d H , m i d G a p : [ 0103400 m i d V G a p , m i d H G a p 0103420 ] ] . y ; \r d e c o 0103440 d e r R i g h t X _ B l o c 0103460 k S i z e [ c e l l : d e c o 0103500 d e C e l l , r e p : [ x : 0103520 d e c o d e r W i d t h , 376 001 0103540 \0 y ' y : 1 ] , \r 0103560 m i d C e l l : d e c o 0103600 d e r M i d V , m i d G a p : 0103620 [ m i d V G a p , m i d H G 0103640 a p ] ] . x ; \r \r R 0103660 e p e a t [ \r c 0103700 e l l : d e c o d e r L e f t 0103720 [ F A L S E ] , p : [ 0 , 0 0103740 ] , c o r n e r : t o p R i 0103760 g h t , \r d i r 0104000 : d o w n , r e p : d e c 0104020 o d e r H e i g h t , \r 0104040 m i d C e l l : d e c 0104060 o d e r L e f t M i d , m i d 0104100 G a p : m i d H G a p , \r 0104120 a l t C e l l : d 0104140 e c o 376 001 \0 025 340 d e r L e f t [ 0104160 T R U E ] , a l t M o d : 2 0104200 ] ; \r R e p e a t [ 0104220 \r c e l l : d 0104240 e c o d e r T o p L e f t C o r 0104260 n e r , p : [ 0 , 0 ] , c 0104300 o r n e r : b o t t o m R i g 0104320 h t ] ; \r R e p e a 0104340 t [ \r c e l l : 0104360 d e c o d e r B o t t o m L e 0104400 f t C o r n e r , p : [ 0 , 0104420 b o d y H e i g h t ] , c o 0104440 r n e r : t o p R i g h t ] ; 0104460 \r \r R e p e a t [ \r 0104500 c e l l : d e 0104520 c o d e r T o p [ F A L S E ] , 0104540 p : [ 0 , 0 376 001 \0 213 \r ] , 0104560 c o r n e r : b o t t o m L e 0104600 f t , \r r e p : 0104620 d e c o d e r W i d t h , \r 0104640 m i d C e l l : 0104660 d e c o d e r T o p M i d , m 0104700 i d G a p : m i d V G a p , \r 0104720 a l t C e l l : 0104740 d e c o d e r T o p [ T R U E 0104760 ] , a l t M o d : 2 ] ; \r 0105000 R e p e a t [ \r 0105020 c e l l : d e c o d 0105040 e r B o t t o m [ F A L S E ] , 0105060 p : [ 0 , b o d y H e i g 0105100 h t ] , c o r n e r : t o p 0105120 L e f t , \r d i 0105140 r : r i g h t , r e p 376 001 \0 0105160 234 \a : d e c o d e r W i d t h 0105200 , \r m i d C e l 0105220 l : d e c o d e r B o t t o m 0105240 M i d , m i d G a p : m i d 0105260 V G a p , \r a l 0105300 t C e l l : d e c o d e r B o 0105320 t t o m [ T R U E ] , a l t M 0105340 o d : 2 ] ; \r \r R 0105360 e p e a t [ c e l l : d e c o 0105400 d e r T o p R i g h t C o r n e 0105420 r , \r p : [ d 0105440 e c o d e r R i g h t X , 0 ] 0105460 , c o r n e r : b o t t o m 0105500 L e f t ] ; \r R e p 0105520 e a t [ \r c e l 0105540 l : d e c o d e r R i g h t [ 0105560 F A 376 001 \0 a 037 L S E ] , p : 0105600 [ d e c o d e r R i g h t X , 0105620 0 ] , d i r : d o w n , r 0105640 e p : d e c o d e r H e i g h 0105660 t , \r m i d C e 0105700 l l : d e c o d e r R i g h t 0105720 M i d , m i d G a p : m i d 0105740 H G a p , \r a l 0105760 t C e l l : d e c o d e r R i 0106000 g h t [ T R U E ] , a l t M o 0106020 d : 2 ] ; \r R e p 0106040 e a t [ c e l l : d e c o d e 0106060 r B o t t o m R i g h t C o r n 0106100 e r , p : [ d e c o d e r R 0106120 i g h t X , b o d y H e i g h 0106140 t ] ] ; \r \r M a k e 0106160 D e c o d e r 376 001 \0 240 035 B l o c 0106200 k [ c e l l s : d e c o d e r 0106220 , p : [ 0 , 0 ] , r e p 0106240 : [ d e c o d e r W i d t h , 0106260 d e c o d e r H e i g h t ] , 0106300 \r m i d C e l l 0106320 S i z e : [ x : C e l l S i 0106340 z e [ d e c o d e r M i d V ] . 0106360 x , y : C e l l S i z e [ d 0106400 e c o d e r M i d H ] . y ] , \r 0106420 m i d G a p : 0106440 [ m i d V G a p , m i d H G a 0106460 p ] , \r i n v e 0106500 r t A d d r e s s : H e S a y 0106520 s Y e s [ " S h a l l I i n 0106540 v e r t a d d r e s s i n p 0106560 u t s ? L " ] , \r 376 001 \0 201 0106600 252 p a t : p a t ] ; 0106620 \r \r M a k e M i d G 0106640 r i d [ p : [ 0 , 0 ] , c e 0106660 l l : d e c o d e C e l l , 0106700 r e p : [ d e c o d e r W i d 0106720 t h , d e c o d e r H e i g h 0106740 t ] , \r m i d V 0106760 C e l l : d e c o d e r M i d 0107000 V , m i d H C e l l : d e c 0107020 o d e r M i d H , m i d V H C 0107040 e l l : d e c o d e r M i d V 0107060 H , \r m i d G a 0107100 p : [ m i d V G a p , m i d 0107120 H G a p ] ] ; \r \r d 0107140 e c o d e r N a m e _ R e q 0107160 u e s t S t r i n g [ " N a m e 0107200 376 001 \0 ; 230 o f f i n i s h e 0107220 d c e l l : " L ] ; \r 0107240 I F d e c o d e r N a m e 0107260 # N I L A N D d e c o d e r 0107300 N a m e . l e n g t h > 0 T H 0107320 E N \r B E G I N 0107340 \r D r a w C e l 0107360 l [ M a k e N e w C e l l [ d e 0107400 c o d e r N a m e , l p p ] . 0107420 o b ] ; \r d e c 0107440 o d e r N a m e _ N I L ; 0107460 - - g a v e l i s t a n d 0107500 s t r i n g b o d y t o 0107520 c e l l \r E N D 0107540 \r E L S E A d d T 0107560 o M a s t e r L i s t [ l p p ] 0107600 ; \r 376 001 \0 F 241 l p p 0107620 _ N I L ; - - g a v e 0107640 a w a y t h e l i s t \r \r 0107660 E X I T S E x i t D 0107700 e c o d e r = > N U L L ; \r 0107720 E N D ; \r \r 0107740 f l u s h D e l [ l p p ] ; \r 0107760 I F p a t # N I L T H 0110000 E N u z . F R E E [ @ p a t ] 0110020 ; \r I F c e l l F a m 0110040 i l y # N I L T H E N F 0110060 r e e S t r i n g [ c e l l F a 0110100 m i l y ] ; \r I F d e 0110120 c o d e r N a m e # N I L 0110140 T H E N F r e e S t r i n g [ 0110160 d e c o d e r N a m e ] ; \r 0110200 a n y C h a n g e 376 001 \0 , 254 0110220 s _ s i n c e I O c h a n g 0110240 e s _ T R U E ; \r E 0110260 N D ; - - o f B u i l d D 0110300 e c o d e r \r \f \r M a k e D 0110320 e c o d e r B l o c k : P R O 0110340 C E D U R E [ c e l l s : D C 0110360 e l l P r , p , r e p : P 0110400 o i n t , \r p a t : D 0110420 e c o d e P a t t e r n P t r , 0110440 \r m i d C e l l S i z e 0110460 , m i d G a p : P o i n t 0110500 _ [ 0 , 0 ] , \r i n v 0110520 e r t A d d r e s s : B O O L 0110540 E A N _ F A L S E ] = \r 0110560 B E G I N - - h i g h 0110600 - o r d e r b i t o n t h 0110620 376 001 \0 217 207 e l e f t \r 0110640 F O R i y : I N T E G E R 0110660 I N [ 0 . . r e p . y ) D O 0110700 \r l o c : I N T E 0110720 G E R _ p a t . p a t t e r 0110740 n [ i y ] ; \r F O R 0110760 i x : I N T E G E R D E C 0111000 R E A S I N G I N \r 0111020 [ 0 . . r e p . x ) D O 0111040 \r P l a c e C e 0111060 l l [ p , c e l l s [ ( ( l o 0111100 c M O D 2 ) # 0 ) # i n v e 0111120 r t A d d r e s s ] \r 0111140 [ ( ( l o c M O D 0111160 2 ) = 0 ) # i n v e r t A d d r 0111200 e s s ] , \r 0111220 [ i x , 376 \0 s 0 s i y ] , m 0111240 i d C e l l S i z e , m i d G 0111260 a p ] ; \r l o c 0111300 _ l o c / 2 ; \r 0111320 E N D L O O P ; \r 0111340 E N D L O O P ; \r E N 0111360 D ; \r \r E N D . - - o f 0111400 D e c o d e r I m p l \r 377 \0 \0 0111420 r o m m a k e r c o n t r o l . 0111440 m e s a \0 373 230 % [ 247 \0 \0 376 001 \0 6 0111460 343 - - R O M M a k e r C o n t 0111500 r o l . m e s a \r - - a p r 0111520 o g r a m t o r u n w i t 0111540 h i n C h i p m o n k \r \r - - 0111560 l a s t m o d i f i e d b 0111600 y E . M c C r e i g h t , 0111620 N o v e m b e r 2 0 , 1 9 8 0111640 1 1 1 : 2 5 A M \r - - w 0111660 r i t t e n b y E . M c C 0111700 r e i g h t , A u g u s t 7 0111720 , 1 9 8 1 3 : 5 2 P M \r 0111740 \r D I R E C T O R Y \r C h i 0111760 p U s e r I n t , \r p p d d 0112000 e f s , \r p p d e f s , \r 0112020 R o m M a k e r D e f s , \r 0112040 Z o n e A l l o c D e f s ; \r 0112060 \r 376 001 \0 020 307 R o m M a k e r C o 0112100 n t r o l : P R O G R A M \r 0112120 I M P O R T S C h i p U s e 0112140 r I n t , R o m M a k e r D e 0112160 f s , Z o n e A l l o c D e f 0112200 s \r E X P O R T S R o m M 0112220 a k e r D e f s = \r B E G 0112240 I N O P E N C h i p U s e r 0112260 I n t , p p d d e f s , p p 0112300 d e f s , R o m M a k e r D e 0112320 f s ; \r \r \r u z : P U B L 0112340 I C U N C O U N T E D Z O N 0112360 E _ \r Z o n e A l l o 0112400 c D e f s . G e t A n X M Z o n 0112420 e [ ] ; \r \r \r - - M a 0112440 i n P r o g r 0112460 a m \r \r 376 001 \0 240 020 l p p 0112500 _ N I L ; - - l i s t 0112520 o f c e l l s a l r e a d y 0112540 p l a c e d \r \r B E G I N 0112560 \r E N A B L E P u n t = 0112600 > G O T O E x i t ; - - 0112620 f o r e x i t s \r \r S E 0112640 L E C T T R U E F R O M \r 0112660 H e S a y s Y e s [ " M a 0112700 k e R o m f r o m . M B 0112720 f i l e ? " ] = > \r 0112740 B u i l d R o m [ ] ; \r \r 0112760 H e S a y s Y e s [ " M a k 0113000 e a d e c o d e r ? " ] = 0113020 > \r B u i l d D e c 0113040 o d e r [ ] ; \r \r E N D 0113060 C A S E = > E x p 376 \0 266 326 0113100 l a i n [ " T h a t ' s a l l 0113120 t h e o p t i o n s ! " L ] 0113140 ; \r \r E X I T S E x i t 0113160 = > N U L L ; \r E N D ; \r 0113200 \r - - g i v e b a c k 0113220 a l l t h e s t o r a g e 0113240 w e a l l o c a t e d \r \r 0113260 u z _ Z o n e A l l o c D e 0113300 f s . D e s t r o y A n X M Z o 0113320 n e [ u z ] ; \r \r E N D . 0113340 - - o f R o m M a k e r C o 0113360 n t r o l \r 377 \0 \0 r o m m a k e 0113400 r . c o n f i g \0 373 230 367 < 371 \0 \0 0113420 376 001 \0 E 177 - - R o m M a k e r 0113440 . c o n f i g \r - - l a s t 0113460 m o d i f i e d b y M c C r 0113500 e i g h t : A p r i l 2 8 0113520 , 1 9 8 2 5 : 0 8 P M \r 0113540 - - w r i t t e n b y M c 0113560 C r e i g h t : A u g u s t 0113600 7 , 1 9 8 1 5 : 0 2 P 0113620 M \r \r R o m M a k e r : C O N 0113640 F I G U R A T I O N \r I M P O R 0113660 T S \r C h i p U s e r I n t 0113700 , p p d d d e f s , \r p p d 0113720 d e f s , p p d e f s , \r S 0113740 e g m e n t D e f s , S t r e a 0113760 m D e f s , S t r i n g D e f s 0114000 , Z o n e A l l o c D e f s \r C 0114020 O N T R O 376 \0 \ ( 254 L \r R o 0114040 m M a k e r C o n t r o l = \r 0114060 B E G I N \r R o m M a k e r C o 0114100 n t r o l ; R o m I m p l ; D e 0114120 c o d e r I m p l ; R o m M a k 0114140 e r C o m m o n ; M B I m p l ; 0114160 \r E N D . \r 377 \0 \0 r o m m a k e 0114200 r - s o u r c e s . c m \0 373 227 355 0114220 365 306 \0 \0 376 \0 F 232 224 m b . m e s a 0114240 m b i m p l . m e s a r o m 0114260 i m p l . m e s a d e c o d e 0114300 r i m p l . m e s a r o m m a 0114320 k e r c o n t r o l . m e s a 377 0114340 \0 \0 r o m m a k e r - s a v e . 0114360 c m \0 373 227 355 365 321 \0 \0 376 001 \0 y 212 f 0114400 t p i n d i g o c o n n / c 0114420 c h i p m o n k d i r / c 0114440 > r o m m a k e r s t / c r 0114460 o m m a k e r . c h i p b c d 0114500 r o m m a k e r . s y m b o l s 0114520 r o m m a k e r d e f s . m e 0114540 s a r o m m a k e r d e f s . 0114560 b c d r o m m a k e r c o m m 0114600 o n . m e s a r o m m a k e r 0114620 c o m m o n . b c d d u m p / 0114640 c r o m m a k e r - s o u r c 0114660 e s . d m @ r o m m a k e r - 0114700 s o u r c e s . c m @ r o m m 0114720 a k e r . c o n f i g r o m m 0114740 a k e r - s o u r c e s . c m 0114760 r o m m a k e r - s a v e . c 376 0115000 \0 024 324 314 m r o m m a k e r - d 0115020 e l e t e . c m 377 \0 \0 r o m m a 0115040 k e r - d e l e t e . c m \0 373 227 0115060 355 366 ' \0 \0 376 \0 347 334 305 d e l e t e 0115100 @ r o m m a k e r - s o u r c 0115120 e s . c m @ r o m m a k e r . 0115140 c o n f i g r o m m a k e r - 0115160 s a v e . c m r o m m a k e r 0115200 d e f s . m e s a r o m m a k 0115220 e r d e f s . b c d r o m m a 0115240 k e r c o m m o n . m e s a r 0115260 o m m a k e r c o m m o n . b c 0115300 d r o m m a k e r - d e l e t 0115320 e . c m \r @ . s y m b o l s . . 0115340 . @ d e l e t e r o m m a k 0115360 e r . s y m b o l s \r @ . c h i 0115400 p b c d . . . @ d e l e t e 0115420 r o m m a k e r . c h i p b c d 0115440 \r 374 0115442