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