$ 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