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