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