$ od -c -N 50000 [Indigo]<AltoSource>SIMPLEDISPLAYSTREAM.DM!2 0000000 377 \0 \0 S i m p l e D i s p l a y 0000020 S t r e a m . b c p l \0 373 230 343 . 0000040 346 \0 \0 376 001 \0 & 022 / / S i m p l 0000060 e D i s p l a y S t r e a m . b 0000100 c p l \r / / L a s t m o d i 0000120 f i e d A p r i l 1 3 , 1 0000140 9 8 2 1 0 : 4 9 A M b y 0000160 T a f t \r \r g e t " A l t o 0000200 D e f s . d " \r g e t " S t r 0000220 e a m s . d " \r \r e x t e r n a 0000240 l \r [ \r / / o u t g o i n g 0000260 p r o c e d u r e s \r C r e a t 0000300 e S i m p l e D s p S t r e a m 0000320 ; S i m p l e D s p S e t L M 0000340 a r g ; S i m p l e D s p S e 0000360 t R M a r g ; \r S i m p l e D s 0000400 p G e t L i n e P o s ; S i m 0000420 p l e D s p S e t L i n e P o s 0000440 \r S i m p l e D 376 001 \0 _ N s p G 0000460 e t B i t P o s ; S i m p l e 0000500 D s p S e t B i t P o s ; S i 0000520 m p l e D s p R e s e t L i n e 0000540 \r S i m p l e D s p E r a s e B 0000560 i t s ; S i m p l e D s p D C 0000600 B ; S i m p l e D s p C h a r 0000620 W i d t h \r \r / / f o r O E 0000640 P d e c l a r a t i o n o n 0000660 l y : \r S i m p l e D s p P u t 0000700 s ; S i m p l e D s p R e s e 0000720 t s ; S i m p l e D s p C l o 0000740 s e s \r \r / / i n c o m i n g 0000760 p r o c e d u r e s \r A l l o 0001000 c a t e ; F r e e ; Z e r o 0001020 ; S e t B l o c k ; D e f a 0001040 u l t A r g s \r P u t s ; 376 001 \0 0001060 ~ 001 R e s e t s ; B i t B l 0001100 t ; S y s E r r ; M i n ; 0001120 M a x \r \r / / i n c o m i n g 0001140 s t a t i c s \r s y s Z o n e 0001160 \r ] \r \r / / - - - - - - - - - - 0001200 - - - - - - - - - - - - - - - - * 0001300 - \r s t r u c t u r e S D S : 0001320 \t \t / / S i m p l e D i s p 0001340 l a y S t r e a m \r / / - - - 0001360 - - - - - - - - - - - - - - - - * 0001460 - - 376 001 \0 4 - - - - - - - \r [ \r 0001500 @ S T \r d c b @ D C B \r b b t 0001520 @ B B T \r z o n e w o r d \r 0001540 s t r i k e F o n t w o r d \r 0001560 x P o s T a b l e w o r d \t \t 0001600 / / - > s t r i k e F o n t 0001620 > > S t r i k e . x P o s T a b 0001640 l e \r l e f t M a r g i n w o 0001660 r d \t \t / / i n b i t s f 0001700 r o m l e f t e d g e o f 0001720 b i t m a p \r r i g h t M a 0001740 r g i n w o r d \t / / i n 0001760 b i t s f r o m l e f t e 0002000 d g e o f b i t m a p \r ] 0002020 \r m a n i f e s t l S D S = 0002040 s i z e S D S / 1 6 \r c o m 0002060 p i l e i f 376 001 \0 @ 316 ( o f f 0002100 s e t S D S . d c b & 3 7 0002120 B ) n e 0 % ( o f f s e 0002140 t S D S . b b t & 3 7 B ) 0002160 n e 0 t h e n \r [ 0002200 B a r f ( " D C B o r B B T 0002220 n o t e v e n - w o r d a 0002240 l i g n e d " ) ] \r \r / / - - 0002260 - - - - - - - - - - - - - - - - * 0002360 - - - - - - - - - \r s t r u c t 0002400 u r e S t r i k e : \t / / S 0002420 t r i k e ( o l d - f o r m a 0002440 t ) f o n t \r / / - - - - - - 0002460 - - - - - - - - - - - - 376 001 \0 261 0002500 276 - - - - - - - - - - - - - - - 0002520 - - - - - - - - - - - - - - - - * 0002560 - - - - - - - - - - \r [ \r o n e 0002600 B i t b i t \t \t / / = 1 t 0002620 o m e a n n e w s t y l e 0002640 f o n t \r i n d e x b i t \r 0002660 f i x e d b i t \r b l a n k 0002700 b i t 1 3 \r m i n w o r d \t 0002720 \t / / L o w e s t c h a r 0002740 c o d e \r m a x w o r d \t \t / 0002760 / H i g h e s t c h a r c 0003000 o d e \r m a x W i d t h w o r 0003020 d \t \t / / M a x i m u m w i 0003040 d t h \r \r / / T h e r e s t 0003060 i s c a l l e d t h e " 0003100 s 376 001 \0 321 3 t r i k e b o d y 0003120 " , a n d i n c l u d e s 0003140 o v e r h e a d , b i t m a p 0003160 , a n d x P o s T a b l e . 0003200 \r l e n g t h w o r d \t \t / / 0003220 N u m b e r o f w o r d s 0003240 i n s t r i k e b o d y \r 0003260 a s c e n t w o r d \t \t / / 0003300 a b o v e b a s e l i n e \r 0003320 d e s c e n t w o r d \t \t / / 0003340 b e l o w b a s e l i n e 0003360 \r x O f f s e t w o r d \t \t / 0003400 / f o r k e r n i n g ( 0003420 n o t i m p l e m e n t e d , 0003440 a l w a y s z e r o ) \r r a 0003460 s t e r w o r d \t \t / / # 0003500 w o r d s 376 001 \0 : 233 p e r s 0003520 c a n l i n e \r b i t m a p 0003540 w o r d 0 \t \t / / b i t m 0003560 a p b e g i n s h e r e : 0003600 r a s t e r * h e i g h t w o 0003620 r d s \r / / x P o s T a b l e 0003640 ^ m i n , m a x w o r d 0003660 / / x - c o o r d i n a t e s 0003700 o f t h e c h a r a c t e 0003720 r s i n t h e b i t m a 0003740 p \r ] \r \f \r / / P u b l i c 0003760 p r o c e d u r e s \r \r / / - - 0004000 - - - - - - - - - - - - - - - - * 0004100 - - - - - - - - - \r l 376 001 \0 e 362 0004120 e t C r e a t e S i m p l e D 0004140 s p S t r e a m ( b i t m a p , 0004160 w i d t h , h e i g h t , 0004200 s t r i k e F o n t , \r 0004220 z o n e ; n u m a r g s n a 0004240 ) = v a l o f \r / / - - - - 0004260 - - - - - - - - - - - - - - - - * 0004360 - - - - - - - \r / / b i t m a 0004400 p i s t h e b i t m a p 0004420 s t a r t i n g a d d r e s 0004440 s a n d m u s t b e e v 0004460 e n . \r / / w i d t h i s 0004500 i n w o r d s a n d m u s 0004520 376 001 \0 \f 376 t b e e v e n . \r 0004540 / / h e i g h t i s i n 0004560 s c a n l i n e s a n d m 0004600 u s t b e e v e n . \r / / 0004620 s t r i k e F o n t m u s t 0004640 b e a p o i n t e r t o 0004660 a . s t r i k e ( n o n - k 0004700 e r n e d ) f o n t . \r / / 0004720 C l i e n t i s r e s p o n 0004740 s i b l e f o r l i n k i n 0004760 g D C B i n t o t h e d 0005000 i s p l a y l i s t a s d 0005020 e s i r e d . \r [ \r D e f a u l 0005040 t A r g s ( l v n a , - 4 , 0005060 s y s Z o n e ) \r l e t s d 0005100 s = A l l o c a t e ( z o n 0005120 e , l S 376 001 \0 265 \t D S , f a 0005140 l s e , t r u e ) / / e 0005160 v e n - w o r d a l i g n e d 0005200 \r Z e r o ( s d s , l S D S ) 0005220 \r S e t B l o c k ( s d s , S 0005240 y s E r r , l S T ) \r s d s > 0005260 > S D S . p u t s = S i m p 0005300 l e D s p P u t s \r s d s > > S 0005320 D S . r e s e t = S i m p l 0005340 e D s p R e s e t s \r s d s > > 0005360 S D S . c l o s e = S i m p 0005400 l e D s p C l o s e s \r s d s > 0005420 > S D S . d c b . b i t m a p 0005440 = b i t m a p \r s d s > > S D 0005460 S . d c b . w i d t h = w i 0005500 d t h \r s d s > > S D S . d c b 0005520 . h e i g h t = 376 001 \0 205 004 h 0005540 e i g h t r s h i f t 1 \r s 0005560 d s > > S D S . b b t . d b c a 0005600 = b i t m a p \r s d s > > S 0005620 D S . b b t . d b m r = w i 0005640 d t h \r s d s > > S D S . r i g 0005660 h t M a r g i n = w i d t h 0005700 l s h i f t 4 \r s d s > > S 0005720 D S . b b t . d h = s t r i 0005740 k e F o n t > > S t r i k e . a 0005760 s c e n t + s t r i k e F o 0006000 n t > > S t r i k e . d e s c e 0006020 n t \r s d s > > S D S . b b t . 0006040 s b c a = l v s t r i k e 0006060 F o n t > > S t r i k e . b i t 0006100 m a p \r s d s > > S D S . b b t 0006120 . s b m r = s t r i k e F 376 0006140 001 \0 275 207 o n t > > S t r i k e . 0006160 r a s t e r \r s d s > > S D S . 0006200 z o n e = z o n e \r s d s > 0006220 > S D S . s t r i k e F o n t 0006240 = s t r i k e F o n t \r s d s 0006260 > > S D S . x P o s T a b l e 0006300 = l v s t r i k e F o n t > 0006320 > S t r i k e . b i t m a p + 0006340 \r ( s t r i k e F o n t > > S 0006360 t r i k e . r a s t e r * s 0006400 d s > > S D S . b b t . d h ) \r 0006420 R e s e t s ( s d s ) \r r e s u 0006440 l t i s s d s \r ] \r \r \r / / 0006460 S e t t i n g m a r g i n s : 0006500 \r / / M o v i n g m a r g i 0006520 n s i n f r o m t h e e 0006540 d g e s 376 001 \0 [ 327 o f t h e 0006560 b i t m a p c a u s e s 0006600 t h e r e g i o n s o u t s 0006620 i d e \r / / t h e m a r g i 0006640 n s n o t t o b e t o u 0006660 c h e d b y a n y s u b s 0006700 e q u e n t o p e r a t i o n 0006720 b e s i d e s R e s e t s . 0006740 \r / / T h i s m e a n s t 0006760 h a t t h e c l i e n t h 0007000 a s c o m p l e t e f r e e 0007020 d o m i n d e f i n i n g 0007040 t h e c o n t e n t s \r / / 0007060 o f t h e s e r e g i o n s 0007100 . \r \r / / - - - - - - - - - - - 0007120 - - - - - - - - - - - - - - - - 0007140 - - - - - - - - - 376 001 \0 234 237 - - 0007160 - - - - - - - - - - - - - - - - * 0007220 - - - - - \r a n d S i m p l e 0007240 D s p S e t L M a r g ( s d s , 0007260 m a r g i n ) b e s d s > 0007300 > S D S . l e f t M a r g i n 0007320 = m a r g i n \r / / - - - - - 0007340 - - - - - - - - - - - - - - - - * 0007440 - - - - - - \r \r / / - - - - - - 0007460 - - - - - - - - - - - - - - - - * 0007540 - - - - - - - - - - - - - - 376 001 0007560 \0 026 177 - - - - - - - \r a n d S 0007600 i m p l e D s p S e t R M a r g 0007620 ( s d s , m a r g i n ) b e 0007640 s d s > > S D S . r i g h t M 0007660 a r g i n = m a r g i n \r / 0007700 / - - - - - - - - - - - - - - - 0007720 - - - - - - - - - - - - - - - - * 0010000 - - - - - - - - - - - - \r \r \r / 0010020 / T e x t l i n e o p e r 0010040 a t i o n s : \r / / T h e t 0010060 o p m o s t t e x t l i n e 0010100 i s n u m b e r e d z e r 0010120 o . N o b o u n d s c h 0010140 e c k s a r e d o n e . \r \r 0010160 / / - 376 001 \0 % 374 - - - - - - - - 0010200 - - - - - - - - - - - - - - - - * 0010300 - - \r a n d S i m p l e D s p 0010320 G e t L i n e P o s ( s d s ) 0010340 = s d s > > S D S . b b t . d 0010360 t y / s d s > > S D S . b b 0010400 t . d h \r / / - - - - - - - - - 0010420 - - - - - - - - - - - - - - - - * 0010520 - - \r \r / / - - - - - - - - - - 0010540 - - - - - - - - - - - - - - - - 0010560 - - - - - - - - 376 001 \0 > 375 - - - 0010600 - - - - - - - - - - - - - - - - * 0010640 - - - - - - \r a n d S i m p l 0010660 e D s p S e t L i n e P o s ( s 0010700 d s , l i n e ) b e \r / / - 0010720 - - - - - - - - - - - - - - - - * 0011020 - - - - - - - - - - \r / / P o 0011040 s i t i o n s t o t h e l 0011060 e f t m a r g i n o f t h 0011100 e s p e c i f i e d l i n e 0011120 . \r / / D o e s n o t a c 0011140 t u a l l y m o d i f y t h 0011160 e l i n e . \r [ \r s d s 376 001 \0 0011200 n i > > S D S . b b t . d t y 0011220 = l i n e * s d s > > S D 0011240 S . b b t . d h \r s d s > > S D 0011260 S . b b t . d l x = s d s > 0011300 > S D S . l e f t M a r g i n \r 0011320 ] \r \f \r / / P u b l i c p r 0011340 o c e d u r e s ( c o n t ' d 0011360 ) \r \r / / B i t p o s i t i 0011400 o n s a r e r e l a t i v e 0011420 t o t h e l e f t e d g 0011440 e o f t h e b i t m a p 0011460 , n o t r e l a t i v e \r / 0011500 / t o t h e l e f t m a 0011520 r g i n . N o b o u n d s 0011540 c h e c k s a r e d o n e 0011560 . \r \r / / - - - - - - - - - - - 0011600 - - 376 001 \0 231 354 - - - - - - - - - 0011620 - - - - - - - - - - - - - - - - * 0011700 - - - - - \r a n d S i m p l e 0011720 D s p G e t B i t P o s ( s d s 0011740 ) = s d s > > S D S . b b t 0011760 . d l x \r / / - - - - - - - - - 0012000 - - - - - - - - - - - - - - - - * 0012100 - - \r \r / / - - - - - - - - - - 0012120 - - - - - - - - - - - - - - - - * 0012200 - - - - - - - 376 001 \0 k X - - - - 0012220 - - - - - - \r a n d S i m p l 0012240 e D s p S e t B i t P o s ( s d 0012260 s , p o s ) b e s d s > > 0012300 S D S . b b t . d l x = p o 0012320 s \r / / - - - - - - - - - - - - 0012340 - - - - - - - - - - - - - - - - * 0012420 - - - - - - - - - - - - - - - \r 0012440 \r / / - - - - - - - - - - - - - 0012460 - - - - - - - - - - - - - - - - * 0012540 - - - - - - - - - - - - - - \r a 0012560 n d S i m p l e D s p R e s e 0012600 t L i n e ( s d s ) b 376 001 \0 B 0012620 372 e \r / / - - - - - - - - - - - 0012640 - - - - - - - - - - - - - - - - * 0012740 \r / / E r a s e s t h e c 0012760 u r r e n t l i n e , a n d 0013000 l e a v e s t h e s t r e 0013020 a m p o s i t i o n e d a t 0013040 t h e l e f t m a r g i n 0013060 . \r [ \r s d s > > S D S . b b t 0013100 . d l x = s d s > > S D S . 0013120 r i g h t M a r g i n \r S i m p 0013140 l e D s p E r a s e B i t s ( s 0013160 d s , s d s > > S D S . l e f 0013200 t M a r g i n - s d s > > S 0013220 D 376 001 \0 : B S . r i g h t M a r 0013240 g i n ) \r ] \r \r / / - - - - - - 0013260 - - - - - - - - - - - - - - - - * 0013360 - - - - - \r a n d S i m p l e 0013400 D s p E r a s e B i t s ( s d s 0013420 , n B i t s , f l a g ; n 0013440 u m a r g s n a ) b e \r / / 0013460 - - - - - - - - - - - - - - - - * 0013560 - - - - - - - - - - - \r / / E 0013600 r a s e s n B i t s r e l a 0013620 t i v e t 376 001 \0 333 \v o t h e 0013640 c u r r e n t p o s i t i o 0013660 n ( p o s i t i v e = > r 0013700 i g h t , n e g a t i v e = 0013720 > l e f t ) \r / / a n d a 0013740 d j u s t s t h e c u r r e 0013760 n t p o s i t i o n b y n 0014000 B i t s . N o b o u n d s 0014020 c h e c k s a r e d o n e 0014040 . \r / / F l a g = 0 o r o 0014060 m i t t e d s e t s t h e 0014100 e r a s e d r e g i o n t o 0014120 z e r o ; f l a g = 1 s e 0014140 t s i t t o a l l o n e 0014160 s ; \r / / f l a g = - 1 c o 0014200 m p l e m e n t s t h e r e 0014220 g i o n . \r [ \r i f 376 001 \0 233 272 0014240 n a l s 3 t h e n f l a 0014260 g = 0 \r l e t n e w P o s 0014300 = s d s > > S D S . b b t . 0014320 d l x + n B i t s \r s d s > 0014340 > S D S . b b t . d l x = M 0014360 i n ( s d s > > S D S . b b t . 0014400 d l x , n e w P o s ) \r s d s 0014420 > > S D S . b b t . d w = M 0014440 a x ( n B i t s , - n B i t s 0014460 ) \r s d s > > S D S . b b t . f 0014500 u n c t i o n = f l a g l 0014520 s 0 ? 1 6 B , 1 4 B / 0014540 / i n v e r t , r e p l a c 0014560 e \r S e t B l o c k ( l v s d 0014600 s > > S D S . b b t . g r a y , 0014620 f l a g n e 0 , 4 ) \r B 0014640 376 001 \0 366 i t B l t ( l v s d 0014660 s > > S D S . b b t ) \r Z e r o 0014700 ( l v s d s > > S D S . b b t 0014720 . g r a y , 4 ) \r s d s > > S 0014740 D S . b b t . d l x = n e w 0014760 P o s \r ] \r \r \r / / M i s c e 0015000 l l a n e o u s : \r \r / / - - - 0015020 - - - - - - - - - - - - - - - - * 0015120 - - - - - - - - \r a n d S i m 0015140 p l e D s p D C B ( s d s ) = 0015160 l v s d s > > S D S . d c b 0015200 \r / / - - - - - - - - - - - - - 0015220 - - - - - - - - - - - - - - - - 0015240 - - - - - 376 001 \0 253 223 - - - - - - 0015260 - - - - - - - - - - - - - - - - * 0015320 - - - \r / / R e t u r n s t 0015340 h e a d d r e s s o f t h 0015360 e D C B , w h i c h t h e 0015400 c a l l e r m a y f i d d 0015420 l e w i t h . \r \r / / - - - - 0015440 - - - - - - - - - - - - - - - - * 0015540 - - - - - - - \r a n d S i m p 0015560 l e D s p C h a r W i d t h ( s 0015600 d s , c h a r ) = v a l o 0015620 f \r / / - - - - - - - - - - - - 0015640 - - - - - - - - - - 376 001 \0 377 310 - 0015660 - - - - - - - - - - - - - - - - * 0015740 - - - - \r / / R e t u r n s 0015760 t h e w i d t h o f t h e 0016000 c h a r a c t e r i n t h 0016020 e f o n t a s s o c i a t e 0016040 d w i t h s d s . \r [ \r l e 0016060 t s t r i k e F o n t = s 0016100 d s > > S D S . s t r i k e F o 0016120 n t \r l e t x I n d e x = 0016140 c h a r - s t r i k e F o n 0016160 t > > S t r i k e . m i n \r 0016200 [ / / r e p e a t \r 0016220 i f x I n d e x l s 0 % 0016240 c h a r g r s t r i k e 376 0016260 001 \0 350 034 F o n t > > S t r i k e 0016300 . m a x t h e n \r 0016320 x I n d e x = s t r i k e F 0016340 o n t > > S t r i k e . m a x - 0016360 s t r i k e F o n t > > S t r i 0016400 k e . m i n + 1 \r l e t 0016420 w i d t h = ( s d s > > S D 0016440 S . x P o s T a b l e ) ! ( x I 0016460 n d e x + 1 ) - ( s d s > > 0016500 S D S . x P o s T a b l e ) ! x 0016520 I n d e x \r i f w i d t 0016540 h n e 0 t h e n r e s u 0016560 l t i s w i d t h \r x I 0016600 n d e x = - 1 \r ] r 0016620 e p e a t \r ] \r \f \r / / S t r 0016640 e a m o b j e c t o p e r a 0016660 t i o n 376 001 \0 \f 200 s \r \r / / - - 0016700 - - - - - - - - - - - - - - - - * 0017000 - - - - - - - - - \r a n d S i 0017020 m p l e D s p P u t s ( s d s , 0017040 c h a r ) b e \r / / - - - - 0017060 - - - - - - - - - - - - - - - - * 0017160 - - - - - - - \r [ \r l e t s t 0017200 r i k e F o n t = s d s > > 0017220 S D S . s t r i k e F o n t \r s 0017240 w i t c h o n c h a r i n t 0017260 o \r [ \r 376 001 \0 020 A c 0017300 a s e $ * n : \r [ 0017320 \r l e t n e w Y 0017340 = s d s > > S D S . b b t . d 0017360 t y + s d s > > S D S . b b 0017400 t . d h \r t e s t 0017420 ( n e w Y + s d s > > S D S 0017440 . b b t . d h ) g r ( s d s 0017460 > > S D S . d c b . h e i g h t 0017500 l s h i f t 1 ) \r 0017520 i f s o S c r o l l U 0017540 p ( s d s ) \r 0017560 i f n o t s d s > > S D S . b 0017600 b t . d t y = n e w Y \r 0017620 S i m p l e D s p R e s 0017640 e t L i n e ( s d s ) \r 0017660 e n d c a s e \r 376 001 0017700 \0 T 221 ] \r d e f a u l 0017720 t : \r [ \r 0017740 l e t x I n d e x = c h 0017760 a r - s t r i k e F o n t > 0020000 > S t r i k e . m i n \r 0020020 i f x I n d e x l s 0 0020040 % c h a r g r s t r i k 0020060 e F o n t > > S t r i k e . m a 0020100 x t h e n \r 0020120 x I n d e x = s t r i k e F 0020140 o n t > > S t r i k e . m a x - 0020160 s t r i k e F o n t > > S t r i 0020200 k e . m i n + 1 \r l 0020220 e t x O f f s e t = ( s d 0020240 s > > S D S . x P o s T a b l e 0020260 ) ! x I n d e x \r l 0020300 e t 376 001 \0 325 252 w i d t h = 0020320 ( s d s > > S D S . x P o s T a 0020340 b l e ) ! ( x I n d e x + 1 ) 0020360 - x O f f s e t \r 0020400 i f w i d t h e q 0 t h 0020420 e n \r [ c h 0020440 a r = s t r i k e F o n t > 0020460 > S t r i k e . m a x + 1 ; d 0020500 o c a s e c h a r ] \r 0020520 i f ( s d s > > S D S . 0020540 b b t . d l x + w i d t h ) 0020560 g r s d s > > S D S . r i g 0020600 h t M a r g i n t h e n \r 0020620 [ P u t s ( s d 0020640 s , $ * n ) ; d o c a s e 0020660 c h a r ] \r s d s 0020700 > > S D S . b b 376 001 \0 374 ; t . d 0020720 w = w i d t h \r 0020740 s d s > > S D S . b b t . s l x 0020760 = x O f f s e t \r 0021000 s d s > > S D S . b b t . f u 0021020 n c t i o n = 1 / / p 0021040 a i n t , f r o m s o u r c 0021060 e b l o c k \r B i 0021100 t B l t ( l v s d s > > S D S 0021120 . b b t ) \r s d s > 0021140 > S D S . b b t . d l x = s 0021160 d s > > S D S . b b t . d l x 0021200 + w i d t h \r e n 0021220 d c a s e \r ] \r 0021240 ] \r ] \r \r / / - - - - - - - - 0021260 - - - - - - - - - - - - - - - - 0021300 - - - - - - - - - - - - - 376 001 \0 0021320 223 216 - - - - - - - - - - - - - - 0021340 - - - - - - - - - - - - - - - - 0021360 - - - - - - - - \r a n d S i m 0021400 p l e D s p R e s e t s ( s d s 0021420 ) b e \r / / - - - - - - - - - 0021440 - - - - - - - - - - - - - - - - * 0021540 - - \r [ \r Z e r o ( s d s > > S 0021560 D S . d c b . b i t m a p , s 0021600 d s > > S D S . d c b . w i d t 0021620 h * s d s > > S D S . d c b . h 0021640 e i g h t * 2 ) \r s d s > > S D 0021660 S . b b t . d l x = s d s > 0021700 > S D S . l e f t M a r g i n \r 0021720 s d 376 001 \0 . 306 s > > S D S . b b 0021740 t . d t y = 0 \r ] \r \r / / - 0021760 - - - - - - - - - - - - - - - - * 0022060 - - - - - - - - - - \r a n d S 0022100 i m p l e D s p C l o s e s ( s 0022120 d s , c h a r ) b e \r / / - 0022140 - - - - - - - - - - - - - - - - * 0022240 - - - - - - - - - - \r / / R e 0022260 m o v e s D C B f r o m t 0022300 h e d i s p l a y l i s t 0022320 ( i f p r e 376 001 \0 273 223 s e n t 0022340 ) a n d d e s t r o y s s 0022360 t r e a m . \r [ \r l e t d c b 0022400 = @ d i s p l a y L i s t H 0022420 e a d \r [ / / r e p e 0022440 a t \r i f d c b e q 0022460 0 t h e n b r e a k \r 0022500 i f d c b > > D C B . n e x t 0022520 e q l v s d s > > S D S . 0022540 d c b t h e n \r [ 0022560 d c b > > D C B . n e x t = 0022600 s d s > > S D S . d c b . n e 0022620 x t ; b r e a k ] \r d 0022640 c b = d c b > > D C B . n e 0022660 x t \r ] r e p e a t \r F 0022700 r e e ( s d s > > S D S . z o n 0022720 e , s d s ) \r ] \r \f \r 376 001 \0 \t 0022740 \f / / I n t e r n a l p r o 0022760 c e d u r e s \r \r / / - - - - - 0023000 - - - - - - - - - - - - - - - - * 0023100 - - - - - - \r a n d S c r o l 0023120 l U p ( s d s ) b e \r / / - - 0023140 - - - - - - - - - - - - - - - - * 0023240 - - - - - - - - - \r [ \r l e t 0023260 b b t = v e c l B B T ; 0023300 b b t = ( b b t + 1 ) & 0023320 - 2 \r Z e r o ( b b t , l B B 0023340 T 376 001 \0 032 T ) \r b b t > > B B T 0023360 . d b c a = s d s > > S D S 0023400 . b b t . d b c a \r b b t > > B 0023420 B T . d b m r = s d s > > S 0023440 D S . b b t . d b m r \r b b t > 0023460 > B B T . d l x = s d s > > 0023500 S D S . l e f t M a r g i n \r b 0023520 b t > > B B T . d w = s d s 0023540 > > S D S . r i g h t M a r g i 0023560 n - s d s > > S D S . l e f 0023600 t M a r g i n \r b b t > > B B T 0023620 . d h = ( s d s > > S D S . 0023640 d c b . h e i g h t l s h i f 0023660 t 1 ) - s d s > > S D S . 0023700 b b t . d h \r b b t > > B B T . 0023720 s b c a = s d s > > S D S . 0023740 b b t . d b 376 \0 256 303 \v c a \r b b 0023760 t > > B B T . s b m r = s d 0024000 s > > S D S . b b t . d b m r \r 0024020 b b t > > B B T . s l x = s 0024040 d s > > S D S . l e f t M a r g 0024060 i n \r b b t > > B B T . s t y 0024100 = s d s > > S D S . b b t . d 0024120 h \r / / b b t > > B B T . f u 0024140 n c t i o n = 0 / / r 0024160 e p l a c e , f r o m s o u 0024200 r c e b l o c k \r B i t B l t 0024220 ( b b t ) \r ] \r \r 377 \0 \0 S i m p 0024240 l e D i s p l a y T e s t . b c 0024260 p l \0 373 230 343 / 331 \0 \0 376 001 \0 p \n / 0024300 / S i m p l e D i s p l a y T 0024320 e s t . b c p l \r / / L a s t 0024340 m o d i f i e d A p r i l 0024360 1 3 , 1 9 8 2 1 0 : 5 9 0024400 A M b y T a f t \r \r / / B 0024420 l d r S i m p l e D i s p l a 0024440 y T e s t S i m p l e D i s p 0024460 l a y S t r e a m G a c h a 1 0024500 0 S t r i k e \r \r g e t " A l 0024520 t o D e f s . d " \r g e t " S 0024540 t r e a m s . d " \r \r e x t e r 0024560 n a l \r [ \r C r e a t e S i m p 0024600 l e D s p S t r e a m ; S i m 0024620 p l e D s p D C B ; G a c h a 0024640 1 0 \r S i m p l e D s p S e t L 0024660 M a r g ; S i m p l e D s p 376 0024700 001 \0 q s S e t R M a r g ; S i 0024720 m p l e D s p S e t L i n e P o 0024740 s ; S i m p l e D s p R e s e 0024760 t L i n e \r S i m p l e D s p G 0025000 e t B i t P o s ; S i m p l e 0025020 D s p E r a s e B i t s ; S i 0025040 m p l e D s p C h a r W i d t h 0025060 \r G e t s ; P u t s ; C l o 0025100 s e s \r d s p ; k e y s \r ] \r 0025120 \r \r l e t T e s t ( ) b e \r 0025140 [ \r m a n i f e s t w i d t h 0025160 = 3 8 \r m a n i f e s t h 0025200 e i g h t = 4 0 0 \r l e t 0025220 b i t m a p = v e c w i d 0025240 t h * h e i g h t ; b i t m a 0025260 p = ( b i t m a p + 1 ) & 0025300 - 2 \r 376 001 \0 7 361 l e t s d s 0025320 = C r e a t e S i m p l e D 0025340 s p S t r e a m ( b i t m a p , 0025360 w i d t h , h e i g h t , 0025400 G a c h a 1 0 ) \r S i m p l e D 0025420 s p S e t L M a r g ( s d s , 0025440 1 0 ) \r S i m p l e D s p S e t 0025460 R M a r g ( s d s , 1 6 * w i 0025500 d t h - 2 0 ) \r S i m p l e 0025520 D s p S e t L i n e P o s ( s d 0025540 s , 0 ) \r d s p > > D S . l d 0025560 c b > > D C B . n e x t = S 0025600 i m p l e D s p D C B ( s d s ) 0025620 \r \r [ / / r e p e a t 0025640 \r l e t c h a r = G 0025660 e t s ( k e y s ) \r s w i 0025700 t c h o n c h a 376 001 \0 323 226 r 0025720 i n t o \r [ \r 0025740 c a s e 3 3 B : \r 0025760 b r e a k \r \r 0026000 c a s e 0 1 B : c a s 0026020 e 1 0 B : \r 0026040 i f S i m p l e D s p G e t B 0026060 i t P o s ( s d s ) g r 1 0 0026100 t h e n \r 0026120 S i m p l e D s p E r a s e 0026140 B i t s ( s d s , - S i m p l 0026160 e D s p C h a r W i d t h ( s d 0026200 s , $ * s ) ) \r 0026220 e n d c a s e \r \r 0026240 c a s e $ 0 t o $ 9 : \r 0026260 i f ( @ 1 7 0026300 7 0 3 7 B & 4 B ) e q 376 \0 0026320 374 H 377 0 t h e n \r 0026340 [ \r 0026360 S i m p l e D s p S e 0026400 t L i n e P o s ( s d s , c h 0026420 a r - $ 0 ) \r 0026440 S i m p l e D s p R e s e 0026460 t L i n e ( s d s ) \r 0026500 e n d c a s e \r 0026520 ] \r 0026540 / / f a l l i n 0026560 t o d e f a u l t c a s e \r 0026600 \r d e f a u l t : \r 0026620 P u t s ( s d 0026640 s , c h a r ) \r ] 0026660 \r ] r e p e a t \r \r C l 0026700 o s e s ( s d s ) \r ] \r \r \r \r 377 0026720 \0 \0 G a c h a 1 0 S t r i k e . 0026740 b r \0 373 230 333 235 212 \0 \0 376 001 \0 366 255 002 0026760 \0 002 K \0 \0 \0 024 \0 \0 \0 017 \0 \0 \0 033 \0 0027000 \0 \0 022 \0 \0 \0 023 \0 \0 \0 \0 \0 \0 \0 001 \0 0027020 001 \0 001 \0 \0 \0 \0 \0 001 \0 ` \0 \0 \a G a 0027040 c h a 1 0 002 / \0 \0 200 \0 \0 030 \0 ~ \0 0027060 \a 002 * \0 \t \0 003 \0 \0 \0 % \0 \0 \0 \0 \0 0027100 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0027160 \0 \0 020 @ \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0027200 \0 \0 \0 \0 \0 \0 \0 205 024 " D \b 021 002 \0 \0 0027220 \0 002 p 207 034 023 307 > q 300 \0 \0 \0 030 p 216 0027240 034 363 357 234 213 347 " 202 ( 234 361 317 034 372 ( 242 0027260 212 / 234 201 300 \0 002 \0 002 \0 300 020 H 8 \0 0027300 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 210 300 \0 \0 \0 \0 0027320 \0 205 024 u J \b 212 200 \0 \0 002 211 210 242 2 0027340 \b 202 212 \0 020 \b $ 210 211 " 212 \b " 210 376 0027360 001 \0 377 225 201 $ 202 , 242 212 ( 242 " ( 242 212 0027400 ! 020 200 @ \0 002 \0 002 001 \0 \b \b \0 \0 0027420 \0 \0 \0 020 \0 \0 \0 \0 002 \b \0 \0 \0 \0 \0 0027440 205 > 255 212 \b 207 \b \0 \0 004 232 210 202 2 \b 0027460 004 212 \0 004 $ 271 I 212 \b 210 201 ( 0027500 203 l 242 212 ( 240 " ( 252 Q A 020 @ B \b b 0027520 307 032 q 006 254 q 311 \b 252 307 , j 307 < 212 * 0027540 242 213 342 \b 017 \0 \0 \0 \0 200 024 242 204 \0 @ 0027560 J 210 \0 \0 004 250 201 \f S 313 004 r b \b C 302 0027600 004 251 O 213 317 370 201 0 203 j 242 212 ( 234 0027620 " ( 252 ! B 020 @ G 020 223 ( 246 213 311 262 020 0027640 J \b 373 ( 262 233 ( 220 212 * 224 210 B \b 017 0027660 \0 \0 \0 \0 200 024 q J 200 @ B > 003 300 \b 250 0027700 202 002 R , 210 211 242 \b 200 001 \b 251 H 240 212 \b 0027720 . 210 201 0 203 j 242 362 / 002 " % * 202 020 0027740 J 276 r ( " 371 \b 242 020 L \b 252 ( 242 212 0027760 & 020 211 J 376 001 \0 210 344 210 P 202 \b 017 \0 0030000 \0 \0 \0 200 > ) 252 200 @ @ \b \0 \0 \b 310 204 0030020 002 370 ( 210 210 \0 C 302 \b 273 350 240 212 \b " 0030040 210 201 ( 202 251 242 202 ) 002 " % 024 P 204 020 0030060 B 020 222 ( " 201 \b 242 020 J \b 252 ( 242 212 001 0030100 020 211 E \b P 214 \b 031 257 \0 \0 \0 \0 \0 024 252 0030120 251 \0 @ @ \b \0 \0 020 210 210 " 022 ( 220 212 0030140 \0 004 \0 202 ( 242 212 \b & 210 221 $ 202 251 242 0030160 202 ( 242 " " 024 210 204 020 020 B \b 223 ( 246 211 0030200 \t 242 020 I \b 252 ( 262 232 \b 222 230 205 024 Q 002 0030220 \b " 317 \0 \0 \0 \0 200 024 r F 200 @ @ \0 ` 0030240 002 020 s 357 234 021 307 020 q 302 030 020 \b \b z / 0030260 034 363 350 032 213 356 " 372 250 234 201 310 234 ! 302 024 0030300 210 217 220 020 B \0 z 307 032 q 006 242 020 H 210 252 0030320 ' , j \a \f h 205 " # 342 \b 017 \0 \0 \0 0030340 \0 200 \0 \0 \0 200 \0 002 \0 \0 \0 \0 \0 0030360 \0 \0 \0 002 \b \0 \0 \b \0 376 001 \0 017 345 \0 \0 0030400 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 200 \0 \0 \0 \0 \0 0030420 \0 020 \0 @ \0 \0 \0 \0 \0 \0 200 \0 @ \0 \0 \0 0030440 \b \0 \0 \0 \0 \0 002 \b 017 \0 \0 \0 \0 0030460 \0 \0 \0 \0 \0 200 \0 @ \0 \0 \0 \0 \0 \0 \0 0030500 \0 \0 \0 020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0030520 \0 \0 \0 \0 ` \0 \0 \0 \0 \0 \0 020 \0 @ \0 \0 0030540 \0 \0 \0 \b 200 004 @ \0 \0 \0 \b \0 \0 \0 \0 0030560 001 002 \b 017 \0 \0 376 \0 \0 \0 \0 \0 \0 021 0030600 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0030640 \0 \0 \0 \0 \0 034 001 300 \0 \0 \0 \0 \0 \a \0 003 0030660 200 \0 \0 \0 \b \0 \0 \0 \0 \0 300 001 210 300 017 0030700 \0 \0 \0 \0 \0 \a \0 \a \0 \a \0 \a \0 \a \0 \a 0030720 \0 \a \0 \a \0 \r \0 023 \0 031 \0 037 \0 % \0 + 0030740 \0 1 \0 7 \0 = \0 C \0 I \0 O \0 U \0 [ 0030760 \0 a \0 g \0 m \0 s \0 y \0 177 \0 205 376 \0 0031000 226 i 231 \0 213 \0 221 \0 227 \0 235 \0 243 \0 251 \0 0031020 257 \0 265 \0 273 \0 301 \0 307 \0 315 \0 323 \0 331 \0 0031040 337 \0 345 \0 353 \0 361 \0 367 \0 375 001 003 001 \t 001 0031060 017 001 025 001 033 001 ! 001 ' 001 - 001 3 001 9 001 0031100 ? 001 E 001 K 001 Q 001 W 001 ] 001 c 001 i 001 0031120 o 001 u 001 { 001 201 001 207 001 207 001 215 001 223 001 0031140 231 001 237 001 245 001 253 001 261 001 267 001 275 001 303 001 0031160 311 001 317 001 325 001 333 001 341 001 347 001 355 001 363 001 0031200 371 001 377 002 005 002 \v 002 021 002 027 002 035 002 # 002 0031220 ) 002 / 002 5 002 ; 002 A 377 \0 \0 L o a d 0031240 S i m p l e D i s p l a y T e s 0031260 t . c m \0 373 230 332 \ 364 \0 \0 376 \0 9 030 0031300 C B l d r S i m p l e D i s p 0031320 l a y T e s t S i m p l e D i 0031340 s p l a y S t r e a m G a c h 0031360 a 1 0 S t r i k e \r 377 \0 \0 R e l 0031400 e a s e S i m p l e D i s p l a 0031420 y S t r e a m . c m \0 373 230 334 224 021 0031440 \0 \0 376 \0 ~ p m F t p M a x c 0031460 c o n n / c A l t o s t o r 0031500 e / c S i m p l e D i s p l a 0031520 y S t r e a m . b r ^ \r c 0031540 o n n / c A l t o S o u r c e 0031560 d u m p / c S i m p l e D i 0031600 s p l a y S t r e a m . d m @ 0031620 S i m p l e D i s p l a y S t r 0031640 e a m @ \r 377 \0 \0 S i m p l e D i 0031660 s p l a y S t r e a m . c m \0 373 0031700 230 334 224 027 \0 \0 376 \0 217 1 _ S i m p l 0031720 e D i s p l a y S t r e a m . b 0031740 c p l S i m p l e D i s p l a 0031760 y T e s t . b c p l G a c h a 0032000 1 0 S t r i k e . b r L o a d 0032020 S i m p l e D i s p l a y T e s 0032040 t . c m R e l e a s e S i m p 0032060 l e D i s p l a y S t r e a m . 0032100 c m S i m p l e D i s p l a y 0032120 S t r e a m . c m 374 0032133