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