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