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