$ od -c -N 50000 [_CD6_]<sil>GobSources.dm!1>boardlm.bcpl
0000000 / / F U N C T I O
0000020 N S F O R D 1
0000040 L O G I C A N D
0000060 M E M O R Y
0000100 B O A R D S \r g e t
0000120 " s y s d e f s . d " \r g e t
0000140 " g o b . d e f s " \r \r e x t e
0000160 r n a l \r [ \r B o a r d L \r B o
0000200 a r d M \r ] \r \r \r l e t B o a
0000220 r d L ( ) b e \r [ \r G e t S V
0000240 C o o r d s = G e t S V C o o r
0000260 d s L \r G e t S V i n d e x = G
0000300 e t S V i n d e x L \r S V o l t
0000320 R e q = t a b l e [ 3 3
0000340 6 ; 1 4 4 ; 1 4 4 ; 1 4
0000360 4 ; 1 4 4 ] \r N e t H a s
0000400 S V o l t = N e t H a s S v
0000420 o l t L \r L e g a l B l o c =
0000440 L e g a l B l o c L \r C h i p
0000460 t o P i n P o s = C h i p t
0000500 o P i n P o s T \r G e t E p i n
0000520 C o o r d s = G e t E p i n
0000540 C o o r d s L \r G e t C p i n C
0000560 o o r d s = G e t C p i n C
0000600 o o r d s L \r G e t I C c o o r
0000620 d s = G e t I C c o o r d s
0000640 L \r A d d P o t e n t i a l T e
0000660 r m s = A d d P o t e n t i
0000700 a l T e r m s L \r F i n d B e s
0000720 t T e r m = F i n d B e s t
0000740 T e r m L \r S e t U p T e r m s
0000760 = S e t U p T e r m s L \r G
0001000 e t B o a r d P i n s = G e
0001020 t B o a r d P i n s L \r m a x n
0001040 = 6 3 / / b o a r d l o
0001060 c a t i o n s 1 - 6 3 \r m a x
0001100 a l p h = $ l - $ a \r T a b
0001120 l e Z e r o S t r i n g =
0001140 " * n Z e r o T a b l e A t
0001160 C 1 8 8 : < 0 > { 2 2 , 0
0001200 } * n Z e r o T a b l e A t
0001220 E 6 : < 0 > { 2 2 , 5 2 5
0001240 } * n Z e r o T a b l e A t
0001260 E 1 8 7 : < 0 > { 4 7 7 ,
0001300 5 2 5 } * n Z e r o T a b l e
0001320 A t C 5 : < 0 > { 4 7 7
0001340 , 0 } " \r \r ] \r \r a n d B o a
0001360 r d M ( ) b e \r [ \r G e t S V
0001400 C o o r d s = G e t S V C o o r
0001420 d s M \r G e t S V i n d e x = G
0001440 e t S V i n d e x M \r S V o l t
0001460 R e q = t a b l e [ 3 3
0001500 6 ; 0 ; 0 ; 0 ; 0 ]
0001520 \r N e t H a s S V o l t =
0001540 N e t H a s S v o l t M \r L e g
0001560 a l B l o c = L e g a l B l
0001600 o c M \r C h i p t o P i n P o s
0001620 = C h i p t o P i n P o s T
0001640 \r G e t E p i n C o o r d s =
0001660 G e t E p i n C o o r d s L \r
0001700 G e t C p i n C o o r d s =
0001720 G e t C p i n C o o r d s L \r G
0001740 e t I C c o o r d s = G e t
0001760 I C c o o r d s M \r A d d P o t
0002000 e n t i a l T e r m s = A d
0002020 d P o t e n t i a l T e r m s M
0002040 \r F i n d B e s t T e r m =
0002060 F i n d B e s t T e r m L \r S e
0002100 t U p T e r m s = S e t U p
0002120 T e r m s M \r G e t B o a r d P
0002140 i n s = G e t B o a r d P i
0002160 n s M \r m a x n = 4 2 / /
0002200 b o a r d l o c a t i o n s
0002220 1 - 2 6 \r m a x a l p h = $
0002240 l - $ a \r T a b l e Z e r o S t
0002260 r i n g = " * n Z e r o
0002300 T a b l e A t C 1 8 8 : <
0002320 0 > { 2 2 , 0 } * n Z e r o
0002340 T a b l e A t E 6 : < 0 >
0002360 { 2 2 , 5 2 5 } * n Z e r o
0002400 T a b l e A t E 1 8 7 : <
0002420 0 > { 4 7 7 , 5 2 5 } * n Z e
0002440 r o T a b l e A t C 5 :
0002460 < 0 > { 4 7 7 , 0 } " \r ] \r \r
0002500 a n d N e t H a s S v o l t L
0002520 ( n e t n a m e ) = v a l o
0002540 f \r [ 032 ( 1 2 7 0 ) \ f 1 \r i f
0002560 S t E q ( " V C C " , n e t n
0002600 a m e ) t h e n r e s u l t
0002620 i s $ F \r i f S t E q ( " G
0002640 N D " , n e t n a m e ) t h e
0002660 n r e s u l t i s $ G \r i f
0002700 S t E q ( " V E E " , n e t n
0002720 a m e ) t h e n r e s u l t
0002740 i s $ M \r i f S t E q ( " V
0002760 T T " , n e t n a m e ) t h e
0003000 n r e s u l t i s $ T \r i f
0003020 S t E q ( " V D D " , n e t n
0003040 a m e ) t h e n r e s u l t
0003060 i s $ D \r r e s u l t i s 0
0003100 032 l 4 2 6 9 \ f 1 \r ] \r \r a n d
0003120 G e t S V i n d e x L ( S V T
0003140 y p e , b l , p i n ) = v a l o
0003160 f \r [ 032 \ f 1 \r l e t a l p h
0003200 = b l r e m 2 6 \r l e t
0003220 n u m = b l / 2 6 \r s w i
0003240 t c h o n S V T y p e i n t
0003260 o \r [ 032 l 4 2 6 9 \ f 1 \r c a s
0003300 e $ G : \r [ 032 l 5 5 3 9 \ f 1
0003320 \r i f ( n u m g e 1 ) &
0003340 ( n u m l e 2 4 ) r e s
0003360 u l t i s a l p h * 2 4 +
0003400 n u m \r i f ( n u m g e 4
0003420 1 ) & ( n u m l e 5 2 )
0003440 r e s u l t i s a l p h * 2
0003460 4 + ( n u m - 4 0 ) * 2 - 1 \r
0003500 i f ( n u m g e 6 0 ) &
0003520 ( n u m l e 6 3 ) r e s
0003540 u l t i s a l p h * 4 + ( n
0003560 u m - 5 9 ) + 2 8 8 \r r e s u
0003600 l t i s 0 032 l 6 8 0 9 \ f 1 \r
0003620 ] \r \r c a s e $ T : \r c a s e
0003640 $ D : \r c a s e $ F : \r c a
0003660 s e $ M : \r [ 032 l 5 5 3 9 \ f
0003700 1 \r i f ( n u m g e 1 )
0003720 & ( n u m l e 2 4 ) r e
0003740 s u l t i s a l p h * 1 2 +
0003760 ( n u m + 1 ) / 2 \r i f ( n u
0004000 m g e 4 1 ) & ( n u m
0004020 l e 5 2 ) r e s u l t i s
0004040 a l p h * 1 2 + n u m - 4
0004060 0 \r i f ( n u m g e 6 0 )
0004100 & ( n u m l e 6 3 ) r
0004120 e s u l t i s a l p h * 1 2 +
0004140 ( n u m - 6 0 ) * 3 + 2 \r r e s
0004160 u l t i s 0 032 l 6 8 0 9 \ f 1
0004200 \r ] \r \r d e f a u l t : r e s
0004220 u l t i s 0 032 l 5 5 3 9 \ f 1
0004240 \r ] 032 l 4 2 6 9 \ f 1 \r ] \r \r a
0004260 n d G e t S V C o o r d s L (
0004300 S V T y p e , S V I n d e x , c
0004320 v ) b e \r [ 032 \ f 1 \r l e t
0004340 a l p h = ( S V I n d e x - 1 )
0004360 / 1 2 \r l e t n u m = ( ( S V
0004400 I n d e x - 1 ) r e m 1 2
0004420 ) + 4 1 \r s w i t c h o n
0004440 S V T y p e i n t o \r [ 032 l 4
0004460 2 6 9 \ f 1 \r c a s e $ G :
0004500 t e s t S V I n d e x l e
0004520 2 8 8 \r i f s o \r [ 032 l 5 5 3 9
0004540 \ f 1 \r a l p h = ( S V I n d e
0004560 x - 1 ) / 2 4 \r n u m = ( ( S V
0004600 I n d e x - 1 ) r e m 2 4 )
0004620 + 1 \r G e t I C c o o r d s L (
0004640 a l p h , n u m , 1 6 , c v ) \r
0004660 r e t u r n 032 l 6 8 0 9 \ f 1 \r
0004700 ] \r i f n o t \r [ 032 l 5 5 3 9 \
0004720 f 1 \r S V I n d e x = S V I n d
0004740 e x - 2 8 8 \r a l p h = ( S V I
0004760 n d e x - 1 ) / 4 \r n u m = ( (
0005000 S V I n d e x - 1 ) r e m 4
0005020 ) + 6 0 \r G e t I C c o o r d
0005040 s L ( a l p h , n u m , 2 4 , c
0005060 v ) \r r e t u r n 032 l 6 8 0 9 \
0005100 f 1 \r ] \r \r c a s e $ T : \r [
0005120 032 l 5 5 3 9 \ f 1 \r G e t I C c
0005140 o o r d s L ( a l p h , n u m ,
0005160 1 , c v ) \r r e t u r n 032 l 6 8
0005200 0 9 \ f 1 \r ] 032 l 5 5 3 9 \ f 1
0005220 \r \r c a s e $ D : \r [ 032 l 5 5
0005240 3 9 \ f 1 \r G e t I C c o o r d
0005260 s L ( a l p h , n u m , 8 , c v
0005300 ) \r c v ! 0 = c v ! 0 - 4 \r t
0005320 e s t ( a l p h r e m 3 )
0005340 e q 0 \r i f s o c v ! 0
0005360 = c v ! 0 - 4 \r i f n o t
0005400 c v ! 1 = c v ! 1 - 1 8 \r r
0005420 e t u r n 032 l 6 8 0 9 \ f 1 \r ]
0005440 032 l 5 5 3 9 \ f 1 \r \r c a s e
0005460 $ F : \r [ 032 l 5 5 3 9 \ f 1 \r G
0005500 e t I C c o o r d s L ( a l p h
0005520 , n u m , 8 , c v ) \r c v ! 0 =
0005540 c v ! 0 - 4 \r i f ( a l p h
0005560 r e m 3 ) n e 0 t h e
0005600 n c v ! 1 = c v ! 1 + 1 8 \r
0005620 r e t u r n 032 l 6 8 0 9 \ f 1 \r
0005640 ] 032 l 5 5 3 9 \ f 1 \r \r c a s e
0005660 $ M : \r [ 032 l 5 5 3 9 \ f 1 \r
0005700 G e t I C c o o r d s L ( a l p
0005720 h , n u m , 8 , c v ) \r s w i t
0005740 c h o n ( a l p h r e m 3
0005760 ) i n t o \r [ 032 l 6 8 0 9 \ f
0006000 1 \r \r c a s e 0 : \r [ 032 l 8 0
0006020 7 9 \ f 1 \r c v ! 0 = c v ! 0
0006040 + 2 \r c v ! 1 = c v ! 1 - 1
0006060 2 \r r e t u r n 032 l 9 3 4 9 \ f
0006100 1 \r ] 032 l 8 0 7 9 \ f 1 \r \r c a
0006120 s e 1 : \r [ 032 l 8 0 7 9 \ f 1
0006140 \r c v ! 0 = c v ! 0 + 1 4 \r
0006160 c v ! 1 = c v ! 1 + 1 2 \r r
0006200 e t u r n 032 l 9 3 4 9 \ f 1 \r ]
0006220 032 l 8 0 7 9 \ f 1 \r \r c a s e
0006240 2 : \r [ 032 l 8 0 7 9 \ f 1 \r c v
0006260 ! 0 = c v ! 0 - 1 8 \r c v !
0006300 1 = c v ! 1 - 1 2 \r r e t u r
0006320 n 032 l 9 3 4 9 \ f 1 \r ] 032 l 8 0
0006340 7 9 \ f 1 \r ] 032 l 6 8 0 9 \ f 1
0006360 \r ] 032 l 5 5 3 9 \ f 1 \r ] 032 l 4
0006400 2 6 9 \ f 1 \r ] \r \r a n d G
0006420 e t I C c o o r d s L ( a l p h
0006440 , n u m , p i n , c v ) b e \r
0006460 [ 032 \ f 1 \r i f ( n u m g r
0006500 0 ) & ( n u m l e 2 4 )
0006520 d o \r [ 032 l 4 2 6 8 \ f 1 \r c v
0006540 ! 0 = 3 7 + a l p h * 3
0006560 6 + ( a l p h g e ( $ d
0006600 - $ a ) ? 4 , 0 ) + ( a l p
0006620 h g e ( $ g - $ a ) ? 2 7 ,
0006640 0 ) + ( a l p h g e ( $
0006660 j - $ a ) ? 4 , 0 ) - ( p i
0006700 n g r 8 ? ( 1 6 - p i n ) ,
0006720 ( p i n - 1 ) ) * 4 \r \r c v ! 1
0006740 = 1 6 + ( p i n g r
0006760 8 ? 1 2 , 0 ) + ( n u m - 1
0007000 ) * 1 8 + ( n u m / 2 ) * 6
0007020 \r r e t u r n 032 l 5 5 3 8 \ f 1
0007040 \r ] \r \r i f ( 4 1 l e n u
0007060 m ) & ( n u m l e 5 2 ) & (
0007100 p i n l e 8 ) d o \r [ 032 l
0007120 4 2 6 8 \ f 1 \r n u m = n u
0007140 m - 4 0 \r c v ! 0 = 3 7 +
0007160 a l p h * 3 6 + ( a l p h
0007200 g e ( $ d - $ a ) ? 4 , 0 )
0007220 + ( a l p h g e ( $ g -
0007240 $ a ) ? 2 7 , 0 ) + ( a l p
0007260 h g e ( $ j - $ a ) ? 4 , 0
0007300 ) - ( p i n - 1 ) * 4 \r \r c
0007320 v ! 1 = 3 4 + ( n u m -
0007340 1 ) * 4 2 \r r e t u r n 032 l 5 5
0007360 3 8 \ f 1 \r ] \r \r i f ( 6 0
0007400 l e n u m ) & ( n u m l e
0007420 6 3 ) d o \r [ 032 l 4 2 6 8 \ f
0007440 1 \r n u m = n u m - 6 0 \r l
0007460 e t d e l = 0 \r s w i t c
0007500 h o n ( a l p h + $ a ) i n
0007520 t o \r [ 032 l 5 5 3 8 \ f 1 \r c a
0007540 s e $ l : d e l = d e l
0007560 + 5 2 \r c a s e $ k : d e l
0007600 = d e l + 6 0 \r c a s e $
0007620 i : d e l = d e l + 5 2 \r
0007640 c a s e $ h : d e l = d
0007660 e l + 8 3 \r c a s e $ f : d
0007700 e l = d e l + 5 2 \r c a s e
0007720 $ e : d e l = d e l + 6
0007740 0 \r c a s e $ c : d e l =
0007760 d e l + 5 2 \r c a s e $ b :
0010000 \r c v ! 0 = 5 5 + d e
0010020 l - ( p i n g r 1 2 ? (
0010040 2 4 - p i n ) , ( p i n - 1 ) )
0010060 * 4 \r c v ! 1 = 6 4 + n
0010100 u m * 1 2 6 + ( p i n g r
0010120 1 2 ? 2 4 , 0 ) \r r e t u r n 032
0010140 l 6 8 0 8 \ f 1 \r ] \r \r 032 l 5 5
0010160 3 8 \ f 1 \r ] \r \r l e t v =
0010200 v e c 5 0 ; v ! 0 = 0
0010220 / / b a d b o a r d l o c
0010240 a t i o n \r A p p e n d S ( " *
0010260 n B a d B o a r d L o c , P
0010300 i n : " , v ) \r A p p e n d B
0010320 L ( 2 6 * n u m + a l p h , v
0010340 ) \r A p p e n d S ( " , " , v
0010360 ) \r A p p e n d N ( p i n , v )
0010400 \r W S S ( E r F i l e , v ) \r c
0010420 v ! 0 = 0 \r c v ! 1 = 0 \r 032
0010440 l 4 2 6 8 \ f 1 \r ] \r \r \r a n d
0010460 A d d P o t e n t i a l T e r
0010500 m s L ( ) b e / / m a k e
0010520 i c d e s c r i p t o r s f
0010540 o r a l l p o s s i b l e
0010560 t e r m i n a t o r \r / / p o s
0010600 i t i o n s w h i c h w e r
0010620 e n o t p r e d e f i n e d
0010640 b y t h e u s e r \r [ 032 \
0010660 f 1 \r f o r i = 4 1 t o
0010700 5 2 d o f o r j = 0
0010720 t o m a x a l p h d o S
0010740 p r a y T e r m L ( i , j ) \r 032
0010760 l 4 2 6 8 \ f 1 \r ] \r \r a n d
0011000 S p r a y T e r m L ( n , a l p
0011020 h ) b e \r [ 032 \ f 1 \r l e t
0011040 b l = 2 6 * n + a l p h
0011060 \r l e t b p = B o a r d v
0011100 e c ! b l \r t e s t b p e q
0011120 0 \r i f s o / / a s s i g n
0011140 t e r m i n a t o r t o p
0011160 o s i t i o n \r A s s i g n I C
0011200 ( 8 , t e r m t y p e , t e r m
0011220 s t p , b l ) \r i f n o t i f
0011240 b p > > i c d e s c . i c t y
0011260 p e n e t e r m t y p e t
0011300 h e n \r [ 032 l 4 2 6 8 \ f 1 \r l
0011320 e t e r v = v e c 5 0 ;
0011340 e r v ! 0 = 0 \r A p p e n
0011360 d S ( " * n T e r m i n a t o r
0011400 p o s i t i o n " , e r v )
0011420 \r A p p e n d B L ( b l , e r v
0011440 ) \r A p p e n d S ( " i s d
0011460 e f i n e d a s a n o n -
0011500 t e r m i n a t o r " , e r v )
0011520 \r W S S ( E r F i l e , e r v )
0011540 032 l 5 5 3 8 \ f 1 \r ] \r 032 l 4 2
0011560 6 8 \ f 1 \r ] \r \r a n d F i n
0011600 d B e s t T e r m L ( x , y )
0011620 = v a l o f / / a s s u m e s
0011640 t e r m s a r r a y e d a
0011660 t N e w I t e m ( b y S e
0011700 t U p T e r m s ) \r [ 032 \ f 1 \r
0011720 d t s = # 7 7 7 7 6 / / i
0011740 n f i n i t y \r l e t t p t r
0011760 = 0 ; l e t t i = 0
0012000 \r l e t t p = N e w I t e
0012020 m \r [ 032 l 4 2 6 8 \ f 1 \r l e t
0012040 t y = t p ! 1 \r i f t y
0012060 e q 0 t h e n b r e a k
0012100 \r l e t d e l y = t y g
0012120 r y ? t y - y , y - t y \r i
0012140 f d e l y l s d t s t h
0012160 e n \r f o r i = 2 t o
0012200 8 d o \r [ 032 l 5 5 3 8 \ f 1 \r
0012220 l e t t x = t p ! i \r i f
0012240 t x e q 0 t h e n l o
0012260 o p / / a l r e a d y a s s
0012300 i g n e d \r l e t d e l x =
0012320 t x g r x ? t x - x , x
0012340 - t x \r i f ( d e l x + d
0012360 e l y ) g r d t s t h e n
0012400 l o o p \r / / h a v e b e s
0012420 t o n e s o f a r \r d t s
0012440 = d e l x + d e l y \r t p t
0012460 r = t p \r t i = i \r 032 l
0012500 6 8 0 8 \ f 1 \r ] \r t p = t
0012520 p + 9 \r 032 l 5 5 3 8 \ f 1 \r ]
0012540 r e p e a t \r i f t p t r
0012560 e q 0 t h e n [ W S S (
0012600 E r F i l e , " * n T e r m i n
0012620 a t o r s u p p l y e x h a
0012640 u s t e d " ) ; r e s u l t i
0012660 s 0 ] \r t e r m y = t
0012700 p t r ! 1 \r t e r m x = t p
0012720 t r ! t i \r t p t r ! t i =
0012740 0 / / m a r k u s e d \r r e
0012760 s u l t i s l v ( ( B o a r d
0013000 v e c ! ( t p t r ! 0 ) ) > > i
0013020 c d e s c . p i n p t r ^ t i )
0013040 032 l 4 2 6 8 \ f 1 \r ] \r \r a n d
0013060 S e t U p T e r m s L ( ) b
0013100 e \r [ 032 \ f 1 \r l e t w o r d
0013120 s = 0 \r f o r i = 4 1
0013140 t o 5 2 d o f o r j
0013160 = 0 t o m a x a l p h d
0013200 o \r [ 032 l 4 2 6 8 \ f 1 \r l e t
0013220 b l = ( 2 6 * i ) + j \r l
0013240 e t t p = B o a r d v e c
0013260 ! b l \r i f ( t p e q 0 )
0013300 % ( ( t p > > i c d e s c . i c
0013320 t y p e ) n e t e r m t y p e
0013340 ) t h e n l o o p \r / / h a
0013360 v e a t e r m i n a t o r \r
0013400 l e t c v = v e c 2 \r G
0013420 e t I C c o o r d s ( j , i , 1
0013440 , c v ) \r C h e c k F i t ( w o
0013460 r d s + 9 ) \r l e t t = N
0013500 e w I t e m + w o r d s \r t ! 0
0013520 = b l \r t ! 1 = c v ! 1
0013540 / / t e r m i n a t o r y
0013560 c o o r d i n a t e \r f o r k
0013600 = 2 t o 8 d o \r [ 032 l
0013620 5 5 3 8 \ f 1 \r t e s t ( t p
0013640 > > i c d e s c . p i n p t r ^
0013660 k ) e q 0 \r i f s o / / t
0013700 e r m i n a t o r u n a s s i
0013720 g n e d - f i l l i n x
0013740 c o o r d i n a t e \r t ! k =
0013760 ( c v ! 0 ) - ( ( k - 1 )
0014000 * 4 ) \r i f n o t t ! k =
0014020 0 \r 032 l 6 8 0 8 \ f 1 \r ] \r w o
0014040 r d s = w o r d s + 9 032 l 5
0014060 5 3 8 \ f 1 \r ] \r N e w I t e m
0014100 ! w o r d s = 0 \r N e w I t
0014120 e m ! ( w o r d s + 1 ) = 0
0014140 032 l 4 2 6 8 \ f 1 \r ] \r \r 032 \ f
0014160 1 \r \r a n d L e g a l B l o c
0014200 L ( b l ) = v a l o f \r [ 032
0014220 \ f 1 \r l e t a l p h = (
0014240 b l r e m 2 6 ) + $ a ; l
0014260 e t n u m = b l / 2 6 \r i
0014300 f a l p h g r $ l t h e
0014320 n r e s u l t i s f a l s e
0014340 / / l e t t e r a l w a y s
0014360 l e l \r i f n u m e q
0014400 0 t h e n r e s u l t i s
0014420 f a l s e \r i f ( n u m g r
0014440 2 4 ) & ( n u m l s 4 1 )
0014460 t h e n r e s u l t i s f
0014500 a l s e \r i f ( n u m g r
0014520 5 2 ) & ( n u m l s 6 0 )
0014540 t h e n r e s u l t i s f a
0014560 l s e \r i f n u m g e 6 0
0014600 t h e n \r s w i t c h o n a
0014620 l p h i n t o \r [ 032 l 4 2 6 8
0014640 \ f 1 \r c a s e $ b : \r c a s
0014660 e $ c : \r c a s e $ e : \r c
0014700 a s e $ f : \r c a s e $ h :
0014720 \r c a s e $ i : \r c a s e $
0014740 k : \r c a s e $ l : r e s u
0014760 l t i s t r u e \r d e f a u l
0015000 t : r e s u l t i s f a l s
0015020 e 032 l 5 5 3 8 \ f 1 \r ] \r r e s
0015040 u l t i s t r u e 032 l 4 2 6 8
0015060 \ f 1 \r ] \r \r a n d G e t E p
0015100 i n C o o r d s L ( p i n , c v
0015120 ) b e \r [ 032 \ f 1 \r i f ( (
0015140 p i n l s 4 ) % ( p i n g
0015160 r 1 8 9 ) ) t h e n E r r
0015200 N ( " * n S i g n a l a s s i
0015220 g n e d t o p o w e r o r
0015240 i n v a l i d E p i n : "
0015260 , p i n ) \r c v ! 1 = 5 2 5 \r
0015300 l e t p g = ( p i n - 1 )
0015320 r e m 4 \r i f ( ( p g e
0015340 q 0 ) % ( p g e q 3 ) )
0015360 t h e n E r r N ( " * n S i g
0015400 n a l a s s i g n e d t o
0015420 g r o u n d E p i n : " , p
0015440 i n ) \r l e t p x = ( p i
0015460 n - 1 ) / 4 \r c v ! 0 = 1 2
0015500 + ( p x * 1 0 ) + ( p g
0015520 / 2 ) * 5 032 l 4 2 6 8 \ f 1 \r ]
0015540 \r \r a n d G e t C p i n C o o
0015560 r d s L ( p i n , c v ) b e \r
0015600 [ 032 \ f 1 \r i f ( ( p i n l
0015620 s 4 ) % ( p i n g r 1 8 9
0015640 ) ) t h e n E r r N ( " * n
0015660 S i g n a l a s s i g n e d
0015700 t o p o w e r o r i n v a
0015720 l i d C p i n : " , p i n )
0015740 \r c v ! 1 = 0 \r l e t p g
0015760 = ( p i n - 1 ) r e m 4 \r
0016000 i f ( ( p g e q 1 ) % ( p
0016020 g e q 2 ) ) t h e n E r
0016040 r N ( " * n S i g n a l a s s
0016060 i g n e d t o g r o u n d
0016100 C p i n : " , p i n ) \r l e t
0016120 p x = ( p i n - 1 ) / 4 \r
0016140 c v ! 0 = 1 2 + ( ( 4 7
0016160 - p x ) * 1 0 ) + ( ( 1 - p
0016200 g / 2 ) ) * 5 032 l 4 2 6 8 \ f 1
0016220 \r ] \r \r a n d G e t B o a r d
0016240 P i n s L ( b l ) = v a l o
0016260 f \r [ 032 \ f 1 \r l e t n =
0016300 b l / 2 6 / / n u m \r i f
0016320 ( n g r 0 ) & ( n l e 2
0016340 4 ) t h e n r e s u l t i s
0016360 1 6 \r i f ( n g e 4 1 )
0016400 & ( n l e 5 3 ) t h e n
0016420 r e s u l t i s 8 \r i f ( n
0016440 g e 6 0 ) & ( n l s 6 4
0016460 ) t h e n \r s w i t c h o n
0016500 ( ( b l r e m 2 6 ) + $ a
0016520 ) i n t o \r [ 032 l 4 2 6 8 \ f
0016540 1 \r c a s e $ b : \r c a s e
0016560 $ c : \r c a s e $ e : \r c a s
0016600 e $ f : \r c a s e $ h : \r c
0016620 a s e $ i : \r c a s e $ k :
0016640 \r c a s e $ l : r e s u l t
0016660 i s 2 4 032 l 5 5 3 8 \ f 1 \r ]
0016700 \r E r r B L ( " * n I l l e g a
0016720 l B o a r d L o c a t i o n
0016740 : " , b l ) \r r e s u l t i
0016760 s 0 032 l 4 2 6 8 \ f 1 \r ] \r /
0017000 / F U N C T I O N
0017020 S F O R D 1 M
0017040 E M O R Y B O
0017060 A R D \r \r a n d N e t H a
0017100 s S v o l t M ( n e t n a m e )
0017120 = v a l o f \r [ 032 \ f 1 \r i
0017140 f S t E q ( " G N D " , n e t
0017160 n a m e ) t h e n r e s u l
0017200 t i s $ G \r r e s u l t i s
0017220 0 032 l 4 2 6 9 \ f 1 \r ] \r \r a n
0017240 d G e t S V i n d e x M ( S V
0017260 T y p e , b l , p i n ) = v a l
0017300 o f \r [ 032 \ f 1 \r l e t a l p
0017320 h = b l r e m 2 6 \r l e
0017340 t n u m = b l / 2 6 \r i f
0017360 n u m l s 3 r e s u l t
0017400 i s 0 \r i f n u m g r 2
0017420 4 r e s u l t i s 0 \r i f
0017440 a l p h g r ( $ j - $ a
0017460 ) t h e n r e s u l t i s
0017500 0 \r r e s u l t i s a l p h *
0017520 2 7 + n u m 032 l 4 2 6 9 \ f
0017540 1 \r ] \r \r a n d G e t S V C o
0017560 o r d s M ( S V T y p e , S V I
0017600 n d e x , c v ) b e \r [ 032 \ f
0017620 1 \r l e t a l p h = S V I n d
0017640 e x / 2 7 \r l e t n u m = S V
0017660 I n d e x r e m 2 7 \r G e t
0017700 I C c o o r d s M ( a l p h , n
0017720 u m , 8 , c v ) 032 l 4 2 6 9 \ f
0017740 1 \r ] \r \r \r a n d L e g a l
0017760 B l o c M ( b l ) = v a l o
0020000 f \r [ 032 \ f 1 \r l e t a l p h
0020020 = b l r e m 2 6 ; l e
0020040 t n u m = b l / 2 6 \r i f
0020060 a l p h g r ( $ l - $ a )
0020100 t h e n r e s u l t i s f
0020120 a l s e / / l e t t e r a l
0020140 w a y s l e l \r i f ( n u
0020160 m g r 2 6 ) & ( n u m n e
0020200 4 1 ) & ( n u m n e 4 2 )
0020220 t h e n r e s u l t i s f
0020240 a l s e \r i f ( ( n u m g r
0020260 2 ) & ( n u m l s 2 5 ) )
0020300 t h e n i f a l p h g r
0020320 ( $ j - $ a ) t h e n r e
0020340 s u l t i s f a l s e \r r e s
0020360 u l t i s t r u e 032 l 4 2 6 8
0020400 \ f 1 \r ] \r \r a n d G e t I C
0020420 c o o r d s M ( a l p h , n u m
0020440 , p i n , c v ) b e \r [ 032 \ f
0020460 1 \r c v ! 0 = a l p h * ( (
0020500 ( n u m l s 3 ) % ( n u m
0020520 g r 2 4 ) ) ? 4 0 , 4 8 ) +
0020540 2 8 - ( p i n g r 8 ?
0020560 1 6 - p i n , p i n - 1 ) * 4
0020600 \r i f ( n u m g e 3 ) & (
0020620 n u m l s 2 5 ) & ( a l p h
0020640 g r ( $ e - $ a ) ) t h e
0020660 n c v ! 0 = c v ! 0 +
0020700 1 6 \r i f ( ( n u m l s 3
0020720 ) % ( n u m g r 2 4 ) ) & (
0020740 a l p h g r ( $ f - $ a ) )
0020760 t h e n c v ! 0 = c v !
0021000 0 + 8 \r \r c v ! 1 = 7
0021020 + ( n u m g r 1 ? 2 4 ,
0021040 0 ) + ( n u m g r 2 ?
0021060 1 8 , 0 ) + ( n u m g r
0021100 3 ? 1 8 , 0 ) + ( n u m
0021120 g r 4 ? ( 2 0 * ( n u m - 4
0021140 ) ) , 0 ) + ( p i n g r 8
0021160 ? 1 2 , 0 ) - ( n u m g r
0021200 2 3 ? 2 , 0 ) - ( n u m
0021220 g r 2 4 ? 2 , 0 ) + ( n
0021240 u m g r 2 5 ? 4 , 0 ) \r \r
0021260 i f n u m e q 4 1 t h e
0021300 n c v ! 1 = 2 5 \r i f n
0021320 u m e q 4 2 t h e n c v
0021340 ! 1 = 5 0 1 \r \r 032 l 4 2 6 8
0021360 \ f 1 \r ] \r \r a n d A d d P o
0021400 t e n t i a l T e r m s M ( )
0021420 b e / / m a k e i c d e s
0021440 c r i p t o r s f o r a l l
0021460 p o s s i b l e t e r m i n
0021500 a t o r \r / / p o s i t i o n s
0021520 w h i c h w e r e n o t
0021540 p r e d e f i n e d b y t h
0021560 e u s e r \r [ 032 \ f 1 \r f o r
0021600 i = 4 1 t o 4 2 d o
0021620 f o r j = 0 t o m a
0021640 x a l p h d o S p r a y T e
0021660 r m L ( i , j ) \r 032 l 4 2 6 8 \
0021700 f 1 \r ] \r a n d S e t U p T e
0021720 r m s M ( ) b e \r [ 032 \ f 1 \r
0021740 l e t w o r d s = 0 \r f o
0021760 r i = 4 1 t o 4 2 d
0022000 o f o r j = 0 t o m
0022020 a x a l p h d o \r [ 032 l 4 2 6
0022040 8 \ f 1 \r l e t b l = ( 2
0022060 6 * i ) + j \r l e t t p =
0022100 B o a r d v e c ! b l \r i f (
0022120 t p e q 0 ) % ( ( t p > > i
0022140 c d e s c . i c t y p e ) n e
0022160 t e r m t y p e ) t h e n l
0022200 o o p \r / / h a v e a t e r
0022220 m i n a t o r \r l e t c v =
0022240 v e c 2 \r G e t I C c o o r
0022260 d s ( j , i , 1 , c v ) \r C h e
0022300 c k F i t ( w o r d s + 9 ) \r l
0022320 e t t = N e w I t e m + w
0022340 o r d s \r t ! 0 = b l \r t !
0022360 1 = c v ! 1 / / t e r m i
0022400 n a t o r y c o o r d i n a
0022420 t e \r f o r k = 2 t o
0022440 8 d o \r [ 032 l 5 5 3 8 \ f 1 \r
0022460 t e s t ( t p > > i c d e s c
0022500 . p i n p t r ^ k ) e q 0 \r
0022520 i f s o / / t e r m i n a t o
0022540 r u n a s s i g n e d - f i
0022560 l l i n x c o o r d i n a
0022600 t e \r t ! k = ( c v ! 0 )
0022620 - ( ( k - 1 ) * 4 ) \r i f n o
0022640 t t ! k = 0 \r 032 l 6 8 0 8
0022660 \ f 1 \r ] \r w o r d s = w o
0022700 r d s + 9 032 l 5 5 3 8 \ f 1 \r ]
0022720 \r N e w I t e m ! w o r d s =
0022740 0 \r N e w I t e m ! ( w o r d
0022760 s + 1 ) = 0 032 l 4 2 6 8 \ f
0023000 1 \r ] \r \r a n d G e t B o a r
0023020 d P i n s M ( b l ) = v a l
0023040 o f \r [ 032 ( 6 3 5 ) \ f 1 \r l e
0023060 t x = b l / 2 6 \r i f (
0023100 x e q 4 1 ) % ( x e q 4
0023120 2 ) t h e n r e s u l t i s
0023140 8 \r r e s u l t i s 1 6 032 l
0023160 4 2 6 9 \ f 1 \r ] \r 032 \ f 1 \r \0
0023200