$ od -c -N 50000 [Indigo]<Spruce>13>SpruceInstall.bcpl!3 0000000 / / S p r u c e I n s t a l l 0000020 . B c p l - - S p r u c e 0000040 S p o o l e r I n s t a l l 0000060 a t i o n \r / / e r r o r s 0000100 2 5 0 \r \r / / g e t " S p 0000120 r u c e . d " w a s t o o 0000140 b i g : o n l y n e e d \r \t 0000160 g e t " S p r u c e P r i n t 0000200 e r s . d " \r \t g e t " S p r 0000220 u c e d o c . d " \r \t g e t " 0000240 s p r u c e M i s c . d " \r g e 0000260 t " S p r u c e F i l e s . d 0000300 " \r g e t " M e n u D e f s . 0000320 d " \r g e t " S p r u c e 0000340 P a r a m s N a m e s . d " \r g 0000360 e t " S p r u c e F i l e s N 0000400 a m e s . d " \r \r e x t e r n a 0000420 l / / d e f i n e d h e r 0000440 e \r \t [ \r \t S p r u c e I n s t 0000460 a l l \r \t M e n u I n i t H e l 0000500 p \r \t ] \r \r e x t e r n a l / 0000520 / e x t e r n a l \r \t [ \r \t / 0000540 / * * * * * * * F u n c t i 0000560 o n s b e t w e e n S p r u 0000600 c e S p o o l a n d S p r u 0000620 c e I n U t i l n o t n e e 0000640 d e d d u r i n g i n s t a 0000660 l l a t i o n \r \t / / * * * * 0000700 * * * ( S o m e o n e I s K n 0000720 o c k i n g t o V a l i d a 0000740 t e S p r u c e F i l e ) \r \t / 0000760 / * * * * * * * L o a d c 0001000 o m m a n d f i l e m u s t 0001020 b e m a i n t a i n e d t 0001040 o r e t a i n t h i s f a 0001060 c t \r / / \t S o m e o n e I s K 0001100 n o c k i n g \r / / \t V a l i d 0001120 a t e S p r u c e F i l e \r \t / 0001140 / * * * * * * * \r \r \t / / S 0001160 p r u c e F i l e s \r \t F o r g 0001200 e t S p r u c e F i l e \r \t I n 0001220 i t S p r u c e F i l e \r \t R e 0001240 s e t S p r u c e F i l e \r \r \t 0001260 / / S p r u c e I n U t i l \r 0001300 \t D i s k O b j e c t \r \t G e t 0001320 P r i n t e r N a m e s \r \t M a 0001340 k e V a l i d S p r u c e F i l 0001360 e \r \t S e t u p D r i v e \r \t S 0001400 t a t u s O f 3 1 s \r \r \t / / 0001420 S p r u c e C h e c k \r \t C h e 0001440 c k P o i n t \r \t L e v e l P o 0001460 s \r \t O p e n C h e c k P o i n 0001500 t F i l e \r \t R e s t o r e F r 0001520 o m C h e c k P o i n t \r \t \r \t 0001540 / / M e n u P a c k a g e \r 0001560 \t / / C r e a t e M e n u D i 0001600 s p l a y S t r e a m \r \t / / 0001620 F i l l B o x \r \t / / G e t S 0001640 t r i n g \r \t / / M e n u S i 0001660 z e \r \t / / S c a n M e n u \r 0001700 \t / / W r i t e B o x \r \t / / 0001720 L o a d e d M e n u s \r \t M 0001740 e n u F i l e s H e l p \r \t M e 0001760 n u P a r a m s H e l p \r \t \r \t 0002000 / / S p r u c e U t i l s \r 0002020 \t C r e a t e F P R D \r \t F S G 0002040 e t X \r \t F S I n i t \r \t F S P 0002060 u t \r \t I n i t R a m \r \t L o 0002100 a d R a m \r \t S p r u c e E r r 0002120 o r \r \t \r \t / / T e m p l a t 0002140 e \r \t P u t T e m p l a t e \r \r 0002160 \t / / T F S \r \t T F S C l o s 0002200 e \r \t T F S I n i t \r \r \t / / 0002220 B F S \r \t B F S C l o s e \r \t \r 0002240 \t / / O S \r \t C a l l S w a t 0002260 \r \t O p e n F i l e \r \t M y F r 0002300 a m e \r \t S h o w D i s p l a y 0002320 S t r e a m \r \t S t r i n g C o 0002340 m p a r e \r \t C o p y S t r i n 0002360 g \r \t Z e r o \r \r \t / / R e a 0002400 d U s e r C m I t e m \r \t R e a 0002420 d U s e r C m I t e m \r \r \t / / 0002440 s t a t i c s \r \t B a n d F i 0002460 l e \r \t B i t M a r g i n A d j 0002500 u s t \t \r \t b r e a k P a g e \r 0002520 \t C a p a b i l i t i e s \r \t C 0002540 h e c k P r A t t r \r \t D e b u 0002560 g S y s t e m \r \t D u t y C y c 0002600 l e \r \t d r i v e 1 D i s k \r \t 0002620 E r r o r F i l e \r \t F a c e t 0002640 s \r \t F o n t F i l e \r \t L a n 0002660 d s c a p e D e v i c e \t \r \t m 0002700 a x Q u e u e d \r \t m e n u \r \t 0002720 m e n u B u f \r \t s e e d \r \r \t 0002740 / / M e n u D a t a \r \t m e n 0002760 u S t r e a m \r \t N u m B i n s 0003000 \r \t O v e r l a y T o p \r \t P a 0003020 p e r D i m e n s i o n B \t \r \t 0003040 P a p e r D i m e n s i o n S \t 0003060 \r \t P a p e r S p e e d I n c h 0003100 e s \t \r \t P e r m a n e n t B o 0003120 t t o m \r \t P o l y g o n R a t 0003140 i o \r \t p r i n t e r D e v i c 0003160 e \t \r \t p r i n t e r F o r w a 0003200 r d \t \r \t p r i n t e r N a m e 0003220 \t \r \t P R a m I m a g e \r \t R e 0003240 s o l u t i o n B \t \r \t R e s o 0003260 l u t i o n S \t \r \t S c a n L e 0003300 n g t h I n c h e s \t \r \t S c a 0003320 n M a r g i n A d j u s t \r \t S 0003340 p o o l F i l e \r \t s p r i n t 0003360 F P R D \r \t s p r u c e F P R D 0003400 \r \t S p r u c e Z o n e \r \t t r 0003420 i d e n t D i s k \r \t t r i d e 0003440 n t U s e d \r \t s t a t u s O f 0003460 3 1 s \r \t U s e r N a m e \r \t / 0003500 / * * * * S e e S p r u c 0003520 e S t a t i c s , S p r u c e 0003540 U t i l s , b e l o w - - 0003560 m o r e m e m o r y f o r 0003600 i n s t a l l a t i o n \r \t M o 0003620 r e L o w ; M o r e H i g h \r 0003640 \t ] \r \r s t a t i c I n s t a 0003660 l l S t a c k S i z e = 2 0 0003700 0 0 \r s t a t i c [ m e n u 0003720 ; m e n u S t r e a m ; m e 0003740 n u B u f ; M e n u I n i t H 0003760 e l p = 0 ; C h a n g e R o u 0004000 t i n e ] \r s t a t i c [ 0004020 e r r o r S p e c s ; f o n 0004040 t S p e c s ; s p o o l S p e 0004060 c s ; b a n d S p e c s ; o 0004100 k T o I n s t a l l ] \r s t r 0004120 u c t u r e S P E C S : [ 0004140 f i l e I d w o r d ; d e v 0004160 I d w o r d ; d e f D e v 0004200 w o r d ; s i z e I d w o r 0004220 d ; d e f S i z e w o r d 0004240 ] \r \r / / \t I n s t a l l a t i 0004260 o n i s a m e n u - d r i 0004300 v e n p r o c e s s , u s i 0004320 n g t h e m e n u p a c k 0004340 a g e c o n t a i n e d i n 0004360 < A l t o > M e n u . d m ( 0004400 K . K n o x , p r o p r i e 0004420 t o r . ) \r / / T h e c o m 0004440 p a n i o n M e n u E d i t 0004460 p r o g r a m , r u n o n 0004500 a d i f f e r e n t d i s k 0004520 , c r e a t e s a n d m a 0004540 i n t a i n s t h e f o l l 0004560 o w i n g f i l e s , \r / / 0004600 w h i c h a r e p a r t o 0004620 f t h e s t a n d a r d S 0004640 p r u c e s o u r c e p a c 0004660 k a g e : \r \r / / \t S p r u c e 0004700 N a m e s . d , S p r u c e T 0004720 a b l e s . b c p l - - d e 0004740 s c r i b e b o t h m e n u 0004760 s ( s e e b e l o w ) \r / / 0005000 \t S p r u c e P a r a m s N a m 0005020 e s . d , S p r u c e P a r a 0005040 m s T a b l e s . b c p l - - 0005060 d e s c r i b e t h e p a 0005100 r a m s m e n u ( s e e b 0005120 e l o w ) \r / / \t S p r u c e F 0005140 i l e s N a m e s . d , S p r 0005160 u c e N a m e s T a b l e s . b 0005200 c p l - - d e s c r i b e 0005220 t h e f i l e c o n f i g . 0005240 m e n u . \r \r / / \t I n s t a 0005260 l l a t i o n i n v o l v e s 0005300 s e t t i n g a n u m b e 0005320 r o f p r i n t i n g a n 0005340 d s p o o l i n g p a r a m 0005360 e t e r s , a n d d e s c r 0005400 i b i n g t h e s i z e s 0005420 a n d l o c a t i o n s \r / / 0005440 o f f i l e s u s e d i 0005460 n t h e s p o o l i n g a 0005500 n d p r i n t i n g p r o c 0005520 e s s . T h e S p r u c e 0005540 o p e r a t i o n s m a n u a 0005560 l c o n t a i n s p i c t u 0005600 r e s o f t h e p a r a m 0005620 e t e r s a n d \r / / c o n 0005640 f i g u r a t i o n m e n u s 0005660 , a l o n g w i t h d e s 0005700 c r i p t i o n s o f t h e 0005720 i r u s e . I t w o u l d 0005740 h a v e b e e n b e t t e 0005760 r i f b o t h m e n u s 0006000 w e r e s i m u l t a n e o u 0006020 s l y \r / / a v a i l a b l e 0006040 , b u t s p a c e c o n s 0006060 i d e r a t i o n s i n t r u 0006100 d e d . T h e m e n u s a 0006120 r e c r e a t e d b y r u 0006140 n n i n g M e n u E d i t t 0006160 o m o d i f y t h e S p r 0006200 u c e \r / / ( c o m p l e t e 0006220 ) m e n u , t h e n b y 0006240 e x t r a c t i n g t h e m 0006260 i n t o t h e S p r u c e P 0006300 a r a m s a n d S p r u c e 0006320 F i l e s m e n u s . I f 0006340 s p a c e l a t e r a l l o 0006360 w s , \r / / t h e y c a n 0006400 b e r e m e r g e d . T h e 0006420 m e n u s a r e p r e s e 0006440 n t e d t o t h e u s e r 0006460 s e q u e n t i a l l y , P 0006500 a r a m s f i r s t . \r / / \t 0006520 E a c h m e n u , a n d i 0006540 t s u n d e r l y i n g i n 0006560 s t a l l a t i o n v a r i a 0006600 b l e s , a r e i n i t i a 0006620 l i z e d f r o m s o m e 0006640 s t a n d a r d d e f a u l t 0006660 s . \r / / T h e n v a l u e 0006700 s p r o d u c e d d u r i n 0006720 g p r e v i o u s i n s t a 0006740 l l a t i o n s e s s i o n s 0006760 a r e o b t a i n e d f r 0007000 o m t h e c h e c k p o i n 0007020 t f i l e , i f i t \r / / 0007040 e x i s t s a n d i s v 0007060 a l i d . T h e s e a r e 0007100 r e f l e c t e d i n t h e 0007120 m e n u s , t h e n t h e 0007140 u s e r i s g i v e n t 0007160 h e o p p o r t u n i t y t 0007200 o c h a n g e \r / / t h e m 0007220 , a c c e p t t h e c u r 0007240 r e n t s e t , o r q u i 0007260 t w i t h o u t a f f e c t 0007300 i n g t h e i n s t a l l a 0007320 t i o n . T h e c o n f i g 0007340 u r a t i o n c a n n o t b 0007360 e \r / / a c c e p t e d ( " 0007400 I n s t a l l " o p e r a t i 0007420 o n ) u n l e s s a l l r 0007440 e q u i r e d f i l e s a r 0007460 e a l l o c a t e d . I n s 0007500 t a l l a t i o n i n v o l v 0007520 e s s t o r i n g t h e \r / 0007540 / n e w v a l u e s b a c 0007560 k i n t o t h e c h e c k 0007600 p o i n t f i l e . \r / / \t T 0007620 h e h a i r i n t h e C 0007640 h a n g e f u n c t i o n s 0007660 i s d u e t o t h e d e 0007700 s i r e t o u s e t h e m 0007720 b o t h t o r e f l e c t 0007740 c u r r e n t v a l u e s \r 0007760 / / d e r i v e d f r o m 0010000 c h e c k p o i n t i n f o r 0010020 m a t i o n o r d u e t o 0010040 c h a n g e s i n o t h e 0010060 r v a l u e s ( e . g . , 0010100 p r i n t e r c h o i c e a 0010120 f f e c t s p a p e r \r / / 0010140 s i z e a n d o r i e n t a 0010160 t i o n , l o o k i n g u p 0010200 a p r e - e x i s t i n g 0010220 f i l e c a u s e s c h a n 0010240 g e s i n d i s p l a y o 0010260 f s i z e a n d d i s k \r 0010300 / / l o c a t i o n ) , a n 0010320 d t o u s e t h e m t o 0010340 r e s p o n d t o k e y b 0010360 o a r d i n p u t . \r \f / / 0010400 - - - - - - - - - - - - - - - - * 0010460 - - - - - - \r l e t S p r u c 0010500 e I n s t a l l ( d o I n s t a 0010520 l l , r u n C f a ) b e \r / 0010540 / - - - - - - - - - - - - - - 0010560 - - - - - - - - - - - - - - - - * 0010620 - - - - - - - - \r \r / / \t A f t 0010640 e r l o a d i n g t h e R 0010660 A M , e l i m i n a t i n g 0010700 i t s s t o r a g e , a n d 0010720 s e t t i n g u p m e m o 0010740 r y s t r u c t u r e v a r 0010760 i a b l e s , \r / / c r e a t 0011000 e , i n t i a l i z e , a n 0011020 d / o r v a l i d a t e t h 0011040 e C h e c k p o i n t f i l 0011060 e , a s n e c e s s a r y . 0011100 I f t h e c h e c k p o 0011120 i n t f i l e s e e m e d \r 0011140 / / i n v a l i d , t o o 0011160 o l d f o r t h e c u r r 0011200 e n t v e r s i o n ( s e e 0011220 v e r s i o n m a n a g e m 0011240 e n t i n S h a r e d S t a 0011260 t i c s a n d i n \r / / O 0011300 p e n C h e c k P o i n t F i l 0011320 e ( ) ) , o r h a d n o t 0011340 e x i s t e d , p r o c e e 0011360 d w i t h t h e i n s t a 0011400 l l a t i o n p r o c e s s . 0011420 P r o c e e d a l s o , i 0011440 f \r / / d o I n s t a l l w 0011460 a s t r u e . O t h e r w i 0011500 s e , r e t u r n a n d c 0011520 o n t i n u e w i t h i n i 0011540 t i a l i z a t i o n . \r / / \t 0011560 I n s t a l l a t i o n p r o 0011600 c e e d s f o r e a c h o 0011620 f t h e m e n u s , a s 0011640 d e s c r i b e d i n t h e 0011660 g e n e r a l c o m m e n t 0011700 s . T h e C h a n g e ( ) \r 0011720 / / f u n c t i o n , c o n 0011740 d i t i o n e d b y I n i t 0011760 M e n u , s i m p l y i n v 0012000 o k e s t h e a p p r o p r 0012020 i a t e C h a n g e . . . ( ) 0012040 f u n c t i o n f o r t h 0012060 e l i s t \r / / s u p p l i 0012100 e d t o i t . K e y b o r 0012120 d i n p u t i s o b t a i 0012140 n e d u s i n g t h e m e 0012160 n u p a c k a g e f u n c t 0012200 i o n S c a n M e n u ( ) . \r 0012220 / / \t O n c e i n s t a l l a 0012240 t i o n i s c o m p l e t e 0012260 , S p r u c e f i n i s h e 0012300 s . ~ ~ C o n s i d e r r 0012320 e t u r n i n g a s u s u a 0012340 l t o r u n S p r u c e 0012360 a s \r / / r e q u e s t e d 0012400 i n t h e c o m m a n d l 0012420 i n e . \r [ \r I 0012440 n i t R a m ( P R a m I m a g e 0012460 , O r b i t R M R ) \r 0012500 O v e r l a y T o p = L o a d R 0012520 a m \t / / B o t t o m o f f 0012540 r e e s t o r a g e f o r 0012560 F S I n i t \r l e t P 0012600 e r m a n e n t T o p = M y 0012620 F r a m e ( ) - I n s t a l l S 0012640 t a c k S i z e \r @ # 3 0012660 3 5 = P e r m a n e n t T o 0012700 p ; P e r m a n e n t B o t t 0012720 o m = P e r m a n e n t T o 0012740 p \r s t a t u s O f 3 1 0012760 s = S t a t u s O f 3 1 s ( 0013000 ) \r / / ( i f a l l 0013020 o w e d & n e c c . ) , c r e 0013040 a t e a n d i n i t . f i 0013060 l e - - i f h a d t o 0013100 i n i t , i n s t a l l i n 0013120 d e p e n d e n t o f r e q 0013140 u e s t \r \r i f O p e n 0013160 C h e c k P o i n t F i l e ( r 0013200 u n C f a ) & n o t d o I 0013220 n s t a l l r e t u r n \r \r 0013240 l e t p N a m e T a b = 0013260 t a b l e [ 0 ; 0 ; 0 ; 0013300 0 ; 0 ] \r l e t p 0013320 N a m e V e c = v e c 1 9 0013340 \r f o r i = 0 t o 0013360 4 d o p N a m e T a b ! i 0013400 = p N a m e V e c + i * 4 0013420 \r G e t P r i n t e r N a 0013440 m e s ( p N a m e T a b ) \r \r 0013460 / / I n i t i a l i z e 0013500 M e n u \r m e n u S t 0013520 r e a m , m e n u B u f = 0013540 0 , 0 \r / / * * * * 0013560 * * s e e d i s c u s s i o 0013600 n a b o u t u n u s e d c 0013620 o d e a b o v e - - g i v 0013640 e s o m e s p a c e b a c 0013660 k \r / / M o r e L o w , 0013700 M o r e H i g h = S o m e 0013720 o n e I s K n o c k i n g , V 0013740 a l i d a t e S p r u c e F i l 0013760 e - 5 / / * * * * * \r 0014000 I n i t M e n u ( M e n u P a 0014020 r a m s H e l p , C h a n g e 0014040 P a r a m ) / / C a l l s 0014060 F S I n i t , a l l o c a t e 0014100 s m e n u s \r S e l e 0014120 c t ( h d 1 ) \r f o r i 0014140 = 0 t o m a x P r i n t 0014160 e r D e v i c e d o [ P u 0014200 t B o x T e m p l a t e ( p t D 0014220 o v e r + i , " $ S " , 0014240 p N a m e T a b ! i ) ] \r 0014260 / / S e t d e f a u l t 0014300 i n s t a l l a t i o n v a 0014320 l u e s ~ ~ s h o u l d o 0014340 b t a i n f r o m d e v i c 0014360 e t y p e - - n o a c c 0014400 e s s , f o r n o w \r 0014420 p r i n t e r D e v i c e = 0014440 p r i n t e r D o v e r \r / / 0014460 \t N o w , s e t u p a 0014500 t a b l e o f d e f a u l t 0014520 p r i n t e r a t t r i b u 0014540 t e s f o r e a c h t y p 0014560 e o f p r i n t e r \r \t l e 0014600 t d e f a u l t T a b = F 0014620 S G e t X ( ( m a x P r i n t e 0014640 r D e v i c e + 1 ) * l e n P r 0014660 A t t r ) \r \t l e t p = d 0014700 e f a u l t T a b \r \t C h e c k 0014720 P r A t t r = d e f a u l t 0014740 T a b / / m a y b e o v 0014760 e r w r i t t e n b y R e s 0015000 t o r e F r o m C h e c k p o i 0015020 n t b e l o w \r \t f o r i 0015040 = 0 t o m a x P r i n t e 0015060 r D e v i c e d o \r \t \t [ \r \t 0015100 \t p > > P r i n t e r A t t r i 0015120 b u t e s . C a p a b i l i t i 0015140 e s = ( t a b l e [ D o v 0015160 e r D e f a u l t ; P e n g u 0015200 i n D e f a u l t ; \r S e q u 0015220 o i a D e f a u l t ; P i m l 0015240 i c o D e f a u l t ; P u f f 0015260 i n D e f a u l t ] ) ! i \r 0015300 \t \t p > > P r i n t e r A t t r 0015320 i b u t e s . P a p e r D i m e 0015340 n s i o n B = ( t a b l e [ 0015360 1 0 6 ; 1 0 6 ; 1 0 6 ; 0015400 8 5 ; 8 5 ] ) ! i \r \t \t p 0015420 > > P r i n t e r A t t r i b u 0015440 t e s . P a p e r D i m e n s i 0015460 o n S = ( t a b l e [ 8 5 0015500 ; 8 5 ; 8 5 ; 1 1 0 ; 1 0015520 1 0 ] ) ! i \r \t \t p > > P r 0015540 i n t e r A t t r i b u t e s . 0015560 P a p e r S p e e d I n c h e s 0015600 = ( t a b l e [ 1 0 2 0 ; 0015620 1 1 0 0 ; 3 4 0 ; 4 0 0 ; 0015640 4 0 0 ] ) ! i \r \t \t p > > 0015660 P r i n t e r A t t r i b u t e 0015700 s . S c a n L e n g t h I n c h 0015720 e s = ( t a b l e [ 1 1 7 0015740 ; 1 2 1 ; 1 1 2 ; 9 5 ; 0015760 1 1 8 ] ) ! i \r \t \t p > > P 0016000 r i n t e r A t t r i b u t e s 0016020 . L a n d s c a p e D e v i c e 0016040 = ( t a b l e [ - 1 ; - 0016060 1 ; - 1 ; 0 ; 0 ] ) ! i 0016100 \r \t \t p > > P r i n t e r A t 0016120 t r i b u t e s . p r i n t e r 0016140 F o r w a r d = ( t a b l e 0016160 [ 0 ; 0 ; 0 ; - 1 ; - 0016200 1 ] ) ! i \r \t \t p > > P r i 0016220 n t e r A t t r i b u t e s . b 0016240 r e a k P a g e = ( t a b l 0016260 e [ - 1 ; - 1 ; - 1 ; - 0016300 1 ; - 1 ] ) ! i \r \t \t p > 0016320 > P r i n t e r A t t r i b u t 0016340 e s . B i t M a r g i n A d j u 0016360 s t = ( t a b l e [ 1 2 0 0016400 ; 2 2 0 ; 1 0 1 ; 1 0 2 ; 0016420 6 3 0 ] ) ! i \r \t \t p > > 0016440 P r i n t e r A t t r i b u t e 0016460 s . S c a n M a r g i n A d j u 0016500 s t = ( t a b l e [ 1 9 0 0016520 ; 1 7 3 0 ; 1 0 4 ; 1 0 5 0016540 ; 5 2 8 ] ) ! i \r \t \t p > 0016560 > P r i n t e r A t t r i b u t 0016600 e s . D u t y C y c l e = ( 0016620 t a b l e [ 9 0 ; 9 8 ; 9 0016640 0 ; 8 7 ; 9 9 ] ) ! i \r 0016660 \t \t p > > P r i n t e r A t t r 0016700 i b u t e s . F a c e t s = 0016720 ( t a b l e [ 3 2 ; 2 2 ; 0016740 3 6 ; 1 2 ; 2 2 ] ) ! i \r 0016760 \t \t p > > P r i n t e r A t t 0017000 r i b u t e s . P o l y g o n R 0017020 a t i o = ( t a b l e [ 2 0017040 4 ; 2 4 ; 2 4 ; 2 4 ; 2 0017060 4 ] ) ! i \r \t \t p > > P r i 0017100 n t e r A t t r i b u t e s . N 0017120 u m B i n s = ( t a b l e [ 0017140 1 ; 2 1 ; 1 ; 1 ; 1 0017160 ] ) ! i \r \t p = p + l e 0017200 n P r A t t r \r \t \t ] \r \t S e t 0017220 P r i n t e r P a r m s ( ) \t / 0017240 / m o v e s p r i n t e r D e 0017260 v i c e s e t i n t o s t 0017300 a t i c s \r \t R e s o l u t i o 0017320 n B , R e s o l u t i o n S 0017340 = 3 8 4 0 , 3 8 4 0 \r 0017360 p r i n t e r N a m e = U 0017400 s e r N a m e \r D e b u 0017420 g S y s t e m = # 4 0 \t / / 0017440 i f / D , d o n ' t a c 0017460 t u a l l y r u n O r b i t 0017500 \r R e s t o r e F r o m 0017520 C h e c k P o i n t ( L E V S h 0017540 a r e d I n s t S t a t i c s , 0017560 L E V I n s t a l l a t i o n 0017600 S t a t i c s , 0 , t r u e 0017620 ) \r l e t d e v = 0017640 s e l e c t o n p r i n t e r 0017660 D e v i c e i n t o [ d e 0017700 f a u l t : 0 \r \t c a s e p 0017720 r i n t e r D o v e r : p t D 0017740 o v e r ; c a s e p r i n t 0017760 e r P e n g u i n : p t P e n 0020000 g u i n ; c a s e p r i n t 0020020 e r S e q u o i a : p t S e q 0020040 u o i a \r \t c a s e p r i n 0020060 t e r P i m l i c o : p t P i 0020100 m l i c o ; c a s e p r i n 0020120 t e r P u f f i n : p t P u f 0020140 f i n ] \r C h a n g e 0020160 P a r a m ( d e v ) \r C 0020200 h a n g e ( t a b l e [ p s 0020220 S ; p s B ; r S ; r B ; 0020240 m a S ; m a B ; l l S ; p 0020260 s ; p n ; d b g ; p m ; 0020300 f p ; b p ; 0 ] ) \r \r 0020320 / / M a i n p a r a m 0020340 e t e r i n s t a l l a t i o 0020360 n l o o p \r w h i l e 0020400 C h a n g e P a r a m ( S c a 0020420 n M e n u ( m e n u ) , t r u 0020440 e ) l o o p / / m a y f 0020460 i n i s h i n s t e a d o f 0020500 r e t u r n i n g \r S 0020520 a v e P r i n t e r P a r m s ( 0020540 ) / / m o v e s l a s t 0020560 c h a n g e s i n t o t a b 0020600 l e f o r p r i n t e r D e 0020620 v i c e \r C h e c k P o 0020640 i n t ( L E V S h a r e d I n s 0020660 t S t a t i c s , L E V I n s 0020700 t a l l a t i o n S t a t i c s 0020720 ) \r F S P u t ( d e f a 0020740 u l t T a b ) \r \r / / 0020760 F i l e C o n f i g u r a t i 0021000 o n s \r I n i t M e n u 0021020 ( M e n u F i l e s H e l p , 0021040 C h a n g e C o n f i g ) \r 0021060 R e s t o r e F r o m C h e 0021100 c k P o i n t ( L E V S h a r e 0021120 d I n s t S t a t i c s , L E 0021140 V I n s t a l l a t i o n S t a 0021160 t i c s , 0 , t r u e ) \r 0021200 S e l e c t ( h d 2 ) \r 0021220 l e t v = t a b l e 0021240 [ f n E r r o r s ; f d E 0021260 r r o r s ; D I S K 3 1 ; f 0021300 s E r r o r s ; - 1 ] ; e 0021320 r r o r S p e c s = v \r 0021340 l e t v = t a b l e 0021360 [ f n F o n t s ; f d F o n 0021400 t s ; - 1 ; f s F o n t s ; 0021420 - 1 ] ; f o n t S p e c s 0021440 = v \r l e t v = 0021460 t a b l e [ f n S p o o l 0021500 ; f d S p o o l ; - 1 ; f 0021520 s S p o o l ; - 1 ] ; s p 0021540 o o l S p e c s = v \r 0021560 l e t v = t a b l e [ 0021600 f n B a n d s ; f d B a n d 0021620 s ; - 1 ; f s B a n d s ; 0021640 - 1 ] ; b a n d S p e c s 0021660 = v \r C h a n g e ( t 0021700 a b l e [ d c M 3 1 ; d c 0021720 T 8 0 ; # 4 0 2 ; 0 ] ) \r 0021740 o k T o I n s t a l l 0021760 = 1 ; O K T o I n s t a l l 0022000 ( ) \r \r w h i l e C h 0022020 a n g e C o n f i g ( S c a n M 0022040 e n u ( m e n u ) , t r u e ) 0022060 l o o p / / m a y f i n 0022100 i s h i n s t e a d o f r 0022120 e t u r n i n g \r \r 0022140 s p r u c e F P R D = C 0022160 r e a t e F P R D ( " S p r u c 0022200 e . B o o t " , t r u e ) / 0022220 / C o m p u t e F P R D s 0022240 ( I n L d , O u t L d a r g 0022260 u m e n t s ) f o r s e l f 0022300 a n d S p r u c e p r i n 0022320 t e r \r u n l e s s s 0022340 p r u c e F P R D d o S p r 0022360 u c e E r r o r ( 2 5 7 ) \r \r 0022400 / / C o m p u t e m a 0022420 x Q u e u e d f r o m L E V 0022440 R u n D o c s c h e c k p o i 0022460 n t c a p a c i t y \r 0022500 l e t c h e c k S i z e = 0022520 L e v e l P o s ( 0 , L E V R 0022540 u n D o c s , t r u e ) - 0022560 L e v e l P o s ( 0 , L E V R 0022600 u n D o c s ) \r l e t 0022620 e n t r y S i z e = 2 * L e 0022640 n C H e c o r d + l e n D o 0022660 c G + l e n S P r u c e F i 0022700 l e \r m a x Q u e u e d 0022720 = c h e c k S i z e / e n t 0022740 r y S i z e \r m a x Q u 0022760 e u e d = m a x Q u e u e d 0023000 - ( m a x Q u e u e d r s 0023020 h i f t 3 ) / / 7 / 8 , 0023040 f o r s a f e t y \r / 0023060 / A n y o t h e r s t a t 0023100 e t o b e i n i t i a l i 0023120 z e d g o e s h e r e . . . 0023140 . . \r \r C h e c k P o i 0023160 n t ( L E V S h a r e d I n s t 0023200 S t a t i c s , L E V I n s t 0023220 a l l a t i o n S t a t i c s ) 0023240 \r f i n i s h \r 0023260 ] \r \r / / - - - - - - - - - - 0023300 - - - - - - - - - - - - - - - - * 0023340 - - - - - - - - - - - - \r a n d 0023360 C h a n g e P a r a m ( b o x 0023400 I d , r e a d F r o m K e y b 0023420 o a r d ; n u m a r g s n a 0023440 ) = v a l o f \r / / - - - 0023460 - - - - - - - - - - - - - - - - * 0023540 - - - \r \r / / \t I n s t a l l a 0023560 t i o n o f p a r a m e t e 0023600 r s , b a s e d o n P a r 0023620 a m s m e n u . C o m p a n 0023640 i o n t o C h a n g e C o n 0023660 f i g , b e l o w . \r / / \t r 0023700 e a d F r o m K e y b o a r d , 0023720 i f t r u e , i d e n t i 0023740 f i e s t h e b o x I d ( 0023760 m e n u b o x i n d e x ) 0024000 a s t h e i n d e p e n d e 0024020 n t v a r i a b l e i n \r / 0024040 / t h e c h a n g e p r o 0024060 c e s s ; d e p e n d e n t 0024100 v a l u e s w i l l b e c 0024120 h a n g e d v i a r e c u r 0024140 s i v e c a l l s w i t h 0024160 r e a d F r o m K e y b o a r d 0024200 f a l s e . \r / / r e a d F 0024220 r o m K e y b o a r d a l s o 0024240 r e q u e s t s , f o r n 0024260 u m e r i c a l a n d s t r 0024300 i n g b o x e s , t h a t 0024320 t h e n e w v a l u e s b 0024340 e r e a d u s i n g G e t 0024360 P a r a m A r g ( ) . \r / / 0024400 C o n s u l t S p r u c e P a 0024420 r a m s N a m e s . d a n d 0024440 t h e p i c t u r e , v i a 0024460 M e n u E d i t , f o r t 0024500 h e m e a n i n g s o f c 0024520 a s e i n d i c e s . \r / / 0024540 C o n s u l t t h e m e n u 0024560 p a c k a g e f o r m e n 0024600 u - r e l a t e d f u n c t i 0024620 o n s n o t f o u n d i n 0024640 t h e u t i l i t i e s a 0024660 t t h e e n d o f t h i 0024700 s m o d u l e . \r / / \t W h e 0024720 n t h e p r i n t e r s e 0024740 l e c t i o n i s c h a n g 0024760 e d , a s e t o f s y s 0025000 t e m - p r o v i d e d d e f 0025020 a u l t s f i l l s a n u 0025040 m b e r o f r e l a t e d \r 0025060 / / b o x e s . ~ ~ C o n 0025100 s i d e r r e m e m b e r i n 0025120 g t h e p r e v i o u s l y 0025140 - i n s t a l l e d v a l u e 0025160 s f o r e a c h p r i n t 0025200 e r t y p e . \r / / \t T w o 0025220 m e n u i t e m s a r e c 0025240 o m m a n d s : " Q u i t " 0025260 ( r e t u r n t o e x e c ) 0025300 a n d " I n s t a l l F i 0025320 l e s " ( g o o n t o n 0025340 e x t m e n u . ) \r [ 0025360 \r i f n a < 2 t h e 0025400 n r e a d F r o m K e y b o a 0025420 r d = f a l s e \r l 0025440 e t s t a t A d r , n a m e 0025460 , s p e c s = n i l , n 0025500 i l , n i l \r s w i t 0025520 c h o n b o x I d i n t o \r 0025540 \t [ \r \t / / P r i n t e r T 0025560 y p e : \r \t c a s e p t D o v 0025600 e r : c a s e p t P i m l i 0025620 c o : c a s e p t S e q u o 0025640 i a : \r \t c a s e p t P u f f 0025660 i n : c a s e p t P e n g u 0025700 i n : \r \t [ c o m p i 0025720 l e i f p t P e n g u i n - p 0025740 t D o v e r n e 4 t h e n 0025760 [ M e n u A l l o c a t i o 0026000 n E r r o r ( ) ] \r \t 0026020 f o r i = p t D o v e r 0026040 t o p t P e n g u i n d o 0026060 S e l e c t ( i ) ; D e s e l 0026100 e c t ( b o x I d ) \r \t 0026120 i f r e a d F r o m K e y b o 0026140 a r d d o S a v e P r i n t 0026160 e r P a r m s ( ) / / s a v 0026200 e o l d v a l u e s \r \t 0026220 l e t d e v I n d e x = 0026240 b o x I d - p t D o v e r \r \t 0026260 / / P e n g u i n a 0026300 c t s l i k e D o v e r , 0026320 f o r n o w \r \t l e t 0026340 d e v T a b = t a b l e 0026360 [ p r i n t e r D o v e r ; 0026400 p r i n t e r P i m l i c o ; 0026420 p r i n t e r S e q u o i a ; 0026440 p r i n t e r P u f f i n ; p 0026460 r i n t e r P e n g u i n ] \r 0026500 \t p r i n t e r D e v i 0026520 c e = d e v T a b ! d e v I 0026540 n d e x \r \t S e t P r i 0026560 n t e r P a r m s ( ) / / 0026600 m o v e i n a t t r i b u 0026620 t e s f o r n e w d e v i 0026640 c e \r \t C h a n g e ( t 0026660 a b l e [ p s B ; p s S ; 0026700 m a S ; m a B ; l l S ; p 0026720 s ; p m ; f p ; b p ; 0 0026740 ] ) \r \t e n d c a 0026760 s e \r \t ] \r \t / / P r 0027000 i n t i n g P a r a m e t e r 0027020 s \r \t c a s e p s B : c a s 0027040 e p s S : c a s e r B : 0027060 c a s e r S : c a s e l l 0027100 S : c a s e m a S : c a s 0027120 e m a B : c a s e p s : 0027140 c a s e d b g : c a s e p 0027160 n : \r \t \t G e t P a r a m A r 0027200 g ( b o x I d , r e a d F r o 0027220 m K e y b o a r d ) ; e n d c 0027240 a s e \r \t / / P r i n t i n g 0027260 O p t i o n s : \r \t c a s e 0027300 p m : L a n d s c a p e D e v 0027320 i c e = L a n d s c a p e D 0027340 e v i c e x o r r e a d F r 0027360 o m K e y b o a r d \r \t \t P u t 0027400 B o x T e m p l a t e ( b o x I 0027420 d , " $ S " , L a n d s c a 0027440 p e D e v i c e ? " L a n d s 0027460 c a p e " , " P o r t r a i t 0027500 " ) ; e n d c a s e \r \t c a s 0027520 e f p : p r i n t e r F o r 0027540 w a r d = p r i n t e r F o 0027560 r w a r d x o r r e a d F r 0027600 o m K e y b o a r d \r \t \t P u t 0027620 B o x T e m p l a t e ( b o x I 0027640 d , " $ S P a g e F i r s 0027660 t " , p r i n t e r F o r w a 0027700 r d ? " F i r s t " , " L a 0027720 s t " ) ; e n d c a s e \r \t c 0027740 a s e b p : \r \t \t b r e a k P 0027760 a g e = b r e a k P a g e 0030000 x o r r e a d F r o m K e y b 0030020 o a r d \r \t \t P u t B o x T e m 0030040 p l a t e ( b o x I d , " $ S 0030060 B r e a k P a g e " , b r e 0030100 a k P a g e ? " " , " N o 0030120 " ) ; e n d c a s e \r \r \t / / 0030140 C o m m a n d s : \r \t c a s e 0030160 c P a r a m Q u i t : I n i 0030200 t M e n u ( 0 ) ; f i n i s h 0030220 \r \t c a s e c P a r a m I n s 0030240 t a l l : r e s u l t i s f 0030260 a l s e / / g o o n \r \r \t 0030300 d e f a u l t : i f b o x I 0030320 d t h e n D e s e l e c t ( 0030340 b o x I d ) / / i g n o r e 0030360 \r \t ] \r r e s u l t i s 0030400 t r u e / / g o o n \r 0030420 ] \r \r \f \r / / - - - - - 0030440 - - - - - - - - - - - - - - - - * 0030520 - \r a n d G e t P a r a m A r 0030540 g ( b o x I d , r e a d F r o 0030560 m K e y b o a r d ) b e \r / / 0030600 - - - - - - - - - - - - - - - 0030620 - - - - - - - - - - - - - - - - * 0030660 - - - - - - - \r \r / / \t U s e 0030700 r o u t i n e s f r o m u t 0030720 i l i t i e s b e l o w a n 0030740 d f r o m m e n u p a c k 0030760 a g e t o o b t a i n ( i 0031000 f r e a d F r o m K e y b o a 0031020 r d ) a n d \r / / c o r r e 0031040 c t l y d i s p l a y c h o 0031060 i c e s f o r n u m e r i c 0031100 a l o r s t r i n g b o x 0031120 e s . \r [ \r l e 0031140 t s t r = r e a d F r o m 0031160 K e y b o a r d ? G e t S t r 0031200 i n g ( B o x ( b o x I d ) , 0031220 0 , S p r u c e Z o n e ) , 0031240 0 \r l e t s t a t A d 0031260 r , p l a c e s , i s O c t 0031300 , s p e c s = n i l , 0 0031320 , f a l s e , n i l \r 0031340 s w i t c h o n b o x I d 0031360 i n t o \r \t [ \r \r \t / / n u m 0031400 b e r s : \r \t c a s e p s B : 0031420 s t a t A d r = l v P a 0031440 p e r D i m e n s i o n B ; d 0031460 o c a s e # 4 0 1 / / * 1 0031500 0 \r \t c a s e p s S : s t a 0031520 t A d r = l v P a p e r D 0031540 i m e n s i o n S ; d o c a s 0031560 e # 4 0 1 \r \t c a s e r B 0031600 : s t a t A d r = l v R 0031620 e s o l u t i o n B ; d o c a 0031640 s e # 4 0 1 \r \t c a s e r 0031660 S : s t a t A d r = l v 0031700 R e s o l u t i o n S ; d o c 0031720 a s e # 4 0 1 \r \t c a s e 0031740 l l S : s t a t A d r = l 0031760 v S c a n L e n g t h I n c h 0032000 e s ; d o c a s e # 4 0 1 \r 0032020 \t c a s e p s : s t a t A d 0032040 r = l v P a p e r S p e e 0032060 d I n c h e s ; d o c a s e 0032100 # 4 0 2 / / * 1 0 0 \r \t c a 0032120 s e d b g : s t a t A d r 0032140 = l v D e b u g S y s t e m 0032160 ; i s O c t = t r u e ; 0032200 d o c a s e # 4 0 0 / / * 0032220 1 \r \t c a s e m a S : s t a 0032240 t A d r = l v S c a n M a 0032260 r g i n A d j u s t ; d o c a 0032300 s e # 4 0 0 \r \t c a s e m a 0032320 B : s t a t A d r = l v 0032340 B i t M a r g i n A d j u s t ; 0032360 d o c a s e # 4 0 0 \r \t c a 0032400 s e # 4 0 2 : p l a c e s 0032420 = 1 \r \t c a s e # 4 0 1 : 0032440 p l a c e s = p l a c e s + 0032460 1 \r \t c a s e # 4 0 0 : \r \t \t 0032500 i f r e a d F r o m K e y b o 0032520 a r d t h e n @ s t a t A d 0032540 r = G e t N u m b e r ( s t 0032560 r , p l a c e s ) \r \t \t u n l 0032600 e s s @ s t a t A d r d o 0032620 @ s t a t A d r = 1 / 0032640 / p r e v e n t s o m e r 0032660 i d i c u l o u s s t u f f \r 0032700 \t \t P u t N u m b e r ( b o x I 0032720 d , @ s t a t A d r , p l a 0032740 c e s , i s O c t ) \r \t \t e n 0032760 d c a s e \r \t / / S t r i n g 0033000 s \r \t c a s e p n : i f r 0033020 e a d F r o m K e y b o a r d 0033040 t h e n [ p r i n t e r N a 0033060 m e = s t r ; s t r = 0033100 0 ] \r \t \t P u t B o x T e m 0033120 p l a t e ( p n , " $ S " , 0033140 p r i n t e r N a m e ) ; e n 0033160 d c a s e \r \r \t d e f a u l t : 0033200 S p r u c e E r r o r ( 2 5 9 0033220 ) \r \t ] \r i f s t r 0033240 t h e n F S P u t ( s t r ) \r 0033260 ] \r \f \r / / - - - - - 0033300 - - - - - - - - - - - - - - - - * 0033360 - \r a n d C h a n g e C o n f 0033400 i g ( b o x I d , r e a d F r 0033420 o m K e y b o a r d ; n u m a 0033440 r g s n a ) = v a l o f \r 0033460 / / - - - - - - - - - - - - - 0033500 - - - - - - - - - - - - - - - - * 0033540 - - - - - - - - - \r \r / / \t I n 0033560 s t a l l a t i o n o f f i 0033600 l e c o n f i g u r a t i o n 0033620 s , b a s e d o n C o n f 0033640 i g s m e n u . C o m p a n 0033660 i o n t o C h a n g e P a r 0033700 a m , b e l o w . \r / / A c 0033720 t i v i t i e s s i m i l a r 0033740 t o C h a n g e P a r a m , 0033760 a b o v e . T h e n u m e 0034000 r i c a l c o l l e c t i n g 0034020 i s s e l f - c o n t a i n 0034040 e d i n t h e f s . . . 0034060 c a s e s \r / / ( n u m b e r 0034100 o f p a g e s s p e c s . 0034120 ) M o s t o f t h e h a 0034140 i r i s d u e t o t h e 0034160 p r o v i s i o n s f o r 0034200 d e f a u l t i n g d e v i c 0034220 e a n d p a g e s i z e \r 0034240 / / s e l e c t i o n s t o 0034260 t h e v a l u e s o b t a 0034300 i n i n g w h e n l a s t 0034320 t h e f i l e s w e r e i 0034340 n s t a l l e d , a n d f o 0034360 r f a l l i n g b a c k i 0034400 n t o l e g a l \r / / d e f 0034420 a u l t c o n f i g u r a t i 0034440 o n s w h e n t h e r a n 0034460 g e o f o p t i o n s i s 0034500 r e d u c e d b y e l i m 0034520 i n a t i n g o n e o r m 0034540 o r e a u x i l i a r y \r / / 0034560 d i s k s f r o m c o n s 0034600 i d e r a t i o n . T h e " 0034620 s p e c s " t a b l e s a r 0034640 e s e t u p w i t h v a 0034660 l u e s p r o m o t i n g t 0034700 h e u s e o f t h e s e \r 0034720 / / d e f a u l t s w h e n 0034740 i n s t a l l a t i o n b e 0034760 g i n , a n d a r e u p d 0035000 a t e d t o r e f l e c t 0035020 t h e a c t u a l v a l u e 0035040 s , o b t a i n e d f r o m 0035060 t h e f i l e s \r / / t h 0035100 e m s e l v e s o r f r o m 0035120 t h e k e y b o a r d , a 0035140 s t h e p r o c e s s p r 0035160 o g r e s s e s . ~ ~ C o n 0035200 s i d e r a t t a c h i n g 0035220 t h e s p e c s t a b l e s 0035240 \r / / t o t h e m e n u 0035260 i t e m s , e l i m i n a t i 0035300 n g m a n y r e p e t i t i 0035320 v e s e t u p o p e r a t i 0035340 o n s . \r / / \t T w o m e n u 0035360 i t e m s a r e c o m m a 0035400 n d s : " Q u i t " - - r 0035420 e t u r n t o e x e c , a 0035440 n d " I n s t a l l " - - 0035460 s a v e n e w l y s e l e c 0035500 t e d \r / / i n s t a l l a t 0035520 i o n v a l u e s a n d q 0035540 u i t . " I n s t a l l " i 0035560 s n o t d i s p l a y e d , 0035600 a n d i t s s e l e c t i 0035620 o n i s n o t o b e y e d 0035640 , u n l e s s t h e \r / / 0035660 c u r r e n t c o n f i g u r 0035700 a t i o n i s c o r r e c t 0035720 a n d c o m p l e t e . \r 0035740 [ \r i f n a < 2 0035760 t h e n r e a d F r o m K e 0036000 y b o a r d = f a l s e \r 0036020 l e t s t a t A d r , 0036040 n a m e , s p e c s = n i 0036060 l , n i l , n i l \r 0036100 s w i t c h o n b o x I d i 0036120 n t o \r \t [ \r \t / / D i s k 0036140 C o n f i g u r a t i o n s : \r 0036160 \t c a s e d c M 3 1 : \r \t \t i 0036200 f s t a t u s O f 3 1 s e q 0036220 2 t h e n [ S e l e c t 0036240 ( b o x I d ) ; e n d c a s e 0036260 ] / / i g n o r e \r \t \t i 0036300 f r e a d F r o m K e y b o a 0036320 r d t h e n s t a t u s O f 0036340 3 1 s = s t a t u s O f 3 1 0036360 s x o r 1 / / 0 o r 0036400 1 \r \t \t t e s t s t a t u s O 0036420 f 3 1 s & S e t u p D r i v e ( 0036440 D I S K 3 1 B , S p r u c e Z 0036460 o n e , t r u e ) t h e n 0036500 D e s e l e c t ( b o x I d ) 0036520 / / a c c e p t \r \t \t o r 0036540 [ i f d r i v e 1 D i s k 0036560 t h e n B F S C l o s e ( d 0036600 r i v e 1 D i s k ) ; S e l e c 0036620 t ( b o x I d ) ; d r i v e 1 D 0036640 i s k , s t a t u s O f 3 1 s = 0036660 0 , 0 ] \r \t \t t e s t r e a 0036700 d F r o m K e y b o a r d t h 0036720 e n d o c a s e # 4 0 2 o 0036740 r e n d c a s e / / a d j 0036760 u s t f i l e s a p p r o p 0037000 r i a t e l y \r \t c a s e d c 0037020 T 8 0 : c o m p i l e t e s t 0037040 T r i d e n t S w i f n o t 0037060 [ d o c a s e # 4 0 1 ] 0037100 i f s o \r \t \t [ \r \t \t t r i d 0037120 e n t U s e d = t r i d e n 0037140 t U s e d x o r r e a d F r 0037160 o m K e y b o a r d \r \t \t i f 0037200 t r i d e n t U s e d & n o t 0037220 t r i d e n t D i s k t h e n 0037240 t r i d e n t D i s k = S 0037260 e t u p D r i v e ( D I S K T 8 0037300 0 , S p r u c e Z o n e , t 0037320 r u e ) \r \t \t t e s t t r i d 0037340 e n t U s e d & t r i d e n t D 0037360 i s k t h e n D e s e l e c 0037400 t ( b o x I d ) \r \t \t o r 0037420 [ i f t r i d e n t D i s k 0037440 t h e n T F S C l o s e ( t 0037460 r i d e n t D i s k ) \r \t \t 0037500 t r i d e n t U s e d 0037520 , t r i d e n t D i s k = 0037540 f a l s e , 0 ; S e l e c t 0037560 ( b o x I d ) ] \r \t \t t e s t 0037600 r e a d F r o m K e y b o a r 0037620 d t h e n d o c a s e # 4 0037640 0 2 o r e n d c a s e \r \t \t 0037660 ] \r \t c a s e # 4 0 2 : C h 0037700 a n g e ( t a b l e [ f n F 0037720 o n t s ; f n E r r o r s ; 0037740 f n S p o o l ; f n B a n d s 0037760 ; 0 ] ) ; e n d c a s e \r 0040000 \r \t / / F i l e V a l i d a 0040020 t i o n s a n d S p e c i f 0040040 i c a t i o n s \r \t c a s e f 0040060 n E r r o r s : s t a t A d r 0040100 , n a m e , s p e c s = 0040120 l v E r r o r F i l e , " S 0040140 p r u c e . E r r o r s " , e 0040160 r r o r S p e c s ; d o c a s 0040200 e # 4 0 7 \r \t c a s e f n F 0040220 o n t s : s t a t A d r , n 0040240 a m e , s p e c s = l v 0040260 F o n t F i l e , " S p r u c 0040300 e . F o n t s " , f o n t S p 0040320 e c s \r \t c a s e # 4 0 7 : \r 0040340 \t \t [ \r \t \t u n l e s s r e a 0040360 d F r o m K e y b o a r d & n o 0040400 t I s S e l e c t e d ( b o x 0040420 I d ) d o d o c a s e # 4 0040440 0 3 \r \t \t S e l e c t ( b o x I 0040460 d ) ; e n d c a s e \r \t \t ] \r 0040500 \t c a s e f n S p o o l : s 0040520 t a t A d r , n a m e , s p 0040540 e c s = l v S p o o l F i 0040560 l e , " S p r u c e . S p o o 0040600 l " , s p o o l S p e c s ; 0040620 d o c a s e # 4 0 3 \r \t c a s 0040640 e f n B a n d s : s t a t A 0040660 d r , n a m e , s p e c s 0040700 = l v B a n d F i l e , " 0040720 S p r u c e . B a n d s " , b 0040740 a n d S p e c s ; d o c a s e 0040760 # 4 0 3 \r \t c a s e # 4 0 3 0041000 : [ \r \t \t l e t d e v , p 0041020 g s = s p e c s > > S P E C 0041040 S . d e f D e v , s p e c s > 0041060 > S P E C S . d e f S i z e \r \t 0041100 \t u n l e s s D i s k O b j e 0041120 c t ( d e v ) d o d e v , 0041140 p g s = - 1 , - 1 \r \t \t i 0041160 f r e a d F r o m K e y b o a 0041200 r d & I s S e l e c t e d ( b o 0041220 x I d ) t h e n \r \t \t \t [ i 0041240 f @ s t a t A d r t h e n 0041260 F o r g e t S p r u c e F i l e 0041300 ( @ s t a t A d r ) ; @ s t a 0041320 t A d r = 0 \r \t \t \t i f 0041340 d e v e q - 1 t h e n 0041360 d e v = D I S K 3 1 ] \r \t 0041400 \t M a k e V a l i d S p r u c e 0041420 F i l e ( s t a t A d r , n a 0041440 m e , p g s , d e v ) \r \t \t 0041460 t e s t @ s t a t A d r i f 0041500 n o t s p e c s > > S P E C S 0041520 . d e f S i z e = - 1 \r \t \t 0041540 i f s o [ s p e c s > > S 0041560 P E C S . d e f S i z e = s 0041600 t a t A d r = > S P r u c e F i 0041620 l e . n u m P a g e s \r \t \t \t s 0041640 p e c s > > S P E C S . d e f D 0041660 e v = s t a t A d r = > S P 0041700 r u c e F i l e . d e v i c e C 0041720 o d e ] \r \t \t C h a n g e C o 0041740 n f i g ( s p e c s > > S P E C 0041760 S . d e v I d ) ; C h a n g e 0042000 C o n f i g ( s p e c s > > S P 0042020 E C S . s i z e I d ) \r \t \t ( @ 0042040 s t a t A d r ? D e s e l e c 0042060 t , S e l e c t ) ( b o x I d 0042100 ) \r \t \t e n d c a s e \r \t \t ] \r 0042120 \f \r / / - - - - - - - C h a 0042140 n g e C o n f i g . . . 0042160 \r \r \t c a s e f s E r r o r s 0042200 : s p e c s , s t a t A d r 0042220 = e r r o r S p e c s , l 0042240 v E r r o r F i l e ; d o c 0042260 a s e # 4 1 0 \r \t c a s e f 0042300 s S p o o l : s p e c s , s 0042320 t a t A d r = s p o o l S p 0042340 e c s , l v S p o o l F i l 0042360 e ; d o c a s e # 4 1 0 \r \t 0042400 c a s e f s B a n d s : s p 0042420 e c s , s t a t A d r = b 0042440 a n d S p e c s , l v B a n 0042460 d F i l e ; d o c a s e # 4 0042500 1 0 \r \t c a s e f s F o n t s 0042520 : s p e c s , s t a t A d r 0042540 = f o n t S p e c s , l v 0042560 F o n t F i l e ; d o c a s 0042600 e # 4 1 0 / / n e v e r 0042620 f r o m k b d \r \t c a s e # 0042640 4 1 0 : \r \t \t [ \r \t \t l e t s 0042660 t r = r e a d F r o m K e y 0042700 b o a r d ? G e t S t r i n 0042720 g ( B o x ( b o x I d ) , 0 , 0042740 S p r u c e Z o n e ) , 0 \r 0042760 \t \t l e t p l a c e s 0043000 , i s O c t = 0 , f a l 0043020 s e \r \t \t l e t c u r S i z e 0043040 = s p e c s > > S P E C S . 0043060 d e f S i z e \r \t \t i f r e a 0043100 d F r o m K e y b o a r d t h 0043120 e n \r \t \t [ S e l e c 0043140 t ( s p e c s > > S P E C S . f 0043160 i l e I d ) ; c u r S i z e 0043200 = G e t N u m b e r ( s t r , 0043220 0 ) ] / / i n v a l i d 0043240 a t e \r \t \t s p e c s > > S P E 0043260 C S . d e f S i z e = c u r 0043300 S i z e \r \t \t t e s t c u r S 0043320 i z e n e - 1 t h e n P 0043340 u t N u m b e r ( b o x I d , 0043360 c u r S i z e , 0 , f a l s 0043400 e ) \r \t \t o r F i l l B 0043420 o x ( B o x ( b o x I d ) , w 0043440 h i t e ) \r \t \t i f s t r t 0043460 h e n F S P u t ( s t r ) \r \t 0043500 \t e n d c a s e \r \t \t ] \r \t c a 0043520 s e f d E r r o r s : s p e 0043540 c s , s t a t A d r = e r 0043560 r o r S p e c s , l v E r r 0043600 o r F i l e ; d o c a s e # 0043620 4 0 4 \r \t c a s e f d F o n t 0043640 s : s p e c s , s t a t A d 0043660 r = f o n t S p e c s , l 0043700 v F o n t F i l e ; d o c a 0043720 s e # 4 0 4 \r \t c a s e f d 0043740 S p o o l : s p e c s , s t 0043760 a t A d r = s p o o l S p e 0044000 c s , l v S p o o l F i l e 0044020 ; d o c a s e # 4 0 4 \r \t c 0044040 a s e f d B a n d s : s p e 0044060 c s , s t a t A d r = b a 0044100 n d S p e c s , l v B a n d 0044120 F i l e ; d o c a s e # 4 0 0044140 4 \r \t c a s e # 4 0 4 : [ \r 0044160 \t l e t C y c l e D i 0044200 s k ( c h ) = s e l e c t o 0044220 n c h i n t o \r \t \t [ c a 0044240 s e D I S K 3 1 : D I S K 3 0044260 1 B ; c a s e D I S K 3 1 B 0044300 : D I S K T 8 0 ; d e f a u 0044320 l t : D I S K 3 1 ] \r \t 0044340 l e t c u r C h o i c e 0044360 = s p e c s > > S P E C S . d 0044400 e f D e v \r \t l e t n 0044420 e x t C h o i c e = r e a d 0044440 F r o m K e y b o a r d ? C y 0044460 c l e D i s k ( c u r C h o i c 0044500 e ) , c u r C h o i c e \r \t 0044520 u n t i l D i s k O b j 0044540 e c t ( n e x t C h o i c e ) 0044560 d o n e x t C h o i c e = 0044600 C y c l e D i s k ( n e x t C h 0044620 o i c e ) \r \t s p e c s 0044640 > > S P E C S . d e f D e v = 0044660 n e x t C h o i c e \r \t 0044700 P u t B o x T e m p l a t e ( 0044720 b o x I d , " $ S " , s e l 0044740 e c t o n n e x t C h o i c e 0044760 i n t o \r \t \t [ c a s e D 0045000 I S K 3 1 : " D P 0 " ; c a 0045020 s e D I S K 3 1 B : " D P 1 0045040 " ; c a s e D I S K T 8 0 : 0045060 " T r i d e n t " ] ) \r \t 0045100 l e t f i l e I d = 0045120 s p e c s > > S P E C S . f i l 0045140 e I d \r \t i f r e a d 0045160 F r o m K e y b o a r d & n e x 0045200 t C h o i c e n e c u r C h 0045220 o i c e t h e n \r \t \t [ s p 0045240 e c s > > S P E C S . d e f S i 0045260 z e = - 1 ; S e l e c t ( 0045300 f i l e I d ) ; C h a n g e C 0045320 o n f i g ( f i l e I d ) ] \r 0045340 \t e n d c a s e \r \t 0045360 ] \r \t / / c o m m a n d s 0045400 : \r \t c a s e c C o n f i g I 0045420 n s t a l l : t e s t O K T 0045440 o I n s t a l l ( ) d o c a s 0045460 e # 4 2 0 o r d o c a s e 0045500 # 4 0 1 / / i g n o r e \r 0045520 \t c a s e c C o n f i g Q u i 0045540 t : o k T o I n s t a l l = 0045560 f a l s e \r \t c a s e # 4 2 0045600 0 : \r \t \t I n i t M e n u ( 0 ) 0045620 ; \r \t \t c o m p i l e i f 0045640 T r i d e n t S w t h e n [ 0045660 i f t r i d e n t U s e d 0045700 t h e n T F S C l o s e ( t r 0045720 i d e n t D i s k ) ] \r \t \t i 0045740 f d r i v e 1 D i s k t h e 0045760 n B F S C l o s e ( d r i v e 0046000 1 D i s k ) \r \t \t t e s t o k 0046020 T o I n s t a l l r e s u l t 0046040 i s f a l s e o r f i n i 0046060 s h \r \t d e f a u l t : i f 0046100 b o x I d t h e n D e s e 0046120 l e c t ( b o x I d ) / / i 0046140 g n o r e \r \t ] \r i f 0046160 r e a d F r o m K e y b o a r d 0046200 t h e n O K T o I n s t a l 0046220 l ( ) \r r e s u l t i s 0046240 t r u e / / g o o n \r 0046260 ] \r \r \r / / - - - - - - 0046300 - - - - - - - - - - - - - - - - * 0046360 \r a n d O K T o I n s t a l l 0046400 ( ) = v a l o f \r / / - - 0046420 - - - - - - - - - - - - - - - - * 0046500 - - - - \r \r / / \t C a l l e d 0046520 w h e n s t a t e o f a n 0046540 y f i l e h a s c h a n g 0046560 e d . D e t e r m i n e s i 0046600 f a l l r e q u i s i t e 0046620 f i l e s e x i s t a n d 0046640 h a v e l e g a l \r / / S p 0046660 r u c e F i l e s t r u c t u 0046700 r e s . A d j u s t s t h e 0046720 s t a t e o f t h e " I 0046740 N S T A L L " m e n u c o m 0046760 m a n d b a s e d o n t h 0047000 e r e s u l t . \r \t [ \r \t l e 0047020 t f i l e s = t a b l e 0047040 [ f n E r r o r s ; f n F o 0047060 n t s ; f n S p o o l ; f n 0047100 B a n d s ; 0 ] \r \t l e t 0047120 f i l e = n i l \r \t l e t 0047140 r e s = v a l o f [ \r \t 0047160 f o r i = 1 t o 9 0047200 9 d o t e s t v a l o f 0047220 [ f i l e = f i l e s ! i 0047240 ; r e s u l t i s f i l e 0047260 ] i f n o t b r e a k \r \t 0047300 i f s o [ i f I 0047320 s S e l e c t e d ( f i l e ) 0047340 r e s u l t i s f a l s e ] 0047360 \r \t r e s u l t i s t r 0047400 u e ] \r \t i f r e s n e 0047420 o k T o I n s t a l l t h e n 0047440 \r \t \t P u t B o x T e m p l a t 0047460 e ( c C o n f i g I n s t a l l 0047500 , " $ S " , r e s ? " I N 0047520 S T A L L " , " " ) \r \t o k T 0047540 o I n s t a l l = r e s \r \t 0047560 r e s u l t i s r e s \r \t ] \r 0047600 \r \f \r / / - - - - - - - - - - 0047620 - - - - - - - - I n s t a l l 0047640 a t i o n U t i l i t i e s 0047660 - - - - - - - - - - - - - - - - 0047700 - \r / / - - - - - - - - - - - 0047720 - - - - - - - - - - - - - - - - * 0047760 - - - - - - - - - - - \r a n d 0050000 I n i t M e n u ( h e l p R o u 0050020 t i n e , c h a n g e R o u t 0050040 i n e ) b e \r / / - - - - - 0050060 - - - - - - - - - - - - - - - - * 0050140 - \r \r / / \t h e l p R o u t i n 0050160 e ( ) i s o n e o r t h 0050200 e o t h e r o f t h e M 0050220 e n u I n i t H e l p r o u t 0050240 i n e s c r e a t e d b y 0050260 t h e m e n u p a c k a g e 0050300 ; t h e y \r / / h a v e b 0050320 e e n m a n u a l l y e d i 0050340 t e d t o h a v e d i f f 0050360 e r e n t n a m e s s o t 0050400 h a t b o t h m e n u s c 0050420 a n b e s i m u l t a n e o 0050440 u s l y l o a d e d . \r / / 0050460 c h a n g e R o u t i n e ( ) 0050500 i s o n e o f t h e t w 0050520 o a b o v e . D e l e t e 0050540 a n y p r e v i o u s m e 0050560 n u a n d i t s b u f f e 0050600 r s p a c e , c r e a t e 0050620 t h e \r / / n e w o n e , 0050640 s e t u p t h e c h a n g 0050660 e R o u t i n e ( ) f o r u 0050700 s e b y t h e C h a n g e 0050720 ( ) f u n c t i o n . R e l 0050740 e a s e a n y p r e v i o u 0050760 s m e n u ' s \r / / m e n u 0051000 d e s c r i p t i o n t o 0051020 S p r u c e Z o n e \r [ 0051040 \r i f m e n u S t r e 0051060 a m t h e n S h o w D i s p 0051100 l a y S t r e a m ( m e n u S t 0051120 r e a m , D S d e l e t e ) \r 0051140 i f M e n u I n i t H 0051160 e l p t h e n O v e r l a y 0051200 T o p = M e n u I n i t H e 0051220 l p \r F S I n i t ( ) \r 0051240 M e n u D a t a , M e 0051260 n u I n i t H e l p = 0 , 0051300 0 ; u n l e s s h e l p R o 0051320 u t i n e r e t u r n ; M e 0051340 n u I n i t H e l p = h e l 0051360 p R o u t i n e \r l e t 0051400 l e n M e n u = M e n u S 0051420 i z e ( ) + 1 / / l o o k s 0051440 l i k e C r e a t e M e n u 0051460 D i s p l a y S t r e a m i s 0051500 g o i n g t o e v e n w 0051520 o r d a l i g n i t \r 0051540 m e n u B u f = F S G e t 0051560 X ( l e n M e n u ) \r m 0051600 e n u S t r e a m = C r e a 0051620 t e M e n u D i s p l a y S t r 0051640 e a m ( m e n u B u f , l e n 0051660 M e n u ) \r m e n u = 0051700 M e n u D a t a > > D A T A . 0051720 m e n u \r S h o w D i s 0051740 p l a y S t r e a m ( m e n u S 0051760 t r e a m ) \r C h a n g 0052000 e R o u t i n e = c h a n g 0052020 e R o u t i n e \r ] \r \r 0052040 / / - - - - - - - - - - - - - 0052060 - - - - - - - - - - - - - - - - * 0052120 - - - - - - - - - \r a n d C h 0052140 a n g e ( p a r a m s ) b e \r 0052160 / / - - - - - - - - - - - - - 0052200 - - - - - - - - - - - - - - - - * 0052240 - - - - - - - - - \r / / \t C h a 0052260 n g e R o u t i n e i s s e 0052300 l e c t e d f r o m { C h a 0052320 n g e P a r a m ( ) , C h a n 0052340 g e C o n f i g ( ) } b y I 0052360 n i t M e n u ( ) c a l l . \r 0052400 / / E x e c u t e t h e s 0052420 e l e c t e d r o u t i n e 0052440 f o r a l l b o x I d s ( 0052460 m e n u b o x i n d i c e s 0052500 ) i n a n i l - t e r m i 0052520 n a t e d v e c t o r . \r 0052540 f o r i = 0 t o 9 0052560 9 9 d o [ l e t p a r a 0052600 m = p a r a m s ! i ; u n 0052620 l e s s p a r a m b r e a k 0052640 ; C h a n g e R o u t i n e ( 0052660 p a r a m ) ] \r \r / / - - - 0052700 - - - - - - - - - - - - - - - - * 0052760 - - - \r a n d G e t N u m b e 0053000 r ( s t r , p l a c e s ) = 0053020 v a l o f \r / / - - - - - - 0053040 - - - - - - - - - - - - - - - - * 0053120 \r \r / / \t R e t u r n s t h e 0053140 n u m e r i c a l v a l u e 0053160 o f t h e s t r i n g , 0053200 c h a n g i n g t o o c t a 0053220 l i f a n y o f a n u 0053240 m b e r o f o p t i o n a l 0053260 s y n t a x \r / / t r i g g 0053300 e r s i s p r e s e n t . 0053320 P l a c e s i n d i c a t e s 0053340 t h e l o c a t i o n o f 0053360 t h e ( d e c i m a l ) f 0053400 i x e d p o i n t f o r t 0053420 h e n u m b e r . T h e \r / 0053440 / n u m b e r i s r e t u 0053460 r n e d a n d s t o r e d 0053500 a s " n u m b e r * 1 0 ^ p l 0053520 a c e s " . ~ ~ C o n s i d 0053540 e r u s i n g E v a l P a r 0053560 a m ? \r \t [ \r \t l e t d e c , 0053600 o c t , c h a r , w a s D 0053620 o t , i s D e c = 0 , 0 0053640 , n i l , f a l s e , t r 0053660 u e \r \t f o r i = 1 t o 0053700 s t r > > S T R . l e n g t h 0053720 d o \r \t s w i t c h o 0053740 n v a l o f [ c h a r = 0053760 s t r > > S T R . c h a r ^ i 0054000 ; r e s u l t i s c h a r 0054020 ] i n t o \r \t \t [ \r \t \t c a s 0054040 e $ # : i s D e c = f a 0054060 l s e ; e n d c a s e \r \t \t c 0054100 a s e $ 0 t o $ 7 : i f 0054120 p l a c e s < 0 l o o p ; 0054140 o c t = o c t l s h i f t 0054160 3 + ( c h a r - $ 0 ) \r \t 0054200 \t c a s e $ 8 t o $ 9 : 0054220 i f p l a c e s < 0 l o o p 0054240 ; d e c = d e c * 1 0 + ( 0054260 c h a r - $ 0 ) \r \t \t \t i f w 0054300 a s D o t t h e n p l a c e 0054320 s = p l a c e s - 1 ; e n 0054340 d c a s e \r \t \t c a s e $ . : 0054360 w a s D o t = t r u e ; 0054400 p l a c e s = p l a c e s - 0054420 1 ; e n d c a s e \r \t \t c a s 0054440 e $ B : c a s e $ b : c 0054460 a s e $ Q : i s D e c = 0054500 f a l s e ; e n d c a s e \r \t 0054520 \t d e f a u l t : l o o p / 0054540 / t a k e a n y t h i n g ! 0054560 \r \t \t ] \r \t u n l e s s w a s 0054600 D o t d o p l a c e s = 0054620 p l a c e s - 1 \r \t u n l e s s 0054640 i s D e c d o d e c = 0054660 o c t \r \t f o r i = 0 t 0054700 o p l a c e s d o d e c = 0054720 d e c * 1 0 \r \t r e s u l t i s 0054740 d e c \r \t ] \r \r \r / / - - - 0054760 - - - - - - - - - - - - - - - - * 0055040 - - - \r a n d P u t N u m b e 0055060 r ( b o x I d , v a l u e , 0055100 p l a c e s , i s O c t ) b 0055120 e \r / / - - - - - - - - - - - 0055140 - - - - - - - - - - - - - - - - * 0055200 - - - - - - - - - - - \r \r / / \t 0055220 W r i t e s v a l u e a s 0055240 s o l e o c c u p a n t o f 0055260 s p e c i f i e d b o x , 0055300 w i t h p l a c e s p l a c 0055320 e s , c o n s i d e r e d o 0055340 c t a l i f i s O c t . \r \t 0055360 [ \r \t l e t f r a c t = 0 0055400 ; p l a c e s = s e l e c 0055420 t o n p l a c e s i n t o 0055440 [ c a s e 0 : 1 ; c a s 0055460 e 1 : 1 0 ; c a s e 2 : 0055500 1 0 0 ] \r \t f r a c t = 0055520 v a l u e r e m p l a c e s 0055540 ; v a l u e = v a l u e / 0055560 p l a c e s \r \t P u t B o x T e 0055600 m p l a t e ( b o x I d , ( i 0055620 s O c t ? " # $ U O " , n o 0055640 t f r a c t ? " $ D " , p 0055660 l a c e s e q 1 0 0 ? " $ 0055700 D . $ 2 F 0 D " , " $ D . $ D 0055720 " ) , v a l u e , f r a c t 0055740 ) \r \t ] \r \f \r / / - - - - - - 0055760 - - - - - - - - - - - - I n s 0056000 t a l l a t i o n U t i l i t 0056020 i e s ( m e n u - s p e c i f 0056040 i c ) . . . \r / / - - - 0056060 - - - - - - - - - - - - - - - - * 0056140 - - - \r a n d I s S e l e c t 0056160 e d ( b o x I d ) = ( B o x 0056200 ( b o x I d ) ) > > B O X . s e 0056220 l e c t e d n e 0 / / I 0056240 s b o x s e l e c t e d ? 0056260 ( s e e b e l o w ) \r / / - 0056300 - - - - - - - - - - - - - - - - * 0056360 - - - - - \r \r / / - - - - - - 0056400 - - - - - - - - - - - - - - - - * 0056460 \r a n d S e l e c t ( b o x I 0056500 d ) b e \r / / - - - - - - - 0056520 - - - - - - - - - - - - - - - - * 0056560 - - - - - - - - - - - - - - - \r 0056600 / / \t F o r c e b o x t o 0056620 b e s e l e c t e d ( s e e 0056640 m e n u d o c u m e n t a t 0056660 i o n f o r d e f i n i t i 0056700 o n ) \r \t [ \r \t i f I s S e l 0056720 e c t e d ( b o x I d ) r e t 0056740 u r n \r \t l e t b o x = B 0056760 o x ( b o x I d ) \r \t b o x > > 0057000 B O X . s e l e c t e d = t 0057020 r u e \r \t F i l l B o x ( b o x 0057040 , 0 ) \r \t ] \r \r / / - - - - 0057060 - - - - - - - - - - - - - - - - * 0057140 - - \r a n d D e s e l e c t ( 0057160 b o x I d ) b e \r / / - - - 0057200 - - - - - - - - - - - - - - - - * 0057260 - - - \r / / \t F o r c e b o x 0057300 t o b e d e s e l e c t e 0057320 d \r \t [ \r \t u n l e s s I s S 0057340 e l e c t e d ( b o x I d ) r 0057360 e t u r n \r \t l e t b o x = 0057400 B o x ( b o x I d ) \r \t b o x 0057420 > > B O X . s e l e c t e d = 0057440 f a l s e \r \t F i l l B o x ( 0057460 b o x , 0 ) \r \t ] \r \r / / - 0057500 - - - - - - - - - - - - - - - - * 0057560 - - - - - \r a n d P u t B o x 0057600 T e m p l a t e ( b o x I d , 0057620 s t r , a , b , c , d , 0057640 e , f , g ) b e \r / / 0057660 - - - - - - - - - - - - - - - - * 0057740 - - - - - - \r / / \t U s i n g 0057760 a s i m p l e s t r i n g 0060000 s t r e a m , u s e P u t T 0060020 e m p l a t e t o c o n s t 0060040 r u c t a b o x ' s c o n 0060060 t e n t s \r \t [ \r \t l e t P ( 0060100 s , c ) b e \r \t [ l e 0060120 t s t = s > > S T . p a r 0060140 1 ; l e t l n = s t > > 0060160 S T R . l e n g t h + 1 ; s t 0060200 > > S T R . l e n g t h = l 0060220 n ; s t > > S T R . c h a r ^ 0060240 l n = c ] \r \t D e s e l e 0060260 c t ( b o x I d ) \r \t l e t b 0060300 o x = B o x ( b o x I d ) \r 0060320 \t F i l l B o x ( b o x , w h 0060340 i t e ) \r \t l e t v = v e 0060360 c 2 0 \r \t v ! 0 = 0 \r \t l 0060400 e t s = v e c 1 0 ; Z 0060420 e r o ( s , 1 0 ) ; s > > S 0060440 T . p u t s = P ; s > > S 0060460 T . p a r 1 = v \r \t P u t T 0060500 e m p l a t e ( s , s t r , 0060520 a , b , c , d , e , f 0060540 , g ) \r \t i f v > > S T R . 0060560 l e n g t h t h e n W r i t 0060600 e B o x ( b o x , v ) \r \t ] \r 0060620 \r / / - - - - - - - - - - - - 0060640 - - - - - - - - - - - - - - - - * 0060700 - - - - - - - - - - \r a n d B 0060720 o x ( b o x I d ) = m e n u 0060740 > > M E N U . b o x ^ b o x I d 0060760 / / s e e m e n u p k g 0061000 . R e t u r n b o x c o r 0061020 r e s p o n d i n g t o b o 0061040 x I d \r / / - - - - - - - - - 0061060 - - - - - - - - - - - - - - - - * 0061120 - - - - - - - - - - - - - \r \f \r 0061140 / / t h e s e p r o b a b l y 0061160 b e l o n g i n S p r u c 0061200 e i n U t i l s \r / / - - - - 0061220 - - - - - - - - - - - - - - - - * 0061300 - - \r a n d S e t P r i n t e 0061320 r P a r m s ( ) b e \r / / - 0061340 - - - - - - - - - - - - - - - - * 0061420 - - - - - \r \t [ \r \t l e t v 0061440 = C h e c k P r A t t r \r \t l 0061460 e t p = p r i n t e r D e 0061500 v i c e \r \t v = v + p * 0061520 l e n P r A t t r \r \t C a p a b 0061540 i l i t i e s = v > > P r i 0061560 n t e r A t t r i b u t e s . C 0061600 a p a b i l i t i e s \r \t P 0061620 a p e r D i m e n s i o n B = 0061640 v > > P r i n t e r A t t r i 0061660 b u t e s . P a p e r D i m e n 0061700 s i o n B \r \t P a p e r D i m 0061720 e n s i o n S = v > > P r i 0061740 n t e r A t t r i b u t e s . P 0061760 a p e r D i m e n s i o n S \r 0062000 \t P a p e r S p e e d I n c h e 0062020 s = v > > P r i n t e r A t 0062040 t r i b u t e s . P a p e r S p 0062060 e e d I n c h e s \r \t S c a n 0062100 L e n g t h I n c h e s = v 0062120 > > P r i n t e r A t t r i b u 0062140 t e s . S c a n L e n g t h I n 0062160 c h e s \r \t L a n d s c a p e 0062200 D e v i c e = v > > P r i n 0062220 t e r A t t r i b u t e s . L a 0062240 n d s c a p e D e v i c e \r 0062260 \t p r i n t e r F o r w a r d 0062300 = v > > P r i n t e r A t t r 0062320 i b u t e s . p r i n t e r F o 0062340 r w a r d \r \t b r e a k P a 0062360 g e = v > > P r i n t e r A 0062400 t t r i b u t e s . b r e a k P 0062420 a g e \r \t B i t M a r g i n 0062440 A d j u s t = v > > P r i n 0062460 t e r A t t r i b u t e s . B i 0062500 t M a r g i n A d j u s t \r 0062520 \t S c a n M a r g i n A d j u s 0062540 t = v > > P r i n t e r A t 0062560 t r i b u t e s . S c a n M a r 0062600 g i n A d j u s t \r \t D u t 0062620 y C y c l e = v > > P r i n 0062640 t e r A t t r i b u t e s . D u 0062660 t y C y c l e \r \t F a c e t 0062700 s = v > > P r i n t e r A t 0062720 t r i b u t e s . F a c e t s 0062740 \r \t P o l y g o n R a t i o 0062760 = v > > P r i n t e r A t t r 0063000 i b u t e s . P o l y g o n R a 0063020 t i o \r \t N u m B i n s = 0063040 v > > P r i n t e r A t t r i 0063060 b u t e s . N u m B i n s \r \t 0063100 ] \r \r / / - - - - - - - - - - 0063120 - - - - - - - - - - - - - - - - * 0063160 - - - - - - - - - - - - \r a n d 0063200 S a v e P r i n t e r P a r m 0063220 s ( ) b e \r / / - - - - - - 0063240 - - - - - - - - - - - - - - - - * 0063320 \r \t [ \r \t l e t v = C h e 0063340 c k P r A t t r \r \t l e t p 0063360 = p r i n t e r D e v i c e \r 0063400 \t v = v + p * l e n P r 0063420 A t t r \r \t v > > P r i n t e r 0063440 A t t r i b u t e s . C a p a b 0063460 i l i t i e s = C a p a b i 0063500 l i t i e s \r \t v > > P r i 0063520 n t e r A t t r i b u t e s . P 0063540 a p e r D i m e n s i o n B = 0063560 P a p e r D i m e n s i o n B 0063600 \r \t v > > P r i n t e r A t t 0063620 r i b u t e s . P a p e r D i m 0063640 e n s i o n S = P a p e r D 0063660 i m e n s i o n S \r \t v > > P 0063700 r i n t e r A t t r i b u t e s 0063720 . P a p e r S p e e d I n c h e 0063740 s = P a p e r S p e e d I n 0063760 c h e s \r \t v > > P r i n t e 0064000 r A t t r i b u t e s . S c a n 0064020 L e n g t h I n c h e s = S 0064040 c a n L e n g t h I n c h e s \r 0064060 \t v > > P r i n t e r A t t r 0064100 i b u t e s . L a n d s c a p e 0064120 D e v i c e = L a n d s c a 0064140 p e D e v i c e \r \t v > > P 0064160 r i n t e r A t t r i b u t e s 0064200 . p r i n t e r F o r w a r d 0064220 = p r i n t e r F o r w a r d 0064240 \r \t v > > P r i n t e r A t 0064260 t r i b u t e s . b r e a k P a 0064300 g e = b r e a k P a g e \r 0064320 \t v > > P r i n t e r A t t r 0064340 i b u t e s . B i t M a r g i n 0064360 A d j u s t = B i t M a r g 0064400 i n A d j u s t \r \t v > > P 0064420 r i n t e r A t t r i b u t e s 0064440 . S c a n M a r g i n A d j u s 0064460 t = S c a n M a r g i n A d 0064500 j u s t \r \t v > > P r i n t 0064520 e r A t t r i b u t e s . D u t 0064540 y C y c l e = D u t y C y 0064560 c l e \r \t v > > P r i n t e r 0064600 A t t r i b u t e s . F a c e t 0064620 s = F a c e t s \r \t v > 0064640 > P r i n t e r A t t r i b u t 0064660 e s . P o l y g o n R a t i o 0064700 = P o l y g o n R a t i o \r 0064720 \t v > > P r i n t e r A t t r 0064740 i b u t e s . N u m B i n s = 0064760 N u m B i n s \r \t ] \r \r \f \r 0065000 / / - - - - - - - H i s t o 0065020 r y . . . \r \r / / D C S 0065040 , S e p t e m b e r 6 , 1 0065060 9 7 8 4 : 5 9 P M , d e 0065100 r i v e d f r o m n o n - d 0065120 i s p l a y v e r s i o n \r / 0065140 / S e p t e m b e r 7 , 1 0065160 9 7 8 9 : 2 4 P M , m o 0065200 r e \r / / S e p t e m b e r 0065220 7 , 1 9 7 8 1 0 : 0 7 P 0065240 M , s y n t a x e r r o r s 0065260 \r / / S e p t e m b e r 8 , 0065300 1 9 7 8 2 : 5 8 P M , 0065320 r e p a i r n u m b e r g e 0065340 t , o c t a l d i s p l a y 0065360 \r / / S e p t e m b e r 9 , 0065400 1 9 7 8 2 : 3 0 P M , 0065420 a d d f i l e s t u f f \r / 0065440 / S e p t e m b e r 1 1 , 0065460 1 9 7 8 1 0 : 4 9 A M , 0065500 s p l i t m e n u s ( s o b 0065520 ) f o r s p a c e r e a s 0065540 o n s , f i x s t r i n g 0065560 i n p u t b u g \r / / S e p 0065600 t e m b e r 1 2 , 1 9 7 8 0065620 6 : 5 3 A M , r e p a i r 0065640 l i n g e r i n g p r o b l 0065660 e m s \r / / S e p t e m b e r 0065700 1 4 , 1 9 7 8 1 2 : 2 5 0065720 P M , a l l o w S P r u c 0065740 e F i l e s t o u s e t h 0065760 e i r d e f a u l t d e v i 0066000 c e s \r / / S e p t e m b e r 0066020 1 8 , 1 9 7 8 1 0 : 2 9 0066040 A M , c h a n g e i n F 0066060 P R D i n s t a l l a t i o n 0066100 \r / / S e p t e m b e r 1 9 0066120 , 1 9 7 8 1 : 2 4 P M , 0066140 f o r m a t , d o c u m e n 0066160 t \r / / S e p t e m b e r 2 0066200 1 , 1 9 7 8 3 : 4 5 P M 0066220 , c o n t r i b u t e m e n 0066240 u s p e c t o s t o r a g 0066260 e a f t e r u s e . \r / / 0066300 O c t o b e r 1 7 , 1 9 7 8 0066320 2 : 5 5 P M , t u r n p 0066340 u f f i n o n . B W B \r / / 0066360 O c t o b e r 1 9 , 1 9 7 0066400 8 1 0 : 5 7 A M , c o n 0066420 t r i b u t e u n u s e d r 0066440 u n t i m e c o d e t o s 0066460 t o r a g e , r i g h t a w 0066500 a y \r / / N o v e m b e r 1 0066520 0 , 1 9 7 8 1 0 : 3 1 A 0066540 M , i n c r e a s e i n s t 0066560 a l l a t i o n s t a c k s 0066600 i z e \r / / f i r s t c u 0066620 t w i t h P r i n t e r A t 0066640 t r i b u t e s t u f f \r / / 0066660 M a r c h 7 , 1 9 7 9 0066700 1 1 : 4 1 A M c o r r e c t 0066720 p u f f i n i n s t a l l 0066740 v a l u e s , f i x P u t N 0066760 u m b e r , c r u d e v a l 0067000 i d i t y c h e c k \r / / 0067020 f i x ~ ~ . d n a m e s \r / 0067040 / M a y 9 , 1 9 7 9 4 0067060 : 0 2 P M b u m p m e n u 0067100 s i z e b y o n e t o a 0067120 l l o w f o r e v e n w o 0067140 r d a l i g n m e n t \r / / 0067160 J u l y 1 , 1 9 7 9 3 : 0067200 2 1 P M , s e t d e f a u 0067220 l t p r i n t e r c a p a b 0067240 i l i t i e s \r / / A u g u s 0067260 t 2 9 , 1 9 7 9 1 0 : 5 0067300 2 A M , a d d N u m B i n 0067320 s t o p r i n t e r a t t 0067340 r i b u t e s t u f f \r / / 0067360 S e p t e m b e r 2 5 , 1 9 0067400 7 9 2 : 5 3 P M , g e t 0067420 p r i n t e r d e v i c e 0067440 n a m e s f r o m U s e r . 0067460 C m \r / / J a n u a r y 3 0 0067500 , 1 9 8 0 1 : 5 2 P M , 0067520 L o a d o r b i t c o n t r 0067540 o l l i n g m i c r o c o d e 0067560 \r / / \r \0 \0 032 ( 6 3 5 ) \ 5 6 0067600 3 b 2 B 1 9 b 2 B 6 7 b 3 3 B 8 0067620 1 0 b 7 B 4 5 6 3 b 2 B 3 5 6 2 0067640 b 1 0 B 1 8 7 b 1 B \r 0067653