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