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