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