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