$ od -c -N 50000 [Indigo]<AltoSource>DDRAWSOURCES.DM!2
0000000 377 \0 \0 d d r a w . l d \0 373 226 H 244
0000020 Y \0 \0 376 001 \0 004 : B L D R / F / B
0000040 / R 1 1 0 0 / N 5 2 0
0000060 / W D D R A W / S ^ \r Z P
0000100 E D I T Z P U T I L Z P
0000120 B L O C K D S P L I N E 1
0000140 F L O A T ^ \r C / Q Z P
0000160 I N T E R Z P D R A W Z
0000200 P T E X T Z P M A K E Z
0000220 P C O N V E R T Z P C O L O
0000240 R Z P F O N T ^ \r B / Q
0000260 D Z P I N I T 1 Z P I N I
0000300 T 2 Z P F O N T I O R E
0000320 A D U S E R C M I T E M ^ \r E
0000340 / Q ^ \r B / P D R A W O
0000360 V 1 / B Z P D I S P Z P
0000400 U P D A T E Z P I T E M ^
0000420 \r B / P D R 376 001 \0 242 304 A W O
0000440 V 2 / B Z P D I S P Z P
0000460 I O Z P F O N T I O Z P
0000500 A D J U S T Z P A R R O W S
0000520 ^ \r B / P D R A W O V 3 /
0000540 B Z P D I S P Z P F R E
0000560 E H A N D ^ \r C / P D R A
0000600 W O V 4 / B Z P P R E S S
0000620 Z P O B J E C T 1 Z P O B
0000640 J E C T 2 Z P P I E C E
0000660 Z P P U T S Z P A R R O W S
0000700 T I M E C O N V A T I M
0000720 E C O N V B T I M E I O ^
0000740 \r C / P D R A W O V 5 / B
0000760 Z P I N T E R Z P D R A W
0001000 Z P T E X T Z P M A K E
0001020 Z P C O N V E R T 376 \0 020
0001040 P 031 Z P C O L O R Z P F O N
0001060 T \r 377 \0 \0 d s p l i n e 1 . B c
0001100 p l \0 373 226 H 243 276 \0 \0 376 001 \0 Z { /
0001120 / F i l e : S P L I N E 1 .
0001140 B C P L \r / / P . B a u d e l
0001160 a i r e & R . F l e g a l \r
0001200 / / D e c e m b e r 5 , 1
0001220 9 7 7 4 : 4 5 P M \r / /
0001240 C o p y r i g h t X e r o x
0001260 C o r p o r a t i o n 1 9 7 9
0001300 \r \r / / T h e p r o c e d u
0001320 r e P a r a m e t r i c S p l
0001340 i n e i m p l e m e n t s t
0001360 h e a l g o r i t h m ( 1 .
0001400 2 . 7 ) d e s c r i b e d i
0001420 n \r / / \t \t " S p l i n e C u
0001440 r v e T e c h n i q u e s " \r
0001460 / / \t \t b y P . B a u d e l a
0001500 i r e , R . F l e g a l , 376
0001520 001 \0 ~ 225 & R . S p r o u l l \r
0001540 / / \t \t X e r o x I n t e r n
0001560 a l R e p o r t ( M a y
0001600 1 9 7 7 ) \r \r / / U s e s
0001620 M I C R O C O D E f l o a t i
0001640 n g p o i n t r o u t i n e
0001660 s \r \r / / o u t g o i n g p
0001700 r o c e d u r e s : \r \r e x t e
0001720 r n a l [ \r \t P a r a m e t r
0001740 i c S p l i n e \r \t P S e r r o
0001760 r \r \t ] \r \r / / o u t g o i n
0002000 g s t a t i c s : \r \r e x t e
0002020 r n a l [ \r \t P S z o n e \r \t
0002040 ] \r \r s t a t i c [ \r \t P S z
0002060 o n e = 0 \t \t / / s t o r a g
0002100 e z o n e \r \t ] \r \r / / i n
0002120 c o m i 376 001 \0 | J n g p r o c
0002140 e d u r e s : \r \r e x t e r n a
0002160 l [ \r \t F L D ; F A D ; F
0002200 M L ; F S T \t / / m i c r o
0002220 F L O A T ( A l t o f l o a
0002240 t i n g p o i n t p a c k a
0002260 g e ) \r \t F L D I ; F S B ;
0002300 F D V ; F C M ; F N E G \r /
0002320 / \t F P S e t u p \r \r \t A l l o
0002340 c a t e \t \t / / A l t o S Y
0002360 S T E M \r \t F r e e \r \t Z e r o
0002400 \r \t ] \r \r / / i n c o m i n g
0002420 s t a t i c s : \r \r e x t e r
0002440 n a l [ \r \t F P w o r k \t \t /
0002460 / m i c r o F L O A T ( A l
0002500 t o f l o a t i n g p o i n
0002520 t p a c k a g e 376 001 \0 235 \0 ) \r
0002540 \t ] \r \r / / l o c a l d e f
0002560 i n i t i o n s : \r \r m a n i f
0002600 e s t [ \r \t n a t u r a l S p
0002620 l i n e = 0 \r \t p e r i o d i c
0002640 S p l i n e = 1 \r \t / / f l o
0002660 a t i n g p o i n t r e g i
0002700 s t e r s : 1 t o 4 \r \t a
0002720 c 1 = 1 ; a c 2 = 2 ; a c 3
0002740 = 3 ; a c 4 = 4 \r \t / / c o
0002760 n s t a n t s : \r \t z e r o = 5
0003000 ; o n e = 6 ; t w o = 7 ;
0003020 s i x = 8 \r \t n u m F P a c s =
0003040 9 \r \t ] \r \r s t r u c t u r e
0003060 P S V E C [ \r \t F P w o r k S
0003100 a v e w o r d \r \t F P w o r k
0003120 N e w w o r d \r \t f p x 376 001
0003140 \0 353 264 w o r d \r \t f p y w o r
0003160 d \r \t a w o r d \r \t b w o r
0003200 d \r \t c w o r d \r \t r w o r
0003220 d \r \t s w o r d \r \t ] \r \r m a
0003240 n i f e s t l P S V E C = s i
0003260 z e P S V E C / 1 6 \r \r / /
0003300 l o c a l s t a t i c s : \r \r
0003320 s t a t i c [ \r \t P S v e c =
0003340 0 \r \t ] \r \r \r \r l e t P a r a
0003360 m e t r i c S p l i n e ( n , x
0003400 , y , p 1 x , p 2 x , p 3 x , p
0003420 1 y , p 2 y , p 3 y , s p l i n
0003440 e T y p e , w ; n u m a r g s
0003460 n a r g s ) = v a l o f
0003500 [ \r \r \t / / d e f a u l t a
0003520 r g u m e n t s , g e t s t
0003540 o r a 376 001 \0 310 z g e , c h e c
0003560 k v a r i o u s t h i n g s
0003600 \r \t l e t t e m p V e c = v
0003620 e c l P S V E C \r \t i f P S
0003640 i n i t ( t e m p V e c ) e q
0003660 0 r e s u l t i s 0 \r \r \t
0003700 l e t p 1 , p 2 , p 3 , p = n
0003720 i l , n i l , n i l , n i l \r \t
0003740 l e t c , r , s = 0 , 0 , 0 \r
0003760 \r \t i f n l s 0 t h e n
0004000 [ \r \t \t / / c o n v e r t
0004020 c o o r d i n a t e s f r o m
0004040 i n t e g e r t o f l o a
0004060 t i n g p o i n t \r \t \t n = -
0004100 n \r \t \t l e t f p x = P S a l
0004120 l o c a t e ( l v ( P S v e c >
0004140 > P S V E C . f 376 001 \0 377 231 p x )
0004160 , 2 * n ) \r \t \t l e t f p y
0004200 = P S a l l o c a t e ( l v ( P
0004220 S v e c > > P S V E C . f p y )
0004240 , 2 * n ) \r \t \t i f ( f p x
0004260 e q 0 ) % ( f p y e q
0004300 0 ) r e s u l t i s 0 \r \t
0004320 \t f o r i = 0 t o n - 1
0004340 d o [ \r \t \t \t F S T ( F L D I
0004360 ( a c 1 , x ! i ) , f p x +
0004400 2 * i ) \r \t \t \t F S T ( F L D I
0004420 ( a c 1 , y ! i ) , f p y +
0004440 2 * i ) \r \t \t \t ] \r \t \t x = f p
0004460 x \r \t \t y = f p y \r \t \t ] \r \r \t
0004500 s w i t c h o n n a r g s i
0004520 n t o [ \r \t \t c a s e 9 : \r
0004540 \t \t \t s p l i n e T y p e 376 001 \0
0004560 n 025 = n a t u r a l S p l i n e
0004600 \r \t \t c a s e 1 0 : \r \t \t \t w
0004620 = 0 \r \t \t c a s e 1 1 : \r \t \t
0004640 \t i f s p l i n e T y p e n
0004660 e n a t u r a l S p l i n e
0004700 & \r \t \t \t s p l i n e T y
0004720 p e n e p e r i o d i c S p
0004740 l i n e r e s u l t i s P S
0004760 q u i t ( P S e r r o r ( 3 ) )
0005000 \r \t \t \t i f n l s 3 t h
0005020 e n s p l i n e T y p e = n a
0005040 t u r a l S p l i n e \r \t \t \t e
0005060 n d c a s e \r \t \t d e f a u l t
0005100 : \r \t \t \t r e s u l t i s P S
0005120 q u i t ( P S e r r o r ( 4 ) )
0005140 \r \t \t ] \r \r \t i f s p l i n e
0005160 T y 376 001 \0 302 % p e e q p e r
0005200 i o d i c S p l i n e t h e n
0005220 [ \r \t \t i f ( ( F C M ( F L
0005240 D ( a c 1 , x ) , x + 2 * ( n
0005260 - 1 ) ) n e 0 ) % \r \t \t
0005300 ( F C M ( F L D ( a c 2 , y
0005320 ) , y + 2 * ( n - 1 ) ) n e
0005340 0 ) ) r e s u l t i s P S
0005360 q u i t ( P S e r r o r ( 2 ) )
0005400 \r \t \t c = P S a l l o c a t e (
0005420 l v ( P S v e c > > P S V E C .
0005440 c ) , 2 * n ) \r \t \t r = P S a
0005460 l l o c a t e ( l v ( P S v e c
0005500 > > P S V E C . r ) , 2 * n )
0005520 \r \t \t s = P S a l l o c a t e (
0005540 l v ( P S v e c > > P S V E C .
0005560 s ) , 2 * n 376 001 \0 315 232 ) \r \t \t
0005600 i f ( c e q 0 ) % ( r
0005620 e q 0 ) % ( s e q 0
0005640 ) r e s u l t i s 0 \r \t \t ]
0005660 \r \r \t l e t a = P S a l l o c
0005700 a t e ( l v ( P S v e c > > P S
0005720 V E C . a ) , 2 * n ) \r \t l e
0005740 t b = P S a l l o c a t e ( l
0005760 v ( P S v e c > > P S V E C . b
0006000 ) , 2 * n ) \r \t i f ( a e
0006020 q 0 ) % ( b e q 0 )
0006040 r e s u l t i s 0 \r \r \t / /
0006060 a ( 0 ) = w ( 0 ) \r \t F S T ( F
0006100 L D I ( a c 1 , ( w ? ( w
0006120 ! 1 ) + 4 , 4 ) ) , a ) \r
0006140 \r \t / / a ( i ) = w ( i ) - 1 /
0006160 a ( i - 1 ) { i = 1 376 001 \0 203
0006200 Q , 2 , . . . , n - 3 } \r \t / /
0006220 w ( i ) d e f a u l t s t o
0006240 4 . { 1 = 0 , 1 , . . .
0006260 , n - 3 } \r \t f o r i = 1 t
0006300 o n - 3 d o [ \r \t \t F S T
0006320 ( F S B ( F L D I ( a c 4 ,
0006340 ( w ? ( w ! ( i + 1 ) ) + 4
0006360 , 4 ) ) , F D V ( F L D I (
0006400 a c 2 , 1 ) , a c 1 ) ) , a
0006420 + i * 2 ) \r \t \t F L D ( a c 1 ,
0006440 a c 4 ) \r \t \t ] \r \r \t i f s p
0006460 l i n e T y p e e q p e r i
0006500 o d i c S p l i n e t h e n
0006520 [ \r \t \t / / c ( 0 ) = 1 \r \t \t
0006540 F S T ( o n e , c ) \r \t \t / /
0006560 c ( i ) = - c ( i - 1 ) / a (
0006600 i 376 001 \0 203 204 - 1 ) { i = 1
0006620 , 2 , . . . , n - 3 } \r \t \t f o
0006640 r i = 1 t o n - 3 d o \r
0006660 \t \t \t F S T ( F N E G ( F D V (
0006700 F L D ( a c 1 , c + 2 * ( i -
0006720 1 ) ) , a + 2 * ( i - 1 ) ) )
0006740 , c + 2 * i ) \r \t \t ] \r \r \t /
0006760 / d o e v e r y t h i n g t
0007000 w i c e t o g e t x ( t )
0007020 a n d y ( t ) . \r \t f o r
0007040 t = 1 t o 2 d o [ \r \t
0007060 \t t e s t ( t e q 1 )
0007100 \r \t \t i f s o [ p = x
0007120 ; p 1 = p 1 x ; p 2 = p 2 x
0007140 ; p 3 = p 3 x ] \r \t \t
0007160 i f n o t [ p = y ; p 1 =
0007200 p 1 y ; p 376 001 \0 \ 205 2 = p 2 y
0007220 ; p 3 = p 3 y ] \r \r \t \t c o
0007240 m p u t e b c : \r \t \t i f n
0007260 g e 3 t h e n t e s t s
0007300 p l i n e T y p e e q n a t
0007320 u r a l S p l i n e \r \t \t i f s
0007340 o [ \r \t \t \t / / b ( 0 ) = 6 *
0007360 ( p ( 2 ) - 2 * p ( 1 ) + p ( 0
0007400 ) ) \r \t \t \t F S T ( F M L ( F A
0007420 D ( F S B ( F S B ( F L D ( a c
0007440 1 , p + 4 ) , p + 2 ) , p
0007460 + 2 ) , p ) , s i x ) , b
0007500 ) \r \r \t \t \t / / b ( i ) = 6 * (
0007520 p ( i + 2 ) - 2 * p ( i + 1 ) +
0007540 p ( i ) ) - b ( i - 1 ) / a ( i
0007560 - 1 ) { i = 1 , 2 , . . . ,
0007600 n - 3 } \r \t \t \t f o r 376 001 \0 355 364
0007620 i = 1 t o n - 3 d o [
0007640 \r \t \t \t \t F M L ( F L D ( a c 2
0007660 , p + 2 * ( i + 1 ) ) , t w
0007700 o ) \r \t \t \t \t F M L ( F A D ( F
0007720 S B ( F L D ( a c 1 , p + 2 *
0007740 ( i + 2 ) ) , a c 2 ) , p +
0007760 2 * i ) , s i x ) \r \t \t \t \t F
0010000 S T ( F S B ( a c 1 , F D V (
0010020 F L D ( a c 2 , b + 2 * ( i -
0010040 1 ) ) , a + ( i - 1 ) * 2 ) )
0010060 , b + i * 2 ) \r \t \t \t \t ] \r \t
0010100 \t \t ] \r \t \t i f n o t [ \r \t \t
0010120 \t / / b ( 0 ) = 6 * ( p ( 1 )
0010140 - 2 * p ( 0 ) + p ( n - 2 ) ) \r
0010160 \t \t \t F S T ( F M L ( F A D ( F
0010200 S B ( F S B ( F L D ( a c 1 ,
0010220 376 001 \0 7 320 p + 2 ) , p ) , p
0010240 ) , p + 2 * ( n - 2 ) ) , s
0010260 i x ) , b ) \r \r \t \t \t / / b
0010300 ( i ) = 6 * ( p ( i + 1 ) - 2 *
0010320 p ( i ) + p ( i - 1 ) ) - b ( i
0010340 - 1 ) / a ( i - 1 ) { i = 1
0010360 , 2 , . . . , n - 3 } \r \t \t \t f
0010400 o r i = 1 t o n - 3 d o
0010420 [ \r \t \t \t \t F M L ( F L D ( a
0010440 c 2 , p + 2 * i ) , t w o )
0010460 \r \t \t \t \t F M L ( F A D ( F S B
0010500 ( F L D ( a c 1 , p + 2 * ( i
0010520 + 1 ) ) , a c 2 ) , p + 2 *
0010540 ( i - 1 ) ) , s i x ) \r \t \t \t
0010560 \t F S T ( F S B ( a c 1 , F D
0010600 V ( F L D ( a c 2 , b + 2 * (
0010620 i - 1 ) ) 376 001 \0 375 346 , a + ( i
0010640 - 1 ) * 2 ) ) , b + i * 2 ) \r
0010660 \t \t \t \t ] \r \r \t \t \t / / r ( n
0010700 - 2 ) = 1 a n d s ( n -
0010720 2 ) = 0 \r \t \t \t F S T ( o n e ,
0010740 r + 2 * ( n - 2 ) ) \r \t \t \t F
0010760 S T ( z e r o , s + 2 * ( n -
0011000 2 ) , 0 ) \r \t \t \t / / r ( i
0011020 ) = - ( r ( i + 1 ) + c ( i ) )
0011040 / a ( i ) { i = n - 3 , .
0011060 . . , 1 , 0 } \r \t \t \t / / s (
0011100 i ) = ( b ( i ) - s ( i + 1 ) )
0011120 / a ( i ) { i = n - 3 , .
0011140 . . , 1 , 0 } \r \t \t \t f o r i
0011160 = n - 3 t o 0 b y - 1
0011200 d o [ \r \t \t \t \t F S T ( F D V
0011220 ( F N E G ( F A D ( 376 001 \0 216 211 F
0011240 L D ( a c 1 , r + 2 * ( i + 1
0011260 ) ) , c + 2 * i ) ) , a + 2
0011300 * i ) , r + 2 * i ) \r \t \t \t \t
0011320 F S T ( F D V ( F S B ( F L D (
0011340 a c 1 , b + 2 * i ) , s + 2
0011360 * ( i + 1 ) ) , a + 2 * i ) ,
0011400 s + 2 * i ) \r \t \t \t \t ] \r \t \t
0011420 \t ] \r \r \t \t c o m p u t e p 2 :
0011440 \r \t \t / / C O M P U T E S E
0011460 C O N D D E R I V A T I V E S
0011500 \r \t \t t e s t s p l i n e T y
0011520 p e e q n a t u r a l S p l
0011540 i n e \r \t \t i f s o [ \r \t \t \t
0011560 / / p 2 ( 0 ) = p 2 ( n - 1 )
0011600 = 0 \r \t \t \t F S T ( z e r o ,
0011620 p 2 ) ; F S T ( z e r o , 376
0011640 001 \0 F 025 p 2 + 2 * ( n - 1 ) ) \r
0011660 \t \t \t / / p 2 ( i ) = ( b ( i
0011700 - 1 ) - p 2 ( i + 1 ) ) / a ( i
0011720 - 1 ) { i = n - 2 , . . .
0011740 , 2 , 1 } \r \t \t \t f o r i = n
0011760 - 2 t o 1 b y - 1 d o
0012000 \r \t \t \t \t F S T ( F D V ( F S B
0012020 ( F L D ( a c 1 , b + 2 * ( i
0012040 - 1 ) ) , p 2 + ( i + 1 ) * 2
0012060 ) , a + ( i - 1 ) * 2 ) , p
0012100 2 + 2 * i ) \r \t \t \t ] \r \t \t i f
0012120 n o t [ \r \t \t \t / / D 2 = p
0012140 ( n - 1 ) - 2 * p ( n - 2 ) + p
0012160 ( n - 3 ) \r \t \t \t / / a c 1 =
0012200 p 2 ( n - 2 ) = ( 6 * D 2 - s (
0012220 0 ) - s ( n - 3 ) ) / ( r ( 0 )
0012240 + r ( n 376 001 \0 314 210 - 3 ) + 4 ) \r
0012260 \t \t \t F A D ( F A D ( F L D ( a
0012300 c 2 , r ) , r + 2 * ( n - 3
0012320 ) ) , F L D I ( a c 1 , 4 )
0012340 ) \r \t \t \t F A D ( F S B ( F L D
0012360 ( a c 1 , p + 2 * ( n - 1 ) )
0012400 , F M L ( F L D ( a c 3 , p
0012420 + 2 * ( n - 2 ) ) , t w o ) )
0012440 , p + 2 * ( n - 3 ) ) \r \t \t \t
0012460 F S T ( F D V ( F S B ( F S B (
0012500 F M L ( a c 1 , s i x ) , s
0012520 ) , s + 2 * ( n - 3 ) ) , a
0012540 c 2 ) , p 2 + 2 * ( n - 2 ) )
0012560 \r \r \t \t \t / / p 2 ( i ) = r (
0012600 i ) * p 2 ( n - 2 ) + s ( i
0012620 ) { i = 0 , 1 , 2 , . . .
0012640 , n - 3 } \r \t \t \t 376 001 \0 313 271 f o
0012660 r i = 0 t o n - 3 d o \r
0012700 \t \t \t \t F S T ( F A D ( F M L (
0012720 F L D ( a c 2 , a c 1 ) , r
0012740 + 2 * i ) , s + 2 * i ) , p
0012760 2 + 2 * i ) \r \r \t \t \t / / p 2
0013000 ( n - 1 ) = p 2 ( 0 ) \r \t \t \t F
0013020 S T ( F L D ( a c 1 , p 2 ) ,
0013040 p 2 + 2 * ( n - 1 ) ) \r \t \t \t
0013060 ] \r \r \t \t c o m p u t e p 1 p 3
0013100 : \r \t \t / / C O M P U T E F
0013120 I R S T & T H I R D D E R
0013140 I V A T I V E S \r \t \t / / p 1
0013160 ( i ) = p ( i + 1 ) - p ( i ) -
0013200 ( 2 * p 2 ( i ) + p 2 ( i + 1 )
0013220 ) / 6 \r \t \t / / p 3 ( i ) = p
0013240 2 ( i + 1 ) - p 2 ( i ) 376 001
0013260 \0 G 021 { i = 0 , 1 , 2 , . . . ,
0013300 n - 2 } \r \t \t f o r i = 0 t
0013320 o n - 2 d o [ \r \t \t \t F S
0013340 B ( F L D ( a c 1 , p + 2 * (
0013360 i + 1 ) ) , p + 2 * i ) \r \t \t
0013400 \t F A D ( F M L ( F L D ( a c 2
0013420 , p 2 + 2 * i ) , t w o ) ,
0013440 p 2 + ( i + 1 ) * 2 ) \r \t \t \t
0013460 F S T ( F S B ( a c 1 , F D V
0013500 ( a c 2 , s i x ) ) , p 1 +
0013520 i * 2 ) \r \t \t \t F S T ( F S B (
0013540 F L D ( a c 1 , p 2 + ( i + 1
0013560 ) * 2 ) , p 2 + i * 2 ) , p
0013600 3 + i * 2 ) \r \t \t \t ] \r \t \t ] \r
0013620 \r \t r e s u l t i s P S q u i
0013640 t ( t r u e ) \r \t ] \r \r \r a n d
0013660 P S 376 001 \0 241 J i n i t ( p s v
0013700 ) = v a l o f [ \r \t i f
0013720 P S z o n e e q 0 r e s u
0013740 l t i s P S e r r o r ( 0 ) \r
0013760 \t P S v e c = p s v \r \t Z e r o
0014000 ( P S v e c , l P S V E C ) \r
0014020 \t / / n e w f l o a t i n g
0014040 p o i n t w o r k a r e a
0014060 \r \t l e t c n s t = F P w o r
0014100 k ! 0 - 4 * F P w o r k ! 1 \r \t
0014120 l e t F P w o r k N e w = A
0014140 l l o c a t e ( P S z o n e ,
0014160 4 * n u m F P a c s + c n s t )
0014200 \r \t i f F P w o r k N e w e
0014220 q 0 r e s u l t i s P S e
0014240 r r o r ( 1 ) \r \t P S v e c > >
0014260 P S V E C . F P 376 001 \0 4 H w o r
0014300 k S a v e = F P w o r k \r \t P S
0014320 v e c > > P S V E C . F P w o r
0014340 k N e w = F P w o r k N e w \r \t
0014360 F P w o r k N e w ! 1 = n u m F
0014400 P a c s \r / / \t F P S e t u p (
0014420 F P w o r k N e w ) \r \t F P w o
0014440 r k = F P w o r k N e w \r \t F L
0014460 D I ( z e r o , 0 ) ; F L D I
0014500 ( o n e , 1 ) ; F L D I ( t
0014520 w o , 2 ) ; F L D I ( s i x ,
0014540 6 ) \r \t r e s u l t i s t r u
0014560 e \r \t ] \r \r \r \r a n d P S a l
0014600 l o c a t e ( l o c a t i o n ,
0014620 m ) = v a l o f [ \r \t l
0014640 e t b = A l l o c a t e ( P S
0014660 z o n e , m ) \r \t i f 376 001 \0
0014700 / U b e q 0 r e s u l t i
0014720 s P S q u i t ( P S e r r o r
0014740 ( 1 ) ) \r \t @ l o c a t i o n =
0014760 b \r \t r e s u l t i s b \r \t ]
0015000 \r \r \r \r a n d P S e r r o r (
0015020 e r r o r C o d e , a 1 , a 2 ,
0015040 a 3 , a 4 ) = v a l o f [
0015060 \r \t ( t a b l e [ # 7 7 4 0 3 ;
0015100 # 1 4 0 1 ] ) ( " P S . E R
0015120 R O R S " , l v e r r o r C
0015140 o d e ) \r \t r e s u l t i s 0
0015160 \r \t ] \r \r \r a n d P S q u i t
0015200 ( r e s u l t ) = v a l o f
0015220 [ \r \t i f P S v e c e q
0015240 0 r e s u l t i s r e s u l
0015260 t \r / / \t F P S e t u p ( P S v
0015300 e c 376 \0 261 b H > > P S V E C . F
0015320 P w o r k S a v e ) \r \t F P w o
0015340 r k = P S v e c > > P S V E C .
0015360 F P w o r k S a v e \r \t P S v e
0015400 c > > P S V E C . F P w o r k S
0015420 a v e = 0 \r \t f o r i = 0 t
0015440 o l P S V E C - 1 d o i f
0015460 P S v e c ! i n e 0 t h
0015500 e n F r e e ( P S z o n e ,
0015520 P S v e c ! i ) \r \t P S v e c =
0015540 0 \r \t r e s u l t i s r e s u
0015560 l t \r \t ] \r \r \r 377 \0 \0 d z p i n
0015600 i t 1 . B c p l \0 373 226 H 252 2 \0 \0
0015620 376 001 \0 ` 037 / / S e p t e m b e
0015640 r 1 1 , 1 9 8 0 3 : 5 7
0015660 P M b y R a m s h a w \t \t
0015700 * * * " U N D E R L A Y " *
0015720 * * \r / / E d i t e d b y L
0015740 y l e R a m s h a w S e p t
0015760 e m b e r 8 , 1 9 8 0 3
0016000 : 2 4 P M : c h a n g e d
0016020 h e a d e r \r / / m e s s a
0016040 g e t o D r a w 5 . 0 . .
0016060 . \r \r / / C o m p i l e w
0016100 i t h X / M t o s e t v
0016120 e r s i o n X ( i . e . n o
0016140 c o l o r m e n u ) t o
0016160 t r u e \r \r g e t " z p D e f
0016200 s . b c p l " \r \r g e t " s y
0016220 s D e f s 376 001 \0 \f 006 . d " \r g e
0016240 t " A l t o D e f s . d " \r \r
0016260 \r / / o u t g o i n g p r o
0016300 c e d u r e s : \r \r e x t e r n
0016320 a l [ \r \t d r a w J u n t a \r
0016340 \t n e e d B l o c k \r \t ] \r
0016360 \r \r / / o u t g o i n g s t
0016400 a t i c s : \r \r e x t e r n a l
0016420 [ \r \t / / o v e r l a y s
0016440 t u f f \r \t @ o v e r l a y T a
0016460 b l e \r \t / / d i s p l a y
0016500 a r e a s t u f f \r \t @ s w i
0016520 t c h D C B \r \t @ b i t m a p \r
0016540 \t @ b i t m a p 0 0 \r \t @ h e i
0016560 g h t \r \t @ w i d t h \r \t @ s c
0016600 a n l i n e W i d t h \r \t @ b i
0016620 t m a p S i z e \r \t 376 001 \0 316 346 @
0016640 X m a x \r \t @ Y m a x \r \t @ X r
0016660 e f 0 \r \t @ Y r e f 0 \r \t @ g r
0016700 i d S p a c i n g \r \t / / g l
0016720 o b a l t a b l e s \r \t @ s p
0016740 l i n e T a b l e \r \t @ t e x t
0016760 T a b l e \r \t @ f o n t D e f T
0017000 a b l e \r \t @ f o n t F i l e \r
0017020 \t @ n e w S p l i n e X Y t a b
0017040 l e \r \t @ t r a n s f o r m X Y
0017060 t a b l e \r \t @ t r a n s f o r
0017100 m M o d e T a b l e \r \t @ s e l
0017120 e c t i o n T a b l e \r \t @ d e
0017140 l e t i o n T a b l e \r \t @ c o
0017160 m m a n d T a b l e \r \t @ a c t
0017200 i o n T a b l e \r \t @ D T T s t
0017220 a c k \r \t @ D T T s t a c k T 376
0017240 001 \0 351 317 o p \r \t @ f r e e S t o
0017260 r a g e Z o n e \r \t @ l i n e T
0017300 h i c k n e s s T a b l e \r \t /
0017320 / t a b l e c o u n t e r s
0017340 \r \t @ m a x S p l i n e I D \r \t
0017360 @ m a x T e x t I D \r \t @ m a x
0017400 K n o t s \r \t @ m a x I t e m \r
0017420 \t @ m a x D T T s t a c k \r \t /
0017440 / t e x t s t u f f \r \t @ t e
0017460 x t O K \r \t @ t e x t S t r i n
0017500 g \r \t @ t e x t W i d t h \r \t @
0017520 t e x t T o p \r \t @ t e x t B o
0017540 t t o m \r \t @ t e x t H e i g h
0017560 t \r \t @ t e x t B i t m a p \r \t
0017600 @ t e x t B i t m a p S i z e \r
0017620 \t / / g l o b a l i n f o r
0017640 m a t i 376 001 \0 375 A o n \r \t @ f r
0017660 e e S t o r a g e S i z e \r \t @
0017700 f o n t \r \t @ d s p F o n t \r \t
0017720 @ d s p F o n t A d d r e s s \r
0017740 \t @ b r u s h \r \t @ c o l o r \r
0017760 \t @ v e r s i o n X \r \t ] \r \r s
0020000 t a t i c [ \r \t / / o v e r
0020020 l a y s t u f f \r \t @ o v e r
0020040 l a y T a b l e \r \t / / d i s
0020060 p l a y a r e a s t u f f \r
0020100 \t @ s w i t c h D C B \r \t @ b i
0020120 t m a p \r \t @ b i t m a p 0 0 \r
0020140 \t @ h e i g h t = d e f a u l t
0020160 H e i g h t \r \t @ w i d t h = d
0020200 e f a u l t W i d t h \r \t @ s c
0020220 a n l i n e W i d t h \r \t @ b i
0020240 t m a p S i z e \r 376 001 \0 223 u \t @
0020260 X m a x \r \t @ Y m a x \r \t @ X r
0020300 e f 0 \r \t @ Y r e f 0 \r \t @ g r
0020320 i d S p a c i n g = 0 \r \t / /
0020340 g l o b a l t a b l e s \r \t @
0020360 s p l i n e T a b l e \r \t @ t e
0020400 x t T a b l e \r \t @ f o n t D e
0020420 f T a b l e \r \t @ f o n t F i l
0020440 e \r \t @ n e w S p l i n e X Y t
0020460 a b l e \r \t @ t r a n s f o r m
0020500 X Y t a b l e \r \t @ t r a n s f
0020520 o r m M o d e T a b l e \r \t @ s
0020540 e l e c t i o n T a b l e \r \t @
0020560 d e l e t i o n T a b l e \r \t @
0020600 c o m m a n d T a b l e \r \t @ a
0020620 c t i o n T a b l e \r \t @ D T T
0020640 s t a c k \r \t @ D T T s t a 376 001
0020660 \0 246 317 c k T o p = 0 \r \t @ f r e
0020700 e S t o r a g e Z o n e \r \t @ l
0020720 i n e T h i c k n e s s T a b l
0020740 e \r \t / / t a b l e c o u n
0020760 t e r s \r \t @ m a x S p l i n e
0021000 I D = 0 \r \t @ m a x T e x t I D
0021020 = 0 \r \t @ m a x K n o t s = 0 \r
0021040 \t @ m a x I t e m = 0 \r \t @ m a
0021060 x D T T s t a c k \r \t / / t e x
0021100 t s t u f f \r \t @ t e x t O K
0021120 = 0 \r \t @ t e x t S t r i n g \r
0021140 \t @ t e x t W i d t h \r \t @ t e
0021160 x t T o p \r \t @ t e x t B o t t
0021200 o m \r \t @ t e x t H e i g h t \r
0021220 \t @ t e x t B i t m a p \r \t @ t
0021240 e x t B i t m a p S i z e \r \t /
0021260 / g 376 001 \0 340 * l o b a l i n
0021300 f o r m a t i o n \r \t @ f r e e
0021320 S t o r a g e S i z e = 0 \r \t @
0021340 f o n t = 0 \r \t @ d s p F o n t
0021360 = 0 \r \t @ d s p F o n t A d d r
0021400 e s s = 0 \r \t @ d e f a u l t F
0021420 o n t \r \t @ c o l o r = b l a c
0021440 k \r \t @ b r u s h = 4 \t \t / /
0021460 s q u a r e b r u s h i s
0021500 t h e d e f a u l t \r \t @ v e
0021520 r s i o n X = n o t n e w n
0021540 a m e X \r \t ] \r \r \r / / i n
0021560 c o m i n g p r o c e d u r e
0021600 s : \r \r e x t e r n a l [ \r \t
0021620 R e s e t s \t \t \t / / S Y S T
0021640 E M \r \t G e t s \r \t E n d o f s
0021660 \r \t C l o s e s 376 001 \0 ^ 263 \r \t O
0021700 p e n F i l e \r \t C r e a t e D
0021720 i s k S t r e a m \r \t C r e a t
0021740 e D i s p l a y S t r e a m \r \t
0021760 S h o w D i s p l a y S t r e a
0022000 m \r \t F i l e L e n g t h \r \t F
0022020 i l e P o s \r \t S e t F i l e P
0022040 o s \r \t P o s i t i o n P a g e
0022060 \r \t J u m p T o F a \r \t R e a d
0022100 B l o c k \r \t S e t B l o c k \r
0022120 \t Z e r o \r \t M o v e B l o c k
0022140 \r \t D o u b l e A d d \r \t U s c
0022160 \r \r \t S e t E n d C o d e \r \t J
0022200 u n t a \r \r \t G e t F i x e d \r
0022220 \t F i x e d L e f t \r \t I n i t
0022240 i a l i z e Z o n e \r \t A l l o
0022260 c a t e \r \r \t i n i t E v 376 001 \0
0022300 q 036 e n t T a b l e \t \t / / Z
0022320 P I N I T 2 \r \r \t d r a w M a i
0022340 n \t \t / / Z P E D I T \r \t d r
0022360 a w F i n i s h \r \r \t M a k e F
0022400 o n t E n t r y \t \t / / Z P F
0022420 O N T I O \r \r \t t y p e F o r m
0022440 \t \t / / Z P U T I L \r \t F P e
0022460 r r o r \r \t e q u a l \r \r \t P S
0022500 e r r o r \t \t \t / / S P L I N
0022520 E \r \r \t g i v e U p \t \t \t / /
0022540 Z P B L O C K \r \t C h e c k P S
0022560 e r r o r \r \t m a x B l o c k S
0022600 i z e \r \r \t R e a d U s e r C m
0022620 I t e m \t \t / / R E A D U S E
0022640 R C M I T E M \r \r \t L o a d P a
0022660 c k e d R A M \t \t / / R E A D
0022700 P R 376 001 \0 $ 216 A M \r \t M i c r o
0022720 F l o a t R a m I m a g e \r \t ]
0022740 \r \r \r \r / / i n c o m i n g
0022760 s t a t i c s : \r \r e x t e r n
0023000 a l [ \r \t @ d a s h O n \t \t \t
0023020 / / Z P D R A W \r \t @ d a s h
0023040 O f f \r \r \t F P e r r p r i n t
0023060 \t \t / / m i c r o F L O A T \r
0023100 \r \t P S z o n e \t \t \t / / P S
0023120 P L I N E \r \r \t @ s a m p l e B
0023140 u f f e r \t \t / / Z P F R E E
0023160 H A N D \r \t @ m a x S a m p l e
0023200 C o u n t \r \r \t d s p \t \t \t / /
0023220 S Y S T E M \r \t s y s Z o n e
0023240 \r \t l v S y s Z o n e \r \t f p S
0023260 y s F o n t \r \t l v U s e r F i
0023300 n i s h P r o 376 001 \0 \t 257 c \r \t O
0023320 s V e r s i o n \r \t ] \r \r \r / /
0023340 l o c a l s t a t i c : \r \r
0023360 s t a t i c [ \r \t @ c h e c k
0023400 F r e e S t o r a g e = f a l s
0023420 e \r \t @ t e m p O v e r l a y T
0023440 a b l e \r \t ] \r \r \r / / d e f
0023460 i n i t i o n s \r \r m a n i f e
0023500 s t [ \r \t / / 6 l i n e s
0023520 f o r d s p s t r e a m \r
0023540 \t n L i n e s = 6 \r \t d s p W i
0023560 d t h = 3 * 3 8 \r \t / / 1 d
0023600 i s k s t r e a m \r \t d i s k
0023620 S t r e a m = l K S + 2 5 6 \r
0023640 \t s y s t e m P o o l S i z e =
0023660 d i s k S t r e a m + 1 5 0 \r \t
0023700 / / h o r i z o n t a 376 001 \0 347
0023720 1 l m a r g i n \r \t h o r M a
0023740 r g i n = 1 6 \r \t ] \r \r \r \r / /
0023760 * * * * * * * * * * * * * * * *
*
0024060 * \r / / i n i t i a l i z a t
0024100 i o n a n d t h e l i k e
0024120 \r / / * * * * * * * * * * * * *
0024140 * * * * * * * * * * * * * * * *
*
0024220 * * * * \r \r l e t d r a w J u
0024240 n t a ( l o a d V e c , c f a
0024260 ) b e [ d r a w J u n t a \r
0024300 \t / / l o a d & i n i t i
0024320 a 376 001 \0 b 273 l i z e f l o a t
0024340 i n g p o i n t m i c r o c
0024360 o d e : \r / / \t L o a d P a c k
0024400 e d R A M ( M i c r o F l o a t
0024420 R a m I m a g e ) \r \t / / g e
0024440 t o v e r l a y i n f o r m
0024460 a t i o n & s e t E n d C
0024500 o d e : \r \t l e t e n d O f C
0024520 o d e = l o a d V e c ! ( $ E -
0024540 $ A ) \r \t t e m p O v e r l a y
0024560 T a b l e = e n d O f C o d e \r
0024600 \t e n d O f C o d e = e n d O f
0024620 C o d e + l O V T \r \t Z e r o (
0024640 t e m p O v e r l a y T a b l e
0024660 , l O V T ) \r \t M o v e B l o
0024700 c k ( l v ( t e m p O v e r l a
0024720 y T a b l e 376 001 \0 g S > > O V T
0024740 . f p ) , l v ( c f a > > C F
0024760 A . f p ) , l F P ) \r \t l e t
0025000 r u n F i l e = C r e a t e D
0025020 i s k S t r e a m ( l v ( c f a
0025040 > > C F A . f p ) , k s T y p
0025060 e R e a d O n l y ) \r \t J u m p
0025100 T o F a ( r u n F i l e , l v
0025120 ( c f a > > C F A . f a ) ) \r \t
0025140 l e t p a g e N u m b e r = c
0025160 f a > > C F A . f a . p a g e N
0025200 u m b e r \r \t f o r i = 1 t
0025220 o n u m b e r O f O v e r l a
0025240 y s d o [ \r \t \t P o s i t i
0025260 o n P a g e ( r u n F i l e ,
0025300 p a g e N u m b e r ) \r \t \t t e
0025320 m p O v e r l a y T a 376 001 \0 231 #
0025340 b l e > > O V T . p n ^ i = p a
0025360 g e N u m b e r \r \t \t / / 4 t
0025400 h w o r d o f o v e r l a
0025420 y h e a d e r i s l e n g
0025440 t h ( i n w o r d s ) \r \t \t
0025460 l e t o v l = v e c 1 6 \r \t
0025500 \t R e a d B l o c k ( r u n F i
0025520 l e , o v l , 1 6 ) \r \t \t l
0025540 e t e n d O f O v e r l a y =
0025560 o v l ! 0 + o v l ! 4 \r \t \t
0025600 i f U s c ( e n d O f C o d e
0025620 , e n d O f O v e r l a y )
0025640 e q - 1 t h e n \r \t \t \t e n
0025660 d O f C o d e = e n d O f O v e
0025700 r l a y \r \t \t t e m p O v e r l
0025720 a y T a b l e > > O V T . e n d
0025740 376 001 \0 X 311 ^ i = e n d O f O v e
0025760 r l a y \r \t \t t e m p O v e r l
0026000 a y T a b l e > > O V T . f r e
0026020 e ^ i = e n d O f C o d e - e n
0026040 d O f O v e r l a y \r \t \t / /
0026060 f i l e p a g e n u m b e r
0026100 f o r n e x t o v e r l a
0026120 y \r \t \t p a g e N u m b e r = p
0026140 a g e N u m b e r + ( o v l
0026160 ! 4 + 2 5 5 ) / 2 5 6 \r \t \t ] \r
0026200 \t C l o s e s ( r u n F i l e )
0026220 \r \t S e t E n d C o d e ( e n d
0026240 O f C o d e ) \r \t J u n t a ( l
0026260 e v M a i n , d r a w I n i t
0026300 ) \r \t ] d r a w J u n t a \r \r \r
0026320 \r a n d d r a w I n i t ( )
0026340 b e [ d 376 001 \0 | h r a w I n i
0026360 t \r \t / / m a k e n e w s
0026400 y s t e m z o n e \r \t s y s Z
0026420 o n e = I n i t i a l i z e Z o
0026440 n e ( G e t F i x e d ( s y s t
0026460 e m P o o l S i z e ) , s y s
0026500 t e m P o o l S i z e , 0 ,
0026520 0 ) \r \t @ l v S y s Z o n e = s
0026540 y s Z o n e \r \t / / e r r o r
0026560 s & f i n i s h \r \t F P e r
0026600 r p r i n t = F P e r r o r \r \t
0026620 P S e r r o r = C h e c k P S e
0026640 r r o r \r \t @ l v U s e r F i
0026660 n i s h P r o c = d r a w F i n
0026700 i s h \r \t / / i n i t i a l i
0026720 z e a l l t h e D R A W
0026740 s t u f f \r \t l e t 376 001 \0 006 m
0026760 d c b 1 = i n i t D i s p l a y
0027000 A n d S t o r a g e ( ) \r \t i n
0027020 i t E v e n t T a b l e ( ) \r \t
0027040 o v e r l a y T a b l e = n e e
0027060 d B l o c k ( l O V T ) \r \t M o
0027100 v e B l o c k ( o v e r l a y T
0027120 a b l e , t e m p O v e r l a
0027140 y T a b l e , l O V T ) \r \t s
0027160 a m p l e B u f f e r = o v e r
0027200 l a y T a b l e > > O V T . e n
0027220 d ^ f r e e H a n d O v e r l a
0027240 y \r \t m a x S a m p l e C o u n
0027260 t = o v e r l a y T a b l e > >
0027300 O V T . f r e e ^ f r e e H a n
0027320 d O v e r l a y \r \t i n i t U S
0027340 E R C M ( ) \r \t / / m a k e 376
0027360 001 \0 W 322 d i s p l a y \r \t l e
0027400 t p t = @ l v D i s p l a y
0027420 H e a d e r \r \t s w i t c h D C
0027440 B = d c b 1 > > D C B . n e x t
0027460 \r \t d c b 1 > > D C B . n e x t
0027500 = p t \r \t w h i l e p t > > D
0027520 C B . n e x t d o p t = p t
0027540 > > D C B . n e x t \r \t p t > >
0027560 D C B . n e x t = s w i t c h D
0027600 C B \r \t @ l v D i s p l a y H
0027620 e a d e r = d c b 1 \r \t / / n o
0027640 w t h e m a g i c n u m b
0027660 e r s ! \r \t X m a x , Y m a x =
0027700 w i d t h - 1 , h e i g h t - 1
0027720 \r \t X r e f 0 = 6 4 \r \t Y r e f
0027740 0 = h e i g h t + 2 * h o r
0027760 M a r g 376 001 \0 246 344 i n + n L
0030000 i n e s * ( ( @ ( d s p F o n t
0030020 A d d r e s s - 2 ) + 1 ) & # 1
0030040 7 7 7 7 6 ) \r \t / / v i d e o
0030060 c a m e r a \r \t i f c a m e
0030100 r a > > C A M E R A . p r e s e
0030120 n t t h e n [ \r \t \t c a m e
0030140 r a > > C A M E R A . t o p = Y
0030160 r e f 0 - h e i g h t + c a m e
0030200 r a Y o f f s e t \r \t \t c a m e
0030220 r a > > C A M E R A . b o t t o
0030240 m = Y r e f 0 + c a m e r a Y o
0030260 f f s e t \r \t \t c a m e r a > >
0030300 C A M E R A . l e f t = X r e f
0030320 0 + c a m e r a X o f f s e t \r
0030340 \t \t c a m e r a > > C A M E R A
0030360 . r i g h t = X r 376 001 \0 021 \f e f
0030400 0 + w i d t h + c a m e r a X o
0030420 f f s e t \r \t \t c a m e r a > >
0030440 C A M E R A . i n s i d e M o d
0030460 e = a l t o O n l y \r \t \t c a m
0030500 e r a > > C A M E R A . o u t s
0030520 i d e M o d e = a l t o O n l y
0030540 \r \t \t ] \r \t / / a l l s e t
0030560 \r \t m a x B l o c k S i z e ( )
0030600 \r \t d r a w M a i n ( ) \r \t ] d
0030620 r a w I n i t \r \r \r \r a n d i
0030640 n i t D i s p l a y A n d S t o
0030660 r a g e ( ) = v a l o f [
0030700 i n i t D i s p l a y A n d S t
0030720 o r a g e \r \t / / g e t b i
0030740 g b l o c k f o r d i s p
0030760 l a y \r \t / / d i s p l a 376 001
0031000 \0 216 y a r e a i s w i d
0031020 t h * h e i g h t w i t h
0031040 a 4 * 1 6 b i t m a r g
0031060 i n \r \t \t h e i g h t = d e f a
0031100 u l t H e i g h t \r \t \t w i d t
0031120 h = d e f a u l t W i d t h \r \t
0031140 [ s c a n l i n e W i d t h =
0031160 w i d t h / 1 6 + m a r g i
0031200 n \r \t b i t m a p S i z e =
0031220 h e i g h t * s c a n l i n e W
0031240 i d t h \r \t b i t m a p = G
0031260 e t F i x e d ( b i t m a p S i
0031300 z e + 1 ) \r \t i f b i t m
0031320 a p b r e a k \r \t w i d t
0031340 h = w i d t h - 3 2 \r \t ] r
0031360 e p e a t \r \t / / m u s t b
0031400 e a 376 001 \0 212 H n e v e n l
0031420 o c a t i o n , d a m n i t
0031440 ! \r \t b i t m a p = ( b i t m a
0031460 p + 1 ) & # 1 7 7 7 7 6 \r \t
0031500 b i t m a p 0 0 = b i t m a p
0031520 + b i t m a p S i z e - s
0031540 c a n l i n e W i d t h + m
0031560 a r g i n \r \t Z e r o ( b i t m
0031600 a p , b i t m a p S i z e ) \r
0031620 \r \t / / g e t t h e r e m
0031640 a i n d e r f o r f r e e
0031660 s t o r a g e z o n e \r \t f r
0031700 e e S t o r a g e S i z e = F i
0031720 x e d L e f t ( ) - 1 3 0 0
0031740 \r \t f r e e S t o r a g e Z o n
0031760 e = G e t F i x e d ( f r e e S
0032000 t o r a g e S i 376 001 \0 [ 303 z e )
0032020 \r \t t e s t c h e c k F r e e
0032040 S t o r a g e \r \t i f s o I n
0032060 i t i a l i z e Z o n e ( f r e
0032100 e S t o r a g e Z o n e , f r
0032120 e e S t o r a g e S i z e , 0
0032140 ) \r \t i f n o t I n i t i a l
0032160 i z e Z o n e ( f r e e S t o r
0032200 a g e Z o n e , f r e e S t o
0032220 r a g e S i z e , 0 , 0 ) \r
0032240 \t P S z o n e = f r e e S t o r
0032260 a g e Z o n e \r \r \t t e x t B i
0032300 t m a p S i z e = m a x T e x t
0032320 H e i g h t * s c a n l i n e W
0032340 i d t h \r \t t e x t B i t m a p
0032360 = n e e d E v e n B l o c k ( t
0032400 e x t B i t m a p S i z e 376 001 \0
0032420 R v ) \r \t Z e r o ( t e x t B i
0032440 t m a p , t e x t B i t m a p
0032460 S i z e ) \r \r \t / / g e t d i
0032500 s p l a y c o n t r o l b l
0032520 o c k s \r \t l e t D C B 1 = n
0032540 e e d E v e n B l o c k ( 5 * l
0032560 D C B ) \r \t l e t D C B 2 = D
0032600 C B 1 + l D C B \r \t l e t D C
0032620 B 3 = D C B 2 + l D C B \r \t l e
0032640 t D C B 4 = D C B 3 + l D C B
0032660 \r \t l e t D C B 5 = D C B 4 +
0032700 l D C B \r \r \t / / s e t u p
0032720 d i s p l a y c o n t r o l
0032740 b l o c k s \r \t Z e r o ( D C B
0032760 1 , 5 * l D C B ) \r \t \t / / t
0033000 o p m a r g i n \r \t D C B 1 >
0033020 > D 376 001 \0 & 327 C B . h e i g h t
0033040 = h o r M a r g i n / 2 \r \t \t /
0033060 / s y s t e m d i s p l a y
0033100 a r e a ( f o r m e s s a g
0033120 e s ) \r \t \t / / s e c o n d t
0033140 o p m a r g i n \r \t D C B 2 >
0033160 > D C B . h e i g h t = h o r M
0033200 a r g i n / 2 \r \t \t / / c u r v
0033220 e a r e a & m a r g i n \r
0033240 \t D C B 3 > > D C B . b i t m a
0033260 p = b i t m a p \r \t D C B 3 > >
0033300 D C B . w i d t h = s c a n l i
0033320 n e W i d t h \r \t D C B 3 > > D
0033340 C B . h e i g h t = h e i g h t
0033360 / 2 \r \t \t / / a n o t h e r
0033400 m a r g i n \r \t D C B 4 > > D C
0033420 B . h e i g h 376 001 \0 274 261 t = h o
0033440 r M a r g i n / 2 \r \t \t / / t
0033460 e x t d i s p l a y \r \t D C B
0033500 5 > > D C B . i n d e n t a t i
0033520 o n = 4 \r \t D C B 5 > > D C B .
0033540 h e i g h t = m a x T e x t H e
0033560 i g h t / 2 \r \t D C B 5 > > D C
0033600 B . b i t m a p = t e x t B i t
0033620 m a p \r \t D C B 5 > > D C B . w
0033640 i d t h = s c a n l i n e W i d
0033660 t h \r \t \t / / l i n k D C B s
0033700 \r \t D C B 1 > > D C B . n e x t
0033720 = D C B 2 \r \t D C B 2 > > D C B
0033740 . n e x t = D C B 3 \r \t D C B 3
0033760 > > D C B . n e x t = D C B 4 \r
0034000 \t D C B 4 > > D C B . n e x t =
0034020 D C B 5 \r \t D C B 5 > > 376 001 \0 241
0034040 207 D C B . n e x t = 0 \r \r \t / /
0034060 d e c i d e a b o u t t h
0034100 e s i z e o f t a b l e s
0034120 \r \t r e a d C O M C M p a r a m
0034140 e t e r s ( ) \r \t l e t g r i
0034160 d S p a c D e f = v e r s i o
0034200 n X ? X g r i d S p a c i n
0034220 g D e f a u l t , g r i d S p
0034240 a c i n g D e f a u l t \r \t i f
0034260 m a x S p l i n e I D l e
0034300 0 % m a x S p l i n e I D
0034320 g r 1 0 * m a x S p l i n e I
0034340 D d e f a u l t t h e n \r \t \t
0034360 m a x S p l i n e I D = m a x S
0034400 p l i n e I D d e f a u l t \r \t
0034420 i f m a x T e x t I D l e
0034440 0 376 001 \0 261 025 % m a x T e x t
0034460 I D g r 1 0 * m a x T e x t
0034500 I D d e f a u l t t h e n \r \t
0034520 \t m a x T e x t I D = m a x T e
0034540 x t I D d e f a u l t \r \t i f
0034560 m a x K n o t s l e 0 %
0034600 m a x K n o t s g r 1 0 * m
0034620 a x K n o t s D e f a u l t t
0034640 h e n \r \t \t m a x K n o t s = m
0034660 a x K n o t s D e f a u l t \r \t
0034700 i f d a s h O n l e 0 %
0034720 d a s h O n g r 1 0 * d a
0034740 s h O n D e f a u l t t h e n
0034760 \r \t \t d a s h O n = d a s h O n
0035000 D e f a u l t \r \t i f d a s h
0035020 O f f l e 0 % d a s h O
0035040 f f g r 376 001 \0 211 262 1 0 * d a
0035060 s h O f f D e f a u l t t h e
0035100 n \r \t \t d a s h O f f = d a s h
0035120 O f f D e f a u l t \r \t i f g
0035140 r i d S p a c i n g l e 0
0035160 % g r i d S p a c i n g g r
0035200 1 0 * g r i d S p a c D e f
0035220 t h e n \r \t \t g r i d S p a c i
0035240 n g = g r i d S p a c D e f \r \t
0035260 m a x I t e m = m a x S p l i n
0035300 e I D + m a x T e x t I D \r
0035320 \t m a x D T T s t a c k = m a x
0035340 I t e m + 2 * m a x T r a n
0035360 s f P o i n t s + 1 \r \r \t /
0035400 / s p l i n e t a b l e [
0035420 l e n g t h m a x S p l i n e
0035440 I D + 1 ] & t e x 376 001 \0 301 \v
0035460 t t a b l e [ l e n g t h
0035500 m a x T e x t I D + 1 ] : \r \t
0035520 / / \t w o r d 0 i s a c
0035540 o u n t e r \r \t / / \t w o r d s
0035560 1 t h r o u g h m a x S p
0035600 l i n e I D ( m a x T e x t I
0035620 D ) a r e p o i n t e r s \r
0035640 \t / / \t \t t o S P L I N E (
0035660 T E X T ) s t r u c t u r e s
0035700 \r \t l e t b l o c k S i z e =
0035720 ( m a x S p l i n e I D + 1 ) +
0035740 ( m a x T e x t I D + 1 ) + ( m
0035760 a x C h a r / 2 + 1 ) \r \t s p l
0036000 i n e T a b l e = n e e d B l o
0036020 c k ( b l o c k S i z e ) \r \t Z
0036040 e r o ( s p l i n e T a b l e ,
0036060 376 001 \0 p k b l o c k S i z e )
0036100 \r \t t e x t T a b l e = s p l i
0036120 n e T a b l e + m a x S p l i n
0036140 e I D + 1 \r \t t e x t S t r i n
0036160 g = t e x t T a b l e + m a x T
0036200 e x t I D + 1 \r \r \t / / X Y
0036220 t a b l e s f o r n e w s
0036240 p l i n e & t r a n s f o r
0036260 m , a n d t r a n s f o r m
0036300 m o d e t a b l e \r \t b l o
0036320 c k S i z e = t r a n s f o r m
0036340 M o d e M a x + T R A N S F O R
0036360 M t a b l e S i z e + ( 2 + m a
0036400 x K n o t s * 2 ) \r \t t r a n s
0036420 f o r m M o d e T a b l e = n e
0036440 e d B l o c k ( b l o c k S i z
0036460 e ) \r \t t 376 001 \0 y 274 r a n s f o
0036500 r m X Y t a b l e = t r a n s f
0036520 o r m M o d e T a b l e + t r a
0036540 n s f o r m M o d e M a x \r \t n
0036560 e w S p l i n e X Y t a b l e =
0036600 t r a n s f o r m X Y t a b l e
0036620 + T R A N S F O R M t a b l e S
0036640 i z e \r \t Z e r o ( t r a n s f
0036660 o r m M o d e T a b l e , b l
0036700 o c k S i z e ) \r \t t r a n s f
0036720 o r m M o d e T a b l e ! 0 = m
0036740 T r a n s f 2 M o d e \r \t t r a
0036760 n s f o r m M o d e T a b l e !
0037000 1 = c T r a n s f 2 M o d e \r \t
0037020 t r a n s f o r m M o d e T a b
0037040 l e ! 2 = m T r a n s f 4 M o d
0037060 e \r \t t r a n s f o 376 001 \0 9 305 r
0037100 m M o d e T a b l e ! 3 = c T r
0037120 a n s f 4 M o d e \r \t t r a n s
0037140 f o r m M o d e T a b l e ! 4 =
0037160 m T r a n s f 6 M o d e \r \t t r
0037200 a n s f o r m M o d e T a b l e
0037220 ! 5 = c T r a n s f 6 M o d e \r
0037240 \r \t / / s e l e c t i o n / d
0037260 e l e t i o n t a b l e : \r \t
0037300 b l o c k S i z e = 2 * m a x I
0037320 t e m + 2 \r \t s e l e c t i o n
0037340 T a b l e = n e e d B l o c k (
0037360 b l o c k S i z e ) \r \t Z e r o
0037400 ( s e l e c t i o n T a b l e ,
0037420 b l o c k S i z e ) \r \t d e l
0037440 e t i o n T a b l e = s e l e c
0037460 t i o n T a b l e + m a x I t 376
0037500 001 \0 _ , e m + 1 \r \r \t / / s t
0037520 a c k f o r d e l e t e d
0037540 i t e m s \r \t D T T s t a c k =
0037560 n e e d B l o c k ( m a x D T T
0037600 s t a c k ) \r \r / / \t l e t F
0037620 P a c s = n e e d B l o c k ( 4
0037640 * 3 2 + 1 ) \r / / \t F P a c s !
0037660 0 = 3 2 \r / / \t F P S e t u p (
0037700 F P a c s ) \r / / \r \t r e s u l
0037720 t i s D C B 1 \r \t ] i n i t D
0037740 i s p l a y A n d S t o r a g e
0037760 \r \r \r \r a n d n e e d B l o c
0040000 k ( n ) = v a l o f [ \r \t
0040020 l e t b = A l l o c a t e ( f
0040040 r e e S t o r a g e Z o n e ,
0040060 n ) \r \t u n l e s s b f i n
0040100 i s h \r 376 001 \0 l 200 \t r e s u l t
0040120 i s b \r \t ] \r \r \r a n d n e
0040140 e d E v e n B l o c k ( n ) =
0040160 v a l o f [ \r \t l e t b =
0040200 A l l o c a t e ( f r e e S t o
0040220 r a g e Z o n e , n , - 1 ,
0040240 t r u e ) \r \t u n l e s s b
0040260 f i n i s h \r \t r e s u l t i
0040300 s b \r \t ] \r \r \r a n d r e a
0040320 d C O M C M p a r a m e t e r s
0040340 ( ) b e [ \r \t / / ( s i m
0040360 p l e m i n d e d s c a n n
0040400 i n g o f C O M . C M ) \r \t
0040420 l e t c o m c m = O p e n F i
0040440 l e ( " C O M . C M " , k s T
0040460 y p e R e a d O n l y , c h a
0040500 r I t e m ) \r \t l 376 001 \0 b 023 e t
0040520 n u m b e r , s a v e d N u
0040540 m b e r = 0 , 0 \r \t u n t i l
0040560 E n d o f s ( c o m c m ) d
0040600 o [ \r \t \t l e t c = G e t s
0040620 ( c o m c m ) \r \t \t i f ( c
0040640 g e $ 0 ) & ( c l e $
0040660 9 ) t h e n [ \r \t \t \t n u m
0040700 b e r = n u m b e r * 1 0 +
0040720 ( c - $ 0 ) \r \t \t \t l o o p \r
0040740 \t \t \t ] \r \t \t s w i t c h o n
0040760 c i n t o [ \r \t \t c a s e
0041000 $ / : s a v e d N u m b e r =
0041020 n u m b e r ; n u m b e r = 0
0041040 ; e n d c a s e \r \t \t c a s e
0041060 $ d : \r \t \t c a s e $ D :
0041100 d a s h O n = s a v e d N u 376 001
0041120 \0 252 035 m b e r ; e n d c a s e
0041140 \r \t \t c a s e $ o : \r \t \t c a
0041160 s e $ O : d a s h O f f = s
0041200 a v e d N u m b e r ; e n d c
0041220 a s e \r \t \t c a s e $ k : \r \t
0041240 \t c a s e $ K : m a x K n o
0041260 t s = s a v e d N u m b e r ;
0041300 e n d c a s e \r \t \t c a s e $
0041320 g : \r \t \t c a s e $ G : g r
0041340 i d S p a c i n g = s a v e d N
0041360 u m b e r ; e n d c a s e \r \t
0041400 \t c a s e $ s : \r \t \t c a s e
0041420 $ S : m a x S p l i n e I D
0041440 = s a v e d N u m b e r ; e n
0041460 d c a s e \r \t \t c a s e $ t :
0041500 \r \t \t c a s e $ T : m a x T
0041520 e x t 376 001 \0 366 030 I D = s a v e d
0041540 N u m b e r ; e n d c a s e \r
0041560 \t \t d e f a u l t : s a v e d
0041600 N u m b e r = 0 ; n u m b e r
0041620 = 0 ; e n d c a s e \r \t \t \t ]
0041640 \r \t \t ] \r \t C l o s e s ( c o m
0041660 c m ) \r \t ] \r \r \r \r a n d i n
0041700 i t U S E R C M ( ) b e [ i
0041720 n i t U S E R C M \r \t / / m a
0041740 k e f o n t & l i n e T h
0041760 i c k n e s s t a b l e s f
0042000 r o m U S E R . C M e n t r
0042020 i e s \r \t l e t b l o c k S i
0042040 z e = F O N T F I L E l e n g t
0042060 h + m a x F o n t * ( F O N T D
0042100 E F l e n g t h + 1 ) + 4 \r \t l
0042120 i n e T h i c k 376 001 \0 266 371 n e s
0042140 s T a b l e = n e e d B l o c k
0042160 ( b l o c k S i z e ) \r \t Z e r
0042200 o ( l i n e T h i c k n e s s T
0042220 a b l e , b l o c k S i z e )
0042240 \r \t f o n t F i l e = l i n e T
0042260 h i c k n e s s T a b l e + 4 \r
0042300 \t f o n t D e f T a b l e = f o
0042320 n t F i l e + F O N T F I L E l
0042340 e n g t h \r \t f o r f = 0 t
0042360 o m a x F o n t - 1 d o f
0042400 o n t D e f T a b l e ! f = f o
0042420 n t D e f T a b l e + m a x F o
0042440 n t + f * F O N T D E F l e n g
0042460 t h \r \r \t / / g e t s t u f
0042500 f f r o m U s e r . C M (
0042520 f o n t n a m e s , l 376 001 \0
0042540 233 225 i n e t h i c k n e s s )
0042560 \r \t l e t f o n t N a m e s V
0042600 e c = v e c 1 0 * m a x F o n
0042620 t \r \t Z e r o ( f o n t N a m e
0042640 s V e c , 1 0 * m a x F o n t
0042660 ) \r \t l e t f o n t N a m e s
0042700 = v e c m a x F o n t \r \t f o
0042720 r f = 0 t o m a x F o n t
0042740 - 1 d o f o n t N a m e s !
0042760 f = f o n t N a m e s V e c + 1
0043000 0 * f \r \t l e t f o n t S e t
0043020 = v e c m a x F o n t \r \t Z e
0043040 r o ( f o n t S e t , m a x F
0043060 o n t ) \r \t r e a d U S E R C M
0043100 ( f o n t S e t , f o n t N a
0043120 m e s ) \r \r \t / / r e a d f
0043140 o n 376 001 \0 226 $ t s \r \t f o n t =
0043160 - 1 \r \t f o r f = 0 t o m
0043200 a x F o n t - 1 d o [ \r \t \t
0043220 i f f o n t F i l e I n i t (
0043240 f o n t S e t ! f , f ) e q
0043260 0 t h e n f o n t S e t !
0043300 f = 0 \r \t \t i f f o n t S e t
0043320 ! f n e 0 & f o n t e
0043340 q - 1 t h e n f o n t = f
0043360 \r \t \t ] \r \r \t / / i f n o
0043400 f o n t s a r e t h e r e ,
0043420 g e t s y s t e m f o n t
0043440 \r \t i f f o n t e q - 1
0043460 t h e n [ \r \t \t f o n t S e t
0043500 ! 0 = " S Y S F O N T . A L " \r
0043520 \t \t f o n t F i l e I n i t ( f
0043540 o n t S e t ! 376 001 \0 331 l 0 , 0
0043560 ) \r \t \t f o n t = 0 \r \t \t ] \r \r
0043600 \t / / f i n d l a r g e s t
0043620 f o n t f i l e \r \t l e t
0043640 m a x L e n g t h = 0 \r \t f o r
0043660 f = 0 t o m a x F o n t -
0043700 1 d o \r \t \t i f m a x L e n
0043720 g t h l s f o n t F i l e >
0043740 > F O N T F I L E . l e n g t h
0043760 ^ f t h e n \r \t \t \t m a x L e
0044000 n g t h = f o n t F i l e > > F
0044020 O N T F I L E . l e n g t h ^ f
0044040 \r \r \t / / p i c k s m a l l
0044060 e s t f o n t a s m e s s
0044100 a g e d i s p l a y f o n t
0044120 \r \t l e t m i n H e i g h t =
0044140 1 0 0 0 \r \t f o r f = 376 001 \0 D
0044160 377 0 t o m a x F o n t - 1
0044200 d o \r \t \t i f f o n t F i l e
0044220 > > F O N T F I L E . l e n g t
0044240 h ^ f n e 0 t h e n \r \t \t
0044260 \t i f f o n t F i l e > > F O
0044300 N T F I L E . h e i g h t ^ f
0044320 l s m i n H e i g h t t h e
0044340 n [ \r \t \t \t \t m i n H e i g h
0044360 t = f o n t F i l e > > F O N T
0044400 F I L E . h e i g h t ^ f \r \t \t
0044420 \t \t d s p F o n t = f \r \t \t \t \t
0044440 ] \r \t l e t d s p F o n t L e
0044460 n g t h = f o n t F i l e > > F
0044500 O N T F I L E . l e n g t h ^ d
0044520 s p F o n t \r \t l e t f o n t
0044540 S t r e a m = C r e a t e D i s
0044560 k 376 001 \0 276 302 S t r e a m ( l v (
0044600 f o n t F i l e > > F O N T F I
0044620 L E . f p ^ d s p F o n t ) , \r
0044640 \t \t \t \t k s T y p e R e a d O n
0044660 l y ) \r \t d s p F o n t A d d r
0044700 e s s = n e e d B l o c k ( d s
0044720 p F o n t L e n g t h ) \r \t R e
0044740 a d B l o c k ( f o n t S t r e
0044760 a m , d s p F o n t A d d r e
0045000 s s , d s p F o n t L e n g t
0045020 h ) \r \t C l o s e s ( f o n t S
0045040 t r e a m ) \r \t d s p F o n t A
0045060 d d r e s s = d s p F o n t A d
0045100 d r e s s + 2 \r \t f o n t F i l
0045120 e > > F O N T F I L E . l e n g
0045140 t h ^ d s p F o n t = 0 \r \r \t /
0045160 / m a k e 376 001 \0 t . s y s t
0045200 e m d i s p l a y s t r e a
0045220 m \r \t l e t d s p S i z e = n
0045240 L i n e s * l D C B + d
0045260 s p W i d t h * @ ( d s p F
0045300 o n t A d d r e s s - 2 ) \r \t d
0045320 s p = C r e a t e D i s p l a y
0045340 S t r e a m ( n L i n e s , A
0045360 l l o c a t e ( f r e e S t o r
0045400 a g e Z o n e , d s p S i z e )
0045420 , \r \t \t \t d s p S i z e , d s
0045440 p F o n t A d d r e s s ) \r \t S
0045460 h o w D i s p l a y S t r e a m
0045500 ( d s p , D S a l o n e ) \r \r
0045520 \t / / a l l p e r m a n e n
0045540 t s t o r a g e s h o u l d
0045560 h a v e b e e n 376 001 \0 367 036
0045600 a l l o c a t e d b y n o w
0045620 \r \t / / g e t f o n t b u
0045640 f f e r \r \t i f m a x L e n g
0045660 t h n e 0 t h e n \r \t \t
0045700 f o n t F i l e > > F O N T F I
0045720 L E . b u f f e r = n e e d B l
0045740 o c k ( m a x L e n g t h ) \r \t
0045760 f o n t F i l e > > F O N T F I
0046000 L E . c u r r e n t = - 1 \r \t f
0046020 o n t F i l e > > F O N T F I L
0046040 E . b u f f e r L e n g t h = m
0046060 a x L e n g t h \r \r \t / / i n
0046100 i t i a l i z a t i o n m e s
0046120 s a g e \r \t t e s t v e r s i
0046140 o n X \r \t i f s o t y p e F o
0046160 r m ( 0 , " * N D D R A W 5
0046200 376 001 \0 374 377 . 2 . X [ N o
0046220 v e m b e r 2 3 , 1 9 8 0 ]
0046240 * N " ) \r \t i f n o t t y p e
0046260 F o r m ( 0 , " * N D D R A W
0046300 5 . 2 [ N o v e m b e
0046320 r 2 3 , 1 9 8 0 ] * N " , \r
0046340 \t \t 0 , " D o c u m e n t a t
0046360 i o n u p d a t e o n < A
0046400 l t o D o c s > D R A W - n e w
0046420 s . p r e s s * N " ) \r \t t y p
0046440 e F o r m ( 0 , " F o n t s
0046460 0 t o 3 a r e : " ) \r \t
0046500 f o r f = 0 t o m a x F o
0046520 n t - 1 d o \r \t \t t y p e F o
0046540 r m ( 0 , ( ( f o n t S e t !
0046560 f ) ? f o n t S e t ! f ,
0046600 " n o n e 376 001 \0 @ 361 " ) , \r \t \t
0046620 \t 0 , ( ( f e q ( m a x F
0046640 o n t - 1 ) ) ? " * N " ,
0046660 " , " ) ) \r \t ] i n i t U S E
0046700 R C M \r \r \r \r a n d f o n t F
0046720 i l e I n i t ( f o n t N a m e
0046740 , f ) = v a l o f [ f o
0046760 n t F i l e I n i t \r \t / / p
0047000 r o c e d u r e s i m i l a r
0047020 t o r e a d F o n t F i l e
0047040 ( i n Z P I O ) \r \t i f f
0047060 o n t N a m e e q 0 r e s
0047100 u l t i s 0 \r \t l e t f i l
0047120 e = O p e n F i l e ( f o n t N
0047140 a m e , k s T y p e R e a d O
0047160 n l y , 0 , 0 , l v ( f o
0047200 n t F i l e > > F O 376 001 \0 360 276 N
0047220 T F I L E . f p ^ f ) ) \r \t i f
0047240 f i l e e q 0 t h e n
0047260 [ \r \t \t f o n t F i l e > > F O
0047300 N T F I L E . l e n g t h ^ f =
0047320 0 \r \t \t r e s u l t i s 0 \r \t
0047340 \t ] \r \t f o n t F i l e > > F O
0047360 N T F I L E . l e n g t h ^ f =
0047400 F i l e L e n g t h ( f i l e )
0047420 / 2 + 1 \r \t R e s e t s ( f i l
0047440 e ) \r \t l e t A L h e a d e r
0047460 = v e c 2 \r \t R e a d B l o c
0047500 k ( f i l e , A L h e a d e r
0047520 , 2 ) \r \t f o n t F i l e > >
0047540 F O N T F I L E . h e i g h t ^
0047560 f = A L h e a d e r > > A L . h
0047600 e i g h t \r \t f o n t F i l e 376
0047620 001 \0 < 321 > > F O N T F I L E . b
0047640 a s e l i n e ^ f = A L h e a d
0047660 e r > > A L . b a s e l i n e \r
0047700 \t C l o s e s ( f i l e ) \r \t /
0047720 / c h e c k f o n t n a m e
0047740 \r \t r e s u l t i s M a k e F
0047760 o n t E n t r y ( f o n t N a m
0050000 e , f o n t D e f T a b l e !
0050020 f , f ) \r \t ] f o n t F i l e
0050040 I n i t \r \r \r \r a n d r e a d
0050060 U S E R C M ( f o n t S e t ,
0050100 f o n t N a m e s ) = v a l
0050120 o f [ r e a d U S E R C M \r \t
0050140 l e t f C o u n t = 0 \r \t l e
0050160 t l w C o u n t = 0 \r \t l e t
0050200 f o r M e = f a l s e \r \t l e
0050220 t s t 376 001 \0 003 344 r = v e c 1
0050240 2 8 \r \t l e t u s e r c m = O
0050260 p e n F i l e ( " U S E R . C M
0050300 " , k s T y p e R e a d O n l
0050320 y , c h a r I t e m ) \r \t s w
0050340 i t c h o n R e a d U s e r C
0050360 m I t e m ( u s e r c m , s t
0050400 r ) i n t o [ \r \t c a s e
0050420 $ E : \r \t \t C l o s e s ( u s e
0050440 r c m ) \r \t \t b r e a k \r \t c a
0050460 s e $ L : \r \t \t i f f o r M
0050500 e & e q u a l ( s t r , "
0050520 F O N T " ) t h e n \r \t \t \t f
0050540 C o u n t = f C o u n t + r
0050560 e a d U S E R C M f o n t ( u s
0050600 e r c m , s t r , f o n t S
0050620 e t , f o n t N 376 001 \0 233 \r a m
0050640 e s ) \r \t \t i f f o r M e &
0050660 e q u a l ( s t r , " L I N
0050700 E W I D T H " ) t h e n \r \t \t
0050720 \t l w C o u n t = l w C o u n t
0050740 + r e a d U S E R C M l i n
0050760 e W i d t h ( u s e r c m , s
0051000 t r ) \r \t \t l o o p \r \t c a s e
0051020 $ N : \r \t \t f o r M e = e q u
0051040 a l ( s t r , " D R A W " ) \r
0051060 \t \t l o o p \r \t c a s e $ P :
0051100 \r \t c a s e $ S : \r \t \t l o o
0051120 p \r \t \t ] r e p e a t \r \t i f
0051140 f C o u n t e q 0 t h e
0051160 n [ \r \t \t f o n t S e t ! 0 =
0051200 " H E L V E T I C A 1 2 . A L "
0051220 \r \t \t f o n t S e t ! 1 = " 376 001
0051240 \0 226 275 H E L V E T I C A 1 2 B .
0051260 A L " \r \t \t f o n t S e t ! 2 =
0051300 " H E L V E T I C A 8 . A L " \r
0051320 \t \t f o n t S e t ! 3 = " A R R
0051340 O W S 1 0 . A L " \r \t \t ] \r \t /
0051360 / i f n o t h i n g i n
0051400 U S E R . C M , u s e d e f
0051420 a u l t v a l u e s ( s e e
0051440 Z P P R E S S . S R ) \r \t i f
0051460 l w C o u n t e q 0 t h
0051500 e n l i n e T h i c k n e s s
0051520 T a b l e = 0 \r \t ] r e a d U S
0051540 E R C M \r \r \r \r a n d r e a d
0051560 U S E R C M f o n t ( u s e r c
0051600 m , s t r , f o n t s e t ,
0051620 f o n t N a m e s ) = v a
0051640 l o f 376 001 \0 m ^ [ r e a d U S
0051660 E R C M f o n t \r \t i f R e a
0051700 d U s e r C m I t e m ( u s e r
0051720 c m , s t r ) n e $ P r
0051740 e s u l t i s 0 \r \t l e t f
0051760 = s t r > > S T R I N G . c h a
0052000 r ^ 1 - $ 0 \r \t i f ( f
0052020 l s 0 ) % ( f g e m a
0052040 x F o n t ) r e s u l t i s
0052060 0 \r \t l e t l e n g t h = s t
0052100 r > > S T R I N G . l e n g t h
0052120 \r \t l e t i s t a r t , i e
0052140 n d = 2 , l e n g t h \r \t f
0052160 o r i = 2 t o l e n g t h
0052200 d o \r \t \t i f s t r > > S T
0052220 R I N G . c h a r ^ i n e $
0052240 * S t h e n 376 001 \0 F j [ i
0052260 s t a r t = i ; b r e a k ]
0052300 \r \t f o r i = i s t a r t t
0052320 o l e n g t h d o \r \t \t i f
0052340 s t r > > S T R I N G . c h a
0052360 r ^ i e q $ * S t h e n
0052400 [ i e n d = i - 1 ; b r e a
0052420 k ] \r \t l e t n a m e = f o
0052440 n t N a m e s ! f \r \t f o r i
0052460 = i s t a r t t o i e n d
0052500 d o \r \t \t n a m e > > S T R I N
0052520 G . c h a r ^ ( i - i s t a r t
0052540 + 1 ) = s t r > > S T R I N G .
0052560 c h a r ^ i \r \t n a m e > > S T
0052600 R I N G . l e n g t h = i e n d
0052620 - i s t a r t + 1 \r \t f o n t s
0052640 e t ! f = n a m e \r \t r e 376 001 \0
0052660 P c s u l t i s 1 \r \t ] r e a
0052700 d U S E R C M f o n t \r \r \r a n
0052720 d r e a d U S E R C M l i n e
0052740 W i d t h ( u s e r c m , s t
0052760 r ) = v a l o f [ r e a d
0053000 U S E R C M l i n e W i d t h \r
0053020 \t i f R e a d U s e r C m I t
0053040 e m ( u s e r c m , s t r )
0053060 n e $ P r e s u l t i s 0
0053100 \r \t l e t f = s t r > > S T R
0053120 I N G . c h a r ^ 1 - $ 0 \r
0053140 \t i f ( f l s 0 ) % (
0053160 f g r 3 ) r e s u l t i s
0053200 0 \r \t l e t l e n g t h = s
0053220 t r > > S T R I N G . l e n g t
0053240 h \r \t l e t i s t a r t , i
0053260 e n 376 001 \0 r P d = 2 , l e n
0053300 g t h \r \t f o r i = 2 t o
0053320 l e n g t h d o \r \t \t i f s
0053340 t r > > S T R I N G . c h a r ^
0053360 i n e $ * S t h e n [
0053400 i s t a r t = i ; b r e a k
0053420 ] \r \t f o r i = i s t a r t
0053440 t o l e n g t h d o \r \t \t i
0053460 f s t r > > S T R I N G . c h
0053500 a r ^ i e q $ * S t h e n
0053520 [ i e n d = i - 1 ; b r e
0053540 a k ] \r \t l e t n u m = 0 \r
0053560 \t f o r i = i s t a r t t o
0053600 i e n d d o [ \r \t \t l e t
0053620 c = s t r > > S T R I N G . c
0053640 h a r ^ i - $ 0 \r \t \t i f
0053660 c l s 0 376 \0 k 333 r % c
0053700 g r 9 r e s u l t i s 0 \r
0053720 \t \t n u m = n u m * 1 0 + c
0053740 \r \t \t ] \r \t l i n e T h i c k n
0053760 e s s T a b l e ! f = n u m \r \t
0054000 r e s u l t i s 1 \r \t ] r e a
0054020 d U S E R C M l i n e W i d t h
0054040 \r \r \r \r \r \r \r 374
0054050