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