$ 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