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