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