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