$ od -c -N 50000 [Indigo]<Spruce>ISF.DM!1 0000000 377 \0 \0 i s f . d \0 376 001 \0 F T / / 0000020 I S F . D - - d e f i n i 0000040 t i o n s f o r I S F a n 0000060 d I S F I N I T \r / / l a s 0000100 t m o d i f i e d N o v e m 0000120 b e r 1 2 , 1 9 7 6 1 2 0000140 : 3 8 P M \r / / C o p y r i 0000160 g h t X e r o x C o r p o r 0000200 a t i o n 1 9 7 9 \r \r \t g e t 0000220 " a l t o f i l e s y s . d " 0000240 \r \t g e t " d i s k s . d " \r 0000260 \r s t r u c t u r e F M 0 : \t 0000300 / / f i l e m a p s t r u c 0000320 t u r e p r e f i x \r [ \t f p 0000340 @ F P \t / / f p f o r f 0000360 i l e \r \t D A s w o r d 3 0000400 = \t / / f i r s t 3 p 376 001 0000420 \0 $ 342 a g e D A s \r \t [ D 0000440 A 0 w o r d \r \t D A 1 0000460 w o r d \r \t D A 2 w o r 0000500 d \r \t ] \r \t s e a l w o r d 0000520 \t / / f o r c h e c k i n g 0000540 m a p \r \t d i s k w o r d \t 0000560 / / p o i n t s t o D S K 0000600 s t r u c t u r e f o r f 0000620 i l e \r \t z o n e w o r d \t / 0000640 / a l l o c a t i o n z o n 0000660 e f o r t e m p o r a r y 0000700 p a g e b u f f e r s \r \t l a 0000720 s t w o r d \t / / i n d e x 0000740 o f l a s t w o r d ( a 0000760 d a ) \r \t e n d w o r d \t / 0001000 / i n d e x o f e n d o 0001020 f a 376 001 \0 U 270 v a i l a b l e 0001040 s p a c e \r \t o n e r n w o 0001060 r d \t / / l a s t r n a d 0001100 d e d \r \t o n e d a w o r d \t 0001120 / / c o r r e s p o n d i n g 0001140 d a \r \t r e w r i t e w o r 0001160 d \t / / i f t r u e , r e 0001200 w r i t e i n d e x \r \t e x t 0001220 e n d w o r d \t / / e x t e 0001240 n d f i l e i n c h u n k 0001260 s o f t h i s m a n y p 0001300 a g e s \r ] \r s t r u c t u r e 0001320 F M : \t / / f u l l f i l 0001340 e m a p s t r u c t u r e \r [ 0001360 \t @ F M 0 \r \t b l a n k w o r 0001400 d ( s i z e F M 0 / 1 6 ) & 0001420 1 \t / / p a d 376 001 \0 ^ 247 d i n 0001440 g t o e n s u r e m a p 0001460 i s e v e n \r \t m a p w o r 0001500 d 0 \t / / b e g i n n i n g 0001520 o f m a p \r ] \r m a n i f e 0001540 s t m a p o f f s e t = ( 0001560 o f f s e t F M . m a p ) / 1 0001600 6 \r m a n i f e s t c h e c k 0001620 s i z e = ( o f f s e t F 0001640 M . s e a l ) / 1 6 + 1 \t / / 0001660 n u m b e r o f l e a d i n 0001700 g w o r d s t o c h e c k 0001720 \r \r m a n i f e s t \r [ \t p p c 0001740 = 5 0 \t \t / / m a x p a 0001760 g e s p e r B F S c a l l 0002000 \r \t v e r s i o n = 1 1 l 0002020 s h i f t 1 2 + 1 2 376 \0 % 0002040 035 204 l s h i f t 7 + 7 6 0002060 \t / / m o n t h , d a y , 0002100 y e a r \r ] \r 377 \0 \0 i s f i n i 0002120 t . b c p l \0 376 001 \0 355 314 / / I 0002140 S F I N I T - - i n i t i a 0002160 l i z e i n d e x e d s e q 0002200 u e n t i a l f i l e \r / / 0002220 l a s t e d i t e d N o v e 0002240 m b e r 1 2 , 1 9 7 6 1 0002260 2 : 4 2 P M \r / / C o p y r 0002300 i g h t X e r o x C o r p o 0002320 r a t i o n 1 9 7 9 \r \r \t g e 0002340 t " i s f . d " \r \r e x t e r 0002360 n a l \t / / e n t r y p r o 0002400 c e d u r e s \r [ \t I n i t F m 0002420 a p \t / / ( f m a p , l e n 0002440 , f p [ , c h e c k , x t 0002460 n d , z o n e , d i s k ] ) 0002500 - > o k \r ] \r \r e x t e r n 0002520 a l \r [ \t \t / / O . S 376 001 \0 204 0002540 335 . \r \t M o v e B l o c k \r \t A 0002560 c t O n D i s k P a g e s \r \t D 0002600 e f a u l t A r g s \r \t A l l o 0002620 c a t e ; F r e e \r \t D v e c 0002640 \r \t s y s D i s k \r \t s y s Z o 0002660 n e \r ] \r \r \r l e t I n i t F 0002700 m a p ( f m a p , l e n , f 0002720 p , c h e c k , x t n d , 0002740 z o n e , d i s k ; n u m a 0002760 r g s n ) = v a l o f \r [ 0003000 \t D e f a u l t A r g s ( l v 0003020 n , - 3 , f a l s e , 1 0 0003040 , - 1 , s y s D i s k ) \r \t 0003060 i f l e n l s m a p o f f 0003100 s e t + 3 t h e n r e s u l 0003120 t i s f a l s e \r \t f m a p > 0003140 > 376 001 \0 350 255 F M . s e a l = 0003160 v e r s i o n \r \t M o v e B l o 0003200 c k ( l v f m a p > > F M . f 0003220 p , f p , l F P ) \r \t l e t 0003240 l e a d e r V d a = f p > 0003260 > F P . l e a d e r V i r t u a 0003300 l D a \r \t f m a p > > F M . D A 0003320 0 = l e a d e r V d a \r \t f 0003340 m a p > > F M . D A 1 , f m a 0003360 p > > F M . D A 2 = f i l l 0003400 I n D A , f i l l I n D A \r \t 0003420 f m a p > > F M . l a s t = 0003440 m a p o f f s e t + 2 \r \t l e t 0003460 e n d = ( l e n - 2 ) & - 0003500 2 \r \t f m a p > > F M . o n e r 0003520 n , f m a p > > F M . o n e d 0003540 a = 0 , 376 001 \0 372 361 f m a p 0003560 > > F M . D A 0 \r \t l e t m a 0003600 p = f m a p + m a p o f f s 0003620 e t \r \t m a p ! 0 , m a p ! 1 0003640 , m a p ! 2 = 0 , l e a 0003660 d e r V d a , 1 \r \t f m a p > 0003700 > F M . r e w r i t e = c h 0003720 e c k \r \t f m a p > > F M . e x 0003740 t e n d = ( x t n d l s 0003760 p p c ? x t n d , p p c ) \r 0004000 \t i f z o n e e q 0 t h 0004020 e n z o n e = s y s Z o n 0004040 e \r \t i f c h e c k t h e n 0004060 \r \t [ l e t p a g e s i z 0004100 e = 1 l s h i f t d i s 0004120 k > > D S K . l n P a g e S i z 0004140 e \r \t l e t s 376 001 \0 237 M 0004160 c r a t c h , n c h = p a 0004200 g e s i z e , 0 \r \t t e 0004220 s t z o n e e q - 1 \r \t 0004240 i f s o D v e c ( I n i 0004260 t F m a p , l v s c r a t c 0004300 h ) \r \t i f n o t s c 0004320 r a t c h = A l l o c a t e 0004340 ( z o n e , s c r a t c h ) \r 0004360 \t A c t O n D i s k P a g 0004400 e s ( d i s k , 0 , l v f 0004420 m a p > > F M . D A 0 , f p , 0004440 0 , 1 , D C r e a d D , 0004460 l v n c h , D C r e a d D , 0004500 s c r a t c h ) \r \t i f 0004520 ( n c h e q 2 * p a g e s 0004540 i z e ) & ( s c r a t c h > 0004560 376 001 \0 H 8 > F M . l a s t g e 0004600 m a p o f f s e t + 2 ) & 0004620 ( s c r a t c h ! m a p o f f s 0004640 e t e q 0 ) t h e n \t / / 0004660 o l d m a p m a y b e 0004700 O K \r \t [ f o r i 0004720 = 0 t o c h e c k s i z e 0004740 - 1 d o \r \t 0004760 i f s c r a t c h ! i n e 0005000 f m a p ! i g o t o f a i l 0005020 \r \t l e t l a s t 0005040 = s c r a t c h > > F M . l 0005060 a s t \r \t i f l a 0005100 s t g r e n d t h e n l 0005120 a s t = e n d \r \t 0005140 i f l a s t g e p a g e 0005160 s i z e 376 \0 310 213 257 t h e n l 0005200 a s t = p a g e s i z e - 2 0005220 \r \t M o v e B l o c 0005240 k ( f m a p , s c r a t c h , 0005260 l a s t + 1 ) \r \t ] \r 0005300 f a i l : \t i f z o n e n e 0005320 - 1 t h e n F r e e ( z o 0005340 n e , s c r a t c h ) \r \t ] 0005360 \r \t f m a p > > F M . e n d = 0005400 e n d \r \t f m a p > > F M . d 0005420 i s k = d i s k \r \t f m a p 0005440 > > F M . z o n e = z o n e 0005460 \r \t r e s u l t i s t r u e \r 0005500 ] \r 377 \0 \0 i s f . b c p l \0 376 001 0005520 \0 > 207 / / I S F . B C P L - 0005540 - i m p l e m e n t i n d e 0005560 x e d s e q u e n t i a l f 0005600 i l e s \r / / l a s t m o d 0005620 i f i e d M a r c h 2 8 , 0005640 1 9 7 7 1 1 : 2 2 A M \r / 0005660 / C o p y r i g h t X e r o 0005700 x C o r p o r a t i o n 1 9 0005720 7 9 \r \r \t g e t " i s f . d " 0005740 \r \r e x t e r n a l \t / / e n 0005760 t r y p r o c e d u r e s \r [ 0006000 \t I n d e x e d P a g e I O \t / 0006020 / ( f m a p , f i r s t r n 0006040 , c o r e , n p g , w f l 0006060 a g [ , l a s t n c ] ) - > 0006100 l a s t n c \r \t W r i t e F m 0006120 a p \t 376 001 \0 8 Y / / ( f m a p 0006140 ) \r ] \r \r e x t e r n a l \r [ \t 0006160 \t / / O . S . \r \t S e t B l o 0006200 c k ; Z e r o \r \t C a l l S w 0006220 a t \r \t A c t O n D i s k P a g 0006240 e s \r \t W r i t e D i s k P a g 0006260 e s \r \t A l l o c a t e ; F r 0006300 e e \r \t U s c \r \t D v e c \r ] \r 0006320 \r \r l e t I n d e x e d P a g 0006340 e I O ( f m a p , f i r s t r 0006360 n , c o r e , n p g , w f 0006400 l a g , l a s t n c ; n u m 0006420 a r g s n a ) = v a l o f 0006440 \r / / w f l a g = - 1 f o r 0006460 w r i t e , 0 f o r r e 0006500 a d , 1 f o r r e a d + 0006520 e x t e n d \r 376 001 \0 ? 356 / / 0006540 r e t u r n s n u m c h a r s 0006560 o f l a s t p a g e t r 0006600 a n s f e r r e d \r [ \t l e t 0006620 a c t i o n = ( w f l a g 0006640 l s 0 ? D C w r i t e D , 0006660 D C r e a d D ) \r \t l e t p a 0006700 g e s i z e = 1 l s h i f 0006720 t f m a p > > F M . d i s k > 0006740 > D S K . l n P a g e S i z e \r 0006760 \t i f n a l s 6 t h e n 0007000 l a s t n c = p a g e s i 0007020 z e * 2 \r \t i f U s c ( f i r 0007040 s t r n + n p g , N e x t F m 0007060 a p ( f m a p ) ) g e 0 t 0007100 h e n m o r e p a g e i o ( f 0007120 m a p , f i r s t r n , 376 001 \0 0007140 + 275 c o r e , n p g , w f 0007160 l a g ) \r \t l e t C A s = 0007200 v e c p p c \r \t l e t D A s 0007220 = v e c p p c \t / / p p 0007240 c + 1 w o r d s ! \r \t l e t 0007260 c a , r n 0 , p a g e s l e 0007300 f t = c o r e , f i r s t 0007320 r n , n p g \r \t l e t n c h 0007340 = n i l \r \t w h i l e p a 0007360 g e s l e f t g r 0 d o \r 0007400 \t [ l e t n p = m i n 0007420 ( p a g e s l e f t , p p c ) 0007440 \r \t f o r j = 0 t 0007460 o n p - 1 d o \r \t [ 0007500 C A s ! j = c a ; c a 0007520 = c a + p a g e s i z e \r \t 0007540 376 001 \0 257 222 D A s ! j 0007560 = L o o k u p F m a p ( f m a 0007600 p , r n 0 + j ) \r \t ] 0007620 \r \t D A s ! n p = f i 0007640 l l I n D A \r \t p a g e s 0007660 l e f t = p a g e s l e f t 0007700 - n p \r \t n c h = ( p 0007720 a g e s l e f t e q 0 ? l 0007740 a s t n c , p a g e s i z e * 0007760 2 ) \r \t A c t O n D i s k 0010000 P a g e s ( f m a p > > F M . d 0010020 i s k , C A s - r n 0 , D A 0010040 s - r n 0 , l v f m a p > > 0010060 F M . f p , r n 0 , r n 0 + 0010100 n p - 1 , a c t i o n , l v 0010120 n c h ) \r \t r n 0 = 0010140 r n 0 + n p \r 376 001 \0 027 344 \t ] \r 0010160 \t r e s u l t i s n c h \r ] \r 0010200 \r a n d m o r e p a g e i o ( 0010220 f m a p , f i r s t r n , s 0010240 c r a t c h , n p g , w f l 0010260 a g ) b e \r [ \t l e t p a g 0010300 e s i z e , f i r s t d a = 0010320 1 l s h i f t f m a p > > 0010340 F M . d i s k > > D S K . l n P 0010360 a g e S i z e , L o o k u p F 0010400 m a p ( f m a p , f i r s t r 0010420 n ) \r \t l e t z o n e = f 0010440 m a p > > F M . z o n e \r \t i f 0010460 w f l a g e q - 1 t h e 0010500 n \r \t t e s t z o n e e q 0010520 - 1 \r \t i f s o [ s c 0010540 r a t c h = p a g e 376 001 \0 325 0010560 > s i z e ; D v e c ( m o r e 0010600 p a g e i o , l v s c r a t 0010620 c h ) ] \r \t i f n o t s 0010640 c r a t c h = A l l o c a t 0010660 e ( z o n e , p a g e s i z e 0010700 ) \r \t l e t l a s t r n , l 0010720 a s t m a p r n = f i r s t 0010740 r n + n p g , N e x t F m a p 0010760 ( f m a p ) \r \t l e t r n = 0011000 l a s t m a p r n - 1 \r \t l e 0011020 t D A s = v e c p p c + 0011040 2 \t / / p p c + 3 w o r d s 0011060 ! \r \t D A s ! 0 = ( r n e 0011100 q 0 ? e o f D A , L o o k 0011120 u p F m a p ( f m a p , r n - 0011140 1 ) ) \r \t l e t n c h = n 0011160 i 376 001 \0 J M l \r \t w h i l e r 0011200 n l s l a s t r n d o \r \t 0011220 [ D A s ! 1 = L o o k u 0011240 p F m a p ( f m a p , r n ) \r 0011260 \t l e t n p = m i n 0011300 ( p p c , l a s t r n - r n ) 0011320 \r \t S e t B l o c k ( D A 0011340 s + 2 , f i l l I n D A , n 0011360 p + 1 ) \r \t l e t n r n 0011400 = A c t O n D i s k P a g e 0011420 s ( f m a p > > F M . d i s k , 0011440 0 , D A s + 1 - r n , l v 0011460 f m a p > > F M . f p , r n 0011500 , r n + n p - 1 , D C r e a 0011520 d D , l v n c h , D C r e 0011540 a d D , s c r a t c h ) \r \t 0011560 i f n 376 001 \0 270 303 c h e q 0011600 0 t h e n \t / / e x t e n 0011620 d f i l e \r \t t e s t 0011640 n r n e q r n \r \t 0011660 i f n o t \t / / t o o h a r 0011700 d t o p i c k u p \r \t \t n 0011720 p = n r n - r n \r \t 0011740 i f s o \r \t [ l e t 0011760 n x p = f m a p > > F M . e 0012000 x t e n d \r \t u n l 0012020 e s s ( n x p g r 0 ) & 0012040 ( w f l a g n e 0 ) d o 0012060 C a l l S w a t ( " A t t e m 0012100 p t t o a c c e s s n o n 0012120 - e x i s t e n t p a g e " ) 0012140 \r \t i f n p l s 0012160 n x p t h e n n 376 001 \0 226 254 0012200 p = n x p \r \t Z 0012220 e r o ( s c r a t c h , p a g 0012240 e s i z e ) \r \t S e 0012260 t B l o c k ( D A s + 2 , f i 0012300 l l I n D A , n p + 1 ) \r \t 0012320 D A s ! ( n p + 2 ) 0012340 = e o f D A \r \t W 0012360 r i t e D i s k P a g e s ( f m 0012400 a p > > F M . d i s k , 0 , 0012420 D A s + 1 - r n , l v f m a 0012440 p > > F M . f p , r n , r n 0012460 + n p , D C w r i t e D , 0 0012500 , 0 , s c r a t c h ) \r \t 0012520 ] \r \t f o r j = 0012540 1 t o n p d o \r \t 0012560 [ l e t x r n , x d a 0012600 376 001 \0 M V = r n + j , D A s 0012620 ! ( j + 1 ) \r \t E x 0012640 t e n d F m a p ( f m a p , x 0012660 r n , x d a ) \r \t 0012700 i f x r n e q f i r s t r 0012720 n t h e n f i r s t d a = 0012740 x d a \r \t ] \r \t 0012760 D A s ! 0 = D A s ! n p \r \t 0013000 r n = r n + n p \r \t 0013020 ] \r \t E x t e n d F m a p ( f m 0013040 a p , f i r s t r n , f i r 0013060 s t d a ) \t / / j u s t i n 0013100 c a s e m a p i s f u l 0013120 l \r \t i f N e x t F m a p ( f 0013140 m a p ) g r l a s t m a p r 0013160 n t h e n W r i t e F m a p 0013200 ( f m a p 376 001 \0 241 d ) \r \t i f 0013220 ( w f l a g e q - 1 ) & 0013240 ( z o n e n e - 1 ) t h e 0013260 n F r e e ( z o n e , s c r 0013300 a t c h ) \r ] \r \r a n d m i n 0013320 ( x , y ) = ( x l s y 0013340 ? x , y ) \r \r a n d W r i 0013360 t e F m a p ( f m a p ) b e \r 0013400 [ \t i f f m a p > > F M . r e 0013420 w r i t e t h e n \r \t [ A 0013440 c t O n D i s k P a g e s ( f m 0013460 a p > > F M . d i s k , 0 , 0013500 l v f m a p > > F M . D A 0 , 0013520 l v f m a p > > F M . f p , 0013540 1 , 1 , D C w r i t e D , 0013560 0 , D C w r i t e D , f m 0013600 a p ) \r \t ] \r ] \r 376 001 \0 : 2 \r 0013620 a n d L o o k u p F m a p ( f 0013640 m a p , r n , f o r c e ; 0013660 n u m a r g s n ) = v a l 0013700 o f \r [ \t i f ( r n e q f 0013720 m a p > > F M . o n e r n ) & 0013740 ( ( n l s 3 ) % ( n o 0013760 t f o r c e ) ) t h e n \r \t 0014000 r e s u l t i s f m a p 0014020 > > F M . o n e d a \r \t l e t 0014040 h i = f m a p > > F M . l a 0014060 s t \r \t i f U s c ( r n , f 0014100 m a p ! h i ) g e 0 t h e 0014120 n r e s u l t i s f i l l I 0014140 n D A \r \t l e t l o = m a 0014160 p o f f s e t \r \t w h i l e h 0014200 i - l o g r 2 d o \r \t 376 0014220 001 \0 Y 001 [ l e t m i d = 0014240 ( ( l o + h i ) r s h i f t 0014260 1 ) & - 2 \r \t t e s t 0014300 U s c ( r n , f m a p ! m i 0014320 d ) g e 0 \r \t i f s 0014340 o l o = m i d \r \t 0014360 i f n o t h i = m i d \r \t 0014400 ] \r \t l e t l p = l v 0014420 ( f m a p ! l o ) \r \t r e s u l 0014440 t i s ( l p ! 1 + r n - @ l p 0014460 ) \r ] \r \r a n d E x t e n d F 0014500 m a p ( f m a p , r n , d a 0014520 ) = v a l o f \r [ \t f m a p 0014540 > > F M . o n e r n , f m a p 0014560 > > F M . o n e d a = r n , 0014600 d a \r \t l e t l a s t = 0014620 f m a p 376 001 \0 302 030 > > F M . l a 0014640 s t \r \t l e t l a s t p = 0014660 l v ( f m a p ! l a s t ) \r \t 0014700 i f r n n e @ l a s t p 0014720 t h e n r e s u l t i s f a 0014740 l s e \r \t l e t c u r v a = 0014760 d a \r \t t e s t c u r v a 0015000 e q ( l a s t p ! - 1 ) + @ l 0015020 a s t p - ( l a s t p ! - 2 ) \r 0015040 \t i f s o \t / / s t i l l 0015060 i n s a m e c h u n k \r \t 0015100 @ l a s t p = @ l a s t 0015120 p + 1 \r \t i f n o t \t / / s 0015140 t a r t n e w c h u n k \r \t 0015160 t e s t l a s t e q 0015200 f m a p > > F M . e n d \r \t 0015220 i f s o \t / / 376 \0 272 ( 355 o 0015240 u t o f s p a c e \r \t 0015260 r e s u l t i s f a l s 0015300 e \r \t i f n o t \r \t 0015320 [ l a s t p ! 1 , l a s 0015340 t p ! 2 = c u r v a , @ l 0015360 a s t p + 1 \r \t f m 0015400 a p > > F M . l a s t = l a 0015420 s t + 2 \r \t ] \r \t r e s 0015440 u l t i s t r u e \r ] \r \r a n 0015460 d N e x t F m a p ( f m a p ) 0015500 = f m a p ! ( f m a p > > F 0015520 M . l a s t ) \r 377 \0 \0 c o m p i 0015540 l e i s f . c m \0 376 \0 $ 272 214 B c 0015560 p l / F i s f i n i t . b c p 0015600 l \r B c p l / F i s f . b c p 0015620 l \r 377 \0 \0 s e n d i s f . c m \0 0015640 376 \0 266 \v 363 F t p / N M a x c 0015660 C o n n e c t / C a l t o s o 0015700 u r c e @ A l t o S o u r c e 0015720 P a s s w o r d @ D u m p / C 0015740 i s f . d m i s f . d i s 0015760 f i n i t . b c p l i s f . b 0016000 c p l c o m p i l e i s f . c 0016020 m s e n d i s f . c m C o n 0016040 n e c t / C a l t o @ A l t 0016060 o P a s s w o r d @ D u m p / 0016100 C i s f . d m i s f i n i t 0016120 . B R i s f . B R \r 374 0016134