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