$ od -c -N 50000 [Indigo]<Chipmonk>xgate>gate-sources.dm!1 0000000 377 \0 \0 r l d e f s . m e s a \0 373 0000020 227 366 q 236 \0 \0 376 001 \0 ? 267 - - d e 0000040 f i n i t i o n s m o d u l e 0000060 f o r r a n d o m l o g i 0000100 c l a y o u t s u b r o u t 0000120 i n e \r - - w r i t t e n b 0000140 y P e t i t , S e p t e m b 0000160 e r 2 6 , 1 9 8 1 6 : 3 0000200 5 P M \r \r D I R E C T O R Y \r 0000220 S e g m e n t D e f s , \r 0000240 p p d e f s ; \r r l d e f s : 0000260 D E F I N I T I O N S I M P 0000300 O R T S S e g m e n t D e f s 0000320 , p p d e f s = \r B E G 0000340 I N O P E N p p d e f s , 0000360 S e g m e n t D e f s ; \r \r \r - 0000400 - g a t e s t u f f : \r \r g 0000420 a t e C h a r a c : T 376 001 \0 ~ \f 0000440 Y P E = R E C O R D [ i n C 0000460 n t , n o r C n t : I N T E G E 0000500 R , - - n o r C n t i s m 0000520 a x C n t f o r S e q u e n 0000540 c e \r \t a n d s : S E Q U E N C 0000560 E C O M P U T E D C A R D I 0000600 N A L O F [ 0 . . 2 5 5 ] 0000620 ] ; \r \r g a t e : T Y P E = 0000640 R E C O R D [ n x t : L O N G 0000660 P O I N T E R T O g a t e 0000700 , \r \t c h a r a c : L O N G P 0000720 O I N T E R T O g a t e C h 0000740 a r a c , \r \t f i r s t I n T o 0000760 p A v a i l : B O O L E A N , \r 0001000 \t l S p a c , r S p a c : [ 0 . 0001020 . 7 ] , \r \t p a r m N u m : [ 0 0001040 376 001 \0 215 220 . . 2 5 5 ] , \r \t c e 0001060 l l : L O N G P O I N T E R 0001100 T O c L i s t , \r \t i n C n t 0001120 : I N T E G E R , - - t h i s 0001140 i s t h e m a x C o u n t 0001160 f o r t h e S e q u e n c 0001200 e \r \t g n d : P o i n t , \r \t f 0001220 i r s t I n T o p : P o i n t , 0001240 \r \t o u t : P o i n t , \r \t i n 0001260 s : S E Q U E N C E C O M P U 0001300 T E D C A R D I N A L O F 0001320 P o i n t ] ; \r \r G a t e L i 0001340 s t : T Y P E = R E C O R D 0001360 [ n x t : L O N G P O I N T E 0001400 R T O G a t e L i s t , \r \t 0001420 g a t : L O N G P O I N T E R 0001440 T O g 376 001 \0 330 270 a t e , \r \t 0001460 x , y : l o c N u m , \r \t o u t 0001500 N o d e : I N T E G E R , \r \t n 0001520 o d e s : S E Q U E N C E n o 0001540 d e C n t : C A R D I N A L O 0001560 F [ 0 . . 2 5 5 ] ] ; \r \r m 0001600 C o n t P r o c d : T Y P E = 0001620 P R O C E D U R E [ l C n t , 0001640 r C n t , x , y , m a x y : I N 0001660 T E G E R , \r \t l p : L O N G 0001700 P O I N T E R T O l i s t , 0001720 t o t I n s : I N T E G E R ] \r 0001740 \t R E T U R N S [ d x , w i d : 0001760 I N T E G E R , n l : L O N G 0002000 P O I N T E R T O l i s t ] 0002020 ; \r \r m A n d P r o c d : T Y P 0002040 E = P R O C E D 376 001 \0 ; O U 0002060 R E [ a C n t , x , y : I N T E 0002100 G E R , l p : L O N G P O I N 0002120 T E R T O l i s t , \r \t i n 0002140 p u t s : I N T E G E R , g a t 0002160 : L O N G P O I N T E R T O 0002200 g a t e , t o t I n s : I N T 0002220 E G E R ] \r \t R E T U R N S [ d 0002240 x , w i d : I N T E G E R , n l 0002260 : L O N G P O I N T E R T O 0002300 l i s t ] ; \r \r m T W P r o c 0002320 d : T Y P E = P R O C E D U 0002340 R E [ x : I N T E G E R , l p : 0002360 L O N G P O I N T E R T O 0002400 l i s t , t o t I n s : I N T E 0002420 G E R ] \r \t R E T U R N S [ d x 0002440 : I N T E G E R , n l : L O N 376 0002460 001 \0 204 374 G P O I N T E R T O 0002500 l i s t ] ; \r \r m P u P r o c 0002520 d : T Y P E = P R O C E D U 0002540 R E [ x 1 , x 2 , m x : I N T E 0002560 G E R , \r \t l p : L O N G P O 0002600 I N T E R T O l i s t , g a 0002620 t : L O N G P O I N T E R T 0002640 O g a t e , t o t I n s : I N 0002660 T E G E R ] \r \t R E T U R N S [ 0002700 d x : I N T E G E R , n l : L O 0002720 N G P O I N T E R T O l i 0002740 s t ] ; \r \r c a l c M y P r o c 0002760 d : T Y P E = P R O C E D U 0003000 R E [ g c : L O N G P O I N T 0003020 E R T O g a t e C h a r a c 0003040 ] \r \t R E T U R N S [ m y : I N 0003060 T E G E 376 001 \0 034 Y R ] ; \r \r p a 0003100 r m a C n t : T Y P E = [ 1 0003120 . . 5 ] ; \r \r g a t e T y p e R 0003140 e c o r d : T Y P E = R E C 0003160 O R D [ \r \t w W i d , m w W i d 0003200 : I N T E G E R , \r \t n o r W i 0003220 r e O f f : I N T E G E R , \r \t 0003240 s t a n d W i d t h : I N T E G 0003260 E R , \r \t s t r t Y , i n v O f 0003300 f : I N T E G E R , \r \t p u t W 0003320 i d , p u t L e n : I N T E G E 0003340 R , \r \t m a k A n d : m A n d P 0003360 r o c d , \r \t m a k P u : m P u 0003400 P r o c d , \r \t m a k C o n t s 0003420 : m C o n t P r o c d , \r \t m a 0003440 k T o p W i r e : m T W P r o c 0003460 d , \r \t c a l c M 376 001 \0 324 o a x 0003500 y : c a l c M y P r o c d ] ; 0003520 \r \r d o w n W i r e R e c : T Y 0003540 P E = R E C O R D [ \r \t n 0003560 o d e , x , y , t x , t y : I N 0003600 T E G E R , \r \t f i x e d : B O 0003620 O L E A N , l e f t E n d , r i 0003640 g h t E n d , a n d C n t : [ 0 0003660 . . 3 1 ] , \r \t w i r e d L e f 0003700 t , t o p W i r e a b l e : B O 0003720 O L E A N , d w L e f t : [ 0 . 0003740 . 3 7 7 7 7 B ] , \r \t w i r e d 0003760 R i g h t : B O O L E A N , d w 0004000 R i g h t : [ 0 . . 3 7 7 7 7 B 0004020 ] ] ; \r \r b l o c k a g e T y 0004040 p e : T Y P E = { n o n e , 0004060 m e t , p o l y , c e l l } 376 001 0004100 \0 } 243 ; \r \r h L i n e R e c : T 0004120 Y P E = R E C O R D [ \r \t 0004140 b t y p : b l o c k a g e T y p 0004160 e , d i s t a n c e : [ - 2 0 . 0004200 . 5 0 0 0 ] ] ; \r \r \r - - * 0004220 * * * * * S t u f f F r o m 0004240 r l g a t e . m e s a : \r \r 0004260 g e t G a t e : P R O C E D U R 0004300 E [ g c : L O N G P O I N T E 0004320 R T O g a t e C h a r a c , 0004340 p a r m s : I N T E G E R ] \r \t 0004360 R E T U R N S [ g a t : L O N G 0004400 P O I N T E R T O g a t e 0004420 ] ; \r \r \r - - * * * * * * 0004440 S t u f f F r o m r l i n 0004460 . m e s a : \r \r m y Z o n e : 0004500 U N C 376 \0 214 } 222 O U N T E D Z 0004520 O N E ; \r f i l e E r r : S 0004540 I G N A L ; \r a b b r t : S I 0004560 G N A L ; \r \r i n p u t C i r c 0004600 u i t : P R O C E D U R E R E 0004620 T U R N S [ p n t : L O N G P 0004640 O I N T E R T O G a t e L i 0004660 s t , \r \t d w C n t , m a x N N 0004700 : I N T E G E R ] ; \r \r \r E 0004720 N D . \r 377 \0 \0 r l g a t e . m e 0004740 s a \0 373 234 224 336 302 \0 \0 376 001 \0 017 P - 0004760 - a p r o g r a m t o r 0005000 u n w i t h i n C h i p m o 0005020 n k \r \r - - l a s t m o d i 0005040 f i e d b y P e t i t , O 0005060 c t o b e r 8 , 1 9 8 1 0005100 2 : 2 0 P M \r - - w r i t t 0005120 e n b y P e t i t , O c t 0005140 o b e r 5 , 1 9 8 1 6 : 0005160 4 5 P M \r \r D I R E C T O R Y 0005200 \r p p d d e f s , \r p p 0005220 d e f s , \r r l d e f s , \r 0005240 p p d d d e f s , \r S t 0005260 r i n g D e f s ; \r \r r l g a t 0005300 e : P R O G R A M \r I M P 0005320 O R T S p p d d e f s , p p 0005340 d e f s , p p d d d e f s , 376 0005360 001 \0 263 N S t r i n g D e f s 0005400 E X P O R T S r l d e f s = 0005420 \r B E G I N O P E N p p 0005440 d d e f s , r l d e f s , p 0005460 p d e f s , p p d d d e f s , 0005500 S t r i n g D e f s ; \r \r \r - 0005520 - g a t e c r e a t i o n 0005540 r o u t i n e s : \r \r p a r m a 0005560 : A R R A Y p a r m a C n t 0005600 O F P O I N T E R T O g a 0005620 t e T y p e R e c o r d _ \r \t 0005640 [ @ g t r 1 , @ g t r 2 , @ g t 0005660 r 3 , @ g t r 4 , @ g t r 5 ] ; 0005700 \r \r c u r r e n t P a r a m e t 0005720 e r s : P O I N T E R T O g 0005740 a t e T y p e R e c o r d ; \r c 0005760 u r r e 376 001 \0 \f 266 n t P a r a m 0006000 N u m b e r : p a r m a C n t ; 0006020 \r \r g t r 1 : g a t e T y p e R 0006040 e c o r d _ [ \r \t w W i d : 0006060 4 , \r \t m w W i d : 8 , \r \t n o 0006100 r W i r e O f f : 2 , \r \t s t a 0006120 n d W i d t h : 1 6 , \r \t s t r 0006140 t Y : 3 0 , \r \t i n v O f f : 1 0006160 0 , \r \t p u t W i d : 4 , \r \t p 0006200 u t L e n : 4 , \r \t m a k A n d 0006220 : m A n d 1 , \r \t m a k P u : m 0006240 P u 1 , \r \t m a k C o n t s : m 0006260 C o n t 1 , \r \t m a k T o p W i 0006300 r e : m T W 1 , \r \t c a l c M a 0006320 x y : m C a l c 1 \r ] ; \r g t r 0006340 2 : g a t e T y p e R e c o r d 0006360 _ [ \r \t w W i 376 001 \0 r 222 d : 0006400 4 , \r \t m w W i d : 8 , \r \t n o 0006420 r W i r e O f f : 2 , \r \t s t a 0006440 n d W i d t h : 3 2 , \r \t s t r 0006460 t Y : 3 0 , \r \t i n v O f f : 1 0006500 0 , \r \t p u t W i d : 8 , \r \t p 0006520 u t L e n : 4 , \r \t m a k A n d 0006540 : m A n d 1 , \r \t m a k P u : m 0006560 P u 1 , \r \t m a k C o n t s : m 0006600 C o n t 1 , \r \t m a k T o p W i 0006620 r e : m T W 1 , \r \t c a l c M a 0006640 x y : m C a l c 1 \r ] ; \r g t r 0006660 3 : g a t e T y p e R e c o r d 0006700 _ [ \r \t w W i d : 4 , \r \t m 0006720 w W i d : 8 , \r \t n o r W i r e 0006740 O f f : 2 , \r \t s t a n d W i d 0006760 t h : 4 8 , \r \t s t r t Y : 376 001 0007000 \0 * 204 3 0 , \r \t i n v O f f : 1 0007020 0 , \r \t p u t W i d : 1 2 , \r \t 0007040 p u t L e n : 4 , \r \t m a k A n 0007060 d : m A n d 1 , \r \t m a k P u : 0007100 m P u 1 , \r \t m a k C o n t s : 0007120 m C o n t 1 , \r \t m a k T o p W 0007140 i r e : m T W 1 , \r \t c a l c M 0007160 a x y : m C a l c 1 \r ] ; \r g t 0007200 r 4 : g a t e T y p e R e c o r 0007220 d _ [ \r \t w W i d : 4 , \r \t 0007240 m w W i d : 8 , \r \t n o r W i r 0007260 e O f f : 2 , \r \t s t a n d W i 0007300 d t h : 8 , \r \t s t r t Y : 2 8 0007320 , - - p u t L e n + 2 0 \r \t 0007340 i n v O f f : 6 , \r \t p u t W i 0007360 d : 4 , \r \t p u t L e n : 8 , \r 0007400 \t m a 376 001 \0 323 001 k A n d : m A n 0007420 d 1 , \r \t m a k P u : m P u 2 , 0007440 \r \t m a k C o n t s : m C o n t 0007460 1 , \r \t m a k T o p W i r e : m 0007500 T W 1 , \r \t c a l c M a x y : m 0007520 C a l c 1 \r ] ; \r g t r 5 : g a 0007540 t e T y p e R e c o r d _ [ 0007560 \r \t w W i d : 4 , \r \t m w W i d 0007600 : 8 , \r \t n o r W i r e O f f : 0007620 2 , \r \t s t a n d W i d t h : 4 0007640 , \r \t s t r t Y : 3 6 , - - 0007660 p u t L e n + 2 0 \r \t i n v O f 0007700 f : 6 , \r \t p u t W i d : 4 , \r 0007720 \t p u t L e n : 1 6 , \r \t m a k 0007740 A n d : m A n d 1 , \r \t m a k P 0007760 u : m P u 2 , \r \t m a k C o n t 0010000 s : m C o n t 1 376 001 \0 336 \t , \r \t 0010020 m a k T o p W i r e : m T W 1 , 0010040 \r \t c a l c M a x y : m C a l c 0010060 1 \r ] ; \r \r g a t e L i s t : L 0010100 O N G P O I N T E R T O g 0010120 a t e _ N I L ; \r \r g e t G a t 0010140 e : P U B L I C P R O C E D U 0010160 R E [ g c : L O N G P O I N T 0010200 E R T O g a t e C h a r a c 0010220 , p a r m s : I N T E G E R ] \r 0010240 \t R E T U R N S [ g a t : L O N 0010260 G P O I N T E R T O g a t 0010300 e ] = \r B E G I N \r \t 0010320 g a t _ g a t e L i s t ; \r \t W 0010340 H I L E g a t # N I L D O \r 0010360 \t I F g a t . p a r m N u 0010400 m = p a r m s A N D 376 001 \0 0010420 v 217 g c S a m e [ g c , g a t 0010440 . c h a r a c ] T H E N R E 0010460 T U R N ; \r \t g a t _ g a t 0010500 . n x t ; \r \t E N D L O O P ; \r 0010520 \t g a t _ m a k e G a t e [ g c 0010540 , p a r m s ] ; \r \t g a t . n x 0010560 t _ g a t e L i s t ; \r \t g a t 0010600 e L i s t _ g a t ; \r E 0010620 N D ; \r g c S a m e : P R O C E 0010640 D U R E [ a , b : L O N G P O 0010660 I N T E R T O g a t e C h a 0010700 r a c ] R E T U R N S [ B O O 0010720 L E A N ] = \r B E G I 0010740 N \r \t I F a . i n C n t # b . 0010760 i n C n t O R a . n o r C n 0011000 t # b . n o r C n t T H E N 0011020 R E 376 001 \0 O 310 T U R N [ F A L S 0011040 E ] ; \r \t F O R i : I N T E G 0011060 E R I N [ 0 . . a . n o r C 0011100 n t ) D O \r \t I F a . a 0011120 n d s [ i ] # b . a n d s [ 0011140 i ] T H E N R E T U R N [ F 0011160 A L S E ] ; \r \t E N D L O O P ; 0011200 \r \t R E T U R N [ T R U E ] ; \r 0011220 E N D ; \r \r m a k e G a 0011240 t e : P R O C E D U R E [ g c : 0011260 L O N G P O I N T E R T O 0011300 g a t e C h a r a c , p a r m s 0011320 : p a r m a C n t ] \r \t R E T U 0011340 R N S [ g a t : L O N G P O I 0011360 N T E R T O g a t e ] = \r 0011400 B E G I N \r \t O P E N 0011420 c u r r e n t 376 001 \0 \0 265 P a r a 0011440 m e t e r s ; \r \t l p : L O N G 0011460 P O I N T E R T O l i s t 0011500 ; - - _ N I L ; \r \t o b : L O N 0011520 G P O I N T E R T O o b j 0011540 e c t ; \r \t c p : L O N G P O 0011560 I N T E R T O c L i s t ; \r 0011600 \t x : l o c N u m ; \r \t y : l o 0011620 c N u m ; \r \t i , i n I d x , a 0011640 c n t , m x , m a x y : I N T E 0011660 G E R ; \r \t t o p x 1 , t o p x 0011700 2 , d x , w i d t h , b o t x : 0011720 I N T E G E R ; \r \t c u r r e n 0011740 t P a r a m e t e r s _ p a r m 0011760 a [ p a r m s ] ; \r \t c u r r e 0012000 n t P a r a m N u m b e r _ p a 0012020 r m s ; \r \t g a t _ G e 376 001 \0 273 0012040 037 t S p a c e [ S I Z E [ g a t 0012060 e [ g c . i n C n t ] ] ] ; \r \t 0012100 g a t . i n C n t _ g c . i n C 0012120 n t ; \r \t g a t . n x t _ N I L 0012140 ; \r \t g a t . c h a r a c _ g c 0012160 ; \r \t g a t . p a r m N u m _ c 0012200 u r r e n t P a r a m N u m b e 0012220 r ; \r \t m x _ 0 ; \r \t y _ s t r 0012240 t Y ; \r \t m a x y _ y + c a l c 0012260 M a x y [ g c ] ; \r \t x _ - 2 ; 0012300 \r \t [ d x , , l p ] _ m a k C o 0012320 n t s [ 0 , g c . a n d s [ 0 ] 0012340 , x , y , m a x y , N I L , g c 0012360 . i n C n t ] ; \r \t x _ x + d x 0012400 ; \r \t b o t x _ 0 ; \r \t i n I d 0012420 x _ 0 ; \r \t F O R i I N [ 0012440 0 376 001 \0 004 312 . . g c . n o r C n 0012460 t ) D O \r \t a c n t _ g c 0012500 . a n d s [ i ] ; \r \t [ d x 0012520 , w i d t h , l p ] _ m a k A n 0012540 d [ a c n t , x , y , l p , i n 0012560 I d x , g a t , g c . i n C n t 0012600 ] ; \r \t i n I d x _ i n I d 0012620 x + a c n t ; \r \t m x _ M A 0012640 X [ m x , x + w i d t h ] ; \r \t 0012660 x _ x + d x ; \r \t I F 0012700 i = 0 T H E N t o p x 1 _ x 0012720 + n o r W i r e O f f ; \r \t 0012740 I F i M O D 2 = 0 T 0012760 H E N \r \t B E G I N \r \t 0013000 \t t o p x 2 _ x + n o r W i r e 0013020 O f f + w W i d ; \r \t \t [ d x , 0013040 l p ] _ m a 376 001 \0 020 C k T o p W 0013060 i r e [ x + n o r W i r e O f f 0013100 , l p , g c . i n C n t ] ; \r \t 0013120 \t x _ x + d x ; \r \t \t m x _ M A 0013140 X [ m x , t o p x 2 ] ; \r \t 0013160 E N D \r \t E L S E \r \t 0013200 B E G I N \r \t \t [ d x , w i 0013220 d t h , l p ] _ m a k C o n t s 0013240 [ a c n t , ( I F i = g c . n 0013260 o r C n t - 1 T H E N 0 \r \t 0013300 \t \t E L S E g c . a n d s [ i 0013320 + 1 ] ) , x , y , m a x y , l p 0013340 , g c . i n C n t ] ; \r \t \t b o 0013360 t x _ x + 2 ; \r \t \t m x _ M A X 0013400 [ m x , x + w i d t h ] ; \r \t \t 0013420 x _ x + d x ; \r \t E N D 0013440 ; \r \t E N D L O O P ; 376 001 \0 331 303 0013460 \r \t [ d x , l p ] _ m a k P u [ 0013500 t o p x 1 , t o p x 2 , m x , l 0013520 p , g a t , g c . i n C n t ] ; 0013540 \r \t m x _ M A X [ m x , d x ] ; 0013560 \r \t I F b o t x > 0 T H E N 0013600 \r \t B E G I N \r \t \t l p 0013620 _ i n s e r t L i s t [ l p , m 0013640 a k e L i s t [ m a k e W i r e 0013660 [ b o t x + m w W i d , 6 , m e 0013700 t ] \r \t \t \t , 0 , m a x y - 2 , 0013720 2 , 0 ] ] ; \r \t E N D ; 0013740 \r \t g a t . g n d _ [ b o t x + 0013760 2 , m a x y - 2 ] ; \r \t o b _ m 0014000 a k e C e l l [ m x , m a x y + 0014020 4 , 0 , l p ] ; \r \t c p _ a l o 0014040 c C L i s t [ ] ; \r \t c p . o b 0014060 376 001 \0 020 320 _ o b ; \r \t c p . n a 0014100 m e _ m a k e C e l l N a m e [ 0014120 g c ] ; \r \t o b . r e t u r n a 0014140 b l e _ F A L S E ; \r \t g a t . 0014160 c e l l _ c p ; \r \t c p . n x t 0014200 _ c e l l L i s t ; \r \t c e l l 0014220 L i s t _ c p ; \r E N D 0014240 ; \r \r m a k e C e l l N a m e : 0014260 P R O C E D U R E [ g c : L O N 0014300 G P O I N T E R T O g a t 0014320 e C h a r a c ] R E T U R N S 0014340 [ s : S T R I N G ] = \r 0014360 B E G I N \r \t s s : S T R I N 0014400 G _ [ 1 0 1 ] ; \r \t s s . l e n 0014420 g t h _ 0 ; \r \t A p p e n d S t 0014440 r i n g [ s s , " G A T E " ] ; 0014460 \r \t A p p 376 001 \0 372 376 e n d D e c 0014500 i m a l [ s s , c u r r e n t P 0014520 a r a m N u m b e r ] ; \r \t A p 0014540 p e n d C h a r [ s s , ' - ] ; 0014560 \r \t A p p e n d D e c i m a l [ 0014600 s s , g c . n o r C n t ] ; \r \t 0014620 F O R i : I N T E G E R I N 0014640 [ 0 . . g c . n o r C n t ) 0014660 D O \r \t I F s s . l e n g 0014700 t h > 9 2 T H E N B E G I N 0014720 A p p e n d S t r i n g [ s s 0014740 , " . E T C " ] ; E X I T ; E N 0014760 D ; \r \t I F g c . a n d s 0015000 [ i ] > 1 T H E N \r \t 0015020 B E G I N \r \t \t A p p e n d C h 0015040 a r [ s s , ' - ] ; \r \t \t A p p 0015060 e n d C h a r [ s s 376 001 \0 256 256 , 0015100 ( ' A + i ) ] ; \r \t \t A p p e n 0015120 d D e c i m a l [ s s , g c . a 0015140 n d s [ i ] ] ; \r \t E N 0015160 D ; \r \t E N D L O O P ; \r \t s _ 0015200 n e w S t r i n g [ s s ] ; \r 0015220 E N D ; \r \r m A n d 1 : m 0015240 A n d P r o c d = \r B 0015260 E G I N \r \t O P E N c u r r e 0015300 n t P a r a m e t e r s ; \r \t i 0015320 : I N T E G E R ; \r \t l l : L O 0015340 N G P O I N T E R T O l i 0015360 s t ; \r \t d x _ 0 ; \r \t g a t . 0015400 f i r s t I n T o p A v a i l _ 0015420 T R U E ; \r \t I F t o t I n s 0015440 = 1 T H E N \r \t B E G 0015460 I N \r \t \t y _ y + i n v O f f 376 0015500 001 \0 343 Z ; \r \t \t l l _ m a k e L 0015520 i s t [ m a k e X s t r [ s t a 0015540 n d W i d t h , c L e n g t h ] 0015560 , x , y - 4 , 0 , 0 ] ; \r \t \t l 0015600 p _ i n s e r t L i s t [ l p , 0015620 l l ] ; \r \t \t g a t . i n s [ 0 0015640 ] _ [ x , y ] ; \r \t \t g a t . f 0015660 i r s t I n T o p _ [ x - 2 , y 0015700 + 4 ] ; \r \t \t g a t . r S p a c 0015720 _ 2 ; \r \t \t g a t . l S p a c _ 0015740 3 ; \r \t \t d x _ s t a n d W i d 0015760 t h + 2 ; \r \t \t n l _ l p ; \r \t 0016000 \t w i d _ d x + 6 ; \r \t \t R E T 0016020 U R N ; \r \t E N D ; \r \t 0016040 I F i n p u t s = 0 T H E N 0016060 g a t . l S p a c _ g a t . r 0016100 S p a c 376 001 \0 200 363 _ 1 ; \r \t F O 0016120 R i I N [ 0 . . a C n t ) 0016140 D O \r \t l l _ m a k e L i 0016160 s t [ m a k e X s t r [ s t a n 0016200 d W i d t h * a C n t , c L e n 0016220 g t h ] , x + d x , y , 2 , 0 ] 0016240 ; \r \t l p _ i n s e r t L i 0016260 s t [ l p , l l ] ; \r \t g a 0016300 t . i n s [ i n p u t s + i ] _ 0016320 [ x + d x + 4 + c L e n g t h / 0016340 2 , y + s t a n d W i d t h * a 0016360 C n t + 6 ] ; \r \t I F i n 0016400 p u t s + i = 0 T H E N g a 0016420 t . f i r s t I n T o p _ [ x + 0016440 d x + 4 + c L e n g t h / 2 , y 0016460 + 2 ] ; \r \t d x _ d x + 8 ; 0016500 \r \t E N D L O O P 376 001 \0 @ 271 ; \r 0016520 \t n l _ l p ; \r \t w i d _ d x + 0016540 4 ; \r E N D ; \r m P u 1 0016560 : m P u P r o c d = \r 0016600 B E G I N \r \t O P E N c u r r 0016620 e n t P a r a m e t e r s ; \r \t 0016640 l p p : L O N G P O I N T E R 0016660 T O l i s t ; \r \t w i d : I 0016700 N T E G E R _ p u t W i d + 1 2 0016720 ; \r \t t : I N T E G E R _ x 2 - 0016740 w i d ; \r \t o x : I N T E G E R 0016760 _ m x + g a t . r S p a c * 2 ; 0017000 \r \t y : I N T E G E R _ 1 6 ; \r 0017020 \t I F t o t I n s = 1 T H E 0017040 N \r \t B E G I N \r \t \t x 0017060 2 _ x 1 ; \r \t \t x 1 _ x 1 - s t 0017100 a n d W i d t h ; \r \t \t t _ 376 001 0017120 \0 / x 2 - w i d ; \r \t \t y _ y 0017140 + i n v O f f ; \r \t E N 0017160 D ; \r \t I F t < x 1 T H E N 0017200 t _ M I N [ x 1 , m x - w i d 0017220 ] ; \r \t I F t < 0 T H E N 0017240 t _ 0 ; \r \t x 1 _ M I N [ t , x 0017260 1 ] ; \r \t x 2 _ M A X [ x 2 , t 0017300 + w i d ] ; \r \t l p p _ m a k e 0017320 L i s t [ m a k e W i r e [ x 2 0017340 - x 1 , w W i d , d i f ] , x 1 0017360 , y + 8 , 2 , 0 ] ; \r \t l p _ i 0017400 n s e r t L i s t [ l p , l p p 0017420 ] ; \r \t l p p _ m a k e L i s t 0017440 [ m a k e B u t c o n [ ] , t , 0017460 y , 0 , 0 ] ; \r \t l p _ i n s e 0017500 r t L i s t [ l p , l p p ] ; \r 0017520 \t l p 376 001 \0 210 006 p _ m a k e L i 0017540 s t [ m a k e D i f c o n [ M A 0017560 X [ 8 , p u t W i d ] ] , t + 1 0017600 2 , 0 , 2 , 0 ] ; \r \t l p _ i n 0017620 s e r t L i s t [ l p , l p p ] 0017640 ; \r \t d x _ M A X [ t + w i d + 0017660 4 , x 2 ] ; \r \t I F t + w i d 0017700 + 2 < o x T H E N \r \t 0017720 B E G I N \r \t \t d x _ M A X [ o 0017740 x + 2 , d x ] ; \r \t \t l p p _ m 0017760 a k e L i s t [ m a k e W i r e 0020000 [ o x - t - w i d , 4 , p o l ] 0020020 , t + w i d + 2 , y + 2 , 2 , 0 0020040 ] ; \r \t \t l p _ i n s e r t L i 0020060 s t [ l p , l p p ] ; \r \t \t g a 0020100 t . o u t _ [ o x + 2 , y + 2 ] 0020120 ; \r \t E 376 001 \0 a ; N D \r 0020140 \t E L S E \r \t B E G I 0020160 N \r \t \t g a t . o u t _ [ t + w 0020200 i d + 4 , y + 2 ] ; \r \t 0020220 E N D ; \r \t l p p _ m a k e L i 0020240 s t [ m a k e W i r e [ y - 6 , 0020260 p u t W i d , d i f ] , t + 1 2 0020300 , 6 , 0 , 0 ] ; \r \t l p _ i n s 0020320 e r t L i s t [ l p , l p p ] ; 0020340 \r \t l p p _ m a k e L i s t [ m 0020360 a k e X s t r [ p u t W i d , p 0020400 u t L e n , p p d e f s . s t r 0020420 o n g D e p l e t i o n ] , t + 0020440 8 , y - 2 , 0 , 0 ] ; \r \t n l _ 0020460 i n s e r t L i s t [ l p , l p 0020500 p ] ; \r E N D ; \r m P u 0020520 2 : m P u P r o c d = \r 376 001 \0 0020540 242 7 B E G I N \r \t O P E 0020560 N c u r r e n t P a r a m e t 0020600 e r s ; \r \t l p p : L O N G P 0020620 O I N T E R T O l i s t ; \r 0020640 \t w i d : I N T E G E R = 1 0 ; 0020660 \r \t t : I N T E G E R _ x 2 - w 0020700 i d ; \r \t o x : I N T E G E R _ 0020720 m x + g a t . r S p a c * 2 ; \r 0020740 \t y : I N T E G E R _ s t r t Y 0020760 - 1 2 ; \r \t I F t o t I n s = 0021000 1 T H E N \r \t B E G I 0021020 N \r \t \t x 2 _ x 1 ; \r \t \t x 1 _ 0021040 x 1 - s t a n d W i d t h ; \r \t 0021060 \t t _ x 2 - w i d ; \r \t \t y _ y 0021100 + i n v O f f ; \r \t E N 0021120 D ; \r \t I F t < x 1 - 2 T H 0021140 E N 376 001 \0 024 " t _ M I N [ x 1 0021160 - 2 , m x - w i d ] ; \r \t I F 0021200 t < 0 T H E N t _ 0 ; \r \t x 0021220 1 _ M I N [ t + 2 , x 1 ] ; \r \t 0021240 x 2 _ M A X [ x 2 , t + w i d ] 0021260 ; \r \t l p p _ m a k e L i s t [ 0021300 m a k e W i r e [ x 2 - x 1 , w 0021320 W i d , d i f ] , x 1 , y + 6 , 0021340 2 , 0 ] ; \r \t l p _ i n s e r t 0021360 L i s t [ l p , l p p ] ; \r \t l 0021400 p p _ m a k e L i s t [ m a k e 0021420 D i f c o n [ 8 ] , t + 2 , 0 , 0021440 2 , 0 ] ; \r \t l p _ i n s e r t 0021460 L i s t [ l p , l p p ] ; \r \t d 0021500 x _ M A X [ t + w i d + 2 , x 2 0021520 ] ; \r \t I F t + w i d < o x 0021540 T H E N \r \t 376 001 \0 375 275 B 0021560 E G I N \r \t \t d x _ M A X [ o x 0021600 + 2 , d x ] ; \r \t \t l p p _ m a 0021620 k e L i s t [ m a k e W i r e [ 0021640 o x - t - w i d , 4 , p o l ] , 0021660 t + w i d + 2 , y , 2 , 0 ] ; \r 0021700 \t \t l p _ i n s e r t L i s t [ 0021720 l p , l p p ] ; \r \t \t g a t . o 0021740 u t _ [ o x + 2 , y ] ; \r \t 0021760 E N D \r \t E L S E \r \t 0022000 B E G I N \r \t \t g a t . o u 0022020 t _ [ t + w i d + 4 , y ] ; \r \t 0022040 E N D ; \r \t l p p _ m a 0022060 k e L i s t [ m a k e P u l l u 0022100 p [ p u t W i d , p u t L e n ] 0022120 , t , \r \t \t ( I F t o t I n s 0022140 > 1 T H E N 8 E L 376 001 \0 211 0022160 017 S E i n v O f f + 8 ) , 0 , 0022200 0 ] ; \r \t n l _ i n s e r t L i 0022220 s t [ l p , l p p ] ; \r \t I F 0022240 t o t I n s = 1 T H E N \r \t 0022260 B E G I N \r \t \t l p p _ m 0022300 a k e L i s t [ m a k e W i r e 0022320 [ i n v O f f + 4 , p u t W i d 0022340 , d i f ] , t + 4 , 6 , 0 , 0 ] 0022360 ; \r \t \t n l _ i n s e r t L i s 0022400 t [ n l , l p p ] ; \r \t 0022420 E N D ; \r E N D ; \r m T 0022440 W 1 : m T W P r o c d = \r 0022460 B E G I N \r \t I F t o t I 0022500 n s = 1 T H E N { d x _ 1 0 0022520 ; n l _ l p ; R E T U R N } ; \r 0022540 \t n l _ m a k e L i s t [ m a k 0022560 e 376 001 \0 Z 344 W i r e [ 1 4 , c u 0022600 r r e n t P a r a m e t e r s . 0022620 w W i d , d i f ] , \r \t \t x , c 0022640 u r r e n t P a r a m e t e r s 0022660 . s t r t Y - 6 , 0 , 0 ] ; \r \t 0022700 n l _ i n s e r t L i s t [ l p 0022720 , n l ] ; \r \t d x _ c u r r e n 0022740 t P a r a m e t e r s . w W i d 0022760 ; \r E N D ; \r m C o n t 0023000 1 : m C o n t P r o c d = \r 0023020 B E G I N \r \t O P E N c 0023040 u r r e n t P a r a m e t e r s 0023060 ; \r \t l h , r h , n y , c : I N 0023100 T E G E R ; \r \t l h _ s t a n d 0023120 W i d t h * l C n t ; \r \t r h _ 0023140 s t a n d W i d t h * r C n t ; 0023160 \r \t I F t 376 001 \0 260 L o t I n s 0023200 = 1 T H E N \r \t B E G 0023220 I N \r \t \t x _ x + 6 ; \r \t \t y _ 0023240 y - 2 + i n v O f f ; \r \t \t n y 0023260 _ y + 8 ; \r \t \t n l _ m a k 0023300 e L i s t [ m a k e D i f c o n 0023320 [ 8 ] , x , n y , 0 , 0 ] ; \r \t 0023340 \t l p _ i n s e r t L i s t [ l 0023360 p , n l ] ; \r \t \t n l _ m a k e 0023400 L i s t [ m a k e W i r e [ l h 0023420 , 4 , d i f ] , x , n y + 2 , 2 0023440 , 0 ] ; \r \t \t l p _ i n s e r t 0023460 L i s t [ l p , n l ] ; \r \t \t I 0023500 F m a x y - n y > 2 T H E N 0023520 \r \t \t B E G I N \r \t \t \t 0023540 n l _ m a k e L i s t [ m a k e 0023560 W i r e [ m a x y - n 376 001 \0 z r 0023600 y + 2 , m w W i d , m e t ] , x 0023620 , n y + 2 , 0 , 0 ] ; \r \t \t \t n 0023640 l _ i n s e r t L i s t [ l p , 0023660 n l ] ; \r \t \t E N D ; \r 0023700 \t \t d x _ 2 ; \r \t \t w i d _ 2 ; 0023720 \r \t \t R E T U R N ; \r \t 0023740 E N D ; \r \t x _ x + 2 ; \r \t c _ 0023760 I F M A X [ r h , l h ] < 1 2 0024000 T H E N 1 E L S E ( M A 0024020 X [ r h , l h ] - 8 ) / 1 6 + 1 0024040 ; \r \t y _ y + 4 ; \r \t n y _ y 0024060 + ( ( M A X [ r h , l h ] - 8 0024100 ) M O D 1 6 ) ; \r \t F O R i 0024120 : I N T E G E R I N [ 0 . . 0024140 c ) D O \r \t n l _ m a k e 0024160 L i s t [ m a k e D i f c o n [ 0024200 376 001 \0 344 244 8 ] , x , n y + i * 1 0024220 6 , 0 , 0 ] ; \r \t l p _ i n 0024240 s e r t L i s t [ l p , n l ] ; 0024260 \r \t E N D L O O P ; \r \t n l _ m 0024300 a k e L i s t [ m a k e W i r e 0024320 [ M A X [ r h , l h ] , 4 , d i 0024340 f ] , x + 2 , y , 0 , 0 ] ; \r \t 0024360 l p _ i n s e r t L i s t [ l p 0024400 , n l ] ; \r \t n l _ m a k e L i 0024420 s t [ m a k e W i r e [ m a x y 0024440 - n y + 4 , m w W i d , m e t ] 0024460 , x , n y , 0 , 0 ] ; \r \t n l _ 0024500 i n s e r t L i s t [ l p , n l 0024520 ] ; \r \t d x _ 8 ; \r \t w i d _ 1 0024540 0 ; \r E N D ; \r m C a l 0024560 c 1 : c a l c M y P r o c d = 0024600 \r 376 \0 233 @ 230 B E G I N \r 0024620 \t m y _ 0 ; \r \t F O R i : I N 0024640 T E G E R I N [ 0 . . g c . 0024660 n o r C n t ) D O \r \t m y 0024700 _ M A X [ m y , g c . a n d s [ 0024720 i ] ] ; \r \t E N D L O O P ; \r \t 0024740 m y _ m y * c u r r e n t P a r 0024760 a m e t e r s . s t a n d W i d 0025000 t h + 8 ; \r E N D ; \r \r 0025020 \r E N D . - - o f r l 0025040 g a t e \r 377 \0 \0 r l i n . m e s 0025060 a \0 373 227 366 204 260 \0 \0 376 001 \0 275 240 - - 0025100 a p r o g r a m t o r u 0025120 n w i t h i n C h i p m o n 0025140 k \r \r - - l a s t m o d i f 0025160 i e d b y P e t i t , O c 0025200 t o b e r 1 3 , 1 9 8 1 0025220 8 : 0 0 P M \r - - w r i t t 0025240 e n b y P e t i t , O c t 0025260 o b e r 9 , 1 9 8 1 2 : 0025300 0 4 P M \r \r D I R E C T O R Y 0025320 \r p p d d e f s , \r p p 0025340 d e f s , \r r l d e f s , \r 0025360 A l t o F i l e D e f s , \r 0025400 Z o n e A l l o c D e f s , 0025420 \r S t r e a m D e f s , \r 0025440 D i r e c t o r y D e f s , \r 0025460 S t r i n g D e f s ; \r 376 001 0025500 \0 324 242 \r r l i n : P R O G R A 0025520 M \r I M P O R T S p p d e 0025540 f s , S t r e a m D e f s , 0025560 D i r e c t o r y D e f s , r 0025600 l d e f s , S t r i n g D e f 0025620 s \r E X P O R T S r l d e f 0025640 s = \r B E G I N O P E N 0025660 p p d d e f s , r l d e f s 0025700 , S t r e a m D e f s , D i 0025720 r e c t o r y D e f s , p p d 0025740 e f s , S t r i n g D e f s ; 0025760 \r \r \r f H a n d l e : D i s 0026000 k H a n d l e ; \r f p : A l 0026020 t o F i l e D e f s . F P ; \r \r 0026040 m y Z o n e : P U B L I C 0026060 U N C O U N T E D Z O N E ; 0026100 \r \r 376 001 \0 354 253 f i l e E r r 0026120 : P U B L I C S I G N A L = C 0026140 O D E ; \r a b b r t : P U B 0026160 L I C S I G N A L = C O D E ; 0026200 \r \r \r - - N E W F I L E F 0026220 O R M A T : \r \r - - e a c h 0026240 g a t e i s r e p r e s e n 0026260 t e d b y o n e l i n e 0026300 o f t e x t , t h u s : \r - 0026320 - < o u t p u t N o d e 0026340 N a m e > ( < # > ) : 0026360 < i n p u t S p e c > < s 0026400 e p > < i n p u t S p e c > 0026420 . . . < C R > \r - - W h e 0026440 r e < i n p u t S p e c > 0026460 i s e i t h e r < N o d e 0026500 N a m e > f 376 001 \0 x 207 o r 0026520 a s i n g l e n o r i n p 0026540 u t \r - - o r [ < N o d e 0026560 N a m e > < s e p > < N o 0026600 d e N a m e > . . . ] 0026620 f o r a n A N D n o r i 0026640 n p u t \r - - < s e p > i s 0026660 e i t h e r s p a c e o r 0026700 c o m m a . \r - - N o d e 0026720 N a m e s a r e i d e n t i 0026740 f i e r s ( s t r i n g s o 0026760 f < D i g i t > a n d / o r 0027000 < L e t t e r > ) \r - - T h 0027020 e " ( < # > ) " f o l l 0027040 o w i n g t h e < o u t p u 0027060 t N o d e N a m e > i s 0027100 t h e \r - - p a r a m e 376 001 \0 0027120 344 330 t e r ( p u l l u p s t 0027140 r e n g t h ) i n d e x . 0027160 I t i s o p t i o n a l , 0027200 a n d i f \r - - i t i s 0027220 l e f t o u t t h e c u r 0027240 r e n t d e f a u l t w i l 0027260 l b e u s e d . \r - - A 0027300 l i n e c o n s i s t i n g 0027320 o f o n l y : ( < # > ) < C 0027340 R > w i l l s e t t h e 0027360 d e f a u l t . \r - - N . B 0027400 . : i d e n t i f i e r s a 0027420 r e l i m i t e d t o 1 0 0027440 0 C h a r a c t e r s ! \r - - 0027460 f i l e e n d s w i t h 0027500 a l i n e c o n s i s t i n 0027520 g 376 001 \0 6 265 o f @ \r \r - - 0027540 < C R > a n d ; a r e e 0027560 q u i v a l e n t . C o m m 0027600 a a n d s p a c e a r e 0027620 e q u i v a l e n t . \r - - a 0027640 l i n e s t a r t i n g w 0027660 i t h ( f i r s t n o n - b 0027700 l a n k c h r ) a m i n u 0027720 s ( - ) i s i g n o r e d 0027740 . \r \r \r i t e m T y p e : T Y P 0027760 E = { i d e n t , n u m , s 0030000 e p , l e n d , c o l o n , l p 0030020 a r , r p a r , l b r k , r b r 0030040 k , f e n d , c o m m t } ; \r p 0030060 i n T y p e : T Y P E = { o 0030100 u t , n o r , f i r s t A n d , 0030120 a n d } ; \r p 376 001 \0 @ 001 i n D e 0030140 f : T Y P E = R E C O R D [ 0030160 n x t : L O N G P O I N T E R 0030200 T O p i n D e f , n o d e : 0030220 I N T E G E R , t y p e : p i n 0030240 T y p e ] ; \r \r n o d e N a m e 0030260 L i s t : T Y P E = R E C O 0030300 R D [ n x t : L O N G P O I N 0030320 T E R T O n o d e N a m e L 0030340 i s t , \r \t n o d e : I N T E G 0030360 E R , n a m e : S T R I N G ] ; 0030400 \r \r t e r m C h a r : C H A R A 0030420 C T E R ; \r d u m m y t c : C H 0030440 A R A C T E R = 1 7 7 C ; \r 0030460 p i n s , p n p : L O N G P O 0030500 I N T E R T O p i n D e f ; 0030520 \r s a v e P D : L O N G 376 001 \0 362 0030540 1 P O I N T E R T O p i n 0030560 D e f _ N I L ; \r n n L i s t : 0030600 L O N G P O I N T E R T O 0030620 n o d e N a m e L i s t ; \r \r i 0030640 n p u t C i r c u i t : P U B L 0030660 I C P R O C E D U R E \r \t R E 0030700 T U R N S [ p n t : L O N G P 0030720 O I N T E R T O G a t e L i 0030740 s t , d w C n t , m a x N N : I 0030760 N T E G E R ] = \r B E 0031000 G I N \r \t s : S T R I N G ; \r \t 0031020 o k : B O O L E A N ; \r \t t y p 0031040 : i t e m T y p e ; \r \t g c : L 0031060 O N G P O I N T E R T O g 0031100 a t e C h a r a c ; \r \t g a t : 0031120 L O N G P O I N T E R T O 0031140 g 376 001 \0 225 017 a t e ; \r \t g p , m 0031160 o s t R e c e n t : L O N G P 0031200 O I N T E R T O G a t e L i 0031220 s t ; \r \t n o r C n t , i n C n 0031240 t , i , a , p a r m : I N T E G 0031260 E R ; \r \t d e f p a r m : I N T 0031300 E G E R _ 1 ; - - d e f a u l t 0031320 \r \t [ o k , s , ] _ t y p e I n 0031340 [ " T y p e F i l e N a m e 0031360 " L , " W i t h E x t e n s i 0031400 o n " L , " " L ] ; \r \t I F N 0031420 O T o k T H E N S I G N A 0031440 L a b b r t ; \r \t o k _ o p e 0031460 n F [ s ] ; \r \t p n t _ N I L ; 0031500 \r \t p i n s _ N I L ; \r \t d w C 0031520 n t _ m a x N N _ 0 ; \r \t n n L 0031540 i s t _ N I 376 001 \0 270 356 L ; \r \t W 0031560 H I L E N O T o k D O \r \t 0031600 [ o k , s , ] _ t y p e I n 0031620 [ " N o S u c h F i l e " L 0031640 , " T y p e F i l e N a m e 0031660 " L , \r \t \t \t " W i t h E x t 0031700 e n s i o n " L ] ; \r \t I F 0031720 N O T o k T H E N S I G 0031740 N A L a b b r t ; \r \t o k 0031760 _ o p e n F [ s ] ; \r \t E N D L 0032000 O O P ; \r \r \t t e r m C h a r _ 0032020 d u m m y t c ; \r \t D O \r \t 0032040 [ t y p , s , a ] _ s c a n [ ] 0032060 ; \r \t I F t y p = f e n d 0032100 T H E N E X I T ; \r \t I 0032120 F t y p = c o m m t T H E N 0032140 U N T I L t y p = 376 001 \0 @ 216 0032160 l e n d D O [ t y p , , ] _ 0032200 s c a n [ ] ; E N D L O O P ; \r 0032220 \t I F t y p = l e n d T 0032240 H E N L O O P ; \r \t I F 0032260 t y p = l p a r T H E N \r \t 0032300 B E G I N \r \t \t d e f p a 0032320 r m _ r e a d N u m [ ] ; \r \t \t 0032340 c h e c k F o r C h r [ ' ) ] ; 0032360 \r \t \t [ t y p , , ] _ s c a n [ 0032400 ] ; \r \t \t I F t y p # l e n d 0032420 T H E N S I G N A L f i l 0032440 e E r r ; \r \t E N D \r \t 0032460 E L S E I F t y p # i d 0032500 e n t T H E N S I G N A L 0032520 f i l e E r r \r \t E L S E \r 0032540 \t B E G I N \r \t \t p a r 0032560 376 001 \0 327 035 m _ d e f p a r m ; \r 0032600 \t \t e n t e r P i n [ o u t , s 0032620 ] ; \r \t \t [ t y p , , ] _ s c a 0032640 n [ ] ; \r \t \t I F t y p = l p 0032660 a r T H E N \r \t \t B E 0032700 G I N \r \t \t \t p a r m _ r e a d 0032720 N u m [ ] ; \r \t \t \t c h e c k F 0032740 o r C h r [ ' ) ] ; \r \t \t \t [ t 0032760 y p , , ] _ s c a n [ ] ; \r \t \t 0033000 E N D ; \r \t \t I F t y 0033020 p # c o l o n T H E N S I G 0033040 N A L f i l e E r r ; \r \t \t I 0033060 F N O T p a r m I N p a 0033100 r m a C n t T H E N S I G N 0033120 A L f i l e E r r ; \r \t \t n o 0033140 r C n t _ 0 ; \r \t \t D O \r \t \t 0033160 [ t y p 376 001 \0 _ k , s , a ] _ 0033200 s c a n [ ] ; \r \t \t I F t 0033220 y p = l b r k T H E N \r \t \t 0033240 B E G I N \r \t \t \t [ t y p 0033260 , s , a ] _ s c a n [ ] ; \r \t \t 0033300 \t I F t y p # i d e n t T H 0033320 E N S I G N A L f i l e E r 0033340 r ; \r \t \t \t e n t e r P i n [ f 0033360 i r s t A n d , s ] ; \r \t \t \t n 0033400 o r C n t _ n o r C n t + 1 ; \r 0033420 \t \t \t D O \r \t \t \t [ t y p , 0033440 s , a ] _ s c a n [ ] ; \r \t \t \t 0033460 I F t y p = r b r k T H 0033500 E N E X I T ; \r \t \t \t I F 0033520 t y p # i d e n t T H E N 0033540 S I G N A L f i l e E r r ; \r 0033560 \t \t \t e n t e r 376 001 \0 Y 320 P 0033600 i n [ a n d , s ] ; \r \t \t \t E N 0033620 D L O O P ; \r \t \t \t L O O P ; \r 0033640 \t \t E N D ; \r \t \t I 0033660 F t y p = l e n d T H E N 0033700 E X I T ; \r \t \t I F t y p 0033720 # i d e n t T H E N S I G N 0033740 A L f i l e E r r ; \r \t \t 0033760 n o r C n t _ n o r C n t + 1 ; 0034000 \r \t \t e n t e r P i n [ n o 0034020 r , s ] ; \r \t \t E N D L O O P ; 0034040 \r \t \t g c _ G e t S p a c e [ S 0034060 I Z E [ g a t e C h a r a c [ n 0034100 o r C n t ] ] ] ; \r \t \t g c . n 0034120 o r C n t _ n o r C n t ; \r \t \t 0034140 i n C n t _ i _ 0 ; \r \t \t p n p 0034160 _ p i n s ; \r \t \t W H I L E 376 0034200 001 \0 m 254 p n p # N I L D O \r \t 0034220 \t S E L E C T p n p . t y 0034240 p e F R O M \r \t \t \t o u t = 0034260 > { p n p _ p n p . n x t ; L 0034300 O O P } ; \r \t \t \t n o r = > 0034320 { i n C n t _ i n C n t + 1 ; g 0034340 c . a n d s [ i ] _ 1 ; i _ i + 0034360 1 ; p n p _ p n p . n x t } ; \r 0034400 \t \t \t f i r s t A n d = > B 0034420 E G I N \r \t \t \t \t a _ 1 ; \r \t \t 0034440 \t \t i n C n t _ i n C n t + 1 ; 0034460 \r \t \t \t \t p n p _ p n p . n x t 0034500 ; \r \t \t \t \t W H I L E p n p # 0034520 N I L A N D p n p . t y p e 0034540 = a n d D O \r \t \t \t \t a _ 0034560 a + 1 ; \r \t \t \t \t i n C n t 0034600 _ i n C 376 001 \0 310 376 n t + 1 ; \r \t 0034620 \t \t \t p n p _ p n p . n x t 0034640 ; \r \t \t \t \t E N D L O O P ; \r \t 0034660 \t \t \t g c . a n d s [ i ] _ a ; 0034700 \r \t \t \t \t i _ i + 1 ; \r \t \t \t 0034720 E N D ; \r \t \t \t E N D C A 0034740 S E ; \r \t \t E N D L O O P ; \r \t 0034760 \t g c . i n C n t _ i n C n t ; 0035000 \r \t \t g a t _ g e t G a t e [ g 0035020 c , p a r m ] ; \r \t \t g p _ g e 0035040 t N e w G a t e L i s t [ i n C 0035060 n t ] ; \r \t \t i _ 0 ; \r \t \t p n 0035100 p _ p i n s ; \r \t \t a _ p n p . 0035120 n o d e ; \r \t \t m a x N N _ M A 0035140 X [ m a x N N , a ] ; \r \t \t g p 0035160 . o u t N o d e _ a ; \r \t \t p n 0035200 p _ p n p . n x t 376 001 \0 M 006 ; \r 0035220 \t \t W H I L E p n p # N I L 0035240 D O \r \t \t a _ p n p . n o d 0035260 e ; \r \t \t g p . n o d e s [ 0035300 i ] _ a ; \r \t \t m a x N N _ 0035320 M A X [ m a x N N , a ] ; \r \t \t 0035340 i _ i + 1 ; \r \t \t p n p 0035360 _ p n p . n x t ; \r \t \t E N D L 0035400 O O P ; \r \t \t d w C n t _ d w C 0035420 n t + i n C n t + 1 ; \r \t \t g p 0035440 . g a t _ g a t ; \r \t \t g p . n 0035460 x t _ N I L ; \r \t \t I F p n t 0035500 = N I L T H E N p n t _ g p 0035520 E L S E m o s t R e c e n t 0035540 . n x t _ g p ; \r \t \t m o s t R 0035560 e c e n t _ g p ; \r \t \t f r e e 0035600 u p P i n s [ ] ; \r \t 376 001 0035620 \0 247 252 E N D ; \r \t E N D L O O 0035640 P ; \r E N D ; \r c h e c 0035660 k F o r C h r : P R O C E D U R 0035700 E [ c : C H A R A C T E R ] = 0035720 \r B E G I N \r \t c h r : 0035740 C H A R A C T E R ; \r \t W H I L 0035760 E ( c h r _ r e a d C h r [ ] 0036000 ) = ' O R c h r = ' , 0036020 O R c h r = 1 1 C D O E 0036040 N D L O O P ; \r \t I F c h r # 0036060 c T H E N S I G N A L f i 0036100 l e E r r ; \r E N D ; \r 0036120 o p e n F : P R O C E D U R E 0036140 [ f n a m e : S T R I N G ] \r 0036160 \t R E T U R N S [ B O O L E A 0036200 N ] = \r B E G I N \r \t 0036220 I F 376 001 \0 g 323 N O T D i r e 0036240 c t o r y L o o k u p [ @ f p , 0036260 f n a m e , F A L S E ] T 0036300 H E N R E T U R N [ F A L S E 0036320 ] ; \r \t f H a n d l e _ N e 0036340 w B y t e S t r e a m [ f n a m 0036360 e , R e a d ] ; \r \t R E T U R 0036400 N [ T R U E ] ; \r E N D 0036420 ; \r r e a d C h r : P R O C E D 0036440 U R E R E T U R N S [ C H A R 0036460 A C T E R ] = \r B E G 0036500 I N \r \t c : C H A R A C T E R _ 0036520 t e r m C h a r ; \r \t t e r m C 0036540 h a r _ d u m m y t c ; \r \t I F 0036560 c # d u m m y t c T H E N 0036600 R E T U R N [ c ] ; \r \t I F N 0036620 O T f H a n d 376 001 \0 H 210 l e . 0036640 e n d o f [ f H a n d l e ] T 0036660 H E N R E T U R N [ f H a n d 0036700 l e . g e t [ f H a n d l e ] ] 0036720 ; \r \t R E T U R N [ 1 5 C ] ; \r 0036740 E N D ; \r r e a d N u m 0036760 : P R O C E D U R E R E T U R 0037000 N S [ i : I N T E G E R ] = \r 0037020 B E G I N \r \t c : C H A 0037040 R A C T E R ; \r \t i _ 0 ; \r \t W 0037060 H I L E ( c _ r e a d C h r [ 0037100 ] ) = ' O R c = ' , 0037120 O R c = 1 1 C D O E N D L 0037140 O O P ; \r \t W H I L E c I N 0037160 [ ' 0 . . ' 9 ] D O \r \t 0037200 i _ i * 1 0 + ( c - ' 0 ) ; \r \t 0037220 c _ r e a d C h r [ ] 376 001 \0 0037240 361 305 ; \r \t E N D L O O P ; \r \t t 0037260 e r m C h a r _ c ; \r E 0037300 N D ; \r s c a n : P R O C E D U 0037320 R E R E T U R N S [ t : i t e 0037340 m T y p e , s : S T R I N G , i 0037360 : I N T E G E R ] = \r 0037400 B E G I N \r \t c : C H A R A C T 0037420 E R ; \r \t s s : S T R I N G _ [ 0037440 1 0 0 ] ; \r \t i _ 0 ; \r \t s _ N 0037460 I L ; \r \t W H I L E ( c _ r e 0037500 a d C h r [ ] ) = ' O R 0037520 c = ' , O R c = 1 1 C D 0037540 O E N D L O O P ; \r \t t _ n u 0037560 m ; \r \t I F N O T ( c I N 0037600 [ ' 0 . . ' 9 ] O R c I 0037620 N [ ' a . . ' z ] O R c 0037640 I N 376 001 \0 ' > [ ' A . . ' Z ] 0037660 ) T H E N \r \t B E G I 0037700 N \r \t \t S E L E C T c F R O 0037720 M \r \t \t \t ' , , ' = > t _ 0037740 s e p ; \r \t \t \t ' : = > t _ 0037760 c o l o n ; \r \t \t \t 1 5 C , ' ; 0040000 = > t _ l e n d ; \r \t \t \t ' 0040020 ( = > t _ l p a r ; \r \t \t \t 0040040 ' [ = > t _ l b r k ; \r \t \t 0040060 \t ' ] = > t _ r b r k ; \r \t 0040100 \t \t ' ) = > t _ r p a r ; \r 0040120 \t \t \t ' @ = > t _ f e n d ; 0040140 \r \t \t \t ' - = > t _ c o m m 0040160 t ; \r \t \t E N D C A S E = > 0040200 S I G N A L f i l e E r r ; \r 0040220 \t \t R E T U R N ; \r \t E 0040240 N D ; \r \t W H 376 001 \0 336 031 I L E 0040260 c I N [ ' 0 . . ' 9 ] O R 0040300 c I N [ ' a . . ' z ] O 0040320 R c I N [ ' A . . ' Z ] 0040340 D O \r \t I F t = n u m T 0040360 H E N \r \t B E G I N \r \t 0040400 \t I F c I N [ ' 0 . . ' 9 0040420 ] T H E N i _ i * 1 0 + ( c 0040440 - ' 0 ) \r \t \t E L S E t _ i 0040460 d e n t ; \r \t E N D ; \r 0040500 \t A p p e n d C h a r [ s s 0040520 , c ] ; \r \t c _ r e a d C h 0040540 r [ ] ; \r \t E N D L O O P ; \r \t 0040560 s _ n e w S t r i n g [ s s ] ; 0040600 \r \t t e r m C h a r _ c ; \r 0040620 E N D ; \r g e t N e w G a t 0040640 e L i s t : P R O C E D 376 001 \0 260 0040660 300 U R E [ c n t : I N T E G E R 0040700 ] R E T U R N S [ L O N G P 0040720 O I N T E R T O G a t e L i 0040740 s t ] = \r B E G I N \r 0040760 \t R E T U R N [ m y Z o n e . N 0041000 E W [ G a t e L i s t [ c n t ] 0041020 ] ] ; \r E N D ; \r \r e n 0041040 t e r P i n : P R O C E D U R E 0041060 [ t y p : p i n T y p e , s : S 0041100 T R I N G ] = \r B E G 0041120 I N \r \t p : L O N G P O I N T 0041140 E R T O p i n D e f ; \r \t p 0041160 p : L O N G P O I N T E R T 0041200 O p i n D e f _ g e t P i n D 0041220 e f [ ] ; \r \t p p ^ _ [ N I L , 0041240 e n t e r N o d e N a m e [ s ] 0041260 , 376 001 \0 \n 025 t y p ] ; \r \t I F 0041300 p i n s = N I L T H E N p i 0041320 n s _ p p \r \t E L S E \r \t 0041340 B E G I N \r \t \t p _ p i n s 0041360 ; \r \t \t W H I L E p . n x t # 0041400 N I L D O p _ p . n x t ; E 0041420 N D L O O P ; \r \t \t p . n x t _ 0041440 p p ; \r \t E N D ; \r 0041460 E N D ; \r g e t P i n D e f 0041500 : P R O C E D U R E R E T U R 0041520 N S [ p : L O N G P O I N T E 0041540 R T O p i n D e f ] = \r 0041560 B E G I N \r \t I F s a v 0041600 e P D = N I L T H E N R E T 0041620 U R N [ m y Z o n e . N E W [ p 0041640 i n D e f ] ] ; \r \t p _ s a v e 0041660 P D ; \r \t s 376 001 \0 & 213 a v e P D 0041700 _ p . n x t ; \r E N D ; 0041720 \r f r e e u p P i n s : P R O C 0041740 E D U R E = \r B E G I 0041760 N \r \t I F s a v e P D = N I L 0042000 T H E N { s a v e P D _ p i 0042020 n s ; p i n s _ N I L ; R E T U 0042040 R N } ; \r \t p n p _ s a v e P D 0042060 ; \r \t W H I L E p n p . n x t 0042100 # N I L D O p n p _ p n p . 0042120 n x t ; E N D L O O P ; \r \t p n 0042140 p . n x t _ p i n s ; \r \t p i n 0042160 s _ N I L ; \r E N D ; \r 0042200 e n t e r N o d e N a m e : P R 0042220 O C E D U R E [ s : S T R I N G 0042240 ] R E T U R N S [ I N T E G E 0042260 R ] = \r B E 376 001 \0 352 x 0042300 G I N \r \t n : I N T E G E R _ 0 0042320 ; \r \t n n : L O N G P O I N T 0042340 E R T O n o d e N a m e L i 0042360 s t _ n n L i s t ; \r \t W H I L 0042400 E n n # N I L D O \r \t I 0042420 F E q u i v a l e n t S t r i 0042440 n g [ s , n n . n a m e ] T H 0042460 E N R E T U R N [ n n . n o d 0042500 e ] ; \r \t n _ M A X [ n , n 0042520 n . n o d e ] ; \r \t n n _ n 0042540 n . n x t ; \r \t E N D L O O P ; 0042560 \r \t n _ n + 1 ; \r \t n n _ m y Z 0042600 o n e . N E W [ n o d e N a m e 0042620 L i s t ] ; \r \t n n . n a m e _ 0042640 s ; \r \t n n . n o d e _ n ; \r \t 0042660 n n . n x t _ n n L i s t ; \r \t 0042700 376 \0 ; V 230 n n L i s t _ n n ; \r 0042720 \t R E T U R N [ n ] ; \r 0042740 E N D ; \r \r \r \r E N D . - - 0042760 o f r l i n \r 032 ( 1 7 9 2 ) \r 0043000 377 \0 \0 r l m a i n . m e s a \0 373 0043020 233 i Q \0 \0 376 001 \0 220 024 - - a 0043040 p r o g r a m t o r u n w 0043060 i t h i n C h i p m o n k \r \r 0043100 - - l a s t m o d i f i e d 0043120 b y P e t i t , O c t o b 0043140 e r ? , 1 9 8 1 2 : 2 0 0043160 P M \r - - w r i t t e n b 0043200 y P e t i t , O c t o b e r 0043220 9 , 1 9 8 1 2 : 0 4 P 0043240 M \r \r D I R E C T O R Y \r p 0043260 p d d e f s , \r p p d d d e 0043300 f s , \r p p d e f s , \r 0043320 r l d e f s , \r Z o n e A l 0043340 l o c D e f s , \r S t r i n 0043360 g D e f s ; \r \r r l m a i n : 0043400 P R O G R A M \r I M P O R T 0043420 S p p d d e f s , 376 001 \0 236 G 0043440 p p d e f s , Z o n e A l l o 0043460 c D e f s , p p d d d e f s , 0043500 r l d e f s \r - - E X P O R 0043520 T S r l d e f s - - = \r 0043540 B E G I N O P E N p p d d e 0043560 f s , r l d e f s , p p d d 0043600 d e f s , p p d e f s , S t 0043620 r i n g D e f s ; \r \r \r 0043640 d o w n W i r e A r r a y : T Y 0043660 P E = R E C O R D [ S E Q U 0043700 E N C E C O M P U T E D C A 0043720 R D I N A L O F d o w n W i 0043740 r e R e c ] ; \r d w A r : L 0043760 O N G P O I N T E R T O d 0044000 o w n W i r e A r r a y ; \r 0044020 n o d e A r r a y : T Y P E 0044040 376 001 \0 200 345 = R E C O R D [ S 0044060 E Q U E N C E C O M P U T E D 0044100 C A R D I N A L O F I N T 0044120 E G E R ] ; \r n o d e A r : 0044140 L O N G P O I N T E R T O 0044160 n o d e A r r a y ; \r h 0044200 o r L i n e A r r a y : T Y P E 0044220 = R E C O R D [ S E Q U E N 0044240 C E C O M P U T E D C A R D 0044260 I N A L O F h L i n e R e c 0044300 ] ; \r h l A r : L O N G P 0044320 O I N T E R T O h o r L i n 0044340 e A r r a y ; \r \r h L e v : 0044360 I N T E G E R ; \r d o w n W 0044400 i r e C n t , m a x N o d e N u 0044420 m : I N T E G E R ; \r m a x 0044440 x , m a x 376 001 \0 335 { y s , m i n 0044460 y s : I N T E G E R _ 0 ; \r 0044500 m i n e , l l : L O N G P O I 0044520 N T E R T O l i s t ; \r \r \r 0044540 d o S w i t c h : P R O C E D U 0044560 R E [ i , j : I N T E G E R ] 0044600 = \r B E G I N \r \t t : I 0044620 N T E G E R ; \r \t t _ d w A r [ 0044640 i ] . n o d e ; d w A r [ i ] . 0044660 n o d e _ d w A r [ j ] . n o d 0044700 e ; d w A r [ j ] . n o d e _ t 0044720 ; \r \t t _ d w A r [ i ] . d w L 0044740 e f t ; d w A r [ i ] . d w L e 0044760 f t _ d w A r [ j ] . d w L e f 0045000 t ; d w A r [ j ] . d w L e f t 0045020 _ t ; \r \t t _ d w A r [ i ] . d 0045040 w R i g h t ; d w A 376 001 \0 360 267 r 0045060 [ i ] . d w R i g h t _ d w A r 0045100 [ j ] . d w R i g h t ; d w A r 0045120 [ j ] . d w R i g h t _ t ; \r \t 0045140 I F ( t _ d w A r [ i ] . d w 0045160 L e f t ) # 0 T H E N d w A 0045200 r [ t ] . d w R i g h t _ i ; \r 0045220 \t I F ( t _ d w A r [ j ] . d 0045240 w L e f t ) # 0 T H E N d w 0045260 A r [ t ] . d w R i g h t _ j ; 0045300 \r \t I F ( t _ d w A r [ i ] . 0045320 d w R i g h t ) # 0 T H E N 0045340 d w A r [ t ] . d w L e f t _ i 0045360 ; \r \t I F ( t _ d w A r [ j ] 0045400 . d w R i g h t ) # 0 T H E N 0045420 d w A r [ t ] . d w L e f t _ 0045440 j ; \r E N D ; \r r u n 376 0045460 001 \0 g 301 L e n g t h : P R O C E 0045500 D U R E [ i : I N T E G E R ] 0045520 R E T U R N S [ I N T E G E R ] 0045540 = \r B E G I N \r \t l , 0045560 r : I N T E G E R ; \r \t l _ d w 0045600 A r [ i ] . d w L e f t ; \r \t r 0045620 _ d w A r [ i ] . d w R i g h t 0045640 ; \r \t I F l = 0 T H E N l 0045660 _ i E L S E \r \t U N T I L 0045700 d w A r [ l ] . d w L e f t = 0 0045720 D O l _ d w A r [ l ] . d w 0045740 L e f t ; E N D L O O P ; \r \t I 0045760 F r = 0 T H E N r _ i E 0046000 L S E \r \t U N T I L d w A r 0046020 [ r ] . d w R i g h t = 0 D O 0046040 r _ d w A r [ r ] . d w R i g 0046060 h t ; E 376 001 \0 250 237 N D L O O P ; 0046100 \r \t U N T I L d w A r [ l ] . 0046120 f i x e d O R d w A r [ l ] 0046140 . r i g h t E n d = 0 O R d 0046160 w A r [ l + 1 ] . f i x e d D 0046200 O l _ l + 1 ; E N D L O O P ; 0046220 \r \t U N T I L d w A r [ r ] . 0046240 f i x e d O R d w A r [ r ] 0046260 . l e f t E n d = 0 O R d w 0046300 A r [ r - 1 ] . f i x e d D O 0046320 r _ r - 1 ; E N D L O O P ; \r 0046340 \t R E T U R N [ r - l ] ; \r 0046360 E N D ; \r \r m o v e D o w n 0046400 : P R O C E D U R E [ c u r , a 0046420 m t : I N T E G E R ] R E T U 0046440 R N S [ I N T E G E R ] = \r 0046460 B E G I N \r 376 001 \0 361 @ \t t 0046500 : I N T E G E R ; \r \t I F a m 0046520 t = 0 T H E N \r \t B E 0046540 G I N \r \t \t a m t _ 1 0 0 0 0 ; 0046560 \r \t \t F O R i : I N T E G E R 0046600 I N [ 1 . . d o w n W i r e 0046620 C n t ] D O \r \t \t t _ h l 0046640 A r [ i ] . d i s t a n c e ; \r 0046660 \t \t I F t > = 0 A N D 0046700 t < a m t T H E N a m t _ t 0046720 ; \r \t \t E N D L O O P ; \r \t \t a 0046740 m t _ I F a m t = 1 0 0 0 0 0046760 T H E N 1 E L S E a m t + 0047000 1 ; \r \t E N D ; \r \t F O 0047020 R i : I N T E G E R I N [ 0047040 1 . . d o w n W i r e C n t ] 0047060 D O \r \t I F h l A r [ 376 001 0047100 \0 231 % i ] . b t y p = n o n e 0047120 T H E N L O O P ; \r \t t _ 0047140 h l A r [ i ] . d i s t a n c e 0047160 ; \r \t t _ t - a m t ; \r \t 0047200 I F t < - 3 T H E N h l 0047220 A r [ i ] _ [ n o n e , - 5 ] \r 0047240 \t E L S E h l A r [ i ] 0047260 . d i s t a n c e _ t ; \r \t E N 0047300 D L O O P ; \r \t R E T U R N [ c 0047320 u r + a m t ] ; \r E N D 0047340 ; \r \r f i n d G a p : P R O C E 0047360 D U R E [ s t r t : I N T E G E 0047400 R ] R E T U R N S [ o k : B O 0047420 O L E A N , l e , r e : I N T E 0047440 G E R ] = \r B E G I N 0047460 \r \t o k _ T R U E ; \r \t U N T I 0047500 L s 376 001 \0 355 i t r t > d o w n 0047520 W i r e C n t O R h l A r [ 0047540 s t r t ] . d i s t a n c e < 0 0047560 D O \r \t \t s t r t _ s t r t + 0047600 1 ; E N D L O O P ; \r \t l e _ r 0047620 e _ s t r t ; \r \t I F s t r t 0047640 > d o w n W i r e C n t T H E 0047660 N B E G I N o k _ F A L S E 0047700 ; R E T U R N ; E N D ; \r \t U N 0047720 T I L s t r t > d o w n W i r 0047740 e C n t O R h l A r [ s t r 0047760 t ] . d i s t a n c e > = 0 D 0050000 O \r \t \t s t r t _ s t r t + 1 ; 0050020 E N D L O O P ; \r \t r e _ s t r 0050040 t - 1 ; \r E N D ; \r \r w 0050060 i r e O n e : P R O C E D U R E 0050100 [ l e , r e : I 376 001 \0 7 333 N T E 0050120 G E R ] R E T U R N S [ g o t 0050140 O n e , a l l D o n e : B O O L 0050160 E A N ] = \r B E G I N 0050200 \r \t i , f a v , l e n , t , r e 0050220 l L e v , r r : I N T E G E R ; 0050240 \r \t p o l y W i r e : B O O L E 0050260 A N _ F A L S E ; \r \t f a v P o 0050300 l y , t b , w r b l : B O O L E 0050320 A N ; \r \t g o t O n e _ F A L S 0050340 E ; \r \t a l l D o n e _ T R U E 0050360 ; \r \t F O R i I N [ 1 . . 0050400 d o w n W i r e C n t ] D O \r 0050420 \t I F N O T ( d w A r [ 0050440 i ] . w i r e d L e f t A N D 0050460 d w A r [ i ] . w i r e d R i 0050500 g h t ) \r \t \t T H E N a 376 001 \0 0050520 \b { l l D o n e _ F A L S E ; \r 0050540 \t [ w r b l , t b , t ] _ w 0050560 i r e a b l e [ i , l e , r e ] 0050600 ; \r \t I F w r b l A N D 0050620 t > 0 T H E N \r \t B 0050640 E G I N \r \t \t I F g o t O n e 0050660 T H E N \r \t \t B E G I 0050700 N \r \t \t \t I F t < l e n T H 0050720 E N { f a v _ i ; l e n _ t ; 0050740 f a v P o l y _ t b } ; \r \t \t 0050760 E N D \r \t \t E L S E \r \t 0051000 \t B E G I N \r \t \t \t f a 0051020 v _ i ; \r \t \t \t l e n _ t ; \r \t 0051040 \t \t f a v P o l y _ t b ; \r \t \t 0051060 \t g o t O n e _ T R U E ; \r \t \t 0051100 E N D ; \r \t E N 0051120 D ; 376 001 \0 254 314 \r \t E N D L O O P 0051140 ; \r \t I F N O T g o t O n e 0051160 T H E N \r \t B E G I N 0051200 \r \t \t I F l e < = 1 A N D 0051220 r e > = d o w n W i r e C n t 0051240 T H E N a l l D o n e _ T R U 0051260 E ; \r \t \t R E T U R N ; \r \t 0051300 E N D ; \r \t i _ f i n a l D 0051320 W [ f a v ] ; \r \t r r _ i + l e 0051340 n ; \r \t p o l y W i r e _ f a v 0051360 P o l y ; \r \t I F i # f a v 0051400 T H E N d o S w i t c h [ i , 0051420 f a v ] ; \r \t I F p o l y W i 0051440 r e A N D d w A r [ r r ] . 0051460 t o p W i r e a b l e T H E N 0051500 - - a s s u m e s i i s 0051520 o u t p u t 376 001 \0 215 024 \r \t 0051540 B E G I N \r \t \t t _ d w A r 0051560 [ i ] . d w R i g h t ; \r \t \t d 0051600 o T o p W i r e s [ i , r r ] ; 0051620 \r \t \t d w A r [ r r ] . w i r e 0051640 d L e f t _ d w A r [ r r ] . w 0051660 i r e d R i g h t _ d w A r [ r 0051700 r ] . f i x e d _ T R U E ; \r \t 0051720 \t d w A r [ i ] . w i r e d L e 0051740 f t _ d w A r [ i ] . w i r e d 0051760 R i g h t _ d w A r [ i ] . f i 0052000 x e d _ T R U E ; \r \t \t I F d 0052020 w A r [ i ] . d w L e f t = 0 0052040 A N D d w A r [ r r ] . d w R 0052060 i g h t = 0 T H E N R E T U 0052100 R N ; \r \t \t d w A r [ r r ] . w 0052120 i r e d L e f t _ d w A 376 001 \0 336 0052140 227 r [ r r ] . w i r e d R i g h 0052160 t _ F A L S E ; \r \t \t t _ d w A 0052200 r [ i ] . d w L e f t ; \r \t \t d 0052220 w A r [ r r ] . d w L e f t _ t 0052240 ; \r \t \t I F t # 0 T H E N 0052260 d w A r [ t ] . d w R i g h t _ 0052300 r r ; \r \t \t R E T U R N ; \r \t 0052320 E N D ; \r \t r e l L e v _ 0052340 0 ; \r \t F O R t I N [ i . 0052360 . r r ] D O \r \t S E L E C 0052400 T h l A r [ t ] . b t y p F 0052420 R O M \r \t \t m e t = > I F 0052440 p o l y W i r e T H E N r e 0052460 l L e v _ M A X [ r e l L e v , 0052500 h l A r [ t ] . d i s t a n c e 0052520 + 2 ] \r \t \t \t E L S E r e l L 0052540 e 376 001 \0 034 s v _ M A X [ r e l L 0052560 e v , h l A r [ t ] . d i s t a 0052600 n c e + 3 ] ; \r \t \t p o l y = 0052620 > r e l L e v _ M A X [ r e l 0052640 L e v , h l A r [ t ] . d i s t 0052660 a n c e + 2 ] ; \r \t \t c e l l 0052700 = > I F N O T p o l y W i 0052720 r e T H E N \r \t \t \t r e l L e 0052740 v _ M A X [ r e l L e v , h l A 0052760 r [ t ] . d i s t a n c e + 3 ] 0053000 ; \r \t E N D C A S E ; \r \t E 0053020 N D L O O P ; \r \t t _ i ; \r \t U 0053040 N T I L t = 0 D O \r \t r 0053060 r _ f i n a l D W [ t ] ; \r \t 0053100 I F t # r r T H E N d o 0053120 S w i t c h [ t , r r ] ; \r \t 0053140 d o D o w 376 001 \0 t 312 n W i r e 0053160 [ r r , r e l L e v , ( N O T 0053200 p o l y W i r e ) ] ; \r \t d 0053220 w A r [ r r ] . w i r e d L e f 0053240 t _ d w A r [ r r ] . w i r e d 0053260 R i g h t _ d w A r [ r r ] . f 0053300 i x e d _ T R U E ; \r \t I F 0053320 p o l y W i r e A N D t # 0053340 i T H E N E X I T ; \r \t 0053360 t _ d w A r [ r r ] . d w R i g 0053400 h t ; \r \t E N D L O O P ; \r \t d 0053420 o H W i r e [ i , r r , r e l L 0053440 e v , p o l y W i r e ] ; \r \t I 0053460 F p o l y W i r e T H E N \r 0053500 \t B E G I N \r \t \t I F 0053520 d w A r [ i ] . d w L e f t = 0 0053540 A N D d w A r [ r 376 001 \0 o 260 0053560 r ] . d w R i g h t = 0 T H E 0053600 N R E T U R N ; \r \t \t I F d 0053620 w A r [ r r ] . d w R i g h t # 0053640 0 O R d w A r [ r r ] . l e 0053660 f t E n d # 0 T H E N \r \t \t 0053700 B E G I N \r \t \t \t d w A r 0053720 [ r r ] . w i r e d L e f t _ d 0053740 w A r [ r r ] . w i r e d R i g 0053760 h t _ F A L S E ; \r \t \t \t t _ d 0054000 w A r [ i ] . d w L e f t ; \r \t 0054020 \t \t d w A r [ r r ] . d w L e f 0054040 t _ t ; \r \t \t \t I F t # 0 T 0054060 H E N d w A r [ t ] . d w R i 0054100 g h t _ r r ; \r \t \t \t I F d w 0054120 A r [ r r ] . l e f t E n d # 0 0054140 T H E N d w A r [ r r ] . x 0054160 376 001 \0 326 213 _ d w A r [ r r ] . x 0054200 - 4 ; \r \t \t E N D \r \t \t 0054220 E L S E \r \t \t B E G I 0054240 N \r \t \t \t d w A r [ i ] . w i r 0054260 e d L e f t _ d w A r [ i ] . w 0054300 i r e d R i g h t _ F A L S E ; 0054320 \r \t \t \t d w A r [ i ] . d w R i 0054340 g h t _ 0 ; \r \t \t E N D 0054360 ; \r \t E N D ; \r 0054400 E N D ; \r w i r e a b l e : P R 0054420 O C E D U R E [ i , l e , r e : 0054440 I N T E G E R ] R E T U R N S 0054460 [ B O O L E A N , B O O L E A N 0054500 , I N T E G E R ] = \r 0054520 B E G I N \r \t j : I N T E G E R 0054540 _ i ; \r \t I F d w A r [ i ] . 0054560 w i r e d 376 001 \0 023 360 R i g h t 0054600 A N D d w A r [ i ] . w i r e 0054620 d L e f t T H E N \r \t \t R E T 0054640 U R N [ F A L S E , F A L S E , 0054660 0 ] ; \r \t I F d w A r [ i ] . 0054700 d w R i g h t = i + 1 T H E N 0054720 \r \t B E G I N \r \t \t I F 0054740 i + 1 > r e O R i < l e 0054760 T H E N R E T U R N [ F A L S 0055000 E , F A L S E , 0 ] ; \r \t \t R E 0055020 T U R N [ T R U E , T R U E , 1 0055040 ] ; \r \t E N D ; \r \t I F 0055060 d w A r [ i ] . d w L e f t # 0055100 0 O R i + d w A r [ i ] . r 0055120 i g h t E n d < l e T H E N \r 0055140 \t \t R E T U R N [ F A L S E , F 0055160 A L S E , 0 ] ; \r \t 376 001 \0 362 210 I 0055200 F i - d w A r [ i ] . l e f t 0055220 E n d > r e T H E N R E T U 0055240 R N [ F A L S E , F A L S E , 0 0055260 ] ; \r \t W H I L E d w A r [ j 0055300 ] . d w R i g h t # 0 D O j 0055320 _ d w A r [ j ] . d w R i g h t 0055340 ; E N D L O O P ; \r \t U N T I L 0055360 d w A r [ i ] . f i x e d O 0055400 R d w A r [ i ] . r i g h t E 0055420 n d = 0 O R d w A r [ i + 1 0055440 ] . f i x e d D O \r \t \t i _ i 0055460 + 1 ; E N D L O O P ; \r \t U N T 0055500 I L d w A r [ j ] . f i x e d 0055520 O R d w A r [ j ] . l e f t 0055540 E n d = 0 O R d w A r [ j - 0055560 1 ] . f i x e d D O \r \t \t j 376 0055600 001 \0 035 273 _ j - 1 ; E N D L O O P 0055620 ; \r \t I F i < l e O R j > 0055640 r e T H E N R E T U R N [ F 0055660 A L S E , F A L S E , 0 ] ; \r \t 0055700 R E T U R N [ T R U E , F A L S 0055720 E , r u n L e n g t h [ i ] ] ; 0055740 \r E N D ; \r d o D o w n 0055760 W i r e : P R O C E D U R E [ d 0056000 w , l e v : I N T E G E R , c o 0056020 n t : B O O L E A N ] = \r 0056040 B E G I N \r \t c o f f : I N 0056060 T E G E R _ 2 ; \r \t l e v _ ( l 0056100 e v + h L e v ) * 2 ; \r \t l l _ 0056120 m a k e L i s t [ m a k e W i r 0056140 e [ l e v - d w A r [ d w ] . y 0056160 + 4 , 4 , p o l ] \r \t \t , d w A 0056200 r [ d w 376 001 \0 271 m ] . x - 2 , d 0056220 w A r [ d w ] . y , 0 , 0 ] ; \r 0056240 \t m i n e _ i n s e r t L i s t 0056260 [ m i n e , l l ] ; \r \t m a x x 0056300 _ M A X [ m a x x , d w A r [ d 0056320 w ] . x + 2 ] ; \r \t I F c o n 0056340 t T H E N \r \t B E G I 0056360 N \r \t \t I F d w A r [ d w ] . 0056400 d w R i g h t = 0 \r \t \t O R 0056420 ( d w A r [ d w ] . d w L e f t 0056440 # 0 A N D d w A r [ d w ] . 0056460 r i g h t E n d > 0 \r \t \t \t A N 0056500 D N O T d w A r [ d w + 1 ] 0056520 . f i x e d ) \r \t \t O R ( d 0056540 w A r [ d w ] . a n d C n t = 1 0056560 A N D d w < d o w n W i r e 0056600 C n t A N D \r \t 376 001 \0 | 362 \t \t 0056620 d w A r [ d w + 1 ] . x - d w A 0056640 r [ d w ] . x < 1 2 ) T H E N 0056660 c o f f _ 6 ; \r \t \t I F d w 0056700 A r [ d w ] . a n d C n t = 1 0056720 A N D d w > 1 A N D \r \t \t \t 0056740 d w A r [ d w ] . x - d w A r [ 0056760 d w - 1 ] . x < 1 2 T H E N 0057000 c o f f _ 2 ; \r \t \t l l _ m a k 0057020 e L i s t [ m a k e P o l y c o 0057040 n [ 8 ] , d w A r [ d w ] . x - 0057060 c o f f , l e v , 0 , 0 ] ; \r \t 0057100 \t m i n e _ i n s e r t L i s t 0057120 [ m i n e , l l ] ; \r \t 0057140 E N D ; \r E N D ; \r d o 0057160 H W i r e : P R O C E D U R E [ 0057200 l , r , l e v : I N T E G E 376 001 0057220 \0 307 343 R , p o l y : B O O L E A 0057240 N ] = \r B E G I N \r \t 0057260 l v : I N T E G E R _ ( l e v + 0057300 h L e v ) * 2 ; \r \t l l _ m a k 0057320 e L i s t [ m a k e W i r e [ d 0057340 w A r [ r ] . x - d w A r [ l ] 0057360 . x , I F p o l y T H E N 0057400 4 E L S E 6 , \r \t \t I F p 0057420 o l y T H E N p o l E L S 0057440 E m e t ] , d w A r [ l ] . x 0057460 , l v , 2 , 0 ] ; \r \t m i n e _ 0057500 i n s e r t L i s t [ m i n e , 0057520 l l ] ; \r \t F O R i : I N T E 0057540 G E R I N [ l . . r ] D O 0057560 \r \t h l A r [ i ] _ I F p 0057600 o l y T H E N [ p o l y , l 0057620 e v + 376 001 \0 214 k 2 ] E L S E 0057640 [ m e t , l e v + 4 ] ; \r \t E N 0057660 D L O O P ; \r \t m a x y s _ M A 0057700 X [ m a x y s , l v + ( I F p 0057720 o l y T H E N 4 E L S E 0057740 8 ) ] ; \r E N D ; \r d o 0057760 T o p W i r e s : P R O C E D U 0060000 R E [ l , r : I N T E G E R ] 0060020 = \r B E G I N \r \t l l _ 0060040 m a k e L i s t [ m a k e W i r 0060060 e [ A B S [ d w A r [ r ] . t y 0060100 - d w A r [ l ] . y ] , 4 , p o 0060120 l ] , d w A r [ l ] . x - 2 , \r 0060140 \t \t M I N [ d w A r [ r ] . t y 0060160 , d w A r [ l ] . y ] , 0 , 0 ] 0060200 ; \r \t m i n e _ i n s e r t L i 0060220 s t [ m i n e , 376 001 \0 244 215 l l ] 0060240 ; \r \t l l _ m a k e L i s t [ m 0060260 a k e W i r e [ d w A r [ r ] . 0060300 t x - d w A r [ l ] . x + 2 , 4 0060320 , p o l ] \r \t \t , d w A r [ l ] 0060340 . x , M A X [ d w A r [ r ] . t 0060360 y , d w A r [ l ] . y ] - 4 , 2 0060400 , 0 ] ; \r \t m i n e _ i n s e r 0060420 t L i s t [ m i n e , l l ] ; \r 0060440 E N D ; \r f i n a l D W 0060460 : P R O C E D U R E [ i : I N T 0060500 E G E R ] R E T U R N S [ I N 0060520 T E G E R ] = \r B E G 0060540 I N \r \t I F d w A r [ i ] . f 0060560 i x e d T H E N R E T U R N 0060600 [ i ] ; \r \t I F d w A r [ i ] 0060620 . d w L e f t = 0 T H E 376 001 \0 0060640 F A N { U N T I L d w A r [ 0060660 i ] . f i x e d O R \r \t \t d w 0060700 A r [ i ] . r i g h t E n d = 0 0060720 O R d w A r [ i + 1 ] . f i 0060740 x e d D O i _ i + 1 ; E N D 0060760 L O O P ; R E T U R N [ i ] ; } 0061000 ; \r \t U N T I L d w A r [ i ] 0061020 . f i x e d O R d w A r [ i 0061040 ] . l e f t E n d = 0 O R d 0061060 w A r [ i - 1 ] . f i x e d D 0061100 O i _ i - 1 ; E N D L O O P ; 0061120 \r \t R E T U R N [ i ] ; \r 0061140 E N D ; \r \r c o n v : P R O C 0061160 E D U R E [ s : S T R I N G ] 0061200 R E T U R N S [ i : I N T E G E 0061220 R ] = \r B E G I N \r \t 0061240 i _ 376 001 \0 254 244 0 ; \r \t F O R j 0061260 : C A R D I N A L I N [ 0 . 0061300 . s . l e n g t h ) D O \r \t 0061320 I F N O T s [ j ] I N 0061340 [ ' 0 . . ' 9 ] T H E N { I 0061360 F s [ j ] # 1 5 C A N D s 0061400 [ j ] # 3 3 C T H E N \r \t \t i 0061420 _ - 1 ; E X I T ; } ; \r \t i 0061440 _ i * 1 0 + ( s [ j ] - ' 0 ) ; 0061460 \r \t E N D L O O P ; \r E 0061500 N D ; \r \r \r - - M a i n 0061520 P r o g r a m 0061540 \r \r m y Z o n e _ Z o n 0061560 e A l l o c D e f s . G e t A n 0061600 X M Z o n e [ ] ; \r \r B E G 0061620 I N \r E N A B L E B E G I 0061640 N f i l e E 376 001 \0 I 302 r r = 0061660 > G O T O f l e r ; a b b r 0061700 t = > G O T O a b o r t s 0061720 ; E N D ; - - f o r e x 0061740 i t s \r \r o k , a l l D o n 0061760 e , d i d O n e , t w : B O O L 0062000 E A N ; \r i , j , k , a C n 0062020 t , a i : I N T E G E R ; \r 0062040 l e , r e : I N T E G E R ; \r 0062060 g p , t g p : L O N G P O I 0062100 N T E R T O G a t e L i s t 0062120 ; \r x x , y y : l o c N u m 0062140 _ 0 ; \r \r m i n e _ N I L ; 0062160 \r \r [ g p , d o w n W i r e 0062200 C n t , m a x N o d e N u m ] _ 0062220 i n p u t C i r c u i t [ ] ; \r 0062240 I F g p = N I L 376 001 \0 | 0062260 204 T H E N G O T O n o F i l 0062300 e ; \r \r t g p _ g p ; \r 0062320 W H I L E t g p # N I L D O 0062340 \r \t t g p . x _ x x ; \r \t t g p 0062360 . y _ y y ; \r \t m a x x _ M A X 0062400 [ m a x x , x x + t g p . g a t 0062420 . c e l l . o b . s i z e [ 0 ] 0062440 ] ; \r \t x x _ x x + t g p . g a 0062460 t . o u t . x + 2 ; \r \t I F t 0062500 g p . n x t # N I L T H E N 0062520 x x _ x x + t g p . n x t . g a 0062540 t . l S p a c * 2 ; \r \t i _ t g 0062560 p . g a t . c e l l . o b . s i 0062600 z e [ 1 ] ; \r \t m a x y s _ M A 0062620 X [ m a x y s , i ] ; \r \t m i n 0062640 y s _ I F m i n y s = 0 T H 0062660 E 376 001 \0 320 ! N i E L S E M 0062700 I N [ m i n y s , i ] ; \r \t t g 0062720 p _ t g p . n x t ; \r E N D 0062740 L O O P ; \r \r t g p _ g p ; 0062760 \r W H I L E t g p # N I L 0063000 D O \r \t a n y C h a n g e s _ 0063020 s i n c e I O c h a n g e s _ T 0063040 R U E ; \r \t l l _ m a k e L i s 0063060 t [ t g p . g a t . c e l l . o 0063100 b . p . a n o t h e r m e [ t g 0063120 p . g a t . c e l l . o b ] \r \t 0063140 \t , t g p . x , t g p . y , 0 , 0063160 0 ] ; \r \t m i n e _ i n s e r t 0063200 L i s t [ m i n e , l l ] ; \r \t 0063220 I F t g p . n x t # N I L T 0063240 H E N \r \t B E G I N \r \t 0063260 \t i _ y y + 376 001 \0 217 241 M I N [ t 0063300 g p . g a t . c e l l . o b . s 0063320 i z e [ 1 ] , t g p . n x t . g 0063340 a t . c e l l . o b . s i z e [ 0063360 1 ] ] ; \r \t \t j _ t g p . x + t 0063400 g p . g a t . g n d . x ; \r \t \t 0063420 l l _ m a k e L i s t [ m a k e 0063440 W i r e [ t g p . n x t . x + 4 0063460 - j , 6 , m e t ] , j , i - 6 , 0063500 2 , 0 ] ; \r \t \t m i n e _ i n s 0063520 e r t L i s t [ m i n e , l l ] 0063540 ; \r \t E N D ; \r \t t g p 0063560 _ t g p . n x t ; \r E N D L 0063600 O O P ; \r \r d w A r _ m y Z 0063620 o n e . N E W [ d o w n W i r e 0063640 A r r a y [ d o w n W i r e C n 0063660 t + 1 ] ] ; \r t g 376 001 \0 \0 212 0063700 p _ g p ; \r i _ 1 ; \r W 0063720 H I L E t g p # N I L D O \r 0063740 \t j _ 0 ; \r \t F O R k I N 0063760 [ 0 . . t g p . g a t . c h a r 0064000 a c . n o r C n t ) D O \r \t 0064020 a C n t _ t g p . g a t . c h 0064040 a r a c . a n d s [ k ] ; \r \t 0064060 F O R a i I N [ 0 . . a 0064100 C n t ) D O \r \t d w A 0064120 r [ i ] . x _ t g p . x + t 0064140 g p . g a t . i n s [ j ] . x ; 0064160 \r \t d w A r [ i ] . y 0064200 _ t g p . y + t g p . g a t . 0064220 i n s [ j ] . y ; \r \t d 0064240 w A r [ i ] . n o d e _ t g 0064260 p . n o d e s [ j ] ; \r \t 0064300 376 001 \0 354 } d w A r [ i ] . f i 0064320 x e d _ a C n t = 1 ; \r \t 0064340 d w A r [ i ] . a n d C n 0064360 t _ a C n t ; \r \t d 0064400 w A r [ i ] . l e f t E n d _ 0064420 a i ; \r \t d w A r [ i 0064440 ] . r i g h t E n d _ a C n 0064460 t - a i - 1 ; \r \t d w A 0064500 r [ i ] . w i r e d L e f t _ d 0064520 w A r [ i ] . w i r e d R i g h 0064540 t _ F A L S E ; \r \t t w 0064560 _ j = 0 A N D t g p . g a 0064600 t . f i r s t I n T o p A v a i 0064620 l ; \r \t d w A r [ i ] . 0064640 t o p W i r e a b l e _ t w ; \r 0064660 \t I F t w T H E N \r 0064700 \t 376 001 \0 235 211 B E G I 0064720 N \r \t \t d w A r [ i ] . t x _ 0064740 t g p . x + t g p . g a t . f 0064760 i r s t I n T o p . x ; \r \t \t d 0065000 w A r [ i ] . t y _ t g p . 0065020 y + t g p . g a t . f i r s t I 0065040 n T o p . y ; \r \t E 0065060 N D ; \r \t i _ i + 1 ; \r 0065100 \t j _ j + 1 ; \r \t E 0065120 N D L O O P ; \r \t E N D L O O P 0065140 ; \r \t d w A r [ i ] . x _ t 0065160 g p . x + t g p . g a t . o u t 0065200 . x ; \r \t d w A r [ i ] . y _ 0065220 t g p . y + t g p . g a t . o 0065240 u t . y ; \r \t d w A r [ i ] . n 0065260 o d e _ t g p . o u t N o d 0065300 e ; \r \t d w A r [ i 376 001 \0 274 331 ] 0065320 . f i x e d _ T R U E ; \r \t 0065340 d w A r [ i ] . a n d C n t _ 0065360 1 ; \r \t d w A r [ i ] . w i r 0065400 e d L e f t _ d w A r [ i ] . w 0065420 i r e d R i g h t _ F A L S E ; 0065440 \r \t i _ i + 1 ; \r \t t g p _ t g 0065460 p . n x t ; \r E N D L O O P 0065500 ; \r \r n o d e A r _ m y Z o 0065520 n e . N E W [ n o d e A r r a y 0065540 [ m a x N o d e N u m + 1 ] ] ; 0065560 \r F O R i I N [ 0 . . 0065600 m a x N o d e N u m ] D O n 0065620 o d e A r [ i ] _ 0 ; E N D L O 0065640 O P ; \r F O R i I N [ 0065660 1 . . d o w n W i r e C n t ] 0065700 D O \r a i _ d w A r [ 376 0065720 001 \0 k 232 i ] . n o d e ; \r 0065740 k _ n o d e A r [ a i ] ; \r 0065760 d w A r [ i ] . d w L e f 0066000 t _ k ; \r I F k > 0 0066020 T H E N d w A r [ k ] . d w R 0066040 i g h t _ i ; \r n o d e 0066060 A r [ a i ] _ i ; \r E N D L 0066100 O O P ; \r F O R i I N 0066120 [ 0 . . m a x N o d e N u m ] 0066140 D O \r k _ n o d e A r [ 0066160 i ] ; \r I F k > 0 T 0066200 H E N d w A r [ k ] . d w R i 0066220 g h t _ 0 ; \r E N D L O O P 0066240 ; \r \r h l A r _ m y Z o n e 0066260 . N E W [ h o r L i n e A r r a 0066300 y [ d o w n W i r e C n t + 1 ] 0066320 ] ; \r 376 001 \0 366 } t g p _ g p 0066340 ; \r i _ 1 ; \r W H I L E 0066360 t g p # N I L D O \r \t j _ ( 0066400 t g p . y + t g p . g a t . c e 0066420 l l . o b . s i z e [ 1 ] ) / 2 0066440 ; \r \t F O R k I N [ 0 . . 0066460 t g p . g a t . c h a r a c . n 0066500 o r C n t ) D O \r \t a C n 0066520 t _ t g p . g a t . c h a r a c 0066540 . a n d s [ k ] ; \r \t F O R 0066560 a i I N [ 0 . . a C n t ) 0066600 D O \r \t h l A r [ i ] 0066620 . d i s t a n c e _ j ; \r \t 0066640 h l A r [ i ] . b t y p 0066660 _ c e l l ; \r \t i _ 0066700 i + 1 ; \r \t E N D L O O P ; 0066720 \r \t E N D L O O P 376 001 \0 356 303 ; \r 0066740 \t h l A r [ i ] . d i s t a n c 0066760 e _ - 3 ; \r \t h l A r [ i ] 0067000 . b t y p _ n o n e ; \r \t i 0067020 _ i + 1 ; \r \t t g p _ t g p . n 0067040 x t ; \r E N D L O O P ; \r 0067060 h L e v _ 0 ; \r \r F O R 0067100 i I N [ 1 . . d o w n W i r 0067120 e C n t ] D O \r I F 0067140 ( d w A r [ i ] . d w L e f t = 0067160 i - 1 A N D i > 1 ) O R 0067200 d w A r [ i ] . d w R i g h t = 0067220 i + 1 T H E N \r \t d w A r [ i 0067240 ] . f i x e d _ T R U E ; \r 0067260 E N D L O O P ; \r \r a l l D 0067300 o n e _ F A L S E ; \r U N T 0067320 I L a l l D o n e D O \r 376 001 0067340 \0 267 341 \t h L e v _ m o v e D o w 0067360 n [ h L e v , 0 ] ; \r \t [ o k , 0067400 l e , r e ] _ f i n d G a p [ 1 0067420 ] ; \r \t W H I L E o k D O \r 0067440 \t \t [ d i d O n e , a l l D o n 0067460 e ] _ w i r e O n e [ l e , r e 0067500 ] ; \r \t \t I F N O T a l l D 0067520 o n e T H E N \r \t \t \t [ o k , 0067540 l e , r e ] _ f i n d G a p [ I 0067560 F d i d O n e T H E N l e 0067600 E L S E r e + 1 ] \r \t \t E 0067620 L S E E X I T ; \r \t E N D L O 0067640 O P \r E N D L O O P ; \r \r 0067660 l l _ m a k e L i s t [ m a k 0067700 e W i r e [ m a x x , 8 , m e t 0067720 ] , 0 , 0 , 2 , 0 ] ; \r m i 0067740 n e _ 376 001 \0 203 \t i n s e r t L i 0067760 s t [ m i n e , l l ] ; \r \r 0070000 l l _ m a k e L i s t [ m a k e 0070020 C e l l [ m a x x , m a x y s , 0070040 0 , m i n e ] , m a r k P n t . 0070060 x , m a r k P n t . y , 0 , 0 ] 0070100 ; \r m a s t e r L i s t _ i 0070120 n s e r t L i s t [ m a s t e r 0070140 L i s t , l l ] ; \r \r E X I 0070160 T S f l e r = > [ ] _ t y 0070200 p e I n C [ " S y n t a x e r 0070220 r o r i n f i l e " L , " T 0070240 y p e C R t o a b o r t " 0070260 L , " " L ] ; \r \t n o F i l 0070300 e = > [ ] _ t y p e I n C [ 0070320 " N o s u c h f i l e " L , 0070340 " T y p e C R 376 \0 217 364 323 t o 0070360 a b o r t " L , " " L ] ; \r 0070400 \t a b o r t s = > N U L L 0070420 ; \r E N D ; \r \r d C h a 0070440 n g e _ T R U E ; \r \r m 0070460 y Z o n e _ Z o n e A l l o 0070500 c D e f s . D e s t r o y A n X 0070520 M Z o n e [ m y Z o n e ] ; \r \r 0070540 \r \r E N D . - - o f r l m 0070560 a i n \r 032 ( 1 7 9 2 ) \r 377 \0 \0 g 0070600 a t e . c o n f i g \0 373 233 i Q 317 0070620 \0 \0 376 001 \0 325 ( - - g a t e . c 0070640 o n f i g \r - - w r i t t e n 0070660 b y P e t i t : O c t o 0070700 b e r 9 , 1 9 8 1 6 : 4 0070720 2 P M \r \r g a t e : C O N F 0070740 I G U R A T I O N \r I M P O R T 0070760 S \r p p d e f s , p p d d e 0071000 f s , p p d d d e f s , D i r e 0071020 c t o r y D e f s , S y s t e m 0071040 D e f s , P r o c e s s D e f s 0071060 , \r S e g m e n t D e f s , 0071100 S t r e a m D e f s , T r a p D 0071120 e f s , - - A l t o F i l e D e 0071140 f s , \r S t r i n g D e f s 0071160 \r E X P O R T S \r r l d e f 0071200 s , Z o n e A l l o c D e f s \r 0071220 C O N T R O L 376 \0 B O . \r r 0071240 l g a t e , r l i n , r l m a i 0071260 n = \r B E G I N \r S t o r a g 0071300 e Z o n e ; r l g a t e ; r l i 0071320 n ; r l m a i n \r E N D . \r 377 \0 0071340 \0 g a t e - s o u r c e s . c m 0071360 \0 373 227 366 - 221 \0 \0 376 \0 - # 230 r l d 0071400 e f s . m e s a r l g a t e . 0071420 m e s a r l i n . m e s a r 0071440 l m a i n . m e s a 377 \0 \0 g a t 0071460 e - s a v e . c m \0 373 234 224 337 ~ \0 0071500 \0 376 \0 250 336 260 f t p i n d i g o 0071520 c o n n / c c h i p m o n k 0071540 > d i r / c > x g a t e s 0071560 t / c g a t e . c h i p b c d 0071600 g a t e . s y m b o l s d u 0071620 m p / c g a t e - s o u r c e 0071640 s . d m @ g a t e - s o u r c 0071660 e s . c m @ g a t e . c o n f 0071700 i g g a t e - s o u r c e s . 0071720 c m g a t e - s a v e . c m 0071740 g a t e - d e l e t e . c m 377 \0 0071760 \0 g a t e - d e l e t e . c m \0 0072000 373 227 366 / a \0 \0 376 \0 A } 022 d e l e 0072020 t e @ g a t e - s o u r c e s 0072040 . c m @ g a t e . c o n f i g 0072060 g a t e - s a v e . c m g a 0072100 t e - d e l e t e . c m \r 374 0072116