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