$ od -c -N 50000 [IO]<DoradoLogic>routepclb.dm!2 0000000 377 \0 \0 r o u t e p c l b 1 . b c 0000020 p l \0 373 235 256 351 315 \0 \0 376 001 \0 Y { / 0000040 / r o u t e p c l b 1 . b c p l 0000060 \r \r / / B o a r d - s p e c i 0000100 f i c R o u t e r o u t i n 0000120 e s f o r t h e P C v e 0000140 r s i o n o f t h e \r / / 0000160 D o r a d o M a i n L o g i 0000200 c B o a r d \r \r / / p a r t 0000220 1 o f 3 \r \r / / \t l a s t 0000240 m o d i f i e d b y D . 0000260 R u m p h , O c t o b e r 3 0000300 0 , 1 9 8 4 5 : 1 3 P M 0000320 \r / / \t \t t o a d d k n o w 0000340 l e d g e o f I C C l a s s 0000360 E 4 W \r / / l a s t m o d 0000400 i f i e d b y E . M c C r 0000420 e i g h t , J u l y 7 , 376 0000440 001 \0 031 254 1 9 8 1 4 : 2 0 P 0000460 M \r / / \t \t t o s h o r t e n 0000500 b y p a s s c a p n a m e 0000520 s \r / / m o d i f i e d b y 0000540 E . M c C r e i g h t , J 0000560 u l y 7 , 1 9 8 1 2 : 4 0000600 6 P M \r / / \t \t t o c o r r 0000620 e c t p o s i t i o n o f 0000640 G N D p i n s a t c o n n 0000660 e c t o r s t o 5 0 - m i l 0000700 c t r s \r / / m o d i f i e 0000720 d b y E . M c C r e i g h 0000740 t , J u n e 2 4 , 1 9 8 1 0000760 5 : 4 5 P M \r / / \t \t t o 0001000 m o v e t h e l i n e o 0001020 f h o l e s u n d e r t h 0001040 e D I 376 001 \0 254 251 P p a t t e 0001060 r n s , a n d i n s e r t \r 0001100 / / \t \t a l l b y p a s s c 0001120 a p s t h a t f i t \r \r / / 0001140 S o m e g e n e r a l c o 0001160 m m e n t s : \r \r / / \t A s o 0001200 c k e t p o s i t i o n i s 0001220 m a d e u p o f a l o 0001240 w e r - c a s e l e t t e r 0001260 f o l l o w e d b y a \r / / 0001300 \t n u m b e r , l i k e a 1 0001320 3 o r h 4 1 . T h e l e 0001340 t t e r d e s i g n a t e s 0001360 t h e c o l u m n , o r t 0001400 h e \r / / \t x o r f i r s t 0001420 c o - o r d i n a t e . I n 0001440 c r e a s i n g 376 001 \0 372 316 l e 0001460 t t e r s c o r r e s p o n d 0001500 t o i n c r e a s i n g x 0001520 v a l u e s . \r / / \t T h e 0001540 n u m b e r i n a s o c k 0001560 e t p o s i t i o n d e s i 0001600 g n a t e s t h e r o w , 0001620 o r y , o r s e c o n d \r 0001640 / / \t c o - o r d i n a t e . 0001660 I n c r e a s i n g n u m b e 0001700 r s c o r r e s p o n d t o 0001720 i n c r e a s i n g y v a 0001740 l u e s . \r \r / / \t I n s t a 0001760 n d a r d o r i e n t a t i o 0002000 n t h e b o a r d h a s 0002020 t h e c o m p o n e n t ( n 0002040 o n - w i r i n g ) s i d 376 001 0002060 \0 277 8 e \r / / \t u p , a n d 0002100 t h e c o n n e c t o r c u 0002120 t o u t s t o t h e l e f 0002140 t . S o c k e t a 0 1 i s 0002160 i n t h e t o p l e f t 0002200 , \r / / \t l 0 1 i n t h e 0002220 t o p r i g h t , a 2 4 i 0002240 n t h e b o t t o m l e f 0002260 t , a n d l 2 4 i n t h 0002300 e b o t t o m r i g h t . \r 0002320 / / \t T h e x c o - o r d i 0002340 n a t e i n c r e a s e s t 0002360 o t h e r i g h t , a n d 0002400 t h e y c o - o r d i n a 0002420 t e i n c r e a s e s \r / / \t 0002440 d o w n w a r d . I n s t a 0002460 n d a 376 001 \0 c 036 r d o r i e n 0002500 t a t i o n p i n 1 o f 0002520 e a c h s o c k e t i s t 0002540 h e t o p r i g h t \r / / \t 0002560 p i n o f t h e s o c k e 0002600 t . T h e p i n n u m b e 0002620 r i n g g o e s l e f t w a 0002640 r d , t h e n d o w n , t 0002660 h e n \r / / \t r i g h t w a r d 0002700 . \r \r / / \t W i t h c e r t a 0002720 i n e x c e p t i o n s , a 0002740 g i v e n f u n c t i o n a 0002760 l l y e q u i v a l e n t g 0003000 r o u p o f p i n s \r / / \t 0003020 i s o r d e r e d f i r s t 0003040 d o w n w a r d a n d t h 0003060 e n r i g h t 376 001 \0 333 235 w a r 0003100 d . F o r e x a m p l e , 0003120 i f w e h a d \r / / \t G N D 0003140 p i n s o f a c e r t a 0003160 i n k i n d a t { x 0 , y 0003200 0 } , { x 1 , y 1 } , { x 1 0003220 , y 0 } , a n d { x 0 , y 1 0003240 } , \r / / \t w h e r e x 0 < 0003260 x 1 a n d y 0 < y 1 , t h 0003300 e n t h e y w o u l d a p 0003320 p e a r i n t h e G N D 0003340 p s e u d o - \r / / \t n e t i 0003360 n t h e f o l l o w i n g 0003400 o r d e r : \r / / \t \t . . . { x 0003420 0 , y 0 } . . . { x 0 , y 1 } . 0003440 . . { x 1 , y 0 } . . . { x 1 , 0003460 y 1 } . . . \r \r / / \t T h 376 001 \0 0003500 326 2 i s m e a n s t h a t 0003520 t h e p s e u d o - n e t p 0003540 i n n u m b e r i s u s u 0003560 a l l y c o m p u t e d a s 0003600 \r / / \t \t ( x ( h o r i z o n 0003620 t a l ) r e p e a t ) * ( p i 0003640 n s P e r C o l u m n ) + ( y 0003660 ( v e r t i c a l ) r e p e a 0003700 t ) + f i r s t P i n N o \r \r / 0003720 / \t S i m i l a r l y t h e 0003740 h o r i z o n t a l a n d v 0003760 e r t i c a l r e p e a t s 0004000 a r e u s u a l l y c o m p 0004020 u t e d a s \r / / \t \t c o l u 0004040 m n = x R e p e a t = ( 0004060 p s e u d o - n e t p i n n 0004100 u m 376 001 \0 204 [ b e r - f i r 0004120 s t P i n N o ) / p i n s P e r 0004140 C o l u m n \r / / \t \t r o w = 0004160 y R e p e a t = ( p s e u 0004200 d o - n e t p i n n u m b e 0004220 r - f i r s t P i n N o ) 0004240 r e m p i n s P e r C o l u m 0004260 n \r \r g e t " r o u t e . d e 0004300 f s " \r \r e x t e r n a l [ 0004320 P i n 1 o f 1 6 ] \r \r m a n i 0004340 f e s t \r [ 032 ( 6 3 5 ) \ f 1 \r 0004360 r e p e a t R o w s = 1 2 \r 0004400 r e p e a t C o l s = 6 \r f 0004420 u l l R e p e a t C o l s = 0004440 4 \r r e p e a t s = r e p e 0004460 a t R o w s * r e p e a t C o l 0004500 s \r f u l l R 376 001 \0 \ 376 e p e a 0004520 t s = r e p e a t R o w s * 0004540 f u l l R e p e a t C o l s \r r 0004560 o w O f f s e t = 1 6 \r l e 0004600 f t C o l s O f f s e t = 0 0004620 \r r i g h t C o l s O f f s e t 0004640 = 2 4 6 \r r o w H e i g h t 0004660 = 4 2 \r f u l l C o l W i d 0004700 t h = 1 1 2 \r p a t t e r n 0004720 G r o u n d s = 3 * r e p e 0004740 a t s + 6 * f u l l R e p e a t 0004760 s \r S o c k e t s 1 6 p i n = 0005000 6 * f u l l R e p e a t s \r S 0005020 o c k e t s 2 4 p i n = 2 * 0005040 f u l l R e p e a t s \r S o c k 0005060 e t s 5 0 p i n = f u l l R 0005100 e p e a t s \r S o c k e 376 001 \0 203 0005120 t t s S i p = 3 * f u l l R 0005140 e p e a t s 032 l 4 2 6 9 \ f 1 \r 0005160 ] \r \r s t a t i c \r [ 032 \ f 1 \r 0005200 m a x I C s = 8 2 0 \r b o a 0005220 r d I n t e r f a c e V e r s i 0005240 o n = i n t e r f a c e V e 0005260 r s i o n \r V C C C a p \r V C C 0005300 2 C a p \r V E E C a p \r V T T C 0005320 a p 032 l 4 2 6 9 \ f 1 \r ] \r \r l 0005340 e t D e c l a r e I n i t i a 0005360 l N e t s ( B u i l d T W N e t 0005400 , B u i l d T e r m N e t , 0005420 B u i l d C o n n e c t o r ) 0005440 b e \r [ 032 \ f 1 \r B u i l d C o 0005460 n n e c t o r ( " E " , 1 8 9 0005500 , E P i n P o s ) \r B u i l d 0005520 C 376 001 \0 D 254 o n n e c t o r ( " 0005540 C " , 1 8 9 , C P i n P o s 0005560 ) \r B u i l d T W N e t ( " G N 0005600 D " , 6 * f u l l R e p e a t 0005620 s + 3 * r e p e a t s + 2 * 9 2 0005640 , G N D P i n P o s ) \r B u i 0005660 l d T W N e t ( " V E E " , 4 0005700 * f u l l R e p e a t s + 2 * r 0005720 e p e a t s , V E E P i n P o 0005740 s ) \r B u i l d T W N e t ( " V 0005760 T T " , 3 * f u l l R e p e a 0006000 t s , V T T P i n P o s ) \r B 0006020 u i l d T W N e t ( " V C C " , 0006040 r e p e a t s , V C C P i n 0006060 P o s ) \r B u i l d T W N e t ( 0006100 " V D D " , r e p e a t s , 0006120 V D D P i n 376 001 \0 002 270 P o s ) \r 0006140 V C C C a p = D e f i n e B 0006160 y p a s s T y p e ( " V C C B y 0006200 p a s s " , V C C B y p a s s 0006220 V o l t a g e s ) \r V C C 2 C a 0006240 p = D e f i n e B y p a s s 0006260 T y p e ( " V C C 2 B y p a s s 0006300 " , V C C 2 B y p a s s V o l 0006320 t a g e s ) \r V E E C a p = 0006340 D e f i n e B y p a s s T y p e 0006360 ( " V E E B y p a s s " , V E 0006400 E B y p a s s V o l t a g e s ) 0006420 \r V T T C a p = D e f i n e 0006440 B y p a s s T y p e ( " V T T B 0006460 y p a s s " , V T T B y p a s 0006500 s V o l t a g e s ) \r B u i l d 0006520 T e r m N e t ( " T e 376 001 \0 270 231 0006540 r m 1 0 0 / 8 / T e r m 1 0 0 " 0006560 , 8 , " T e r m 1 0 0 " , 0006600 1 0 0 8 , A u t o T e r m P i 0006620 n P o s , " T " ) \r l e t c 0006640 = T r y F i n d i n g N a m e 0006660 e ( " F 1 0 0 K " , t y p e I 0006700 c c l a s s ) \r i f c n e 0006720 e m p t y t h e n c > > i c 0006740 c l a s s . P i n O f f s e t 0006760 = D I P 4 5 W i d e 032 l 4 2 6 0007000 9 \ f 1 \r c = T r y F i n d 0007020 i n g N a m e e ( " E 4 W " , 0007040 t y p e I c c l a s s ) \r i f 0007060 c n e e m p t y t h e n 0007100 c > > i c c l a s s . P i n O f 0007120 f s e t = D I P 4 5 W i d e 0007140 376 001 \0 n E 032 l 4 2 6 9 \ f 1 \r ] 0007160 \r \r a n d D I P 4 5 W i d e ( 0007200 i c i n s t , p i n N o , p 0007220 v , p h ) = v a l o f \r [ 0007240 032 \ f 1 \r l e t r e s u l t 0007260 = D I P 3 W i d e ( i c i n s 0007300 t , p i n N o , p v , p h 0007320 ) \r i f @ p h n e 0 t h 0007340 e n @ p h = @ p h + 6 \r r 0007360 e s u l t i s r e s u l t 032 l 0007400 4 2 6 9 \ f 1 \r ] \r \r a n d Z 0007420 e r o T a b l e P o i n t ( p o 0007440 i n t ) = s e l e c t o n 0007460 p o i n t i n t o \r [ 032 \ f 1 0007500 \r c a s e 0 : " L " / / 0007520 b o a r d t y p e \r c a s e 0007540 1 : " C 376 001 \0 ( ; 1 8 8 " \r c 0007560 a s e 2 : " E 6 " \r c a s e 0007600 3 : " E 1 8 7 " \r c a s e 0007620 4 : " C 5 " \r d e f a u l t : 0007640 e m p t y 032 l 4 2 6 9 \ f 1 \r 0007660 ] \r \r a n d L e v e l T r a n 0007700 s f o r m ( l e v e l , x , 0007720 y , p x , p y , p N a m e 0007740 , p P u l l C o m p o n e n t 0007760 s , p W i r e ; n u m a r g 0010000 s n a ) = v a l o f \r [ 032 0010020 \ f 1 \r D e f a u l t A r g s ( 0010040 l v n a , - 1 , 0 , 0 , 0010060 l v n a , l v n a , l 0010100 v n a , l v n a , l v 0010120 n a ) \r s w i t c h o n l e v 0010140 e l i n t o \r [ 032 376 001 \0 367 a l 0010160 4 2 6 9 \ f 1 \r c a s e T o p 0010200 L e v e l : 032 l 5 5 3 9 \ f 1 \r 0010220 @ p x = x \r @ p y = 5 2 0010240 4 - y \r @ p N a m e = " C o 0010260 m p o n e n t s i d e " \r @ p 0010300 P u l l C o m p o n e n t s = 0010320 t r u e \r @ p W i r e = f 0010340 a l s e \r r e s u l t i s t r 0010360 u e 032 l 6 8 0 9 \ f 1 \r \r c a s 0010400 e B o t t o m L e v e l : 032 l 0010420 5 5 3 9 \ f 1 \r @ p x = x \r 0010440 @ p y = y \r @ p N a m e = 0010460 " W i r i n g s i d e " \r @ 0010500 p P u l l C o m p o n e n t s 0010520 = f a l s e \r @ p W i r e = 0010540 t r u e \r r e s u l t i s 376 0010560 001 \0 002 W t r u e 032 l 6 8 0 9 \ f 0010600 1 \r \r d e f a u l t : r e s u 0010620 l t i s f a l s e 032 l 5 5 3 9 0010640 \ f 1 \r ] 032 l 4 2 6 9 \ f 1 \r ] 0010660 \r \r a n d D e f i n e B y p a 0010700 s s T y p e ( c l a s s , I n 0010720 i t i a l W i r i n g ) = v 0010740 a l o f \r [ 032 \ f 1 \r S e t u p 0010760 I C c l a s s ( c l a s s , p 0011000 r i n t U s e d L i s t , D I 0011020 P 3 W i d e , N u l l A t t r 0011040 i b u t e s , I n i t i a l W 0011060 i r i n g , 2 ) \r l e t t y 0011100 p e = v e c 5 0 \r E x p a 0011120 n d T e m p l a t e ( t y p e , 0011140 " $ S / 2 / $ S " , c l a s 0011160 s , c 376 001 \0 A 354 l a s s ) \r l 0011200 e t i c t y p e = D e f i 0011220 n e N a m e e ( t y p e , t y 0011240 p e I c t y p e ) \r i c t y p e 0011260 > > i c t y p e . i c c l a s s 0011300 = M u s t F i n d N a m e e 0011320 ( c l a s s , t y p e I c c l 0011340 a s s ) \r i c t y p e > > i c t 0011360 y p e . n p i n s = 2 \r r e 0011400 s u l t i s i c t y p e 032 l 4 0011420 2 6 9 \ f 1 \r ] \r \r a n d V C 0011440 C B y p a s s V o l t a g e s ( 0011460 i c i n s t ) b e \r [ 032 \ f 1 0011500 \r l e t s t r = F i n d N 0011520 a m e e s S t r i n g ( i c i n 0011540 s t ) \r P u t T e m p l a t e ( 0011560 I m p l i c i t F 376 001 \0 003 - i l 0011600 e , " * n V C C : $ S . 1 p 0011620 * n G N D : $ S . 2 p " , s 0011640 t r , s t r ) 032 l 4 2 6 9 \ f 0011660 1 \r ] \r \r a n d V C C 2 B y p 0011700 a s s V o l t a g e s ( i c i n 0011720 s t ) b e \r [ 032 \ f 1 \r l e t 0011740 s t r = F i n d N a m e e 0011760 s S t r i n g ( i c i n s t ) \r 0012000 P u t T e m p l a t e ( I m p l 0012020 i c i t F i l e , " * n G N D 0012040 : $ S . 1 p * n V C C : $ S 0012060 . 2 p " , s t r , s t r ) 032 0012100 l 4 2 6 9 \ f 1 \r ] \r \r a n d 0012120 V E E B y p a s s V o l t a g e 0012140 s ( i c i n s t ) b e \r [ 032 \ 0012160 f 1 \r l e t s t r = F 376 001 0012200 \0 265 352 i n d N a m e e s S t r i 0012220 n g ( i c i n s t ) \r P u t T e 0012240 m p l a t e ( I m p l i c i t F 0012260 i l e , " * n V E E : $ S . 0012300 1 p * n G N D : $ S . 2 p " , 0012320 s t r , s t r ) 032 l 4 2 6 9 0012340 \ f 1 \r ] \r \r a n d V T T B y 0012360 p a s s V o l t a g e s ( i c i 0012400 n s t ) b e \r [ 032 \ f 1 \r l e 0012420 t s t r = F i n d N a m e 0012440 e s S t r i n g ( i c i n s t ) 0012460 \r P u t T e m p l a t e ( I m p 0012500 l i c i t F i l e , " * n G N 0012520 D : $ S . 1 p * n V T T : $ 0012540 S . 2 p " , s t r , s t r ) 0012560 032 l 4 2 6 9 \ f 1 \r ] \r \r a n d 0012600 A d 376 001 \0 023 I d D e c o u p l 0012620 i n g C a p s ( ) b e \r [ 032 \ 0012640 f 1 \r f o r r o w = 1 t 0012660 o 2 3 b y 2 d o \r [ 032 l 0012700 4 2 6 9 \ f 1 \r f o r c o l 0012720 = $ a t o $ g b y ( $ 0012740 g - $ a ) d o \r [ 032 l 5 5 3 9 0012760 \ f 1 \r A d d C a p ( V C C C a 0013000 p , " 9 " , c o l , r o w 0013020 ) \r A d d C a p ( V E E C a p , 0013040 " 8 " , c o l , r o w ) \r 0013060 A d d C a p ( V C C 2 C a p , 0013100 " 9 " , c o l , r o w + 1 ) 0013120 \r A d d C a p ( V E E C a p , 0013140 " 8 " , c o l , r o w + 1 ) 0013160 032 l 6 8 0 9 \ f 1 \r ] \r f o r 0013200 c o l = $ c 376 001 \0 % 271 t o 0013220 $ l b y ( $ f - $ c ) d 0013240 o \r [ 032 l 5 5 3 9 \ f 1 \r A d d 0013260 C a p ( V C C C a p , " - 1 " 0013300 , c o l , r o w ) \r A d d C 0013320 a p ( V E E C a p , " - 2 " , 0013340 c o l , r o w ) \r f o r s 0013360 u b c o l = - 2 t o - 1 0013400 d o \r A d d C a p ( V T T 0013420 C a p , " - 1 _ 3 " , c o l 0013440 + s u b c o l , r o w ) \r A d 0013460 d C a p ( V C C 2 C a p , " - 0013500 1 " , c o l , r o w + 1 ) \r 0013520 A d d C a p ( V E E C a p , " 0013540 - 2 " , c o l , r o w + 1 ) 0013560 032 l 6 8 0 9 \ f 1 \r ] 032 l 5 5 3 0013600 9 \ f 1 \r ] 032 l 4 2 6 9 \ 376 001 \0 0013620 325 250 f 1 \r ] \r \r a n d A d d C 0013640 a p ( c a p T y p e , o f f s 0013660 e t S t r , c o l , r o w ) 0013700 b e \r [ 032 \ f 1 \r l e t s 0013720 = v e c 2 0 \r E x p a n d T 0013740 e m p l a t e ( s , " # $ S $ 0013760 C $ 2 F 0 D " , o f f s e t S 0014000 t r , c o l , r o w ) \r I n 0014020 s e r t D e v i c e I f P o s s 0014040 i b l e ( s , c a p T y p e , 0014060 t r u e ) / / s u p p r e s 0014100 s w a r n i n g s 032 l 4 2 6 9 0014120 \ f 1 \r ] \r \r a n d E P i n P 0014140 o s ( i c i n s t , p i n , 0014160 p x , p y ) = v a l o f \r 0014200 [ 032 \ f 1 \r i f ( p i n l s 0014220 5 376 001 \0 315 Z ) % ( p i n 0014240 g r 1 8 8 ) t h e n r e s 0014260 u l t i s i l l e g a l \r @ p 0014300 y = 5 2 4 \r l e t p g = 0014320 ( p i n - 1 ) r e m 4 \r i 0014340 f ( p g e q 0 ) % ( p g 0014360 e q 3 ) t h e n r e s u l 0014400 t i s i l l e g a l \r l e t 0014420 x C o l = ( p i n - 5 ) / 2 0014440 \r @ p x = 2 2 + 4 * x C o l 0014460 + 2 * ( x C o l / 2 ) \r r e s u 0014500 l t i s a b s o l u t e 032 l 4 0014520 2 6 9 \ f 1 \r ] \r \r a n d C P 0014540 i n P o s ( i c i n s t , p i 0014560 n , p x , p y ) = v a l 0014600 o f \r [ 032 \ f 1 \r i f ( p i n 0014620 l s 5 ) 376 001 \0 274 5 % ( p 0014640 i n g r 1 8 8 ) t h e n 0014660 r e s u l t i s i l l e g a l 0014700 \r @ p y = 0 \r l e t p g 0014720 = ( p i n - 1 ) r e m 4 \r 0014740 i f ( p g e q 1 ) % ( p g 0014760 e q 2 ) t h e n r e s u 0015000 l t i s i l l e g a l \r l e t 0015020 x C o l = ( 1 8 8 - p i n 0015040 ) / 2 \r @ p x = 2 2 + 4 * x 0015060 C o l + 2 * ( x C o l / 2 ) \r r 0015100 e s u l t i s a b s o l u t e 0015120 032 l 4 2 6 9 \ f 1 \r ] \r \r a n d 0015140 G N D P i n P o s ( i c i n s 0015160 t , p i n , p x , p y , 0015200 p I n f o ; n u m a r g s n 0015220 a ) = v a l o f \r [ 376 001 \0 214 0015240 a 032 \ f 1 \r D e f a u l t A r g 0015260 s ( l v n a , - 4 , l v 0015300 n a ) \r @ p I n f o = n o D 0015320 i s c o n n e c t + n o R e c o 0015340 n n e c t + B o t t o m L e v e 0015360 l \r i f p i n l e 0 t h 0015400 e n r e s u l t i s i l l e 0015420 g a l \r i f p i n l e p a 0015440 t t e r n G r o u n d s t h e 0015460 n \r [ 032 l 4 2 6 9 \ f 1 \r R e p 0015500 e a t ( l v p i n , 3 , 6 0015520 , p x , p y ) \r l e t x t 0015540 a b l e = t a b l e [ 0 0015560 ; 0 ; 4 ; 4 0 ; 4 0 ; 7 2 ; 7 6 0015600 ; 7 6 ; 1 0 8 ] \r @ p x = 0015620 @ p x + x t a b l e ! p i n \r l 0015640 e 376 001 \0 \0 q t y t a b l e = 0015660 t a b l e [ 1 2 ; 2 4 ; 3 0015700 6 ; 0 ; 1 2 ; 1 2 ; 0 ; 1 2 ; 3 0015720 6 ] \r @ p y = @ p y + y t 0015740 a b l e ! p i n \r r e s u l t i 0015760 s a b s o l u t e 032 l 5 5 3 9 0016000 \ f 1 \r ] \r p i n = p i n - 0016020 p a t t e r n G r o u n d s \r i 0016040 f p i n l e 2 * 9 2 t h 0016060 e n \r [ 032 l 4 2 6 9 \ f 1 \r p i 0016100 n = p i n - 1 \r @ p y = 0016120 p i n l s 9 2 ? 0 + 4 , 0016140 5 2 4 - 4 \r l e t s e q = 0016160 p i n r e m 9 2 \r @ p x = 0016200 2 2 + 4 * s e q + 2 * ( s e q 0016220 / 2 ) \r r e s u l t i s a b s 0016240 o l u t e 032 376 001 \0 O n l 5 5 3 9 0016260 \ f 1 \r ] \r r e s u l t i s i 0016300 l l e g a l 032 l 4 2 6 9 \ f 1 \r 0016320 ] \r \r a n d V E E P i n P o s 0016340 ( i c i n s t , p i n , p x 0016360 , p y , p I n f o ; n u m 0016400 a r g s n a ) = v a l o f 0016420 \r [ 032 \ f 1 \r D e f a u l t A r 0016440 g s ( l v n a , - 4 , l v 0016460 n a ) \r @ p I n f o = n o 0016500 D i s c o n n e c t + n o R e c 0016520 o n n e c t + B o t t o m L e v 0016540 e l \r i f p i n l e 0 t 0016560 h e n r e s u l t i s i l l 0016600 e g a l \r i f p i n l e 4 0016620 * f u l l R e p e a t s + 2 * r 0016640 e p e a t s t h e n 376 001 \0 216 214 0016660 \r [ 032 l 4 2 6 9 \ f 1 \r R e p e 0016700 a t ( l v p i n , 2 , 4 , 0016720 p x , p y ) \r l e t x t a 0016740 b l e = t a b l e [ 4 ; 0016760 4 4 ; 8 0 ] \r @ p x = @ p 0017000 x + x t a b l e ! ( p i n / 2 ) 0017020 \r @ p y = @ p y + 2 4 * ( p 0017040 i n r e m 2 ) \r r e s u l t 0017060 i s a b s o l u t e 032 l 5 5 3 0017100 9 \ f 1 \r ] \r r e s u l t i s 0017120 i l l e g a l 032 l 4 2 6 9 \ f 1 0017140 \r ] \r \r a n d V T T P i n P o 0017160 s ( i c i n s t , p i n , p 0017200 x , p y , p I n f o ; n u 0017220 m a r g s n a ) = v a l o 0017240 f \r [ 032 \ f 1 \r D e f a u l t A 0017260 376 001 \0 d 223 r g s ( l v n a , 0017300 - 4 , l v n a ) \r @ p I n f 0017320 o = n o D i s c o n n e c t 0017340 + n o R e c o n n e c t + B o t 0017360 t o m L e v e l \r i f p i n 0017400 l e 0 t h e n r e s u l t 0017420 i s i l l e g a l \r i f p i 0017440 n l e 3 * f u l l R e p e a 0017460 t s t h e n \r [ 032 l 4 2 6 9 \ 0017500 f 1 \r R e p e a t ( l v p i n 0017520 , 0 , 3 , p x , p y ) \r 0017540 l e t x t a b l e = t a b 0017560 l e [ 4 0 ; 7 6 ; 1 0 8 ] 0017600 \r @ p x = @ p x + x t a b l 0017620 e ! p i n \r l e t y t a b l e 0017640 = t a b l e [ 2 4 ; 2 4 0017660 ; 1 8 ] 376 001 \0 004 331 \r @ p y = 0017700 @ p y + y t a b l e ! p i n \r 0017720 r e s u l t i s a b s o l u t 0017740 e 032 l 5 5 3 9 \ f 1 \r ] \r r e s 0017760 u l t i s i l l e g a l 032 l 4 0020000 2 6 9 \ f 1 \r ] \r \r a n d V D 0020020 D P i n P o s ( i c i n s t , 0020040 p i n , p x , p y , p I n 0020060 f o ; n u m a r g s n a ) 0020100 = v a l o f \r [ 032 \ f 1 \r D e 0020120 f a u l t A r g s ( l v n a , 0020140 - 4 , l v n a ) \r @ p I n 0020160 f o = n o D i s c o n n e c 0020200 t + n o R e c o n n e c t + B o 0020220 t t o m L e v e l \r i f p i n 0020240 l e 0 t h e n r e s u l 0020260 t i s i l l e g a 376 001 \0 x 207 l 0020300 \r i f p i n l e r e p e a 0020320 t s t h e n \r [ 032 l 4 2 6 9 \ 0020340 f 1 \r R e p e a t ( l v p i n 0020360 , 1 , 0 , p x , p y ) \r 0020400 @ p x = @ p x + 4 \r @ p y 0020420 = @ p y + 1 8 \r r e s u l t i 0020440 s a b s o l u t e 032 l 5 5 3 9 0020460 \ f 1 \r ] \r r e s u l t i s i 0020500 l l e g a l 032 l 4 2 6 9 \ f 1 \r 0020520 ] \r \r a n d V C C P i n P o s 0020540 ( i c i n s t , p i n , p x 0020560 , p y , p I n f o ; n u m 0020600 a r g s n a ) = v a l o f 0020620 \r [ 032 \ f 1 \r D e f a u l t A r 0020640 g s ( l v n a , - 4 , l v 0020660 n a ) \r @ p I n f o = n 376 0020700 001 \0 373 242 o D i s c o n n e c t + 0020720 n o R e c o n n e c t + B o t t 0020740 o m L e v e l \r i f p i n l 0020760 e 0 t h e n r e s u l t i 0021000 s i l l e g a l \r i f p i n 0021020 l e r e p e a t s t h e n 0021040 \r [ 032 l 4 2 6 9 \ f 1 \r R e p e 0021060 a t ( l v p i n , 1 , 0 , 0021100 p x , p y ) \r @ p y = @ 0021120 p y + 3 6 \r r e s u l t i s a 0021140 b s o l u t e 032 l 5 5 3 9 \ f 1 0021160 \r ] \r r e s u l t i s i l l e 0021200 g a l 032 l 4 2 6 9 \ f 1 \r ] \r \r 0021220 a n d A u t o T e r m P i n P 0021240 o s ( i c i n s t , p i n , 0021260 p x , p y , p I n f o , p 0021300 i n N a 376 001 \0 037 200 m e ; n u m 0021320 a r g s n a ) = v a l o f 0021340 \r [ 032 \ f 1 \r D e f a u l t A r 0021360 g s ( l v n a , - 4 , l v 0021400 n a , 0 ) \r i f p i n l 0021420 e 0 t h e n r e s u l t i 0021440 s i l l e g a l \r i f p i n 0021460 l e 1 0 0 8 t h e n \r [ 032 0021500 l 4 2 6 9 \ f 1 \r p i n = p i n 0021520 - 1 \r l e t p a c k a g e = 0021540 p i n / 7 \r p i n = p i n 0021560 r e m 7 \r P i n 1 o f 8 ( p 0021600 a c k a g e r e m 1 2 , p 0021620 a c k a g e / 1 2 , p x , p 0021640 y ) \r @ p x = @ p x - 4 - 4 0021660 * p i n \r i f p i n N a m e 0021700 n e 0 t h e n 376 001 \0 \f > 032 l 0021720 5 5 3 9 \ f 1 \r E x p a n d T e 0021740 m p l a t e ( p i n N a m e , 0021760 " $ C $ D . $ D " , $ a + p a 0022000 c k a g e / 1 2 , \r 4 1 + ( p 0022020 a c k a g e r e m 1 2 ) , 0022040 p i n + 2 ) \r r e s u l t i s 0022060 a b s o l u t e 032 l 5 5 3 9 \ f 0022100 1 \r ] \r r e s u l t i s i l l 0022120 e g a l 032 l 4 2 6 9 \ f 1 \r ] \r 0022140 \r a n d F i n d C o o r d F r 0022160 o m S t r i n g ( s , p x , 0022200 p y , v o p 1 , h o p 1 ; 0022220 n u m a r g s n a ) = v a 0022240 l o f \r [ / / v o p 1 i s 0022260 t h e " v e r t i c a l " 0022300 f r o m p i n 1 , t h 376 001 0022320 \0 F b a t i s , t h e o f 0022340 f s e t a l o n g t h e 0 0022360 . 1 " \r / / s p a c i n g ; 0022400 h o p 1 i s t h e " h o r 0022420 i z o n t a l o f f s e t " 0022440 f r o m p i n 1 . I n a 0022460 s t a n d a r d 1 6 - p i n 0022500 \r / / D I P , f o r p i n 0022520 2 v o p 1 = 4 a n d h o 0022540 p 1 = 0 , a n d f o r p i 0022560 n 1 6 , v o p 1 = 0 a n d 0022600 h o p 1 = 1 2 . F o r \r / / 0022620 t h i s b o a r d , v o p 0022640 1 g r o w s i n t h e - 0022660 x d i r e c t i o n , a n d 0022700 h o p 1 g r o w s i n t 0022720 h e 376 001 \0 311 q + y d i r e c 0022740 t i o n . \r \r / / s c a n 0022760 b e o f t h e f o r m < 0023000 l o w e r - c a s e l e t t e 0023020 r > < n u m b e r > o r \r / / 0023040 \t < n u m b e r > s ( m e a 0023060 n i n g v e r t i c a l l y 0023100 o f f s e t < n u m b e r > * 0023120 0 . 1 " ) o r \r / / \t ^ < n u 0023140 m b e r > s ( m e a n i n g 0023160 v e r t i c a l l y o f f s 0023200 e t < n u m b e r > * 0 . 1 " 0023220 ) o r \r / / _ < n u m b e r 0023240 > s ( m e a n i n g h o r 0023260 i z o n t a l l y o f f s e t 0023300 < n u m b e r > * 0 . 1 " ) 0023320 o r \r / / # 376 001 \0 \t 264 s \r 032 0023340 \ f 1 \r D e f a u l t A r g s ( 0023360 l v n a , - 3 , 0 , 0 ) 0023400 \r \r l e t b p V O f f s e t , 0023420 b p H O f f s e t = 0 , 0 0023440 \r l e t i = 0 \r l e t c = 0023460 $ # \r l e t o f f s e t I s 0023500 V e r t i c a l = t r u e \r 0023520 l e t s i g n = 1 \r \r w h 0023540 i l e i l e s > > s t r . 0023560 l e n g t h & ( c l s $ 0023600 a % c g r $ z ) d o \r 0023620 [ 032 l 4 2 6 9 \ f 1 \r i f c 0023640 e q $ ^ % c e q $ _ 0023660 % c e q $ # % c e q 0023700 $ - t h e n \r [ 032 l 5 5 3 9 0023720 \ f 1 \r t e s t c e q 376 001 \0 0023740 334 V $ - \r i f s o s i g n 0023760 = - s i g n \r i f n o t o f 0024000 f s e t I s V e r t i c a l = 0024020 n o t ( c e q $ _ ) \r \r 0024040 i = i + 1 \r c = s > > s t r 0024060 . c h a r ^ i \r l o o p 032 l 6 8 0024100 0 9 \ f 1 \r ] \r \r i f c g e 0024120 $ 0 & c l e $ 9 t h 0024140 e n \r [ 032 l 5 5 3 9 \ f 1 \r l e 0024160 t b p O f f s e t = 0 \r w 0024200 h i l e i l e s > > s t r 0024220 . l e n g t h & c g e $ 0024240 0 & c l e $ 9 d o \r [ 0024260 032 l 6 8 0 9 \ f 1 \r b p O f f s 0024300 e t = 1 0 * b p O f f s e t 0024320 + c - $ 0 \r i = i + 1 \r c 0024340 = 376 001 \0 277 340 s > > s t r . c h 0024360 a r ^ i 032 l 8 0 7 9 \ f 1 \r ] \r 0024400 @ ( o f f s e t I s V e r t i c 0024420 a l ? l v b p V O f f s e t 0024440 , l v b p H O f f s e t ) 0024460 = \r s i g n * b p O f f s e t 0024500 \r o f f s e t I s V e r t i c a 0024520 l = t r u e \r s i g n = 0024540 1 \r l o o p 032 l 6 8 0 9 \ f 1 \r 0024560 ] \r \r r e s u l t i s i l l e 0024600 g a l 032 l 5 5 3 9 \ f 1 \r ] \r \r 0024620 v o p 1 = v o p 1 + 4 * b p 0024640 V O f f s e t \r h o p 1 = h 0024660 o p 1 + 4 * b p H O f f s e t \r 0024700 \r / / I C p o s i t i o n 0024720 o f t h e f o r m < l e t 0024740 t e r > < n u 376 001 \0 C 271 m b e r 0024760 > \r \r i f i g r s > > s t 0025000 r . l e n g t h % c l s 0025020 $ a % c g r $ z t h e 0025040 n r e s u l t i s i l l e g 0025060 a l \r l e t a l p h = c \r 0025100 \r l e t n u m = 0 \r w h i 0025120 l e i l s s > > s t r . l 0025140 e n g t h d o \r [ 032 l 4 2 6 9 0025160 \ f 1 \r i = i + 1 \r c = s > 0025200 > s t r . c h a r ^ i \r i f ( 0025220 c l s $ 0 ) % ( c g r 0025240 $ 9 ) t h e n r e s u l t 0025260 i s i l l e g a l \r n u m = 0025300 1 0 * n u m + ( c - $ 0 ) 032 l 0025320 5 5 3 9 \ f 1 \r ] \r \r i f ( n 0025340 u m g e 1 ) & ( n u 376 001 \0 366 0025360 030 m l e 2 4 ) t h e n \r [ 0025400 032 l 4 2 6 9 \ f 1 \r u n l e s s 0025420 P i n 1 o f 1 6 ( n u m - 1 , 0025440 a l p h - $ a , p x , p y 0025460 ) d o r e s u l t i s i l 0025500 l e g a l \r @ p x = @ p x - v o 0025520 p 1 \r @ p y = @ p y + h o p 0025540 1 \r r e s u l t i s a b s o l 0025560 u t e 032 l 5 5 3 9 \ f 1 \r ] \r \r 0025600 i f ( n u m g e 4 1 ) & 0025620 ( n u m l e 5 2 ) t h e 0025640 n \r [ 032 l 4 2 6 9 \ f 1 \r u n l 0025660 e s s P i n 1 o f 8 ( n u m - 0025700 4 1 , a l p h - $ a , p x , 0025720 p y ) d o r e s u l t i s 0025740 i l l e g a l \r @ p x = @ p x 0025760 - 376 001 \0 V ? v o p 1 \r @ p y = @ 0026000 p y + h o p 1 \r r e s u l t i s 0026020 a b s o l u t e 032 l 5 5 3 9 \ 0026040 f 1 \r ] \r \r l e t c o l = 0026060 s e l e c t o n a l p h i n 0026100 t o \r [ 032 l 4 2 6 9 \ f 1 \r c a 0026120 s e $ b : 0 \r c a s e $ c 0026140 : 1 \r c a s e $ e : 2 \r c 0026160 a s e $ f : 3 \r c a s e $ 0026200 h : 4 \r c a s e $ i : 5 \r 0026220 c a s e $ k : 6 \r c a s e 0026240 $ l : 7 \r d e f a u l t : - 0026260 1 032 l 5 5 3 9 \ f 1 \r ] \r l e t 0026300 r o w = s e l e c t o n 0026320 n u m i n t o \r [ 032 l 4 2 6 9 0026340 \ f 1 \r c a s e 6 0 : 1 \r c 0026360 a s e 6 1 376 001 \0 F \ : 4 \r c 0026400 a s e 6 2 : 7 \r c a s e 6 0026420 3 : 1 0 \r \r c a s e 6 4 : 0026440 0 \t / / n e w n u m b e r s 0026460 \r c a s e 6 5 : 2 \r c a s e 0026500 6 6 : 3 \r c a s e 6 7 : 0026520 5 \r c a s e 6 8 : 6 \r c a s 0026540 e 6 9 : 8 \r c a s e 7 0 : 0026560 9 \r c a s e 7 1 : 1 1 \r \r 0026600 d e f a u l t : - 1 032 l 5 5 3 0026620 9 \ f 1 \r ] \r \r u n l e s s P 0026640 i n 1 o f 2 4 ( r o w , c o l 0026660 , p x , p y ) d o r e s 0026700 u l t i s i l l e g a l \r @ p 0026720 x = @ p x - v o p 1 \r @ p y 0026740 = @ p y + h o p 1 032 l 4 2 6 0026760 9 \ f 1 \r r e s u l t 376 001 \0 240 223 0027000 i s a b s o l u t e 032 l 4 2 6 0027020 9 \ f 1 \r ] \r \r a n d P i n 1 0027040 o f 1 6 ( r o w , c o l , p 0027060 x , p y ) = v a l o f \r [ 0027100 032 \ f 1 \r u n l e s s O f f s 0027120 e t L e g a l ( r o w , 1 , 0027140 0 , 2 3 ) & O f f s e t L e g 0027160 a l ( c o l , 1 , $ a - $ a 0027200 , $ l - $ a ) d o \r r e s 0027220 u l t i s f a l s e \r \r B a s 0027240 i c P a t t e r n ( r o w / 2 , 0027260 c o l / 3 + c o l / 6 , p x 0027300 , p y ) \r @ p y = @ p y + 2 4 0027320 * ( r o w r e m 2 ) \r @ p x 0027340 = @ p x + 3 6 + 3 6 * ( c o l 0027360 r e m 3 ) \r r e s u l t i s 0027400 376 001 \0 ~ 7 t r u e 032 l 4 2 6 9 \ 0027420 f 1 \r ] \r \r a n d P i n 1 o f 0027440 8 ( r o w , c o l , p x , 0027460 p y ) = v a l o f \r [ 032 \ f 0027500 1 \r u n l e s s O f f s e t L 0027520 e g a l ( r o w , 1 , 0 , 0027540 1 1 ) & O f f s e t L e g a l ( 0027560 c o l , 1 , $ a - $ a , $ 0027600 l - $ a ) d o \r r e s u l t 0027620 i s f a l s e \r \r B a s i c P 0027640 a t t e r n ( r o w , c o l / 0027660 3 + c o l / 6 , p x , p y ) 0027700 \r @ p y = @ p y + 1 8 \r @ p x = 0027720 @ p x + 3 6 + 3 6 * ( c o l r 0027740 e m 3 ) \r r e s u l t i s t 0027760 r u e 032 l 4 2 6 9 \ f 1 \r ] \r \r 0030000 a n d P 376 001 \0 376 243 i n 1 o f 2 0030020 4 ( r o w , c o l , p x , 0030040 p y ) = v a l o f \r [ 032 \ f 0030060 1 \r u n l e s s O f f s e t L 0030100 e g a l ( r o w , 1 , 0 , 0030120 1 1 ) & O f f s e t L e g a l ( 0030140 c o l , 1 , 0 , 7 ) d o 0030160 r e s u l t i s f a l s e \r 0030200 \r B a s i c P a t t e r n ( r o 0030220 w , c o l / 2 + c o l / 4 , 0030240 p x , p y ) \r @ p y = @ p y + 0030260 8 \r @ p x = @ p x + 5 2 + 5 6 * 0030300 ( c o l r e m 2 ) \r r e s u 0030320 l t i s t r u e 032 l 4 2 6 9 \ 0030340 f 1 \r ] \r 032 \ f 1 \r a n d P i 0030360 n 1 o f 5 0 ( r o w , c o l , 0030400 p x , p y ) = 376 001 \0 6 M 0030420 P i n 1 o f 2 4 ( r o w , 2 * 0030440 c o l , p x , p y ) \r \r a n 0030460 d R e p e a t ( p p i n , p 0030500 i n s P e r B a s i c R e p e a 0030520 t , e x t r a P i n s P e r F 0030540 u l l R e p e a t , p x , p 0030560 y ) b e \r [ 032 \ f 1 \r l e t 0030600 p i n = @ p p i n - 1 \r l e 0030620 t p i n s P e r S i d e = 0030640 r e p e a t R o w s * \r ( ( r 0030660 e p e a t C o l s / 2 ) * p i n 0030700 s P e r B a s i c R e p e a t + 0030720 \r ( f u l l R e p e a t C o 0030740 l s / 2 ) * e x t r a P i n s P 0030760 e r F u l l R e p e a t ) \r l e 0031000 t s i d e = p i n / p i 376 0031020 001 \0 * { n s P e r S i d e \r p i 0031040 n = p i n r e m p i n s 0031060 P e r S i d e \r l e t p i n s 0031100 P e r F u l l C o l = r e p 0031120 e a t R o w s * ( p i n s P e r 0031140 B a s i c R e p e a t + e x t r 0031160 a P i n s P e r F u l l R e p e 0031200 a t ) \r l e t c o l = p i 0031220 n / p i n s P e r F u l l C o l 0031240 \r p i n = p i n r e m p 0031260 i n s P e r F u l l C o l \r l e 0031300 t p i n s P e r R e p e a t 0031320 = p i n s P e r B a s i c R e 0031340 p e a t + \r ( c o l l s f 0031360 u l l R e p e a t C o l s / 2 ? 0031400 e x t r a P i n s P e r F u l 0031420 l R e p 376 001 \0 302 177 e a t , 0 ) 0031440 \r l e t r o w = p i n / p 0031460 i n s P e r R e p e a t \r @ p p 0031500 i n = p i n r e m p i n 0031520 s P e r R e p e a t \r B a s i c 0031540 P a t t e r n ( r o w , 3 * s 0031560 i d e + c o l , p x , p y ) 0031600 032 l 4 2 6 9 \ f 1 \r ] \r \r a n d 0031620 B a s i c P a t t e r n ( r o 0031640 w , c o l , p x , p y ) 0031660 b e \r [ 032 \ f 1 \r @ p y = r 0031700 o w O f f s e t + r o w H e i g 0031720 h t * r o w \r @ p x = ( c 0031740 o l l s 3 ? l e f t C o l 0031760 s O f f s e t , r i g h t C o 0032000 l s O f f s e t ) + \r f u l l 0032020 C o l W i d t h * 376 \0 034 L 370 ( c 0032040 o l r e m 3 ) 032 l 4 2 6 9 \ 0032060 f 1 \r ] \r 032 \ f 1 \r 377 \0 \0 r o u 0032100 t e p c l b 2 . b c p l \0 373 227 { 0032120 241 336 \0 \0 376 001 \0 = ` / / r o u t e 0032140 p c l b 2 . b c p l \r \r / / B 0032160 o a r d - s p e c i f i c R o 0032200 u t e r o u t i n e s f o r 0032220 t h e P C v e r s i o n 0032240 o f t h e \r / / D o r a d o 0032260 M a i n L o g i c B o a r 0032300 d \r \r / / p a r t 2 o f 0032320 3 \r \r / / l a s t m o d i f 0032340 i e d b y E . M c C r e i 0032360 g h t , J u l y 1 4 , 1 9 0032400 8 1 6 : 3 7 P M \r / / \t \t 0032420 t o m o v e t h e l i n e 0032440 o f h o l e s u n d e r 0032460 t h e D I P p a t t e r n s 0032500 \r \r / / a l l c o - o r d i 0032520 n a t e s a r e 376 001 \0 221 352 d 0032540 e s c r i b e d w i t h r e 0032560 s p e c t t o t h e b o t 0032600 t o m o r \r / / w i r i n g 0032620 s i d e o f t h e b o a 0032640 r d . L e v e l T r a n s f o 0032660 r m f i x e s t h e s e a 0032700 s n e c e s s a r y . \r \r g e 0032720 t " r o u t e . d e f s " \r \r 0032740 m a n i f e s t \r [ 032 ( 6 3 5 ) 0032760 \ f 1 \r r e p e a t R o w s = 0033000 1 2 \r r e p e a t C o l s P e 0033020 r S i d e = 3 \r r e p e a t 0033040 C o l s = 2 * r e p e a t C 0033060 o l s P e r S i d e \r f u l l R 0033100 e p e a t C o l s P e r S i d e 0033120 = 2 \r f u l l R e p e a 376 001 0033140 \0 027 002 t C o l s = 2 * f u l 0033160 l R e p e a t C o l s P e r S i 0033200 d e \r r e p e a t s = r e p 0033220 e a t R o w s * r e p e a t C o 0033240 l s \r f u l l R e p e a t s = 0033260 r e p e a t R o w s * f u l l 0033300 R e p e a t C o l s \r r o w O f 0033320 f s e t = 1 6 \r l e f t C o 0033340 l s O f f s e t = 0 \r r i g 0033360 h t C o l s O f f s e t = 2 0033400 4 6 \r r o w H e i g h t = 4 0033420 2 \r f u l l C o l W i d t h = 0033440 1 1 2 \r p a t t e r n G r o u 0033460 n d s = 3 * r e p e a t s + 0033500 6 * f u l l R e p e a t s \r S o 0033520 c k e t s 1 6 p i n = 6 * f 0033540 u l l 376 001 \0 } 030 R e p e a t s \r 0033560 S o c k e t s 2 4 p i n = 2 0033600 * f u l l R e p e a t s \r S o c 0033620 k e t s 5 0 p i n = f u l l 0033640 R e p e a t s \r S o c k e t s S 0033660 i p = 3 * f u l l R e p e a 0033700 t s 032 l 4 2 6 9 \ f 1 \r ] \r \r s 0033720 t a t i c [ b o a r d I n t 0033740 e r f a c e V e r s i o n = 0033760 i n t e r f a c e V e r s i o n 0034000 ] \r \r l e t F i n d I n d e 0034020 x F r o m C o o r d ( x , y , 0034040 p i c c l a s s , p P i n N 0034060 o ; n u m a r g s n a ) = 0034100 v a l o f \r [ 032 \ f 1 \r s t a 0034120 t i c [ h o t I n d e x = 0034140 - 1 ; f i r 376 001 \0 S \a s t U 0034160 n u s e d P i n = 0 ] \r \r 0034200 D e f a u l t A r g s ( l v n 0034220 a , - 2 , l v n a , l v 0034240 n a ) \r \r i f f i r s t U n 0034260 u s e d P i n e q 0 t h e 0034300 n f i r s t U n u s e d P i n 0034320 = F I F C ( - 1 , - 1 ) \r l 0034340 e t r e s u l t = F I F C 0034360 ( x , y , p i c c l a s s , 0034400 p P i n N o ) \r i f r e s u 0034420 l t l s 0 % r e s u l t 0034440 g r f i r s t U n u s e d P 0034460 i n t h e n C a l l S w a t 0034500 ( " I l l e g a l i n d e x . 0034520 . " ) \r i f r e s u l t e q 0034540 h o t I n d e x t h e 376 001 \0 0034560 I 217 n C a l l S w a t ( " H o 0034600 t i n d e x c o m p u t e d 0034620 . . . " ) \r r e s u l t i s r 0034640 e s u l t 032 l 4 2 6 9 \ f 1 \r ] 0034660 \r \r a n d F I F C ( x , y , 0034700 p i c c l a s s , p P i n N 0034720 o ; n u m a r g s n a ) = 0034740 v a l o f \r [ 032 \ f 1 \r / / 0034760 t h i s i s m o d i f i e d 0035000 f r o m t h e s t i t c h 0035020 w e l d a n d m u l t i w i 0035040 r e f o r m a t t o i n t 0035060 r o d u c e \r / / t w o r o 0035100 w s o f h o l e s u n d e 0035120 r t h e I C ' s i n s t e 0035140 a d o f o n e \r \r m a n i f 0035160 e s 376 001 \0 003 247 t \r [ 032 l 4 2 6 9 0035200 \ f 1 \r f i r s t E P i n = 0035220 1 \r f i r s t S o c k e t G r o 0035240 u n d = f i r s t E P i n + 0035260 9 2 + 9 2 \r f i r s t P a t t e 0035300 r n P i n = f i r s t S o c 0035320 k e t G r o u n d + 9 2 + 9 2 \r 0035340 f i r s t U n u s e d P i n = 0035360 f i r s t P a t t e r n P i n 0035400 + r e p e a t R o w s * 7 * ( f 0035420 u l l R e p e a t C o l s * 2 6 0035440 + \r r e p e a t C o l s * 2 ) 0035460 032 l 5 5 3 9 \ f 1 \r ] \r \r i f 0035500 x e q - 1 & y e q - 0035520 1 t h e n r e s u l t i s 0035540 f i r s t U n u s e d P i n \r \r 0035560 D e f a u l t 376 001 \0 % 271 A r g s 0035600 ( l v n a , - 2 , l v n 0035620 a , l v n a ) \r \r u n l e s 0035640 s O f f s e t L e g a l ( x , 0035660 1 , 0 , 4 7 6 ) & O f f s 0035700 e t L e g a l ( y , 1 , 0 , 0035720 5 2 4 ) d o r e s u l t i 0035740 s 0 \r \r i f y e q 0 % 0035760 y e q 5 2 4 t h e n / 0036000 / . . c o n n e c t o r s i 0036020 g n a l p i n \r [ 032 l 4 2 6 9 0036040 \ f 1 \r l e t c o n n C l a s 0036060 s = ( x - 2 2 ) r e m 1 0036100 0 \r i f ( c o n n C l a s s 0036120 n e 0 ) & ( c o n n C l a 0036140 s s n e 4 ) t h e n r e 0036160 s u l t i s 0 \r l e t 376 001 \0 340 0036200 026 v p i n = 2 * ( ( x - 2 0036220 2 ) / 1 0 ) + ( c o n n C l a s 0036240 s / 4 ) \r u n l e s s O f f s 0036260 e t L e g a l ( v p i n , 1 , 0036300 0 , 9 1 ) d o r e s u l 0036320 t i s 0 \r r e s u l t i s v 0036340 p i n + 9 2 * ( y / 5 2 4 ) + f 0036360 i r s t E P i n 032 l 5 5 3 9 \ f 0036400 1 \r ] \r \r i f y e q 4 % 0036420 y e q 5 2 0 t h e n / 0036440 / . . c o n n e c t o r g r 0036460 o u n d p i n \r [ 032 l 4 2 6 9 0036500 \ f 1 \r l e t c o n n C l a s 0036520 s = ( x - 2 2 ) r e m 1 0036540 0 \r i f ( c o n n C l a s s 0036560 n e 0 ) & ( c o n n C l a 0036600 s 376 001 \0 D 033 s n e 4 ) t h 0036620 e n r e s u l t i s 0 \r l e 0036640 t v p i n = 2 * ( ( x - 2 0036660 2 ) / 1 0 ) + ( c o n n C l a s 0036700 s / 4 ) \r u n l e s s O f f s 0036720 e t L e g a l ( v p i n , 1 , 0036740 0 , 9 1 ) d o r e s u l 0036760 t i s 0 \r l e t c g p = 0037000 v p i n + 9 2 * ( y / 5 2 0 ) \r 0037020 @ p i c c l a s s = M u s t 0037040 F i n d N a m e e ( " G N D " , 0037060 t y p e I c c l a s s ) \r @ p 0037100 P i n N o = p a t t e r n G 0037120 r o u n d s + 1 + c g p \r r e s 0037140 u l t i s c g p + f i r s t S 0037160 o c k e t G r o u n d 032 l 5 5 3 0037200 9 \ f 1 \r ] 376 001 \0 1 x \r \r l e t 0037220 s i d e = 0 \r i f x g 0037240 e r i g h t C o l s O f f s e 0037260 t t h e n \r [ 032 l 4 2 6 9 \ f 0037300 1 \r s i d e = 1 \r x = x 0037320 - ( r i g h t C o l s O f f s e 0037340 t - l e f t C o l s O f f s e t 0037360 ) 032 l 5 5 3 9 \ f 1 \r ] \r l e t 0037400 x O f f s e t = x - l e f 0037420 t C o l s O f f s e t \r u n l e 0037440 s s O f f s e t L e g a l ( x 0037460 O f f s e t , 4 , 0 , 5 7 0037500 ) d o r e s u l t i s 0 \r 0037520 l e t x R e p e a t = r e 0037540 p e a t C o l s P e r S i d e * 0037560 s i d e + ( x O f f s e t / f u 0037600 l l C o l W i d t h ) 376 001 \0 @ 177 0037620 \r x O f f s e t = x O f f s 0037640 e t r e m f u l l C o l W i 0037660 d t h \r u n l e s s O f f s e 0037700 t L e g a l ( x O f f s e t , 0037720 4 , 0 , 2 7 ) d o r e s 0037740 u l t i s 0 \r l e t y O f f 0037760 s e t = y - r o w O f f s e 0040000 t \r l e t y R e p e a t = 0040020 y O f f s e t / r o w H e i g h 0040040 t \r y O f f s e t = y O f f 0040060 s e t r e m r o w H e i g h 0040100 t \r u n l e s s O f f s e t L 0040120 e g a l ( y R e p e a t , 1 , 0040140 0 , 1 1 ) d o \r r e s u 0040160 l t i s 0 \r \r l e t p i n I 0040200 n G r o u p = 1 \r l e t p 0040220 376 001 \0 361 367 r e v G r o u p s = 0040240 r e p e a t R o w s * x R e p 0040260 e a t + y R e p e a t \r l e t 0040300 p r e v F u l l G r o u p s = 0040320 r e p e a t R o w s * ( x R e 0040340 p e a t - ( x R e p e a t / r e 0040360 p e a t C o l s P e r S i d e ) 0040400 ) + \r ( x R e p e a t r e m 0040420 r e p e a t C o l s P e r S i 0040440 d e n e f u l l R e p e a t 0040460 C o l s P e r S i d e ? y R e 0040500 p e a t , 0 ) \r \r s w i t c h 0040520 o n y O f f s e t i n t o \r 0040540 [ 032 l 4 2 6 9 \ f 1 \r c a s e 0040560 0 : 032 l 5 5 3 9 \ f 1 \r s w i t 0040600 c h o n x O f f s e t i n t 0040620 o \r [ 032 l 376 001 \0 213 \f 6 8 0 9 \ f 0040640 1 \r c a s e 8 0 : p i n I n 0040660 G r o u p = p i n I n G r o 0040700 u p + 2 \r c a s e 4 4 : p i 0040720 n I n G r o u p = p i n I n 0040740 G r o u p + 2 \r c a s e 4 : 032 0040760 l 8 0 7 9 \ f 1 \r @ p i c c l a 0041000 s s = M u s t F i n d N a m 0041020 e e ( " V E E " , t y p e I c 0041040 c l a s s ) \r @ p P i n N o = 0041060 2 * p r e v G r o u p s + 4 * 0041100 p r e v F u l l G r o u p s + \r 0041120 p i n I n G r o u p \r e n d c 0041140 a s e 032 l 9 3 4 9 \ f 1 \r \r c a 0041160 s e 7 6 : p i n I n G r o u 0041200 p = p i n I n G r o u p + 3 0041220 \r c a s e 4 0 : 032 376 001 \0 \ K l 0041240 8 0 7 9 \ f 1 \r p i n I n G r o 0041260 u p = p i n I n G r o u p + 0041300 3 \r @ p i c c l a s s = M u 0041320 s t F i n d N a m e e ( " G N D 0041340 " , t y p e I c c l a s s ) \r 0041360 @ p P i n N o = 3 * p r e v 0041400 G r o u p s + 6 * p r e v F u l 0041420 l G r o u p s + \r p i n I n G 0041440 r o u p \r e n d c a s e \r 032 l 9 0041460 3 4 9 \ f 1 \r d e f a u l t : 032 0041500 l 8 0 7 9 \ f 1 \r ] \r e n d c a 0041520 s e 032 l 6 8 0 9 \ f 1 \r \r c a s 0041540 e 8 : 032 l 5 5 3 9 \ f 1 \r c a 0041560 s e 3 2 : 032 l 5 5 3 9 \ f 1 \r 0041600 e n d c a s e 032 l 6 8 0 9 \ f 1 0041620 \r \r c a s e 1 2 : 032 l 5 5 3 376 0041640 001 \0 k 353 9 \ f 1 \r s w i t c h o 0041660 n x O f f s e t i n t o \r [ 0041700 032 l 6 8 0 9 \ f 1 \r c a s e 7 0041720 6 : p i n I n G r o u p = 0041740 p i n I n G r o u p + 2 \r c a s 0041760 e 7 2 : p i n I n G r o u p 0042000 = p i n I n G r o u p + 1 \r 0042020 c a s e 4 0 : p i n I n G r 0042040 o u p = p i n I n G r o u p 0042060 + 4 \r c a s e 0 : 032 l 8 0 7 9 0042100 \ f 1 \r @ p i c c l a s s = 0042120 M u s t F i n d N a m e e ( " G 0042140 N D " , t y p e I c c l a s s 0042160 ) \r @ p P i n N o = 3 * p r 0042200 e v G r o u p s + 6 * p r e v F 0042220 u l l G r o u p s + \r p i n I 0042240 n G r o 376 001 \0 254 F u p \r e n d c 0042260 a s e \r 032 l 9 3 4 9 \ f 1 \r d e 0042300 f a u l t : 032 l 8 0 7 9 \ f 1 \r 0042320 ] \r e n d c a s e 032 l 6 8 0 9 \ 0042340 f 1 \r \r c a s e 1 8 : 032 l 5 5 0042360 3 9 \ f 1 \r s w i t c h o n x 0042400 O f f s e t i n t o \r [ 032 l 6 0042420 8 0 9 \ f 1 \r c a s e 4 : 032 l 0042440 8 0 7 9 \ f 1 \r @ p i c c l a s 0042460 s = M u s t F i n d N a m e 0042500 e ( " V D D " , t y p e I c c 0042520 l a s s ) \r @ p P i n N o = 0042540 p r e v G r o u p s + p i n I n 0042560 G r o u p \r e n d c a s e 032 l 9 0042600 3 4 9 \ f 1 \r \r c a s e 1 0 8 0042620 : 032 l 8 0 7 9 \ f 1 \r p i n I n 0042640 G r o u p = p 376 001 \0 L M i n 0042660 I n G r o u p + 2 \r @ p i c c l 0042700 a s s = M u s t F i n d N a 0042720 m e e ( " V T T " , t y p e I 0042740 c c l a s s ) \r @ p P i n N o 0042760 = 3 * p r e v F u l l G r o u 0043000 p s + p i n I n G r o u p \r e n 0043020 d c a s e \r 032 l 9 3 4 9 \ f 1 \r 0043040 d e f a u l t : 032 l 8 0 7 9 \ f 0043060 1 \r ] \r e n d c a s e 032 l 6 8 0 0043100 9 \ f 1 \r \r c a s e 2 4 : 032 l 0043120 5 5 3 9 \ f 1 \r s w i t c h o n 0043140 x O f f s e t i n t o \r [ 032 0043160 l 6 8 0 9 \ f 1 \r c a s e 0 : 0043200 032 l 8 0 7 9 \ f 1 \r p i n I n G 0043220 r o u p = p i n I n G r o u 0043240 p + 1 \r @ p i c c l a s s 376 001 0043260 \0 327 O = M u s t F i n d N a m 0043300 e e ( " G N D " , t y p e I c 0043320 c l a s s ) \r @ p P i n N o = 0043340 3 * p r e v G r o u p s + 6 * 0043360 p r e v F u l l G r o u p s + \r 0043400 p i n I n G r o u p \r e n d c 0043420 a s e 032 l 9 3 4 9 \ f 1 \r \r c a 0043440 s e 8 0 : p i n I n G r o u 0043460 p = p i n I n G r o u p + 2 0043500 \r c a s e 4 4 : p i n I n G 0043520 r o u p = p i n I n G r o u 0043540 p + 2 \r c a s e 4 : 032 l 8 0 7 0043560 9 \ f 1 \r p i n I n G r o u p 0043600 = p i n I n G r o u p + 1 \r @ 0043620 p i c c l a s s = M u s t F 0043640 i n d N a m e e ( " V E E " , 0043660 t y p 376 001 \0 362 264 e I c c l a s s 0043700 ) \r @ p P i n N o = 2 * p r 0043720 e v G r o u p s + 4 * p r e v F 0043740 u l l G r o u p s + \r p i n I 0043760 n G r o u p \r e n d c a s e 032 l 0044000 9 3 4 9 \ f 1 \r \r c a s e 7 6 0044020 : p i n I n G r o u p = p 0044040 i n I n G r o u p + 1 \r c a s e 0044060 4 0 : 032 l 8 0 7 9 \ f 1 \r @ p 0044100 i c c l a s s = M u s t F i 0044120 n d N a m e e ( " V T T " , t 0044140 y p e I c c l a s s ) \r @ p P i 0044160 n N o = 3 * p r e v F u l l 0044200 G r o u p s + p i n I n G r o u 0044220 p \r e n d c a s e \r 032 l 9 3 4 9 0044240 \ f 1 \r d e f a u l t : 032 l 8 0 0044260 7 9 \ f 1 \r ] \r 376 001 \0 . 247 e n d 0044300 c a s e 032 l 6 8 0 9 \ f 1 \r \r c 0044320 a s e 3 6 : 032 l 5 5 3 9 \ f 1 0044340 \r s w i t c h o n x O f f s e 0044360 t i n t o \r [ 032 l 6 8 0 9 \ f 0044400 1 \r c a s e 0 : 032 l 8 0 7 9 \ 0044420 f 1 \r @ p i c c l a s s = M 0044440 u s t F i n d N a m e e ( " V C 0044460 C " , t y p e I c c l a s s ) 0044500 \r @ p P i n N o = p r e v G 0044520 r o u p s + p i n I n G r o u p 0044540 \r e n d c a s e 032 l 9 3 4 9 \ f 0044560 1 \r \r c a s e 1 0 8 : p i n 0044600 I n G r o u p = p i n I n G 0044620 r o u p + 6 \r c a s e 4 : 032 l 0044640 8 0 7 9 \ f 1 \r p i n I n G r o 0044660 u p = p i n I n G r o 376 001 \0 0044700 370 031 u p + 2 \r @ p i c c l a s s 0044720 = M u s t F i n d N a m e e 0044740 ( " G N D " , t y p e I c c l 0044760 a s s ) \r @ p P i n N o = 3 0045000 * p r e v G r o u p s + 6 * p r 0045020 e v F u l l G r o u p s + \r p 0045040 i n I n G r o u p \r e n d c a s 0045060 e \r 032 l 9 3 4 9 \ f 1 \r d e f a 0045100 u l t : 032 l 8 0 7 9 \ f 1 \r ] \r 0045120 e n d c a s e 032 l 6 8 0 9 \ f 1 0045140 \r \r d e f a u l t : r e s u l 0045160 t i s 0 032 l 5 5 3 9 \ f 1 \r ] 0045200 \r \r l e t c o l B a s e = 0045220 7 * ( ( x R e p e a t / 3 ) * r 0045240 e p e a t R o w s * ( ( f u l l 0045260 R e p e a t C o l s / 2 ) * 2 6 0045300 + \r 376 001 \0 263 263 ( r e p e a t C 0045320 o l s / 2 ) * 2 ) + ( x R e p e 0045340 a t r e m 3 ) * r e p e a t 0045360 R o w s * 2 8 ) \r l e t r o w 0045400 B a s e = 7 * y R e p e a t 0045420 * ( ( x R e p e a t r e m 3 0045440 e q 2 ) ? 2 , 2 8 ) \r \r 0045460 r e s u l t i s ( ( ( s i d e 0045500 * 1 2 ) + y R e p e a t ) * 7 + 0045520 ( s e l e c t o n y O f f s e 0045540 t i n t o \r [ 032 l 4 2 6 9 \ f 0045560 1 \r c a s e 0 : 0 \r c a s e 0045600 8 : 1 \r c a s e 1 2 : 2 0045620 \r c a s e 1 8 : 3 \r c a s e 0045640 2 4 : 4 \r c a s e 3 2 : 0045660 5 \r c a s e 3 6 : 6 032 l 5 5 0045700 3 9 \ f 1 \r ] 376 \0 , E c ) ) * 5 0045720 7 + ( x / 4 ) + f i r s t P a t 0045740 t e r n P i n 032 l 4 2 6 9 \ f 1 0045760 \r ] \r 032 \ f 1 \r 377 \0 \0 r o u t e 0046000 p c l b 3 . b c p l \0 373 227 { 242 016 0046020 \0 \0 376 001 \0 & M / / r o u t e p 0046040 c l b 3 . b c p l \r \r / / B o 0046060 a r d - s p e c i f i c R o u 0046100 t e r o u t i n e s f o r 0046120 t h e P C v e r s i o n o 0046140 f t h e \r / / D o r a d o 0046160 M a i n L o g i c B o a r d 0046200 \r \r / / p a r t 3 o f 3 0046220 \r \r / / l a s t m o d i f i 0046240 e d b y E . M c C r e i g 0046260 h t , J u l y 1 4 , 1 9 8 0046300 1 6 : 4 0 P M \r \r g e t 0046320 " r o u t e . d e f s " \r \r e x 0046340 t e r n a l [ P i n 1 o f 1 0046360 6 ] \r \r s t a t i c [ b o 0046400 a r d I n t e r f a c e V e r s 0046420 i o n = i 376 001 \0 005 [ n t e r 0046440 f a c e V e r s i o n ] \r \r 0046460 \r l e t C o m p u t e P C C o 0046500 o r d s ( p x , p y , i s M 0046520 i l s ) b e \r [ 032 ( 6 3 5 ) \ 0046540 f 1 \r u n l e s s i s M i l s 0046560 d o \r [ 032 l 4 2 6 9 \ f 1 \r @ 0046600 p x = 2 5 * @ p x \r @ p y 0046620 = 2 5 * @ p y 032 l 5 5 3 9 \ f 0046640 1 \r ] \r \r / / T h e b o a r 0046660 d i n s t a n d a r d o r 0046700 i e n t a t i o n w i t h t 0046720 h e c o m p o n e n t s i d 0046740 e v i s i b l e , \r / / h a 0046760 s a 0 1 a t t o p l e f 0047000 t a n d l 0 1 a t t o p 0047020 \r / / r i g h t , a 376 001 \0 200 0047040 n n d i s d e s c r i b e d 0047060 w i t h y i n c r e a s i 0047100 n g u p w a r d a n d x 0047120 i n c r e a s i n g \r / / t o 0047140 t h e r i g h t a n d t 0047160 h e 0 , 0 o r i g i n a t 0047200 b o t t o m l e f t o f f 0047220 t h e b o a r d . T h i s 0047240 \r / / m e a n s t h a t p 0047260 i n 1 o f a n I C i s 0047300 l o c a t e d a t t h e 0047320 m a x - x , m a x - y v a l 0047340 u e \r / / c o m p a r e d w 0047360 i t h a n y o t h e r p i 0047400 n o f t h a t I C . \r \r @ 0047420 p x = 1 1 0 0 + @ p x \t / / 0047440 376 001 \0 222 004 o f f s e t t h e 0047460 x c o - o r d i n a t e b 0047500 y 1 . 1 i n c h e s \r @ p y 0047520 = 1 4 4 0 0 - @ p y \t / / 0047540 r e v e r s e t h e y c o 0047560 - o r d i n a t e a n d o f 0047600 f s e t 1 4 . 4 i n c h e s 0047620 \r \r / / L o c a t i o n a 0047640 0 1 p i n 1 i s n o w 0047660 a t x = 2 0 0 0 , y = 1 4 0 0047700 0 0 \r \r i f ( @ p x r e m 0047720 5 0 ) n e 0 % ( @ p y 0047740 r e m 5 0 ) n e 0 t h 0047760 e n \r C a l l S w a t ( " P 0050000 i n n o t o n 5 0 - m i l 0050020 g r i d " ) 032 l 4 2 6 9 \ f 0050040 1 \r ] \r \r a 376 001 \0 372 373 n d O t 0050060 h e r P C H o l e s ( i s P r o 0050100 t o t y p e , P r i n t P C S i 0050120 t e ) b e \r [ 032 \ f 1 \r l e t 0050140 x , y = n i l , n i l \r l 0050160 e t s = v e c 6 \r \r i f 0050200 i s P r o t o t y p e \r t h e 0050220 n \r [ 032 l 4 2 6 9 \ f 1 \r f o r 0050240 x = 0 t o 5 9 9 b y 2 0050260 d o f o r y = 0 t o 5 0050300 9 9 b y 2 d o \r i f F 0050320 i n d I n d e x F r o m C o o r 0050340 d ( x , y ) n e 0 t h e n 0050360 \r [ 032 l 5 5 3 9 \ f 1 \r l e t 0050400 c l a s s , p i n = e m p t 0050420 y , 0 \r F i n d I n d e x F r o 0050440 m C o o r d ( x , y 376 001 \0 242 317 0050460 , l v c l a s s , l v p 0050500 i n ) \r P r i n t P C S i t e ( 0050520 x , y , y l e 4 % y 0050540 g e 5 2 0 ) / / m u s t 0050560 d r i l l e d g e f i n g 0050600 e r s 032 l 6 8 0 9 \ f 1 \r ] \r \r 0050620 / / d e s c r i b e t h e 0050640 v i a s i t e s \r \r F i n d C 0050660 o o r d F r o m S t r i n g ( " 0050700 a 0 1 " , l v x , l v y 0050720 , 4 * 3 , 4 * - 2 ) \r f o r 0050740 r o w = 0 t o 1 d o 0050760 f o r c o l = 0 t o 0051000 1 1 2 d o \r P r i n t P C S 0051020 i t e ( x + 4 * c o l , y + 4 0051040 * r o w , f a l s e ) / / 0051060 376 001 \0 z 232 a l o n g t h e t 0051100 o p \r \r f o r r o w = 1 t o 0051120 2 3 b y 2 d o \r [ 032 l 5 0051140 5 3 9 \ f 1 \r E x p a n d T e m 0051160 p l a t e ( s , " f $ D " , 0051200 r o w ) \r F i n d C o o r d F r 0051220 o m S t r i n g ( s , l v x 0051240 , l v y , 4 * - 3 , 0 ) 0051260 \r f o r s u b r o w = 0 0051300 t o 9 d o f o r c o l 0051320 = 0 t o 2 d o \r P r i 0051340 n t P C S i t e ( x + 4 * c o l 0051360 , y + 4 * s u b r o w , f a 0051400 l s e ) / / d o w n t h e 0051420 c e n t e r 032 l 6 8 0 9 \ f 1 0051440 \r ] \r \r f o r r o w = 1 t o 0051460 2 4 d 376 001 \0 i r o f o r 0051500 c o l = $ a t o $ g b y 0051520 ( $ g - $ a ) d o \r [ 032 l 5 5 0051540 3 9 \ f 1 \r E x p a n d T e m p 0051560 l a t e ( s , " $ C $ D " , 0051600 c o l , r o w ) \r F i n d C o 0051620 o r d F r o m S t r i n g ( s , 0051640 l v x , l v y , 4 * 9 0051660 , 4 * 1 ) \r f o r s u b c o 0051700 l = 0 t o 5 7 d o \r 0051720 P r i n t P C S i t e ( x + 4 * 0051740 s u b c o l , y , f a l s e 0051760 ) / / u n d e r t h e D 0052000 I P ' s 032 l 6 8 0 9 \ f 1 \r ] \r 0052020 \r f o r r o w = 1 t o 2 3 0052040 b y 2 d o \r [ 032 l 5 5 3 9 0052060 \ f 1 \r E x p a n d 376 001 \0 251 037 T 0052100 e m p l a t e ( s , " l $ D " 0052120 , r o w ) \r F i n d C o o r d 0052140 F r o m S t r i n g ( s , l v 0052160 x , l v y , 4 * - 3 , 0052200 4 * 3 ) \r P r i n t P C S i t e 0052220 ( x , y , t r u e , " V D D 0052240 " ) \r / / V D D s t r i p 0052260 f e e d - t h r u h o l e s 0052300 \r \r E x p a n d T e m p l a t e 0052320 ( s , " a $ D " , r o w ) \r 0052340 F i n d C o o r d F r o m S t r 0052360 i n g ( s , l v x , l v 0052400 y , 4 * 1 0 , 4 * 4 + 2 ) \r 0052420 P r i n t P C S i t e ( x , y 0052440 , t r u e , " V T T " ) \r 0052460 / / V T T s t r i p f e 376 0052500 001 \0 232 312 e d - t h r u h o l e 0052520 s 032 l 6 8 0 9 \ f 1 \r ] \r \r l e 0052540 t x m i n , y m i n , x m a x 0052560 , y m a x = n i l , n i l , 0052600 n i l , n i l \r F i n d C o o r 0052620 d F r o m S t r i n g ( " a 0 1 0052640 " , l v x m i n , l v y 0052660 m i n , 4 * 1 5 , 4 * - 4 ) 0052700 \r F i n d C o o r d F r o m S t 0052720 r i n g ( " l 2 4 " , l v x 0052740 m a x , l v y m a x , 4 * 0052760 - 5 , 4 * 4 + 2 ) \r \r f o r 0053000 c o l = 0 t o 1 d o \r f 0053020 o r r o w = 0 t o 1 d o 0053040 \r [ 032 l 5 5 3 9 \ f 1 \r l e t 0053060 x = c o l e q 0 ? x m 0053100 i n , 376 001 \0 M 234 x m a x \r l e 0053120 t y = r o w e q 0 ? 0053140 y m i n , y m a x \r f o r h 0053160 o l e R o w = 0 t o 1 0053200 d o \r f o r h o l e C o l 0053220 = 0 t o ( x e q x m 0053240 i n ? 4 , 2 ) d o \r 0053260 P r i n t P C S i t e ( x + h o 0053300 l e C o l * 4 , y + h o l e R 0053320 o w * 4 , t r u e , \r 0053340 ( ( x e q x m i n ) ? ( ( 0053360 y e q y m i n ) ? " V T T 0053400 " , " V E E " ) , \r 0053420 ( ( y e q y m i n ) ? " 0053440 V D D " , " V C C " ) ) ) \r 0053460 / / p o w e r b u s f e e 0053500 d - t h r u h o 376 \0 304 367 034 l e 0053520 s 032 l 6 8 0 9 \ f 1 \r ] \r \r f o 0053540 r r o w = 0 t o 4 d o \r 0053560 [ 032 l 5 5 3 9 \ f 1 \r P r i n t 0053600 P C S i t e ( x m i n - 6 , y 0053620 m i n + 2 2 + r o w * 1 2 0 , 0053640 t r u e , " T O O L I N G " ) 0053660 \r P r i n t P C S i t e ( x m a 0053700 x + 4 , y m i n + 2 2 + r o w 0053720 * 1 2 0 , t r u e , " T O O 0053740 L I N G " ) 032 l 6 8 0 9 \ f 1 \r 0053760 ] 032 l 5 5 3 9 \ f 1 \r ] 032 l 4 2 0054000 6 9 \ f 1 \r ] 032 \ f 1 \r \r 032 \ f 0054020 1 \r 374 0054023