$ od -c -N 50000 [_CD8_]<doradosource>MEMASOURCE.DM!15 0000000 377 \0 \0 m e m A t o I n d i g o . 0000020 c m \0 373 230 222 314 016 \0 \0 376 \0 263 & 213 f 0000040 t p i n d i g o c o n n / c 0000060 d o r a d o S o u r c e t p 0000100 a i p a d u m p m e m A S o 0000120 u r c e . d m @ m e m A . f i 0000140 l e s @ d u m p / c d i a g 0000160 n o s t i c S u b r s . d m @ 0000200 d i a g n o s t i c S u b r s . 0000220 f i l e s @ c o n n / c d o 0000240 r a d o t p a i p a d u m p 0000260 m e m A . d m m e m A . m b 0000300 @ m e m A m i d a s . f i l e 0000320 s @ 377 \0 \0 m e m A t o m a x c . 0000340 c m \0 373 224 302 j 344 \0 \0 376 001 \0 B ] f 0000360 t p m a x c c o n n / c d 0000400 1 s o u r c e t p a i p a d 0000420 u m p m e m A S o u r c e . d 0000440 m @ m e m A . f i l e s @ d 0000460 u m p / c m e m c S o u r c e 0000500 . d m @ m e m c . f i l e s @ 0000520 d u m p / c m e m x S o u r 0000540 c e . d m @ m e m x . f i l e 0000560 s @ d u m p / c m e m d S o 0000600 u r c e . d m @ m e m d . f i 0000620 l e s @ d u m p / c m e m s 0000640 S o u r c e . d m @ m e m S . 0000660 f i l e s @ d u m p / c d i 0000700 a g n o s t i c S u b r s . d m 0000720 @ d i a g n o s t i c S u b r 0000740 s . f i l e s @ c o n n / c 376 0000760 \0 1 . 240 d 1 t p a i p a d 0001000 u m p m e m A . d m m e m A 0001020 . m b @ m e m A m i d a s . f 0001040 i l e s @ 377 \0 \0 m e m A t o L o 0001060 g i n . c m \0 373 224 302 j 344 \0 \0 376 \0 0001100 245 L 274 f t p i v y d u m p / 0001120 c d o r a d o S o u r c e > m 0001140 e m A S o u r c e . d m @ m e 0001160 m A . f i l e s @ d u m p / c 0001200 d o r a d o S o u r c e > d i 0001220 a g n o s t i c S u b r s . d m 0001240 @ d i a g n o s t i c S u b r 0001260 s . f i l e s @ d u m p / c 0001300 d o r a d o > m e m A . d m m 0001320 e m A . m b @ m e m A m i d a 0001340 s . f i l e s @ 377 \0 \0 m e m A m 0001360 i d a s . f i l e s \0 373 224 302 j 344 0001400 \0 \0 376 \0 k 370 6 m e m A . m i d a 0001420 s s h o w C . m i d a s s h 0001440 o w X . m i d a s s h o w D . 0001460 m i d a s s h o w S . m i d a 0001500 s s h o w C h a o s . m i d a 0001520 s s h o w a p . m i d a s s 0001540 h o w S c h e c k o u t . m i d 0001560 a s 377 \0 \0 m e m A . f i l e s \0 0001600 373 230 222 313 353 \0 \0 376 001 \0 - 243 m e m A 0001620 t o I n d i g o . c m m e m A 0001640 t o m a x c . c m m e m A t o 0001660 L o g i n . c m ^ \r m e m A m 0001700 i d a s . f i l e s m e m A . 0001720 f i l e s ^ \r m e m A . c m 0001740 m e m A S a v e . c m m e m D 0001760 e f s . c m m e m P o s t a m 0002000 b l e . c m ^ \r m e m S u b r 0002020 s C . c m m e m S u b r s X . 0002040 c m m e m S u b r s D . c m 0002060 m e m S u b r s S . c m m e m 0002100 S u b r s A . c m m e m S u b 0002120 r s C h a o s . c m m e m A o 0002140 n l y . c m m e m A p l a c e 0002160 . c m m e m R W c . c m m e 0002200 m R W x . c m m e m R 376 \0 [ 001 0002220 H W d . c m m e m R W s . c m 0002240 m e m C h a o s S . c m ^ \r 0002260 m e m A . m c m e m R W c . m 0002300 c m e m R W x . m c m e m R 0002320 W d . m c m e m R W s . m c 0002340 m e m C h a o s S . m c 377 \0 \0 m 0002360 e m A . c m \0 373 224 302 j 344 \0 \0 376 001 0002400 \0 245 ` / / \r / / C o n s t r 0002420 u c t t h e m e m o r y " 0002440 A " d i a g n o s t i c s e 0002460 n t i r e l y f r o m s o u 0002500 r c e s . \r / / F e b r u a r 0002520 y 2 8 , 1 9 7 9 1 1 : 1 0002540 5 A M \r @ m e m A s a v e . c 0002560 m @ / / a s s e m b l e s 0002600 t w o d e f i n i t i o n s 0002620 f i l e s \r @ m e m P o s t a 0002640 m b l e . c m @ \r @ m e m S u b 0002660 r s C . c m @ \r @ m e m S u b r 0002700 s X . c m @ \r @ m e m S u b r s 0002720 D . c m @ \r @ m e m S u b r s S 0002740 . c m @ \r @ m e m S u b r s C h 0002760 a o s . c m @ \r @ m e m S u b r 0003000 s A . 376 \0 222 357 204 c m @ \r @ m e m 0003020 R W c . c m @ \r @ m e m R W d . 0003040 c m @ \r @ m e m R W x . c m @ \r 0003060 @ m e m R W s . c m @ \r @ m e m 0003100 C h a o s S . c m @ \r @ m e m A 0003120 o n l y . c m @ \r / / @ m e m 0003140 A f i o . c m @ \r @ m e m A p l 0003160 a c e . c m @ / / p l a c 0003200 e a l l t h e a s s e m b 0003220 l e d f i l e s \r 377 \0 \0 m e m 0003240 A S a v e . c m \0 373 223 262 231 323 \0 \0 0003260 376 \0 366 016 H / / A s s e m b l e 0003300 d 1 L a n g , k e r n e l A 0003320 l u a n d P r e a m b l l e 0003340 . S a v e t h e d e f i n 0003360 i t i o n s o n " m e m A S 0003400 a v e D e f s . s t " \r / / A 0003420 s s e m b l e m e m D e f s . 0003440 m c a n d s a v e t h e 0003460 d e f i n i t i o n s u p o n 0003500 " m e m D e f s . s t " \r / / 0003520 N o v e m b e r 2 6 , 1 9 0003540 7 8 1 : 2 3 P M \r m i c r 0003560 o / u m e m A S a v e D e f s 0003600 / s / b d 1 L a n g k e r n 0003620 e l A l u p r e a m b l e \r @ 0003640 m e m D e f s . c m \r 377 \0 \0 m e 0003660 m D e f s . c m \0 373 223 262 231 323 \0 \0 0003700 376 \0 211 263 224 / / A s s e m b l e 0003720 m e m D e f s . m c a n d 0003740 s a v e t h e d e f i n i t 0003760 i o n s u p o n " m e m D e 0004000 f s . s t " \r / / N o v e m b 0004020 e r 2 6 , 1 9 7 8 1 : 2 0004040 3 P M \r m i c r o / u m e m 0004060 A S a v e D e f s / r m e m D 0004100 e f s / s m e m D e f s \r 377 \0 0004120 \0 m e m P o s t a m b l e . c m 0004140 \0 373 223 262 231 323 \0 \0 376 \0 - 357 241 m i c 0004160 r o / u / o m e m D e f s / r 0004200 m e m P o s t a m b l e / b 0004220 p o s t a m b l e \r 377 \0 \0 m e m 0004240 S u b r s C . c m \0 373 223 262 231 323 \0 0004260 \0 376 \0 036 O o m i c r o / u / o 0004300 m e m D e f s / r m e m S u b 0004320 r s C \r 377 \0 \0 m e m S u b r s X 0004340 . c m \0 373 223 262 231 323 \0 \0 376 \0 036 d o 0004360 m i c r o / u / o m e m D e f 0004400 s / r m e m S u b r s X \r 377 \0 0004420 \0 m e m S u b r s D . c m \0 373 223 0004440 262 231 323 \0 \0 376 \0 036 P o m i c r o / 0004460 u / o m e m D e f s / r m e 0004500 m S u b r s D \r 377 \0 \0 m e m S u 0004520 b r s S . c m \0 373 223 262 231 323 \0 \0 376 0004540 \0 036 _ o m i c r o / u / o m e 0004560 m D e f s / r m e m S u b r s 0004600 S \r 377 \0 \0 m e m S u b r s A . c 0004620 m \0 373 223 262 231 323 \0 \0 376 \0 036 M o m i 0004640 c r o / u / o m e m D e f s / 0004660 r m e m S u b r s A \r 377 \0 \0 m 0004700 e m S u b r s C h a o s . c m \0 0004720 373 224 302 j 344 \0 \0 376 \0 " $ J m i c r 0004740 o / u / o m e m D e f s / r 0004760 m e m S u b r s C h a o s \r 377 \0 0005000 \0 m e m A o n l y . c m \0 373 224 302 0005020 j 344 \0 \0 376 \0 031 $ v m i c r o / u 0005040 / o m e m D e f s / r m e m 0005060 A \r 377 \0 \0 m e m A p l a c e . c 0005100 m \0 373 227 327 u 320 \0 \0 376 \0 244 304 371 m i 0005120 c r o d / i / n m e m A s a v 0005140 e D e f s m e m D e f s m e 0005160 m P o s t a m b l e m e m S u 0005200 b r s C m e m S u b r s D m 0005220 e m S u b r s X m e m S u b r 0005240 s S m e m S u b r s A m e m 0005260 S u b r s C h a o s m e m C h 0005300 a o s S m e m R W c m e m R 0005320 W d m e m R W x m e m R W 0005340 s m e m A / / m e m A f i 0005360 o \r 377 \0 \0 m e m R W c . c m \0 373 0005400 224 302 j 344 \0 \0 376 \0 033 { 354 m i c r o 0005420 / u / o m e m D e f s / r m 0005440 e m R W c \r 377 \0 \0 m e m R W x . 0005460 c m \0 373 224 302 j 344 \0 \0 376 \0 033 | 001 m 0005500 i c r o / u / o m e m D e f s 0005520 / r m e m R W x \r 377 \0 \0 m e m 0005540 R W d . c m \0 373 224 302 j 344 \0 \0 376 \0 0005560 033 { 355 m i c r o / u / o m e m 0005600 D e f s / r m e m R W d \r 377 \0 0005620 \0 m e m R W s . c m \0 373 224 302 j 344 0005640 \0 \0 376 \0 033 { 374 m i c r o / u / o 0005660 m e m D e f s / r m e m R W 0005700 s \r 377 \0 \0 m e m C h a o s S . c 0005720 m \0 373 224 302 j 344 \0 \0 376 \0 036 O ^ m i 0005740 c r o / u / o m e m D e f s / 0005760 r m e m C h a o s S \r 377 \0 \0 m 0006000 e m A . m c \0 373 224 302 j 344 \0 \0 376 001 0006020 \0 364 332 % \r P a g e N u m b e r 0006040 s : Y e s F i r s t P a g 0006060 e : 1 \r H e a d i n g : 032 q ( 0006100 2 0 4 8 ) \r m e m A . m c ( m 0006120 e m - A L L ) \t F e b r u a r y 0006140 1 , 1 9 8 0 8 : 5 2 P 0006160 M \t % 032 y 7 5 6 q c \ b \r t i t 0006200 l e [ m e m A ] ; \r t o p l e 0006220 v e l ; \r * D e c e m b e r 0006240 1 9 , 1 9 7 7 8 : 1 1 A 0006260 M \r % 032 e 3 ( 0 , 3 9 6 8 ) ( 1 0006300 , 1 1 1 8 3 ) \ 5 4 b \r A B O U 0006320 T S O U R C E F I L E M A 0006340 I N T E N A N C E 032 e 3 c \ b 2 0006360 9 B \r T h e s o u r c e s l 0006400 i v e o n < d 1 s o u r c e 0006420 > m e 376 001 \0 320 r m A l l S o u r 0006440 c e . d m a n d < d 1 s o u 0006460 r c e > d i a g n o s t i c S u 0006500 b r s . d m . B y l o a d i 0006520 n g t h o s e f i l e s t 0006540 h e u s e r a c q u i r e s 0006560 a l l t h e f i l e s n 0006600 e c e s s a r y t o a s s e 0006620 m b l e a n e w v e r s i 0006640 o n o f m e m A l l : 032 e 3 0006660 \r m e m A . c m \t / / a s s e 0006700 m b l e a n d p l a c e m 0006720 e m A l l . m c \r m e m A . m c 0006740 \t / / c o n t r o l f i l e 0006760 \r \r s e e " i n s e r t " c 0007000 o m m a n d s b e l o w f o 0007020 r t h e s u 376 001 \0 035 c b r o 0007040 u t i n e f i l e s u s e d 0007060 b y t h i s p r o g r a m 0007100 \r \r m e m A . m i d a s \t / / 0007120 s e t u p m i d a s c o n 0007140 t e x t \r m e m A t o I f s . c 0007160 m \t / / m a k e n e w : [ 0007200 i f s ] < d 1 s o u r c e > m e 0007220 m A S o u r c e . d m , < d 1 > 0007240 m e m A l l . d m \r m e m A . f 0007260 i l e s \t / / l i s t o f 0007300 m e m A l l f i l e s p u t 0007320 i n m e m A S o u r c e . d 0007340 m \r p r e a m b l e . m c \t / / 0007360 p r e a m b l e c o d e t 0007400 h a t t h a t p r e c e e d 0007420 s m e m A l l \r p o s t 376 001 \0 0007440 / = a m b l e . m c \t / / p o 0007460 s t a m b l e c o d e t h a 0007500 t t h a t f o l l o w s m 0007520 e m A l l \r k e r n e l a l u . 0007540 m c \t / / d e f i n e s a l 0007560 u o p s f o r t h i s d 0007600 i a g n o s t i c \r T o m a k 0007620 e a n e w v e r s i o n 0007640 o f m e m A : \r \t f t p m 0007660 a x c l o a d < d 1 s o u r 0007700 c e > m e m A S o u r c e . d m 0007720 , l o a d < d 1 s o u r c e 0007740 > d i a g n o s t i c S u b r s 0007760 . d m \r \t < m a k e y o u r 0010000 c h a n g e s i n m e m A . 0010020 m c > \r \t @ m e m A . c m \t / / 0010040 a 376 001 \0 315 027 s s e m b l e a 0010060 n d p l a c e t h e m i c 0010100 r o c o d e \r \t @ m e m A T o I 0010120 F S . c m \t / / m o v e t h 0010140 e s o u r c e s , . m b f 0010160 i l e t o m a x c \r % 032 e 3 0010200 \r % 032 e 3 \r F e b r u a r y 1 0010220 , 1 9 8 0 8 : 5 2 P M \r 0010240 \t a d d r e s t a r t D i a g 0010260 n o s t i c l a b e l a n d 0010300 c o d e . 032 e 3 \r J u n e 2 0010320 5 , 1 9 7 9 2 : 1 0 P M 0010340 \r \t r e s e t I f u i n s i d 0010360 e i n i t M e m T e s t . 032 e 0010400 3 \r % 032 e 3 \r 032 e 3 \r a f t e r 0010420 S u b r s : \r r e s t a r t D i 0010440 a g n o s t i 376 001 \0 G L c : \r \t 0010460 t _ 1 c ; \r \t s t k p _ t ; \r b 0010500 e g i n : \r \t c a l l [ i n i t 0010520 M e m T e s t ] ; ; \r * n o w 0010540 t p c [ 1 7 ] _ 7 7 7 7 C 0010560 . m i d a s p u t s a b 0010600 r e a k p o i n t i n t h i 0010620 s a d d r e s s . a n y w a 0010640 k e u p s \r * a r e p r o b 0010660 a b l y e r r o r s - - u 0010700 n l e s s s p e c i f i c a l 0010720 l y m a n a g e d b y t h 0010740 e c o d e \r * \t c a l l [ a 0010760 H a l t T a s k 1 7 ] ; \r \r \t c 0011000 a l l [ d i s a b l e C o n d i 0011020 t i o n a l T a s k ] ; \r \t c a 0011040 l l [ b e g i n C t e s 376 001 \0 245 0011060 254 t ] ; \r a f t e r C t e s t : 0011100 \r \t c a l l [ i n i t M e m T e 0011120 s t ] ; \r \t c a l l [ b e g i n 0011140 X t e s t ] ; \r a f t e r X t e 0011160 s t : \r \t c a l l [ i n i t M e 0011200 m T e s t ] ; \r \t c a l l [ b e 0011220 g i n D t e s t ] ; \r a f t e r 0011240 D t e s t : \r \t c a l l [ i n i 0011260 t M e m T e s t ] ; \r \t c a l l 0011300 [ b e g i n S t e s t ] ; \r a f 0011320 t e r S t e s t : \r % \r \t c a l 0011340 l [ i n i t M e m T e s t ] ; \r 0011360 \t i n s e r t [ m e m P i p e A 0011400 n d F a u l t A ] \r \t c a l l [ 0011420 i n i t M e m T e s t ] ; \r \t g 0011440 o t o [ b e g i n F I O t e s t 0011460 ] 376 001 \0 020 ; ; \r a f t e r F I O 0011500 t e s t : \r % \r a f t e r T e s 0011520 t : \r \t c a l l [ i n i t M e m 0011540 T e s t ] ; \r \t b r a n c h [ d 0011560 o n e ] ; \r i n i t M e m T e s 0011600 t : s u b r o u t i n e ; \r \t 0011620 R B A S E _ r b a s e [ d e 0011640 f a u l t R e g i o n ] ; \r \t r 0011660 s c r _ l i n k ; \r \t t o p 0011700 l e v e l ; \r \t t _ r 0 _ 0011720 t - t , i f u R e s e t ; \r 0011740 \t r m 1 _ c m 1 ; \r \t r 1 0011760 _ t + 1 ; \r \t r h i g h 1 0012000 _ 1 0 0 0 0 0 C ; \r \t r 0 1 0012020 _ n o t ( r 1 0 ) ; \r \t t 0012040 _ ( r 0 ) + 1 ; \r \t s t k p 0012060 _ t ; \r \t 376 001 \0 a 004 P r o c S 0012100 R N _ r 0 ; \r \t r e t u r n U s 0012120 i n g [ r s c r ] ; \r \f \r * N 0012140 o v e m b e r 2 9 , 1 9 7 7 0012160 1 0 : 3 1 A M \r * C O D 0012200 E f o r m i d a s d e b u 0012220 g g i n g \r \t t o p l e v e l 0012240 ; \r s e t [ d b g T b l s , 1 0 0012260 0 ] ; \r l 1 : \t b r a n c h [ 0012300 l 1 ] , \t a t [ d b g T b l s , 0012320 0 ] ; \r l 2 : \t n o o p , \t a t 0012340 [ d b g T b l s , 1 ] ; \r \t b r 0012360 a n c h [ l 2 ] , \t a t [ d b g 0012400 T b l s , 2 ] ; \r l 3 : \t n o o 0012420 p , \t a t [ d b g T b l s , 3 ] 0012440 ; \r \t n o o p , \t a t [ d b g T 0012460 b l s , 4 ] ; \r \t b r 376 001 \0 373 205 0012500 a n c h [ l 3 ] , \t a t [ d b g 0012520 T b l s , 5 ] ; \r l 4 : \t n o o 0012540 p , \t a t [ d b g T b l s , 6 ] 0012560 ; \r \t n o o p , \t a t [ d b g T 0012600 b l s , 7 ] ; \r \t n o o p , \t a 0012620 t [ d b g T b l s , 1 0 ] ; \r \t 0012640 b r a n c h [ l 4 ] , \t a t [ d 0012660 b g T b l s , 1 1 ] ; \r l 5 : \t 0012700 n o o p , \t a t [ d b g T b l s 0012720 , 1 2 ] ; \r \t n o o p , \t a t [ 0012740 d b g T b l s , 1 3 ] ; \r \t n o 0012760 o p , \t a t [ d b g T b l s , 1 0013000 4 ] ; \r \t n o o p , \t a t [ d b 0013020 g T b l s , 1 5 ] ; \r \t b r a n 0013040 c h [ l 5 ] , \t a t [ d b g T b 0013060 l s , 1 6 ] ; \r l 6 : \t n o o p 0013100 376 001 \0 355 = , \t a t [ d b g T b l 0013120 s , 1 7 ] ; \r \t n o o p , \t a t 0013140 [ d b g T b l s , 2 0 ] ; \r \t n 0013160 o o p , \t a t [ d b g T b l s , 0013200 2 1 ] ; \r \t n o o p , \t a t [ d 0013220 b g T b l s , 2 2 ] ; \r \t n o o 0013240 p , \t a t [ d b g T b l s , 2 3 0013260 ] ; \r \t b r a n c h [ l 6 ] , \t 0013300 a t [ d b g T b l s , 2 4 ] ; \r 0013320 \r b r a n c h [ b e g i n ] ; \r 0013340 \r E N D ; 032 e 3 \ b 1 0 B 2 b 1 0013360 8 B 1 7 b 5 B 1 6 3 b 2 2 B 5 1 0013400 b 1 1 B 4 0 b 1 1 B 4 0 b 1 1 B 0013420 4 0 b 1 1 B 9 0 b 1 3 B 3 b 1 0 0013440 B 3 6 b 1 2 B 3 0 1 b 2 B 3 0 b 0013460 2 B 5 1 b 2 B 7 3 b 2 B 9 7 b 2 0013500 B 1 2 2 b 376 \0 031 \ ] 2 B \r 032 e 3 0013520 ( 0 , 6 5 5 3 5 ) ( 1 , 6 5 5 3 0013540 5 ) \r 377 \0 \0 m e m R W c . m c \0 0013560 373 226 252 \a 204 \0 \0 376 001 \0 256 V % \r P a 0013600 g e N u m b e r s : Y e s 0013620 F i r s t P a g e : 1 \r H e 0013640 a d i n g : 032 q ( 2 0 4 8 ) \r M 0013660 O D E L 1 : m e m r w C . 0013700 m c \t F e b r u a r y 5 , 1 0013720 9 8 1 5 : 5 7 P M \t % 032 y 0013740 7 5 6 q c \ b \r t i t l e [ m e 0013760 m r w C ] ; \r t o p l e v e l 0014000 ; \r % \r F e b r u a r y 5 , 0014020 1 9 8 1 5 : 5 7 P M \r \t A 0014040 d d t o p l e v e l d e c l 0014060 t o s i n g l e S t e p t 0014100 o s a t i s f y m i c r o . 0014120 032 \r S e p t e m b e r 1 9 , 0014140 1 9 7 9 6 : 2 3 P M \r \t M 0014160 o v e b e g i n C T e 376 001 \0 317 0014200 Q s t t o b e g i n n i n g 0014220 o f f i l e , c a l l d 0014240 i s a b l e C o n d i t i o n a 0014260 l T a s k f r o m b e g i n 0014300 C t e s t , a d d t a b l e 0014320 o f c o n t e n t s , r e 0014340 m o v e s u r p l u s c o d 0014360 e f r o m c a c h e C o m p 0014400 r T e s t . A d d l o s t 0014420 m o d s t h a t c o n s t 0014440 r u c t e d a n d u s e d 0014460 c c C o l W r i t e ( t o s 0014500 a v e s p a c e & s i m p 0014520 l i f y t h e l o g i c ) 0014540 - - c h a n g e d c a c h e 0014560 A d d r a n d c a c h e C o 0014600 m 376 001 \0 027 364 p r . 032 \r % \r % * + 0014620 + + + + + + + + + + + + + + + + * 0014720 + + + + + + + + + + + + + 032 \r T 0014740 A B L E O F C O N T E N T S 0014760 , b y o r d e r o f O c 0015000 c u r e n c e 032 c \ b \r b e g i 0015020 n C t e s t \t C o n t r o l s 0015040 u b r o u t i n e t h a t c 0015060 a l l s t h e t e s t s i 0015100 n t h i f i l e \r c P i p e 0015120 V A : \t T e s t t h e l o w 0015140 1 6 b i t s o f t h e 0015160 p i p e \r c B R r w T e s t : \t 0015200 T e s t a 376 001 \0 271 # l l t h 0015220 e b i t s o f t h e b a 0015240 s e r e g i s t e r s \r c a c 0015260 h e A d d r : \t T e s t t h e 0015300 C a c h e A - M e m o r y \r 0015320 c a c h e C o m p r : \t T e s t 0015340 t h e c a c h e c o m p a 0015360 r a t o r s \r c c C o l W r i t 0015400 e : \t S u b r o u t i n e t o 0015420 w r i t e C a c h e A . 0015440 \r c F l a g s T e s t : \t T e s 0015460 t c a c h e f l a g s m e 0015500 m o r y \r c a c h e A d d r T e 0015520 s t : \t C a c h e A a d d r 0015540 e s s i n g t e s t \r s e t C 0015560 A A F : \t S e t c u r r e n t 0015600 c a c h e l o c a 376 001 \0 214 Y 0015620 t i o n a n d c a c h e f 0015640 l a g s t o a l l o n e s 0015660 \r r e s a d C u r r e n t C F l 0015700 a g s : \t R e a d " c u r r e 0015720 n t " v a l u e o f C F l 0015740 a g s \r r e a d O l d C f l a g 0015760 s : \t R e a d " o l d " v a 0016000 l u e o f C F l a g s \r r e 0016020 a d C u r r e n t C A m e m : \t 0016040 R e a d c u r r e n t C a c 0016060 h e A m e m o r y \r r e a d O 0016100 l d C A m e m : \t R e a d " o 0016120 l d " v a l u e o f C a c 0016140 h e A m e m o r y \r % * + + + 0016160 + + + + + + + + + + + + + + + + * 0016220 376 001 \0 305 275 + + + + + + + + + + + 0016240 + + + + + + + + + + + + + + + + * 0016300 \r \f \r * S e p t e m b e r 1 0016320 9 , 1 9 7 9 7 : 1 4 P M 0016340 032 \ b 1 0 B 5 3 b 8 B 3 4 b 1 0 0016360 B 4 1 b 1 0 B 2 5 b 1 1 B 2 8 b 0016400 1 1 B 3 1 b 1 1 B 2 5 b 1 4 B 2 0016420 5 b 8 B 5 6 b 1 9 B 3 2 b 1 4 B 0016440 2 8 b 1 7 B 2 8 b 1 3 B \r b e g 0016460 i n C t e s t : t o p l e v 0016500 e l ; \t * F I R S T T E S T 0016520 I N M E M R W C \r \t p u s h 0016540 R e t u r n [ ] ; \r \t c a l l [ 0016560 d i s a b l e C o n d i t i o n 0016600 a l T a s k ] ; \r \t c a l l [ c 0016620 P i p e V 376 001 \0 \r S a ] ; \t * 0016640 t e s t p i v p e v a \r \t c 0016660 a l l [ c B R r w T e s t ] ; \t 0016700 * t e s t b a s e r e g i 0016720 s t e r s \r \t c a l l [ c a c h 0016740 e A d d r ] ; \r \t c a l l [ c a 0016760 c h e C o m p r ] ; \r \t c a l l 0017000 [ c F l a g s T e s t ] ; \r \t c 0017020 a l l [ c a c h e A d d r T e s 0017040 t ] ; \r \t r e t u r n P [ ] ; \r 0017060 \f \r * F e b r u a r y 5 , 0017100 1 9 8 1 5 : 5 7 P M \r \r 0017120 s e t [ x t a s k , 1 ] ; \t * 0017140 N O N E M U L A T O R ! ! ! \r 0017160 s e t [ s s l o c C , 2 1 0 ] ; 0017200 m c [ s s l o c , s s l o c C 0017220 ] ; \r s i n g l e S 376 001 \0 277 037 t 0017240 e p : \t * I N I T S I N G L 0017260 E S T E P C O D E \r \t t a s 0017300 k i n g o n ; \r \t t _ m c r . d 0017320 i s B r ; \t * t u r n o f f 0017340 b a s e r e g i s t e r s , 0017360 c a c h e f l a g s \r \t t _ 0017400 t + ( m c r . d i s C F ) ; \r \t 0017420 l o a d m c r [ t , t ] ; \r \t t 0017440 _ s s l o c ; \r \t l i n k _ 0017460 t ; \r t o p l e v e 0017500 l ; \r \t l d t p c _ r 1 ; \r 0017520 \t n o t i f y [ 1 ] ; \r \t n o o 0017540 p ; \r \t n o o p ; \r \t b r a n c 0017560 h [ e m u l M e m ] ; \r s s H e 0017600 r e : \r \t r b a s e _ 1 7 s 0017620 , a t [ s s l o c C ] ; \t * 376 0017640 001 \0 374 I i n i t o u r r b 0017660 a s e \r \t b r e a k p o i n t , 0017700 t _ r 1 ; \t * b e g i n s i 0017720 n g l e s t e p . t c o n 0017740 t r o l s b l o c k i n g \r * 0017760 s e t t t o z e r o w 0020000 h e n d o n e \r m e m A s e l 0020020 : \r * \t m a p _ r 0 1 ; \t * 0020040 A S E L = 0 , F F [ 0 : 1 ] 0020060 = 0 . F F O K ( e m u l a 0020100 t o r ) \r \t s e t [ x t a s k , 0020120 0 ] ; \r \t s t o r e _ I D ; \t 0020140 * A S E L = 0 , F F [ 0 : 1 0020160 ] = 1 . F F O K \r \t s e t [ 0020200 x t a s k , 1 ] ; \r \t s t o r 0020220 e _ t ; \t * A S E L = 0 , 0020240 F F [ 376 001 \0 232 344 0 : 1 ] = 2 . 0020260 F F O K \r \t s t o r e _ 0020300 r 0 1 ; \t * A S E L = 0 , F 0020320 F [ 0 : 1 ] = 3 . F F O K \r 0020340 m e m A s e l 1 : \r \t p r e F e 0020360 t c h _ r 0 1 ; \t * A S E L = 0020400 1 , F F [ 0 : 1 ] = 0 . F F 0020420 O K \r \t s e t [ x t a s k , 0020440 0 ] ; \r \t f e t c h _ I D ; 0020460 \t * A S E L = 1 , F F [ 0 : 0020500 1 ] = 1 . F F O K \r \t s e t 0020520 [ x t a s k , 1 ] ; \r \t f e t 0020540 c h _ t ; \t * A S E L = 1 0020560 , F F [ 0 : 1 ] = 2 . F F 0020600 O K \r \t f e t c h _ r 0 1 ; 0020620 \t * A S E L = 1 , F F [ 0 : 0020640 1 ] = 3 . F F 376 001 \0 w 367 O K 0020660 \r \r m e m A s e l 2 : \r * \t i o 0020700 S t o r e _ t ; \t * A S E L = 0020720 2 , F F [ 0 : 1 ] = 2 . F F 0020740 O K ( e m u l a t o r ) \r \t 0020760 i o S t o r e _ r 0 1 ; \t * A 0021000 S E L = 2 , F F [ 0 : 1 ] = 3 0021020 . F F O K \r \r m e m A s e l 0021040 3 : \r \t s e t [ x t a s k , 0 0021060 ] ; \r \t d u m m y R e f _ r 0 1 0021100 ; \t * A S E L = 2 , F F [ 0 0021120 : 1 ] = 0 . F F O K \r \t F e 0021140 t c h _ I D ; \t * A S E L = 2 0021160 , F F [ 0 : 1 ] = 1 . F F 0021200 O K \r \t s e t [ x t a s k , 1 0021220 ] ; \r \t i o F e t c h _ t ; \t * 0021240 A S E L = 2 , F F [ 0 : 376 001 0021260 \0 ) ; 1 ] = 2 . F F O K \r \t 0021300 i o F e t c h _ r 0 1 ; \t * A 0021320 S E L = 2 , F F [ 0 : 1 ] = 3 0021340 . F F O K \r \r m e m A s e l 0021360 N o t O K : \r \t s t o r e _ r 0 0021400 1 , t _ 1 c ; \t * A S E L = 0021420 0 , F F n o t O K \r \t f e 0021440 t c h _ r 0 1 , t _ 1 c ; \t * 0021460 A S E L = 1 , F F n o t 0021500 O K \r \t t _ t ; \t * t e s t 0021520 t o s e e i f w e s h o 0021540 u l d b l o c k \r \t s k p i f 0021560 [ a l u # 0 ] ; \r t s k 1 q u i 0021600 t : \r \t g o t o [ . ] , b l o c 0021620 k ; \r \t b r a n c h [ m e m A s 0021640 e l ] ; \r \r * E M U L A T O R 0021660 A S 376 001 \0 363 p E L C H E C K 0021700 O U T C O M E S H E R E \r s 0021720 e t [ x t a s k , 0 ] ; \r e m u 0021740 l M e m : \r \t m a p _ r 0 1 0021760 ; \t * A S E L = 0 , F F [ 0 0022000 : 1 ] = 0 . F F O K \r \t F l 0022020 u s h _ r 0 1 ; \t * A S E L = 0022040 2 , F F [ 0 : 1 ] = 0 . F F 0022060 O K \r \t b r a n c h [ e m u l 0022100 M e m ] ; \r a f t e r S i n g l 0022120 e S t e p : \r \f \r * S e p t e 0022140 m b e r 1 3 , 1 9 7 9 4 0022160 : 3 7 P M \r % \r C H E C K 0022200 P I P E V A B I T S ! ! ! \r 0022220 \r \t F i r s t d i s a b l e 0022240 b a s e r e g i s t e r s a 0022260 n d i n i t 376 001 \0 u 327 c n t 0022300 t o a l l o w 2 0 B i t 0022320 e r a t i o n s . \r T h e n p 0022340 e r f o r m a d u m m y R e 0022360 f o n c e f o r e v e r y 0022400 b i t o n m a r M u x ( 0022420 1 , 2 , 4 , 1 0 , e t c 0022440 ) . N o t e t h a t t h e 0022460 v a l u e s t o r e d w i 0022500 t h d u m m y R e f i s k 0022520 e p t i n r s c r , t h e 0022540 v a l u e r e a d f r o m 0022560 p i p e 1 i s k e p t i 0022600 n r s c r 2 . T h i s c o 0022620 d e n e e d n o t b e s 0022640 i n g l e s t e p p e d . \r % 0022660 \r \r c p i p e V A : \r \t p 376 001 \0 0022700 f 211 u s h R e t u r n [ ] ; \r \t 0022720 c h e c k M t e s t [ m e m F l 0022740 a g s . c P i p e V A , c P i 0022760 p e V a D o n e ] ; \r \t c n t 0023000 _ 1 7 s ; \t * l o o p c o 0023020 n t r o l : o n c e f o r 0023040 e a c h b i t \r \t r s c r _ 0023060 r 1 ; \t * R S C R b e g i 0023100 n s w / 1 \r \t T _ m c r . d 0023120 i s B r ; \r \t T _ T + ( m c r . 0023140 d i s C f ) ; \r \t t _ t O 0023160 R ( m c r . n o R e f ) ; \r \t 0023200 c a l l [ s e t M C R ] ; \t * 0023220 D I S A B L E B A S E R E G 0023240 I S T E R S \r \r c p i p e V A l 0023260 : \r \t d u m m y R e f _ r s 0023300 c r 376 001 \0 376 271 ; \t * R S C R 0023320 g o e s t o p i p e \r \t n o 0023340 o p ; \r \t t _ p i p e 1 ; \r \t r 0023360 s c r 2 _ t ; \t * r s c r 2 0023400 g e t s p i p e V A \r \t t _ t 0023420 # ( r s c r ) ; \t * t _ p 0023440 i p e V A x o r R S C R \r \t 0023460 s k p i f [ a l u = 0 ] ; \r c P 0023500 i p e V A e r r : \t * t = 0023520 b a d b i t s , r s c r = 0023540 v a l u e w e w r o t e 0023560 i n t o \r \t E R R O R ; \t * p 0023600 i p e , r s c r 2 = v a l 0023620 u e f r o m p i p e \r \r \t l 0023640 o o p u n t i l [ c n t = 0 & - 0023660 1 , c P i p e V A l ] , r s 0023700 c r _ ( r s c 376 001 \0 I F r ) + ( 0023720 r s c r ) ; \t * s h i f t l 0023740 e f t t e s t v a l u e b 0023760 y o n e \r \r c P i p e V a D o 0024000 n e : \r \t r e t u r n P [ ] ; \r 0024020 \f \r * M a r c h 1 7 , 1 9 0024040 7 8 8 : 3 2 A M \r % \r C 0024060 H E C K B A S E R E G I S T 0024100 E R B I T S \r \r F O R B R 0024120 I N [ 0 . . 3 1 ] D O \t - - 0024140 o n c e f o r e v e r y 0024160 b a s e r e g i s t e r \r \t F 0024200 O R b r h i _ 1 , b r h i 0024220 + b r h i U N T I L b r h i 0024240 = B r H i E n d C D O \t - 0024260 - o n c e f o r e a c h 0024300 b i t \r \t F O R b r l 376 001 \0 _ 0024320 300 o _ 1 , b r l o + b r l 0024340 o U N T I L b r l o = 0 0024360 D O \t - - o n c e f o r 0024400 e a c h b i t \r \t w r i t e B 0024420 R [ b r , b r h i , b r l o 0024440 ] ; \r \t I F p i p e 1 # b 0024460 r l o T H E N E R R O R ; \r 0024500 \t i f p i p e 0 . v a # b 0024520 r h i T H E N E R R O R ; \r 0024540 \t E N D L O O P ; E N D L O O 0024560 P ; \r E N D L O O P ; \r % \r \r c 0024600 B R r w T e s t : \r \t p u s h R 0024620 e t u r n [ ] ; \r \t c h e c k M 0024640 t e s t [ m e m F l a g s . c B 0024660 R , c B R d o n e ] ; \r \t Q 0024700 _ r 0 ; \t * Q = b a s e 0024720 r 376 001 \0 $ 3 e g i s t e r b e 0024740 i n g t e s t e d \r \t t _ ( 3 0024760 7 c ) ; \r \t c n t _ t ; \t * 0025000 c n t c o n t r o l s Q - 0025020 l o o p \r \t t _ r s c r _ r 0025040 1 ; \t * r s c r = b r H I 0025060 \r \t r s c r 2 _ t ; \t * r 0025100 s c r 2 = b r L O \r \t t _ m 0025120 c r . d i s C f ; \r \t t _ t 0025140 O R ( m c r . n o R e f ) ; 0025160 \r \t c a l l [ s e t M C R ] ; \t 0025200 * r e e n a b l e b a s e 0025220 r e g i s t e r s \r b r L : \r \t 0025240 n o o p ; \r \t c a l l [ s e t M 0025260 b a s e ] , t _ q ; \r \t n o o p 0025300 ; \r b r W r i t e H i L : \t * 0025320 c o m e h 376 001 \0 312 ) e r e f 0025340 r o m i n c r e m e n t i n g 0025360 b r H i = r s c r \r \t b r a n 0025400 c h [ b r W r i t e L o L ] ; \t 0025420 * i n s t r u c t i o n f o 0025440 r p l a c e m e n t \r b r W r 0025460 i t e L o L : \t * c o m e h 0025500 e r e f r o m i n c r e m e 0025520 n t i n g b r L o = r s c r 2 0025540 \r \t b r a n c h [ b r l 2 ] ; \r 0025560 b r l 2 : \r \t C A L L [ s e t B 0025600 R ] ; \t * r s c r = > b r h 0025620 i , r s c r 2 = > b r l o 0025640 \r \t d u m m y r e f _ r 0 ; 0025660 \t * f o r c e p i p e e n 0025700 t r y \r \t n o o p ; \r \t t _ 0025720 p i p e 1 ; \t * p i 376 001 \0 $ u 0025740 p e 1 = V A [ 8 : 2 3 ] = 0025760 l o w 1 6 b i t s \r \t t 0026000 _ t # ( r s c r 2 ) ; \r \t s 0026020 k p i f [ a l u = 0 ] ; \r c b r 0026040 L o w 1 6 E R : \t * r s c r 2 0026060 = v a l u e w r i t t e n i 0026100 n t o B r L o , t = b a d 0026120 b i t s \r \t e r r o r ; \t * q 0026140 = c u r r e n t b a s e 0026160 r e g i s t e r b e i n g t 0026200 e s t e d \r \r \t t _ p i p e 0 ; 0026220 \r \t t _ t a n d ( C A B i t s 0026240 I n P i p e 0 M a s k ) ; \r \t t 0026260 _ t # ( r s c r ) ; \r \t s k p i 0026300 f [ a l u = 0 ] ; \t * r s c r 0026320 = v a l u e w r i t t e n 0026340 376 001 \0 [ 243 i n t o b r h i . 0026360 t = b a d \r c b r H i 8 E 0026400 R : \t * b i t s t h a t c 0026420 a m e b a c k . \r \t e r r o r 0026440 ; \t * q = c u r r e n t 0026460 b a s e r e g i s t e r b e 0026500 i n g t e s t e d \r \r b r L o 0026520 o p C t r l : \r \t t _ ( r s c r 0026540 2 ) + ( r s c r 2 ) ; \t * i n 0026560 c r e m e n t a n d c h e c 0026600 k b r l o \r \t l o o p u n t i 0026620 l [ a l u = 0 , b r W r i t e 0026640 L o L ] , r s c r 2 _ t ; \r 0026660 \r \t r s c r 2 _ r 1 ; \t * 0026700 r e s e t b r l o , i n c r 0026720 e m e n t a n d c h e c k 0026740 b r h i \r 376 001 \0 \b 334 \t t _ ( r s 0026760 c r ) + ( r s c r ) ; \r \t t # ( 0027000 B r H i E n d C ) ; \r \t l o o p 0027020 u n t i l [ a l u = 0 , b r W r 0027040 i t e H i L ] , r s c r _ t ; \r 0027060 \r \t r s c r _ r 1 ; \t * r 0027100 e s e t b r h i , i n c r e 0027120 m e n t a n d c h e c k B 0027140 R \r \t t _ ( r 1 ) + ( q ) ; \r \t 0027160 l o o p u n t i l [ c n t = 0 & 0027200 - 1 , b r L ] , q _ t ; \r \r c 0027220 B R d o n e : \r \t r e t u r n P 0027240 [ ] ; \r \f \r % \r \t T e s t t h 0027260 e c a c h e a d d r e s s 0027300 m e m o r y . \r \r P r o c e e d 0027320 a s f o l l o w s : 032 e 3 ( 0027340 0 , 3 9 6 8 ) ( 1 , 376 001 \0 201 352 1 0027360 1 1 8 3 ) \ b 1 1 B 1 1 b 2 3 B 0027400 3 0 8 b 1 0 B 2 1 8 b 6 B 1 3 0 0027420 b 7 B 2 0 3 b 8 B 1 9 7 b 8 B 9 0027440 5 b 8 B 1 9 5 b 1 2 B 1 3 2 b 8 0027460 B 8 7 b 7 B 9 8 b 1 5 B 3 4 4 b 0027500 7 B 2 3 4 b 8 B 1 3 7 b 1 1 B 1 0027520 6 9 b 1 2 B 3 7 5 b 9 B 2 6 9 b 0027540 3 B 3 7 b 1 0 B 9 1 b 1 0 B 5 8 0027560 b 4 B 1 6 4 b 1 0 B 2 0 5 b 8 B 0027600 7 5 b 1 0 B 3 0 8 b 8 B \r F o r 0027620 e a c h p a t t e r n , w 0027640 r i t e t h e e n t i r e 0027660 c a c h e a d d r e s s m e 0027700 m o r y w i t h k n o w n 0027720 v a l u e s . T h e n f o r 0027740 e a c h r o w a n d f 376 0027760 001 \0 @ ; o r e a c h c o l u 0030000 m n w r i t e t h e m e m 0030020 o r y a g a i n a n d c h 0030040 e c k t o s e e t h a t 0030060 t h e c o r r e c t e n t r 0030100 y a p p e a r e d i n t h 0030120 e p i p e . 032 l 4 2 6 8 e 3 \r 0030140 L o a d M C R a s f o l l 0030160 o w s : 032 l 4 2 6 8 e 3 \r d P i 0030200 p e V a _ V i c , F D m i s s 0030220 , u s e M c r V , D i s C F 0030240 , D i s H O L D 032 l 4 2 6 8 e 0030260 3 \r m c r V e c : A R R A Y 0030300 [ 0 . . 3 ] O F [ 032 e 3 \r [ 0030320 F D m i s s , u s e M c r V , 0030340 M c r V : 0 , D i s C F , 0030360 D i s H 376 001 \0 254 374 o l d ] , 032 l 0030400 4 2 6 8 e 3 \r [ F D m i s s , 0030420 u s e M c r V , M c r V : 1 , 0030440 D i s C F , D i s H o l d ] 0030460 , 032 l 4 2 6 8 e 3 \r [ F D m i s 0030500 s , u s e M c r V , M c r V 0030520 : 2 , D i s C F , D i s H o 0030540 l d ] , 032 l 4 2 6 8 e 3 \r [ F D 0030560 m i s s , u s e M c r V , M 0030600 c r V : 3 , D i s C F , D i 0030620 s H o l d ] 032 l 4 2 6 8 e 3 \r ] 0030640 ; 032 l 4 2 6 8 e 3 \r F O R p a 0030660 t I N N p a t s D O 032 e 3 0030700 \r F O R r o w I N R o w 0030720 D O 032 l 4 2 6 8 e 3 \r F O R c 0030740 o l I N C o l u m n D O 032 0030760 l 5 5 3 8 e 3 \r c 376 001 \0 320 # h e 0031000 c k P a t t e r n _ g e t C 0031020 P a t t e r n [ p a t , r o w , 0031040 c o l ] ; \r v a _ 0 ; \r v a . c 0031060 a c h e B i t s _ r o w ; \t 0031100 - - s e l e c t c u r r e n 0031120 t r o w \r \r L O A D M C R [ m 0031140 c r V e c [ c o l ] O R n o 0031160 R e f ] ; \r s e t B r C a c h e 0031200 A B i t s [ c h e c k P a t t e 0031220 r n j ] ; \r D B u f _ 0 , S T O 0031240 R E _ v a ; \r E N D L O O P ; 032 0031260 l 5 5 3 8 e 3 \r E N D L O O P ; 0031300 032 l 4 2 6 8 e 3 \r F O R r o w 0031320 I N R o w D O 032 l 4 2 6 8 0031340 e 3 \r F O R c o l I N C o 0031360 l u m n D O 032 l 5 5 3 8 e 376 001 0031400 \0 333 \n 3 \r L O A D M C R [ m c r 0031420 V e c [ c o l ] O R d P i p 0031440 e V a _ V i c O R n o R e f 0031460 ] ; \r o t h e r P a t t e r n 0031500 _ N O T [ g e t C P a t t e r 0031520 n [ p a t , r o w , c o l ] ] ; 0031540 \r s e t B r C a c h e A B i t s 0031560 [ o t h e r P a t t e r n ] ; \r 0031600 \r - - n o w p e r f o r m 0031620 t h e c h e c k \r v a _ 0 ; 0031640 v a . c a c h e B i t s _ r 0031660 o w ; \r D B u f _ 0 , S T O R E 0031700 _ v a ; \r N O O P ; \t - - ? ? ? 0031720 ? ? \r \r p i p e 0 _ P I P E 0031740 0 [ ] ; p i p e 1 _ P I P 0031760 E 1 [ ] ; \r v a B i t s _ g 0032000 e t C 376 001 \0 227 h a B i t s F r o 0032020 m P i p e [ ] ; \r p a t _ n 0032040 o t ( O t h e r P a t t e r n ) 0032060 ; \r p a t _ p a t A N D 0032100 ( C A B i t s M a s k C ) ; \r I 0032120 F p i p e 1 . c a c h e B i t 0032140 s # r o w T H E N E R R 0032160 O R ; 032 l 5 5 3 8 e 3 \r E N D L 0032200 O O P ; 032 l 5 5 3 8 e 3 \r E N D 0032220 L O O P : \t - - e n d o f 0032240 r o w c h e c k l o o p 032 l 0032260 4 2 6 8 e 3 \r E N D L O O P : \t 0032300 - - e n d o f p a t t e r 0032320 n l o o p \r % \r \f \r * S e p 0032340 t e m b e r 1 9 , 1 9 7 9 0032360 7 : 0 3 P M \t I N I T c 0032400 a c h e a d d 376 001 \0 254 031 r e s 0032420 s c o d e a n d d a t a 032 0032440 e 3 \r \r c a c h e A d d r : \r \t 0032460 p u s h R e t u r n [ ] ; \r \t c 0032500 h e c k M t e s t [ m e m F l a 0032520 g s . c A m e m , c a T e s t 0032540 D o n e ] ; \r \t c a l l [ i n i 0032560 t C P a t t e r n s ] ; \t * i 0032600 n i t i a l i z e p a t t e r 0032620 n l o o p c o n t r o l \r \r 0032640 c a P a t t e r n L : \r \t c a l 0032660 l [ n e x t C P a t t e r n ] ; 0032700 \t * T H I S I S M A I N , 0032720 O U T E R L O O P \r \t b r a 0032740 n c h [ c a T e s t D o n e , a 0032760 l u = 0 ] ; \r \t n o o p ; \t * 0033000 f o r p l a c e m e n t 376 001 \0 0033020 _ 242 \r \r c a R o w I n i t : 032 e 0033040 3 \ 1 b 1 0 B 1 1 4 b 1 1 B 1 0 0033060 0 b 1 0 B \r \t c a l l [ i n i t 0033100 R o w C t r l ] ; \t * i n i t 0033120 i a l i z e r o w l o o p 0033140 c o n t r o l \r c a R o w L : \r 0033160 \t c a l l [ n e x t R o w ] ; \t 0033200 * i n c r e m n t r o w v 0033220 a l u e . r t n ' d i n T 0033240 \r \t b r a n c h [ n o R o w , a 0033260 l u = 0 ] ; \t * n e x t R o w 0033300 s e t s u p t h i s t e 0033320 s t \r \t Q _ t ; \t * s a v 0033340 e c u r r e n t r o w i n 0033360 Q \r \t c a l l [ i n i t C o l 0033400 C t r l ] ; \t * i n i t i a l 0033420 i z 376 001 \0 : 316 e c o l u m n 0033440 l o o p c o n t r o l \r c a C 0033460 o l L : \r \t c a l l [ n e x t C 0033500 o l ] ; \t * i n c r e m e n t 0033520 c o l u m n v a l u e . r 0033540 t n ' d i n T \r \t b r a n c 0033560 h [ n o C o l u m n , a l u = 0 0033600 ] ; \t * n e x t C o l s e t 0033620 s u p t h i s t e s t \r \t 0033640 c o l _ T ; \t * s a v e 0033660 c u r r e n t c o l i n c 0033700 o l \r \t c a l l [ c c C o l W r 0033720 i t e ] , t _ a 0 ; \t * w r 0033740 i t e c u r r e n t c a c h 0033760 e e n t r y \r \t b r a n c h [ 0034000 c a C o l L ] ; \r \r n o C o l u 0034020 m n : \r \t b r 376 001 \0 B 237 a n c h 0034040 [ c a R o w L ] ; \r \r n o R o w 0034060 : \r \r \f \r * M a r c h 1 3 , 0034100 1 9 7 8 9 : 1 1 A M 0034120 \t T E S T T H E C A C H E 0034140 D A T A : w e ' r e i n s i 0034160 d e s e v e r a l l a y e r 0034200 s o f l o o p \r \r c A m e m 0034220 T e s t : \r \t c a l l [ i n i t 0034240 R o w C t r l ] ; \t * i n i t 0034260 i a l i z e r o w l o o p 0034300 c o n t r o l \r \r c a R o w T e 0034320 s t L : \r \t c a l l [ n e x t R 0034340 o w ] ; \t * i n c r e m n t 0034360 r o w v a l u e . r t n ' d 0034400 i n T \r \t b r a n c h [ n o 0034420 R o w T e s t , a l u = 376 001 \0 313 0034440 342 0 ] ; \t * n e x t R o w s 0034460 e t s u p t h i s t e s t 0034500 \r \t Q _ t ; \t * s a v e 0034520 c u r r e n t r o w i n Q 0034540 \r \t c a l l [ i n i t C o l C t 0034560 r l ] ; \t * i n i t i a l i z 0034600 e c o l u m n l o o p c o 0034620 n t r o l \r c a C o l T e s t L 0034640 : \r \t c a l l [ n e x t C o l ] 0034660 ; \t * i n c r e m e n t c o 0034700 l u m n v a l u e . r t n ' 0034720 d i n T \r \t b r a n c h [ n 0034740 o C o l u m n T e s t , a l u = 0034760 0 ] ; \t * n e x t C o l s e 0035000 t s u p t h i s t e s t \r 0035020 \t c o l _ T ; \t * s a v e 0035040 376 001 \0 p 301 c u r r e n t c o 0035060 l i n c o l \r 032 e 3 \ 5 0 b 0035100 7 B 1 3 1 b 2 B 5 2 b 9 B 2 1 2 0035120 b 9 B 1 9 b 6 B 9 0 b 1 0 B 5 1 0035140 b 1 3 B 1 3 4 b 2 B 5 2 b 1 3 B 0035160 \r \t t _ ( m c r . d P i p e V a 0035200 ) ; \r \t t _ t O R ( m c 0035220 r . n o R e f ) ; \r \t c a l l [ 0035240 m c r F o r C o l ] ; \t * s e 0035260 t u p m c r f o r c u r 0035300 r e n t c o l u m n \r \t c a l 0035320 l [ s e t B r C a c h e A B i t 0035340 s ] , t _ r 0 ; \t * u s e 0035360 0 : d P i p e V a c a u s e 0035400 s d a t a t o b e o r ' 0035420 d . \r \r \t c a l l [ v a F o r R 0035440 o w ] , t 376 001 \0 273 215 _ q ; 0035460 \r \t v a _ t ; \r \t D B u f _ 0035500 r 0 , S T O R E _ t ; \t * 0035520 T E S T p r o p e r c a c h 0035540 e e n t r y \r \r \t c a l l [ g 0035560 e t C P a t t e r n ] ; \t * t 0035600 e s t 1 5 b i t p a t t e 0035620 r n \r \t t _ t a n d ( C 0035640 A B i t s M a s k C ) ; \t * i 0035660 s o l a t e e x a c t l y t 0035700 h e b i t s w e b e l i e 0035720 v e i n \r \t c a l l [ g e t P 0035740 i p e C a c h e A B i t s ] , r 0035760 s c r 2 _ t ; \t * a g a i n s 0036000 t p i p e i n f o . r s c 0036020 r 2 i s p r e s e r v e d ! 0036040 \r \t r s c r _ t ; 376 001 \0 356 ! 0036060 \t * r e m e m b e r p i p e 0036100 h i 1 5 b i t s \r % * - - 0036120 - - - - - - - - - - - - - - - - * 0036220 - - - - - - - - - - - - \r m e m 0036240 b a s e + v a = t h e a d 0036260 d r e s s w e r e f e r e n 0036300 c e d . T h e v a l u e 0036320 i n v a s e l e c t s t h 0036340 e c a c h e r o w , a n d 0036360 t h e v a l u e i n m e 0036400 m b a s e i s t h e v a 0036420 l u e u s e d t o t e s t 0036440 c a c h e A . Q = c u r r 0036460 376 001 \0 U 326 e n t r o w , c o 0036500 l = c u r r e n t c o l u 0036520 m n ( b o t h i n t h e 0036540 c a c h e ) . \r % * - - - - - - 0036560 - - - - - - - - - - - - - - - - * 0036660 - - - - - - - - \r \t t _ t # ( r 0036700 s c r 2 ) ; \t * s e e i f 0036720 a n y b i t s a r e d i f 0036740 f e r e n t \r \t s k p i f [ a l 0036760 u = 0 ] ; \t * t = b a d b i 0037000 t s , r s c r = h i 1 5 0037020 b i t s f r o m p i p e , 0037040 \r c a B a d V a B i t s : \t * 0037060 r s c r 2 376 001 \0 211 , = e x p e c 0037100 t e d p a t t e r n ( r s c 0037120 r , r s c r 2 r i g h t \r \t 0037140 e r r o r ; \t * j u s t i f i 0037160 e d ) . Q = c u r r e n t r 0037200 o w , c o l = c u r r e n t 0037220 c o l u m n \r \r \t c a l l [ c h 0037240 k P i p e R o w ] , t _ q ; \t * 0037260 c h e c k " r o w " b i t 0037300 s o f P I P E 1 \r \t s k p i 0037320 f [ a l u = 0 ] ; \r c a B a d R 0037340 o w : \t * Q = c u r r e n t 0037360 r o w . F o r s o m e r e 0037400 a s o n w e d i d n ' t \r \t 0037420 e r r o r ; \t * r e a d t h 0037440 e r o w i n t h e p i p 0037460 e w e w a n t e 376 001 \0 ! 222 d 0037500 \r \r \t b r a n c h [ c a C o l T 0037520 e s t L ] ; \r \t \r n o C o l u m 0037540 n T e s t : \r \t b r a n c h [ c 0037560 a R o w T e s t L ] ; \r \r n o R 0037600 o w T e s t : \r \t b r a n c h [ 0037620 c a P a t t e r n L ] ; \r \r c a 0037640 T e s t D o n e : n o o p ; \r 0037660 \t r e t u r n P [ ] ; \r \f \r * 0037700 S e p t e m b e r 3 0 , 1 9 0037720 7 8 6 : 2 4 P M \r % 032 e 3 0037740 \ 9 2 9 b 1 2 B 4 4 b 1 B 1 2 3 0037760 b 9 B 4 3 b 1 B 6 9 b 1 3 B 2 3 0040000 b 1 0 B 2 3 b 1 1 B \r T E S T 0040020 C A C H E C O M P A R A T O R 0040040 S 032 e 3 c \ b 2 2 B \r F O R b 0040060 r I N [ 0 . . 3 1 ] D O 376 0040100 001 \0 * \b 032 e 3 \r S E T M E M B A 0040120 S E [ b r ] ; \r F O R p a t 0040140 I N N p a t s D O 032 l 4 2 6 0040160 8 e 3 \r F O R r o w I N R 0040200 o w D O 032 l 5 5 3 8 e 3 \r F O 0040220 R c o l I N C o l D O 032 0040240 l 5 5 3 8 e 3 \r - - c h e c k 0040260 c o m p a r a t o r s u s i 0040300 n g d a t a f r o m e a c 0040320 h c o l u m n i n t h i s 0040340 r o w 032 l 5 5 3 8 e 3 \r F O R 0040360 o t h e r C o l I N C o l 0040400 D O \t - - i n i t c u r r 0040420 e n t r o w 032 l 6 8 0 8 e 3 \r 0040440 p a t t e r n _ g e t C P a 0040460 t t e r n [ p a t , c o l , 0040500 r o w ] 376 001 \0 022 307 ; \r I F c o 0040520 l # o t h e r C o l T H E 0040540 N p a t t e r n _ N O T [ 0040560 p a t t e r n ] ; \r v a _ 0 0040600 ; \r v a . c a c h e B i t s _ 0040620 r o w ; \r s e t B r C a c h e 0040640 A B i t s [ p a t t e r n ] ; \r 0040660 s e t M c r F o r C o l [ o t h 0040700 e r C o l , n o R e f ] ; \r D 0040720 B u f _ 0 , S T O R E _ v a ; \r 0040740 E N D L O O P ; 032 l 8 0 7 8 e 3 0040760 \r - - s e t u p t o g e 0041000 n e r a t e t e s t r e f e 0041020 r e n c e 032 l 5 5 3 8 e 3 \r p a 0041040 t t e r n _ g e t C P a t t 0041060 e r n [ p a t , c o l , r o 0041100 w ] ; \r v a _ 376 001 \0 s 344 0 ; 0041120 \r v a . c a c h e B i t s _ 0041140 r o w ; \r s e t B r C a c h e A 0041160 B i t s [ p a t t e r n ] ; \r s 0041200 e t m c r a p p r o p r i a 0041220 t e l y ; \r D B u f _ 0 , S T 0041240 O R E _ v a ; \r n o o p ? ; 032 l 0041260 6 8 0 8 e 3 \ 9 2 b 2 1 B 2 0 b 0041300 5 B \r - - t e s t t h e r 0041320 e s u l t s o f t h e r e 0041340 f e r e n c e 032 l 5 5 3 8 e 3 \r 0041360 p i p e 5 _ p i p e 5 [ ] ; 0041400 \r I F p i p e 5 . c o l # 0041420 c o l T H E N E R R O R ; \r 0041440 E N D L O O P ; \t - - c o l u 0041460 m n l o o p 032 l 6 8 0 8 e 3 \r 0041500 E N D L O O P ; \t - - r o 376 001 0041520 \0 z + w l o o p 032 l 5 5 3 8 e 0041540 3 \r E N D L O O P ; \t - - p a 0041560 t t e r n l o o p 032 l 4 2 6 8 0041600 e 3 \r E N D L O O P ; \t - - b 0041620 a s e r e g i s t e r s l o 0041640 o p 032 e 3 \r % 032 e 3 \r \f 032 e 3 \r 0041660 * D e c e m b e r 7 , 1 9 0041700 7 7 4 : 3 1 P M 032 e 3 \r % 0041720 032 e 3 \r I N I T I A L I Z E T 0041740 H E C O D E T H A T T E S 0041760 T S T H E C A C H E C O M 0042000 P A R A T O R S 032 e 3 c \ b 5 2 0042020 B \r U s e s a m e l o o p 0042040 c o n t r o l s u b r o u t i 0042060 n e s a s t h e c a c h e 0042100 a d d r e s s t e s t c o 0042120 d e 032 376 001 \0 343 m e 3 \r % 032 e 3 \r 0042140 c a c h e C o m p r : 032 e 3 \ b 0042160 1 1 B \r \t p u s h R e t u r n [ 0042200 ] ; \r \t c h e c k M t e s t [ m 0042220 e m F l a g s . c C o m p r s , 0042240 c c T e s t D o n e ] ; \r \t c 0042260 a l l [ i n i t B r s ] ; \t * 0042300 i n i t i a l i z e b a s e 0042320 r e g i s t e r s l o o p \r c 0042340 c B r L : \t * T H I S I S 0042360 M A I N , O U T E R L O O P 0042400 \r \t c a l l [ n e x t B r ] ; \r 0042420 \t s k p i f [ a l u # 0 ] ; \r \t 0042440 b r a n c h [ c c T e s t D o n 0042460 e ] ; \r \t n o o p ; \r \t c a l l 0042500 [ s e t M b a s e ] ; \t * c h 0042520 a n g e m e m 376 001 \0 X 324 b a s 0042540 e \r \t c a l l [ i n i t C P a t 0042560 t e r n s ] ; \t * i n i t i a 0042600 l i z e p a t t e r n l o o 0042620 p c o n t r o l \r \r c c P a t 0042640 t e r n L : \r \t c a l l [ n e x 0042660 t C P a t t e r n ] ; \r \t s k p 0042700 i f [ a l u # 0 ] ; \r \t b r a n 0042720 c h [ c c N o P a t s ] ; \r \t n 0042740 o o p ; \t * f o r p l a c e 0042760 m e n t \r \r c c R o w I n i t : 0043000 032 e 3 \ 1 0 6 b 7 B 1 7 7 b 1 1 0043020 B 8 0 b 1 0 B \r \t c a l l [ i n 0043040 i t R o w C t r l ] ; \t * i n 0043060 i t i a l i z e r o w l o o 0043100 p c o n t r o l \r c c R o w L 0043120 : \r \t c a l l [ n e x t R 376 001 \0 0043140 314 337 o w ] ; \t * i n c r e m n 0043160 t r o w v a l u e . r t n 0043200 ' d i n T \r \t b r a n c h [ 0043220 c c N o R o w , a l u = 0 ] ; \t 0043240 * n e x t R o w s e t s u 0043260 p t h i s t e s t \r \t Q _ 0043300 t ; \t * s a v e c u r r e 0043320 n t r o w i n Q \r \f \r * 0043340 S e p t e m b e r 1 9 , 1 9 0043360 7 9 7 : 0 3 P M \t T E 0043400 S T T H E C A C H E C O M 0043420 P A R A T O R S : w e ' r e 0043440 i n s i d e s e v e r a l l 0043460 a y e r s o f l o o p \r \r c 0043500 a c h e C o m p r T e s t : \r \t 0043520 c a l l [ i n i t C o l C t r l 0043540 ] ; 376 001 \0 333 303 \t * i n i t i a 0043560 l i z e c o l u m n l o o p 0043600 c o n t r o l \r c c C o l L : 0043620 \r \t c a l l [ i n i t C o l 2 C 0043640 t r l ] ; \r c c C o l 2 L : \t * 0043660 t h i s l o o p i n i t s 0043700 t h e b a c k g o u n d v 0043720 a l u e s \r \t c a l l [ n e x t 0043740 C o l 2 ] ; \t * ( b a c k g r 0043760 o u n d = N O T ( p a t t e 0044000 r n ) \r \t b r a n c h [ c c N o 0044020 C o l 2 , a l u = 0 ] ; \t * n 0044040 e x t C o l s e t s u p t 0044060 h i s t e s t \r \t c o l _ 0044100 T ; \t * s a v e c u r r e n 0044120 t c o l i n c o l \r \t c a 0044140 l l [ c c C o 376 001 \0 362 351 l W r i 0044160 t e ] , t _ a 1 ; \t * w r i t 0044200 e c u r r e n t c o l , r o 0044220 w w / n o t ( c u r r e n t 0044240 p a t t e r n ) \r \t b r a n c 0044260 h [ c c C o l 2 L ] ; \r \r c c N 0044300 o C o l 2 : \r \t c a l l [ n e x 0044320 t C o l ] ; \r \t b r a n c h [ c 0044340 c N o C o l , a l u = 0 ] ; \r \t 0044360 c o l _ t ; \r % \r n o w t 0044400 h a t t h e c u r r e n t 0044420 r o w h a s b e e n p r o 0044440 p e r l y b a c k g r o u n d 0044460 e d b y t h e " c o l 2 " 0044500 l o o p , f o r c e a k 0044520 n o w n v a l u e i n t o 0044540 t h i s r o w i n 376 001 \0 237 0044560 t h e c u r r e n t c o l 0044600 u m n , t h e n r e f e r e 0044620 n c e t h a t v a l u e 0044640 a n d s e e i f t h e c 0044660 o m p a r a t o r s f i n d 0044700 i t . \r % \r \t c a l l [ c c C o 0044720 l W r i t e ] , t _ a 0 ; \t * 0044740 w r i t e c u r r e n t c 0044760 o l , r o w w / c u r r e n 0045000 t p a t t e r n \r \r \t t _ ( m 0045020 c r . d i s C F ) ; \t * s e t 0045040 m c r t o d i s a b l e 0045060 c a c h e f a u l t s , \r \t t 0045100 _ t + ( m c r . n o R e f H o l 0045120 d ) ; \t * d i s a b l e h o 0045140 l d \r \t t _ t + ( m c r . n 0045160 o 376 001 \0 227 363 W a k e ) ; \r \t c a 0045200 l l [ s e t M c r ] ; \r \t c a l 0045220 l [ g e t C P a t t e r n ] ; \t 0045240 * k n o w s a b o u t Q , 0045260 c u r r n e t p a t \r \t c a 0045300 l l [ s e t B r C a c h e A B i 0045320 t s ] ; \t * g e t C P a t t e 0045340 r n r e t u r n e d v a l u 0045360 e i n T \r \r \t c a l l [ v a 0045400 F o r R o w ] , t _ q ; \r 0045420 \t v a _ t ; \r \t D B u f _ r 0045440 0 , S T O R E _ t ; \t * T 0045460 E S T p r o p e r c a c h e 0045500 e n t r y \r \r % * - - - - - - 0045520 - - - - - - - - - - - - - - - - * 0045560 - - - - - - 376 001 \0 @ 312 - - - - - 0045600 - - - - - - - - - - - - - - - - 0045620 - - - - - - - - - - - - - \r m e 0045640 m b a s e + v a = t h e a 0045660 d d r e s s w e r e f e r e 0045700 n c e d . T h e v a l u e 0045720 i n v a s e l e c t s t 0045740 h e c a c h e r o w , a n 0045760 d t h e v a l u e i n m 0046000 e m b a s e i s t h e v 0046020 a l u e u s e d t o t e s 0046040 t t h e c o m p a r a t o r 0046060 s . Q = c u r r e n t r o 0046100 w , c o l = c u r r e n t 0046120 c o l u m n ( b o t h i n 0046140 t h e c a c h e ) . O 0046160 n l y o n e c o l 376 001 \0 \v { 0046200 u m n c o n t a i n s t h e 0046220 v a l u e i m p l i c i t 0046240 i n t h e c u r r e n t m 0046260 e m b a s e . A h i t i n 0046300 a d i f f e r e n t c o l 0046320 u m n m e a n s t h a t t 0046340 h e c o m p a r a t o r s f 0046360 a i l e d . \r % * - - - - - - - 0046400 - - - - - - - - - - - - - - - - * 0046500 - - - - - - - \r \t n o o p ; \r \t 0046520 r s c r _ p i p e 5 [ ] ; \r 0046540 \t c a l l [ c h k P i p e 5 c o 0046560 l ] , t _ c o l ; \t * s e e 0046600 376 001 \0 025 235 i f m a t c h e d 0046620 p r o p e r c o l u m n \r \t s 0046640 k p i f [ a l u = 0 ] ; \r c c B 0046660 a d C o l : \t * T = b a d b 0046700 i t s , r s c r = p i p e 5 , 0046720 c o l = c o l u m n \r \t e r r 0046740 o r ; \t * e x p e c t e d \r \r 0046760 \t b r a n c h [ c c C o l L ] ; 0047000 \r \t \r c c N o C o l : \r % \r \t A 0047020 d d c o d e h e r e t o 0047040 m a k e s u r e t h a t m 0047060 i s s e s o c c u r w h e n 0047100 t h e n s h o u l d \r % \r \t 0047120 b r a n c h [ c c R o w L ] ; \r 0047140 \r c c N o R o w : \r \t b r a n c 0047160 h [ c c P a t t e r n L ] ; \r c 0047200 c N o P a 376 001 \0 + 6 t s : \r \t b 0047220 r a n c h [ c c B r L ] ; \r c c 0047240 T e s t D o n e : \r \t r e t u r 0047260 n P [ ] ; \r \f 032 e 3 \ 5 0 b 7 B 0047300 1 3 3 b 1 B 9 9 b 1 5 B 1 b 1 B 0047320 5 2 b 7 B 2 2 b 8 B 8 5 b 1 B 1 0047340 8 0 b 9 B 1 2 3 0 b 9 B 7 7 b 8 0047360 B 8 6 b 8 B 2 2 b 9 B 1 7 b 1 1 0047400 B \r * S e p t e m b e r 1 9 0047420 , 1 9 7 9 6 : 5 7 P M 032 0047440 e 3 \r c c C o l W r i t e : \t % 0047460 W r i t e c u r r e n t ( 0047500 c o l ) c o l u m n w i t h 0047520 c u r r e n t p a t t e r n 0047540 i n t h e r o w s p e c 0047560 i f i e d b y Q . W e 0047600 x o r ( r s c r ) 376 001 \0 \v 201 0047620 w i t h t h e c u r r e n t 0047640 p a t t e r n . T h i s 0047660 p r o d u c e s t h e c u r 0047700 r e n t p a t t e r n w h e 0047720 n r e s c r = 0 a n , t h 0047740 e c o m p l e m e n t o f 0047760 t h e c u r r e n t p a t t 0050000 e r n w h e n r s c r = - 1 0050020 , a n d ( p r o b a b l y ) 0050040 a b u g o t h e r w i s e 0050060 . 032 e 3 \ b 1 1 B \r % 032 e 3 \r \t 0050100 p u s h R e t u r n A n d T [ ] 0050120 ; \r \t t _ m c r . f d M i s s ; 0050140 \r \t t _ t O R ( m c r . n o 0050160 R e f ) ; \r \t c a l l [ m c r F 0050200 o r C o l ] ; \t * s e t u 376 0050220 001 \0 222 352 p m c r f o r c u 0050240 r r e n t c o l u m n , o t 0050260 h e r f l a g s a r e d e 0050300 f a u l t e d b y m c r F o 0050320 r C o l \r \r \t c a l l [ g e t C 0050340 P a t t e r n ] ; \t * k n o w 0050360 s a b o u t Q , S H C , 0050400 c u r r e n t p a t t e r n \r 0050420 \t c a l l [ s e t B r C a c h e 0050440 A b i t s ] , t _ ( s t a c k 0050460 & - 1 ) # t ; \t * g e t C P 0050500 a t t e r n r e t u k r n e d 0050520 v a l u e i n T \r \r \t c a 0050540 l l [ v a F o r R o w ] , t _ 0050560 q ; \r \t D B u f _ r 0 , S t o 0050600 r e _ t ; \t * w r i t e p r 0050620 o p e r 376 001 \0 302 ) c a c h e 0050640 e n t r y \r \t r e t u r n P [ ] 0050660 ; 032 e 3 \r \f \r * N o v e m b e 0050700 r 3 0 , 1 9 7 7 1 0 : 0 0050720 4 A M \r % 032 e 3 \r T E S T C 0050740 A C H E F L A G S : T R E A 0050760 T T H E M L I K E A M E 0051000 M O R Y 032 e 3 c \ b \r \r F o r 0051020 e a c h c o l u m n a n d 0051040 r o w e n t r y i n t h e 0051060 c a c h e , t e s t a l l 0051100 t h e p o s s i b l e c a 0051120 c h e f l a g v a l u e s . 0051140 T h e e n i g m a t i c m 0051160 e t h o d f o r r e a d i n 0051200 g a n d w r i t i n g t h 0051220 e c a c h e f 376 001 \0 304 272 l a 0051240 g s r e f l e c t s t h e 0051260 f a c t t h a t t h e f l 0051300 a g s w e r e n ' t d e s i 0051320 g n e d t o b e r e a d 0051340 a n d w r i t t e n l i k e 0051360 a m e m o r y . 032 e 3 \r B a 0051400 s i c a l l y , w r i t e t 0051420 h e c a c h e f l a g s a 0051440 s f o l l o w s : 032 e 3 \r T u 0051460 r n o n f d M i s s , d i 0051500 s H o l d , e n a b l e t h 0051520 e f l a g s a n d t h e 0051540 b a s e r e g i s t e r s . 0051560 U s e u s e M c r V t o s 0051600 e l e c t t h e c u r r e n 0051620 t c o l u m n . P R E S 376 001 0051640 \0 P 263 U M E t h e c f l a g 0051660 s v a l u e h a s b e e n 0051700 l e f t s h i f t e d b y 0051720 f o u r t o a l l i g n 0051740 i t w i t h t h e p r o p 0051760 e r p o s i t i o n i n t 0052000 h e c a c h e . 032 l 4 2 6 8 e 0052020 3 \r L e t v a = v a F o r 0052040 R o w [ r o w ] - f l a g s 0052060 V a l u e , a n d w r i t e 0052100 t h e l o w 1 6 b i t s 0052120 o f t h e c u r r e n t 0052140 b a s e r e g i s t e r w i 0052160 t h v a . N o w w r i t e 0052200 t h e v a l u e a s f o 0052220 l l o w s : 032 l 4 2 6 8 e 3 \r d 0052240 u m m 376 001 \0 Y \ y R E F _ f 0052260 l a g s V a l u e ; \r C F L A G 0052300 S _ f l a g s V a l u e ; 032 0052320 l 5 5 3 8 e 3 \r T o r e a d 0052340 t h e f l a g s , t h e 0052360 c u r r e n t c o n t e n t s 0052400 o f t h e A m e m o r y 0052420 m u s t b e k n o w n a 0052440 n d t h e r e m u s t n o 0052460 t b e t w o h i t s i n 0052500 t h e c a c h w h e n t 0052520 h e r e f e r e n c e o c c 0052540 u r s : 032 l 4 2 6 8 e 3 \r D i s 0052560 a b l e h o l d , e n a b l 0052600 e t h e f l a g s , u s e 0052620 U s e M c r v t o f o r c 0052640 e a d i f f 376 001 \0 212 375 e r e 0052660 n t c o l u m n f o r t h 0052700 e v i c t i m . P e r f o r 0052720 m , 032 l 4 2 6 8 e 3 \r d u m m y 0052740 R E F _ v a ; p i p e 5 0052760 _ p i p e 5 [ ] ; 032 l 5 5 3 8 0053000 e 3 \r w h e r e t h e p i p 0053020 e 5 [ ] o c c u r s i n t 0053040 h e n e x t i n s t r u c t 0053060 i o n a n d v a [ 0 : 1 4 ] 0053100 a r e k n o w n t o b e 0053120 i n t h e A m e m o r y 0053140 o f t h e c a c h e . C 0053160 h e c k t h a t c o l = 0053200 t h e c o l u m n t h a t 0053220 s h o u l d h a v e m a t c 0053240 h e d a n d n o t t 376 001 \0 0053260 034 272 h e c o l u m n t h a t 0053300 w a s c h o s e n a s v 0053320 i c t i m . 032 l 4 2 6 8 e 3 \r F 0053340 O R f l a g s V _ 0 , f 0053360 l a g s V + 2 0 B U N T I L 0053400 1 0 0 0 B D O - - g e n e 0053420 r a t e v a l s p r o p e r 0053440 l y p o s i t i o n e d 032 e 3 0053460 \r F O R r o w I N R o w 0053500 D O 032 l 4 2 6 8 e 3 \r u s e F l 0053520 a g s _ f l a g s V ; \r F O 0053540 R c o l I N C o l D O 032 0053560 l 5 5 3 8 e 3 \r - - f i r s t 0053600 , i n i t i a l i z e t h e 0053620 c u r r e n t r o w s o 0053640 t h a t s u b s e q u e n t 0053660 e f 376 001 \0 001 035 f o r t s t o 0053700 r e a d t h e c a c h e f 0053720 l a g s t h a t h a v e b 0053740 e e n w r i t t e n w i l l 0053760 n o t r e s u l t i n t 0054000 w o h i t s i n t h e c 0054020 a c h e 032 l 5 5 3 8 e 3 \r s e t 0054040 B r [ 0 ] ; \r v a _ v a F o 0054060 r R o w [ r o w ] ; \r s e t M c 0054100 r F o r C o l [ f d M i s s , 0054120 d i s H o l d , c o l 2 ] ; \r 0054140 v a _ v a + 1 0 0 0 B ; \r D 0054160 B u f _ 0 , S T O R E _ v a ; \r 0054200 s e t M c r F o r C o l [ f d M 0054220 i s s , d i s H o l d , u s 0054240 e M c r v , m c r v = c o l 2 0054260 ] ; 032 l 6 8 0 376 001 \0 364 m 8 e 3 \r 0054300 - - n o w w r i t e a d 0054320 i f f e r e n t f l a g s p 0054340 a t t e r n i n t o t h e 0054360 c u r r e n t c o l u m n s 0054400 o t h a t e a c h c o l u 0054420 m n o f t h e r o w w i 0054440 l l h a v e a d i f f e r 0054460 e n t v a l u e , a v a l 0054500 u e n o t s a m e a s t 0054520 h e o n e b e i n g t e s 0054540 t e d 032 l 5 5 3 8 e 3 \r s e t B 0054560 r [ v a - u s e F l a g s ] ; \r 0054600 d u m m y R e f _ u s e F l 0054620 a g s ; \r C F L A G S _ u s 0054640 e F l a g s ; \r u s e F l a g s 0054660 _ u s e F l a g s + 376 001 \0 353 0054700 377 m i n F l a g V a l ; \r I F 0054720 u s e F l a g s > m a x F l 0054740 a g s T H E N u s e F l a g 0054760 s _ m i n F l a g V a l ; \r 0055000 E N D L O O P ; 032 l 6 8 0 8 e 3 0055020 \r \r - - n o w c h e c k i 0055040 t 032 l 5 5 3 8 e 3 \r \r u s e F l 0055060 a g s _ f l a g s V ; \r F O 0055100 R c o l I N C o l D O 032 0055120 l 5 5 3 8 e 3 \r s e t M c r [ d 0055140 i s H o l d , u s e M c r v , 0055160 m c r v : ~ c o l ] ; \r v a 0055200 _ v a F o r R o w [ r o w ] 0055220 + c o l * 1 0 0 0 B ; \r s e 0055240 t B R [ v a ] ; \r d u m m y R e 0055260 f _ 0 ; \r p i p e 5 _ p 0055300 i 376 001 \0 e K p e 5 ; \r I F p i 0055320 p e 5 . c o l # c o l T H E N 0055340 E R R O R ; \r f v a l _ p 0055360 i p e 5 A N D c F l a g s M 0055400 a s k ; \r I F ( f v a l # 0055420 u s e F l a g s ) # 0 T H 0055440 E N E R R O R ; \r u s e F l a 0055460 g s _ u s e F l a g s + m i 0055500 n F l a g V a l ; \r I F u s e 0055520 F l a g s > m a x F l a g s 0055540 T H E N u s e F l a g s _ 0055560 m i n F l a g V a l ; \r E N D 0055600 L O O P ; \t - - e n d c o l 0055620 l o o p 032 l 6 8 0 8 e 3 \r E N 0055640 D L O O P ; \t - - e n d r o 0055660 w l o o p 032 l 5 5 3 8 e 3 \r E 0055700 N D L O O P 376 001 \0 r d ; \t - - 0055720 e n d f l a g s V l o o p 032 0055740 l 4 2 6 8 e 3 \r % 032 e 3 \r \f 032 e 0055760 3 \ b 1 B \r * M a r c h 1 4 0056000 , 1 9 7 8 1 1 : 1 6 A M 0056020 \t * I N I T c a c h e f l 0056040 a g s r e a d / w r i t e 0056060 t e s t \r c F l a g s T e s t : 0056100 \t * r e a d a n d w r i t 0056120 e c a c h e f l a g s \r \t p 0056140 u s h R e t u r n [ ] ; \r \t c h 0056160 e c k M t e s t [ m e m F l a g 0056200 s . c F l a g s , c f T e s t 0056220 D o n e ] ; \r \t c a l l [ s e t 0056240 M b a s e ] , t _ r 0 ; \t * M 0056260 E M B A S E _ 0 \r \t c a l l 0056300 [ i n i t F l a g s C 376 001 \0 206 320 0056320 t r l ] ; \r c f L : \t \t * M A 0056340 I N o u t e r L O O P \r \t c 0056360 a l l [ n e x t C F l a g ] ; \r 0056400 \t b r a n c h [ c f T e s t D o 0056420 n e , a l u = 0 ] ; \r \t f l a g 0056440 s V _ t ; \r \t c a l l [ i n 0056460 i t R o w C t r l ] ; \r \r c f R 0056500 o w L : \t * t o p o f r o 0056520 w l o o p \r \t c a l l [ g e t 0056540 C f l a g ] ; \t * r e s t o r 0056560 e f l a g s V s i n c e c 0056600 f C o l R e a d L \r \t f l a g s 0056620 V _ t ; \t * c l o b b e r 0056640 s i t \r \t c a l l [ n e x t R 0056660 o w ] ; \t * c h e c k f o r 0056700 n e x t r o w \r \t s k p i f 0056720 376 001 \0 } 207 [ a l u # 0 ] ; \r \t b 0056740 r a n c h [ c f l ] ; \t * t r 0056760 y n e x t s e t o f f l 0057000 a g s \r \t q _ t ; \t * k e e p 0057020 r o w i n Q \r \r c f C o l 0057040 I n i t L : \t * t o p o f 0057060 c o l u m n l o o p \r \t c a l 0057100 l [ i n i t C o l C t r l ] ; \r 0057120 c f C o l W L : \t * t o p o 0057140 f r o w w r i t e l o o p 0057160 \r \t c a l l [ n e x t C o l ] ; 0057200 \r \t b r a n c h [ c f B e g i n 0057220 C h e c k , a l u = 0 ] , c o 0057240 l _ t ; \r \t r s c r _ c o l 0057260 ; \r \t c a l l [ c V a F o r C r 0057300 o w C o l ] , t _ q ; \t * 0057320 g e t 376 001 \0 232 ( u n i q u e 0057340 v a f o r t h i s r o w 0057360 / c o l \r \t v a _ t ; \r \t c 0057400 a l l [ s e t C A m e m ] ; \t * 0057420 v a = a d d r , c o l 0057440 = c o l u m n \r \t r s c r _ 0057460 f l a g s v ; \r \t c a l l [ s 0057500 e t C F l a g s ] , t _ v 0057520 a ; \t * s e t t h e f l a 0057540 g s f o r t h i s c o l / 0057560 r o w \r \t c a l l [ i n c F l a 0057600 g s V ] ; \t * g e t u n i q 0057620 u e f l a g s f o r e a c 0057640 h c o l u m n \r \t b r a n c h 0057660 [ c f C o l W L ] ; \r \r c f B e 0057700 g i n C h e c k : \r \t c a l l [ 0057720 i n i t C o l C t r 376 001 \0 215 323 l 0057740 ] ; \t * i n i t c o l u m n 0057760 l o o p c o n t r o l \r \t c 0060000 a l l [ g e t C f l a g ] ; \t * 0060020 r e s e t f l a g s V t o 0060040 c u r r e n t v a l u e \r \t 0060060 f l a g s V _ t ; \r \r c f C 0060100 o l R e a d L : \t * t o p o 0060120 f c o l u m n r e a d / c h 0060140 e c k l o o p \r \t c a l l [ n 0060160 e x t C o l ] ; \r \t s k p i f [ 0060200 a l u # 0 ] , c o l _ t ; \r \t 0060220 b r a n c h [ c f R o w L ] ; \t 0060240 * n o m o r e c o l s , 0060260 t r y n e x t r o w \r \r \t r 0060300 s c r _ c o l ; \r \t c a l l 0060320 [ c V a F o r C r o w C o l ] 376 0060340 001 \0 025 . , t _ q ; \t * g 0060360 e t u n i q u e v a f o r 0060400 t h i s r o w / c o l \r \t v 0060420 a _ t ; \t * s a v e t h 0060440 e v a \r \t r s c r 2 _ c o 0060460 l ; \r \t c a l l [ r e a d C f l 0060500 a g s ] , r s c r _ t ; \t 0060520 * r e t u r n s w / p i p 0060540 e 5 i n T \r \r % * - - - - - 0060560 - - - - - - - - - - - - - - - - * 0060660 - - - - - - - - - \r m e m b a s 0060700 e + v a = t h e a d d r e 0060720 s s w e r e f e r e n c e d 0060740 . T 376 001 \0 233 h e v a l u 0060760 e i n v a s e l e c t s 0061000 t h e c a c h e r o w , a 0061020 n d t h e v a l u e i n 0061040 m e m b a s e g e t s u s 0061060 t o t h e c o r r e c t c 0061100 o l u m n i n t h e r o w 0061120 ( b e c a u s e t h e c a 0061140 c h e r o w h a s b e e n 0061160 w r i t t e n w i t h u n 0061200 i q u e a d d r e s s e s f 0061220 o r e a c h c o l u m n ) . 0061240 Q = c u r r e n t r o w , 0061260 c o l = c u r r e n t c 0061300 o l u m n ( b o t h i n t 0061320 h e c a c h e ) . F l a g 0061340 s V c o n t a i 376 001 \0 031 237 n s 0061360 t h e v a l u e w e w r 0061400 o t e i n t o t h e c a c 0061420 h e f l a g s f o r t h e 0061440 c u r r e n t r o w a n d 0061460 c o l u m n . \r % * - - - - - 0061500 - - - - - - - - - - - - - - - - * 0061600 - - - - - - - - - \r \t r s c r 0061620 _ t ; \r \t c a l l [ c h k P i 0061640 p e 5 C o l ] , t _ c o l 0061660 ; \t * e x p e c t s r s c r 0061700 = p i p e 5 , t = c o 0061720 l \r \t s k p i f [ a l u = 0 ] ; 0061740 \t * b a d c o l u m n . 376 001 0061760 \0 = 332 b a d b i t s i n 0062000 T , p i p e 5 i n r s c r 0062020 \r c f B a d C o l : \r \t e r r o 0062040 r ; \t * e x p e c t e d v a 0062060 l i n c o l \r \r \t c a l l [ 0062100 c h k C f l a g s ] , t _ f l a 0062120 g s V ; \t * c h e c k f o r 0062140 p r o p e r c f l a g s i 0062160 n r s c r \r \t s k p i f [ a l 0062200 u = 0 ] ; \t * t = b a d 0062220 b i t s , f l a g s V = e 0062240 x p e c t e d b i t s , \r c f 0062260 B a d F l a g s : \r \t e r r o r 0062300 ; \t * r s c r = p i p e 5 0062320 \r \r \t c a l l [ i n c F l a g s 0062340 V ] ; \t * a d j u s t f o r 0062360 u n 376 001 \0 N 237 i q u e f l a 0062400 g s V f o r e a c h c o l 0062420 \r \t b r a n c h [ c f C o l R e 0062440 a d L ] ; \r \r i n c F l a g s V 0062460 : s u b r o u t i n e ; \r \t F 0062500 l a g s V _ ( F l a g s V ) 0062520 + ( c f l a g s . b e i n g 0062540 L o a d e d ) ; \t * b e t t e 0062560 r b e l e a s t s i g n f 0062600 . b i t ! \r \t F l a g s V _ 0062620 ( F l a g s V ) A N D ( c 0062640 f l a g s . m a s k ) ; \r \t s k 0062660 p i f [ a l u # 0 ] ; \r \t F l a 0062700 g s V _ ( c f l a g s . b e 0062720 i n g L o a d e d ) ; \r \t r e t 0062740 u r n ; \r \t t o p l e v e l ; 0062760 \r c f T e s t D 376 001 \0 334 342 o n e 0063000 : \r \t r e t u r n P [ ] ; \r \f \r 0063020 * F e b r u a r y 2 1 , 1 0063040 9 7 8 6 : 5 3 P M \r % 032 \ 0063060 6 3 b 1 1 B 1 4 5 b 4 B 9 9 b 7 0063100 B 1 9 3 b 1 5 B 2 b 1 1 B 4 2 b 0063120 8 B 3 5 1 b 1 3 B 1 1 1 b 1 1 B 0063140 9 4 9 b 9 B 1 4 8 b 1 1 B 1 0 5 0063160 b 1 0 B 1 9 2 b 1 1 B \r C a c h 0063200 e A d d r e s s i n g T e s 0063220 t 032 c \ b 2 1 B \r T h i s t e 0063240 s t c h e c k s t h a t t 0063260 h e a d d r e s s i n g m e 0063300 c h a n i s m ( a s o p p o 0063320 s e d t o t h e b i t s 0063340 t h a t h o l d c a c h e 0063360 a d d r e s s v a l u e 376 001 \0 0063400 316 330 s ) w o r k s . T h e 0063420 a l g o r i t h m w o r k s 0063440 a s f o l l o w s : 032 \r Z e r 0063460 o t h e a m e m o r y a n 0063500 d t h e c a c h e \r A s c e 0063520 n d t h r u t h e a m e m 0063540 o r y a n d c a c h f l a 0063560 g s : c h e c k t h a t t 0063600 h e c u r r e n t v a l u e 0063620 i s z e r o a n d t h e 0063640 n s e t i t t o - 1 . 0063660 I f t h e c u r r e n t v 0063700 a l u e i s n o t z e r o 0063720 , a n e a r l i e r s t o 0063740 r e c l o b b e r e d t h i 0063760 s e n t r y . I n t h i s 0064000 c 376 001 \0 026 3 a s e p e r f o 0064020 r m t h e " f i n d U P " 0064040 c h e c k t e s t . \r Z e r 0064060 o t h e a m e m o r y a n 0064100 d t h e c a c h e f l a g 0064120 s \r D e s c e n d t h r u t 0064140 h e a m e m o r y a n d c 0064160 a c h e f l a g s : c h e c 0064200 k t h a t t h e c u r r e 0064220 n t v a l u e i s z e r o 0064240 a n d t h e n s e t i t 0064260 t o - 1 . I f t h e c 0064300 u r r e n t v a l u e i s 0064320 n o t z e r o , a n e a r 0064340 l i e r s t o r e c l o b b 0064360 e r e d t h i s e n t r y . 0064400 I n t h i 376 001 \0 e 213 s c a 0064420 s e p e r f o r m t h e " 0064440 f i n d D O W N " c h e c k 0064460 t e s t \r O t h e r w i s e , 0064500 t h e a d d r e s s i n g w 0064520 o r k s . \r \r F i n d U P : 0064540 z e r o t h e a m e m o r y 0064560 a n d t h e c a c h e f 0064600 l a g s . \r A s c e n d t h r 0064620 u t h e a m e m o r y a n 0064640 d c a c h e f l a g s : b 0064660 e f o r e s e t t i n g t h 0064700 e c u r r e n t l o c a t i 0064720 o n t o - 1 c h e c k t 0064740 h a t t h e e a r l i e r 0064760 c l o b b e r e d l o c a t i 0065000 o n i s s t i l l 376 001 \0 8 0065020 W z e r o . I f i t i s 0065040 n o t z e r o , t h e p r 0065060 e v i o u s s t o r e c l o 0065100 b b e r e d t h a t l o c a 0065120 t i o n . 032 l 4 2 6 8 \r F i n d 0065140 D o w n : s a m e a s f i 0065160 n d U P e x c e p t d e s c 0065200 e n d t h r u t h e a m e 0065220 m o r y a n d c a c h e f 0065240 l a g s 032 l 4 2 6 8 \r Z e r o C 0065260 a c h e A n d F l a g s [ ] ; \r 0065300 F O R r o w I N R o w D 0065320 O 032 \r F O R c o l I N C o 0065340 l D O 032 l 4 2 6 8 \r I F c a 0065360 c h e [ r o w , c o l ] # 0 0065400 T H E N f i n d E r r U p [ r 0065420 o 376 001 \0 215 # w , c o l ] ; \r I F 0065440 c a c h e F l a g s [ r o w , 0065460 c o l ] # 0 T H E N f i n 0065500 d E r r U P [ r o w , c o l ] 0065520 ; \r c a c h e [ r o w , c o l ] 0065540 _ - 1 ; \r c a c h e F l a g 0065560 s [ r o w , c o l ] _ - 1 ; 0065600 \r E N D L O O P ; 032 l 5 5 3 8 \r 0065620 E N D L O O P : 032 l 4 2 6 8 \r z 0065640 e r o C a c h e A n d F l a g s 0065660 [ ] ; \r F O R R o w D E S C 0065700 E N D I N G I N R o w D O 0065720 032 \r F O R c o l I N C o l 0065740 D O 032 l 4 2 6 8 \r I F c a c 0065760 h e [ r o w , c o l ] # 0 T 0066000 H E N f i n d E r r U p [ r o 0066020 w , c o l ] 376 001 \0 302 302 ; \r I F 0066040 c a c h e F l a g s [ r o w , c 0066060 o l ] # 0 T H E N f i n d 0066100 E r r U P [ r o w , c o l ] ; 0066120 \r c a c h e [ r o w , c o l ] 0066140 _ - 1 ; \r c a c h e F l a g s 0066160 [ r o w , c o l ] _ - 1 ; \r 0066200 E N D L O O P ; 032 l 5 5 3 8 \r E 0066220 N D L O O P : 032 l 4 2 6 8 \r \r - 0066240 - T h e s e a r e s u b r 0066260 o u t i n e s u s e d i n 0066300 t h e " a d d r e s s i n g 0066320 t e s t " s h o w n a b o v 0066340 e . 032 \r f i n d E r r U p : P 0066360 R O C E D U R E [ r : R o w , 0066400 c : C o l ] = 032 \r B E G I 0066420 N \r z e r o C a c h e 376 001 \0 212 314 0066440 A n d F l a g s [ ] ; \r F O R 0066460 r o w I N R o w D O 032 l 4 0066500 2 6 8 \r F O R c o l I N C 0066520 o l D O 032 l 5 5 3 8 \r I F c 0066540 a c h e [ r , c ] # 0 T H E 0066560 N S i g n a l C a c h e A d 0066600 d r U p [ r , c , r o w - 1 , 0066620 c o l - 1 ] ; \r I F c a c h 0066640 e F l a g s [ r , c ] # 0 T 0066660 H E N S i g n a l C a c h e 0066700 A d d r U p [ r , c , r o w - 1 0066720 , c o l - 1 ] ; \r c a c h e [ 0066740 r o w , c o l ] _ - 1 ; \r c 0066760 a c h e F l a g s [ r o w , c o 0067000 l _ - 1 ; \r E N D L O O P : 0067020 032 l 6 8 0 8 \r E N D L O O P : 032 0067040 376 001 \0 016 201 l 5 5 3 8 \r E N D : 032 0067060 l 4 2 6 8 \r f i n d E r r D o w 0067100 n : P R O C E D U R E [ r : 0067120 R o w , c : C o l ] = 032 \r 0067140 B E G I N \r z e r o C a c h e A 0067160 n d F l a g s [ ] ; \r F O R r 0067200 o w D E S C E N D I N G I N 0067220 R o w D O 032 l 4 2 6 8 \r F O 0067240 R c o l I N C o l D O 032 0067260 l 5 5 3 8 \r I F c a c h e [ r 0067300 , c ] # 0 T H E N S i g n 0067320 a l C a c h e A d d r U p [ r 0067340 , c , r o w - 1 , c o l - 1 0067360 ] ; \r I F c a c h e F l a g s 0067400 [ r , c ] # 0 T H E N S i 0067420 g n a l C a c h e A d d r U p 0067440 [ r , c , 376 001 \0 035 214 r o w - 1 , 0067460 c o l - 1 ] ; \r c a c h e [ r 0067500 o w , c o l ] _ - 1 ; \r c a 0067520 c h e F l a g s [ r o w , c o l 0067540 _ - 1 ; \r E N D L O O P : 032 0067560 l 6 8 0 8 \r E N D L O O P : 032 l 0067600 5 5 3 8 \r E N D : 032 l 4 2 6 8 \r 0067620 % 032 \r \f \r * M a r c h 1 4 , 0067640 1 9 7 8 1 1 : 1 7 A M \r 0067660 c a c h e A d d r T e s t : \r \t 0067700 p u s h R e t u r n [ ] ; \r \t c 0067720 h e c k M t e s t [ m e m F l a 0067740 g s . c A d d r , c a t D o n 0067760 e ] ; \r \t c a l l [ z e r o C a 0070000 c h e A n d F l a g s ] ; \r \t c 0070020 a l l [ i n i t R o w C t r l ] 0070040 ; \r \r c a t R o w U 376 001 \0 . h p 0070060 L : \r \t c a l l [ n e x t R o w 0070100 ] ; \t * s e e i f d o n e 0070120 g o i n g u p \r \t s k p i f 0070140 [ a l u # 0 ] ; \r \t b r a n c h 0070160 [ c a t U p X i t ] ; \t * t i 0070200 m e t o d e s c e n d t h 0070220 r u a d d r e s s e s \r \t q 0070240 _ t ; \t * K E E P R O W 0070260 I N Q \r \r \t c a l l [ i n i t 0070300 C o l C t r l ] ; \r c a t C o l 0070320 U p L : \r \t c a l l [ n e x t C 0070340 o l ] ; \t * c h e c k i f 0070360 d o n e w / c o l s \r \t s k 0070400 p i f [ a l u # 0 ] ; \r \t b r a 0070420 n c h [ c a t R o w U p L ] ; \t 0070440 * t r y n e x t r o w \r 376 0070460 001 \0 W 265 \r \t c o l _ t ; \r \t 0070500 c a l l [ r e a d C u r r e n t 0070520 C f l a g s ] ; \r \t s k p i f [ 0070540 a l u = 0 ] ; \r \t b r a n c h [ 0070560 c a t F i n d U p F ] ; \t * f 0070600 l a g s w e r e c l o b b e 0070620 r e d \r \t c a l l [ r e a d C u 0070640 r r e n t C A m e m ] ; \r \t s k 0070660 p i f [ a l u = 0 ] ; \r \t b r a 0070700 n c h [ c a t F i n d U p A d ] 0070720 ; \t * a m e m c l o b b e r 0070740 e d \r \r \t c a l l [ s e t C A A 0070760 F ] ; \t * s e t a m e m a 0071000 n d f l a g s t o - 1 \r \t 0071020 b r a n c h [ c a t C o l U p L 0071040 ] ; \r \r c a t U p X i t : \t * 0071060 a s c e 376 001 \0 e \r n d i n g s 0071100 t o r e s d i d n o t c a 0071120 u s e s a d e t e c t a b l 0071140 e a d d r e s s i n g e r r 0071160 o r . T r y t h e s a m e 0071200 a p p r o a c h w / d e s 0071220 c e n d i n g a d d r e s s e 0071240 s . \r \t c a l l [ z e r o C a c 0071260 h e A n d F l a g s ] ; \r \t c a 0071300 l l [ i n i t R o w D o w n ] ; 0071320 \r \r c a t R o w D o w n L : \r \t 0071340 c a l l [ n e x t R o w D o w n 0071360 ] ; \r \t s k p i f [ a l u # 0 ] 0071400 ; \r \t b r a n c h [ c a t D o n 0071420 e ] ; \r \t q _ t ; \t * K E E P 0071440 R O W I N Q \r \r \t c a l l 0071460 [ i n i t C o l C 376 001 \0 037 Z t r 0071500 l ] ; \r c a t C o l D o w n L : 0071520 \r \t c a l l [ n e x t C o l ] ; 0071540 \r \t s k p i f [ a l u # 0 ] ; \r 0071560 \t b r a n c h [ c a t R o w D o 0071600 w n L ] ; \r \t c o l _ t ; \r 0071620 \r \t c o l _ t ; \r \t c a l l 0071640 [ r e a d C u r r e n t C f l a 0071660 g s ] ; \r \t s k p i f [ a l u = 0071700 0 ] ; \r \t b r a n c h [ c a t F 0071720 i n d D o w n F ] ; \t * f l a 0071740 g s w e r e c l o b b e r e 0071760 d \r \t c a l l [ r e a d C u r r 0072000 e n t C A m e m ] ; \r \t s k p i 0072020 f [ a l u = 0 ] ; \r \t b r a n c 0072040 h [ c a t F i n d D o w n A d ] 0072060 ; \t * a m e m c l o b b 376 001 0072100 \0 3 022 e r e d \r \r \t c a l l [ s 0072120 e t C A A F ] ; \t * s e t a 0072140 m e m a n d f l a g s t o 0072160 - 1 \r \r \t b r a n c h [ c a t 0072200 R o w D o w n L ] ; \r \f \r * D 0072220 e c e m b e r 1 3 , 1 9 7 8 0072240 9 : 5 7 A M \r \r s e t [ c 0072260 a t P a c k S h i f t , 3 ] ; 0072300 \t * l e f t s h i f t t h 0072320 e r o w v a l u e t h i s 0072340 m u c h t o m a k e r o 0072360 o m f o r t h e c o l u m 0072400 n ( a l l i n a " p a c 0072420 k e d " v a ) . \r \r c a t F i 0072440 n d D o w n F : \r c a t F i n d 0072460 D o w n A D : \r \t v a _ q ; 0072500 \t * 376 001 \0 m \b P A C K r o w 0072520 , , c o l I N T O V A \r \t t 0072540 _ c o l ; \r \t v a _ l s 0072560 h [ v a , c a t P a c k S h i 0072600 f t ] ; \r \t v a _ ( v a ) 0072620 O R t ; \r \r \t c a l l [ z e r 0072640 o C a c h e A n d F l a g s ] ; 0072660 \r \t c a l l [ i n i t R o w D o 0072700 w n ] ; \r \r c a t R o w F i n d 0072720 D L : \r \t c a l l [ n e x t R o 0072740 w D o w n ] ; \r \t s k p i f [ a 0072760 l u # 0 ] ; \r \t b r a n c h [ c 0073000 a t D o n e ] ; \r \t q _ t ; \t * 0073020 K E E P R O W I N Q \r \r 0073040 \t c a l l [ i n i t C o l C t r 0073060 l ] ; \r c a t C o l F i n d D L 0073100 : \r \t c a l l [ 376 001 \0 374 T n e x 0073120 t C o l ] ; \r \t s k p i f [ a l 0073140 u # 0 ] ; \r \t b r a n c h [ c a 0073160 t R o w F i n d D L ] ; \r \t c o 0073200 l _ t ; \r % * - - - - - - - 0073220 - - - - - - - - - - - - - - - - * 0073320 - - - - - - - \r T h e s e t w 0073340 o e r r o r s i n d i c a t 0073360 e t h a t t h e l a s t 0073400 t i m e w e w r o t e t h 0073420 e c a c h e A m e m o r y 0073440 o r t h e f l a g s t h 0073460 e r e w a s a n a d d r e 0073500 s s i n g e r r o r . 376 001 \0 0073520 a 4 U n f o r t u n a t e l y 0073540 t h i s m e a n s t h e r 0073560 e a d e r m u s t d e t e r 0073600 m i n e w h a t t h e a d 0073620 d r e s s w a s " l a s t 0073640 t i m e " . Q = c u r r 0073660 e n t r o w a n d c o l 0073700 = c u r r e n t c o l u m n 0073720 . S u b t r a c t o n e f 0073740 r o m t h e c o l u m n n 0073760 u m b e r t o d e t e r m i 0074000 n e t h e l a s t a d d r 0074020 e s s . I f t h e c o l u 0074040 m n n u m b e r g o e s n 0074060 e g a t i v e , t h e n t h 0074100 e l a s t c o l u m n w a 0074120 s 376 001 \0 207 227 3 a n d t h e 0074140 l a s t r o w w a s c u 0074160 r r e n t r o w + 1 ( t h 0074200 i s l o o p s c a n s " d 0074220 o w n " t h e p o s s i b l 0074240 e c a c h e a d d r e s s e 0074260 s ) . T h e p a c k e d v 0074300 a , c o n t a i n e d i n 0074320 " v a " m a y b e d e c o 0074340 d e d a s f o l l o w s : 0074360 T h e 3 l e a s t s i g 0074400 n i f i c a n t b i t s a r 0074420 e t h e c o l u m n n u m 0074440 b e r o f t h e a d d r e 0074460 s s t h a t g o t c l o b 0074500 b e r e d a n d t h e r e 0074520 m a i n i n g 376 001 \0 227 P b i t 0074540 s a r e t h e r o w n u 0074560 m b e r . H e n c e , i f 0074600 v a = 1 3 2 , t h e c l 0074620 o b b e r e d a d d r e s s 0074640 i s r o w 1 3 c o l u m n 0074660 2 . \r % * - - - - - - - - - - 0074700 - - - - - - - - - - - - - - - - * 0075000 - - - - \r \t c a l l [ r e a d O 0075020 l d C f l a g s ] ; \r \t s k p i 0075040 f [ a l u = 0 ] ; \r c a t D o w 0075060 n C F e r r : \t * q = c u r r 0075100 e n t r o w , c o l = c 0075120 u r r e n t c o l u m 376 001 \0 222 0075140 016 n , \r * \t v a = p a c k e 0075160 d , o l d , c l o b b e r e 0075200 d r o w , c o l u m n \r \t e r 0075220 r o r ; \t * f l a g s w e r 0075240 e c l o b b e r e d \r \r \t c a 0075260 l l [ r e a d O l d C A m e m ] 0075300 ; \r \t s k p i f [ a l u = 0 ] ; 0075320 \r c a t D o w n A m e m E r r : 0075340 \t * q = c u r r e n t r o w 0075360 , c o l = c u r r e n t 0075400 c o l u m n , \r * \t v a = p 0075420 a c k e d , o l d , c l o b 0075440 b e r e d r o w , c o l u m n 0075460 \r \t e r r o r ; \t * a m e m 0075500 c l o b b e r e d \r \r \t c a l l 0075520 [ s e t C A A F ] ; \t * s e t 0075540 376 001 \0 W 217 a m e m a n d f 0075560 l a g s t o - 1 \r \r \t b r a 0075600 n c h [ c a t R o w F i n d D L 0075620 ] ; \r \f \r * D e c e m b e r 0075640 1 3 , 1 9 7 8 \r c a t F i n d 0075660 U p F : \r c a t F i n d U p A D 0075700 : \r \t v a _ q ; \t * P A C 0075720 K r o w , , c o l I N T O 0075740 V A \r \t t _ c o l ; \r \t v a 0075760 _ l s h [ v a , c a t P a 0076000 c k S h i f t ] ; \r \t v a _ 0076020 ( v a ) O R t ; \t * V A 0076040 = r o w , , c o l o f c l 0076060 o b b e r e d l o c a t i o n 0076100 . \r \r \t c a l l [ z e r o C a c 0076120 h e A n d F l a g s ] ; \r \t c a 0076140 l l [ i n i 376 001 \0 341 323 t R o w C 0076160 t r l ] ; \r \r c a t R o w F i n 0076200 d U p L : \r \t c a l l [ n e x t 0076220 R o w ] ; \r \t s k p i f [ a l u 0076240 # 0 ] ; \r \t b r a n c h [ c a t 0076260 D o n e ] ; \r \t q _ t ; \t * K 0076300 E E P R O W I N Q \r \r \t c 0076320 a l l [ i n i t C o l C t r l ] 0076340 ; \r c a t C o l F i n d U p L : 0076360 \r \t c a l l [ n e x t C o l ] ; 0076400 \r \t s k p i f [ a l u # 0 ] ; \r 0076420 \t b r a n c h [ c a t R o w F i 0076440 n d U p L ] ; \r \t c o l _ t 0076460 ; \r \r % * - - - - - - - - - - - 0076500 - - - - - - - - - - - - - - - - * 0076540 - - - - - - - - - - - 376 001 \0 2 017 0076560 - - - - - - - - - - - - - - - - 0076600 - - - - - - - - \r T h e s e t 0076620 w o e r r o r s i n d i c a 0076640 t e t h a t t h e l a s t 0076660 t i m e w e w r o t e t 0076700 h e c a c h e A m e m o r 0076720 y o r t h e f l a g s t 0076740 h e r e w a s a n a d d r 0076760 e s s i n g e r r o r . U n 0077000 f o r t u n a t e l y t h i s 0077020 m e a n s t h e r e a d e 0077040 r m u s t d e t e r m i n e 0077060 w h a t t h e a d d r e s 0077100 s w a s " l a s t t i m e 0077120 " . Q = c u r r e n t 0077140 r o w a n d c o l = c u 0077160 376 001 \0 200 r r e n t c o l u m 0077200 n . S u b t r a c t o n e 0077220 f r o m t h e c o l u m n 0077240 n u m b e r t o d e t e r m 0077260 i n e t h e l a s t a d d 0077300 r e s s . I f t h e c o l 0077320 u m n n u m b e r g o e s 0077340 n e g a t i v e , t h e n t 0077360 h e l a s t c o l u m n w 0077400 a s 3 a n d t h e l a s 0077420 t r o w w a s c u r r e n 0077440 t r o w - 1 ( t h i s l 0077460 o o p s c a n s " u p " t 0077500 h e p o s s i b l e c a c h 0077520 e a d d r e s s e s ) . T h 0077540 e p a c k e d v a , c o n 0077560 t a i n e 376 001 \0 a 270 d i n " 0077600 v a " m a y b e d e c o d 0077620 e d a s f o l l o w s : 0077640 T h e 3 l e a s t s i g n 0077660 i f i c a n t b i t s a r e 0077700 t h e c o l u m n n u m b 0077720 e r o f t h e a d d r e s 0077740 s t h a t g o t c l o b b 0077760 e r e d a n d t h e r e m 0100000 a i n i n g b i t s a r e 0100020 t h e r o w n u m b e r . 0100040 H e n c e , i f v a = 1 0100060 3 2 , t h e c l o b b e r e 0100100 d a d d r e s s i s r o w 0100120 1 3 c o l u m n 2 . \r % * 0100140 - - - - - - - - - - - - - - - - 0100160 - - - - - - - - - - 376 001 \0 T Y - 0100200 - - - - - - - - - - - - - - - - * 0100260 - - - \r \t c a l l [ r e a d O l 0100300 d C f l a g s ] ; \r \t s k p i f 0100320 [ a l u = 0 ] ; \r c a t U p C F 0100340 e r r : \t * q = c u r r e n t 0100360 r o w , c o l = c u r r 0100400 e n t c o l u m n , \r * \t v a 0100420 = p a c k e d , o l d , 0100440 c l o b b e r e d r o w , c o 0100460 l u m n \r \t e r r o r ; \t * f 0100500 l a g s w e r e c l o b b e 0100520 r e d \r \r \t c a l l [ r e a d O 0100540 l d C A m e m ] ; \r \t s k p i f 0100560 [ a l u = 0 ] ; \r c a t U p A 376 0100600 001 \0 321 372 d d r E r r : \t * q = 0100620 c u r r e n t r o w , c o l 0100640 = c u r r e n t c o l u m 0100660 n , \r * \t v a = p a c k e d 0100700 , o l d , c l o b b e r e d 0100720 r o w , c o l u m n \r \t e r r 0100740 o r ; \t * a m e m c l o b b 0100760 e r e d \r \r \t c a l l [ s e t C 0101000 A A F ] ; \t * s e t a m e m 0101020 a n d f l a g s t o - 1 0101040 \r \r \t b r a n c h [ c a t R o w 0101060 F i n d U p L ] ; 032 e 6 \ 2 9 b 0101100 1 4 B 1 0 1 b 1 0 B 1 5 2 b 1 0 0101120 B 3 3 1 b 9 B 3 7 b 1 0 B 1 1 3 0101140 b 1 2 B 9 7 b 1 2 B 3 4 6 b 1 2 0101160 B 9 6 b 1 3 B 1 b 1 4 B 1 3 8 b 0101200 1 3 B 9 376 001 \0 302 322 7 b 1 3 B 1 7 0101220 7 i 5 4 I 1 6 0 b 8 B 1 5 5 b 2 0101240 B 4 2 5 b 1 3 B 1 4 9 b 1 5 B 1 0101260 9 6 b 1 1 B 1 b 1 2 B 9 1 b 3 6 0101300 B 5 0 b 1 4 B 9 3 b 1 4 B 1 7 9 0101320 i 5 4 I 1 6 0 b 8 B 1 5 5 b 2 B 0101340 4 2 3 b 1 1 B 1 4 9 b 1 3 B \r \f 0101360 \r * D e c e m b e r 5 , 1 0101400 9 7 8 1 2 : 1 8 P M \r s e 0101420 t C A A F : s u b r o u t i n 0101440 e ; \t * s e t c u r r e n t 0101460 c a c h e l o c a t i o n 0101500 a n d c a c h e f l a g s 0101520 t o a l l o n e s \r \t p u s 0101540 h R e t u r n [ ] ; \r \t t _ 0101560 q ; \r \t c a l l [ v a F o r R o 0101600 w ] ; \r \t r s c r 376 001 \0 S z _ 0101620 t ; \r \t t _ c o l ; \r \t r 0101640 s c r 2 _ t ; \r \t t _ r 0101660 s c r ; \r \t r s c r _ c m 1 0101700 ; \r \t c a l l [ p u t C A m e m 0101720 ] ; \t * t = v a , r s c 0101740 r = b r H i 1 5 , r s c r 0101760 2 = c o l \r \t t _ q ; \r 0102000 \t c a l l [ v a F o r R o w ] ; 0102020 \r \t r s c r _ t ; \r \t t _ 0102040 c o l ; \r \t r s c r 2 _ t 0102060 ; \r \t t _ r s c r ; \r \t r s 0102100 c r _ ( c f l a g s . m a s 0102120 k ) ; \r \t c a l l [ p u t C F m 0102140 e m ] ; \t * t = v a , r 0102160 s c r = f l a g s , r s c 0102200 r 2 = c o l \r \t r e t u 376 001 0102220 \0 001 337 r n P [ ] ; \r \t \r r e a d 0102240 C u r r e n t C F l a g s : s 0102260 u b r o u t i n e ; \r \t p u s h 0102300 R e t u r n [ ] ; \r \t t _ q 0102320 ; \r \t c a l l [ v a F o r R o w 0102340 ] ; \r \t r s c r _ t ; \r \t r 0102360 s c r 2 _ c o l ; \r \t c a l 0102400 l [ r e a d C f l a g s ] ; \t * 0102420 r s c r = v a , r s c r 0102440 2 = c o l \r \t t _ t A 0102460 N D ( c f l a g s . m a s k ) 0102500 ; \t * i s o l a t e f l a g 0102520 s f r o m o t h e r p i p 0102540 e 5 s t u f f \r \t r e t u r n 0102560 P A n d B r a n c h [ t ] ; 032 e 0102600 6 \ 3 1 b 8 B 3 8 0 b 1 8 B \r r 0102620 e a d 376 001 \0 377 243 O l d C f l a g 0102640 s : s u b r o u t i n e ; \r \t 0102660 p u s h R e t u r n [ ] ; \r \t t 0102700 _ r s h [ v a , c a t P a 0102720 c k S h i f t ] ; ; \r \t c a l l 0102740 [ v a F o r R o w ] ; \r \t r s c 0102760 r _ t ; \r \t t _ ( v a ) 0103000 A N D ( 3 c ) ; \t * i s o 0103020 l a t e c o l \r \t c a l l [ r 0103040 e a d C f l a g s ] , r s c r 0103060 2 _ t ; \t * r s c r = 0103100 v a , r s c r 2 = c o l \r 0103120 \t t _ t A N D ( c f l a 0103140 g s . m a s k ) ; \t * i s o l 0103160 a t e f l a g s f r o m o 0103200 t h e r p i p e 5 s t u f f 0103220 \r \t r e t u r n 376 001 \0 c b P A n 0103240 d B r a n c h [ t ] ; 032 e 6 \ b 0103260 1 4 B \r r e a d C u r r e n t C 0103300 A m e m : s u b r o u t i n e 0103320 ; \t * t h e c a c h e a d 0103340 d r e s s m e m o r y r e q 0103360 u i r e s d e s t r u c t i v 0103400 e r e a d . T h e r e f o r 0103420 e , r e a d t h e m e m o 0103440 r y w / t h e v a l u e 0103460 w e e x p e c t t o f i n 0103500 d ! \r \t p u s h R e t u r n [ ] 0103520 ; \r \t t _ ( m c r . d P i p 0103540 e V a ) ; \r \t t _ t O R 0103560 ( m c r . n o R e f ) ; \r \t c a 0103600 l l [ m c r F o r C o l ] ; \r \t 0103620 c a l l [ s e t B r C a c 376 001 \0 0103640 226 307 h e A B i t s ] , t _ 0103660 r 0 ; \r \t c a l l [ v a F o r R 0103700 o w ] , t _ q ; \r \t r s c 0103720 r 2 _ t ; \t * s a v e v 0103740 a s i n c e s h o r t M e m 0103760 W a i t c l o b b e r s t \r 0104000 \t D B u f _ r 0 , S T O R 0104020 E _ t ; \t * T A G b i t 0104040 s n o w s c r e w e d \r \t s 0104060 h o r t M e m W a i t [ r s c r 0104100 ] ; \r \t c a l l [ g e t P i p e 0104120 C a c h e A B i t s ] ; \t * d 0104140 o e s n o t c l o b b e r 0104160 r s c r 2 \r \t r s c r _ t ; 0104200 \t * s a v e h i 1 5 b i 0104220 t s o f v a i n r s c r 0104240 \r \t 376 001 \0 375 250 t _ r s c r 2 0104260 ; \t * r e s t o r e v a \r \t 0104300 D B u f _ r 0 , S T O R E 0104320 _ t ; \t * f i x T A G 0104340 b i t s \r \t s h o r t M e m W a 0104360 i t [ r s c r 2 ] ; \r \t t _ 0104400 r s c r ; \r \t r e t u r n P A n 0104420 d B r a n c h [ t ] ; \r r e a d 0104440 O l d C A m e m : s u b r o u 0104460 t i n e ; \t * t h e c a c h 0104500 e a d d r e s s m e m o r y 0104520 r e q u i r e s d e s t r u 0104540 c t i v e r e a d . T h e r 0104560 e f o r e , r e a d t h e 0104600 m e m o r y w / t h e v a 0104620 l u e w e e x p e c t t o 0104640 f i n d ! \r 376 001 \0 322 303 \t p u s 0104660 h R e t u r n [ ] ; \r \t t _ 0104700 q ; \r \t r s c r _ v a ; \t * 0104720 S W A P " v a s t a t e " 0104740 \r \t v a _ l s h [ t , c a 0104760 t P a c k S h i f t ] ; \r \t t 0105000 _ ( c o l ) A N D ( 3 c ) 0105020 ; \r \t v a _ ( v a ) O R 0105040 t ; \t * v a = p a c k e d 0105060 c o p y o f " c u r r e n 0105100 t " s t a t e \r \t t _ ( r 0105120 s c r ) A N D ( 3 c ) ; \r \t 0105140 c o l _ t ; \r \t t _ r s 0105160 h [ r s c r , c a t P a c k S 0105200 h i f t ] ; \r \t q _ t ; \t * 0105220 n o w , q = o l d r o 0105240 w , c o l = o l d 376 001 \0 017 0105260 222 c o l \r \r \t t _ ( m c r 0105300 . d P i p e V a ) ; \r \t t _ 0105320 t O R ( m c r . n o R e f ) 0105340 ; \r \t c a l l [ m c r F o r C o 0105360 l ] ; \r \t c a l l [ s e t B r C 0105400 a c h e A B i t s ] , t _ 0105420 r 0 ; \r \t c a l l [ v a F o r R 0105440 o w ] , t _ q ; \r \t r s c 0105460 r 2 _ t ; \t * s a v e v 0105500 a s i n c e s h o r t M e m 0105520 W a i t c l o b b e r s t \r 0105540 \t D B u f _ r 0 , S T O R 0105560 E _ t ; \t * T A G b i t 0105600 s n o w s c r e w e d \r \t s 0105620 h o r t M e m W a i t [ r s c r 0105640 ] ; \r \t c a l l [ g e t P i p e 0105660 C 376 001 \0 ! 353 a c h e A B i t s ] 0105700 ; \t * d o e s n o t c l o 0105720 b b e r r s c r 2 \r \t r s c r 0105740 _ t ; \t * s a v e h i 0105760 1 5 b i t s o f v a i n 0106000 r s c r \r \t t _ r s c r 2 0106020 ; \t * r e s t o r e v a \r \t 0106040 D B u f _ r 0 , S T O R E 0106060 _ t ; \t * f i x T A G 0106100 b i t s \r \t s h o r t M e m W a 0106120 i t [ r s c r 2 ] ; \r \r \t t _ 0106140 q ; \r \t n o o p ; \r \t t _ 0106160 l s h [ t , c a t P a c k S h 0106200 i f t ] ; \r \t t _ t O R 0106220 ( c o l ) ; \r \t r s c r 2 _ 0106240 t ; \t * r s c r 2 = o r i 0106260 g i n a l 376 001 \0 340 270 v a l u e 0106300 o f p a c k e d v a \r \r \t 0106320 t _ ( v a ) a n d ( 3 c 0106340 ) ; \r \t c o l _ t ; \t * " 0106360 c u r r e n t " c o l r e s 0106400 t o r e d \r \t v a _ r s h [ 0106420 v a , c a t P a c k S h i f t 0106440 ] ; \r \t q _ v a ; \t * " c 0106460 u r r e n t " r o w r e s t 0106500 o r e d \r \t t _ r s c r 2 ; 0106520 \r \t v a _ r s c r 2 ; \t * 0106540 " o l d " p a c k e d v a 0106560 r e s t o r e d \r \t t _ r s 0106600 c r ; \t * r e t u r n w / 0106620 A m e m i n T \r \t r e t u r 0106640 n P A n d B r a n c h [ t ] ; \r 0106660 C A T d o n e : n o 376 \0 , 244 034 0106700 o p ; \r \t r e t u r n P [ ] ; 032 0106720 e 1 2 \ b 1 7 B 5 8 9 b 1 3 B 1 0106740 1 3 9 b 8 B \r \r 032 e 3 \r 377 \0 \0 m 0106760 e m R W x . m c \0 373 227 + 034 w \0 \0 0107000 376 001 \0 037 201 % \r P a g e N u m b 0107020 e r s : Y e s F i r s t P 0107040 a g e : 1 \r H e a d i n g : 032 0107060 q ( 2 0 4 8 ) \r D O R A D O : \t 0107100 m e m r w X . m c \t M a y 1 4 0107120 , 1 9 8 1 2 : 2 5 P M \t 0107140 % 032 y 7 5 6 q c \ b \r t i t l e 0107160 [ m a p R e a d W r i t e X ] ; 0107200 \r % * + + + + + + + + + + + + + 0107220 + + + + + + + + + + + + + + + + * 0107300 + + + + + 032 ( 0 , 3 9 6 8 ) ( 1 0107320 , 1 1 1 6 8 ) \r T A B L E o f 0107340 C o n t e n t s , b y O r 0107360 d e r o f O c c u r e n c e 0107400 032 c \ b 4 376 001 \0 ! 220 0 B \r b e g 0107420 i n X t e s t \t m a i n s u b 0107440 r o u t i n e t h a t c a l 0107460 l s t h e t e s t s i n 0107500 t h i s f i l e \r m a p S i n 0107520 g l e S t e p \t s i n g l e s 0107540 t e p c o d e f o r m i d 0107560 a s d e b u g g i n g \r m a p 0107600 R W t e s t \t R e a d a n d 0107620 w r i t e t h e m a p \r m a 0107640 p A d d r T e s t \t M a p a d 0107660 d r e s s i n g t e s t \r m a 0107700 p R W t e s t 2 \t M a p r e a 0107720 d w r i t e t e s t t h a 0107740 t c h e c k s t i m i n g 0107760 m a r g i n s - - d o e s 0110000 n o t e x e c u t 376 001 \0 q 215 e 0110020 u n l e s s o p e r a t o r 0110040 p a t c h e s c o d e . 0110060 I t t a k e s m o r e t h 0110100 a n 2 0 m i n u t e s t o 0110120 e x e c u t e . \r % * + + + + 0110140 + + + + + + + + + + + + + + + + * 0110220 + + + + + + + + + + + + + + 032 ( 0110240 0 , 7 6 1 6 ) \ b 1 0 B 5 1 b 1 0110260 3 B 3 8 b 9 B 2 4 b 1 1 B 2 1 b 0110300 1 0 B \r 032 ( 0 , 3 9 6 8 ) \r % \r 0110320 M a y 1 4 , 1 9 8 1 4 : 0110340 4 9 P M \r \t s k i p x b o a 0110360 r d t e s t s i f m e m F 0110400 l a g s . x B o a r d n o t 376 0110420 001 \0 026 . t r u e ( a v o i d 0110440 p r o b l e m e s w / x G 0110460 e t M a p I c s ) 032 \r S e p t e 0110500 m b e r 1 9 , 1 9 7 9 7 0110520 : 1 6 P M \r \t M o v e b e g 0110540 i n X t e s t t o b e g i n 0110560 n i n g o f l i s t i n g , 0110600 a d d c a l l t o d i s 0110620 a b l e C o n d i t i o n a l T 0110640 a s k . 032 \r S e p t e m b e r 0110660 1 4 , 1 9 7 9 9 : 5 4 A 0110700 M \r \t A d d t a b l e o f 0110720 c o n t e n t s , f i x t y 0110740 p o i n b e g i n X t e s t 0110760 . 032 \r S e p t e m b e r 1 3 , 0111000 1 9 7 9 4 : 4 1 P M \r \t 0111020 a d d 376 001 \0 s 267 c o d e t h 0111040 a t c a l l s e a c h x - 0111060 b o a r d t e s t a s a 0111100 s u b r o u t i n e . 032 \r J a n 0111120 u a r y 2 5 , 1 9 7 9 4 0111140 : 5 2 P M \r \t A d d c h e c 0111160 k f o r p i p e 2 . n f a u 0111200 l t s = 7 . 032 \r J a n u a r y 0111220 2 5 , 1 9 7 9 3 : 4 1 0111240 P M \r \t A d d c h e c k i n g 0111260 t o s e e i f p i p e 4 0111300 . m F a u l t i s s e t d 0111320 u k r i n g m a p R W t e s t 0111340 . 032 \r % 032 \r \f \r * M a y 1 4 0111360 , 1 9 8 1 2 : 0 5 P M \r 0111400 b e g i n X t e s t : s u b r 0111420 o u t i n e ; \r \t 376 001 \0 250 267 p u 0111440 s h R e t u r n [ ] ; \r \t c a l 0111460 l [ d i s a b l e C o n d i t i 0111500 o n a l T a s k ] ; \r \t c h e c 0111520 k M t e s t [ m e m F l a g s . 0111540 x B o a r d , e n d X t e s t 0111560 ] ; \r \t c a l l [ x G e t M a p 0111600 I C s ] ; \t * i n i t x C h 0111620 i p R a s C a s , e t c . \r \t 0111640 c a l l [ m a p R W t e s t ] ; 0111660 \r \t c a l l [ m a p A d d r T e 0111700 s t ] ; \r \t c a l l [ m a p R W 0111720 t e s t 2 ] ; \t % t h i s t 0111740 e s t d o e s n ' t r e a l 0111760 l y d o a n y t h i n g u 0112000 n l e s s o p e r a t o r p 0112020 a t c h e s t h e c o d 376 001 0112040 \0 030 254 e a t t h e e n t r 0112060 y t o t h i s s u b r o u 0112100 t i n e . T h i s t e s t 0112120 c h e c k s t h e t i m i 0112140 n g m a r g i n s o f t h 0112160 e m a p c h i p s a n d 0112200 r e q u i r e s a b o u t 2 0112220 0 m i n u t e s o r m o r 0112240 e t o e x e c u t e . \r % \r 0112260 e n d X T e s t : \r \t r e t u r 0112300 n P [ ] ; \r \r t o p l e v e l 0112320 ; \r * D e c e m b e r 2 0 , 0112340 1 9 7 7 3 : 1 6 P M \r % 0112360 032 \ 2 6 b 1 1 B 4 1 1 b 8 B \r A 0112400 F E W R U L E S 032 c \ b 1 1 0112420 B \r \r M r o w I N [ 0 . . m 0112440 R o w 376 001 \0 240 C E n d C ) \r M c 0112460 o l I N [ 0 . . m C o l E n 0112500 d C ) \r \r S u b r o u t i n e s 0112520 c l o b b e r r s c r , r 0112540 s c r 2 a n d T u n l e s 0112560 s o t h e r w i s e s p e c 0112600 i f i e d a t b o t h p o 0112620 i n t o f c a l l a n d 0112640 i n s u b r o u t i n e d e 0112660 s c r i p t i o n . S u b r o 0112700 u t i n e s r e t u r n s i 0112720 n g l e v a l u e s i n T 0112740 , a n d t h e y a c c e p 0112760 t s i n g l e v a l u e s 0113000 i n T . T w o p a r a m e 0113020 t e r s u b r o u t i n e s 0113040 a c c e p t t 376 001 \0 225 274 h e i 0113060 r v a l u e s i n r s c r 0113100 a n d r s c r 2 . S u b 0113120 r o u t i n e s m a y u s e 0113140 t h e g l o b a l v a r i 0113160 a b l e s M r o w , M c o l 0113200 , e t c . 032 \r \r G l o b a l 0113220 v a l u e s f o r X b o a 0113240 r d 032 \r M r o w \t m a p r o w 0113260 \r M c o l \t m a p c o l u m n 0113300 \r m c r B i t s \t m c r b i t 0113320 s f o r m a p m a n i p u 0113340 l a t i o n \r M p a t \t c u r r 0113360 e n t p a t t e r n v a l u 0113400 e 032 l 4 2 6 8 \ b 4 B 9 b 4 B 1 0113420 2 b 7 B 3 1 b 4 B \r \r A b b r e 0113440 v i a t i o n s u s e d 376 001 \0 0113460 b U h e r e i n 032 \r i \t I n i 0113500 t \r M \t M a p \r X \t f o r X 0113520 b o a r d , e r r o r p r e 0113540 f i x \r c o l \t C o l u m n \r n 0113560 e x t F o o \t i n c r e m e n t 0113600 s f o o l o o p v a r i a 0113620 b l e , r e t u r n s w i t 0113640 h f a s t b r a n c h c o 0113660 n d i t i o n t o c h e c k 0113700 f o r d o n e w / l o o 0113720 p \r g e t F o o \t r e t u r n s 0113740 c u r r e n t v a l u e o 0113760 f l o o p v a r i a b l e , 0114000 f o o \r i F o o C t r l \t i n 0114020 i t i a l i z e f o o l o o 0114040 p c o n t r o l 032 l 4 2 6 8 \ 0114060 b 1 376 001 \0 o 370 B 6 b 1 B 5 b 1 B 0114100 2 7 b 3 B 8 b 7 B 9 2 b 6 B 4 5 0114120 b 8 B \r % \r \f \r % \r \t T o t e 0114140 s t t h e m a p b y r e 0114160 a d i n g a n d w r i t i n 0114200 g i t : \r \r T o a v o i d 0114220 r e f r e s h p r o b l e m , 0114240 t o u c h e a c h r o w 0114260 o f t h e m a p a t l e 0114300 a s t o n c e e v e r y t 0114320 w o m i l l i s e c o n d s . 0114340 . \r F O R p a t X I N P a 0114360 t X D O \r F O R c o l I 0114400 N C o l D O 032 \r F O R r o 0114420 w i n R o w D O 032 l 4 2 6 0114440 8 \r p a t _ g e t P a t t e 0114460 r n [ p a t X 376 001 \0 U j , r o 0114500 w , c o l ] ; \r s e t M a p [ 0114520 r o w , c o l , p a t ] ; \r 0114540 E N D L O O P ; 032 l 5 5 3 8 \r F 0114560 O R r o w I N R o w D O 0114600 032 l 4 2 6 8 \r p a t _ g e t 0114620 P a t t e r n [ p a t , r o w 0114640 , c o l ] ; \r f o u n d _ 0114660 r e a d M a p [ r o w , c o l 0114700 ] ; \r I F f o u n d # p a 0114720 t T H E N E R R O R ; \r E N 0114740 D L O O P \t - - e n d o f 0114760 r o w c h e c k l o o p 032 0115000 l 5 5 3 8 \r E N D L O O P ; \t - 0115020 - e n d o f c c l u m n 0115040 l o o p 032 l 4 2 6 8 \r E N D L O 0115060 O P ; \t - - e n d o 376 001 \0 223 0115100 354 f c o l u m n l o o p 032 l 0115120 4 2 6 8 \r \r s e t M a p : P R 0115140 O C E D U R E [ r o w : M a p 0115160 R o w , c o l : M a p C o l 0115200 , p a t : U N S P E C I F I 0115220 E D ] = \r \t B E G I N \r \t l o 0115240 w B i t s _ I F O D D [ r 0115260 o w ] T H E N 1 0 0 0 0 0 B 0115300 + c o l ] E L S E c o l 0115320 ; \r \t h i B i t s _ B I T S 0115340 H I F T [ r o w , - 1 ] ; \r \t 0115360 s e t B R [ h i B i t s , l o 0115400 w B i t s ] ; \r \t W H I L E M 0115420 A P [ ] . m a p M B u f B u s y 0115440 D O ; \t - - l o o p w h 0115460 i l e b u s y \r \t M A P _ 0115500 0 376 001 \0 241 037 , S T O R E _ 0115520 p a t ; \r \t E N D ; \r \r r e a d 0115540 M a p : P R O C E D U R E [ r 0115560 o w : M a p R o w , c o l : 0115600 M a p C o l ] R E T U R N S 0115620 [ f o u n d : U N S P E C I F 0115640 I E D ] = 032 \r B E G I N \r c a 0115660 c h e R o w B i t s _ v a F 0115700 r o m M a p R o w C o l [ r o w 0115720 , c o l ] ; \r v a c a t e C a 0115740 c h e R o w [ c a c h e R o w B 0115760 i t s ] ; \r s e t B r f o r M a 0116000 p [ r o w , c o l ] ; \r \r F E T 0116020 C H _ 0 ; \r W H I L E m a 0116040 p B u s y [ ] D O ; \r f o u n 0116060 d _ M A P ; \r E N D ; 032 l 4 0116100 2 6 8 \r \r v 376 001 \0 357 \b a c a t e 0116120 C a c h e R o w [ c a c h e V a 0116140 ] = 032 \r B E G I N \r E N D ; 032 l 0116160 4 2 6 8 \r t e s t M a p : P R 0116200 O C E D U R E [ r : R o w , c 0116220 : C o l u m n , p : P a t t e 0116240 r n , c : N u m C y c l e s ] 0116260 = 032 \r B E G I N \r r e s e t M 0116300 a p [ ] ; \r s e t B r F o r M a 0116320 p [ r , c ] ; \r m a p _ 0 , 0116340 B _ p ; \r t _ t - 0116360 8 0 ; \t - - s u b t r a c t 0116400 t i m e r e a d M a p \r I F 0116420 N O T ( ( t _ t - 8 0 ) 0116440 < = 0 ) T H E N W H I L E 0116460 t > 0 D O t _ t - 1 ; \r 0116500 [ p i p e 3 , p i p e 376 001 \0 Z 233 0116520 4 ] _ r e a d M a p [ r , c 0116540 ] ; - - r e a d M a p t a 0116560 k e s a b o u t 8 0 c y c 0116600 l e s \r I F p i p e 3 # p 0116620 T H E N E R R O R ; \r E N D 0116640 ; 032 l 4 2 6 8 \r % \r \f \r * D e 0116660 c e m b e r 1 4 , 1 9 7 8 0116700 1 2 : 0 4 P M \r \r m a p S i 0116720 n g l S t e p : \r \r m S S f e t 0116740 c h : \r \t f e t c h _ r 0 ; 0116760 \r \t n o o p ; \r \t b r a n c h [ 0117000 . ] ; \t * y o u g e t w h 0117020 a t y o u a s k f o r \r \r 0117040 m S S f e t c h 2 : \r \t f e t c 0117060 h _ r 0 ; \r \t n o o p ; \r \t 0117100 b r a n c h [ . , c n t # 0 & - 0117120 376 001 \0 276 316 1 ] ; \r \t b r a n c h 0117140 [ m S S f e t c h 2 ] ; 032 \ 3 5 0117160 b 1 3 B 2 b 9 B 6 1 b 9 B \r \f \r 0117200 * S e p t e m b e r 1 3 , 0117220 1 9 7 9 4 : 4 2 P M \r % 032 0117240 \r R e a d a n d W r i t e 0117260 t h e M a p 032 c \ b 2 2 B \r \r 0117300 % \r 032 \r m a p R W t e s t : \t * 0117320 r e a d a n d w r i t e 0117340 t h e m a p \r \t p u s h R e t 0117360 u r n [ ] ; \r \t c h e c k M t e 0117400 s t [ m e m F l a g s . m R W , 0117420 m a p R W d o n e ] ; \r \t c a 0117440 l l [ c l e a r C a c h e F l a 0117460 g s ] ; \t * j u s t i n c a 0117500 s e b e i n g L o a d e d i 0117520 s s e t 376 001 \0 y 216 \r \t c a l l 0117540 [ i M p a t C t r l ] ; \r m a p 0117560 M a i n L : \t * M A I N , O 0117600 U T E R L O O P \r \t c a l l [ 0117620 n e x t M p a t ] ; \r \t s k p i 0117640 f [ a l u # 0 ] ; \r \t b r a n c 0117660 h [ m a p R W d o n e ] ; \r \t n 0117700 o o p ; \r \r \t c a l l [ i M c o 0117720 l C t r l ] ; \t * i n i t c 0117740 o l u m n c o n t r o l \r m a 0117760 p R W c o l L : \r \t c a l l [ n 0120000 e x t M c o l ] ; \t * r e t u 0120020 r n s w / f a s t b r i 0120040 n d i c a t i n g e x i t c 0120060 o n d i t i o n \r \t s k p i f [ 0120100 a l u # 0 ] ; \r \t b r a n c h [ 0120120 m a p M a i n L ] ; 376 001 \0 234 260 \t 0120140 * c o l u m n l o o p d o 0120160 n e ; t r y n e x t h i - 0120200 o r d e r b i t o f v a \r 0120220 \t M c o l _ t ; \r \r \t c a l 0120240 l [ r e s e t M a p ] ; \t * f 0120260 i x a r b i t r a r y i n i 0120300 t i a l m a p s t a t e s , 0120320 r e m o v e a n y f a u l 0120340 t s . \r \t c a l l [ i M r o w C 0120360 t r l ] ; \r m a p R W r o w L : 0120400 \t * t h e I N N E R W R I 0120420 T E l o o p . m o s t c o 0120440 m p l e t e i n < 2 m s 0120460 \r \t c a l l [ n e x t M r o w ] 0120500 ; \t * t h i s s u b r S E 0120520 T S M r o w i t s e l f ! 376 0120540 001 \0 q 024 \r \t s k p i f [ a l u # 0120560 0 ] ; \r \t b r a n c h [ m a p R 0120600 W c h k ] ; \r \t n o o p ; \r \t c 0120620 a l l [ g e t M p a t ] ; \t * 0120640 m a k e s u r e M p a t H i 0120660 , M p a t L o w c o r r e c 0120700 t \r \t c a l l [ s e t B R f o r 0120720 M a p ] ; \r \r \t c a l l [ x G e 0120740 t N u m F l t s ] ; \r \t t # 0120760 ( 7 c ) ; \r \t s k p i f [ A L U 0121000 = 0 ] ; \t * M r o w = c u 0121020 r r e n t r o w , M c o l 0121040 = c u r r e n t c o l . \r X 0121060 r w P i p e F l t s 1 E r r : \r 0121100 \t e r r o r ; \r \r \t r s c r _ 0121120 M p a t H i ; \r \t r s c r 2 0121140 _ M p 376 001 \0 210 244 a t L o w ; \r 0121160 \t c a l l [ w r i t e M a p ] ; 0121200 \r \r \t b r a n c h [ m a p R W r 0121220 o w L ] ; 032 \ b 1 0 B 1 5 4 b 9 0121240 B 1 2 0 b 1 0 B 2 4 9 b 1 0 B 2 0121260 9 8 b 1 6 B \r % N O T E : w e 0121300 c a n ' t c h e c k t h e 0121320 r e f b i t e x p l i c i 0121340 t l y ! \r I t c a n ' t b e 0121360 s e t t o o n e . \r T e s 0121400 t m u s t b e w r i t t e 0121420 n t o s e t i t i m p l 0121440 i c i t l y a n d t h e n 0121460 t o c h e c k t h e r e s 0121500 u l t s 032 c \ 1 b \r % \r \f 032 \ b 0121520 1 B \r * F e b r u a r y 1 0 0121540 , 1 9 8 1 9 376 001 \0 377 \b : 5 0121560 4 A M \r * n o w t h a t 0121600 w e h a v e w r i t t e n 0121620 t h e m a p , l e t s c h 0121640 e c k i t ! \r \r m a p R W c h 0121660 k : \r \t c a l l [ i M r o w C t 0121700 r l ] ; \r m a p R W c h k L : \t 0121720 * I N N E R C H E C K l o 0121740 o p \r \t c a l l [ n e x t M r o 0121760 w ] ; \t * t h i s s u b r 0122000 S E T S M r o w i t s e l f 0122020 ! \r \t s k p i f [ a l u # 0 ] ; 0122040 \r \t b r a n c h [ m a p R W c o 0122060 l L ] ; \r \t n o o p ; \r \t c a l 0122100 l [ g e t M p a t ] ; \r \t c a l 0122120 l [ r e a d M a p ] ; \t * r t 0122140 n w / r s c r = p i p e 376 001 0122160 \0 n R 3 , r s c r 2 = p i p e 0122200 4 \r \t Q _ r s c r 2 ; \t * 0122220 c o p y p i p e 4 f o r 0122240 f u t u r e r e f e r e n c e 0122260 . \r \t t _ r s c r ; \t * r 0122300 e m e m b e r p i p e 3 i n 0122320 r s c r f o r a w h i l 0122340 e \r \t t _ t # ( M p a t 0122360 L o w ) ; \t * c o m p a r e 0122400 p i p e 3 w / e x p e c t e 0122420 d v a l u e \r \t s k p i f [ a 0122440 l u = 0 ] ; \t * b a d b i t 0122460 s i n T , e x p e c t e d 0122500 v a l i n M p a t \r X r w 0122520 P i p e 3 E r : \r \t e r r o r ; 0122540 \t * m a p v a l u e i n 0122560 r s c 376 001 \0 b 305 r . S e e p 0122600 i p e f o r V A \r \r \t t _ 0122620 l d f [ r s c r 2 , 2 , p 0122640 i p e 4 . d i r t y S h i f t ] 0122660 ; \t * r t j u s t i f y t 0122700 h e d i r y , w p r o t e c 0122720 t b i t s f r o m \r \t t # ( 0122740 M p a t H i ) ; \t * t h e c 0122760 o p y o f P i p e 4 t h a 0123000 t i s i n r s c r 2 . \r \t 0123020 s k p i f [ A L U = 0 ] ; \t * 0123040 T = w p r o t e c t , d i r t 0123060 y f r o m p i p e 4 , M 0123100 p a t H i \r X r w P i p e 4 E r 0123120 : \t * i s v a l u e o f 0123140 t h o s e b i t s a s w e 0123160 w r o t e t 376 001 \0 247 364 h e m 0123200 . \r \t e r r o r ; \t * r s c r 0123220 2 c o n t a i n s a c o p 0123240 y o f p i p e 4 , w / l 0123260 o w \r \t * t r u e b i t s 0123300 i n v e r t e d . \r \r \t t _ 0123320 ( r s c r 2 ) a n d ( p i p 0123340 e 4 . m F a u l t ) ; \t * s e 0123360 e i f m a p f a u l t b 0123400 i t i s s e t . \r \t s k p i 0123420 f [ A L U = 0 ] ; \r X r w P i p 0123440 e M f l t E r r : \t * p i p e 0123460 4 . m F a u l t i s s e t . 0123500 S u g g e s t s m a p p a 0123520 r i t y \r \t e r r o r ; \t * e 0123540 r r o r ( t h o , d a t a 0123560 r e a d b a c k w a s 376 001 \0 0123600 200 203 g o o d ) \r \t * r s c r 0123620 3 = v a l u e w r o t e , 0123640 r s c r 2 = p i p e 4 , 0123660 M r o w X , M c o l X = m 0123700 a p r o w a n d c o l u m 0123720 n , \r \t * c u r r e n t B R 0123740 s h o w s V A u s e d t 0123760 o r e a d t h e m a p . 032 0124000 \ 8 1 b 8 B 2 0 b 9 B 3 7 8 b 1 0124020 2 B 2 7 b 1 7 B 1 8 8 b 1 1 B 4 0124040 3 b 1 B 1 5 2 b 1 5 B \r \r \t c a 0124060 l l [ x G e t N u m F l t s ] ; 0124100 \r \t t # ( 7 c ) ; \r \t s k p 0124120 i f [ A L U = 0 ] ; \r X r w P i 0124140 p e F l t 2 E r r : \t * P i p 0124160 e 2 . n f a u l t s i s s e 0124200 t . 376 001 \0 226 255 t h e c u r r 0124220 e n t m a p \r \t e r r o r ; \t 0124240 * r e a d c a u s e d t h 0124260 e f a u l t t o o c c u r 0124300 . \r \t * T = n u m f a u 0124320 l t s ; s e e a b o v e e 0124340 r r o r f o r o t h e r r 0124360 e g i s t e r i n f o . \r \r \t 0124400 b r a n c h [ m a p R W c h k L 0124420 ] ; \r m a p R W d o n e : \r * t 0124440 h i s i s a o n e t i m 0124460 e o n l y c h e c k t o 0124500 s e e i f r e a d i n g t 0124520 h e m a p m i g h t c l o 0124540 b b e r t h e s a m e m a 0124560 p e n t r y ! t h i s i 0124600 s i n t e r 376 001 \0 \n 026 e s t i 0124620 n g b e c a u s e r e a d i 0124640 n g i s i m p l e m e n t e 0124660 d b y u s i n g t h e w 0124700 r i t e l o g i c a n d t 0124720 u r n i n g o f f t h e w 0124740 r i t e s i g n a l a t t 0124760 h e l a s t m i n u t e . \r 0125000 \r \t M r o w _ t _ 1 0 c ; \t 0125020 * w r i t e m a p w / r 0125040 o w = c o l = 1 0 B \r \t c a l l 0125060 [ s e t B R f o r M a p ] , M 0125100 c o l _ t ; \r \t r s c r _ a 1 0125120 ; \r \t c a l l [ w r i t e M a p 0125140 ] , r s c r 2 _ a 1 ; \t * 0125160 w r i t e i t w / a l l 0125200 o n e s \r \t c a l l [ r 376 001 \0 004 0125220 300 e a d M a p ] ; \r \t ( r s c r 0125240 ) # ( 1 7 7 7 7 7 C ) ; \t * r 0125260 s c r = m a p v a l u e . 0125300 s h o u l d b e - 1 \r \t s k 0125320 p i f [ a l u = 0 ] ; \r x R W r 0125340 e a d B a d : \r \t e r r o r ; \r 0125360 \t c a l l [ r e a d M a p ] ; \t 0125400 * s e e i f l a s t t i 0125420 m e w e r e a d m a p i 0125440 t \r \t ( r s c r ) # ( c m 1 ) ; 0125460 \t * c l o b b e r e d t h i 0125500 s l o c a t i o n \r \t s k p i 0125520 f [ a l u = 0 ] ; \r x R W r e a 0125540 d B a d 2 : \r \t e r r o r ; \t * 0125560 r s c r = m a p v a l u e 0125600 . s h o u l d b e - 1 \r \t 0125620 n 376 001 \0 005 ] o o p ; \r \t r e t u 0125640 r n P [ ] ; \r \f \r * S e p t e 0125660 m b e r 1 3 , 1 9 7 9 4 0125700 : 4 3 P M \r % \r m a p A d d r 0125720 T e s t \t T e s t t h e a d 0125740 d r e s s i n g m e c h a n i 0125760 s m o f t h e m a p . T 0126000 h i s t e s t f o l l o w s 0126020 t h e s a m e p a t t e r 0126040 n a s t h e a d d r e s s 0126060 i n g t e s t s f o r C 0126100 , D , a n d S b o a r d 0126120 s : 032 \ 4 7 b 1 5 B 1 6 4 b 1 0126140 0 B 4 3 7 b 1 0 B 1 1 6 b 1 2 B 0126160 9 4 b 1 1 B \r ( A s c e n t T 0126200 e s t ) Z e r o t h e m e m 0126220 o r y , t 376 001 \0 374 003 h e n a 0126240 s c e n d t h e m e m o r y 0126260 a s f o l l o w s : 032 e 6 \ 0126300 1 b 1 1 B \r 1 ) I f t h e 0126320 c u r r e n t l o c a t i o 0126340 n i s n o n z e r o , t 0126360 h e r e w a s a n a d d r 0126400 e s s i n g e r r o r ( a 0126420 p r e v i o u s s t o r e t 0126440 o a n " e a r l i e r " l 0126460 o c a t i o n c l o b b e r e 0126500 d t h e " c u r r e n t " 0126520 l o c a t i o n ) . I n v o 0126540 k e t h e r o u t i n e t 0126560 h a t f i n d s e x a c t l 0126600 y w h i c h s t o r e t h 0126620 a t c a u s e d t 376 001 \0 X 256 0126640 h i s e r r o r . \r 2 ) O 0126660 t h e r w i s e , s e t t h 0126700 e c u r r e n t l o c a t i 0126720 o n t o a l l o n e s . \r 0126740 3 ) I n c r e m e n t t h 0126760 e c u r r e n t a d d r e s 0127000 s ; i f a l l a d d r e s 0127020 s e s h a v e b e e n t e 0127040 s t e d p r o c e e d t o 0127060 t h e d e s c e n t a d d r 0127100 e s s i n g t e s t , o t h 0127120 e r w i s e p r o c e e d t 0127140 o s t e p 1 . 032 l 4 2 6 9 e 0127160 6 \r ( D e s c e n t t e s t ) 0127200 Z e r o t h e m e m o r y 0127220 , t h e n p r o c e e d a 0127240 376 001 \0 4 s i n t h e a s 0127260 c e n t t e s t , e x c e p 0127300 t w e d e s c e n d t h r 0127320 o u g h t h e m e m o r y 0127340 ( d e c r e m e n t ) r a t h 0127360 e r t h a n a s c e n d ( 0127400 i n c r e m e n t ) . 032 e 6 \ 1 0127420 b 1 2 B \r ( A s c e n t e r r 0127440 o r r o u t i n e ) D e n 0127460 o t e t h e " e r r o r a 0127500 d d r e s s " a s t h e c 0127520 l o b b e r e d a d d r e s s 0127540 d i s c o v e r e d i n t 0127560 h e a s c e n t t e s t . 0127600 T h e a s c e n t e r r o r 0127620 r o u t i n e p r o c e e d 0127640 s b y 376 001 \0 q 376 z e r o i n 0127660 g t h e m e m o r y , t h 0127700 e n a s c e n d i n g t h r 0127720 u t h e m e m o r y a s 0127740 f o l l o w s : 032 e 6 \ 1 b 2 0 0127760 B \r 1 ) I f t h e e r r 0130000 o r a d d r e s s i s n o 0130020 n z e r o , t h e l a s t 0130040 s t o r e w h i c h t h e 0130060 a s c e n t e r r o r r o u 0130100 t i n e m a d e c l o b b e 0130120 r e d t h a t l o c a t i o 0130140 n ( s t o r i n g i n t o 0130160 t h e " c u r r e n t a d d 0130200 r e s s - 1 " c l o b b e r 0130220 e d t h e " e r r o r a d 0130240 d r e s s " t h a 376 001 \0 ^ 377 t 0130260 w a s d e t e c t e d b y 0130300 t h e a s c e n t t e s t 0130320 . \r 2 ) O t h e r w i s e , 0130340 s e t t h e c u r r e n t 0130360 l o c a t i o n t o a l l 0130400 o n e s . \r 3 ) I n c r e m e 0130420 n t t h e c u r r e n t a 0130440 d d r e s s ; i f a l l a 0130460 d d r e s s e s h a v e b e 0130500 e n t e s t e d , t h e r e 0130520 m u s t h a v e b e e n 0130540 a n i n t e r m i t t e n t 0130560 e r r o r , o t h e r w i s e 0130600 p r o c e e d t o s t e p 0130620 1 . 032 l 4 2 6 9 e 6 \r \r T h e 0130640 d e s c e n t e r r o r 376 0130660 001 \0 307 003 r o u t i n e i s s 0130700 i m i l a r t o t h e a s 0130720 c e n t e r r o r i n t h 0130740 e s a m e w a y . \r % \r m a 0130760 p A d d r T e s t : \r \t p u s h 0131000 R e t u r n [ ] ; \r \t c h e c k 0131020 M t e s t [ m e m F l a g s . m 0131040 A d d r , x D o w n X i t ] ; 0131060 \t * s e e i f t h i s t 0131100 e s t e n a b l e d . \r \t c a 0131120 l l [ c l e a r C a c h e F l a 0131140 g s ] ; \t * j u s t i n c a 0131160 s e b e i n g l o a d e d 0131200 i s s e t \r \t c a l l [ x Z e 0131220 r o M a p ] ; \r \t c a l l [ i M 0131240 a p P a g e C t r l ] ; \r x U p 0131260 L : \r \t 376 001 \0 250 352 c a l l [ n e 0131300 x t M p a g e ] ; \t * r t n s 0131320 w / t = n e x t p a g 0131340 e , f a s t b r c o n d i 0131360 t i o n \r \t s k p i f [ A L U # 0131400 0 ] ; \t * t e l l s i f w 0131420 e ' r e d o n e w / l o o 0131440 p . \r \t b r a n c h [ x U p X i 0131460 t ] ; \r \t n o o p ; \t * f o r 0131500 p l a c e m e n t \r \r \t c a l 0131520 l [ x R e a d M a p P a g e ] ; 0131540 \t * c u r r e n t a d d r e 0131560 s s s h o u l d s t i l l 0131600 b e z e r o \r \t P D _ t ; 0131620 \r \t s k p i f [ A L U = 0 ] ; \r 0131640 \t b r a n c h [ x E r r U p ] ; 0131660 \t * a p r e v 376 001 \0 { p i o 0131700 u s s t o r e c l o b b e r 0131720 e d c u r r e n t a d d r \r 0131740 \r \t c a l l [ g e t M p a g e ] 0131760 ; \t * g e t c u r r e n t 0132000 a d d r i n t o t a g a i 0132020 n \r \t c a l l [ x W r i t e M a 0132040 p P a g e ] , r s c r _ c 0132060 m 1 ; \t * s e t c u r r e n 0132100 t a d d r t o a l l o n 0132120 e s \r \t b r a n c h [ x U p L ] 0132140 ; \r x U p X i t : \r \t c a l l [ 0132160 x Z e r o M a p ] ; \r \t c a l l 0132200 [ i M p a g e D o w n C t r l ] 0132220 ; \r \r x D o w n L : \r \t c a l l 0132240 [ n e x t M p a g e D o w n ] ; 0132260 \t * r t n s w / t = 376 001 0132300 \0 ) 030 n e x t p a g e , f 0132320 a s t b r c o n d i t i o n 0132340 \r \t s k p i f [ A L U # 0 ] ; \t 0132360 * t e l l s i f w e ' r e 0132400 d o n e w / l o o p . \r \t 0132420 b r a n c h [ x D o w n X i t ] 0132440 ; \r \t n o o p ; \t * f o r p 0132460 l a c e m e n t \r \r \t c a l l [ 0132500 x R e a d M a p P a g e ] ; \t * 0132520 c u r r e n t a d d r e s s 0132540 s h o u l d s t i l l b e 0132560 z e r o \r \t P D _ t ; \r \t 0132600 s k p i f [ A L U = 0 ] ; \r \t b 0132620 r a n c h [ x E r r D o w n ] ; 0132640 \t * a p r e v i o u s s t 0132660 o r e c l o b b e r e d c u 0132700 r r e 376 001 \0 242 310 n t a d d r \r 0132720 \r \t c a l l [ g e t M p a g e ] 0132740 ; \t * g e t c u r r e n t 0132760 a d d r i n t o t a g a i 0133000 n \r \t c a l l [ x W r i t e M a 0133020 p P a g e ] , r s c r _ c 0133040 m 1 ; \t * s e t c u r r e n 0133060 t a d d r t o a l l o n 0133100 e s \r \t b r a n c h [ x D o w n 0133120 L ] ; \r \r x D o w n X i t : \r \t 0133140 r e t u r n P [ ] ; \r \t t o p 0133160 l e v e l ; \r \f \r * D e c e m 0133200 b e r 2 5 , 1 9 7 8 1 1 0133220 : 0 9 A M \r x E r r U p : \t * 0133240 T h e a s c e n t t e s t 0133260 h a s d i s c o v e r e d 0133300 a c l o b b e 376 001 \0 220 W r e d 0133320 l o c a t i o n i n t h e 0133340 m a p . N o w w e p r o 0133360 c e e d t o d e t e r m i n 0133400 e w h g i c h s t o r e c 0133420 l o b b e r s t h a t l o c 0133440 a t i o n . \r \t c a l l [ g e t 0133460 M p a g e ] ; \r \t s t a c k & + 0133500 1 _ t ; \t * s t a c k = 0133520 m a p p a g e t h a t g 0133540 o t c l o b b e r e d . \r \t c 0133560 a l l [ x Z e r o M a p ] ; \t * 0133600 c l e a r t h e m a p \r \t 0133620 c a l l [ i M a p P a g e C t r 0133640 l ] ; \t * l o o p i n i t \r 0133660 \t c a l l [ x R e a d M a p P a 0133700 g e ] , t _ r 0 ; \t 376 001 \0 0133720 250 334 * m a k e s u r e w e 0133740 s u c c e e d e d i n z e 0133760 r o i n g t h e \r \t P D _ 0134000 t ; \t * f i r s t l o c a t 0134020 i o n o f t h e m a p \r \t 0134040 s k p i f [ A L U = 0 ] ; \r x U 0134060 p E r r 1 : \t * f i r s t e 0134100 n t r y i n m a p i s n 0134120 o n z e r o . t h i s s u 0134140 g g e s t s t h a t x Z e r 0134160 o M a p \r \t e r r o r ; \t * d 0134200 i d n ' t w o r k \r \t n o o p 0134220 ; \t * f o r p l a c e m e n 0134240 t \r \r x E r r U p L : * T o 0134260 p o f l o o p t h a t a 0134300 s c e n d s m e m o r y l o 0134320 o k 376 001 \0 8 025 i n g f o r t 0134340 h e s t o r e t h a t c l 0134360 o b b e r s t h e e r r o r 0134400 \r \t c a l l [ n e x t M p a g e 0134420 ] ; \t * l o c a t i o n ( h 0134440 e l d i n s t a c k ) . \r \t 0134460 s k p i f [ A L U # 0 ] ; \t * 0134500 i n t e r m i t t e n t e r r 0134520 o r i f n o m o r e m a 0134540 p p a g e s \r \t b r a n c h [ 0134560 x E r r U p I n t e r m i t t e 0134600 n t ] ; \r \t n o o p ; \t * f o 0134620 r p l a c e m e n t \r \t c a l 0134640 l [ x R e a d M a p P a g e ] , 0134660 t _ s t a c k ; \t * s e 0134700 e i f " e r r o r l o c a 0134720 t i o n " c 376 001 \0 355 \b l o b b 0134740 e r e d y e t . \r \t P D _ 0134760 t ; \r \t s k p i f [ A L U = 0 ] 0135000 ; \r x E r r U p 2 : * t h e 0135020 p r e v i o u s m a p w r 0135040 i t e c l o b b e r e d t h 0135060 e m a p e n t r y a t " 0135100 s t a c k " \r \t e r r o r ; \r \r 0135120 \t c a l l [ g e t M p a g e ] ; 0135140 \t * s e t " c u r r e n t 0135160 l o c a t i o n " t o a l l 0135200 o n e s , e x c e p t \r \t ( 0135220 s t a c k ) # t ; \t * d o 0135240 n ' t w r i t e i n t o t 0135260 h e e r r o r a d d r e s s 0135300 . \r \t s k p i f [ A L U = 0 ] ; 0135320 \t * S k i p i f a 376 001 \0 F 0135340 274 n i n t e r m i t t e n t 0135360 f a i l u e s i n c e \r \t c a 0135400 l l [ x W r i t e M a p P a g e 0135420 ] , r s c r _ c m 1 ; \t * 0135440 ( W R I T E m a p ) \r \t * 0135460 t h e d e s c e n t t e s t 0135500 d i s c o v e r e d t h a t 0135520 e r r r o r a d d r e s s 0135540 w a s c l o b b e r e d b y 0135560 a s t o r e w e ' v e \r 0135600 \t * a l r e a d y p e r f o 0135620 r m e d . S i g h . K e e 0135640 p g o i n g t o s e e w 0135660 h a t h a p p e n s . \r \t n o 0135700 o p ; \t * f o r p l a c e m 0135720 e n t \r \t b r a n c h [ x E r r 0135740 U 376 001 \0 Q 037 p L ] ; \r x E r r U 0135760 p I n t e r m i t t e n t : * 0136000 C a n ' t f i n d e r r o 0136020 r a s c e n t t e s t f o 0136040 u n d ( e n t r y a t " s 0136060 t a c k " g e t s c l o b b 0136100 e r e d ) . \r \t e r r o r ; \r \r 0136120 x E r r D o w n : \t * T h e 0136140 d e s c e n t t e s t h a s 0136160 d i s c o v e r e d a c l 0136200 o b b e r e d l o c a t i o n 0136220 i n t h e m a p . N o w 0136240 w e p r o c e e d t o d 0136260 e t e r m i n e w h i c h s 0136300 t o r e c l o b b e r s t h 0136320 a t l o c a t i o n . \r \t c a 0136340 l l [ g e t 376 001 \0 022 253 M p a g e 0136360 ] ; \r \t s t a c k & + 1 _ t 0136400 ; \t * s t a c k = m a p 0136420 p a g e t h a t c l o b b e 0136440 r e d \r \t c a l l [ x Z e r o M 0136460 a p ] ; \r \t c a l l [ i M P a g 0136500 e D o w n C t r l ] ; \r \t \r x E 0136520 r r D o w n L : \t * t o p o 0136540 f l o o p t h a t d e s c 0136560 e n d s t h e m a p m e m 0136600 o r y \r \t c a l l [ n e x t M p 0136620 a g e D o w n ] ; \r \t s k p i f 0136640 [ A L U # 0 ] ; \t * i n t e r 0136660 m i t t e n t e r r o r i f 0136700 n o m o r e m a p p a g 0136720 e s \r \t b r a n c h [ x E r r D 0136740 o w n I n t e r m i t 376 001 \0 332 276 0136760 t e n t ] ; \r \t n o o p ; \t * 0137000 f o r p l a c e m e n t \r \r \t 0137020 c a l l [ x R e a d M a p P a g 0137040 e ] , t _ s t a c k ; \t * 0137060 s e e i f " e r r o r l 0137100 o c a t i o n " c l o b b e r 0137120 e d y e t . \r \t P D _ t ; 0137140 \r \t s k p i f [ A L U = 0 ] ; \r 0137160 x D o w n E r r 2 : * T h e 0137200 p r e v i o u s w r i t e 0137220 ( M p a g e X + 1 ) c l o b b 0137240 e r e d t h e e r r o r a 0137260 d d r e s s ( s t a c k ) . \r 0137300 \t e r r o r ; \r \r \t c a l l [ g 0137320 e t M p a g e ] ; \r \t t # ( 0137340 s t a c k ) ; \t * d o n ' t 0137360 376 001 \0 276 003 w r i t e i n t o 0137400 t h e e r r o r a d d r e s 0137420 s . \r \t s k p i f [ A L U = 0 ] 0137440 ; \t * i f w e ' v e c o m 0137460 e t h i s f a r , t h e r 0137500 e m u s t h a v e b e e n 0137520 a n i n t e r m i t t e n t 0137540 f a i l u e s i n c e \r \t * 0137560 t h e d e s c e n t t e s 0137600 t d i s c o v e r e d t h a 0137620 t e r r r o r a d d r e s s 0137640 w a s c l o b b e r e d b 0137660 y a s t o r e w e ' v e 0137700 \r \t * a l r e a d y p e r f 0137720 o r m e d . S i g h . \r \t c a 0137740 l l [ x W r i t e M a p P a g e 0137760 ] , r s 376 001 \0 _ = c r _ c 0140000 m 1 ; \t * W R I T E m a p \r 0140020 \t b r a n c h [ x E r r D o w n 0140040 L ] ; \r \r x E r r D o w n I n t 0140060 e r m i t t e n t : * C a n 0140100 ' t f i n d e r r o r d e 0140120 s c e n t t e s t f o u n d 0140140 ( e n t r y a t " s t a c 0140160 k " c l o b b e r e d ) . \r \t 0140200 e r r o r ; \r \f \r * D e c e m 0140220 b e r 2 8 , 1 9 7 7 8 : 0140240 5 9 A M \r % 032 \ 7 7 b 1 2 B 1 0140260 7 9 b 5 B 4 2 2 b 7 B 4 2 b 7 B 0140300 4 3 3 b 9 B 5 7 b 7 B 3 9 0 b 8 0140320 B 1 0 9 b 8 B 3 3 3 b 8 B 4 7 1 0140340 b 1 9 B 8 2 b 9 B 2 4 0 b 1 0 B 0140360 2 7 5 b 1 0 B 4 1 7 376 001 \0 362 004 b 0140400 2 1 B \r T e s t M A P T I M 0140420 I N G A T T R I B U T E S 032 c 0140440 ( 6 3 5 ) \ b \r F O R c y c l 0140460 e s _ 0 , c y c l e s _ c 0140500 y c l e s + 2 0 0 0 0 B U N T 0140520 I L c y c l e s > = 6 0 0 0 0140540 0 B D O 032 \r F O R p a t x 0140560 I N P a t X D O 032 l 4 2 6 8 0140600 \r F O R h i 2 B R b i t s I 0140620 N [ 0 . . 3 ] D O 032 l 5 5 3 8 0140640 \r F O R r o w I N R o w 0140660 D O 032 l 6 8 0 8 \r F O R c o l 0140700 I N C o l u m n D O 032 l 8 0140720 0 7 8 \r p a t _ g e t P a t 0140740 t e r n [ p a t X , r o w , 0140760 c o l ] ; \r t e s t M a p [ r 376 0141000 001 \0 D 233 o w , c o l , h i 2 B R 0141020 b i t s , p a t , c y c l e s 0141040 ] ; \r E N D L O O P ; 032 l 9 3 4 0141060 8 \r E N D L O O P ; 032 l 8 0 7 8 0141100 \r E N D L O O P : 032 l 5 5 3 8 \r 0141120 E N D L O O P ; 032 l 4 2 6 8 \r E 0141140 N D L O O P ; 032 \r \r N o t e : 0141160 T h i s t e s t c h e c k s 0141200 e v e r y c o l u m n f o 0141220 r a p a r t i c u l a r r 0141240 o w b e f o r e i t p r o 0141260 c e e d s t o n e x t r o 0141300 w . \r % 032 \r * D e c e m b e r 0141320 1 4 , 1 9 7 8 1 2 : 0 4 0141340 P M 032 \r 032 \r m a p R W t e s t 0141360 2 : \r \t p u s h R e t u r n [ ] 0141400 ; \r \t b 376 001 \0 033 u r a n c h [ m 0141420 a p 2 R W d o n e ] ; \t * m u 0141440 s t p a t c h t h i s t e 0141460 s t e x p l i c i t l y . I 0141500 t t a k e s o v e r 2 0 0141520