$ od -c -N 50000 [Indigo]<Spruce>12>sources>spruceprindover.sr!2 0000000 / / \t \t \t P R I N T 0000020 - D O V E R \r / 0000040 / e r r o r s 1 0 0 0 \r / / 0000060 \r \r g e t " S p r u c e . d " 0000100 \r g e t " S p r u c e F i l e 0000120 s . d " \r g e t " O r b i t . 0000140 d " \r \r / / o u t g o i n g 0000160 p r o c e d u r e s \r e x t e r 0000200 n a l \r \t [ \r \t D r i v e P r i 0000220 n t e r \r \t ] \r / / i n c o m 0000240 i n g p r o c e d u r e s \r e 0000260 x t e r n a l \r \t [ \r \t S p r u 0000300 c e E r r o r \r \t M a x \r \t M i 0000320 n \r \t I n i t R a m \r / / S p r 0000340 u c e P r i n t \r \t A d d T o B 0000360 i n \r \t A n n o u n c e \r \t A w 0000400 a i t P a g e S y n c \r \t P r i 0000420 n t N e x t \r \t R e a d B a n d 0000440 s \r \t R e a d C l o c k \r \t R e 0000460 a d F o n t \r / / C U R S O R \r 0000500 \t C u r s o r C h a r \r \t C u r 0000520 s o r D i g i t \r / / S p r u 0000540 c e P r i n t R e s \r \t D o F u 0000560 n c \r \t R O S S t a t u s \r / / 0000600 T i m e r ( d e b u g o n 0000620 l y ) \r \t S e t T i m e r \r \t T 0000640 i m e r H a s E x p i r e d \r / 0000660 / O S \r \t Z e r o \r \t D i s a b 0000700 l e I n t e r r u p t s \r \t E n 0000720 a b l e I n t e r r u p \0 \a 020 @ 0000740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0000760 \0 \0 001 334 \0 \0 \0 \0 R 272 \0 272 366 356 370 366 0001000 t s \r \t ] \r / / i n c o m i n 0001020 g s t a t i c s \r e x t e r n 0001040 a l \r \t [ \r \t s c a n T i c k s 0001060 \t \t / / # o f 3 8 u s e 0001100 c . t i c k s i n 4 p r 0001120 i n t e r s c a n l i n e s 0001140 . \r \t l o g B a n d R e c o r d 0001160 S i z e \r \t b a n d R e c o r d 0001200 S i z e \r \t n P a g e s P r i n 0001220 t e d \r \t D e b u g \r \t D e b u 0001240 g S y s t e m \r \t s i g n a l B 0001260 a n d \r \t F u n c \r \t d e b 0001300 u g T r a i l \r \t k n o c k R e 0001320 s u l t \r \t n u m P r i n t e d 0001340 \r \t n u m M u s t P r i n t \r \t 0001360 I n i t M e a s u r e / / D 0001400 o v e r e n g i n e c o n t 0001420 r o l m o n i t o r i n g s 0001440 t u f f \r \t C l o s e M e a s u 0001460 r e \r \t T i c k M e a s u r e \r 0001500 \t M e a s u r e \r \t m e a s u r 0001520 e T a b l e \r \t x m F o n t s \t 0001540 / / F o n t d a t a w i l 0001560 l b e r e a d i n t o B 0001600 a n k 1 v i a B a n k 0 0001620 , i f s e t \r \t n R e c s \r 0001640 \t L o w A d r \r \t F A v a l u e 0001660 \r \t n B a n d s \r \t s t o p s P 0001700 r i n t i n g \r \t ] \r \f \r \r / / 0001720 i n t e r n a l s t \0 \a 020 @ 0001740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0001760 \0 \0 001 334 376 \0 \0 \0 P 272 \0 272 366 356 370 366 0002000 a t i c s \r s t a t i c \r 0002020 \t [ \r \t t i m e O u t = 1 5 * 2 0002040 7 \r \t p r i n t H y s t e r e s 0002060 i s = 1 5 / / p r i n t 0002100 t h i s m a n y b e f o r 0002120 e a l l o w i n g s u s p e 0002140 n s i o n , e a c h t i m e 0002160 i n \r \t / / ~ ~ a b o 0002200 v e n u m b e r m a y w a 0002220 n t t o i n c r e a s e f 0002240 o r l a r g e r u n s , o 0002260 r s o m e t h i n g ? \r \t s i 0002300 m L a t e D i s k \r \t / / 0002320 c S t a t ~ ~ C o l l e c 0002340 t s t a t i s t i c s o n 0002360 t h e a p p e a r a n c e o 0002400 f C o u n t - H ( D o v e r 0002420 o n l y ) \r \t / / c S t a t 0002440 ~ ~ R e c o r d m i n i 0002460 m u m a n d m a x i m u m 0002500 v a l u e o f ( n B a n d s 0002520 - c u r r e n t b a n d ) i 0002540 n \r \t / / c S t a t ~ ~ 0002560 c o u n t - H s i g n a l L 0002600 A S T a p p e a r s d u r i 0002620 n g i m a g i n g o f a 0002640 p a g e . \r \t / / c S t a t 0002660 ~ ~ R e - I n i t i a l i z 0002700 e S p r i n t , o r r e s 0002720 e t b y h a n d , \0 \a 020 @ 0002740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0002760 \0 \0 001 334 374 \0 \0 \0 N 272 \0 272 366 356 370 366 0003000 t o r e i n i t i a l i z e 0003020 v a l u e s \r \t c b M i n = 0003040 3 2 7 6 7 / / c S t a t ~ 0003060 ~ m i n v a l u e o f ( 0003100 n B a n d s - c u r r e n t B a 0003120 n d ) \r \t c b M a x = 0 / 0003140 / c S t a t ~ ~ m a x v 0003160 a l u e - - n o m i n a l 0003200 v a l u e i s v a l u e o 0003220 f s i g n a l B a n d \r \t / / 0003240 d e l a y ~ ~ ~ ~ d e b u 0003260 g g i n g : d e l a y p e r 0003300 p a g e t o s i m u l a t 0003320 e p r i n t i n g \r \t d e b D 0003340 e l a y = 0 / / d e l a 0003360 y n o d e l a y s t d . 0003400 \r \t / / d e l a y ~ ~ ~ ~ \r 0003420 \t ] \r \r / / F i l e - w i d e 0003440 s t r u c t u r e a n d m 0003460 a n i f e s t d e c l a r a t 0003500 i o n s . \r \r m a n i f e s t 0003520 [ \r \t R T C = # 4 3 0 \r \t d e b 0003540 u g T r a i l S i z e = 1 0 0003560 * 3 \r \r \t / / F a i l u r e 0003600 C o d e r a n g e s - - s 0003620 e e R O S C h e c k \r \t m a x 0003640 N o t R e a d y = 9 / / 0003660 n o t r e a d y , b u t p 0003700 r o b a b l y w i l l b e 0003720 s o o n \r \t m a x M a n \0 \a 020 @ 0003740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0003760 \0 \0 001 334 372 \0 \0 \0 L 272 \0 272 366 356 370 366 0004000 u a l = 1 9 / / M a n u 0004020 a l i n t e r v e n t i o n 0004040 r e q u i r e d \r \t m a x J a m 0004060 = 9 9 \t / / E r r o r d 0004100 u r i n g o p e r a t i o n \r 0004120 \t m i n D o c u m e n t E r r o 0004140 r = 3 0 0 / / D o c u m 0004160 e n t i n h e r e n t l y h 0004200 a r d t o p r i n t \r \t \t ] 0004220 \r \r / / R O S C h e c k v a 0004240 l u e s \r s t r u c t u r e C 0004260 T : \r \t [ \r \t i n v e r t \t 0004300 \t b i t 1 / / b i t i s 0004320 o n w h e n t h i n g s 0004340 a r e g o o d \r \t m a l F n 0004360 R e q \t b i t 1 / / D o v 0004400 e r m a l f u n c t i o n b 0004420 i t m u s t a l s o b e 0004440 o n o r n o e r r o r \r 0004460 \t f a i l u r e C o d e \t b i t 0004500 6 \r \t w o r d I n d e x \t b 0004520 i t 4 \r \t b i t I n d e x \t 0004540 b i t 4 \r \t ] \r \r m a n i f 0004560 e s t / / f a c t o r s f 0004600 o r c r e a t i n g t a b l 0004620 e e n t r i e s \r \t [ \r \t I n 0004640 v e r t \t \t = # 1 0 0 0 0 0 \r 0004660 \t M a l F n R e q \t = # 4 0 0 0004700 0 0 \r \t C o d e \t \t = 2 5 6 \r 0004720 \t W o r d \t \t = 1 6 \r \0 \a 020 @ 0004740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0004760 \0 \0 001 334 370 \0 \0 \0 J 272 \0 272 366 356 370 366 0005000 \t B i t \t \t = 1 \r \t ] \r \f \r / 0005020 / - - - - - - - - - - - - - - 0005040 - - - - - - - - - - - - - - - - * 0005100 - - - - - - - - - - - - - \r / / 0005120 D o v e r P r i n t \t \t I n i 0005140 t i a l i z a t i o n \r / / - 0005160 - - - - - - - - - - - - - - - - * 0005240 - - - - - - - - - - \r \r / / R 0005260 e t u r n s - 1 i f p r i 0005300 n t i n g i s s u c c e s s 0005320 f u l l y c o m p l e t e d , 0005340 e l s e \r / / n P a g e s P 0005360 r i n t e d , s o c a n p 0005400 i c k u p w h e r e w e 0005420 l e f t o f f . \r \r l e t D 0005440 r i v e P r i n t e r ( p D o c 0005460 , n P a g e s A l r e a d y P 0005500 r i n t e d , l v F a i l u r 0005520 e C o d e ) = v a l o f \r [ 0005540 \r / / * * * * * * * * S e e 0005560 S p r u c e M e a s u r e - 0005600 - d o n ' t m o v e d e c 0005620 l a r a t i o n s o f n e x 0005640 t f i v e l o c a l v a r 0005660 i a b l e s * * * * * * * * \r 0005700 \t l e t m a l f u n c t i o n 0005720 , p r o c e e d C o d \0 \a 020 @ 0005740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0005760 \0 \0 001 334 366 \0 \0 \0 H 272 \0 272 366 356 370 366 0006000 e , n o n F , c o l d S t a 0006020 r t , c o n s e c u t i v e E 0006040 r r o r s = n i l , n i l 0006060 , n i l , n i l , n i l \r 0006100 / / * * * * * * * * \r \t l e t 0006120 C o m m T a b = v e c 1 0 \r 0006140 \t C o m m T a b = ( C o m m T a 0006160 b + 1 ) & ( - 2 ) \r \r \t / / I 0006200 f m o n i t o r i n g d o v 0006220 e r p e r f o r m a n c e , 0006240 t h e s e a r e r e a l \r \t 0006260 I n i t i a l i z e H a r d w a 0006300 r e ( f a l s e ) \r \t I n i t M 0006320 e a s u r e ( m e a s u r e T a 0006340 b l e , 2 0 0 0 , ( l v m 0006360 a l f u n c t i o n ) - 1 ) \r \r 0006400 \t c o l d S t a r t = t r u e \r 0006420 \t c o n s e c u t i v e E r r o 0006440 r s = 0 \r \t l e t k n o c k K 0006460 n o c k = f a l s e \t \t / / 0006500 t i m e t o l e t s o m 0006520 e b o d y i n i f t r u e 0006540 \r \r \f / / P r i n t ( c o n 0006560 t . ) \t \t S l o w L o o p \r \r 0006600 / / L o o p o u t t o h 0006620 e r e w h e n a n e w f 0006640 o n t s e t i s r e q u i 0006660 r e d , o r w h e n \r / / 0006700 n e e d i n g t o c o m p l 0006720 e t e l y r e s t a r \0 \a 020 @ 0006740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0006760 \0 \0 001 334 364 \0 \0 \0 F 272 \0 272 366 356 370 366 0007000 t t h e p r i n t e r . \r [ 0007020 S l o w \r / / F i n d o u t 0007040 w h i c h p a g e t o p 0007060 r i n t n e x t : \r \t l e t 0007100 c o p y = n i l \r \t l e t 0007120 p a g e = P r i n t N e x t ( p 0007140 D o c , l v c o p y , n P 0007160 a g e s P r i n t e d ) \r \t i f 0007200 p a g e e q 0 t h e n 0007220 [ k n o c k K n o c k = f 0007240 a l s e ; b r e a k ] \r \t i 0007260 f k n o c k K n o c k t h e 0007300 n b r e a k / / g o l e 0007320 t s o m e b o d y i n \r \r / 0007340 / R e a d i n f o n t a 0007360 n d r e l o c a t e t h e 0007400 p o i n t e r s t o c h a r 0007420 a c t e r s : \r \t l e t f o n 0007440 t = p a g e > > P a g e G . f o 0007460 n t L o a d * ( s i z e F o n 0007500 t G / 1 6 ) + p D o c > > D o c 0007520 G . F o n t s \r \t / / N e x t 0007540 c a l l r e t u r n s l o 0007560 c a t i o n o f I C C t a 0007600 b l e , \r \t l e t F o n t T a 0007620 b l e = R e a d F o n t ( f 0007640 o n t , L o w A d r , n R e 0007660 c s ) \r \t u n l e s s x m F o 0007700 n t s d o f o r i = 0 t 0007720 o p D o c > > D o c G \0 \a 020 @ 0007740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0007760 \0 \0 001 334 362 \0 \0 \0 D 272 \0 272 366 356 370 366 0010000 . I C C t o t a l - 1 d o / 0010020 / i f r a s t e r s a r e 0010040 i n b a n k 1 , t h e y 0010060 s t a r t a t 0 \r \t \t F o 0010100 n t T a b l e ! i = F o n t T a 0010120 b l e ! i + L o w A d r \r \t 0010140 F o n t T a b l e = F o n t T a 0010160 b l e - 1 0 0 0 0 0 b \r \r / / 0010200 F i g u r e o u t w h e r e 0010220 b u f f e r s a r e . \r \t l 0010240 e t n R e c o r d s = x m F 0010260 o n t s ? ( p D o c > > D o c 0010300 G . I C C t o t a l + b a n d R 0010320 e c o r d S i z e - 1 ) r s h 0010340 i f t l o g B a n d R e c o r 0010360 d S i z e , \r \t \t \t \t f o n t > 0010400 > F o n t G . n R e c o r d s \r 0010420 \t l e t n f R e c s = ( n R e 0010440 c s - n R e c o r d s ) / 2 / 0010460 / m a x a l l o w a b l e 0010500 b a n d l i s t s i z e f 0010520 o r n o r m a l a l t e r n 0010540 a t i o n \r \t l e t L e f t O 0010560 v e r = L o w A d r + ( n R 0010600 e c o r d s l s h i f t l o 0010620 g B a n d R e c o r d S i z e ) 0010640 \r \t l e t L e f t O v e r G u 0010660 a r d = L e f t O v e r + ( 0010700 l o S i z e & ( - 4 ) ) - 4 \r \t 0010720 l e t b u f 1 = ( \0 \a 020 @ 0010740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0010760 \0 \0 001 334 360 \0 \0 \0 B 272 \0 272 366 356 370 366 0011000 L e f t O v e r + l o S i z e + 0011020 8 ) & ( - 2 ) / / ~ ~ a l 0011040 l t h e 4 ' s , 8 ' s a 0011060 n d 1 0 ' s i n h e r e 0011100 a r e c o w a r d l y s l a 0011120 c k \r \t l e t b u f 2 = b u f 0011140 1 + n f R e c s l s h i f t 0011160 l o g B a n d R e c o r d S i z 0011200 e \r \t l e t c u r b u f = c o 0011220 l d S t a r t ? b u f 2 , b 0011240 u f 1 / / f i r s t r e a 0011260 l d a t a i m a g e d f r 0011300 o m b u f 1 \r \r / / N o w 0011320 r e a d i n t h e b a n d 0011340 s f o r t h i s p a g e \r 0011360 \t t e s t c o l d S t a r t 0011400 t h e n Z e r o ( c u r b u f 0011420 , n B a n d s * 2 ) \r \t o r 0011440 R e a d B a n d s ( p a g e , 0011460 c u r b u f , n f R e c s * 0011500 2 ) \r / / I n i t i a l i z e 0011520 t h e O r b i t , D o v e 0011540 r , e t c . \r \t I n i t i a l 0011560 i z e H a r d w a r e ( f a l s 0011600 e ) \r \t l e t n p = n i l 0011620 \r \t l e t t i m = @ R T C 0011640 \r / / C h e c k f o r p r 0011660 o b l e m s , w a i t f o r 0011700 r e a d y i n d i c a t i o 0011720 n \r / / w a i t \0 \a 020 @ 0011740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0011760 \0 \0 001 334 356 \0 \0 \0 @ 272 \0 272 366 356 370 366 0012000 f o r r e a d y o r s o m 0012020 e s e r i o u s c o n d i t 0012040 i o n o r f o r l o n g 0012060 e n o u g h \r u n l e s s 0012100 D e b u g d o \r \t [ \r \t n p 0012120 = R O S C h e c k ( l v F a 0012140 i l u r e C o d e , n P a g e 0012160 s A l r e a d y P r i n t e d , 0012200 f a l s e ) \r \t i f n p e 0012220 q - 1 b r e a k / / r e 0012240 a d y \r \t i f @ l v F a i l u 0012260 r e C o d e > m a x N o t R 0012300 e a d y % ( @ R T C - t i m 0012320 ) > t i m e O u t r e s u 0012340 l t i s n p \r \t ] r e p e a 0012360 t \r \r / / T r y t o e m p 0012400 t y O r b i t b u f f e r s 0012420 t o c l e a r t h e m . 0012440 T h i s i s t o m i n i 0012460 m i z e \r / / t o n e r d u 0012500 m p i n g o n f i r s t ( 0012520 b l a n k ) p a g e . \r \t c o 0012540 m p i l e i f l o S i z e l 0012560 s 2 5 6 t h e n [ f o o 0012600 = n i l ] \r \t f o r i = 0 0012620 t o 3 1 d o D o F u n c ( 0012640 f R e a d B l o c k , 2 5 6 , 0012660 L e f t O v e r ) \r \r / / N 0012700 o w f e e d f i r s t s h 0012720 e e t : \0 \a 020 @ 377 v 037 \0 002 { 035 \0 0012740 \0 ( 027 006 \0 \0 @ @ \0 @ \0 \0 004 206 0012760 \0 207 001 324 354 \0 \0 \0 > 272 \0 272 362 352 366 362 0013000 \r \t D o F u n c ( f C o n t r o 0013020 l , 2 1 b ) \r / / T u r n 0013040 o f f a d C o m m a n d B e a 0013060 m O n , i f o n , r e v e 0013100 r t t o n o r m a l m o d 0013120 u l a t i o n \r / / ~ ~ c a 0013140 u s e s g l i t c h \t A d C o 0013160 m m a n d ( A d a p t e r S c a 0013200 l e s ) \r \t D o F u n c ( f R O 0013220 S C o m m a n d , a d B u f f 0013240 e r R e s e t ) \r / / I f D 0013260 o v e r i s a l r e a d y 0013300 r u n n i n g , t h i s S t 0013320 a r t P r i n t m a y n o t 0013340 d o t h e r i g h t \r / / 0013360 t h i n g , b e c a u s e 0013400 i t m a y b e s e n t d 0013420 u r i n g t h e " d e a d " 0013440 t i m e n e a r \r / / C S 0013460 - 5 . \r \t F e e d A S h e e t ( 0013500 ) \r \t A w a i t P a g e S y n c 0013520 ( 0 ) \t / / W a i t f o r s 0013540 e n d V i d e o t o g o o 0013560 f f . \r \f / / P r i n t ( c 0013600 o n t . ) \t \t F a s t L o o p 0013620 \r \r [ R u n n i n g L o o p \r / 0013640 / C a l c u l a t e a R O 0013660 S c o m m a n d t a b l e : 0013700 \r \t \t C o m m T a b ! 0 = s i g 0013720 n a l B a n d + 2 \r \t \t \0 \a 020 @ 0013740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0013760 \0 \0 001 334 352 \0 \0 \0 < 272 \0 272 366 356 370 366 0014000 C o m m T a b ! 1 = a d E x t e 0014020 r n a l C o m m a n d 1 \t / / N 0014040 o f e e d y e t \r \t \t C o m 0014060 m T a b ! 2 = s i g n a l B a n 0014100 d + 1 \r \t \t C o m m T a b ! 3 = 0014120 a d E x t e r n a l C o m m a n 0014140 d 1 \r \t \t C o m m T a b ! 4 = 1 0014160 0 0 0 0 b + s i g n a l B a n d 0014200 / / l a s t e n t r y n 0014220 e a r i n g o b s o l e s c e 0014240 n c e 3 - 2 6 - 7 8 D C S \r 0014260 \t \t C o m m T a b ! 5 = 3 2 \t * 0014300 2 5 6 \t \t / / S t a t u s b i 0014320 t s 0 - 3 o f w o r d 8 0014340 \r \t \t C o m m T a b ! 6 = - 1 \r 0014360 \r / / S t a r t O r b i t 0014400 w o r k i n g o n t h e p 0014420 r e s e n t p a g e . \r \t D o 0014440 F u n c ( f C o n t r o l , # 0014460 2 1 ) \t \t / / R e s e t , c l 0014500 e a r b e h i n d \r \t D o F u 0014520 n c ( f R O S C o m m a n d , 0014540 a d B u f f e r R e s e t ) \r \t 0014560 L e f t O v e r ! 0 = 0 \t \t \t / 0014600 / I n i t i a l i z e L e f t 0014620 O v e r t a b l e \r \t L e f t 0014640 O v e r G u a r d ! 1 = - 1 \r \t 0014660 t i m = @ R T C \r / / S t a r 0014700 t t h e m i c r o c o d e ! 0014720 ! ! ! \r \t D o F u n c ( \0 \a 020 @ 0014740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0014760 \0 \0 001 334 350 \0 \0 \0 : 272 \0 272 366 356 370 366 0015000 f S l o t , C o m m T a b , 0015020 2 0 0 0 0 , n B a n d s - 1 , 0015040 F A v a l u e , L e f t O v 0015060 e r , \r \t \t \t F o n t T a b l e 0015100 , c u r b u f - 1 , n i l , 0015120 n i l , ( c o p y l s h i 0015140 f t 5 ) + 4 ) \r \r i f D e b 0015160 u g t h e n / / ~ ~ d e l 0015200 a y \r \t [ / / ~ ~ d e l a y 0015220 \r \t w h i l e ( @ R T C - t i 0015240 m ) < d e b D e l a y l o 0015260 o p \t / / ~ ~ d e l a y \r \t t 0015300 i m = @ R T C / / ~ ~ d 0015320 e l a y d o n ' t i n v o k 0015340 e t i m e o u t c o d e b 0015360 e l o w \r \t ] / / ~ ~ d e l 0015400 a y \r \t \r / / \t P r e p a r e 0015420 n e x t p a g e i n p a 0015440 r a l l e l w i t h i m a g 0015460 i n g \r \t / / P r o c e e d 0015500 c o d e : \r \t / / 0 : C h a 0015520 r g e o n a h e a d , f u 0015540 l l s p e e d \r \t / / 1 : 0015560 P a u s e b e c a u s e c a 0015600 n n o t f i t b a n d s o 0015620 r f o n t f o r n e x t 0015640 p a g e , \r \t / / o r 0015660 b e c a u s e p r i n t i n 0015700 g i s d o n e . \r \t / / 2 0015720 : R e p r i n t t h \0 \a 020 @ 0015740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0015760 \0 \0 001 334 346 \0 \0 \0 8 272 \0 272 366 356 370 366 0016000 i s p a g e , d u e t o 0016020 m i s f e e d ( D o v e r o 0016040 n l y ) . \r \t / / 4 : N o 0016060 s h e e t i n p i p e ( D 0016100 o v e r o n l y ) \r \r / / A 0016120 s s u m e t h e p a g e w 0016140 e a r e p r i n t i n g w 0016160 i l l b e O K : \r \t u n l e 0016200 s s c o l d S t a r t t h e 0016220 n \r \t \t [ \r \t \t n P a g e s P r 0016240 i n t e d = n P a g e s P r i n 0016260 t e d + 1 \r \t \t C u r s o r D i 0016300 g i t ( n P a g e s P r i n t e 0016320 d ) \r \t \t ] \r / / S e e w h 0016340 o ' s ( m a y b e ) k n o c 0016360 k i n g a t m y d o o r \r 0016400 / / T h i s l o g i c i s 0016420 c o p i e d f r o m S p r 0016440 u c e U t i l s R e s : i f 0016460 w e a r e n o t p l a n n 0016500 i n g t o d e f e r t o 0016520 s p o o l e r , \r / / d o n 0016540 ' t t r o u b l e t o s h 0016560 u t d o w n h e r e , j u 0016600 s t t o f i n d t h a t 0016620 o u t t h e r e . W o u l d 0016640 b e t o o e x p e n s i v 0016660 e \r \t i f ( D e b u g S y s t 0016700 e m & # 3 0 ) e q 0 & n 0016720 u m P r i n t e d g e \0 \a 020 @ 0016740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0016760 \0 \0 001 334 344 \0 \0 \0 6 272 \0 272 366 356 370 366 0017000 n u m M u s t P r i n t & 0017020 k n o c k R e s u l t & \r \t ( 0017040 n P a g e s P r i n t e d - n P 0017060 a g e s A l r e a d y P r i n t 0017100 e d ) > p r i n t H y s t e 0017120 r e s i s \r \t t h e n k n 0017140 o c k K n o c k = t r u e \r 0017160 \r / / F i n d n e x t p a 0017200 g e t o w o r k o n : \r \t 0017220 p r o c e e d C o d e = 1 \r \t l 0017240 e t n e x t b u f = c u r b u 0017260 f x o r b u f 1 x o r b 0017300 u f 2 \r \t l e t n e x t P a g 0017320 e = P r i n t N e x t ( p D o c 0017340 , l v c o p y , n P a g e s 0017360 P r i n t e d ) \r \r \t i f ( n 0017400 o t k n o c k K n o c k ) & 0017420 n e x t P a g e t h e n \r \t 0017440 \t [ \r \t \t i f ( n e x t P a g 0017460 e > > P a g e G . f o n t L o a 0017500 d e q p a g e > > P a g e G 0017520 . f o n t L o a d ) & \r \t \t ( 0017540 n e x t P a g e > > P a g e G . 0017560 n R e c o r d s l e n f R e 0017600 c s ) t h e n \r \t \t \t [ \r \t \t 0017620 \t p r o c e e d C o d e = 0 0017640 \r / / R e a d i n t h e 0017660 b a n d s f o r t h e n e 0017700 x t p a g e : \r \t \t \t R e a d 0017720 B a n d s ( n e x t P a \0 \a 020 @ 0017740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0017760 \0 \0 001 334 342 \0 \0 \0 4 272 \0 272 366 356 370 366 0020000 g e , n e x t b u f , c o l 0020020 d S t a r t ? n f R e c s * 2 0020040 , n f R e c s ) \r \t \t \t i f 0020060 s i m L a t e D i s k t h e n 0020100 \r \t \t \t \t \t [ \r \t \t \t \t \t s i m 0020120 L a t e D i s k = s i m L a t e 0020140 D i s k x o r 1 \r \t \t \t \t \t 0020160 i f ( s i m L a t e D i s k & 0020200 1 ) e q 0 t h e n F u n 0020220 c ! 3 = - 1 \r \t \t \t \t \t ] \r \t \t 0020240 \t D i s a b l e I n t e r r u p 0020260 t s ( ) \r \t \t \t t e s t F u n 0020300 c ! 3 g r s i g n a l B a n 0020320 d + 3 t h e n \r \t \t \t C o m m 0020340 T a b ! 1 = a d E x t e r n a l 0020360 C o m m a n d 1 + 1 \r \t \t \t o r 0020400 \t p r o c e e d C o d e = 4 \r \t 0020420 \t \t E n a b l e I n t e r r u p 0020440 t s ( ) \r \t \t \t ] \r \t \t ] \r \f / 0020460 / P r i n t ( c o n t . ) \t 0020500 \t W a i t f o r c o m p l e 0020520 t i o n , a n a l y z e r e 0020540 s u l t s \r \r / / N o w s e 0020560 e i f w e a c t u a l l y 0020600 p r i n t e d t h i s p a 0020620 g e p r o p e r l y . F i 0020640 r s t , \r / / w a i t f o r 0020660 O r b i t t o a n n o u n 0020700 c e i t i s f i n i s h e 0020720 d . \r \t l e t i m a g \0 \a 020 @ 0020740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0020760 \0 \0 001 334 340 \0 \0 \0 2 272 \0 272 366 356 370 366 0021000 e T i m e o u t = 4 * 2 7 \r 0021020 \t w h i l e @ # 7 2 0 n e 0021040 0 d o i f ( @ R T C - t i 0021060 m ) g r i m a g e T i m e o 0021100 u t t h e n \r \t \t [ \r \t \t B l 0021120 a s t ( ) \t \t / / c l e a r 0021140 h a r d w a r e , # 7 2 0 \r \t 0021160 \t / / M a c h i n e d e a 0021200 d o r O r b i t g o t b 0021220 e h i n d a n d i t w a s 0021240 n ' t d e t e c t e d \r \t \t 0021260 / / W i l l g e n e r a l l 0021300 y b e o v e r r i d e n b 0021320 y m o r e s p e c i f i c 0021340 a n a l y s i s \r \t \t @ l v F a 0021360 i l u r e C o d e = 1 9 / 0021400 / M a n u a l i n t e r v e 0021420 n t i o n r e q u i r e d \r \t 0021440 \t b r e a k \r \t \t ] \r / / C h 0021460 e c k O r b i t s t a t u s 0021500 \r \t n o n F = 0 \r \t l e t 0021520 s t a t = F u n c ! 9 \t \t / / O 0021540 r b i t p r i n t i n g s t 0021560 a t u s . \r \t l e t c o u n t 0021600 B a n d = F u n c ! 8 / / 0021620 B a n d i n w h i c h c 0021640 o u n t - H l a s t o c c u 0021660 r r e d ( D o v e r o n l y 0021700 ) \r \t / / ~ ~ c S t a t \r \t 0021720 c b M i n = M i n ( \0 \a 020 @ 0021740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0021760 \0 \0 001 334 336 \0 \0 \0 0 272 \0 272 366 356 370 366 0022000 c b M i n , c o u n t B a n d 0022020 ) / / ~ ~ c S t a t \r \t i f 0022040 c o u n t B a n d < n B a n d 0022060 s t h e n c b M a x = M 0022100 a x ( c b M a x , c o u n t B 0022120 a n d ) / / ~ ~ c S T a t \r 0022140 \t / / ~ ~ c S T a t \r \t / / 0022160 F a t a l e r r o r d e t 0022200 e c t e d b y m i c r o c o 0022220 d e - - i n v a l i d B a 0022240 n d e n t r y - - p o s s 0022260 i b l y b r o k e n p r o c 0022300 e s s o r \r \t i f s t a t < < 0022320 S T A T U S . i n v a l i d B a 0022340 n d E n t r y t h e n \r \t \t [ 0022360 I n i t i a l i z e H a r d w 0022400 a r e ( t r u e ) ; \r \t \t 0022420 i f L e f t O v e r G u a r d 0022440 ! 1 e q - 1 t h e n S p 0022460 r u c e E r r o r ( 1 0 1 0 , 0022500 @ 1 , @ 2 ) / / e l s e , 0022520 a s s u m e t h a t \r \t \t \t 0022540 / / b a d b a n d e n t r y 0022560 i s s i m p l y r e s u l 0022600 t o f l e f t o v e r o v 0022620 e r f l o w \r \t \t ] \r \t t e s t 0022640 s t a t < < S T A T U S . p r 0022660 e m a t u r e P a g e A b o r t 0022700 t h e n [ A n n o u n c e 0022720 ( 1 6 ) ; n o n F = \0 \a 020 @ 0022740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0022760 \0 \0 001 334 334 \0 \0 \0 . 272 \0 272 366 356 370 366 0023000 3 0 1 ] \r \t o r i f 0023020 s t a t < < S T A T U S . b e h 0023040 i n d t h e n [ A n n o u 0023060 n c e ( 1 6 ) ; n o n F = 0023100 3 0 0 ] \r \t i f s t a t < < 0023120 S T A T U S . t i m e o u t t 0023140 h e n [ A n n o u n c e ( 1 0023160 7 ) ; @ l v F a i l u r e C o 0023200 d e = 1 8 ] \r \t i f L e 0023220 f t O v e r G u a r d ! 1 n e 0023240 - 1 t h e n \r \t [ A n 0023260 n o u n c e ( 1 8 ) ; n o n F 0023300 = 3 1 0 / / t h e n c 0023320 h e c k p o s s i b l e n e 0023340 x t p a g e d a t a e n c 0023360 l o b b e r m e n t \r \t i 0023400 f ( ( p r o c e e d C o d e & 0023420 1 ) e q 0 ) & n e x t b 0023440 u f e q b u f 1 t h e n 0023460 p r o c e e d C o d e = 1 0023500 ] \r \t i f n o n F t h e n 0023520 @ l v F a i l u r e C o d e = 0023540 n o n F \r \t i f ( s t o p s 0023560 P r i n t i n g e q b i n F 0023600 u l l ) & ( @ l v F a i l u 0023620 r e C o d e e q n o n F ) 0023640 t h e n @ l v F a i l u r e 0023660 C o d e = 1 3 0 \r \t A d d T 0023700 o B i n ( 5 0 0 ) \r / / N o w 0023720 t r y f o r m o r \0 \a 020 @ 0023740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0023760 \0 \0 001 334 332 \0 \0 \0 , 272 \0 272 366 356 370 366 0024000 e s p e c i f i c e n g i n 0024020 e s t a t u s c h e c k \r \r 0024040 \t n p = R O S C h e c k ( l v F 0024060 a i l u r e C o d e , n P a g 0024100 e s A l r e a d y P r i n t e d 0024120 , t r u e ) \r \t / / C h e c 0024140 k C O U N T - H s i g n a l 0024160 , p a p e r d i d n o t 0024200 a r r i v e - - e l s e r 0024220 e - p r i n t p a g e \r \t 0024240 i f c o l d S t a r t e q 0024260 0 & \r \t \t / / ~ ~ m i c 0024300 r o c o d e c h e c k s e x 0024320 p l i c i t l y a t e n d 0024340 o f e a c h b a n d , a s 0024360 w e l l a s a t s i g n 0024400 a l B a n d \r \t \t ( ( ( C o m 0024420 m T a b ! 5 ) & 1 ) e q 0 0024440 & c o u n t B a n d g e ( n 0024460 B a n d s r s h i f t 1 ) ) 0024500 t h e n p r o c e e d C o d e 0024520 = p r o c e e d C o d e % \r \t \t 0024540 \t ( F u n c ! 3 l e s i g n 0024560 a l B a n d + 3 ? 2 , p r o 0024600 c e e d C o d e e q 1 ? 0 0024620 , 4 ) \r \r / / N o w w a i 0024640 t f o r p a g e s y n c 0024660 t o g o o f f \r \t u n l e s 0024700 s A w a i t P a g e S y n c ( 0024720 0 ) t h e n @ l v F \0 \a 020 @ 0024740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0024760 \0 \0 001 334 330 \0 \0 \0 * 272 \0 272 366 356 370 366 0025000 a i l u r e C o d e = 1 6 \r 0025020 \r / / N o w d e c i d e w h 0025040 a t t o d o : \r \t i f p r 0025060 o c e e d C o d e t h e n A 0025100 n n o u n c e ( p r o c e e d C 0025120 o d e ) \r \t m a l f u n c t i o 0025140 n = @ l v F a i l u r e C o 0025160 d e \r \t i f m a l f u n c t i 0025200 o n g e m i n D o c u m e n 0025220 t E r r o r t h e n m a l f 0025240 u n c t i o n = 0 / / w 0025260 i l l n o t s t o p \r \r / / 0025300 F i r s t , i f p i p e 0025320 i s e m p t y , f i l l i 0025340 t . W i l l n o t b e 0025360 i n v o k e d i f p a u s i 0025400 n g . \r \t i f ( p r o c e e 0025420 d C o d e & 4 ) n e 0 t h 0025440 e n \r \t \t [ \r \t \t A w a i t P a 0025460 g e S y n c ( 1 ) \r \t \t F e e d 0025500 A S h e e t ( ) \r \t \t A w a i t 0025520 P a g e S y n c ( 0 ) \r \t \t p r 0025540 o c e e d C o d e = p r o c e e 0025560 d C o d e - 4 \r \t \t ] \r \r / / 0025600 N o w r e a c t t o t h e 0025620 a n a l y s i s : i f a t 0025640 t h i s p o i n t n o t h 0025660 i n g i s w r o n g a n d 0025700 s h e e t s a r e \r / / f 0025720 e e d i n g , s t e a \0 \a 020 @ 0025740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0025760 \0 \0 001 334 326 \0 \0 \0 ( 272 \0 272 366 356 370 366 0026000 m a h e a d . O t h e r w i 0026020 s e , r e t u r n t o t h 0026040 e s l o w l o o p i f d 0026060 a t a i s n o t a v a i l 0026100 a b l e \r / / o r i f p a 0026120 p e r m i s f e d . R e t u 0026140 r n i f t h e r e w a s 0026160 a s e r i o u s m a l f u n 0026200 c t i o n , o r i f t h i 0026220 n g s l o o k \r / / o d d 0026240 s e v e r a l t i m e s c o 0026260 n s e c u t i v e l y ( p a p 0026300 e r f a i l e d t o f e e 0026320 d i s t h e o n l y c a 0026340 s e , f o r n o w ) \r \r \t M 0026360 e a s u r e ( # 2 3 , ( @ ( # 1 0026400 2 3 ) ) + 1 ) / / f o r c e 0026420 r a n d o m e v e n t \r \t u 0026440 n l e s s m a l f u n c t i o 0026460 n d o \r \t [ \r \t i 0026500 f p r o c e e d C o d e e q 0026520 0 % p r o c e e d C o d e 0026540 e q 2 & n o n F n e 0026560 0 t h e n \r \t \t [ \r \t \t 0026600 c o l d S t a r t = f a l s e 0026620 \r \t \t c u r b u f = n e x t 0026640 b u f \r \t \t c o n s e c u t 0026660 i v e E r r o r s = 0 \r \t \t 0026700 l o o p \r \t \t ] \r \t 0026720 i f p r o c e e d C o \0 \a 020 @ 0026740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0026760 \0 \0 001 334 324 \0 \0 \0 & 272 \0 272 366 356 370 366 0027000 d e e q 1 t h e n [ c 0027020 o l d S t a r t = f a l s e 0027040 ; b r e a k ] / / O u t 0027060 o f R u n n i n g L o o p \r \t 0027100 c o n s e c u t i v e E 0027120 r r o r s = c o n s e c u t i v 0027140 e E r r o r s + 1 / / m i s 0027160 f e e d s o n l y , r i g h 0027200 t n o w \r \t i f c o 0027220 n s e c u t i v e E r r o r s 0027240 g e 4 t h e n \r \t \t 0027260 [ \r \t \t m a l f u n 0027300 c t i o n , @ l v F a i l u r 0027320 e C o d e = 1 7 , 1 7 \r \t 0027340 \t n p = n P a g e s 0027360 P r i n t e d \r \t \t ] \r 0027400 \t ] \r \t \r \t M e a s u r 0027420 e ( # 2 3 , ( @ ( # 1 2 3 ) ) + 0027440 1 ) / / f o r c e r a n d 0027460 o m e v e n t \r \t i f m a l 0027500 f u n c t i o n t h e n \r \t \t 0027520 [ \r \t \t I n i t i a l i z e H a 0027540 r d w a r e ( t r u e ) \r \t \t / 0027560 / i f m a l f u n c t i o n 0027600 d e t e c t e d o u t s i d 0027620 e o f R O S C h e c k , s 0027640 e t n p \r \r \t \t l e t b a 0027660 c k u p = 2 \r \r \t \t i f 0027700 n p e q - 1 t h e n n p 0027720 = n P a g e s P r i \0 \a 020 @ 0027740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0027760 \0 \0 001 334 322 \0 \0 \0 $ 272 \0 272 366 356 370 366 0030000 n t e d - b a c k u p \r \t \t / / 0030020 a c c o u n t f o r p r e 0030040 v i o u s i n c r e m e n t \r 0030060 \t \t n p = M a x ( n p - 1 , 0030100 n P a g e s A l r e a d y P r 0030120 i n t e d ) \r \t \t C l o s e M e 0030140 a s u r e ( ) / / i f m e 0030160 a s u r e c o d e l o a d e 0030200 d , t h i s i s r e a l , 0030220 e l s e d u m m y \r \t \t r e 0030240 s u l t i s n p \r \t \t ] \r / / 0030260 I f w e g e t h e r e , 0030300 i t i s n e c e s s a r y 0030320 t o r e p r i n t t h i s 0030340 p a g e . P a p e r i s \r 0030360 / / p r o b a b l y f l o w 0030400 i n g . P r o b a b l y a 0030420 p a p e r m i s f e e d \r / / 0030440 E x c e p t i o n : n o n - 0030460 f a t a l m a l f u n c t i o 0030500 n ( m f = 0 , b u t n o n 0030520 F i s n ' t ) - - g i v e 0030540 i t u p a n d g o o n 0030560 \r \t \t u n l e s s n o n F d 0030600 o n P a g e s P r i n t e d = 0030620 n P a g e s P r i n t e d - 1 \r 0030640 \t \t i f ( p r o c e e d C o d 0030660 e & 1 ) n e 0 t h e n b 0030700 r e a k \t / / U s e p a u s e 0030720 c o d e \r \t \t l o o p \0 \a 020 @ 0030740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0030760 \0 \0 001 334 320 \0 \0 \0 " 272 \0 272 366 356 370 366 0031000 \t \t \t / / R e p r i n t t h e 0031020 p a g e , o r g o o n \r 0031040 ] R u n n i n g L o o p r e p 0031060 e a t \r \r ] S l o w r e p e a 0031100 t \r \r \t I n i t i a l i z e H a 0031120 r d w a r e ( t r u e ) \r \t C l 0031140 o s e M e a s u r e ( ) \r \t r e 0031160 s u l t i s ( k n o c k K n o 0031200 c k % @ l v F a i l u r e C 0031220 o d e ) ? n P a g e s P r i n 0031240 t e d , - 1 \r ] \r \f \r / / - 0031260 - - - - - - - - - - - - - - - - * 0031360 - - - - - - - - - \r / / n P a 0031400 g e s P r i n t e d = R O S 0031420 C h e c k ( l v F a i l u r e C 0031440 o d e , n P a g e s A l r e a 0031460 d y P r i n t e d , r u n n i 0031500 n g , ) \r / / - - - - 0031520 - - - - - - - - - - - - - - - - * 0031620 - - - - - - \r \r / / a n a l y 0031640 z e R O S s t a t u s \r / / 0031660 n P a g e s P r i n t e d = 0031700 - 1 i f t h e r e a r e 0031720 n o m a l f u n c t \0 \a 020 @ 0031740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0031760 \0 \0 001 334 316 \0 \0 \0 272 \0 272 366 356 370 366 0032000 i o n s , R O S i s r e a 0032020 d y t o p r i n t \r / / \t \t 0032040 \t o t h e r w i s e , t h e 0032060 n u m b e r o f p a g e s 0032100 t o r e p o r t a s h a v 0032120 i n g b e e n p r i n t e d 0032140 \r / / @ l v F a i l u r e C o 0032160 d e w i l l c o n t a i n 0032200 a n a n a l y s i s o f t 0032220 h e c u r r e n t s t a t e 0032240 . T h e c o d e v a l u e 0032260 s a r e \r / / \t \t \t d e s c r 0032300 i b e d b e l o w . \r / / n 0032320 P a g e s A l r e a d y P r i n 0032340 t e d p l a c e s a l o w 0032360 e r b o u n d o n t h e 0032400 n P a g e s P r i n t e d r e 0032420 s u l t . T h i s \r / / \t \t 0032440 \t p r e v e n t s l o o p s 0032460 t h r o u g h t h i s c o d 0032500 e f r o m b a c k i n g u 0032520 p t o o f a r . \r / / r u 0032540 n n i n g \t \t t r u e i f c 0032560 a l l e r t h i n k s m a i 0032600 n d r i v e i s a l l o w 0032620 e d t o b e o n f o r 0032640 " r e a d y " \r / / \t \t \t r e s 0032660 u l t , f a l s e o t h e r 0032700 w i s e ( w a i t i n g f o 0032720 r r e a d y ) . \r \r / \0 \a 020 @ 0032740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0032760 \0 \0 001 334 314 \0 \0 \0 036 272 \0 272 366 356 370 366 0033000 / R O S C h e c k f i r s t 0033020 s c r e e n s t h e c u r 0033040 r e n t s t a t u s f o r 0033060 a n y m a l f u n c t i o n 0033100 i n d i c a t i o n s , a n d 0033120 \r / / r e t u r n s r i g h 0033140 t a w a y i f t h e r e 0033160 a r e n o n e . O t h e r w 0033200 i s e , i t a p p l i e s 0033220 t h e c u r r e n t s t a t 0033240 u s \r / / a g a i n s t a 0033260 t a b l e o f p o s s i b 0033300 l e c o n d i t i o n s , y 0033320 i e l d i n g a f a i l u r 0033340 e \r / / c o d e a n d a 0033360 n e w p a g e v a l u e - 0033400 - t h e l a s t p a g e 0033420 c e r t a i n t o h a v e 0033440 b e e n r e l i a b l y \r / / 0033460 p r i n t e d . O n e p o 0033500 s s i b l e c o n d i t i o n 0033520 i s " n o m a l f u n c t 0033540 i o n d e t e c t e d " , w 0033560 h i c h w i l l o n l y \r / 0033600 / b e i s s u e d f o r 0033620 p r i n t e r s t h a t g i 0033640 v e n o p o s i t i v e i 0033660 n d i c a t i o n w h e n t 0033700 h e y a r e m e r e l y \r / 0033720 / b u s y d o i n g \0 \a 020 @ 0033740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0033760 \0 \0 001 334 312 \0 \0 \0 034 272 \0 272 366 356 370 366 0034000 n o r m a l t h i n g s . \r 0034020 / / N . B . @ l v F a i l u 0034040 r e C o d e i s n o t c h 0034060 a n g e d w h e n n o c o 0034100 n d i t i o n s a r e f o u 0034120 n d \r \r / / T h e f a i l u 0034140 r e c o d e s d i v i d e 0034160 i n t o r a n g e s : \r / / 0034200 0 - 9 \t \t N o t r e a d y , 0034220 b u t n o i n d i c a t i o 0034240 n o f p r o b l e m s o r 0034260 w i l l c l e a r u p a 0034300 u t o m a t i c a l l y \r / / \t 0034320 \t ( i n c l u d e s f u s e r 0034340 c o l d , w a r m u p m o 0034360 d e , c l e a r i n g r e v 0034400 o l u t i o n s , e t c . ) \r 0034420 / / 1 0 - 1 9 \t M a n u a l 0034440 i n t e r v e n t i o n r e q 0034460 u i r e d b e f o r e m a c 0034500 h i n e c a n b e c o m e 0034520 r e a d y \r / / \t \t ( p a p e r 0034540 l o w , p o w e r n o t 0034560 t h e r e , e t c . ) \r / / 0034600 2 0 - 9 9 \t J a m s a n d o 0034620 t h e r o p e r a t i o n a l 0034640 m a l f u n c t i o n s ( m 0034660 a n y c o d e s p r o v i d 0034700 e d s o t h a t \r / / \t \t e 0034720 a c h d e v i c e c \0 \a 020 @ 0034740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0034760 \0 \0 001 334 310 \0 \0 \0 032 272 \0 272 366 356 370 366 0035000 a n r e p o r t m a c h i n 0035020 e - d e p e n d e n t j a m 0035040 e x p l a n a t i o n s ) \r / / 0035060 1 0 0 - 2 0 0 \t I n h e r e n 0035100 t p r o b l e m s ( e . g . 0035120 , i n s u f f i c i e n t b 0035140 a n d w i d t h s o m e w h e 0035160 r e ) t h a t a r e \r / / \t 0035200 \t n o t c u r a b l e b y 0035220 m e r e m o r t a l s . A t 0035240 t e m p t s t o i m p r o v 0035260 e t h e s i t u a t i o n 0035300 s h o u l d b e \r / / \t \t a b 0035320 a n d o n e d . \r / / 2 0 0 - 0035340 3 0 0 \t I n h e r e n t p r o 0035360 b l e m s e n c o u n t e r e 0035400 d , b u t t h e y d i d 0035420 n o t t e r m i n a t e p r 0035440 i n t i n g . O n e \r / / \t \t 0035460 s h o u l d e x p e c t t h 0035500 a t o n e o r m o r e p 0035520 a g e s w e r e i m p r o p 0035540 e r l y i m a g e d . \r \r / / 0035560 T h e m a c h i n e - d e p 0035600 e n d e n t c o n t r o l t 0035620 a b l e i s c o n s t r u c 0035640 t e d u s i n g t h i s p 0035660 a t t e r n : \r \r / / s t r u 0035700 c t u r e C T : \r / / \t [ \r 0035720 / / \t i n v e r t \t \t \0 \a 020 @ 0035740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0035760 \0 \0 001 334 306 \0 \0 \0 030 272 \0 272 366 356 370 366 0036000 b i t 1 \r / / \t f a i l u r 0036020 e C o d e \t b i t 7 \r / / \t 0036040 w o r d I n d e x \t b i t 4 \r 0036060 / / \t b i t I n d e x \t b i t 0036100 4 \r / / \t ] \r \r / / i n v 0036120 e r t m e a n s t h a t t 0036140 h e b i t i s o n w h e 0036160 n t h e c o n d i t i o n 0036200 i s n o t a p r o b l e m 0036220 ( e . g . , " R e a d y " ) 0036240 \r / / f a i l u r e C o d e 0036260 s h o u l d b e r e p o r t 0036300 e d w h e n t h e c o n d 0036320 i t i o n s p e c i f i e d 0036340 b y t h e b i t I n d e x ' 0036360 t h \r / / \t \t b i t i n R O S 0036400 s t a t u s w o r d w o r 0036420 d I n d e x i s a p r o b 0036440 l e m . \r / / A c h e c k , 0036460 d e s i g n e d c h i e f l 0036500 y f o r D o v e r , v e r 0036520 i f i e s t h a t t h e l 0036540 a s e r i s o n a n d t 0036560 h e p o l y g o n i s \r / / 0036600 s c a n n i n g ( S O S / E 0036620 O S a r e s e e i n g t h 0036640 i n g s ) , b y m a k i n g 0036660 s u r e t h a t t h e l 0036700 o w f o u r b i t s o f 0036720 t h e l i n e \r / / \0 \a 020 @ 0036740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0036760 \0 \0 001 334 304 \0 \0 \0 026 272 \0 272 366 356 370 366 0037000 c o u n t ( i n d i c a t e d 0037020 i n s t a t u s w o r d ) 0037040 a r e c h a n g i n g . 0037060 T h e c o d e r e a d s t 0037100 h e l i n e c o u n t , w 0037120 a i t s \r / / a p p r o x i m 0037140 a t e l y t h e t i m e n 0037160 e e d e d f o r f o u r s 0037200 c a n l i n e s ( g e n e r 0037220 o u s m a r g i n ) , t h e 0037240 n r e a d s t h e \r / / c 0037260 o u n t a g a i n , r e p o 0037300 r t i n g a p r o b l e m 0037320 i f t h e v a l u e s a r 0037340 e e q u a l . T h i s t e 0037360 s t h a p p e n s o n l y 0037400 w h e n \r / / t h e r u n n 0037420 i n g p a r a m e t e r i s 0037440 f a l s e . T h e w a i t 0037460 t i m e ( s c a n T i c k s 0037500 ) i s c o m p u t e d i n 0037520 P r i n t I n i t , a s : \r 0037540 \r / / R e s o l u t i o n S 0037560 i s s c a l e d b y 1 0 0037600 a s s t o r e d , P a p e r 0037620 S p e e d I n c h e s b y 1 0037640 0 0 . T h e ( f a s t 1 0 0037660 b i t s o f ) \r / / t h e 0037700 R T C t i c k s a t 3 8 0037720 u s e c . i n t e r \0 \a 020 @ 0037740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0037760 \0 \0 001 334 302 \0 \0 \0 024 272 \0 272 366 356 370 366 0040000 v a l s . T h u s t h e # 0040020 t i c k s w a n t e d f o 0040040 r f o u r l i n e s i s : 0040060 \r \r / / ( 4 l i n e s 0040100 x 1 0 ^ 6 u s e c / s e c 0040120 x 1 / 3 8 t i c k / u s 0040140 e c . ) / ( ( P a p e r S p 0040160 e e d I n c h e s / 1 0 0 x 0040200 R e s o l u t i o n S / 1 0 ) 0040220 l i n e s / s e c ) \r \r / / o 0040240 r a b o u t ( 1 0 6 x 1 0040260 0 ^ 3 ) / ( P a p e r S p e 0040300 e d I n c h e s / 1 0 0 x R 0040320 e s o l u t i o n S / 1 0 ) 0040340 t i c k s - - a b o u t 0040360 3 0 f o r D o v e r . \r \r / 0040400 / T h i s i s o n l y a 0040420 p p r o x i m a t e b e c a u 0040440 s e R O S S t a t u s t i m 0040460 e , a b o u t 1 0 t i c k 0040500 s f o r D o v e r , i s 0040520 n o t i n c l u d e d . \r / / 0040540 P a r t o f t h e r e a 0040560 s o n f o r w a i t i n g 0040600 f o u r l i n e t i m e s 0040620 i s t o a c c o u n t f o 0040640 r p o s s i b l e d e l a y 0040660 s i n o b t a i n i n g \r / 0040700 / t h e c o r r e c t l i 0040720 n e c o u n t s t a \0 \a 020 @ 0040740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0040760 \0 \0 001 334 300 \0 \0 \0 022 272 \0 272 366 356 370 366 0041000 t u s . L a t e r , t h i s 0041020 m e t h o d c a n b e u 0041040 s e d t o c h e c k f o r 0041060 c o r r e c t p o l y g o n 0041100 s p e e d . \r / / T h e s 0041120 c a n T i c k s s t a t i c 0041140 i s s h i f t e d l e f t 0041160 b y 6 t o m a t c h t h 0041200 e c l o c k r e a d i n g 0041220 f u n c t i o n ' s r e s u l 0041240 t s \r \r \f / / R O S C h e c k 0041260 ( c o n t ) \r \r a n d R O S 0041300 C h e c k ( l v F a i l u r e C 0041320 o d e , n P a g e s A l r e a 0041340 d y P r i n t e d , r u n n i 0041360 n g ) = v a l o f \r [ \r l e 0041400 t r o s 8 = R O S S t a t 0041420 u s ( 8 ) \r l e t r o s 9 = 0041440 R O S S t a t u s ( 9 ) \r l e 0041460 t l o c a l M o d e , s c a 0041500 n n i n g = n i l , t r u 0041520 e \r / / r e a d y i f n o 0041540 t i n l o c a l m o d e 0041560 a n d i f p r i n t e r - s 0041600 p e c i f i c t e s t s i n 0041620 d i c a t e r e a d y \r l e t 0041640 r e a d y = \t / / P o w 0041660 e r o n , n o m a l f u n 0041700 c t i o n , p a p e r t r a 0041720 y O K , f u s e r \0 \a 020 @ 0041740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0041760 \0 \0 001 334 276 \0 \0 \0 020 272 \0 272 366 356 370 366 0042000 w a r m \r \t ( r o s 9 & # 2 0042020 1 0 0 ) e q # 2 0 0 0 & 0042040 ( r o s 8 & # 2 0 0 4 ) e 0042060 q 4 \r \r i f r e a d y t h 0042100 e n \r \t [ \r \t l o c a l M o d e 0042120 = ( R O S S t a t u s ( 0 ) 0042140 & # 2 0 0 0 0 ) n e 0 \r \t u 0042160 n l e s s r u n n i n g d o 0042200 \r \t [ \r \t l e t l i n 0042220 e C o u n t = R O S S t a t 0042240 u s ( 7 ) & # 1 7 0 0 0 0 \r 0042260 \t l e t r t c = R e a 0042300 d C l o c k ( ) \r \t u n t i 0042320 l ( R e a d C l o c k ( ) - r 0042340 t c ) g e s c a n T i c k s 0042360 l o o p \r \t s c a n n i n 0042400 g = ( R O S S t a t u s ( 7 0042420 ) & # 1 7 0 0 0 0 ) n e l i 0042440 n e C o u n t \r \t ] \r \t i f 0042460 l o c a l M o d e % n o t 0042500 s c a n n i n g t h e n r 0042520 e a d y = f a l s e \r \t ] \r 0042540 \r i f r e a d y % D e b u 0042560 g r e s u l t i s - 1 \r \r / 0042600 / A n a l y z e t a b l e s 0042620 t o i d e n t i f y t h e 0042640 p r o b l e m o r c o n d 0042660 i t i o n p r e v e n t i n g 0042700 r e a d y \r \r l e t t a b 0042720 = t a b l e [ \r \t \0 \a 020 @ 0042740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0042760 \0 \0 001 334 274 \0 \0 \0 016 272 \0 272 366 356 370 366 0043000 1 0 * C o d e + 8 * 0043020 W o r d + 5 * B i t / / 0043040 P T D i s o r d e r - H C h 0043060 e c k p a p e r t r a y \r \t 0043100 2 0 * C o d e + 8 * 0043120 W o r d + 1 0 * B i t / / 0043140 2 7 L S - H J a m - - p 0043160 a p e r f e e d \r \t 2 1 * C o 0043200 d e + 8 * W o r d 0043220 + 1 4 * B i t + M a l F n 0043240 R e q / / L o s t P o w e r 0043260 - H L o s t e n g i n e p 0043300 o w e r \r \t 2 2 * C o d e 0043320 + 9 * W o r d + 1 * 0043340 B i t / / P h o t o C e l l 0043360 O u t - H J a m - - p a p e r 0043400 o n d r u m \r \t 2 3 * C o d 0043420 e + 9 * W o r d + 0043440 2 * B i t / / P r e S e 0043460 q - H J a m - - s t a r t 0043500 u p s e q u e n c e \r \t 2 4 * 0043520 C o d e + 9 * W o r 0043540 d + 6 * B i t / / 3 8 0043560 L S - H J a m - - p a p e r 0043600 o n f u s e r r o l l \r \t 2 0043620 5 * C o d e + 9 * W 0043640 o r d + 1 0 * B i t / / 0043660 3 L S - H J a m - - p a p e r 0043700 o n d r u m \r \t 1 4 * C o d 0043720 e + 8 * W o \0 \a 020 @ 0043740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0043760 \0 \0 001 334 272 \0 \0 \0 \f 272 \0 272 366 356 370 366 0044000 r d + 1 3 * B i t + I n 0044020 v e r t / / R e a d y T e m 0044040 p - H F u s e r n o t w a 0044060 r m \r \t 1 2 * C o d e + 0044100 9 * W o r d + 5 * B i 0044120 t + I n v e r t / / A C 0044140 M o n i t o r - H E n g i n e 0044160 n o t p o w e r e d u p \r 0044200 \t 2 6 * C o d e + 9 0044220 * W o r d + 9 * B i t / 0044240 / M a l f u n c t i o n - H 0044260 u n e x p l a i n e d m a l f 0044300 u n c t i o n \r \t 0 ] \r / / 0044320 C o d e s g e n e r a t e d 0044340 e l s e w h e r e : \r / / \t 7 0044360 - - n o s p e c i f i c 0044400 m a l f u n c t i o n d e t e 0044420 c t e d , b u t s o m e t h 0044440 i n g i s w r o n g \r / / \t 0044460 1 6 - - p a g e s y n c 0044500 n e v e r t u r n e d o f f 0044520 \r / / \t 1 7 - - s e v e r a 0044540 l c o n s e c u t i v e u n 0044560 i d e n t i f i e d e r r o r 0044600 s \r / / \t 1 8 - - O r b i t 0044620 t i m e d o u t - - p a 0044640 g e s y n c n e v e r a r 0044660 r i v e d , o r e n g i n e 0044700 d i e d o r g o t b e h 0044720 i n d \r / / \t 1 9 - - \0 \a 020 @ 0044740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0044760 \0 \0 001 334 270 \0 \0 \0 \n 272 \0 272 366 356 370 366 0045000 A l t o c o d e t i m e d 0045020 o u t - - s a m e s y m 0045040 p t o m s \r / / \t 3 0 0 - - 0045060 O r b i t g o t b e h i n d 0045100 , b u t p a g e t e r m i 0045120 n a t e d n o r m a l l y \r / 0045140 / \t 3 0 1 - - O r b i t g 0045160 o t b e h i n d , h a d t 0045200 o q u i t e a r l y \r / / \t 0045220 3 1 0 - - L e f t o v e r 0045240 t a b l e g o t t o o l 0045260 a r g e . P l e a s e r e p 0045300 o r t t o f i x e r . \r \r l 0045320 e t b i t s = t a b l e 0045340 [ # 1 0 0 0 0 0 ; \r \t # 4 0045360 0 0 0 0 ; \t # 2 0 0 0 0 ; \t 0045400 # 1 0 0 0 0 \r \t # 4 0 0045420 0 0 ; \t # 2 0 0 0 ; \t 0045440 # 1 0 0 0 \r \t # 4 0 0 0045460 ; \t # 2 0 0 ; \t 0045500 # 1 0 0 \r \t # 4 0 ; \t 0045520 # 2 0 ; \t # 0045540 1 0 \r \t # 4 ; \t 0045560 # 2 ; \t # 1 0045600 \t ] \r \r / / C o n d i t i o n 0045620 i n t e r p r e t e r \r \r l e 0045640 t c o d e = 0 \r \t \t w h i 0045660 l e @ t a b d o \r \t \t \t [ \r 0045700 \t \t \t l e t e n t r y = @ 0045720 t a b \r \t \t \t l e t i \0 \a 020 @ 0045740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0045760 \0 \0 001 334 266 \0 \0 \0 \b 272 \0 272 366 356 370 366 0046000 s B i t = ( R O S S t a t u 0046020 s ( e n t r y < < C T . w o r d 0046040 I n d e x ) & b i t s ! ( e 0046060 n t r y < < C T . b i t I n d e 0046100 x ) ) n e 0 ? 1 , 0 \r \t 0046120 \t i f i s B i t n e 0046140 e n t r y < < C T . i n v e r t 0046160 & ( e n t r y < < C T . 0046200 m a l F n R e q e q 0 % 0046220 ( r o s 9 & # 1 0 0 ) n e 0 0046240 ) t h e n \r \t \t \t \t [ c o d 0046260 e = e n t r y < < C T . f a 0046300 i l u r e C o d e ; b r e a k 0046320 ] \r \t \t \t t a b = t a b 0046340 + 1 \r \t \t \t ] \r / / N o o 0046360 t h e r e x p l i c i t p r 0046400 o b l e m s , r e p o r t l 0046420 o c a l m o d e , o r l a 0046440 s e r o f f , o r u n k n 0046460 o w n p r o b l e m \r u n l e 0046500 s s c o d e d o c o d e 0046520 = l o c a l M o d e ? 1 1 , 0046540 s c a n n i n g e q 0 ? 0046560 1 3 , 7 \r @ l v F a i l u r e 0046600 C o d e = c o d e \r l e t 0046620 b a c k u p = c o d e l 0046640 e m a x M a n u a l ? 0 , 0046660 c o d e < 3 0 ? 2 , 1 0046700 \r r e s u l t i s M a x ( n 0046720 P a g e s A l r e a d y \0 \a 020 @ 0046740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0046760 \0 \0 001 334 264 \0 \0 \0 006 272 \0 272 366 356 370 366 0047000 P r i n t e d , n P a g e s P 0047020 r i n t e d - b a c k u p ) \r ] 0047040 \r \f / / - - - - - - - - - - - 0047060 - - - - - - - - - - - - - - - - 0047100 - - - - - - - - - - - - - - \r / 0047120 / E n g i n e c o n t r o l 0047140 s o f v a r i o u s s o r 0047160 t s . \r / / - - - - - - - - - 0047200 - - - - - - - - - - - - - - - - * 0047240 \r \r a n d F e e d A S h e e t 0047260 ( ) b e \r [ \r \t \t M e a s u 0047300 r e ( # 2 0 , t r u e ) \r \t \t D 0047320 o F u n c ( f R O S C o m m a n 0047340 d , a d E x t e r n a l C o m 0047360 m a n d 1 + 1 ) \r \t \t D o F u n 0047400 c ( f R O S C o m m a n d , a 0047420 d E x t e r n a l C o m m a n d 0047440 1 ) \r \t \t M e a s u r e ( # 2 0 0047460 , f a l s e ) \r ] \r / / - - - 0047500 - - - - - - - - - - - - - - - - * 0047540 - - - - - - \r / / H a r d w a 0047560 r e s e t u p f o r v a r 0047600 i o u s d e v i c e s . \r / / 0047620 - - - - - - - - - - - - - - - 0047640 - - - - - - - - - - - - - - - - 0047660 - - - - - - - - - - \r \r a n d 0047700 I n i t i a l i z e H a r d w a 0047720 r e ( s t o p ) b e \r \0 \a 020 @ 0047740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0047760 \0 \0 001 334 262 \0 \0 \0 004 272 \0 272 366 356 370 366 0050000 [ \t i f D e b u g r e t u r 0050020 n \r \t I n i t R a m ( 0 ) \t \t \t 0050040 / / R e s e t a l l R A M 0050060 t a s k s , r e s t a r t T 0050100 r i d e n t i f n e c e s s 0050120 a r y \r \r \t D o F u n c ( f C o 0050140 n t r o l , 1 ) \t \t / / R e s 0050160 e t O r b i t \r \r \t D o F u 0050200 n c ( f R O S C o m m a n d , 0050220 a d E x t e r n a l C o m m a n 0050240 d 1 ) \r ] \r \r a n d B l a s t 0050260 ( ) b e I n i t i a l i z e 0050300 H a r d w a r e ( f a l s e ) \r 0050320 \r / / B W B N o v e m b e r 1 0050340 3 , 1 9 7 8 1 2 : 0 3 P 0050360 M d e r i v e d f r o m 0050400 S p r u c e P r i n t \r / / D 0050420 e c e m b e r 7 , 1 9 7 8 0050440 3 : 3 0 P M c l e a n u p 0050460 \r / / A p r i l 2 7 , 1 9 0050500 7 9 1 1 : 4 5 A M , a d 0050520 d D o v e r E n g i n e C 0050540 o n t r o l M o n i t o r i n 0050560 g c o d e , s e e S p r u 0050600 c e M e a s u r e , b y S w 0050620 i n e h a r t \r / / \t a d d 0050640 a b i l i t y t o p l a c 0050660 e f o n t s i n b a n k 0050700 1 - - s e e a l l u s e 0050720 s o f x m F o n t s \0 \a 020 @ 0050740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0050760 \0 \0 001 334 260 \0 \0 \0 002 272 \0 272 366 356 370 366 0051000 \r / / \t r e p a i r b u g 0051020 i n B a n k B l t i n t e 0051040 r f a c e f o r x m F o n t 0051060 s s t u f f \r / / M a y 2 0051100 3 , 1 9 7 9 2 : 0 5 P M 0051120 c l e a n u p \r / / J a n u 0051140 a r y 2 8 , 1 9 8 1 1 2 : 0051160 4 0 P M d o n ' t s w a 0051200 t i f b a d b a n d e n 0051220 t r y p r o b a b l y d u e 0051240 t o l e f t o v e r o v e 0051260 r f l o w \r / / \r \r \0 \0 \0 \0 \0 \0 0051300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0051720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \a 020 @ 0051740 377 v 037 \0 002 { 035 \0 \0 ( 027 006 \0 \0 @ 0051760 \0 \0 \0 272 256 \0 \0 \0 \0 272 \0 272 366 356 370 366 0052000