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