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