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