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