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