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