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