$ od -c -N 50000 [phylum]<3-LISP>DESRIVIERES>PRELIMINARY>REVISED-3CODE.TED!1
0000000 P r o p o s e d 3 - C O D E :
0000020 n e w b y t e c o d e s f
0000040 o r 3 - L I S P . \r \r J i m
0000060 d e s R i v i e r e s \r D e c
0000100 e m b e r 5 t h , 1 9 8 3 \r
0000120 \r F i l e d o n : { p h y l
0000140 u m } < d e s r i v i e r e s >
0000160 n l i s p > r e v i s e d - 3 c
0000200 o d e . t e d \r \r C o n s t a n
0000220 t s \r \r F u n c t i o n a l i t
0000240 y : P u s h e s a c o
0000260 n s t a n t i n t o t h e
0000300 c u r r e n t f r a m e . \r
0000320 \r A r g u m e n t s : O n e
0000340 o n t h e b y t e l i s p
0000360 s t a c k . \r \r N e w b y
0000400 t e c o d e : \r [ 3 C O
0000420 N S T ] ; l e n g t h 1 ;
0000440 f o r m a t - ; s t a c k
0000460 e f f e c t - 1 ; u f n 3
0000500 C O N S T . U F N \r \r I m p l e
0000520 m e n t a t i o n : \r \r
0000540 ( d e f u n 3 c o n s t .
0000560 u f n ( a r g ) \r ( p
0000600 r o g ( ) \r ( \
0000620 p u t b a s e p t r * n e x t
0000640 * 0 a r g ) \r
0000660 ( s e t q * n e x t * ( \ a
0000700 d d b a s e * n e x t * w o
0000720 r d s - p e r - p t r ) ) \r
0000740 ( r e t u r n ) ) ) \r
0000760 \r V a r i a b l e r e f e r e
0001000 n c e s \r \r F u n c t i o n a l
0001020 i t y : L o o k u p t h
0001040 e b i n d i n g o f a
0001060 3 - L I S P v a r i a b l e
0001100 i n t h e c u r r e n t e
0001120 n v i r o n m e n t . P u s
0001140 h t h e r e s u l t i n t
0001160 o t h e c u r r e n t f r
0001200 a m e . \r \r A r g u m e n t s
0001220 : O n e i n t h e i n
0001240 s t r u c t i o n : t h e 3
0001260 - L I S P v a r i a b l e t
0001300 o b e l o o k e d u p (
0001320 a L I S P a t o m ) . \r \r
0001340 N e w b y t e c o d e : \r
0001360 [ 3 V A R v a r i a b l e
0001400 ] ; l e n g t h 3 ; f o r
0001420 m a t A T O M ; s t a c k
0001440 e f f e c t 0 ; u f n 3 V
0001460 A R . U F N \r \r I m p l e m e n
0001500 t a t i o n : \r \r
0001520 ( d e f u n 3 v a r . u f n
0001540 ( v a r ) \r ( p r o
0001560 g ( c o n t o u r s k e l e
0001600 t o n r e s u l t p r o c
0001620 p o s i t i o n ) \r
0001640 ( s e t q c o n t o u r
0001660 * e n v * ) \r \r
0001700 s e a r c h - c o n t o u r \r
0001720 ( i f ( n u l
0001740 l c o n t o u r ) t h e n \r
0001760 ( *
0002000 L o o k i t u p i n t h
0002020 e g l o b a l e n v i r o n
0002040 m e n t . * ) \r
0002060 ( s e t q r e s u
0002100 l t ( g e t h a s h v a r
0002120 * g l o b a l - h a s h - a r r
0002140 a y * ) ) \r
0002160 ( i f ( n u l l r e s
0002200 u l t ) t h e n \r
0002220 ( 3 - l i
0002240 s p - e r r o r ' n o t . f o
0002260 u n d v a r ) ) \r
0002300 ( g o r e t u r
0002320 n - b i n d i n g ) ) \r \r
0002340 ( s e t q p r o c
0002360 ( f e t c h ( 3 f r a m e
0002400 p r o c ) o f c o n t o u
0002420 r ) ) \r ( s e
0002440 t q s k e l e t o n ( f e t
0002460 c h ( 3 c l o s u r e s k e
0002500 l e t o n ) o f p r o c ) )
0002520 \r ( s e t q
0002540 p o s i t i o n ( f i n d v a
0002560 r v a r s k e l e t o n ) )
0002600 \r ( i f ( n
0002620 e q p o s i t i o n 0 ) )
0002640 t h e n \r
0002660 ( g o i t s - l o c a l )
0002700 ) \r ( s e t q
0002720 c o n t o u r ( f e t c h
0002740 ( 3 c l o s u r e e n v ) o
0002760 f p r o c ) ) \r
0003000 ( g o s e a r c h - c o n
0003020 t o u r ) \r \r i t
0003040 s - l o c a l \r
0003060 ( i f ( n o t ( f e t c h
0003100 ( 3 f r a m e o b j e c t i
0003120 f i e d ) o f c o n t o u r
0003140 ) ) t h e n \r
0003160 ( s e t q r e s u l
0003200 t \r
0003220 ( \ g e t b a s e p t r \r
0003240
0003260 ( \ a d d b a s e \r
0003300
0003320 ( \ a d d b a s e \r
0003340
0003360 ( \ a d d b a s e c
0003400 o n t o u r ( i t i m e s 2
0003420 w o r d s - p e r - p t r ) )
0003440 \r
0003460 p o s i t i o n
0003500 ) \r
0003520 p o s i t i o n )
0003540 \r
0003560 0 ) ) \r
0003600 e l s e \r
0003620 ( s e t q r e s u l t \r
0003640
0003660 ( r n t h p o s i t i o n (
0003700 f e t c h ( 3 f r a m e a r
0003720 g 1 ) o f c o n t o u r ) )
0003740 ) ) \r ( g o
0003760 r e t u r n - b i n d i n g )
0004000 \r \r r e t u r n -
0004020 b i n d i n g \r
0004040 ( \ p u t b a s e p t r *
0004060 n e x t * 0 r e s u l t ) \r
0004100 ( s e t q
0004120 * n e x t * ( \ a d d b a s e
0004140 * n e x t * w o r d s - p e
0004160 r - p t r ) ) \r
0004200 ( r e t u r n ) ) ) \r
0004220 \r \r S t a r t R e
0004240 d u c t i o n \r \r F u n c t i o
0004260 n a l i t y : A l l o c a t
0004300 e s a f r e s h a r g u m
0004320 e n t f r a m e . O p t i
0004340 o n a l l y , a l l o c a t e
0004360 a c o n t i n u a t i o n
0004400 a t t h e s a m e t i m e
0004420 ( f o r e m b e d d e d f
0004440 u n c t i o n c a l l s ) ,
0004460 a n d r e c o r d t h a t
0004500 t h i s i s r e d u c t i o
0004520 n h a s a n o b j e c t i
0004540 f i e d a r g u m e n t .
0004560 \r \r A r g u m e n t s : P o s
0004600 s i b l y o n e i n t h e
0004620 i n s t r u c t i o n : t h
0004640 e n u m b e r o f s l o t
0004660 s r e q u i r e d ( 0 t o
0004700 2 5 5 ) . \r \r N e w b y t e
0004720 c o d e s : \r \r [ 3 S
0004740 T A R T ] ; l e n g t h 2 ;
0004760 f o r m a t S I C ; s t a
0005000 c k e f f e c t 0 ; u f n
0005020 3 S T A R T . U F N . \r
0005040 [ 3 T S T A R T ] ; l e n g
0005060 t h 2 ; f o r m a t S I C
0005100 ; s t a c k e f f e c t 0
0005120 ; u f n 3 T S T A R T . U F
0005140 N . . \r [ 3 O S T A R T
0005160 ] ; l e n g t h 1 ; f o r
0005200 m a t - ; s t a c k e f f
0005220 e c t 0 ; u f n 3 O S T A
0005240 R T . U F N . \r [ 3 T O
0005260 S T A R T ] ; l e n g t h 1
0005300 ; f o r m a t - ; s t a c
0005320 k e f f e c t 0 ; u f n
0005340 3 T O S T A R T . U F N \r \r I m
0005360 p l e m e n t a t i o n : \r \r
0005400 ( b l o c k r e c o r d 3 f
0005420 r a m e \r ( ( t y p e t
0005440 a g b y t e ) \r ( o
0005460 b j e c t i f i e d f l a g )
0005500 \r ( e m b e d d e d
0005520 f l a g ) \r ( s p a r
0005540 e 1 b i t s 6 ) \r
0005560 ( n a r g s b y t e ) \r
0005600 ( s p a r e 2 w o r d
0005620 ) \r ( p r o c x p o
0005640 i n t e r ) \r ( a r g
0005660 1 x p o i n t e r ) \r
0005700 ( a r g 2 x p o i n t e r )
0005720 \r ( a r g 3 x p o i
0005740 n t e r ) \r ( a r g 4
0005760 x p o i n t e r ) \r
0006000 . . . ) ) \r
0006020 \r ( d e f u n 3
0006040 m a k e f r a m e ( n a r g s
0006060 e m b e d d e d o b j e c t
0006100 i f i e d ) \r ( p r o g
0006120 ( ) \r ( s e t q
0006140 * f r a m e * * f r e e * ) \r
0006160 ( s e t q * f r e
0006200 e * \r ( \ a d
0006220 d b a s e * f r e e * ( i t
0006240 i m e s w o r d s - p e r - p
0006260 t r ( i p l u s n a r g s
0006300 2 ) ) ) ) \r ( r e p
0006320 l a c e ( 3 f r a m e t y p
0006340 e t a g ) o f * f r a m e *
0006360 w i t h e n v - t a g ) \r
0006400 ( r e p l a c e ( 3
0006420 f r a m e o b j e c t i f i e
0006440 d ) o f * f r a m e * w i
0006460 t h o b j e c t i f i e d ) \r
0006500 ( r e p l a c e (
0006520 3 f r a m e e m b e d d e d )
0006540 o f * f r a m e * w i t h
0006560 e m b e d d e d ) \r
0006600 ( r e p l a c e ( 3 f r a m
0006620 e n a r g s ) o f * f r a
0006640 m e * w i t h n a r g s ) \r
0006660 ( s e t q * n e x
0006700 t * ( a d d r ( 3 f r a m e
0006720 p r o c ) o f * f r a m e
0006740 * ) ) \r ( r e t u
0006760 r n ) ( * N o r e s u l t
0007000 . ) ) ) \r \r ( b l o c k r
0007020 e c o r d 3 c o n t \r
0007040 ( ( t y p e t a g b y t e ) \r
0007060 ( s p a r e b y t e
0007100 ) \r ( p c w o r d )
0007120 \r ( e n v x p o i n
0007140 t e r ) \r ( f r a m e
0007160 x p o i n t e r ) \r
0007200 ( n e x t x p o i n t e r ) \r
0007220 ( c o n t x p o i n
0007240 t e r ) ) ) \r \r ( d e f u n
0007260 3 m a k e c o n t ( ) \r
0007300 ( p r o g ( n e w - c o n
0007320 t ) \r ( s e t q n
0007340 e w - c o n t * f r e e * ) \r
0007360 ( s e t q * f r e
0007400 e * \r ( \ a d
0007420 d b a s e * f r e e * ( i t
0007440 i m e s w o r d s - p e r - p
0007460 t r 5 ) ) \r ( r e
0007500 p l a c e ( 3 c o n t t y p
0007520 e t a g ) o f n e w - c o n
0007540 t w i t h c o n t i n u a t
0007560 i o n - t a g ) \r (
0007600 r e p l a c e ( 3 c o n t s
0007620 p a r e ) o f n e w - c o n
0007640 t w i t h 0 ) \r
0007660 ( r e p l a c e ( 3 c o n t
0007700 e n v ) o f n e w - c o
0007720 n t w i t h * e n v * ) \r
0007740 ( r e p l a c e ( 3
0007760 c o n t f r a m e ) o f n
0010000 e w - c o n t w i t h * f r
0010020 a m e * ) \r ( r e p
0010040 l a c e ( 3 c o n t n e x t
0010060 ) o f n e w - c o n t w
0010100 i t h * n e x t * ) \r
0010120 ( r e p l a c e ( 3 c o n
0010140 t c o n t ) o f n e w -
0010160 c o n t w i t h * c o n t *
0010200 ) \r ( s e t q *
0010220 c o n t * n e w - c o n t ) \r
0010240 ( r e t u r n ) ) )
0010260 \r \r ( d e f u n 3 s t a
0010300 r t . u f n ( n ) \r (
0010320 p r o g ( ) \r ( 3
0010340 m a k e c o n t ) \r
0010360 ( 3 m a k e f r a m e n t
0010400 n i l ) \r ( r e t u
0010420 r n ) ) ) \r \r ( d e f u n
0010440 3 t s t a r t . u f n ( n ) \r
0010460 ( p r o g ( ) \r
0010500 ( 3 m a k e f r a m e n
0010520 n i l n i l ) \r
0010540 ( r e t u r n ) ) ) \r \r (
0010560 d e f u n 3 o s t a r t . u f
0010600 n ( ) \r ( p r o g (
0010620 ) \r ( 3 m a k e c o
0010640 n t ) \r ( 3 m a k e
0010660 f r a m e 1 t t ) \r
0010700 ( r e t u r n ) ) ) \r \r
0010720 ( d e f u n 3 t o s t a r t
0010740 . u f n ( ) \r ( p r o
0010760 g ( ) \r ( 3 m a k
0011000 e f r a m e 1 n i l t ) \r
0011020 ( r e t u r n ) ) )
0011040 \r \r \r R e t u r n i n g \r \r F u
0011060 n c t i o n a l i t y : R e
0011100 s t o r e s t h e p r o c e
0011120 s s i n g s t a t e c a p t
0011140 u r e d b y t h e c u r r
0011160 e n t c o n t i n u a t i o n
0011200 , a n d s t o r e s t h e
0011220 r e s u l t i n t o t h a
0011240 t f r a m e . \r \r A r g u m e
0011260 n t s : O n e o n t h e
0011300 s t a c k . \r \r N e w
0011320 b y t e c o d e : \r [
0011340 3 R E T U R N ] ; l e n g t h
0011360 1 ; s t a c k e f f e c
0011400 t 0 a n d j u m p s ; u
0011420 f n 3 R E T U R N . U F N . \r
0011440 \r \r ( d e f u n 3 r e t
0011460 u r n . u f n ( ) \r
0011500 ( p r o g ( t e m p ) \r
0011520 ( s e t q t e m p (
0011540 \ g e t b a s e p t r * n e x
0011560 t * ( i m i n u s w o r d s
0011600 - p e r - p t r ) ) ) \r
0011620 ( s e t q * e n v *
0011640 ( f e t c h ( 3 c o n t e
0011660 n v ) o f * c o n t * ) ) \r
0011700 ( s e t q * f r
0011720 a m e * ( f e t c h ( 3 c o
0011740 n t f r a m e ) o f * c o
0011760 n t * ) ) \r ( s e
0012000 t q * n e x t * ( f e t c
0012020 h ( 3 c o n t n e x t ) o
0012040 f * c o n t * ) ) \r
0012060 ( s e t q p c
0012100 ( f e t c h ( 3 c o n t p c
0012120 ) o f * c o n t * ) ) \r
0012140 ( s e t q * c o n t
0012160 * ( f e t c h ( 3 c o n t
0012200 c o n t ) o f * c o n t *
0012220 ) ) \r ( \ p u t b
0012240 a s e p t r * n e x t * 0
0012260 t e m p ) \r ( s e
0012300 t q * n e x t * ( \ a d d b
0012320 a s e * n e x t * w o r d s
0012340 - p e r - p t r ) ) \r
0012360 ( r e t u r n ) ) ) \r \r P
0012400 r o c e d u r e c a l l i n g
0012420 \r \r F u n c t i o n a l i t y :
0012440 T r a n s f e r c o n t r
0012460 o l t o a 3 - L I S P p
0012500 r o c e d u r e . T h e a
0012520 r g u m e n t s a r e a s s
0012540 o c i a t e d w i t h t h e
0012560 p r o c e d u r e ' s p a r
0012600 a m e t e r s a n d a d d e
0012620 d t o t h e p r o c e d u
0012640 r e ' s e n v i r o n m e n t
0012660 , w h i c h t h e n b e
0012700 c o m e s t h e c u r r e n
0012720 t e n v i r o n m e n t .
0012740 T h e n e w p c i s t a
0012760 k e n f r o m t h e v a l
0013000 u e s a v e d i n t h e
0013020 p r o c e d u r e o b j e c t
0013040 . \r \r A r g u m e n t s :
0013060 N o n e . \r \r N
0013100 e w b y t e c o d e s : \r
0013120 [ 3 C A L L ] ; l e n g
0013140 t h 1 ; f o r m a t - ;
0013160 s t a c k e f f e c t 0
0013200 a n d j u m p s ; u f n
0013220 3 C A L L . U F N . \r \r I m p l
0013240 e m e n t a t i o n : \r \r
0013260 ( d e f u n 3 c a l l . u f
0013300 n ( ) \r ( p r o
0013320 g ( n g i v e n p r o c c
0013340 a l l e e n v a r s t e m p
0013360 n a r g s \r
0013400 e m b e d d e d o
0013420 b j e c t i f i e d ) \r
0013440 ( s e t q n g i v
0013460 e n ( f e t c h ( 3 f r a m
0013500 e n a r g s ) o f * f r a
0013520 m e * ) ) \r
0013540 ( s e t q p r o c ( f e t c
0013560 h ( 3 f r a m e p r o c )
0013600 o f * f r a m e * ) ) \r
0013620 ( s e t q e m b
0013640 e d d e d ( f e t c h ( 3 f
0013660 r a m e e m b e d d e d ) o
0013700 f * f r a m e * ) ) \r
0013720 ( s e t q o b j e
0013740 c t i f i e d ( f e t c h (
0013760 3 f r a m e o b j e c t i f i
0014000 e d ) o f * f r a m e * ) )
0014020 \r \r ( s e t
0014040 q c a l l e e ( f e t c h
0014060 p a t t e r n o f p r o c )
0014100 ) \r ( s e t
0014120 q s p r e a d ( s p r e a d
0014140 ? c a l l e e ) ) \r \r
0014160 ( c o n d ( ( a n
0014200 d s p r e a d ( n o t o b
0014220 j e c t i f i e d ) ) \r
0014240 ( g o
0014260 c h e c k - a r i t y ) ) \r
0014300 (
0014320 ( a n d s p r e a d o b j e
0014340 c t i f i e d ) \r
0014360 ( g o s p
0014400 r e a d - a r g s ) ) \r
0014420 ( ( a n
0014440 d ( n o t s p r e a d ) o
0014460 b j e c t i f i e d ) \r
0014500 ( g o
0014520 n o - p r o b l e m s ) ) \r
0014540 (
0014560 ( a n d ( n o t s p r e a d
0014600 ) ( n o t o b j e c t i f i
0014620 e d ) ) \r
0014640 ( g o c o l l e c
0014660 t - a r g s ) ) ) \r \r
0014700 s p r e a d - a r g s \r
0014720 ( s e t q a
0014740 r g 1 ( f e t c h ( 3 f r a
0014760 m e a r g 1 ) o f * f r a
0015000 m e * ) ) \r
0015020 ( i f ( a n d ( r a i l ?
0015040 a r g 1 ) \r
0015060 ( e q ( r l e n g
0015100 t h a r g 1 ) ( n e x p e c
0015120 t e d c a l l e e ) ) ) t h
0015140 e n \r
0015160 ( g o n o - p r o b l e m s
0015200 ) \r e l s
0015220 e \r
0015240 ( g o m i s m a t c h ) ) \r
0015260 \r
0015300 c o l l e c t - a r g
0015320 s \r ( s e t
0015340 q t e m p ( r c o n s 0 ) )
0015360 \r ( s e t q
0015400 a r g p t r * n e x t * ) \r
0015420 ( f o r i
0015440 f r o m 1 t o n g i v e
0015460 n d o \r
0015500 ( s e t q a r g p t r \r
0015520
0015540 ( \ a d d b a s e a r g p t r
0015560 ( i m i n u s w o r d s - p
0015600 e r - p t r ) ) ) \r
0015620 ( s e t q t e m
0015640 p \r
0015660 ( p r e p ( \ g e t b a
0015700 s e p t r a r g p t r 0 )
0015720 t e m p ) ) ) \r
0015740 ( r e p l a c e ( 3 f r a
0015760 m e a r g 1 ) o f * f r a
0016000 m e * w i t h t e m p ) \r
0016020 ( r e p l a c
0016040 e ( 3 f r a m e o b j e c t
0016060 i f i e d ) o f * f r a m e
0016100 * w i t h t ) \r
0016120 ( g o n o - p r o b l
0016140 e m s ) \r \r c h
0016160 e c k - a r i t y \r
0016200 ( i f ( e q n g i v
0016220 e n ( n e x p e c t e d c a
0016240 l l e e ) ) t h e n \r
0016260 ( g o n o
0016300 - p r o b l e m s ) \r
0016320 e l s e \r
0016340 ( g o m i s
0016360 m a t c h ) ) \r \r
0016400 m i s m a t c h \r
0016420 ( 3 - l i s p - e r r o
0016440 r ' m i s m a t c h n i l )
0016460 ) \r \r
0016500 n o - p r o b l e m s
0016520 \r ( s e t q
0016540 * e n v * * f r a m e * )
0016560 \r
0016600 ( s e t q
0016620 * f r a m e * n i l ) \r
0016640 ( s e t q * n e
0016660 x t * * s c r a t c h p a d *
0016700 ) \r \r ( i f
0016720 e m b e d d e d t h e n \r
0016740 ( r e
0016760 p l a c e ( 3 c o n t p c )
0017000 o f * c o n t * w i t h
0017020 p c ) ) \r \r
0017040 ( s e t q p c \r
0017060 ( s t a r t - a d d
0017100 r e s s \r
0017120 ( f e t c h ( 3
0017140 c l o s u r e s k e l e t o n
0017160 ) o f p r o c ) ) ) \r
0017200 ( r e t u r n ) )
0017220 ) \r \r \r \r L a m b d a e x p
0017240 r e s s i o n s \r \r F u n c t i
0017260 o n a l i t y : C r e a t e
0017300 a n e w c l o s u r e . \r
0017320 \r A r g u m e n t s : O n
0017340 e : t h e s k e l e t o n
0017360 s t r u c t u r e f o r t
0017400 h e l a m b d a e x p r e s
0017420 s i o n . \r \r N e w b y t e
0017440 c o d e : \r [ 3 L A M B
0017460 D A p ] ; l e n g t h 1 ;
0017500 f o r m a t - ; s t a c k
0017520 e f f e c t - 1 ; u f n
0017540 3 L A M B D A . U F N . \r \r I m
0017560 p l e m e n t a t i o n : \r \r
0017600 ( b l o c k r e c o r d
0017620 3 c l o s u r e \r
0017640 ( ( t y p e t a g b y t e ) \r
0017660 ( s p a r e 1
0017700 b y t e ) \r ( s
0017720 p a r e 2 w o r d ) \r
0017740 ( s k e l e t o n x p
0017760 o i n t e r ) \r
0020000 ( e n v x p o i n t e r ) ) )
0020020 \r \r ( d e
0020040 f u n 3 l a m b d a . u f n
0020060 ( s k e l e t o n ) \r
0020100 ( p r o g ( ) \r
0020120 ( s e t q c l * f r e e *
0020140 ) \r ( s e t q
0020160 * f r e e * ( \ a d d b a s e
0020200 * f r e e * ( i t i m e s
0020220 w o r d s - p e r - p t r 3 )
0020240 ) ) \r ( r e p l
0020260 a c e ( 3 c l o s u r e t y
0020300 p e t a g ) o f c l w i t
0020320 h c l o s u r e - t a g ) \r
0020340 ( r e p l a c e
0020360 ( 3 c l o s u r e s p a r e 1
0020400 ) o f c l w i t h 0 ) \r
0020420 ( r e p l a c e
0020440 ( 3 c l o s u r e s p a r e
0020460 2 ) o f c l w i t h 0 )
0020500 \r ( r e p l a c
0020520 e ( 3 c l o s u r e s k e l
0020540 e t o n ) o f c l w i t h
0020560 s k e l e t o n ) \r
0020600 ( r e p l a c e ( 3 c l
0020620 o s u r e e n v ) o f c l
0020640 w i t h * e n v * ) \r
0020660 ( \ p u t b a s e p t
0020700 r * n e x t * 0 c l ) \r
0020720 ( s e t q * n e
0020740 x t * ( \ a d d b a s e * n
0020760 e x t * w o r d s - p e r - p
0021000 t r ) ) \r ( r e
0021020 t u r n ) ) ) \r
0021040 \r \r C h e c k i
0021060 n g f o r r e f l e c t i v
0021100 e p r o c e d u r e s \r \r F u
0021120 n c t i o n a l i t y : E n
0021140 s u r e t h a t t h e o b
0021160 j e c t i n t h e P R O C
0021200 p o s i t i o n o f t h e
0021220 c u r r e n t f r a m e i
0021240 s a s i m p l e c l o s u
0021260 r e . E r r o r i f n o
0021300 t . \r \r A r g u m e n t s :
0021320 N o n e \r \r N e w b
0021340 y t e c o d e : \r [ 3
0021360 P C H E C K ] ; l e n g t h
0021400 1 ; f o r m a t - ; s t a
0021420 c k e f f e c t 0 ; u f n
0021440 3 P C H E C K . U F N . \r \r I
0021460 m p l e m e n t a t i o n : \r
0021500 \r ( d e f u n 3 p c h e
0021520 c k . u f n ( ) \r (
0021540 p r o g ( p r o c ) \r
0021560 ( s e t q p r o c ( f
0021600 e t c h ( 3 f r a m e p r o
0021620 c ) o f * f r a m e * ) ) \r
0021640 ( i f ( n o t
0021660 ( s i m p l e - c l o s u r e ?
0021700 p r o c ) ) t h e n \r
0021720 ( 3 - l i s
0021740 p - e r r o r ' s u p r i s e
0021760 ! ) ) \r ( r e t u
0022000 r n ) ) ) \r \r C o n d i t i o n
0022020 a l s \r \r F u n c t i o n a l i
0022040 t y : P o p a v a l u e
0022060 f r o m t h e a r g u m e
0022100 n t f r a m e , c h e c k
0022120 t o s e e t h a t i t
0022140 i s a b o o l e a n v a l
0022160 u e , a n d t h e n r e t
0022200 u r n i t . \r \r A r g u m e
0022220 n t s : N o n e \r \r
0022240 N e w b y t e c o d e : \r
0022260 [ 3 I F ] ; l e n g t h
0022300 1 ; f o r m a t - ; s t
0022320 a c k e f f e c t + 1 ; u
0022340 f n 3 I F . U F N . \r \r I m p
0022360 l e m e n t a t i o n : \r \r
0022400 ( d e f u n 3 i f . u f n
0022420 ( ) \r ( p r o g (
0022440 t e m p ) \r ( s e
0022460 t q * n e x t * ( \ a d d b
0022500 a s e * n e x t * ( i m i n
0022520 u s w o r d s - p e r - p t r
0022540 ) ) ) \r ( s e t q
0022560 t e m p ( \ g e t b a s e p
0022600 t r * n e x t * 0 ) ) \r
0022620 ( i f ( n o t ( b
0022640 o o l e a n ? t e m p ) ) t
0022660 h e n \r (
0022700 3 - l i s p - e r r o r ' b o
0022720 o l e a n - e x p e c t e d ) )
0022740 \r ( r e t u r n
0022760 t e m p ) ) ) \r \r G l o b a l
0023000 S e t \r \r F u n c t i o n a l i
0023020 t y : C h a n g e t h e
0023040 g l o b a l b i n d i n g o
0023060 f a 3 L I S P v a r i a b
0023100 l e . \r \r A r g u m e n t s
0023120 : O n e : t h e n a m e
0023140 o f t h e v a r i a b l e
0023160 ( a n a t o m ) . \r
0023200 \r N e w b y t e c o d e : \r
0023220 [ 3 G S E T ] ; l e n
0023240 g t h 3 ; f o r m a t - ;
0023260 s t a c k e f f e c t 0 ;
0023300 u f n 3 G S E T . U F N . \r
0023320 \r I m p l e m e n t a t i o n :
0023340 \r \r ( d e f u n 3 g s
0023360 e t . u f n ( v a r ) \r
0023400 ( p r o g ( t e m p ) \r
0023420 ( s e t q t e m p
0023440 ( \ g e t b a s e p t r * n
0023460 e x t * ( i m i n u s w o r
0023500 d s - p e r - p t r ) ) ) \r
0023520 ( g l o b a l - r e b
0023540 i n d v a r t e m p ) \r
0023560 ( r e t u r n ) ) )
0023600 \r \r P r i m i t i v e p r o c
0023620 e d u r e s e t a l . \r \r F
0023640 u n c t i o n a l i t y : T
0023660 h e r e a r e a h o s t
0023700 o f p r i m i t i v e p r o
0023720 c e d u r e s t h a t d o
0023740 e l e m e n t a r y d a t a
0023760 s t r u c t u r e m a n i p u
0024000 l a t i o n f o r t h e m
0024020 o s t p a r t . T o i m
0024040 p l e m e n t t h e s e i t
0024060 w i l l b e n e c e s s a
0024100 r y t o h a v e a b y t
0024120 e c o d e t h a t r e t u r
0024140 n s a n a r g u m e n t f
0024160 r o m t h e f i r s t f r
0024200 a m e o f t h e c u r r e
0024220 n t e n v i r o n m e n t .
0024240 \r \r A r g u m e n t s : O
0024260 n e : w h i c h a r g u m e
0024300 n t ( 1 , 2 , 3 , . . .
0024320 ) ; r e s u l t c o m e s
0024340 b a c k o n t h e s t a c
0024360 k . \r \r N e w b y t e c o d
0024400 e : \r [ 3 A R G ] ; l
0024420 e n g t h 2 ; f o r m a t
0024440 S I C ; s t a c k e f f e c
0024460 t + 1 ; u f n 3 A R G . U
0024500 F N . \r \r I m p l e m e n t a t
0024520 i o n : \r \r ( d e f u n
0024540 3 a r g . u f n ( n ) \r
0024560 ( p r o g ( t e m p ) \r
0024600 ( i f ( f e t c
0024620 h ( 3 f r a m e o b j e c t
0024640 i f i e d ) o f * e n v * )
0024660 t h e n \r
0024700 ( r e t u r n ( r n t h n
0024720 ( f e t c h ( 3 f r a m e
0024740 a r g 1 ) o f * e n v * ) \r
0024760 e l s e \r
0025000 ( s e t q t e
0025020 m p \r
0025040 ( \ a d d b a s e \r
0025060 ( \ a
0025100 d d b a s e \r
0025120 (
0025140 \ a d d b a s e * e n v * \r
0025160
0025200 ( i t i m e s
0025220 2 w o r d s - p e r - p t r
0025240 ) ) \r
0025260 n ) \r
0025300 n ) ) \r
0025320 ( r e t u r n
0025340 ( \ g e t b a s e p t r t e m
0025360 p 0 ) ) ) ) ) \r \r \r E x a m
0025400 p l e b y t e c o d e s e q
0025420 u e n c e f o r t h e P R
0025440 E P p r i m i t i v e : \r \r
0025460 3 A R G
0025500 1 \r 3 A R G
0025520 2 \r F
0025540 N 2 P R E P - P R I M I
0025560 T I V E \r 3
0025600 C O N S T \r
0025620 3 R E T U R N \r \r \r \r \r \r E x t
0025640 e n d e d e x a m p l e # 1
0025660 : \r \r ( l a m b d a [ x
0025700 y ] ( f o o x y 1 ) )
0025720 \r \r G C O N
0025740 S T ( S P R E A D 2 ( X
0025760 Y ) l a b e l 1 ) \r
0026000 3 L A M B D A \r
0026020 3 R E T U R N \r l
0026040 a b e l 1 3 T S T A R T
0026060 3 \r 3 V A
0026100 R F O O \r
0026120 3 P C H E C K \r
0026140 3 V A R X \r
0026160 3 V A R
0026200 Y \r 3 C O
0026220 N S T 1 \r
0026240 3 C A L L \r \r \r E x t e n d e
0026260 d e x a m p l e # 2 : \r \r
0026300 ( l a m b d a a r g s (
0026320 f ( g x ) ( h . x ) )
0026340 \r \r G C O N S T
0026360 ( N O S P R E A D ( A R G
0026400 S ) l a b e l 1 ) \r
0026420 3 L A M B D A \r
0026440 3 R E T U R N \r l a b e l
0026460 1 3 T S T A R T 3 \r
0026500 3 V A R F
0026520 \r 3 P C H E
0026540 C K \r 3 S T
0026560 A R T 1 \r
0026600 3 V A R G \r
0026620 3 P C H E C K
0026640 \r 3 V A
0026660 R X \r
0026700 3 C A L L \r
0026720 3 O S T A R T \r
0026740 3 V A R H
0026760 \r 3 P C
0027000 H E C K \r
0027020 3 V A R X \r
0027040 3 C A L L \r
0027060 3 C A L L \r \r \r E
0027100 x t e n d e d e x a m p l e
0027120 # 3 : \r \r ( l a m b d a
0027140 [ n ] ( i f ( = n 0 )
0027160 1 ( * n ( f a c t ( -
0027200 n 1 ) ) ) ) ) \r \r
0027220 G C O N S T ( S P R E A D
0027240 ( N ) l a b e l 1 ) \r
0027260 3 L A M B D A \r
0027300 3 R E T U R N \r l a
0027320 b e l 1 3 S T A R T 2 \r
0027340 3 V A R
0027360 = \r 3 P C
0027400 H E C K \r 3
0027420 V A R N \r
0027440 3 C O N S T 0 \r
0027460 3 C A L L \r
0027500 3 I F \r
0027520 T J U M P l a b e l 2 \r
0027540 J U M P l a b e
0027560 l 3 \r l a b e l 2 3 C O N S
0027600 T 1 \r 3
0027620 R E T U R N \r l a b e l 3 3
0027640 T S T A R T 2 \r
0027660 3 V A R * \r
0027700 3 P C H E C K
0027720 \r 3 V A R
0027740 N \r 3
0027760 S T A R T 1 \r
0030000 3 V A R F A C
0030020 T \r 3 P
0030040 C H E C K \r
0030060 3 S T A R T 2 \r
0030100 3 V A R
0030120 - \r
0030140 3 P C H E C K \r
0030160 3 V A R
0030200 N \r
0030220 3 C O N S T 1 \r
0030240 3 C A L L \r
0030260 3 C A L L
0030300 \r 3 C A L L
0030320 \r \r E x t e n d e d e x a m p
0030340 l e # 4 : \r \r ( l a m b
0030360 d a [ x ] ( l a m b d a [
0030400 y ] ( + x y ) ) ) \r \r
0030420 G C O N S T ( S P
0030440 R E A D ( X ) l a b e l 1
0030460 ) \r 3 L A M B D
0030500 A \r 3 R E T U R
0030520 N \r l a b e l 1 G C O N S T
0030540 ( S P R E A D ( Y ) l a
0030560 b e l 2 ) \r 3 L
0030600 A M B D A \r 3 R
0030620 E T U R N \r l a b e l 2 3 T
0030640 S T A R T 2 \r
0030660 3 V A R + \r
0030700 3 P C H E C K \r
0030720 3 V A R
0030740 X \r 3 V A R
0030760 Y \r
0031000 3 C A L L \r \r \r ~ ~ ~ E n d o
0031020 f f i l e ~ ~ ~ \r \0 \0 \0 + \0 \0
0031040 \0 \n T I M E S R O M A N \0 016 \0 \0
0031060 \0 \0 \0 \0 002 \0 \0 \0 \0 ^ \0 \0 \0 \a C L
0031100 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0031120 \0 \0 \t \0 \0 \0 \a C L A S S I C \0 \f
0031140 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 312 \0 \0 \0 \a
0031160 C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0
0031200 \0 \0 \0 \0 225 \0 \0 \0 005 G A C H A \0 \n
0031220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 023 \0 \0 \0 \a
0031240 C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 002
0031260 \0 \0 \0 001 E \0 \0 \0 \a C L A S S I C
0031300 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 005 F \0 \0
0031320 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0
0031340 \0 \0 \0 \0 \t \0 \0 \0 \a C L A S S I C
0031360 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 017 \0 \0
0031400 \0 \a C L A S S I C \0 \f \0 \0 \0 \0 \0
0031420 \0 002 \0 \0 \0 002 W \0 \0 \0 \a C L A S S
0031440 I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \a %
0031460 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0
0031500 \0 \0 \0 \0 \0 \0 \t \0 \0 \0 \a C L A S S
0031520 I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 365
0031540 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 \0
0031560 \0 \0 \0 \0 \0 \0 \0 001 335 \0 \0 \0 005 G A C
0031600 H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001
0031620 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 \0
0031640 \0 \0 \0 \0 \0 \0 \0 \0 021 \0 \0 \0 \a C L A
0031660 S S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0
0031700 001 234 \0 \0 \0 \a C L A S S I C \0 \f \0
0031720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \a 350 \0 \0 \0 005 G
0031740 A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0031760 \0 002 \0 \0 \0 \a C L A S S I C \0 \f \0
0032000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 \a C
0032020 L A S S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0
0032040 \0 \0 \0 327 \0 \0 \0 \a C L A S S I C \0
0032060 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 253 \0 \0 \0
0032100 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0
0032120 \0 \0 \0 " \0 \0 \0 \a C L A S S I C \0
0032140 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 364 \0 \0 \0
0032160 \a C L A S S I C \0 \f \0 \0 \0 \0 \0 \0
0032200 \0 \0 \0 \0 \0 306 \0 \0 \0 005 G A C H A \0
0032220 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0
0032240 \a C L A S S I C \0 \f \0 \0 \0 \0 \0 \0
0032260 \0 \0 \0 \0 \0 \f \0 \0 \0 \a C L A S S I
0032300 C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 353 \0
0032320 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 \0
0032340 \0 \0 \0 \0 \0 \0 \0 372 \0 \0 \0 005 G A C H
0032360 A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0
0032400 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 \0
0032420 \0 \0 \0 \0 \0 \0 \0 \n \0 \0 \0 \a C L A S
0032440 S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0
0032460 337 \0 \0 \0 \a C L A S S I C \0 \f \0 \0
0032500 \0 \0 \0 \0 \0 \0 \0 \0 \0 240 \0 \0 \0 005 G A
0032520 C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0032540 033 \0 \0 \0 \a C L A S S I C \0 \f \0 \0
0032560 \0 \0 \0 \0 002 \0 \0 \0 001 271 \0 \0 \0 \a C L
0032600 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0032620 \0 001 246 \0 \0 \0 005 G A C H A \0 \n \0 \0
0032640 \0 \0 \0 \0 \0 \0 \0 \0 \0 " \0 \0 \0 \a C L
0032660 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0032700 \0 \0 004 \0 \0 \0 005 G A C H A \0 \n \0 \0
0032720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \v \0 \0 \0 \a C L
0032740 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0032760 \0 \0 p \0 \0 \0 005 G A C H A \0 \n \0 \0
0033000 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L
0033020 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0033040 \0 \0 370 \0 \0 \0 005 G A C H A \0 \n \0 \0
0033060 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L
0033100 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0033120 \0 001 202 \0 \0 \0 005 G A C H A \0 \n \0 \0
0033140 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L
0033160 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0033200 \0 002 177 \0 \0 \0 005 G A C H A \0 \n \0 \0
0033220 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L
0033240 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0033260 \0 001 " \0 \0 \0 005 G A C H A \0 \n \0 \0
0033300 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 \a C L
0033320 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0033340 \0 \0 \0 \0 \0 \0 005 G A C H A \0 \n \0 \0
0033360 \0 \0 \0 \0 \0 \0 \0 \0 2 032 \0 3 z 267
0033376