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