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