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