$ od -c -N 50000 [Indigo]<AltoSource>VMEM.DM!2 0000000 377 \0 \0 t e s t v m e m . b c p l 0000020 \0 376 001 \0 300 d / / \r / / T e s t 0000040 p r o g r a m f o r V M E 0000060 M \r / / l a s t e d i t e d 0000100 A u g u s t 1 , 1 9 7 7 0000120 4 : 0 8 P M \r / / \r / / C 0000140 o p y r i g h t X e r o x C 0000160 o r p o r a t i o n 1 9 7 9 \r 0000200 \r \t g e t " s t r e a m s . d 0000220 " \r \t g e t " a l t o f i l e 0000240 s y s . d " \r \r e x t e r n a l 0000260 \r [ \t \t / / O . S . \r \t C r e 0000300 a t e D i s p l a y S t r e a m 0000320 ; S h o w D i s p l a y S t r 0000340 e a m \r \t O p e n F i l e \r \t C 0000360 l o s e s ; G e t s ; P u t 0000400 s ; W o s ; W s ; W s s \r 0000420 \t Z e r o \r 376 001 \0 233 205 \t T i m e 0000440 r \r \t d s p ; k e y s \r \t \t / 0000460 / S T A N D A R D R A M \r \t S 0000500 t a n d a r d R A M \r \t \t / / 0000520 T e m p l a t e \r \t P u t T e m 0000540 p l a t e \r \t \t / / T r a c e 0000560 \r \t T r a c e ; P r o c T r a 0000600 c e ; U n T r a c e \r \t T r a 0000620 c e I n d e n t \r \t T r a c e S 0000640 t r e a m ; T r a c e O u t s 0000660 ; T r a c e L i n e s \r \t \t / 0000700 / V M E M \r \t V m e m S o f t 0000720 \r \t I n i t i a l i z e V m e m 0000740 \r \t A d d B u f f e r s ; S n 0000760 a r f B u f f e r ; U n s n a 0001000 r f B u f f e r \r \t M A P T R A 0001020 P ; L o c k C e l l 376 001 \0 224 5 0001040 ; U n l o c k C e l l \r \t F l 0001060 u s h B u f f e r s \r \t \t / / 0001100 P R I N T V M E M S T A T E \r \t 0001120 P r i n t V m e m S t a t e \r \t 0001140 \t / / S O F T M A P \r \t N P R 0001160 O B E \r \t \t / / A S M A P \r \t 0001200 @ V R R 1 ; @ V W R 1 ; @ V 0001220 R R 2 ; @ V W R 2 \r ] \r \r e x 0001240 t e r n a l \t / / e n t r i e 0001260 s f o r V M E M \r [ \t C l e 0001300 a n u p L o c k s \r \t P a g e T 0001320 y p e \r \t P a g e G r o u p S i 0001340 z e \r \t P a g e G r o u p B a s 0001360 e \r \t P a g e G r o u p A l i g 0001400 n \r \t D O P A G E I O \r ] \r \r e 0001420 x t e r n a l \t / / l i n k s 0001440 376 001 \0 . 276 t o I S F \r [ \t I 0001460 n i t F m a p \r \t I n d e x e d 0001500 P a g e I O \r ] \r \r \r m a n i f 0001520 e s t \r [ \t d s i z e = 2 5 0001540 0 0 0 \r \t n p a g e s = # 2 0001560 0 \r \t m a p s = # 1 0 0 0 \r 0001600 \t d b s = # 3 0 0 0 \r ] \r \r 0001620 s t a t i c \r [ \t p b a s e = 0001640 4 \r \t p g m s k \r \t p s t r m 0001660 \r \t d b u f s \r \t d h m \r \t d s 0001700 \r \t f m a p \r ] \r \r l e t d m 0001720 a p ( ) b e \r [ \t S t a n d a 0001740 r d R A M ( ) \r \t l e t d d 0001760 = v e c d s i z e \r \t d s 0002000 = C r e a t e D i s p l a y S 0002020 t r e a m ( 4 0 , d d , d s 0002040 i z e ) \r 376 001 \0 327 345 \t S h o w D 0002060 i s p l a y S t r e a m ( d s ) 0002100 \r \t T r a c e L i n e s = 6 0002120 \r \t T r a c e S t r e a m = 0002140 d s \r \t T r a c e ( M A P T R A 0002160 P , " M A P T R A P " ) \r \t T 0002200 r a c e ( v w r i t e , " V W 0002220 R I T E " ) \r \t l e t d b p t 0002240 = v e c # 4 0 0 \r \t l e t 0002260 d h m a p = v e c m a p 0002300 s + 3 \r \t i f ( d h m a p & 1 0002320 ) n e 0 t h e n d h m a 0002340 p = d h m a p + 1 \r \t d h m 0002360 = d h m a p + 2 \r \t l e t 0002400 d b = v e c d b s \r \t d b 0002420 u f s = d b \r \t Z e r o ( d 0002440 b u f s , d b s ) 376 001 \0 215 025 \r 0002460 \t l e t d c e l l s = v e 0002500 c 5 \r \t l e t d a v e c = 0002520 v e c n p a g e s * 2 + 1 \r 0002540 \t l e t f p = v e c l F 0002560 P \r \t Z e r o ( f p , l F P ) 0002600 \r \t p s t r m = O p e n F i 0002620 l e ( " T E S T . V M E M . " , 0002640 k s T y p e R e a d W r i t e 0002660 , w o r d I t e m , 0 , f 0002700 p ) \r \t C l o s e s ( p s t r m 0002720 ) \r \t p g m s k = 0 \r \t V m 0002740 e m S o f t ( ) \r \t I n i t i a 0002760 l i z e V m e m ( d h m a p + 2 0003000 , m a p s , d b p t , d c 0003020 e l l s , 5 , d h m a p , 0003040 p m s t a t ) \r \t I n i t F m 376 0003060 001 \0 346 U a p ( d a v e c , n p 0003100 a g e s * 2 , f p , t r u e 0003120 ) \r \t f m a p = d a v e c \r 0003140 \t A d d B u f f e r s ( d b u f 0003160 s , d b u f s + d b s ) \r \t p 0003200 a u s e ( " I n i t i a l i z e 0003220 d . . . " ) \r \t f o r j = 0003240 0 t o 6 d o \r \t [ v 0003260 w r i t e ( t e s t a d d r ( j 0003300 ) ) ! 0 = t e s t v a l u e 0003320 ( j ) ; n z s c a n ( ) ] \r 0003340 \t f o r j = 0 t o 6 0003360 d o \r \t [ l e t v a l = 0003400 v w r i t e ( t e s t a d d r 0003420 ( j ) ) ! 0 \r \t W o s ( d 0003440 s , v a l ) \r \t i f v 0003460 a l n 376 001 \0 236 \v e t e s t v 0003500 a l u e ( j ) t h e n W s s 0003520 ( T r a c e O u t s , " ? ? 0003540 ? ? ? ? ? ? ? ? " ) \r \t P 0003560 u t s ( T r a c e O u t s , $ 0003600 * N ) \r \t n z s c a n ( ) 0003620 \r \t ] \r \t F l u s h B u f f e 0003640 r s ( ) \r \t P r i n t V m e m S 0003660 t a t e ( d s ) \r \t W s s ( T r 0003700 a c e O u t s , " D o n e * N 0003720 " ) \r \t p a u s e ( " D o n e 0003740 . . . " ) \r ] \r \r a n d t e s 0003760 t a d d r ( j ) = \r \t p b a s 0004000 e l s h i f t 8 + ( t a 0004020 b l e [ # 4 4 4 ; # 1 1 1 1 ; 0004040 # 1 5 5 5 ; # 2 2 2 2 ; # 2 6 6 0004060 6 ; # 3 3 3 3 ; # 376 001 \0 316 = 3 7 0004100 7 7 ] ) ! j \r \r a n d t e s 0004120 t v a l u e ( j ) = # 1 1 1 0004140 0 0 0 + j \r \r a n d p a u s e 0004160 ( s ) b e \r [ \t W s ( s ) \r \t 0004200 G e t s ( k e y s ) \r \t P u t s 0004220 ( d s p , $ * N ) \r ] \r \r a n 0004240 d n z s c a n ( ) b e \r [ \t 0004260 f o r p = d b u f s t o 0004300 d b u f s + d b s - 1 d o 0004320 i f @ p n e 0 t h e n \r 0004340 \t P u t T e m p l a t e ( 0004360 T r a c e O u t s , " . . . $ 0004400 7 U O : $ 7 U O * N " , p , 0004420 @ p ) \r \t f o r p = d h m 0004440 b y 2 t o d h m + m a p 0004460 s - 2 d o i f @ p n 376 001 0004500 \0 : l e 0 t h e n \r \t 0004520 P u t T e m p l a t e ( T r a c 0004540 e O u t s , " $ 3 U O : $ 7 U 0004560 O $ 7 U O * N " , p - d h m , 0004600 @ p , p ! 1 ) \r ] \r \r a n d 0004620 v w r i t e ( a d d r ) = 0004640 V W R 1 ( a d d r ) \r \r a n d 0004660 C l e a n u p L o c k s ( ) b 0004700 e [ ] \r \r a n d P a g e T 0004720 y p e ( v p ) = v a l o f \r 0004740 [ \t l e t p n = v p - p b 0004760 a s e \r \t i f ( p n & # 1 0005000 7 7 7 7 0 ) n e 0 t h e n 0005020 p a u s e ( " B a d v p " ) 0005040 \r \t l e t m a s k = 1 l 0005060 s h i f t p n \r \t i f ( p g 0005100 m s k 376 001 \0 \f 343 & m a s k ) 0005120 n e 0 r e s u l t i s 1 0005140 \r \t p g m s k = p g m s k 0005160 + m a s k \r \t r e s u l t i s 0005200 - 1 \r ] \r \r a n d P a g e G 0005220 r o u p S i z e ( v p ) = 1 0005240 \r a n d P a g e G r o u p B a 0005260 s e ( v p ) = v p \r a n d 0005300 P a g e G r o u p A l i g n ( v 0005320 p ) = 0 \r \r a n d D O P A 0005340 G E I O ( v p , c o r e , n 0005360 p , w f l a g ) b e \r [ \t l 0005400 e t t = v e c 1 \r \t l e 0005420 t i t = T i m e r ( t ) \r 0005440 \t I n d e x e d P a g e I O ( f 0005460 m a p , 3 * v p + 2 , c o r 0005500 e , n p , w 376 001 \0 , 377 f l a 0005520 g ) \r \t P u t T e m p l a t e ( 0005540 T r a c e O u t s , " $ S v 0005560 p $ U O , $ U O p a g e ( 0005600 s ) , c o r e $ U O : $ U 0005620 D m s * N " , \r \t ( w f l 0005640 a g ? " W r i t e " , " R e 0005660 a d " ) , v p , n p , c o 0005700 r e , T i m e r ( t ) - i t ) 0005720 \r ] \r \r a n d p m s t a t ( p 0005740 t r , n ) b e \r [ \t P u t T 0005760 e m p l a t e ( T r a c e O u t 0006000 s , " M S P R O C c a l l e 0006020 d w i t h $ 7 U O $ 7 U O * N 0006040 " , p t r , n ) \r \t i f n 0006060 g e 0 t h e n \r \t f o r 0006100 p = p t r b y 2 376 \0 D 0006120 336 C t o p t r + n - 2 d o 0006140 \r \t P u t T e m p l a t e 0006160 ( T r a c e O u t s , " $ 9 U 0006200 O $ 7 U O * N " , p ! 0 , p 0006220 ! 1 ) \r ] \r 377 \0 \0 v m e m . d \0 0006240 376 001 \0 h 271 / / \r / / D e f i n 0006260 i t i o n s f o r V M E M 0006300 p a c k a g e \r / / l a s t 0006320 e d i t e d D e c e m b e r 0006340 1 8 , 1 9 7 8 9 : 1 0 A 0006360 M \r / / \r / / C o p y r i g h 0006400 t X e r o x C o r p o r a t 0006420 i o n 1 9 7 9 \r \r \r s t r u c 0006440 t u r e B P T : \r [ \t H A S H 0006460 X b y t e \r \t N E X T b y t 0006500 e \t / / N E X T M U S T B 0006520 E I N L O W P A R T O F 0006540 W O R D \r \t \t \t / / ( F O R 0006560 @ b p t ) \r ] \r m a n i f e s 0006600 t N E X T m a s k = # 3 7 0006620 7 \r \r s t r u c t u r e H M : 0006640 \r [ \t N K 376 001 \0 h Q E Y w o r 0006660 d \t / / 1 ' s c o m p l e m 0006700 e n t o f k e y \r \t F L A G 0006720 W D w o r d = \r \t [ P D 0006740 I F b i t 8 \t / / r e a l 0006760 p a g e # - v i r t u a 0007000 l A C 1 [ 0 : 7 ] \r \t F 0007020 L A G S b i t 8 = \r \t 0007040 [ W G R O U P b i t 1 0007060 \t / / t h i s i s a w r 0007100 i t e g r o u p \r \t 0007120 G R O U P b i t 2 = \r \t 0007140 [ N F P G b i 0007160 t 1 \t / / n o t f i r s t 0007200 p a g e o f g r o u p \r \t 0007220 N L P G b i 0007240 t 1 \t / / n o t 376 001 \0 { 243 0007260 l a s t p a g e o f g r o 0007300 u p \r \t ] \r \t 0007320 b l a n k b i t 1 \r 0007340 \t D U M M Y b i t 0007360 1 \r \t N O T R E F 0007400 b i t 1 \t / / * * * u s 0007420 e d b y m i c r o c o d e \r 0007440 \t C L E A N b i t 0007460 1 \t / / * * * u s e d b 0007500 y m i c r o c o d e \r \t 0007520 b l a n k b i t 1 \r \t 0007540 ] \r \t ] \r ] \r m a n i 0007560 f e s t H M f l a g O f f s e 0007600 t = 1 \r \r s t r u c t u r e 0007620 L C : \r [ \t a d d r w o r d 0007640 \r \t p r o c w o r d \r ] \r m 376 0007660 001 \0 245 344 a n i f e s t L C s i 0007700 z e = 2 \r \r m a n i f e s t 0007720 \r [ \t P S = 8 \t \t / / L O 0007740 G 2 ( V M P A G E S I Z E ) 0007760 \r \t W M = ( 1 l s h i f t 0010000 P S ) - 1 \r \t R e p I n c = 0010020 2 6 \t / / h a s h m a p 0010040 r e p r o b e i n c r e m e n 0010060 t \r \t B p t S i z e = # 4 0 0010100 0 \t / / # o f b u f f e r 0010120 s \r \t E m p t y V P = - 2 \t 0010140 / / p s e u d o V P f o r 0010160 e m p t y b u f f e r s \r \t 0010200 N a V P = - 3 \t / / p s e 0010220 u d o V P f o r u n a v a 0010240 i l a b l e b u f f e r s \r \t 0010260 M i n D 376 \0 230 217 371 u m m y V P 0010300 = - 8 \r ] \r \r m a n i f e s t 0010320 \r [ \t C L E A N b i t = # 2 0010340 \r \t N O T R E F b i t = # 4 0010360 \r \t D U M M Y b i t = # 1 0 0010400 \r \t N L P G b i t = # 4 0 \r 0010420 \t N F P G b i t = # 1 0 0 \r 0010440 \t G R O U P b i t s = N L P 0010460 G b i t + N F P G b i t \r \t W G 0010500 R O U P b i t = # 2 0 0 \r ] 0010520 \r 377 \0 \0 v m e m . b c p l \0 376 001 0010540 \0 336 376 / / \r / / V M E M - 0010560 v i r t u a l m e m o r y 0010600 p a c k a g e \r / / l a s t 0010620 e d i t e d S e p t e m b e r 0010640 1 5 , 1 9 7 7 3 : 1 0 0010660 P M \r / / \r / / C o p y r i g 0010700 h t X e r o x C o r p o r a 0010720 t i o n 1 9 7 9 \r \r \t g e t 0010740 " v m e m . d " \r \r e x t e r n 0010760 a l \t / / e n t r y p r o c 0011000 e d u r e s \r [ \t L o c k O n l 0011020 y ; L o c k R e l o c ; L o 0011040 c k Z e r o \t / / ( a d d r , 0011060 n e w , f l a g ) - > o 0011100 k \r \t \t / / ( f r o m a s s 0011120 e m b l y c o d e ) \r \t M A P 0011140 T R A 376 001 \0 221 361 P \t / / ( v p 0011160 a g e , w f l a g , h p t r 0011200 ) \r \t L o c k C e l l \t / / ( 0011220 l v l o c k [ , p r o c ] ) \r 0011240 \t U n l o c k C e l l \t / / ( 0011260 l v l o c k ) \r \t \t / / f o r 0011300 V M E M A U X \r \t F i n d F r 0011320 e e B u f \r \t d e f a u l t N o 0011340 B u f s P r o c \r \t F l u s h B 0011360 u f s \r \t F l u s h M a p S t a 0011400 t s \r \t D o L o c k s \r ] \r \r e 0011420 x t e r n a l \t / / e n t r y 0011440 s t a t i c s \r [ \t @ H A S H 0011460 M A P ; @ H A S H M A P S I Z 0011500 E ; @ H A S H M A P M A S K \r 0011520 \t M A P S T A T B A S E \r \t @ M 0011540 a p S t a t P t 376 001 \0 ; n r \r \t 0011560 S O F T M A P F L A G \r \t C h e 0011600 c k B P T f l a g \r \t @ R e p r 0011620 o b e I n c \r \t \t / / f o r 0011640 V M E M A U X \r \t @ H A S H M A 0011660 P S I Z E 2 \r \t @ H A S H M A P 0011700 1 \r \t @ H A S H M A P T O P \r \t 0011720 E M P T Y X X \r \t N A X X \r \t M 0011740 a p S t a t P r o c \r \t N o B u 0011760 f s P r o c \r \t @ B p t ; @ B 0012000 p t L a s t \r \t L o c k e d C e 0012020 l l s ; E n d L o c k e d C e 0012040 l l s ; L a s t L o c k e d C 0012060 e l l \r ] \r \r e x t e r n a l \t 0012100 / / p r o c e d u r e s \r [ \t 0012120 \t / / O . S . \r \t M o v e B l 0012140 o c k ; S e t B l o c k 376 001 \0 0012160 6 320 ; Z e r o \r \t T i m e r \r 0012200 \t C a l l S w a t \r \t U s c \r \t 0012220 D o u b l e A d d \r \t \t / / A 0012240 S M A P \r \t R E H A S H M A P \r 0012260 \t \t / / U s e r - s u p p l i 0012300 e d \r \t C l e a n u p L o c k s 0012320 \t / / ( ) \r \t D O P A G E I O 0012340 \t / / ( V P , c o r e , # 0012360 o f p a g e s , w r i t e 0012400 f l a g ) \r \t P a g e G r o u 0012420 p B a s e \t / / ( V P ) - > 0012440 V P \r \t P a g e G r o u p S i 0012460 z e \t / / ( V P ) - > # 0012500 o f p a g e s & w r i t e 0012520 g r o u p f l a g \r \t P a g 0012540 e G r o u p A l i g n \t / / ( 0012560 V P 376 001 \0 004 P ) - > c o r e 0012600 a l i g n m e n t m a s k \r 0012620 \t P a g e T y p e \t / / ( V P 0012640 ) - > n e w p a g e f l 0012660 a g \r ] \r \r e x t e r n a l \t / 0012700 / s t a t i c s \r [ \t \t / / 0012720 O . S . \r \t @ o n e B i t s \r ] 0012740 \r \r \r s t a t i c \r [ \t H A S H 0012760 M A P \r \t H A S H M A P S I Z E 0013000 \t / / M U S T B E P O W E 0013020 R O F 2 \r \t H A S H M A P S 0013040 I Z E 2 \r \t H A S H M A P M A S 0013060 K \r \t H A S H M A P 1 \r \t H A S 0013100 H M A P T O P \r \t M A P S T A T 0013120 B A S E \r \t M a p S t a t P t r 0013140 \r \t S O F T M A P F L A G = 0013160 f a l s e \r \t 376 001 \0 ; \b E M P T 0013200 Y X X \t \t / / H A S H X o f 0013220 e m p t y b u f f e r s , 0013240 l s h i f t 8 \r \t N A X X \t / 0013260 / H A S H X o f u n a v a 0013300 i l a b l e b u f f e r s , 0013320 l s h i f t 8 \r \t M a p S t a 0013340 t P r o c \t / / m a p s t a 0013360 t i s t i c s p r o c e d u r 0013400 e \r \t B p t ; B p t L a s t \r 0013420 \t N o B u f s P r o c \r \t L o c 0013440 k e d C e l l s ; L a s t L o 0013460 c k e d C e l l ; E n d L o c 0013500 k e d C e l l s \r \t C h e c k B 0013520 P T f l a g = f a l s e \r \t 0013540 R e p r o b e I n c = R e p 0013560 I n c \r \t A n y D i r t 376 001 \0 275 0013600 c y \r \t L a s t T r a p T i m e 0013620 = 0 \r \t T S A = 0 ; T 0013640 S A 1 = 0 \r \t A g i n g I n 0013660 t e r v a l = 0 \r \t R e f L 0013700 o c k e d C e l l s = t r u 0013720 e \r \t L o c k O n l y \t / / = 0013740 F a l s e P r e d i c a t e \r 0013760 \t L o c k Z e r o \t / / = T 0014000 r u e P r e d i c a t e \r ] \r \r 0014020 \r / / P R O C E S S M A P 0014040 T R A P , C A L L E D F R 0014060 O M A S S E M B L Y C O D E 0014100 \r \r l e t M A P T R A P ( V P 0014120 G , W F L A G , H P T R ) 0014140 b e \r [ \t C l e a n u p L o c k 0014160 s ( ) \r \t i f F l u s h M a p 0014200 S 376 001 \0 G 030 t a t s ( ) t h e 0014220 n r e t u r n \t / / s t a t 0014240 i s t i c s b u f f e r w a 0014260 s f u l l \r \t i f U s c ( V 0014300 P G , M i n D u m m y V P ) 0014320 g e 0 t h e n C a l l S w 0014340 a t ( " I l l e g a l V P " ) 0014360 \r \t i f @ H P T R n e 0 0014400 t h e n \r \t [ \t / / F I R S 0014420 T W R I T E T O C L E A N 0014440 P A G E \r \t H P T R > > 0014460 H M . C L E A N = 0 \r \t 0014500 A n y D i r t y = t r u e 0014520 \r \t r e t u r n \r \t ] \r 0014540 \r \t l e t t t v = v e c 0014560 1 \r \t t t v ! 1 = T i m e r 0014600 ( t t v ) - 376 001 \0 ~ . L a s t T 0014620 r a p T i m e \r \t t t v ! 0 = 0014640 0 \r \t D o u b l e A d d ( l v 0014660 T S A , t t v ) \r \r \t l e t 0014700 p t y p e = P a g e T y p 0014720 e ( V P G , W F L A G ) \r \t l 0014740 e t N E W P A G E F L A G = 0014760 s e l e c t o n p t y p e 0015000 i n t o \r \t [ c a s e 1 : 0015020 f a l s e \r \t c a s e 0015040 - 1 : t r u e \r \t d e f 0015060 a u l t : C a l l S w a t ( " 0015100 B a d P a g e T y p e " ) \r \t 0015120 ] \r \r \t l e t V P A G E = 0015140 P a g e G r o u p B a s e ( V 0015160 P G ) \r \t l e t V N P G S = 0015200 P a g e G r o u p S 376 001 \0 A 212 0015220 i z e ( V P A G E ) \r \t l e t 0015240 A L I G N = P a g e G r o u 0015260 p A l i g n ( V P A G E ) \r \r \t 0015300 l e t W G = 0 \r \t i f V 0015320 N P G S l s 0 t h e n \t / 0015340 / t h i s i s a w r i t 0015360 e g r o u p \r \t W G , 0015400 V N P G S = W G R O U P b i 0015420 t , - V N P G S \r \r / / M 0015440 a r k l o c k e d p a g e s 0015460 a s r e f e r e n c e d \r \t 0015500 i f R e f L o c k e d C e l l 0015520 s t h e n \r \t f o r I = 0015540 L o c k e d C e l l s b y 0015560 L C s i z e t o L a s t L o 0015600 c k e d C e l l - L C s i z e 0015620 376 001 \0 257 ] d o \r \t u n l e s 0015640 s ( I > > L C . p r o c ) ( I 0015660 > > L C . a d d r , 0 , f a 0015700 l s e ) d o \r \t [ l e t 0015720 h p = H A S H M A P 1 + ( B 0015740 p t + @ ( I > > L C . a d d r ) 0015760 r s h i f t P S ) > > B P T 0016000 . H A S H X * 2 \r \t i f 0016020 ( @ h p & D U M M Y b i t ) 0016040 e q 0 t h e n @ h p = 0016060 @ h p & n o t N O T R E 0016100 F b i t \r \t ] \r \r / / F L 0016120 U S H B u f f e r \r \r \t l e t 0016140 t n = n i l \r \t [ t n 0016160 = F i n d F r e e B u f ( V 0016200 N P G S , A L I G N , 0 ) \r 0016220 \t i 376 001 \0 324 \t f t n n 0016240 e 0 b r e a k \r \t N o 0016260 B u f s P r o c ( ) \r \t ] r 0016300 e p e a t \r \r \t F l u s h B u f 0016320 s ( t n , V N P G S , - 1 ) 0016340 \r \r / / R E A D I N N E 0016360 W P A G E \r \r \t l e t C O R 0016400 E = t n l s h i f t P S 0016420 \r \t t e s t N E W P A G E F L 0016440 A G \r \t i f s o Z e r o ( C 0016460 O R E , V N P G S l s h i f 0016500 t P S ) \r \t i f n o t D 0016520 O P A G E I O ( V P A G E , C 0016540 O R E , V N P G S , f a l s 0016560 e ) \r \r / / R e o r d e r 0016600 b u f f e r s \r \r \t i f ( T S 0016620 A n e 0 ) % 376 001 \0 $ 260 ( 0016640 U s c ( T S A 1 , A g i n g I 0016660 n t e r v a l ) g e 0 ) t 0016700 h e n \r \t [ T S A , T S A 0016720 1 = 0 , 0 \r \t U p d 0016740 a t e C h a i n ( ) \r \t ] \r \t 0016760 A D D T O M A P ( t n , V N P 0017000 G S , V P A G E , ( N E W P 0017020 A G E F L A G % W F L A G ? 0017040 0 , C L E A N b i t ) + W G 0017060 ) \r \r \t C h e c k B P T ( ) \r \r 0017100 \t L a s t T r a p T i m e = 0017120 T i m e r ( t t v ) \r \r ] \r \r a 0017140 n d d e f a u l t N o B u f s 0017160 P r o c ( ) b e \r \t C a l l S 0017200 w a t ( " N o f r e e b u f 0017220 f e r ( s ) " ) \r \r a n d F 376 0017240 001 \0 262 342 l u s h M a p S t a t s 0017260 ( ) = v a l o f \r [ \t i f 0017300 M A P S T A T B A S E e q 0 0017320 r e s u l t i s f a l s e \r 0017340 \t l e t n = M a p S t a t 0017360 P t r - M A P S T A T B A S E \r 0017400 \t M a p S t a t P t r = M A 0017420 P S T A T B A S E \r \t / / I f 0017440 u s i n g t h e R A M , 0017460 M a p S t a t P r o c m u s t 0017500 r e s e t t h e \r \t / / 0017520 R r e g i s t e r i t s e 0017540 l f a n d r e t u r n t h 0017560 e o l d v a l u e \r \t i f 0017600 M a p S t a t P r o c n e 0 0017620 t h e n \r \t [ l e t r 0017640 = M a 376 001 \0 \0 O p S t a t P r 0017660 o c ( M A P S T A T B A S E , 0017700 n ) \r \t u n l e s s S O 0017720 F T M A P F L A G d o n = 0017740 r \r \t ] \r \t r e s u l t i s 0017760 n e q H A S H M A P - M A 0020000 P S T A T B A S E \r ] \r \r a n d 0020020 g e t g r o u p ( i , m a s 0020040 k , d ) = v a l o f \r [ \t 0020060 w h i l e ( ( H A S H M A P + 0020100 ( B p t + i ) > > B P T . H A S 0020120 H X * 2 ) > > H M . F L A G W D 0020140 & m a s k ) n e 0 d o 0020160 \r \t i = i + d \r \t r e 0020200 s u l t i s i \r ] \r \r a n d 0020220 F i n d F r e e B u f ( n b , 0020240 m a s k , w a n 376 001 \0 363 7 t e 0020260 d ) = v a l o f \r [ \t l e t 0020300 t n = @ B p t \r \t l e t 0020320 b l k = v e c B p t S i z 0020340 e \r \t / / b l k ! i e 0020360 q 0 m e a n s p a g e n 0020400 o t r e a c h e d y e t \r \t 0020420 / / b l k ! i g r 0 0020440 m e a n s b u f f e r b l 0020460 k ! i i s f i r s t o f 0020500 a v a i l a b l e b l o c k \r 0020520 \t / / b l k ! i l s 0020540 0 m e a n s b u f f e r i 0020560 b e g i n s a v . b l o c 0020600 k o f l e n g t h - b l k 0020620 ! i \r \t Z e r o ( b l k , B p 0020640 t S i z e ) \r \t w h i l e 376 001 0020660 \0 V 3 t n n e 0 d o \r \t 0020700 [ l e t b t n = n i l \r 0020720 \t i f D o L o c k s ( t 0020740 n l s h i f t P S , 0 , 0020760 f a l s e ) g o t o b o t 1 0021000 \r \t b l k ! t n = - 1 0021020 \r \t b t n = m e r g e 0021040 b l o c k s ( t n , b l k ) \r 0021060 \t i f ( ( - b t n & 0021100 m a s k ) + b l k ! b t n + n b 0021120 l e 0 ) & ( ( H A S H M 0021140 A P + ( B p t + b t n ) > > B P 0021160 T . H A S H X * 2 ) > > H M . N 0021200 F P G e q 0 ) t h e n \r \t 0021220 [ l e t r t n = 0021240 b t n + ( - b t n & m a s k 0021260 ) \r \t 376 001 \0 275 " i f 0021300 ( w a n t e d e q 0 ) % 0021320 ( ( w a n t e d g e r t n 0021340 ) & ( w a n t e d l s b 0021360 t n - b l k ! b t n ) ) r e s 0021400 u l t i s r t n \r \t ] 0021420 \r b o t 1 : \t t n = B 0021440 p t ! t n & N E X T m a s k 0021460 \r \t ] \r \t r e s u l t i s 0 0021500 \r ] \r \r a n d m e r g e b l o 0021520 c k s ( o t n , b l k ) = 0021540 v a l o f \r / / A v a i l a b 0021560 l e b l o c k s a r e o f 0021600 f o u r t y p e s : \r / / 0021620 c l o s e d ( C ) , c o n s 0021640 i s t i n g o f a n i n t 0021660 e g r a l n u 376 001 \0 211 234 m b e 0021700 r o f s i n g l e p a g e 0021720 s a n d c o m p l e t e p 0021740 a g e g r o u p s ; \r / / h 0021760 e a d ( H ) , c o n s i s t 0022000 i n g o n l y o f s o m e 0022020 i n i t i a l p a g e s o 0022040 f a p a g e g r o u p ; \r 0022060 / / t a i l ( T ) , c o n 0022100 s i s t i n g o n l y o f 0022120 s o m e f i n a l p a g e s 0022140 o f a p a g e g r o u p 0022160 ; \r / / i n t e r i o r ( I 0022200 ) , c o n s i s t i n g o n 0022220 l y o f s o m e i n t e r 0022240 i o r p a g e s o f a p 0022260 a g e g r o u p . \r / / 376 001 \0 0022300 S z T h e f o l l o w i n g 0022320 t a b l e s p e c i f i e s 0022340 w h e t h e r a g i v e n 0022360 p a i r o f a d j a c e n 0022400 t b l o c k s \r / / m a 0022420 y b e m e r g e d ( g i v 0022440 e s t h e t y p e o f t 0022460 h e m e r g e d b l o c k ) 0022500 , \r / / m u s t b e l 0022520 e f t s e p a r a t e ( - ) 0022540 , \r / / o r i s i m p 0022560 o s s i b l e ( ? ) : \r / / 0022600 C H I T \r / / C 0022620 C - ? ? \r / / H 0022640 ? ? H C \r / / I 0022660 ? ? I T \r / / T 0022700 376 001 \0 350 216 - - ? 0022720 ? \r / / I t i s e a s y 0022740 t o d i s t i n g u i s h b 0022760 l o c k t y p e s o n t h 0023000 e b a s i s o f \r / / 0023020 t h e g r o u p b i t s i 0023040 n t h e i r f i r s t a n 0023060 d l a s t p a g e s : \r / / 0023100 C h a s ( ~ N F , ~ N L ) 0023120 ; \r / / H h a s ( ~ N F + 0023140 N L , N F + N L ) ; \r / / T 0023160 h a s ( N F + N L , N F + ~ N 0023200 L ) ; \r / / I h a s ( N F 0023220 + N L , N F + N L ) . \r / / W 0023240 h e n w e w a n t t o a 0023260 d d a p a g e t o t h e 0023300 s e t a v 376 001 \0 8 \n a i l a 0023320 b l e a s c a n d i d a t e 0023340 s f o r r e p l a c e m e n 0023360 t , \r / / w e f i r s t 0023400 c o n v e r t i t i n t o 0023420 a o n e - p a g e b l o c 0023440 k o f t h e a p p r o p r 0023460 i a t e t y p e , \r / / 0023500 a n d t h e n d o m e r g 0023520 i n g a c c o r d i n g t o 0023540 t h e t a b l e a b o v e 0023560 . \r / / I n f a c t , i t 0023600 i s e a s i e s t t o d 0023620 e t e c t t h e c a s e s 0023640 w h e r e m e r g i n g i s 0023660 f o r b i d d e n ( T x o 0023700 r x H ) , \r / / 376 001 \0 366 0023720 234 a n d m e r g e i n a l 0023740 l o t h e r c a s e s . \r [ 0023760 \t l e t t n = o t n \r \r [ 0024000 \t l e t b p = b l k + t n 0024020 \r \t i f @ b p e q 0 t h 0024040 e n \r \t [ b p = b l k + 0024060 o t n \r \t r e s u l t i s 0024100 ( @ b p l s 0 ? o t n , 0024120 @ b p ) \r \t ] \r \t l e t t 0024140 n 0 = ( @ b p l s 0 ? 0024160 t n , @ b p ) \r [ \t l e t 0024200 b p 1 = b p + 1 \r \t i f 0024220 @ b p 1 e q 0 g o t o d 0024240 o w n \r \t l e t t p = B p 0024260 t + t n \r \t i f ( H A S H M A 0024300 P 1 ! ( ( B p t + t n 0 ) > > B 0024320 P 376 001 \0 257 210 T . H A S H X * 2 ) 0024340 & N F P G b i t ) n e 0 t 0024360 h e n \r \t i f ( ( H A S H 0024400 M A P 1 ! ( t p > > B P T . H A 0024420 S H X * 2 ) ) & N L P G b i t ) 0024440 e q 0 t h e n \t / / T x 0024460 , c a n ' t m e r g e \r \t 0024500 g o t o d o w n \r \t i f 0024520 ( H A S H M A P 1 ! ( ( t p - 0024540 @ b p 1 ) > > B P T . H A S H X 0024560 * 2 ) & N L P G b i t ) n e 0024600 0 t h e n \r \t i f ( ( H 0024620 A S H M A P 1 ! ( ( t p + 1 ) > 0024640 > B P T . H A S H X * 2 ) ) & N 0024660 F P G b i t ) e q 0 t h e 0024700 n \t / / x H , c a n ' t m 0024720 e r g e \r \t 376 001 \0 " 211 g 0024740 o t o d o w n \r \t / / O K 0024760 t o m e r g e \r \t l e t b p 0025000 0 = b l k + t n 0 \r \t @ b p 0025020 0 = @ b p 0 + @ b p 1 \t / / 0025040 a d d l e n g t h s \r \t l e 0025060 t l e n m 1 = - @ b p 0 - 0025100 1 \r \t b p 0 ! l e n m 1 = t 0025120 n 0 \t / / m a r k t o p \r \t 0025140 o t n = t n 0 + l e n m 1 \t 0025160 / / m o v e t o t o p o 0025200 f b l o c k \r \t t n 0 = o 0025220 t n + 1 \r ] \r d o w n : \t 0025240 t n = t n 0 - 1 \r ] r e p 0025260 e a t \r \r ] \r \r a n d R e m o 0025300 v e B u f s ( t n , N P G S ) 0025320 b e \r / / R e m o 376 001 \0 , 351 0025340 v e t h e a f f e c t e d 0025360 b u f f e r s f r o m t h e 0025400 c h a i n \r [ \t l e t l a s 0025420 t t n = t n + N P G S - 1 \r 0025440 \r \t l e t I , N = 0 , 0025460 N P G S \r \t [ l e t i p 0025500 = B p t + I \r \t I = 0025520 i p > > B P T . N E X T \r \t 0025540 w h i l e ( I g e t n ) 0025560 & ( I l e l a s t t n ) 0025600 d o \r \t [ I = ( 0025620 B p t + I ) > > B P T . N E X T 0025640 \r \t @ i p = ( @ 0025660 i p & n o t N E X T m a s 0025700 k ) + I \r \t N = 0025720 N - 1 \r \t i f N 0025740 376 001 \0 P 355 e q 0 r e t u r n 0025760 \r \t ] \r \t ] r e p e 0026000 a t \r ] \r \r a n d U p d a t e 0026020 C h a i n ( ) b e \r / / R e 0026040 o r d e r t h e c h a i n 0026060 a c c o r d i n g t o u s e 0026100 \r [ \t l e t I = @ B p t \r 0026120 \t @ B p t = 0 \r \t l e t h 0026140 e a d 1 = 0 \r \t l e t c h 0026160 a i n 0 , c h a i n 1 = B 0026200 p t , l v h e a d 1 \r \r \t 0026220 [ \t l e t i p = B p t + I 0026240 \r \t \t l e t H P = H A S H 0026260 M A P 1 + ( @ i p ) < < B P T . 0026300 H A S H X * 2 \r \t \t t e s t ( 0026320 @ H P & N O T R E F b i t ) 0026340 e q 0 376 001 \0 365 264 \r \t \t i f s 0026360 o \t / / R E F E R E N C E D , 0026400 P U T O N c h a i n 1 \r \t 0026420 \t [ @ H P = @ H P + N O 0026440 T R E F b i t \r \t \t @ c h 0026460 a i n 1 = ( @ c h a i n 1 0026500 & n o t N E X T m a s k ) + 0026520 I \t / / O K w h e n c h a 0026540 i n 1 = l v h e a d 1 \r \t 0026560 \t c h a i n 1 = i p \r 0026600 \t \t ] \r \t \t i f n o t \t / / 0026620 N O T R E F E R E N C E D , 0026640 P U T O N c h a i n 0 \r \t \t 0026660 [ @ c h a i n 0 = ( @ c 0026700 h a i n 0 & n o t N E X T 0026720 m a s k ) + I \t / / O K e v 0026740 e n w h e n c h 376 001 \0 245 Q a 0026760 i n 0 = B p t \r \t \t c h a 0027000 i n 0 = i p \r \t \t ] \r \r \t 0027020 \t I = @ i p & N E X T m 0027040 a s k \r \r \t ] r e p e a t u 0027060 n t i l I e q 0 \r \r / / 0027100 L i n k t h e c h a i n s 0027120 . @ B p t = h e a d 0 a l 0027140 r e a d y \r \r \t c h a i n 1 > > 0027160 B P T . N E X T = 0 \r \t c h 0027200 a i n 0 > > B P T . N E X T = 0027220 h e a d 1 \r \t B p t L a s t 0027240 = ( h e a d 1 e q 0 ? c 0027260 h a i n 0 , c h a i n 1 ) - B 0027300 p t \r ] \r \r a n d A D D T O M 0027320 A P ( t n , N P G S , V P , 0027340 n e w b i t s ) b e \r [ A 376 0027360 001 \0 < 310 D M \r / / R E S E T 0027400 T H E P A G E D - O U T E 0027420 N T R Y \r \t i f N P G S g r 0027440 1 t h e n n e w b i t s 0027460 = n e w b i t s + N L P G b i 0027500 t \r \r \t ( B p t + B p t L a s t 0027520 ) > > B P T . N E X T = t n 0027540 \r \t B p t L a s t = t n + N 0027560 P G S - 1 \r \t l e t N = t 0027600 n \r \t w h i l e N l s B p 0027620 t L a s t d o \r \t [ B p t 0027640 ! N = N + 1 \r \t M a k 0027660 e M a p E n t r y ( V P , N , 0027700 n e w b i t s ) \r \t n e 0027720 w b i t s = n e w b i t s 0027740 % N F P G b i t \r \t V P 0027760 = V 376 001 \0 266 375 P + 1 \r \t 0030000 N = N + 1 \r \t ] \r \t B p 0030020 t ! N = 0 \r \t M a k e M a p 0030040 E n t r y ( V P , N , n e w 0030060 b i t s & n o t N L P G b 0030100 i t ) \r ] A D M \r \r a n d M a 0030120 k e M a p E n t r y ( V P , t 0030140 n , b i t s ) b e \r [ \t l e 0030160 t h p = R E H A S H M A P 0030200 ( V P ) \r \t l e t b p = B 0030220 p t + t n \r \t t e s t h p e 0030240 q 0 \r \t i f s o \t / / p a 0030260 g e a l r e a d y i n c o 0030300 r e a s a s i d e e f f 0030320 e c t o f s o m e e x t e 0030340 r n a l c a l l \r \t @ b 0030360 p = ( @ b p 376 001 \0 336 3 & 0030400 N E X T m a s k ) + E M P T 0030420 Y X X \r \t i f n o t \r \t [ 0030440 h p > > H M . N K E Y = n o 0030460 t V P \r \t h p > > H M . 0030500 F L A G W D = ( t n - V P ) 0030520 l s h i f t 8 + b i t s 0030540 \r \t b p > > B P T . H A S 0030560 H X = ( h p - H A S H M A P 0030600 ) r s h i f t 1 \r \t ] \r ] 0030620 \r \r a n d c o r e p a g e ( h 0030640 p ) = \r \t ( h p > > H M . F L 0030660 A G W D + ( n o t h p > > H M 0030700 . N K E Y ) l s h i f t 8 ) 0030720 r s h i f t 8 \r \r a n d D 0030740 e l e t e M a p E n t r y ( h p 0030760 , d o s t a t ) b e \r [ 376 001 0031000 \0 210 231 \t i f h p > > H M . D U 0031020 M M Y n e 0 r e t u r n \r 0031040 \t l e t o l d v p = n o t 0031060 h p > > H M . N K E Y \r \t l e 0031100 t i = c o r e p a g e ( h 0031120 p ) \r \t l e t b p = B p t 0031140 + i \r \t @ b p = ( @ b p & 0031160 N E X T m a s k ) + E M P 0031200 T Y X X \r \t h p > > H M . N K E 0031220 Y = 0 \r \t [ h p = h 0031240 p + R e p r o b e I n c \r \t 0031260 i f ( h p - H A S H M A P T 0031300 O P ) g e 0 t h e n h p 0031320 = h p - H A S H M A P S I Z 0031340 E \r \t l e t k e y = 0031360 n o t h p > > H M . N K E Y \r 0031400 \t 376 001 \0 \t 254 i f k e y 0031420 e q - 1 b r e a k \r \t 0031440 h p > > H M . N K E Y = 0 \r 0031460 \t l e t h p 1 = R E 0031500 H A S H M A P ( k e y ) \r \t 0031520 h p 1 > > H M . N K E Y = 0031540 n o t k e y \r \t i f h 0031560 p 1 n e h p t h e n \r \t 0031600 [ h p 1 > > H M . F L A 0031620 G W D = h p > > H M . F L A 0031640 G W D \r \t ( B p t + 0031660 c o r e p a g e ( h p 1 ) ) > > 0031700 B P T . H A S H X = ( h p 1 0031720 - H A S H M A P ) r s h i f t 0031740 1 \r \t ] \r \t ] r e 0031760 p e a t \r \t i f d o s t a t 0032000 t h e n M a p 376 001 \0 306 > S t a 0032020 t P r o c ( i , - 1 , o l d 0032040 v p ) \r ] \r \r a n d F l u s h 0032060 B u f s ( t n , N , e m p t 0032100 y ) b e \r / / E m p t y = 0 0032120 m e a n s j u s t m a r k 0032140 c l e a n , \r / / \t > 0 m e 0032160 a n s a l s o r e m o v e 0032200 f r o m c h a i n , \r / / \t < 0032220 0 m e a n s m a r k e m p 0032240 t y \r [ \t i f e m p t y t h 0032260 e n R e m o v e B u f s ( t n 0032300 , N ) \r \t l e t l = g e 0032320 t g r o u p ( t n + N - 1 , N 0032340 L P G b i t , 1 ) \r \t t n = 0032360 g e t g r o u p ( t n , N F 0032400 P G b i t , - 1 ) \r 376 001 \0 0032420 275 203 [ \t A n y D i r t y = 0032440 f a l s e \r \t l e t f = 0 0032460 \t / / T N o f f i r s t 0032500 d i r t y b u f f e r i n 0032520 s e q u e n c e , o r 0 \r \t 0032540 l e t k e y = n i l \t / / 0032560 V P o f f i r s t d i r 0032600 t y b u f f e r ( i . e . 0032620 b u f f e r f ) \r \t l e t l 0032640 k e y = n i l \t / / V P 0032660 o f l a s t d i r t y b u 0032700 f f e r \r \t l e t g r o u p t 0032720 n = n i l \t / / T N o f 0032740 f i r s t p a g e o f g 0032760 r o u p \r \t f o r i = t n 0033000 t o l d o \r \t [ \r t r y 0033020 : \t 376 001 \0 220 326 l e t l o 0033040 c k e d = D o L o c k s ( i 0033060 l s h i f t P S , 0 , e 0033100 m p t y ) \r \t i f l o c 0033120 k e d & e m p t y t h e n 0033140 C a l l S w a t ( " C a n ' t 0033160 f l u s h l o c k e d p a 0033200 g e " ) \r \t l e t H P 0033220 = H A S H M A P + ( B p t + i 0033240 ) > > B P T . H A S H X * 2 \r \t 0033260 l e t k = n o t H 0033300 P > > H M . N K E Y \r \t l 0033320 e t f l a g s = H P > > H 0033340 M . F L A G W D \r \t i f 0033360 ( f l a g s & N F P G b i t ) 0033400 e q 0 t h e n g r o u p t 0033420 n = i \t / 376 001 \0 233 220 / R e 0033440 m e m b e r b e g i n n i n g 0033460 o f g r o u p \r \t t e 0033500 s t ( ( f l a g s & C L E A N 0033520 b i t ) e q 0 ) & ( ( f 0033540 e q 0 ) % ( ( k e q 0033560 l k e y + 1 ) & ( ( f l a g 0033600 s & N F P G b i t ) n e 0 ) 0033620 ) ) \r \t i f s o \t / / f 0033640 i r s t d i r t y b u f f e 0033660 r , o r i n s e q u e n c 0033700 e \r \t [ i f f e q 0033720 0 t h e n \t / / f i r s t 0033740 o n e , c h e c k f o r 0033760 a w r i t e g r o u p \r \t 0034000 t e s t ( f l a g 0034020 s & W G R O U P b i t ) 376 001 \0 252 0034040 203 n e 0 \r \t 0034060 i f s o \t / / w r i t e w h 0034100 o l e g r o u p ( b y d i 0034120 r t y i n g t h e r e s t 0034140 o f i t ) \r \t [ 0034160 f = g r o u p t n \r \t 0034200 k e y = k + f 0034220 - i \t / / b u t l k e y = 0034240 k s t i l l \r \t 0034260 f o r j = i + 1 t 0034300 o g e t g r o u p ( i , N L 0034320 P G b i t , 1 ) d o \r \t 0034340 ( H A S H M 0034360 A P + ( B p t + j ) > > B P T . 0034400 H A S H X * 2 ) > > H M . C L E 0034420 A N = 0 \r \t ] 0034440 \r 376 001 \0 A 314 \t i 0034460 f n o t \t / / j u s t t h i 0034500 s p a g e \r \t 0034520 f , k e y = i , k \r \t 0034540 l k e y = k \r \t 0034560 i f n o t l o c 0034600 k e d t h e n H P > > H M . 0034620 F L A G W D = f l a g s + C 0034640 L E A N b i t \r \t ] \r \t 0034660 i f n o t \t / / e n d 0034700 o f s e q u e n c e \r \t 0034720 [ i f f n e 0 t h e 0034740 n \r \t [ f l u s 0034760 h o u t ( k e y , f , i ) \r 0035000 \t f = 0 \r 0035020 \t g o t o t 0035040 r y \r \t 376 001 \0 003 [ 0035060 ] \r \t ] \r \t i f 0035100 e m p t y t h e n D e l e t 0035120 e M a p E n t r y ( H P , ( e 0035140 m p t y l s 0 ? f l a g s 0035160 & C L E A N b i t , f a l s e 0035200 ) ) \r \t ] \r \t i f f n e 0035220 0 t h e n f l u s h o u t ( 0035240 k e y , f , l + 1 ) \r 0035260 ] r e p e a t w h i l e A n 0035300 y D i r t y \r \t C h e c k B P T 0035320 ( ) \r ] \r \r a n d f l u s h o 0035340 u t ( k e y , f , l i m ) 0035360 b e \r [ \t l e t l o c k = 0035400 f l s h i f t P S \r \t L o c 0035420 k C e l l ( l v l o c k ) \t / 0035440 / i n c a s e o 376 001 \0 \ + 0035460 f r e c u r s i v e V M E M 0035500 c a l l \r \t D O P A G E I O ( 0035520 k e y , l o c k , l i m - f 0035540 , t r u e ) \r \t U n l o c k C 0035560 e l l ( l v l o c k ) \r ] \r \r 0035600 a n d L o c k C e l l ( l v L 0035620 o c k , p r o c ; n u m a r 0035640 g s n ) = v a l o f \r [ \t 0035660 i f ( n l s 2 ) % ( p 0035700 r o c e q 0 ) t h e n p 0035720 r o c = L o c k O n l y \r \t 0035740 U n l o c k C e l l ( l v L o c 0035760 k ) \r \t i f L a s t L o c k e 0036000 d C e l l e q E n d L o c k 0036020 e d C e l l s t h e n C a l 0036040 l S w a t ( " L o c k l i s t 0036060 376 001 \0 370 k f u l l " ) \r \t L a 0036100 s t L o c k e d C e l l > > L C 0036120 . a d d r , L a s t L o c k e 0036140 d C e l l > > L C . p r o c = 0036160 l v L o c k , p r o c \r \t L 0036200 a s t L o c k e d C e l l = 0036220 L a s t L o c k e d C e l l + 0036240 L C s i z e \r ] \r \r a n d U 0036260 n l o c k C e l l ( l v L o c k 0036300 ) = v a l o f \r [ \t f o r 0036320 I = L o c k e d C e l l s 0036340 b y L C s i z e t o L a s 0036360 t L o c k e d C e l l - L C s i 0036400 z e d o \r \t i f I > > L 0036420 C . a d d r e q l v L o c k 0036440 t h e n \r \t [ L a s 0036460 t L o c k 376 001 \0 X A e d C e l l 0036500 = L a s t L o c k e d C e l 0036520 l - L C s i z e \r \t 0036540 M o v e B l o c k ( I , L 0036560 a s t L o c k e d C e l l , L 0036600 C s i z e ) \r \t r e 0036620 s u l t i s t r u e \r \t 0036640 ] \r \t r e s u l t i s f a l 0036660 s e \r ] \r \r a n d D o L o c k 0036700 s ( a d d r , n e w p a , f 0036720 l a g ) = v a l o f \r [ \t l 0036740 e t o l d p a = a d d r 0036760 & ( n o t W M ) \r \t l e t 0037000 I = L o c k e d C e l l s \r 0037020 \t L a s t L o c k e d C e l l > 0037040 > L C . a d d r = l v a d 0037060 d r \r \t L a s t L o 376 001 \0 L 255 c 0037100 k e d C e l l > > L C . p r o c 0037120 = d l e x i t \r \t [ i f 0037140 ( @ ( I > > L C . a d d r ) 0037160 & ( n o t W M ) ) e q o 0037200 l d p a t h e n \r \t [ 0037220 l e t a d d r = I > > L 0037240 C . a d d r \t / / i n c a s 0037260 e l o c k p r o c u n l o 0037300 c k s c e l l \r \t 0037320 l e t n e w = ( n e w p a 0037340 e q 0 ? 0 , @ a d d r + 0037360 n e w p a - o l d p a ) \r \t 0037400 u n l e s s ( I > > L 0037420 C . p r o c ) ( a d d r , n e 0037440 w , f l a g ) r e s u l t i 0037460 s t r u e \r \t i 376 0037500 001 \0 \t \b f f l a g t h e n 0037520 @ a d d r = n e w \r \t 0037540 ] \r \t I = I + L C s 0037560 i z e \r \t ] r e p e a t \r d 0037600 l e x i t : \t r e s u l t i s 0037620 f a l s e \r ] \r \r / / a n d 0037640 L o c k O n l y ( a d d r , n 0037660 e w , f l a g ) = f a l s 0037700 e \r \r a n d L o c k R e l o c 0037720 ( a d d r , n e w , f l a g 0037740 ) = n e w n e 0 \r \r / / 0037760 a n d L o c k Z e r o ( a d 0040000 d r , n e w , f l a g ) = 0040020 t r u e \r \r \r / / \r / / C h 0040040 e c k e r f o r B P T \r / / 0040060 \r \r a n d C h e c k B P T ( ) 0040100 b e \r 376 001 \0 310 343 \t c o m p i l 0040120 e i f f a l s e t h e n \t / 0040140 / * * * \r [ \r \t u n l e s s 0040160 C h e c k B P T f l a g r e t 0040200 u r n \r \t f o r h p = H A 0040220 S H M A P b y 2 t o H A 0040240 S H M A P T O P - 2 d o \r \t 0040260 i f h p > > H M . N K E Y n 0040300 e 0 t h e n \r \t i f 0040320 ( B p t + c o r e p a g e ( h p 0040340 ) ) > > B P T . H A S H X * 2 0040360 n e ( h p - H A S H M A P ) 0040400 t h e n \r \t C a l l 0040420 S w a t ( " B P T w r o n g " 0040440 ) \r \t f o r b p = B p t + 0040460 1 t o B p t + # 3 7 7 d o 0040500 \r \t [ l e t 376 \0 } 020 016 h p 0040520 = H A S H M A P + b p > > B 0040540 P T . H A S H X * 2 \r \t i 0040560 f ( h p > > H M . D U M M Y 0040600 e q 0 ) & ( c o r e p a g 0040620 e ( h p ) n e ( b p - B p t 0040640 ) ) t h e n \r \t C 0040660 a l l S w a t ( " B P T w r o 0040700 n g " ) \r \t ] \r ] \r 377 \0 \0 v m 0040720 e m a u x . b c p l \0 376 001 \0 + A 0040740 / / \r / / V M E M A U X - - 0040760 V M E M r o u t i n e s o 0041000 t h e r t h a n p a g e f 0041020 a u l t h a n d l e r \r / / 0041040 l a s t e d i t e d M a r c 0041060 h 1 4 , 1 9 7 7 2 : 5 3 0041100 P M \r / / \r / / C o p y r i 0041120 g h t X e r o x C o r p o r 0041140 a t i o n 1 9 7 9 \r \r \t g e t 0041160 " v m e m . d " \r \r e x t e r 0041200 n a l \t / / e n t r y p r o 0041220 c e d u r e s \r [ \t A d d B u f 0041240 f e r s \t / / ( f i r s t , 0041260 l a s t ) \r \t S n a r f B u f f 0041300 e r \t / / ( a d d r / 0 [ , 0041320 n b u f s , a l i g n ] ) - 0041340 376 001 \0 301 313 > a d d r / 0 \r \t U 0041360 n s n a r f B u f f e r \t / / 0041400 ( a d d r ) \r \t F l u s h B u f 0041420 f e r s \t / / ( ) \r \t I s L o 0041440 c k e d \t / / ( a d d r ) - 0041460 > t r u e / f a l s e \r \t V i 0041500 r t u a l P a g e \t / / ( c o 0041520 r e p a g e ) - > v p \r ] \r 0041540 \r \r e x t e r n a l \t / / p r 0041560 o c e d u r e s \r [ \t \t / / O 0041600 . S . \r \t D e f a u l t A r g s 0041620 \r \t \t / / V M E M \r \t F i n d 0041640 F r e e B u f \r \t F l u s h B u 0041660 f s \r \t F l u s h M a p S t a t 0041700 s \r \t D o L o c k s \r \t \t / / 0041720 u s e r - s u p p l i e d \r \t C 0041740 l e a n u 376 001 \0 205 ] p L o c k s 0041760 \r ] \r \r e x t e r n a l \t / / 0042000 s t a t i c s \r [ \t \t / / V M 0042020 E M \r \t @ H A S H M A P \r \t M a 0042040 p S t a t P r o c \r \t @ B p t ; 0042060 @ B p t L a s t \r \t E M P T Y 0042100 X X \r \t N A X X \r ] \r \r \r l e t 0042120 A d d B u f f e r s ( F I R S 0042140 T , L a s t ) b e \r f o r 0042160 t n = ( F I R S T + W M ) 0042200 r s h i f t P S t o ( L a 0042220 s t - W M ) r s h i f t P S 0042240 d o \r [ \t l e t T P = B 0042260 p t + t n \r \t i f @ T P e q 0042300 N A X X t h e n \t / / b u 0042320 f f e r i s f r e e \r \t [ 0042340 @ T P = E M P 376 001 \0 313 S T 0042360 Y X X + @ B p t \r \t i f 0042400 @ B p t e q 0 t h e n B 0042420 p t L a s t = t n \r \t 0042440 @ B p t = t n \r \t M a 0042460 p S t a t P r o c ( t n , - 2 0042500 ) \r \t ] \r ] \r \r a n d S n a 0042520 r f B u f f e r ( a d d r , n 0042540 , a l i g n ; n u m a r g s 0042560 n a ) = v a l o f \r [ \t D 0042600 e f a u l t A r g s ( l v n a 0042620 , 1 , 1 , 0 ) \r \t i f ( 0042640 a d d r & W M ) n e 0 0042660 r e s u l t i s 0 \r \t C l e a 0042700 n u p L o c k s ( ) \r \t l e t 0042720 t n = F i n d F r e e B u f 0042740 ( n , a l i g n , a d d r 376 0042760 001 \0 312 215 r s h i f t P S ) \r 0043000 \t i f t n e q 0 r e s u 0043020 l t i s 0 \r \t i f a d d r 0043040 n e 0 t h e n t n = a 0043060 d d r r s h i f t P S \r \t F 0043100 l u s h B u f s ( t n , n , 0043120 - 1 ) \r \t f o r i = t n 0043140 t o t n + n - 1 d o \r \t i 0043160 f B p t ! i n e N A X X 0043200 t h e n \r \t [ M a p S t a t 0043220 P r o c ( i , - 3 ) ; B p t 0043240 ! i = N A X X ] \r \t r e s 0043260 u l t i s t n l s h i f t 0043300 P S \r ] \r \r a n d U n s n a r 0043320 f B u f f e r ( a d d r ) b e 0043340 \r [ \t i f ( a d d r & W M 0043360 ) n e 376 \0 367 " e 0 r e t u 0043400 r n \r \t A d d B u f f e r s ( a 0043420 d d r , a d d r + W M ) \r ] \r 0043440 \r a n d F l u s h B u f f e r 0043460 s ( ) b e \r [ \t C l e a n u p 0043500 L o c k s ( ) \r \t F l u s h M a 0043520 p S t a t s ( ) \r \t F l u s h B 0043540 u f s ( 1 , B p t S i z e - 1 0043560 , 0 ) \r ] \r \r a n d I s L o 0043600 c k e d ( a d d r ) = D o L 0043620 o c k s ( a d d r , 0 , f a 0043640 l s e ) \r \r a n d V i r t u a 0043660 l P a g e ( c p a g e ) = \r \t 0043700 n o t ( H A S H M A P + ( B p 0043720 t + c p a g e ) > > B P T . H A 0043740 S H X * 2 ) > > H M . N K E Y \r 0043760 377 \0 \0 v m e m i n i t . b c p l 0044000 \0 376 001 \0 311 8 / / \r / / V M E M 0044020 I N I T - - i n i t i a l i 0044040 z e V M E M \r / / l a s t 0044060 e d i t e d A u g u s t 1 , 0044100 1 9 7 7 1 : 4 8 P M \r / 0044120 / \r / / C o p y r i g h t X 0044140 e r o x C o r p o r a t i o n 0044160 1 9 7 9 \r \r \t g e t " v m e 0044200 m . d " \r \r e x t e r n a l \t / 0044220 / e n t r y p r o c e d u r 0044240 e s \r [ \t I n i t i a l i z e V 0044260 m e m \t / / ( h a s h m a p , 0044300 h a s h m a p s i z e , B p 0044320 t a b , l c l i s t , l l c 0044340 l i s t [ , s t a t b a s e , 0044360 s t a t p r o c , n o b u f 0044400 s p r o c ] 376 001 \0 211 p ) \r ] \r \r 0044420 \r e x t e r n a l \t / / p r o 0044440 c e d u r e s \r [ \t \t / / O . 0044460 S . \r \t D e f a u l t A r g s \r 0044500 \t F a l s e P r e d i c a t e \r 0044520 \t T r u e P r e d i c a t e \r \t 0044540 C a l l S w a t \r \t S e t B l o 0044560 c k ; Z e r o \r \t \t / / V M 0044600 E M \r \t d e f a u l t N o B u f 0044620 s P r o c \r \t L o c k O n l y ; 0044640 L o c k Z e r o \r \t \t / / V 0044660 M E M A \r \t R E H A S H M A P \r 0044700 ] \r \r e x t e r n a l \t / / s 0044720 t a t i c s \r [ \t \t / / V M E 0044740 M \r \t @ H A S H M A P ; @ H A 0044760 S H M A P S I Z E ; @ H A S H 0045000 M A P M A S K \r \t @ H 376 001 \0 317 357 0045020 A S H M A P S I Z E 2 \r \t @ H A 0045040 S H M A P 1 \r \t @ H A S H M A P 0045060 T O P \r \t M A P S T A T B A S E 0045100 \r \t @ M a p S t a t P t r \r \t M 0045120 a p S t a t P r o c \r \t N o B u 0045140 f s P r o c \r \t @ B p t ; @ B 0045160 p t L a s t \r \t E M P T Y X X \r 0045200 \t N A X X \r \t L o c k e d C e l 0045220 l s ; E n d L o c k e d C e l 0045240 l s ; L a s t L o c k e d C e 0045260 l l \r ] \r \r \r l e t I n i t i 0045300 a l i z e V m e m ( H M , H M 0045320 S I Z E , B P T A B , L C L 0045340 , L L C L , M S B A S E , 0045360 M S P R O C , N B P R O C ; 0045400 n u m a r g s n ) b e \r [ \t 0045420 376 001 \0 331 ? D e f a u l t A r g s 0045440 ( l v n , - 5 , 0 , F a 0045460 l s e P r e d i c a t e , d e 0045500 f a u l t N o B u f s P r o c ) 0045520 \r \t i f ( H M S I Z E & ( 0045540 H M S I Z E - 1 ) ) n e 0 0045560 t h e n \r \t C a l l S w a 0045600 t ( " B a d H M A P S I Z E 0045620 - - I n i t i a l i z e V m e 0045640 m " ) \r \t H A S H M A P , H A 0045660 S H M A P S I Z E = H M + ( 0045700 H M & 1 ) , H M S I Z E \r \t H 0045720 A S H M A P M A S K = H A S 0045740 H M A P S I Z E - 2 \r \t H A S H 0045760 M A P S I Z E 2 = H M S I Z 0046000 E r s h i f t 1 \r \t H A S H 0046020 M A P 1 376 001 \0 q 005 = H A S H 0046040 M A P + H M f l a g O f f s e t 0046060 \r \t H A S H M A P T O P = H 0046100 A S H M A P + H A S H M A P S I 0046120 Z E \r \t M A P S T A T B A S E 0046140 = M S B A S E + ( M S B A S E 0046160 & 1 ) \r \t M a p S t a t P t r 0046200 = M A P S T A T B A S E \r \t M 0046220 a p S t a t P r o c = M S P 0046240 R O C \r \t N o B u f s P r o c 0046260 = N B P R O C \r \t B p t , L 0046300 o c k e d C e l l s , E n d L 0046320 o c k e d C e l l s = \r \t 0046340 B P T A B , L C L , L C L + 0046360 ( L L C L & n o t 1 ) - L 0046400 C s i z e \r \t L a s t L o c k e 0046420 d C e l l = L C 376 001 \0 u ^ L 0046440 \r \t Z e r o ( H A S H M A P , 0046460 H A S H M A P S I Z E ) \r \t l e 0046500 t d u m m y p a g e ( v p , 0046520 b i t s ) = v a l o f \r \t 0046540 [ l e t h p = R E H A S 0046560 H M A P ( v p ) \r \t h p > 0046600 > H M . N K E Y = n o t v 0046620 p \r \t h p > > H M . F L A 0046640 G W D = b i t s \r \t r 0046660 e s u l t i s ( h p - H A S H 0046700 M A P ) l s h i f t 7 \r \t 0046720 ] \r \t E M P T Y X X = d u m 0046740 m y p a g e ( E m p t y V P , 0046760 C L E A N b i t + N O T R E F b 0047000 i t + D U M M Y b i t ) \r \t N A 0047020 X X = d u m m y p a g e ( 376 0047040 \0 202 h 313 N a V P , C L E A N b 0047060 i t + N O T R E F b i t + D U M 0047100 M Y b i t ) \r \t S e t B l o c k 0047120 ( B p t , N A X X , B p t S 0047140 i z e ) \r \t @ B p t = 0 \r \t 0047160 L o c k O n l y = F a l s e 0047200 P r e d i c a t e \r \t L o c k Z 0047220 e r o = T r u e P r e d i c 0047240 a t e \r ] \r 377 \0 \0 p r i n t v m 0047260 e m s t a t e . b c p l \0 376 001 \0 0047300 j 226 / / \r / / P r i n t V M 0047320 E M s t a t e \r / / l a s t 0047340 e d i t e d J u n e 1 , 0047360 1 9 7 7 4 : 2 0 P M \r / / 0047400 \r / / C o p y r i g h t X e 0047420 r o x C o r p o r a t i o n 0047440 1 9 7 9 \r \r \t g e t " v m e m 0047460 . d " \r \r e x t e r n a l \t / / 0047500 e n t r y p r o c e d u r e 0047520 s \r [ \t P r i n t V m e m S t a 0047540 t e \t / / ( s t ) \r ] \r \r \r e 0047560 x t e r n a l \t / / p r o c e 0047600 d u r e s u s e d \r [ \t \t / / 0047620 O . S . \r \t P u t s ; W n s 0047640 ; W o s ; W s s \r ] \r \r e x 0047660 t e r n a l \t / / s t a t i c 0047700 s 376 001 \0 \v ) u s e d \r [ \t \t / 0047720 / V M E M \r \t @ B p t \r \t @ H 0047740 A S H M A P \r ] \r \r \r l e t P 0047760 r i n t V m e m S t a t e ( s t 0050000 ) b e \r [ \t \t / / P r i n t 0050020 s t a t e o f m e m o r y 0050040 , b y a d d r e s s \r \t l e 0050060 t n = 0 \r \t f o r i = 0050100 1 t o 3 7 7 b d o \r \t 0050120 [ i f V m e m H p t r ( i ) 0050140 > > H M . N K E Y e q ( n o 0050160 t N a V P ) l o o p \r \t 0050200 i f ( n & 3 ) e q 0 t 0050220 h e n P u t s ( s t , $ * N 0050240 ) \r \t P r i n t V m e m P 0050260 a g e ( s t , i ) \r \t n 0050300 = n + 1 \r 376 001 \0 270 T \t ] \r 0050320 \t W s s ( s t , " * N N u m b 0050340 e r o f p a g e s = " ) 0050360 \r \t W n s ( s t , n , 0 , 0050400 8 ) \r \t P u t s ( s t , $ * N 0050420 ) \r \t \t / / P r i n t B P T 0050440 c h a i n \r \t l e t n , t 0050460 n = 0 , @ B p t \r \t w h i 0050500 l e ( t n n e 0 ) & ( 0050520 n n e 4 0 0 b ) d o \r \t 0050540 [ i f ( n & 3 ) e q 0 0050560 t h e n P u t s ( s t , $ * 0050600 N ) \r \t P r i n t V m e m 0050620 P a g e ( s t , t n ) \r \t 0050640 t n = ( B p t + t n ) > > 0050660 B P T . N E X T \r \t n = 0050700 n + 1 \r \t ] \r \t P u 376 001 \0 020 0050720 333 t s ( s t , $ * N ) \r ] \r \r 0050740 a n d P r i n t V m e m P a g 0050760 e ( s t , i ) b e \r [ \t W n 0051000 s ( s t , i , 4 , 8 ) \r \t 0051020 l e t h p = V m e m H p t 0051040 r ( i ) \r \t P u t s ( s t , $ 0051060 * S ) \r \t W o s ( s t , n o t 0051100 h p > > H M . N K E Y ) \r \t P 0051120 u t s ( s t , $ * S ) \r \t P u 0051140 t s ( s t , s e l e c t o n 0051160 h p > > H M . F L A G W D & G R 0051200 O U P b i t s i n t o \r \t [ 0051220 c a s e N F P G b i t : $ 0051240 L \r \t c a s e N L P G b 0051260 i t : $ F \r \t c a s e 0051300 N F P G b i t + N L P G b i t : 0051320 376 \0 331 x < $ I \r \t d e f 0051340 a u l t : $ * S \r \t ] ) \r \t 0051360 P u t s ( s t , ( h p > > H M 0051400 . D U M M Y ? $ X , $ * S ) 0051420 ) \r \t P u t s ( s t , ( h p > 0051440 > H M . N O T R E F ? $ * S , 0051460 $ R ) ) \r \t P u t s ( s t , 0051500 ( h p > > H M . C L E A N ? $ 0051520 * S , $ D ) ) \r \t P u t s ( s 0051540 t , ( h p > > H M . W G R O U 0051560 P ? $ W , $ * S ) ) \r ] \r \r 0051600 a n d V m e m H p t r ( i ) 0051620 = H A S H M A P + ( B p t + i 0051640 ) > > B P T . H A S H X * 2 \r 377 0051660 \0 \0 v m e m a . a s m \0 376 001 \0 353 0051700 220 ; V M E M A . A S M - 0051720 a c t u a l m a p p i n g 0051740 d o n e i n m i c r o c o d 0051760 e \r ; l a s t m o d i f 0052000 i e d J u n e 1 4 , 1 9 7 0052020 6 2 : 3 6 P M \r ; \r ; C 0052040 o p y r i g h t X e r o x C 0052060 o r p o r a t i o n 1 9 7 9 \r 0052100 \t . E X T N \t M A P T R A P , S 0052120 O F T M A P F L A G \r ; \r \t . E 0052140 N T \t R E H A S H M A P \r \t . E 0052160 N T \t V R R , V W R , V R R 1 , 0052200 V W R 1 , V R R 2 , V W R 2 , V 0052220 R R P , V W R P \r \t . E N T \t D 0052240 O U B L E A D D 1 \r \t . E N T \t 0052260 R D R E F 0 , R D R E F 1 , W T 0052300 R 376 001 \0 202 362 E F 0 \t ; i n s t 0052320 r u c t i o n s t o o v e r 0052340 w r i t e \r \t . E N T \t V m e m 0052360 R a m \r ; \r \t . D U S R \t R D R 0052400 E F = 7 4 4 0 0 \r \t . D U S 0052420 R \t W T R E F = 7 5 0 0 0 \r 0052440 \t . D U S R \t S W A T = 7 7 0052460 4 0 0 \r ; \r \t g e t f r a m e 0052500 = 3 7 0 \r \t r e t u r n = 0052520 3 6 6 \r ; \r \t . Z R E L \r V R R 0052540 : \t V R R X \r V W R : \t V W R X 0052560 \r V R R 1 : \t V R R 1 X \r V W R 0052600 1 : \t V W R 1 X \r V R R 2 : \t V 0052620 R R 2 X \r V W R 2 : \t V W R 2 X 0052640 \r V R R P : \t V R R P X \r V W R 0052660 P : \t V W R P X \r ; \r D O U B L 0052700 E A D D 1 : 376 001 \0 204 r D B L X \r 0052720 ; \r \t . S R E L \r R E H A S H M 0052740 A P : R E M A P \r R D R E F 0 : 0052760 \t D O A R 1 \r R D R E F 1 : \t D 0053000 O R M 1 \r W T R E F 0 : \t D O A 0053020 W 1 \r V m e m R a m : V M R \r 0053040 ; \r \t . N R E L \r ; \r ; R O 0053060 U T I N E S T O D O S O F 0053100 T W A R E M A P P I N G \r ; 0053120 I F T H E R E I S A F 0053140 A U L T , A B C P L R O U 0053160 T I N E ' M A P T R A P ' I 0053200 S C A L L E D \r ; I F T 0053220 H E R E I S N O F A U L T 0053240 , N O B C P L S T A C K 0053260 S P A C E I S U S E D \r ; \r 0053300 M A P T R : \t 0 \t ; 376 001 \0 310 307 0053320 s a v e h a s h m a p p t r 0053340 \r M P T R P : \t M A P T R A P \r 0053360 ; \r V R R X : \t S T A \t 3 , 1 , 0053400 2 \r \t M O V \t 0 , 3 \r \t L D A \t 0053420 0 , 0 , 3 \r \t L D A \t 1 , 1 , 3 0053440 \r \t J M P \t D O A R 1 \r ; \r V R 0053460 R P X : \t L D A \t 1 , R M S K \r 0053500 \t A N D \t 0 , 1 \r \t S U B S \t 1 0053520 , 0 \r \t M O V S \t 1 , 1 \r \t J M 0053540 P \t V R R 2 X \r V R R 1 X : \t M 0053560 O V \t 0 , 1 \r \t S U B \t 0 , 0 \r 0053600 V R R 2 X : \t S T A \t 3 , 1 , 2 0053620 \t ; S A V E R E T U R N \r D O 0053640 A R 1 : \t R D R E F \t \t ; m i c 0053660 r o c o d e i n s t r u c t i 0053700 o n \r \t J M P \t N O T I N R D \t 0053720 376 001 \0 330 A ; M I S S I N G P A 0053740 G E O N R E A D \r \t M O V \t 0053760 3 , 0 \r \t L D A \t 3 , 1 , 2 \r \t 0054000 J M P \t 1 , 3 \t ; R E T U R N 0054020 W I T H C O R E A D D R . 0054040 I N A C 0 \r N O T I N R D : S 0054060 T A \t 3 , M A P T R \r \t L D A \t 0054100 3 , R M S K \r \t A N D \t 3 , 0 \r 0054120 \t J S R \t @ g e t f r a m e \r \t 0054140 7 \r \t S W A T \r \t S U B \t 1 0054160 , 1 \t ; R E A D R E F \r M T R 0054200 A P : \t S T A \t 1 , 6 , 2 \r \t L 0054220 D A \t 0 , 5 , 2 \r \t L D A \t 3 , 0054240 L M S K \r \t A N D \t 0 , 3 \r \t L 0054260 D A \t 0 , 4 , 2 \r \t A D D S \t 3 0054300 , 0 \t ; f o r m h a s h k 0054320 e y \r \t L 376 001 \0 t 350 D A \t 3 , M 0054340 A P T R \r \t S T A \t 3 , 3 , 2 \r 0054360 \t J S R I I \t M P T R P \r \t 3 \r 0054400 \t L D A \t 0 , 4 , 2 \r \t L D A \t 0054420 1 , 5 , 2 \r \t L D A \t 3 , 6 , 2 0054440 \r \t L D A \t 2 , 0 , 2 \t ; g e 0054460 t r i d o f f r a m e \r \t 0054500 M O V \t 3 , 3 , S Z R \r \t J M P 0054520 \t D O A W 1 \r \t J M P \t D O A R 0054540 1 \r ; \r V W R X : \t S T A \t 3 , 0054560 1 , 2 \r \t M O V \t 0 , 3 \r \t L D 0054600 A \t 0 , 0 , 3 \r \t L D A \t 1 , 1 0054620 , 3 \r \t J M P \t D O A W 1 \r ; \r 0054640 V W R P X : \t L D A \t 1 , R M S 0054660 K \r \t A N D \t 0 , 1 \r \t S U B S 0054700 \t 1 , 0 \r \t M O V S \t 1 , 1 \r \t 0054720 J M P \t V W R 2 X \r 376 001 \0 \v m V 0054740 W R 1 X : \t M O V \t 0 , 1 \r \t S 0054760 U B \t 0 , 0 \r V W R 2 X : \t S T 0055000 A \t 3 , 1 , 2 \r D O A W 1 : \t W 0055020 T R E F \t \t ; m i c r o c o d e 0055040 i n s t r u c t i o n \r \t J M 0055060 P \t W F A U L T \t ; N O T I N 0055100 O R N O T D I R T Y \r \t M 0055120 O V \t 3 , 0 \r \t L D A \t 3 , 1 , 0055140 2 \r \t J M P \t 1 , 3 \r W F A U L 0055160 T : \t S T A \t 3 , M A P T R \r \t 0055200 L D A \t 3 , R M S K \r \t A N D \t 0055220 3 , 0 \r \t J S R \t @ g e t f r a 0055240 m e \r \t 7 \r \t S W A T \r \t A 0055260 D C \t 1 , 1 \t ; W R I T E R E 0055300 F \r \t J M P \t M T R A P \r ; \r L 0055320 M S K : \t 1 7 7 4 0 0 \r R M S 376 0055340 001 \0 236 b K : \t 3 7 7 \r ; \r ; C 0055360 O M P U T E H A S H I N D E 0055400 X F O R N E W P A G E W 0055420 H E N \r ; R E C O N S T R U C 0055440 T I N G H A S H T A B L E 0055460 A F T E R P A G E F A U L T 0055500 \r ; \r R E M A P : \t S T A \t 3 , 0055520 1 , 2 \r \t L D A \t 1 , R M S K \r 0055540 \t A N D S \t 0 , 1 \r \t L D A \t 3 0055560 , L M S K \r \t A N D S \t 3 , 0 \r 0055600 D O R M 1 : \t R D R E F \t \t \t ; 0055620 A C 0 , A C 1 H A S V I R T 0055640 U A L A D D R \r \t M O V \t 3 , 0055660 0 , S K P \t ; N O S K I P , 0055700 H A S H M A P P T R I N 0055720 A C 3 \r \t S U B \t 0 , 0 \t ; S 0055740 K I P , 376 001 \0 , u E N T R Y 0055760 A L R E A D Y P R E S E N T \r 0056000 \t L D A \t 3 , 1 , 2 \r \t J M P \t 0056020 1 , 3 \t \t ; R E T U R N S P O 0056040 I N T E R T O E M P T Y E 0056060 N T R Y \r ; \r ; I N C R E M E 0056100 N T 3 2 - B I T C O U N T E 0056120 R A D D R E S S E D B Y A 0056140 C 0 \r ; \r D B L X : \t S T A \t 3 0056160 , 1 , 2 \r \t M O V \t 0 , 3 \r \t I 0056200 S Z \t 1 , 3 \r \t J M P \t . + 3 \r 0056220 \t I S Z \t 0 , 3 \r \t J M P \t . + 0056240 1 \r \t L D A \t 3 , 1 , 2 \r \t J M 0056260 P \t 1 , 3 \r ; \r ; S e t u p 0056300 R A M a c c e s s i n s t 0056320 r u c t i o n s \r V M R : \t L D 0056340 A \t 0 , R D R X \r 376 \0 204 305 247 \t S 0056360 T A \t 0 , D O A R 1 \r \t S T A \t 0056400 0 , D O R M 1 \r \t L D A \t 0 , W 0056420 T R X \r \t S T A \t 0 , D O A W 1 0056440 \r \t S U B \t 0 , 0 \r \t S T A \t 0 0056460 , @ S M F \r \t J M P \t 1 , 3 \r ; 0056500 \r R D R X : \t R D R E F \r W T R 0056520 X : \t W T R E F \r S M F : \t S O 0056540 F T M A P F L A G \r ; \r \t . E N 0056560 D \r 377 \0 \0 v m e m s o f t . a s 0056600 m \0 376 001 \0 360 t ; V M E M S O 0056620 F T . A S M - s o f t w a r 0056640 e r e p l a c e m e n t f o 0056660 r m a p m i c r o c o d e \r 0056700 ; l a s t m o d i f i e d 0056720 D e c e m b e r 1 6 , 1 9 0056740 7 6 1 : 3 3 P M \r ; \r ; 0056760 C o p y r i g h t X e r o x 0057000 C o r p o r a t i o n 1 9 7 9 0057020 \r \t . E X T D \t H A S H M A P , 0057040 H A S H M A P M A S K , M a p S 0057060 t a t P t r , R e p r o b e I n 0057100 c \r \t . E X T N \t S O F T M A P 0057120 F L A G \r \t . E X T N \t R D R E 0057140 F 0 , R D R E F 1 , W T R E F 0 0057160 \r ; \r \t . E N T \t V m e m S o f 0057200 t \r \t . E N T 376 001 \0 z 313 \t N P R 0057220 O B E \r ; \r \t . S R E L \r V m e 0057240 m S o f t : V M S \r N P R O B 0057260 E : \t N P R B \r ; \r \t . N R E L 0057300 \r ; \r V M S : \t S T A \t 3 , 1 , 0057320 2 \r \t A D C \t 0 , 0 \r \t S T A \t 0057340 0 , @ S O F T M F \r ; O v e r 0057360 w r i t e m i c r o c o d e 0057400 c a l l s w i t h J S R ' s 0057420 t o s o f t w a r e r o u 0057440 t i n e s \r \t L D A \t 0 , J R R 0057460 S \r \t L D A \t 3 , @ R R 0 \r \t S 0057500 T A \t 0 , 0 , 3 \r \t L D A \t 3 , 0057520 @ R R 1 \r \t S T A \t 0 , 0 , 3 \r 0057540 \t L D A \t 0 , J W R S \r \t L D A 0057560 \t 3 , @ W R 0 \r \t S T A \t 0 , 0 0057600 , 3 \r \t L D A \t 3 , 1 , 376 001 \0 205 0057620 001 2 \r \t J M P \t 1 , 3 \r ; \r S O 0057640 F T M F : \t S O F T M A P F L A 0057660 G \r J R R S : \t J S R \t @ R D R 0057700 E F S \r J W R S : \t J S R \t @ W 0057720 T R E F S \r R R 0 : \t R D R E F 0057740 0 \r R R 1 : \t R D R E F 1 \r W R 0057760 0 : \t W T R E F 0 \r ; \r ; M 0060000 A P P I N G S U B R O U T I N 0060020 E \r ; C A L L W I T H A 0060040 C 0 - 1 = V . A . , A C 3 = B 0060060 I T S T O C L E A R I N 0060100 M A P E N T R Y \r ; R E T 0060120 U R N S A C 3 = C O R E A D 0060140 D R E S S O R M A P P T R 0060160 \r ; \r \t . Z R E L \r R D R E F S 0060200 : \t R D R E F X \r W T R E F S : 0060220 \t 376 001 \0 260 031 W T R E F X \r ; \r \t 0060240 . N R E L \r R E F E D : \t 4 \t ; 0060260 R E F E R E N C E D \r R E F D Y 0060300 : \t 6 \t ; R E F E R E N C E D + 0060320 D I R T Y \r M A P R E T : \t 0 \r 0060340 V A 0 : \t 0 \t ; U P P E R V . 0060360 A . \r V A 1 : \t 0 \t ; L O W E R 0060400 V . A . \r B I T S : \t 0 \r L M 0060420 S K : \t 1 7 7 4 0 0 \r M A M S K 0060440 : \t 1 7 7 6 0 0 \r C A H I : \t 3 0060460 7 6 \t ; A C 0 F O R V . A . 0060500 S T H A T G O D I R E C T 0060520 L Y T O C O R E \r N P R B : 0060540 \t 0 \t ; R E P R O B E C O U 0060560 N T \r \t 0 \r ; \r W T R E F X : \t 0060600 I N C \t 3 , 3 \r \t S T A \t 3 , M 0060620 A P R E T \r 376 001 \0 204 [ \t L D A \t 0060640 3 , R E F D Y \r \t J M P \t R E F 0060660 X \r R D R E F X : \t I N C \t 3 , 0060700 3 \r \t S T A \t 3 , M A P R E T \r 0060720 \t L D A \t 3 , R E F E D \r R E F 0060740 X : \t S T A \t 3 , B I T S \r \t S 0060760 T A \t 0 , V A 0 \r \t S T A \t 1 , 0061000 V A 1 \r \t L D A \t 3 , L M S K \t 0061020 ; L E F T H A L F M A S K \r 0061040 \t A N D \t 3 , 1 \r \t A D D \t 1 , 0061060 0 \t ; P A G E N O . S W A P 0061100 P E D I N A C 0 \r \t C O M S 0061120 \t 0 , 1 \t ; K E Y I N A C 0061140 1 \r \t S U B \t 1 , 0 \r R E T R Y 0061160 : \t L D A \t 3 , H A S H M A P M 0061200 A S K \r \t A N D \t 3 , 0 \t ; H A 0061220 S H I N D E X \r \t L 376 001 \0 ^ \a 0061240 D A \t 3 , H A S H M A P \r \t A D 0061260 D \t 0 , 3 \r \t L D A \t 0 , 0 , 3 0061300 \t ; H A S H K E Y \r \t S U B # 0061320 \t 0 , 1 , S Z R \r \t J M P \t 0061340 P R O B E \t ; N O M A T C H \r 0061360 \t L D A \t 0 , 1 , 3 \t ; E N T R 0061400 Y \r \t L D A \t 1 , B I T S \r \t A 0061420 N D Z R \t 0 , 1 , S Z R \t ; T E 0061440 S T B I T S \r \t J M P \t B 0061460 I T S E T \r I N C O R E : \t L D 0061500 A \t 3 , M A M S K \r \t A N D \t 0 0061520 , 3 \t ; M A S K O F F B I T 0061540 S \r \t L D A \t 1 , V A 1 \r \t A D 0061560 D \t 1 , 3 \r S K R E T : \t L D A 0061600 \t 0 , M a p S t a t P t r \r \t M 0061620 O V # \t 0 , 0 , S Z R \r \t J 0061640 376 001 \0 275 356 M P \t S K R E T 1 \r \t 0061660 L D A \t 0 , V A 0 \r \t J M P \t @ 0061700 M A P R E T \r S K R E T 1 : \t L 0061720 D A \t 1 , H A S H M A P \r \t S U 0061740 B # \t 1 , 0 , S N R \r \t J M 0061760 P \t N O M A P 1 \r \t L D A \t 0 , 0062000 V A 0 \r \t S T A \t 0 , @ M a p S 0062020 t a t P t r \r \t I S Z \t M a p S 0062040 t a t P t r \r \t L D A \t 1 , V A 0062060 1 \r \t S T A \t 1 , @ M a p S t a 0062100 t P t r \r \t I S Z \t M a p S t a 0062120 t P t r \r \t J M P \t @ M A P R E 0062140 T \r ; S O M E B I T S S 0062160 E T , C H E C K F O R S T 0062200 O R E T O C L E A N P A G 0062220 E \r B I T S E T : \t M O V R # \t 0062240 1 , 1 , S 376 001 \0 234 ? Z C \r \t 0062260 J M P \t N O M A P \r \t M O V Z L 0062300 \t 1 , 1 \r \t S U B \t 1 , 0 \t ; C 0062320 L E A R B I T S \r \t S T A \t 0 0062340 , 1 , 3 \r \t J M P \t I N C O R E 0062360 \r ; P R O B E F A I L E D 0062400 \r P R O B E : \t M O V # \t 0 , 0 0062420 , S N R \t ; E M P T Y S L O T 0062440 ? \r \t J M P \t E M P T Y \t ; 0062460 Y E S , R E T U R N N O S K 0062500 I P \r \t I S Z \t N P R B + 1 \t ; 0062520 L O G T H E R E P R O B E \r 0062540 \t J M P \t . + 3 \r \t I S Z \t 0062560 N P R B \r \t J M P \t . + 1 \r 0062600 \t L D A \t 0 , H A S H M A P \r \t 0062620 S U B \t 0 , 3 \t ; R E C O N S 0062640 T R U C T P R O B 376 001 \0 346 \0 E 0062660 I N D E X \r \t L D A \t 0 , R e 0062700 p r o b e I n c \r \t A D D \t 3 , 0062720 0 \r \t J M P \t R E T R Y \r ; 0062740 L O O K U P F A I L E D , T 0062760 E S T F O R C O R E A D D 0063000 R E S S \r E M P T Y : \t L D A \t 0063020 0 , V A 0 \r \t L D A \t 1 , C A H 0063040 I \r \t S U B # \t 0 , 1 , S Z R \r 0063060 \t J M P \t N O M A P \r \t L D 0063100 A \t 1 , V A 1 \r \t M O V \t 1 , 3 0063120 \r \t J M P \t S K R E T \r ; M 0063140 A P F A U L T \r N O M A P 1 : 0063160 \t A D C Z L \t 3 , 3 \r \t A D D \t 0063200 1 , 3 \t ; S t a t i s t i c s 0063220 o v e r f l o w \r N O M A P : 0063240 \t L D A \t 0 , V A 0 \r \t L D A 376 0063260 \0 / 4 264 \t 1 , V A 1 \r \t D S Z \t 0063300 M A P R E T \r \t J M P \t @ M A P 0063320 R E T \r ; \r \t . E N D 032 ( 2 2 5 0063340 8 ) \r 377 \0 \0 v m e m . u s e \0 376 0063360 001 \0 v 030 e x t e r n a l \t / / 0063400 e n t r i e s f o r V M E M 0063420 \r [ \t C l e a n u p L o c k s \r 0063440 \t P a g e T y p e \r \t P a g e G 0063460 r o u p S i z e \r \t P a g e G r 0063500 o u p B a s e \r \t P a g e G r o 0063520 u p A l i g n \r \t D O P A G E I 0063540 O \r ] \r \r e x t e r n a l \t / / 0063560 l i n k s t o I S F \r [ \t 0063600 I n i t F m a p \r \t I n d e x e 0063620 d P a g e I O \r ] \r \r s t a t i 0063640 c \r [ \t M y F m a p \t / / p o 0063660 i n t e r t o w o r k a r 0063700 e a f o r I S F \r ] \r \r \r / 0063720 / T o i n i t i a l i z e 0063740 I S F , s e t M y F m a p 0063760 t o p 376 001 \0 207 n o i n t t o 0064000 a w o r k a r e a \r / / 0064020 o f s i z e M y F m a p L e 0064040 n g t h , a n d t h e n c 0064060 a l l \r / / \t I n i t F m a p ( 0064100 M y F m a p , M y F m a p L e 0064120 n g t h , F i l e P t r , t 0064140 r u e ) \r / / w h e r e F i 0064160 l e P t r i s a F P ( s 0064200 e e t h e O . S . m a n u 0064220 a l ) \r / / f o r t h e p 0064240 a g i n g f i l e . A r 0064260 e a s o n a b l e v a l u e 0064300 f o r \r / / M y F m a p L e n 0064320 g t h i s 8 0 - - s e e 0064340 t h e I S F w r i t e u p 0064360 . \r \r \r l e t C 376 \0 334 356 370 l e 0064400 a n u p L o c k s ( ) b e [ 0064420 ] \r \r l e t P a g e T y p e 0064440 ( v p ) = 1 \r \r l e t P a 0064460 g e G r o u p S i z e ( v p ) 0064500 = 1 \r l e t P a g e G r o u 0064520 p B a s e ( v p ) = v p \r l 0064540 e t P a g e G r o u p A l i g 0064560 n ( v p ) = 0 \r \r l e t D 0064600 O P A G E I O ( v p , c o r e 0064620 , n p , w f l a g ) b e \r 0064640 [ \t I n d e x e d P a g e I O ( 0064660 M y F m a p , v p + 2 , c o 0064700 r e , n p , ( w f l a g ? 0064720 - 1 , 1 ) ) \r ] \r 377 \0 \0 v m e 0064740 m . m u \0 376 001 \0 a + ; \r ; V 0064760 M E M . M U - - m i c r o c 0065000 o d e f o r V M E M p a c 0065020 k a g e \r ; l a s t m o d 0065040 i f i e d O c t o b e r 1 3 0065060 , 1 9 7 7 5 : 5 5 P M \r 0065100 ; \r ; R r e g i s t e r s 0065120 r e q u i r e d \r ; \r ; $ m a p 0065140 b a s e $ R x x ; \t b a s e 0065160 o f h a s h m a p , m u s 0065200 t b e e v e n \r ; $ m a p s 0065220 p t r $ R x x ; \t m a p s t 0065240 a t i s t i c s p o i n t e r 0065260 ( u p t o m a p b a s e ) 0065300 , o r 0 \r ; $ m a p m a s k 0065320 1 $ R x x ; \t h a s h t a b 0065340 l e s i z e - 2 376 001 \0 , 202 0065360 ( e . g . 3 7 6 , 7 7 6 ) \r 0065400 ; C o p y r i g h t X e r o 0065420 x C o r p o r a t i o n 1 9 0065440 7 9 \r $ m m x \t $ R 5 ; \t = S A 0065460 D , t e m p f o r m a s k 0065500 b i t s \r $ k e y \t $ R 7 ; \t 0065520 = X R E G , t e m p f o r 0065540 h a s h k e y ( v i r t u a 0065560 l p a g e # ) \r $ m r x \t $ 0065600 R 1 0 ; \t = X H , m i s c e l 0065620 l a n e o u s t e m p \r ; \r ; 0065640 O t h e r r e q u i r e m e 0065660 n t s \r ; \r ; $ M \t $ R 4 0 ; \t 0065700 t h e n e w L r e g i s t 0065720 e r \r ; ! 1 , 2 0 , S T A R T ; 0065740 \t R O M e n t r y t o N 376 0065760 001 \0 \0 f o v a e m u l a t o r 0066000 \r ; \r \r \r ; C o n s t a n t 0066020 s \r ; \r $ r e a d r e f \t $ 4 ; 0066040 \r $ w r i t e r e f \t $ 6 ; \r $ 0066060 n o t r e f b i t \t $ 4 ; \r $ r 0066100 e p r o b i n c \t $ 3 0 ; \t u s 0066120 e w i t h r e p r o b i n c 0066140 + 1 + 1 \r $ m a m a s k \t \t 0066160 $ 1 7 7 4 0 0 ; \t a d d r e s s 0066200 p a r t o f m a p e n t 0066220 r y \r \r ; P r e d e f i n i 0066240 t i o n s f o r l a b e l s 0066260 \r ; \r ! 1 , 2 , n e m p t y , e 0066300 m p t y ; \t f o r d i s p a t 0066320 c h o n e m p t y e n t r 0066340 y \r ! 1 , 1 , e m p t y 1 ; \r ! 0066360 1 , 2 , 376 001 \0 b - n o m a t c h 0066400 , m a t c h ; \t f o r d i s p 0066420 a t c h o n m a t c h w i 0066440 t h k e y \r ! 1 , 2 , n m a s 0066460 k o k , m a s k o k ; \t f o r 0066500 d i s p a t c h o n r e f / 0066520 d i r t y b i t s \r ! 1 , 2 , 0066540 n c l e a n , c l e a n ; \t f o 0066560 r d i s p a t c h o n w r 0066600 i t e r e f . t o c l e a 0066620 n p a g e \r ! 1 , 2 , n o s k 0066640 i p , c o r e a d d r ; \t t e s 0066660 t i n g f o r c o r e a d 0066700 d r e s s \r ! 1 , 2 , d o s t a 0066720 t , n o s t a t ; \t t e s t i n 0066740 g m a p s p t r = 0 \r ! 1 , 2 0066760 , n f u l l , f u 376 001 \0 m . l l 0067000 ; \t \t t e s t i n g m a p s p 0067020 t r = m a p b a s e \r \r \r ; 0067040 r e a d / w r i t e m a p p i 0067060 n g - v . a . i s i n 0067100 A C 0 , A C 1 \r r r e f : \t L 0067120 _ r e a d r e f , T A S K , 0067140 : d o m a p ; \t m a s k f o r 0067160 r e a d i n g \r w r e f : \t L 0067200 _ w r i t e r e f , T A S K , 0067220 : d o m a p ; \t m a s k f o 0067240 r w r i t i n g \r d o m a p : 0067260 \t m m x _ L ; \r \r ; \r ; 0067300 f o r m h a s h k e y f r 0067320 o m A C 0 ( 8 - 1 5 ) a n 0067340 d A C 1 ( 0 - 7 ) \r ; \r \t T 0067360 _ 1 7 7 4 0 0 ; \r \t T _ A C 376 001 0067400 \0 \ | 1 . T ; \r \t L _ T _ A C 0 0067420 O R T ; \r \t k e y _ L L C 0067440 Y 8 ; \t \t s t a s h k e y \r 0067460 ; f o r m i n i t i a l 0067500 p r o b e \r \t T _ k e y + T + 1 0067520 ; \t + 1 i s n o i s e \r p r 0067540 o b e : \t L _ m a p m a s k 1 0067560 . T , T A S K ; \r \t m r x _ 0067600 L ; \t \t s a v e i n i t i a 0067620 l p r o b e f o r T A S K 0067640 \r \r \t T _ m r x ; \r \t L _ 0067660 M A R _ m a p b a s e + T 0067700 ; \r \t A C 3 _ L ; \r \t T _ k 0067720 e y ; \r \t L _ M D + T + 1 , B 0067740 U S = 0 ; \t c a t c h m e m o 0067760 r y d a t a , t e s t f o r 0070000 e m 376 001 \0 u \b p t y \r \t S H = 0070020 0 , T _ M D , : n e m p t y 0070040 ; \t c a t c h s e c o n d w 0070060 o r d o f d a t a \r \t \t \t \t 0070100 ; d i s p a t c h o n e m p 0070120 t y , t e s t f o r m a t c 0070140 h \r ; t e s t f o r m a 0070160 t c h h a n g i n g \r n e m p 0070200 t y : \t L _ m m x A N D 0070220 T , : n o m a t c h ; \t d i s 0070240 p a t c h o n m a t c h , 0070260 t e s t f o r r / w \r e m p 0070300 t y : \t T _ 3 7 7 - 1 , 0070320 : e m p t y 1 ; \t o v e r r i 0070340 d e m a t c h d i s p a t c 0070360 h \r e m p t y 1 : \t L _ A C 0070400 0 X O R T ; 376 001 \0 5 212 \r \t S 0070420 H = 0 , L _ A C 1 ; \r \t 0070440 : n o s k i p ; \t t e s t f 0070460 o r c o r e a d d r \r c o r 0070500 e a d d r : A C 3 _ L , 0070520 : m s t a t s ; \r ; t e s t 0070540 i n g f o r m a s k e d b 0070560 i t s \r m a t c h : \t m r x _ 0070600 L R S H 1 , L _ T , 0070620 S H = 0 ; \t s a v e m a s k 0070640 e d b i t s \r \t T _ m a m 0070660 a s k . T , : n m a s k o k ; 0070700 \t d i s p a t c h o n b i t 0070720 s s e t o r n o t \r n o m 0070740 a t c h : T _ r e p r o b i 0070760 n c + 1 ; \t a d d i n t 0071000 h e f i r s t 1 \r \t T 376 001 \0 0071020 7 m _ m r x + T + 1 , : p r 0071040 o b e ; \t a d d i n t h e 0071060 o t h e r 1 \r n m a s k o k : 0071100 T _ m r x , B U S O D D , 0071120 T A S K ; \t L h a s 2 n d 0071140 w o r d f r o m h a s h 0071160 m a p \r \t m r x _ L , : 0071200 n c l e a n ; \t t e s t f o r 0071220 w r i t e t o c l e a n 0071240 p a g e \r \r m a s k o k : \t L _ 0071260 A C 1 + T , T A S K ; \r \t A 0071300 C 3 _ L , : m s t a t s ; \r 0071320 \r n c l e a n : \t M A R _ A C 0071340 3 + 1 ; \t \t g o i n g t o s 0071360 e t r e f b i t t o z e 0071400 r o \r \t T _ m r x ; \r \t L 0071420 _ 376 001 \0 \v $ n o t r e f b i t 0071440 X O R T ; \r \t M D _ M ; 0071460 \t \t r e w r i t e s e c o n d 0071500 w o r d \r \t T _ m a m a s 0071520 k . T , : m a s k o k ; \r \r ; 0071540 w r i t e r e f t o c 0071560 l e a n p a g e \r c l e a n : 0071600 \t L _ P C , S W M O D E , 0071620 : n s k i p 1 ; \t n o s k i p 0071640 r e t u r n w i t h A C 3 0071660 = h a s h m a p p t r \r ; 0071700 p a g e n o t i n c o r e 0071720 \r n o s k i p : \t L _ P C , 0071740 S W M O D E , : n s k i p 1 0071760 ; \t d i t t o \r ; S k i p r 0072000 e t u r n t o N o v a e m 0072020 u l a t o r \r 376 001 \0 321 226 n s k i 0072040 p : \t L _ P C + 1 , S W M 0072060 O D E ; \r n s k i p 1 : \t P C 0072100 _ L , : S T A R T ; \r \r ; 0072120 L o g m a p r e f e r e n c 0072140 e \r m s t a t s : \t L _ T 0072160 _ m a p s p t r ; \r \t L _ 0072200 m a p b a s e - T , S H = 0 ; 0072220 \t t e s t f o r n o l o g 0072240 g i n g \r \t M A R _ T , S 0072260 H = 0 , : d o s t a t ; \t t e 0072300 s t f o r b u f f e r f u 0072320 l l \r n o s t a t : \t L _ P 0072340 C + 1 ; \r \t S I N K _ M D , 0072360 S W M O D E , : n s k i p 1 0072400 ; \t d i s c a r d m e m o r y 0072420 d a t a , d o s k 376 \0 321 z 0072440 217 i p r e t u r n \r d o s t a 0072460 t : \t L _ 2 + T , : n f u 0072500 l l ; \r f u l l : \t L _ m a 0072520 p s p t r - 1 , T A S K ; \t s 0072540 i g n a l b u f f e r o v e 0072560 r f l o w w i t h f u n n y 0072600 A C 3 \r \t A C 3 _ L , : 0072620 n o s k i p ; \r n f u l l : \t M 0072640 D _ A C 0 ; \r \t M A R _ 0072660 L _ m a p s p t r + 1 ; \r \t 0072700 L _ M + 1 ; \r \t m a p s p t 0072720 r _ L , T A S K ; \r \t M D 0072740 _ A C 1 , : n s k i p ; \r 0072760 \r \r 377 \0 \0 c o m p i l e v m e m 0073000 . c m \0 376 \0 211 ] 213 B c p l / F 0073020 t e s t v m e m . b c p l \r B c 0073040 p l / F v m e m . b c p l \r B 0073060 c p l / F v m e m a u x . b c 0073100 p l \r B c p l / F v m e m i n 0073120 i t . b c p l \r B c p l / F p 0073140 r i n t v m e m s t a t e . b c 0073160 p l \r A s m v m e m a . a s m 0073200 \r A s m v m e m s o f t . a s 0073220 m \r 377 \0 \0 l o a d t e s t v m e 0073240 m . c m \0 376 \0 k E \b B l d r / F 0073260 t e s t v m e m v m e m v 0073300 m e m a u x v m e m i n i t 0073320 p r i n t v m e m s t a t e i 0073340 s f i s f i n i t v m e m a 0073360 v m e m s o f t s t a n d a 0073400 r d r a m t r a c e t e m p 0073420 l a t e \r 377 \0 \0 s e n d v m e m 0073440 . c m \0 376 001 \0 e / / / l a s t 0073460 e d i t e d S e p t e m b e 0073500 r 9 , 1 9 7 7 1 : 5 7 0073520 P M \r F t p / - S M a x c ^ 0073540 \r C o n n e c t / C a l t o s 0073560 o u r c e ^ \r D u m p / C v 0073600 m e m . d m t e s t v m e m . 0073620 b c p l v m e m . d v m e m 0073640 . b c p l v m e m a u x . b c 0073660 p l v m e m i n i t . b c p l 0073700 p r i n t v m e m s t a t e . 0073720 b c p l v m e m a . a s m v 0073740 m e m s o f t . a s m v m e m 0073760 . u s e v m e m . m u c o m 0074000 p i l e v m e m . c m l o a d 0074020 t e s t v m e m . c m s e n d 0074040 v m e m . c m ^ 376 \0 x 376 H \r C 0074060 o n n e c t / C a l t o ^ \r 0074100 D u m p / C v m e m . d m v 0074120 m e m . B R v m e m a u x . B 0074140 R v m e m i n i t . B R p r 0074160 i n t v m e m s t a t e . B R 0074200 v m e m a . B R v m e m s o f 0074220 t . B R v m e m . u s e v m 0074240 e m . m u \r 374 0074247