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