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