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