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