$ 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