the advanced machine language book for the commodore 64

224
8/6/2019 The Advanced Machine Language Book for the Commodore 64 http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 1/224 1 H E A D M N C E D M A C H I N E L A N G U A G E B O O K F O T H C O M M O D O R E - 6 4 b L o t h a r E n g l i s c h V D L - ^ i H f f j l . l P . r ( 3 I . L I . J M U

Upload: cubemanpdx

Post on 08-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 1/224

1 H E A D M N C E DM A C H I N E L A N G U A G EB O O K F O T H

C O M M O D O R E - 6 4

b L o t h a r E n g l i s c hV D L - ^ i H f f j l . l P . r ( 3 I . L I . J M U

Page 2: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 2/224

Page 3: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 3/224

T H A D V A N C E DM A C H I N E L A N G U A G E B O O KF O T H C O M M O D O R E 6

B Y L o t h a r E n g l i s c h

D A T A B E C K E R B O O K

A b a c u s H S o f t w a r eP . O . B O 7 2 1 1 G R A N D R A P I D S , M I C H . 4 9 5 1 0

Page 4: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 4/224

F i r s t E n g l i s h E d i t i o n , S e p t e m b e r 1 9 8 4P r i n t e d i U . S . A .C o p y r i g h t ( C ) 1 9 8 4 D a t a B e c k e r G m g H

M e r o w i n g e r s t r . 3 4 0 0 0 D u s s e l d o r f W . G e r m a n y

C o p y r i g h t ( C ) 1 9 8 4 A b a c u s S o f t w a r e , I n c .P . O . B o 7 2 1 1G r a n d R a p i d s , M 4 9 5 1 0

T h i s b o o k i c o p y r i g h t e d . N p a r t o t h i s p u b l i c a t i o n m a b r e p r o d u c e d , s t o r e d i r e t r i e v a l s y s t e m , o t r a n s m i t t e d i a n y f o r m o b y a n y m e a n s , e l e c t r o n i c ,m e c h a n i c a l o o t h e r w i s e , w i t h o u t t h p r i o r w r i t t e np e r m i s s i o n o D A T A B E C K E R o A B A C U S S o f t w a r e .

I S B N 0 - 9 1 6 4 3 9 - 0 6 - 2

Page 5: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 5/224

T a b l e o C o n t e n t s

I n t r o d u c t i o n

S E C T I O N N u m b e r s a n A r i t h m e t i c1 . N u m b e r r e p r e s e n t a t i o n o t h C o m m o d o r e 6 1 . C o n v e r s i o n t f l o a t i n g - p o i n t f o r m a t 2 1 . C o n v e r s i o n t i n t e g e r f o r m a t 2 1 . B A S I C m a t h r o u t i n e s 3 1 . B A S I C f l o a t i n g - p o i n t r o u t i n e s 4

S E C T I O N I n t e r r u p t s2 . I n t e r r u p t p r o g r a m m i n g 6 2 . T h C I 6 5 2 6 . . . . 7 42 . U s i n g t h s y s t e m i n t e r r u p t . . . 8 02 . V i d e o c o n t r o l l e r i n t e r r u p t s 1 0 2 . C I A 6 5 2 6 i n t e r r u p t s 1 1 2 . U s i n g t h t i m e r 1 1

S E C T I O N B e y o n d B A S I C3 . K e r n a l a n B A S I C e x t e n s i o n s 1 3 3 . T h B A S I C v e c t o r s 1 3 3 S t r u c t u r e d p r o g r a m m i n g 1 4 3 . U s i n g n e k e y w o r d s 1 6 3 . T h o p e r a t i n g s y s t e m v e c t o r s 1 8 3 . P r i n t e r s p o o l i n g 1 9 3 . T a b l e o B A S I C k e y w o r d s a n d t o k e n s 2 0 9

Page 6: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 6/224

Page 7: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 7/224

A d v a n c e d M a c h i n e L a n g u a g e

I n t r o d u c t i o n

T h m a t e r i a l i t h i s b o o k b u i l d s o t h f u n d a m e n t a l s o m a c h i n e l a n g u a g e p r o g r a m m i n g a f o u n d i t h b o o k T h M a c hi n L a n g u a g e B o o k f o r t h e C o m m o d o r e 6 4 I t h i s b o o k w w i l ls h o w y o h o t m a k e u s e o f m a n y t h C o m m o d o r e 6 4 ' s s p e c i a lf e a t u r e s a n c a p a b i l i t i e s u s i n g m a c h i n e l a n g u a g e .

T h b o o k i d i v i d e d i n t o t h r e e m a j o r s e c t i o n s . T h f i r s t s e c t i o n c o n c e r n s t h i n t e r n a l r e p r e s e n t a t i o n o n u b e r s o t h C o m m o d o r e 6 a n d e s c r i b e s i d e t a i l h o w t h c o m p u t e r p e r f o r m s c a l c u l a t i o n s a n d h o w i t m a t h r o u t i n e s c a b u s e d f r o m m a c h i n e l a n g u a g e . I a d d i t i o n t t h c o n v e r s i o no n u m b e r s b e t w e e n t h v a r i o u s f o r m a t s , t h e m a i n e m p h a s i s o t h i s s e c t i o n l i e s i w r i t i n g a r i t h m e t i c f u n c t i o n s w h i c h c a b u s e d f r o m B A S I C w i t h t h h e l p o f t h e U S f u n c t i o n .

T h s e c o n d s e c t i o n d e a l s w i t h s p e c i a l t y o m a c h i n el a n g u a g e : i n t e r r u p t s . A f t e r e x p l a i n i n g s o m e o t h t e r m s ,i n t e r r u p t s a r d i s c u s s e d i d e t a i l . M a n y s a m p l e p r o g r a m si l l u s t r a t e t h v a r i e t y o u s e s f o r i n t e r r u p t h a n d l i n g . A t h c l o s e o t h i s s e c t i o n , m a c h i n e l a n g u a g e p r o g r a m d e m o ns t r a t e s h o w B A S I C s u b r o u t i n e s c a n b e c o n t r o l l e d w i t h i n t e rr u p t s

T h t h i r d a n d f i n a l s e c t i o n p r e s e n t s t h c o n c e p t o v e c t o r s i b o t h t h B A S I C i n t e r p r e t e r a n k e r n a l . T h i d i v i d u a l v e c t o r s a r d e s c r i b e d a n d t h e p r o c e d u r e f o a d d i n gy o u r o w n c o m m a n d s i e x p l a i n e d . T h i m p l e m e n t a t i o n o t h R E P E A T - U N T I L s t r u c t u r e i u s e d t d e m o n s t r a t e t h i s .

Page 8: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 8/224

A d v a n c e d M a c h i n e L a n g u a g e

S E C T I O N N u m b e r s a n a r i t h m e t i c

1 . N u m b e r r e p r e s e n t a t i o n o t h C o n m o d o r e 6

Y o u r C o m m o d o r e 6 u s e s t w m e t h o d s t r e p r e s e n t n u m b e r si n t e r n a l l y :

Y o a r a l r e a d y f a m i l i a r w i t h t h f i r s t t y p e o r e p r es e n t a t i o n , w h i c h i u s e d f o v a r i a b l e s o t y p e I N T E G E R .T h e s e v a r i a b l e s c a c o n t a i n o n l y w h o l e n u m b e r s f r o m - 3 2 7 6 8t + 3 2 7 6 7 a n d c a n b r e p r e s e n t e d i t w b y t e s ( 1 b i t s ) . T h eu p p e r - m o s t o t h e s e 1 b i t s i u s e d t r e p r e s e n t t h s i g n o t h n u m b e r .

D e c i m a l- 3 2 7 6 8- 3 2 7 6 7- 3 2 7 6 6- 3 2 7 6 5

- -

3 2 7 6 63 2 7 6 7

0 0 0 0 0 0 0 0

1 1 1 1 0 0 0 0 0 0

1 1 1 1

B i n a r y0 0 0 00 0 0 00 0 0 00 0 0 0

1 1 1 11 1 1 10 0 0 00 0 0 00 0 0 0

1 1 1 11 1 1 1

0 0 0 00 0 0 00 0 0 00 0 0 0

1 1 1 11 1 1 10 0 0 00 0 0 00 0 0 0

1 1 1 11 1 1 1

0 0 0 00 0 0 10 0 1 00 0 1 1

1 1 1 01 1 1 10 0 0 00 0 0 10 0 1 0

1 1 1 01 1 1 1

H e 8 8 8 8

F F 0 0 0

7 7

0 0 0 0

F F 0 0 0

F F

T h i s t a b l e i l l u s t r a t e s h o w s i g n e d 1 6 - b i t n u m b e r s a r r e p r e s e n t e d . Y o u c a s e t h a t i t i s s i m i l a r t t h r e p r e s e nt a t i o n o s i g n e d 8 - b i t n u m b e r s w h i c h c a c o n t a i n t h v a l u e O- 1 2 8 t + 1 2 7 a n d a r e u s e d f o s u c h t h i n g s a r e l a t i v e a d

Page 9: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 9/224

A d v a n c e d M a c h i n e L a n g u a g e

d r e s s i n g .

I n t e g e r s a r e n o t s u i t e d f o c a l c u l a t i o n s w h i c h r e q u i r ef r a c t i o n a l v a l u e s o l a r g e v a l u e r a n g e . F l o a t i n g - p o i n tn u m b e r s a r u s e d f o r t h i s p u r p o s e . Y o n a b a c q u a i n t e dw i t h t h i s t y p e o r e p r e s e n t a t i o n f r o m s u c h t h i n g s a p o c k e tc a l c u l a t o r s t h a t u s s c i e n t i f i c n o t a t i o n . L e t ' s t a k e c l s e r l o o k a f l o a t i n g - p o i n t .

S i n c e w a r f a m i l i a r w i t h t h d e c i m a l s y s t e m , w e ' l lb e g i n w i t h i t I w w a n t t r e p r e s e n t n u m b e r , w f i r s ts e h o m a n y t i m e s t h b a s e o f t h i s n u m b e r s y s t e m , 1 0 i c o n t a i n e d w i t h i n t h n u m b e r a f a c t o r a n d i v i d e t h n u m b e r i n t o t w o p a r t s . e x a m p l e s h o u l d c l a r i f y t h i s :

1 1 . 1 < T 12 3 2 . 1 0 ^ 2

W h e n w e e x t e n d t h e x p o n e n t i a l r e p r e s e n t a t i o n t i n c l u d en e g a t i v e e x p o n e n t s , w c a r e p r e s e n t a l l o f t h e n u m b e r s :

5 . 1 0 " 00 . 7 . 1 0 ^ - 1

S i n c e w k n o w t h b a s e o t h n u m b e r s y s t e m , n u m b e ri t h e n r e p r e s e n t e d b i t m a n t i s s a , 7 . i t h l a s t e x a mp l e , a n d t h e e x p o n e n t , h e r e - 1 T h i s i c a l l e d n o r m a l i z e dr e p r e s e n t a t i o n . T h f a c t o r i f r o n t o f t h e e x p o n e n t i a l w a y s v a l u e b e t w e e n a n t h b a s e o f t h e n u m b e r s y s t e m ,o 1 i o u c a s e . T h c a l c u l a t i o n r u l e s o m a t h e m a t i c s a l s oa p p l y f o r t h e s e n u m b e r s : F o r e x a m p l e , t w o n o r m a l i z e df l o a t i n g - p o i n t n u m b e r s c a n b e m u l t i p l i e d t o g e t h e r b m u l t ip l y i n g t h m a n t i s s a s a n a d d i n g t h e e x p o n e n t s . I t h p r o d -

Page 10: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 10/224

A d v a n c e d M a c h i n e L a n g u a g e

u c o t h m a n t i s s a s i g r e a t e r t h a n 1 0 , a f a c t o r o f t e n i a d d e d t t h e x p o n e n t o f t h e p r o d u c t a n t h m a n t i s s a i

a d j u s t e d s t h a t i l i e s i t h r a n g e 1 - 1 0 . I w m u l t i p l yt h e l a s t t w e x a m p l e n u m b e r s t o g e t h e r , i l o o k s l i k e t h i s :

5 1 0 ^ 0 t i m e s 7 1 0 ^ - 1

B m u l t i p l y i n g t h m a n t i s s a s w g e 3 5 t h s u o f t h ee x p o n e n t s i s - 1 . T h r e s u l t i t h e r e f o r e 3 1 0 ^ - 1 . T h i sn u m b e r m u s t n o w b e n o r m a l i z e d s i n c e t h m a n t i s s a i g r e a t e rt h a n 1 0 W g e t 3 . 5 1 0 ~ 0 , o r s i m p l y 3 . 5 . T h n o r m a l i z a t i o nc a b e t h o u g h t o s i m p l y a m o v i n g t h d e c i m a l p o i n t . I o u e x a m p l e , w e m o v e d t h d e c i m a l p l a c e o n p o s i t i o n t t h e l e f ta n c o m p e n s a t e d b y i n c r e a s i n g t h e x p o n e n t b o n e . W h e ns h i f t i n g t h d e c i m a l p l a c e t t h r i g h t , t h e x p o n e n t m u s tb c o r r e s p o n d i n g l y d e c r e m e n t e d .

I w w a n t t a d o u n u m b e r s , w k n o w f r o m m a t h e m a t i c st h a t o n l y n u m b e r s w i t h t h s a m e e x p o n e n t c a n b e a d d e d . T h ee x p o n e n t s m u s t t h e r e f o r e b m a d e e q u a l .

I w m a k e b o t h e x p o n e n t s e q u i v a l e n t t t h e l a r g e r , t h ep r o c e d u r e g o e s l i k e t h i s :

F r o m 7 . 1 C T - 1 w g e 0 . 1 C T 0 . N o w n e e d t a d d t h em a n t i s s a s :

5 . 0 . 5 . 1 0 " 0

S i n c e t h n u m b e r i a l r e a d y n o r m a l i z e d , w e h a v e a r e s u l t5 . t i m e s 1 0 ^ 0 o s i m p l y 5 . 7 .

Page 11: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 11/224

A d v a n c e d M a c h i n e L a n g u a g e

I w e w a n t t p u t h i s p r o c e s s o m i c r o p r o c e s s o r , w m u s t g i v e b i t o f t h o u g h t t h o t h i s c a n b e s t b r e a l i z e d .T h p r o c e s s o r c a w o r k o n l y w i t h b i n a r y n u m b e r s , s w e f i r s tw a n t t c o n v e r t t h i s p r o c e d u r e t b i n a r y n u m b e r s .

L e t ' s s e l e c t a t h b a s e o o u n u m b e r s y s t e m . B e f o r ew e c a n i m p l e m e n t f l o a t i n g - p o i n t n u m b e r s o t h m i c r o p r o c e ss o r , w s h o u l d f i r s t d e c i d e w h a t v a l u e r a n g e o u n u m b e r sw i l l h a v e a n d t w h a t d e g r e e o a c c u r a c y t h n u m b e r s w i l l b s t o r e d . I b e c o m e s c l e a r v e r y q u i c k l y t h a t , u s i n g e x p o n e nt i a l r e p r e s e n t a t i o n , t h e x p o n e n t i t h k e t t h v a l u er a n g e , w h i l e t h m a n t i s s a d e t e r m i n e s t h o m a n y p l a c e sn u m b e r c a b r e p r e s e n t e d . W e ' l l r e t u r n l a t e r t t h s u j e c t s o a c c u r a c y a n r e p r e s e n t i n g d e c i m a l n u m b e r s i f l o a ti n p o i n t f o r m a t .

f l o a t i n g - p o i n t n u m b e r i b i n a r y r e p r e s e n t a t i o n h a s t h ef o l l o w i n g a p p e a r a n c e :

1 . 0 1 1 1 0 1 2 ^ 1 0 0 1 0o 1 . 0 1 1 1 0 1 2 ^ 1 8

w h i c h i

2 " 1 8 2 6 2 1 4 42 ^ 1 72 ~ 1 6 6 5 5 3 62 " 1 5 3 2 7 6 82 " 1 4 1 6 3 8 4

0 2 ~ 1 32 " 1 2 4 0 9 6

3 8 0 9 2 8

Page 12: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 12/224

A d v a n c e d M a c h i n e L a n g u a g e

F r a c t i o n a l b i n a r y n u m b e r s c a a l s o b u s e d . F o r e x a m p l e :

1 . 0 1 1 2 *

2 * 2 * - l2 * - 2 0 . 2 52 * - 3 0 . 1 2 5

1 . 3 7 5

I f h o w e v e r , w e w a n t t r e p r e s e n t n u m b e r s w h i c h a r s m a l l e r t h a n o n ( t h e e x p o n e n t s o w h i c h a r t h e r e f o r e l e s st h a n z e r o ) w m u s t f i n d f o r m f o r e p r e s e n t i n g s u c h e x p on e n t s . W e r e c a l l h o w w e h a v e s t o r e d n e g a t i v e n u m b e r s i t h p a s t . O n e p o s s i b i l i t y i t w o ' s c o m p l e m e n t . I w s e a s i d eo n b y t e , b i t s , f o o u e x p o n e n t s , w e c a n r e p r e s e n t p o w e r so f t w o f r o m - 1 2 8 t + 1 2 7 . T f i n d o u w h a t d e c i m a l r a n g e o v a l u e s t h i s w i l l a l l o w u s t o r e p r e s e n t , w n e e d o n l y f o r at h c o r r e s p o n d i n g p o w e r o t w o :

2 1 2 1 . 1 0 * 3 82 - 1 2 8 3 . 1 0 * - 3 9

T h u s i w r e s e r v e o n b y t e f o r t h e e x p o n e n t a n w o r k w i t hp o w e r s o f r o m - 1 2 8 t + 1 2 7 , w c a w o r k w i t h n u m b e r sw h i c h i t h d e c i m a l s y s t e m h a v e 3 p l a c e s b e f o r e t h d e i m a l p o i n t o w h i c h b e g i n a t h 3 9 t h p l a c e a f t e r t h e d e ci m a l p o i n t . T h e s e n u m b e r s t h e n c o v e r t h v a l u e r a n g e w h i c hw e a r e u s e d t i n o r m a l c a l c u l a t i o n s i B A S I C .

T h C o m m o d o r e 6 d o e s n o u s e t w o ' s c o m p l e m e n t f o i t f l o a t i n g - p o i n t n u m b e r s , b u t r a t h e r a o f f s e t . O n e a d d s t h e

Page 13: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 13/224

A d v a n c e d M a c h i n e L a n g u a g e

n u m b e r 1 2 o $ 8 ( h e x a d e c i m a l ) t e v e r y e x p o n e n t a n v i e w st h r e s u l t a s i g n - l e s s p o s i t i v e n u m b e r . T h i s s i m p l i f i e st h m a n i p u l a t i o n o e x p o n e n t s i p r a c t i c e . T h e f o l l o w i n gt a b l e g i v e s t h e a s s i g n m e n t o t h s t o r e d e x p o n e n t t o t h ea c t u a l p o w e r o t w o . W u s t h h e x a d e c i m a l r e p r e s e n t a t i o nf o r t h e s a k e o s i m p l i c i t y .

s e n t a t i c$ 0

$ 0 $ 0 $ 0 $ 7 $ 8 $ 8 $ 8 $ 8 $ F $ F

> E x p o n e n ts e e t e x t- 1 2 8- 1 2 7- 1 2 6

- -

1 2 1 2

V a l u e

3 . 5 . 1 . 0 . 2 50 .

4 . 8 .

1 1 1

1 1

" - 4 0" - 3 9" - 3 8

" 3 " 3

I t h s t o r e d v a l u e f o t h e x p o n e n t i z e r o ,b c o n v e n t i o n a l s o z e r o .

t h n u m b e r i

N o t h a t w h a v e t a k e n c a r e o t h e x p o n e n t s ,g i v e s o m e t h o u g h t t t h m a n t i s s a .

w c a

S i n c e t h m a n t i s s a d e t e r m i n e s t h n u m b e r ' s a c c u r a c y , w m u s t d e c i d e h o a c c u r a t e l y w w a n t t s t o r e o u r n u m b e r s . T h C o m m o d o r e 6 u s e s b y t e s f o t h m a n t i s s a . T h i s a l l o w s u t r e p r e s e n t 3 b i n a r y d i g i t s . W h a t s o r t o f a c c u r a c y d o e st h i s c o r r e s p o n d t f o d e c i m a l n u m b e r s ?

W c o m p a r e t h d e c i m a l v a l u e s o f t w o b i n a r y f l o a t i n g

Page 14: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 14/224

A d v a n c e d M a c h i n e L a n g u a g e

p o i n t n u m b e r s w h i c h d i f f e r o n l y i t h l a s t p l a c e .

1 . 1 1 1 1 1 1 1 1 1 1 1 m m i i m l l a n

l . m i i i i m i m m T h e t w o n u m b e r s a r d i f f e r e n t i t h l a s t p l a c e , w h i c h h a P l a c e v a l u e o f 2 ~ - 3 1 . T h i s i s i d e c i m a l , a p p r o x i m a t e l y

4 . 6 5 6 6 1 2 9 l ( T - 1 0

0 . 4 6 5 6 6 1 2 9 1 0 ~ - 9

T h t w n u m b e r s h a v e v a l u e o s o m e w h a t l e s s t h a n 2 t h e y d i f f e r b i t h 1 0 t h d e c i m a l p l a c e . W e t h e r e f o r ec o n c l u d e t h a t w e g e d e c i m a l a c c u r a c y o f a b o u t p l a c e sf r o m m a n t i s s a o b y t e s . T h i s s h o u l d s u f f i c e f o m o s ta p p l i c a t i o n s . T h a c c u r a c y o p l a c e s i r e l a t i v e a c c ur a c y , i n d e p e n d e n t o t h e x p o n e n t . I w n o r m a l i z e t h d e c i m a l n u m b e r s s o t h a t d i g i t b e t w e e n a n 9 i i f r o n to f t h e d e c i m a l p o i n t , w e c a n s t i l l r e p r e s e n t a n d i f f e r e nt i a t e b e t w e e n n u m b e r s w h i c h d i f f e r o n l y i t h n i n t h p l a c ea f t e r t h d e c i m a l .

A t h i s p o i n t w e c a n u s a e x p o n e n t b e t w e e n - 1 2 8 a n + 1 2 6 a w e l l a m a n t i s s a o b y t e s w h i c h a l l o w s d e c i m a la c c u r a c y o p l a c e s . W h a t w s t i l l l a c k i t h a b i l i t y t a c c o u n t f o r t h e s i g n o f t h e m a n t i s s a . I w e a r e t r i c k y , w c a a c c o u n t f o t h e s i g n o f t h e m a n t i s s a w i t h o u t l o s i n g a n

Page 15: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 15/224

A d v a n c e d M a c h i n e L a n g u a g e

a c c u r a c y .O u m a n t i s s a w i l l a l w a y s d i s p l a y e d a n o r m a l i z e d , m e a n

i n g t h a t d i g i t b e t w e e n o n e a n d o n l e s s t h a n t h b a s e o t h n u m b e r s y s t e m w i l l a l w a y s a p p e a r i f r o n t o t h d e c i m a lp o i n t . U s i n g t h b i n a r y s y s t e m , t h o n l y d i g i t t h a t c a na p p e a r i t h d i g i t 1 W t h e r e f o r e a s s u m e t h i s a n d d n o s a v e i t b u t u s e t h i s b i t f o r t h e s i g n . T h e u s u a l c o n v e n t i o na p p l i e s , w h e r e " 0 i n d i c a t e s p o s i t i v e n u m b e r , w h i l e" 1 d e n o t e s n e g a t i v e n u m b e r .

N o w h a v e a l t h i n f o r m a t i o n w n e e d i o r d e r t c o n v e r td e c i m a l n u m b e r s i n t o b i n a r y f l o a t i n g - p o i n t f o r m a t . L e t ' s t r t h i s w i t h s o m e n u m b e r s .

2 ~

1 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 ^

W r e p l a c e t h f i r s t i f r o n t o t h p o i n t ( " b i n a r yp o i n t " ) w i t h t h s i g n , a c c o u n t f o t h o f f s e t ( $ 8 1 ) o n t h e x p o n e n t a n g e

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1

I w w r i t e t h e x p o n e n t f i r s t , a i d o n e w h e n s t o r i n gf l o a t i n g - p o i n t n u m b e r s i t h c o m p u t e r , w g e t h f o l l o w i n gp i c t u r e :

1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 16: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 16/224

A d v a n c e d M a c h i n e L a n g u a g e

T m a k e i e a s i e r t r e a d , w c o n v e r t t h n u m b e r t h e x a d e ci m a l :

8 0 0 0 0 0

T h i s i t h r e p r e s e n t a t i o n o t h f l o a t i n g - p o i n t n u m b e r 1 . 0 .W e w i l l n o w t r t r e p r e s e n t t h n u m b e r 1 0 . 0 . W d i v i d e i i n t o p o w e r s o t w a f o l l o w s :

1 2 * 2 *

2 * 2 * 2 * 2 * 1 . 0 1 2 * b i n a r y

W i t h t h e x p o n e n t a n c o m p l e t e m a n t i s s a , w g e t h f o l l o wi n r e s u l t :

1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

8 4 2 0 0 0 0 0 0

W e w i l l t a k e n e g a t i v e n u m b e r , - 5 . 5

- 5 . 5 ( 0 . 5 )( 2 * 2 2 * 2 * - l )( 1 2 * 2 * 2 * 2 * - l )1 . 0 1 1 2 * b i n a r y

= 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1

Page 17: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 17/224

A d v a n c e d M a c h i n e L a n g u a g e

8 3 B O 0 0 0 0 0

N e g a t i v e n u m b e r s c a n b e e a s i l y r e c o g n i z e d b e c a u s e t h e f i r s tb y t e o f t h e m a n t i s s a i a l w a y s g r e a t e r t h a n o t e q u a l $ 8 0 .

W i t h t h i s k n o w l e d g e w c a e a s i l y c a l c u l a t e t h d e c i m a lv a l u e o f a n y f l o a t i n g - p o i n t n u m b e r . I w d e s i g n a t e t h i n d i v i d u a l b y t e s a f o l l o w s

E X M l M 2 M M 8 B 0 0 0 0 0

t h i s f o r m u l a g i v e s u t h e v a l u e :

- S G N ( M A N 1 2 8 ) 2 ~ ( E X - 1 2 9 )( 1 + ( ( M l A N 1 2 7 ) + ( M 2 + ( M 3 + M 4 / 2 5 6 ) / 2 5 6 ) / 2 5 6 ) / 1 2 8 )

Y o c a n s e e c l e a r l y t h a t t h e s i g n i d e r i v e d f r o m t h m o s ts i g n i f i c a n t b i o f t h e m o s t s i g n i f i c a n t b y t e o f t h e m a n t i s s a( M l ) . T h e o f f s e t o f 1 2 9 i t a k e n i n t o a c c o u n t o t h p o w e ro t w o . T h w e i g h t i n g o f t h e i n d i v i d u a l b y t e s i t a k e n i n t oa c c o u n t i t h m a n t i s s a ; s u b s e q u e n t b y t e s h a v e o n l y o n 2 5 6 t h t h v a l u e o t h p r e c e d i n g b y t e . L e u t r y o u t o u rf o r m u l a w i t h t h a b o v e f l o a t i n g - p o i n t n u m b e r .

- S G N ( 1 7 6 A N D 1 2 8 ) 2 ^ ( 1 3 1 - 1 2 9 )( 1 ( ( 1 7 6 A N D 1 2 7 ) + ( 0 + ( 0 + 0 / 2 5 6 ) / 2 5 6 ) / 2 5 6 ) / 1 2 8 )

W g e t h v a l u e - 5 . 5 b a c k a g a i n .

U t n o w h a v e h a d n p r o b l e m s i c o n v e r t i n g d e c i m a ln u m b e r s t b i n a r y f l o a t i n g - p o i n t n u m b e r s . W e w i l l n o w t r t c o n v e r t t h v a l u e 0 . 4 .

1

Page 18: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 18/224

A d v a n c e d M a c h i n e L a n g u a g e

W p r o c e e d s y s t e m a t i c a l l y a n s u b t r a c t t h e l a r g e s tp o w e r o f t w o c o n t a i n e d i t h n u m b e r .

0 . P o w e r o t w - 0 . 2 5 -

0 . 1 50 . 1 2 5 -

0 . 0 2 50 . 0 1 5 6 2 5 -

0 . 0 0 9 3 7 50 . 0 0 7 8 1 2 5 -

0 . 0 0 1 5 6 2 50 . 0 0 0 9 7 6 5 6 2 5 - 1

0 . 0 0 0 5 8 5 9 3 7 50 . 0 0 0 4 8 8 2 8 1 2 5 - 1

0 . 0 0 0 0 9 7 6 5 6 2 50 . 0 0 0 0 6 1 0 3 5 1 5 6 2 5 - 1

0 . 0 0 0 0 3 6 6 2 1 0 9 2 7 5 e t c .

W e c a n c o n t i n u e t h i s c a l c u l a t i o n a l o n g a w e w a n t t o t h r e m a i n d e r o d i v i s i o n w i l l n e v e r b e z e r o . W r e c e i v et h p e r i o d i c v a l u e

1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 . . 2 ~ - 2

1

Page 19: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 19/224

A d v a n c e d M a c h i n e L a n g u a g e

W c a n n o t r e p r e s e n t t h n u m b e r 0 . e x a c t l y a b i n a r yf l o a t i n g - p o i n t n u m b e r . W e m u s t s t o p t h s u c c e s s i o n o d i g i t sa t h e 3 1 s t p l a c e b e h i n d t h b i n a r y p o i n t a n t h e n g e t

1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 2 ~ - 2

I o r d e r t i n c r e a s e t h a c c u r a c y s o m e w h a t w w i l l n o t r u n c a t e t h e d i g i t s , b u t r a t h e r r o u n f l t h n u m b e r u o r d o w n .B i n a r y v a l u e s a r r o u n d e d u w h e n t h l a s t ( h e r e 3 2 n d ) d i g i ti 1 t h n u m b e r r e m a i n s t h s a m e f o a 0 I o u c a s e w m u s t r o u n d u p

1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 2 ^ - 2

I w n o t a k e t h e x p o n e n t a n s i g n i n t o a c c o u n t , w g e t h e f o l l o w i n g :

0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1

o i h e x a d e c i m a l

7 F 4 C C C C C C D

T h f a c t t h a t w c a n n o t e x a c t l y r e p r e s e n t a l d e c i m a ln u m b e r s w i t h b i n a r y f l o a t i n g - p o i n t n u m b e r s i n o j u s td e f e c t i b a s e 2 i i t y p i c a l p h e n o m e n o n w h e n c o n v e r t i n gf r o m o n e n u m b e r s y s t e m t a n o t h e r . T r t r e p r e s e n t t h f r a c t i o n 1 / i t h d e c i m a l s y s t e m — i t c a n n o t b d o n e e x a c tl y T h s u c c e s s i o n o d i g i t s

0 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

m u s t b t r u n c a t e d s o m e w h e r e . T h i s i n o n e c e s s a r y i

1

Page 20: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 20/224

A d v a n c e d M a c h i n e L a n g u a g e

n u m b e r s y s t e m w i t h b a s e 3 h o w e v e r . W e g e s i m p l y

0 .

w h i c h w e i n t e r p r e t a 3 ^ - 1 o e x a c t l y o n t h i r d .N o t h a t w h a v e h e a r d a b o u t t h f u n d a m e n t a l s o f l o a t

i n g - p o i n t n u m b e r s , w e w a n t u s t h e m . S i n c e l a r g e p a r t o ft h b u i l t - i n B A S I C i n t e r p r e t e r i c o n c e r n e d w i t h c o n v e r s i o nb e t w e e n v a r i o u s n u m b e r f o r m a t s a w e l l a f l o a t i n g - p o i n ta r i t h m e t i c , i m a k e s s e n s e t l e a r n h o w t u s t h e s e r o t i n e s .

T h B A S I C i n t e r p r e t e r h a t w f l o a t i n g - p o i n t a c c u m u l at o r s , u s u a l l y s h o r t e n e d t F A C , i w h i c h f l o a t i n g - p o i n tn u m b e r s a r e s t o r e d . F A C # i u s e d f o r a l l f l o a t i n g - p o i n to p e r a t i o n s . I a o p e r a t i o n s u c h a a d d i t i o n r e q u i r e s t w o p e r a n d s , t h s e c o n d i p l a c e d i F A # 2 T h r e s u l t i a l w a y s r e t u r n e d i F A # 1 F l o a t i n g - p o i n t a c c u m u l a t o r # i o f t e n d e s i g n a t e d o n l y a F A a n F A # i t h e n c a l l e d A R ( a r g u m e n t ) . T h n u m b e r s a r n o s t o r e d i t h s h o r t e n e d 5

b y t e f o r m i t h e s e f l o a t i n g - p o i n t a c c u m u l a t o r s . I n s t e a d , a a d d i t i o n a l b y t e i u s e d f o r t h e s i g n . T h b i i f r o n t o ft h b i n a r y p o i n t w h i c h i o t h e r w i s e r e p l a c e d b t h s i g n i t h e n r e c o n s t r u c t e d . F u r t h e r m o r e , r o u n d i n g b y t e i u s e d i o r d e r t f a c i l i t a t e r o u n d i n g w i t h v a r i o u s o p e r a t o r s . T h f l o a t i n g - p o i n t a c c u m u l a t o r s u s e t h e f o l l o w i n g m e m o r y l o c at i o n s i t h z e r o — p a g e :

1

Page 21: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 21/224

A d v a n c e d M a c h i n e L a n g u a g e

F A C A R GE x p o n e n t $ 6 1 $ 6 9M a n t i s s a $ 6 $ 6 M a n t i s s a $ 6 $ 6 M a n t i s s a $ 6 $ 6 M a n t i s s a $ 6 $ 6 S i g n $ 6 6 $ 6 ER o u n d i n g b y t e $ 7 S i g n - c o m p a r i s o nb y t e $ 6

T h s i g n - c o m p a r i s o n b y t e i r e q u i r e d f o o p e r a t i o n sw i t h t w o p e r a n d s a n i $ 0 0 f o r e q u i v a l e n t s i g n s a n d $ F Ff o d i f f e r e n t s i g n s .

T h B A S I C i n t e r p r e t e r h a n u m e r o u s r o u t i n e s w h i c h m a n ip u l a t e f l o a t i n g - p o i n t n u m b e r s . W e w i l l b e g i n w i t h t h e r o ut i n e w h i c h r e a d s d e c i m a l n u m b e r a n c o n v e r t s i t f l o a t i n g - p o i n t n u m b e r . T h i s r o u t i n e i u s e d f o e v e r y n u m b e ri n p u t . F i r s t w e w i l l t a k e b r i e f l o o k a r o u t i n e c a l l e d" C H R G E T " w h i c h r e a d s c h a r a c t e r f r o m a i n p u t l i n e o f r o mt h B A S I C p r o g r a m . T h r o u t i n e i l o c a t e d i t h z e r o - p a g ea n d h a s t h t a s k o f r e a d i n g c h a r a c t e r a n e x e c u t i n g v a i o u s c o m p a r i s o n s . T h r o u t i n e h a s e c o n d e n t r y p o i n t b yt h n a m e o " C H R G O T " w h i c h a l l o w s t h c h a r a c t e r l a s t r e a d t b g o t t e n a g a i n .

C H R G E T I N T X T P T RB N C H R G O TI N T X T P T R + 1

C H R G O T L D T E X TC M # " : "B C E X I TC M #

1

Page 22: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 22/224

A d v a n c e d M a c h i n e L a n g u a g e

E X I T

B E C H R G E TS E S B # $ 3 0S E S B # $ D 0R T

T h p o w e r o t h i s r o u t i n e a n t h r e a s o n i m u s t b el o c a t e d i R A i t h a t i t i s s e l f - m o d i f y i n g . T h a d d r e s s o T X T P T R , t h e p o i n t e r t t h c u r r e n t p o s i t i o n f r o m w h i c h t h c h a r a c t e r w i l l b e f e t c h e d , i f o u n d i t h r o u t i n e i t s e l f .T h i s w i l l b i m m e d i a t e l y c l e a r i w l o o k a t h m a c h i n ec o d e f o r t h i s r o u t i n e .

0 0 7 30 0 7 50 0 7 70 0 7 90 0 7 C0 0 7 E0 0 8 00 0 8 20 0 8 40 0 8 50 0 8 70 0 8 80 0 8 A

E D E A C B C F 3 E

3 E 6

7 0 7 0 2 0 23 1 2 E

3

D

I N B N I N L D C M B C C M B E S E S B S E S B R T

$ 7 $ 0 0 7 9$ 7 $ 0 2 0 2# $ 3 A$ 0 0 8 A# $ 2 0$ 0 0 7 3

# $ 3 0

# $ D 0

W h e n w c a l l t h r o u t i n e C H R G E T , t h o p e r a n d o t h e L D Ai n s t r u c t i o n a C H R G O T i i n c r e m e n t e d b o n a n t h e n t h c o n t e n t s o t h i s m e m o r y l o c a t i o n a r p l a c e d i n t o t h a c c u m ul a t o r . S e v e r a l c o m p a r i s o n i n s t r u c t i o n s f o l l o w .

1

Page 23: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 23/224

A d v a n c e d M a c h i n e L a n g u a g e

I t h A S C I I c o d e o t h c h a r a c t e r i t h a c c u m u l a t o ri g r e a t e r t h a n o r e q u a l t t h a t f o c o l o n , t h e n c o n t r o lp a s s e s d i r e c t l y t o t h e R T i n s t r u c t i o n . I t h i s c a s e , t h c a r r y f l a g i s e t . I t h c h a r a c t e r w a c o l o n , t h z e r of l a g i a l s o s e t . S i n c e t h c o l o n d e n o t e s t h e n o s t a t e m e n t , t h i s c a e a s i l y b t e s t e d f o w i t h t h z e r o f l a g .I t h c h a r a c t e r ' s A S C I I c o d e i l e s s t h a n t h a t f o c o l o n ,t h c o d e i n e x t c o m p a r e d t s p a c e ( A S C I I 3 2 ) . I t h e t e s ti p o s i t i v e , c o n t r o l i r e t u r n e d t C H R G E T — t h e n e x t c h a r a ct e i f e t c h e d . S p a c e s a r t h e r e b y i g n o r e d b t h i n t e r p r et e r . T h n e x t t w s u b t r a c t i o n s d n o c h a n g e t h v a l u e i t h a c c u m u l a t o r , b u t h e y d h a v e a e f f e c t o t h c a r r yf l a g . T h c a r r y f l a g i c l e a r e d i t h c h a r a c t e r i a A S C I Id i g i t b e t w e e n " 0 a n " 9 " , c o r r e s p o n d i n g t $ 3 a n $ 3 9 .

L e t ' s r e v i e w t h p o i n t s o t h i s r o u t i n e : t h e C H R G E Tr o u t i n e i n c r e m e n t s t h t e x t p o i n t e r T X T P T R a n r e t u r n s t h c u r r e n t c h a r a c t e r i t h a c c u m u l a t o r . I t h c h a r a c t e r i c o l o n o z e r o b y t e , w h i c h i n d i c a t e s t h e n o s t a t e m e n to t h e n o t h l i n e , r e s p e c t i v e l y , t h z e r o f l a g i s e t .I t h c h a r a c t e r w a d i g i t , t h c a r r y f l a g i c l e a r e d .

W n o w c o m e t o u c o n v e r s i o n r o u t i n e . B e f o r e w c a c a l l t h i s r o u t i n e , t h a c c u m u l a t o r m u s t c o n t a i n t h f i r s tc h a r a c t e r o t h n u m b e r a n t h f l a g s m u s t b s e a c c o r d i n gt t h C H R G E T r o u t i n e . T h t e x t p o i n t e r T X T P T R m u s t n a t u r a ll p o i n t t o u r n u m b e r . T h e f o l l o w i n g s h o r t p r o g r a m r e a d sn u m b e r a n c o n v e r t s i i n t o f l o a t i n g p o i n t f o r m a t .

1 0 0 :1 0 5 :

1 1 0 :1 2 0 :

0 3 3 C0 3 3 C

0 0 7 A0 0 7 9

T X T P T RC H R G O T

. O P T P , 0 0* 8 2

$ 7 $ 7

1

Page 24: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 24/224

A d v a n c e d M a c h i n e L a n g u a g e

1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :

B C F 30 3 3 C0 3 3 E0 3 4 00 3 4 20 3 4 40 3 4 70 3 4 A0 3 4 B0 3 5 1

A A 8 8 2 2 0 3 0

4 0 7 7 7 F

2

0 B

3

A S C F L O A TL D L D S T S T J S J S B R

N U M B E R . A S C. B Y T

$ B C F 3# < N U M B E R# > N U M B E RT X T P T RT X T P T R + 1C H R G O TA S C F L O A T

" 1 . 2 3 4 5 "

I w a s s e m b l e t h i s r o u t i n e a n e x e c u t e i f r o nw i t h

t h m o n i t o r

0 3 3 C

t h n u m b e r 1 . 2 3 4 5 i c o n v e r t e d t f l o a t i n g - p o i n t f o r m a t a n p l a c e d i F A # 1 w h i c h w c a s e w i t h

0 0 6 1 0 0 6 6

W g e t t h e f o l l o w i n g v a l u e s :

> 0 0 6 1 8 1 9 E 0 4 1 9 3 0 0

W e t r y o u 0 . a g a i n . W e m u s t p l a c e t h d i g i t s a a d d r e s s$ 0 3 4 B a n d t e r m i n a t e t h e m w i t h z e r o b y t e :

0 3 4 B 0 3 4 B

> 0 3 4 B 3 0 2 E 3 0

1

Page 25: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 25/224

A d v a n c e d M a c h i n e L a n g u a g e

W g e t h r e s u l t

> 0 0 6 1 7 F C C C C C C C C 0 0

T h e s i g n i s a v e d s e p a r a t e l y a t h s i x t h b y t e a n i z e r of o p o s i t i v e n u m b e r s . W e c a a l s o w o r k w i t h n u m b e r s r e p r e se n t e d a p o w e r s o f t e n w i t h t h i s n u m b e r c o n v e r s i o n , s u c h a - 1 . 4 E - 7 o r 1 E 1 2 . W w i l l t a k e n e g a t i v e n u m b e r a o u r n e x te x a m p l e , - 1 E 8 . N o g e

> 0 0 6 1 9 B B E B 2 0 0 F FT h i s t i m e t h n e g a t i v e s i g n i d e n o t e d b $ F F .

L e u r e t u r n b r i e f l y t t h r e s u l t o t h v a l u e 0 . 4 .W g o v a l u e t h a t w a o n l e s s i t h l a s t p l a c e t h a n w a st h c a s e f o t h m a n u a l c o n v e r s i o n . N a u t o m a t i c r o u n d i n g i p e r f o r m e d b o u r r o u t i n e ; t h r o u n d i n g b y t e i u s e d o n l y t i n d i c a t e i a o v e r f l o w i p r e s e n t i t h n e x t p l a c e s . E n t e r0 . a g a i n a n n o t e t h v a l u e o t h r o u n d i n g b y t e a l o c at i o n $ 7 0 . W g e $ 8 0 . T h i s m e a n s t h a t t h e l a s t p l a c e o f t h er e s u l t m u s t b e i n c r e m e n t e d b y o n e . T h e r e i s r o u t i n e a o u d i s p o s a l w h i c h d o e s t h i s f o u s . I f w e a d d t h i s t o u p r o g r a m , t h c o n v e r t e d v a l u e i a u t o m a t i c a l l y r o u n d e d .

1 0 0 : 0 3 3 C . O P T P , 0 01 0 5 : 0 3 3 C * 8 2 1 1 0 : 0 0 7 A T X T P T R $ 7 1 2 0 : 0 0 7 9 C H R G O T $ 7 1 3 0 : B C F 3 A S C F L O A T $ B C F 31 4 0 : B C 1 B R O U N D $ B C 1 B1 5 0 : 0 3 3 C A 9 4 B L D # < N U M B E R1 6 0 : 0 3 3 E A 0 L D # > N U M B E R1 7 0 : 0 3 4 0 8 7 S T T X T P T R

1

Page 26: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 26/224

A d v a n c e d M a c h i n e L a n g u a g e

1 8 0 : 0 3 4 2 8 7 1 8 0 : 0 3 4 4 2 7 0 2 0 0 : 0 3 4 7 2 0 F 3 B 2 1 0 : 0 3 4 A 2 I B 2 2 0 : 0 3 4 D 0 2 3 0 : 0 3 4 E 3 2 3 N U M B E R2 4 0 : 0 3 5 1 0

S T Y T X T P T R + 1J S C H R G O TJ S A S C F L O A TJ S R R O U N DB R . A S C " 1 . 2 3 4 5 ". B Y T

I w t a k e l o o k a t h F A C , w h a v e t h d e s i r e d r e s u l t .

> 0 0 6 1 7 F C C C C C C C D 0

T h r o u n d i n g b y t e i n a t u r a l l y c l e a r e d b r o u n d i n g , s o m et h i n g o w h i c h y o c a e a s i l y c o n v i n c e y o u r s e l f .

N o t h a t w h a v e c o n v e r t e d t h d i g i t s t r i n g t a i n t e r n a l f l o a t i n g - p o i n t n u m b e r , l e t ' s r e v e r s e t h p r o c e d u r eb c o n v e r t i n g f l o a t i n g - p o i n t n u m b e r b a c k i n t o s t r i n g o d e c i m a l d i g i t s . T h i s t a s k i p e r f o r m e d b t h r o u t i n eF L O A T A S C , l o c a t e d a a d d r e s s $ B D D D . C a l l i n g t h i s r o u t i n ec o n v e r t s n u m b e r t s t r i n g w h i c h i p l a c e d a a d d r e s s$ 0 1 0 0 . L e t u t r t h i s b w r i t i n g t h f o l l o w i n g v a l u e s i n t ot h F A C :

> 0 0 6 1 9 8 0 0 0 8

W e t a k e l o o k a t h r e s u l t a f t e r c a l l i n g t h r o u t i n e :

> 0 1 0 0 0 1 0 7> 0 1 0 0 2 D 3 3 3 6 3 6 3 3 0 - 3 6 6 0 8

T h a b o v e v a l u e i t h e F A C t h e r e f o r e r e p r e s e n t s t h d e c i m a ln u m b e r - 3 6 6 0 8 . A f t e r c a l l i n g t h i s r o u t i n e , t h e a c c u m u l a t o r

2

Page 27: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 27/224

A d v a n c e d M a c h i n e L a n g u a g e

a n r e g i s t e r c o n t a i n t h a d d r e s s a w h i c h t h s t r i n g w a p l a c e d ( $ 1 0 0 ) , h e r e A = a n Y = l ( l o w b y t e , h i g h b y t e ) . N o w c a o u t p u t t h s t r i n g o t h s c r e e n . A n o t h e r r o u t i n e i a l r e a d y b u i l t i n t o t h B A S I C i n t e r p r e t e r : S T R O U T , w i t h a d r e s s $ A B 1 E .

J S F L O A T A S C ; c o n v e r t F A t A S C I I s t r i n g a $ 1 0 0L D # < $ 1 0 0 ; l e a s t s i g n i f i c a n t a d d r e s s o s t r i n gL D # > $ 1 0 0 ; m o s t s i g n i f i c a n t a d d r e s s o s t r i n gJ S S T R O U T ; p r i n t s t r i n g p o i n t e d t b A ,

B e f o r e w s t a r t p e r f o r m i n g c a l c u l a t i o n s w i t h o u f l o a ti n g - p o i n t n u m b e r s , w f i r s t w a n t t b e c o m e a c q u a i n t e d w i t ht h v a r i o u s B A S I C i n t e r p r e t e r r o u t i n e s w h i c h p e r f o r m c o n v e rs i o n s f r o m v a r i o u s w h o l e - n u m b e r f o r m a t s t f l o a t i n g - p o i n tf o r m a t . T h i s i p a r t i c u l a r l y i m p o r t a n t f o o u m a c h i n e l a g u a g e p r o g r a m s b e c a u s e a l o t h a r i t h m e t i c o p e r a t i o n sw i t h i n t h B A S I C i n t e r p r e t e r a r c a r r i e d o u i f l o a t i n gp o i n t , b u t i n p u t a n d o u t p u t f o t h e s e r o u t i n e s o f t e n r e q u i r eo e x p e c t n u m b e r s i I N T E G E R f o r m a t .

2

Page 28: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 28/224

A d v a n c e d M a c h i n e L a n g u a g e

1 . C o n v e r s i o n t f l o a t i n g - p o i n t f o r m a t

1 . 2 . 1 S i g n e d o n e - b y t e v a l u e s

T h f o l l o w i n g r o u t i n e c o n v e r t s s i g n e d o n e - b y t e v a l u ei n t o f l o a t i n g - p o i n t f o r m a t . T h r e s u l t w i l l t h e r e f o r e b n u m b e r b e t w e e n - 1 2 8 a n + 1 2 7 . T h b y t e v a l u e i p a s s e d i t h a c c u m u l a t o r .

L D # B Y T EJ S $ B C 3 C

v a l u e o $ 8 w i l l b c o n v e r t e d t o - 1 2 8 , $ F t - 1 $ 7 t 1 2 7 , a n s o n

1 . 2 . 2 U n s i g n e d o n e - b y t e v a l u e s

I t h s i g n i n o t b t a k e n i n t o a c c o u n t ( t h e b y t ei t b t r e a t e d a u n s i g n e d , h a v i n g v a l u e 0 - 2 5 5 ) , t h f o l l o w i n g c o n v e r s i o n r o u t i n e m u s t b u s e d :

L D # B Y T EJ S R $ B 3 A 2

T h i s r o u t i n e c o n v e r t s $ 0 t z e r o , $ 8 t 1 2 8 , a n d $ F F t 2 5 5 .

1 . 2 . 3 S i g n e d t w o - b y t e v a l u e s

t w o - b y t e v a l u e w i t h s i g n c a n b e c o n v e r t e d w i t h t h f o l l o w i n g r o u t i n e :

2

Page 29: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 29/224

A d v a n c e d M a c h i n e L a n g u a g e

L D # L O WL D # H I G HJ S $ B 3 9 5

T h l e a s t - s i g n i f i c a n t b y t e m u s t b p l a c e d i t h r e g i s t e rw h i l e t h a c c u m u l a t o r c o n t a i n s t h m o s t - s i g n i f i c a n t b y t e .

T h f o l l o w i n g e x a m p l e s d e m o n s t r a t e t h c o n v e r s i o n :

F l o a t i n g - p o i n t v a l u e

0 0 0 0 7 8 F

0 0 F 0 F 0 F

2 5 2 5 3 2 7 6 7- 3 2 7 6 8-

1 . 2 . 4 U n s i g n e d t w o - b y t e v a l u e s

I t h s i g n o t w o - b y t e v a l u e i t b i g n o r e d , t h f o l o w i n g r o u t i n e i u s e d :

L D # L O WL D # H I G HS T $ 6 S T $ 6 L D # $ 9 0S E J S R $ B C 4 9

2

Page 30: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 30/224

A d v a n c e d M a c h i n e L a n g u a g e

T h i s c o n v e r s i o n a s s u m e s t h a t t h n u m b e r i u n s i g n e d a n r e t u r n s v a l u e s f r o m 0 - 6 5 5 3 5 .

F l o a t i n g - p o i n t v a l u e

0 0 0 0 7 8 F

0 0 F 0 F 0 F

2 5 2 5 3 2 7 6 73 2 7 6 86 5 5 3 5

1 . 2 . 5 S i g n e d t h r e e - b y t e v a l u e s

A l t h o u g h t h r e e - b y t e v a l u e s a r r a r e l y u s e d i p r a c t i c e ,t h r o u t i n e s f o c o n v e r t i n g s u c h d a t a i n t o f l o a t i n g - p o i n tf o r m a t s h o u l d b m e n t i o n e d .

L D # L O WL D # M I DL D # H I G HS T $ 6 S T $ 6 S T $ 6 L D $ 6 E O R # $ F FA S L D # $ S T $ 6 L D # $ 9 8

2

Page 31: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 31/224

A d v a n c e d M a c h i n e L a n g u a g e

J S R $ B C 4 F

T h c o n v e r s i o n t a b l e l o o k s l i k e t h i s :

F l o a t i n g - p o i n t v a l u e0 0 0 0 0 0 0 F 2 5 0 F F 6 5 5 3 57 F F 8 3 8 8 6 0 78 0 0 - 8 3 8 8 6 0 8F F F F - 1

W c a c o v e r v a l u e r a n g e f r o m - 8 , 3 8 8 , 6 0 8 t 8 3 8 8 6 0 7 w i t h3 - b y t e ( 2 4 - b i t ) v a l u e s .

1 . 2 . 6 U n s i g n e d t h r e e - b y t e v a l u e s

I t h s i g n i n o t b u s e d , t h e f o l l o w i n g r o u t i n ec a b u s e d .

L D # L O WL D # M I DL D # H I G HJ S R $ A F 8 7J S R $ A F 7 E

H e r e w c a r e p r e s e n t v a l u e s b e t w e e n a n 2 ^ 2 4 - 11 6 , 7 7 7 , 2 1 5 .

2

Page 32: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 32/224

A d v a n c e d M a c h i n e L a n g u a g e

F l o a t i n g - p o i n t f o r m a t0 0 0 0 00 0 F 2 5 0 F F 6 5 5 3 57 F F 8 3 8 8 6 0 78 0 0 0 0 8 3 8 8 6 0 8F F F 1 6 2 7 7 2 1 5

1 . 2 . 7 S i g n e d 4 - b y t e v a l u e s

F o r t h e s a k e o c o m p l e t e n e s s , t h c o n v e r s i o n o 3 2 - b i ti n t e g e r v a l u e s i a l s o p r e s e n t e d h e r e . T h r o u t i n e s l o o ks i m i l a r . B e c a u s e b y t e s m u s t b e p a s s e d , t h e r o u t i n e e x p e c t st h a t t h e s e v a l u e s w i l l b s t o r e d i t h F A f r o m a d d r e s s $ 6 ( M S B ) t o $ 6 5 ( L S B ) .

L D $ 6 E O R # $ F FA S L D # L D # $ A 0J S R $ B C 4 F

W e g e t t h f o l l o w i n g c o n v e r s i o n t a b l e :

$ 6 6 6 6 F l o a t i n g p o i n t v a l u e0 0 0 0 0 0 0 0 0 F 2 5 0 0 0 0 F F F F 6 5 5 3 50 0 F F F F F F 1 6 7 7 7 2 1 57 F F F F F 2 1 4 7 4 8 3 6 4 7 ( 2 . 1 4 7 4 8 3 6 5 E + 0 9 )8 0 0 0 0 0 0 0 - 2 1 4 7 4 8 3 6 4 8 ( - 2 . 1 4 7 4 8 3 6 5 E + 0 9 )

2

Page 33: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 33/224

A d v a n c e d M a c h i n e L a n g u a g e

F F F F F F F F

1 . 2 . 8 U n s i g n e d 4 - b y t e v a l u e s

T h i s c o n v e r s i o n r o u t i n e c o n c l u d e s t h p r e s e n t a t i o n .H e r e t o o t h e v a l u e s m u s t b e p l a c e d i t h F A C .

S B L D # L D # $ A 0J S R $ B C 4 F

T h v a l u e r a n g e f r o m t 2 ^ 3 2 - 1 4 , 2 9 4 , 9 6 7 , 2 9 5 c a b u s e d .

$ 6 6 3 6 4 6 5 F l o a t i n g - p o i n t v a l u e0 0 0 0 0 00 0 0 0 0 F 0 0 F F 0 F F F F F F7 £ F F F F8 0 0 0 F F F F F F

2 5 6 5 5 3 51 6 7 7 7 2 1 52 1 4 7 4 8 3 6 4 72 1 4 7 4 8 3 6 4 84 2 9 4 9 6 7 2 9 5

( 2 . 1 4 7 4 8 3 6 5 E + 0 9 )( 2 . 1 4 7 4 8 3 6 5 E + 0 9 )( 4 . 2 9 4 9 6 7 3 E + 0 9 )

T h r o u t i n e s d e s c r i b e d h e r e a r u s e f u l i y o u w a n t t u s e o n e t f o u r - b y t e v a l u e s f r o m y o u r o w m a c h i n e l a n g u a g er o u t i n e s a a r g u m e n t s f o t h f l o a t i n g - p o i n t r o u t i n e s i t h B A S I C i n t e r p r e t e r . T h r e v e r s e p r o c e d u r e — c o n v e r t i n g f r o mf l o a t i n g - p o i n t v a l u e s t i n t e g e r n u m b e r s — w i l l n o w b e d i c u s s e d .

2

Page 34: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 34/224

Page 35: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 35/224

A d v a n c e d M a c h i n e L a n g u a g e

W g e t h r e s u l t

> 0 0 6 1 8 0 0 0 4 1 0 0

o $ 4 $ 1 0 0 6 2 5 3 2 1 . W i t h n e g a t i v e f r a c t i o n a ln u m b e r s , t h r e s u l t w i l l b n e x t - s m a l l e s t w h o l e n u m b e r , s t h a t - 0 . 5 b e c o m e s - 1

E M M M M S G > 0 0 6 1 8 0 8 0 0 0 0 0 0 0 F F

W g e t t h e r e s u l t

> : 0 0 6 1 8 F F F F F F F

o - 1

W w i l l l a t e r b e c o m e a c q u a i n t e d w i t h B A S I C i n t e r p r e t e rr o u t i n e s w h i c h p e r f o r m r a n g e c h e c k s b e f o r e t h c o n v e r s i o n t i n t e g e r f o r m a t , o t h r a n g e s t 2 5 o - 3 2 7 6 8 t 3 2 7 6 7 ,f o e x a m p l e .

2

Page 36: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 36/224

A d v a n c e d M a c h i n e L a n g u a g e

1 . B A S I C a a t h r o u t i n e s

N o t h a t w e h a v e c o v e r e d i n p u t , o u t p u t , a n d c o n v e r s i o no n u m b e r s , i t i s t i m e t h a t w e x e c u t e t h e f i r s t c a l c u l at i o n s .

T h i n t e r p r e t e r h a f i v e b a s i c a r i t h m e t i c o p e r a t i o n s ,e a c h h a v i n g t w o p e r a n d s , w h i c h a r a d d i t i o n , s u b t r a c t i o n ,m u l t i p l i c a t i o n , d i v i s i o n , a n d e x p o n e n t i a t i o n . I w e w a n t t u s t h e s e f u n c t i o n s , t h e f i r s t o p e r a n d m u s t b i t h e F A Cw h i l e t h s e c o n d i e x p e c t e d i A R G . A f t e r c a l l i n g t h a p p r o p r i a t e r o u t i n e , t h r e s u l t i l e f t i t h F A C . T h e s ea r t h a d d r e s s e s o f t h e r o u t i n e s :

A D D I T I O N F A : A R F A $ B 8 6 AS U B T R A C T I O N F A : A R F A $ B 8 5 3M U L T I P L I C A T I O N F A : A R F A $ B A 2 BD I V I S I O N F A : A R F A $ B B 1 2E X P O N E N T I A T I O N F A : A R F A $ B F 7 B

B e f o r e c a l l i n g t h e s e r o u t i n e s , t h a c c u m u l a t o r m u s tc o n t a i n t h e x p o n e n t o f t h e n u m b e r i t h F A C ( $ 6 1 ) . I t h i s e x p o n e n t i z e r o , t h e n u m b e r i t h F A i b y c o n v e nt i o n a l s o z e r o a n s p e c i a l c a s e s c a b h a n d l e d ( A R G + A R G ; A R * 0 A R r e s u l t s i " D I V I S I O N B Z E R O " ; A R

y i e l d s 1 ) N o l e t ' s m u l t i p l y t w v a l u e s , s u c h a 7 * 1 39 1

7 8 E 0 0 0 0 0 0 01 8 4 D O 0 0 0 0 0 0

W p l a c e t h v a l u e s i t h f l o a t i n g - p o i n t a c c u m u l a t o r s , l o a dt h a c c u m u l a t o r w i t h t h e x p o n e n t o t h F A C , a n c a l l t h e

3

Page 37: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 37/224

A d v a n c e d M a c h i n e L a n g u a g e

r o u t i n e .

> 0 0 6 1 8 E 0 0 0 0 > 0 0 6 9 8 D 0 0 0 0 0 0

> 1 0 0 0 A 6 L D $ 6 > 1 0 0 2 2 2 B J S $ B A 2 B> 1 0 0 5 0 B R

> 1 0 0 0

B P I R S A X Y S N V - B D I Z C

> 1 0 0 6 E A 3 1 A O 8 7 B 0 F 1 0 1 0 0 0 0 0

> 0 0 6 1 8 B 0 0 0 0 0 0 0 0

N o w e c a n c o n v e r t t h r e s u l t i n t o d e c i m a l n u m b e r .

1 . 0 1 1 0 1 1 0 2 ^ 1 0 1 1 0 1 16 1 8 9

N e x t w e w i l l t r e x p o n e n t i a t i o n . 3 ~ s h o u l d e q u a l 2 1 8 7 .

8 C 0 0 0 0 0 08 E E 0 0 0 0 0 0 0 0

W c a p a s s t h v a l u e s a n c a l l t h e e x p o n e n t i a t i o n r o u t i n e .

> 0 0 6 1 8 3 E 0 0 0 0 0 0 0 0 0> 0 0 6 9 8 2 C O 0 0 0 0 0 0 0 0

3

Page 38: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 38/224

A d v a n c e d M a c h i n e L a n g u a g e

> 1 0 0 0> 1 0 0 2> 1 0 0 5

> 1 0 0 0

A 2 0

6 7 B

L D J S B R

$ 6 $ B F 7 B

B P I R Q S R A X Y S N V - B D I Z C

> 1 0 0 6 E A 3 1 2 0 6 1 0 0 F 1 0 1 0 0 0 0 0

> 0 0 6 1 8 8 B 0 0 2 0 0 0 0

W g e

1 . 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 * 1 11 0 0 0 1 0 0 0 1 0 1 1 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

2 * 1 1 2 * 2 * 2 * 2 * 2 * - 1 92 0 4 8 1 2 + + + 1 . 9 * 1 0 * - 62 1 8 7 . 0 0 0 0 0 1 9

Y o u s e e t h a t t h e r e s u l t i n o e x a c t — t h e r e i s d e v i a t i o ni t h e l a s t t w o p l a c e s . S i n c e o n l y s i g n i f i c a n t d i g i t s a r d i s p l a y e d w h e n c o n v e r t i n g f r o m b i n a r y t d e c i m a l , w e r e c e i v ef r o m t h f o l l o w i n g i n s t r u c t i o n

P R I N T 3 *

t h r e s u l t 2 1 8 7 , a l t h o u g h t h c a l c u l a t i o n

P R I N T 3 * 2 1 8 7

3

Page 39: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 39/224

A d v a n c e d M a c h i n e L a n g u a g e

r e s u l t s i

1 . 9 0 7 3 4 8 6 3 E - 0 6

w h i c h r e v e a l s t h d i s c r e p a n c y . I w a n a l y z e t h r o u t i n e f o e x p o n e n t i a t i o n i g r e a t e r d e t a i l , w e s e e t h a t t h e f o l l o w i n ga l g o r i t h m i u s e d :

= E X P ( B L O G ( )

B e c a u s e t h B A S I C i n t e r p r e t e r c a o n l y c a l c u l a t e a p p r o x i m at i o n s f o r t h E X P a n d L O f u n c t i o n s — a s w w i l l s e l a t e r —i t i s n w o n d e r t h a t e x p o n e n t i a t i o n r e t u r n s d i s c r e p a n c y .S i n c e t w o t h e r f u n c t i o n s m u s t b c a l c u l a t e d f o r t h e e x p o ne n t i a t i o n f u n c t i o n , t h i s r o u t i n e i a l s o o n e o t h s l o w e s ta r i t h m e t i c r o u t i n e s . I r e q u i r e s m o r e t h a n 5 m i l l i s e c o n d so a v e r a g e . T h e r e f o r e i i a d v i s a b l e t p e r f o r m e x p o n e n t i at i o n s w i t h s i m p l e , i n t e g e r e x p o n e n t s w i t h r e p e a t e d m u l ti p l i c a t i o n , b o t h f o t h s a k e o s p e e d a n a c c u r a c y .

~ s h o u l d b c a l c u l a t e d a 3

T h m u l t i p l i c a t i o n h e r e i m o r e t h a n 2 t i m e s f a s t e r .s u m m a r y o e x e c u t i o n t i m e s w i l l b p r e s e n t e d l a t e r .

S t h a t w e c a n m a k e p r a c t i c a l u s o o u k n o w l e d g e , w w i l l f i r s t t a k e l o o k a t h w a t h B A S I C i n t e r p r e t e rm a n a g e s v a r i a b l e s . n u m b e r o p o i n t e r s e x i s t i t h z e r o -p a g e f o m a n a g i n g v a r i a b l e s . T h e s e p o i n t e r s d e t e r m i n e t h a r e a s f o r t h e B A S I C p r o g r a m , n o r m a l v a r i a b l e s , i n d e x e d v a i a b l e s , a n d s t r i n g s . T h v a r i a b l e p o i n t e r s a r a r r a n g e d a f o l l o w s .

3

Page 40: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 40/224

A d v a n c e d M a c h i n e L a n g u a g e

$ 2 B / $ 2 C

$ 2 D / $ 2 E

$ 2 F / $ 3 0

$ 3 1 / $ 3 2

$ 3 3 / $ 3 4

$ 3 7 / $ 3 8

P r o g r a n

V a r i a b l e s

A r r a y s

f r e e

s t r i n g s

B A S I C s t a r t

p r o g r a m e n d / v a r i a b l e s t a r t

v a r i a b l e e n d / a r r a y s t a r t

a r r a y e n

s t r i n g s t a r t

s t r i n g e n d / B A S I C R A N e n

3

Page 41: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 41/224

A d v a n c e d M a c h i n e L a n g u a g e

A f t e r t u r n i n g o n t h e c o m p u t e r , t h s t a r t o f t h e B A S I Ct e x t a r e a i s e t $ 0 8 0 1 2 0 4 9 a n d t h e n t $ A 0 0 04 0 9 6 0 . W h e n y o e n t e r p r o g r a m l i n e

1 A =

t h f o l l o w i n g i a l l o c a t e d :

A t h B A S I C s t a r t $ 0 8 0 1 i

a d d r e s s o f t h e n e x t B A S I C l i n el i n e n u m b e r ( L S B , M S B )t o k e n i z e d p r o g r a m l i n e$ 0 s i g n i f y i n g t h e n o f t h i s l i n e

F r o m t h m o n i t o r t h i s l o o k s l i k e :

> 0 8 0 0 0 8 0 F> 0 8 0 0 0 0 0 9 0 8 0 0 0 4 1 B 2 3 > 0 8 0 8 0 0 0 0 0

T h p r o g r a m p o i n t e r s h a v e t h f o l l o w i n g v a l u e s :

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 0 0 0 0 0 0 > 0 0 3 3 0 0 A 0 0 0 0 0 0 0 A 0

W w i l l t r t i n t e r p r e t t h e s e c o n t e n t s . A a d d r e s s( $ 2 B / $ 2 C ) $ 0 8 0 1 i t h a d d r e s s o f t h e n e x t p r o g r a m l i n e i t h f o r m a t l o / h i , o $ 0 8 0 9 . T h e n f o l l o w s t h e l i n e n u m b e r ,a l s o i l o / h i f o r m a t $ 0 0 0 A 1 0 N e x t i t h p r o g r a m t e x t$ 4 " A " , $ B i t h i n t e r p r e t e r c o d e f o " = " , w h i l e $ 3 i M l i A S C I I c o d e . z e r o b y t e s e r v e s t m a r k t h e n o t h

3

Page 42: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 42/224

A d v a n c e d M a c h i n e L a n g u a g e

l i n e . T h n e x t p r o g r a m l i n e f o l l o w s t h s a m e s c h e m e . B u b e c a u s e w e n t e r e d o n l y o n p r o g r a m l i n e , w e f i n d $ 0 0 0 0 a t h a d d r e s s o f t h e n e x t p r o g r a m l i n e . B c o n v e n t i o n t h i sd e n o t e s t h e n o t h p r o g r a m . T h a d d r e s s f o l l o w i n g ,$ 0 8 0 B , i s t o r e d i ( $ 2 D / $ 2 E ) a n d d e n o t e s b o t h t h e e n d o ft h p r o g r a m a n t h s t a r t o f t h e n o r m a l v a r i a b l e s . S i n c e w eh a v e n o d e f i n e d a n v a r i a b l e s , t h p o i n t e r s f o t h v a r i a bl e n a n a r r a y e n h a v e t h s a m e v a l u e . I w e x e c u t e t h p r o g r a m w i t h R U N , t h v a r i a b l e i a l l o c a t e d .

> 0 8 0 0 0 8 1 0> 0 8 0 0 0 0 9 0 8 0 A 0 0 4 1 B 3 > 0 8 0 8 0 0 0 0 0 4 1 0 8 1 0 0 0 > 0 8 1 0 0 0 0 0

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 0 B 0 8 1 0 1 0 > 0 0 3 3 0 0 A 0 0 0 0 0 A 0

N o t h s t a r t - o f - v a r i a b l e s p o i n t e r ( $ 2 D / $ 2 E ) p o i n t s t $ 0 8 0 B a n t h e n d - o f - v a r i a b l e s p o i n t e r ( $ 2 F / $ 3 0 ) t $ 0 8 1 2 .T h u s t h v a r i a b l e t a b l e i $ 0 8 1 2 $ 0 8 0 B $ 0 0 0 7 b y t e sl o n g a n h a t h f o l l o w i n g c o n t e n t s :

> 0 8 0 B 4 0 8 1 0 0 0 0 0 0 0

V a r i a b l e e n t r i e s a r g e n e r a l l y b y t e s l o n g . T h e f i r s tt w b y t e s r e p r e s e n t t h n a m e o t h v a r i a b l e , i t h i s c a s e$ 4 1 $ 0 0 A V a r i a b l e n a m e s w h i c h a r o n l y o n c h a r a c t e rl o n g c o n t a i n z e r o a t h s e c o n d c h a r a c t e r . F o l l o w i n g t h n a m e i t h f l o a t i n g p o i n t r e p r e s e n t a t i o n o f t h e v a l u e i t h a b b r e v i a t e d 5 - b y t e f o r m i w h i c h t h s i g n i t h f i r s tb i o t h m a n t i s s a . T h v a l u e 8 0 0 0 0 0 0 0 0 h a d e c i m a l

3

Page 43: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 43/224

A d v a n c e d M a c h i n e L a n g u a g e

e q u i v a l e n t o 1

W w i l l n o w t a k e l o o k a w h a t h a p p e n s w h e n w e u s ei n t e g e r v a r i a b l e s . W c h a n g e o u p r o g r a m l i n e t

1 A * = l

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 0 0 1 0 1 0 > 0 0 3 3 0 A 0 0 0 0 0 0 0 A 0

> 0 8 0 0 0 8 1 0> 0 8 0 0 0 0 0 A 0 8 0 0 4 2 B > 0 8 0 8 3 0 0 0 0 0 0 C l 8 0 0 0 0 > 0 8 1 0 0 0 0 0 0

T h p r o g r a m h a b e c o m e o n b y t e l o n g e r b e c a u s e o t h p e r c e n t s i g n . T h v a r i a b l e e n t r y i s t i l l b y t e s l o n g . D r e c o g n i z e t h n a m e A o A i t h t a b l e ? I y o u c o m p a r e t h b i p a t t e r n $ C 1 $ 8 0 w i t h $ 4 $ 0 0 , y o u s e e t h a t t h e m o s ts i g n i f i c a n t b i ( b i t 7 o b o t h b y t e s i s e t . T h i s i h o i n t e g e r v a r i a b l e s a r e d e n o t e d . T h e n e x t t w b y t e s c o n t a i nt h 1 6 - b i t i n t e g e r v a l u e $ 0 0 0 1 , i w h i c h t h m o s t - s i g n i f ic a n t b y t e c o m e s f i r s t . T h n e x t t h r e e b y t e s a r u n u s e d f o i n t e g e r v a r i a b l e s . T h e r e f o r e w h e n y o w o r k w i t h n o r m a l i n e g e r v a r i a b l e s , t h e r e i n s p a c e s a v i n g s . U s i n g i n t e g e rv a r i a b l e s d o e s n o t i n c r e a s e t h s p e e d e i t h e r — i n f a c t , j u s tt h o p p o s i t e s i n c e a l l o f t h e m a t h o p e r a t i o n s a r p e r f o r m e di f l o a t i n g - p o i n t a r i t h m e t i c a n d t h a t a d d i t i o n a l c o n v e r s i o na r n e c e s s a r y .

L e u m o v e o n t o t h s t r i n g v a r i a b l e s . E n t e r t h f o l l o w i n g p r o g r a m l i n e :

3

Page 44: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 44/224

A d v a n c e d M a c h i n e L a n g u a g e

1 A $ = M S T R I N G "

R U t h p r o g r a m a n d t a k e l o o k a t h r e s u l t w i t hm o n i t o r .

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 1 0 1 0 1 0 > 0 0 3 3 0 A 0 0 0 0 0 A

> 0 8 0 0 0 8 1 0> 0 8 0 0 0 1 0 8 0 A 0 4 2 B > 0 8 0 8 2 5 5 5 4 4 E 4 7 2 > 0 8 1 0 0 0 0 0 0 4 8 0 0 9 0 8> 0 8 1 8 0 0

I y o t a k e l o o k a t h p o i n t e r f o r t h e s t r i n g a r e a , y o s e t h a t n o t h i n g h a b e e n a l t e r e d . T h v a r i a b l e t a b l e b e g i n sa $ 0 8 1 3 a n d l o o k s l i k e t h i s :

> 0 8 1 3 4 1 8 0 0 6 0 9 0 8 0 0 0 0

T h f i r s t t w b y t e s a g a i n r e p r e s e n t t h n a m e o t h v a r i a b l e . Y o u h a v e p r o b a b l y a l r e a d y n o t i c e d t h a t t h e m o s ts i g n i f i c a n t b i o t h s e c o n d b y t e o t h v a r i a b l e n a m e i s e i o r d e r t d e n o t e s t r i n g v a r i a b l e — $ 4 1 $ 0 b e c o m e s$ 4 $ 8 0 . T h n e x t t h r e e v a l u e s c a n b e i n t e r p r e t e d a f o l o w s : T h e f i r s t v a l u e , $ 0 6 , g i v e s t h l e n g t h o t h s t r i n g :

c h a r a c t e r s . T h e n e x t t w o b y t e s p o i n t t t h a d d r e s s a w h i c h t h s t r i n g c a n b e f o u n d : $ 0 8 0 9 . T h u s t h e y p o i n t t a a r e a w i t h i n t h p r o g r a m , d i r e c t l y b e h i n d t h e f i r s t q u o t a t i o nm a r k . T h i s i a l s o t h r e a s o n t h a t t h s t r i n g a r e a i s t i l le m p t y . T h e s i t u a t i o n c h a n g e s i w m o d i f y t h s t r i n g , h o w -

3

Page 45: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 45/224

A d v a n c e d M a c h i n e L a n g u a g e

e v e r , a w s e i t h n e x t e x a m p l e :

1 A M S T R I N G t f2 A $ = L E F T $ ( A $ , 3 )

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 8 2 2 0 2 9 0 8 2 9 0 8> 0 0 3 3 F 9 0 A 0 A

> 0 8 0 0 0 8 1 0> 0 8 0 0 0 1 0 O 0 4 2 4 B 2> 0 8 0 8 2 2 5 3 5 4 5 2 4 4 4 2 > 0 8 1 0 0 2 0 1 0 0 4 1 2 4 B 2> 0 8 1 8 C 2 4 1 2 4 2 C 3 3 2 0 > 0 8 2 0 0 0 4 1 8 0 0 3 F D 9 0 > 0 8 2 8 0

T h v a r i a b l e t a b l e b e g i n s a $ 0 8 2 2 .

> 0 8 2 2 4 8 0 F 9 0 0

F o l l o w i n g t h v a r i a b l e n a m e i t h l e n g t h ( t h i s t i m e ) a n t h a d d r e s s o f t h e s t r i n g , $ 9 F F D , w h i c h i a l s o t h l o w e rb o u n d a r y o f t h e s t r i n g s t o r a g e . I w e l o o k t h e r e , w f i n do u n e s t r i n g " S T R M .

> 9 F F D 5 5 5

H o a r v a r i a b l e a r r a y s o r g a n i z e d ? E r a s e t h c u r r e n t p r o g r a m( w i t h N E W ) a n e n t e r t h f o l l o w i n g :

1 D I A ( 5 0 0 )R U

3

Page 46: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 46/224

A d v a n c e d M a c h i n e L a n g u a g e

W g e t t h e f o l l o w i n g s t o r a g e a l l o c a t i o n :

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 1 0 1 0 E 1 > 0 0 3 3 0 A 0 0 0 0 0 0 0 A

S i n c e n n o n - a r r a y v a r i a b l e s a r e d e f i n e d , t h e s t a r t i n g a n e n d i n g p o i n t e r s h a v e t h s a m e v a l u e , $ 0 8 1 0 . T h i s i a l s o t h s t a r t o f t h e a r r a y a r e a . T h a r r a y a r e a e x t e n d s t $ 1 1 E O ,a n i t h e r e f o r e $ 1 1 E O $ 0 8 1 0 $ 0 9 D 0 2 5 1 2 b y t e s l o n g .T h s t a r t l o o k s l i k e t h i s :

> 0 8 1 0 0 8 2 0> 0 8 1 0 4 0 D 0 0 1 0 1 F 0 > 0 8 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 > 0 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

T h n a m e o f t h a r r a y i e n c o d e d i t h f i r s t t w b y t e s . T h e f o l l o w i n g t w b y t e s c o n t a i n t h l e n g t h o t h m e m o r y o c c u p i e d b t h a r r a y , $ 0 9 D 0 , w h i c h w c a l c u l a t e da b o v e . T h e n e x t " 0 1 " i n d i c a t e s t h a t t h a r r a y h a s o n e d i m e ns i o n . N e x t i t h n u m b e r o a r r a y e l e m e n t s , $ 0 1 F 5 5 0 1 .T h e r e a r e f i v e h u n d r e d a n o n b e c a u s e a e l e m e n t e x i s t sw i t h t h i n d e x 0 A ( 0 ) . F i n a l l y , t h v a l u e s o t h a r r a ye l e m e n t s a r s t o r e d s t a r t i n g w i t h t h e z e r o e l e m e n t . I w e n t e r A ( 0 ) = 1 0 : A ( 1 ) = 1 1 i t h d i r e c t m o d e , t h e r e p r e s e n t a t i o na p p e a r s a f o l l o w s :

> 0 8 1 0 0 8 2 0> 0 8 1 0 4 1 0 0 D 0 0 0 F 8 > 0 8 1 8 2 0 0 0 0 0 0 8 3 0 0 > 0 8 2 0 0 0 0 0 0 0 0 0

4

Page 47: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 47/224

A d v a n c e d M a c h i n e L a n g u a g e

8 2 0 0 0 0 0 0 = 1 0 8 3 0 0 0 0 0 0 0 = > 1 1

N o l e t ' s s e e h o m u l t i - d i m e n s i o n a l a r r a y s a r s t o r e d .E n t e r

D I M B ( l , 2 , 3 )

i t h d i r e c t m o d e . T h a r r a y t a b l e s t a r t s a $ 0 8 0 3 a n l o o k s l i k e t h i s :

> 0 0 2 B 0 0 3 7> 0 0 2 B 0 0 8 0 3 0 0 0 8 8 6 0 8> 0 0 3 3 0 0 A 0 0 0 0 0 0 A

> 0 8 0 3 0 8 1 3> 0 8 0 3 4 0 8 3 0 0 0 3 0 0 0 0 > 0 8 0 B 0 0 0 2 0 0 0 0 0 0 0 0 > 0 8 1 3 0 0 0 0 0 0 0 0 0 0 0 0

W r e c o g n i z e t h n a m e " B ( $ 4 2 ) . T h e l e n g t h o f t h ea r r a y t a b l e i $ 0 0 8 3 1 3 b y t e s t h i s t i m e . T h e n c o m e sw h i c h i n d i c a t e s t h a t t h a r r a y i t h r e e - d i m e n s i o n a l . N e x ta r e t h e i n d e x b o u n d a r i e s , b e g i n n i n g w i t h t h l a s t i n d e x$ 0 0 0 4 , t h e n $ 0 0 0 3 , a n d $ 0 0 0 2 c o r r e s p o n d i n g t 3 2 a n 1 H o a r t h e s e v a l u e s a l l o c a t e d ? T h i s i t h o r d e r i w h i c ht h i n d i v i d u a l a r r a y e l e m e n t s a r e s t o r e d :

B ( 0 , 0 , 0 )B ( l , 0 , 0 )B ( 0 , l , 0 )

B ( 0 , 2 , 0 )B ( l , 2 , 0 )

4

Page 48: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 48/224

A d v a n c e d M a c h i n e L a n g u a g e

B ( O , O , 1 )

B ( 0 , 2 , l )

B ( 0 , 0 , 2 )B ( l , 0 , 2 )B ( 0 , l , 2 )

B ( 0 , 2 , 2 )B ( l , 2 , 2 )B ( 0 , 0 , 3 )B ( l , 0 , 3 )B ( 0 , l , 3 )

B ( 0 , 2 , 3 )B ( l , 2 , 3 )

I w u s a r r a y s w i t h i n t e g e r v a r i a b l e s , o n l y b y t e sa r r e s e r v e d f o e a c h a r r a y e l e m e n t , r e s u l t i n g i n s p a c es a v i n g s c o m p a r e d t f l o a t i n g p o i n t a r r a y s . O n l y t h r e e b y t e sp e e l e m e n t a r u s e d f o s t r i n g a r r a y s . T h e f i r s t b y t er e p r e s e n t s t h l e n g t h o t h i n d i v i d u a l s t r i n g e l e m e n t a n t h n e x t t w b y t e s g i v e t h a c t u a l m e m o r y a d d r e s s o f t h es t r i n g . N s p a c e i u s e d f o r t h e s t r i n g s t h e m s e l v e s u n t i lt h e y a r e a c t u a l l y a s s i g n e d v a l u e s . U s i n g t h i s i n f o r m a t i o n w c a s t a t e t h s p a c e r e q u i r e m e n t s o f a n y a r r a y :

2 * P R O D ( N i + l )

i t h r e q u i r e d m e m o r y s p a c e o f t h e e n t i r e a r r a y , i t h " M m b e r o d i m e n s i o n s , i t h s p e c i f i e d s p a c e r e q u i r e m e n tn

4

Page 49: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 49/224

A d v a n c e d M a c h i n e L a n g u a g e

p e e l e m e n t ( f o r i n t e g e r , f o r e a l , a n f o s t r i n g )a n P R O D ( N i + l ) t h p r o d u c t o f t h e i n d e x b o u n d a r i e s 1

T h f o l l o w i n g e x a m p l e s s h o u l d c l a r i f y t h f o r m u l a :

T h c o n s t a n t i b a s e d o b y t e s f o r t h e n a m e ,b y t e s f o r t h e l e n g t h , a n o n b y t e f o r t h e n u m b e r o d i m e ns i o n s . T w b y t e s a r r e q u i r e d f o e a c h d i m e n s i o n f o r t h ei n d e x b o u n d a r i e s . T h s p a c e f o t h e l e m e n t s t h e m s e l v e s i c o n t a i n e d i t h l a s t t e r m . L e t ' s t r y o u f o r m u l a f o t h f i r s t a r r a y A ( 5 0 0 ) .

2 * 5 * ( 5 0 1 )2 5 1 2 b y t e s

O u t h r e e d i m e n s i o n a l a r r a y B ( l , 2 , 3 ) r e q u i r e s t h f o l l o w i n gs p a c e i m e m o r y :

2 * 5 * ( 2 * 3 * 4 )1 3 b y t e s

T h a r r a y A * ( 1 0 , 1 0 , 1 0 ) r e q u i r e s t h f o l l o w i n g m e m o r y s p a c e :

5 2 * 2 * ( 1 1 * 1 1 * H )2 6 7 3 b y t e s

s t r i n g a r r a y A $ ( 1 0 0 , 1 0 0 ) w o u l d h a r d l y f i i n t o m e m o r y .

5 2 * 3 * ( 1 0 1 * 1 0 1 )3 0 6 0 3 b y t e s

T h a r r a y t a b l e a l o n e r e q u i r e s 3 0 b y t e s ; t h e r e a r o n l y 8 b y t e s l e f t f o r t h e 1 0 2 0 1 e l e m e n t s .

4

Page 50: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 50/224

A d v a n c e d M a c h i n e L a n g u a g e

1 . B A S I C f l o a t i n g - p o i n t r o u t i n e s

N o t h a t w k n o w h o w t e x e c u t e t h f u n d a m e n t a l f l o a ti n g - p o i n t c a l c u l a t i o n s i B A S I C , i t i s t i m e t l o o k a t h f u n c t i o n s .

f u n c t i o n c a b w r i t t e n i g e n e r a l a

F ( X )

i w h i c h i t h a r g u m e n t , i t h f u n c t i o n , a n d Y i t h r e s u l t . T h e f l o a t i n g p o i n t f u n c t i o n s a r w r i t t e n s u c h t h a tt h a r g u m e n t m u s t b p l a c e d i t h e F A C b e f o r e t h f u n c t i o nc a n b e c a l l e d . T h e r e s u l t o t h f u n c t i o n c a l l i p l a c e db a c k i n t o t h e F A C .

T h B A S I C i n t e r p r e t e r c o n t a i n s n u m b e r o u s e f u l f u n ct i o n s w h i c h w e c a n u s e :

N a m eA B A T C O E X F R I N L O P O R N S G S I S Q T A

A d d r e s s$ B C 5 8$ E 3 0 E$ E 2 6 4$ B F E D$ B 3 7 D$ B C C C$ B 9 E A$ B 3 9 E$ E 0 9 7$ B C 3 9$ E 2 6 B$ B F 7 1$ E 2 B 4

C a l c u l a t i o n t i m e0 . m

4 4 . 6 m 2 7 . 9 m 2 6 . 6 m

0 . m 0 . m

2 2 . 2 m 0 . m 3 . m 0 . 4 m s

2 4 . 5 m 5 1 . 2 m 4 9 . 8 m

D e s c r i p t i o na b s o l u t e v a l u ea r c t a n g e n tc o s i n ep o w e r o f r e e m e m o r y s p a c eg r e a t e s t - i n t f u n c t i o nn a t u r a l l o g a r i t h mc u r s o r c o l u m nr a n d o m n u m b e rs i g ns i n es q u a r e r o o tt a n g e n t

4

Page 51: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 51/224

A d v a n c e d M a c h i n e L a n g u a g e

T h c a l c u l a t i o n t i m e s w e r e o b t a i n e d u s i n g p a t h a r g u m e n t . A y o c a s e e f r o m t h t a b l e , t h e v a r y e n o r m o u sl y A b o v e a l l , t h s o - c a l l e d t r a n s c e n d e n t a l f u n c t i o n s s u c ha C O S , E X P , L O G , S I N , T A N , a n d A T N r e q u i r e r e l a t i v e l yl a r g e a m o u n t o t i m e . T h e s e f u n c t i o n s c a n n o t b c a l c u l a t e de x a c t l y u s i n g t h e f o u r b a s i c m a t h o p e r a t o r s . M o s t f u n c t i o n sa r a p p r o x i m a t e d u s i n g p o l y n o m i a l s , w h i c h a r f u n c t i o n s o t h f o r m

a a i * x a 2 * x 2 8 3 * x 3 a 4 * x 4 a 4 * x 5 . .

T h m o r e t e r m s s u c h a e x p r e s s i o n h a s , t h m o r e e x a c t t h r e s u l t w i l l b e b u t h l o n g e r t h c a l c u l a t i o n w i l l t a k e .

I o n w a n t s t c a l c u l a t e p o l y n o m i a l , s u c h a 5 t d e g r e e p o l y n o m i a l

1 + 2 + 3 + 4 + 5 = 1 m u l t i p l i c a t i o n sa n a d d i t i o n s w o u l d b e n e c e s s a r y .

T h e r e i d i f f e r e n t m e t h o d o s o l u t i o n w h i c h g o e s u n d e r t h n a m e " H o m e r S c h e m e " ( p o l y n o m i a l s u b s t i t u t i o n ) . T h a b o v ee q u a t i o n c a n b e r e w o r k e d a f o l l o w s :

y ( ( ( ( a s * a * a 3 * a 2 * a i * a

H e r e o n l y m u l t i p l i c a t i o n s a n a d d i t i o n s a r n e c e ss a r y . I g e n e r a l , p o l y n o m i a l o d e g r e e r e q u i r e s m u l ti p l i c a t i o n s a n a d d i t i o n s c o m p a r e d t n * ( n - l ) / 2 m u l t i p l ic a t i o n s a n a d d i t i o n s .

T h s i m p l i c i t y o t h i s p r o c e d u r e c a b d e m o n s t r a t e d

4

Page 52: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 52/224

A d v a n c e d M a c h i n e L a n g u a g e

w i t h s i m p l e B A S I C p r o g r a m .

1 0 A ( N )1 1 F O N - T S T E P - 1 2 * A ( I )1 3 N E X T

T h p r o g r a m c a l c u l a t e s t h v a l u e o p o l y n o m i a l o n t d e g r e e f o r t h e v a l u e a n d r e t u r n s t h r e s u l t i y T h a r r a y A ( 0 ) t A ( N ) c o n t a i n s t h c o e f f i c i e n t s a t h r o u g h a N

T h i s r o u t i n e f o p o l y n o m i a l e v a l u a t i o n i t h h e a r t o a l o t h t r a n s c e n d e n t a l f u n c t i o n s w h i c h t h B A S I C i n t e rp r e t e r m u s t c a l c u l a t e .

T u s e t h i s r o u t i n e , t h a r g u m e n t o f t h e p o l y n o m i a lm u s t b i t h F A C . T h p o l y n o m i a l c o e f f i c i e n t s m u s t b i t h f o l l o w i n g f o r m a t i t h e m e m o r y :

p o l y n o m i a l d e g r e ec o e f f i c i e n t o n t h d e g r e ec o e f f i c i e n t o ( n - l ) t h d e g r e e

c o e f f i c i e n t o 1 s d e g r e ec o e f f i c i e n t o f O t h d e g r e e

T h d e g r e e o t h p o l y n o m i a l i s t o r e d a o n e - b y t ev a l u e , w h i c h m u s t f o l l o w t h c o e f f i c i e n t s a 5 - b y t e f l o a ti n g - p o i n t v a l u e . T h a d d r e s s o t h i s c o e f f i c i e n t f i e l d m u s tb p a s s e d w h e n t h r o u t i n e i c a l l e d . T h e l o b y t e m u s t b i t h a c c u m u l a t o r a n t h h i g h b y t e i t h r e g i s t e r . W i t ht h i s k n o w l e d g e w c a w r i t e r o u t i n e t c a l c u l a t e p o l y n o

m i a l s .

4

Page 53: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 53/224

A d v a n c e d M a c h i n e L a n g u a g e

I i r e l a t i v e l y c o m p l i c a t e d t p l a c e f l o a t i n g - p o i n tv a l u e s i n t o o b j e c t c o d e w i t h n o r m a l a s s e m b l e r . W e c a a s s i g n t h v a l u e t v a r i a b l e , u s e m o n i t o r t f i n d t h v a r i a b l e t a b l e , n o t e t h c o r r e s p o n d i n g b y t e s o t h v a i a b l e v a l u e a n d t h e n i n s e r t t h i s i n t o t h e s o u r c e t e x t w i t ht h . B Y T c o m m a n d . A S S E M B L E R / M O N I T O R 6 a l l o w s y o t i n s e r tf l o a t i n g - p o i n t c o n s t a n t s d i r e c t l y i n t o t h e s o u r c e . T h i s i d o n e w i t h t h e . F L P p s e u d o - o p ( F L o a t i n g P o i n t ) . T h e a s s e m b l e rt h e n p e r f o r m s t h c o n v e r s i o n i n t o t h e i n t e r n a l 5 - b y t e r e r e s e n t a t i o n .

L e u p u o u k n o w l e d g e i n t o p r a c t i c e a n c a l c u l a t e t h f o l l o w i n g p o l y n o m i a l :

y = 0 . 7 + 2 . 5 * x + 8 . 2 * x 2 - 2 . 3 * x 3 + 0 . 5 * x 4

A S S E M B L E R 6 V 2 . 0 P A G E

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :

0 3 3 C

0 3 3 C

E 0 5 9

0 3 3 C0 3 3 E0 3 4 0

0 3 4 30 3 4 4

A A 4

0 8

4 0 5 E

0 O

. O P T P , 0 0

P O L Y N O M I A L C A L C U L A T I O N

* 8 2 C A S S E T T E B U F F E R

P O L Y N O M $ E 0 5 9

L D # C O E F FL D # C O E F FJ M P O L Y N O M

C O E F F . B Y T. F L P 0 .

d e g r e e o p o l y .a ( 4 )

4

Page 54: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 54/224

A d v a n c e d M a c h i n e L a n g u a g e

2 4 0 :2 5 0 :

2 6 0 :2 7 0 :2 8 0 :

0 3 4 90 3 4 E0 3 5 30 3 5 8

] 0 3 3 C - 0 3 5 DN E R R O R S

8 8 8 8

9 0 2 3

3 3 0 3

. F L P. F L P. F L P. F L P

- 8 2 0

. A ( 3 )A ( 2 )A ( i )a ( 0 )

T h e n t i r e r o u t i n e c o n s i s t s o p a s s i n g t h s t a r t i n ga d d r e s s a n c a l l i n g t h p o l y n o m i a l f u n c t i o n ; t h c o e f f ic i e n t s o f t h e p o l y n o m i a l t h e n f o l l o w i d e c r e a s i n g o r d e r .

H o c a n w e u s e o u r n e w f u n c t i o n ? I o b v i o u s l y w o n ' tw o r k w e l l w i t h t h S Y c o m m a n d — h o w a r w s u p p o s e d t p a s st h p a r a m e t e r s a n g e t h f u n c t i o n v a l u e b a c k ? W n e e df u n c t i o n s i m i l a r t t h b u i l t - i n f u n c t i o n s l i k e S I N , E X P ,a n s o n

T h i n t e r p r e t e r h a a l r e a d y t a k e n t h i s c a s e i n t o c o ns i d e r a t i o n . I o f f e r s t h U S f u n c t i o n w h i c h y o c a f r e e l yd e f i n e . W n e e d o n l y i n f o r m t h i n t e r p r e t e r o f t h e s t a r t i n ga d d r e s s o t h f u n c t i o n . T h i s s t a r t i n g a d d r e s s i p l a c e d i t h u s u a l f o r m , l o w / h i g h b y t e , a t h a d d r e s s e s 7 8 5 / 7 8 6( $ 0 3 1 1 / $ 0 3 1 2 ) .

P O K E 7 8 5 , 8 2 8 A N D 2 5 5 P O K E 7 8 6 , 8 2 8 / 2 5 6

N o e n t e r t h f o l l o w i n g , a f t e r t h p r o g r a m h a b e e n a s s e mb l e d a n d t h e a b o v e l i n e t y p e d i n

U S R ( l )

Y o g e t h v a l u e 9 . 6 . c h e c k o f t h e f o r m u l a c o n f i r m s t h

4

Page 55: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 55/224

A d v a n c e d M a c h i n e L a n g u a g e

c o r r e c t n e s s o f t h e r e s u l t .

0 . 2 . 8 . 2 . 0 . 9 .

T h f o l l o w i n g l o o p c a b a d d e d f o a d d i t i o n a l c h e c k s .

F O I = - 5 T O P R I N T U S R ( I ) N E X T

7 9 3 . 23 9 7 . 11 6 9 . 65 4 . 99 . . 9 . 2 8 . 16 0 . 41 2 2 . 72 4 3 . 2

T h i s m e t h o d f o c a l c u l a t i n g p o l y n o m i a l s i r e c o m m e n d e dw h e n e v e r p r o g r a m m u s t r e p e a t e d l y c a l c u l a t e t h s a m e p o l yn o m i a l . T h e e x e c u t i o n t i m e o t h i s f u n c t i o n a 1 2 . 5 m s i e v e n s h o r t e r t h a n m a n y b u i l t - i n f u n c t i o n s . T h e c a l c u l a t i o ni B A S I C r e q u i r e s a b o u t 4 m s T h m o r e c o m p l i c a t e d t h f o r m u l a i s t h f a s t e r t h m a c h i n e l a n g u a g e v e r s i o n w i l l r u i c o m p a r i s o n .

A y o c a g a t h e r f r o m t h a b o v e e x a m p l e , t h e c o e f f ic i e n t s , i n c l u d i n g t h e i r s i g n s , m u s t b i d e s c e n d i n g o r d e r( m e a n i n g t h a t t h c o e f f i c i e n t o t h h i g h e s t p o w e r o i f i r s t ) . I p o w e r o i m i s s i n g i t h p o l y n o m i a l , z e r om u s t b e i n s e r t e d a i t v a l u e .

4

Page 56: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 56/224

A d v a n c e d M a c h i n e L a n g u a g e

T h n e x t e x a m p l e w i l l c a l c u l a t e t h f a c t o r i a l f u n c t i o n .F a c t o r i a l i f u n c t i o n w h i c h i f i r s t d e f i n e d o n l y f o p o s i t i v e i n t e g e r v a l u e s a n w h i c h c o n s i s t s o f t h e p r o d u c t o a l i n t e g e r s f r o m o n t t h g i v e n n u m b e r . F o e x a m p l e

5 = 1 * 2 * 3 * 4 * 5 = 1 2

o

7 = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5 0 4 0

I m a t h e m a t i c s , t h f u n c t i o n i a l s o e x t e n d e d t i n c l u d en o n - i n t e g e r s , w h i c h c a a g a i n b a p p r o x i r a a t e d t h r o u g hp o l y n o m i a l . T h i s p o l y n o m i a l i o n l y d e f i n e d f o v a l u e s b e tw e e n z e r o a n o n e , h o w e v e r ; f u n c t i o n v a l u e s o o t h e r a r g um e n t s m u s t b c o u n t e d b a c k w a r d s . F o e x a m p l e :

4 . 3 ! 4 . 3 . 2 . 1 . 0 . 3 !

T h f a c t o r i a l o f 0 . 3 c a n b e c a l c u l a t e d w i t h a e i g h t h d e g r e ep o l y n o m i a l h a v i n g t h f o l l o w i n g c o e f f i c i e n t s :

a a - . 5 7 7 1 9 1 6 5 2a . 9 8 8 2 0 6 8 9 1a - . 8 9 7 0 5 6 9 3 7a . 9 1 8 2 0 6 8 5 7a - . 7 5 6 7 0 4 0 7 8a . 4 8 2 1 9 9 3 9 4a - . 1 9 3 5 2 7 8 1 8a . 0 3 5 8 6 8 3 4 3

5

Page 57: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 57/224

A d v a n c e d M a c h i n e L a n g u a g e

W c a n n o w w r i t e p r o g r a m t c a l c u l a t e t h i s p o l y n o m i a l .

A S S E M B L E R 6 V 2 . 0 P A G E

1 0 0 : 0 3 3 C . O P T P I , 0 01 1 0 :1 2 0 : P O L Y N O M I A L F O F A C T O R I A L C A L C U L A T I O N1 3 0 :1 4 0 : 0 3 3 C * 8 2 C A S S E T T E B U F F E R1 5 0 :1 6 0 : E 0 5 9 P O L Y N O M $ E 0 5 91 7 0 :1 8 0 : 0 3 3 C A 4 L D # C O E F F1 9 0 : 0 3 3 E A 0 0 3 L D # C O E F F2 0 0 : 0 3 4 0 4 5 E J M P O L Y N O M2 1 0 :2 2 0 : 0 3 4 3 0 C O E F F . B Y T ; 8 T H D E G R E E P O L Y .2 3 0 : 0 3 4 4 7 1 E . F L P . 0 3 5 8 6 8 3 4 32 4 0 : 0 3 4 9 7 C 2 . F L P - . 1 9 3 5 2 7 8 1 82 5 0 : 0 3 4 E 7 F 7 6 E . F L P . 4 8 2 1 9 9 3 9 42 6 0 : 0 3 5 3 8 0 C l B 7 . F L P - . 7 5 6 7 0 4 0 7 82 7 0 : 0 3 5 8 8 0 6 B O F . F L P . 9 1 8 2 0 6 8 5 72 8 0 : 0 3 5 D 8 0 E 5 A . F L P - . 8 9 7 0 5 6 9 3 72 9 0 : 0 3 6 2 8 0 7 C F . F L P . 9 8 8 2 0 6 8 9 13 0 0 : 0 3 6 7 8 0 9 3 C 2 . F L P - . 5 7 7 1 9 1 6 5 23 1 0 : 0 3 6 C 8 0 0 . F L P] 0 3 3 C - 0 3 7 1N E R R O R S

W e c a n c a l c u l a t e t h f a c t o r i a l v a l u e s f o a r g u m e n t s b e t w e e na n w i t h P R I N T U S R ( X ) . F o e x a m p l e :

5

Page 58: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 58/224

A d v a n c e d M a c h i n e L a n g u a g e

? U S R ( . l ) = ? U S R ( . 5 ) =

0 . 9 5 1 3 5 0 5 6 40 . 8 8 6 2 2 7 2 4 6

W c a a l s o c a l c u l a t e t h f a c t o r i a l v a l u e s f o o u t s i d e o t h i s r a n g e w i t h s m a l l B A S I C r o u t i n e .

n u m b e r s

1 I N P U T " A R G U M E N T * 1 ;2 0 I F X < O X > 3 3 T H E N 1 3 I X = T H E N Y = G O T O 7 4 Y = I X < T H E N U S R ( X ) G O T O 7 5 X - I X > T H E N Y = Y * X G O T O 5 6 0 I F X O T H E N U S ( X 7 P R I N T " F A C T O R I A L = " ; Y

L i n e 2 p r e v e n t s n e g a t i v e v a l u e s f r o m b e i n g e n t e r e d a w e l l a v a l u e s w h i c h h a v e f a c t o r i a l g r e a t e r t h e n 1 E 3 8 . T h a r g u m e n t r e t u r n s b d e f i n i t i o n ( l i n e 3 0 ) . I l i n e 5 t h a r g u m e n t i m u l t i p l i e d b t h r u n n i n g p r o d u c t a n d e c r e m e n te b o n u n t i l i t i s l e s s t h a n o e q u a l t o o n e . c h e c k i m a d e i l i n e 6 0 t o d e t e r m i n e i t h a r g u m e n t i a i n t e g e r .I t h i s i n o t t h e c a s e , t h p o l y n o m i a l v a l u e m u s t y e t b em u l t i p l i e d b t h r e s u l t . F i n a l l y , t h r e s u l t i p r i n t e d i l i n e 7 0 F o e x a m p l e :

1 .

0 . 7 . 3 5 =

1 . 3 2 9 3 4 0 8 7

. 8 8 6 2 2 7 2 4 61 0 2 8 7 . 3 1 5 1

5

Page 59: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 59/224

A d v a n c e d M a c h i n e L a n g u a g e

N o t h a t w e h a v e c a l c u l a t e d t h p o l y n o m i a l w i t hm a c h i n e l a n g u a g e r o u t i n e o o u o w n , w w a n t t t r t r e p l a c e t h e n t i r e B A S I C p r o g r a m w i t h m a c h i n e l a n g u a g ep r o g r a m . B y s o d o i n g w w i l l b e c o m e a c q u a i n t e d w i t h m o r e o t h f l o a t i n g - p o i n t a r i t h m e t i c r o u t i n e s . O n t h e n e x t p a g e i

f l o w c h a r t o f t h p r o g r a m o p e r a t i o n .

5

Page 60: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 60/224

A d v a n c e d M a c h i n e L a n g u a g e

S T A R T

F A < T E M P

y e

y e

y e

y e

" i l l e g a l fq u a n t i t y " I E N

" o v e r f l o we r r o r " E N

F A E N

F A C = P O L Y ( F A C ; E N

F A F A -

y e T E M PT E M P h A

5

Page 61: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 61/224

A d v a n c e d M a c h i n e L a n g u a g e

L e t ' s t r y o u r n e f u n c t i o n o u t . ( D o n o f o r g e t t f i r s t s e t h U S v e c t o r a a d d r e s s 7 8 5 / 7 8 6 t o u r o u t i n e — a f t e rt u r n i n g t h c o m p u t e r o t h i s v e c t o r a l w a y s p o i n t s t " I L E G A L Q U A N T I T Y " ) .

? U S R ( 0 )? U S R ( 1 )? U S R ( 2 )? U S R ( 3 )? U S R ( . 5 )? U S R ( 4 . 5 ) '? U S R ( - 1 )? U S R ( 4 0 )

. 8 8 6 2 2 7 2 4 65 2 . 3 4 2 7 9 6 7I L L E G A L Q U A N T I T Y E R R O RO V E R F L O W E R R O R

W h a t w h a t d w i t h r e l a t i v e l y c o m p l i c a t e d B A S I Cp r o g r a m b e f o r e c a n o w b e d o n e q u i c k l y a n d e a s i l y , s i m p l y b c a l l i n g f u n c t i o n . W u s e d s o m e n e w r o u t i n e s i t h m a c h i n el a n g u a g e p r o g r a m w h i c h w e w a n t t d i s c u s s b r i e f l y .

F A C N E N T h i s r o u t i n e s t o r e s t h c o n t e n t s o t h f l o a t i n gp o i n t a c c u m u l a t o r F A a t h a d d r e s s g i v e n i t h ( l o wb y t e ) a n ( h i g h b y t e ) r e g i s t e r . T h e c o n t e n t s o f t h e F A a r s t o r e d i t h a b b r e v i a t e d 5 - b y t e f o r m .

M E M F A C p e r f o r m s t h o p p o s i t e t a s k . I g e t s f l o a t i n gp o i n t n u m b e r f r o m m e m o r y a n d p u t s i i t h F A C . T h i s t i m et h r e g i s t e r m u s t c o n t a i n t h e l o w b y t e o f t h e a d d r e s s a n t h r e g i s t e r t h h i g h b y t e .

C O M P A R E W e c a n c o m p a r e t w f l o a t i n g - p o i n t n u m b e r s t e a c ho t h e r w i t h t h i s B A S I C i n t e r p r e t e r r o u t i n e . T h f i r s t n u m b e ri i m e m o r y a n i a d d r e s s e d t h r o u g h ( l o w b y t e ) a n ( h i g h b y t e ) . T h e s e c o n d n u m b e r m u s t b i t h F A C . I f b o t h

5

Page 62: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 62/224

A d v a n c e d M a c h i n e L a n g u a g e

n u m b e r s a r e t h e s a m e , t h a c c u m u l a t o r ( n o t t h f l o a t i n gp o i n t a c c u m u l a t o r ! ) c o n t a i n s z e r o a n d t h f l a g i s e t .I t h e f i r s t v a l u e i s m a l l e r t h a n t h n u m b e r i t h F A C ,t h a c c u m u l a t o r c o n t a i n s - ( $ F F ) a n t h f l a g i s e t . I t h n u m b e r i t h F A w a s s m a l l e r , t h a c c u m u l a t o r c o n t a i n s

a n t h f l a g i c l e a r e d . T h i s r o u t i n e w a u s e d e x t e ns i v e l y i o u r p r o g r a m .

M E M P L U S T h i s r o u t i n e c o n s i s t s o f t w o s u b r o u t i n e s . F i r s tt h f l o a t i n g - p o i n t n u m b e r p o i n t e d t b a n ( l o w / h i g h )i p l a c e d i A R a n t h e n t h r o u t i n e f o a d d i n g t h F A a n A R i c a l l e d , w h i c h l e a v e s t h r e s u l t i t h F A C .

M E M M U L T T h i s r o u t i n e s e r v e s t m u l t i p l y n u m b e r i m e m o r yw i t h t h F A C . T h e l o g i c c o r r e s p o n d s t t h a t o f M E M P L U S .

T h a d d r e s s e s O V E R F L O W a n I L L Q U A N c a l l t h e a p p r o p r i a t er o u t i n e s f o o u t p u t t i n g e r r o r m e s s a g e s . I w a u n n e c e s s a r yt c h e c k t s e i t h a r g u m e n t w a s g r e a t e r t h a n 3 4 i n o u c a s e b e c a u s e t h i s e r r o r m e s s a g e w o u l d a u t o m a t i c a l l y a p p e a ri t h c o u r s e o t h m u l t i p l i c a t i o n s .

T h f u n c t i o n f o p o l y n o m i a l c a l c u l a t i o n c a b p u i n t oy e a n o t h e r f o r m .

a x a i x a x 5 a x 7

T h i s f u n c t i o n i d e r i v e d f r o m t h n o r m a l p o l y n o m i a l c a l c u l at i o n b t a k i n g x a t h a r g u m e n t a n m u l t i p l y i n g t h r e s u l tb o n c e a g a i n .

a + a ( x 2 ) a ( x ) + a ( x ) . .

5

Page 63: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 63/224

A d v a n c e d M a c h i n e L a n g u a g e

T h i s r o u t i n e i u s e d f o m o s t b u i l t - i n f u n c t i o n s b e c a u s e t h a p p r o x i m a t i o n p o l y n o m i a l i o f t e n i t h i s f o r m . T h a r g u m e n tm u s t u s u a l l y f i r s t b e b r o u g h t i n t o s p e c i f i c v a l u e r a n g ef o w h i c h t h f u n c t i o n i d e f i n e d a n d t h e n t h r e s u l t i m o d i f i e d c o r r e s p o n d i n g t t h o r i g i n a l v a l u e .

W w i l l c a l c u l a t e t h f o l l o w i n g f o r m u l a w i t h t h i s r o u t i n e :

y = 6 * x + 0 . 5 * x 3 + ~ 0 . 1 1 * x 7

N o t e t h a t t e r m i m i s s i n g f r o m t h s e q u e n c e ( t h a t w i t he x p o n e n t 5 ) w h i c h w m u s t r e p l a c e w i t h z e r o a t h c o e f f ic i e n t .

A S S E M B L E R 6 V 2 . 0 P A G E

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :

0 3 3 C0 3 3 C

E 0 4 3

0 3 3 C0 3 3 E0 3 4 0

0 3 4 30 3 4 40 3 4 90 3 4 E0 3 5 3

] 0 3 3 C - 0 3 5 8N E R R O R S

A A 4

0 7 0 8 8

4 0 4

E 0 0 4

E

4 0 0 0

. O P T P , 0 0* 8 2

P O L Y 2 $ E 0 4 3

L D # C O E F FL D # C O E F FJ M P P O L Y 2

C O E F F . B Y T. F L P - . 1 1. F L P. F L P . . F L P

D E G R E E O F P O L Y .

5

Page 64: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 64/224

A d v a n c e d M a c h i n e L a n g u a g e

N o t e t h a t h e r e t h d e g r e e o f t h e p o l y n o m i a l c o m e s f r o mt h n u m b e r o f t h e h i g h e s t p o w e r , n o t h h i g h e s t p o w e r ,b e c a u s e w e h a v e t a k e n o u o t h p a r e n t h e s e s a n u s x a t h a r g u m e n t .

H e r e a r f e f u n c t i o n v a l u e s f o c h e c k :

U S R ( O )U S R ( l ) 6 . 3 9U S R ( 2 ) 1 . 9 2U S R ( . 7 5 ) 4 . 6 9 6 2 5 4 2 7

A t h c l o s e o o u d i s c u s s i o n o f l o a t i n g - p o i n t n u b e r s w e w a n t t t a k e u p r o b l e m w h i c h o c c u r s o f t e n i p r o g r a m m i n g : s o r t i n g n u m b e r a r r a y s . W e w i l l t r t i m p l e m e n tt h f o l l o w i n g a l g o r i t h m i m a c h i n e l a n g u a g e .

1 0 F O 1 = T F L = 01 1 F O J = T S T E P - 1 2 I A ( J - 1 ) > A ( J ) T H E N H = A ( J ) : A ( J ) = A ( J - l ) : A ( J - l ) = H : F L = 11 3 N E X T1 4 I F L = 0 T H E N R E T U R N1 5 N E X T I R E T U R N

T h p r o g r a m s o r t s t h a r r a y A ( N ) a n d c a n b e c a l l e d a s u b r o u t i n e w i t h G O S U B 1 0 0 . T h p r o g r a m u s e s b u b b l e - s o r ta l g o r i t h m . T w s u c c e s s i v e a r r a y e l e m e n t s a r c o m p a r e d w i t he a c h o t h e r . I t h f i r s t e l e m e n t i g r e a t e r t h a n t h s e c o n d ,t h e t w o e l e m e n t s a r e x c h a n g e d a n f l a g i s e t . T h i so c c u r s i t w n e s t e d l o o p s . I n e x c h a n g e o c c u r s d u r i n g t h c o u r s e o f t h e i n n e r l o o p , t h a r r a y i s o r t e d . I t h i s c a s et h f l a g r e m a i n s z e r o a n d t h s o r t i n g p r o c e s s e n d s p r e m at u r e l y . O t h e r w i s e , t h s m a l l e s t v a l u e w i l l b f o u n d i A ( 0 )

5

Page 65: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 65/224

A d v a n c e d M a c h i n e L a n g u a g e

a f t e r t h f i r s t p a s s . T h n e x t p a s s c o m p a r e s e l e m e n t st h r o u g h N t h e n t h r o u g h N a n s o n D y o r e m e m b e r h o B A S I C a r r a y e l e m e n t s a r s t o r e d ? T h e r e i s p o i n t e r w h i c hi n d i c a t e s t h s t a r t o f t h e a r r a y t a b l e . S t h a t w d n o h a v e t s e a r c h t h r o u g h t h i s t a b l e t f i n d t h r i g h t a r r a y ,w e w i l l a g r e e t h a t t h a r r a y t s o r t e d m u s t h a v e o n l y o n d i m e n s i o n a n d t h a t i m u s t a l s o b t h f i r s t a r r a y i t h t a b l e .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :

2 6 0 :

2 7 0 :

0 3 3 C0 0 2 F0 0 5 70 0 5 70 0 5 90 0 5 B

B B A 2B C 5 B

0 3 3 C

0 3 3 C0 3 3 E0 3 3 F0 3 4 1

0 3 4 3

0 3 4 6

A 1 A 7

8

C

2

0 2

D 0

A R R T A B

I P N TJ P N TJ P N T 1

M E M F A CC O M P A R E

. O P T

*

*

P $ 2 $ 5 * + * + * +

$ B B A 2$ B C 5 B

* 8 2

L D A R R T A BC L L D # A D ( A R R T A B ) , Y ; A D D A R R A Y

L E N G T HS T N P N T ; P O I N T E R T

A R R A Y E N I N

5

Page 66: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 66/224

A d v a n c e d M a c h i n e L a n g u a g e

2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :

4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :4 9 0 :

5 0 0 :5 1 0 :5 2 0 :5 3 0 :5 4 0 :5 5 0 :

0 3 4 70 3 4 90 3 4 B0 3 4 E0 3 5 10 3 5 20 3 5 40 3 5 70 3 5 9

0 3 5 C0 3 5 E0 3 5 F0 3 6 1

0 3 6 30 3 6 50 3 6 7

0 3 6 90 3 6 B0 3 6 E0 3 7 1

0 3 7 30 3 7 6

0 3 7 80 3 7 A0 3 7 B

A 7 8 A 3 E 8 B C

A 1 6 8

A 6 8

A 8 A 8

A 8

A 3 E

3 2 D D

0 D 0 D

2

0 5

3 0 5

0 D D 5

D 5

5

0

0 0

0

0

L

I L O O P0 0

0

J L O O P

L D A D S T L D S E S B S T B C D E

L D C L A D S T

L D A D S T

L D S T L D S T L D S T

L D S E S B

A R R T A B + 1( A R R T A B ) , YN P N T + 1N P N T

# N P N TL N P N T + 1

A R R T A B

# I P N T P O I N T E R T

A ( 0 )A R R T A B + 1# I P N T + 1

# F L A G ; C L E A R F L A GN P N TJ P N T ; J = NN P N T + 1J P N T + 1

J P N T

#

6

Page 67: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 67/224

A d v a n c e d M a c h i n e L a n g u a g e

5 6 0 :5 7 0 :5 8 0 :5 9 0 :6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 0 5 :7 1 0 :7 2 0 :7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :7 8 0 :7 9 0 :8 0 0 :8 1 0 :8 2 0 :8 2 5 :

0 3 7 D0 3 7 F0 3 8 00 3 8 20 3 8 40 3 8 60 3 8 70 3 8 8

0 3 8 B0 3 8 D0 3 8 F0 3 9 2

0 3 9 40 3 9 60 3 9 90 3 9 B0 3 9 C0 3 9 E0 3 A 00 3 A 10 3 A 30 3 A 4

0 3 A 60 3 A 80 3 A 90 3 A B

8 A A E 8 A 8 2

A A 2 3

A 8 B A B 9 8 9 8 1

A 3 E 8

5

5 0 5

A 2 B B

5 5 5 B B C1

0 D 0 5 S W A P

5 5

5

F

5 N O S W A P

0 5

S T T A L D S B S T T A T X J S

L D L D J S B M

L D S T L D T A L D S T T X S T D E B P

L D S E S B S T

J P N T 1 ; P O I N T E R J -

J P N T + 1# J P N T 1 + 1

M E M F A C ; A ( J - 1 ) T F A

J P N TJ P N T + 1C O M P A R E ; C O M P A R E T O A ( J )N O S W A P

# F L A G ; S E T F L A G( J P N T ) , Y

( J P N T l ) . Y( J P N T ) , Y ; E X C H A N G E A ( J )

; A N D A ( J - l )( J P N T 1 ) , Y

S W A P

J P N T

# J P N T

6

Page 68: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 68/224

A d v a n c e d M a c h i n e L a n g u a g e

8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :8 8 0 :8 9 0 :9 0 0 :9 1 0 :9 2 0 :9 3 0 :9 4 0 :9 5 0 :9 6 0 :9 7 0 :9 8 0 :9 9 0 :1 0 0 0 :1 0 1 0 :1 0 2 0 :1 0 3 0 :1 0 4 0 :1 0 5 0 :1 0 6 0 :1 0 7 0 :1 0 8 0 :1 0 9 0 :1 1 0 0 :1 1 1 0 :

0 3 A D0 3 A F

0 3 B 10 3 B 30 3 B 50 3 B 70 3 B 9

0 3 B B0 3 B E

0 3 C 00 3 C 20 3 C 30 3 C 50 3 C 70 3 C 9

0 3 C B0 3 C E0 3 D 00 3 D 20 3 D 5

0 3 D 7

0 3 D 80 3 D 9

] 0 3 3 C - 0 3 D BN E R R O R S

B C

C D A C D

A F

A 1 6 8 9 E

C D A C D

6

0 5

5 C 5 5 B

D 1

5

0 5 0 5

D 9 5 D 9

T E S T J

0

0 T E S T I

0

E N

F L A GN P N T

B C

D E

C M B N L D C M B N

L D B E

L D C L A D S T B C I N

C M B N L D C M B N

R T

*

T E S T J

J P N T + 1

I P N TJ L O O PJ P N T + 1I P N T + 1J L O O P

F L A GE N

I P N T

# I P N TT E S T II P N T + 1

N P N TL O O P

I P N T + 1N P N T + 1

L O O P

* + * +

; i = J

; N

;

; I = N ?

6

Page 69: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 69/224

A d v a n c e d M a c h i n e L a n g u a g e

6

Page 70: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 70/224

A d v a n c e d M a c h i n e L a n g u a g e

T h i s a s s e m b l y l a n g u a g e p r o g r a m t a k e s o v e r t h e t a s k o t h p r e v i o u s B A S I C p r o g r a m . A s a i d b e f o r e , t h a r r a y t b s o r t e d m u s t b o n e - d i m e n s i o n a l . T h p r o g r a m d o e s n o c h e c kt s e i t h a r r a y i a l l o c a t e d o i i i o n d i m e ns i o n a l — t h a t i t h r e s p o n s i b i l i t y o t h u s e r .

T s o r t a a r r a y , a l l t h a t i r e q u i r e d i t c a l l t h r o u t i n e w i t h

S Y 8 2

I o r d e r t g e a i d e a o t h s p e e d o t h p r o g r a m , w f i l l e d v a r i o u s l a r g e a r r a y s w i t h r a n d o m n u m b e r s a n d f i r s ts o r t e d t h e m w i t h B A S I C a n d t h e n w i t h m a c h i n e l a n g u a g e . T h er e s u l t s a r f o u n d i t h f o l l o w i n g t a b l e .

B A S I C M a c h i n e l a n g . r o u t i n e

0 . 0 "0 . 4 "1 . 5 "6 . 3 "

3 8 . 7 "2 3 3 . 4 "

Y o c a n s e e f r o m t h t a b l e t h a t a p p r o x i m a t e l y f o u rt i m e s a m u c h t i m e i r e q u i r e d f o t w i c e a m a n y e l e m e n t s t b e s o r t e d . I y o m u s t s o r t l a r g e a r r a y s i B A S I C , t h e r ec o m e s p o i n t a w h i c h t h e t i m e r e q u i r e m e n t e n t e r s t h h o u r sr a n g e . H e r e o u m a c h i n e l a n g u a g e i g o o d s i x t y t i m e sf a s t e r . I y o u h a v e v e r y l a r g e a r r a y s a n t h m a c h i n e l a g u a g e r o u t i n e s t i l l t a k e s t o l o n g f o y o u , y o m u s t u s m o r e e f f i c i e n t r o u t i n e s u c h a q u i c k s o r t .

6

1 5

1 0 2 0 5 0

1 0 0 0

1 6

4 1 2 4 4

1 2 4 3 7 3 3

Page 71: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 71/224

A d v a n c e d M a c h i n e L a n g u a g e

A s a n e x e r c i s e , y o u m i g h t l i k e t t r t m o d i f y o u r o u t i n e s t h a t i c a s o r t i n t e g e r a r r a y s . W h a t m u s t b c h a n g e d ? F o o n e , t h d i f f e r e n t s p a c e r e q u i r e m e n t o a e l e m e n t m u s t b t a k e n i n t o a c c o u n t — 2 b y t e s m u s t b a d d e d o s u b t r a c t e d a n e c e s s a r y i n s t e a d o b y t e s . F o a n o t h e r , w s h o u l d p e r f o r m t h c o m p a r i s o n o t h e l e m e n t s o u r s e l v e s . W c a c o m p a r e t h t w o - b y t e v a l u e s d i r e c t l y i n s t e a d o c o n v e r ti n g t h e i n t e g e r s t f l o a t i n g - p o i n t a n d t h e n e x e c u t i n g t h f l o a t i n g - p o i n t c o m p a r i s o n . I a d d i t i o n , t h r o u t i n e w i l l b f a s t e r t h a n t h f l o a t i n g - p o i n t s o r t r o u t i n e .

A r e f e r e n c e f o y o u r o w a p p l i c a t i o n s , w p r e s e n tt a b l e o a l o f t h e f u n c t i o n s a n o p e r a t i o n s o t h B A S I Ci n t e r p r e t e r w h i c h p e r t a i n t a r i t h m e t i c .

N a m e A d d r e s s P o i n t e r t P r e p a r a t i o n F A F u n c t i o nc o n s t a n t s

M E M A R GF A C A R GD I M E M D I VT I M E 1 0D I V 1 0P L U S 0 5M E M F A CF A C A R GF A C M E MM I N U SM E M M I NM U L TM E M M U L

$ B A 8 C$ B B F C$ B B 1 2$ B B 0 F$ B A E 2$ B A F E$ B 8 4 9$ B B A 2$ B C 0 C$ B B D 4$ B 8 5 3$ B 8 5 0$ B A 2 B$ B A 2 8

A /

A /

A /

X /

A /

A /

E X

A R F A F A F A F A F A F A F A A R

E X

E X

c o n s t a n tF A F A F A F A

c o n s t a n tA R A R G / F A Cc o n s / F A CF A C * 1 0F A C / 1 0F A C + 0 . 5c o n s t a n tF A

: F A A R G - F A Cc o n s / F A CA R G * F A Cc o n s * F A C

6

Page 72: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 72/224

A d v a n c e d M a c h i n e L a n g u a g e

P L U SM E M P L UP O W E RP W R M E MP O L YP O L Y 2O A N N O C O M P A RR O U N DC H G S G N

$ B 8 6 A$ B 8 6 7$ B F 7 B$ B F 7 8$ E 0 5 9$ B 0 4 3$ A F E 6$ A F E 9$ A E D 4$ B C 5 B$ B C 1 B$ B F B 4

A /

A / A / A /

A /

E X

E X

F A F A F A F A F A F A

A R G + F A Cc o n s + F A CA R G + F A CA R G ' c o n sp o l y n o m .p o l y n o m 2

F A C : = A R G O F A F A C :F A c n a

= A R G A N F A N O F A

F A C w / c o n sr o u n d F A F A - F A C

C o n v e r s i o n s a n s t a n d a r d f u n c t i o n s a r n o l i s t e d s i n c et h e y w e r e d e t a i l e d i o t h e r p l a c e s .

T h " + i t h F A c o l u m n i n d i c a t e s t h a t t h e c o n t e n t so f t h e F A C a r c h a n g e d ; " - i n d i c a t e s t h a t t h e y r e m a i n t h s a m e . I a o p e r a t i o n u s e s b o t h t h e A R G a n F A C , t h a c c u m ul a t o r s h o u l d b l o a d e d w i t h t h e x p o n e n t o f t h e F A C ( $ 6 1 )b e f o r e t h e c a l l .

W i t h t h l o g i c a l o p e r a t i o n s A N D , O R a n d N O T t h e a r g um e n t s a r e f i r s t c o n v e r t e d t 1 6 - b i t i n t e g e r s , t h e n t h o p e r a t i o n i e x e c u t e d b i t w i s e , t h r e s u l t c o n v e r t e d b a c k t

f l o a t i n g - p o i n t n u m b e r a n p l a c e d b a c k i n t o t h F A C .

T h B A S I C i n t e r p r e t e r c o n t a i n s n u m b e r o f l o a t i n gp o i n t n u m b e r s w h i c h y o u c a n u s e f o y o u r o w a p p l i c a t i o n s .T h e y a r l i s t e d i t h f o l l o w i n g t a b l e .

6

Page 73: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 73/224

A d v a n c e d M a c h i n e L a n g u a g e

A d d r e s s

$ A E A 8$ B 1 A 5$ B 9 B C$ B 9 C 2$ B 9 C 7$ B 9 C C$ B 9 D 1$ B 9 D 6$ B 9 D B$ B 9 E 0$ B 9 E 5$ B A F 9$ B D B 3$ B D B 8$ B D B D$ B F B F$ B F C 5$ B F C A$ B F C F$ B F D 4$ B F D 9$ B F D E$ B F E 3$ B F E 8$ E 0 8 D$ E 0 9 2$ E 2 E 0$ E 2 E 5$ E 2 E A$ E 2 F 0$ E 2 F 5

C o n s t a n t

8 4 9 O F9 8 0 8 1 0 0 0 07 F 5 E 5 8 1 9 8 7 3 8 2 3 8 A 8 0 3 5 0 8 3 0 8 8 0 8 3 7 8 4 2 0 0 09 3 B 9 E 6 E 6 B9 E 6 E 6 B8 3 A 7 3 5 7 1 7 7 2 E 7 I 8 7 C 6 3 5 7 E 7 5 F D

8 3 7 8 0 0 9 3 4 6 2 8 B l8 4 O 8 4 O 7 0 0 0 08 E 1 8 6 2 8 0

D 0 0 C O 9 3 F F 0 1 0 I 2 2 3 3 B E 1 5 E 1 0 7 4 D D 0 2 F

A 0 0 7 6 1 2 3 3 0 F 0 F F 0 2 5 I 8 2 O C

1 0 0 0 A A 0 I F

D e c i m a l v a l u e

3 . 1 4 1 5 9 2 6 5- 3 2 7 6 8

. 4 3 4 2 5 5 9 4 2. 5 7 6 5 8 4 5 4 1. 9 6 1 8 0 0 7 5 92 . 8 8 5 3 9 0 0 7. 7 0 7 1 0 6 7 8 11 . 4 1 4 2 1 3 5 6- . . 6 9 3 1 4 7 1 8 11 9 9 9 9 9 9 9 9 . 99 9 9 9 9 9 9 9 91 E 1 . 4 4 2 6 9 5 0 42 . 1 4 9 8 7 6 3 7 E - 51 . 4 3 5 2 3 1 4 E - 41 . 3 4 2 2 6 3 4 8 E - 39 . 6 1 4 0 1 1 7 0 1 E - 3. 0 5 5 5 0 5 1 2 6 9. 2 4 0 2 2 6 3 8 5. 6 9 3 1 4 7 1 8 6

1 1 8 7 9 5 4 63 . 9 2 7 6 7 7 7 4 E - 41 . 5 7 0 7 9 6 3 36 . 2 8 3 1 8 5 3 1. 2

- 1 4 . 3 8 1 3 9 0 74 2 . 0 0 7 7 9 7 1

S i g n i f i c a n c e

P

1 / S Q R ( 2 )S Q R ( 2 )

L 0 G ( 2 )

1 / L O G ( 2 )

P / P *

6

Page 74: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 74/224

A d v a n c e d M a c h i n e L a n g u a g e

$ E 2 F A$ E 2 F F$ E 3 0 4$ E 3 0 9$ E 3 3 F$ E 3 4 4$ E 3 4 9$ E 3 4 E$ E 3 5 3$ E 3 5 8$ E 3 5 D$ E 3 6 2$ E 3 6 7$ E 3 6 C$ E 3 7 1$ E 3 7 6

8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 8

9 2 A 4 B I 8 O D 1 B 6 9 4 A 0

6 3 5 O 8 F F I 5 6 E 3 4 C A 0

8 D E D B A B 6 C 7 5 8 9 9 A 0

0 E 2 A D F 1 C C 4 7 7 3 C 1 0

- 7 6 . 7 0 4 1 7 0 38 1 . 6 0 5 2 2 3 7- 4 1 . 3 1 4 7 0 2 16 . 2 8 3 1 8 5 3 1- 6 . 8 4 7 9 3 9 1 2 E - 44 . 8 5 0 9 4 2 1 6 E - 3- . 0 1 6 1 1 1 7 0 1 5. 0 3 4 2 0 9 6 3 8- . 0 5 4 2 7 9 1 3 3. 0 7 2 4 5 7 1 9 6 5- . 0 8 9 8 0 1 9 1 8 5. 1 1 0 9 3 2 4 1 3- . 1 4 2 8 3 9 8 0 8. 1 9 9 9 9 9 1 2- . 3 3 3 3 3 3 1 6

P

6

Page 75: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 75/224

A d v a n c e d M a c h i n e L a n g u a g e

S E C T I O N I n t e r r u p t s

2 . I n t e r r u p t p r o g r a m i n g

O n e a r e a a v o i d e d b y m a n y m a c h i n e l a n g u a g e p r o g r a m m e r si t h p r o g r a m m i n g o i n t e r r u p t s . W w a n t t d e m o n s t r a t e t h p r i n c i p l e s a n p r o v e t h a t a n y f e a r o f t h i s s u b j e c t i c o m pl e t e l y u n f o u n d e d . W w i l l e x p l a i n w h a t a i n t e r r u p t i a n w h a t p o s s i b i l i t i e s a r o p e n e d u t t h m a c h i n e l a n g u a g ep r o g r a m m e r b u s i n g s u c h n e w t e c h n i q u e s .

F i r s t w e m u s t e x p l a i n w h a t w m e a n b y t h e t e r m " i n t e rr u p t e d . " W h a t i i n t e r r u p t e d , a n d h o w ? Q u i t e s i m p l e — t h em a c h i n e l a n g u a g e p r o g r a m c u r r e n t l y b e i n g e x e c u t e d i i n t e rr u p t e d . T h i s i n t e r r u p t i o n i h a r d w a r e - g e n e r a t e d a n d c a no c c u r a a n p l a c e w i t h i n t h p r o g r a m . W h a t c a i n t e r r u p tm a c h i n e l a n g u a g e p r o g r a m ? T f i n d t h i s o u w m u s t g i v e s o m ec o n s i d e r a t i o n t t h h a r d w a r e c o n s t r u c t i o n o t h p r o c e s s o r .

T h 6 5 0 2 o 6 5 1 0 m i c r o p r o c e s s o r i h o u s e d w i t h i n 4 0 p i p a c k a g e , t w p i n s o w h i c h h a v e t h d e s i g n a t i o n s

I R a n N M

T h e s e a r a b b r e v i a t i o n s f o I n t e r r u p t R e Q u e s t a n N o n - M a s ka b l e I n t e r r u p t . I s i g n a l f r o m t h o u t s i d e i s e n t t o n o t h e s e p i n s , t h f o l l o w i n g e v e n t s o c c u r :

1 S i g n a l o N M I p i n

T h p r o c e s s o r f i n i s h e s e x e c u t i n g t h c u r r e n t i n s t r u ct i o n a n t h e n a t t e n d s t t h i n t e r r u p t :

6

Page 76: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 76/224

A d v a n c e d M a c h i n e L a n g u a g e

1 T h c u r r e n t v a l u e o t h p r o g r a m c o u n t e r i p l a c e do t h s t a c k ( f i r s t h i g h b y t e t h e n l o b y t e ) .

2 T h p r o c e s s o r s t a t u s r e g i s t e r ( t h e f l a g s ) i t h e np u s h e d o n t o t h e s t a c k .

3 T h p r o c e s s o r r e a d s t h c o n t e n t s o t h a d d r e s s e s$ F F F A a n $ F F F B a n d , i n t e r p r e t i n g t h e m a t h n e v a l u e o f t h e p r o g r a m c o u n t e r , e x e c u t e s a i n d i r e c tj u m p : J M P ( $ F F F A ) . T h e p r o g r a m a t h i s a d d r e s s w i l lt h e n b e e x e c u t e d .

T h i s p r o g r a m " s e r v i c e s " t h i n t e r r u p t r e q u e s t .

2 S i g n a l o I R p i

H e r e s o m e t h i n g s i m i l a r h a p p e n s . T h c u r r e n t i n s t r u c t i o ni c o m p l e t e d w h e n t h i n t e r r u p t i r e g i s t e r e d . W i t h I R Q ,h o w e v e r , t h p r o c e s s o r f i r s t c h e c k s t h s t a t e o f t h e i n t e rr u p t f l a g ( b i t i t h s t a t u s r e g i s t e r ) . T w c a s e s a r p o s s i b l e :

a I t h i s f l a g i s e t , t h i n t e r r u p t r e q u e s t i i g n o re a n t h p r o g r a m c o n t i n u e s r u n n i n g .

b I t h f l a g w a n o s e t , t h s a m e p r o c e d u r e i e x e c u t e d a f o N M I :

1 T h c o n t e n t s o t h p r o g r a m c o u n t e r a n t h f l a g s a r s a v e d o t h e s t a c k .

2 T h f l a g i s e t s o t h a t a n i n t e r r u p t r q u e s t s o c c u r r i n g d u r i n g t h i n t e r r u p t s e r v i c er o u t i n e w i l l b e i g n o r e d .

3 T h p r o c e s s o r g e t s t h n e v a l u e o t h p r o g r a mc o u n t e r f r o m a d d r e s s e s $ F F F E a n $ F F F F . T h v a l u e - t o w h i c h t h e s e a d d r e s s e s p o i n t i u s e d a t h n e v a l u e o t h p r o g r a m c o u n t e r .

7

Page 77: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 77/224

A d v a n c e d M a c h i n e L a n g u a g e

H o c a w r e t u r n t t h i n t e r r u p t e d p r o g r a m ? T h e r e i s p e c i a l m a c h i n e l a n g u a g e i n s t r u c t i o n f o r t h i s p u r p o s e .

R T R e T u r n f r o m I n t e r r u p t

T h i s i n s t r u c t i o n r e v e r s e s t h i n t e r r u p t p r o c e d u r e . T h v a l u eo t h s t a t u s r e g i s t e r i f e t c h e d f r o m t h s t a c k , t h e c o nt e n t s o t h p r o g r a m c o u n t e r i p u l l e d f r o m t h s t a c k a n t h p r o g r a m c o n t i n u e s e x e c u t i o n a t h i s a d d r e s s . T h e i n t e rr u p t e d p r o g r a m d o e s n o " n o t i c e " a n y o t h e s e a c t i v i t i e s .T h p r o c e s s o r s a v e s o n l y t h s t a t u s r e g i s t e r — t h e o t h e rr e g i s t e r s , i t h e y a r u s e d b t h i n t e r r u p t r o u t i n e , m u s tb e s a v e d b y t h e i n t e r r u p t s e r v i c e r o u t i n e b e f o r e t h e y a r u s e d a n t h e n r e s t o r e d b e f o r e t h r e t u r n w i t h R T I . F o e x a m p l e

I N T E R R U P T P H T X P H T Y P H

s a v e a c c u m u l a t o r

s a v e r e g i s t e r

s a v e r e g i s t e r

i n t e r r u p t s e r v i c e r o u t i n e

P L T A P L T A P L R T

r e s t o r e r e g i s t e r

r e s t o r e r e g i s t e rr e s t o r e a c c u m u l a t o rr e t u r n t i n t e r r u p t e d p r o g r a m

7

Page 78: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 78/224

A d v a n c e d M a c h i n e L a n g u a g e

T h s t r u c t u r e o a i n t e r r u p t s e r v i c e r o u t i n e i s i m il a t t h a t o n o r m a l s u b r o u t i n e . T h p r i n c i p l e d i f f e r e n c ei t h a t s u b r o u t i n e i a l w a y s c a l l e d b y t h e m a i n p r o g r a mf r o m s p e c i f i c p l a c e , w h e r e a s t h i n t e r r u p t r o u t i n e i c a l l e df r o m t h e o u t s i d e b y h a r d w a r e a n c a n b e c a l l e d a a n t i m e ,f r o m a n y w h e r e . I c o n t r a s t t s u b r o u t i n e c a l l , t h c u r r e n tc o n t e n t s o f t h e p r o c e s s o r s t a t u s r e g i s t e r a r s a v e d i a d d i t i o n t t h r e t u r n a d d r e s s . I t h i s w e r e n o t d o n e , t h ei n t e r r u p t e d p r o g r a m c o u l d n o c o n t i n u e t f u n c t i o n n o r m a l l yw h e n c o n t r o l w a r e t u r n e d t i t N o t t h m o s t i m p o r t a n tq u e s t i o n :

H o c a a i n t e r r u p t b g e n e r a t e d ?

T h e r e a r s e v e r a l w a y s t h a t t h i s c a n h a p p e n i t h C o m m o d o r e 6 4 W e w i l l t a k e l o o k a t h w a y s i w h i c h a I R c a n b e g e n e r a t e d . T h

v i d e o c o n t r o l l e r V I 6 5 6 9

a n d t h e I / i n t e r f a c e

C I A 6 5 2 6

c a b o t h g e n e r a t e I R Q s . T h C I h e r e i t h C I a a d d r e s s$ D C 0 0 .

n o n - m a s k a b l e i n t e r r u p t ( N M I ) c a b g e n e r a t e d b

C I 6 5 2 6 ( a d d r e s s $ D D 0 0 )

7

Page 79: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 79/224

A d v a n c e d M a c h i n e L a n g u a g e

a w e l l a

t h R E S T O R E k e

I o r d e r t s u c c e s s f u l l y p r o g r a n o u r o w n i n t e r r u p tr o u t i n e s , d e t a i l e d k n o w l e d g e o t h c a p a b i l i t i e s a n f e t u r e s o t h p e r i p h e r a l i n t e r f a c e s i i n d i s p e n s a b l e . W w i l ld i s c u s s t h e s e i n t e r f a c e s i s u f f i c i e n t d e t a i l f o o u p r o gr a m i n g . M o r e i n f o r m a t i o n c a n b e o b t a i n e d f r o m t h b o o k T h A n a t o m y o t h C o m m o d o r e 6 4

7

Page 80: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 80/224

A d v a n c e d M a c h i n e L a n g u a g e

2 . T h C I 6 5 2 6

T h G I ( C o m p l e x I n t e r f a c e A d a p t e r ) 6 5 2 6 i a i n t e rf a c e m o d u l e o t h 6 5 X X f a m i l y w h i c h o f f e r s t w 8 - b i t i n p u t/ o u t p u t p o r t s , s e r i a l 8 - b i t s h i f t r e g i s t e r , t w c a s c a d a b l e1 6 - b i t t i m e r s , r e a l t i m e c l o c k a n d s e v e r a l c o n t r o l l i n e s .

T h C I h a 1 r e g i s t e r s w h i c h a r a d d r e s s e d a s u c c e ss i v e m e m o r y l o c a t i o n s b t h m i c r o p r o c e s s o r . T h C o m m o d o r e6 h a s t w o o f t h e s e c h i p s ; t h e f i r s t i l o c a t e d a a d d r e s s e s$ D C 0 0 t $ D C 0 F , t h e s e c o n d a $ D D 0 0 t $ D D O F .

O n t h e n e x t f e w p a g e s y o u w i l l f i n d s h o r t d e s c r i p t i o no t h e s e 1 c o n t r o l r e g i s t e r s w h i c h w w i l l g e i n t o i g r e a t e r d e t a i l i t h p r o g r a m s .

7

Page 81: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 81/224

A d v a n c e d M a c h i n e L a n g u a g e

R e g i s t e r P o r t d a t a r e g i s t e rA c c e s s : R E A D / W R I T ET h c o n t e n t s o f t h i s r e g i s t e r r e f l e c t t h c o n d it i o n o f t h e i n p u t / o u t p u t p o r t A

R e g i s t e r P o r t d a t a r e g i s t e rA c c e s s : R E A D / W R I T ET h c o n t e n t s o f t h i s r e g i s t e r r e f l e c t t h c o n d it i o n o f t h i n p u t / o u t p u t p o r t B

R e g i s t e r D a t a d i r e c t i o n r e g i s t e rA c c e s s : R E A D / W R I T ET h e e i g h t l i n e s o d a t a p o r t c a b t i n p u t o o u t p u t w i t h t h i s r e g i s t e r ,r e s p o n d i n g b i o f t h e d a t a d i r e c t i o nn u s t b e f o i n p u t o f o o u t p u t .

s w i t c h e dT h e c o r -r e g i s t e r

R e g i s t e r D a t a d i r e c t i o n r e g i s t e rA c c e s s : R E A D / W R I T ET h i s r e g i s t e r h a t h s a m e f u n c t i o n a r e g i s t e r2 e x c e p t f o p o r t B

R e g i s t e r T i m e r L S A c c e s s : R E A DW h e n r e a d i n g t h i s r e g i s t e r i r e t u r n s t h e c u rr e n t c o n d i t i o n o t i m e r ( L S B ) .A c c e s s : W R I T EB m e a n s o w r i t e c o m m a n d t t h i s r e g i s t e r o n c a l o a d t h l e a s t - s i g n i f i c a n t b y t e o t h v a l u ef r o m w h i c h t h t i m e r i t c o u n t d o w n t o z e r o .

7

Page 82: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 82/224

A d v a n c e d M a c h i n e L a n g u a g e

R e g i s t e r T i m e r M S A c c e s s : R E A DW h e n r e a d i n g , t h c o n t e n t s o t h i s r e g i s t e r g i v et h c u r r e n t c o n d i t i o n o t i m e r ( M S B ) .A c c e s s : W R I T EO n c a l o a d t h h i g h b y t e o t h v a l u e f r o mw h i c h t i m e r A i t c o u n t d o w n b y w r i t i n g t t h i s r e g i s t e r .

R e g i s t e r T i m e r L S T h i s r e g i s t e r c o r r e s p o n d s i f u n c t i o n t r e g i st e 4 b u a p p l i e s t t i m e r B

R e g i s t e r T i m e r M S T h i s r e g i s t e r c o r r e s p o n d s i f u n c t i o n t r e g i st e 5 e x c e p t t h a t i a p p l i e s t t i m e r B

R e g i s t e r T i m e o d a ( r e a l - t i m e c l o c k ) t e n t h s o s e c o n dA c c e s s : R E A DW h e n r e a d i n g t h i s r e g i s t e r , b i t s 0 - r e t u r n t h c u r r e n t s t a t e o f t h e r e a l - t i m e c l o c k , s p e c i f i c al l y , t h t e n t h s o s e c o n d i B C D f o r m a t . B i t s4 - 7 a r e a l w a y s z e r o .A c c e s s : W R I T EB w r i t i n g t r e g i s t e r y o c a n , d e p e n d i n g o t h p r e s e l e c t i o n o c o n t r o l r e g i s t e r ( r e g i s t e r1 5 ) , e i t h e r s e t t h e t e n t h s o s e c o n d o t h r e a l - t i m e c l o c k o s e l e c t t h a l a r m t i m e . T h t e n t h s o s e c o n d m u s t b g i v e n i B C f o r m a t ,i w h i c h b i t s 4 - m u s t b z e r o .

7

Page 83: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 83/224

A d v a n c e d M a c h i n e L a n g u a g e

R e g i s t e r T i m e o d a y , s e c o n d sA c c e s s : R E A DB r e a d i n g t h i s r e g i s t e r y o g e t h s e c o n d s o t h c u r r e n t c l o c k t i n e i B C D f o r m a t . B i t s 0 - r e p r e s e n t t h o n e ' s p l a c e a n b i t s 4 - t h t e n ' sp l a c e .A c c e s s : W R I T EY o c a e i t h e r s e t h c l o c k t i m e o s e l e c t t h a l a r m t i m e t h r o u g h w r i t e a c c e s s t t h i s r e g i st e r , s i m i l a r t r e g i s t e r 8 T h s e c o n d s c o u n tm u s t b e i B C f o r m a t .

R e g i s t e r 1 T i m e o d a y , m i n u t e sR e g i s t e r 1 0 i s o r g a n i z e d s i m i l a r l y t r e g i s t e r9 b u p e r t a i n s t m i n u t e s .

R e g i s t e r 1 T i m e o d a y , h o u r sA c c e s s : R E A DR e a d i n g t h i s r e g i s t e r r e t u r n s t h c u r r e n t h o u rv a l u e o t h r e a l - t i m e c l o c k . B i t s 0 - 3 r e p r es e n t s t h o n e ' s p l a c e . B e c a u s e t h c l o c k c o u n t so n l y f r o m o n e t t w e l v e , o n l y o n e b i t i n e c e ss a r y f o t h e t e n ' s p l a c e , n a m e l y b i 4 B i c o r r e s p o n d s t t h A m e r i c a n t i m e r e p r e s e n t a t i o na s f l a g f o b e f o r e n o o n ( A M , b i 7 = 0 ) o r a f t e rn o o n ( P M , b i 7 = 1 ) .A c c e s s : W R I T ET h w r i t e a c c e s s o c c u r s i t h s a m e w a a f o t h o t h e r r e a l - t i m e c l o c k r e g i s t e r s , a l t h o u g ht h s i g n i f i c a n c e o t h i n d i v i d u a l b i t s i t h s a m e a f o t h r e a d a c c e s s .

7

Page 84: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 84/224

A d v a n c e d M a c h i n e L a n g u a g e

R e g i s t e r 1 S e r i a l s h i f t r e g i s t e rD a t a i w r i t t e n t t h i s r e g i s t e r w h i c h w i l l b s h i f t e d b i t - b y - b i t o u t t h e s e r i a l p o r t . B r e a di n g , t h d a t a s h i f t e d i c a b r e a d .

R e g i s t e r 1 I n t e r r u p t c o n t r o l r e g i s t e rA c c e s s : R E A D ( i n t e r r u p t d a t a )B i t i m e r t i m e - o u tB i t i m e r t i m e - o u tB i c l o c k t i m e a l a r m t i m eB i s h i f t r e g i s t e r f u l l ( f o r i n p u t )

o e m p t y ( f o r o u t p u t )B i s i g n a l o F L A G p i B i 5 - a l w a y s z e r oB i B i s e v e n i s e i f a t l e a s t o n e o

t h b i t s 0 - i s e i b o t h t h i n t er r u p t c o n t r o l r e g i s t e r s .

N O T E : R E A D I N G T H I S R E G I S T E R E R A S E S I T A c c e s s : W R I T E ( i n t e r r u p t m a s k )T h s i g n i f i c a n c e o b i t s 0 - i t h s a m e a a b o v e . I b i s e v e n i s e i a d d i t i o n , o n c a e n a b l e t h i n t e r r u p t f o r t h e s e l e c t e d f u n c t i o n .I b i i c l e a r e d , o n b i d i s a b l e s t h c o r r e s p o n d i n g i n t e r r u p t p o s s i b i l i t y .

R e g i s t e r 1 C o n t r o l r e g i s t e rA c c e s s : R E A D / W R I T EB i 0 t i m e r s t o p , 1 t i m e r s t a r tB i 1 t i m e r t i m e - o u t i s i g n a l e d o

P B B i 0 e v e r y t i m e r t i m e - o u t c r e a t e s

h i g h s i g n a l o n P B 6 , 1 e v e r y t i m e - o u to t i m e r i n v e r t s t h s t a t e o P B 6 .

7

Page 85: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 85/224

A d v a n c e d M a c h i n e L a n g u a g e

B i 1 t i m e r c o u n t s o n c e f r o m i n i t i a lv a l u e t z e r o a n s t o p s ( o n e s h o t ) ,0 t i m e r s t a r t s a u t o m a t i c a l l y a f t e re v e r y t i m e - o u t ( c o n t i n u o u s m o d e ) .

B i 4 1 a b s o l u t e l o a d i n g o n e v a l u e o t i m e r A

B i 0 t i m e r c o u n t s s y s t e m c l o c k p u l s e s ,1 t i m e r c o u n t s p u l s e s o C N T .

B i 0 s e r i a l p o r t i i n p u t , 1 s e r i a lp o r t i o u t p u t .

B i 0 r e a l t i m e c l o c k r u n s a 6 H z 1 r e a l - t i m e c l o c k r u n s a t 5 0 H z

R e g i s t e r 1 C o n t r o l r e g i s t e rA c c e s s :B i t s 0 -

B i t s 5 -

B i

R E A D / W R I T Es a m e m e a n i n g a t h c o r r e s p o n d i n gb i t s i c o n t r o l r e g i s t e r A b u f o t i m e r a n P B 7 .T h e s e b i t s d e t e r m i n e t h t r i g g e rs o u r c e o t i m e r B 0 0 t i m e r c o u n t ss y s t e m c l o c k p u l s e s , 0 1 t i m e rc o u n t s C N T p u l s e s , 1 0 t i m e r c o u n t st i m e - o u t s o t i m e r A 1 1 t i m e rc o u n t s t i m e - o u t s o t i m e r w h e nC N T = 1 .0 s e c l o c k t i m e , 1 s e a l a r m t i m e .

7

Page 86: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 86/224

A d v a n c e d M a c h i n e l a n g u a g e

2 . U s i n g s y s t e m i n t e r r u p t

T h s i m p l e s t o p t i o n f o p r o g r a m m i n g y o u r o w i n t e r r u p ts e r v i c e r o u t i n e i t a d i t t h s y s t e m i n t e r r u p t . W h a tg e n e r a t e s t h s y s t e m i n t e r r u p t a n w h a t t a s k s d o e s i p e f o r m ?

T h s y s t e m i n t e r r u p t i c o n t r o l l e d b y t i m e r i C I 1 t i m e r i s i m p l y c o u n t e r w h i c h i d e c r e m e n t e d b o n e a c h

s y s t e m c l o c k c y c l e . W h e n t h t i m e r c o u n t s d o w n t z e r o ( a l s ok n o w n a " t i m i n g - o u t " ) , i s e n d s s i g n a l t t h e I R Q i n p u to t h p r o c e s s o r . T h p r o g r a m w i l l b i n t e r r u p t e d a n d c o nt r o l p a s s e d t a i n t e r r u p t r o u t i n e f o u n d a $ E A 3 1 . T h t i m e r c o n s i s t s o t w 8 - b i t r e g i s t e r s a n c a t h e r e f o r ec o u n t u t a p p r o x i m a t e l y 2 ~ 1 6 m i c r o s e c o n d s o 6 m i l l i s e co n d s . T h s y s t e m i n t e r r u p t i g e n e r a t e d e v e r y s i x t i e t h o s e c o n d , t h a t i s a p p r o x i m a t e l y e v e r y 1 m s

W h a t t a s k s d o e s t h i s r o u t i n e p e r f o r m ? T h e f i r s t t a s k i t c h e c k t s e i t h S T O P k e y i p r e s s e d . I t h i s i t h c a s e , f l a g i t h z e r o - p a g e i s e t . T h i s f l a g i c h e c k e db e f o r e t h e x e c u t i o n o e v e r y B A S I C p r o g r a m . I i t i s s e t ,t h B A S I C p r o g r a m i s t o p p e d . T h e r o u t i n e f o c h e c k i n g t h S T O P k e i n c r e m e n t s t h i n t e r n a l c l o c k T w h i c h r e t u r n s t h t i m e i s i x t i e t h s o s e c o n d .

T h s e c o n d t a s k c o n c e r n s t h c u r s o r . I t h c o m p u t e r i i t h d i r e c t m o d e o i a w a i t i n g i n p u t , i f l a s h e s t h c u r s o r . E v e r y t w e n t i e t h t i m e t h i n t e r r u p t r o u t i n e i c a l e d , t h c h a r a c t e r o v e r w h i c h t h c u r s o r i p o s i t i o n e d i r e v e r s e d . T h u s t h c u r s o r b l i n k s 2 0 / 6 0 = 3 t i m e s p e r s e c o n d .

A n o t h e r t a s k i t h s u p e r v i s i o n o t h d a t a s e t t e . I t h d a t a s e t t e i n o u n d e r p r o g r a m c o n t r o l ( L O A D o S A V E ,f o r e x a m p l e ) , t h e m o t o r i s w i t c h e d o n o r o f f d e p e n d i n g o w h e t h e r k e o t h d a t a s e t t e i p r e s s e d o n o t .

8

Page 87: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 87/224

A d v a n c e d M a c h i n e L a n g u a g e

T h l a s t a n p e r h a p s m o s t i m p o r t a n t t a s k o t h i n t e rr u p t r o u t i n e c o n s i s t s o r e a d i n g t h k e y b o a r d . I k e i p r e s s e d , t h e k e y c o d e i d e t e r m i n e d a n t h v a l u e p l a c e d i t h k e y b o a r d b u f f e r . T h k e y b o a r d b u f f e r i t e c h a r a c t e r sl o n g . I i t h e r e b y p o s s i b l e t p r e s s s e v e r a l k e y s " o u t s i d e "o a i n p u t r o u t i n e w h i c h t h e n a p p e a r o t h s c r e e n w h e n t h p r o g r a m e x p e c t s t h c h a r a c t e r s . T h e n u m b e r o c h a r a c t e r s i t h k e y b o a r d b u f f e r i a l s o s a v e d . W h e n t h e s e t a s k s a r ef i n i s h e d , c o n t r o l e x i t s t h e i n t e r r u p t r o u t i n e a n d r e t u r n s t t h i n t e r r u p t e d p r o g r a m .

A w m e n t i o n e d a l r e a d y , t h p r o c e s s o r g e t s t h a d d r e s so t h i n t e r r u p t r o u t i n e f r o m t h m e m o r y l o c a t i o n s $ F F F E a n $ F F F F , w h i c h a r i R O M . H o c a n w e c h a n g e t h e s e v a l u e s ?L e t ' s t a k e l o o k a e x a c t l y w h a t h a p p e n s w h e n a i n t e r r u p to c c u r s . T h a d d r e s s t w h i c h t h i n t e r r u p t v e c t o r p o i n t s i $ F F 4 8 .

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *F F 4 8F F 4 9F F 4 AF F 4 BF F 4 CF F 4 DF F 4 EF F 5 1F F 5 3F F 5 5F F 5 8

4 8 4 9 4 B B 2 F 6 6

0 1 0 1 1

0

0 0

P H T X P H T Y P H T S L D A N B E J M J M

$ 0 1 0 4 , X# $ 1 0$ F F 5 8( $ 0 3 1 6 )( $ 0 3 1 4 )

I R

s a v e

g e a n n o

J u m p p o i n t

r e g i s t e r s

b r e a k f l a g f r o m s t a c kt e s ts e t ?

B R E A K r o u t i n ei n t e r r u p t r o u t i n e

8

Page 88: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 88/224

A d v a n c e d M a c h i n e L a n g u a g e

F i r s t t h e c o n t e n t s o f t h e r e g i s t e r s a r s a v e d o t h s t a c k . T h e n t h c o n t e n t s o f t h e s t a t u s r e g i s t e r , w h i c h a r a u t o m a t i c a l l y s a v e d o t h s t a c k b t h p r o c e s s o r d u r i n g a i n t e r r u p t , a r r e a d a n d b i i i s o l a t e d . T h i s i t h B R E A Kf l a g w h i c h i s e b B R K c o m m a n d . T h B R K c o m m a n d s i m ul a t e s a i n t e r r u p t c a l l i s o f t w a r e . I o r d e r t d i s t i n g u i s hi f r o m h a r d w a r e i n t e r r u p t , t h B R E A K f l a g i t h s t a t u sr e g i s t e r i s e t . T h a p p r o p r i a t e i n d i r e c t j u m p i m a d e b a s e do t h i s . I f t h f l a g w a s e t , j u m p w i l l b m a d e o v e r t h v e c t o r a $ 0 3 1 6 / $ 0 3 1 7 , e l s e v i a t h e v e c t o r a $ 0 3 1 4 / $ 0 3 1 5 .

T h v e c t o r $ 0 3 1 4 / $ 0 3 1 5 i t h a c t u a l i n t e r r u p t v e c t o ra n n o r m a l l y p o i n t s t t h p r e v i o u s l y m e n t i o n e d a d d r e s s$ E A 3 1 .

I w w a n t t e x e c u t e a d d i t i o n a l t a s k s i n s i d e t h i n t e r r u p t r o u t i n e , w e c a n p r o c e e d i t h f o l l o w i n g m a n n e r :

W c h a n g e t h i n t e r r u p t v e c t o r s t h a t i p o i n t s t o u o w n r o u t i n e . W h e n o u r o u t i n e i f i n i s h e d , w j u m p t t h n o r m a l s y s t e m i n t e r r u p t r o u t i n e s o t h a t t h e s e t a s k s c a b p e r f o r m e d . U s i n g t h i s p r o c e d u r e w c a e x e c u t e s e c o n d" j o b " s i x t y t i m e s p e r s e c o n d , i n d e p e n d e n t o t h m a i n p r o gr a m . T h i s r o u t i n e m u s t n a t u r a l l y n o t l a s t l o n g e r t h a n o n s i x t i e t h o s e c o n d , o t h e r w i s e t h e r e w i l l b e n t i m e f o r t h em a i n p r o g r a m . l o n g i n t e r r u p t r o u t i n e i c h a r a c t e r i z e d b s l o w i n g d o w n o f t h m a i n p r o g r a m .

W h a t c o u l d t h c o m p u t e r e x e c u t e 6 t i m e s p e r s e c o n d ?H e r e y o u r i m a g i n a t i o n i t h o n l y l i m i t i n g f a c t o r . Y o uc o u l d , f o r e x a m p l e , f l a s h t h s c r e e n o t e x t o t h s c r e e n ,s i m i l a r t t h w a t h c u r s o r i f l a s h e d . S t h a t t h e b l i n ki n d o e s n o t g o t o f a s t , c o u n t e r m u s t b u s e d s o t h a t

8

Page 89: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 89/224

A d v a n c e d M a c h i n e L a n g u a g e

t h e v e n t o c c u r s o n l y o n c e e v e r y g i v e n n u m b e r o i n t e r r u p tc a l l s .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :

1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :

2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :

C 0 0 0

C 0 0 0

D 0 2 0D 0 2 1E A 3 10 3 1 4

0 0 1 E

C 0 0 0C 0 0 1C 0 0 3C 0 0 5

C 0 0 8C O O BC O O C

C O O DC 0 1 0C 0 1 2C 0 1 4

C 0 1 7C 0 1 AC 0 1 D

. O P T P I

; F L A S H B A C K G R O U N D / B O R D E R

* $ c o o o

B O R D E RB A C KI R Q R O U TI R Q V E C

$ D 0 2 0$ D 0 2 1$ E A 3 1$ 3 1 4

; B O R D E R; B A C K G R O U N D

N U M B E R

7 I N I TA O A C 8 1 0

8 1 0 5 6

C 2 C B L I N KD 1 A I 8 2 C

3 ; E V E R Y H A L F S E C O N D

S E L D L D S T

S T C L R T

D E B N L D S T

; D I S A B L E I N T E R P E T S# < B L I N K# > B L I N KI R Q V E C

I R Q V E C + 1

; I R Q - V E C T O R T S C R E E N

C O U N TD O N E# N U M B E RC O U N T

; D E C R E M E N T C O U N T E R

; R E S E T C O U N T E R; E X C H A N G E C O L O R S

A E 2 1 D O L D B A C KA 2 0 D O L D B O R D E R8 2 D S T B A C K

8

Page 90: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 90/224

A d v a n c e d M a c h i n e L a n g u a g e

3 9 0 : C 0 2 0 8 2 D S T B O R D E R4 0 0 :4 1 0 : C 0 2 3 4 3 E D O N E J M P I R Q R O U T4 2 0 :4 3 0 : C 0 2 6 I C O U N T . B Y T N U M B E R ; C O U N T E RJ C 0 0 0 - C 0 2 7

N E R R O R S

L e t ' s t a k e c l o s e r l o o k a t h a b o v e p r o g r a m . T h r o u t i n e I N I T t a k e s c a r e o t h i n i t i a l i z a t i o n a n s e t s t h i n t e r r u p t v e c t o r t t h b l i n k r o u t i n e . N o t e t h a t i n t e r r u p t so t h e r w i s e p o s s i b l e w h i l e t h v e c t o r i b e i n g c h a n g e d a r b l o c k e d b t h S E i n s t r u c t i o n . I s u c h a i n t e r r u p t w e r e t b g e n e r a t e d w h e n t h l o b y t e p o i n t e d t t h n e w v a l u ew h i l e t h h i g h b y t e s t i l l p o i n t e d t t h e o l d r o u t i n e , t h ep r o c e s s o r w o u l d b r a n c h t a u n d e f i n e d p l a c e i m e m o r y a n w o u l d i a l l i k e l i h o o d " c r a s h . " I t h b i i s e t , i n t e rr u p t s c a n b e n a b l e d w i t h C L I a n d w e r e t u r n w i t h R T S . N o t h n e i n t e r r u p t r o u t i n e i a c t i v e .

T h f o l l o w i n g h a p p e n s a t h n e x t i n t e r r u p t c a l l :F i r s t , t h e m e m o r y l o c a t i o n C O U N T i d e c r e m e n t e d b o n e . I t h i s d o e s n o y i e l d v a l u e o f z e r o , e x e c u t i o n b r a n c h e s t t h l a b e l D O N E a n d t h n o r m a l i n t e r r u p t r o u t i n e i e x e c u t e df r o m t h e r e . I f h o w e v e r , t h c o u n t e r w a z e r o , i t i s f i r s tr e s e t t v a l u e 3 a n d t h e b a c k g r o u n d a n b o r d e r c o l o r s a r e x c h a n g e d , c r e a t i n g t h f l a s h e f f e c t .

W c a a c t i v a t e o u r o u t i n e b c a l l i n g i w i t h S Y 1 2 * 4 0 9 6 . I m m e d i a t e l y t h s c r e e n b e g i n s t f l a s h t w i c es e c o n d . T h i s i n t e r r u p t r o u t i n e r u n s c o m p l e t e l y i n d e p e n d e n t l yo B A S I C o m a c h i n e l a n g u a g e p r o g r a m u n t i l t h i n t e r r u p tv e c t o r i s e b a c k t t h e o l d r o u t i n e . T h i s i d o n e b y

8

Page 91: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 91/224

A d v a n c e d M a c h i n e L a n g u a g e

p r e s s i n g t h R U N / S T O P - R E S T O R E k e y s , f o r e x a m p l e .

W e c a n e a s i l y c h a n g e t h f l a s h f r e q u e n c y w i t h t h e l a b e lN U M B E R ; i g i v e s t h n u m b e r o s i x t i e t h s o s e c o n d b e t w e e nc o l o r c h a n g e s .

A s e c o n d e x a m p l e o i n t e r r u p t r o u t i n e s , w w a n t t c h a n g e t h c u r s o r a t t r i b u t e s . T h c u r s o r s h o u l d n o t b l i n k ,b u t o n l y b e r e p r e s e n t e d a a i n v e r t e d c h a r a c t e r . W e c a n n o ts i m p l y p l a c e o u n e r o u t i n e a h e a d o f t h e n o r m a l i n t e r r u p tr o u t i n e . W m u s t r e p l a c e t h p a r t w h i c h p e r t a i n s t t h c u r s o r b l i n k i n g .

* * * * * * * * * * * * * * * * * * * * * * * * * * * * *E A 3 1E A 3 4E A 3 6E A 3 8E A 3 AE A 3 CE A 3 EE A 4 0E A 4 2E A 4 4E A 4 7E A 4 9E A 4 BE A 4 DE A 4 FE A 5 2E A 5 4E A 5 7E A 5 A

2 A D C D A 8 A 4 A

B B E 8 2 B 8 A A

E C 2 C 2 1 C D C 8

D 1 C C 2 F 8 8 C

F

0

E

0 0

J S L D B N D E B N L D S T L D L S L D

L D B C I N S T J S L D S T L D L D

$ F F E A$ C $ E A 6 1$ C $ E A 6 1# $ 1 4$ C $ D $ C $ 0 2 8 7( $ D 1 ) , Y$ E A 5 C$ C $ C $ E A 2 4( $ F 3 ) , Y$ 0 2 8 7$ 0 2 8 6$ C

I n t e r r u p t r o u t i n es t o p k e y , i n c r e m e n t t i m eb l i n k f l a g f o c u r s o rn o b l i n k i n g , t h e n c o n t i n u ed e c r e m e n t b l i n k c o u n t e rn o z e r o , t h e n c o n t i n u es e b l i n k c o u n t e r b a c k t 2 a n d s a v ec u r s o r c o l u m nb l i n k s w i t c h z e r o t h e n C = c o l o r u n d e r c u r s o rs e c h a r a c t e r c o d eb l i n k s w i t c h o n c o n t i n u eb l i n k s w i t c h o s a v e c h a r a c t e r u n d e r c u r s o rc a l c u l a t e p n t r i c o l o r R A g e c o l o r c o d ea n s a v ec o l o r c o d e u n d e r c u r s o rc h a r a c t e r u n d e r c u r s o r

8

Page 92: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 92/224

A d v a n c e d M a c h i n e L a n g u a g e

E A 5 CE A 5 E

4 2

8 1 E

E O J S

# $ 8 0$ E A 1 C

i n v e r t R V b i s e c u r s o r c h a r a n d c o l o r

T h c u r s o r b l i n k i n g i r e a l i z e d a f o l l o w s . F i r s tc h e c k i m a d e t s e i t h c u r s o r i a c t i v e . I n o t , t h f o l l o w i n g p a r t i s k i p p e d . O t h e r w i s e t h b l i n k c o u n t e r i d e c r e m e n t e d . I i i n o z e r o , t h e r e m a i n i n g p o r t i o n w i l ls k i p p e d . O t h e r w i s e , t h p h a s e o f t h e c u r s o r i c h e c k e d t s e i i t i s i t h i n v e r t e d p h a s e . T h e c u r r e n t o s t o r e dc h a r a c t e r i i n v e r t e d a n d i s p l a y e d d e p e n d i n g o t h i s . T h s a m e h a p p e n s i t h c o l o r R A M w i t h t h c h a r a c t e r c o l o r a n dt h c u r r e n t c u r s o r c o l o r .

W w a n t t m o d i f y t h r o u t i n e s t h a t w e h a v e s t e a d yc u r s o r . W e c a d t h i s w i t h t h f o l l o w i n g p r o g r a m .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :

1 6 0 :

1 7 0 :

1 8 0 :

1 9 0 :

2 0 0 :

c o o o

F F E AO O C C

O O C F

0 2 8 7

O O C E

0 0 D 1

0 0 F 3

; M O D I F Y

S T O PC U R S F L A G

R E V E R S E

C U R S C O L

C U R S C H A R

C H A R

C O L O R

. O P T P

C U R S O R

$ F F E A$ C

$ C

$ 2 8 7

$ C

$ D

$ F

; R E A D S T O P K E ; F L A G F O V I S I B L E

C U R S O R; F L A G F O I N V E R T E D

C H A R A C T E R; C O L O R U N D E R

C U R S O R; C H A R A C T E R U N D E R

C U R S O R; P O I N T E R I V I D E O

R A ; P O I N T E R I C O L O R

R A

8

Page 93: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 93/224

A d v a n c e d M a c h i n e L a n g u a g e

2 1 0 : E A 2 4

2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :

2 8 0 :2 9 0 :3 0 0 :

3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :

3 7 0 :3 8 0 :3 9 0 :

4 0 0 :4 1 0 :

4 2 0 :

4 3 0 :

4 4 0 :4 5 0 :

0 0 D 30 2 8 60 3 1 4E A 6 1

C O O O

C 0 0 1C 0 0 3C 0 0 5

C 0 0 8C O O BC O O C

C O O DC 0 1 0

C 0 1 2C 0 1 4C 0 1 6

C 0 1 8C 0 1 A

C 0 1 C

C O I F

■ C 0 2 1C 0 2 3

7

A A 8

8 5 6

2 A

D A A

D E

2

B

8 4

O C 1 0

1 0

E F C

I D C

1 C

2 E

D

C 8

S E T C O L

C O L U M NC O L S T RI R Q V E CC O N T I R Q

I N I T

$ E A 2 4 S E P O I N T E R T C O L O R R A

S E

L D L D S T

S T C L R T

J S L D

B N L D L D

B N I N

J S

L D

S T E O

$ D $ 2 8 6$ 3 1 4$ E A 6 1

# < N E W C U R S# > N E W C U R SI R Q V E C

I R Q V E C + 1

S T O PC U R S F L A G

N O C U R S O RC O L U M NR E V E R S E

N O C U R S O RR E V E R S E

S E T C O L

( C H A R ) , Y

C U R S C H A R# $ 8 0

C U R S O R C O L U M NC U R S O R C O L O RI R V E C T O RC O N T I N U E I R

D I S A B L E I N T E RR U P T S

I R V E C T O R T N E R O U T I N E

T E S T S T O P K E ; C U R S O R

V I S I B L E ?; N

C U R S O R C O L U M N; C H A R A C T E R A

R E A D Y R E V E R S E D ?; Y E S

; S E T F L A G F O R E V E R S E

P O I N T E R I C O L O RR A

; P O I N T E R A C U R S O R P O S I T I O N

; S A V E; F L I P R V S B I

8

Page 94: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 94/224

A d v a n c e d M a c h i n e L a n g u a g e

4 6 0 :

4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :

C 0 2 5

C 0 2 7C 0 2 9C 0 2 CC 0 2 FC 0 3 1

] C 0 0 0 - C 0 3 4N E R R O R S

9

B 8 A 9 4

D

F 8 8 F 6

0 0

E

S T

L D S T L D S T J M

( C H A R ) ,

( C O L O R )C U R S C O LC O L S T R( C O L O R )

C O N T I R Q

Y ; A N D I V I D E OR A

, ; C O L O R; S A V E

; C U R S O R C O L O R, ; S E T

: C O N T I N U E I R

W h e n y o a c t i v a t e t h i s r o u t i n e w i t h S Y S 1 2 * 4 0 9 6 , t h c u r s o r i s i m p l y r e p l a c e d w i t h a i n v e r t e d c h a r a c t e r . Y o uc a m o d i f y t h i s r o u t i n e a c c o r d i n g t y o u r o w n t a s t e ; t h c u r s o r c o l o r n e e d n o b t h s a m e a t h c h a r a c t e r c o l o r ,f o i n s t a n c e — i t c o u l d a l w a y s b o n c o l o r . I n s t e a d o t h i n v e r t e d r e p r e s e n t a t i o n y o u c a n d s o m e t h i n g d i f f e r e n t , s u c ha d i s p l a y l i n e . I w o u l d a l s o b e p o s s i b l e t l e a v e t h c h a r a c t e r u n c h a n g e d a n s i m p l y a l t e r n a t e b e t w e e n t w c o l o r s .Y o u s h o u l d c o n s i d e r t h e s e e x a m p l e s o n l y a s u g g e s t i o n s f o y o u r o w e x p e r i m e n t s w i t h t h i n t e r r u p t r o u t i n e — t h e p o s si b i l i t i e s a r n u m e r o u s .

H e r e w c a b r i e f l y d i s c u s s m e t h o d o i n h i b i t i n g t h S T O P k e y . B e c a u s e t h e t e s t f o r t h e S T O P k e y i t h f i r s tt h i n g d o n e i t h i n t e r r u p t r o u t i n e , w e c a n b y p a s s t h i s t e s tb c h a n g i n g t h i n t e r r u p t v e c t o r t p o i n t b e y o n d i t r u n n i n g B A S I C p r o g r a m c a n l o n g e r b s t o p p e d w i t h t h S T O Pk e y :

P O K E 7 8 8 , P E E K ( 7 8 8 ) + 3

T h v e c t o r i s i m p l e i n c r e m e n t e d b y t h r e e b y t e s s t h a t t h et e s t i b y p a s s e d . d i s a d v a n t a g e o f t h i s m e t h o d i t h a t t h e

8

Page 95: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 95/224

A d v a n c e d M a c h i n e L a n g u a g e

i n t e r n a l c l o c k T a n T I $ n o l o n g e r r u n . T h i s i b e c a u s e t h r o u t i n e t h a t t e s t s t h S T O P k e y a l s o k e e p s t h c l o c k u d a t e d .

A a d d i t i o n a l a p p l i c a t i o n o t h s y s t e m r o u t i n e i t h e x e c u t i o n o c e r t a i n a c t i o n u p o n k e y p r e s s . I i p o s s i bl e f o e x a m p l e t c a l l h a r d c o p y r o u t i n e w h i c h o u t p u t st h s c r e e n c o n t e n t s t p r i n t e r b p r e s s i n g f u n c t i o n k e y .

T h i n t e r r u p t r o u t i n e c a c h e c k t s e i t h k e y w a sp r e s s e d . I t h i s i t h c a s e , r o u t i n e c a n b e c a l l e d w h i c hp e r f o r m s t h s p e c i a l t a s k . H e r e t o o , m a n y a p p l i c a t i o n s a r p o s s i b l e , s u c h a s w i t c h i n g b e t w e e n t w s c r e e n p a g e s . H e r ei a e x a m p l e o t h i s :

. O P T P

; S W I T C H S C R E E N P A G E S

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :

2 1 0 :2 2 0 :

2 3 0 :2 4 0 :2 5 0 :

0 3 3 C

0 0 0 30 0 0 5D D O O0 2 8 80 3 1 4E A 3 1D 0 0 0

D 8 0 0c o o o

0 0 0 10 2 8 D0 0 C 5

P N T 1P N T 2V I D E O M A PV I D E O P G EI R Q V E CI R Q O L DC H A R G E N

C O L O RC O L O R 2

P O R TC T R LK E

$ D D 0 06 4 $ 3 1 4$ E A 3 1$ D 0 0 0

$ D 8 0 0$ C 0 0 0

6 5 $ C

; 1 6 K V I D E O R A N G E

; C H A R A C T E R G E NE R A T O R

; C O L O R R A ; S T O R A G E F O R C O L O R

R A ; P R O C E S S O R P O R T; F L A G F O C O N T R O L; L A S T K E

8

Page 96: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 96/224

A d v a n c e d M a c h i n e L a n g u a g e

2 6 0 : 0 0 0 4 F J M A T R I X N U M B E R O F K E

2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :

3 2 0 :3 3 0 :3 4 0 :

3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :

4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :

5 2 0 :5 3 0 :

0 3 3 C

0 3 3 C0 3 3 D

0 3 4 00 3 4 20 3 4 4

0 3 4 70 3 4 A0 3 4 B

0 3 4 C

0 3 4 F0 3 5 10 3 5 30 3 5 50 3 5 70 3 5 90 3 5 C

0 3 5 F0 3 6 10 3 6 30 3 6 5

0 3 6 70 3 6 9

7 2

A A 8

8 5 6

A

2 F A C D 2 4

A 8 8 A

8 A

9

4 0 1

1

8

0 0 C 0 0 5 3

0 0 0 D

0 C

I N I T0

0

0

0 T E S T

0 E N O S W I T C H

S W I T C H

*

S E J S

L D L D S T

S T C L R T

L D

A N B E L D C M B N J S J M

L D S T S T L D

S T L D

8 2

S E T C H A R

# < T E S T# > T E S TI R Q V E C

I R Q V E C + 1

C T R L

# * 1 0 0N O S W I T C HK E # F N O S W I T C HS W I T C HI R Q O L D

# P N T 1P N T 2# > C O L O R

P N T 1 + 1# > C O L O R 2

; C O P Y C H A R A C T E RG E N E R A T O R

; P O I N T E R T N E R O U T I N E

; C O N T R O L K E YP R E S S E D ?

; N ; F P R E S S E D

; N ; E X C H A N G E P A G E S

; P O I N T E R T C O L O RR A

; P O I N T E R T

9

Page 97: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 97/224

A d v a n c e d M a c h i n e L a n g u a g e

5 4 0 :5 5 0 :5 6 0 :5 7 0 :5 8 0 :5 9 0 :

6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :

7 0 0 :7 1 0 :7 2 0 :7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :7 8 0 :7 8 2 :7 8 4 :7 8 6 :7 9 0 :

0 3 6 B0 3 6 D0 3 6 F0 3 7 10 3 7 20 3 7 4

0 3 7 60 3 7 70 3 7 90 3 7 A0 3 7 C0 3 7 E0 3 8 00 3 8 10 3 8 30 3 8 6

0 3 8 80 3 8 B0 3 8 E0 3 9 00 3 9 3

0 3 9 40 3 9 60 3 9 80 3 9 A0 3 9 C0 3 9 E0 3 A 0

8 A B 4 B 9

6 9 C D E E C D A

4

8 A 4 8 6

A 8 A 8 A A 8

0

0 0

0 0

0

F 0 0

E 0 0

0 8 C 8

0 0 D 0 1 3 0

D

D 0

0

S W A P

S T L D I D P H L D S T

P L S T I N B N I N I N D E B N L D E O

S T L D E O S T R T

S T O R A G E F O C O L O RP N T 2 + 1# ( P N T 1 ) , Y

( P N T 2 ) , Y( P N T 1 ) , Y

( P N T 2 ) , Y

S W A PP N T 1 + 1P N T 2 + 1

S W A PV I D E O M A P# S 1 1

V I D E O M A PV I D E O P G E# $ C 0V I D E O P G E

N U M B E R O P A G E S

; S W A P C O L O RS T O R A G E

N E X T P A G E

; A C C E S S A D D R E S SF O V I

; S C R E E N P A G E

S E T C H A R

L O O P

L D # S T Y P N T 1L D # > C H A R G E NS T A P N T 1 + 1L D # $ 1 0L D # $ 3 3S T P O R T ; T U R N O N C H A R A C T E R

G E N E R A T O R

9

Page 98: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 98/224

A d v a n c e d M a c h i n e L a n g u a g e

8 0 0 :8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :8 8 0 :8 9 0 :9 0 0 :9 1 0 :

9 2 0 :9 3 0 :

0 3 A 20 3 A 40 3 A 50 3 A 70 3 A 90 3 A A0 3 A C0 3 A D0 3 A F0 3 B 10 3 B 20 3 B 4

0 3 B 60 3 B 8

] 0 3 3 C - 0 3 B 9N E R R O R S

B 4 A 8 6 9 C D E C D A

8 6

0

3 0

0

E 0

E 3

0

L D P H L D S T P L S T I N B N I N

D E B N L D

S T R T

( P N T 1 ) , Y

# $ 3 0P O R T ; T U R N O N R A M

( P N T 1 ) , Y

L O O PP N T 1 + 1 ; N E X T P A G E

L O O P# $ 3 7 ; S T A N D A R D C O N F I G

U R A T I O NP O R T

T h i s p r o g r a m a l l o w s u s t o s w i t c h b e t w e e n t w s c r e e np a g e s . T h e f i r s t p a g e l i e s a u s u a l a $ 0 4 0 0 , w h i l e w e h a v ep l a c e d t h s e c o n d p a g e a a d d r e s s $ 0 4 0 0 . I t i s a l s o p o s s i b l ef o t h s e c o n d p a g e t h a v e i t o w s p r i t e s . T h e s p r i t ep o i n t e r s m u s t b a a d d r e s s $ C 7 F 8 . T h b a s e a d d r e s s o t h i ss c r e e n i t h e r e f o r e l o c a t e d a $ C 0 0 0 . F o r e x a m p l e , t h a d d r e s s s p a c e f r o m $ C 8 0 0 t $ C F F F i a v a i l a b l e f o s t o r i n gs p r i t e s a n o f f e r s r o o m f o 3 d i f f e r e n t s p r i t e p a t t e r n s( s p r i t e n u m b e r s 3 t 6 3 ) . B e c a u s e t h v i d e o c o n t r o l l e ra l w a y s e x p e c t s t h c o l o r R A M t b a a d d r e s s $ D 8 0 0 , w e c a ns t o r e t h c o l o r o t h c u r r e n t l y i n v i s i b l e p a g e a $ C 0 0 0 t $ C 3 F F . F u r t h e r m o r e , w m u s t t a k e i n t o c o n s i d e r a t i o n t h e f a c tt h a t t h V I i t h u p p e r 1 6 f r o m $ C 0 0 0 t $ F F F F c a n n o ta c c e s s t h c h a r a c t e r g e n e r a t o r R O M . W t h e r e f o r e c o p y t h c h a r a c t e r g e n e r a t o r f r o m R O M t t h R A a t h s a m e a d d r e s s -

9

Page 99: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 99/224

A d v a n c e d M a c h i n e L a n g u a g e

e s

T h a c t u a l i n t e r r u p t r o u t i n e c h e c k s b i i t h f l a gf o r t h e c o n t r o l k e y . I t h i s b i t i s e t , t h c o n t r o l k e y w a p r e s s e d . I t h F k e y w a s a l s o p r e s s e d , t h r o u t i n e w h i c he x c h a n g e s t h c o l o r s t o r a g e a n d s e t s t h p a r a m e t e r s f o d i s p l a y i n g t h o t h e r s c r e e n p a g e i c a l l e d . F i n a l l y ,b r a n c h i m a d e t t h n o r m a l i n t e r r u p t r o u t i n e .

W h e n w a s s e m b l e o u p r o g r a m a n a c t i v a t e i w i t h S Y 8 2 8 , w c a s w i t c h t t h s e c o n d s c r e e n p a g e s i m p l y b p r e s s i n g t h C T R L a n F k e y s a t h s a m e t i m e . T h e f i r s tt i m e y o u m a k e t h e s w i t c h , y o s h o u l d c l e a r t h s c r e e n b c a u s e r a n d o m v a l u e s w i l l b e l e f t i t h v i d e o R A M . P r e s s i n gt h t w k e y s a g a i n r e t u r n s y o u t t h o r i g i n a l s c r e e n . T h c u r s o r w i l l r e m a i n a t h s a m e p l a c e .

A a a d d i t i o n a l s u g g e s t i o n , y o u c o u l d t r t d i s p l a yt h c l o c k t i m e d u r i n g t h i n t e r r u p t r o u t i n e . T h t i m e w i l lt h e n a p p e a r o t h s c r e e n a a l t i m e s , i n d e p e n d e n t o o t h e rp r o g r a m a c t i v i t i e s . Y o c a f i n d s u c h r o u t i n e i t h b o o kT r i c k s a n d T i p s f o r t h C o m m o d o r e 6 4

A n o t h e r e q u a l l y i n t e r e s t i n g p o s s i b i l i t y f o a i n t e rr u p t r o u t i n e i n v o l v e s s p r i t e s . O n e o m o r e s p r i t e s c a b m o v e d d u r i n g e a c h i n t e r r u p t . P r o g r a m m i n g t h s o u n d c h i p c a a l s o b e d o n e i a i n t e r r u p t r o u t i n e . H e r e s o u n d s e q u e n c e so e n t i r e p i e c e s o m u s i c c a n b e p l a y e d c o m p l e t e l y i n d e p e n de n t l y o o t h e r p r o g r a m s . Y o u c a n s e e t h a t t h e p o s s i b i l i t i e sw h i c h a r o f f e r e d t y o a r v i r t u a l l y u n l i m i t e d . B e f o r e w b e g i n t g e n e r a t e o u o w i n t e r r u p t s , w w i l l p r e s e n t t w m o r e r o u t i n e s w h i c h a r t i e d t t h s y s t e m i n t e r r u p t .

9

Page 100: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 100/224

A d v a n c e d M a c h i n e L a n g u a g e

Y o m a f i n d t h f o l l o w i n g p r o g r a m q u i t e u s e f u l i y o u s t h u s e r p o r t t i n t e r f a c e w i t h d e v i c e s o y o u r o w n . T h p r o g r a m i t i e d i n t o t h e s y s t e m i n t e r r u p t a n d g i v e s y o uc o n t i n u a l d i s p l a y o f t h e i n d i v i d u a l b i t s o t h u s e r p o r t .T h d i r e c t i o n r e g i s t e r i d i s p l a y e d i t h f i r s t s c r e e nl i n e . T h i s a l l o w s y o t s e w h i c h l i n e s a r e s e f o i n p u t( = 0 ) o o u t p u t ( = 1 ) . I t h e n e x t l i n e t h e s t a t e s o t h u s e rp o r t l i n e s a r e d i s p l a y e d ; i n d i c a t e s l o s i g n a l , h i g hs i g n a l i d i s p l a y e d a 1 B o t h d i s p l a y s a r e a l s o g i v e n i h e x a d e c i m a l f o r m .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :

0 3 3 C

D D O OD D 0 1D D 0 3

0 2 8 8D 8 0 0

0 0 0 7

0 3 1 4E A 3 1O O F B

0 3 3 C0 3 3 C0 3 3 D0 3 4 00 3 4 2

7 A 1 4 7 8 D 1 4

. O P T P

; U S E R P O R T D I S P L A Y

C I A 2U S E R P O R TD I R E C T I O N

V I D E O P G EC O L O R R A N

C O L O R

I R Q V E CI R Q O L DP N

I N I T0

0

* S E L D E O S T

$ D D 0 0C I A 2 + 1C I A 2 + 3

6 4 $ D 8 0 0

$ 3 1 4$ E A 3 1$ F

8 2

I R Q V E C# I R Q O L DI R Q V E C

; Y E L L O W

D I S P

9

Page 101: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 101/224

A d v a n c e d M a c h i n e L a n g u a g e

3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :

4 4 0 :4 5 0 :4 6 0 :4 7 0 :

4 8 0 :4 9 0 :5 0 0 :

5 1 0 :5 2 0 :5 3 0 :5 4 0 :5 5 0 :5 6 0 :5 7 0 :5 8 0 :

5 9 0 :6 0 0 :

0 3 4 50 3 4 80 3 4 A0 3 4 D0 3 4 E

0 3 4 F0 3 5 10 3 5 20 3 5 40 3 5 50 3 5 7

0 3 5 90 3 5 C0 3 5 E0 3 6 1

0 3 6 30 3 6 60 3 6 9

0 3 6 B0 3 6 E0 3 6 F0 3 7 10 3 7 20 3 7 4

0 3 7 7

0 3 7 80 3 7 A

A 4 8 5 6

A 4 A 4 A 8

A 8 A A

2 A A

2 6 8 6 8 4

4

A O

1 E 1

F

F

1 F

8 F 0 0

7 0 2

7

F

F 3

0

0

0

D I S P

0

D

0 D

0

E

D I S P L A Y

L O O P

L D E O S T C L R T

L D P H L D P H L D S T

L D S T L D L D

J S L D L D

J S P L S T P L S T J M

P H

L D A S

I R Q V E C + 1# I R Q O L DI R Q V E C + 1

P N

P N T + 1

# 2 P N

V I D E O P G EP N T + 1D I R E C T I O N#

D I S P L A YU S E R P O R T# 4

D I S P L A Y

P N T + 1

P N I R Q O L D

#

D I S P

S A V E P O I N T E R

P O I N T E R T V I D E OR A

D I R E C T I O N I T O L I N E; D I S P L A Y

U S E R P O R T I S E C O N D L I N E; D I S P L A Y

G E P O I N T E R B A C K

T N O R M A L I R

S A V E V A L U E F O RH E D I S P L A Y

H I G H E S T B I I

9

Page 102: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 102/224

A d v a n c e d M a c h i n e L a n g u a g e

C A R R Y6 1 0 :6 2 0 :6 3 0 :6 4 0 :

6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 1 0 :7 2 0 :7 3 0 :7 4 0 :7 5 0 :

7 6 0 :7 7 0 :7 8 0 :7 9 0 :

8 0 0 :8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :8 8 0 :8 9 0 :

0 3 7 B0 3 7 C0 3 7 E0 3 8 0

0 3 8 20 3 8 40 3 8 60 3 8 90 3 8 A0 3 8 B0 3 8 C

0 3 8 E

0 3 8 F0 3 9 00 3 9 10 3 9 2

0 3 9 30 3 9 40 3 9 50 3 9 80 3 9 90 3 9 B0 3 9 D0 3 9 F0 3 A 10 3 A 3

4 A 9 A

9 A 9 C 6 C D

C

6 4 4 4

4 4 2 6 2 C 9 6 6 2

3 0 3

F 0 1

E

9

O O 0 0 3 3

P H L D B C L D

N U L L S T AL D

D S T I N P L D E B N

; H E X D I P L A Y

I N P L P H L S L S

L S L S

0 J S P L

A S C I I A N C M B C A D

S M A L L E R A D A N

# " 0 "N U L L# " 1 M

( P N T ) , Y# C O L O R

; D I S P L A Y Z E R O

; D I P L A Y O N W H E N

; A N D S E C O L O RC 0 L 0 R R A M + 2 8 , Y

L O O P

A S C I I

# * 1 1 1 1# 1 S M A L L E R# # H 0 "# * 1 1 1 1 1 1

; N E X T B I

; S H I F T U P P E RN Y B B L E D O W N

; H I G H N Y B B L E

; C O N V E R T T A S C I I; C O N V E R T T

S C R E E N C O D E

9

Page 103: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 103/224

Page 104: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 104/224

A d v a n c e d M a c h i n e L a n g u a g e

" 0 " . A f t e r t h b i n a r y d i s p l a y , t h v a l u e s t e n p o r a r i l y s t o r e do t h s t a c k a r d i s p l a y e d i h e x a d e c i m a l . T h e u p p e r n y b b l e( f o u r b i t s ) i r i g h t - s h i f t e d i n t o t h e l o w e r n y b b l e , t h e nc o n v e r t e d t A S C I I a n d i s p l a y e d o n t h e s c r e e n . T h e s a m e i t h e n d o n e f o r t h e l o w e r n y b b l e .

W h e n y o a c t i v a t e t h r o u t i n e w i t h S Y 8 2 8 , t h f o l l o wi n r e p r e s e n t a t i o n a p p e a r s o t h e s c r e e n , f o r e x a m p l e :

0 0 0 0 0 0 0 0 0 F F F F F F F F F

T h i s i t h v a l u e a f t e r t h c o m p u t e r i t u r n e d o n T h u s e r p o r t i s e t i n p u t a n t h o p e n i n p u t s y i e l d h i g hs i g n a l . S w i t c h t h u s e r p o r t t o u t p u t a n d w r i t e 1 0 t i t

P O K E 5 6 5 7 9 , 2 5 5P O K E 5 6 5 7 7 , 1 0

Y o g e t h f o l l o w i n g d i s p l a y :

F F F F F F F F F 0 1 1 0 0 1 0 0 6

T h b i t s 2 5 a n a r s e t ; t h i s c o r r e s p o n d s t t h e h e xn u m b e r $ 6 o d e c i m a l 1 0 0 .

T h n e x t r o u t i n e i s i m i l a r t t h p r e v i o u s . I p r v i d e s u w i t h c o n t i n u a l d i s p l a y o f t h e r e m a i n i n g f r e em e m o r y s p a c e . W a c c o m p l i s h t h i s l i k e t h F R f u n c t i o n e a c hi n t e r r u p t . W s i m p l y c a l c u l a t e t h d i f f e r e n c e b e t w e e n t h e n d o f t h e a r r a y t a b l e a n d t h s t a r t o f t h e s t r i n g s . I c o n t r a s t t t h e r e a l F R E f u n c t i o n , n g a r b a g e c o l l e c t i o n i

9

Page 105: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 105/224

A d v a n c e d M a c h i n e L a n g u a g e

p e r f o r m e d i t h i n t e r r u p t r o u t i n e . I w w a n t t d i s p l a yt h e f r e e s p a c e i d e c i m a l , i r e q u i r e s c o n v e r s i o n t f l o a t i n g - p o i n t f o r m a t a n a g a i n t A S C I I r e p r e s e n t a t i o n .T h i s t a k e s t i m e , a l t h o u g h w c o u l d p u u w i t h t h a t . T h m a i n d i s a d v a n t a g e o s u c h m e t h o d i t h a t w e m u s t s a v e a l u s e d m e m o r y l o c a t i o n s o t h e s t a c k b e c a u s e t h i n t e r r u p t c a s t o p t h p r o g r a m a a n p l a c e . W e w o u l d h a v e t s a v e 2 0 o rm o r e m e m o r y p l a c e s , w h i c h , f o o n e , r e q u i r e s t i m e , a n d f o ra n o t h e r , r e q u i r e s q u i t e b i o s p a c e o t h e s t a c k . W e w i l lt h e r e f o r e d i s p l a y t h e f r e e m e m o r y s p a c e i h e x a d e c i m a l f o m a t . T h i s i e q u a l l y i n f o r m a t i v e a n s i g n i f i c a n t l y f a s t e r .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :

0 3 3 C

0 0 3 10 0 3 3

0 4 0 0D 8 0 0

0 0 0 7

0 3 1 4E A 3 1

c o o o0 3 3 C0 3 3 D0 3 3 F0 3 4 10 3 4 4

7 A A 8 8

4 0 1 1

; D I S P L A Y

A R R A Y E N DS T R G S T R T

V I D E OC O L O R

C L R C O D E

I R Q V E CI R Q O L D

I N I T

0 0

. O P T

F R E E

S E L D L D S T S T

P

M E M O R Y S P A C E

$ 3 $ 3

1 0 2 4$ D 8 0 0

; Y E L L O W

$ 3 1 4$ E A 3 1

8 2

# < F R E E# > F R E EI R Q V E CI R Q V E C + 1

9

Page 106: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 106/224

A d v a n c e d M a c h i n e L a n g u a g e

3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :5 2 0 :5 3 0 :5 4 0 :

5 5 0 :5 6 0 :5 7 0 :5 8 0 :5 9 0 :6 0 0 :6 1 0 :6 2 0 :6 3 0 :

0 3 4 70 3 4 8

0 3 4 90 3 4 A0 3 4 C0 3 4 E0 3 4 F0 3 5 10 3 5 40 3 5 50 3 5 70 3 5 90 3 5 B0 3 5 E0 3 6 10 3 6 20 3 6 30 3 6 40 3 6 50 3 6 60 3 6 90 3 6 A0 3 6 C

0 3 6 E0 3 7 00 3 7 20 3 7 40 3 7 60 3 7 90 3 7 B0 3 7 E0 3 7 F

5 6

3 A E 0 A 2 2 A E A 2 4 4 4 4 4 4 2 6 2 C

9 6 6 2 9 A 9 C 6

3 3

2 6

3 3 2 6 3

6

O O

0 0 3 3 0 0 0

F R E E

0

0 E

D I S P L A Y

0

A S C I I

S M A L L E R

0

D

C L R T

S E L D S B P H L D J S P L L D S B L D J S J M P H L S L S L S L S J S P L A N C M

B C A D A D A N S T L D S T I N R T

S T R G S T R TA R R A Y E N D

# 3 D I S P L A Y

S T R G S T R T + 1A R R A Y E N D + 1# 3 D I S P L A YI R Q O L D

A S C I I

# X 1 1 1 1# 1

S M A L L E R# # " 0 "# * 1 1 1 1 1 1V I D E O , Y# C L R C O D EC O L O R , Y

1 0

Page 107: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 107/224

A d v a n c e d M a c h i n e L a n g u a g e

] 0 3 3 C - 0 3 8 0N E R R O R S

T h a m o u n t o f f r e e s p a c e i d i s p l a y e d c o n t i n u a l l y o t h s c r e e n a f t e r c a l l i n g t h r o u t i n e w i t h S Y 8 2 8 . T r t h f o l l o w i n g B A S I C p r o g r a m a n w a t c h t h e d i s p l a y .

1 0 D I N A $ ( 2 0 0 )1 1 F O 1 T 2 0 A $ ( I ) C H R $ ( 1 ) N E X T

Y o c a w a t c h t h f r e e m e m o r y s p a c e g e s m a l l e r a n ds m a l l e r . N o e n t e r ? F R E ( 0 ) . D u r i n g t h a p p r o x i m a t e l y s e o n d s w h i c h t h i s f u n c t i o n r e q u i r e s , y o u c a s e t h a t t h e f r e em e m o r y s p a c e c h a n g e s c o n s t a n t l y .

I y o w o r k w i t h A S S E M B L E R 6 4 y o u c a n s e e h o w t h s y m b o l t a b l e i c r e a t e d i p a s s b e c a u s e i u s e s t h e s a m ep o i n t e r s a B A S I C .

1 0

Page 108: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 108/224

A d v a n c e d M a c h i n e L a n g u a g e

2 . 4 V i d e o c o n t r o l l e r i n t e r r u p t s

N o t h a t w h a v e l e a r n e d h o w t u s e t h e t i m e r c o n t r o ll e s y s t e m i n t e r r u p t f o o u r o w n p u r p o s e s , w w a n t t b a b l e t g e n e r a t e i n t e r r u p t s o u r s e l v e s a n e x e c u t e c o r r e sp o n d i n g r o u t i n e s .

W w i l l t a k e l o o k a t h c h i p s w h i c h a r c a p a b l e o g e n e r a t i n g i n t e r r u p t r e q u e s t s . T h e s e i n c l u d e t h e t w o C I 6 5 2 6 s , o f w h i c h C I c a g e n e r a t e a I R a n C I a n N M I .T h v i d e o c o n t r o l l e r V I 6 5 6 7 c a n a l s o g e n e r a t e a i n t e rr u p t . T h r e g i s t e r s n e c e s s a r y f o r t h e i n t e r r u p t w i l l b ed e s c r i b e d h e r e .

R e g i s t e r 1 A c c e s s R E A Dr e a d a c c e s s t t h i s r e g i s t e r r e t u r n s t h

n u m b e r o f t h e r a s t e r l i n e c u r r e n t l y b e i n g d i s pl a y e d o t h s c r e e n . B e c a u s e t h r a s t e r l i n en u m b e r c a b l a r g e r t h a n 2 5 5 , b i o f r e g i st e 1 i u s e d f o t h c a r r y .A c c e s s W R I T EW h e n y o u r w r i t e t t h i s r e g i s t e r , y o c a n s e tt h r a s t e r l i n e a w h i c h t h V I w i l l g e n e r a t ea i n t e r r u p t r e q u e s t .

R e g i s t e r 2 I n t e r r u p t R e q u e s t R e g i s t e rT h i s r e g i s t e r s i g n a l s a i n t e r r u p t r e q u e s t b yt h V I C . T h i n d i v i d u a l b i t s s t a n d f o v a r i o u si n t e r r u p t s o u r c e s .B i T h v i d e o c o n t r o l l e r r e a c h e d t h r a

t e r l i n e w h i c h w a s s e t i r e g i s t e r 1 8 B i s p r i t e c o l l i d e d w i t h b a c k g r o u n d

c h a r a c t e r . T h n u m b e r o t h s p r i t e i

1 0

Page 109: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 109/224

A d v a n c e d M a c h i n e L a n g u a g e

r e c o r d e d i r e g i s t e r 3 1 B i T w s p r i t e s c o l l i d e d . T h e n u m b e r s o

t h s p r i t e s i n v o l v e d a r s a v e d i r e g i s t e r 3 0

B i s t r o b e w a g e n e r a t e d b y t h e l i g h tp e n . T h a n p o s i t i o n s a r r e c o r de i r e g i s t e r s 1 a n 2 0

B i T h i s b i i s e w h e n e v e r a n o t h o t h e r s a r s e t .

R e g i s t e r 2 I n t e r r u p t M a s k R e g i s t e rT h s i g n i f i c a n c e s o t h b i t s c o r r e s p o n d t t h t h o s e i r e g i s t e r 2 5 A i n t e r r u p t r e q u e s t i g e n e r a t e d o n l y i t h c o r r e s p o n d i n g b i i t h I M i s e a n t h i n t e r r u p t s a r e n a b l e d .

R e g i s t e r 3 S p r i t e - s p r i t e c o l l i s i o nI t w s p r i t e s c o l l i d e , t h b i t s a r e s e t a c o r d i n g t t h n u m b e r s o f t h e s p r i t e s i n v o l v e d .B i i r e g i s t e r 2 i a l s o s e t . T h e s e b i t sm u s t b e r e s e t a f t e r r e a d i n g t h e r e s u l t s .

R e g i s t e r 3 S p r i t e - b a c k g r o u n d c o l l i s i o nI s p r i t e e n c o u n t e r s b a c k g r o u n d c h a r a c t e r ,t h n u m b e r o t h s p r i t e i r e c o r d e d i t h i sr e g i s t e r a n d b i t o r e g i s t e r 2 i s e a t h s a m e t i m e . T h i s r e g i s t e r m u s t a l s o b r e s e ta f t e r u s e .

T h v i d e o c o n t r o l l e r c a g e n e r a t e i n t e r r u p t s b a s e d o f o u rd i f f e r e n t e v e n t s :

1 0

Page 110: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 110/224

A d v a n c e d M a c h i n e L a n g u a g e

r a s t e r l i n e r e a c h e ds p r i t e - b a c k g r o u n d c o l l i s i o ns p r i t e - s p r i t e c o l l i s i o nl i g h t p e

T h v i d e o c o n t r o l l e r r e c o r d s t h e s e c o n d i t i o n s i r e g i s t e r 2 i o n o t h f o u r e v e n t s o c c u r s . T h e I n t e r r u p t M a s k R e g i st e ( I M R ) d e c i d e s w h e t h e r a i n t e r r u p t r e q u e s t t t h p r o ce s s o r w i l l g e n e r a t e d . I b i i s e i t h i s r e g i s t e r , t h c o r r e s p o n d i n g e v e n t w i l l c a u s e a i n t e r r u p t r e q u e s t t b g e n e r a t e d . T h i s r e g i s t e r m a b r e a d f r o m a n d w r i t t e n t l i k e R A m e m o r y l o c a t i o n . I b i i t b s e t o rc l e a r e d , t h a t i s a i n t e r r u p t i t b e n a b l e d o d i s a b l e d ,t h a p p r o p r i a t e p r o c e d u r e m u s t b f o l l o w e d .

S e t t i n g b i S e t h d e s i r e d b i a n a l s o b i 7 T h e n w r i t e t h

r e s u l t i n g v a l u e t t h i n t e r r u p t m a s k r e g i s t e r . I f f o e x a m p l e , y o w a n t t p e r m i t a i n t e r r u p t b y s p r i t e - s p r i t ec o l l i s i o n ( b i t 2 )

L D # £ 1 0 0 0 0 1 0 0S T I M

Y o s e t h d e s i r e d b i a n b i n u m b e r 7 T h e o t h e r b i t s ( 0 1 a n 3 w i l l n o b c h a n g e d .

C l e a r i n g b i I y o w a n t t d i s a b l e a i n t e r r u p t , t h c o r r e s p o n d i n g

b i m u s t b c l e a r e d . Y o u m u s t s e t h d e s i r e d b i t , b u t b i tm u s t b e c l e a r e d . F o r e x a m p l e , t d i s a b l e t h s p r i t e - s p r i t ec o l l i s i o n :

1 0

Page 111: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 111/224

A d v a n c e d M a c h i n e L a n g u a g e

L D # * 0 0 0 0 0 1 0 0S T I M

H e r e t o o t h e u n s e t b i t s r e m a i n u n c h a n g e d . I t i s n o p o s s i b l et r e a d t h i n t e r r u p t m a s k r e g i s t e r . I p r o g r a m r e q u i r e st h v a l u e o t h i n t e r r u p t m a s k , i c a n b e s t o r e d i R A a t h s a m e t i m e i i w r i t t e n t t h V I i o r d e r t s a v e t h v a l u e .

s e c o n d p e c u l i a r i t y m u s t b t a k e n i n t o a c c o u n t f o r t h eI n t e r r u p t R e q u e s t R e g i s t e r ( I R R ) . I t h v i d e o c o n t r o l l e rh a g e n e r a t e d a i n t e r r u p t r e q u e s t , t h i s r e g i s t e r m u s t b r e s e t , o t h e r w i s e a n o t h e r i n t e r r u p t w i l l b e g e n e r a t e d i m m e di a t e l y f o l l o w i n g t h e e x i t f r o m t h i n t e r r u p t r o u t i n e . s e b i c a b c l e a r e d i t h s a m e m a n n e r a i d o n e i t h i n t e r r u p t m a s k r e g i s t e r , s i m p l y b w r i t i n g t h i s b i b a c ki n t o t h i n t e r r u p t r e q u e s t r e g i s t e r . T h i s c a n b d o n e m o s te a s i l y b r e a d i n g t h v a l u e a n i m m e d i a t e l y w r i t i n g i b a c k .F o e x a m p l e :

L D I R S T I R

N o t h e b i t p a t t e r n i i t h a c c u m u l a t o r a n d t h e i n d i v i d u a lb i t s c a n b e t e s t e d b y m a s k i n g . T h i s i a l w a y s n e c e s s a r yw h e n e v e r s e v e r a l i n t e r r u p t s o u r c e s a r e a c t i v e , s u c h a t h n o r m a l s y s t e m i n t e r r u p t t h r o u g h t h t i m e r a n a a d d i t i o n a li n t e r r u p t v i t h v i d e o c o n t r o l l e r . B e c a u s e b o t h i n t e r r u p t sm u s t g o v e r t h s a m e v e c t o r , w m u s t f i r s t d e t e r m i n e i o u i n t e r r u p t s e r v i c e r o u t i n e w h a t s o u r c e g e n e r a t e d t h r e q u e s ta n d t h e n b r a n c h a c c o r d i n g l y . A e x a m p l e w i l l m a k e a l o t h i s q u i t e c l e a r i i s o u n d s b i c o n f u s i n g a t h e m o m e n t .

1 0

Page 112: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 112/224

A d v a n c e d M a c h i n e L a n g u a g e

W w a n t t u s t h r a s t e r i n t e r r u p t i o r d e r t d i s p l a y1 s p r i t e s o t h s c r e e n a t h s a n e t i m e . S i n c e t h v i d e oc o n t r o l l e r c a o n l y d i s p l a y s p r i t e s a t i m e , w e m u s td i s p l a y e a c h s e o s p r i t e s i s u c c e s s i o n .

T h w h o l e t h i n g f u n c t i o n s a f o l l o w s :

E i g h t s p r i t e s a r t b d i s p l a y e d i t h u p p e r h a l f o t h s c r e e n . I t h v i d e o c o n t r o l l e r h a d i s p l a y e d t h u p p e rh a l f , w g e n e r a t e a i n t e r r u p t . I t h i n t e r r u p t r o u t i n e w s e t h p a r a m e t e r s f o t h s p r i t e s w h i c h a r t b d i s p l a y e di t h l o w e r h a l f o t h s c r e e n . A t h s a m e t i m e , w m u s tp r e p a r e t h n e x t r a s t e r i n t e r r u p t f o r t h e e n o t h s c r e e ns t h a t w c a a g a i n s w i t c h b a c k t t h u p p e r s p r i t e s .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 6 0 :

1 6 5 :1 7 0 :

1 8 0 :

1 9 0 :2 0 0 :2 0 2 :

2 0 3 :

0 3 3 C

D 0 0 0D 0 0 1

D 0 1 2D 0 1 9

D 0 1 A

0 0 6 40 0 C 80 0 5 A

0 0 A A

; R A S T E R

V I S P R I T E Y

R A S T E RI R

I N

L I N E 1L I N E 2Y C O O R D 1

Y C O O R D 2

. O P T P

I N T E R R U P T

$ D 0 0 0V I

V I C + 1 8V I C + 2 5

V I C + 2 6

1 0 2 0 9

1 7

; V I D E O C O N T R O L L E R; S P R I T E Y - C O O R D -

I N A T E; R A S T E R L I N E; I N T E R R U P T R E Q U E S T

R E G I S T E RJ I N T E R R U P T M A S K

R E G I S T E R; F I R S T L I N E; S E C O N D L I N E; F I R S T Y - C O O R D -

I N A T E; S E C O N D Y - C O O R D -

1 0

Page 113: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 113/224

A d v a n c e d M a c h i n e L a n g u a g e

I N A T E2 1 0 :2 2 0 :2 3 0 :2 4 0 :3 0 0 :3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :

3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :

4 9 0 :5 0 0 :5 1 0 :5 2 0 :5 3 0 :5 4 0 :5 4 5 :

0 3 1 4E A 3 1

0 3 3 C0 3 3 C0 3 3 D0 3 3 F0 3 4 20 3 4 5

0 3 4 70 3 4 A0 3 4 C0 3 4 F0 3 5 10 3 5 30 3 5 60 3 5 90 3 5 A

0 3 5 B0 3 5 E0 3 6 1

0 3 6 30 3 6 5

0 3 6 80 3 6 B0 3 6 D

7 A 8 A 2

8 A 8 A A 8 8 5 6

A 8 2

D 4

A C B

6 1 1 7

1 8 1 5 0 1 1

1 1 0

0 3

1 C 1

I R Q V E CI R Q O L D

I N I T

D D

D

D

0 0

D T E S T I R QD

E

D O

S E L D S T L D A N

S T L D S T L D L D

S T S T C L R T

L D S T A N

B N J M

L D C M B C

$ 3 1 4$ E A 3 1

8 2

# L I N E 1R A S T E RR A S T E R - 1

F I R S T I N T E R R U P TA L I N E 1 0

# * 0 1 1 1 1 1 1 1 ; E R A S E H I G H

R A S T E R - 1B I

# 2 1 0 0 0 0 0 0 1 ; I N T E R R U P TI M # < T E S T I R Q# > T E S T I R QI R Q V E CI R Q V E C + 1

I R I R # *

O I R Q O L D

R A S T E R# L I N E 2S E C O N D

R A S T E R L I N E

V E C T O R T N E ; R O U T I N E

R E A D R E G I S T E RA N E R A S EI R B R A S T E RL I N EY E N O R M A L I R

C U R R E N T L I N E> S E C O N D L I N E *Y E

1 0

Page 114: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 114/224

A d v a n c e d M a c h i n e L a n g u a g e

5 5 0 : 0 3 6 F A C

5 5 5 : 0 3 7 1 A A

5 6 0 :5 7 0 :5 9 0 :

6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :

6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 1 0 :

0 3 7 30 3 7 60 3 7 8

0 3 7 B0 3 7 C0 3 7 D

0 3 7 F

0 3 8 00 3 8 10 3 8 20 3 8 30 3 8 4

0 3 8 5

8 A 9

C C 1

6

A 6 A 6 4

A

1 D B A C KO 0 1 D O L 0 0 P 1

F

6 S E C O N I

L D # L I N E 2 ; N E X T I R Q A T 2 N DL I N E

L D # Y C O O R D 2 ; N E W S P R I T EC O O R D I N A T E

S T R A S T E R ; S E T R A S T E R L I N EL D # 1 S T S P R I T E Y , X ; S P R I T E C O O R D

I N A T E SD E ; C H A N G ED E B P L 0 0 P 1

; G E T R E G I S T E R SB A C K

7 2 0 : 0 3 8 7 A 9 5 A7 3 0 : 0 3 8 9 4 7 0 J 0 3 3 C - 0 3 8 C

N E R R O R S

P L

T A P L T A P L R T

L D # L I N E 1 ; P A R A M E T E R S F O F I R S T L I N E

L D # Y C O O R D 1J M P B A C K

I o r d e r t t e s t o u r r o u t i n e , y o c a a c t i v a t es p r i t e s w i t h t h f o l l o w i n g p r o g r a m . W h e n y o u t h e n s t a r t t h i n t e r r u p t r o u t i n e w i t h S Y 8 2 8 , 1 s p r i t e s s u d d e n l y a p p e a ro t h e s c r e e n . E i g h t a r a t h y - c o o r d i n a t e 9 a n t h o t h e r a t h y - c o o r d i n a t e 1 7 0 . E a c h t i m e t h u p p e rs p r i t e s a r d i s p l a y e d w c h a n g e t h s p r i t e p a r a m e t e r s i t h

1 0

Page 115: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 115/224

A d v a n c e d M a c h i n e L a n g u a g e

i n t e r r u p t r o u t i n e s t h a t t h v i d e o c o n t r o l l e r c a d i s p l a yt h e s a m e s p r i t e s a g a i n i t h e l o w e r h a l f o t h e s c r e e n .

1 0 F O 1 = T 7 : P O K E 2 0 4 0 + 1 , 1 2 : N E X T1 1 V = 5 3 2 4 81 2 P O K E V + 2 1 , 2 5 51 3 F O 1 = 0 T O 7 : P O K E V + 2 * I , ( I + D * 3 0 : P O K E V + 2 * I + 1 , 7 0 : N E X T1 4 F O 1 = 0 T O 7 : P O K E V + 3 9 + I , l : N B X T

I a d d i t i o n t t h s p r i t e c o o r d i n a t e s , y o u c a c h a n g ea l o t h o t h e r s p r i t e p a r a m e t e r s a w e l l , s u c h a t h c o l o r o r s i z e . Y o c a a l s o c h a n g e t h s p r i t e p o i n t e r s s t h a t o t h e r s p r i t e p a t t e r n s c a b e d i s p l a y e d , e v e n m u l t i c ol o r .

Y o c a d m o r e t h a n d i s p l a y 1 s p r i t e s . I y o c h a n g et h d i s p l a y m o d e i t h r a s t e r i n t e r r u p t r o u t i n e , y o c a d i s p l a y s p l i t s c r e e n . T h e t o p h a l f c o u l d d i s p l a y h i g h -r e s o l u t i o n g r a p h i c s w h i l e t e x t a p p e a r s i t h l o w e r h a l f . I y o u p l a c e t h l i n e n u m b e r a w h i c h r a s t e r i n t e r r u p t i t b g e n e r a t e d i n t o s p e c i f i c m e m o r y l o c a t i o n , y o u c a e v e nc o n t i n u a l l y c h a n g e i f r o m B A S I C w i t h P O K E l o o p s t h a tt h b o r d e r c h a n g e s . S u p e r i m p o s e d e f f e c t s c a n a l s o b e a c hi e v e d i t h i s m a n n e r . A y o c a s e e , t h e r e a r m a n y p o s i b i l i t i e s h e r e a l s o .

1 0

Page 116: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 116/224

A d v a n c e d M a c h i n e L a n g u a g e

2 . C I 6 5 2 6 I n t e r r u p t s

N o t h a t w e a r e a c q u a i n t e d w i t h t h i n t e r r u p t s g e n er a t e d b y t h v i d e o c o n t r o l l e r , w e w a n t t l o o k a t h C I 6 5 2 6 , w h i c h h a v e r y d i v e r s e i n t e r r u p t s o u r c e s .

T h C I A 6 5 2 6 i u n i v e r s a l i n p u t / o u t p u t i n t e r f a c e c h i pw i t h t w p a r a l l e l 8 - b i t p o r t s , s e r i a l s h i f t r e g i s t e r , t w 1 6 - b i t t i m e r s , r e a l - t i m e c l o c k a w e l l a s e v e r a l h a n ds h a k e l i n e s .

T h t w p a r a l l e l 8 - b i t p o r t s s e r v e t i n p u t a n d o u t p u td a t a . O t h t o t a l o f o u r p o r t s c o n t a i n e d i t h e t w o C I A s ,t h r e e a r u s e d b y t h s y s t e m ; t h t w p o r t s o C I a r u s e d f o r e a d i n g t h k e y b o a r d a n j o y s t i c k s . P o r t o C I y i e l d s t h 1 6 a d d r e s s s e l e c t i o n f o r t h e v i d e o c o n t r o l l e r( b i t a n 1 ) b i i f r e e , w h i l e b i t s t a r u s e d f o t h s e r i a l b u s . P o r t o C I i a v a i l a b l e t t h u s e rt h r o u g h t h u s e r p o r t , p r o v i d e d y o h a v e n o i n s e r t e d a R S 2 3 c a r t r i d g e i t h u s e r p o r t .

T h t i m e r s a r e u s e d a f o l l o w s b y t h o p e r a t i n g s y s t e m :

C I T i m e r 6 H s y s t e m i n t e r r u p tT i m e r s e r i a l b u ( t i m e - o u t )

r e a d a n w r i t e d a t a s e t t e

C I T i m e r s e n d R 2 3 T i m e r r e c e i v e R 2 3

I y o w a n t t u s t h t i m e r s f o y o u r o w p u r p o s e s ,y o u c a n u s e t h e C I 2 C I d o e s n o g e n e r a t e a I R Q ,h o w e v e r , b u a N M I . I y o d n o w a n t t u s e t h e s e r i a l

1 1

Page 117: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 117/224

A d v a n c e d M a c h i n e L a n g u a g e

b u a t h s a m e t i m e a y o u r r o u t i n e , y o u c a n u s e t i m e r i C I a n d t h e r e b y g e n e r a t e a I R Q . I n s p e c i a l c a s e s y o u c a e v e n d i s p e n s e w i t h t h s y s t e m i n t e r r u p t a n u s t i m e r A

T h r e a l - t i m e c l o c k s a r n o u s e d b y t h e ^ o p e r a t i n gs y s t e m ; t h e r e a r e t h e r e f o r e t w o o f t h e m a y o u r d i s p o s a l .Y o c a g e n e r a t e e i t h e r a n I R Q ( C I A 1 o a N M ( C I A 2 w i t h t h a l a r m t i m e .

T h s e r i a l s h i f t r e g i s t e r s c a n a l s o b e u s e d f r e e l y . T h el i n e F L A G w h i c h s e r v e s a h a n d s h a k e i n p u t , s e t s t h c o r e s p o n d i n g b i i t h i n t e r r u p t c o n t r o l r e g i s t e r o C I o

t r a i l i n g e d g e .

T h i n p u t / o u t p u t a n h a n d s h a k e l i n e s a r e u s e d p r i m a r i l yf o c o n n e c t i n g c u s t o m p e r i p h e r a l d e v i c e s . I n t e r r u p t p r o g r a mm i n g i o f t e n r e q u i r e d i s u c h a p p l i c a t i o n s . W e w i l l l a t e rd e s c r i b e i n t e r f a c i n g p r i n t e r t o t h e u s e r p o r t a a e x a mp l e ; t h p r i m a r y a i i t i n c l u d e t h r o u t i n e i t h o p e ra t i n g s y s t e m s t h a t t h e d e v i c e c a b a d d r e s s e d b t h u s u a l B A S I C c o m m a n d s O P E N , P R I N T * , e t c .

T h e n e x t e x a m p l e u s e s t h r e a l - t i m e c l o c k t m a k e a a l a r m c l o c k . W e w i l l u s e C I w h i c h w i l l g e n e r a t e a N M w h e n t h a l a r m t i m e i r e a c h e d .

. O P T P I

; A L A R M W I T H R E A L - T I M E C L O C K I C I A 2

C I A 2 $ D D 0 0 ; B A S E A D D R E S S C I AT O D 1 0 C I A 2 + 8 ; T E N T H S O

S E C O N D

1 1

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :

0 3 3 C

D D 0 0D D 0 8

Page 118: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 118/224

A d v a n c e d M a c h i n e L a n g u a g e

1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :

2 1 0 :

2 2 0 :

2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :

D D 0 9D D O AD D O B

D D O D

D D O E

D D O F

D 0 2 00 0 0 2

0 3 1 8F E 5 6

0 0 0 00 0 0 00 0 0 00 0 0 1

0 0 0 00 0 0 50 0 0 00 0 0 1

0 3 3 C

0 3 3 C A O D 0 3 3 F 0 0

T O D S E CT O D M I NT O D S T D

I C

C R

C R

B O R D E RR E

N M C O N T N M I

; T I M E 1 2 0 0

T E N T H SS E C O N D SM I N U T E SH O U R S

C I A 2 + 9C I A 2 + 1 0C I A 2 + 1 1

C I A 2 + 1 3

C I A 2 + 1 4

C I A 2 + 1 5

$ D 0 2 0

$ 3 1 8$ F E 5 6

0 0 . 0 "

$ 0 $ 0 $ 0

; S E C O N D S; M I N U T E S; H O U R S

; I N T E R R U P T C O NT R O L R E G I S T E R

; C O N T R O L R E GI S T E R

; C O N T R O L R E GI S T E R

; B O R D E R C O L O R

; N M I - V E C T O R; O L D N M

J A L A R M T I M E 1 2 0 0 0 5 . 0 "A L A R M . 1 0A L A R M . S C $ 0 A L A R M . M N $ 0 A L A R M . H R $ 0

* 8 2

; S E T C L O C K T I M EL D A C R AO R A # $ 0 0 ; C L O C K T I M E 6 H

1 1

Page 119: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 119/224

A d v a n c e d M a c h i n e L a n g u a g e

4 6 0 :4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :5 2 0 :5 3 0 :5 4 0 :5 5 0 :5 6 0 :5 7 0 :5 8 0 :5 9 0 :6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 1 0 :7 2 0 :7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :7 8 0 :

0 3 4 1

0 3 4 40 3 4 70 3 4 9

0 3 4 C0 3 4 E0 3 5 10 3 5 30 3 5 60 3 5 80 3 5 B0 3 5 D

0 3 6 00 3 6 30 3 6 5

0 3 6 80 3 6 A0 3 6 D0 3 6 F0 3 7 20 3 7 40 3 7 70 3 7 9

0 3 7 C0 3 7 E

0 3 8 10 3 8 3

8

A 2 8

A 8 A 8 A 8 A 8

A 0 8

A 8 A 8 A 8 A 8

A 8

A A

U

O 7 O

0 O 0 O 0 0 0 0

O 8 O

0 O 0 O 0 0 0 0

8 O

8 0

u

D

D

D

D

D

D

D

D

D

D

D

D

D

S T

L D A N S T

L D S T L D S T L D S T L D S T

L D O R

S T

L D S T L D S T L D S T L D S T

C R

C R # $ 7 F ; C R

H O U R ST O D S T D♦ M I N U T E ST O D M I N♦ S E C O N D ST O D S E C♦ T E N T H ST O D 1 0

C R # $ 8 0C R

# A L A R M . H RT O D S T D# A L A R M . M NT O D M I N# A L A R M . S CT O D S E C# A L A R M . 1 OT O D 1 0

; S E T C L O C K T I M E

; S E T A L A R M T I M E

L D # * 1 0 0 0 0 1 0 0 ; A L A R MS T I C R ; F R E E N M I

L D # < T E S TL D # > T E S T

1 1

Page 120: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 120/224

A d v a n c e d M a c h i n e L a n g u a g e

7 9 0 :8 0 0 :8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :8 8 0 :8 9 0 :9 0 0 :9 1 0 :9 2 0 :9 3 0 :9 4 0 :9 5 0 :

9 6 0 :9 7 0 :9 8 0 :9 9 0 :1 0 0 0 :1 0 1 0 :1 0 2 0 :

0 3 8 50 3 8 80 3 8 B

0 3 8 C0 3 8 D0 3 8 E0 3 8 F0 3 9 00 3 9 10 3 9 40 3 9 50 3 9 70 3 9 9

0 3 9 C0 3 9 E

0 3 A 10 3 A 20 3 A 30 3 A 40 3 A 50 3 A 6

] 0 3 3 C - 0 3 A 7N E R R O R S

8 8 6

4 8 4 9 4 A 9 2 D 4

A 8

6 A 6 A 6 4

1 1

0

0 0 5

0 2

0 0

T E S T

D

F

A L A R MD

S T S T R T

P H T X P H T Y P H L D T Y A N B N J M

L D S T

P L T A P L T A P L R T

N M I ; N E W N M V E C T O RN M I + 1

; S A V E R E G I S T E R S

I C

# * 1 0 0 ; A L A R M B I S E T ?A L A R M ; Y E SC O N T N M I

# R E DB O R D E R { B O R D E R C O L O R T

R E

T h p r o g r a m f i r s t d e f i n e s t h a d d r e s s e s o t h e r e a lt i m e c l o c k a n t h c o n t r o l r e g i s t e r i t h C I 2 T h e n t h c l o c k t i m e i s e t 1 o ' c l o c k a n t h a l a r m t i m e t 1 o ' c l o c k a n s e c o n d s . T h p r o g r a m f i r s t s e t s t h r e a l - t i m ec l o c k t 6 H z s o t h a t t h c l o c k r u n s c o r r e c t l y . T h e n b i t

1 1

Page 121: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 121/224

A d v a n c e d M a c h i n e L a n g u a g e

i c o n t r o l r e g i s t e r i c l e a r e d i o r d e r t i n f o r m t h C I t h a t w e w a n t t i n p u t t h e c l o c k t i m e , w h i c h w p r o c e e d t d o N o w w e s e b i 7 p r o g r a m t h a l a r m t i m e , a n e n a b l e t h a l a r m N M i t h i n t e r r u p t c o n t r o l r e g i s t e r . B i a w e l la b i m u s t b e s e t i o r d e r t d t h i s . F i n a l l y , w e m u s ts e t h N M v e c t o r t o u n e w r o u t i n e a n d t h e i n i t i a l i z a t i o ni c o m p l e t e d .

T h a c t u a l N M r o u t i n e d o e s n o t h a v e m u c h t d o F i r s tt h r e g i s t e r s a r s a v e d o n t h e s t a c k , t h e n t h i n t e r r u p tc o n t r o l r e g i s t e r i r e a d a n d b i t c h e c k e d . I t h e b i t w a ss e t , t h a l a r m t i m e w a r e a c h e d . W e r e s p o n d b s e t t i n g t h b o r d e r c o l o r o f t h e s c r e e n t o r e d . T h r e g i s t e r s a r r e t o r e d a n d c o n t r o l i r e t u r n e d t t h i n t e r r u p t e d p r o g r a m . I t h e N M I w a n o g e n e r a t e d b t h a l a r m t i m e , w e j u m p t t h N M r o u t i n e i t h k e r n a l . T h e r e c h e c k i m a d e t s e i t h S T O P k e y w a s p r e s s e d i a d d i t i o n t t h R E S T O R E k e w h i c h g e n e r a t e d t h i n t e r r u p t . I t h i s t e s t i p o s i t i v e ,w a r m s t a r t i e x e c u t e d .

N a t u r a l l y , y o u c a c h a n g e t h a c t i o n w h i c h o c c u r s w h e nt h a l a r m t i m e i r e a c h e d . F o r e x a m p l e , y o u r r o u t i n e c o u l ds o u n d t o n e t h r o u g h t h s o u n d c h i p . Y o s h o u l d a l s o a d a e a s y w a y o s e t t i n g t h c l o c k a n a l a r m t i m e s . T h e r e a l - t i m ec l o c k i v e r y a c c u r a t e o v e r l o n g p e r i o d o t i m e b e c a u s e i r u n s i s y n c h r o n i z a t i o n w i t h t h A p o w e r l i n e s .

1 1

Page 122: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 122/224

A d v a n c e d M a c h i n e L a n g u a g e

2 . U s i n g t h t i a e r

E a c h C I A c o n t a i n s t w o 1 6 - b i t t i m e r s . A n i n t e r r u p t c a b g e n e r a t e d w h e n t h t i m e r t i m e s o u t . T h e s e t i m e r s a r u s e dh e a v i l y b y t h e o p e r a t i n g s y s t e m a n d a r e d e c r e m e n t e d b o n w i t h e a c h s y s t e m c l o c k p u l s e . I t h v a l u e z e r o i r e a c h e d ,t h c o r r e s p o n d i n g b i i t h i n t e r r u p t r e q u e s t r e g i s t e r i s e a n d — i f t h m a s k i t h i n t e r r u p t c o n t r o l r e g i s t e rp e r m i t s i t — a n I R o N M i g e n e r a t e d . T h A m e r i c a n v e r s i o no f t h e C o m m o d o r e 6 h a c l o c k f r e q u e n c y o a p p r o x i m a t e l y1 . 0 2 M H z , r e s u l t i n g i c l o c k p e r i o d o a b o u t . 9 m i c r os e c o n d s o c l o s e t m i c r o s e c o n d . B e c a u s e t h t i m e r c a b l o a d e d w i t h 1 6 - b i t v a l u e , t i m e s u t 6 5 , 5 3 5 c l o c k p e r i o d so a p p r o x i m a t e l y 6 m i l l i s e c o n d s ( a b o u t f i f t i e t h o s e c o n d ) c a n b e a t t a i n e d . T i m e r o C I i l o a d e d w i t h$ 4 2 9 5 o r 1 7 0 4 5 , f o r e x a m p l e , w h i c h c o r r e s p o n d s t o n s i t i e t h o s e c o n d . E u r o p e a n P A v e r s i o n s h a v e c l o c k f r e qu e n c y o f 9 8 5 K H z , r e s u l t i n g i c l o c k p e r i o d o 1 . 0 1 5m i c r o s e c o n d s . T h t i m e r i l o a d e d w i t h t h v a l u e $ 4 0 2 5 o 1 6 4 2 1 , w h i c h c o r r e s p o n d s t o n s i x t i e t h o s e c o n d a t h s l o w e r s p e e d .

T h e r e a r v a r i o u s o p e r a t i n g m e t h o d s f o u s i n g t h t i m e rs u c h a t h e " o n e s h o t 1 1 a n " c o n t i n u o u s " m o d e s . I t h o n e -s h o t m o d e t h t i m e r c o u n t s d o w n o n l y o n c e f r o m t h i n i t i a lv a l u e t z e r o a n d t h e n s t o p s . I t h c o n t i n u o u s m o d e , t h t i m e r i a u t o m a t i c a l l y r e l o a d e d w i t h t h s t a r t i n g v a l u e a n s t a r t e d a g a i n w h e n i t i m e s o u t . I a d d i t i o n t g e n e r a t i n ga i n t e r r u p t , t h t i m e r c a n a l s o g e n e r a t e p u l s e o t h u s e r p o r t a f t e r t i m e - o u t . T h i s c o u l d b u s e d a t h c l o c ks i g n a l f o p e r i p h e r a l d e v i c e . I a d d i t i o n , t h t i m e r s c a b u s e d a c o u n t e r s . I t h i s m o d e , t h e s y s t e m c l o c k d o e s n o d t h d e c r e m e n t i n g . I n s t e a d , a e x t e r n a l s i g n a l c a u s e s t h

1 1

Page 123: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 123/224

A d v a n c e d M a c h i n e L a n g u a g e

t i m e r t b d e c r e m e n t e d . O n e c a a l s o c o u p l e t h e t i m e r s . O n t i m e r c o u n t s t h n u m b e r o t i m e s t h o t h e r r e a c h e s z e r o .T h i s a l l o w s t h e t w o t b u s e d a 3 2 - b i t t i m e r , s t h a tt i m e s u t 2 ^ 3 2 c l o c k c y c l e s o a b o u t 4 , 3 6 0 s e c o n d s ( h o u ra n 1 m i n u t e s ) c a n b e r e c o r d e d .

A t h c l o s e o o u c h a p t e r o i n t e r r u p t p r o g r a m m i n g ,w w a n t t w r i t e m a c h i n e l a n g u a g e p r o g r a m t h a t a l l o w s u t c o n t r o l B A S I C s u b r o u t i n e s w i t h i n t e r r u p t s . W e w i l l l e a r ns o m e t h i n g a b o u t t h e u s e o f t h e t i m e r s a w e l l a t h o p e r at i o n o t h e B A S I C i n t e r p r e t e r .

W w i l l i n t r o d u c e n e w B A S I C c o m m a n d w h i c h a l l o w s u t e x e c u t e n o r m a l B A S I C s u b r o u t i n e w h e n c e r t a i n t i m e h a e l a p s e d . F i r s t b i o b a c k g r o u n d i n f o r m a t i o n .

T h B A S I C i n t e r p r e t e r u s e s m a i n l o o p w h e n e x e c u t i n gB A S I C p r o g r a m t a n a l y z e a n e x e c u t e e a c h s t a t e m e n t . A f t e re a c h s t a t e m e n t , c h e c k i m a d e t s e i t h e S T O P k e y w a sp r e s s e d . I i w a s p r e s s e d , t h m a i n l o o p i e x i t e d a n c o n t r o l r e t u r n s t t h d i r e c t m o d e . T h e r e a d i n g o t h S T O Pk e o c c u r s v i j u m p v e c t o r . W e c a n c h a n g e t h i s v e c t o r s t h a t i p o i n t s t n e w r o u t i n e . I t h i s n e r o u t i n e w c a c h e c k t s e i t h c o n d i t i o n f o e x e c u t i n g o u i n t e r r u p tp r o g r a m h a b e e n m e t . I o t h e r w o r d s , t s e i t h t i m e rh a t i m e d o u t . I o r d e r t r e c o g n i z e t h i s , a n i n t e r r u p tr o u t i n e s e t s f l a g b a s e d o t h s t a t e o t h t i m e r , w h i c hc a t h e n b r e a d b t h p r e v i o u s r o u t i n e .

i T h n e w B A S I C c o m m a n d s p e c i f i e s w h i c h B A S I C r o u t i n et b e x e c u t e d a f t e r a i n t e r r u p t . A a d d i t i o n a l p a r a m e t e rs p e c i f i e s t h t i m e a w h i c h t h i n t e r r u p t s h o u l d b g e n e r at e d . T h c o m m a n d l o o k s l i k e t h i s .

1 1

Page 124: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 124/224

A d v a n c e d M a c h i n e L a n g u a g e

J G O S U B 1 0 0 0 , 1 0 0

T h e x c l a m a t i o n p o i n t i u s e d t d i f f e r e n t i a t e t h n e c o m m a n d f r o m t h n o r m a l G O S U B c o m m a n d . T h e 1 0 0 0 i t h f i r s tl i n e n u m b e r o f t h e s u b r o u t i n e a n t h 1 0 i t h t i m e a w h i c h t h i n t e r r u p t w i l l b g e n e r a t e d . T h e t i m e i n c r e m e n t sa r f i f t i e t h s o s e c o n d . W e l o a d t i m e r w i t h t h i s v a l u e( f o r o n f i f t i e t h o s e c o n d ) . W e l o a d t h e s e c o n d v a l u e( t h e s e c o n d p a r a m e t e r o t h c o m m a n d ) i n t o t h e n e x t t i m e r ,u s i n g t h e t w o o f t h e m t o g e t h e r a 3 2 - b i t t i m e r . W e c a nt h e n p r o g r a m t i m e s f r o m f i f t i e t h o s e c o n d t 6 5 5 3 5 f i ft i e t h s o s e c o n d , w h i c h i 0 . 0 2 t 1 3 1 1 s e c o n d s ( 2 m i u t e s a n d 5 s e c o n d s ) .

O u p r o g r a m c o n s i s t s o t h r e e r o u t i n e s i a d d i t i o n t t h i n i t i a l i z a t i o n . T h f i r s t m o d i f i e s t h B A S I C i n t e r p r e t e rs t h a t i u n d e r s t a n d s o u n e c o m m a n d . T h e s e c o n d r o u t i n ec h e c k s ( a f t e r e a c h s t a t e m e n t ) t s e i t h t i m e - o u t f l a g i s e a n i s o b r a n c h e s t o t h e B A S I C s u b r o u t i n e . T h t h i r dr o u t i n e i t h i n t e r r u p t ( a c t u a l l y N M I ) r o u t i n e w h i c h s e t st h f l a g f o r t h e s e c o n d r o u t i n e a f t e r t h t i m e r t i m e s o u t .

1 0 0 :1 1 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :

1 7 0 :1 8 0 :1 9 0 :

c c o oC C O O

0 3 0 8

0 3 1 80 3 2 8

; I N T E R R U P T

E X E C

N M S T O P

O P P S Y

R O U T I N E

$ 3 0 8

$ 3 1 8$ 3 2 8

F O B A S I C

; E X E C U T E V E C T O RF O S T A T E M E N T

; N M I V E C T O R; S T O P V E C T O R

1 1

Page 125: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 125/224

A d v a n c e d M a c h i n e L a n g u a g e

2 0 0 :2 1 0 :2 2 0 :2 3 0 :

2 4 0 :

2 5 0 :

D D 0 0D D 0 4D D 0 6D D O D

D D O E

D D O F

C I A 2T I M E R AT I M E R BI C

C R

C R

$ D D O OC I A 2 + 4C I A 2 + 6C I A 2 + 1 3

C I A 2 + 1 4

C I A 2 + 1 5

; T I M E R; T I M E R

; I N T E R R U P T C O NT R O L R E G I S T E R

; C O N T R O L R E GI S T E R

; C O N T R O L R E I S T E R

2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :

3 3 0 :

3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :

4 0 0 :

4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :

F E 5 6

4 F B 00 0 1 40 0 1 50 0 5 F

0 0 3 9

0 0 7 30 0 7 90 0 7 A0 0 8 DA F 0 8A 8 E 3

B 2 4 8

A 7 A EA 9 6 BA 6 1 3A E F DA 7 E 7

C O N T N M I

T I M EL H L I N E A D D R

L I N E N O

C H R G E TC H R G O TT X T P T RG O S U BS Y N T A XU N D E F D

I L L Q U A N

I N T E RG E T L I NG E T A D D RC H K C O ME X E C O L D

$ F E 5 6

2 0 4 0 0$ 1 L O + 1$ 5

$ 3

$ 7 C H R G E T + 6C H R G O T + 1$ 8 $ A F 0 8$ A 8 E 3

$ B 2 4 8

$ A 7 A E$ A 9 6 B$ A 6 1 3$ A E F D$ A 7 E 7

; C O N T I N U E O L N M

; = 2 0 M I L L I S E C O N D S; L I N E N U M B E R L

; A D D R E S S O F B A S I CL I N E

; R U N N I N G L I N EN U M B E R

; G O S U B T O K E N; S Y N T A X E R R O R; U N D E F ' D S T A T E M E N T

E R R O R; I L L E G A L Q U A N T I T Y

E R R O R; I N T E R P R E T E R L O O P; G E T L I N E N U M B E R; S E A R C H L I N E; T E S T C O M M A; E X E C U T E S T A T E M E N T

1 1

Page 126: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 126/224

A d v a n c e d M a c h i n e L a n g u a g e

4 6 0 :

4 7 0 :

4 8 0 :

4 9 0 :5 0 0 :5 1 0 :5 2 0 :5 3 0 :5 4 0 :5 5 0 :

5 6 0 :5 7 0 :5 8 0 :5 9 0 :6 0 0 :6 1 0 :

6 2 0 :6 3 0 :6 4 0 :6 5 0 :

6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 1 0 :7 2 0 :

A D 8 A

B 7 F 7

A 3 F B

F 6 E DF E 4 7

C C O OC C O OC C 0 2C C 0 4

C C 0 7C C O AC C O CC C O F

C C 1 0

C C 1 3C C 1 5C C 1 7C C 1 A

C C 1 DC C 2 0C C 2 2C C 2 4C C 2 7C C 2 A

A A 8

8 A 8 6

2

C F 2 4

2 C F 4 2 F

1 C 0

0 0 F

7

2 0 7 E

7 8 0 0 7 6

0

0

C

0

0 A

0

A 0

F R M N U M

I N T E G E R

T E S T S T A C K =

T E S T O L DN N I O L D

I N I T

T E S T S T A T

T S T G O S U B

O

* L D L D S T

S T L D S T R T

J S

C M B E J S J M

J S C M B E J M J S B E

$ A D 8 A

$ B 7 F 7

$ A 3 F B

$ F 6 E D$ F E 4 7

$ C C O O

; G E T N U M E R I C A LV A L U E

; A N D C O N V E R T T I N T E G E R

; C H E C K F O S P A C EI S T A C K

; C H E C K S T O P K E Y; O L D N M V E C T O R

# < T E S T S T A T# > T E S T S T A TE X E C

E X E C + 1# F L A G

C H R G E T

T S T G O S U BC H R G O TE X E C O L D

C H R G E T# G O S U BO S Y N T A XC H R G E TI R Q O F F

; R O U T I N E F O RD E C O D I N G

; O F F • !

; E R A S E F L A G

; G E T N E X T C H A RA C T E R

; R E P L A C E F L A G S; A N D C O N T I N U E A

N O R M A L

; N E X T C H A R A C T E R; G O S U B C O D E ?; Y E S; S Y N T A X E R R O R; N E X T C H A R A C T E R; L I N E E N D , T H E N

1 2

Page 127: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 127/224

A d v a n c e d M a c h i n e L a n g u a g e

7 3 0 :7 4 0 :7 5 0 :7 6 0 :

7 7 0 :7 8 0 :7 9 0 :8 0 0 :8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :

8 6 0 :8 7 0 :

8 8 0 :8 9 0 :

9 0 0 :9 1 0 :9 2 0 :

9 3 0 :9 4 0 :9 5 0 :9 6 0 :9 7 0 :9 8 0 :9 9 0 :

C C 2 CC C 2 FC C 3 2C C 3 4

C C 3 7C C 3 9C C 3 BC C 3 EC C 4 0C C 4 2C C 4 5C C 4 8C C 4 B

C C 4 EC C 5 0

C C 5 2C C 5 4

C C 5 7C C 5 9C C 5 C

C C 5 EC C 6 1C C 6 3C C 6 6C C 6 8C C 6 BC C 6 D

2 2 B 4

A E 8 A E 8 2 2 2

A 0

D 4

A 8 A

8 A 8 A 8 A 8

6 1 0 E

5 0 F 6 0 F F 8 F

1

1

0 4

1 0 1

0 4 0 B 0 1 O

A A

A

C

C A A B

B

D

D

D

D

D

F O U N D

O K

J S J S B C J M

L D S B S T L D S B S T J S J S J S

L D O R

B N J M

L D S T L D

S T L D S T L D S T L D S T

S W I T C H I R A D G E T L I N ; G E T L I N E N U M B E RG E T A D D R ; G E T L I N E A D D R E S SF O U N D ; F O U N D ?U N D E F D ; N O , U N D E F ' D

S T A T E M E N T E R R O RL I N E A D D R ; L I N E A D D R E S S# M I N U SL I N E S T R ; S A V EL I N E A D D R + 1# ; H I G H B Y T EL I N E S T R + 1C H K C O M ; C H E C K F O R C O M M AF R M N U M ; N E X T V A L U EI N T E G E R ; C O N V E R T T

I N T E G E RL H

O K

; L O W A N D H I G H B Y T EZ E R O ?

; N I L L Q U A N ; I L L E G A L Q U A N T I T Y

E R R O RH T I M E R B + 1L ; L O A D V A L U E I N T O

T I M E RT I M E R B# > T I M E ; L O A D T I M E RT I M E R A + 1# < T I M E ; W I T H 2 0 M ST I M E R A# S 0 0 Q 1 0 0 0 1 ; S T A R T T I M E RC R

1 2

Page 128: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 128/224

A d v a n c e d M a c h i n e L a n g u a g e

1 0 0 0 :1 0 1 0 :

1 0 2 0 :1 0 3 0 :

1 0 4 0 :1 0 5 0 :1 0 6 0 :1 0 7 0 :1 0 8 0 :1 0 9 0 :1 1 0 0 :1 1 1 0 :1 1 2 0 :1 1 3 0 :

C C 7 0C C 7 2

C C 7 5C C 7 8

C C 7 AC C 7 DC C 7 FC C 8 1C C 8 4C C 8 7C C 8 9C C 8 BC C 8 EC C 9 1

A 8

A A

8 A A 8 8 A A 8 8 4

5 O

O 8

O C C 2 2 B C 1 1 A

D

D

D

0 0

0 0 A

L D S T

L D L D

S T L D L D S T S T L D L D S T S T J M

1 1 4 0 :1 1 5 0 : C C 9 4 A 7 I R Q O F F1 1 6 0 : C C 9 6 8 O D

1 1 7 0 : C C 9 9 A E 1 1 8 0 : C C 9 B A O F 61 1 9 0 : C C 9 D 8 2 0

1 2 0 0 : C C A O 8 2 0 1 2 1 0 : C C A 3 A 4 1 2 2 0 : C C A 5 A F 1 2 3 0 : C C A 7 8 D 1 8 0

1 2 4 0 : C C A A 8 1 9 0 31 2 5 0 : C C A D 4 C A E A

# * 0 1 0 1 0 0 0 1 ; S T A R T T I M E RC R { T R I G G E R E D B

T I M E RI C ; E R A S E I C R# £ 1 0 0 0 0 0 1 0 ; N M I F O

T I M E RI C R ; F R E E# < T E S T T I M E# T E S T T I M ES T O P ; G E T S T O P V E C T O RS T O P + 1# < N M I R O U T# > N M I R O U TN M I ; S E T N M V E C T O RN M I N T E R ; T I N T E R P R E T E R

L O O P

L D S T

L D L D S T

S T L D L D S T

S T J M

# * 0 1 1 1 1 1 1I C

# < T E S T O L D# > T B S T O L DS T O P

S T O P + 1# < N M I O L D# > N M I O L DN M

N M I N T E R

A L O F

S T O PO L

N M

I N T E R R U P T S

V E C T O R T V A L U E

V A L U E T O L V E C T O R

T I N T E R P R E T E RL O O P

1 2

Page 129: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 129/224

A d v a n c e d M a c h i n e L a n g u a g e

1 2 6 0 :1 2 7 0 :

1 2 8 0 :1 2 9 0 :1 3 0 0 :1 3 1 0 :1 3 2 0 :1 3 3 0 :1 3 4 0 :

1 3 5 0 :1 3 6 0 :

1 3 7 0 :1 3 8 0 :1 3 9 0 :1 4 0 0 :1 4 1 0 :1 4 2 0 :1 4 3 0 :1 4 4 0 :1 4 5 0 :1 4 6 0 :1 4 7 0 :1 4 8 0 :1 4 9 0 :1 5 0 0 :1 5 1 0 :1 5 2 0 :

1 5 3 0 :1 5 4 0 :

C C B O

C C B 1C C B 2C C B 3C C B 4C C B 5C C B 8C C B 9

C C B BC C B D

C C C OC C C 3C C C 4C C C 5C C C 6C C C 7C C C 8

C C C 9C C C CC C C E

C C D 1C C D 4C C D 5

C C D 6C C D 8

4

8 4 9 4 A 9 2

D 4

E 6 A 6 A 6 4

A D 4

C 6 6

A 2

O

0

0 5

F

F 0 E

F

0 F

D

F

C

C

F

C

A

N M I R O U T

T I M E O U T

T E S T T I M E

T I M E I R Q

P H T X P H T Y P H L D T Y A N

B N J M

I N P L T A

P L T A P L R T

L D B N J M

D E P L P L

L D J S

I C

# * 1 0

T I M E O U TC O N T N M I

F L A G

F L A GT I M E I R QT E S T O L D

F L A G

#

; T I M E R T I M E DO U T ?; Y E S; O T H E R W I S E N O R M A L

N M

; S E T F L A G

; F L A G S E T ?; Y E S

; E R A S E F L A G A G A I N

" r e t u r n a d d r e s sF R O M S T A C K

T E S T S T A C K ; S T I L L E N O U G HS T A C K S P A C E

1 2

Page 130: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 130/224

Page 131: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 131/224

A d v a n c e d M a c h i n e L a n g u a g e

I N I TT E S T O L DI N T E G E RE X E C O L DG E T A D D RI N T E RU N D E F DG O S U BC H R G O TL I N E N OH T I M EC R I C T I M E R AS T O PE X E C

C C O OF 6 E DB 7 F 7A 7 E 7A 6 1 3A 7 A EA 8 E 30 0 8 D0 0 7 90 0 3 90 0 1 54 F B 0D D O FD D O DD D 0 40 3 2 80 3 0 8

N M I O L DT E S T S T A CF R M N U MC H K C O MG E T L I NI L L Q U A NS Y N T A XT X T P T RC H R G E TL I N E A D D RL C O N T N M IC R T I M E R BC I A 2N M

F E 4 7A 3 F BA D 8 AA E F DA 9 6 BB 2 4 8A F 0 80 0 7 A0 0 7 30 0 5 F0 0 1 4F E 5 6D D O ED D 0 6D D O O0 3 1 8

4 S Y M B O L S D E F I N E D

B e f o r e w c o m e t t h d e t a i l e d d e s c r i p t i o n o t h p r o g r a m , h e r e i s m a l l d e m o n s t r a t i o n p r o g r a m .

1 0 S Y 5 2 2 2 4 R E I N I T I A L I Z E E X P A N S I O N1 1 ! G O S U B 2 0 0 , 5 01 2 1 + P R I N T I K 1 0 0 G O T O 1 2 1 3 ! G O S U B1 4 E N 2 0 J = J + 1 P R I N T " I R Q C A L L # R E T U R N

W h e n y o s t a r t t h i s p r o g r a m w i t h R U N , t h n e c o m m a n di a d d e d b y t h S Y i l i n e 1 0 0 . L i n e 1 1 d e f i n e s t h e s u br o u t i n e a l i n e 2 0 0 a t h i n t e r r u p t p r o g r a m , w h i c h i e x e c u t e d e v e r y s e c o n d ( 5 f i f t i e t h s ) . T h a c t u a l m a i n p r o g -

1 2

Page 132: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 132/224

A d v a n c e d M a c h i n e L a n g u a g e

r a i s i n l i n e 1 2 a n o u t p u t s t h n u m b e r f r o m t 1 0 0 .W h e n t h i s l o o p i e n d e d , t h i n t e r r u p t r o u t i n e i s w i t c h e do f b ! G O S U B w i t h o u t a n p a r a m e t e r s a n t h p r o g r a m e n d s .T h i n t e r r u p t r o u t i n e i a l i n e 2 0 0 . I d i s p l a y s r u n n i n gc o u n t o f t h e n u m b e r o c a l l s b e f o r e r e t u r n i n g t t h m a i np r o g r a m w i t h R E T U R N .

I y o r u t h p r o g r a m , n u m b e r s f r o m t 1 0 w i l l b ep r i n t e d , b u t t h e o u t p u t w i l l b i n t e r r u p t e d f i v e t i m e s w i t ht h m e s s a g e

I R C A L L

t h r o u g h

I R C A L L

I y o c h a n g e t h s e c o n d p a r a m e t e r i l i n e 1 1 0 , y o c a s e t h f r e q u e n c y a w h i c h t h s u b r o u t i n e i c a l l e d . V a l u e sf r o m t 6 5 5 3 5 a r e a l l o w e d . T h e s m a l l e r t h v a l u e i s t h m o r e o f t e n t h i n t e r r u p t r o u t i n e w i l l b e c a l l e d . T h e t i m er e q u i r e d t e x e c u t e t h B A S I C i n t e r r u p t r o u t i n e m a n o t b el o n g e r t h a n t h e t i m e b e t w e e n c a l l s , o t h e r w i s e t h i n t e r r u p tr o u t i n e w i l l i n t e r r u p t i t s e l f a n d t h B A S I C s t a c k w i l lo v e r f l o w . F o e x a m p l e , i y o u r r e p l a c e l i n e 1 1 w i t h

1 1 J G O S U B 2 0 0 , 1

y o u w i l l r e c e i v e t h f o l l o w i n g o u t p u t :

I R C A L LI R C A L L #

1 2

Page 133: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 133/224

Page 134: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 134/224

A d v a n c e d M a c h i n e L a n g u a g e

d e t e r m i n e s t h d u r a t i o n b e t w e e n i n t e r r u p t s . I i t i s n o z e r o , t i m e r i l o a d e d w i t h i t T i m e r A i l o a d e d w i t h t h v a l u e f o f i f t i e t h o s e c o n d a n b o t h t i m e r s a r s t a r te d T i m e r i p r o g r a m m e d s u c h t h a t i t i s d e c r e m e n t e d e a c ht i m e t i m e r r e a c h e s z e r o ( t i m e s o u t ) . T h N M f o t i m e ri t h e n e n a b l e d b w r i t i n g t h c o r r e s p o n d i n g b i p a t t e r ni n t o t h e c o n t r o l r e g i s t e r . F i n a l l y , t h S T O P a n d N M I v e c t o r sa r s e t t h n e w r o u t i n e s b e f o r e w j u m p b a c k t t h i n t e r p r e t e r l o o p .

F r o m l i n e 1 1 5 0 t 1 2 5 0 y o u f i n d t h r o u t i n e w h i c h t u r n st h i n t e r r u p t o f f f o l l o w i n g I G O S U B c o m m a n d w i t h o u t p a r am e t e r s . I a l s o s e t s t h e v e c t o r s b a c k t t h o r i g i n a l v a u e s . T h a c t u a l N M r o u t i n e i p e r f o m e d b l i n e s 1 2 7 0 t 1 3 9 0 . T h r e g i s t e r s a r f i r s t s a v e d a n t h s t a t u s o t i m e r

i t e s t e d b y r e a d i n g t h i n t e r r u p t c o n t r o l r e g i s t e r , t s e i t h t i m e r g e n e r a t e d t h N M I . I t h i s w a s t h e c a s e ,f l a g i s e a n t h N M r o u t i n e e x i t e d . O t h e r w i s e e x e c u t i o nb r a n c h e s t t h n o r m a l N M r o u t i n e .

T h m o s t i m p o r t a n t s u b r o u t i n e , c a l l e d b t h B A S I Ci n t e r p r e t e r a f t e r e a c h s t a t e m e n t , i f o u n d a l i n e 1 4 1 0 .H e r e c h e c k i m a d e t s e i t h a p p r o p r i a t e f l a g f r o m t h N M i s e i n d i c a t i n g t h a t t h e t i m e i u p I t h e t e s t i n e g a t i v e , b r a n c h i m a d e t t h n o r m a l r o u t i n e w h i c hc h e c k s t h S T O P k e y . I t h e t i m e w a s u p t h f l a g i c l e a r e da n t h a c t u a l r e t u r n a d d r e s s i p u l l e d f r o m t h s t a c k . T h B A S I C G O S U B c o m m a n d i t h e n i m i t a t e d . A f t e r t h p r o g r a md e t e r m i n e s t h a t t h e r e i e n o u g h r o o m l e f t o t h s t a c k , t h p o i n t e r t t h B A S I C t e x t a w e l l a t h c u r r e n t l i n e n u m b e ra r s a v e d o t h e s t a c k . I o r d e r t d i s t i n g u i s h t h i s f r o mF O R - N E X T l o o p w h i c h a l s o p l a c e s i t p a r a m e t e r s o t h s t a c k ,t h G O S U B c o d e i p u s h e d o n t o t h e s t a c k . N e x t t h a d d r e s s o

1 2

Page 135: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 135/224

A d v a n c e d M a c h i n e L a n g u a g e

t h s u b r o u t i n e i d e t e r m i n e d a s a v e d b t h d e f i n i t i o n ,l o a d e d i n t o t h B A S I C t e x t p o i n t e r a n b r a n c h i a g a i nm a d e t t h i n t e r p r e t e r l o o p . T h B A S I C i n t e r p r e t e r e x e c u t e st h s u b r o u t i n e a n c a c o r r e c t l y r e t u r n t t h i n t e r r u p t e dp r o g r a m w h e n i e n c o u n t e r s t h R E T U R N c o m m a n d .

T h p r o g r a m e n d s w i t h t h d e f i n i t i o n o f t w o v a r i a b l e s .T h . S Y M p s e u d o - o p i l i n e 1 2 p r o d u c e s t h s y m b o l t a b l es h o w n a t h e n o t h l i s t i n g w h i c h i n c l u d e s a l o f t h es y m b o l s u s e d t o g e t h e r w i t h t h e i r v a l u e s .

T h i s n e w c o m m a n d o f f e r s y o u p o s s i b i l i t i e s i B A S I Cw h i c h c o u l d p r e v i o u s l y b a t t a i n e d o n l y i m a c h i n e l a n g u a g e .Y o c a n o e x e c u t e t i m e - c o n t r o l l e d s u b r o u t i n e s i B A S I Cw i t h t i m e s p a n f r o m 2 m i l l i s e c o n d s t 2 m i n u t e s t c h o o s e f r o m . T h i s i o n e x a m p l e o i n t e r r u p t c o n t r o l f r o mw i t h i n B A S I C . T i l l u s t r a t e t h r o u t i n e , h e r e i p r o g r a mw h i c h f l a s h e s t h s c r e e n b y e x c h a n g i n g t h b a c k g r o u n d a n b o r d e r c o l o r s .

1 0 S Y 5 2 2 2 41 1 F 5 3 2 8 0 F F 1 2 ! G O S U B 1 0 0 0 , 3 01 3 F O 1 = T 1 0 0 0 P R I N T I N E X T1 4 I G O S U B E N 1 0 0 0 A = P E E K ( F 1 ) P O K E F 1 , P E E K ( F 2 ) P O K E F 2 , A R E T U R N

T h e B A S I C i n t e r r u p t r o u t i n e s h o u l d a l w a y s b e d e a c ti v a t e d w i t h J G O S U B b e f o r e t h e n o f t h e p r o g r a m . I y o l a t e r t r t l i s t o s a v e p r o g r a m w i t h t h i n t e r r u p tr o u t i n e a c t i v e , i w i l l i n t e r r u p t t h i s p r o c e s s b e c a u s e t h e s er o u t i n e s c h e c k f o r t h e S T O P k e y .

1 2

Page 136: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 136/224

A d v a n c e d M a c h i n e L a n g u a g e

T h n e x t e x a m p l e p r o g r a m d i s p l a y s t h C o m m o d o r e 6 4 ' sc h a r a c t e r s e i n o r m a l a n r e v e r s e a n d t h e n s w i t c h e s , o i n t e r r u p t , b e t w e e n t h s t a n d a r d t e x t r e p r e s e n t a t i o n a n d t h ee x t e n d e d c o l o r m o d e . T h i s i d o n e b y s e t t i n g b i i r e g i st e 1 o t h v i d e o c o n t r o l l e r . I t h i s m o d e o n l y 6 c h a ra c t e r s i n s t e a d o f 2 5 6 c a n b e d i s p l a y e d . T h u p p e r t w b i t so t h s c r e e n m e m o r y n o w s e r v e t s e l e c t o n o f o u r d i ff e r e n t b a c k g r o u n d c o l o r s f o e a c h c h a r a c t e r . T h e s e c o l o r sa r p l a c e d i r e g i s t e r s 3 t 3 o f t h e v i d e o c o n t r o l l e r( a d d r e s s e s 5 3 2 8 1 t 5 3 2 8 4 ) .

1 0 S Y 5 2 2 2 41 1 I G O S U B 1 7 0 , 2 51 2 X = 1 81 3 P R I N T C H R $ ( X ) ; : X = X + 1 2 8 A N 2 5 1 4 F O 1 = 3 2 T O 1 2 7 : P R I N T C H R $ ( I ) ; : N E X T1 5 F O R 1 = 1 6 0 T 2 5 5 : P R I N T C H R $ ( I ) ; : N E X T1 6 P R I N T : G O T O 1 3 01 7 A = P E E K ( 5 3 2 4 8 + 1 7 ) : P O K E 5 3 2 4 8 + 1 7 , ( A O R 6 4 ) A N D N O T ( A A N D 6 4 )1 8 R E T U R N

1 3

Page 137: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 137/224

A d v a n c e d M a c h i n e L a n g u a g e

S E C T I O N B e y o n d B A S I C

3 . K e r n a l a n B A S I C e x t e n s i o n s

O n a d v a n t a g e t h a t t h e C o m m o d o r e 6 h a o v e r i t " b i g "b r o t h e r s , t h C B 8 0 3 2 a n d 8 0 9 6 i t h a t t h e B A S I C i n t e rp r e t e r a n o p e r a t i n g s y s t e m k e r n a l c a n b e e a s i l y " e x p a n d e d "w i t h y o u r o w c u s t o m i z e d r o u t i n e s .

B e x p a n d w m e a n t h a t w e c a n e x t e n d t h c a p a b i l i t i e sb y a d d i n g n e o e n h a n c e d c o m m a n d s t B A S I C . I t i s n l o n g e rn e c e s s a r y t a c c e s s e a c h n e w c o m m a n d w i t h P E E K , P O R E , o rS Y S . T h e r e a r t w o w a y s t o d o t h i s .

B e c a u s e t h e n t i r e a d d r e s s s p a c e o f t h e C o m m o d o r e 6 4 o f6 4 i e q u i p p e d w i t h R A N , y o c a e a s i l y m a k e c h a n g e s i t h B A S I C a n d o p e r a t i n g s y s t e m b c o p y i n g t h B A S I C i n t e r p r e t e ra n d / o r t h k e r n a l R O M i n t o t h R A l y i n g a t h s a m e a d r e s s . T h e n y o c a m a k e t h d e s i r e d c h a n g e s a n " s w i t c h o n t h i s R A v e r s i o n o B A S I C b y m e a n s o t h p r o c e s s o r p o r t a a d d r e s s 1 T h i s m e t h o d h a b o t h a d v a n t a g e s a n d i s a d v a n t a g e sc o m p a r e d t o t h e m e t h o d d e s c r i b e d l a t e r .

T h a d v a n t a g e o t h i s m e t h o d i t h a t y o u h a v e c o m p l e t ef r e e d o m i m a k i n g c h a n g e s . T h i s f r e e d o m i s e x t e n s i v e t h a t

c o m p l e t e l y d i f f e r e n t l a n g u a g e c a n b e u s e d i p l a c e o B A S I C , o c o m p l e t e l y n e w o p e r a t i n g s y s t e m c a n b e c o n s t ru c t e d . T h i s R A a r e a i o t h e r w i s e o f t e n u s e d f o s u c h t h i n g sa g r a p h i c s s t o r a g e . T h d i s a d v a n t a g e o f t h i s m e t h o d l i e s i t h a t t h i s R A a r e a i n l o n g e r a v a i l a b l e f o o t h e r p u p o s e s . v a r i a n t o t h i s m e t h o d i t h u s o f o n e o t w E P R O M s i t h a d d r e s s r a n g e f r o m $ 8 0 0 0 t $ 9 F F F o f r o m

1 3

Page 138: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 138/224

A d v a n c e d M a c h i n e L a n g u a g e

$ 8 0 0 0 t $ B F F F w h i c h c o n t a i n s B A S I C e x t e n s i o n , a n o t h e rl a n g u a g e , o u s e r - s p e c i f i e d p r o g r a m . c a r t r i d g e i t h c a r t r i d g e s l o t i n e c e s s a r y f o t h i s , h o w e v e r .

s e c o n d m e t h o d d o e s n o r e q u i r e a d d i t i o n a l R O b u r a t h e r u s e s e n t r y p o i n t s i t h s y s t e m s o f t w a r e i o r d e r t m o d i f y t h m o s t i m p o r t a n t f u n c t i o n s . T h e s e k e y p o s i t i o n s a r a c c e s s e d v i s o - c a l l e d j u m p v e c t o r s w h i c h c a b c h a n g e d b t h u s e r . A n i n d i r e c t j u m p i n s t r u c t i o n u s e d a t h i s p o i n t .F o e x a m p l e

J M ( V E C T O R )

T h l o a n h i g h b y t e s o t h a c t u a l j u m p a d d r e s s a r s t o r e d a t h a d d r e s s v e c t o r . T h e s e v e c t o r s a r i n i t i a l i z e dw h e n t h c o m p u t e r i t u r n e d o a n u s u a l l y p o i n t d i r e c t l yb e h i n d t h i n d i r e c t j u m p c o m m a n d i t h B A S I C i n t e r p r e t e r .I w w a n t t c h a n g e c e r t a i n f u n c t i o n , w e w r i t e o u r o w nr o u t i n e a n c h a n g e t h a p p r o p r i a t e j u m p v e c t o r s t h a t i p o i n t s t o u n e r o u t i n e . T h e p r i n c i p l e i s i m i l a r t t h a tw h i c h w l e a r n e d f o i n t e r r u p t v e c t o r s .

T h f o l l o w i n g t a b l e g i v e s i n f o r m a t i o n c o n c e r n i n g w h a tb i p a t t e r n m u s t b e w r i t t e n t a d d r e s s i o r d e r t g e t t h ea p p r o p r i a t e m e m o r y c o n f i g u r a t i o n w h e n u s i n g t h " R A M m e h o d "

1 3

Page 139: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 139/224

Page 140: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 140/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . T h e B A S I C v e c t o r s

T h e B A S I C i n t e r p r e t e r h a s i v e c t o r s w h i c h m a k e i p o s s i b l e t a d d n e w r o u t i n e s . T h e s e v e c t o r s a r p l a c e d i p a g e a n h a v e t h f o l l o w i n g u s e :

V e c t o r A d d r e s s S i g n i f i c a n c e$ 0 3 0 0 / $ 0 3 0 1 $ E 3 8 B B A S I C w a r m s t a r t a n d e r r o r e n t r y p o i n t$ 0 3 0 2 / $ 0 3 0 3 $ A 4 8 3 i n p u t d e l a y l o o p$ 0 3 0 4 / $ 0 3 0 5 $ A 5 7 C c o n v e r s i o n t i n t e r p r e t e r c o d e$ 0 3 0 6 / $ 0 3 0 7 $ A 7 1 A c o n v e r t i n t e r p r e t e r c o d e t t e x t$ 0 3 0 8 / $ 0 3 0 9 $ A 7 B 4 e x e c u t e B A S I C c o m m a n d$ 0 3 0 A / $ 0 3 0 B $ A B 8 6 e v a l u a t e B A S I C e x p r e s s i o n

W i t h t h h e l p o t h e s e v e c t o r s y o u h a v e a e a s i l ya c c e s s i b l e w a o c h a n g i n g t h B A S I C i n t e r p r e t e r . W w i l lb e c o m e a c q u a i n t e d w i t h t h s i g n i f i c a n c e o e a c h v e c t o r a n u s t h e m f o e x t e n s i o n s a n d e n h a n c e m e n t s .

I o r d e r t d r a w t h g r e a t e s t u s e f u l n e s s f r o m t h i ss e c t i o n , y o m a w a n t t c o n s u l t t h R O l i s t i n g o t h ' 6 f o u n d i T h A n a t o m y o f t h e C o m m o d o r e 6 a w g a l o n g .T h i s a l l o w s y o t t r a c e e x a c t l y w h a t h a p p e n s i t h B A S I Ci n t e r p r e t e r .

T h w a r m s t a r t a n d e r r o r v e c t o r $ 3 0 0 / $ 3 0 1

T h i s v e c t o r i u s e d w h e n t h e E N D o t h p r o g r a m o a e r r o r i e n c o u n t e r e d . I a e r r o r o c c u r s , t h e r e g i s t e rc o n t a i n s t h e r r o r n u m b e r . T h e s e n u m b e r s r a n g e f r o m t 2 a n h a v e t h f o l l o w i n g m e a n i n g :

1 3

Page 141: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 141/224

A d v a n c e d M a c h i n e L a n g u a g e

N o E r r o r m e s s a g e

T O M A N Y F I L E SF I L E O P E NF I L E N O T O P E NF I L E N O T F O U N DD E V I C E N O P R E S E N TN O T I N P U T F I L EN O O U T P U T F I L EM I S S I N G F I L E N A M EI L L E G A L D E V I C E N U M B E R

1 N E X T W I T H O U T F O 1 S Y N T A X1 R E T U R N W I T H O U T G O S U B1 O U O D A T A1 I L L E G A L Q U A N T I T Y1 O V E R F L O W1 O U T O F M E M O R Y1 U N D B F ' D S T A T E M E N T1 B A S U B S C R I P T1 R E D I M ' D A R R A Y2 D I V I S I O N B Z E R O2 I L L E G A L D I R E C T2 T Y P E M I S M A T C H2 S T R I N G T O O L O N G2 F I L E D A T A2 F O R M U L A T O C O M P L E X2 C A N ' T C O N T I N U E2 U N D E F ' D F U N C T I O N2 V E R I F Y2 L O A D

1 3

Page 142: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 142/224

A d v a n c e d M a c h i n e L a n g u a g e

E r r o r m e s s a g e s f r o m t a r i n p u t / o u t p u t r e l a t e de r r o r s a n d a r e i s s u e d b y t h o p e r a t i n g s y s t e m ( k e r n a l ) .E r r o r s 1 t 2 a r g e n e r a t e d b t h B A S I C i n t e r p r e t e r . I a e r r o r i r e c o g n i z e d b t h B A S I C i n t e r p r e t e r , t h r e g i s t e r i l o a d e d w i t h t h e r r o r n u m b e r a n j u m p i m a d et a d d r e s s $ A 4 3 7 b y w a y o t h i n d i r e c t j u m p J M P ( $ 0 3 0 0 ) . I t h p r o g r a m i e n d e d w i t h E N a n o r m a l , h o w e v e r , t h r e g i s t e r i l o a d e d w i t h n e g a t i v e v a l u e ( $ 8 0 ) i o r d e r t d i s t i n g u i s h i f r o m a e r r o r m e s s a g e . T h i s i c h e c k e d i t h e r r o r r o u t i n e , t h e r r o r o u t p u t b y p a s s e d , t h m e s s a g e" R E A D Y . " d i s p l a y e d , a n b r a n c h m a d e t t h i n p u t - w a i tl o o p .

W c a u s t h e r r o r v e c t o r f o v a r i e t y o p u r p o s e s .F o o n e , w c o u l d c h a n g e t h e t e x t o f t h e r r o r m e s s a g e s , o p r e v e n t t h p r o g r a m f r o m b r e a k i n g o f w h e n a e r r o r i d i s c o v e r e d , b u t b r a n c h t s p e c i f i e d B A S I C l i n e w h e r et h e r r o r c a b e c a u g h t o p e r h a p s c o r r e c t e d . S o m e e n h a n c e dv e r s i o n s o B A S I C h a v e c o m m a n d f o r t h i s p u r p o s e s u c h a s

O E R R O R G O T O . .

S u c h c o m m a n d c a n , f o e x a m p l e , b u s e d t c a t c h e r r o r sg e n e r a t e d b p e r i p h e r a l d e v i c e s .

T h i n p u t - w a i t l o o p $ 3 0 2 / $ 3 0 3

W h e n t h c o m p u t e r d i s p l a y s t h e R E A D Y . p r o m p t a f t e r E N o r a n e r r o r m e s s a g e , i g o e s t t h w a r m - s t a r t v e c t o r a $ 3 0 0 . T h e n i j u m p s t t h v e c t o r $ 3 0 2 / $ 3 0 3 . I t h i s r o ut i n e , t h c o m p u t e r w a i t s f o r t h e i n p u t o f l i n e t e r m i n a t e db t h < R E T U R N > k e y .

1 3

Page 143: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 143/224

A d v a n c e d M a c h i n e L a n g u a g e

T h i s l i n e i c h e c k e d t m a k e s u r e t h a t i t i s n o l o n g e rt h a n 8 c h a r a c t e r s ( t h e l e n g t h o t h B A S I C i n p u t b u f f e rl o c a t e d f r o m $ 2 0 0 t $ 2 5 8 . ) I t h i s l e n g t h i e x c e e d e d , t h ee r r o r m e s s a g e " S T R I N G T O L O N G " i d i s p l a y e d . T h f i r s tc h a r a c t e r o t h i n p u t t e d l i n e d e t e r m i n e s h o t h l i n e w i l lb e t r e a t e d . I t h f i r s t c h a r a c t e r i d i g i t , t h e i n t e rp r e t e r a s s u m e s t h a t w e w a n t t e n t e r n e B A S I C l i n e . I t h i s c a s e , t h e e n t i r e l i n e n u m b e r i r e a d a n d c h e c k i m a d e t s e i t h i s l i n e e x i s t s . I s o t h e o l d l i n e i d e l e t e d f r o m t h p r o g r a m . I n o t h i n g f o l l o w s t h l i n en u m b e r , t h e n t h e l i n e i t b s i m p l y d e l e t e d a n b r a n c hi m a d e b a c k t t h s t a r t o t h l o o p . I f a d d i t i o n a l t e x tf o l l o w s t h l i n e n u m b e r , t h i s t e x t i c o n v e r t e d t i n t e rp r e t e r c o d e s , a n t h p r o g r a m l i n e i i n s e r t e d i n t o t h B A S I C t e x t , a n b r a n c h i a g a i n m a d e t t h s t a r t o f t h l o o p .

I t h f i r s t c h a r a c t e r e n t e r e d w a n o d i g i t , t h el i n e i i n t e r p r e t e d a B A S I C c o m m a n d i t h d i r e c t m o d e .T h l i n e i c o n v e r t e d t i n t e r p r e t e r c o d e s a n d b r a n c h i m a d e t t h p l a c e i t h i n t e r p r e t e r w h e r e B A S I C c o m m a n di e x e c u t e d .

W e c a n a l s o u s e t h i s v e c t o r t e x t e n d o e n h a n c e B A S I C .F o e x a m p l e , i t i s p o s s i b l e t t a k e p r o g r a m i n p u t f r o ms e q u e n t i a l d i s k f i l e o f r o m t h u s e r p o r t , f r o m a n o t h e rc o m p u t e r c o n n e c t e d t h e r e , i n s t e a d o t h k e y b o a r d . T h i sg r e a t l y s i m p l i f i e s t h t r a n s f e r o B A S I C p r o g r a m s f r o m o t h e rc o m p u t e r s . T h s l o w a n e r r o r - p r o n e t y p i n g - i n o l i s t i n g s i n l o n g e r n e c e s s a r y . W i t h d i r e c t c o u p l i n g o f t w o c o m p u t e r s ,t h s e n d i n g c o m p u t e r n e e d o n l y l i s t i t p r o g r a m o v e r t h i n t e r f a c e . T h R 2 3 i b e s t s u i t e d f o t h i s p u r p o s e s i n c em o s t c o m p u t e r s h a v e t h i s i n t e r f a c e a v a i l a b l e t t h e m .

1 3

Page 144: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 144/224

A d v a n c e d M a c h i n e L a n g u a g e

A a d d i t i o n a l a p p l i c a t i o n o f t h i s v e c t o r i t h A U T Oc o m m a n d . T h i s c o m m a n d e a s e s t h e i n p u t o f p r o g r a m s b a u t om a t i c a l l y p l a c i n g t h n e x t l i n e n u m b e r a t h s t a r t o f t h el i n e a n p o s i t i o n i n g t h c u r s o r b e h i n d i t

C o n v e r s i o n t i n t e r p r e t e r c o d e s $ 3 0 4 / $ 3 0 5

A y o p r o b a b l y k n o w , p r o g r a m l i n e i n o s a v e d a i w a s e n t e r e d . I n s t e a d , e a c h c o m m a n d w o r d i s h o r t e n e d t s i n g l e - b y t e v a l u e c a l l e d t o k e n . T h i s h a t w a d v a n t a g e so v e r s t o r i n g t h e n t i r e t e x t o f t h a t w o r d . F i r s t , i s a v e sm e m o r y . I n s t e a d o b y t e s f o r t h e w o r d " P R I N T " o n l y o n b y t e i r e q u i r e f o r t h e t o k e n . T h s e c o n d a d v a n t a g e i n o t i c e a b l e d u r i n g p r o g r a m e x e c u t i o n . W h e n t h B A S I C i n t e rp r e t e r i e x e c u t i n g p r o g r a m a n d c o m e s a c r o s s t o k e n , i c a i m m e d i a t e l y e x e c u t e t h a p p r o p r i a t e c o m m a n d . I t h c o m m a n d w e r e s a v e d i t e x t ( A S C I I ) f o r m , t h c o m p l e t e w o r dw o u l d h a v e t b r e a d . T h e n t h i n t e r p r e t e r w o u l d h a v e t r e a d t h r o u g h i t c o m m a n d t a b l e a n s e i t h w o r d i p r s e n t i i t t a b l e a c o m m a n d w o r d . T h p r o g r a m w o u l d t a k ec o n s i d e r a b l y l o n g e r t r u w i t h o u t t o k e n s . I f o t h o t h e rh a n d , t h e p r o g r a m l i n e i c o n v e r t e d t t o k e n s , t h i s c o n v e rs i o n i o n l y n e c e s s a r y o n c e a n d n o t e a c h t i m e t h c o m m a n d i e x e c u t e d .

I w w a n t t c o n v e r t n e c o m m a n d s t t o k e n s , w c a c h a n g e t h i s v e c t o r . O u r r o u t i n e m u s t t h e n c o m p a r e t h w o r dr e a d f r o m t h i n p u t w i t h t h t a b l e o f t h e n e c o m m a n d w o r d s .I n e c o m m a n d i f o u n d , t h c o m m a n d w o r d i r e p l a c e d b i t t o k e n i t h p r o g r a m o c o m m a n d l i n e .

1 3

Page 145: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 145/224

A d v a n c e d M a c h i n e L a n g u a g e

C o n v e r s i o n o t h i n t e r p r e t e r c o d e t t e x t ( A S C I I ) $ 3 0 6 / $ 3 0 7

T h i s v e c t o r p e r f o r m s t h o p p o s i t e t a s k o t h e o n ea b o v e . I w w a n t t l i s t p r o g r a m , w m u s t c o n v e r t t h t o k e n s b a c k i n t o t e x t . T h t o k e n v a l u e i u s e d a p o i n t e ri t h c o m m a n d w o r d t a b l e . T h i s v e c t o r i u s e d o n l y b y t h L I S T c o m m a n d . W e m u s t c h a n g e i w h e n w e u s e o u r o w n i n t e rp r e t e r c o d e s s t h a t t h n e c o m m a n d s c a n b e l i s t e d p r o p e rl y A a d d i t i o n a l a p p l i c a t i o n i t c h a n g e t h o p e r a t i o n o t h L I S T c o m m a n d . W c o u l d f o e x a m p l e m a k e l i s t i n g m o r er e a d a b l e b p l a c i n g s p a c e a f t e r e a c h c o m m a n d w o r d , o r b i n d e n t i n g l o o p s t r u c t u r e s . I t i s a l s o p o s s i b l e t s t a r tn e l i n e f o r e a c h n e w s t a t e m e n t s e p a r a t e d b c o l o n .

E x e c u t e c o m m a n d $ 3 0 8 / $ 3 0 9

T h i s v e c t o r i o n e o f t h e m o s t i m p o r t a n t . I p o i n t s t t h p l a c e i t h i n t e r p r e t e r w h e r e B A S I C c o m m a n d i e x c u t e d . N o r m a l l y , t h i s r o u t i n e g e t s c h a r a c t e r f r o m t h B A S I C t e x t a n d c h e c k t s e i i i t o k e n . I t h c h a ra c t e r i n o t o k e n , t h e i n t e r p r e t e r a s s u m e s t h a t i t i s a a s s i g n m e n t o f t h e f o r m " . . . " a n b r a n c h e s t t h e L E Tc o m m a n d . I i i t o k e n , i t v a l u e i u s e d a a i n d e x i

t a b l e c o n t a i n i n g t h B A S I C c o m m a n d s . T h e s e c o m m a n d s a r e x e c u t e d a s u b r o u t i n e s a n d a f t e r e x e c u t i o n c a b r a n c h b a c kt t h s t a r t o f t h e i n t e r p r e t e r l o o p w h e r e t h n e x t s t a t em e n t c a b h a n d l e d i t h e s a m e w a y .

W i t h t h h e l p o t h i s v e c t o r o n e c a n e a s i l y a d c u s t o mB A S I C c o m m a n d s t t h i n t e r p r e t e r . T h e s e c a n b e d e s i g n a t e db s p e c i a l c h a r a c t e r s u c h a s a n e x c l a m a t i o n p o i n t ( ! ) . W c a t h e n c h e c k f o r t h i s c h a r a c t e r i o u r o u t i n e a n e x e c u t et h n e c o m m a n d w h e n f o u n d .

1 3

Page 146: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 146/224

A d v a n c e d M a c h i n e L a n g u a g e

I w h a v e a d d e d o u r o w n t o k e n s f o r o u r n e w c o m m a n d su s i n g t h p r e v i o u s l y d e s c r i b e d v e c t o r $ 3 0 4 / $ 3 0 5 , s p e c i a lc h a r a c t e r i n l o n g e r n e c e s s a r y . I n s t e a d , w c a f i r s tc h e c k f o o u n e t o k e n s a n d b r a n c h t t h o r i g i n a l r o u t i n ef o e x e c u t i n g c o m m a n d s i t h n e c o m m a n d i n o f o u n d .

E v a l u a t e B A S I C e x p r e s s i o n $ 3 0 A / $ 3 0 B

T h i s v e c t o r i t f u n c t i o n w h a t t h p r e v i o u s v e c t o rw a t c o m m a n d . T h i s v e c t o r i u s e d w h e n a e l e m e n t o a e x p r e s s i o n i t b c a l c u l a t e d . T h i s e l e m e n t c a n b e n u b e r , B A S I C v a r i a b l e , o f u n c t i o n . I w w a n t t a d d n e wf u n c t i o n s , w m u s t a d t h e m u s i n g t h i s v e c t o r . N u m e r i c a w e l l a s t r i n g f u n c t i o n s c a b e h a n d l e d . Y o u m u s t a l s om o d i f y t h i s v e c t o r i y o s a v e v a r i a b l e s i o t h e r f o r m s .T h i s a l l o w s s u c h t h i n g s a h e x a n d b i n a r y c o n s t a n t s .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :

1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :2 0 0 :2 1 0 :

2 2 0 :

2 3 0 :

0 3 3 C

0 3 0 A

A E 8 D

0 0 0 D0 0 7 30 0 7 9

B D 7 E

0 0 5 D

. O P T P

; I N P U T O H E A N B I N A R Y N U M B E R S

E X P R E S S I O =

O L D V E C T

T Y C H R G E TC H R G O T

A D D D I G I T

F L O A T

$ 3 0 A ; V E C T O R F O R E X R E S S I O N E V A L U A T I O N

$ A E 8 D ; O L D R O U T I N E

1 $ 7 C H R G E T + 6

; V A R I A B L E T Y P E

$ B D 7 E ; A D D O N E - B Y T ED I G I T T O F A C

$ 5 ; R A N G E F O R F L O A T -

1 4

Page 147: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 147/224

A d v a n c e d M a c h i n e L a n g u a g e

2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :

3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :

0 0 6 1

B 9 7 E

0 3 3 C

0 3 3 C0 3 3 E0 3 4 0

0 3 4 30 3 4 6

0 3 4 70 3 4 9

A A 8

8 6

A 8

4 0 O 0

O 0

0 O

3 8 0 :

3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :

4 6 0 :4 7 0 :4 8 0 :

4 9 0 :5 0 0 :

E X $ 6 I N P O I N T N U M B E R S; E X P O N E N T F R O M F A

O V E R F L O W $ B 9 7 E ; O V E R F L O W E R R O R

I N I T

0 3 4 B 2 0 7 3 0 0

0 3 4 E C 2 0 3 5 0 F O 0 3 5 2 C 2 0 3 5 4 F 4

0 3 5 6 2 7 9 0 00 3 5 9 4 C 8 D A E

* 8 2

L D # < T E S TL D # > T E S TS T E X P R E S S I O N ; S E T V E C T O R

T N E R O U T I N ES T E X P R E S S I O N + 1R T

L D S T

# T Y

J S C H R G E T

C M # "

; T Y P E F L A G T N U M E R I C

; G E T N E X T C H A RA C T E R

J H E X N U M B E R ?B E H E X N U M B E RC M # " * " ; B I N A R Y N U M B E R ?B E B I N N U M B E R

J S C H R G O T ; R E P L A C E F L A G SJ M O L D V E C T ; A N D G T O L

E V A L U A T I O N

0 3 5 C 2 0 8 D 0 3 H E X N U M B E R J S R C L R F A C ; C L E A R F A 0 3 5 F 2 0 7 3 0 G E T N E X T J S C H R G E T ; G E T N E X T C H A R

A C T E R0 3 6 2 9 0 O B B C D I G I T ; D I G I T0 3 6 4 C 9 4 C M # " A "

1 4

Page 148: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 148/224

Page 149: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 149/224

A d v a n c e d M a c h i n e L a n g u a g e

7 6 0 :7 7 0 :7 8 0 :7 9 0 :8 0 0 :

8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :

8 8 0 :8 9 0 :9 0 0 :9 1 0 :9 2 0 :9 3 0 :9 4 0 :

0 3 9 40 3 9 6

0 3 9 70 3 9 A

0 3 9 D0 3 9 F0 3 A 10 3 A 30 3 A 50 3 A 70 3 A 8

0 3 A A0 3 A C0 3 A E0 3 B 00 3 B 10 3 B 30 3 B 6

] 0 3 3 C - 0 3 B 9N E R R O R S

1 6

2 2

C B C 9 E 4 A

F E F

6 F 2 4

F

8 7

3 E 3 E 3

6

0 6 D

E 7 9

0 0

B 0

B P R T

B I N N U M B E R J S RG E T B I N J S

C M B C C M B C S B P H L D

B E I N B E

Z E R O P L AB E J S J M

L O O P

C L R F A CC H R G E T

# " 2 "E N # f t 0 "E N # " 0 f l

e x

Z E R OE X O V E R

G E T B I NA D D D I G I TG E T B I N

C L E A R F A G E T N E X T C H A RA C T E R

G R E A T E R T H A N " 1 " ?

L E S S T H A N " 0 " ?F R O M A S C I I T O H E X

; I N U M B E R S T I L LZ E R O ?

; D O U B L E N U M B E R; T O O L A R G E ?

; D O N ' T A D Z E R O; A D D D I G I T

; A N D G E T N E X TD I G I T

T h i s r o u t i n e w o r k s i t h s a m e w a y a t h s u b r o u t i n ef o p r o c e s s i n g d e c i m a l d i g i t s , b u t i i s i m p l e r a n e a s i e rt u n d e r s t a n d b e c a u s e n f r a c t i o n s o e x p o n e n t s n e e d t b t a k e n i n t o c o n s i d e r a t i o n . W h e n y o a c t i v a t e t h p r o g r a m w i t hS Y S 8 2 8 , y o c a e n t e r n u m b e r s i e i t h e r h e x a d e c i m a l o b i n a r y f o r m a t i a d d i t i o n t t h u s u a l d e c i m a l f o r m . F o re x a m p l e :

1 4

Page 150: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 150/224

A d v a n c e d M a c h i n e L a n g u a g e

$ F F F F r e t u r n s 6 5 5 3 5

£ 1 0 1 0 1 0 r e t u r n s 4

Y o a r n o l i m i t e d t f o u r d i g i t h e n u m b e r s . T h e n t i r e r a n g e o f f l o a t i n g p o i n t n u m b e r s i a v a i l a b l e . T h i sm e a n s t h a t h e n u m b e r m a h a v e m a x i m u m o 3 p l a c e s . F o re x a m p l e

$ F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F

r e t u r n s

2 . 1 2 6 7 6 4 7 9 E + 3 7

T h e n t i r e v a l u e r a n g e c a n n o t b u s e d i s i n g l eb i n a r y i n p u t l i n e ; n u m b e r o 7 b i n a r y d i g i t s h a v a l u eo a b o u t 3 E + 2 3 .

W i t h t h i s c o m m a n d e x p a n s i o n y o c a u s e h e x a n d b i n a r yn u m b e r s n o o n l y i P R I N T s t a t e m e n t s b u w h e r e v e r d e c i m a ln u m b e r s w e r e p r e v i o u s l y n e c e s s a r y . T h i s i p a r t i c u l a r l yi n t e r e s t i n g i c o n n e c t i o n w i t h P O K E , P E E K , a n S Y c o m m a n d s .T h a d d r e s s $ D 0 0 0 f o r t h e v i d e o c o n t r o l l e r i s o m e w h a te a s i e r t r e m e m b e r t h a t 5 3 2 4 8 . F o r e x a m p l e , s p r i t e c a n b ea c t i v a t e d w i t h

P O K E $ D 0 1 5 , P E E K ( $ D 0 1 5 ) O S 1 0 0 0

i n s t e a d o

P O K E 5 3 2 4 8 + 2 1 , P E E K ( 5 3 2 4 8 + 2 1 ) O

1 4

Page 151: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 151/224

A d v a n c e d M a c h i n e L a n g u a g e

T h e r e a r f e p r o b l e m s w i t h t h h e i n p u t . E n t e r

$ A B C D E F

a n y o w i l l g e " S Y N T A X E R R O R . " W h y ? I y o l o o k a t h n u m b e r c l o s e l y y o u m a y r e c o g n i z e t h a t i c o n t a i n s t h c o m a n d w o r d " D B F " f o r t h e d e f i n i t i o n o f u n c t i o n s . S i n c e t h i n t e r p r e t e r f i r s t c o n v e r t s t h e i n p u t l i n e i n t o t o k e n s , t h s t r i n g " D B F " g e t s c o n v e r t e d t t h a p p r o p r i a t e t o k e n a n do u n e f u n c t i o n r e t u r n s S Y N T A X E R R O R . W e c a n e a s i l y g e a r o u n d t h i s b y a d d i n g s p a c e :

$ A B C D E

N o w g e t h c o r r e c t v a l u e 1 1 2 5 9 3 7 5 . I i p o s s i b l e t i n s e r t t h s p a c e b e c a u s e t h C H R G E T r o u t i n e i g n o r e s s p a c e s .T h i s i a l s o t h c a s e f o n o r m a l d e c i m a l n u m b e r s .

L e u t a k e c l o s e r l o o k a t h o p e r a t i o n o t h r o u t i n e .

A f t e r t h u s u a l i n i t i a l i z a t i o n w h i c h s e t s t h v e c t o r t o u n e w r o u t i n e , t h f l a g d e n o t i n g t h v a r i a b l e t y p e i c l e a r e d ( s e t t o n u m e r i c ) a p e t h i n t e r p r e t e r r o u t i n e . N o t h n e x t c h a r a c t e r c a n b e f e t c h e d a n d t e s t e d . I i i d o l l a r o p e r c e n t s i g n , w i t h w h i c h h e a n b i n a r y n u m b e r sa r d e s i g n a t e d , r e s p e c t i v e l y , b r a n c h i m a d e t o u r n e wr o u t i n e . I t h i s w a s n o t t h e c a s e , t h f l a g s a r r e s e t w i t hC H R G O T a n e x e c u t i o n c o n t i n u e s w i t h t h o r i g i n a l e v a l u a t i o nr o u t i n e o t h i n t e r p r e t e r . W p r o c e e d a f o l l o w s i t h n e r o u t i n e t c o n v e r t h e n u m b e r :

F i r s t , t h e f l o a t i n g - p o i n t a c c u m u l a t o r i c l e a r e d b c a u s e w e w i l l c o n s t r u c t o u r r e s u l t i i t T h n e x t c h a r a c t e r

1 4

Page 152: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 152/224

A d v a n c e d M a c h i n e L a n g u a g e

i f e t c h e d a n c h e c k e d t s e i i t i s d i g i t o l e t t e rf r o m " A " t o " F " . I f t h i s c o n d i t i o n i m e t , t h c h a r a c t e r i c o n v e r t e d t t h c o r r e s p o n d i n g h e v a l u e ; f o r e x a m p l e , " 1 b e c o m e s t h v a l u e $ 0 a n " A b e c o m e s $ 0 A . T h v a l u e i t h f l o a t i n g - p o i n t a c c u m u l a t o r a r m u l t i p l i e d b 1 6 p r o v i d e d i i n o z e r o . W p e r f o r m t h i s m u l t i p l i c a t i o n i t h s i m p l e s ta n f a s t e s t w a y . I n s t e a d o c a l l i n g f l o a t i n g - p o i n t m u l ti p l i c a t i o n r o u t i n e , w h i c h t a k e s a l e a s t m i l l i s e c o n d , w c a s e t h a t m u l t i p l y i n g b 1 i t h s a m e a i n c r e m e n t i n gt h p o w e r o f t w o b 4 1 2 ~ 4 . W t h e r e f o r e s i m p l y a d f o u r t t h e F A C e x p o n e n t , w h i c h t a k e s o n l y f e m i c r os e c o n d s . A f t e r w a r s a t i s f i e d t h a t n o v e r f l o w o c c u r r e d ,w g e t h c h a r a c t e r j u s t r e a d a n d a d d i t t h F A C . I t h n u m b e r i z e r o , w c a s k i p t h a d d i t i o n . T h i s p r o c e s s i d o n e i l o o p u n t i l t h e C H R G E T r o u t i n e r e a d s c h a r a c t e rw h i c h i n o p a r t o t h n u m b e r .

T h c o n v e r s i o n o b i n a r y n u m b e r f o l l o w s t h s a m ep a t t e r n a n i e v e n s i m p l e r . H e r e w s i m p l y i n c r e m e n t t h e x p o n e n t b y o n e i n s t e a d o m u l t i p l y i n g b t w o . T h a d d i t i o na p r o c e d u r e s a r t h s a m e a t h o s e f o c o n v e r t i n g t h h e n u m b e r s .

1 4

Page 153: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 153/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . S t r u c t u r e d P r o g r a m i n g

T h r o u g h o u t t h i s b o o k w h a v e e x a m i n e d t h o p e r a t i o n o t h B A S I C i n t e r p r e t e r , e s p e c i a l l y t h e x e c u t i o n o s i m p l ec o m m a n d s . W h a v e n o e x a m i n e d t h c o n c e p t o p r o g r a m m i n gs t r u c t u r e s . T h i n t e r p r e t e r r e c o g n i z e s o n l y t w s e t s o c o m m a n d s f o s t r u c t u r e d p r o g r a m m i n g :

G O S U B . . R E T U R N

a n

F O . . N E X T

I o r d e r t m a k e u s o t h e s e s t r u c t u r e s , t h e i n t e rp r e t e r m u s t k n o w w h e r e t j u m p w h e n e x e c u t i n g t h R E T U R Nc o m m a n d a f t e r G O S U B t s u b r o u t i n e s t h a t t h e m a i np r o g r a m c a c o n t i n u e a n o r m a l . W i t h t h N E X T c o m m a n d , t h e n v a l u e a n s t e p s i z e m u s t b k n o w n i a d d i t i o n t t h a d d r e s s o t h s t a r t o t h e l o o p s t h a t t h i n t e r p r e t e r c a d e t e r m i n e w h e n t e n d t h e l o o p . T h p a r a m e t e r s r e q u i r e d f o R E T U R N a n N E X T c o u l d b s t o r e d a p r e d e t e r m i n e d p l a c e i m e m o r y . B u w h a t h a p p e n s i w e w a n t t n e s t s e v e r a l s u r o u t i n e s o l o o p s ?

C a r e m u s t b t a k e n t e n s u r e t h a t t h e p a r a m e t e r s f o t h l a s t u s e d s t r u c t u r e ( R E T U R N o N E X T ) c a b a c c e s s e d .W h a t w a s s t o r e d l a s t m u s t b g o t t e n b a c k f i r s t . W a r f a m i l i a r w i t h t h i s p r i n c i p l e f r o m t h s t a c k : L A S T I F I R S TO U T . T h e r e f o r e t h B A S I C i n t e r p r e t e r s i m p l y u s e s t h s t a c kt s t o r e t h p a r a m e t e r s o f t h e p r o g r a m s t r u c t u r e s .

1 4

Page 154: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 154/224

A d v a n c e d M a c h i n e L a n g u a g e

W h a t d a t a m u s t b s a v e d o t h e s t a c k b y G O S U B c o m a n d ? F i r s t . t h e a d d r e s s f o l l o w i n g t h G O S U B c a l l m u s tc e r t a i n l y b e s a v e d . I a d d i t i o n , t h c u r r e n t l i n e n u m b e rm u s t b e p l a c e d o t h s t a c k s o t h a t i h a s t h e c o r r e c t v a l u eu p o n r e t u r n . I o r d e r t h a t o n c a l a t e r d i s t i n g u i s h t h d a t a f o G O S U B c o m » a n d f r o m t h a t o f F O R c o m m a n d , t h G O S U B i d e n t i f i c a t i o n c o d e i a l s o p l a c e d o t h s t a c k .c o m p l e t e d a t a s e o t h s t a c k l o o k s l i k e t h i s :

S t a c k p o i n t e rb e f o r e G O S U B c o m m a n d p r o g r a m p o i n t e r h

p r o g r a m p o i n t e r l l i n e n u m b e r h l i n e n u m b e r l

G O S U B c o d e $ 8 S t a c k p o i n t e ra f t e r G O S U B c o m m a n d

T h G O S U B c o m m a n d t h u s r e q u i r e s b y t e s o s p a c e o t h s t a c k . B e c a u s e t h e 6 5 1 0 s t a c k p o i n t e r i o n l y b i t s l o n g ,i c a a d d r e s s o n l y o n e p a g e , f r o m $ 1 0 0 t $ 1 F F . I t i s c l e a rt h e n t h a t s u b r o u t i n e s c a n n o t b n e s t e d t a n d e s i r e d d e p t h .

m a x i m u m o 2 5 6 / 5 5 n e s t e d s u b r o u t i n e s a r p o s s i b l e .S i n c e t h s t a c k i a l s o u s e d f o o t h e r p u r p o s e s a w e l l ,f e w e r a r e a c t u a l l y a l l o w e d . B e f o r e t h e x e c u t i o n o G O S U Bc o m m a n d , s u b r o u t i n e i c a l l e d w h i c h c h e c k s t s e i e n o u g h s p a c e i l e f t o t h s t a c k . W h e n c a l l i n g t h i s s u b r o ut i n e , o n h a l f t h n u m b e r o r e q u i r e d m e m o r y l o c a t i o n s i P l a c e d i n t o t h e a c c u m u l a t o r . T h i s m u s t b f o t h G O S U Bc o m m a n d ; t h e r e f o r e t h s u b r o u t i n e t e s t s f o r b y t e s . I t h r e q u i r e d s p a c e i n o a v a i l a b l e , t h m e s s a g e " O U T O M E M O R Y "i g i v e n . T h i s m e s s a g e i u n f o r t u n a t e l y w o r d e d t h s a m e a t h m e s s a g e p r i n t e d w h e n t h m e m o r y s p a c e f o v a r i a b l e s h a

1 4

Page 155: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 155/224

Page 156: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 156/224

A d v a n c e d M a c h i n e L a n g u a g e

S t a c k p o i n t e rb e f o r e F O c o m m a n d p r o g r a m p o i n t e r h

p r o g r a m p o i n t e r l l i n e n u m b e r h l i n e n u m b e r l

m a n t i s s am a n t i s s am a n t i s s a T v a l u em a n t i s s ae x p o n e n ts i g nm a n t i s s am a n t i s s am a n t i s s a S T E P v a l u em a n t i s s ae x p o n e n tv a r i a b l e a d d r e s s h v a r i a b l e a d d r e s s l F O c o d e $ 8

S t a c k p o i n t e ra f t e r F O c o m m a n d

Y o c a s e e t h a t F O R - N E X T l o o p r e q u i r e s 1 b y t e s o s t o r a g e o t h e s t a c k . T h f o l l o w i n g h a p p e n s w i t h N E X Tc o m m a n d : F i r s t c h e c k i m a d e t s e i t h e t o p s t a c ke l e m e n t i t h F O R c o d e $ 8 1 . I t h i s i n o t t h e c a s e , t h ee r r o r m e s s a g e " N E X T W I T H O U T F O R " i g i v e n . I v a r i a b l ef o l l o w s t h N E X T c o m m a n d , t h a d d r e s s o t h v a r i a b l e i d e t e r m i n e d a n c o m p a r e d w i t h t h v a r i a b l e a d d r e s s o t h s t a c k . I t h e y a r t h s a m e o t h e r e i n v a r i a b l e n a m eg i v e n , t h v a r i a b l e v a l u e i p l a c e d i t h F A a n t h S T E Pv a l u e f r o m t h s t a c k i a d d e d . T h i s v a l u e i s a v e d a s t h e

1 5

Page 157: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 157/224

A d v a n c e d M a c h i n e L a n g u a g e

n e v a r i a b l e v a l u e a n d c a n b c o m p a r e d w i t h t h e n v a l u e o t h s t a c k . T h s i g n o t h e S T E P v a l u e c a d e t e r m i n e w h e t h e rt h l o o p w i l l b e n d e d o n o t . I f t h l o o p c a n b e e n d e d ,t h s t a c k p o i n t e r i i n c r e m e n t e d b 1 i o r d e r t r e m o v et h p a r a m e t e r s f r o m t h s t a c k a n d j u m p m a d e t t h e i n t e rp r e t e r l o o p w h e r e t h e n e x t s t a t e m e n t c a n b e e x e c u t e d . I f o t h o t h e r h a n d , t h e n v a l u e w a n o r e a c h e d , t h l i n en u m b e r a n p r o g r a m c o u n t e r a r t a k e n f r o m t h s t a c k . T h s t a c k p o i n t e r r e m a i n s u n c h a n g e d h o w e v e r , s t h a t t h d a t ar e m a i n f o r t h e n e x t N E X T c o m m a n d .

I v a r i a b l e n a m e w h o s e a d d r e s s i n o s a v e d o t h s t a c k f o l l o w s t h N E X T c o m m a n d , t h s t a c k p o i n t e r i i n r e m e n t e d b 1 t s e i a n o t h e r F O R - N E X T d a t a s e i p r s e n t o t h s t a c k . T h i s a u t o m a t i c a l l y t a k e s c a r e o n e s t e dl o o p s .

W i t h t h i s k n o w l e d g e w c a a d n e w s t r u c t u r e t B A S I C . I y o u h a v e d o n e a n y p r o g r a m m i n g i P a s c a l , y o a r p r o b a b l y a c q u a i n t e d w i t h t h R E P E A T . . . U N T I L l o o p . T h i s i p r o g r a m s t r u c t u r e w h i c h r u n s u n t i l t h e n c r i t e r i u m i m e t .F o e x a m p l e

R E P E A T

U N T I L 1 = 1 0

H e r e t h l o o p i e x e c u t e d u n t i l t h e n d c o n d i t i o n o 1 = 1 0 i f u l f i l l e d . T h i s s t r u c t u r e c a b u s e d f o v a r i e t yo p u r p o s e s . A w i t h t h F O R - N E X T l o o p , t h c o n t e n t s o t h l o o p a r e e x e c u t e d a l e a s t o n c e . W a i t i n g f o k e p r e s s c a a l s o b a c c o m p l i s h e d w i t h t h i s l o o p .

1 5

Page 158: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 158/224

A d v a n c e d M a c h i n e L a n g u a g e

R E P E A T G E A U N T I L A $ < > " "

o s i m p l e r

R E P E A T U N T I L P E E K ( 1 9 7 ) < > 6 4

H e r e t h c o m p u t e r w a i t s u n t i l t h m e m o r y l o c a t i o n 1 9 c o t a i n s v a l u e o t h e r t h a n 6 4 i n d i c a t i n g t h a t k e w a p r e s s e d .

T h f o l l o w i n g m a c h i n e l a n g u a g e p r o g r a m i m p l e m e n t s t h i ss t r u c t u r e i B A S I C .

1 0 0 :1 2 0 :1 3 0 :1 4 0 :

1 5 0 :

1 6 0 :1 7 0 :1 8 0 :

1 9 0 :

0 3 3 C

0 3 0 8

A 7 E 70 0 2 2

0 0 3 9

2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :

2 5 0 :2 6 0 :

0 0 7 30 0 7 90 0 7 A0 1 0 0A 4 4 5

A 3 F B

. O P T P

; R B P E A T - U N T I L L O O P

C O M M A N D

C M D . O L DA D D R

L I N E N O

C H R G E TC H R G O TT X T P T RS T A C KE R R O R

T E S T S T A C K =

$ 3 0 8 ; E X E C U T E V E C T O RF O C O M M A N D

$ A 7 E 7 ; O L D R O U T I N E$ 2 ; A D D R E S S F O

E R R O R M E S S A G E$ 3 ; A C T U A L L I N E

N U M B E R$ 7 C H R G E T + 6C H R G O T + 1$ 1 0 0 ; P R O C E S S O R S T A C K$ A 4 4 5 ; O U T P U T E R R O R

M E S S A G E

$ A 3 F B ; T E S T F O R S P A C E

1 5

Page 159: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 159/224

2 7 0 : A D 8 A F R M N U M

A d v a n c e d M a c h i n e L a n g u a g e

I S T A C K$ A D 8 A J G E T N U M E R I C A L

E X P R E S S I O N2 8 0 :2 9 0 :3 0 0 :

3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :

3 6 0 :3 7 0 :3 8 0 :3 9 0 :

4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :

4 5 0 :4 6 0 :4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :

A 7 A EA F 0 8A 9 0 6

0 3 3 C0 3 3 C0 3 3 E0 3 4 0

0 3 4 30 3 4 6

0 3 4 7

0 3 4 A0 3 4 C

0 3 4 E0 3 5 1

0 3 5 40 3 5 70 3 5 90 3 5 B0 3 5 D0 3 5 F

A A 8

8 6

2

C F

2 4

2 C F C F 4

4 0 0

0

7

2 0

7 E

7 5 0 5 2 0

I N T E KS Y N T A XN E X T S T A T

I N I T

0

0

0 T E S T

0 A

0 N E W C M D

A S Y N E R R

* L D L D S T

S T R T

J S

C M B E

J S J M

J S C M B E C M B E J M

$ A f A C$ A F 0 8$ A 9 0 6

8 2 # < T E S T# > T E S TC O M M A N D

; S Y N T A X E R R O R; S E A R C H F O N E X T

S T A T E M E N T

; V E C T O R T N E R O U T I N E

C O M M A N D * 1

C H R G E T

# N E W C M D

C H R G O TC M D . O L D

C H R G E T# " R "R E P E A T# f t U "U N T I LS Y N T A X

; G E T N E X T C H A RA C T E R

; N E W C O M M A N D ?

; R E P L A C E F L A G S; A N D E X E C U T E O L

C O M M A N D S

; N E X T C H A R A C T E R; R E P E A T C O M M A N D

; U N T I L C O M M A N D

; O T H E R W I S E S Y N T A XE R R O R

5 2 0 :

1 5

Page 160: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 160/224

A d v a n c e d M a c h i n e L a n g u a g e

5 3 0 : 0 3 6 2 2 0 7 3 0 0 R E P E A T

5 4 0 : 0 3 6 5 A 0 5 5 0 : 0 3 6 7 2 0 F B A

5 6 0 : 0 3 6 A 2 0 6 A 9

5 7 0 :5 8 0 :

5 9 0 :6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :6 5 0 :6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :

7 1 0 :7 2 0 :

7 3 0 :7 4 0 :

7 5 0 :7 6 0 :

0 3 6 D0 3 6 E

0 3 6 F0 3 7 10 3 7 20 3 7 40 3 7 60 3 7 70 3 7 90 3 7 A0 3 7 C0 3 7 D0 3 7 F0 3 8 0

0 3 8 3

0 3 8 60 3 8 8

0 3 8 B0 3 8 C

1 9

6 4 A 6 4 A 4 A 4 A 4 4

2

F 2

A B

7

7 0

3

3

5

A E A 7

7 0

D 8 A

7 7 0 : 0 3 8 D B 0 0

J S

L D J S

J S

C L T Y

A D P H L D A D P H L D P H L D P H L D P H J M

J S

B E J S

T A T S

L D

C H R G E T

# T E S T S T A C K

N E X T S T A T

T X T P T R

T X T P T R + 1#

L I N E N O

L I N E N O + 1

# " R "

I N T E R

C H R G E T

S Y N E R RF R M N U M

S T A C K + l . X

P O I N T E R T N E X TC H A R A C T E R

; E N O U G H S P A C EI S T A C K ?

; S E A R C H F O RN E X T S T A T E M E N T

O F F S E T T N E X TC O M M A N DA D A N O N T O S T A C K

L I N E N U M B E RO N S T A C K

A N R E P E A T C O D EO S T A C KT I N T E R P R E T E RL O O P

C O N D I T I O NF O L L O W S ?N T H E N E R R O RE V A L U A T E C O N D IT I O NS A V E R E S U L TS T A C K P O I N T E RT

; L A S T S T A C K

1 5

Page 161: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 161/224

A d v a n c e d M a c h i n e L a n g u a g e

7 8 0 : 0 3 9 0 C 5

0 3 9 2 D O 2 37 9 0 :

8 0 0 :8 1 0 :

8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :8 7 0 :8 8 0 :

8 9 0 :9 0 0 :9 1 0 :

9 2 0 :9 3 0 :9 4 0 :9 5 0 :9 6 0 :9 7 0 :9 8 0 :

9 9 0 :1 0 0 0 :1 0 1 0 :

0 3 9 4 9 0 3 9 5 D 1

0 3 9 7 B D 0 2 0 0 3 9 A 8 3 0 3 9 C B D 0 3 0 0 3 9 F 8 3 0 3 A 1 B 0 0 0 3 A 4 8 5 7 B

0 3 A 6 B 0 0 0 3 A 9 8 7 0 3 A B 4 A E A 7

0 3 A E 8 0 3 A F 1 0 3 B 0 6 0 0 3 B 2 A 0 3 B 3 9 0 3 B 4 4 C A E A

E N T R YC M # f f R " ; A N D T E S T F O

R E P E A T C O D EB N R P T E R R ; N O , T H E N E R R O R

M E S S A G ET Y B N R P T E N D E ; E X P R E S S I O N T R U E ,

E N D L O O P

L D S T A C K + 2 , XS T L I N E N O + 1 ; G E T L I N E N U M B E RL D S T A C K + 3 , XS T L I N E N OL D S T A C K + 4 , XS T T X T P T R + 1 ; A N D P R O G R A M

P O I N T E RL D S T A C K + 5 , X ; F R O M S T A C KS T T X T P T RJ M I N T E R ; T I N T E R P R E T E R

L O O P

R P T E N D E T X C L A D # T A T X J M I N T E R

; S T A C K P O I N T E R

; I N C R E M E N T B

; A N D T O I N T E RP R E T E R L O O P

0 3 B 7 A C 0 3 B 9 8 5 2 2

R P T E R R

1 0 2 0 : 0 3 B B A 9 0 3

L D # < T E X TS T A D D R ; S E T P O I N T E R T

E R R O R M E S S A G EL D # > T E X T

1 5

Page 162: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 162/224

A d v a n c e d M a c h i n e L a n g u a g e

1 0 3 0 : 0 3 B D 4 4 A J M E R R O R1 0 4 0 :1 0 5 0 : 0 3 C 0 5 4 E 5 4 T E X T . A S C " U N T I L W I T H O U T R E P E A T "] 0 3 3 C - 0 3 D 4

N E R R O R S

N o l e t ' s s e e h o o u n e c o m m a n d s a r u s e d . F o t h s a k e o s i m p l i c i t y w h a v e d e s i g n a t e d o u n e c o m m a n d s w i t h

p r e f i x e d e x c l a m a t i o n p o i n t " ! a n a n " R " f o R E P E A T a n " U f o r U N T I L . W h e n y o h a v e t h a s s e m b l y l a n g u a g e p r o g r a ma s s e m b l e d a n a c t i v a t e d w i t h S Y 8 2 8 , y o c a t r i o u w i t h t h f o l l o w i n g p r o g r a m :

1 0 1 = 1 1 ! 1 2 1 = 1 + 1 P R I N T1 3 ! 1 = 1 0

T h p r o g r a m p r i n t s t h n u m b e r s f r o m t 1 0 N e s t e d l o o p sa r a l s o p o s s i b l e .

1 0 0 1 = 01 1 ! 1 2 1 = 1 + 1 P R I N T " I = " J = 1 3 ! 1 4 J = J + 1 P R I N T " J = "1 5 ! J = 1 6 ! 1 =

I t h e s e n e s t e d l o o p s t h c o u n t e r r u n s f r o m t a n t h c o u n t e r i t h i n n e r l o o p a l s o f r o m t 3 T h a b o v e p r o b l e m c o u l d b s o l v e d m o r e s i m p l y w i t h t w n e s t e dF O R - N E X T l o o p s . T h m a i n a p p l i c a t i o n s a r e a o t h R E P E A T

1 5

Page 163: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 163/224

A d v a n c e d M a c h i n e L a n g u a g e

t h r o u g h t h e l o o p i n o k n o w n w h e n t h e l o o p s t a r t e d , b u tw i l l b d e t e r m i n e d d u r i n g t h l o o p . T h s t o p c r i t e r i u m m i g h tb p r e s s e d k e y , f o r e x a m p l e . T h i s p r o g r a m s t r u c t u r e i a l s o v e r y u s e f u l f o i t e r a t i o n s s u c h a c a l c u l a t i n g s q u a r er o o t u s i n g t h N e w t o n m e t h o d .

1 0 I N P U T " I N P U T " ; 1 1 X 1 2 ! 1 3 0 X 0 X 1 4 X ( X A / X 0 ) / 21 5 ! A B S ( X l - X O ) 1 E - 81 6 P R I N T " T H E R O O T I " ; X I

H e r e a a p p r o x i m a t i o n i c a l c u l a t e d u n t i l t h d i f f e r e nc b e t w e e n t w s u c c e s s i v e v a l u e s i l e s s t h a n 1 0 ^ - 8 . T r t h i s w i t h f e v a l u e s a n d c o m p a r e t h r e s u l t w i t h t h a t o t h S Q f u n c t i o n .

E n d l e s s l o o p s c a n a l s o b c o n s t r u c t e d w i t h t h i s s t r u c tu r e , b u s i n g a e n d i n g c r i t e r i u m w h i c h i n e v e r t r u e . F o re x a m p l e

1 1 ! 1 1 P R I N T T 1 2 ! 1 =

T h i s l o o p w i l l n e v e r b e x i t e d b y t h e p r o g r a m .

T h R E P E A T . . . U N T I L l o o p r u n s f a s t e r t h a n a I F . . . G O T Oc o n s t r u c t i o n b e c a u s e t h e l i n e n u m b e r t w h i c h G O T O i d i e c t e d m u s t b s e a r c h e d f o e a c h t i m e . W i t h t h U N T I L c o mm a n d , t h i s a d d r e s s n e e d s o n l y t b f e t c h e d f r o m t h e s t a c k .

1 5

Page 164: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 164/224

A d v a n c e d M a c h i n e L a n g u a g e

I a d d i t i o n , t h e p r o g r a m i e a s i e r t r e a d a n u n d e r s t a n db e c a u s e t h i n t e n t i o n s o t h p r o g r a m m e r c o m e t h r o u g h m o r ec l e a r l y .

W n o c o m e t d e s c r i p t i o n o f t h e m a c h i n e l a n g u a g ep r o g r a m . W p r o c e e d i m u c h t h s a m e m a n n e r a t h o t h e rp r o g r a m s s t r u c t u r e s d i s c u s s e d e a r l i e r . A f t e r t h u s u a l i n i ti a l i z a t i o n i w h i c h t h v e c t o r f o c o m m a n d e v a l u a t i o n i c h a n g e d t p o i n t t o u r r o u t i n e , w e f i r s t t e s t t s e i n e c o m m a n d w a u s e d . I n e x c l a m a t i o n p o i n t w a s f o u n d ,c o n t r o l i r e t u r n e d t t h o r i g i n a l c o m m a n d e v a l u a t i o n r o t i n e . O t h e r w i s e t h e n e x t c h a r a c t e r i f e t c h e d a n c h e c k e d t s e i i t i s t f U " o r " R " . T h r o u t i n e s R E P E A T a n U N T I L a r b r a n c h e d t a c c o r d i n g l y . I n e i t h e r o t h e s e t w c h a r a c t e r sw e r e r e a d , w j u m p t t h e r r o r m e s s a g e " S Y N T A X E R R O R . "

F o t h R E P E A T c o m m a n d w e s e t t h p r o g r a m p o i n t e r t t h e n e x t c h a r a c t e r b c a l l t C H R G E T a n d c h e c k t s e e t h a te n o u g h s p a c e i l e f t o n t h e s t a c k . W e u s e t h r o u t i n eN E X T S T A T t s e a r c h f o r t h e n e x t c o m m a n d , t h r e l a t i v e a d r e s s o w h i c h w g e b a c k i t h r e g i s t e r . W e a d d t h i sv a l u e t t h p r o g r a m c o u n t e r a n p l a c e i o t h e s t a c k . T h l i n e n u m b e r i a l s o p l a c e d o t h e s t a c k . T d e n o t e t h d a t as e a R E P E A T c o m m a n d , w e a l s o p u s h t h l e t t e r " R o t h s t a c k . T h d a t a s e i t h s t a c k i c o n s t r u c t e d a c c o r d i n g t t h G O S U B c o m m a n d . T h w o r k i n o d o n e a n d w e r e t u r n t t h i n t e r p r e t e r l o o p .

T h U N T I L c o m m a n d c h e c k s t s e e t h a t c o n d i t i o n f o l o w s a n e v a l u a t e s i t T h r e s u l t i s a v e d i t h r e g i st e r . N o w e l o a d t h e r e g i s t e r w i t h t h s t a c k p o i n t e r a n c o m p a r e t h t o s t a c k e l e m e n t w i t h " R " , t h d e s i g n a t o r f o R E P E A T . I t h i s e l e m e n t w a n o a R w e o u t p u t t h m e s s a g e

1 5

Page 165: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 165/224

A d v a n c e d M a c h i n e L a n g u a g e

" U N T I L W I T H O U T R E P E A T . " N o t e t h a t t h e l a s t c h a r a c t e r o t h e r r o r m e s s a g e m u s t b s h i f t e d ( b i t s e t ) . T h i s i h o t h e r r o r m e s s a g e o u t p u t r o u t i n e d e t e r m i n e s t h e e n d o f t h m e s s a g e . I w d i d f i n d a R t h n e x t a c t i o n i d e p e n d e n to t h r e s u l t o f t h e c o n d i t i o n . I t h c o n d i t i o n w a n o m e t , w l o a d t h e p r o g r a m p o i n t e r a n l i n e n u m b e r f r o m t h es t a c k a n d j u m p t t h i n t e r p r e t e r l o o p . N o t e t h a t t h d a t ai n o t a k e n f r o m t h s t a c k w i t h P L b u w i t h L D S T A C K , X ,a f t e r t h s t a c k r e g i s t e r w a f i r s t c o p i e d i n t o t h r e g i st e r . T h i s r e t a i n s t h v a l u e o f t h e s t a c k p o i n t e r a n t h d a t a r e m a i n f o r t h e n e x t U N T I L c o m m a n d . I f h o w e v e r , t h c o n d i t i o n w a s a t i s f i e d , w s i m p l y i n c r e m e n t t h s t a c kp o i n t e r b 5 T h i s h a t h e f f e c t o r e m o v i n g t h d a t a s e f r o m t h s t a c k a n d w c o n t i n u e w i t h t h n e x t c o m m a n d .

1 5

Page 166: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 166/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . U s i n g n e k e y w o r d s

T h e a s i e s t w a t a d n e w c o m m a n d s t t h B A S I C i n t e rp r e t e r i t g i v e t h c o m m a n d n a m e b w h i c h y o c a a c c e s si t I n t e r n a l l y t h i s k e y w o r d i s t o r e d i t h f o r m o t o k e n , a i n t e r p r e t e r c o d e w h i c h c a r a n g e i v a l u e f r o m $ 8 t o $ F F .

T h C o m m o d o r e 6 B A S I C u s e s t h t o k e n s f r o m $ 8 t o $ C Bf o r i t s e l f , a w e l l a $ F f o p i . I f w w a n t t a d d n e wk e y w o r d s , t h i n t e r p r e t e r c o d e s f r o m $ C ( 2 0 4 ) t o $ F ( 2 5 4 )a r a v a i l a b l e t u s W c o u l d t h e r e f o r e a d u t 5 n e c o m m a n d s . L e t u s c o n s i d e r w h a t i n e c e s s a r y i o r d e r t o d ot h i s .

F i r s t , t h e r e m u s t b r o u t i n e w h i c h c o n v e r t s l i n e o B A S I C t e x t i n t o t h n e w t o k e n s u p o n i n p u t . T h r o u t i n e f o e x e c u t i n g t h c o m m a n d s m u s t r e c o g n i z e t h n e w t o k e n a n d c a l lt h a p p r o p r i a t e r o u t i n e t e x e c u t e t h i s n e c o m m a n d . S t h a tw e c a n l i s t o u p r o g r a m , t h L I S T p r o g r a m m u s t a l s o b c h a n g e d t o u t p u t t h A S C I I f o r m o t h n e c o m m a n d s w h e n i f i n d s t h t o k e n . T h e m o s t c o n v e n i e n t w a t o d o a l t h i s i t p l a c e o u n e k e y w o r d s a n d t h e a d d r e s s e s o t h c o r r e sp o n d i n g r o u t i n e s i t a b l e , e x a c t l y a t h i n t e r p r e t e r d o e sw i t h t h s t a n d a r d c o m m a n d s .

R e c a l l f r o m o u d i s c u s s i o n a b o u t B A S I C v e c t o r s t h a tf o u r v e c t o r s a r n e c e s s a r y f o t h e s e t a s k s . W h a v e a l r e a d yu s e d t h v e c t o r s f o B A S I C c o m m a n d e x e c u t i o n ( $ 3 0 8 ) a n f u n c t i o n c a l c u l a t i o n ( $ 3 0 A ) . F o r c o n v e r t i n g k e y w o r d s i n t ot o k e n s w m u s t u s e t h e v e c t o r $ 3 0 4 . T c o n v e r t t o k e n s b a c ki n t o k e y w o r d s w i t h t h L I S T c o m m a n d w m u s t u s t h v e c t o r$ 3 0 6 .

1 6

Page 167: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 167/224

Page 168: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 168/224

A d v a n c e d M a c h i n e L a n g u a g e

2 3 0 :2 4 0 :

2 5 0 :

2 6 0 :2 7 0 :2 8 0 :

2 9 0 :3 0 0 :3 1 0 :3 2 0 :

3 3 0 :

3 4 0 :3 5 0 :

3 6 0 :3 7 0 :3 8 0 :3 9 0 :

4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :

0 0 2 20 0 0 F

0 0 7 A

0 2 0 0

A 0 9 E

A 5 7 C

A 5 7 C

A 5 7 E

A 5 8 0A 5 8 2

A 5 8 5A 5 8 7A 5 8 9A 5 8 B

A 5 8 C

A 5 8 EA 5 9 0A 5 9 2A 5 9 4A 5 9 6A 5 9 8A 5 9 A

A

A

8 B

1 C F E

D

C F 8 C F 2 7

7

0

O 0

0 F 3

F

2 3 0 2 5 O 2

Q U O T EF L A G

T X T P T R

B U F F E R

T A B L E

S T

B P C M B E I N

N O R M A L C M B E S T C M B E B I B V

$ 2 1

$ 7

$ 2 0 0

$ A 0 9 E

; F L A G F O D A T AA N R E

; P O I N T E R I L I N EB E I N G C O N V E R T E D T

; I N P U T B U F F E R

; T A B L E O F C O M M A N DW O R D S

* $ A 5 7 C ; R O M R O U T I N E

L D T X T P T R

L D #

F L A GB U F F E R , X

N O R M A L# $ F F

j P O I N T B R T F I R S TC H A R A C T E R

; P O I N T E R T L I N EC O N V E R T E D F R O M

; C L E A R F L A G; G E T C H A R A C T E R

F R O M B U F F E R

; C O D E F O ' P I 'T A K C H A R ; Y E S , T A K E I

; O T H E R W I S E I G N O R EC H A R A C T E R

B N N E X T C H A R

# ; S P A C E ?T A K C H A R ; T A K E I C H A R ; S A V E C H A R A C T E R# Q U O T E ; Q U O T E ?G E T C H A R ; Y E SF L A G ; T E S T F L A GT A K C H A R ; T A K E A D A T A

1 6

Page 169: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 169/224

A d v a n c e d M a c h i n e L a n g u a g e

4 9 0 :5 0 0 :5 1 0 :

5 2 0 :5 3 0 :5 4 0 :5 5 0 :5 6 0 :

5 7 0 :

5 8 0 :5 9 0 :

6 0 0 :6 1 0 :6 2 0 :6 3 0 :6 4 0 :

6 5 0 :

6 6 0 :

6 7 0 :6 8 0 :

6 9 0 :

7 0 0 :7 1 0 :

A 5 9 C C 3 A 5 9 E D O 0 4A 5 A 0 A 9 9 9

A 5 A 2 D 2 A 5 A 4 C 3 A 5 A 6 9 0 A 5 A 8 C 3 A 5 A A 9 I

A 5 A C 8 7

A 5 A E A 0 A 5 B 0 8 4 O B

A 5 B 2 8 A 5 B 3 8 7 A 5 B 5 C A

A 5 B 6 C

A 5 B 7 E

S K I P

S K I P 1

C M B N L D

B N C M B C C M B C

S T

L D S T

S K I P♦ P R I N T

T A K C H A R# M 0 "S K I P 1

T A K C H A R

P N

# C O U N T

M O D E; Q U E S T I O N M A R K

; R E P L A C E W I T HP R I N T C O D E

; L E S S T H A N ' 0

; L E S S T H A N • < ' ?; Y E S , T A K E C H A R

A C T E R; S A V E P O I N T E R I

L I N E

; C O U N T E R F O C O M A N D W O R D S T Z E R O

D E S T D E

T X T P T R ; S A V E L I N E P O I N T E R

C M P L O O P I N

I N

; P O I N T E R I C O M A N D T A B L E

; A N D I N C R E M E N TL I N E P O I N T E R

A 5 B 8 B D 0 0 0 2 T E S T N E X T L D B U F F E R , X ; G E T C H A R A C T E RF R O M B U F F E R

A 5 B B 3 S E A 5 B C F 9 A O S B C T A B L E , Y ; C O M P A R E W I T H

C O M M A N D W O R DA 5 B F F O F 5 B E C M P L O O P ; S A M E , T H E N N E X T

C H A R A C T E RA 5 C 1 C 8 C M # $ 8 0 ; L A S T L E T T E R ?A 5 C 3 F 3 B E N E X T C M D ; O T H E R W I S E P O I N T -

1 6

Page 170: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 170/224

A d v a n c e d M a c h i n e L a n g u a g e

7 2 0 :7 2 5 :7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :

7 8 0 :7 9 0 :8 0 0 :8 1 0 :8 2 0 :

8 3 0 :8 4 0 :

8 5 0 :8 6 0 :8 7 0 :

8 8 0 :

8 9 0 :9 0 0 :

9 1 0 :

9 2 0 :9 3 0 :9 4 0 :

A 5 C 5A 5 C 7

A 5 C 9A 5 C AA 5 C BA 5 C E

A 5 D 1A 5 D 3A 5 D 4A 5 D 6A 5 D 8

A 5 D AA 5 D C

A 5 D EA 5 D FA 5 E 1

A 5 E 3

A 5 E 5A 5 E 8

A 5 E A

A 5 E CA 5 E EA 5 E F

0 A

E C 9 B

F 3 E F C

D 8

3 E D

8

B F

C

F C 9

O 7

F F

3

3 0 4

0 O

5 9

0

0 D

0

D

F

T A K C H A R 1

T A K C H A R

0 0

S K I P 2

S K I P 3

0 R E M L O O P

G E T C H A R0

O R L D

I N I N S T L D

B E S E S B B E C M

B N S T

S E S B B N

S T

L D B E

C M

B E I N S T

E T N E X T C O M M A N DC O U N TP N

B U F F E R - 5B U F F E R - 5

E N

# S K I P 2# D A T A - " :

S K I P 3F L A G

# R E M - " : "N E X T C H A R

C H A R

B U F F E R , XT A K C H A R

C H A R

T A K C H A R

B U F F E R - 5

; F O U N D # + $ 8 0 = I N T E R; G E T P O I N T E R B A C K

, ; S A V E C O D E, ; R E S T O R E

F L A G S; L I N E E N D ?

J S E P A R A T O R ?; C L E A R D A T A F L A G

; C O D E F O R' D A T A '

; S E T B I F O ' D A T A '

; C O D E F O ' R E M '; N O , G E T N E X T

C H A R A C T E R; S A V E Z E R O B Y T E

F O ' R E M '

; L I N E E N D , T A K EC H A R A C T E R

; N E X T ' " O R R E MO D A T A

Y E S ?

. : T A K E C H A R -A C T E R

1 6

Page 171: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 171/224

A d v a n c e d M a c h i n e L a n g u a g e

9 5 0 :9 6 0 :9 7 0 :9 8 0 :

9 9 0 :

A 5 F 2A 5 F 3

A 5 F 5

A 5 F 7

E D

A

E

F

7

O

I N B N

I N

1 0 0 0 : A 5 F 9 C C O N T I N U E I N 1 0 1 0 : A 5 F A B 9 A I D 1 0 2 0 : A 5 F D 1 F B P 1 0 3 0 : A 5 F F B 9 A L D 1 0 4 0 : A 6 0 2 D B B N

1 0 5 0 :1 0 6 0 : A 6 0 4 B D 0 0 0 21 0 7 0 : A 6 0 7 1 B

1 0 8 0 :1 0 9 0 : A 6 0 9 9 9 F C 0 1 E N

1 1 0 0 :1 1 1 0 : A 6 0 C C 7 1 1 2 0 : A 6 0 E A 9 F F

1 1 3 0 : A 6 1 0 8 7 1 1 4 0 : A 6 1 2 6 ] A 5 7 C - A 6 1 3

N E R R O R S

L D B P

R E M L O O P

T X T P T R ; L I N E P O I N T E R T S T A R T O W O R D

C O U N T ; C O U N T E R T N E X TC O M M A N D W O R D

T A B L E - 1 , YC O N T I N U E ; W O R D N O T D O N E !T A B L E , YT E S T N E X T ; T E S T F O N E X T

C O M M A N D W O R D

B U F F E R , XT A K C H A R 1 ; T A K E C H A R A C T E R

A S U C H

S T

D E L D

S T R T

B U F F E R - 4

T X T P T R + 1# $ F F

T X T P T R

, ; E N D B U F F E RW I T H Z E R O

; T X T P T R T $ 0 1 F F ,B U F F E R - 1

W h e n l i n e o f B A S I C t e x t i t b c o n v e r t e d t t o k e n s ,i m u s t b p l a c e d i n t o t h B A S I C i n p u t b u f f e r l o c a t e d a $ 2 0 0 t $ 2 5 8 . T h p o i n t e r T X T P T R ( $ 7 A / $ 7 B ) m u s t p o i n t t t h f i r s t c h a r a c t e r f o l l o w i n g t h l i n e n u m b e r . T h r e g i s t e r i

1 6

Page 172: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 172/224

A d v a n c e d M a c h i n e L a n g u a g e

l o a d e d w i t h t h i s p o i n t e r . T h r e g i s t e r s e r v e s t h r o u g h o u tt h e n t i r e r o u t i n e a p o i n t e r t t h t e x t t b c o n v e r t e d .T h r e g i s t e r i u s e d a p o i n t e r i t h c o n v e r t e d l i n e .A f t e r t h F L A G i c l e a r e d , t h f i r s t c h a r a c t e r o t h l i n ei e x a m i n e d . I t h A S C I I v a l u e o f t h i s c h a r a c t e r i g r e a t e rt h a n $ 7 F , i t i s c h e c k e d f o r t h e c o d e 2 5 5 f o r p i I t h i st e s t w a s p o s i t i v e , t h c h a r a c t e r i a c c e p t e d a s u c h . A l o t h e r c h a r a c t e r s w i t h b i s e a r i g n o r e d ; t h p o i n t e r i i n c r e m e n t e d a n t h n e x t c h a r a c t e r i t e s t e d . I t h c h a ra c t e r i n o r m a l u n s h i f t e d c h a r a c t e r , i i c h e c k e d f o s p e c i a l c h a r a c t e r . s p a c e i a c c e p t e d u n c h a n g e d . O t h e r w i s et h c u r r e n t c h a r a c t e r i s a v e d i C H A R . I t h c h a r a c t e r i

q u o t a t i o n m a r k ( " ) , b r a n c h i m a d e t 6 E T C H A R w h e r ec h a r a c t e r s a r e r e a d u n t i l a n o t h e r q u o t a t i o n m a r k i e n c o u n te r e d . D A T A s t a t e m e n t i r e c o g n i z e d b c h e c k i n g F L A G . I D A T A c o m m a n d i a c t i v e , t e x t i a c c e p t e d u n c h a n g e d . T h e c o d et f ? " i n e x t r e p l a c e d w i t h " P R I N T " . A f t e r t h d i g i t s a n d t h c h a r a c t e r s " ; a n " : a r f i l t e r e d o u a n a c c e p t e d u c h a n g e d , c o m e s t h a c t u a l c o n v e r s i o n t t o k e n s .

T h p o i n t e r i t h l i n e b e i n g c o n v e r t e d ( r e g i s t e r ) i s t o r e d i P N T a n d t h e c o u n t e r f o t h t o k e n n u m b e r o t h k e y w o r d i i n i t i a l i z e d . T h c o m p a r i s o n i e x e c u t e d a t h l a b e l C M P L O O P . T h c u r r e n t c h a r a c t e r i t h b u f f e r i c o p a r e d t t h f i r s t l e t t e r i t h k e y w o r d t a b l e . I t h c h a r a c t e r s a r e e q u a l , t h e n e x t c h a r a c t e r i c o m p a r e d t t h s e c o n d l e t t e r . I t h e s e a r e q u a l , t h d i f f e r e n c e i c h e c k e dt s e i i t i s $ 8 0 . T h i s v a l u e d e n o t e s t h c h a r a c t e r a t h l a s t c h a r a c t e r o c o m m a n d i t h k e y w o r d t a b l e b e c a u s e i i s t o r e d w i t h b i s e t . I t h i s i t r u e , t h e a c c u m u l a t o rc o n t a i n s t h d i f f e r e n c e $ 8 0 . B l o g i c a l O R i n g w i t h t h c o m m a n d n u m b e r C O U N T y o g e t t h e t o k e n n u m b e r , w h i c h i t h e ns a v e d . I t h c h a r a c t e r s w e r e n o e q u a l , h o w e v e r , t h s t a r t

1 6

Page 173: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 173/224

A d v a n c e d M a c h i n e L a n g u a g e

o f t h e n e x t k e y w o r d i f o u n d b N E X T C M D a n t h c o u n t e r f o t h n u m b e r o k e y w o r d s i i n c r e m e n t e d b y o n e . I f w e a r e n o a t h e e n d o f t h e t a b l e , b r a n c h i m a d e b a c k t t h c o m p a r e l o o p w h e r e t h n e x t w o r d f r o m t h t a b l e i c o m p a r e d .I t h e n o f t h e t a b l e w a s f o u n d ( d e n o t e d b y z e r o b y t e ) ,t h c u r r e n t c h a r a c t e r i a c c e p t e d u n c h a n g e d .

A f t e r e i t h e r t h t o k e n o t h u n c h a n g e d c h a r a c t e r i s t o r e d b t h r o u t i n e a l a b e l T A K C H A R , t h s p e c i a l c h a ra c t e r s a r e h a n d l e d . I t h c o l o n i f o u n d , F L A G i c l e a r e ds t h a t i c a b e b e s e a g a i n b y a n o t h e r D A T A s t a t e m e n t . I t h R E c o m m a n d w a f o u n d , t h e c u r r e n t c h a r a c t e r i s a v e d a

z e r o a n d a l o t h c h a r a c t e r s u t z e r o ( e n d o f l i n e )a r a c c e p t e d u n c h a n g e d b R E M L O O P . A t h e n o t h e r o ut i n e ( l a b e l E N D ) , t h e c o n v e r t e d b u f f e r i t e r m i n a t e d w i t hz e r o a n T X T P T R s e t o n c h a r a c t e r b e f o r e t h b u f f e r .

I w e n o w w a n t t c o n v e r t o u r o w n k e y w o r d s t t o k e n s ,w e m u s t e n s u r e t h a t t h t a b l e c o n t a i n i n g o u r o w n c o m m a n d s i s e a r c h e d a f t e r t h c o m m a n d t a b l e i R O M . I a d d i t i o n w m u s td e t e r m i n e w h i c h t o k e n s w w a n t t u s f o t h n e w k e y w o r d s .T h t o k e n s s t a r t i n g a $ C s h o u l d b u s e d s i n c e t h e y f o l l o wt h e x i s t i n g c o m m a n d s d i r e c t l y .

. O P T P

; R O U T I N E F O U S I N G C U S T O M T O K E N S

; S P E C I A L T O K E N S

D A T A $ 8 R E $ 8 P R I N T $ 9

1 6

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :

c o o o

0 0 8 30 0 8 F0 0 9 9

Page 174: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 174/224

A d v a n c e d M a c h i n e L a n g u a g e

1 9 0 :2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :

2 9 0 :3 0 0 :3 1 0 :3 2 0 :

3 3 0 :

3 4 0 :

0 0 0 80 0 0 B0 0 7 10 0 2 20 0 0 F0 0 7 A0 2 0 0

A 0 9 E

c o o o

C 0 0 0 A 7

C 0 0 2 A 0

C 0 0 4 8 4 O F

3 5 0 :

C H A RC O U N TP N Q U O T EF L A GT X T P T RB U F F E R

T A B L E

1 $ 7 $ 2 1 $ 7 $ 2 0 0 ; I N P U T B U F F E R

C 0 0 6 B D 0 0 0

3 6 0 :3 7 0 :3 8 0 :

3 9 0 :

4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :

C 0 0 9C 0 0 BC O O D

C O O F

C 0 1 0

C 0 1 2C 0 1 4C 0 1 6

1 C F

E

D

C F 8

0 F 3

F

2 3 0

$ A 0 9 E ; T A B L E O F C O M M A N DW O R D S

* $ C 0 0 0 ; N E W R O U T I N E

L D T X T P T R ; P O I N T E R T F I R S TC H A R A C T E R

L D # ; P O I N T E R W I T H I NL I N E B E I N G C O N V E R T E D

S T F L A G ; F L A G F O R S P E C I A LC H A R A C T E R S

N E X T C H A R L D B U F F E R , X ; G E T C H A R A C T E RF R O M B U F F E R

B P N O R M A LC M # $ F F ; C O D E F O ' P I ' ?B E T A K C H A R ; Y E S , T A K E C O D E

A S U C HI N ; O T H E R W I S E I G N O R E

C H A R A C T E RB N N E X T C H A R

N O R M A L C M P # ; S P A C E ?B E T A K C H A R ; T A K E A S U C HS T C H A R ; S A V E C H A R A C T E R

1 6

Page 175: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 175/224

A d v a n c e d M a c h i n e L a n g u a g e

C M B E B I B V

C M B N L D

B N C M B C C M B C

S T L D S T

D E S T D E

♦ Q U O T EG E T C H A RF L A GT A K C H A R

# « ? «

S K I P♦ P R I N T

T A K C H A R# " 0 "S K I P 1

T A K C H A R

P N # C O U N T

T X T P T R

; Q U O T E ?

; D A T A M O D E ?; Y E S , T A K E A

S U C H; Q U E S T I O N M A R K ?

; R E P L A C E W I T HP R I N T C O D E

; S M A L L E R T H A N ' 0 1 ?

; L E S S T H A N ' < * ?; Y E S , T A K E C H A R

A C T E R A S U C H; S A V E L I N E P O I N T E R

; C O U N T E R F O C O M A N D W O R D S T

4 5 0 : C 0 1 8 C 2 4 6 0 : C 0 1 A F 5 4 7 0 : C 0 1 C 2 O 4 8 0 : C 0 1 E 7 0 2 D

4 9 0 : C 0 2 0 C 3 5 0 0 : C 0 2 2 D O 0 45 1 0 : C 0 2 4 A 9

5 2 0 : C 0 2 6 D O 2 55 3 0 : C 0 2 8 C 3 S K I P5 4 0 : C 0 2 A 9 0 5 5 0 : C 0 2 C C 3 5 6 0 : C 0 2 E 9 I

5 7 0 : C 0 3 0 8 7 S K I P 15 8 0 : C 0 3 2 A O 0 05 9 0 : C 0 3 4 8 O

6 0 0 : C 0 3 6 8 6 1 0 : C 0 3 7 8 7 6 2 0 : C 0 3 9 C 6 3 0 :6 4 0 : C 0 3 A C C M P L O O P I N 6 5 0 : C 0 3 B E 8 I N X ; I N C R E M E N T P O I N T E R6 6 0 : C 0 3 C B 0 0 T E S T N E X T L D B U F F E R , X ; G E T C H A R A C T E R

F R O M B U F F E R6 7 0 : C 0 3 F 3 S E 6 8 0 : C 0 4 0 F 9 9 E A O S B T A B L E , Y ; C O M P A R E W I T H

C O M M A N D W O R D S6 9 0 : C 0 4 3 F O F 5 B E C M P L O O P ; S A M E , T H E N N E X T

C H A R A C T E R

7 0 0 : C 0 4 5 C 8 C M P # $ 8 0 ; L A S T L E T T E R ?

1 6

Page 176: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 176/224

A d v a n c e d M a c h i n e L a n g u a g e

7 1 0 :

7 2 0 :

7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :7 8 0 :

7 9 0 :8 0 0 :8 1 0 :8 2 0 :8 3 0 :

8 4 0 :8 5 0 :

8 6 0 :8 7 0 :8 8 0 :

8 9 0 :9 0 0 :9 1 0 :

9 2 0 :

9 3 0 :9 4 0 :9 5 0 :

C 0 4 7

C 0 4 9

C 0 4 B

C 0 4 DC 0 4 EC 0 4 FC 0 5 2C 0 5 4C 0 5 6C 0 5 7C 0 5 9C 0 5 B

C 0 5 DC 0 5 F

C 0 6 1C 0 6 2C 0 6 4

C 0 6 6C 0 6 8C 0 6 B

C 0 6 D

C 0 6 FC 0 7 1C 0 7 2

D

0

A

E C 9 C F 3 E F C

D 8

3 E D

8 B F

C

F C 9

2

O

7

F B 0 10 3

3 0 4

0 O

5 A

0 0 0 0 2E

0

D

F B 0 1

B N

O R

T A K C H A R 1 L D

T A K C H A R I N I N S T C M R E S E S B B E C M

B N S K I P 2 S T

S K I P 3 S E S B B N

S T R E M L O O P L D

B E

C M

B E G E T C H A R I N

S T

N E X T C M D

C O U N T

P N

B U F F E R - 5# E N

# M : "S K I P 2# D A T A - t f :

S K I P 3F L A G

# R E M - " : "N E X T C H A R

C H A RB U F F E R , XT A K C H A R

C H A R

T A K C H A R

B U F F E R - 5 ,

; O T H E R W I S E P O I N TE T N E X T C O M M A N ]; # + $ 8 0 I N T E R

P R E T E R C O D E; G E T P O I N T E R B A C K

, J S A V E C O D E; G E T F L A G S B A C K; E N D O F L I N E ?

; S E P A R A T O R ?

; C O D E F O ' D A T A ' ?

; S E T B I F O ' D A T A '

; C O D E F O R ' R E M ' ?; N O , G E T N E X T

C H A R A C T E R; S A V E C H A R A C T E R

; E N D O L I N E ,T A K E A S U C H

; N E X T ' N O R R E MO D A T A

Y E

, : T A K E C H A R -A C T E R

1 7

Page 177: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 177/224

A d v a n c e d M a c h i n e L a n g u a g e

9 6 0 : C 0 7 5 E 9 7 0 : C 0 7 6 D O F 0 B N R E M L O O P9 8 0 :9 9 0 : C 0 7 8 A 6 7 A N E X T C M D L D T X T P T R1 0 0 0 : C 0 7 A E O I N C O U N T ; P O I N T E R T N E X T

C O M M A N D W O R D1 0 1 0 : C 0 7 C C C O N T I N U E I N 1 0 2 0 : C 0 7 D B 9 A I D T A B L E - 1 , Y ; N E X T L E T T E R1 0 3 0 : C 0 8 0 1 F B P C O N T I N U E ; W O R D N O D O N E ?1 0 4 0 : C 0 8 2 B 9 E A O L D T A B L E , Y1 0 5 0 : C 0 8 5 D B B N T E S T N E X T ; T E S T F O R N E X T

C O M M A N D W O R D1 0 6 0 : C 0 8 7 F O B E N E W T O K ; U S E N E W T A B L E1 0 7 0 :1 0 8 0 : C 0 8 9 B 0 0 N O T F O U N D L D B U F F E R , X1 0 9 0 : C 0 8 C 1 B B P T A K C H A R 1 ; T A K E C H A

S U C H

1 1 0 0 :1 1 1 0 : C O S E 9 F D 0 1 E N D S T A B U F F E R - 3 . Y ; L I N K B Y T EZ E R O F O D I R E C T M O D E

1 1 2 0 :1 1 3 0 : C 0 9 1 C 7 D E T X T P T R + 11 1 4 0 : C 0 9 3 A F L D # $ F F ; T X T P T R T $ 0 1 F F ,

B U F F E R - 11 1 5 0 : C 0 9 5 8 7 A S T A T X T P T R1 1 6 0 : C 0 9 7 6 R T 1 1 7 0 :1 1 8 0 : ; W O R K O N N E C O M M A N D1 1 9 0 : C 0 9 8 A 0 N E W T O K L D # ; P O I N T E R T S T A R T

O N E W T A B L E1 2 0 0 : C 0 9 A B 9 C 3 C O L D N E W T A B . Y ; G E T F I R S T C H A R

A C T E R F R O M T A B L E

1 2 1 0 : C 0 9 D D O 0 2 B N N E W T E S T

1 7

Page 178: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 178/224

A d v a n c e d M a c h i n e L a n g u a g e

1 2 2 0 :1 2 3 0 : C 0 9 F C N E W C M P1 2 4 0 : C 0 A 0 E 1 2 5 0 : C 0 A 1 B 0 0 0 2 N E W T E S T

1 2 6 0 : C 0 A 4 3 1 2 7 0 : C 0 A 5 F C 3 C O1 2 8 0 : C 0 A 8 F F 1 2 9 0 : C O A A C 8 1 3 0 0 : C O A C D 0

1 3 1 0 : C O A E 0 5 O B1 3 2 0 : C O B O D 9 1 3 3 0 :1 3 4 0 : C 0 B 2 A 6 7 1 3 5 0 : C 0 B 4 E O

I N I N L D B U F F E R , X ; C O M P A R E R O U T I N E

F O N E S E ; C O M M A N D T A B L ES B N E W T A B , YB E N E W C M PC M # $ 8 0B N N E X T N E W ; T E S T F O N E X T

C O M M A N DO R A C O U N T ; F O U N DB N T A K C H A R 1 ; A B S O L U T E J U M P

1 3 6 0 : C 0 B 6 C C O N T 11 3 7 0 : C 0 B 7 B 9 C 2 C

1 3 8 0 : C O B A 1 F 1 3 9 0 : C O B C B 9 C 3 C O1 4 0 0 : C O B F D O E O

1 4 1 0 : C 0 C 1 F C

N E X T N E W L D T X T P T RI N C O U N T ; I N C R E M E N T T O K E N

N U M B E RI N L D N E W T A B - 1 , Y ; P O I N T E R T

N E X T C O M M A N D W O R DB P C 0 N T 1L D N B W T A B . YB N N E W T E S T ; C O M P A R E T

I N P U T L I N EB E N O T F O U N D ; E N D O N E

T A B L E1 4 2 0 :1 4 3 0 : C 0 C 3 5 4 5 5 0 N E W T A B

1 4 4 0 : C 0 C 9 5 4 E 5 41 4 5 0 : C O C E 4 4 4 1 4 6 0 : C 0 D 5 0 ] C 0 0 0 - C 0 D 6

. A S C " R E P E A T " ; T A B L E O FN E C O M M A N D W O R D S

. A S C " U N T I L . ". A S C " C O M M A N D . ". B Y T ; E N D O T A B L E

1 7

Page 179: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 179/224

A d v a n c e d M a c h i n e L a n g u a g e

N E R R O R S

W i t h t h e s e r o u t i n e s w e c a c o n v e r t o u o w k e y w o r d s t t o k e n s . W h e n e n t e r i n g t h n e k e y w o r d s i t h n e t a b l e y o m u s t b e s u r e t h a t t h e l a s t c h a r a c t e r o e a c h c o m m a n d i e n t e r e d w i t h b i s e t . T h i s i d o n e b p r e s s i n g s h i f t w h e nt h e n t e r i n g t h c h a r a c t e r . I o u a s s e m b l y l i s t i n g t h i s i r e p r e s e n t e d a s a n u n d e r l i n e d c h a r a c t e r . T h n e c o m m a n d s c a a l s o b e a b b r e v i a t e d a d e s i r e d . r e P c o u l d b u s e d f o r r e p e a to r u N f o r u n t i l .

W i t h o u p r o c e d u r e y o c a a s s i g n t h n e w k e y w o r d st o k e n v a l u e f r o m $ C t o $ F E . T h i s g i v e s u s m a x i m u m o 5 n e c o m m a n d w o r d s . B e c a u s e t h i s t a b l e i i n d e x e d w i t h a 8 b i r e g i s t e r , t h t o t a l l e n g t h o t h c o m m a n d s m a n o t b el o n g e r t h a n 2 5 c h a r a c t e r s . T h e n d o f t h t a b l e m u s t b ed e n o t e d b z e r o b y t e .

I o r d e r t a c t i v a t e o u n e r o u t i n e w e m u s t s e t t h ev e c t o r $ 3 0 4 / $ 3 0 5 t o t h e r o u t i n e . B e f o r e w e d o t h i s , w f i r s tw a n t t w r i t e r o u t i n e w h i c h a l l o w s u t L I S T t h e n e wk e y w o r d s . T h B A S I C v e c t o r $ 3 0 6 / $ 3 0 7 i u s e d f o t h i s .C o n v e r t i n g t o k e n s t A S C I I t e x t t a k e s p l a c e h e r e ; t h o r g a ni z a t i o n a l w o r k s u c h a t a k i n g c a r e o t h l i n e e n d a n l i n en u m b e r s i h a n d l e d b y t h e l i s t r o u t i n e . L e t u t a k e l o o ka t h i n t e r p r e t e r L I S T r o u t i n e .

1 7

Page 180: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 180/224

Page 181: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 181/224

Page 182: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 182/224

A d v a n c e d M a c h i n e L a n g u a g e

1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :

2 0 0 :2 1 0 :2 2 0 :2 3 0 :2 4 0 :2 5 0 :2 6 0 :2 7 0 :2 8 0 :2 9 0 :3 0 0 :3 1 0 :3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :

4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :

0 0 4 9A 0 9 IA B 4 1 ?

C 0 0 G

C 0 0 2C 0 0 4C 0 0 6C 0 0 8C O O AC O O C

C O O Ec o

C 0 1 4C 0 1 5C 0 1 7C 0 1 8C 0 1 AC 0 1 CC 0 1 DC O I FC 0 2 0C 0 2 3

C 0 2 5

C 0 2 7C 0 2 8C 0 2 BC 0 2 D

1

2 3 C F

C B

4 4

3 E A 8 A C F C B 1

3

C B 3 2

O

O O F 0

C 0

2 4 A 7F A

C

4 F

0

3 C F

F

3 C 0 1 A

P N T A B L EC H A R O U T

O U

N E W L I S T

N E X T

L O O P

F O U N D

B P

B I B M C M B E C M B C

J M J M

S E S B T A S T L D D E B E I N L D B P

B M

I N L D B M J S

$ 4 $ A 0 9 E$ A B 4 7

O U

Q U O T F L GO U # $ F FO U # $ C CN E W L I S T

$ A 7 2 4$ A 6 F 3

# $ C B

P N # -

F O U N D

N E W T A B , YL O O P

N E X T

N E W T A B , YO L D E N DC H A R O U T

; C O M M A N D T A B L E; O U T P U T C H A R A C T E R

; N T O K E N , S O U T P U T; Q U O T E M O D E ?

; s o u t p u t; P I ?; S O U T P U T; N E W T O K E N ?

; Y E S

; L I S T O L D T O K E N S; O U T P U T B Y T E

; S U B T R A C T O F F S E TJ C O D E A C O U N T E R

; W O R D F O U N D ?Y E

; E X P E C T E N O W O R DN E X T W O R D

; C O M M A N D W O R DA E N D ?

O U T P U T r H A D A P T I 7 D

1 7

Page 183: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 183/224

A d v a n c e d M a c h i n e L a n g u a g e

4 6 0 : C 0 3 0 D F B N F O U N D ; A N D C O N T I N U E4 7 0 :4 8 0 : C 0 3 2 4 E A O L D E N D J M $ A 6 E F ; T O L R O U T I N E4 9 0 :5 0 0 : C 0 3 5 5 4 5 N E W T A B . A S C " R E P E A T " ; C O M M A N D

T A B L E5 1 0 : C 0 3 B 5 4 E 5 4 . A S C " U N T I L "5 2 0 : C 0 4 0 4 4 4 . A S C " C O M M A N D "5 3 0 : C 0 4 7 0 - B Y TJ C 0 0 0 - C 0 4 8N E R R O R S

W h e n w c h a n g e t h L I S T v e c t o r $ 3 0 6 - $ 3 0 7 t p o i n t t t h i s r o u t i n e , w e c a n l i s t o u r n e c o m m a n d s c o r r e c t l y . T h k e y w o r d t a b l e N E W T A B i n a t u r a l l y i d e n t i c a l t o t h e t a b l e i t h r o u t i n e f o c r e a t i n g n e t o k e n s a n d c a n b e s h a r e d . I n p r a c t i c a l a p p l i c a t i o n y o u s h o u l d a s s e m b l e t h t w r o u t i n e st o g e t h e r a n c r e a t e s i n g l e i n i t i a l i z a t i o n p r o g r a m w h i c hc h a n g e s b o t h v e c t o r s a p p r o p r i a t e l y .

W n e e d r o u t i n e s w h i c h a l l o w u s t o p r o c e s s t h n e c o m m a n d s f r o m t h B A S I C i n t e r p r e t e r w h i c h c a c a l l t h e n e wc o m m a n d s a n f u n c t i o n s . T h i s h a p p e n s , a w k n o w , b u s i n gt h v e c t o r $ 3 0 8 / $ 3 0 9 f o c o m m a n d s a n $ 3 0 A / $ 3 0 B f o r f u n ct i o n s . T o s i m p l i f y t h p r o c e s s i n g , t h n e c o m m a n d s s h o u l db a s s i g n e d t o k e n s s u c h t h a t t h e y f o r m b l o c k . T h e r o u t i n e sc a t h e n v e r i f y t h a t t h e t o k e n l i e s i t h r a n g e o n e c o m m a n d s o f u n c t i o n s . T h e t o k e n v a l u e c a b u s e d a p o i n t e r t t a b l e w h i c h c o n t a i n s t h s t a r t i n g a d d r e s s e s o t h r o u t i n e s w h i c h p e r f o r m t h n e w c o m m a n d s . T h i s i t h s a m e p r o c e d u r e w h i c h t h b u i l t - i n i n t e r p r e t e r u s e s . W n o p r e s e n t u n i v e r s a l r o u t i n e w h i c h h a n d l e s t h p r o c e s s i n g o n e w t o k e n s . Y o u n e e d o n l y e s t a b l i s h t h r a n g e o f t h e n e

1 7

Page 184: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 184/224

A d v a n c e d M a c h i n e L a n g u a g e

c o a n a n d s a n f u n c t i o n s a n d p l a c e t h s t a r t i n g a d d r e s s e s o t h c o r r e s p o n d i n g r o u t i n e s i t h e t a b l e .

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :

1 8 0 :1 9 0 :2 0 0 :2 1 0 :

2 1 5 :2 1 7 :

2 1 8 :

2 1 9 :

2 2 0 :

3 0 0 :

3 1 0 :

3 2 0 :3 3 0 :

c o o o

0 3 0 80 3 0 A

0 0 0 D

0 0 7 30 0 7 90 0 7 AA 7 E D

A 7 A EA E 8 D

A E F 1

A D 8 D

0 0 5 4

O O C C

0 0 E 0

0 0 E 1

; I N C L U D I N G

C M D V E CF U N V E C

T Y P F L A G

C H R G E TC H R G O TT X T P T RE X E C O L D

I N T E RF U N C T O L D

G E T T E R M

C H E C K N U M

J U M P

C M D S T A R T

C M D E N D

F U N S T A R T

O P P

N E W T O K E N S

$ 3 0 8$ 3 0 A

1

$ 7 C H R G E T + 6C H R G O T + 1$ A 7 E D

$ A 7 A E$ A E 8 D

$ A E F 1

$ A D 8 D

$ 5

$ C

$ E

$ E

; C O M M A N D V E C T O R; F U N C T I O N V E C T O R

J F L A G N U M E R I C /S T R I N G

; O L D C O M M A N DE X E C U T I O N

; I N T E R P R E T E R L O O P; O L D F U N C T I O N

C A L C U L A T I O N; G E T E X P R E S S I O N

I P A R E N T H E S E S; T E S T F O N U

E R I C A L R E S U L T; J U M P C O M M A N D F O

F U N C T I O N SF I R S T C O M M A N DT O K E NL A S T C O M M A N DT O K E N

F T R S T F T T M P T T n w

1 7

Page 185: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 185/224

3 4 0 : 0 0 F E F U N E N D

A d v a n c e d M a c h i n e L a n g u a g e

T O K E N$ F ; L A S T F U N C T I O N

T O K E N3 5 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :4 8 0 :4 9 0 :5 0 0 :5 1 0 :5 2 0 :5 3 0 :

5 5 0 :5 6 0 :5 7 0 :5 8 0 :

5 9 0 :6 0 0 :

6 1 0 :6 2 0 :6 3 0 :6 4 0 :6 5 0 :6 6 0 :

c o o oC 0 0 2C 0 0 4C 0 0 7

C O O AC O O CC O O Ec o C 0 1 4

C 0 1 5C 0 1 8

C O 1 B

C 0 1 EC 0 2 0C 0 2 2C 0 2 4

C 0 2 6C 0 2 9

C 0 2 CC 0 2 DC 0 2 FC 0 3 0C 0 3 1

A A 8 8

A A 8 8 6

2 2 4

C 9 C 9

2 4

3 E O A B

1 C 0 0

3 C O O

7 I A

C 0 E 0

7 E

C

6

I N I T

0 0

0 0

0 N E W C M DC A

T E S T C M D

0 O L D C M DA

O K N E W

C

L D L D S T S T

L D L D S T S T R T

J S J S J M

C M B C C M B C

J S J M

S E S B A S T A

L D

# < N E W C M D# > N E W C M DC M D V E CC M D V E C + 1

# < N E W F U N# > N E W F U NF U N V E CF U N V E C + 1

C H R G E TT E S T C M DI N T E R

C O M M A N D V E C T O R

F U N C T I O N V E C T O R

; N O T T A K E N; E X E C U T E C O M M A N D

; B A C K T I N T E RP R E T E R L O O P

# C M D S T A R TO L D C M D ; O L D C O M M A N D ?# C M D E N D + 1O K N E W

C H R G O TE X E C O L D

; E X E C U T E N E WC O M M A N D

; R E P L A C E F L A G S; A N D E X E C U T E O L

C O M M A N D

; N E W C O M M A N D S# C M D S T A R T ; S U B R A C T O F F S E

C M D T A B + ]

; T I M E S

L , ; H 1 G H B Y T E

1 7

Page 186: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 186/224

A d v a n c e d M a c h i n e L a n g u a g e

6 7 0 :

6 8 0 :6 9 0 :7 0 0 :

7 1 0 :7 2 0 :7 3 0 :7 4 0 :7 5 0 :7 6 0 :7 7 0 :7 8 0 :7 9 0 :8 0 0 :

8 1 0 :8 2 0 :8 3 0 :

8 4 0 :8 5 0 :

8 6 0 :

8 7 0 :

8 8 0 :8 9 0 :9 0 0 :9 1 0 :9 2 0 :

C 0 3 4 4

C 0 3 5 B D 6 E C OC 0 3 8 4 C 0 3 9 4 7 0

C 0 3 C A 9 0 N E W F U NC 0 3 E 8 5 O DC 0 4 0 2 7 0 C 0 4 3 C E C 0 4 5 9 0 C 0 4 7 C F C 0 4 9 9 0 C 0 4 B 2 7 0 O L D F U NC 0 4 E 4 8 A

P H

L D P H J M

C M D T A B , X

C H R G E T

; R E T U R N A D D R E S SO S T A C K

; L O W B Y T EJ G E T N E X T

C H A R A C T E R

L D # S T T Y P F L A G ; T Y P E T N U M E R I CJ S R C H R G E T ; G E T T O K E NC M # F U N S T A R TB C O L D F U N ; O L D F U N C T I O N ?C M # F U N E N D + 1B C O K 1 N E WJ S C H R G O T ; R E P L A C E F L A G SJ M P F U N C T O L D ; C A L C U L A T E O L

F U N C T I O N

C 0 5 1 3 C 0 5 2 E E

C 0 5 4 O C 0 5 5 4

C 0 5 6 2 7 0

C 0 5 9 2 F A

C 0 5 C 6 C 0 5 D A C 0 5 E B 7 C C 0 6 1 8 5 C 0 6 3 B 9 7 3 C O

O K 1 N E W S E S B

A S P H

J S

J S

P L T A L D S T

L D

; N E W F U N C T I O N# F U N S T A R T ; S U B T R A C T

O F F S E T

; S A V E P O I N T E R T T A B L E

C H R G E T ; G E T N E X TC H A R A C T E R

G E T T E R M j G E T F U N C T I O NA R G U M E N T

; P O I N T E R A I N D E XF U N T A B , Y ; L O W A D D R E S SJ U M P + 1

F U N T A B + 1 , Y ; H I G H A D D R E S S

1 8

Page 187: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 187/224

9 3 0 : C 0 6 6 8 5 9 4 0 : C 0 6 8 2 5 0 9 5 0 : C 0 6 B 4 8 D A D

9 6 0 :9 7 0 :9 8 0 : C 0 6 E

9 9 0 : C 0 6 E1 0 0 0 :1 0 1 0 : C 0 6 E

1 0 2 0 : C 0 6 E] C 0 0 0 - C 0 6 E

A d v a n c e d M a c h i n e L a n g u a g e

S T J U M P + 2J S R J U M P ; E X E C U T E F U N C T I O NJ M C H E C K N U M ; T E S T R E S U L T

F O N U M E R I C

C M D T A B . W O R C M D 1 - 1 ; T A B L E O C O M M A N DA D D R E S S E S -

. W O R C M D 2 - 1

F U N T A B . W O R F U N 1

. W O R F U N 2

; T A B L E O F F U N C T I O NA D D R E S S E S

I y o w a n t t u s e t h i s r o u t i n e , y o u n e e d o n l y p l a c et h n u m b e r s o t h f i r s t a n d l a s t n e t o k e n s i l i n e s 3 0 a n 3 1 0 a n d t h c o r r e s p o n d i n g n u m b e r s f o n u m e r i c a l f u n ct i o n s i l i n e s 3 3 0 a n 3 4 0 . t a b l e i p l a c e d a l i n e s 9 5 o n s o t h a t t h r o u t i n e k n o w s w h e r e t h n e c o m m a n d s a r l o c a t e d . T h i s t a b l e c o n t a i n s t h a d d r e s s o f t h e r o u t i n e sw h i c h e x e c u t e t h c o m m a n d s . B e c a u s e t h r o u t i n e s a r c a l l e dw i t h R T b y f i r s t p l a c i n g t h r e t u r n a d d r e s s o t h e s t a c k ,o n i s u b t r a c t e d f r o m t h a d d r e s s e s b e c a u s e t h r e t u r na d d r e s s i a u t o m a t i c a l l y i n c r e m e n t e d b y o n e b t h R T c o m m a n d . T h i s i n o n e c e s s a r y f o f u n c t i o n s w h i c h a r c a l l e d u s i n g t h n o r m a l J S R c a l l .

1 8

Page 188: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 188/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . O p e r a t i n g s y s t e m v e c t o r s

W e s h a l l r e v i e w t h i m p o r t a n t f u n c t i o n s w h i c h u s e o p e ra t i n g s y s t e m j u m p v e c t o r s t h a t c a n b e c h a n g e d . I a d d i t i o nt t h h a r d w a r e v e c t o r s I R Q , B R K , a n d N M I w h i c h w h a v ea l r e a d y l o o k e d a t w e w i l l d i s c u s s a l o t h e l e m e n t a r yi n p u t / o u t p u t f u n c t i o n s w h i c h u s t h e s e v e c t o r s . T h e s e f u n ct i o n s a r a d d r e s s e d o v e r t h k e r n a l r o u t i n e s a $ F X X X . T h ef o l l o w i n g t a b l e c o n t a i n s l i s t o f t h e s e v e c t o r s a n t h a d d r e s s e s t w h i c h t h e s e v e c t o r s p o i n t a f t e r p o w e r - u p .

V e c t o r A d d r e s s S i g n i f i c a n c e

$ 0 3 1 4 / $ 0 3 1 5 $ E A 3 1 I R v e c t o r$ 0 3 1 6 / $ 0 3 1 7 $ F E 6 6 B R v e c t o r$ 0 3 1 8 / $ 0 3 1 9 $ F E 4 7 N M v e c t o r$ 0 3 1 A / $ 0 3 1 B $ F 3 4 A O P E N v e c t o r$ 0 3 1 C / $ 0 3 1 D $ F 2 9 1 C L O S E v e c t o r$ 0 3 1 E / $ 0 3 1 F $ F 2 0 E C H K I N v e c t o r$ 0 3 2 0 / $ 0 3 2 1 $ F 2 5 0 C K O U T v e c t o r$ 0 3 2 2 / $ 0 3 2 3 $ F 3 3 3 C L R C H v e c t o r$ 0 3 2 4 / $ 0 3 2 5 $ F 1 5 7 B A S I N v e c t o r$ 0 3 2 6 / $ 0 3 2 7 $ F 1 C A B S O U T v e c t o r$ 0 3 2 8 / $ 0 3 2 9 $ F 6 E D S T O P v e c t o r$ 0 3 2 A / $ 0 3 2 B $ F 1 3 E G E T v e c t o r$ 0 3 2 C / $ 0 3 2 D $ F E 6 6 w a r m s t a r t v e c t o r ( u n u s e d )$ 0 3 2 E / $ 0 3 2 F $ F 4 A 5 L O A D v e c t o r$ 0 3 3 0 / $ 0 3 3 1 $ F 5 E D S A V E v e c t o r

W e w i l l b e c o m e a c q u a i n t e d w i t h t h s i g n i f i c a n c e o t h v e c t o r s a n d t h e f u n c t i o n s o t h r o u t i n e s t w h i c h t h e yp e r t a i n . W i t h t h i s k n o w l e d g e w c a t h e n w r i t e o u o w i n p u t / o u t p u t f u n c t i o n s .

1 8

Page 189: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 189/224

A d v a n c e d M a c h i n e L a n g u a g e

O P E N J S R $ F F C 0

T h i s r o u t i n e p e r f o r m s t h s a m e t a s k a t h B A S I C c o m a n d b t h s a m e n a m e . T h p a r a m e t e r s u s e d b y t h e q u i v a l e n tB A S I C c o m m a n d m u s t b e t a k e n c a r e o b e f o r e t h r o u t i n e i c a l l e d . T h e r e a r t w o t h e r r o u t i n e s w h i c h a r u s e d t o d ot h i s .

S K T F L S J S $ F F B A

T h i s r o u t i n e s e t s t h e p a r a m e t e r s f o t h l o g i c a l f i l en u m b e r , d e v i c e n u m b e r , a n d s e c o n d a r y a d d r e s s . T h e p a r a m e t e r sa r p a s s e d i t h p r o c e s s o r r e g i s t e r s :

L D L l o g i c a l f i l e n u m b e rL D X D N d e v i c e n u m b e rL D S s e c o n d a r y a d d r e s sJ S R S E T F L S s e p a r a m e t e r s

T h r o u t i n e S E T N A M J S $ F F B D e x i s t s f o p a s s i n g t h f i l en a m e . Y o m u s t p r o v i d e t h l e n g t h a w e l l a t h a d d r e s s o t h f i l e n a m e . I n f i l e n a m e i u s e d , t h e l e n g t h i g i v e n a z e r o .

L D # N A M E 1 - N A M E l e n g t h o t h n a m eL D # < N A M E l o b y t e o t h a d d r e s sL D # > N A M E h i g h b y t e o f t h e a d d r e s sJ S S E T N A M p a s s p a r a m e t e r s

N A M E . A S C " F I L E N A M E "N A M E 1 e n o t h n a m e

1 8

Page 190: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 190/224

A d v a n c e d M a c h i n e L a n g u a g e

O n c e t h e s e t w r o u t i n e s h a v e d o n e t h e i r w o r k , t h e O P E Nr o u t i n e c a n b e c a l l e d .

J S R O P E N

T h i s o p e n s t h l o g i c a l f i l e . T h f o l l o w i n g p r o c e d u r e p e r m i t so n t r e c o g n i z e a n y e r r o r s w h i c h m a o c c u r . T h e c a r r y f l a gi u s e d a a e r r o r f l a g . I t h f l a g i c l e a r e d a f t e r t h r o u t i n e c a l l , t h r o u t i n e w a e x e c u t e d w i t h o u t e r r o r . I f a ne r r o r d i o c c u r , h o w e v e r , t h c a r r y f l a g w i l l b s e a n t h a c c u m u l a t o r w i l l c o n t a i n t h e r r o r n u m b e r . T h e s e e r r o r n u b e r s h a v e t h f o l l o w i n g m e a n i n g s :

N o

2 4

M e a n i n gh a l t v i a S T O P k e t o m a n y f i l e sf i l e o p e nf i l e n o o p e nf i l e n o f o u n dd e v i c e n o p r e s e n tn o i n p u t f i l en o o u t p u t f i l em i s s i n g f i l e n a m ei l l e g a l d e v i c e n u m b e rR 2 3 o p e n / c l o s e

T h c a r r y f l a g s h o u l d b t e s t e d a f t e r k e r n a l r o u t i n e c a l li o r d e r t c h e c k t h e r r o r s t a t u s .

J S R O P E N o p e n f i l eB C C O K e v e r y t h i n g O K J M E R R O R

O

1 8

Page 191: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 191/224

A d v a n c e d M a c h i n e L a n g u a g e

T h e e r r o r n u m b e r s c o r r e s p o n d t o t h e e r r o r m e s s a g e sw h i c h w a r a l r e a d y a c q u a i n t e d w i t h f r o m B A S I C . n e e r r o rn u m b e r o c c u r s u p o n O P E N o C L O S E w i t h d e v i c e n u m b e r 2 t h R 2 3 i n t e r f a c e . A y o m a k n o w , t w 2 5 6 - b y t e b u f f e r s a r a l l o c a t e d w h e n a n R S 2 3 c h a n n e l i o p e n e d . T h e s e b u f f e r sa r p l a c e d a t h e t o p e n o t h B A S I C a r e a . T h i s n o r m a l l yr e s u l t s i t h e n d - o f - B A S I C b e i n g m o v e d f r o m $ A 0 0 0 t $ 9 E 0 0 .S i n c e s t r i n g s a r n o r m a l l y p l a c e d i t h i s a r e a , t h i s a r e a i n l o n g e r a v a i l a b l e . I o r d e r t i n f o r m t h B A S I C i n t e rp r e t e r o t h i s s i t u a t i o n , t h e r r o r f l a g i s e a n t h e r r o r n u m b e r 2 4 i p a s s e d . U p o n r e c e i p t o f t h i s e r r o r , t h ei n t e r p r e t e r e x e c u t e s C L c o m m a n d , t h e r e b y c l e a r i n g a l l o ft h v a r i a b l e s . T h e s e b u f f e r s a r f r e e d u p o n C L O S E i n g t h c h a n n e l a n d t h v a r i a b l e s a r a g a i n c l e a r e d . I y o u u s e t h R S - 2 3 2 i n t e r f a c e i y o u r B A S I C p r o g r a m s , t h O P E N c o m m a n ds h o u l d b e o n e o f t h e f i r s t s t a t e m e n t s i t h p r o g r a m a n t h C L O S E c o m m a n d s h o u l d b e x e c u t e d l a s t . T h i s e n s u r e s t h a t n v a r i a b l e s w i l l b l o s t d u r i n g t h c o u r s e o f t h e p r o g r a m .

A s a n a l t e r n a t i v e , y o c o u l d a l s o c h a n g e t h O P E Nr o u t i n e . Y o u c o u l d s i m p l y p l a c e t h b u f f e r s i t h a r e ab e g i n n i n g a $ C 0 0 0 w h e n o p e n i n g t h R S - 2 3 2 i n t e r f a c e . T h i sh a n e f f e c t o t h B A S I C p r o g r a m a r e a a n t h C L c o m m a n dc a b d i s p e n s e d w i t h .

T h e c a r r y f l a g i a l s o u s e d a a e r r o r f l a g f o r t h I / r o u t i n e s t h a t w i l l b e d i s c u s s e d s h o r t l y a n t h a c c u m ul a t o r a l s o c o n t a i n s t h e r r o r n u m b e r .

T h o p e r a t i n g s y s t e m e v e n h a s i t o w r o u t i n e f o o u t p u t t i n g e r r o r m e s s a g e s . T h o u t p u t a p p e a r s i t h f o r m

I / E R R O R #

1 8

Page 192: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 192/224

A d v a n c e d M a c h i n e L a n g u a g e

i w h i c h i t h e r r o r n u m b e r ( t 9 ) T h p r o g r a m i n o s t o p p e d w h e n a e r r o r i e n c o u n t e r e d . W e c a n a c t i v a t e t h e r r o r o u t p u t b y c a l l i n g t h r o u t i n e S E T M S G J S $ F F 9 0 w i t h

v a l u e o f $ 4 0 i t h a c c u m u l a t o r ( b i t s e t ) . T h e r r o rm e s s a g e s c a b t u r n e d o f f b c a l l i n g S E T M S G w i t h v a l u e o z e r o i t h a c c u m u l a t o r .

A a d d i t i o n a l f u n c t i o n o f t h e r o u t i n e S E T M S G i t d i s t i n g u i s h b e t w e e n p r o g r a m m o d e a n t h d i r e c t m o d e . B i i u s e d f o t h i s . I b i i c l e a r e d , t h e p r o g r a m m o d e i d e s i g n a t e d a n s t a t u s m e s s a g e s o t h o p e r a t i n g s y s t e m s u c ha " S E A R C H I N G F O R " , " L O A D I N G " , a n d " S A V I N G " a r s u p p r e s s e d .

C L O S E J S R $ F F C 3

T h C L O S E r o u t i n e r e q u i r e s o n l y o n p a r a m e t e r : t h l o g i c a l f i l e n u m b e r , p a s s e d i t h a c c u m u l a t o r .

L D L J S C L O S E

N e r r o r m e s s a g e s c a o c c u r w h e n u s i n g t h C L O S E c o m m a n d . A e x c e p t i o n t t h i s i t h c l o s i n g o a R S - 2 3 2 c h a n n e l . H e r e

* f h e b u f f e r i f r e e d a n d t h e B A S I C i n t e r p r e t e r e x e c u t e s C L c o m m a n d . A a t t e m p t t c l o s e a u n o p e n e d f i l e d o e s n o r e s u l t i a e r r o r m e s s a g e .

C H K I N J S R $ F F C 6

T h i s c o m m a n d s e r v e s t r e d i r e c t t h i n p u t f r o m t h k e y b o a r d t a o p e n e d f i l e . I y o u w a n t t r e a d d a t a f r o mt h d i s k e t t e , y o u m u s t f i r s t o p e n t h f i l e a n d t h e n u s e t h i s

1 8

Page 193: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 193/224

A d v a n c e d M a c h i n e L a n g u a g e

f i l e a i n p u t w i t h C H K I N . T h l o g i c a l f i l e n u m b e r m u s t b i t h r e g i s t e r f o r t h e c a l l .

L D L J S C H K I N

H e r e t o o , e r r o r s a r r e c o g n i z e d t h r o u g h t h e s e t c a r r y f l a g .I t h e f i l e w a n o p r e v i o u s l y o p e n e d , w e g e " F I L E N O TO P E N " ; i y o t r t r e a d c a s s e t t e f i l e , " N O T I N P U TF I L E " e r r o r r e s u l t s . T h a c t u a l i n p u t i p e r f o r m e d b t h r o u t i n e B A S I N , i n t r o d u c e d l a t e r .

C K O U T J S $ F F C 9

T h r o u t i n e C K O U T i t o u t p u t w h a t C H K I N i t o i n p u t .I a l l o w s t h o u t p u t t b r e d i r e c t e d t p r e v i o u s l y o p e n e df i l e . T h C K O U T r o u t i n e c o r r e s p o n d s t t h e B A S I C c o m m a n dC M D . T h l o g i c a l f i l e n u m b e r i a g a i n p a s s e d i t h r e g i st e r .

L D L J S C K O U T

T h p o s s i b l e e r r o r s c o r r e s p o n d t t h o s e f o r C H K I N . A a t e m p t t w r i t e t t a p e f i l e r e s u l t s i " N O T O U T P U T F I L E . "T h o u t p u t i p e r f o r m e d w i t h B S O U T .

B A S I N J S R $ F F C F

T h i s r o u t i n e c a n b e c o m p a r e d t t h I N P U T c o m m a n d i B A S I C . I y o h a v e n o r e d i r e c t e d t h e i n p u t w i t h C H K I N , y o uc a n g e t c h a r a c t e r s f r o m t h k e y b o a r d o f r o m t h e s c r e e n . I y o c a l l B A S I N f r o m w i t h i n m a c h i n e l a n g u a g e p r o g r a m , t h

1 8

Page 194: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 194/224

Page 195: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 195/224

A d v a n c e d M a c h i n e L a n g u a g e

r o u t e s t h o u t p u t t t h f i l e a n d a l c a l l s o B S O U T o u t p u tt h c h a r a c t e r n o t t h e s c r e e n , b u t t h a t f i l e . E r r o rm e s s a g e s s u c h a " D E V I C E N O T P R E S E N T " m a y o c c u r i t h d e v i c e o t h s e r i a l b u s d o e s n o a n s w e r .

C L R C H J S R $ F F C C

T h r o u t i n e C L R C H h a s t h e o p p o s i t e f u n c t i o n a C H K I Na n C K O U T . W h i l e t h e s e r o u t i n e s r e d i r e c t i n p u t o o u t p u t t

l o g i c a l f i l e , C L R C H r e s e t s t h s t a n d a r d I / d e v i c e s — t h ek e y b o a r d a n t h s c r e e n . I y o w a n t t g e 1 c h a r a c t e r sf r o m l o g i c a l f i l e f r o m t h e d i s k , t h a p p r o p r i a t e p r o g r a mf r a g m e n t l o o k s l i k e t h i s :

L D # l o g i c a l f i l e n u m b e rJ S C H K I N i n p u t f r o m f i l e # L D #

L O O P J S R B A S I N g e c h a r a c t e r f r o m t h e d i s kS T S T O R E , Y a n s t o r eI N C P # 1 1 c h a r a c t e r s ?B N L O O P n J S R C L R C H b a c k t s t a n d a r d i n p u t

T h l o g i c a l f i l e m u s t b o p e n e d b e f o r e u s i n g t h i sf r a g m e n t . T h i n p u t i r o u t e d f r o m t h f i l e w i t h C H K I N , t e c h a r a c t e r s a r r e a d w i t h B A S I N a n s t o r e d , a n t h s t a n d a r di n p u t i r e - e s t a b l i s h e d f r o m t h k e y b o a r d w i t h C L R C H . T h f i l e r e m a i n s o p e n ; c l o s i n g m u s t b d o n e e x p l i c i t l y w i t hC L O S E .

G E J S R $ F F E 4

1 8

Page 196: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 196/224

A d v a n c e d M a c h i n e L a n g u a g e

T h i s r o u t i n e c o r r e s p o n d s t t h G E r o u t i n e o f B A S I C .Y o u c a n g e t c h a r a c t e r f r o m t h k e y b o a r d w i t h i t I n k e i p r e s s e d a t h t i m e t h r o u t i n e i c a l l e d , z e r o i r e t u r n e d , e x a c t l y a i B A S I C w h e r e n u l l s t r i n g i r e t u r ne i n k e i p r e s s e d . l o o p t w a i t f o k e y p r e s s i c o n s t r u c t e d a f o l l o w s :

L O O P J S R G E TB E Q L O O P

T h l o o p w a i t s u n t i l k e i p r e s s e d . T h G E c o m m a n dc a a l s o b u s e d o l o g i c a l f i l e . A w i t h B A S I N , t h el o g i c a l f i l e m u s t f i r s t b e s e w i t h C H K I N . T h G E c o m m a n do f i l e w o r k s t h s a m e w a y a t h B A S I N r o u t i n e . A f t e rG E o l o g i c a l f i l e c a l l t C L R C H i n e c e s s a r y i o r d e rt r e a c t i v a t e t h s t a n d a r d i n p u t .

C L A L L J S $ F F E 7

T h i s r o u t i n e p e r f o r m s t h s a m e t a s k s a C L R C H . I a d d i t i o n , h o w e v e r , t h n u m b e r o o p e n f i l e s i s e t z e r o .T h i s h a s t h e f f e c t o c l o s i n g a l l o f t h f i l e s . T h c o r r e sp o n d i n g C L O S E r o u t i n e i n o c a l l e d . f i l e o p e n e d f o w r i t i n g o t h d i s k i n o c l o s e d p r o p e r l y . T h i s r o u t i n e i c a l l e d b t h B A S I C i n t e r p r e t e r f o e a c h R U N c o m m a n d .

L O A D - J S $ F F D 5

T h i s i t h o p e r a t i n g s y s t e m L O A D r o u t i n e . B e f o r e c a l li n t h i s r o u t i n e , t h d e v i c e n u m b e r , s e c o n d a r y a d d r e s s , a n df i l e n a m e m u s t b s e t . T h i s c a n b e d o n e w i t h t h r o u t i n e sS E T F L S a n S E T N A N w h i c h w e r e d i s c u s s e d i c o n n e c t i o n w i t ht h O P E N c o m m a n d . p r o g r a m c a n b e l o a d e d a t h a d d r e s s

1 9

Page 197: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 197/224

A d v a n c e d M a c h i n e L a n g u a g e

f r o m w h i c h i w a s s a v e d a n d w h i c h i s t o r e d i t h d i s k o d a t a s e t t e f i l e , o i c a b e l o a d e d a t a n a d d r e s s p a s s e d t t h L O A D c o m m a n d , d e p e n d i n g o t h s e c o n d a r y a d d r e s s . W i t hs e c o n d a r y a d d r e s s o z e r o , t h f i l e ( p r o g r a m ) i l o a d e d a t h a d d r e s s p a s s e d i t h ( L S B ) a n ( M S B ) r e g i s t e r s . T h c o n t e n t s o t h a c c u m u l a t o r d e t e r m i n e s i l o a d o v e r i f yi t b e x e c u t e d .

L D # f l a g f o L O A DL D # < A D D R E S S s t a r t a d d r e s sL D # > A D D R E S SJ S L O A DS T E N D A D D R e n a d d r e s s L S S T E N D A D D R + 1 M S

F o t h c a s e i w h i c h t h s e c o n d a r y a d d r e s s i z e r o ,t h p r o g r a m i l o a d e d a t h a d d r e s s g i v e n b y A D D R E S S . T h e n d i n g a d d r e s s o f t h e l o a d e d p r o g r a m i r e t u r n e d i t h a n r e g i s t e r s . I t h p r o g r a m i n o t b l o a d e d b u t o n l yc o m p a r e d w i t h t h p r o g r a m i m e m o r y ( v e r i f i e d ) , m u s t b p a s s e d i t h a c c u m u l a t o r .

L D # f l a g f o V E R I F YJ S L O A D

I t h s e c o n d a r y a d d r e s s i o n e , t h f i l e i l o a d e d a t h a d d r e s s s p e c i f i e d w i t h i n t h f i l e i t s e l f a n d w n e e d n o p a s s t h e s t a r t a d d r e s s i a n Y F o r V E R I F Y , v e r i f yf a i l u r e i d e n o t e d b s t a t u s v a l u e ( S T A T U S i l o c a t e d a a d d r e s s $ 9 0 ) o t h e r t h a n z e r o . B i ( v a l u e 6 4 m u s t b m a s k e d o u s i n c e t h i s s i g n a l s t h e n o f t h e p r o g r a m .

1 9

Page 198: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 198/224

A d v a n c e d M a c h i n e L a n g u a g e

L D S T A T U SA N # 5 1 ( 1 0 1 1 1 1 1 1 m a s k E O F B I TB E Q O KJ M P E R R O R

O

S A V E J S R $ F F D 8

W i t h t h S A V E r o u t i n e i i p o s s i b l e t s a v e s e c t i o no m e m o r y t p e r i p h e r a l d e v i c e . T h d e v i c e n u m b e r a n t h f i l e n a m e m u s t a g a i n b p r e v i o u s l y s p e c i f i e d w i t h S E T F L S a n S E T N A M . T h e r o u t i n e i t s e l f m u s t b g i v e n t h s t a r t i n g a d r e s s a n d e n d i n g a d d r e s s + 1 o t h a r e a t b s a v e d . T h e n d i n g a d d r e s s p l u s o n e m u s t b c o n t a i n e d i t h a n r e g i s t e r s . T h a c c u m u l a t o r m u s t c o n t a i n p o i n t e r t t h z e r o p a g e a d d r e s s a w h i c h t h l o a n h i g h b y t e s o t h s t a r t i n g a d d r e s s a r e s t o r e d . I f o e x a m p l e w w a n t t s a v et h a r e a f r o m $ 1 2 3 4 t $ 1 F F F , t h e c a l l l o o k s l i k e t h i s :

L D # < $ 1 2 3 4S T A S T A R TL D A # > $ 1 2 3 4S T S T A R T + 1L D # < $ 1 F F F + 1L D # > $ 1 F F F + 1L D # S T A R TJ S S A V E

F i r s t t h e s t a r t i n g a d d r e s s i p l a c e d i t h z e r o p a g e l o c at i o n s S T A R T a n d S T A R T + 1 . T h e n d i n g a d d r e s s p l u s o n e i p l a c e d i t h ( L S B ) a n ( M S B ) r e g i s t e r s a n d t h e a c c u m ul a t o r i l o a d e d w i t h t h a d d r e s s o f S T A R T . N o t e t h a t i m m e di a t e a d d r e s s i n g i u s e d b e c a u s e t h a d d r e s s i t s e l f , n o t i t

1 9

Page 199: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 199/224

A d v a n c e d M a c h i n e L a n g u a g e

c o n t e n t s , i i n t e n d e d .

E r r o r m e s s a g e s s u c h a " D E V I C E N O T P R E S E N T " o " M I S S I N GF I L E N A M E " m a o c c u r w h e n s a v i n g t d i s k e t t e o " I L L E G A LD E V I C E N U M B E R " f o a a t t e m p t t s a v e t t h k e y b o a r d ,s c r e e n , o R S - 2 3 2 .

B e f o r e w e t r y t w r i t e o u o w i n p u t / o u t p u t r o u t i n e s ,w w i l l b r i e f l y r e v i e w t h o p e r a t i o n o s o m e o p e r a t i n gs y s t e m k e r n a l r o u t i n e s .

O P E N

F o t h O P E N c o m m a n d t h p a r a m e t e r s f o r t h e l o g i c a lf i l e n u m b e r , d e v i c e n u m b e r , a n s e c o n d a r y a d d r e s s a r p l a c e di t a b l e . T h i s t a b l e h a s t e p o s i t i o n s . A a t t e m p t t o p e n m o r e t h a n 1 f i l e s w i l l g e n e r a t e t h e r r o r m e s s a g e " T O OM A N Y F I L E S . " T h e r e s t o f t h p r o c e d u r e i d e p e n d e n t o t h d e v i c e n u m b e r . I t h d e v i c e i t h k e y b o a r d ( 0 o r t h es c r e e n ( 3 ) , a n f i l e n a m e i i g n o r e d a n d t h e r o u t i n e e n d s .F o r t h e d a t a s e t t e ( 1 t a p e f i l e i o p e n e d e i t h e r f o r e a d i n g ( s e c o n d a r y a d d r e s s 0 o f o w r i t i n g ( s e c o n d a r ya d d r e s s 1 b a s e d o t h s e c o n d a r y a d d r e s s . S e c o n d a r ya d d r e s s l e a d s t o p e n i n g w r i t e f i l e a n d i h a n d l e dd i f f e r e n t l y o n l y b y t h C L O S E c o m m a n d . F o r e a d i n g , t h e t a p ef i l e w i t h t h f i l e n a m e g i v e n i t h O P E N c o m m a n d i s e a r c h e df o r . I f n n a m e i g i v e n , t h e f i r s t f i l e f o u n d i o p e n e d .F o w r i t i n g , f i l e w i t h t h p r o v i d e d n a m e ( i a n y ) i o p e n e d .

I t h d e v i c e a d d r e s s i 2 R S - 2 3 2 t r a n s m i s s i o n i p r e p a r e d . A a l r e a d y m e n t i o n e d , t w 2 5 6 - b y t e b u f f e r s f o i n p u t a n d o u t p u t a r a l l o c a t e d a t h u p p e r e n o t h B A S I Cs t o r a g e . T h s e c o n d a r y a d d r e s s i i g n o r e d . T h e f i r s t t w

1 9

Page 200: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 200/224

A d v a n c e d M a c h i n e L a n g u a g e

c h a r a c t e r s o t h " f i l e n a m e " a r c o p i e d t $ 2 9 3 a n d $ 2 9 4 .F r o m t h e s e p a r a m e t e r s t h n u m b e r o f b i t s p e r w o r d ( 5 - 8 ) i c a l c u l a t e d a n s t o r e d i $ 2 9 8 . T h c o r r e s p o n d i n g b a u d r a t ev a l u e s w i t h w h i c h t h t i m e r i C I m u s t b l o a d e d a r d e t e r m i n e d f r o m t h e f i r s t c h a r a c t e r o f t h e f i l e n a m e b y m e a n so t a b l e a n d s a v e d i $ 2 9 5 / $ 2 9 6 . I t h l i n e h a n d s h a k ew a s s p e c i f i e d , c h e c k i m a d e t s e i t h s i g n a l D S R( D a t a S e R e a d y ) i p r e s e n t . I t h a b s e n c e o f t h i s s i g n a lt h a p p r o p r i a t e b i i t h R S - 2 3 2 s t a t u s ( $ 2 9 7 ) i s e t .O t h e r w i s e t h s t a t u s i a l w a y s c l e a r e d b t h O P E N c o m m a n d .

D e v i c e a d d r e s s e s g r e a t e r t h a n r e f e r t t h s e r i a lb u s . I t h s e c o n d a r y a d d r e s s a n f i l e n a m e a r m i s s i n g , a w i t h O P E N 1 , f o r t h e p r i n t e r , o n l y a e n t r y i m a d e i t h t a b l e . T h e a b s e n c e o f t h e s e c o n d a r y a d d r e s s m u s t b m a d ek n o w n t t h r o u t i n e S E T F L S b y u s i n g n e g a t i v e v a l u e ( $ F F )f o r t h e s e c o n d a r y a d d r e s s . O t h e r w i s e t h O P E N c o m m a n d i s e n t o v e r t h s e r i a l b u s . A f t e r t h d e v i c e i a d d r e s s e d w i t hL I S T E N , t h s e c o n d a r y a d d r e s s p l u s $ F i s e n t . T h c o n n e c te d e v i c e i n t e r p r e t s t h i s a a O P E N c o m m a n d . I f i l e n a m ew a s p e c i f i e d , i i s e n t a t h e n b e f o r e t h t r a n s m i s s i o ni e n d e d w i t h U N L I S T E N .

C L O S E

T h C L O S E c o m m a n d e n d s t h t r a n s m i s s i o n s a n c l e a r s t h c o r r e s p o n d i n g t a b l e e n t r i e s i t h c o m p u t e r . T h e r e s t o f t h ep r o c e d u r e i a g a i n d e t e r m i n e d b y t h d e v i c e a d d r e s s . F o f i l e s o n t h e k e y b o a r d a n s c r e e n , n o t h i n g m o r e i d o n e . I t a p e f i l e i t b c l o s e d , t h p r o c e d u r e i f u r t h e r d e p e n de n t o n t h s e c o n d a r y a d d r e s s . I t h f i l e w a o p e n e d f o r e a d i n g ( s e c o n d a r y a d d r e s s = 0 ) , n o t h i n g m o r e n e e d b d o n e .F o w r i t i n g , t h c u r r e n t c o n t e n t s o f t h e c a s s e t t e b u f f e ra r w r i t t e n t t h t a p e . F o r s e c o n d a r y a d d r e s s 2 a E O

1 9

Page 201: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 201/224

A d v a n c e d M a c h i n e L a n g u a g e

( E n d O f T a p e ) b l o c k i a l s o w r i t t e n . F o a R S - 2 3 2 t r a n s m i s - js i o n , t h a c t i v i t i e s a r t e r m i n a t e d a n d t h e t w b u f f e r s a r d e a l l o c a t e d . I f i l e o t h s e r i a l b u s i t b c l o s e d ,t h c o m p u t e r s e n d s t h s e c o n d a r y a d d r e s s ( i t h e r e w a s o n e }p l u s $ E 0 , w h i c h i i n t e r p r e t e d a C L O S E c o m m a n d .

C H K I N

I t h e i n p u t i t b t a k e n f r o m f i l e , t h c o m p u t e rd e t e m i n e s t h d e v i c e n u m b e r a n s e c o n d a r y a d d r e s s f r o m t h l o g i c a l f i l e n u m b e r a n d t a k e s a d d i t i o n a l s t e p s d e p e n d e n tu p o n t h i s . W i t h t h d a t a s e t t e , c h e c k i m a d e t s e i t h f i l e i r e a d f i l e ( s e c o n d a r y a d d r e s s 0 ) o t h e r w i s e t h e r r o r m e s s a g e " N O T I N P U T F I L E " i g e n e r a t e d . F o d e v i c e s o t h s e r i a l b u s , T A L K c o m m a n d a n d t h e n t h s e c o n d a r y a d r e s s a r s e n t . T h d e v i c e i t h e r e b y r e a d y t s e n d d a t a .T h n u m b e r o t h d e v i c e f r o m w h i c h i n p u t i t b e x p e c t e di s t o r e d i n d e p e n d e n t o t h d e v i c e u n t i l t h n o r m a l i n p u ti r e - e n a b l e d w i t h C L R C H .

C K O U T

T h C K O U T c o m m a n d f u n c t i o n s l i k e t h C H K I N c o m m a n d . F o rt h d a t a s e t t e , c h e c k i m a d e t s e i t h s e c o n d a r ya d d r e s s i g r e a t e r t h a n z e r o ( o t h e r w i s e " N O T O U T P U T F I L E "e r r o r ) . L I S T E N c o m m a n d a n t h s e c o n d a r y a d d r e s s a r s e n t .T h c o n n e c t e d d e v i c e i t h e n r e a d y t r e c e i v e d a t a .

B A S I N

H e r e c h a r a c t e r i f e t c h e d f r o m t h k e y b o a r d , t h d a t a s e t t e , t h R S - 2 3 2 i n t e r f a c e , o t h s e r i a l b u d e p e n d i n go t h a c t i v e d e v i c e s e l e c t e d w i t h C H K I N .

1 9

Page 202: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 202/224

A d v a n c e d M a c h i n e L a n g u a g e

B S O U T

T h i s r o u t i n e s e n d s t h c h a r a c t e r i t h a c c u m u l a t o r t t h d e v i c e p r e v i o u s l y d e t e r m i n e d w i t h C K O U T . T h e s c r e e ns e r v e s a t h s t a n d a r d d e v i c e .

C L R C H

T h C L R C H c o m m a n d c a n c e l s t h C H K I N a n C K O U T I / r e d i r e c t i o n s . T h v a l u e s f o k e y b o a r d i n p u t a n f o s c r e e n o u t p u t a r e a g a i n e n t e r e d . I d e v i c e s w e r e a c t i v e o t h s e r i a l b u s , a U N T A L K o U N L I S T E N c o m m a n d i s e n t i o r d e r t i n f o r m t h d e v i c e s o f t h e e n d o f t h e t r a n s m i s s i o n .

1 9

Page 203: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 203/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . P r i n t e r s p o o l i n g

A s a n e x a m p l e o t h u s o t h i n p u t / o u t p u t v e c t o r s o t h o p e r a t i n g s y s t e m , w p r e s e n t r o u t i n e t h a t e m u l a t e sC e n t r o n i c s - c o m p a t i b l e i n t e r f a c e o t h u s e r p o r t a n a l s oa l l o w s f o p r i n t e r s p o o l i n g .

S p o o l i n g i t h o u t p u t t i n g o c h a r a c t e r s t t h p r i n t e ri t h " b a c k g r o u n d , * 1 w h i l e t h c o m p u t e r p e r f o r m s o t h e rt a s k s . F r o m t h i s d e s c r i p t i o n , i s h o u l d b q u i t e c l e a r t h a tt h i s m u s t b h a n d l e d b a i n t e r r u p t r o u t i n e . I o r d e r t h a tt h n o r m a l P R I N T o u t p u t n o h a v e t w a i t u n t i l t h p r i n t e ri r e a d y f o e a c h c h a r a c t e r , w w i l l w r i t e t h c h a r a c t e r i

b u f f e r . T h i n t e r r u p t p r o g r a m c h e c k s e a c h t i m e t s e i c h a r a c t e r s a r s t i l l i t h b u f f e r . I t h i s i s a n t h p r i n t e r i r e a d y t a c c e p t m o r e d a t a , c h a r a c t e r s a r s e n tu n t i l e i t h e r t h p r i n t e r i n l o n g e r r e a d y o t h e r e a r n m o r e c h a r a c t e r s l e f t t b s e n t .

. O P T P

; P R I N T E R S P O O L I N G

1 0 0 :1 1 0 :1 2 0 :1 3 0 :1 4 0 :1 5 0 :1 6 0 :1 7 0 :1 8 0 :1 9 0 :

2 0 0 :

C C O O

0 3 1 A0 3 1 C0 3 2 6

0 0 F 7

0 0 F 9

; I / 0 V E C T O R SO P E N $ 3 1 AC L O S E $ 3 1 CB S O U T $ 3 2 6

W P N T

R P N T

$ F

$ F

; O P E N V E C T O R; C L O S E V E C T O R; B S O U T V E C T O R

; W R I T E - P O I N T E RW I T H I N B U F F E R

; R E A D - P O I N T E RW I T H I N B U F F E R

2 1 0 :

1 9

Page 204: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 204/224

A d v a n c e d M a c h i n e L a n g u a g e

2 2 0 :

2 3 0 :

2 4 0 :2 5 0 :2 6 0 :

2 7 0 :

2 8 0 :

2 9 0 :

3 0 0 :3 1 0 :

3 2 0 :3 3 0 :3 4 0 :3 5 0 :3 6 0 :3 7 0 :3 8 0 :3 9 0 :4 0 0 :4 1 0 :4 2 0 :4 3 0 :4 4 0 :4 5 0 :4 6 0 :4 7 0 :

0 0 9 8

0 0 B 8

0 0 B A0 0 B 90 2 5 9

0 2 6 3

0 2 6 D

0 0 9 E

0 0 0 10 0 9 A

0 3 1 4E A 3 1

F 3 4 AF 1 C AF 3 1 FF 3 1 4F 3 0 FF 2 A 1F 2 F 1F 6 F EF 6 4 BF 2 9 1D D O OD D O OD D 0 1

N R F L S

L

F S L F T A B

F A T A B

S A T A B

C H A R

C O N F I GO U T D E V

I R Q V E CI R Q O L D

O P E N O L DB S O U T O L DS E T P A R AS E A R C H L FS R C H L F XO L D C L O S EC O N T C L SF I L E O P E NT O O M A N YC L O S E O L DC I P O R T AP O R T B

$ 9

$ B

$ B $ B $ 2 5 9

L F T A B + 1 0

F A T A B + 1 0

; N U M B E R O F O P E NF I L E S

; L O G I C A L F I L EN U M B E R

; D E V I C E A D D R E S S; S E C O N D A R Y A D D R E S S; T A B L E O F L O G I C A L

F I L E N U M B E R S; T A B L E O F D E V I C E

A D D R E S S E S; T A B L E O F

S E C O N D A R Y A D D R E S S E S$ 9

$ 9

$ 3 1 4$ E A 3 1

$ F 3 4 A$ F 1 C A$ F 3 1 F$ F 3 1 4$ F 3 0 F$ F 2 A 1$ F 2 F 1$ F 6 F E$ F 6 4 B$ F 2 9 1$ D D 0 0C I C I A + 1

{ C H A R A C T E R T B O U T P U T

J M E M O R Y D I V I S I O N; D E V I C E N U M B E R

F O O U T P U T; I R Q V E C T O R; O L D I R R O U T I N E

; C I A 2; P A 2 F O S T R O B E; P O R T F O R D A T A

1 9

Page 205: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 205/224

A d v a n c e d M a c h i n e L a n g u a g e

4 8 0 :

4 9 0 :

5 0 0 :5 1 0 :

5 2 0 :5 3 0 :5 4 0 :5 5 0 :5 6 0 :5 7 0 :5 8 0 :5 9 0 :6 0 0 :

6 1 0 :6 2 0 :-

6 3 0 :6 4 0 :

6 5 0 :

6 6 0 :6 7 0 :6 8 0 :6 9 0 :7 0 0 :7 1 0 :7 2 0 :7 3 0 :

D D 0 3

D D O D

E O O O

C C O OC C O OC C 0 2C C 0 4C C 0 7C C O A

C C O B

C C O DC C O F

C C 1 2C C 1 4

C C 1 7

C C 1 9C C 1 BC C 1 DC C 2 0C C 2 2C C 2 4C C 2 6C C 2 9

A A 8 8 6

A

F 2

D 4

A

E 9 4 A C F 4 E

O C 1 I

B

0 O

0 F

9

O 0 4 B 0 0 4 9

0 0

F

F

F

F

D I R E C T I O N

I C

B U F F E R

I N I T

O P E N N E W

E R R O R

0 K

O

S P O O L

* L D L D S T S T R T

L D

B E J S

B N J M

L D

C P B C J M L D C M B E J M I N

C I A + 3

C I A + 1 3

$ E 0 0 0

$ C C O O# < O P E N N E W# > O P E N N E WO P E NO P E N + 1

L

E R R O RS R C H L F X

0 K F I L E O P E N

N R F L S

# 1 O T O O M A N YF # S P O O LO P E N O L DN R F L S

D A T A D I R E C T I O NR E G I S T E RI N T E R R U P T C O N T R O LR E G I S T E R

P R I N T E R B U F F E RU N D E R K E R N A L

R E S E T O P E N V E C T O R

L O G I C A L F I L EN U M B E RZ E R O N O A L L O W E D; S E A R C H F O R F I

D A T AN O F O U N D , O

; O T H E R W I S E ' F O P E N ' E R R O R

N U M B E R O O P E N

L

F I L E S

L E S S T H A N 1 0 O ; ' T O O M A N Y F I L E S *

D E V I C E N U M B E RE Q U A L T 4 Y E S , S P O O L I N G

I N C R E M E N T N U M B E R

1 9

Page 206: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 206/224

A d v a n c e d M a c h i n e L a n g u a g e

7 4 0 :

7 5 0 :7 6 0 :

7 7 0 :7 8 0 :

7 9 0 :8 0 0 :8 1 0 :8 2 0 :8 3 0 :8 4 0 :8 5 0 :8 6 0 :

8 7 0 :8 8 0 :8 9 0 :9 0 0 :9 1 0 :9 2 0 :

9 3 0 :9 4 0 :9 5 0 :9 6 0 :

9 7 0 :9 8 0 :9 9 0 :1 0 0 0 :

C C 2 B

C C 2 EC C 3 0

C C 3 3C C 3 5

C C 3 8C C 3 AC C 3 CC C 3 EC C 4 0C C 4 2C C 4 4C C 4 6

C C 4 9C C 4 CC C 4 EC C 5 1C C 5 3C C 5 5

C C 5 8C C 5 BC C 5 DC C 5 F

C C 6 2C C 6 5C C 6 7C C 6 9

9

A 9

A 9

A 8 8 A 8 8 A 8

A 0 8 A A 8

8 A A 8

8 A A 7

6

B 5

F 6

E F F 0 F F F 0

0 0 0 B C 2

2 D C 1

I 7 C

0

0

0

D

D

D

0

0

0

0

S T

L D S T

L D S T

L D S T S T L D S T S T L D S T

L D O R S T L D L D S T

S T L D L D S T

S T L D L D S E

F A T A B , X ; D E V I C E A D D R E S SI T A B L E

L L F T A B , X ; L O G I C A L F I L E

N U M B E R# - S A T A B , X ; N S E C O N D A R Y

A D D R E S S# > B U F F E RW P N T + 1 ; W R I T E - P O I N T E RR P N T + 1 ; A N D R E A D - P O I N T E R# ; T S T A R T B U F F E RW P N TR P N T# $ F FD I R E C T I O N ; U S E R P O R T T

O U T P U TP O R T A# S 1 0 0 ; S T R O B E H P O R T A# < B S O U T N E W# > B S O U T N E WB S O U T ; B S O U T V E C T O R T

N E R O U T I N EB S O U T + 1# < C L O S E N E W# > C L O S E N E WC L O S E ; C L O S E V E C T O R T

N E R O U T I N EC L O S E + 1# < S P O O L I N G# > S P O O L I N G

2 0

Page 207: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 207/224

A d v a n c e d M a c h i n e L a n g u a g e

1 0 1 0 :

1 0 2 0 :1 0 3 0 :1 0 4 0 :1 0 5 0 :1 0 6 0 :1 0 7 0 :1 0 8 0 :1 0 9 0 :1 1 0 0 :1 1 1 0 :

1 1 2 0 :1 1 3 0 :

1 1 4 0 :1 1 5 0 :1 1 6 0 :1 1 7 0 :

1 1 8 0 :1 1 9 0 :1 2 0 0 :1 2 1 0 :

1 2 2 0 :1 2 3 0 :1 2 4 0 :1 2 5 0 :1 2 6 0 :1 2 7 0 :1 2 8 0 :

C C 6 A

C C 6 DC C 7 0C C 7 1C C 7 2

C C 7 3C C 7 5C C 7 6C C 7 8C C 7 A

C C 7 CC C 7 E

C C 8 0C C 8 2C C 8 4C C 8 6

C C 8 8C C 8 BC C 8 DC C 8 F

C C 9 1C C 9 4C C 9 7C C 9 9C C 9 CC C 9 EC C A 1

8

8 5 1 6

A 4

A 8 A

C D

A C F A

2 F A B

8 A 2 8 0 8 E

1

1

0

3 0 F

F 0

F F 2 1

O 2 0 F

0 0 F 0 0 0 F

0

0

D

D D

D

D

S T

S T C L C L R T

S P O O L I N G L D P H L D S T

T E S T N E X T L D

C M B N

L D C M B E

S E N D C H A R L D

B I B E L D L D

S T L D A N S T O R S T I N

I R Q V E C

I R Q V E C + 1

C O N F I G

# $ 3 5C O N F I GR P N T

W P N TS E N D C H A R

R P N T + 1W P N T + 1E X I T# 3 1 0 0 0 0

I C E X I T# ( R P N T ) , Y

P O R T BP O R T A

I R V E C T O R T S P O O L R O U T I N E

E R A S E E R R O R F L A G

S E L E C T R A

C O M P A R E W R I T EP O I N T E RW I T H R E A D P R I N T E R

; N O T E Q U A L , T H E NO U T P U T C H A R A C T E R

; B I T M A S K F O F L A G

P R I N T E R R E A D Y ?N

; C H A R A C T E R T O U T P U T

G I V E T P O R T

# 3 1 1 1 1 1 0 1 1 j S T R O B E L P O R T A# 3 0 0 0 0 0 0 1 0 0 ; A N D H A G A I NP O R T AR P N T

2 0

Page 208: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 208/224

A d v a n c e d M a c h i n e L a n g u a g e

1 2 9 0 :

1 3 0 0 :1 3 1 0 :1 3 2 0 :1 3 3 0 :1 3 4 0 :

1 3 5 0 :1 3 6 0 :1 3 7 0 :

1 3 8 0 :1 3 9 0 :1 4 0 0 :1 4 1 0 :1 4 2 0 :1 4 3 0 :1 4 4 0 :1 4 5 0 :1 4 6 0 :1 4 7 0 :1 4 8 0 :1 4 9 0 :1 5 0 0 :1 5 1 0 :1 5 2 0 :1 5 3 0 :1 5 4 0 :

1 5 5 0 :1 5 6 0 :1 5 7 0 :

C C A 3

C C A 5C C A 7C C A 9C C A BC C A D

C C A FC C B O

C C B 2

C C B 5C C B 6C C B 8C C B AC C B CC C B DC C C OC C C 1C C C 3C C C 4C C C 5C C C 7C C C 9C C C BC C C D

C C C FC C D 1C C D 3

D

E D A 8 D

6 8

4

4 A C F 6 4 6 8 9 4 A A 9 E D

E D A

D

F D E F C

0

3

9 0 0

C

9

9 0 F F 0

F 0 E

B N

I N B N L D S T B N

E X I T P L AS T

B J M

B S O U T N E W P H L D C M B E P L

F J M O K P L

S T T Y P H L D L D S T I N B N

I N B N L D

T E S T N E X T

R P N T + 1T E S T N E X T# > B U F F E RR P N T + 1T E S T N E X T

C O N F I G

I R Q O L D

O U T D E V# O K

B S O U T O L D

C H A R

C H A R# ( W P N T ) , Y

W P N TN O I N C

W P N T + 1N O I N C# > B U F F E R

; I N C R E M E N T - R E A DP O I N T E R

; S E N D N E X TC H A R A C T E R

O L M E M O R YD I V I S I O NT O A D D I R

S A V E C H A R A C T E RD E V I C E A D D R E S SE Q U A L T O 4 ?Y E

; T O L O U T P U TC H A R A C T E R B A C KA N S A V E

S A V EC H A R A C T E R

; W R I T E I B U F F E R

I N C R E M E N T B U F F E RP O I N T E R

; B U F F E R P O I N T E R

2 0

Page 209: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 209/224

A d v a n c e d M a c h i n e L a n g u a g e

T S T A R T1 5 8 0 :1 5 9 0 :1 6 0 0 :1 6 1 0 :1 6 2 0 :1 6 3 0 :1 6 4 0 :1 6 5 0 :

1 6 6 0 :

C C D 5C C D 7C C D 8C C D 9C C D BC C D C

C C D D

C C E O

8 6 A A 1 6

2

D

F

9

1

F

N O I N C

D O N E

S T W P N T + 1P L T A L D C H A RC L R T

; B A C K

; C L E A R E R R O R F L A G

1 6 7 0 : C C E 2 2 I F F 3

J S R S E A R C H L F ; S E A R C H F O F I L ED A T A

B N D O N E ; N F I L E O P E N ,D O N E

J S S E T P A R A ; G E T F I L EP A R A M E T E R

1 6 8 0 :1 6 9 0 :1 7 0 0 :1 7 1 0 :1 7 2 0 :1 7 3 0 :

1 7 4 0 :1 7 5 0 :1 7 6 0 :

1 7 7 0 :1 7 8 0 :1 7 9 0 :1 8 0 0 :

1 8 1 0 :1 8 2 0 :1 8 3 0 :

C C E 5C C E 6C C E 7C C E 9C C E BC C E D

C C F OC C F 2C C F 4

C C F 7C C F AC C F CC C F E

C D 0 1C D 0 4C D 0 6

8 4 A C F 4

A A 8

8 A A 8

8 A A

B 0 0 A

C F 2

2 9 F 1

I 3 E

F

C L 0 S E 1

0

0

0

0

T X P H L D C M B E J M

L D L D S T

S T L D L D S T

S T L D L D

; S A V E R E G I S T E RF ; D E V I C E A D D R E S S# 4 C L O S E 1O L D C L O S E ; O L D C L O S E

R O U T I N E# < B S O U T O L D# > B S O U T O L DB S O U T ; V E C T O R T A D

B S O U T R O U T I N EB S O U T + 1# < C L O S E O L D# > C L O S E O L DC L O S E ; V E C T O R T O L

C L O S E R O U T I N EC L O S E + 1# < I R Q O L D# > I R Q O L D

2 0

Page 210: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 210/224

Page 211: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 211/224

A d v a n c e d M a c h i n e L a n g u a g e

a u t o m a t i c a l l y s e b y h i g h t l o t r a n s i t i o n . W e c a t h e r ef o r e r e c o g n i z e e x a c t l y w h e n t h p r i n t e r i r e a d y t r e c e i v ed a t a . T h f o l l o w i n g t i m i n g d i a g r a m r e p r e s e n t s t h r e l a t i o ns h i p g r a p h i c a l l y .

B U S Y

D A T A

S T R O B E

N o t t h d e s c r i p t i o n o o u r p r o g r a m . A f t e r t h e d e fi n i t i o n o f t h e a d d r e s s e s w e f i n d f i r s t t h e i n i t i a l i z a t i o nw h i c h s e t s t h e O P E N v e c t o r t o u n e w r o u t i n e i t h e u s u a lm a n n e r . T h r o u t i n e i t s e l f b e g i n s i t h s a m e w a y a t h o p e r a t i n g s y s t e m r o u t i n e w i t h t h t e s t o f t h l o g i c a l f i l en u m b e r . I i i z e r o , w o u t p u t a e r r o r m e s s a g e . O t h e r w i s ew s e a r c h f o a o p e n f i l e w i t h t h i s n u m b e r . I n f i l e w i t ht h s a m e n u m b e r w a o p e n e d , w c a c h e c k t s e i t e f i l e sa r a l r e a d y o p e n . I s o t h e n t h e c a p a c i t y o f t h e f i l e t a b l ei e x h a u s t e d a n w o u t p u t t h e r r o r m e s s a g e " T O O M A N YF I L E S . " O t h e r w i s e w c h e c k t h d e v i c e n u m b e r . I t h d e v i c en u m b e r i n o t f o u r , w e j u m p t o t h e n o r m a l O P E N r o u t i n e .

2 0

Page 212: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 212/224

A d v a n c e d M a c h i n e L a n g u a g e

O t h e r w i s e w i n c r e m e n t t h n u m b e r o o p e n f i l e s a n d e n t e rt h l o g i c a l f i l e n u m b e r , d e v i c e n u m b e r , a n s e c o n d a r y a d r e s s i t h a p p r o p r i a t e t a b l e s . T h e b u f f e r p o i n t e r s a r s e t t h s t a r t o f t h b u f f e r . W e u s e t h e 8 K f r o m $ E 0 0 0 t $ F F F F u n d e r t h o p e r a t i n g s y s t e m a t h e b u f f e r . T h e n t h u s e r p o r t i s w i t c h e d t o u t p u t a n d t h S T R O B E s i g n a l i f o r c e d h i g h . N o t h v e c t o r s f o B S O U T a n C L O S E a r e s e t t o u n e w r o u t i n e s . T h a c t u a l s p o o l i n g i d o n e d u r i n g t h i n t e r r u p t ; w e c h a n g e t h i n t e r r u p t v e c t o r t p o i n t t t h r o u t i n e S P O O L I N G . A f t e r t h a t , t h c a r r y f l a g i c l e a r e d a n w e c a n r e t u r n w i t h R T S .

T h e s p o o l r o u t i n e , w h i c h i t i e d i n t o t h e s y s t e m i n t e rr u p t , f i r s t s w i t c h e s t h m e m o r y c o n f i g u r a t i o n t R A a n c h e c k s t s e i t h e r e i c h a r a c t e r t o u t p u t i t h b u f f e r . T h i s i t h c a s e i t h w r i t e p o i n t e r , w h i c h i i n c r e m e n t e d b y t h e r o u t i n e B S O U T b y e a c h w r i t e t t h b u f e r , i n o t h s a m e a t h r e a d p o i n t e r . I t h p r i n t e r i n o w r e a d y t a c c e p t c h a r a c t e r s , w g e b y t e f r o m t h b u f f e r a n p l a c e i o t h u s e r p o r t . W e n o t i f y t h p r i n t e rt h a t w e h a v e s e n t i t v a l i d c h a r a c t e r b y t o g g l i n g t h S T R O B E l i n e t l o a n b a c k t h i g h a g a i n . N o w i n c r e m e n tt h r e a d p o i n t e r s o t h a t t h e n e x t c h a r a c t e r c a n b e s e n t f r o mt h b u f f e r .

W n o b r a n c h t t h s t a r t o f t h e r o u t i n e a n o u t p u tt h n e x t c h a r a c t e r . T h l o o p i e x e c u t e d u n t i l e i t h e r n c h a r a c t e r s a r l e f t t b e s e n t o t h p r i n t e r i n l o n g e rr e a d y t a c c e p t t h e m . A t h l a b e l E X I T , t h n o r m a l m e m o r yc o n f i g u r a t i o n i s w i t c h e d b a c k o a n d t h e n o r m a l i n t e r r u p tr o u t i n e i e x e c u t e d .

2 0

Page 213: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 213/224

A d v a n c e d M a c h i n e L a n g u a g e

T h r o u t i n e B S O U T N E W t e s t s t s e i t h o u t p u t i g o i n g t d e v i c e 4 I t h i s c a s e , t h e c h a r a c t e r i w r i t t e ni n t o t h e b u f f e r a n t h b u f f e r p o i n t e r i i n c r e m e n t e d . T h r o u t i n e d o e s n o d e s t r o y a n r e g i s t e r c o n t e n t s a n i e x i t e dw i t h t h c l e a r e d c a r r y f l a g t i n d i c a t e t h a t n o e r r o r so c c u r r e d .

I C L O S E N E W , t h v e c t o r s f o B S O U T a n C L O S E a r r e s e tt t h o r i g i n a l a d d r e s s e s i t h d e v i c e a d d r e s s f o u r i r e c o g n i z e d . T h i n t e r r u p t v e c t o r i a l s o s e t i t o l v a l u e . T h o u t p u t o a n c h a r a c t e r s s t i l l i t h b u f f e r i t e r m i n a t e d . l o o p m u s t b i n s e r t e d w h i c h w a i t s u n t i l t h b u f f e r p o i n t e r s f o r e a d i n g a n w r i t i n g a r t h s a m e i o r d e r t a v o i d t h i s .

c a b l e i n e c e s s a r y t c o n n e c t t h C o m m o d o r e 6 u s e rp o r t t t h C e n t r o n i c s i n t e r f a c e o f t h e p r i n t e r . T h f o l l o wi n l i n e s m u s t b e c o n n e c t e d :

U S E R P O R T C E N T R O N I C S6 N

F L A G - B U S YD D D D D D D D

P A 2 - S T R O B B

1 1

2 0

Page 214: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 214/224

A d v a n c e d M a c h i n e L a n g u a g e

S i n c e m o s t p r i n t e r s w i t h C e n t r o n i c s i n t e r f a c e u s e t h A S C I I c h a r a c t e r s e w h i c h i d i f f e r e n t f r o m t h C o m m o d o r e6 4 * s c h a r a c t e r s e t , t h o u t p u t c a n a l s o i n c l u d e c o n v e r s i o nt A S C I I c o d e s .

T h f o l l o w i n g m u s t b e n o t e d w h e n s t a r t i n g . C o n n e c t t h p r i n t e r a n t h c o m p u t e r w i t h t h c a b l e a n t u r n o f i r s tt h c o m p u t e r a n d t h e n t h e p r i n t e r . T h i s g u a r a n t e e s t h a t t h p r i n t e r w i l l b e i t h R E A D Y c o n d i t i o n a n d w i l l s e t t h e F L A Gb i i t h C I A . N o y o c a l o a d t h m a c h i n e l a n g u a g e p r o gr a a n i n i t i a l i z e i w i t h S Y 5 2 2 2 4 . A f t e r O P E N 1 , 4 , a l d a t a s e n t v i a P R I N T # 1 a r w r i t t e n t t h b u f f e r , w h o s ec o n t e n t s a r e s e n t t t h p r i n t e r i t h i n t e r r u p t r o u t i n e .W r i t i n g t t h b u f f e r i d o n e v e r y q u i c k l y s t h a t y o u ra p p l i c a t i o n p r o g r a m d o e s n o h a v e t w a i t f o t h p r i n t e r .

2 0

Page 215: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 215/224

A d v a n c e d M a c h i n e L a n g u a g e

3 . T a b l eT o k e n

$ 8 0 1 2 8$ 8 1 1 2 9$ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 1 3 $ 8 B 1 3 9$ 8 1 4 $ 8 1 4 $ 8 1 4 $ 8 1 4 $ 9 1 4 $ 9 1 1 4 5$ 9 1 4 $ 9 1 4 $ 9 1 4 $ 9 5 1 4 9$ 9 1 5 $ 9 1 5 $ 9 1 5 $ 9 1 5 $ 9 1 5 $ 9 1 5 $ 9 C 1 5 6$ 9 1 5 $ 9 1 5

o B A S I C k e y w o r d s a n d t h e i r t o k e n sC o m m a n d

E N F O N E X TD A T AI N P U T *I N P U TD I R E A DL E G O T OR U I R E S T O R EG O S U BR E T U R NR E S T O PO W A I TL O A DS A V EV E R I F YD E P O K EP R I N T *P R I N TC O N TL I S TC L C M S Y

A d d r e s s$ A 8 3 1$ A 7 4 2$ A D 1 E$ A 8 F 8$ A B A 5$ A B B F$ B 0 8 1$ A C 0 6$ A 9 0 5$ A 8 A 0$ A 8 7 1$ A 9 2 8$ A 8 1 D$ A 8 8 3$ A 8 D 2$ A 9 3 B$ A 8 2 F$ A 9 4 B$ B 8 2 D$ E 1 6 8$ E 1 5 6$ E 1 6 5$ B 3 B 3$ B 8 2 4$ A A 8 0$ A A A 0$ A 6 9 C$ A 6 9 C$ A 6 5 E$ A A 8 6$ E 1 2 A

T o k e n$ 9 1 5 $ A 0 1 6 0$ A 1 6 $ A 2 1 6 2$ A 1 6 $ A 1 6 $ A 1 6 $ A 1 6 $ A 1 6 $ A 1 6 $ A 1 6 $ A 1 7 $ A 1 7 $ A C 1 7 2$ A 1 7 $ A 1 7 $ A 1 7 $ B 0 1 7 6$ B 1 7 $ B 1 7 $ B 3 1 7 9$ B 1 8

$ B 1 8 $ B 1 8 $ B 1 8 $ B 1 8 $ B 1 8 $ B A 1 8 6$ B 1 8 $ B 1 8 $ B D 1 8 9

C o m m a n dO P E NC L O S EG E N E T A B (T F S P C (T H E NN O S T E P

A d d r e s s$ E 1 B E$ E 1 C 7$ A B 7 B$ A 6 4 2

A N O

S G I N A B U S F R P O S Q R N L O E X

$ B 8 6 A$ B 8 5 3$ B A 2 B$ B B 1 2$ B F 7 B$ A F E 9$ A F E 6

$ B C 3 9$ B C C C$ B C 5 8$ 0 3 1 0$ B 3 7 D$ B 3 9 E$ B F 7 1$ E 0 9 7$ B 9 E A$ B F E D

2 0

Page 216: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 216/224

A d v a n c e d M a c h i n e L a n g u a g e

T o k e n$ B

$ B $ C $ C $ C $ C $ C $ C $ C $ C $ C $ C $ C $ C

1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 2 0 2 0 2 0 2 0

C o m m a n dC O S I T A A T P E E KL B S T R $V A A S C H R $L E F T $R I G H T *M I D $G

A d d r e s s$ E 2 6 4$ E 2 6 B$ E 2 B 4$ E 3 0 E$ B 8 0 D$ B 7 7 C$ B 4 6 5$ B 7 A D$ B 7 8 B$ B 6 E C$ B 7 0 0$ B 7 2 C$ B 7 3 7

T h t a b l e i c o n s t r u c t e d s u c h t h a t t h c o m m a n d w o r d sc o m e f i r s t ( $ 8 0 - $ A 2 ) , t h e n t h s p e c i a l w o r d s w h i c h a r u s e di c o m b i n a t i o n w i t h o t h e r c o m m a n d s ( $ A 3 - $ A 9 ) . T h e o p e r a t o r sa r e n e x t ( $ A A - $ B 0 ) , f o l l o w e d b t h c o m p a r i s o n o p e r a t o r s( $ B 1 - $ B 3 ) a n d t h e B A S I C f u n c t i o n s ( $ B 4 - $ C A ) . T h e c o d e f o r G O

w h i c h a l l o w s G O T O t b w r i t t e n a G T c o n c l u d e s t h t a b l e . B e h i n d t h c o m m a n d w o r d s a r t h a d d r e s s e s o f t h ec o r r e s p o n d i n g r o u t i n e s i R O M , w h e n e v e r p o s s i b l e .

2 1

Page 217: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 217/224

H A C K E R S O N L Y ! T h u l t i m a t e s o u r c ef o C o m m o d o r e - 6 4C o m p u t e r i n f o r m a t i o n

O T H E R B O O K S A V A I L A B L E S O O N

T H A N A T O M Y O T H C - 6 4i t h e i n s i d e r ' s g u i d e t t h e l e s s e r k n o w n f e a t u r e s o t h C o m m o d o r e 6 4 I n c l u d e s c h a p t e r s o g r a p h i c s ,s o u n d s y n t h e s i s , i n p u t / o u t p u t c o n t r o l , s a m p l e p r o g r a m su s i n g t h e k e r n a l r o u t i n e s , m o r e . F o t h o s e w h n e e d t k n o w , i t i n c l u d e s t h c o m p l e t e d i s a s s e m b l e d a n dd o c u m e n t e d R O l i s t i n g sI S B N - 0 - 9 1 6 4 3 9 - 0 0 - 3 3 0 0 P P $ 1 9 - 9 5

T H A N A T O M Y O F T H E 1 5 4 1D I S K D R I V Eu n r a v e l s t h m y s t e r i e s o u s i n g t h m i s u n d e r s t o o d d i s kd r i v e . D e t a i l s t h u s o p r o g r a m , s e q u e n t i a l , r e l a t i v ea n d i r e c t a c c e s s f i l e s . I n c l u d e m a n y s a m p l e p r o g r a m sF I L E P R O T E C T . D I R E C T O R Y . D I S K M O N I T O R . B A C K U P .M E R G E . C O P Y , o t h e r s . D e s c r i b e s i n t e r n a l s o f D O w i t hc o m p l e t e l y d i s a d d e m b l e d a n c o m m e n t e d l i s t i n g s o t h 1 5 4 1 R O M SI S B N - 0 - 9 1 6 4 3 9 - 0 1 - 1 3 2 0 p p $ 1 9 . 9 5

M A C H I N E L A N G U A G E F O C - 6 4i a i m e d a t h o s e w h w a n t t p r o g r e s s b e y o n d B A S I CW r i t e t a s t e r , m o r e m e m o r y e f f i c i e n t p r o g r a m s i m a c h i n el a n g u a g e . T e s t i s p e c i f i c a l l y g e a r e d t C o m m o d o r e 6 L e a r n s a l 6 5 1 0 i n s t r u c t i o n s . I n c l u d e s l i s t i n g s f o f u l ll e n g t h p r o g r a m s : " A S S E M B L E R . D I S A S S E M B L E R a n a m a z i n g 6 5 1 0 S I M U L A T O R s y o c a - s e e - t h o p e r at i o n o f t h " 6 4 .I S B N - 0 - 9 1 6 4 3 9 - 0 2 - X 2 0 0 p p $ 1 4 . 9 5

T R I C K S T I P S F O T H C - 6 4i a c o l l e c t i o n o e a s y - t o - u s e p r o g r a m m i n g t e c h n i q u e s f o t h ' 6 4 . p e r i e c t c o m p a n i o n f o t h o s e w h h a v e r u u a g a i n s t t h o s e h a r d t s o l v e p r o g r a m m i n g p r o b l e m sC o v e r s a d v a n c e d g r a p h i c s , e a s y d a t a i n p u t . B A S I Ce n h a n c e m e n t s . C P / M c a r t r i d g e o t h 6 4 P O K E s . u s e rd e f i n e d c h a r a c t e r s e t s . i o y s t i c k / m o u s e s i m u l a t i o n , t r a n sf e r r i n g d a t a b e t w e e n c o m u t e r s . m o r e . t r e a s u r e c h e s tI S B N - 0 - 9 1 6 4 3 9 - 0 3 - 8 2 5 O p p $ 1 9 . 9 5

G R A P H I C S B O O K F O T H C - 6 4l a k e s y o u f r o m t h f u n d a m e n t a l s o g r a p h i c t a d v a n c e d t o p i c s s u c h a c o m p u t e r a i d e d d e s i g n . S h o w sy o h o t p r o g r a m n e c h a r a c t e r s e t s , m o v e s p r i t e s ,d r a w i H I R E S a n M U L T I C O L O R , u s a l i g h t p e n .h a n d l e I R Q s . d 3 g r a p h i c s , p r o j e c t i o n s , c u r v e s a n a n i m a t i o n I n c l u d e s d o z e n s o s a m p l e s .I S B N - 0 - 9 1 6 4 3 9 - 0 5 - 4 2 8 0 p p $ 1 9 . 9 5

A D V A N C E D M A C H I N EL A N G U A G E F O R T H E C - 6 4g i v e s y o a i n t e n s i v e t r e a t m e n t o f t h e p o w e r f u l ' 6 f e a t u r e s . A u t h o r L o t h a r E n g l i s c h d e l v e s i n t o a r e a s s u c ha i n t e r r u p t s , t h v i d e o c o n t r o l l e r , t h e t i m e r , t h e r e a lt i m e c l o c k , p a r a l l e l a n s e r i a l I / O . e x t e n d i n g B A S I C a n t i p s a n t r i c k s f r o m m a c h i n e l a n g u a g e , m o r eI S B N - 0 - 9 1 6 4 3 9 - 0 6 - 2 2 0 0 p p $ 1 4 . 9 5

I D E A S F O R U S E O N Y O U R C - 6 4i f o t h o s e w h w o n d e r w h a t y o u c a n d o w i t h y o u r 6 I t i w r i t t e n f o t h n o v i c e a n p r e s e n t s d o z e n s o p r o g r a m l i s t i n g t h m a n y , m a n y u s e s l o y o u rc o m p u t e r T h e m e s i n c l u d e : a u t o e x p e n s e s , e l e c t r o n i cc a l c u l a t o r , r e c i p e f i l e , s t o c k l i s t s , c o n s t r u c t i o n c o s te s t i m a t o r , p e r s o n a l h e a l t h r e c o r d d i e t p l a n n e r , s t o r ew i n d o w a d v e r t i s i n g , c o m p u t e r p o e t r y , p a r l y i n v i t a t i o n sa n m o r eI S B N - 0 - 9 1 6 4 3 9 - 0 7 - 0 2 0 0 p p $ 1 2 . 9 5

P R I N T E R B O O K F O T H C - 6 4f i n a l l y s i m p l i f i e s y o u r u n d e r s t a n d i n g o t h 1 5 2 5 .M P S / 8 0 1 . 1 5 2 0 . 1 5 2 6 a n d E p s o n c o m p a t i b l e p r i n t e r s .P a c k e d w i t h e x a m p l e s a n u t i l i t y p r o g r a m s , y o u " I I l e a r nh o t m a k e h a r d c o p y o t e x t a n g r a p h i c s , u s e s e c o nd a r y a d d r e s s e s , p l o t i 3 - D . a n m u c h m o r e . I n c l u d e sc o m m e n t e d l i s t i n g o M P 8 0 R O M s .I S B N - 0 - 9 1 6 4 3 9 - 0 8 - 9 3 5 0 p p . $ 1 9 . 9 5

S C I E N C E / E N G I N E E R I N GO T H C - 6 4i a i n t r o d u c t i o n t t h w o r l d o c o m p u t e r s i s c i e n c e .D e s c r i b e s v a r i a b l e t y p e s , c o m p u t a t i o n a l a c c u r a c y ,v a r i o u s s o r t a l o g r i i h m s T o p i c s i n c l u d e l i n e a r a n n o n l i n e a r r e g r e s s i o n . C H I - s q u a r e d i s t r i b u t i o n . F o u r i e ra n a l y s i s , m a t r i x c a l c u l a t i o n s , m o r e P r o g r a m s f r o mc h e m i s t r y , p h y s i c s , b i o l o g y , a s t r o n o m y a n d e l e c t r o n i c s .I n c l u d e s m a n y p r o g r a m l i s t i n g sI S B N - 0 - 9 1 6 4 3 9 - 0 9 - 7 2 S 0 p p $ 1 9 . 9 5

C A S S E T T E B O O K F O T H C - 6 4( o V i c 2 0 ) c o n t a i n s a l t h i n f o r m a t i o n y o n e e d t k n o w a b o u t u s i n g a n p r o g r a m m i n g t h C o m m o d o r eD a t a s e t t e I n c l u d e s m a n y e x a m p l e p r o g r a m s . A l s o c o t a i n s a n e o p e r a t i n g s y s t e m f o r f a s t l o a d i n g , s a v i n ga n f i n d i n g o f i l e sI S B N - 0 - 9 1 6 4 3 9 - 0 4 - 6 1 8 0 p p . $ 1 2 . 9 5

D E A L E R I N Q U I R I E S A R I N V I T E DI C A N A D A C O N T A C T :T h e B o o k C e n t r e . 1 1 4 0 B e a u l a c S t r e e tM o n t r e a l , Q u e b e c H 4 R 1 R 8 P h o n e : ( 5 1 4 ) 3 2 2 - 4 1 5 4

A V A I L A B L E A C O M P U T E R S T O R E S , O W W T E :A b E C u s l S S o f t v v a f eP . O . B O 7 2 1 1 Q R A N D R A P I D S . M 4 9 5 1 0

E s c l u s l v * U . S . O A T A B E C K E R P u b l i s h e r sF o p o s t a g e h a n d l i n g , a d $ 4 0 0 ( U . S . a n C a n a d a ) , a d S 6 . 0 0 t o f o r e i g n . M a k e p a y m e n ti U . S . d o l l a m b c h e c k , m o n e y o r d e r o c h a r g e c a r d . ( M i c h i g a n R e s i d e n t s a d 4 < H >s a l e s t a x . )F O Q U I C K 3 E R V I C E P H O N E ( 6 1 6 ) 2 4 1 - 5 5 1 0C o m m o d o r e 6 i r a g . T . M . o C o m m o d o m B u » i n « u M « c h i n » »

Page 218: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 218/224

Page 219: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 219/224

G E T H M O S T O U O Y O C O M M O D O R E - 6 4W I T H A B A C U S S O F T W A R E

X R E F 6 4 B A S I C C R O S S R E F E R E N C ET h i s t o o ! a l l o w s y o t l o c a t e t h o s e h a r d - t o - f i n d v a r i a b l e s i y o u r p r o g r a m s .C r o s s - r e f e r e n c e s a l t o k e n s ( k e y w o r d s ) , v a r i a b l e s a n c o n s t a n t s i s o r t e do r d e r . Y o c a n e v e n a d y o o w t o k e n s f r o m o t h e r s o f t w a r e s u c h a U L T R A B A S I C o V I C T R E E . L i s t i n g s t s c r e e n o a l A S C I I p r i n t e r s .

D I S K $ 1 7 . 9 5S Y N T H Y 6 4T h i s i r e n o w n e d a t h f i n e s t m u s i c s y n t h e s i z e r s a v a i l a b l e a a n p r i c e .O t h e r s m a h a v e a l o o o n s c r e e n f r i l l s , b u S Y N T H Y - 6 4 m a k e s m u s i c b e t t e rt h a n t h e m a l l . N o t h i n g c o m e s c l o s e t t h p e r f o r m a n c e o t h i s p a c k a g e .I n c l u d e s m a n u a l w i t h t u t o r i a l , s a m p l e m u s i c .

D I S K $ 2 7 . 9 5 T A P E $ 2 4 . 9 5U L T R A B A S I C - 6 4T h i s p a c k a g e a d d s 5 p o w e r f u l c o m m a n d s ( m a n y f o u n d i V I D E O B A S I C ,a b o v e ) H I R E S . M U L T I . D O T . D R A W . C I R C L E . B O X . F I L L . J O Y . T U R T L E .M O V E . T U R N . H A R D . S O U N D . S P R I T E . R O T A T E , m o r e . A l c o m m a n d sa r e a s y t u s e . I n c l u d e s m a n u a l w i t h t w o - p a r t t u t o r i a l a n d e m o .

D I S K $ 2 7 . 9 5 T A P E $ 2 4 . 9 5C H A R T P A K - 6 4T h i s f i n e s t c h a r t i n g p a c k a g e d r a w s p i e . b a a n l i n e c h a r t s a n g r a p h s f r o my o u r d a t a o r D I P . M u l t i p l a n a n B u s i c a l c f i l e s . C h a r t s a r d r a w n i a n o

f o r m a t s . C h a n g e f o r m a t a n b u i l d a n o t h e r c h a r t i m m e d i a t e l y . H a r d c o p yt M P S 8 0 1 . E p s o n , O k i d a t a . P r o w n t e r . I n c l u d e s m a n u a l a n d t u t o r i a l

D I S K $ 4 2 . 9 5C H A R T P L O T - 6 4S a m e a C H A R T P A C K - 6 4 f o h i g h e s t q u a l i t y o u t p u t t m o s t p o p u l a r p e p l o t t e r s . D I S K $ 8 4 . 9 5

D E A L E R I N Q U I R I E S A R I N V I T E D

C A D P A K - 6 4T h i s a d v a n c e d d e s i g n p a c k a g e h a s o u t s t a n d i n g f e a t u r e s t w H i r e ss c r e e n s ; d r a w L I N E S . R A Y s . C I R C L E S . B O X E s ; f r e e h a n d D R A W ; F I L L w i t hp a t t e r n s ; C O P Y a r e a s ; S A V E / R E C A L L p i c t u r e s ; d e f i n e a n u s i n t r i c a t eO B J E C T S ; i n s e r t t e x t o s c r e e n ; U N D O l a s t f u n c t i o n . R e q u i r e s h i g h q u a l i t yh g h t p e n . W r e c o m m e n d M c P e n . I n c l u d e s m a n u a l w i t h t u t o r i a l .D I S K $ 4 9 . 9 5 M c P e n l i g h t p e n $ 4 9 . 9 5

M A S T E R 6 T h i s p r o f e s s i o n a l a p p l i c a t i o n d e v e l o p m e n t p a c k a g e a d d s 1 0 0 p o w e r f u lc o m m a n d s t B A S I C i n c l u d i n g f a s t I S A M i n d e x e d f i l e s ; s i m p l i f i e d y e s o p h i s t i c a t e d s c r e e n a n p r i n t e r m a n a g e m e n t ; p r o g r a m m e r ' s a i d ; B A S I C4 . c o m m a n d s ; 2 2 - d i g i t a r i t h m e t i c ; m a c h i n e l a n g u a g e m o n i t o r . R u n t i m ep a c k a g e f o r o y a l t y - f r e e d i s t r i b u t i o n o y o u r p r o g r a m s . I n c l u d e s 1 5 0 p p .m a n u a l .

D I S K $ 8 4 . 9 5V I D E O B A S I C - 6 4T h i s s u p e r b g r a p h i c s a n s o u n d d e v e l o p m e n t p a c k a g e l e t s y o w r i t e s o f tw a r e f o d i s t r i b u t i o n w i t h o u t r o y a l t i e s . H a h i r e s , m u l t i c o l o r , s p r i t e a n t u r t l e g r a p h i c s ; a u d i o c o m m a n d s f o s i m p l e o c o m p l e x m u s i c a n d s o u n de f f e c t s , t w s i z e s o h a r d c o p y t m o s t d o m a t r i x p r i n t e r s ; g a m e f e a t u r e ss u c h a s p r i t e c o l l i s i o n d e t e c t i o n , l i g h t p e n , g a m e p a d d l e ; m e m o r ym a n a g e m e n t f o m u l t i p l e g r a p h i c s s c r e e n s , s c r e e n c o p y , e t c .

D I S K $ 5 9 . 9 5T A S - 6 4 F O S E R I O U S I N V E S T O R ST h i s s o p h i s t i c a t e d c h a r t i n g s y s t e m p l o t s m o r e t h a n 1 5 t e c h n i c a l i n d i c a t o r so s p l i t s c r e e n ; m o v i n g a v e r a g e s ; o s c i l l a t o r s ; t r a d i n g b r a n d s ; l e a s t s q u a r e s ;t r e n d l i n e s , s u p e r i m p o s e g r a p h s ; f i v e v o l u m e i n d i c a t o r s ; r e l a t i v e s t r e n g t h ;v o l u m e s ; m o r e . O n l i n e d a t a c o l l e c t i o n D J N R / S o W a r n e r . 1 7 5 p p . m a n u a l .T u t o r i a l . D I S K $ 8 4 . 9 5

F R E E C A T A L O G A s f o l i s t i n g o o t h e rA b a c u s S o f t w a r e f o C o m m o d o r e - 6 4 o r V l c - 2 0D I S T R I B U T O R SO n * I f * * I t ) | u l m :A D A M S O P T I n t e r . S t r v l . . .1 N o r w i c h A v a . A V G u B a u m a MR o e M i H . L a n e s . B r u s M ) 1 1 67 0 6 - 5 2 4 3 0 4 2 - 6 6 0 - 1 4 4 7W e s t Q l r m i t y : S w a t f t t :D A T A B E C K E R T I A L T f l ~M t r o w h o w t r 3 P 5 1 « w x i s r

A u t t J t t l a :C E L E C T R O N I C S4 1 6 L o g a n R o a dB r i t b a n e i Q u N n s0 7 - 3 9 7 - 0 8 0 6

V I S C O U N T E L E C T R O N I C S

C o m m o d o r e 6 i r e g . T . M . o C o m m o d o r e B u s i n e s s M a c h i n e s

A V A I L A B L E A C O M P U T E R S T O R E S , O W R I T E :

A b a c u s i l S o f t w a r eP . O . B O 7 2 1 1 G R A N D R A P I D S . M I C H . 4 9 5 1 0F o p o s t a g e h a n d l i n g , a d 1 4 . 0 0 ( U . S . a n C a n a d a ) , a d 1 8 . 0 0f o r f o r e i g n . M a k e p a y m e n t I U . S . d o l l a r s b c h e c k , m o n e y o r d e ro c h a r g e c a r d . ( M i c h i g a n R e s t a r t s a d 4 s a l e s t a x ) .F O Q U I C K S E R V I C E P H O N E 6 1 6 - 2 4 1 - 5 5 1 0

Page 220: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 220/224

Page 221: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 221/224

S E R I O U S 6 S O F T W A R EI N D I S P E N S I B L E T O O L S F O Y O U R C O M M O D O R E 6

P A S C A L - 6 4T h i s f u l l c o m p i l e r p r o d u c e s f a s t 6 5 0 2m a c h i n e c o d e . S u p p o r t s m a j o r d a t a T y p e s :R E A L . I N T E G E R . B O O L E A N . C H A R ,m u l t i p l e d i m e n s i o n a r r a y s . R E C O R D . F I L E .S E a n p o i n t e r . O f f e r s e a s y s t r i n g h a n d li n g , p r o c e d u r e s f o s e q u e n t i a l a n r e l a t i v ed a t a m a n a g e m e n t a n a b i l i t y t w r i t e I NT E R R U P T r o u t i n e s i P a s c a l ! E x t e n s i o n si n c l u d e d f o h i g h r e s o l u t i o n a n s p r i t eg r a p h i c s . L i n k t A S S E M / M O N m a c h i n el a n g u a g e . D I S K $ 3 9 . 9 5

D A T A M A T - 6 4T h i s p o w e r f u l d a t a b a s e m a n a g e r h a n d l e su t 2 0 0 0 r e c o r d s p e r d i s k . Y o s e l e c t t h s c r e e n f o r m a t u s i n g u t 5 f i e l d s p e r e c o r d . D A T A M A T 6 4 c a n s o r t o m u l t i p l ef i e l d s i a n c o m b i n a t i o n . C o m p l e t e r e p o r tw r i t i n g c a p a b i l i t i e s t a l C O M M O D O R E o A S C I I p r i n t e r s . D | S k $ 3 9 . 9 3A v a i l a b l e N o v e m b e r

T E X T O M A T - 6 4T h i s c o m p l e t e w o r d p r o c e s s o r d i s p l a y s 8 c o l u m n s u s i n g h o r i z o n t a l s c r o l l i n g . I m e m o r y e d i t i n g u t 2 4 . 0 0 0 c h a r a c t e r r sp l u s c h a i n i n g o l o n g e r d o c u m e n t s .C o m p l e t e t e x t f o r m a t t i n g , b l o c k o p e r a t i o n s ,f o r m l e t t e r s , o n - s c r e e n p r o m p t i n g .

A v a i l a b l e N o v e m b e r D I S K $ 3 9 . 9 5

A S S E M B L E RM O N I T O R - 6 4T h i s c o m p l e t e l a n g u a g e d e v e l o p m e n tp a c k a g e f e a t u r e s m a c r o a s s e m b l e r a n e x t e n d e d m o n i t o r . T h m a c r o a s s e m b l e ro f f e r s f r e e f o r m i n p u t , c o m p l e t e a s s e m b l e rl i s t i n g s w i t h s y m b o l t a b l e ( l a b e l ) , c o n d it i o n a l a s s e m b l y .T h e x t e n d e d m o n i t o r h a a l t h s t a n d a r dc o m m a n d s p l u s s i n g l e s t e p , q u i c k t r a c eb r e a k p o i n t , b a n k s w i t c h i n g a n m o r e .

D I S K $ 3 9 . 9 5

B A S I C - 6 4T h i s i f u l l c o m p i l e r t h a t w o n t b r e a k y o u rb u d g e t . I c o m p a t i b l e w i t h C o m m o d o r e 6 B A S I C . C o m p i l e s t o f a s t m a c h i n e c o d e .P r o t e c t y o u r v a l u a b l e s o u r c e c o d e b c o p i l i n g w i t h B A S I C 6 4 A v a i l a b l e D e c e m b e r D | S K $ 3 9 . 9 5

A D T R A I N I N G C O U R S ET h i s p a c k a g e i a i n t r o d u c t i o n t A D A . t h o f f i c i a l l a n g u a g e o t h D e p a r t m e n t o D e f e n s e a n t h p r o g r a m m i n g l a n g u a g e o t h f u t u r e . I n c l u d e s e d i t o r , s y n t a xc h e c k e r / c o m p i l e r a n d 1 1 0 p a g e s t e p b ys t e p m a n u a l d e s c r i b i n t t h l a n g u a g e .A v a i . a b . e N o v e m b e r D , S K $ 7 9 . g 5

O T H E R N E S O F T W A R E C O M I N G S O O N !A l s o f t w a r e p r o d u c t s f e a t u r e d a b o v eh a v e i n s i d e d i s k s t o r a g e p o c k e t s ,a n h e a v y 3 - r i n g - b i n d e r f o m a x im u d u r a b i l i t y a n e a s y r e f e r e n c e .

D E A L E R I N Q U I R I E S I N V I T E DA V A I L A B L E A C O M P U T E R S T O R E S , O W R I T E :

P . O . B O 7 2 1 1 G R A N D R A P I D S , M 4 9 5 1 0E i c l u a l v t U . S . D A T A I E C K E R P u b t o h a r e

F o p o a t a g a h a n d l i n g , a d $ 4 . 0 0 ( U . S . a n ' IC a n a d a ) , a d 1 6 . 0 0 t o f o r e i g n . M a k a p a y m e n ti U . S . d o l l a r a b c h t c k . m o n a y o r d a r o c h a r g a c a r d . ( M i c h i g a n R a s k J a n t s a d 4 t a l e s t a x . )F O Q U I C K S E R V I C E P H O N E ( 6 1 6 ) 2 4 1 - 5 5 1 0C o m m o d o r a 6 i r » g . T . M . o C o m m o d o r a B u s t n a u M a c h l n a a

Page 222: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 222/224

Page 223: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 223/224

Page 224: The Advanced Machine Language Book for the Commodore 64

8/6/2019 The Advanced Machine Language Book for the Commodore 64

http://slidepdf.com/reader/full/the-advanced-machine-language-book-for-the-commodore-64 224/224

T H A D V A N C E DM A C H I N EL A N G U A G E B O O KF O R T H E