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