$ 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