the machine language book for the commodore 64

229

Upload: cubemanpdx

Post on 08-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Machine Language Book for the Commodore 64

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

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

Page 2: The Machine Language Book for the Commodore 64

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

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

Page 3: The Machine Language Book for the Commodore 64

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

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

T H M 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

A b a c u s S 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 Machine Language Book for the Commodore 64

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

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

S e c o n d P r i n t i n g , O c t o 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 ( O 1 9 8 3

C o p y r i g h t ( O 1 9 8 4

T r a n s l a t e d b G r e g D y k e m aD a t a B e c k e r G m b HM 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 yA b a c u s S o f t w a r eP . 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 y 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 f o r m o b a n 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 ,p h o t y c o p y i n g , r e c o r d i n g , o o t h e r w i s e , w i t h o u t t h p r i o rp e r m i s s i o n o D a t a B e c k e r , G m b H o A B A C U S S o f t w a r e , I n c .

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

Page 5: The Machine Language Book for the Commodore 64

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

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

P R E F A C E

P r o g r a m m i n g i m a c h i n e a n a s s e m b l y l a n g u a g e i o n o t h o s et h i n g s t h a t e v e r y o n e w o u l d l i k e t b a b l e t d o M a c h i n el a n g u a g e i e x t r e m e l y f a s t a n d v e r s a t i l e . M a n y p e o p l e t r t l e a r n i t b u m o s t q u i c k l y g i v e i u b e c a u s e i t i s t o

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

W i t h t h i s b o o k w w a n t t m a k e i p o s s i b l e f o t h o u s a n d s o C o m m o d o r e 6 u s e r s t u s m a c h i n e l a n g u a g e . W h a v e e n l i s t e dt h s e r v i c e s o L o t h a r E n g l i s c h a a u t h o r f o t h i s p u r p o s e .N o o n l y h a h w o r k e d o m a n y o o u o t h e r b o o k s , b u h i a l s o w e l l a c q u a i n t e d w i t h t h C o m m o d o r e o p e r a t i n g s y s t e m sa n p r o g r a m m i n g f o a l m o d e l s o t h C o m m o d o r e c o m p u t e r s i b o t h m a c h i n e l a n g u a g e a n a s s e m b l e r .

T g e t h m o s t o u 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 , y o m u s t c o n c e n t r a t e o t h f o l l o w i n g c h a p t e r s . W t h i n k t h a ty o w i l l b r e w a r d e d i t h e n d .

H a v e f u w i t h t h i s b o o k a n m u c h s u c c e s s w i t h y o u r o w nm a c h i n e l a n g u a g e p r o g r a m s .

Page 6: The Machine Language Book for the Commodore 64

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

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

Page 7: The Machine Language Book for the Commodore 64

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

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

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

1 I n t r o d u c t i o n2 T h e 6 5 1 0 M i c r o p r o c e s s o r . . 3 I n s t r u c t i o n s a n A d d r e s s i n g M o d e s o t h e 6 5 1 0 1

A T h L o a d i n s t r u c t i o n s 1 B T h e S t o r e i n s t r u c t i o n s . • • 3 C T h T r a n s f e r i n s t r u c t i o n s 3 D T h A r i t h m e t i c i n s t r u c t i o n s 3 E T h L o g i c a l i n s t r u c t i o n s 4 F T h C o m p a r e i n s t r u c t i o n s 4 G T h C o n d i t i o n a l b r a n c h i n g i n s t r u c t i o n s 5 H T h e J u m p i n s t r u c t i o n s 6 I T h I n c r e m e n t a n D e c r e m e n t i n s t r u c t i o n s 6 J T h F l a g m a n i p u l a t i o n i n s t r u c t i o n s 6 K T h S h i f t i n s t r u c t i o n s 6 L T h S u b r o u t i n e i n s t r u c t i o n s 7 M T h S t a c k i n s t r u c t i o n s 7 N T h I n t e r r u p t h a n d l i n g i n s t r u c t i o n s 7

4 E n t e r 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 s 8

5 T h A s s e m b l e r 8 6 S i n g l e - S t e p S i m u l a t o r f o r t h e 6 5 1 0 1 1 7 M a c h i n e L a n g u a g e P r o g r a m s o t h C o m m o d o r e 6 1 3 8 E x t e n d i n g B A S I C 1 7 9 I n p u t a n O u t p u t R o u t i n e s 1 8 1 B A S I C L o a d e r P r o g r a m s 1 9 1 1 6 5 1 0 D i s a s s e m b l e r 1 9 1 2 U s i n g M a c h i n e L a n g u a g e M o n i t o r 2 0 A p p e n d i x A A d d r e s s i n g M o d e s a n d O p e r a t i o n c o d e s 2 0 A p p e n d i x B G r o u p s o I n s t r u c t i o n s 2 0 A p p e n d i x C C o n v e r s i o n T a b l e s D e c i m a l H e B i n a r y . . . 2 1 0A p p e n d i x D T a b l e o 6 5 1 0 I n s t r u c t i o n C o d e s . % 2 1 A p p e n d i x E O p e r a t i o n c o d e s a n F l a g S e t t i n g s 2 1 A p p e n d i x F O r d e r i n g I n s t r u c t i o n s

f o O p t i o n a l P r o g r a m D i s k e t t e . . . 2 1 6

Page 8: The Machine Language Book for the Commodore 64

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

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

Page 9: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

1 I N T R O D U C T I O N

W h u s m a c h i n e l a n g u a g e ? A d v a n t a g e s a n d i s a d v a n t a g e s o

p r o g r a m m i n g i m a c h i n e l a n g u a g e

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

t h C o m m o d o r e 6 4 y o h a v e t h B A S I C p r o g r a m m i n g l a n g u a g ea v a i l a b l e a s o o n a y o t u r n y o u r c o m p u t e r o n W i t h B A S I Cy o u c a n p e r f o r m a l m o s t a l o t h t a s k s n e e d e d i h o m ec o m p u t i n g . I i e a s y t l e a r n t p r o g r a m i B A S I C . W h t h e n r s h o u l d y o u b o t h e r w i t h m a c h i n e l a n g u a g e ? I s n ' t i j u s t

r e l i c f r o m t h D a r k A g e s o c o m p u t i n g ?

L e t ' s c o m p a r e B A S I C t m a c h i n e l a n g u a g e .

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

W h a t a d v a n t a g e s o v e r B A S I C j u s t i f y t h a t y o u l e a r n n e p r o g r a m m i n g l a n g u a g e ?

Y o u r C o m m o d o r e 6 c o m e s w i t h t h B A S I C p r o g r a m m i n g l a n g u a g eb u i l t - i n . B A S I C i a a c r o n y m f o b e g i n n e r ' s A l l P u r p o s e

Page 10: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h C o m m o d o r e 6

S y m b o l i c i n s t r u c t i o n £ o d e a n d e s p i t e i t e a s e o m a s t e r y ,

i i q u i t e c a p a b l e o p e r f o r m i n g m o s t h o m e c o m p u t i n g t a s k s .B A S I C i h i g h l e v e l p r o g r a m m i n g l a n g u a g e s l i k e F O R T R A N ,P a s c a l , a n C O B O L , T h e s e l a n g u a g e s a r o f t e n c a l l e d p r o b l e m -o r i e n t e d l a n g u a g e s b e c a u s e t h e y a r i n t e n d e d t b u s e d f o s o l v i n g p r o b l e m s i v a r i o u s f i e l d s s u c h a m a t h e m a t i c s ,s c i e n c e o b u s i n e s s . T h c o u n t e r p a r t o p r o b l e m - o r i e n t e dl a n g u a g e s a r e t h e m a c h i n e - o r i e n t e d l a n g u a g e s s u c h a F O R T H ,a n r e q u i r e m o r e d e t a i l e d k n o w l e d g e o t h c o m p u t e rh a r d w a r e . M a c h i n e l a n g u a g e i t h e x t r e m e m e m b e r o t h i sc a t e g o r y o l a n g u a g e s .

B i t s e l f , t h C o m m o d o r e 6 c a n n o t u n d e r s t a n d B A S I C a t a l l .H o w c a n i e x e c u t e t h B A S I C c o m m a n d s t h a t y o t y p e i a t h k e y b o a r d i i d o e s n ' t s p e a k B A S I C ? T h e C o m m o d o r e 6 c o n t a i n s a " o p e r a t i n g s y s t e m " w h i c h i n c l u d e s B A S I Ci n t e r p r e t e r . T h i s i n t e r p r e t e r c o n v e r s e s w i t h y o i B A S I C .T h C o m m o d o r e 6 c o n v e r t s t h B A S I C c o m m a n d s a n s t a t e m e n t si n t o s e r i e s o e x e c u t a b l e 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 s .Y o u d o n ' t e v e n s e t h i s h a p p e n i n g . I t a k e s p l a c e" a u t o m a t i c a l l y " .

L e t ' s t a k e l o o k a s i m p l e e x a m p l e o h o t h B A S I Ci n t e r p r e t e r w o r k s :

P R I N T " H E L L O "

Page 11: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

W h e n y o e n t e r t h i s s t a t e m e n t a n p r e s s < R E T U R N > f t h i n t e r p r e t e r r e a d s t h l i n e c h a r a c t e r b c h a r a c t e r .O n o t h j o b s o t h i n t e r p r e t e r i t r e c o g n i z e t h c o m m a n d s ( a l s o c a l l e d k e y w o r d s ) t h a t m a k e u t h B A S I Cl a n g u a g e . W h e n i f i n d s t h f i r s t w o r d i t h l i n e ( P R I N T ) ,t h i n t e r p r e t e r l o o k s i i t c o m m a n d t a b l e t d e t e r m i n e i t h w o r d i B A S I C k e y w o r d . T h c o m m a n d t a b l e c o n t a i n s a l o t h B A S I C k e y w o r d s : G O T O r F O R , I N P U T , P R I N T , e t c .A s s o c i a t e d w i t h e a c h B A S I C k e y w o r d i t h l o c a t i o n o f t h er o u t i n e i t h C o m m o d o r e 6 o p e r a t i n g s y s t e m w h i c h p e r f o r m st h a c t i o n s r e q u i r e d b y t h a t B A S I C k e y w o r d . B e l o w i s i m p l i f i e d e x a m p l e o t h c o m m a n d t a b l e :

B A S I C M E M O R Y L O C A T I O N W H I C HK E Y W O R D P E R F O R M S R E Q U I R E D A C T I O N S

G O T O 4 3 1 6 8I 4 3 3 0 4

I N P U T 4 3 9 6 7

P R I N T 4 3 6 8 0

I t h i n t e r p r e t e r f i n d s t h k e y w o r d i t h c o m m a n d t a b l e ,i k n o w s w h a t p a r t o f t h e o p e r a t i n g s y s t e m i t c a r r y o u t h a t B A S I C c o m m a n d . I o u r e x a m p l e , t h i n t e r p r e t e r s e a r c h e st h c o m m a n d t a b l e f o r t h e w o r d P R I N T . I f i n d s t h k e y w o r da n d n o t e s t h a t t h m e m o r y l o c a t i o n w h i c h p e r f o r m s t h P R I N Ts t a t e m e n t b e g i n s a l o c a t i o n 4 3 6 8 0 . T h e r e f o r e , t h i n t e r p r e t e r l e t s t h " p r o g r a m " s e g m e n t ( u s u a l l y c a l l e dr o u t i n e o m a c h i n e - l a n g u a g e r o u t i n e ) l o c a t e d a 4 3 6 8 0p e r f o r m t h P R I N T c o m m a n d .

Page 12: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h r o u t i n e a 4 3 6 8 0 c o n t i n u e s t r e a d m o r e o t h a t s a m el i n e a l s o c h a r a c t e r b c h a r a c t e r . N e x t i f i n d sq u o t a t i o n m a r k w h i c h t e l l s P R I N T r o u t i n e t h a t t e x t f o l l o w s .A c c o r d i n g t h e t h e r u l e s o B A S I C , t h C o m m o d o r e 6 e c h o so n t o t h s c r e e n e a c h o t h n e x t c h a r a c t e r s u t t h e n d i n gq u o t a t i o n m a r k . S t h w o r d H E L L O a p p e a r s o t h s c r e e n . I n a d d i t i o n a l c h a r a c t e r s a p p e a r o t h l i n e f o l l o w i n g t h e n d i n g q u o t a t i o n m a r k , t h r o u t i n e k n o w s t h a t i t j o i c o m p l e t e a n r e s p o n d s w i t h R E A D Y . T h e B A S I C i n t e r p r e t e r i n o r e a d y f o a n o t h e r c o m m a n d .

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

e x a c t l y t h p u r p o s e o t h B A S I C i n t e r p r e t e r t i n s u l a t ey o f r o m t h d r u d g e r y a n h a r d w o r k o m a c h i n e l a n g u a g e . W h t h e n l e a r n m a c h i n e l a n g u a g e ?

M a c h i n e l a n g u a g e i c o n s i d e r a b l y f a s t e r t h a n B A S I C .

W h a t s p e e d a d v a n t a g e s d o e s m a c h i n e l a n g u a g e h a v e o v e r B A S I Ca n w h a t a c c o u n t s f o r t h i s a d v a n t a g e ? I o r d e r f o y o u rc o m p u t e r u n d e r s t a n d B A S I C , i h a B A S I C i n t e r p r e t e r w h i c hr e c o g n i z e s a n e x e c u t e s i n d i v i d u a l B A S I C c o m m a n d s . T h i n t e r p r e t e r i t s e l f i w r i t t e n i m a c h i n e l a n g u a g e .

T p e r f o r m s i m p l e B A S I C c o m m a n d , t h i n t e r p r e t e r m u s t d

s e v e r a l t h i n g s . s i m p l e B A S I C s t a t e m e n t i P O K E 1 0 2 4 , 1 0 .

Page 13: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h i n t e r p r e t e r s e a r c h e s f o t h f i r s t w o r d i t h s t a t e m e n t ; i f i n d s t h k e y w o r d P O K E i i t c o m m a n d t a b l e ;i k n o w s t e x p e c t t w o a r g u m e n t s ; i f i n d s t h f i r s ta r g u m e n t 1 0 2 4 a n d c o n v e r t s i t b i n a r y ( r e m e m b e r t h a t t h c o m p u t e r w o r k s i b i n a r y ) ; i f i n d s t h s e c o n d a r g u m e n t 1

a n c o n v e r t s i t b i n a r y ; i w r i t e s t h i s s e c o n d v a l u e i n t ot h l o c a t i o n s p e c i f i e d b y t h e f i r s t a r g u m e n t . T h i s s t a t e m e n tt a k e s a b o u t t w m i l l i s e c o n d s o t h o u s a n d t h s o s e c o n d t p e r f o r m .

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

L D # 1 S T 1 0 2 4

T h e s e t w o i n s t r u c t i o n s t a k e s i m i c r o s e c o n d s o m i l l i o n t h so s e c o n d . T h i s i l e s s t h a n l / 3 0 0 t h t h t i m e a B A S I C .

m a c h i n e l a n g u a g e p r o g r a m i f r o m 1 t 1 0 0 0 t i m e s f a s t e rt h a n a e q u i v a l e n t p r o g r a m w r i t t e n i B A S I C .

S o m e t a s k s s u c h a s o r t i n g o c a l c u l a t i n g m a t h e m a t i c a lf o r m u l a a r v e r y t i m e - c o n s u m i n g . I t h e r e a r l a r g e a m o u n to d a t a , t h e s e t a s k s m a e a s i l y t a k e h o u r s t c o m p l e t e u s i n g

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

Page 14: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

S o m e t a s k s c a n n o t b p e r f o r m e d u s i n g B A S I C . A e x a m p l e i

a t t e n d i n g t t h " i n t e r r u p t s " t h a t t e m p o r a r i l y r e q u i r e t h C o m m o d o r e 6 t s t o p w h a t i t ' s d o i n g t o s e e i t h R U N / S T O Pk e i p r e s s e d . S e r v i c i n g i n t e r r u p t s m u s t b d o n e b m a c h i n e l a n g u a g e r o u t i n e .

T h i s m e a n s t h a t y o c a n n o t u t i l i z e t h f u l l c a p a b i l i t i e s o t h C o m m o d o r e 6 w i t h o u t m a c h i n e l a n g u a g e . T h i s i e s p e c i a l l y t r u e f o h i g h r e s o l u t i o n g r a p h i c s a n t h m u s i cs y n t h e s i z e r o n t h e C o m m o d o r e 6 4

A n o t h e r i m p o r t a n t p o i n t a b o u t 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 gi i t u s o m e m o r y . w e l l - w r i t t e n m a c h i n e l a n g u a g e

p r o g r a m m a b t e t i m e s s m a l l e r t h a n a e q u i v a l e n t B A S I Cp r o g r a m . I p r o g r a m w r i t t e n i B A S I C i n o v e r y l a r g e ;b u I p r o g r a m w r i t t e n i m a c h i n e l a n g u a g e i l a r g e .

T h s a m e h o l d s t r u e f o d a t a s t o r a g e . Y o c a c r e a t e a n m a i n t a i n c o m p a c t d a t a s t r u c t u r e s i m a c h i n e l a n g u a g e t h a ta r n o p o s s i b l e i B A S I C . F o e x a m p l e , B A S I C r e q u i r e s t w ob y t e s t r e p r e s e n t i n t e g e r v a l u e s b e t w e e n a n 2 5 5 . I m a c h i n e l a n g u a g e , y o u c a r e p r e s e n t i n t e g e r v a l u e s b e t w e e na n 2 5 i o n b y t e f o e a c h v a r i a b l e . T h u s o n e - h a l f o t h s t o r a g e s p a c e f o r s u c h v a l u e s i w a s t e d u s i n g B A S I C . M a c h i n el a n g u a g e l e t s y o c h o o s e t h m o s t o p t i m a l d a t a s t r u c t u r e f o e a c h p r o b l e m .

T b f a i r , t h e r e a r d i s a d v a n t a g e s t u s i n g m a c h i n e

Page 15: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

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

T e s t 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 s i a n o t h e r d i f f i c u l t yu n l e s s y o u h a v e t h a p p r o p r i a t e t o o l s . W h a v e i n c l u d e d t h l i s t i n g f o 6 5 1 0 s i m u l a t o r p r o g r a m t h a t n o t o n l y t e a c h e s

y o t h 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 s b u h e l p s y o f i n de r r o r s i y o u r p r o g r a m s .

A l t h o u g h 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 h a s o m e d r a w b a c k s ,m a n y t a s k s c a n n o t b s o l v e d w i t h o u t m a c h i n e l a n g u a g e a n m a n y o t h e r s r e q u i r e y o t g e t h e l a s t b i t o p e r f o r m a n c ef r o m y o u r c o m p u t e r .

A f t e r y o u h a v e w r i t t e n y o u r f i r s t m a c h i n e l a n g u a g e p r o g r a m ,y o u ' l l s e t h a t i i s n ' t s d i f f i c u l t . W e h o p e t h a t y o u f i n dt h l e s s o n s o t h i s b o o k h e l p f u l a n d t h a t t h e y i n s p i r e y o t s o l v e y o u r o w c o m p u t i n g p r o b l e m s i m a c h i n e l a n g u a g e .

Page 16: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

2 T h 6 5 1 0 M i c r o p r o c e s s o r

B e f o r e y o b e g i n p r o g r a m m i n g i m a c h i n e l a n g u a g e , y o u n e e dt b e c o m e a c q u a i n t e d w i t h t h p r o c e s s o r i t s e l f . L e t ' sc l a r i f y s o m e t e r m s f i r s t . W e ' l l b e g i n w i t h t h c o n s t r u c t i o no t h p r o c e s s o r .

T h e 6 5 1 0 m i c r o p r o c e s s o r b e l o n g s t t h f a m i l y o 6 5 > Xp r o c e s s o r s t h a t a r e f o u n d i m o s t C o m m o d o r e c o m p u t e r s . T h e6 5 1 0 p r o c e s s o r c o n t a i n s s e o r e g i s t e r s w h i c h a r u s e d b a l o p e r a t i o n s .

H o c a w e d e s c r i b e t h r e g i s t e r s ?

m i c r o p r o c e s s o r w o r k s d i g i t a l l y . I c a o n l y d i s t i n g u i s hb e t w e e n t w o c o n d i t i o n s . W e c a n t h i n k o t h e s e t w o c o n d i t i o n sl i k e s w i t c h w h i c h c a b e i t h e r o a n d o f f ( o a n 0 )

s i n g l e s w i t c h c a h a v e o n l y t w o s t a t e s . B i t s e l f s w i t c hi n o v e r y u s e f u l , s m u l t i p l e s w i t c h e s a r c o m b i n e d i n t or e g i s t e r s .

s i n g l e s w i t c h i t h p r o c e s s o r i c a l l e d b i ( f r o mb _ i n a r y d i g i j : ) . g r o u p o e i g h t b i t s i c a l l e d b y t e . T h r e g i s t e r s o t h 6 5 1 0 p r o c e s s o r c o n t a i n s a % g r o u p o e i g h tb i t s ( o o n b y t e ) i a r r a n g e d l i k e t h i s :

b i t n u m b e r 7 6 5 4 3 2 1 0 ( p o w e r o 2 c o n t e n t s 0 1 1 0 1 0 0 1

F I 2 .

Page 17: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h u p p e r r o w i l l u s t r a t e s t h e b i t n u m b e r i n g c o n v e n t i o n t h a ti c o m m o n l y u s e d t h r o u g h o u t t h i s b o o k . T h e b i t s a r n u m b e r e df r o m z e r o t o s e v e n . B e n e a t h e a c h b i n u m b e r a r t h c o n t e n t so t h e b i t s ; e i t h e r o a 1 W h i l e b i t c a n r e p r e s e n tt w c o n d i t i o n s ( a n d t h e r e f o r e o n l y t w v a l u e s ) , y o u c a r e p r e s e n t l a r g e r r a n g e w i t h b i t s .

H e r e ' s t h n u m b e r i n g s y s t e m t h a t y o a r m o s t f a m i l i a r w i t ht h d e c i m a l s y s t e m .

d e c i m a l p o s i t i o n 3 1 ( p o w e r o 1 0 c o n t e n t s 2

F I 2 .

T h e s e p o s i t i o n s a r a l s o n u m b e r e d , t h i s t i m e f r o m z e r o t t h r e e .

H o d y o c a l c u l a t e t h v a l u e o t h i s n u m b e r ?E a c h d i g i t h a v a l u e b e t w e e n z e r o a n n i n e a n d t h e n e x tp o s i t i o n h a v a l u e t e t i m e s g r e a t e r . S t a r t i n g f r o m t h r i g h t m o s t d e c i m a l p o s i t i o n :

4 * 1 0 ° 2 * 1 0 *2 * 1 02 * 1 0

2

7 * 1 0 27 * 1 0 * 1 0

7 * 1 0 07 0

5 7 2 4

5 * 1 0 3\ - 5 * 1 0 * 1 0 * 1 0

5 * 1 0 0 0i - 5 0 0 0

Page 18: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

L i k e w i s e , y o u c a n d e t e r m i n e t h c o n t e n t s o t h r e g i s t e r su s i n g t h b i n a r y n u m b e r s y s t e m . T h e y a r c a l l e d b i n a r yn u m b e r s b e c a u s e e a c h p o s i t i o n a l l o w s t w o v a l u e s i n s t e a d o t e n . A c c o r d i n g l y , t h n e x t h i g h e s t p o s i t i o n i n o t e t i m e sg r e a t e r , b u o n l y t w i c e t h p r e v i o u s v a l u e . S y o c a c a l c u l a t e t h c o n t e n t s o t h r e g i s t e r :

1 * 2 ° 0 * 2 1 0 * 1 * 0 * 2 4 1 * 2 5 1 * 2 6 0 * 2 71 * 0 * 0 * + 1 * 8 0 * 1 6 1 * 3 2 1 * 6 4 0 * 1 2 8

+ + + + 3 6 4 1 0

T h u s t h c o n t e n t s o t h r e g i s t e r i F I 2 . i 1 0 5 . T h e s et r o u b l e s o m e c a l c u l a t i o n s c a b s i m p l i f i e d , i y o f i r s tc a l c u l a t e t h v a l u e o e a c h b i p o s i t i o n . T h i s i a n a l a g o u st m e m o r i z i n g t h d e c i m a l p o s i t i o n s .

i t h i s

b i p o s i t i o n

I e q u i v a l e n tt t h i s

d e c i m a l v a l u e2 2 2 2 2 2 2

2

1

3

6

1 2

1

Page 19: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

W h a t i t h m a x i m u m v a l u e o t h r e g i s t e r ? I a l o t h b i p o s i t i o n s o t h r e g i s t e r h a v e t h v a l u e o n e , t h e i r s u y i e l d s 1 + 2 + 4 + 8 + 1 6 + 3 2 + 6 4 + 1 2 2 5 5 . T h g r e a t e s t v a l u e t h a t c a b r e p r e s e n t e d i e i g h t b i t s i 2 5 5 .

S t o t a l o f 2 5 6 ( t h r u 2 5 5 ) d i f f e r e n t v a l u e s c a b r e p r e s e n t e d i r e g i s t e r .

B u b i n a r y n u m b e r s a r t e d i o u s t m a n i p u l a t e . F o r t h i sr e a s o n , a a l t e r n a t i v e r e p r e s e n t a t i o n i i n t r o d u c e d . I r e q u i r e s f e w e r d i g i t s a n i t h e r e f o r e m o r e c o n v e n i e n t t u s e . I y o d i v i d e a 8 - b i t b i n a r y n u m b e r i n t o t w 4 - b i tb i n a r y n u m b e r s , e a c h 4 - b i t n u m b e r c a r e p r e s e n t 1 d i f f e r e n tv a l u e s . I y o c o n s t r u c t n u m b e r s y s t e m w i t h 1 d i f f e r e n td i g i t s , t h e n y o c a e x p r e s s e a c h 8 - b i t b i n a r y n u m b e r w i t hj u s t t w d i g i t s .

b i p o s i t i o n 7 6 5 4 3 2 1 0b i n a r y c o n t e n t s 0 1 1 0 1 0 0 1h e x a d e c i m a l c o n t e n t s 9

F I 2 .

T h h e x a d e c i m a l ( b a s e 1 6 n u m b e r i n g s y s t e m u s e s 1 d i f f e r e n td i g i t s f o t h i s p u r p o s e . E a c h b y t e i d i v i d e d i n t o t w h a l f -b y t e s , c a l l e d n y b b l e s . n y b b l e c a n h a v e v a l u e s f r o m t

1 5 b u t h d e c i m a l n u m b e r s y s t e m o n l y h a d i g i t s f r o m t 9 I t h h e x a d e c i m a l n u m b e r s y s t e m , t h d i g i t s f r o m 1 t h r u

1 a r r e p r e s e n t e d b t h l e t t e r s A t h r u F T h h e x a d e c i m a ld i g i t s a r a r r a n g e d l i k e t h i s :

1

Page 20: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h i sB i n a r yN y b b l e6 0 0 0

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

I e q u i v a l e n tt t h i s

H e d i g i t

A n h a t h i s d e c i m a l

v a l u e

1 1 1 1 1 1

F o t h e x a m p l e i F I 2 . 3 , t h c o n t e n t s o t h r e g i s t e rh a v e h e x a d e c i m a l v a l u e 6 9 I o r d e r t d i s t i n g u i s h b e t w e e nt h v a r i o u s n u m b e r s y s t e m s , y o d e n o t e h e x a d e c i m a l n u m b e rw i t h p r e c e d i n g d o l l a r s i g n $ a n b i n a r y n u m b e r w i t hp r e c e d i n g p e r c e n t s i g n %

A p p e n d i x i D e c i m a l , H e x a d e c i m a l , B i n a r y c o n v e r s i o nt a b l e . T h r e m a i n d e r o t h i s b o o k u s e s h e x a d e c i m a l n u m b e r sm o s t o f t e n , s i n c e i t i s e a s i l y r e p r e s e n t a b l e a n c o n v e r t a b l e i n t o t h b i n a r y r e p r e s e n t a t i o n o f t h e p r o c e s s o r .

N o l e t ' s t a k e l o o k a t h m i c r o p r o c e s s o r r e g i s t e r s .

T h 6 5 1 0 h a t o t a l o s i r e g i s t e r s , f i v e a r e i g h t - b i tr e g i s t e r s a n t h s i x t h i s i x t e e n - b i t r e g i s t e r . L e t ' s

1

Page 21: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

e x a m i n e t h r e g i s t e r s i n d i v i d u a l l y .

T h a c c u m u l a t o r i t h m o s t i m p o r t a n t r e g i s t e r i t h m i c r o p r o c e s s o r . I i t h u n i v e r s a l w o r k i n g r e g i s t e r , u s e df o a l m o s t a l o p e r a t i o n s . A l a r i t h m e t i c a n l o g i c a lo p e r a t i o n s , a n a l m o s t a l o t h c o m p a r i s o n i n s t r u c t i o n su s t h a c c u m u l a t o r .

T h X - r e g i s t e r i t h s e c o n d r e g i s t e r i t h p r o c e s s o r . T h i sr e g i s t e r i u s e d t o g e t h e r w i t h t h a c c u m u l a t o r w h e n w o r k i n gw i t h t a b l e s . I f u n c t i o n s a t h c o u n t e r o p o i n t e r t t h i n d i v i d u a l t a b l e e l e m e n t s . F o t h i s r e a s o n t h i s r e g i s t e r i

a l s o c a l l e d a i n d e x r e g i s t e r .

T h Y - r e g i s t e r i a i n d e x r e g i s t e r l i k e t h e X - r e g i s t e r a n s e r v e s s i m i l a r p u r p o s e s .

T h p r o g r a m c o u n t e r i 1 6 - b i t r e g i s t e r . I t c o n t e n t si n d i c a t e t h m e m o r y l o c a t i o n f r o m w h i c h t h n e x t i n s t r u c t i o n

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

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

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 g i v e s i n f o r m a t i o n a b o u t t h

1

Page 22: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

r e s u l t o f t h e l a s t e x e c u t e d i n s t r u c t i o n . T h i s r e g i s t e r i t h f o u n d a t i o n f o t h d e c i s i o n m a k i n g a n c o n d i t i o n a lb r a n c h i n g i n s t r u c t i o n s . S e v e n o t h e i g h t b i t s o f t h es t a t u s r e g i s t e r a r u s e d a f l a g s . Y o c a e x a m i n e a n c o n d i t i o n a l l y b r a n c h d e p e n d i n g o t h s e t t i n g o p a r t i c u l a r f l a g . A f l a g c a n b e i t h e r s e ( = 1 ) o c l e a r( = 0 ) . 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 i m a d e o f t h e f o l l o w i n gf l a g s :

b i p o s i t i o n 7 6 5 4 3 2 1 0f l a g t y p e N V - B D I Z C

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

C a r r y T h c a r r y f l a g c o n t a i n s t h c a r r y g e n e r a t e db a a d d i t i o n , a n i s e i t h r e s u l t i g r e a t e rt h a n 2 5 a n t h e r e f o r e c a n n o t b c o n t a i n e d i e i g h tb i t s o t h a c c u m u l a t o r .

Z e r o T h z e r o f l a g i s e i t h r e s u l t o a o p e r a t i o n i z e r o .

I n t e r r u p t D i s a b l e T h i s f l a g d e t e r m i n e s i i n t e r r u p t s a r p e r m i t t e d i p r o g r a m . T h i s f l a gd o e s n o i n t e r e s t u s a t t h m o m e n t .

1

Page 23: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

D e c i m a l T h d e c i m a l f l a g d e t e r m i n e s i a r i t h m e t i ci c a r r i e d o u i t h d e c i m a l m o d e .

B r e a k T h b r e a k f l a g i n d i c a t e s i e x e c u t i o n w a sh a l t e d b B R K i n s t r u c t i o n .

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

N e g a t i v e T h i s f l a g i s e i t h r e s u l t o a o p e r a t i o n r e s u l t s i n v a l u e g r e a t e r t h a n 1 2 ( b i t

i s e t ) . T h d e s i g n a t i o n n e g a t i v e c o m e s f r o m t h f a c t t h a t v a l u e s o v e r $ 7 F c a n b i n t e r p r e t e d a n e g a t i v e n u m b e r s .

m i c r o p r o c e s s o r m u s t h a v e p l a c e t g e d a t a a n s t o r ed a t a . T h c o m p u t e r ' s m e m o r y s e r v e s t h i s p u r p o s e . M e m o r y i d i v i d e d i n t o i n d i v i d u a l c e l l s c o n t a i n i n g b i t s e a c h , t h s a m e s i z e a t h a c c u m u l a t o r a n a n r e g i s t e r s . I o r d e rt a c c e s s t h m e m o r y , i m u s t b p o s s i b l e t s e l e c ts p e c i f i c m e m o r y l o c a t i o n . T h i s s e l e c t i o n i c a l l e da d d r e s s i n g m e m o r y . W e g i v e e a c h m e m o r y l o c a t i o n n u m b e r o a d d r e s s . W i t h b i t s , t h m i c r o p r o c e s s o r c a a d d r e s s c e l l sf r o m t o 2 5 5 f o t o t a l o 2 5 m e m o r y c e l l s . T h i s i f a t o f e f o m o s t a p p l i c a t i o n s . F o t h i s r e a s o n , t h m i c r op r o c e s s o r u s e s 1 6 - b i t s f o t h a d d r e s s . W i t h 1 b i t s , t h

m i c r o p r o c e s s o r c a a d d r e s s 2 1 6 5 5 3 6 m e m o r y l o c a t i o n s .

1

Page 24: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h i s i c a l l e d 1 6 - b i t a d d r e s s b u s . T s u m m a r i z e a t h 6 5 1 0 m i c r o p r o c e s s o r c a a d d r e s s 6 5 5 3 6 m e m o r y l o c a t i o n s ; b

e a c h m e m o r y l o c a t i o n c a c o n t a i n v a l u e f r o m t 2 5 5 . F o e a s e o h a n d l i n g , 2 1 1 0 2 4 b y t e s i c a l l e d k i l o b y t e o I K T h e r e f o r e , t h p r o c e s s o r c a a d d r e s s 6 4 * 1 0 2 4 6 5 5 3 6 o 6 4 K . T h i s i t h e n t i r e a d d r e s s r a n g e o t h C o m m o d o r e 6 4

N o w y o u c a u n d e r s t a n d t h s i g n i f i c a n c e o t h p r o g r a mc o u n t e r . T h p r o g r a m c o u n t e r c o n t a i n s 1 6 - b i t v a l u e . T h i s1 6 - b i t v a l u e i t h a d d r e s s o f t h e n e x t i n s t r u c t i o n t h a t t h m i c r o p r o c e s s o r i t f e t c h f r o m m e m o r y a n e x e c u t e .

A i n s t r u c t i o n f o t h m i c r o p r o c e s s o r c a b r e p r e s e n t e d b v a l u e b e t w e e n a n 2 5 5 . T h e 6 5 1 0 m i c r o p r o c e s s o r c a h a v e

m a x i m u m o f 2 5 6 d i f f e r e n t i n s t r u c t i o n s . H o w e v e r , n o t a l lt h c o d e s h a v e m e a n i n g o t h 6 5 1 0 ; f e w e r t h a n 2 5 i n s t r u c t i o n s e x i s t . B A S I C c o m m a n d s a r n a t u r a l l y n o i n c l u d e d .

1

Page 25: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

3 I n s t r u c t i o n s a n A d d r e s s i n g M o d e s o t h 6 5 1 0

O f t h e 2 5 p o s s i b l e 8 - b i t c o d e s , 1 5 a r l e g a l i n s t r u c t i o n sf o t h 6 5 1 0 , T h e s e i n c l u d e s e v e r a l s i m i l a r i n s t r u c t i o n s ,t h a t a r d i f f e r e n t o n l y b a d d r e s s i n g m o d e . T h e r e a r o n l y5 e n t i r e l y d i f f e r e n t i n s t r u c t i o n s o t h 6 5 1 0 . T h e s ei n s t r u c t i o n s a r e a s y t l e a r n . T h e y a r i n t r o d u c e d t y o

i g r o u p s .

A i n s t r u c t i o n i r e p r e s e n t e d i t h c o m p u t e r a a 8 - b i tb i n a r y n u m b e r . E a c h p a r t i c u l a r 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 nh a s p e c i f i c b i n a r y v a l u e . T h e m i c r o p r o c e s s o r k n o w s w h a ta c t i o n s t t a k e b a s e d o t h i s b i n a r y v a l u e .

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 s a r g i v e n m n e m o n i c - n a m e s .m n e m o n i c i t h r e e c h a r a c t e r a b b r e v i a t i o n f o m a c h i n el a n g u a g e o p e r a t i o n . F o e x a m p l e , t h m n e m o n i c L D s t a n d s f o I . o a D A c c u m u l a t o r . T h e s e m n e m o n i c s w i l l b e c o m e m o r e f a m i l i a rt y o a w d i s c u s s t h e m t h r o u g h o u t t h e b o o k .

N o l e t ' s t a k e l o o k a t h s p e c i f i c i n s t r u c t i o n s :

1

Page 26: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

A T h L O A D i n s t r u c t i o n sT h L O A D i n s t r u c t i o n s g e t d a t a f r o m m e m o r y a n p l a c e i i n t o r e g i s t e r . T h e r e a r t h r e e w o r k i n g r e g i s t e r s i t h p r o c e s s o r ( t h e a c c u m u l a t o r , t h X - r e g i s t e r a n d t h e Y r e g i s t e r ) . E a c h h a c o r r e s p o n d i n g l o a d i n s t r u c t i o n s .

L D A L o a D A c c u m u l a t o rL D L o a D r e g i s t e rL D L o a D r e g i s t e r

T h e 6 5 1 0 p r o c e s s o r h a d i f f e r e n t a d d r e s s i n g m o d e s . A a d d r e s s i n g m o d e t e l l s t h 6 5 1 0 h o t c a l c u l a t e t h a d d r e s s ( o l o c a t i o n ) o f t h e o p e r a n d .

I t h e x a m p l e s t h a t f o l l o w , w s h o w y o c o r r e s p o n d i n g" p s e u d o - B A S I C " s t a t e m e n t s t i l l u s t r a t e t h m a c h i n el a n g a u g e i n s t r u c t i o n s i f a m i l i a r n o t a t i o n .

1 I m m e d i a t e A d d r e s s i n gL D # 1

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

p r e c e d i n g t h v a l u e t b l o a d e d . I m m e d i a t ea d d r e s s i n g m e a n s t h a t t h a c c u m u l a t o r i l o a d e dw i t h t h v a l u e w h i c h f o l l o w s i t i t h i s c a s e 1 0

T h c o r r e s p o n d i n g p s e u d o - B A S I C i n s t r u c t i o n i s

A = 1 0

1

Page 27: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h i s a d d r e s s i n g m o d e i u s e d t l o a d r e g i s t e r

w i t h c o n s t a n t . I a l s o w o r k s w i t h t h a n r e g i s t e r s :

L D # $ 7 F o L D #

H e r e t h X - r e g i s t e r i l o a d e d w i t h t h v a l u e $ 7 ( 1 2 7 i d e c i m a l ) a n d t h e Y - r e g i s t e r w i t h t h v a l u ez e r o ( 0 ) .

W h e n u s i n g t h i m m e d i a t e a d d r e s s i n g m o d e , t h v a l u et b l o a d e d i p a r t o t h p r o g r a m . T h i n s t r u c t i o n a n d t h e v a l u e a r p l a c e d o n a f t e r t h o t h e r i t w a d j a c e n t m e m o r y l o c a t i o n s . F o e x a m p l e , i t h m a c h i n e l a n g u a g e p r o g r a m i l o c a t e da a d d r e s s 1 2 0 0 , t h p r o g r a m c o u n t e r c o n t a i n s t h v a l u e 1 2 0 0 . T h e 6 5 1 0 m i c r o p r o c e s s o r g e t s t h i n t r u c t i o n a 1 2 0 0 a n s e e s t h a t i t v a l u e i $ A o d e c i m a l 1 6 9 . I k n o w s t h a t t h i n s t r u c t i o n i L D # S i p l a c e s t h c o n t e n t s c o n t a i n e d i t h n e x t m e m o r y l o c a t i o n 1 2 0 1 i n t o t h a c c u m u l a t o r ( s e e

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

1

Page 28: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

s t a r t i n g a 1 2 0 2 ,

c o n t e n t s — > A I d a t aI !

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2

2 A b s o l u t e A d d r e s s i n gT h i s a d d r e s s i n g m o d e i u s e d i r e g i s t e r i b l o a d e d w i t h t h c o n t e n t s o p a r t i c u l a r m e m o r yl o c a t i o n . T h i s i d i f f e r e n t f r o m t h i m m e d i a t ea d d r e s s i n g m o d e w h i c h l o a d s t h r e g i s t e r w i t hc o n s t a n t v a l u e .

L D A $ C 0 A F

H e r e t h a c c u m u l a t o r i l o a d e d w i t h t h c o n t e n t s o

m e m o r y l o c a t i o n $ C 0 A F . H o i t h i s i n s t r u c t i o nr e p r e s e n t e d i m e m o r y ? T h e a d d r e s s $ C 0 A F i s 1 6 b i n u m b e r . m e m o r y l o c a t i o n c a o n l y h o l d b i t s .T h s o l u t i o n i t d i v i d e t h 1 6 - b i t a d d r e s s i n t ot w 8 - b i t n u m b e r s . T h f o l l o w i n g c o n v e n t i o n i u s e df o t h i s i m m e d i a t e l y f o l l o w i n g t h i n s t r u c t i o n i

t h l e a s t s i g n i f i c a n t p a r t o t h a d d r e s s ( l o w -b y t e ) a n f o l l o w e d b t h t h m o s t s i g n i f i c a n t p a r t( h i g h - b y t e ) .

! ! c o n t e n t s — > A A C

1 i

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2 1 2 0 3

2

Page 29: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

I t h i s e x a m p l e , t h i n s t r u c t i o n c o d e i $ A ( 1 7 3 ) .T h a b s o l u t e a d d r e s s f o l l o w s : w i t h t h l o w - b y t ef i r s t , $ A F ( 1 7 5 ) a n f i n a l l y t h h i g h - b y t e $ C ( 1 9 2 ) . A f t e r t h i n s t r u c t i o n i e x e c u t e d , t h p r o g r a m c o u n t e r i i n c r e m e n t e d b t h r e e . T h c o r r e s p o n d i n g i n s t r u c t i o n i p s e u d o - B A S I C i s

P E E K ( $ C 0 A F )

T h i s i n s t r u c t i o n a l s o w o r k s w i t h t h a n r e g i s t e r s . T h i n s t r u c t i o n o o p e r a t i o n c o d e s ,a b b r e v i a t e d t o p c o d e s , c a n b f o u n d i A p p e n d i xA

W h e n e x e c u t i n g a b s o l u t e a d d r e s s i n g m o d e i n s t r u ct i o n s , t h p r o c e s s o r g e t s t h l o w - b y t e a n d t h e n t h h i g h - b y t e o t h a d d r e s s . T h d a t a f o u n d a t h a ta d d r e s s i p l a c e d i n t o t h a c c u m u l a t o r , t h p r o g r a mc o u n t e r i i n c r e m e n t e d b t h r e e a n t h n e x ti n s t r u c t i o n i f e t c h e d . T h e s e i n s t r u c t i o n s r e q u i r et h r e e b y t e s , i c o n t r a s t t t h i m m e d i a t ea d d r e s s i n g m o d e w h i c h r e q u i r e s o n l y t w o .

N o q u i c k l o o k a t h s t a t u s r e g i s t e r . L o a d

i n s t r u c t i o n s a f f e c t t h z e r o a n n e g a t i v e f l a g s . I t h v a l u e l o a d e d h a v a l u e o f z e r o , t h e n t h z e r of l a g i s e t ; o t h e r w i s e i i c l e a r e d . I t h v a l u e

2

Page 30: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

l o a d e d i n e g a t i v e ( g r e a t e r t h a n $ 7 F o r 1 2 d e c i m a l ) , t h e n t h n e g a t i v e f l a g i s e t ; o t h e r w i s ei i c l e a r e d .

3 Z e r o - p a g e a d d r e s s i n g

A n o t h e r a d d r e s s i n g m o d e i c a l l e d t h z e r o - p a g ea d d r e s s i n g m o d e . T h i s a d d r e s s i n g m o d e c a b u s e di t h a d d r e s s o t h d a t a i i m e m o r y l o c a t i o n sb e t w e e n a n $ F ( 2 5 5 ) . T h i s r e s u l t s i n t w o - b y t ei n s t r u c t i o n i c o n t r a s t t t h t h r e e - b y t e i n s t r u ct i o n o t h a b s o l u t e a d d r e s s i n g m o d e . Z e r o - p a g e

a d d r e s s i n g i n s t r u c t i o n s o c c u p y l e s s m e m o r y a n e x e c u t e f a s t e r . d i s a d v a n t a g e , o c o u r s e , i t h a tt h e d a t a m u s t b l o c a t e d i a d d r e s s e s f r o m t 2 5 5 .

W h e r e d i t h t e r m z e r o - p a g e o r i g i n a t e ? Y o u c a n

t h i n k o t h 6 4 o m e m o r y a b e i n g d i v i d e d i n t o2 5 p a g e s , e a c h c o n t a i n i n g 2 5 b y t e s . T h u s m e m o r yl o c a t i o n s t h r u 2 5 f o r m p a g e z e r o .

z e r o - p a g e l o a d i n s t r u c t i o n l o o k s l i k e t h i s :L D $ 7

2

Page 31: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

i 1 c o n t e n t s — > A 7

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2

I i s t o r e d a t w o - b y t e i n s t r u c t i o n : $ A ( 1 6 5 )$ 7 ( 1 1 5 ) . I p s e u d o - B A S I C , t h i s i s

P E E K ( $ 7 3 )

4 I n d e x e d A d d r e s s i n gA n o t h e r a d d r e s s i n g m o d e i t h i n d e x e d a d d r e s s i n g

m o d e . H e r e t h a n r e g i s t e r s p l a y i m p o r t a n tr o l e s .

L D A $ 2 5 B 8 , X

T h i s i c a l l e d a b s o l u t e a d d r e s s i n g i n d e x e d b X

H o d o e s i w o r k ? T h p r o c e s s o r l o a d s t h a c c u m u l a t o r n o w i t h t h c o n t e n t s o m e m o r yl o c a t i o n $ 2 5 B 8 . R a t h e r i f i r s t a d d s t h v a l u e o t h X - r e g i s t e r t o t h e a b s o l u t e a d d r e s s ( $ 2 5 B 8 ) . I t h X - r e g i s t e r c o n t a i n s $ 3 5 , f o r e x a m p l e , t h f o l l o w i n g c a l c u l a t i o n t a k e s p l a c e :

$ 2 5 B 8 $ 3 $ 2 5 E D

2

Page 32: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h a c c u m u l a t o r i l o a d e d w i t h t h c o n t e n t s o

l o c a t i o n $ 2 5 E D . I t h i s i n s t r u c t i o n i e x e c u t e dw i t h v a r y i n g X - v a l u e s f d i f f e r e n t v a l u e i l o a d e de a c h t i m e . T h i s a d d r e s s i n g m o d e i v e r y u s e f u l f o p r o g r a m m i n g l o o p s a n w h e n w o r k i n g w i t h t a b l e s .O t h e r e x a m p l e s a r d e s c r i b e d l a t e r . I p s e u d o -B A S I C , t h i s a d d r e s s i n g m o d e c a b f o r m u l a t e d a f o l l o w s :

P E E K ( $ 2 5 B 8 X

H e r e i m p l i e s t h c o n t e n t s o t h r e g i s t e r .

i i i !c o n t e n t s — > B B 2 I I I !a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2 1 2 0 3

Y o u c a n a l s o u s e t h e Y - r e g i s t e r i p l a c e o t h X r e g i s t e r f o i n d e x e d a d d r e s s i n g .

L D $ 2 5 B 8 , Y

H e r e t h c o n t e n t s o f t h e Y - r e g i s t e r i a d d e d t t h a b s o l u t e a d d r e s s $ 2 5 B 8 t o b t a i n t h f i n a l a d d r e s s .U s i n g b o t h r e g i s t e r s , y o u h a v e t w o i n d e p e n d e n ti n d e x v a r i a b l e s w h i c h c a b u s e d f o p r o g r a m m i n gn e s t e d l o o p s .

2

Page 33: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

5 Z e r o - p a g e i n d e x e d a d d r e s s i n g

I n d e x e d a d d r e s s i n g c a a l s o b u s e d t o g e t h e r w i t hz e r o - p a g e a d d r e s s i n g , t h e r e b y c a r r y i n g o v e r t h a d v a n t a g e s o z e r o - p a g e a d d r e s s i n g t i n d e x e da d d r e s s i n g . N o t e t h a t t h i s a d d r e s s i n g m o d e w o r k sw i t h t h X - r e g i s t e r o n l y . t y p i c a l i n s t r u c t i o nm i g h t l o o k l i k e t h i s :

L D $ B A f X

T h i s r e s u l t s i t w o - b y t e i n s t r u c t i o n .

i ! c o n t e n t s — > B B ! !

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2

6 I n d i r e c t I n d e x e d A d d r e s s i n g

T h i s a d d r e s s i n g m o d e i n o a e a s y t u n d e r s t a n d ,b u p e r m i t s v e r y f l e x i b l e p r o g r a m m i n g - t h e i n d i r e c ti n d e x e d a d d r e s s i n g m o d e . U s i n g t h i s a d d r e s s i n gm o d e , z e r o p a g e p l a y s a i m p o r t a n t r o l e . W i t hi n d i r e c t i n d e x e d a d d r e s s i n g , t w o c o n s e c u t i v e m e m o r yl o c a t i o n s i z e r o - p a g e f o r m p o i n t e r t t h a c t u a la d d r e s s . T h f i r s t m e m o r y c e l l c o n t a i n s t h l o w -b y t e a n t h n e x t c o n t a i n s t h h i g h - b y t e o t h

2

Page 34: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

a c t u a l a d d r e s s . A e x a m p l e c l a r i f i e s t h i s .

I m a g i n e t h a t z e r o - p a g e a d d r e s s $ 7 c o n t a i n s t h v a l u e $ 2 0 , a n a d d r e s s $ 7 c o n t a i n s t h v a l u e $ C 8 .T h e s e t w m e m o r y l o c a t i o n s f o r m p o i n t e r t t h a d d r e s s $ C 8 2 0 . N e x t t h Y - r e g i s t e r a l s o c o m e s i n t op l a y i t h i n d e x i n g . I t h Y - r e g i s t e r c o n t a i n s$ B 3 f o r e x a m p l e , i i a d d e d t $ C 8 2 0 t g e a e f f e c t i v e a d d r e s s o $ C 8 D 3 a s h o w n b e l o w :

L D ( $ 7 0 ) , Y ( $ 7 0 ) = $ 2 c o n t e n t s o $ 7 ( $ 7 1 ) = > $ C c o n t e n t s o $ 7

$ C 8 2 0 y i e l d s t h i s a d d r e s s( Y = $ B c o n t e n t s o f Y r e g .

$ C 8 D 3 s u o a d d r a n r e g .( $ C 8 D 3 ) = $ 4 c o n t e n t s a $ C 8 D 3

A f t e r t h i n s t r u c t i o n i e x e c u t e d , t h e t h e a c c u m ul a t o r c o n t a i n s $ 4 F .

! c o n t e n t s — > B 7

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2

I p s e u d o - B A S I C i l o o k s l i k e :

P E E K P E E K ( $ 7 0 ) 2 5 P E E K ( $ 7 1 )

2

Page 35: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

u s e d f o m a n a g i n g t a b l e s a n l o o p s . I i m o r ef l e x i b l e t h a n t h s i m p l e i n d e x e d a d d r e s s i n g ,b e c a u s e t h e n t i r e m e m o r y r a n g e c a b a d d r e s s e d ,n o t j u s t t h m e m o r y i s i n g l e p a g e . O n l y t h c o n t e n t s o t h t w o - b y t e p o i n t e r i t h z e r o p a g en e e d b c h a n g e d .

7 I n d e x e d I n d i r e c t A d d r e s s i n g

A n o t h e r a d d r e s s i n g m o d e i t h i n d e x e d i n d i r e c ta d d r e s s m o d e , i c o n t r a s t t t h a b o v e i n d i r e c ti n d e x e d a d d r e s s i n g m o d e . I w o r k s w i t h t h X r e g i s t e r i n s t e a d o t h Y - r e g i s t e r . H e r e a l s o t h a d d r e s s i f o r m e d f r o m t w o c o n s e c u t i v e z e r o - p a g el o c a t i o n s . W h e n c a l c u l a t i n g t h a d d r e s s , t h i n d e xi f i r s t a d d e d t t h p o i n t e r a n d t h e n t h c o n t e n t sa r u s e d a p o i n t e r t t h a c t u a l a d d r e s s . A ne x a m p l e :

L D ( $ 7 0 r X ) ( X )$ 7

( $ 7 8 )( $ 7 9 )

( $ 2 0 4 0 )

=

=

=

$ 0 $ 7 $ 4 $ 2

$ 2 0 4 0$ A

c o n t e n t sa d d e d t c o n t e n t sc o n t e n t s

o r e g i s t e rz e r o - p a g e a d d ro o

y i e l d s t h i sc o n t e n t s a

$ 7 $ 2 a d d r e s s$ 2 0 4 0

2

Page 36: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h a c c u m u l a t o r c o n t a i n s $ A a f t e r t h i n s t r u c t i o ni e x e c u t e d .

i c o n t e n t s — > A 0

!

a d d r e s s 1 2 0 0 1 2 0 1 1 2 0 2

I p s e u d o - B A S I C i l o o k s l i k e t h i s :

P E E K P E E K ( $ 7 0 X 2 5 6 * P E E K ( $ 7 0 1

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

H e r e i s u m m a r y o t h a d d r e s s i n g m o d e s a n o p e r a t i o n c o d e s :

A d d r e s s m o d e L D L D X L D Yi m m e d i a t e $ A 9 $ A 2 $ A 0 o p e r a t i o n c o d e sa b s o l u t e $ A $ A E $ A Cz e r o p a g e $ A 5 $ A 6 $ A 4a b s o l u t e X - i n d e x e d $ B $ B a b s o l u t e Y - i n d e x e d $ B $ B z e r o - p a g e X - i n d e x e d $ B $ B z e r o - p a g e Y - i n d e x e d $ B i n d i r e c t i n d e x e d $ B i n d e x e d i n d i r e c t $ A

2

Page 37: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

t h r e l a t i v e a d d r e s s i n g m o d e a n t h a c c u m u l a t o ra d d r e s s i n g m o d e a r d i s c u s s e d l a t e r .

2

Page 38: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

B T h S T O R E I n s t r u c t i o n sT h c o u n t e r p a r t s o t h e l o a d i n s t r u c t i o n s a r e t h e s t o r ei n s t r u c t i o n s . U s i n g t h e s e i n s t r u c t i o n s w c a p l a c e t h c o n t e n t s o r e g i s t e r i n t o m e m o r y . T h m n e m o n i c s f o r t h ei n s t r u c t i o n s a r e :

S T S T S T

T h c o n t e n t s o f t h e a c c u m u l a t o r , X - r e g i s t e r o Y - r e g i s t e ra r p l a c e d i t h a p p r o p r i a t e m e m o r y l o c a t i o n , w h i c h i s p e c i f i e d b t h o p e r a n d t h a t f o l l o w s t h i n s t r u c t i o nc o d e . T h s a m e a d d r e s s i n g m o d e s u s e d f o t h l o a d

i n s t r u c t i o n s a p p l y t t h e s e i n s t r u c t i o n s e x c e p t f o t h i m m e d i a t e m o d e . S t o r i n g t h c o n t e n t s o r e g i s t e rc h a n g e s n e i t h e r t h r e g i s t e r n o r t h e s t a t u s f l a g s .

H e r e a r e t h e o p e r a t i o n c o d e s a n a d d r e s s i n g m o d e s :

A d d r e s s m o d e S T A S T X S T Ya b s o l u t e $ 8 $ 8 E $ 8 C o p e r a t i o n c o d e sz e r o p a g e $ 8 $ 8 $ 8 a b s o l u t e X - i n d e x e d $ 9 a b s o l u t e Y - i n d e x e d $ 9 z e r o - p a g e X - i n d e x e d $ 9 $ 9 z e r o - p a g e Y - i n d e x e d $ 9 i n d i r e c t i n d e x e d $ 9 i n d e x e d i n d i r e c t $ 8

Y o s h o u l d a l r e a d y b a c q u a i n t e d w i t h t h B A S I C c o m m a n dc o r r e s p o n d i n g t t h s t o r e i n s t r u c t i o n s : t h P O K Ec o m m a n d . I w r i t e s t h c o n t e n t s o v a r i a b l e t

3

Page 39: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

S T $ 8 0 0 0 P O K E $ 8 0 AS T $ C 0 2 0 f Y P O K E $ C 0 2 0 + Y , XS T $ F P O K E $ F l f Y

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

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

3

Page 40: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C T h T r a n s f e r I n s t r u c t i o n s

T h e 6 5 1 0 m i c r o p r o c e s s o r h a i n s t r u c t i o n s t c o p y t h c o n t e n t s o o n r e g i s t e r t a n o t h e r . Y o u c a n , f o re x a m p l e , t r a n s f e r t h c o n t e n t s o t h X - r e g i s t e r i n t o t h

a c c u m u l a t o r o v i c e v e r s a . T h i s i q u i t e i m p o r t a n tb e c a u s e m a n y i n s t r u c t i o n s o n l y w o r k w i t h t h a c c u m u l a t o r .

A f t e r e x e c u t i n g t h e s e i n s t r u c t i o n s , t h c o n t e n t s o t h s o u r c e r e g i s t e r a r u n c h a n g e d ; t h v a l u e i m e r e l y c o p i e di n t o t h d e s t i n a t i o n r e g i s t e r . T h t r a n s f e r i n s t r u c t i o n sw i t h i n t h p r o c e s s o r r e q u i r e t h p a r t i c i p a t i o n o t h a c c u m u l a t o r ; d i r e c t t r a n s f e r f r o m t h t r e g i s t e ro r v i c e v e r s a i n o p o s s i b l e .

A l t r a n s f e r i n s t r u c t i o n s a r o n e - b y t e i n s t r u c t i o n s ; t h e yn e e d n o p e r a n d .

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

T A

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

T X A A

3

Page 41: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

T A Y T Y =

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

T h n e x t t w o t r a n s f e r i n s t r u c t i o n s a f f e c t t h s t a c kp o i n t e r . T h e y a r s e l d o m u s e d , a l t h o u g h t h s t a c k p o i n t e ri d i s c u s s e d l a t e r . T h e s t a c k p o i n t e r c a b e x c h a n g e do n l y w i t h t h X - r e g i s t e r .

T S S

T h c o n t e n t s o t h s t a c k p o i n t e r i p l a c e d i n t o t h X

r e g i s t e r . T h a n f l a g s a r e s e t a c c o r d i n g t t h v a l u e . T h e c o n t e n t s o t h s t a c k p o i n t e r r e m a i n u n a l t e r e db t h i s o p e r a t i o n .

T X S

T h c o n t e n t s o f t h e X - r e g i s t e r a r p l a c e d i n t o t h e s t a c kp o i n t e r . N f l a g s a r a f f e c t e d b t h i s i n s t r u c t i o n . T h c o n t e n t s o t h X - r e g i s t e r a r u n a l t e r e d .

3

Page 42: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A l t h t r a n s f e r i n s t r u c t i o n s a r c o n t a i n e d i t h i st a b l e , a l o n g w i t h t h e i r i n s t r u c t i o n c o d e s .

C o m m a n d

T A T X T A T Y T S T X

O c o d e

$ A $ 8 $ A $ 9 $ B $ 9

3

Page 43: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

D T h A r i t h m e t i c I n s t r u c t i o n s

A w i t h m o s t 8 - b i t m i c r o p r o c e s s o r s , t h 6 5 1 0 c a p e r f o r mo n l y t w a r i t h m e t i c o p e r a t i o n s a d d i t i o n a 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 a n d i v i s i o n m u s t b i m p l e m e n t e d b y t h e u s e r . E a c h c a l c u l a t i o n r e q u i r e s t w oo p e r a n d s w h i c h a r c o m b i n e d t p r o d u c e r e s u l t . F o t h 6 5 1 0 , t h e f i r s t o p e r a n d i c o n t a i n e d i t h a c c u m u l a t o ra n t h s e c o n d o p e r a n d i o b t a i n e d f r o m m e m o r y . T h v a r i o u s a d d r e s s i n g m o d e s a r u s e d f o t h i s . T h r e s u l t o

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

F i r s t c o n s i d e r a d d i t i o n . T h c o n t e n t s o t h a d d r e s s e dm e m o r y l o c a t i o n a r a d d e d t t h a c c u m u l a t o r a n t h r e s u l t i a g a i n p l a c e d b a c k i t h a c c u m u l a t o r .

A D # $ 3 A A $ 3

I y o a d t w 8 - b i t v a l u e s ( t 2 5 5 ) , t h e r e s u l t m a n o b a b l e t b r e p r e s e n t e d b a 8 - b i t n u m b e r . A o v e r f l o w m a y o c c u r . L e t f s t a k e l o o k a t h b i n a r ya d d i t i o n :

A D # $ 3 A ; t h a c c u m u l a t o r c o n t a i n s $ 9 E .

$ 9 $ 3 % 0 0 1 1 1 0 1 0

3

Page 44: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h a d d i t i o n l o o k s l i k e t h i s :1 0 0 1 1 1 1 0 $ 9 0 0 1 1 1 0 1 0 + $ 3 A

1 0 1 1 1 0 0 0 $ D

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

0 = p l u s o v e r f l o w

c a r r y , a i d e c i m a l a d d i t i o n , i t a k e n i n t o a c c o u n t i t h n e x t p o s i t i o n . I o u e x a m p l e , w g e % 1 0 1 1 1 0 0 0 o $ D 8 a s t h e a n s w e r . T h r e s u l t c a b r e p r e s e n t e d i e i g h tb i t s . H e r e i a n o t h e r e x a m p l e :

A D # $ 3 A

T h a c c u m u l a t o r n o w c o n t a i n s $ E 4 . T h a d d i t i o n l o o k s l i k et h i s :

1 1 1 0 0 1 0 0 $ E 0 0 1 1 1 0 1 0 + $ 3 A

1 0 0 0 1 1 1 1 0 $ 1 1 E

H e r e t h r e s u l t o v e r f l o w s b i t s ; t h e a n s w e r i % 1 0 0 0 1 1 1 1 0 o $ 1 1 E . B u t h a c c u m u l a t o r h o l d s o n l y a 8

3

Page 45: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

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

1 6 - b i t n u m b e r ( t w o 8 - b i t m e m o r y l o c a t i o n s ) c a r e p r e s e n t n u m b e r s b e t w e e n a n 6 5 5 3 5 .

T a d t w 1 6 - b i t n u m b e r s , a d t h l o w - b y t e s o e a c h

o p e r a n d a n t h e n t h h i g h - b y t e s o e a c h o p e r a n d . I a o v e r f l o w o c c u r s d u r i n g t h a d d i t i o n o t h l o w - b y t e s ,t h c a r r y f l a g a d j u s t s f o t h i s d u r i n g t h a d d i t i o n o t h h i g h - b y t e s . R e m e m b e r t c l e a r t h c a r r y f l a g b e f o r ea d d i n g t h l o w - b y t e s s t h a t t h p r e v i o u s c o n t e n t s o t h c a r r y f l a g d o n o a f f e c t t h a d d i t i o n . H e r e i a e x a m p l eo a d d i n g t w o n u m b e r s N U M 1 a n N U M 2 w i t h t h r e s u l t b e i n gp l a c e d i S U M :

C L C ; c l e a r c a r r y f l a gL D N U M 1 L O W ; l o w h a l f o N U M 1A D N U M 2 L O W ; l o w h a l f o N U M 2S T S U M L O W ; l o w h a l f o r e s u l tL D N U M 1 H I G H ; h i g h h a l f o N U M lA D N U M 2 H I G H ; h i g h h a l f o N U M 2S T S U M H I G H ; h i g h h a l f o r e s u l t

N o w c a n g i v e t h e q u i v a l e n t i n s t r u c t i o n i p s e u d o -B A S I C .

3

Page 46: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

A D # $ 3 A A $ 3 +

A n o v e r f l o w i i n d i c a t e d b y t h e c a r r y f l a g a f t e r e a c ha d d i t i o n . B e s i d e s t h c a r r y f l a g , t h z e r o a n n e g a t i v ef l a g s a r a l s o a f f e c t e d , d e p e n d i n g o w h e t h e r t h r e s u l ti z e r o o t h s e v e n t h b i i s e t . A a d d i t i o n a l f l a g ,t h f l a g , i u s e d f o s i g n e d a r i t h m e t i c . T h f o l l o w i n gt a b l e c o n t a i n s t h o p e r a t i o n c o d e s f o t h A D i n s t r u c t i o n i t h v a r i o u s a d d r e s s i n g m o d e s .

A d d r e s s m o d e A D

i m m e d i a t e $ 6 o p e r a t i o n c o d e sa b s o l u t e $ 6 z e r o p a g e $ 6 a b s o l u t e x - i n d e x e d $ 7 Da b s o l u t e y - i n d e x e d $ 7 z e r o - p a g e x - i n d e x e d $ 7 i n d i r e c t i n d e x e d $ 7 i n d e x e d i n d i r e c t $ 6

S u b t r a c t i o n i p e r f o r m e d i m u c h t h s a m e w a y a a d d i t i o n . T h c o n t e n t s o t h a d d r e s s e d m e m o r y l o c a t i o ni s u b t r a c t e d f r o m t h a c c u m u l a t o r a n d t h e r e s u l t i l e f ti t h a c c u m u l a t o r . I i p o s s i b l e t h a t t h r e s u l t c a n n o tb r e p r e s e n t e d i 8 - b i t s . W i t h s u b t r a c t i o n , a o v e r f l o wc a n n o t o c c u r , o n l y a u n d e r f l o w . I t h i s c a s e , t h e r e s u l ti l e s s t h a n z e r o . T h c a r r y f l a g i n d i c a t e s t h i s t o o .S i n c e o v e r f l o w a n u n d e r f l o w h a v e o p p o s i t e m e a n i n g s ,u n d e r f l o w i i n d i c a t e d b c a r r y f l a g b e i n g c l e a r e d .

3

Page 47: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

o c c u r r e d . C o r r e s p o n d i n g l y , t h c a r r y f l a g m u s t b s e p r i o r t s u b t r a c t i o n ( o t h f i r s t b y t e o m u l t i -p r e c i s i o n s u b t r a c t i o n ) . F o e x a m p l e :

S E ; s e t c a r r y f l a g f o s u b t r a c t i o nL D V A L 1 ; s u b t r a h e n dS B V A L 2 ; m i n u e n dB C N E G A T I V E ; c a r r y c l e a r m e a n s V A L 2 > V A L 1B C N O T N E G ; c a r r y s e t m e a n s V A L 2 < = V A L 1

I p s e u d o - B A S I C w c a f o r m u l a t e t h i s a f o l l o w s :

S B # $ 3 A $ 3 ( 1 - C )

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

0 - 0 - p l u s u n d e r f l o w1 - 0 = 11 -

I t h a c c u m u l a t o r c o n t a i n s $ 7 F , t h e b i n a r yr e p r e s e n t a t i o n l o o k s l i k e t h i s :

$ 7 $ 3 A % 0 0 1 1 1 0 1 0

A f t e r s e t t i n g t h c a r r y f l a g , t h s u b t r a c t i o n l o o k s l i k e

3

Page 48: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t h i s :0 1 1 1 1 1 1 10 0 1 1 1 0 1 00 1 0 0 0 1 0 1

T h r e s u l t i % 0 1 0 0 0 1 0 1 o $ 4 5 . S i n c e n u n d e r f l o wo c c u r s , t h c a r r y f l a g i s e a g a i n . T h e n e x t e x a m p l e i s o m e w h a t d i f f e r e n t . T h i s t i m e t h a c c u m u l a t o r c o n t a i n s$ 1 a n d t h e c a r r y f l a g i s e t .

$ 1 % 0 0 0 1 1 1 1 0$ 3 % 0 0 1 1 1 0 1 0

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

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

T h r e s u l t i % 1 1 1 0 0 1 0 0 o $ E 4 . B e c a u s e a u n d e r f l o wo c c u r r e d , t h c a r r y f l a g i c l e a r e d . H o w i t h i s r e s u l t

i n t e r p r e t e d ? C o n s i d e r h o w w e d s u b t r a c t i o n u s i n gd e c i m a l n u m b e r s . I d e c i m a l , o u c a l c u l a t i o n i 3 0 - 5 8 .T h a n s w e r i n e g a t i v e n u m b e r , - 2 8 . I t h i s e x a m p l e ,t h r e g i s t e r c o n t a i n s $ E 4 o r 2 2 ( d e c i m a l ) . H o a r t h e s e n u m b e r r e l a t e d ? i w s u b t r a c t t h r e s u l t f r o m 2 5 6 ,s w g e 2 8 T h c l e a r e d c a r r y f l a g a f t e r s u b t r a c t i o nt e l l s u t h a t t h r e s u l t m u s t b i n t e r p r e t e d a n e g a t i v e n u m b e r .

4

Page 49: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

N e g a t i v e n u m b e r s a r r e p r e s e n t e d u s i n g t w o ' s c o m p l e m e n t

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

1 1 1 0 0 1 0 0 o r i g i n a l n u m b e rg i v e s 0 0 0 1 1 0 1 1 i n v e r t e a c h b i t

0 0 0 0 0 0 0 1 p l u s

0 0 0 1 1 1 0 0 g i v e s t w o ' s c o m p l e m e n t

T h r e s u l t i % 0 0 0 1 1 1 0 0 o $ 1 o 2 i d e c i m a l .

N o t e t h a t t h c a r r y f l a g m u s t b c l e a r e d b e f o r e a d d i t i o n .A f t e r a d d i t i o n , s e c a r r y f l a g i n d i c a t e s a o v e r f l o w .T h c a r r y f l a g m u s t b s e b e f o r e s u b t r a c t i o n . A f t e rs u b t r a c t i o n , c l e a r c a r r y f l a g i n d i c a t e s u n d e r f l o w a n t h r e s u l t i i t w o ' s c o m p l e m e n t r e p r e s e n t a t i o n .

T h i s t a b l e c o n t a i n s t h o p e r a t i o n c o d e s f o r t h ea d d r e s s i n g m o d e s .

A d d r e s s m o d e S B i m m e d i a t e $ E o p e r a t i o n c o d ea b s o l u t e $ E z e r o p a g e $ E a b s o l u t e x - i n d e x e d $ F a b s o l u t e y - i n d e x e d $ F z e r o - p a g e x - i n d e x e d $ F i n d i r e c t i n d e x e d $ F i n d e x e d i n d i r e c t $ E

4

Page 50: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

E T h l o g i c a l i n s t r u c t i o n s

T h l o g i c a l i n s t r u c t i o n s c o m b i n e t w o v a l u e w i t h e a c ho t h e r . A s w i t h t h a r i t h m e t i c i n s t r u c t i o n s , o n o p e r a n dm u s t b i t h a c c u m u l a t o r w h i l e t h s e c o n d i r e t r i e v e df r o m m e m o r y a c c o r d i n g t o t h e a d d r e s s i n g m o d e . A f t e r t h o p e r a t i o n , t h r e s u l t i l e f t i t h a c c u m u l a t o r . T h 6 5 1 0 c a p e r f o r m t h r e e d i f f e r e n t t y p e s o l o g i c a lo p e r a t i o n s .

T h A N i n s t r u c t i o n

T h A N o p e r a t i o n c o m p a r e s e a c h b i o t h a c c u m u l a t o rw i t h t h c o r r e s p o n d i n g b i i t h o p e r a n d . I t h b i o t h a c c u m u l a t o r A N t h c o r r e s p o n d i n g b i o f t h e o p e r a n da r b o t h s e ( t l ) t h c o r r e s p o n d i n g b i o f t h e r e s u l ti a l s o s e t o n e .

A N 0 = A N 1 = A N 0 = A N 1 =

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

A N # $ 3 7

4

Page 51: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

S a y , t h a t t h a c c u m u l a t o r c o n t a i n s $ 5 D . A N D i n g t h a c c u m u l a t o r w i t h $ 3 g i v e s t h f o l l o w i n g :

$ 5 D 0 1 0 1 1 1 0 1$ 3 0 0 1 1 0 1 1 1$ 1 0 0 0 1 0 1 0 1

T h e r e s u l t i % 0 0 0 1 0 1 0 1 o $ 1 5 . T h i s c o r r e s p o n d s e x a c t l y

t o t h e p s e u d o - B A S I C i n s t r u c t i o n A N D :

A N $ 3

I t h i s c a s e , $ 5 D A N D $ 3 o 9 A N 5 5 W g e t h a n s w e r 2 o $ 1 5 . T h A N o p e r a t i o n a f f e c t s t h a n

f l a g s . r e s u l t o z e r o s e t s t h f l a g , w h i l e r e s u l t sg r e a t e r t h a n $ 7 F ( 1 2 7 ) s e t h f l a g .

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

A d d r e s s m o d e A N i m m e d i a t e $ 2 o p e r a t i o n c o d e sa b s o l u t e $ 2 Dz e r o p a g e $ 2 a b s o l u t e x - i n d e x e d $ 3 a b s o l u t e y - i n d e x e d $ 3 z e r o - p a g e x - i n d e x e d $ 3 i n d i r e c t i n d e x e d $ 3 i n d e x e d i n d i r e c t $ 2

4

Page 52: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h O R i n s t r u c t i o n

T h O i n s t r u c t i o n c o m p a r e s e a c h b i o t h a c c u m u l a t o rw i t h t h c o r r e s p o n d i n g b i t s o t h o p e r a n d . I b i o t h a c c u m u l a t o r O c o r r e s p o n d i n g b i o t h o p e r a n de q u a l s 1 t h c o r r e s p o n d i n g b i o t h r e s u l t i s e t o n e .

O R 0 = O R 1 = O R 0 = O R 1 =

Y o c a n s e e f r o m t h v a l u e t a b l e t h a t t h i s i t h " i n c l u s i v e " O R T h r e s u l t i o n i t h f i r s t o p e r a n da n d / o r t h s e c o n d o p e r a n d i o n e , n o i t h s e n s e o e i t h e r / o r ( b u t n o b o t h ) . T h O i n s t r u c t i o n a f f e c t s t h

a n f l a g s . H e r e ' s a e x a m p l e :

O R # $ 3 7

T h a c c u m u l a t o r c o n t a i n s $ 5 D . O R i n g t h a c c u m u l a t o r w i t h$ 3 w o r k s l i k e t h i s :

$ 5 D 0 1 0 1 1 1 0 1$ 3 0 0 1 1 0 1 1 1$ 7 0 1 1 1 1 1 1 1

T h e r e s u l t i % 0 1 1 1 1 1 1 1 o $ 7 F . T h i s c o r r e s p o n d s e x a c t l yt o t h e B A S I C i n s t r u c t i o n O R

4

Page 53: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

O $ 3

i o u c a s e , $ 5 D O R $ 3 o 9 O 5 5 W e g e t 1 2 o $ 7 F .

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

A d d r e s s m o d e O R Ai m m e d i a t e $ 0 o p e r a t i o n c o d e sa b s o l u t e $ 0 z e r o p a g e $ 0 a b s o l u t e x - i n d e x e d $ 1 a b s o l u t e y - i n d e x e d $ 1 z e r o - p a g e x - i n d e x e d $ 1 i n d i r e c t i n d e x e d $ 1 i n d e x e d i n d i r e c t $ 0

T h e E x c l u s i v e O R i n s t r u c t i o n

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

E O 0 = E O 1 = E O 0 = E O 1 =

4

Page 54: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h r e s u l t o t h o p e r a t i o n i o n i t h t w b i t s d o n o te q u a l e a c h o t h e r . H e r e t o o t h a n f l a g s a r a f f e c t e da c c o r d i n g t o t h e r e s u l t . T h e r e i n c o r r e s p o n d i n g B A S I Ci n s t r u c t i o n . I B A S I C y o h a v e t c o m p a r e a l t h b i t si n d i v i d u a l l y w i t h l o o p . A e x a m p l e l o o k s l i k e t h i s :

E O # $ 3 7

T h a c c u m u l a t o r c o n t a i n s $ 5 D . E O R i n g t h a c c u m u l a t o r w i t h$ 3 g i v e s t h f o l l o w i n g :

$ 5 D 0 1 0 1 1 1 0 1$ 3 0 0 1 1 0 1 1 1$ 6 0 1 1 0 1 0 1 0

T h r e s u l t i % 0 1 1 0 1 0 1 0 o r $ 6 A ( 1 0 6 ) .

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

A d d r e s s m o d e E O i m m e d i a t e $ 4 o p e r a t i o n c o d ea b s o l u t e $ 4 z e r o p a g e $ 4 a b s o l u t e x - i n d e x e d $ 5 Da b s o l u t e y - i n d e x e d $ 5 z e r o - p a g e x - i n d e x e d $ 5 i n d i r e c t i n d e x e d $ 5 i n d e x e d i n d i r e c t $ 4

4

Page 55: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h B I i n s t r u c t i o n

s p e c i a l f e a t u r e o t h 6 5 X X m i c r o p r o c e s s o r s i t h B I i n s t r u c t i o n . T h i s i n s t r u c t i o n d o e s n o c h a n g e t h c o n t e n t s o a n y r e g i s t e r s . I a f f e c t s o n l y t h e f l a g s . T h c o n t e n t s o f t h e a c c u m u l a t o r a r A N D e d w i t h t h c o n t e n t so t h a d d r e s s e d m e m o r y l o c a t i o n . I t h f i n a l r e s u l t i z e r o , t h e f l a g i s e t , o t h e r w i s e i i c l e a r e d .A d d i t i o n a l l y , t h v a l u e o t h s i x t h b i o f t h e a d d r e s s e dl o c a t i o n i p l a c e d i n t o t h f l a g a n d t h e s e v e n t h b i i

p u i t h N f l a g . W i t h t h i s o n e c a n c h e c k t h e s e t w b i t so m e m o r y l o c a t i o n w i t h o u t d i s t u r b i n g t h c o n t e n t s o a n o t h r e g i s t e r s . L e u l o o k a t a n e x a m p l e :

L D # $ 1 0B I $ 1 2 3 4

T h a c c u m u l a t o r c o n t a i n s $ 1 0 ; a d d r e s s $ 1 2 3 4 c o n t a i n s $ 4 3 .T h A N D o p e r a t i o n y i e l d s t h f o l l o w i n g r e s u l t :

$ 1 % 0 0 0 1 0 0 0 0 ; c o n t e n t s o a c c u m u l a t o r$ 4 % 0 1 0 0 0 0 1 1 ; c o n t e n t s o m e m o r y l o c a t i o n $ 1 2 3 4A N % 0 0 0 0 0 0 0 0 ; l o g i c a l r e s u l t o A N

T h A N D o p e r a t i o n p r o d u c e s z e r o , s t h i t h e n s e t .T h e V f l a g e q u a l s t h s i x t h b i o t h o p e r a n d , o n e ,w h i l e t h f l a g i c l e a r e d . T h e r e s u l t i s

Z = l ; V = l ; N = 0 .

4

Page 56: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T w a d d r e s s i n g m o d e s c a b u s e d w i t h t h B I i n s t r u c t i o n :

A d d r e s s m o d e B I z e r o p a g e $ 2 o p e r a t i o n c o d e sa b s o l u t e $ 2

4

Page 57: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

F T h C o m p a r e i n s t r u c t i o n s

T h e s e i n s t r u c t i o n s c o m p a r e t h c o n t e n t s o r e g i s t e ra n t h c o n t e n t s o m e m o r y l o c a t i o n . T h e s e i n s t r u c t i o n sa l t e r n e i t h e r t h r e g i s t e r n o r t h e m e m o r y c o n t e n t s ,a f f e c t i n g o n l y t h f l a g s . Y o u c a n d e t e r m i n e t h r e l a t i o n s h i p o f t h e t w o n u m b e r s b e x a m i n i n g t h f l a g s .

T h c o m p a r e i n s t r u c t i o n s w o r k b l o g i c a l l y " s u b t r a c t i n g 1 1t h c o n t e n t s o t h a d d r e s s e d m e m o r y c o n t e n t s f r o m t h c o n t e n t s o t h r e g i s t e r a n s e t t i n g t h f l a g s a i a a c t u a l s u b t r a t i o n o c c u r r e d . T h r e g i s t e r c o n t e n t s a r n o c h a n g e d . T h £ N a n f l a g s a r a f f e c t e d d e p e n d i n g o

t h r e s u l t o t h " s u b r a c t i o n " . T h e r e a r c o m p a r ec o m m a n d s f o t h t h r e e w o r k r e g i s t e r s o t h m i c r o p r o c e s s o r .

T h C M i n s t r u c t i o n

T h i s i n s t r u c t i o n c o m p a r e s t h c o n t e n t s o t h a c c u m u l a t o rw i t h t h c o n t e n t s o t h a d d r e s s e d m e m o r y l o c a t i o n , b l o g i c a l l y s u b t r a c t i n g t h c o n t e n t s o t h o p e r a n d f r o mt h a c c u m u l a t o r . I a u n d e r f l o w o c c u r s , t h c a r r y f l a gi c l e a r e d ; o t h e r w i s e i i s e t . I t h r e s u l t i z e r o ,t h f l a g i s e t ; o t h e r w i s e i i c l e a r e d . I t h r e s u l ti g r e a t e r t h a n $ 7 F ( 1 2 7 ) , t h e f l a g i s e t , o t h e r w i s ei i c l e a r e d . L e u t a k e l o o k a t a n e x a m p l e :

4

Page 58: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

L D # $ 5 0C M # $ 3 0

T h a c c u m u l a t o r c o n t a i n s $ 5 0 . T h c a l c u l a t i o n $ 5 $ 3 i t h e n c a r r i e d o u t , w i t h r e s u l t o $ 2 0 . B e c a u s e n u n d e r f l o w o c c u r r e d , t h c a r r y f l a g i s e t . T h z e r o f l a g

i c l e a r e d b e c a u s e t h r e s u l t i n o e q u a l t o z e r o . T h f l a g i c l e a r e d b e c a u s e t h n u m b e r i n o g r e a t e r t h a n$ 7 F . W g e t h f o l l o w i n g r e s u l t :

C = l ; Z = 0 ; N =

N o w a n o t h e r e x a m p l e :

L D # $ 3 0C M # $ 3 0

S i n c e t h a c c u m u l a t o r n o w c o n t a i n s $ 3 0 , t h e l o g i c a ls u b t r a c t i o n y i e l d s z e r o . T h c a r r y f l a g i s e b e c a u s e n u n d e r f l o w o c c u r r e d . S i n c e t h r e s u l t i z e r o , t h e z e r of l a g i s e t h i s t i m e . T h f l a g i c l e a r b e c a u s e t h r e s u l t i n o g r e a t e r t h a n $ 7 F .

C = l ; Z = l ; N = 0

F i n a l l y l a s t e x a m p l e :

5

Page 59: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

L D # $ 1 0C M # $ 3 0

I t h i s e x a m p l e , t h a c c u m u l a t o r c o n t a i n s $ 1 a n t h l o g i c a l s u b t r a c t i o n y i e l d s $ 1 $ 3 $ F 0 . T h c a r r yf l a g i c l e a r e d t i n d i c a t e t h u n d e r f l o w a n t h f l a gi c l e a r e d b e c a u s e t h r e s u l t i n o z e r o . T h i s t i m e t h

f l a g i s e t .

C = 0 ; Z = 0 ; N = l

I p r a c t i c e , t h f l a g s i n d i c a t e t h a t t h e a c c u m u l a t o rc o n t e n t s a r e :

> g r e a t e r t h a n o e q u a l t t h o p e r a n de q u a l t t h o p e r a n d

l e s s t h a n t h o p e r a n d

T d e t e r m i n e i t h a c c u m u l a t o r i g r e a t e r t h a n t h o p e r a n d ( n o t g r e a t e r t h a n o e q u a l t o ) , t w f l a g s m u s t b

c h e c k e d :

a n

T h c o m p a r e i n s t r u c t i o n s a l t e r o n l y t h f l a g s ; t h e y a r t h b a s i s f o t h c o n d i t i o n a l b r a n c h i n s t r u c t i o n sd e s c r i b e d i t h n e x t s e c t i o n . N o t e t h a t t h e s e f l a gi n t e r p r e t a t i o n s a r e f o r c o m p a r i n g u n s i g n e d i n t e g e r s o n l y .

5

Page 60: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h i s t a b l e c o n t a i n s t h o p e r a t i o n C o d i e s f o e a c ha d d r e s s i n g m o d e :

A d d r e s s m o d e C M Pi m m e d i a t e $ C o p e r a t i o n c o d e sa b s o l u t e $ C z e r o - p a g e $ C a b s o l u t e x - i n d e x e d $ D a b s o l u t e y - i n d e x e d $ D z e r o - p a g e x - i n d e x e d $ D i n d i r e c t i n d e x e d $ D i n d e x e d i n d i r e c t $ C

T h C P X i n s t r u c t i o n

T h C P i n s t r u c t i o n w o r k s t h s a m e w a y a t h C M i n s t r u c t i o n . H e r e t h c o n t e n t s o t h a d d r e s s e d m e m o r yl o c a t i o n a r c o m p a r e d n o w i t h t h c o n t e n t s o t h a c c u m u l a t o r , b u r a t h e r w i t h t h c o n t e n t s o t h X

r e g i s t e r . T h c o n t e n t s o t h r e g i s t e r s a r e n o t a l t e r e d .W h a t w a s a i d a b o v e c o n c e r n i n g t h C M P i n s t r u c t i o na p p l i e s t t h C P i n s t r u c t i o n a w e l l . T h e r e a r e n o t a m a n y a d d r e s s i n g m o d e s f o t h C P X i n s t r u c t i o n , h o w e v e r .

A d d r e s s m o d e C P i m m e d i a t e $ E o p e r a t i o n c o d e sa b s o l u t e $ E z e r o p a g e $ E

5

Page 61: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h C P i n s t r u c t i o n

T h e s e i n s t r u c t i o n s a r e t h e s a m e a t h C P i n s t r u c t i o n se x c e p t t h a t t h Y - r e g i s t e r i u s e d i p l a c e o t h X r e g i s t e r . T h e r e a r o n l y t h r e e a d d r e s s i n g m o d e s .

A d d r e s s m o d e C P i m m e d i a t e $ C o p e r a t i o n c o d e sa b s o l u t e $ C z e r o p a g e $ C

5

Page 62: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

G C o n d i t i o n a l b r a n c h i n g i n s t r u c t i o n s

N e x t w i n t r o d u c e t h i n s t r u c t i o n s t h a t a l l o w y o t m a k ep r o g r a m m i n g d e c i s i o n s . T h f o u n d a t i o n s o t h e s e d e c i s i o n sa r t h c o n d i t i o n s o t h f l a g s . T h f o l l o w i n g f o u r f l a g sc a b u s e d t m a k e d e c i s i o n s : t h f l a g , t h f l a g ,

t h f l a g , a n d t h e V f l a g .

F o r e a c h f l a g t h e r e a r t w o c o n d i t i o n a l b r a n c h c o m m a n d s :t h f i r s t b r a n c h e s i t h f l a g i s e t , t h s e c o n d i t h f l a g i c l e a r . T h e o p e r a n d o e a c h c o n d i t i o n a l b r a n c hi n s t r u c t i o n s p e c i f i e s t h l o c a t i o n w h e r e t h m i c r op r o c e s s o r i t g e t h n e x t o p e r a t i o n c o d e s h o u l d t h

c o n d i t i o n t e s t e d f o b e t r u e .

T h 6 5 1 0 m i c r o p r o c e s s o r u s e s t h r e l a t i v e a d d r e s s i n g m o d ef o c o n d i t i o n a l b r a n c h i n s t r u c t i o n s . T h o p e r a n d i n o a a b s o l u t e m e m o r y a d d r e s s , b u r a t h e r a a d d r e s sr e l a t i v e t t h c u r r e n t 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 .

T h i s r e l a t i v e a d d r e s s i a 8 - b i t v a l u e . T h e r e l a t i v ea d d r e s s i a d d e d t o t h e c o n t e n t s o t h p r o g r a m c o u n t e ra n t h b r a n c h i m a d e t t h a t c o m p u t e d a d d r e s s i t h c o n d i t i o n t e s t e d f o i t r u e .

W i t h t h i s 8 - b i t v a l u e y o c a r e p r e s e n t 2 5 d i f f e r e n tn u m b e r s , s y o c a b r a n c h t a n o f 2 5 6 p o s s i b l el o c a t i o n s . T h r e l a t i v e a d d r e s s c a u s e s b r a n c h f o r w a r di t h 8 - b i t v a l u e i p o s i t i v e a n c a u s e s b r a n c h

5

Page 63: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

b a c k w a r d i t h 8 - b i t v a l u e i n e g a t i v e . S r e l a t i v ea d d r e s s i n g c a p e r f o r m b a c k w a r d b r a n c h i n g b a l l o w i n g t h u s o n e g a t i v e o p e r a n d s .

L e t ' s t a l k b i a b o u t n e g a t i v e n u m b e r s . U s i n g t w o ' sc o m p l e m e n t r e p r e s e n t a t i o n a l n u m b e r s h a v i n g b i s e v e ns e a r c o n s i d e r e d t o b e n e g a t i v e :

% 1 0 0 0 0 0 0 0% 1 0 0 0 0 0 0 1% m i i # i i o% 1 1 1 1 1 1 1 1% 0 0 0 0 0 0 0 0% 0 0 0 0 0 0 0 1% 0 0 0 0 0 0 1 0% o i i i i # n o% 0 1 1 1 1 1 1 1

$ 8 $ 8

. . $ F $ F $ 0 $ 0 $ 0

.

$ 7 $ 7

- 1 2 8- 1 2 7. . . .

- -

• •

1 2 1 2

T h s e v e n t h b i d e t e r m i n e s i t h n u m b e r i p o s i t i v e o n e g a t i v e ( a l s o t h c o n d i t i o n o t h f l a g ) . L e t ' s l o o ka h o w e c a n c a l c u l a t e t h d i s t a n c e f o r e l a t i v eb r a n c h . T h c a l c u l a t i o n i b a s e d o t h a d d r e s s o t h i n s t r u c t i o n f o l l o w i n g t h c o n d i t i o n a l b r a n c h i n s t r u c t i o n .A e x a m p l e : T h b r a n c h i n s t r u c t i o n i a a d d r e s s $ C 4 7 Aa n w w a n t t b r a n c h t $ C 4 B F .

$ C 4 7 A a d d r e s s o b r a n c h i n s t r u c t i o n$ C 4 7 C a d d r e s s o n e x t i n s t r u c t i o n

$ C 4 B F d e s t i n a t i o n a d d r e s s

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

5

Page 64: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

$ C 4 B F $ C 4 7 C $ 4

T h o p e r a n d f o o u b r a n c h i n s t r u c t i o n i $ 4 3 . H o d o w ec a l c u l a t e t h r e l a t i v e a d d r e s s f o b a c k w a r d b r a n c h ? S a w e w a n t t b r a n c h t o t h e a d d r e s s $ C 4 4 0 . Y o u c a c a l c u l a t et h r e l a t i v e a d d r e s s a f o l l o w s :

$ C 4 4 0 $ C 4 7 C $ F F C 4 w i t h u n d e r f l o w

S i m p l y u s t h l e a s t s i g n i f i c a n t b y t e $ C a t h

o p e r a n d f o t h c o n d i t i o n a l b r a n c h i n s t r u c t i o n . Y o c o u l da l s o c a l c u l a t e t h r e l a t i v e a d d r e s s b o b t a i n i n g t h p o s i t i v e d i f f e r e n c e a n t a k i n g t h t w o ' s c o m p l e m e n t o t h r e s u l t .

$ C 4 7 C $ C 4 4 0 $ 3

T h t w o ' s c o m p l e m e n t :

% 0 0 1 1 1 1 0 0 o r i g i n a l v a l u e $ 3 % 1 1 0 0 0 0 1 1 i n v e r t a l b i t s $ C

a d % 1 1 0 0 0 1 0 0 t w o ' s c o m p l e m e n t $ C

H e r e a l s o w e g e t a o f f s e t o f $ C 4 .

W h a t a d v a n t a g e s d o e s r e l a t i v e a d d r e s s i n g h a v e ? F i r s t o

5

Page 65: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

a l l , t h b r a n c h i n s t r u c t i o n s t a k e u o n l y t w o b y t e s i

m e m o r y . B e s i d e s t h s a v i n g s i m e m o r y t h e r e i f a s t e rs p e e d o e x e c u t i o n . t w b y t e i n s t r u c t i o n i e x e c u t e df a s t e r b t h m i c r o p r o c e s s o r . T h m o s t i m p o r t a n ta d v a n t a g e o r e l a t i v e a d d r e s s i n g i t h a t t h b r a n c ha d d r e s s i r e l a t i v e t o t h e p o i n t o e x e c u t i o n . S i n c e t h b r a n c h i n s t r u c t i o n s d o n o t u s e a b s o l u t e a d d r e s s e s , i y o

p l a c e t h s a m e p r o g r a m s e g m e n t i d i f f e r e n t p l a c e i m e m o r y , t h p r o g r a m d o e s n o h a v e t o b e c h a n g e d — t h el o c a t i o n t o t h e b r a n c h a d d r e s s d o e s n o c h a n g e .

I t h a d d r e s s t b r a r c h t w e r e g i v e n i a b s o l u t e f o r m ,i w o u l d h a v e t b c h a n g e d i t h p r o g r a m w e r e m o v e t d i f f e r e n t m e m o r y l o c a t i o n . T h d i s a d v a n t a g e o r e l a t i v ea d d r e s s i n g i t h l i m i t e d a d d r e s s r a n g e t w h i c h w c a b r a n c h . O n l y 1 2 b y t e s f o r w a r d o 1 2 b y t e s b a c k w a r d f r o mt h b r a n c h i n s t r u c t i o n i t h m a x i m u m t h a t c a n b j u m p e d .I p r a c t i c e t h i s i u s u a l l y n g r e a t h i n d r a n c e , t h o u g h ,b e c a u s e i i s e l d o m t h a t l a r g e r d i s t a n c e i i n v o l v e d .

I y o u h a v e f o u n d t h a d d r e s s c a l c u l a t i o n o r e l a t i v ea d d r e s s i n g q u i t e c o m p l i c a t e d , y o u c a n r e s t a e a s e . W h a v e p r e s e n t e d t h i s d i s c u s s i o n o n l y s t h a t y o uu n d e r s t a n d t h p r i n c i p l e . L a t e r , t h e a s s e m b l e r w i l l t a K eo v e r t h i s w o r k f o r y o u ; y o u n e e d o n l y g i v e i t h b r a n c hd e s t i n a t i o n . T h a s s e m b l e r w i l l b r i n g i t y o u ra t t e n t i o n i y o a t t e m p t t j u m p b e y o n d t h p e r m i t t e d

5

Page 66: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

d i s t a n c e .

B r a n c h o z e r o f l a g

b r a n c h w h e n t h z e r o f l a g i s e r e s u l t s f r o m t h i n s t r u c t i o n " b r a n c h o e q u a l , " s h o r t e n e d t B E Q , I t h b r a n c h i t b m a d e o c l e a r e d z e r o f l a g , t h i n s t r u c t i o n i c a l l e d " b r a n c h n o e q u a l , " B N E .

B r a n c h o c a r r y f l a g

H e r e t h i n s t r u c t i o n i c a l l e d " b r a n c h o c a r r y s e t " o B C f o b r a n c h i n g o s e c a r r y f l a g a n " b r a n c h o c a r r y c l e a r " , B C C , f o b r a n c h o c a r r y c l e a r f l a g .

B r a n c h o n e g a t i v e f l a g

I t h n e g a t i v e f l a g i s e t , t h i n s t r u c t i o n " b r a n c h o m i n u s , " B M I , w i l l b r a n c h ; i o r d e r t j u m p o c l e a rn e g a t i v e f l a g , t h e i n s t r u c t i o n " b r a n c h o p l u s , " B P L ,m u s t b u s e d .

5

Page 67: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

B r a n c h o o v e r f l o w f l a g

T h o v e r f l o w c a a l s o b u s e d a t h b a s i s f o c o n d i t i o n a l b r a n c h e s . T h c o r r e s p o n d i n g c o m m a n d s a r " b r a n c h o o v e r f l o w s e t f " B V S f a n " b r a n c h o o v e r f l o wc l e a r , " B V C . B e c a u s e o t h s e c o n d a r y i m p o r t a n c e o t h f l a g , t h e s e c o m m a n d s a r s e l d o m u s e d .

T h i s t a b l e c o n t a i n s a l c o m m a n d s f o c o n d i t i o n a lb r a n c h i n g , t o g e t h e r w i t h t h e i r o p c o d e s .

C o m m a n dB E B N B C B C B M B P B V B V

O c o d e$ F $ D $ B $ 9 $ 3 $ 1 $ 7 $ 5

5

Page 68: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

H T h J u m p i n s t r u c t i o n s

I c o n t r a s t t t h c o n d i t i o n a l b r a n c h c o m m a n d s a b o v e , t h u n c o n d i t i o n a l j u m p i n s t r u c t i o n s b r a n c h e s t o a n a b s o l u t ea d d r e s s . T h e s e i n s t r u c t i o n s a r n o d e p e n d e n t o a n c o n d i t i o n a n i a l w a y s e x e c u t e d . T h d e s t i n a t i o n a d d r e s si s p e c i f i e d i r e v e r s e s e q u e n c e ( l o w - b y t e f o l l o w e d b

h i g h - b y t e ) a a r t h o t h e r a b s o l u t e a d d r e s s e s .

J M $ C 4 2 0 d i r e c t j u m p t l o c a t i o n $ C 4 2 0

I a d d i t i o n t o t h e a b s o l u t e f o r m o t h j u m p i n s t r u c t i o n ,

t h e r e i a l s o a i n d i r e c t a d d r e s s i n g f o r m , p e c u l i a r i t yo f t h e j u m p i n s t r u c t i o n s . W i t h t h i s i n s t r u c t i o n , t h s p e c i f i e d a d d r e s s i n o j u m p e d t o I n s t e a d , t h i s a d d r e s st e l l s w h e r e t g e t h a c t u a l d e s t i n a t i o n a d d r e s s . F o rt h i s , t w o c o n s e c u t i v e b y t e s a r a g a i n u s e d a p o i n t e r ,i t h f o r m a t l o b y t e , h i g h b y t e .

J M ( $ 0 3 0 2 ) i n d i r e c t j u m p t d e s t i n a t i o n p o i n t e dt b a d d r e s s $ 0 3 0 2

T h a c t u a l a d d r e s s i n o t a k e n f r o m m e m o r y l o c a t i o n s$ 0 3 0 2 a n $ 0 3 0 3 . I f f o e x a m p l e , $ 4 0 a n d $ C a r i

t h e s e l o c a t i o n s , b r a n c h t l o c a t i o n $ C 8 4 0 w i l l b m a d e .T h i s m e t h o d o a d d r e s s i n g w o r k s o n l y w i t h t h J M i n s t r u c t i o n . T h t a b l e c o n t a i n s t h o p e r a t i o n c o d e s f o

6

Page 69: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

b o t h a d d r e s s i n g m o d e s .

A d d r e s s m o d e J M a b s o l u t e $ 4 o p e r a t i o n c o d e si n d i r e c t $ 6

T h o p e r a t i n g s y s t e m o t h C o m m o d o r e 6 m a k e s u s o t h i s m e t h o d o a d d r e s s i n g . T h e r e a r s e v e r a l a d d r e s s e s( c a l l e d v e c t o r s ) l o c a t e d f r o m $ 3 0 0 t o $ 3 3 C , t h a t c o n t a i na d d r e s s e s f o i n d i r e c t J M P s . T h e o p e r a t i n g s y s t e m u s e st h e s e v e c t o r s f o p e r f o r m i n g f r e q u e n t l y u s e d r o u t i n e s .

6

Page 70: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

I T h I n c r e m e n t a n D e c r e m e n t i n s t r u c t i o n s

F o e f f e c t i v e p r o g r a m m i n g o l o o p s a n c o u n t e r s , t h 6 5 1 0h a c o m m a n d s t i n c r e m e n t o d e c r e m e n t t h c o n t e n t s o r e g i s t e r o m e m o r y l o c a t i o n b y o n e . T h e s e i n c r e m e n ti n s t r u c t i o n s c o r r e s p o n d , t o g e t h e r w i t h t h c o n d i t i o n a lb r a n c h i n g c o m m a n d s , t o t h e N E X T i n s t r u c t i o n i B A S I C . T h e

S T E P - 1 i n s t r u c t i o n c a b s i m u l a t e d w i t h t h d e c r e m e n tc o m m a n d s .

N

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

I v a l u e o $ F i i n c r e m e n t e d , t h o v e r f l o w i n o t a k e n i n t o a c c o u n t ( t h e c a r r y f l a g i n o s e t ) . T h c o n t e n t s a r s e t t o z e r o , a n d t h e f l a g i s e t .

I N

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

6

Page 71: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h e r e i n i n s t r u c t i o n o t h 6 5 1 0 t i n c r e m e n t o d e c r e m e n t t h a c c u m u l a t o r c o n t e n t s .

I N

T h i s i n s t r u c t i o n i n c r e m e n t s t h c o n t e n t s o m e m o r yl o c a t i o n b o n e . T h a n f l a g s a r a g a i n s e d e p e n d i n g o t h r e s u l t . T h i s i n s t r u c t i o n i d i f f e r e n tf r o m t h p r e v i o u s o n e s i t h a t h e r e t h c o n t e n t s o m e m o r y l o c a t i o n i f i r s t r e a d , t h e n i n c r e m e n t e d b y o n e ,a n d t h e n s a v e d a g a i n ( r e a d m o d i f y w r i t e ) . T h ec o m m a n d s w h i c h y o a r a c q u a i n t e d w i t h s f a e i t h e r r e a do w r o t e m e m o r y l o c a t i o n , b u n e v e r b o t h . T h I b - Ci n s t r u c t i o n d o e s n o a l t e r t h c o n t e n t s o t h a c c u m u l a t o r .

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

P O K E M P E E K ( M )

i t h a d d r e s s o t h m e m o r y l o c a t i o n .

6

Page 72: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

D E

T h i s i n s t r u c t i o n d e c r e m e n t s t h c o n t e n t s o t h r e g i s t e r . W h e n d e c r e m e n t f r o m $ 0 t $ F F , t h c a r r y f l a gi n o s e t . T h a n f l a g s a r e s e t d e p e n d i n g o n t h er e s u l t . I p s d u e o - B A S I C t h i s c a b w r i t t e n a

D E

T h i s i n s t r u c t i o n i t h a n a l o g o t h p r e v i o u si n s t r u c t i o n , d e c r e m e n t i n g t h c o n t e n t s o i n s t e a d o X T h e f l a g s a r a f f e c t e d i t h s a m e m a n n e r .

D E

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

H e r e a g a i n i t h t a b l e o i n s t r u c t i o n s a n t h e i ro p c o d e s :

6

Page 73: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C o m m a n d O c o d e

I N $ E I N $ C D E $ C D E $ 8

A d d r e s s m o d e I N D E a b s o l u t e $ E $ C o p e r a t i o n c o d e sz e r o p a g e $ E $ C a b s o l u t e x - i n d e x e d $ F $ D z e r o - p a g e x - i n d e x e d $ F $ D

6

Page 74: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h C o m m o d o r e 6

J F l a g m a n i p u l a t i o n i n s t r u c t i o n s

I a d d i t i o n t t h i n s t r u c t i o n s w h o s e r e s u l t s a f f e c t t h f l a g s , t h f l a g s c a a l s o b d i r e c t l y s e o c l e a r e d b t h p r o g r a m m e r . S o m e t i m e s t h i s i n e c e s s a r y b e f o r ep e r f o r m i n g a d d i t i o n a n s u b t r a c t i o n . T h e s e i n s t r u c t i o n sd o n o t r e q u i r e a n o p e r a n d s . T h e y a r e a l l o n e - b y t e i

l e n g t h .

T h e c a r r y f l a g

T h e c a r r y f l a g i s e b y t h e i n s t r u c t i o n S E ( s e t c a r r y ) /a n c l e a r e d b C L C ( c l e a r c a r r y ) .

T h S E i n s t r u c t i o n m u s t b u s e d b e f o r e e a c h s u b t r a c t i o na n t h C L i n s t r u c t i o n b e f o r e e a c h a d d i t i o n , o t h e r w i s et h a n s w e r m a y b w r o n g .

T h d e c i m a l f l a g

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

c l e a r e d f l a g , a w h a v e a l r e a d y l e a r n e d ) o i b i n a r y -c o d e d d e c i m a l ( B C D ) . T h i s i t h c a s e i t h f l a g i s e t .T h m i c r o p r o c e s s o r t h e n w o r k s w i t h B C n u m b e r s . T h i n s t r u c t i o n S E ( s e t d e c i m a l ) s e t s t h f l a g , C L ( c l e a r

6

Page 75: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

d e c i m a l ) c l e a r s t h e f l a g .

T h i n t e r r u p t f l a g

T h f l a g d e t e r m i n e s w h e t h e r t h p r o c e s s o r i r e a d y t a c c e p t a i n t e r r u p t o n o t . I t h f l a g i s e w i t h S E ( s e t i n t e r r u p t d i s a b l e ) , n i n t e r r u p t s w i l l b a c c e p t e d ,w h i l e i i t i s c l e a r e d w i t h C L ( c l e a r i n t e r r u p td i s a b l e ) , t h p r o c e s s o r c a a c c e p t i n t e r r u p t s .

T h o v e r f l o w f l a g

T h V f l a g c a n o n l y b c l e a r e d o i n s t r u c t i o n . T h i n s t r u c t i o n C L ( c l e a r o v e r f l o w ) s e r v e s t h i s p u r p o s e .

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

C o m m a n dC L S E C L S E C L S E C L

O c o d e$ 1 $ 3 $ D $ F $ 5 $ 7 $ B

6

Page 76: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

K T h S h i f t I n s t r u c t i o n s

T h e 6 5 1 0 m i c r o p r o c e s s o r h a s o m e i n s t r u c t i o n s f o w h i c ht h e r e a r n e q u i v a l e n t s i B A S I C : t h s h i f ti n s t r u c t i o n s . T h e s e i n s t r u c t i o n s s h i f t t h b i t s i t h a c c u m u l a t o r o a d d r e s s e d m e m o r y l o c a t i o n o n p o s i t i o n t

t h r i g h t o l e f t . I t h e s e i n s t r u c t i o n s a r u s e d i

r e f e r e n c e t o t h e a c c u m u l a t o r , o n s p e a k s o a c c u m u l a t o ra d d r e s s i n g . D e p e n d i n g o t h a d d r e s s i n g m o d e , t h e s ec o m m a n d s c a c o n s i s t o f o n e , t w o , o t h r e e b y t e s . I

m e m o r y l o c a t i o n i a d d r e s s e d , t h e y b e h a v e a a I N o D E i n s t r u c t i o n b f o l l o w i n g r e a d w i t h w r i t e . T h ec o n t e n t s o t h a c c u m u l a t o r r e m a i n u n c h a n g e d b y t h i sa d d r e s s i n g m o d e .

A S

A S s t a n d s f o " a r i t h m e t i c s h i f t l e f t . " I s h i f t s t h o

t h a d d r e s s e d b y t e b o n b i t - p o s i t i o n t t h e l e f t .z e r o i p l a c e d i t h r i g h t - m o s t b i ( b i t 0 a n t h c a r r y f l a g i s e e q u a l t o t h e l e f t - m o s t b i ( b i t 7 ) L e u s l o o k a t a n e x a m p l e u s i n g t h a c c u m u l a t o r .

A S L A T h a c c u m u l a t o r c o n t a i n s $ 4

$ 4 % 0 1 0 0 0 1 1 1% 1 0 0 0 1 1 1 0 $ 8 E ,

6

Page 77: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

I t h i s c a s e , t h r e s u l t i $ 8 a n t h c a r r y f l a g i

c l e a r e d b e c a u s e t h a c c u m u l a t o r c o n t a i n s z e r o i t h s e v e n t h p o s i t i o n . I w c o m p a r e t h c o n t e n t s o t h a c c u m u l a t o r b e f o r e a n a f t e r t h s h i f t , w e n o t i c e t h a tt h a c c u m u l a t o r h a d o u b l e d . W h e n w e s h i f t n o r m a ld e c i m a l n u m b e r o n p o s i t i o n l e f t , w e g e t t h v a l u e t i m e st e n . W i t h t h b i n a r y s y s t e m , s h i f t i n g l e f t t t h n e x tp o s i t i o n r e s u l t s i o n l y d o u b l i n g t h e v a l u e . W i t h t h A S i n s t r u c t i o n w e h a v e s i m p l e m e t h o d o d o u b l i n g n u m b e r .L e u t r a n o t h e r e x a m p l e :

A S T h a c c u m u l a t o r c o n t a i n s $ C $ C

% 1 0 0 1 1 0 1 0 $ 9 A ,

H e r e t o w e d o u b l e t h o r i g i n a l v a l u e a n t h c a r r y f l a gi s e t . T h d o u b l e o $ C ( 2 0 5 ) i t h e r e f o r e $ 1 9 A ( 4 1 0 ) .

L S

T h L S i n s t r u c t i o n ( l o g i c a l s h i f t r i g h t ) c o r r e s p o n d s t

t h A S L i n s t r u c t i o n ; h e r e , h o w e v e r , t h v a l u e i s h i f t e dr i g h t . T h e s e v e n t h b i i l o a d e d w i t h z e r o a n b i t z e r oi p l a c e d i t h c a r r y f l a g .

L S T h a c c u m u l a t o r c o n t a i n s $ C A .

6

Page 78: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

$ C % 1 1 0 0 1 0 1 0% 0 1 1 0 0 1 0 1 $ 6 5 , C

T h r e s u l t i s $ 6 5 . T h c a r r y f l a g c o n t a i n s t h v a l u e o b i p o s i t i o n b e f o r e t h s h i f t o c c u r s , i t h i s c a s e 0

S t h c a r r y f l a g i c l e a r . Y o u m a h a v e n o t i c e d t h a t ,s h i f t i n g o n e b i t p o s i t i o n t t h r i g h t d i v i d e s t h o r i g i n a l v a l u e b y t w o . T h c a r r y f l a g g i v e s t h c o n t e n t so b i b e f o r e t h e s h i f t . W c a i n t e r p r e t t h v a l u e o t h c a r r y a t h r e m a i n d e r o t h d i v i s i o n b t w o . T h i sw a w c a n t e l l i n u m b e r i o d o r e v e n . T h e L S Ri n s t r u c t i o n s h i f t s t h l o w e s t b i i n t o t h e c a r r y . T h c a r r y f l a g c a t h e n b t e s t e d w i t h B C o B C S . I

m e m o r y l o c a t i o n i a d d r e s s e d w i t h t h L S i n s t r u c t i o n ,t h c o n t e n t s o t h a c c u m u l a t o r a r r e t a i n e d .

R O

W i t h t h R O i n s t r u c t i o n ( r o t a t e l e f t ) w c a s h i f tm e m o r y l o c a t i o n o r e g i s t e r l e f t c y c l i c a l l y , t h a t i s

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

R O T h a c c u m u l a t o r c o n t a i n s $ 4 B ,t h c a r r y f l a g i s e t .

$ 4 % 0 1 0 0 1 0 1 1 C = $ 9 % 1 0 0 1 0 1 1 1 C =

7

Page 79: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A l b i t s a r s h i f t e d o n p o s i t i o n t o t h e l e f t . T h c a r r yf l a g i t r a n s f e r r e d i n t o t h n o w - v a c a n t b i 0 T h p u s h e d - o u t s e v e n t h b i i p l a c e d i n t o t h c a r r y . W g e r e s u l t o $ 9 a n c l e a r e d c a r r y . H e r e a g a i n t h c o n t e n t s o t h a c c u m u l a t o r a r d o u b l e d ; a n y o v e r f l o w i p l a c e d i n t o t h c a r r y .

R O

T h R O R i n s t r u c t i o n ( r o t a t e r i g h t ) i t h o p p o s i t e o t h R O i n s t r u c t i o n a n r o t a t e s t h c o n t e n t s o r e g i s t e rc y c l i c a l l y o n p o s i t i o n t t h e r i g h t . I s d o i n g , t h c o n t e n t s o t h c a r r y f l a g a r e p l a c e d i n t o t h n o w - f r e ep o s i t i o n w h i l e t h p u s h e d - o u t c o n t e n t s o b i a r p l a c e d i n t o t h c a r r y f l a g .

R O A T h e a c c u m u l a t o r c o n t a i n s $ 8 9 ,t h c a r r y f l a g i c l e a r .

$ 8 % 1 0 0 0 1 0 0 1 C = $ 4 % 0 1 0 0 0 1 0 0 C =

F r o m $ 8 w g e $ 4 4 , t h e c a r r y i s e t a n d i n d i c a t e sr e m a i n d e r f r o m t h d i v i s i o n b t w o . A l s h i f t a n r o t a t ec o m m a n d s s e t t h e a n f l a g s d e p e n d i n g . o n i t h r e s u l tg r e a t e r t h a n $ 7 o e q u a l t 0

T h i s t a b l e c o n t a i n s t h o p e r a t i o n c o d e s f o r a l l

7

Page 80: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

a d d r e s s i n g m o d e s :

A d d r e s s m o d ea c c u m u l a t o ra b s o l u t ez e r o p a g ea b s o l u t e x - i n d e x e dz e r o p a q e y - i n d e x e d

A S $ 0 $ 0 $ 0 $ 1 $ 1

L S $ 4 $ 4 $ 4 $ 5 $ 5

R O $ 2 $ 2 $ 2 $ 3 $ 3

R O $ 6 o p e r a t i o n c o d e$ 6 $ 6 $ 7 $ 7

7

Page 81: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

L T h S u b r o u t i n e I n s t r u c t i o n s

v e r y i m p o r t a n t p r o g r a m m i n g t e c h n i q u e , w h i c h y o a l r e a d yk n o w f r o m B A S I C , i t h u s o s u b r o u t i n e s . I B A S I C , t h ei n s t r u c t i o n G O S U B i u s e d t c a l l s u b r o u t i n e , a n t h i n s t r u c t i o n R E T U R N i u s e d t r e t u r n f r o m t h s u b r o u t i n e .H o i s s u b r o u t i n e c a l l d i s t i n g u i s h e d f r o m n o r m a l j u m pi n s t r u c t i o n s u c h a G O T O o J M P ? W h e n w c a l ls u b r o u t i n e , t h p r o c e s s o r o B A S I C i n t e r p r e t e r m u s t m a k en o t e o f t h e l o c a t i o n f r o m w h i c h t h s u b r o u t i n e w a s c a l l e ds t h a t t h R E T U R N i n s t r u c t i o n c a b r a n c h b a c k t t h l o c a t i o n f o l l o w i n g t h c a l l . T h e B A S I C i n t e r p r e t e r d o e st h i s f o u s t h 6 5 1 0 a l s o h a n d l e s t h i s t a s k f o r u i m a c h i n e l a n g u a g e . I s p i t e o t h i s , h o w e v e r , w s h o u l dk n o w h o i w o r k s .

S t h a t t h p r o c e s s o r k n o w s w h i c h i n s t r u c t i o n t b r a n c hb a c k t o R E T U R N i n s t r u c t i o n , t h c u r r e n t a d d r e s s o t h p r o g r a m c o u n t e r i s a v e d w h e n t h c a l l i m a d e .

s p e c i a l s t o r a g e a r e a i r e s e r v e d f o r t h i s , c a l l e d t h s t a c k . T h i s s t a c k l i e s f r o m a d d r e s s $ 0 1 0 0 t $ 0 1 F F ( 2 5 6t 5 1 1 ) . T h e r e i s o m e t h i n g c a l l e d s t a c k p o i n t e r s t h a t t h m i c r o p r o c e s s o r k n o w s a w h i c h a d d r e s s o t h s t a c k i c a n s a v e r e t u r n a d d r e s s . W e h a v e a l r e a d y b e e ni n t r o d u c e d t t h s t a c k r e g i s t e r . L e t ' s t a k e l o o k a w h a t h a p p e n s w h e n s u b r o u t i n e i c a l l e d .

T h p r o c e s s o r t a k e s t h c u r r e n t c o n t e n t s o t h p r o g r a m

7

Page 82: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

c o u n t e r 2 a n d i v i d e s i i n t o h i g h a n l o b y t e s . T h eh i g h b y t e i s t o r e d a a d d r e s s $ 1 0 0 p l u s S P T h e n t h c o n t e n t s o t h s t a c k p o i n t e r a r d e c r e m e n t e d b y o n e a n dt h l o w b y t e i s t o r e d o t h s t a c k ( a d d r e s s 1 0 + S P ) ,F i n a l l y t h s t a c k p o i n t e r i d e c r e m e n t e d b o n e a g a i n .N o b r a n c h i m a d e t t h s u b r o u t i n e .

W h e n t h p r o c e s s o r e n c o u n t e r s a R T i n s t r u c t i o n , t h o p p o s i t e p r o c e s s t a k e s p l a c e . T h e 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 o n e a n d o n e b y t e i t a k e n f r o m t h s t a c k( a d d r e s s $ 1 0 0 + S P ) . T h i s b y t e i u s e d a t h l o w - b y t e o t h p r o g r a m c o u n t e r . T h e n 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 a g a i n a n t h h i g h - b y t e o t h p r o g r a mc o u n t e r i f e t c h e d f r o m t h s t a c k . N o t h p r o g r a mc o u n t e r p o i n t s t t h n e x t i n s t r u c t i o n a f t e r t h s u b r o u t i n e c a l l a n d t h e p r o g r a m i c o n t i n u e d t h e r e .

W h e n v a l u e s a r p l a c e d o t h s t a c k , t h v a l u e i f i r s ts a v e d o t h s t a c k a n t h e n t h s t a c k p o i n t e r i

d e c r e m e n t e d b y o n e . W h e n g e t t i n g b y t e b a c k 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 i f i r s t i n c r e m e n t e d b o n e . T h s t a c k g r o w s f r o m t o t b o t t o m ( f r o m $ 1 F F t $ 1 0 0 ) . A e x a m p l e w i l l e x p l a i n t h e s e e v e n t s .

$ C 4 8 0 J S $ 2 0 0 0 S $ F $ 0 1 F A $ C S P = S P - 1$ 0 1 F 9 $ 8 S P = S P - 1S $ F

7

Page 83: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

N o e x e c u t i o n b r a n c h e s t $ 2 0 0 0 , w h e r e f o o u e x a m p l e ,

t h e r e i s R E T U R N i n s t r u c t i o n .

$ 2 0 0 0 R T S $ F S P = S P + 1S P = S P + 1S $ F

P C P C

( $ 0 1 F 9 )( $ O 1 F A )

$ 8 $ C

T h p r o g r a m c o u n t e r n o w c o n t a i n s $ C 4 8 2 . T h i s v a l u e i

t h e n i n c r e m e n t e d b o n e a n d s p o i n t s t $ C 4 8 3 , t h n e x ti n s t r u c t i o n a f t e r t h s u b r o u t i n e c a l l a a d d r e s s $ C 4 8 0 .

T h s t a c k w o r k s o t h p r i n c i p l e " L a s t I n — F i r s t O u t "( L I F O ) . T h v a l u e l a s t p l a c e d o t h s t a c k i t h f i r s tv a l u e t o b e r e t u r n e d . U s i n g t h i s p r i n c i p l e , i i a l s op o s s i b l e t n e s t s u b r o u t i n e s . I s u b r o u t i n e i c a l l e df r o m a n o t h e r s u b r o u t i n e , t h f i r s t R T i n s t r u c t i o ne n c o u n t e r e d r e t u r n s t h i n s t r u c t i o n f o l l o w i n g t h m o s tr e c e n t J S i n s t r u c t i o n . T h n e x t R T i n s t r u c t i o n t h e nr e t u r n s c o n t r o l t t h i n s t r u c t i o n f o l l o w i n g t h n e x tm o s t r e c e n t J S i n s t r u c t i o n . F o e x a m p l e :

t h i s J S t h i s J S c a l l s t h i s s u b r o u t i n e

M A I N P G M

c a l l s t h i s s u b r o u t i n e

J S S U B 1

R T r e t u r n s t t h i si n s t r u c t i o n

r e t u r n s t t h i si n s t r u c t i o n

7

Page 84: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

O n c e y o u b e c o m e f a m i l i a r w i t h t h o p e r a t i o n o t h s t a c k ry o c a a l s o u s i f o t e m p o r a r y s t o r a g e o d a t a . T h i si d e s c r i b e d i t h n e x t s e c t i o n .

T h e t a b l e c o n t a i n s t h o p e r a t i o n c o d e s f o s u b r o u t i n ec a l l a n r e t u r n .C o m m a n d O p c o d e

J S $ 2 R T $ 6

7

Page 85: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

M T h S t a c k I n s t r u c t i o n s

T h 6 5 1 0 h a t h a b i l i t y t s a v e t h c o n t e n t s o t h a c c u m u l a t o r a n t h s t a t u s r e g i s t e r o t h s t a c k a n t g e t h e m b a c k a g a i n . T h s t a c k p o i n t e r i a u t o m a t i c a l l yd e c r e m e n t e d a f t e r w r i t i n g a n i n c r e m e n t e d b e f o r e r e a d i n g .

P H

T h i n s t r u c t i o n P H A ( p u s h a c c u m u l a t o r ) s a v e s t h c o n t e n t so f t h e a c c u m u l a t o r o t h s t a c k a n d e c r e m e n t s t h s t a c kp o i n t e r b y o n e . T h c o n t e n t s o t h a c c u m u l a t o r a r u n c h a n g e d .

P H

W i t h t h P H i n s t r u c t i o n ( p u s h p r o c e s s o r s t a t u s ) , t h e n t i r e s t a t u s r e g i s t e r ( c o n t e n t s o t h e f l a g s ) i p l a c e do n t h e s t a c k a n t h s t a c k p o i n t e r i d e c r e m e n t e d b o n e .

T h c o n t e n t s o t h s t a t u s r e g i s t e r a r r e t a i n e d .

P L

T h P L i n s t r u c t i o n ( p u l l a c c u m u l a t o r ) i t h o p p o s i t e o P H A . 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 a n b y t e r e a d

7

Page 86: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

f r o m t h s t a c k i n t o t h a c c u m u l a t o r . T h a n f l a g sa r s e a c c o r d i n g t o t h e v a l u e .

P L

W i t h t h i s i n s t r u c t i o n , o n b y t e i f e t c h e d f r o m t h s t a c ka n p l a c e d i t h s t a t u s r e g i s t e r . T h i s i t h c o m p l e m e n to f P H P .

T h t a b l e c o n t a i n s t h o p e r a t i o n c o d e s .

C o m m a n d O c o d e

P H $ 4 P H $ 0 P L $ 6 P L $ 2

7

Page 87: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

N I n s t r u c t i o n s f o h a n d l i n g i n t e r r u p t s

W a r e n o t g o i n g t u s u s t h e s e i n s t r u c t i o n s b u m e n t i o n t h e m o n l y 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 e 6 5 1 0h a t h a b i l i t y t i n t e r r u p t p r o g r a m f r o m t h o u t s i d ew o r l d . F o t h i s , t h e i n t e r r u p t l i n e ( I R Q , i n t e r r u p tr e q u e s t ) o t h p r o c e s s o r m u s t b a c t i v a t e d . T h i n t e r r u p t p r o c e d u r e i s i m i l a r t s u b r o u t i n e c a l l . T h p r o c e s s o r i n t e r r u p t s t h c u r r e n t p r o g r a m a n p l a c e s 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 s t a t u s r e g i s t e ro t h e s t a c k . N o w e x e c u t i o n b r a n c h e s t t h a d d r e s sc o n t a i n e d a $ F F F E a n d $ F F F F . T h e c o n t e n t s o t h e s ea d d r e s s e s a r u s e d a t h n e p r o g r a m c o u n t e r .

I a d d i t i o n t o a n i n t e r r u p t i o n f r o m t h o u t s i d e , t h e 6 5 1 0c a n a l s o i n t e r r u p t p r o g r a m t h r o u g h i n s t r u c t i o n f r o mw i t h i n t h p r o g r a m . T h i n s t r u c t i o n B R ( b r e a k ) s e r v e st h i s p u r p o s e . T h p r o g r a m c o u n t e r a n t h s t a t u s r e g i s t e ra r s a v e d o n t h e s t a c k .

I o r d e r t r e t u r n t o t h e m a i n p r o g r a m f r o m a i n t e r r u p tr o u t i n e , t h e r e i i n s t r u c t i o n s i m i l a r t t h R T i n s t r u c t i o n f o s u b r o u t i n e s . T h i n s t r u c t i o n R T ( r e t u r nf r o m i n t e r r u p t ) g e t s t h p r o g r a m c o u n t e r a n t h c o n t e n t so t h s t a t u s r e g i s t e r b a c k f r o m t h s t a c k s t h a t t h p r o g r a m c a c o n t i n u e w i t h o u t c h a n g i n g t h f l a g s .

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

7

Page 88: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t h e s e c o m m a n d s :

C o m m a n d O p c o d e

B R $ 0 R T $ 4

T h e r e i o n i n s t r u c t i o n w h i c h h a s n o t b e e n m e n t i o n e d y e w h i c h d o e s a b s o l u t e l y n o t h i n g a n s i c a l l e d N O ( n

o p e r a t i o n ) . T h i s i n s t r u c t i o n i u s e d t r e m o v e o p e r a t i o nc o d e s f r o m p r o g r a m w i t h o u t s h i f t i n g t h r e s t o f t h ec o m m a n d s , a w e l l a i d e l a y l o o p s ( t h i s i n s t r u c t i o n t o r e q u i r e s c e r t a i n a m o u n t o t i m e t e x e c u t e ) .

C o m m a n d O p c o d eN O P $ E A

8

Page 89: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

4 E n t e r 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 s

N o t h a t w h a v e b e c o m e a c q u a i n t e d w i t h t h i n s t r u c t i o n s o t h m i c r o p r o c e s s o r a n t h e i r f u n c t i o n s , l e t ' s t u r n o u rt h o u g h t s t w r i t i n g p r o g r a m s i m a c h i n e l a n g u a g e . H o d w e n t e r s u c h p r o g r a m s ?

A s w e h a v e a l r e a d y s e e n f r o m t h d e s c r i p t i o n s o t h i n s t r u c t i o n s , m a c h i n e l a n g u a g e p r o g r a m p r o g r a m c o n s i s t ss i m p l y o s e o i n s t r u c t i o n c o d e s a n t h e i r c o r r e s p o n d i n go p e r a n d s , i a n y . A s s i m p l e e x a m p l e , w w i l l d i s p l a yc h a r a c t e r o t h s c r e e n o t h C o m m o d o r e 6 4 W c a n d o t h i sw i t h t h e s e s i m p l e P O K E c o m m a n d s i B A S I C :

P O K E 1 0 2 4 , 1 R E D I S P L A Y C O D E F O R AP O K E 5 5 2 9 6 , 7 R E M C O L O R C O D E F O Y E L L O W

W h e n w e x e c u t e b o t h c o m m a n d s , y e l l o w " A a p p e a r s i t h u p p e r l e f t - h a n d c o r n e r o t h d i s p l a y . N o w w a n t t s e h o t h e s e t w c o m m a n d s c a b p e r f o r m e d i m a c h i n e l a n g u a g e .F o r t h i s , w e r e c a l l t h a t t h P O K E c o m m a n d c a b r e p l a c e d b t h i n s t r u c t i o n S T A . T h i s i n s t r u c t i o n p l a c e 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 a t h a d d r e s s s p e c i f i e d b y t h e o p e r a n d .F i r s t l o a d t h a c c u m u l a t o r w i t h t h d e s i r e d v a l u e .

L D # S T 1 0 2 4

H e r e t h a c c u m u l a t o r i l o a d e d w i t h t h v a l u e a n t h

8

Page 90: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

c o n t e n t s a r s a v e d a a d d r e s s 1 0 2 4 . I t h s a m e w a y , w c a

s e t h v a l u e f o t h c o l o r c o d e .

L D # S T 5 5 2 9 6

I w w e r e t t r e n t e r i n g t h e s e i n s t r u c t i o n s d i r e c t l y i n t ot h c o m p u t e r , w w o u l d g e ? S Y N T A X E R R O R . T h C o m m o d o r e 6

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

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

W m u s t c o n v e r t t h m n e m o n i c i n s t r u c t i o n s i n t o t h e i rc o r r e s p o n d i n g b i n a r y i n s t r u c t i o n ( o o p e r a t i o n ) c o d e s . T d t h i s , w u s t h t a b l e i A p p e n d i x A F o L D i n s t r u c t i o nu s i n g t h i m m e d i a t e a d d r e s s i n g m o d e ( w e w a n t t l o a d t h a c c u m u l a t o r w i t h t h n u m b e r 1 n o w i t h t h c o n t e n t s o m e m o r y l o c a t i o n 1 w f i n d t h a t t h o p c o d e i $ A 9 . N e x tf o l l o w s t h o p e r a n d i t s e l f , 1 W a r u s i n g a b s o l u t ea d d r e s s i n g f o r t h e S T A i n s t r u c t i o n . T h i n s t r u c t i o n i t h e r e f o r e $ 8 D . T h o p e r a n d i t h i s c a s e i s m e m o r y a d d r e s s ,s a v e d a 1 6 - b i t v a l u e . F o r t h i s i m u s t b d i v i d e d i n t ot w 8 - b i t v a l u e s . F i r s t c o m e s t h l o w - b y t e a n d t h e n t h h i g h - b y t e . S e p a r a t i n g 1 6 - b i t v a l u e i e a s i e r t p e r f o r m i w f i r s t c o n v e r t t h n u m b e r t h e x a d e c i m a l . T h e r e f o r e w c o n v e r t 1 0 2 4 t o t h h e x a d e c i m a l n u m b e r $ 0 4 0 0 . 5 5 2 9 6 b e c o m e s

8

Page 91: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

$ D 8 0 0 . L e t ' s r e w r i t e o u p r o g r a m u s i n g h e x a d e c i m a l n u m b e r s .

L D # $ 0 1S T A $ 0 4 0 0L D # $ 0 7S T A $ D 8 0 0

T h l o w - b y t e o $ 0 4 0 0 i $ 0 a n t h h i g h - b y t e i $ 0 4 . T h i n s t r u c t i o n S T A $ 0 4 0 0 i r e p r e s e n t e d a $ 8 D f $ 0 0 f $ 0 4 . L D # $ 0 7 S T $ D 8 0 0 a r r e p r e s e n t e d a $ A 9 f $ 0 7 , $ 8 D , $ 0 0 , $ D 8 .O u c o m p l e t e p r o g r a m l o o k s l i k e t h i s :

$ A 9 , $ 0 1 , $ 8 D , $ 0 0 , $ 0 4 , $ A 9 , $ 0 7 , $ 8 D , $ 0 0 , D

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

p l a c e d i m e m o r y ? W m u s t f i n d a a r e a w h i c h i n o u s e d b t h o p e r a t i n g s y s t e m o r t h e B A S I C i n t e r p r e t e r . F o t h C o m m o d o r e 6 w e h a v e s u c h a a r e a f r o m a d d r e s s 4 9 1 5 2 t 5 3 2 4 7 o r $ C 0 0 0 t $ C F F F . T h i s a r e a i 4 b y t e s l a r g e a n w i l l s u f f i c e e v e n f o v e r y l a r g e m a c h i n e l a n g u a g e p r o g r a m s .L e t ' s p l a c e o u p r o g r a m i m e m o r y b e g i n n i n g a a d d r e s s4 9 1 5 2 . W c a n d o t h i s w i t h s m a l l B A S I C p r o g r a m . F i r s tc h a n g e t h h e x a d e c i m a l n u m b e r s t d e c i m a l .

1 6 9 , 0 1 4 1 , 0 4 1 6 9 , 7 1 4 1 , 0 2 1

1 0 F O 1 = T 1 1 R E A D P O K E 4 9 1 5 2 + 1 , A1 2 N E X T1 3 D A T A 1 6 9 , 0 , 1 4 1 , 0 , 4 , 1 6 9 , 7 , 1 4 1 , 0 , 2 1 6

8

Page 92: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

W h e n w e R U N t h i s p r o g r a m , t h m a c h i n e l a n g u a g e p r o g r a m i u s u a l l y p l a c e d i n t o m e m o r y b e g i n n i n g a a d d r e s s 4 9 1 5 2 . N o w e c a n f i n a l l y e x e c u t e o u p r o g r a m . T h S Y i n s t r u c t i o n i u s e d f o t h i s i B A S I C . I w g i v e t h s t a r t i n g a d d r e s s o 4 9 1 5 2 a f t e r t h e S Y S i n s t r u c t i o n , t h p r o g r a m i e x e c u t e df r o m B A S I C . B c a r e f u l W h a t h a p p e n s o n c e t h p r o c e s s o r h a

e x e c u t e d t h i n s t r u c t i o n S T $ D 8 0 0 ? I g e t s t h c o n t e n t s o

t h n e x t m e m o r y l o c a t i o n a n i n t e r p r e t s i a i n s t r u c t i o nc o d e . I f i t i s n o l e g a l i n s t r u c t i o n , t h p r o c e s s o r m a ye n t e r a u n c o n t r o l l a b l e s t a t e a n " c r a s h . " Y o m u s t t h e nt u r n t h c o m p u t e r o f f a n d t h e n o a g a i n . T h p r o g r a m i l o s ta n d y o u m u s t s t a r t o v e r f r o m t h b e g i n n i n g .

O n c e t h p r o c e s s o r h a e x e c u t e d t h f o u r i n s t r u c t i o n s ,c o n t r o l s h o u l d b r e t u r n e d t t h B A S I C i n t e r p r e t e r . T h S Y i n s t r u c t i o n e x e c u t e s o u r p r o g r a m a s u b r o u t i n e . W s h o u l de n t h p r o g r a m w i t h a R T i n s t r u c t i o n .

P O K E 4 9 1 5 2 + 1 0 , 9 6

W c a p l a c e t i n e R T c o d e a t h e n o o u p r o g r a m . N o w c a s t a r t o u p r o g r a m w i t h :

S Y S 4 9 1 5 2

I m m e d i a t e l y y e l l o w a p p e a r s i t h u p p e r c o r n e r o t h d i s p l a y a n t h c o m p u t e r r e s p o n d s w i t h R E A D Y . .

8

Page 93: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

I t h i s p r o c e d u r e t o c o m p l i c a t e d f o y o u ? I f s o , t h e n y o a r n o a l o n e . W a y s h a v e b e e n f o u n d t a u t o m a t e t h i sp r o c e s s . A f t e r a l l , t h i s i w h y o u h a v e h a c o m p u t e r !

Y o n e e d p r o g r a m t h a t a c c e p t s m a c h i n e l a n g u a g ei n s t r u c t i o n s s u c h a " L D A # 1 a n a u t o m a t i c a l l y c o n v e r t s t h m n e m o n i c s t t h e i r p r o p e r o p e r a t i o n c o d e a n w r i t e s t h

g e n e r a t e d c o d e i n t o m e m o r y . S u c h p r o g r a m i c a l l e d a a s s e m b l e r . S t h a t y o u c a n s t a r t w o r k i n g w i t h a a s s e m b l e rf r o m t h b e g i n n i n g a n d n o t l o s e y o u r d e s i r e b w o r k i n gt h r o u g h b o r i n g c a l c u l a t i o n s a n t a b l e c o n s u l t a t i o n s , w e h a v ew r i t t e n c o m p l e t e a s s e m b l e r f o y o u . B e f o r e w e e x p l a i n t h o p e r a t i o n o t h a s s e m b l e r , w w i l l t a k e l o o k a o t h e ru t i l i t y p r o g r a m s t h a t c a b u s e d f o m a c h i n e l a n g u a g ep r o g r a m m i n g .

T h f i r s t i t h m o n i t o r p r o g r a m . m o n i t o r p e r m i t s t h d i r e c t a c c e s s o t h m e m o r y a n r e g i s t e r s o t h m i c r o p r o c e s s o r . W i t h t h m o n i t o r y o u c a n e x a m i n e a n a l t e rt h c o n t e n t s o m e m o r y a n r e g i s t e r s . I a d d i t i o n , y o c a s t a r t e x e c u t 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 f r o m m o n i t o r .M o s t m o n i t o r p r o g r a m s a l s o p e r m i t s a v i n g a n l o a d i n g o p r o g r a m s t o / f r o m c a s s e t t e o d i s k . I y o u h a v e m o n i t o r ,t h e n y o u c a e n t e r y o u r m a c h i n e l a n g u a g e p r o g r a m s i h e c o d e . T h i s i f i n e f o s m a l l p r o g r a m s o c h a n g e s . O f t e n t h

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

8

Page 94: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

m n e m o n i c f o r m ; $ A 9 , $ 0 a r t r a n s l a t e d t L D # $ 0 1 , f o r

e x a m p l e . W h a v e a l s o w r i t t e n d i s a s s e m b l e r . I i p r e s e n t e d l a t e r . U s i n g t h i s p r o g r a m y o u c a n d i s a s s e m b l e n o o n l y y o u r o w n p r o g r a m s , b u p a r t s o t h o p e r a t i n g s y s t e ma n B A S I C i n t e r p r e t e r a w e l l . Y o u c a n o f t e n g e v a l u a b l eh i n t s b l o o k i n g a o t h e r e x a m p l e o g o o d p r o g r a m m i n g .

8

Page 95: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

4 T h A s s e m b l e r

H e r e ' s s m a l l 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 d e m o n s t r a t e st h a d v a n t a g e s o f a n a s s e m b l e r o v e r m a n u a l e n t r y o m a c h i n e l a n g u a g e p r o g r a m .

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

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

T h C o m m o d o r e 6 c a n d i s p l a y 2 5 d i f f e r e n t c h a r a c t e r s o n t h es c r e e n ; t h d i s p l a y c o d e s r a n g e f r o m t 2 5 5 . E a c h d i s p l a yc o d e p l a c e s u n i q u e c h a r a c t e r o t h s c r e e n . U s i n g B A S I C

y o u c a n d o t h i s w i t h l o o p .

1 0 1 1 1 2 P O K E 1 0 2 4 + X f R E D I S P L A Y C O D E1 3 1 4 P O K E 5 5 2 9 6 + X , A R E M C O L O R C O D E1 5 1 6 I < 2 5 T H E N 1 1 1 7 E N

I y o u R U N t h i s p r o g r a m , t h e n t i r e c h a r a c t e r s e o f t h eC o m m o d o r e 6 i d i s p l a y e d . N o t e t h a t t h t i m e t R U t h i sp r o g r a m i a b o u t s e c o n d s .

T h i s B A S I C p r o g r a m i w r i t t e n s t h a t y o c a e a s i l y c o n v e r ti t m a c h i n e l a n g u a g e . N o f o r t h e c o n v e r s i o n ! W e ' l l h a n d l ei l i n e b y l i n e . F i r s t w e c a n u s t h X - r e g i s t e r i p l a c e o

8

Page 96: The Machine Language Book for the Commodore 64

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

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

Page 97: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

1 6 I < 2 5 T H E N 1 1 0 = >

T h i s B A S I C s t a t e m e n t r e q u i r e s s o m e c o n s i d e r a t i o n . W e w a n t t b r a n c h b a c k t l i n e 1 1 i t h c o n t e n t s o f i n o e q u a l t 2 5 6 . B u t h X - r e g i s t e r c a n h o l d v a l u e s o n l y u t 2 5 5 . W h a th a p p e n s w h e n t h X - r e g i s t e r c o n t a i n s 2 5 a n a I N i n s t r u c t i o n ( i l i n e 1 5 0 ) i e x e c u t e d ? I n c r e m e n t i n g f r o m 2 5 ( $ F F ) w g e t $ 1 0 0 . T h e o v e r f l o w i s i m p l y i g n o r e d a n t h r e s u l t i $ 0 0 — z e r o .

H o c a w r e c o g n i z e t h i s c a s e ? R e c a l l t h d i s c u s s i o n

c o n c e r n i n g t h e f l a g s . E a c h t i m e t h X - r e g i s t e r i i n c r e m e n t e d , t h a n f l a g s a r a l s o a f f e c t e d . A f t e r t h I N i n s t r u c t i o n , i t h v a l u e i t h X - r e g i s t e r i g r e a t e rt h a n $ 7 F ( 1 2 7 ) , t h e f l a g i s e t , o t h e r w i s e i i c l e a n e d .S i m i l a r l y i t h v a l u e i t h X - r e g i s t e r i z e r o a f t e r t h I N i n s t r u c t i o n , t h f l a g i s e t , o t h e r w i s e i i c l e a r e d .S c a u s t h c o n t e n t s o t h z e r o f l a g a t h b a s i s o o u d e c i s i o n . I i t i s n o t s e t , t h e c o n t e n t s a r n o e q u a l t

2 5 ( 0 a n w m u s t b r a n c h b a c k t l i n e 1 1 0 .

1 6 I < 2 5 T H E N 1 1 = B N l i n e 1 1 0

H e r e ' s a n o t h e r p r o b l e m . I 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 w c a n n o t s a " b r a n c h t l i n e 1 1 0 " . I n s t e a d w e m u s t s p e c i f y t h

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

8

Page 98: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

l o c a t e d .

W d o n o t k n o w w h a t t h a d d r e s s i y e t . W m u s t d e t e r m i n et h p r o g r a m s t a r t i n g a d d r e s s a n t h l e n g t h o e a c hi n s t r u c t i o n . I w b e g i n t h p r o g r a m a a d d r e s s 4 9 1 5 2 o $ C 0 0 0 , t h e n t h e s e a r e t h e a d d r e s s e s o e a c h i n s t r u c t i o n :

L I N E # A D D R E S S M N E M O N I C1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7

$ C 0 0 0$ C 0 0 2$ C 0 0 3$ C 0 0 6$ C 0 0 8$ C 0 0 B$ C 0 0 C$ C 0 0 E

L D T X S T L D S T

N B N R T

#

$ 0 4 0 0 , X# $ D 8 0 0 , X$ C 0 0 2

H o d i d w e d t h i s ? F i r s t s e " p r o g r a m c o u n t e r " t t h s t a r t i n g a d d r e s s o t h p r o g r a m . I t h i s c a s e i s t a r t s a $ C 0 0 0 . N o f i n d t h l e n g t h o e a c h i n s t r u c t i o n b l o o k i n gi A p p e n d i x D T h l e n g t h i e i t h e r o n e , t w o t h r e e b y t e s .U p d a t e t h " p r o g r a m c o u n t e r " b a d d i n g t h l e n g t h o f t h ei n s t r u c t i o n . T h e " p r o g r a m c o u n t e r " n o w c o n t a i n s t h a d d r e s so t h n e x t i n s t r u c t i o n . R e p e a t t h i s f o e a c h i n s t r u c t i o n .

A f t e r h a n d a s s e m b l i n g t h p r o g r a m , w e f i n d t h a t t h i n s t r u c t i o n a l i n e 1 6 0 m u s t b r a n c h t a d d r e s s $ C 0 0 2 . N o t a k e t h t r o u b l e t c o n v e r t t h p r o g r a m t g e n e r a t e t h m a c h i n e c o d e . H e r e ' s t h e c o d e :

9

Page 99: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

$ C 0 0 0$ C 0 0 2$ C 0 0 3$ C 0 0 6$ C 0 0 8$ C O 0 B$ C 0 0 C$ C 0 0 E

A 8 9 A 9 E D 6

0

0 0 0 0 0 D 8?

L D T X S T L D S T

N B N R T

$

$ 0 4 0 0 , X# $ D 8 0 0 f X$ C 0 0 2

W e c a n s u b s t i t u t e t h o p e r a t i o n c o d e f o r t h e m n e m o n i ca c c o r d i n g t A P P E N D I X A W e m u s t c o n v e r t t h 1 6 - b i t a b s o l u t e

a d d r e s s e s f o u n d i l i n e 1 2 a n 1 4 0 t o t h e i r r e v e r s e f o r m s( 0 0 a n 0 0 D 8 ) . N e x t w e m u s t c a l c u l a t e t h m i s s i n g o f f s e tf o t h b r a n c h i n s t r u c t i o n i l i n e 1 6 0 . T o d t h i s , f i r s tf o r m t h p o s i t i v e d i f f e r e n c e b e t w e e n t h a d d r e s s e s a n f o r mt h e t w o ' s c o m p l e m e n t o t h r e s u l t .

$ C 0 0 E$ C 0 0 2

$ 0 0 0 C$ 0 % 0 0 0 0 1 1 0 0 o r i g i n a l v a l u e

% 1 1 1 1 0 0 1 1 i n v e r t a l b i t sa d

$ F % 1 1 1 1 0 1 0 0 t w o ' s c o m p l e m e n t

W e f i n d t h a t t h o f f s e t i $ F 4 . E n t e r t h i s v a l u e a t h o p e r a n d o f t h e B N i n s t r u c t i o n a b o v e .

W h a v e c o m p l e t e d t h h a n d a s s e m b l y o t h i s p r o g r a m . T t e s tt h p r o g r a m , t h m a c h i n e l a n g u a g e p r o g r a m h a t o b e i m e m o r y . Y o h a v e t w r i t e t h o p e r a t i o n c o d e s i n t o m e m o r ys o m e h o w s u c h a P O K i n g t h e m .

9

Page 100: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

H e r e ' s a e x a m p l e :

1 0 R E S A M P L E M P R O G R A M T D I S P L A Y C H A R A C T E R S O S C R E E N1 5 M 4 9 1 5 22 0 F O T 1 2 1 R E A D O C2 2 P O K E M L + I f O C2 3 N E X T2 4 E N 3 0 D A T A 1 6 0 , 0 1 3 8 , 1 5 7 , 0 4 1 6 9 ,3 1 D A T A 1 5 7 , 0 2 1 6 , 2 3 2 , 2 0 8 , 2 4 4 , 9

R u t h B A S I c p r o g r a m t p u t h m a c h i n e l a n g u a g e r o u t i n e i

m e m o r y b e g i n n i n g a t 4 9 1 5 2 . N o t t e s t i t m o v e t h c u r s o rt t h l o w e r h a l f o t h s c r e e n a n d e n t e r :

S Y 4 9 1 5 2

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

N o l e t ' s u s t h L E A ( L o t h a r E n g l i s c h A s s e m b l e r n a m e da f t e r t h a u t h o r ) t e n t e r m a c h i n e l a n g u a g e p r o g r a m s . A a s s e m b l e r m a k e s 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 q u i c k e r ,e a s i e r a n d l e s s p r o n e t o e r r o r . U s i n g t h L E A , y o u c a n e n t e rm a c h i n e l a n g u a g e p r o g r a m s i n t o t h c o m p u t e r i e x a c t l y t h s a m e w a y a y o e n t e r B A S I C p r o g r a m s . Y o c a a d d , d e l e t e o

i n s e r t o c h a n g e l i n e s j u s t a i B A S I C . T h e l i s t i n g f o t h L E i a t t h e e n o t h i s c h a p t e r .

9

Page 101: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

L E A , t h s o u r c e s t a t e m e n t a l w a y s b e g i n s w i t h l i n e n u m b e r .I a l s o h a s : a n o p t i o n a l l a b e l ( m o r e a b o u t t h i s s h o r t l y ) ;t h m n e m o n i c c o d e f o t h 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 ( L D A ,S T A f e t c . ) ; a n r e q u i r e d o o p t i o n a l o p e r a n d ( s ) ; a n o p t i o n a l c o m m e n t s . B u s i n g c o m m e n t s w i t h i n y o u r a s s e m b l e rs o u r c e p r o g r a m , y o u c a n d e s c r i b e t h p u r p o s e o e a c hi n s t r u c t i o n . C o m m e n t s a r d e n o t e d w i t h s e m i c o l o n a n a r i g n o r e d b y t h e a s s e m b l e r , b u a p p e a r i t h l i s t i n g f o y o u ro w i n f o r m a t i o n . T h e y c o r r e s p o n d t t h B A S I C c o m m a n d R E M .

c o m p l e t e l i n e o a s s e m b l e r s o u r c e f o t h L E m i g h t l o o kl i k e t h i s :

1 0 T E X T L D $ 7 0 , X ; G E T S T A R T V A L U E

c o m p l e t e L E s o u r c e p r o g r a m c a a l s o b S A V E d t d i s k ,j u s t l i k e B A S I C . T h L E r e q u i r e s y o t d i s t i n g u i s h t h i ss o u r c e p r o g r a m f r o m t h 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 i

l a t e r c r e a t e s b s u f f i x i n g . S R C t t h n a m e . A f t e r y o c r e a t e y o u r a s s e m b l e r s o u r c e f i l e , y o t h e n l o a d t h L E a s s e m b l e r . O n c e s t a r t e d w i t h R U N , L E A a s k s f o t h n a m e o t h p r o g r a m t o b e a s s e m b l e d ( t h e o n y o u j u s t S A V E d ) . T h L E r e a d s t h i s p r o g r a m f r o m t h d i s k a n c r e a t e s t h m a c h i n ec o d e p r o g r a m f r o m i t w h i c h i p l a c e s d i r e c t l y i m e m o r y .

I a d d i t i o n , t h L E p r o d u c e s a o p t i o n a l a s s e m b l y l i s t i n gc o n t a i n i n g t h l i n e n u m b e r s , s o u r c e s t a t e m e n t i n s t r u c t i o n s

9

Page 102: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

i n c l u d i n g c o m m e n t s a n g e n e r a t e d m a c h i n e c o d e s i h e x a d e c i m a l f o r m a t . W h e n a s s e m b l i n g , t h L E a u t o m a t i c a l l yc a l c u l a t e s t h a d d r e s s e s a n o f f s e t s f o b r a n c h e s . Y o a t h p r o g r a m m e r , n e e d g i v e t h b r a n c h d e s t i n a t i o n n o a s a na b s o l u t e a d d r e s s , b u s y m b o l i c a l l y i t h f o r m o l a b e l( a l s o c a l l e d s y m b o l ) . O u e x a m p l e p r o g r a m f r o m b e f o r e l o o k sl i k e t h i s :

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

L O O PL D T X S T L D S T

N B N R T

#

$ 0 4 0 0 , X# $ D 8 0 0 , XL O O P

H e r e w s i m p l y g i v e l a b e l t t h a d d r e s s t h a t w w a n t t r e f e r t l a t e r . I t h i s c a s e w e u s e d t h s y m b o l L O O P . A t h a s s e m b l e r p r o c e s s e s t h s o u r c e p r o g r a m , i e n c o u n t e r sl a b e l . I m a k e s n o t e o t h l a b e l , L O O P , a n t h v a l u e t h p r o g r a m c o u n t e r a w h i c h t h l a b e l ( o s y m b o l ) i f o u n d . I

o u e x a m p l e , t h p r o g r a m c o u n t e r h a t h v a l u e $ C 0 0 2 a l i n e1 1 0 . T h a s s e m b l e r a s s i g n s t h i s v a l u e t t h s y m b o l L O O P .L a t e r , t h o f f s e t f o t h b r a n c h i n s t r u c t i o n c a b c a l c u l a t e d f r o m t h i m m e d i a t e v a l u e o t h p r o g r a m c o u n t e ra n t h v a l u e o t h s y m b o l . A s t h e a s s e m b l e r w o r k s i t w a t h r o u g h t h s o u r c e p r o g r a m , i a u t o m a t i c a l l y p l a c e s t h o p e r a t i o n c o d e f o r t h e m n e m o n i c i n s t r u c t i o n s a n t h e i ro p e r a n d s i m e m o r y s t h a t t h m a c h i n e l a n g u a g e p r o g r a m i

r e a d y t b e x e c u t e d a t h e n o t h a s s e m b l y .

9

Page 103: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

U s i n g t h i s t e c h n i q u e , i t i s p o s s i b l e t h a t y o m i g h t r e f e r t l a b e l b e f o r e i t i s d e f i n e d :

1 0 1 1 1 2 1 3 C O N T1 4

L D B E L D S T R T

$ 4 C O N T# $ F F$ D 8 4 0

I t h i s p r o g r a m l i n e 1 1 r e f e r s t l a b e l ( C O N T ) w h i c h a t h a t p o i n t i n o y e d e f i n e d . T h e a s s e m b l e r h a s n o w a o k n o w i n g t h v a l u e o t h s y m b o l C O N T . S t h a s s e m b l e r i

d e s i g n e d t g t h o u g h t h s o u r c e p r o g r a m t w i c e . T h f i r s tt i m e t h r o u g h , t h L E m a k e s n o t e o a l t h s y m b o l s a n t h e i r v a l u e s . T h e s e c o n d t i m e t h r o u g h , i d o e s t h a c t u a la s s e m b l i n g o c o d e g e n e r a t i o n . S d u r i n g t h s e c o n d t i m et h r o u g h , w h e n t h L E c o m e s t l i n e 1 1 0 , i a l r e a d y k n o w st h v a l u e o C O N T f r o m t h f i r s t t i m e t h r o u g h a n c a c a l c u l a t e t h o f f s e t f o t h b r a n c h i n s t r u c t i o n .

S i n c e t h L E a s s e m b l e r r e a d s t h s o u r c e p r o g r a m t w i c e , i

i s a i d t o b e 2 - p a s s a s s e m b l e r . S t h a t y o c a n s e e t h p r o g r e s s o t h a s s e m b l e r , t h L E d i s p l a y s t h n u m b e r o t h l i n e i i c u r r e n t l y w o r k i n g o n

W h e n y o e n t e r s o u r c e p r o g r a m b u s i n g t h b u i l t - i n B A S I Cl i n e e d i t o r , t h B A S I C i n t e r p r e t e r s e a r c h e s t h r o u g h t h s o u r c e s t a t e m e n t s f o B A S I C c o m m a n d k e y w o r d s . W h e n i f i n d st h e m , i c o n v e r t s t h e s e i n t o o n e - b y t e c o d e s c a l l e d t o k e n s .A r e s u l t , t h L E a s s e m b l e r c a n n o t n o r m a l l y r e c o g n i z e

9

Page 104: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

w o r d s t h a t c o n t a i n B A S I C k e y w o r d s s u c h a 0 N f T O , a n e v e n

a n b e c a u s e t h e y h a v e b e e n c o n v e r t e d t t o k e n s . F o r t h i sr e a s o n , y o u m u s t f i r s t e n t e r a n d R U N t h e f o l l o w i n g B A S I Cp r o g r a m , c a l l e d U N T O K E N b e f o r e u s i n g t h B A S I C l i n e e d i t o rt c r e a t e t h a s s e m b l e r s o u r c e f i l e . U N T O K E N i n h i b i t s B A S I Cf r o m t o k e n i z i n g n o r m a l B A S I C k e y w o r d s . T h u s B A S I C k e y w o r d sa r e n o t b c o n v e r t e d t t h e i r c o r r e s p o n d i n g t o k e n s . T h i se n a b l e s t h L E t r e c o g n i z e t h e i r u n t o k e n i z e d e q u i v a l e n t si n o r m a l t e x t .

W h e n y o a r f i n i s h e d u s i n g t h L E A , a n y o w a n t t e n t e rn o r m a l B A S I C p r o g r a m s a g a i n , e n t e r t h i n s t r u c t i o n :

S Y 5 3 1 8 1

T h i s r e - e n a b l e s B A S I C t t o k e n i z e i t k e y w o r d s .

R E P R O G R A M U N T O K E N1 0 F O 5 3 1 0 0 T 5 3 1 9 11 1 R E A D P O K E I , S = S + X N E X T1 2 D A T A 1 6 9 , 1 1 9 , 1 6 0 , 2 0 7 , 1 4 1 , 2 3 , 1 4 0 , 3 , 3 , 9 6 , 3 21 3 D A T A 9 6 , 1 6 5 , 1 3 4 , 1 2 2 , 1 3 2 , 1 2 3 , 3 2 , 1 1 5 , 0 , 1 7 0 , 2 4 0 , 2 4 31 4 D A T A 1 6 2 , 2 5 5 , 1 3 4 , 5 8 , 1 4 4 , 6 3 2 , 1 2 1 , 1 6 5 , 7 6 , 2 2 5 , 1 6 71 5 D A T A 3 2 , 1 0 7 , 1 6 9 , 1 6 0 , 0 , 1 6 2 , 0 , 1 8 9 , 0 2 , 2 3 2 , 2 0 11 6 D A T A 3 2 , 2 4 0 , 2 4 8 , 2 0 1 , 4 8 , 1 4 4 , 4 , 2 0 1 , 5 8 , 1 4 4 , 2 4 0 , 1 5 31 7 D A T A 0 2 , 2 0 1 , 0 , 2 4 0 , 7 , 1 8 9 , 0 2 , 2 0 0 , 2 3 2 , 2 0 81 8 D A T A 2 4 2 , 2 0 0 , 2 0 0 , 2 0 0 , 2 0 0 , 2 0 0 , 7 6 , 1 6 2 , 1 6 4 , 1 6 9 , 1 3 1 , 1 6 01 9 D A T A 1 6 4 , 1 4 1 , 2 3 , 1 4 0 , 3 3 9 2 0 I < 1 1 0 9 6 T H E N P R I N T " E R R O R I D A T A 1 1 E N 2 1 S Y S 5 3 1 0 0 P R I N T " O K "

A f t e r y o u k e y i t h i s p r o g r a m , y o s h o u l d s a v e c o p y o

e a c h d i s k e t t e o w h i c h y o u w i l l l a t e r s t o r e a s s e m b l e r s o u r c e

9

Page 105: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

p r o g r a m s . R e m e m b e r t l o a d a n d R U N U N T O K E N b e f o r e c r e a t i n ga s s e m b l e r s o u r c e p r o g r a m s .

N o e n t e r t h e a r l i e r s a m p l e p r o g r a m . I n s e r t l i n e 1 8 w h i c hc o n t a i n s . E N . T h i s i p s e u d o - i n s t r u c t i o n w h i c h t e l l s t h a s s e m b l e r t h a t t h i s s t a t e m e n t i a t h e n o y o u r s o u r c ep r o g r a m . S a v e t h s o u r c e p r o g r a m o d i s k w i t h t h n a m eT E S T . S R C .

D i y o r e m e m b e r t f i r s t L O A D a n R U t h a b o v e U N T O K E Np r o g r a m ? N o y o c a l o a d t h L E a s s e m b l e r a n R U i t T h f o l l o w i n g a p p e a r s o t h s c r e e n . R e s p o n d a r e q u e s t e d .

6 5 1 0 A S S E M B L E RS O U R C E F I L E N A M E T E S TL I S T I N G Y / P R I N T E R Y /

A f t e r s h o r t t i m e t h m e s s a g e P A S S a p p e a r s o n t h e s c r e e na n d t h e d i s k d r i v e s h o w s s o m e a c t i v i t y . N o t h e l i n e n u m b e r sf r o m 1 0 0 t o 1 8 a p p e a r o t h s c r e e n . D u r i n g t h s e c o n dp a s s , t h l i s t i n g i d i s p l a y e d :

P A S Sc o o oC 0 0 2C 0 0 3C 0 0 6C 0 0 8C 0 0 Bc o o cC 0 0 E

L A B E L

A 8 9 A 9 E D 6

C 0 0 2

0

0 0 0 40 0 D

F

1 0 1 1 L O O P1 2 1 3 1 4 1 5 1 6 1 7 1 8

L D T X S T L D S T I N B N R T . E

#

$ 0 4 0 0 f X# $ D 8 0 0 , X

L O O P

9

Page 106: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

W h e n t h l i s t i n g i c o m p l e t e d , t h L E a s s e m b l e r a s k s y o i

t h g e n e r a t e d m a c h i n e l a n g u a g e p r o g r a m s h o u l d b s a v e d t d i s k e t t e . A n s w e r w i t h Y ( e s ) .

S A V E Y /

T h p r o g r a m i s a v e d t d i s k e t t e u n d e r t h n a m e T E S T . O B J o

t h d i s k e t t e ( O B J O B J e c t p r o g r a m ) . S t a t i s t i c s a b o u t t h g e n e r a t e d c o d e a n e r r o r s a r a l s o d i s p l a y e d :

C 0 0 0 C O O F 0 0 0 FS O U R C E F I L E I T E S T . S R C

E R R O R S

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

S Y M B O L T A B L E Y / NS O R T Y / L O O P C O

Y o u c a n a l s o s p e c i f y t h a t t h t a b l e i t b s o r t e da l p h a b e t i c a l l y .

T h g e n e r a t e d m a c h i n e l a n g u a g e p r o g r a m i n o c o n t a i n e d o t h d i s k e t t e w i t h t h n a m e T E S T . O B J . T h e r e i a l s o c o p y o

i t i n m e m o r y , r e a d y t b e x e c u t e d . N o w t e s t i o u b e n t e r i n g :

S Y 4 9 1 5 2

9

Page 107: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

T h e r e a r f e w t h i n g s a b o u t t h a s s e m b l e r y o s h o u l d k n o w .E a c h l i n e o t h s o u r c e p r o g r a m c o n s i s t s o l i n e n u m b e r ,a o p t i o n a l s y m b o l ( a l s o c a l l e d l a b e l ) , a n m n e m o n i ci n s t r u c t i o n s u c h a s L D A , f o l l o w e d b t h o p e r a n d s ( i n e c e s s a r y ) a n c o m m e n t s s e p a r a t e d b s e m i c o l o n . T h c o m m e n t s m a b o m i t t e d o c o u r s e , b u t w a d v i s e y o t m a k el i b e r a l u s o t h e s e a n d e s c r i b e e x a c t l y t h o p e r a t i o n s y o i n t e n d . S h o u l d y o l a y o u r p r o g r a m a s i d e a n n e e d t u s e o rc h a n g e i a l a t e r t i m e , y o u w i l l b t h a n k f u l t h a t y o c o m m e n t e d i t

T h s y m b o l s m a y b m a x i m u m o f i v e c h a r a c t e r s i l e n g t h . I a d d i t i o n t t h i m p l i c i t s y m b o l d e f i n i t i o n s ( l a b e l s ) , y o c a a s s i g n v a l u e s t s y m b o l s d i r e c t l y . T h i s m a k e s p r o g r a m se a s i e r t u n d e r s t a n d a n e a s i e r t r e a d .

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

P A S S0 4 0 0D 8 0 0C O O OC O O OC 0 0 2C 0 0 3C 0 0 6C 0 0 8C 0 0 BC O O CC 0 0 E

A 8 9 A 9 E D 6

0

0 0 0 0 D

F

7 V I D E O8 C O L O R9

1 0 1 1 L O O P1 2 1 3 1 4 1 5 1 6 1 7 1 8

L D T X S T L D S T

N B N R T

E

$ 4 0 0$ D 8 0 0$ C 0 0 0# V I D E O , X# C O L O R , X

L O O P

9

Page 108: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

I y o a s s e m b l e t h i s p r o g r a m a n d i s p l a y t h s o r t e d s y m b o lt a b l e , y o u w i l l s e e :

C O L O R D 8 0 0 L O O P C 0 0 2V I D E O 0 4 0 0

L i n e 7 c o n t a i n s p s e u d o - i n s t r u c t i o n w h i c h d i r e c t s t h a s s e m b l e r t a s s i g n t h v a l u e $ 0 4 0 0 t t h s y m b o l V I D E O .A n y t i m e y o u u s e t h s y m b o l V I D E O , t h a s s e m b l e r k n o w s t u s t h v a l u e $ 0 4 0 0 t c a l c u l a t e t h o p e r a n d s .

L i n e 9 c o n t a i n s a n o t h e r p s e u d o - i n s t r u c t i o n , * = I t e l l st h a s s e m b l e r t b e g i n t h a s s e m b l y p r o c e s s a m e m o r yl o c a t i o n $ C 0 0 0 . I i p l a c e d a t h s t a r t o e a c h p r o g r a m .U s i n g i t y o c a i n s t r u c t t h a s s e m b l e r t p l a c e y o u r c o d e

a a n d e s i r e d p l a c e i m e m o r y .

W h a t a r t h a d v a n t a g e s o u s i n g s y m b o l s ? T h e r e a r t w m a i na d v a n t a g e s . F i r s t , t h r o u g h t h c h o i c e o n a m e , t h p u r p o s eo f a n i n d i v i d u a l m e m o r y l o c a t i o n c a b e a s i l y d e t e r m i n e d( e . g . C O L O R ) . S e c o n d , s u c h p r o g r a m i e a s i e r t c h a n g e . I y o e n t e r t h w r o n g l o c a t i o n o t h v i d e o R A M , y o u n e e d o n l yc h a n g e t h v a l u e o V I D E O a t h b e g i n n i n g o t h p r o g r a m .A l r e f e r e n c e s t t h i s n a m e a r t h e n c h a n g e d . T h i s i e v e nm o r e u s e f u l t h m o r e t i m e s s u c h n a m e a p p e a r s i p r o g r a m .

p s e u d o - i n s t r u c t i o n , g i v e s p r o c e s s i n g d i r e c t i o n s t t h a s s e m b l e r . F o e x a m p l e , t h p s e u d o - i n s t r u c t i o n . B Y , t e l l s

1 0

Page 109: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

t h a s s e m b l e r t p l a c e s p e c i f i c v a l u 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 . Y o c a n , f o r e x a m p l e , s t o r e d a t a o t e x tw i t h i n y o u r m a c h i n e l a n g u a g e p r o g r a m . T h p s e u d o - i n s t r u c t i o nf o t h i s i c a l l e d :

. B

A o p e r a n d i t h r a n g e f r o m t o 2 5 5 m u s t f o l l o w t h . B p s e u d o - i n s t r u c t i o n . T h i s o p e r a n d v a l u e i p l a c e d a t h c u r r e n t l o c a t i o n o t h p r o g r a m c o u n t e r . U s i n g . B Y , y o c a i n s e r t s y m b o l s a n c o n s t a n t s i n t o t h p r o g r a m . F o e x a m p l e :

. B Y 1 0 0. B $ 7 . B C

• B h a a a d d i t i o n a l o p t i o n . S o m e t i m e s , y o h a v e t d i v i d e1 6 - b i t v a l u e i n t o t w 8 - b i t v a l u e s . T h o p e r a t o r s a n

a l l o w y o t d t h i s . T h s y m b o l d e n o t e s t h h i g h - b y t e( b i t s t h r o u g h 1 5 o 1 6 - b i t v a l u e , w h i l e t h s y m b o ld e n o t e s t h l o w - b y t e ( b i t s t 7 ) H e r e ' s a n e x a m p l e :

1 0 C O N S T $ A B 3 F1 1 . B < C O N S T1 2 0 . B Y > C O N S T

T h i s p r o g r a m s e g m e n t p l a c e s t h v a l u e s $ 3 a n $ A i t h p r o g r a m . T h e s e o p e r a t o r s c a b u s e d f o i m m e d i a t ea d d r e s s i n g w i t h t h c h a r a c t e r , f o e x a m p l e :

1 0

Page 110: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 3 L D # < C O N S T1 4 L D # > C O N S T

I o r d e r t u s z e r o - p a g e a d d r e s s i n g , y o m u s t p r e f i xo p e r a n d s w i t h a a s t e r i s k , * I y o d o n ' t , t h a s s e m b l e ru s e s a b s o l u t e a d d r e s s i n g . T h i s i n o n e c e s s a r y f o i n d e x e da d d r e s s i n g w h i c h w o r k s o n l y w i t h z e r o - p a g e a d d r e s s e s .

0 0 B 0 1 0 S T A R T $ B C 0 0 0 A B O 0 0 1 1 L D S T A R TC 0 0 3 A B 1 2 L D * S T A R TC 0 0 5 8 D 2 0 1 3 S T $ 2 C 0 0 8 8 6 1 4 S T * $ 6 0C 0 0 A 2 B 1 5 B I * S T A R T

T h a b o v e e x a m p l e s h o w s y o t h a t w i t h o u t t h a s t e r i s k ( l i n e s

1 1 a n 1 3 0 ) , a a b s o l u t e a d d r e s s i n g m o d e , t h r e e - b y t e f o r mo t h i n s t r u c t i o n i g e n e r a t e d . T h z e r o - p a g e a d d r e s s i n gm o d e i s e l e c t e d b p l a c i n g t h a s t e r i s k i f r o n t o t h o p e r a n d , r e s u l t i n g i n t w o - b y t e i n s t r u c t i o n ( l i n e s 1 2 0 , 1 4 a n 1 5 0 ) .

N o t h a t y o u a r a c q u a i n t e d w i t h t h f u n c t i o n s o t h L E a s s e m b l e r , y o c a c o n c e n t r a t e o p r o g r a m m i n g . O t h n e x tp a g e s y o f i n d t h l i s t i n g o t h L E a s s e m b l e r a n s h o r td e s c r i p t i o n o t h o p e r a t i o n s a n t h v a r i a b l e s u s e d b t h e .

p r o g r a m .

T r n o t k e y t h e l i s t i n g " b l i n d l y " . R e a d t h d e s c r i p t i o no t h r o u t i n e s a y o g a l o n g , a n d t r y t u n d e r s t a n d h o t h a s s e m b l e r w o r k s . B d o i n g t h i s , y o u c a n l e a r n n o o n l y

1 0

Page 111: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

Y o c a a l s o o r d e r d i s k e t t e c o n t a i n i n g t h L E a s s e m b l e r ,6 5 1 0 S i n g l e - S t e p S i m u l a t o r a n D i s a s s e m b l e r . T h i s s a v e s y o t h t i m e a n e f f o r t o k e y i n g t h e s e p r o g r a m s f r o m t h

l i s t i n g s . S e o r d e r i n g i n s t r u c t i o n s i A P P E N D I X F

1 0

Page 112: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 0 R E M 6 5 1 0 A S S E M B L E R1 1 P R I N T C H R * ( 1 4 7 ) : P R I N T : P R I N T : P R I N T , " 6 5 1 0 A S S E M B L E R " : P R I N T : D G = 81 2 I N P U T " S O U R C E F I L E N A M E " S N 1 3 I F R I G H T * ( S N $ , 4 ) = " . S R C " T H E N S N * = L E F T * ( S N * , L E N ( S N * ) - 4 )1 4 D D $ = " O " : R E M D R I V E N U M B E R1 5 I N P U T " L I S T I N G Y / A * I F A $ < > " Y " T H E N P M = 1 : G 0 T 0 1 9 01 6 P F = 4 : P G = 31 7 I N P U T " P R I N T E R Y / " ; A * : I F A * = " Y " T H E N P G = 41 8 O P E N P F , P G1 9 G 0 S U B 5 0 0 0 : R E M B U I L D T A B L E S2 0 A = 0 : A D = 4 9 1 5 2 : P R I N T : P R I N T : P A = A2 1 P N " P A S S l " : G 0 S U B 4 0 0 0 : P R I N T " P A S S 2 F F 7 . = 0 : F E 7 . = 02 2 O P * = D D * + " : " + S N * + " . S R C "2 3 0 P E N 8 , D G , 0 , 0 P $2 4 G E T # 8 , A $ , A $ : R E M S T A R T A D D R E S S2 5 I F P M = 1 T H E N P R I N T C H R * ( 1 4 5 > , , Z N 2 6 F 7 . = 0 F A > 6 5 5 3 5 T H E N P R N T P N T P N M E M O R Y O V E R F L O W G O T O 1 0 0 02 7 A = A D : G 0 S U B 3 2 4 0 : P R * = A * + " " : G 0 S U B 2 0 0 0 : I F L E F T * X * , 3 ) = " . E N " I H E N 1 0 0 02 8 X X $ = L E F T $ < X * , 1 ) : I F X X * = " * " T H E N P R * = " " : L N $ = "2 9 0 I F X X $ « " l l 0 R X X * = " * " 0 R X X $ = " l l T H E N G Q S U B 2 9 0 0 : G O T 0 3 8 02 9 I F X X * = " " T H E N P R $ = P R * + " " : G 0 T 0 4 3 03 0 0 N L M 7 . G 0 T 0 3 2 03 1 S A = O F + A D : P A = A D : L M 7 . =3 2 0 X X * = L E F T * ( X $ , 3 > F 0 R J - 0 T 0 N N 7 . : I F X X $ = M N $ ( T H E N 3 5 03 3 N E X T3 4 0 F L $ 1 A 7 . = 1 F 7 . = 1 G O S U B 1 5 2 0 : 6 0 T 0 3 7 03 5 0 G 0 S U B 2 4 0 0 : F 7 . = 0 : F T 7 . = 5 A N D T 7 . 9 > 0 T H E N T 7 . = 9 : R E M R E L A I V 3 6 0 N T 7 . + 1 G 0 S U B 5 0 0 , 6 0 0 , 6 0 0 , 6 0 0 , 6 0 0 , 8 0 0 , 8 0 0 , 8 0 0 , 5 0 0 , 9 0 0 , 6 0 0 , 6 0 0 , 8 0 03 7 0 P O K E O F + A D , A3 8 A D = A D + A 7 . : I F L E F T * < X * , 2 > = " * = " T H E N 4 0 03 9 L X = A D4 0 0 R E M * * * * * * * * O U T P U T4 1 I F F " / . = 0 T H E N I F F L * < 0 > = " " A N D F L * < 1 ) = " " A N D F L * < 2 ) = " " T H E N 4 3 O4 2 B S 7 . = B S 7 . +4 3 0 N P M G 0 T 0 2 5 04 4 Y * = L E F T * ( Y ' $ + " " , 1 1 ) F Q R I l T Q 3 s P R I M T # P F , F L * ( I s N E X ' l4 5 P R I N T # P F , P R * Z N * L N * " " L E F T * ( X * + " " , 6 ) Y * " " R M *4 6 G O T O 2 5 05 0 R E O N E - B Y T E C O M M A N D S5 1 A 7 . = 1 A = T 7 . ( 7 7 . > I F A < O T H E N F L * ( 2 " A G O T O 1 5 1 05 2 G 0 S U B 3 2 4 0 : P R * = P R $ + R I G H T * < A * , 2 ) + " " : R E T U R N6 0 0 R E M T W O - B Y T E C O M M A N D S6 1 A = T 7 . ( J , T 7 . ) I F A < O T H E N F L $ < 2 = " A " G O T O 1 5 0 06 2 G 0 S U B 3 2 4 0 : P R $ = P R * + R I G H T $ < A * , 2 )6 3 0 Y Y * = Y A * : I F L E F T * ( Y Y $ , l ) = " t t " T H E N Y Y * = M I D * ( Y Y * , 2 )6 4 0 I F L E F T * Y Y * , 1 ) = " * " T H E N Y Y $ = M I D * ( Y Y * , 2 )6 5 A 7 . = 2 : I F L E F T * ( Y Y * 1 " O R L E F T * ( Y Y * , 1 T H E N Y Y * = M I D ( Y Y * , 2 6 6 A $ = L E F T * ( Y Y $ , 1 ) : I F A * = " $ " O R A * > " / " A N D A $ < " : " 1 H E N A * = Y Y * : G O T 0 6 9 06 7 S L * = Y Y * : G 0 S U B 4 5 0 06 8 A $ = " * " + H E *6 9 G 0 S U B 3 1 0 07 0 I F L E F T * ( Y A * , 2 ) = " # > " T H E N A = I N T A / H I )7 1 I F L E F T * ( Y A * , 2 ) = " # < " T H E N A = = A - I N T ( A / H I ) * H 7 2 F > L O T H E N F L * ( 2 F 7 . = 1 A = 7 3 G 0 S U B 3 2 4 0 : P 0 K E 0 F + A D + l , A L 7 . : P R * = P R * + " " + R I G H T * " 0 0 " + A * , 2 7 4 A = T 7 . ( T 7 . ) R E T U R N

1 0

Page 113: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

8 0 0 R E M T H R E E - B Y T E C O M M A N D S8 1 A 7 . = 38 2 A = T 7 . ( J , T 7 . )8 3 G 0 S U B 3 2 4 0 : P R $ = P R $ + R 1 6 H T $ ( A * , 2 )8 4 0 A $ = L E F T * ( Y A * , 1 ) I F A * = " * 1 1 O R A * > " / " A N D A * < " T H E N A * = Y A * : G 0 T 0 8 7 08 5 S L $ = Y A * : G 0 S U B 4 5 0 08 6 A $ = " $ " + H E $8 7 G 0 S U B 3 1 0 0 : G 0 S U B 3 2 4 0 : P R $ = P R $ + " " + R I G H T $ ( " 0 0 " + A $ , 2 ) + " + L E F T *( A * , 2 ) + "8 8 P O K E O F + A D + 1 A L 7 . : P 0 K E 0 F + A D + 2 , A H 7 .8 9 A = T 7 . ( T 7 . ) R E T U R N9 0 R E M R E L A T I V E9 1 A 7 . = 29 2 A = T 7 . ( T 7 . ) G 0 S U B 3 2 4 0 P R $ = P R * + R 1 G H T $ ( A * , 2 9 3 0 A * = L E F T $ ( Y * , 1 I F A $ = " $ " a R A $ > " / " A N D A * < " T H E N A * = Y * : G 0 T 0 9 6 09 4 S L $ = Y $ : G 0 S U B 4 5 0 09 5 A * = M * " + H E *9 6 G 0 S U B 3 1 0 0 : I F F L $ ( 2 = " U " T H E N A = A D + 29 7 0 D F = A - ( A D + 2 > I F D F < - 1 2 8 0 R D F > 1 2 7 T H E N F L * ( 3 = " R " F 7 . = l D F = O9 8 A = D F A N D L 0 : G O S U B 3 2 4 O9 9 P R $ = P R * + " " + R I G H T * ( A $ , 2 ) + " " P O K E O F + A D + 1 A : A = T 7 . ( , T 7 . ) R E T U R N1 0 0 0 P R $ = " F F 7 . = 0 T H E N 1 0 2 01 0 1 0 B S 7 . = B S 7 . +1 0 2 0 I F A E < A D + O F T H E N A E = A D + O F1 0 3 0 O N P M G 0 T 0 1 0 6 O1 0 4 0 F Q R I - 0 T Q 3 : P R I N T # P F , F L * ( I ) ; : N E X T1 0 5 0 P R I N T # P F , P R * , Z N * , L N * " " L E F T * ( X * + " " , 6 ) Y * " " R M *1 0 6 0 C L 0 S E 8 : I N P U T " S A V E Y / N A * I F A * O " Y " T H E N 1 1 3 01 0 7 0 A $ = D D $ + " : " + S N $ + " . O B J "1 0 8 0 A 7 . = L E N ( A > P O K E 1 8 3 , A 7 . : P O K E 1 8 , 6 8 1 A N D L O : P O K E 1 8 8 , 6 8 1 / H 1 0 9 0 F 0 R I l T 0 A 7 . : P 0 K E 6 B 0 + I , A S C < M I D * < A * , I > ) N E X T : R E F I L E N A M E1 1 0 0 A = S A : G 0 S U B 3 2 4 0 : P 0 K E 2 5 1 A L 7 . : P 0 K E 2 5 2 , A H 7 . : R E S T A R T A D D R E S S1 1 1 0 A = A E : G 0 S U B 3 2 4 0 : P 0 K E 7 8 1 A L 7 . : P 0 K E 7 8 2 , A H 7 . : R E M E N D A D D R E S S1 1 2 0 P 0 K E 7 8 0 , 2 5 1 : S Y S 6 5 4 9 6 : R E M S A V E1 1 3 0 A = P A : G 0 S U B 3 2 4 0 : P A * = A $ : A = A D : G 0 S U B 3 2 4 0 : A D * = A * : A = A D - P A : G 0 S U B 3 2 4 01 1 4 0 B A $ = A $ : 0 N P M 6 0 T 0 1 1 B 01 1 5 0 P R I N T # P F : P R I N T # P F , P A * " " A D * " " B A $1 1 6 0 P R I N T # P F , " S O U R C E F I L E I " S N * + " . S R C "1 1 7 0 P R I N T # P F , B S 7 . " E R R 0 R ( S > " : P R I N T # P F1 1 8 0 I N P U T " S Y M B O L T A B L E Y / N " 5 Z * : I F Z * < > " Y " T H E N 1 4 0 01 1 9 0 M X = 2 : I F P G > 3 T H E N P R I N T # P F , C H R * < 1 2 ) : M X = 51 2 0 0 I N P U T " S O R T Y / " ; Z * : I F Z * = " Y " T H E N 1 3 0 01 2 1 0 0 N P M G 0 T 0 1 2 2 01 2 2 0 M 7 . = 0 : P * = " " : F O R I = L L 7 . T O U L 7 .1 2 3 0 I F L B * ( I ) = " " T H E N 1 2 9 01 2 4 0 P $ = P $ + L B $ I " + H E * ( I " M 7 . = M 7 . + 11 2 5 0 I F M 7 . O M X T H E N 1 2 9 01 2 6 0 0 N P M G 0 T 0 1 2 8 01 2 7 0 P R I N T # P F , P *1 2 8 0 P $ " M " / . = 0 : I F I > = U L 7 . T H E N 1 4 0 01 2 9 0 N E X T I : I F P * < > " " T H E N 1 2 6 01 3 0 0 H * = C H R * ( 1 2 7 ) + C H R * ( 1 2 7 ) + C H R $ ( 1 2 7 ) + C H R * ( 1 2 7 ) + C H R * ( 1 2 7 ) : F 7 . = 0: R E M S O R I1 3 1 0 M 7 . - 0 : S L $ = H * F O = L L 7 . T 0 U L 7 . : I F L B * ( T H E N 1 3 4 01 3 2 0 I F L B * ( I S L $ T H E N S L $ = L B * ( 1 M 7 . = + 1 3 3 0 U L 7 . =1 3 4 0 N E X T I : I F F 7 . < M X T H E N 1 3 6 01 3 5 0 F 7 . = 0 : I F P M = O T H E N P R I N T # P F1 3 6 0 I F M 7 . = 0 T H E N 1 4 0 01 3 7 0 0 N P M G 0 T 0 1 3 9 0

1 0

Page 114: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 3 8 0 P R I N T # P F , S L $ " " H E * ( M 7 . - 1 " 1 3 9 0 L B ( M 7 . - 1 ) " F 7 . = F 7 . + 1 : G O T O 1 3 1 01 4 0 0 R E 1 4 1 0 I F P G = 4 T H E N P R I N T # P F , C H R $ < 1 2 )1 4 2 0 C L O S E P F r E N D1 5 0 0 P 0 K E 0 F + A D + 2 , 0 : R E M N O F I L L E R1 5 1 0 P O K E O F + A D + 1 , 01 5 2 0 A = 0 : P R * = P R * + N P * ( A 7 . ) R E T U R N1 6 0 0 I F L E F T S ( L N * , 1 ) = " . " T H E N I = - 1 : R E T U R N1 6 1 0 I F M I D * < L N * , 4 , 1 > < > " T H E N = N N 7 . + 1 : R E T U R N1 6 2 0 M N $ = L E F T $ < L N * , 3 > : R E M L A B E L = M N E M O N I C ?1 6 3 0 F 0 R I = 0 T 0 N N 7 . : I F M N * < > M N * I T H E N N E X T1 6 4 0 R E T U R N2 0 0 0 G E T # B , A * , B * : I F A * + B * = " " T H E N 2 2 9 0 : R E M L E F T A D D R E S S2 0 1 0 G E T # 8 , Z 1 $ , Z 2 *2 0 2 0 Z N = A S C ( Z l * n - C H R * < 0 ) + H I * A S C < Z 2 * + C H R $ ( O 2 0 3 0 Z N * = R I G H T * ( " " + S T R $ < Z N ) , 5 ) + "2 0 4 0 G 0 S U B 2 3 0 0 : I F F F 7 . T H E N R E T U R N2 0 5 0 L N * = " " X $ = " Y $ = " R M * = " X 7 . = 02 0 6 0 F O R I = 0 T O 3 : F L * < I > = " " : N E X T I : I F Z $ = " * " T H E N 2 1 9 02 0 7 0 I F Z * = " ; " T H E N 2 2 8 02 0 8 0 R E L A B E L N A M E2 0 9 0 I F Z $ = " " 0 R F F 7 . T H E N L N $ = L E F T * < L N $ + " , 5 : G 0 T 0 2 1 2 02 1 0 0 L N * = L N $ + Z $ : I F L E N ( L N $ ) = 6 T H E N X 7 . = 1 F L ( 0 = " L "2 1 1 0 G O S U B 2 3 0 0 : G O T 0 2 0 9 02 1 2 0 G 0 S U B 1 6 0 0 : I F I O N N 7 . T H E N X $ = L N $ : L N $ = " G 0 T 0 2 2 0 02 1 3 0 X 7 . = A S C < L N * > I F X 7 . < 6 5 0 R X 7 . > 9 0 T H E N F L * ( 0 = " S "2 1 4 0 R E M O P E R A T I O N2 1 5 0 G 0 S U B 2 3 0 0 : I F F F 7 . T H E N R E T U R N2 1 6 0 I F Z * < > " " T H E N 2 1 9 02 1 7 0 6 0 T 0 2 1 5 02 1 8 0 G 0 S U B 2 3 0 0 : F F F 7 . T H E N R E T U R N2 1 9 0 I F Z * < > " " T H E N X * = X * + Z $ : G 0 T 0 2 1 8 02 2 0 0 I F F F 7 . T H E N R E T U R N2 2 1 0 I F Z * = " ; " T H E N 2 2 8 02 2 2 0 I F Z $ < > " " T H E N 2 2 6 0 : R E M O P E R A N D2 2 3 0 G 0 S U B 2 3 0 0 : I F F F 7 . T H E N R E T U R N2 2 4 0 G 0 T 0 2 2 0 02 2 5 0 G 0 S U B 2 3 0 0 : I F F F 7 . T H E N R E T U R N2 2 6 0 I F Z * < > " " T H E N Y * = Y * + Z * : G 0 T 0 2 2 5 02 2 7 0 G 0 S U B 2 3 0 0 : I F F F 7 . T H E N R E T U R N : R E C O M M E N T2 2 8 0 R M $ = R M $ + Z $ : G 0 T 0 2 2 7 02 2 9 0 X $ = " . E N " : R M * = 1 I E N D A S S U M E D " L N * = " Y * = " Z N * = " " R E T U R N2 3 0 0 G E T # 8 , Z * F F 7 . = Z * = " R E T U R N2 4 0 0 R E M D E T E R M I N E A D D R E S S I N G M O D E2 4 1 0 I F Y $ = " " T H E N T 7 . = 8 : R E T U R N : R E M I M P L I C I T2 4 2 0 Y A $ = Y * : I F L E F T * ( Y A * , 1 ) = " ( " T H E N Y A $ = M I D * ( Y A * , 22 4 3 0 I F R I G H T * ( V A * , 1 ) = " ) " T H E N Y A * = L E F T * ( Y A $ , L E N ( Y A $ > - 1 )2 4 4 0 F R I G H T * Y A > = = " ) , T H E N Y A * - L E F T * Y A * , L E ( Y A * ) - 3 2 4 5 0 F G H T $ ( Y A * 2 O R R I G H T * Y A $ , 2 * T H E N Y A $ = L E F T * ( Y A * , L E 2 4 6 0 Z * = Y * : K * = L E F T * < Y * , 1 >2 4 7 0 I F Z $ = " A " T H E N T 7 . = 0 : R E T U R N : R E A C C U M U L A T O R2 4 8 0 F K * = T H E N T 7 . = 1 R E T U R N : R E I M M E D I A T 2 4 9 0 I F K * « " ( " T H E N 2 6 0 0 : R E M I N D I R E C T2 5 0 0 Z P « K * « " * " : R E M Z E R O P A G E2 5 1 0 Z * = M I D * ( Y * , 2 + Z P )2 5 2 0 I F L E N ( Z * ) < 2 T H E N 2 5 5 02 5 3 0 K * = M I D 7 . L E Z -

1 0

Page 115: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6 2 5 4 0 I F K * = " , l l T H E N 2 5 7 0 : R E M I N D E X E D2 5 5 0 T 7 . = 52 5 6 0 T " / . = T " / . + 3 * Z P : R E T U R N : R E M A B S O L U T E O Z E R O - P A G E2 5 7 0 K * = R G H T * ( * 1 F K * = T H E N T 7 . = 6 : G 0 T 0 2 5 6 02 5 8 0 F K * = T H E N T 7 . = 7 : G 0 T 0 2 5 6 02 5 9 0 T 7 . = - l : R E T U R N : R E M S Y N T A X E R R O R2 6 0 0 K * = R I G H T * ( Z * , 1 ) : I F K * = " > " T H E N 2 6 3 02 6 1 0 I F R I G H T * ( Z * , 2 K > " , Y " T H E N 2 5 9 02 6 2 0 T 7 . = l l R E T U R N2 6 3 0 I F M I D * Z * L E Z * - 2 2 = " T H E N T ' / . = 1 O R E T U R N2 6 4 0 T 7 . = l 2 R E T U R N2 7 0 0 I F X * = " = " T H E N 2 7 3 0 : R E M P S E U D O - O P S P A S S2 7 1 0 I F L E F T * ( X * , 2 ) = " * = " T H E N 2 7 8 02 7 1 5 I F L E F T * ( X * , 3 ) " . B Y " T H E N A 7 . = 1 : ! R E T U R N2 7 2 0 A 7 . = 0 : R E T U R N2 7 3 0 A 7 . = 0 : 1 F Y * = " * " T H E N R E T U R N2 7 4 0 A 7 . = A S C ( L E F T * ( L N * 1 > I F A " / - < 6 5 0 R A 7 . > 9 0 T H E N R E T U R N2 7 5 0 A * = L E F T * ( Y * , 1 ) I F A * O " * " A N D ( A * < " 0 1 1 0 R A * > " 9 " T H E N R E T U R N2 7 6 0 A * = Y * : G 0 S U B 3 1 0 0 : I F F 7 . T H E N M L * ( H C 7 . ) = F L * ( 2 ) R E T U R N2 7 7 0 G 0 S U B 3 2 4 0 : H E * ( H C 7 . = I G H T * 0 0 0 0 + A * , R E T U R N2 7 8 0 A 7 . = 0 : Y * = L E F T * ( Y I Y * O R Y 1 A N D Y * T H E N 2 8 0 02 7 9 0 R E T U R N2 8 0 0 A * = Y * : G 0 S U B 3 1 0 0 : F F 7 . T H E N R E T U R N2 8 1 0 H A = A : G 0 S U B 3 2 4 0 : X 7 . = A S C ( L E F T * ( L N * + C H R * ( O 1 ) I F X " / - > 6 4 A N D X 7 - < 9 1T H E N H E * ( H C 7 . ) = A *2 8 2 0 R E T U R N2 9 0 0 I F X X * = n = " T H E N 2 9 4 0 : R E M P S E U D O - O P S P A S S2 9 1 0 I F L E F T * < X $ , 2 ) = ' l * = l l T H E N 2 9 9 02 9 1 5 I F L E F T * ( X * , 3 ) = " . B Y I I T H E N 2 9 9 12 9 2 0 F L * ( 1 ) = M S "2 9 3 0 A " / - = 0 : F 7 . = 1 P R * = " R E T U R N2 9 4 0 A 7 . = 02 9 5 0 A * = L E F T * < Y * , i >2 9 6 0 I F A * < > " * I I A N D A * < > " * " A N ( A * < l l 0 " 0 R A * > l l 9 " T H E N F L * ( 2 = " S " G 0 T 0 2 9 3 02 9 7 0 S L * = L N * : F 7 . = 0 : G 0 S U B 4 5 0 0 : I F F 7 . T H E N F L * < O ) = F L * ( 2 : F L * ( 2 > = " G 0 T 0 2 9 3 02 9 8 0 P R * = H E * + " " - . R E T U R N2 9 9 0 A 7 . = 0 : Y Z * = L E F T * ( Y * , l ) I F Y Z * = " * I 1 O R Y Z * > I 1 / " A N D Y Z * < 1 1 : " T H E N 3 0 1 02 9 9 1 Y Z * = L E F T * ( Y * , L H 7 . = Y Z * = " > " O R Y Z * = I I < . " Y A * = M I D * Y 1 - L H 7 . )2 9 9 2 Y Z * = L E F T * < Y A * , 1 > I F Y Z * = " * " O R Y Z * > I I / I I A N D Y Z * < 1 1 : " T H E N H E * = Y A * : G 0 T 0 2 9 9 42 9 9 3 S L * = Y A * : F 7 . = 0 : G 0 S U B 4 5 0 0 : H E * = + H E * : F F 7 . T H E N F L * ( 0 = F l l *: F L * ( 2 ) = "

2 9 9 4 A * = H E * : G 0 S U B 3 1 0 0 : I F A > L 0 A N D L H 7 . = 0 T H E N A = 0 : F L * ( 1 = " 0 "2 9 9 5 I F L E F T * < Y * , 1 ) = " > " T H E N A = I N T ( A / H I )2 9 9 6 I F L E F T * ( Y * , 1 > » " < " T H E N A = A - I N T < A / H I ) * H I2 9 9 8 P O K E A D A A 7 . = 1 G 0 S U B 3 2 4 0 : P R * = P R * + R 1 G H T * 0 A * : R E f U R N3 0 0 0 F L * ( 2 F 7 . = 1 G 0 T 0 3 0 3 03 0 1 0 A * = Y * : G 0 S U B 3 1 0 0 : I F F 7 . T H E N 3 0 3 03 0 2 0 A D = A : G 0 S U B 3 2 4 0 : P R * = A * + "3 0 3 0 P R * = P R * + ( I " R E T U R N3 1 0 0 R E C O N V E R T H E X - > D E A * - >3 1 1 0 Z * = L E F T * ( A * , 1 I F Z * = I I * 1 I T H E N A * = R I G H T * A * L E ( A * ) - 1 G 0 T 0 3 1 5 03 1 2 0 I F Z * < I I 0 l l 0 R Z * > " 9 l l T H E N F L * ( 2 = " S " F 7 . = l R E T U R N3 1 3 0 A = V A L ( A * ) I F > 6 5 5 3 5 0 R A < O T H E N F L * ( 2 F 7 . =3 1 4 0 R E T U R N3 1 5 0 A = 0 : L 7 . = L E N ( A * ) I F L 7 . > 4 T H E N F 7 , = 1 F L ( 2 R E T U R N3 2 0 0 F O R I 1 T O L 7 . : A A 7 . = A S C ( M I D * ( A * , I ) ) - 4 83 2 1 0 I F A A 7 . < 0 0 R A A 7 - > 9 T H E N I F A A % < 1 7 0 R A A 7 . > 2 2 T H E N F 7 . = l F L ( 2 = " S " R E T U R N3 2 2 0 I F A A 7 . > 9 T H E N A A 7 . = A A 7 . - 73 2 3 0 A = A + A A 7 . * 1 6 t ( L 7 . - I ) N E X T : R E T U R N3 2 4 0 A H 7 . = A / H I : A L 7 - = A - A H 7 . * H I : A * = A * ( A H 7 . / 1 6 ) + A ( A H 7 . A N D 1 5 ) + A ( A L 7 . / 1 6 + A * ( A L 7 . A N D 1 5 )

1 0

Page 116: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

3 2 5 0 R E T U R N4 0 0 0 D I M L B * ( 3 4 9 ) , H E * ( 3 4 9 ) , M L * ( 3 4 9 ) : H A = A D : R E M C O N S T R U C T A D D R E S S L I S T4 0 1 0 F 0 R I = 0 T 0 3 4 9 : L B * ( I ) = " " : H E * ( I ) = " 0 0 0 0 " : M L * ( I ) = " : N E X T4 0 2 0 O P * = D D * + " : " + S N * + " - S R C "4 0 3 0 0 P E N 8 , D G , 0 , O P *4 0 4 0 G E T # 8 , A * A * L L 7 . = 3 4 94 0 5 0 I F S T < : : 0 T H E N C L 0 S E 8 : E N 4 0 6 0 G 0 S U B 2 0 0 0 : P R I N T C H R * ( 1 4 5 ) , Z N * : I F L N * = " " O R L E F T * ( L N * , 1 ) = " " T H E N 4 2 1 04 0 7 0 X 7 . = A S C ( L E F T * ( L N * , 1 I F X 7 . < 6 5 0 R X 7 - > 9 0 T H E N 4 2 1 04 0 8 0 G 0 S U B 4 1 0 0 : G 0 T 0 4 1 3 04 0 9 0 L N * = L E F T * ( L N * + " " , 5 ) : R E M G E N E R A T E H A S H C O D E4 1 0 0 H C = 0 : F 0 R I = l T 0 54 1 1 0 H C 7 . ~ A S C ( M I D * ( L N * , 1 , 1 ) ) H C = H C + ( H C 7 . / 1 0 - I N T ( H C 7 . / 1 0 > * 1 0 t ( 6 - 1 ) : N E X T I4 1 2 0 H C 7 . = ( H C / 3 0 7 - I N T ( H C / 3 0 7 ) * 3 0 0 : R E T U R N4 1 3 0 A = H A : G 0 S U B 3 2 4 04 1 4 0 I F L B * ( H C 7 . ) O " " T H E N 4 1 8 04 1 5 0 L B ( H C 7 . ) = L N * : H E ( H C 7 . ) = A * : I F H C 7 . > U L 7 . T H E N U L 7 . = H C 7 .4 1 6 0 F H C 7 . < L L 7 . T H E N L L 7 . = H C 7 .4 1 7 0 G 0 T 0 4 2 1 04 1 8 0 I F L B * ( H C 7 . ) = L N * T H E N M L * ( H C 7 . ) = " M " : G 0 T 0 4 2 1 04 1 9 0 H C 7 . = H C 7 . + 1 : F H C 7 . < 3 5 0 T H E N 4 1 4 04 2 0 0 P R I N T " S Y M B O L T A B L E F U L L " : C L 0 S E 8 : E N D4 2 1 0 I F X * = " . E N I 1 T H E N C L 0 S E 8 : R E T U R N4 2 2 0 X X * = L E F T * ( X * , 1 I F X X * = " . " 0 R X X * = " * " 0 R X X * = = " " T H E N G 0 S U B 2 7 0 0 : H A = H A + A 7 .: G 0 l < » 4 < > 6 04 2 3 0 F 7 . = 0 : X X * = L E F T * ( X * , 3 ) F 0 R J = 0 T 0 N N 7 . : I F X X * O M N * ( T H E N N E X T : G 0 T 0 4 2 7 04 2 4 0 G 0 S U B 2 4 0 04 2 5 0 F 7 ( T 7 . ) > = 0 T H E N 4 2 8 04 2 6 0 F T 7 . = 5 A N D T 7 . ( 9 > = 0 T H E N T 7 . = 9 : G 0 T 0 4 2 8 04 2 7 0 F 7 . = l H A = H A + 1 : G 0 T 0 4 0 6 04 2 8 0 H A = H A + L 7 . ( 7 7 . ) G 0 T 0 4 0 6 04 5 0 0 R E * * * * * * * * S E A R C H F O L A B E L4 5 1 0 X 7 . = A S C ( L E F T * ( S L * , 1 I F X 7 . < 6 5 0 R X 7 . > 9 0 T H E N F L * ( 2 = " S " F 7 . = l H E * = " O O O O "

R 1 1 I R N4 5 2 0 I F L E N ( S L * ) > 5 T H E N F L * ( 2 ) = " L "4 5 3 0 S V * = L N * : L N * = S L * : G 0 S U B 4 0 9 0 : S L * = L N * : L N * = S V *4 5 4 0 F L B * ( H C 7 . ) 0 R H C 7 . > U L 7 . T H E N F L * ( 2 F 7 . = 1 H E * = 0 0 0 0 R E T U R N4 5 5 0 F L B * ( H C 7 . > S L * T H E N 4 5 8 04 5 6 0 H E * = H E * ( H C 7 . > I F M L * ( H C 7 . ) " T H E N F L * ( 2 = M L * ( H C 7 . )4 5 7 0 R E T U R N4 5 8 0 H C 7 . = H C 7 . + l : G 0 T 0 4 5 4 04 5 9 0 Y 1 * = " " : Y 2 * = " " : I 1 : R E M D I V I D E Y * I N T O Y A N D Y 2 *4 6 0 0 I F M 1 D * ( Y 1 T H E N Y 1 * = Y * + I D ( Y * , 1 4 6 1 0 I F > L E N ( Y * ) T H E N F 7 . = 1 R E T U R N4 6 2 0 I F M I D * ( Y * , I , 1 ) < > " , " T H E N 1 1 : G 0 T 0 4 6 0 04 6 3 0 1 : I F I > L E N ( Y * ) T H E N F ' / . = 1 R E T U R N4 6 4 0 Y 2 * ^ = Y 2 * + M I D * ( Y 1 I F = L E N ( Y * ) T H E N F 7 . = 0 : R E T U R N4 6 5 0 1 = 1 + 1 : G 0 T 0 4 6 4 05 0 0 0 R E A D N N X : H I = 2 5 6 : L 0 = 2 5 55 0 1 0 D I M A * ( 1 5 ) , M N ( H N 7 . ) 7 ( M N 7 . , 1 2 L . 7 . ( 1 2 ) , F L ( 3 N P ( T ' )5 0 2 0 F O = = 0 T 0 1 5 : R A D A * ( I N 5 0 3 0 N P * ( 1 ) = " 0 0 " : N P * ( 2 ) = " 0 0 0 " : N P * ( 3 ) = " 0 0 O O 5 0 4 0 F O = 0 T 0 1 2 : R E A D L 7 . ( I N E X T5 0 5 0 F 0 R J = 0 T 0 N N 7 . : R E A D M N * ( F O R J J - 0 T 0 1 2 : R E A D A * : I F A * = " - 1 " T H E N A = - 1: B O 1 U 5 O / O5 0 6 0 A = 0 : F O R I 1 T O 2 : X = A S C ( R I G H T * ( A * , I - 4 8 s X > V A = = A + X * l 6 1( T - . 1 ) : N E X I5 0 7 0 T 7 ( = A N E X T : N E X T : R E T U R N6 0 0 0 D A T A 5 : R E M N U M B E R O M N E M O N I C S6 0 1 0 D A T A 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , S , 9 , A , B , C , D , E , F6 0 2 0 D A T A 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 , 2 , 37 0 0 0 D A T A A D C , - 1 , 6 9 , 6 5 , 7 5 , - i , 6 D , 7 D , 7 9 , ™ 1 , - 1 , 6 1 , 7 1 , - 1

1 0

Page 117: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

D A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T A

A N A S B C B C B F B M B T B N B P B R B V B V C L r C L

C M C P t p D F D F D E E O I N T M

N J M J S L D L D L D L S N D O R P H P H P P R O R O R T R T R B S F S F S E S T S T S T T A T A T S T X T X T Y

L , 2 9 , 2 5 , 3 5, 0 A , - l , 0 6 , 1 6

— — — — _

» , - 1 , - 1 , - 1 , - 1

1 1

, - l , C 9 , C 5 , D 5, - 1 , E O , E 4 , - 1

— C C — - - C D

, - 1 , 4 9 , 4 5 , 5 5, - 1 , - 1 , E 6 , F 6

1 1 , - 1 ,

1 , - l , A 9 , A 5 , B 5, - 1 , A 2 , A 6 , - 1, - l , A 0 , A 4 , B 4, 4 A , -, - l , O c

, - ! , -, 2 A , -, 6 A , -

L , 4 6 , 5 67 , 0 5 , 1 5

L , 2 6 , 3 61 , 6 6 , 7 6

, - l , E 9 , E 5 , F 5

1 1 1 1, - 1 , - 1 , 8 5 , 9 5, - 1 , - 1 , 8 6 , - 1, - 1 , - 1 , 8 4 , 9 4, - 1 , - 1 , - 1 , - 1, - 1 , - 1 , - 1 , - 1, - 1 , - 1 , - 1 , - 1, - 1 , - 1 , - 1 , - 1, - 1 , - 1 , - 1 , - 1

1 , , -

— , 2 D , 3 D , 3 9 , - 1 , - 1 , 2 1 , 3 , - l , O E , I E , - 1 , - 1 , - 1 , - 1 , - 1

, - 1 , - 1 , - 1 , - 1 , - 1 , 3 0 , - 1 , - 1

, - 1 , - 1 , - 1 , - 1 , - 1 , 1 0 , - 1 , - 11 , - 1 , - 1 , 1 , U U , 1 , - 1 ,

, - i , - l , - l , - l , - l ' , 5 0 , - 1 , - 1

,

1 1 1 1 —

v J h J ,

L , C D , D D , D 9 , - 1 , - 1 , C 1 , D 1L , E C , - 1 , - 1 , - 1 , - 1 , - 1 , - 1

L , 4 D , 5 D , 5 9 , - 1 , - 1 , 4 1 , 5 1L , E E , F E , - 1 , - 1 , - 1 , - 1 , - 1

1 , 2 0 , 1 , 1 , 1 , 1 , 1 ,, - l , A D , B D , B 9 , - l , - l , A l , B l, B 6 , A E , - 1 , B E , - 1 , - 1 , - 1 , - 1, - 1 , A C , B C , - 1 , - 1 , - 1 , - 1 , - 1, - l , 4 E , 5 E , - 1 , - 1 , - 1 , - 1 , - 1, - 1 , O D , 1 D , 1 9 , - 1 , - 1 , 0 1 , 1 1

, - 1 , - 1 , - 1 , - 1 , 6 8 , - 1 , - 1 , - 1, - l , 2 E , 3 E , - 1 , - 1 , - 1 , - 1 , - 1, - l , 6 E , 7 E , - 1 , - 1 , - 1 , - 1 , - 1

, - l , 8 D , 9 D , 9 9 , - 1 , - 1 , 8, 9 6 , B E , - 1 , - 1 , - 1 , - 1 , - 1, - l , 8 C , - l , - 1 , - 1 , - 1 , - 3, - 1 , - 1 , - 1 , - 1 , A A , - 1 , - 1, - 1 , - 1 , - 1 , - 1 , A 8 , - 1 , -, - l , - l , - l , ~ l , B A , - l , - J, - 1 , - 1 , - 1 , - 1 , 8 A , - 1 , -, - 1 , - 1 , - 1 , - 1 , 9 A , - 1 , - J

1 , - 1 , - 1 , - 1 , 9 8 , - 1 , -

L , 9 1, -

1 , - 1

, - -

L , ™ 1, -

1 , - 1

— , -

, -

, - , -

, - 1 -

1 - , "

1 - 1 - 1 -

_

, -

1 - —

, -

- ■

, - 1 - , -

- , - " 11 - , - , - 1 -

1 0

Page 118: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

D e s c r i p t i o n o t h 6 5 1 0 a s s e m b l e r a n t h i m p o r t a n t v a r i a b l e s .1 0 1 9 D i s p l a y t i t l e , r e a d s o u r c e f i l e n a m e i n t o $ S N ,

p r o m p t f o a s s e m b l y l i s t i n g . V a r i a b l e D i s e t t h d e v i c e n u m b e r f o l i s t i n g d e p e n d i n g o t h a n s w e r . T h v a r i a b l e P d e t e r m i n e s i t h l i s t i n g i w a n t e d o n o t . C a l l r o u t i n e t i n i t i a l i z e t h v a r i a b l e s w i t h G O S U B 5 0 0 0 .

2 0 4 6 M a i n l o o p o f t h e p r o g r a m . L i n e 2 1 0 p e r f o r m s p a s sa s u b r o u t i n e ( G O S U B 4 0 0 0 ) . S o u r c e p r o g r a m

f i l e o p e n e d f o r e a d i n g f r o m d i s k . I l i s t i n g i n o r e q u i r e d , d i s p l a y o n l y t h l i n e n u m b e r $ Z ( l i n e 2 5 0 ) . V a r i a b l e f o p r i n t e r o u t p u t , P R $ , i c o n s t r u c t e d . L i n e 3 2 c h e c k s f o l e g a l i n s t r u ct i o n s . S e e r r o r f l a g i i l l e g a l i n s t r u c t i o n a n p l a c e B R K i n s t r u c t i o n a t h a t l o c a t i o n . L i n e 3 5 d e t e r m i n e s a d d r e s s i n g m o d e ( G O S U B 2 4 0 0 ) .D e t e r m i n e d i r e c t i o n o b r a n c h f o r e l a t i v ea d d r e s s i n g m o d e . C a l l s u b r o u t i n e f r o m l i n e 3 6 t b u i l d s t r i n g f o p r i n t i n g t h l i s t i n g( d e p e n d i n g o a d d r e s s i n g m o d e a n l e n g t h o i n s t r u c t i o n ) . W r i t e g e n e r a t e d c o d e t m e m o r yf r o m l i n e 3 7 0 . I n c r e m e n t p r o g r a m c o u n t e r i l i n e3 8 0 . P r i n t l i s t i n g i l i n e s 4 0 t h r u 4 6 0 . I fe r r o r i f o u n d , i n c r e m e n t e r r o r c o u n t e r i l i n e4 2 0 . D i s p l a y c o m p l e t e a s s e m b l e r s o u r c e s t a t e m e n ti l i n e 4 5 0 .

5 0 5 2 H a n d l e o n e - b y t e i n s t r u c t i o n s . V a r i a b l e A i s e t t h n u m b e r o b y t e s a n t h i n s t r u c t i o n c o d ei d e t e r m i n e d b u s i n g T % n e g a t i v e v a l u ei n d i c a t e s t h a t t h i s i n s t r u c t i o n c a n n o t u s t h i sa d d r e s s i n g m o d e . I t h i s c a s e , b r a n c h t 1 5 1 0 ,t i n s e r t B R i n s t r u c t i o n ( z e r o ) i n s t e a d .O t h e r w i s e , c o n v e r t t h o p c o d e t h e a n p l a c ei t h p r i n t s t r i n g .

6 0 7 4 H a n d l e t w o - b y t e i n s t r u c t i o n s . D e t e r m i n e o p c o d ei l i n e 6 1 0 . P l a c e o p c o d e i p r i n t s t r i n g i l i n e 6 2 0 . C h e c k f o i m m e d i a t e a d d r e s s i n g , o p e ra t o r s a n a n z e r o - p a g e a d d r e s s i n g ( d e n o t e db " * " ) . D e t e r m i n e i o p e r a n d i n u m b e r ( h e x o d e c i m a l ) i l i n e 6 6 0 . I n o t , g e v a l u e o t h l a b e l i l i n e 6 7 0 ( G O S U B 4 5 0 0 ) . Q o n v e r t v a l u e o o p e r a n d t o h e x . M o d i f y t h v a l u e a c c o r d i n g t t h o p e r a t o r s a n i l i n e 7 0 a n 7 1 0 . R a n g ec h e c k f o v a l u e g r e a t e r t h a n 2 5 5 i l i n e 7 2 0 .I n s e r t v a l u e i m e m o r y a n a d t t h p r i n ts t r i n g .

8 0 8 9 H a n d l e t h r e e - b y t e i n s t r u c t i o n s s i m i l a r t t w o -b y t e i n s t r u c t i o n s a b o v e . C a l c u l a t e o f f s e t a n c h e c k f o l e g a l a d d r e s s r a n g e i l i n e 9 7 0 . I

1 1

Page 119: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

i l l e g a l , d i s p l a y " R ( r a n g e ) e r r o r a n d s e to f f s e t t o z e r o . C o n v e r t n e g a t i v e v a l u e s t t w o ' sc o m p l e m e n t i l i n e 9 8 0 . I n s e r t t h v a l u e i m e m o r y a n a d t p r i n t s t r i n g .

1 0 0 0 1 4 2 0 E x e c u t i o n i t r a n s f e r r e d h e r e w h e n t h a s s e m b l yi d o n e . D i s p l a y l a s t l i n e o a s s e m b l y . P r o m p tu s e r t s a v e g e n e r a t e d c o d e t o d i s k . I y e s ,s e t u p f i l e n a m e , s t a r t i n g a n e n d i n g a d d r e s s e sc a l l o p e r a t i n g s y s t e m S A V E r o u t i n e w i t h S Y S .D i s p l a y r a n g e a n l e n g t h o t h g e n e r a t e d c o d e .P r o m p t f o s y m b o l t a b l e d i s p l a y . S o r t i n t oa l p h a b e t i c a l s e q u e n c e i l i n e s 1 2 0 0 - 1 4 0 0 .

T h f o l l o w i n g a r t h s u b r o u t i n e s w h i c h a r c a l l e d f r o m t h m a i n r o u t i n e a n p e r f o r m s u c h o p e r a t i o n s a n u m b e rc o n v e r s i o n .1 5 0 0 1 5 2 0 O u t p u t o n o t w z e r o b y t e s i a e r r o r w a

d e t e c t e d d u r i n g t h a s s e m b l y .1 6 0 0 1 6 4 0 D e t e r m i n e i f i r s t f i e l d i m n e m o n i c f o a

i n s t r u c t i o n o l a b e l . I i i a i n s t r u c t i o n ,a s s i g n t v a r i a b l e t h i n d e x o t h a ti n s t r u c t i o n i t h a s s e m b l e r ' s i n t e r n a l t a b l e s .

2 0 0 0 2 3 0 0 R e a d s o u r c e p r o g r a m l i n e f r o m d i s k a n s e p a r a t e i n t o l i n e n u m b e r , l a b e l , i n s t r u c t i o nm n e m o n i c , o p e r a n d , a n c o m m e n t s . T h r o u t i n e a 2 3 0 0 r e a d s o n e b y t e f r o m d i s k i n t o t h v a r i a b l eZ $ F l a g F F i s e i t h b y t e i z e r o ( e n d - o f -l i n e m a r k e r ) . T h e f i r s t t w b y t e s , w h i c h c o n t a i nt h l i n k a d d r e s s , a r n o t u s e d . I b o t h a r z e r o , h o w e v e r , t h e n o f t h e p r o g r a m h a b e e nr e a c h e d a n M . E N " i n i n d i c a t e d . O t h e r w i s e , t h l i n e n u m b e r i o b t a i n e d f r o m t h n e x t t w b y t e s .F i n d n e x t f i e l d b s e a r c h i n g f o f i r s t b l a n k o t h e n d - o f - l i n e . I s e m i c o l o n i f o u n d , t h t e x t f o l l o w i n g i a s s i g n e d t t h v a r i a b l e a c o m m e n t s . O t h e r w i s e , t h v a r i a b l e Z N c o n t a i n st h e l i n e n u m b e r , L N c o n t a i n s t h l a b e l n a m e , X c o n t a i n s t h i n s t r u c t i o n m n e m o n i c , Y c o n t a i n st h o p e r a n d s , a n d ; R M c o n t a i n s t h c o m m e n t s .

2 4 0 0 2 4 6 0 D e t e r m i n e s t h a d d r e s s i n g m o d e o a i n s t r u c t i o n . C h e c k f o c h a r a c t e r s " ( " , " ) " f " , a n " X a n " Y " . I m m e d i a t e a d d r e s s i n g m o d e i r e c o g n i z e d b " # " , a n z e r o - p a g e a d d r e s s i n g b » * ( v a r i a b l e Z P l i n e 2 5 1 0 ) . A d d r e s s i n g m o d e i i n d i c a t e d b v a r i a b l e T a v a l u e b e t w e e n z e r oa n t w e l v e . n e g a t i v e v a l u e i n d i c a t e s a i l l e g a l a d d r e s s i n g m o d e .

I l

Page 120: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

2 7 0 0 2 8 2 0 H a n d l e s t h p s e u d o - i n s t r u c t i o n s " = * " , a n " . B Y " . C a l l e d d u r i n g p a s s a n i u s e d f o s u c ht h i n g s a l a b e l d e f i n i t i o n .

2 9 0 0 2 9 9 8 H a n d l e s t h s a m e i n s t r u c t i o n s a t h p r e v i o u sr o u t i n e , b u f o p a s s 2 T h i s r o u t i n e p l a c e s t h c o d e s f o " . B Y " c o m m a n d s i m e m o r y .

3 0 0 0 3 0 3 0 C a l l s t h f o l l o w i n g r o u t i n e s f o n u m b e r c o n v e rs i o n a n i u s e d t i n i t i a l i z e t h p r i n t s t r i n gw i t h t h a d d r e s s o t h p r o g r a m c o u n t e r .

3 1 0 0 3 2 3 0 C o n v e r t h e n u m b e r i A t d e c i m a l n u m b e ri A

3 2 4 0 3 2 5 0 C o n v e r t d e c i m a l n u m b e r i t h e n u m b e r i A $ A L % a n d A H % c o n t a i n t h l o w a n d h i g h b y t e s ,r e s p e c t i v e l y .

4 0 0 0 4 2 8 0 P e r f o r m p a s s o t h a s s e m b l y . P e r f o r m s l a b e ls e a r c h i n g a n a s s i g n i n g t h e i r v a l u e s . A l s o d i p l a y s t h l i n e n u m b e r s ( l i n e 4 0 6 0 ) . h a s h - c o d ep r o c e d u r e i u s e d f o s y m b o l t a b l e t s p e e ds e a r c h i n g u s i n g v a r i a b l e L B $ ( ) . T h c o r r e sp o n d i n g h e x c o d e i p l a c e d i H E $ ( ) . T h l e n g t ho e a c h i n s t r u c t i o n i d e t e r m i n e d f r o m t h a d d r e s s i n g m o d e , s t h a t t h l a b e l s c a b a s s i g n e d t h c o r r e c t v a l u e s . C h e c k f o d u p l i c a t el a b e l s . I n c r e m e n t t h p r o g r a m c o u n t e r a f t e r t h d e t e r m i n i n g t h a d d r e s s m o d e T u s i n g t h f i e l dL % ( ) w i t h t h c o r r e s p o n d i n g l e n g t h o e a c ha d d r e s s m o d e .

4 5 0 0 4 6 5 0 C a l l e d d u r i n g p a s s t d e t e r m i n e t h v a l u e o t h l a b e l p a s s e d i S L $ . I t h l a b e l i n o f o u n d , a e r r o r f l a g i s e t , o t h e r w i s e t h h e v a l u e i r e t u r n e d i H E $ .

5 0 0 0 5 0 7 0 I n i t i a l i z e a l v a r i a b l e s f r o m t h f o l l o w i n g D A T As t a t e m e n t s .

6 0 0 0 7 5 5 0 D A T A s t a t e m e n t s f o t h c o n v e r t i n g f r o m d e c i m a lt h e x , i n s t r u c t i o n l e n g t h s f o d i f f e r e n ta d d r e s s i n g m o d e s , i n s t r u c t i o n m n e m o n i c s a n c o r r e s p o n d i n g o p e r a t i o n c o d e s a n a l l o w a b l ea d d r e s s i n g m o d e s .

1 1

Page 121: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

S N C o n t a i n s t h n a m e o t h s o u r c e p r o g r a m( w i t h o u t s u f f i x " . S R C " ) . T h m a c h i n e c o d ep r o d u c e d i s a v e d u n d e r t h s a m e n a m e , w i t h t h s u f f i x " . O B J " .

D D C o n t a i n s t h d r i v e n u m b e r .P C o n t a i n s d e v i c e n u m b e r o t h o u t p u t d e v i c e f o

t h l i s t i n g ; s c r e e n , p r i n t e r .P F l a g f o r i g n o r i n g p r i n t e r o u t p u t ( = 1 ) .

a c t u a l a d d r e s s v a l u eA i m m e d i a t e p r o g r a m c o u n t e r d u r i n g t h a s s e m b l yZ N l i n e n u m b e r b e i n g p r o c e s s e dL N l a b e l n a m e

X i n s t r u c t i o n m n e m o n i cY o p e r a n d

R M c o m m e n t sT a d d r e s s m o d e ( z e r o t t w e l v e )O o f f s e t f o s t o r a g e o g e n e r a t e d c o d e ( 0 = n o t u s e d )A l e n g t h o i n s t r u c t i o nA h e r e p r e s e n t a t i o n o t h a c t u a l a d d r e s sS L l a b e l t s e a r c h f o r . M u s t c o n t a i n t h n a m e o

t h l a b e l b e i n g s e a r c h e d f o w h e n c a l l i n g 4 5 0 0 .H E h e x v a l u e o t h l a b e lL c o n s t a n t 2 5 H c o n s t a n t 2 5

D a d d r e s s o f f s e t ( d i f f e r e n c e ) f o r e l a t i v e a d r e s s i n g

B S e r r o r c o u n t e r

M n u m b e r o l a b e l s p e l i n e f o o u t p u t o s y m b o lt a b l e

H I " g r e a t e r " l a b e l n a m e f o s o r t i n g

1 1

Page 122: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

P R s t r i n g f o o u t p u t o p r i n t l i n e i t h l i s t i n gM N m n e m o n i cZ c h a r a c t e r f r o m d i s kN N n u m b e r o m n e m o n i c s ( o c o d e s )X A S C I I c o d eZ f l a g f o z e r o - p a g e a d d r e s s i n gH v a l u e o l a b e l ( d u r i n g p a s s 1

F % , F F % e r r o r f l a g s

H C H C h a s h c o d eF L $ ( 3 ) e r r o r c o d e sL B $ ( 3 4 9 ) t a b l e o l a b e l sH E $ ( 3 4 9 ) t a b l e o c o r r e s p o n d i n g v a l u e s f o l a b e l s ( i h e

c o d e )T % ( 5 5 , 1 2 ) t a b l e o o p c o d e s a n a d d r e s s m o d e s . T h f i r s t

i n d e x i t h i n s t r u c t i o n w o r d , t h s e c o n d i n d e xi t h a d d r e s s i n g m o d e .

M N $ ( 5 5 ) t a b l e o i n s t r u c t i o n w o r d s i a l p h a b e t i c a lo r d e r .

1 1

Page 123: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

6 A S i n g l e - S t e p S i m u l a t o r f o t h 6 5 1 0

I y o a r s t i l l u n c l e a r a t h o w c e r t a i n m a c h i n e l a n g u a g ei n s t r u c t i o n s w o r k , h e r e ' s t o o l t h a t l e t s y o o b s e r v e t h s e e t h e r e s u l t s o e a c h i n s t r u c t i o n r i g h t o t h s c r e e n . T h t o o l i c a l l e d S I M U L A T O R . A s t h e n a m e i m p l i e s , i s i m u l a t e s t h o p e r a t i o n o t h 6 5 1 0 m i c r o p r o c e s s o r . W h e n y o

R U t h S I M U L A T O R , i d i s p l a y s t h a c t i o n s a n r e s u l t s o a i n s t r u c t i o n a i t h a t i n s t r u c t i o n w e r e r e a l l y b e i n g

e x e c u t e d .

T h S I M U L A T O R d i s p l a y s t h f o l l o w i n g s c r e e n :

P A X Y R S R S N V - B D I Z C0 0 0 0 0 0 0 2 F 0 0 1 0 0 0 0 0

H e r e a r e t h a b b r e v i a t i o n u s e d i t h d i s p l a y :

P A X Y S S

p r o g r a m c o u n t e ra c c u m u l a t o r

r e g i s t e rr e g i s t e rs t a t u s r e g i s t e rs t a c k p o i n t e rn e g a t i v e f l a go v e r f l o w f l a gb r e a k f l a gd e c i m a l f l a gi n t e r r u p t f l a gz e r o f l a gc a r r y f l a g

B e n e a t h t h a b b r e v i a t i o n s a r t h c o n t e n t s o e a c h r e g i s t e r .Y o c a c h a n g e t h c o n t e n t s o a n r e g i s t e r o f l a g f r o m t h

1 1

Page 124: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

k e y b o a r d . T c h a n g e t h c o n t e n t s , p r e s s t h a p p r o p r i a t el e t t e r a o u t l i n e d b e l o w . I y o p r e s s t h l e t t e r o f l a g ,t h e n t h a t f l a g i " i n v e r t e d " . I y o p r e s s t h l e t t e r o r e g i s t e r , t h s c r e e n p r o m p t s y o f o t h c h a n g e . K e i t i n e v a l u e u s i n g l e g a l h e x a d e c i m a l v a l u e a n p r e s s t h < R E T U R N > k e y . T h n e w v a l u e r e p l a c e s t h o l d a n d t h d i s p l a yi u p d a t e d w i t h t h n e c o n t e n t s . B e l o w i s d e s c r i p t i o n o

t h e k e y s a n t h e i r r e s p e c t i v e c o n t e n t s :

D i s p l a y s t h c u r r e n t 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 f t e r c h a n g i n g i t t h n e w v a l u e i d i s p l a y e d a n t h i n s t r u c t i o n l o c a t e d a t h i s n e a d d r e s s i d i s a s s e m b l e da n a l s o d i s p l a y e d

T h c o n t e n t s o t h a c c u m u l a t o r a r d i s p l a y e d . Y o u c a na l t e r t h c o n t e n t s b k e y i n g i t h n e v a l u e . A f t e rp r e s s i n g < R E T U R N > , t h n e w v a l u e a p p e a r s i t h r e g i s t e rd i s p l a y .

T h c o n t e n t s o t h X - r e g i s t e r a r d i s p l a y e d . Y o u c a na l t e r t h c o n t e n t s b k e y i n g i t h n e v a l u e . A f t e rp r e s s i n g < R E T U R N > , t h n e w v a l u e a p p e a r s i t h r e g i s t e rd i s p l a y .

T h c o n t e n t s o t h Y - r e g i s t e r a r d i s p l a y e d . Y o u c a na l t e r t h c o n t e n t s b k e y i n g i t h n e v a l u e . A f t e rp r e s s i n g < R E T U R N > , t h n e w v a l u e a p p e a r s i t h r e g i s t e rd i s p l a y .

T h c o n t e n t s o f t h e s t a c k p o i n t e r a r d i s p l a y e d . Y o c a a l t e r t h c o n t e n t s b k e y i n g i t h n e v a l u e . A f t e rp r e s s i n g < R E T U R N > , t h n e v a l u e o t h s t a c k p o i n t e ra p p e a r s i t h r e g i s t e r d i s p l a y .

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

1 1

Page 125: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

B p r e s s i n g N t h v a l u e o t h N e g a t i v e f l a g i i n v e r t e d : b e c o m e s a n v i c e v e r s a . A t t h s a m e t i m e , t h c o n t e n t s o t h s t a t u s r e g i s t e r a r c h a n g e dc o r r e s p o n d i n g l y , a a l r e a d y m e n t i o n e d .

B p r e s s i n g V t h v a l u e o t h o v e r f l o w f l a g i i n v e r t e da a b o v e .

B p r e s s i n g B t h v a l u e o t h B r e a k f l a g i i n v e r t e d a a b o v e .

B p r e s s i n g D t h v a l u e o t h D e c i m a l f l a g i i n v e r t e da a b o v e .

B p r e s s i n g I t h v a l u e o t h I n t e r r u p t f l a g i i n v e r t e d a a b o v e .

B p r e s s i n g Z t h v a l u e o t h Z e r o f l a g i i n v e r t e d a a b o v e .

B p r e s s i n g C t h v a l u e o t h C a r r y f l a g i i n v e r t e d a a b o v e .

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

p r e s s i n g t h s p a c e b a r . B p r e s s i n g t h s p a c e b a r f t h em 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 p o i n t e d t b y t h e p r o g r a mc o u n t e r i e x e c u t e d . A t h n a m e s i m u l a t o r i m p l i e s , t h i si n s t r u c t i o n i n o d i r e c t l y e x e c u t e d b y t h e p r o c e s s o r .I n s t e a d i t i s s i m u l a t e d b t h p r o g r a m . T h r e g i s t e rc o n t e n t s a n f l a g s a r a l t e r e d j u s t a t h e y w o u l d b i t h m i c r o p r o c e s s o r h a e x e c u t e d t h i n s t r u c t i o n . A f t e r p r e s s i n gt h s p a c e b a r , t h n e c o n t e n t s o t h r e g i s t e r s a n f l a g sa r d i s p l a y e d ; t h n e x t i n s t r u c t i o n t b e x e c u t e d i

1 1

Page 126: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

c o u n t e r i d i s p l a y e d .

B e l o w i a e x a m p l e , s i m u l a t i n g t h e x e c u t i o n o r o u t i n ec o n t a i n e d i t h o p e r a t i n g s y s t e m . F i r s t s e t h p r o g r a mc o u n t e r t $ A 8 1 D b p r e s s i n g P a n e n t e r i n g A 8 1 D a t h n e c o n t e n t s o f t h e p r o g r a m c o u n t e r . T h e f o l l o w i n g i d i s p l a y e d :

P C A C X Y S S N V - B D I Z CA 8 1 D 0 0 0 0 0 0 2 F 0 0 1 0 0 0 0 0A 8 1 D 3 S E

P r e s s t h s p a c e b a t s i m u l a t e t h e x e c u t i o n o t h i s

i n s t r u c t i o n . T h r e s u l t a p p e a r s b e l o w :

P C A C X Y S R S P N V - B D I Z CA 8 1 E 0 0 0 2 F 0 0 1 0 0 0 0 1A 8 1 E A 2 L D A $ 2 B

A f t e r t h i n s t r u c t i o n i e x e c u t e d , t h c a r r y f l a g i s e t .T h v a l u e o t h s t a t u s r e g i s t e r i a u t o m a t i c a l l y c h a n g e d t $ 2 1 . T h p r o g r a m c o u n t e r i i n c r e m e n t e d b y o n e t $ A 8 1 E .

T h i s l o c a t i o n c o n t a i n s a L D i n s t r u c t i o n . P r e s s t h s p a c eb a t e x e c u t e t h i s i n s t r u c t i o n . H e r e ' s w h a t y o u ' l l s e o

t h e s c r e e n :

1 1

Page 127: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

P A X Y R S R S N V - B D I Z CA 8 2 0 0 1 0 0 0 0 2 F 0 0 0 1 0 0 0 1

A 8 2 0 E 9 0 1 S B # $ 0 1

T h a c c u m u l a t o r h a b e e n l o a d e d w i t h t h c o n t e n t s o m e m o r yl o c a t i o n $ 2 B , w h i c h c o n t a i n s t h v a l u e 1 N o t i c e t h a t t h a n f l a g s r e m a i n c l e a r b e c a u s e t h v a l u e l o a d e d w a sn e i t h e r z e r o n o r n e g a t i v e . T h e p r o g r a m c o u n t e r n o w s t a n d s a $ A 8 2 0 , t w b y t e s f u r t h e r . T h i n s t r u c t i o n a t h i s l o c a t i o ni S B C # $ 0 1 s u b t r a c t $ 0 f r o m t h c o n t e n t s o t h a c c u m u l a t o r . P r e s s t h s p a c e b a a g a i n t s e t h s i m u l a t e dr e s u l t s o t h S B i n s t r u c t i o n :

P C A C X Y S S N V - B V I Z CA 8 2 2 0 0 0 2 F 0 0 1 0 0 0 1 1A 8 2 2 A 2 L D $ 2

A f t e r t h v a l u e $ 0 i s u b t r a c t e d f r o m t h c o n t e n t s o t h t h a c c u m u l a t o r ( a l s o l ) t h r e s u l t a p p e a r s i t h a c c u m u l a t o r . S o m e t h i n g h a p p e n e d t t h f l a g s . T h z e r o f l a g

i s e t , i n d i c a t i n g t h a t t h r e s u l t o t h o p e r a t i o n o i z e r o . T h c a r r y f l a g i a l s o s e t . T h i s t e l l s u t h a tu n d e r f l o w d i n o o c c u r d u r i n g t h s u b t r a c t i o n . T h e n e x ti n s t r u c t i o n a a d d r e s s $ A 8 2 2 i L D $ 2 C . P r e s s t h s p a c e b a t g e t h f o l l o w i n g d i s p l a y :

P A C X R Y S S N V - B D I Z CA 8 2 4 0 0 0 0 8 2 F 0 0 1 0 0 0 0 1A 8 2 4 B 0 B C $ A 8 2 7

1 1

Page 128: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h Y - r e g i s t e r c o n t a i n s $ 0 8 a n d t h z e r o f l a g i c l e a r e d .T h i n s t r u c t i o n a a d d r e s s $ A 8 2 4 i c o n d i t i o n a l b r a n c h .C a y o t e l l b e f o r e h a n d i t h i s b r a n c h w i l l b e x e c u t e d ? T h

b r a n c h w i l l t a k e p l a c e i t h c a r r y f l a g i s e t . S i n c e t h c a r r y f l a g i s e t , t h e b r a n c h w i l l t a k e p l a c e . C o n f i r m t h i sb p r e s s i n g t h s p a c e b a r :

P A X Y S S N V - B D I Z CA 8 2 7 0 0 0 0 0 8 2 1 F 0 0 1 0 0 0 0 1A 8 2 7 8 4 S T $ 4

T h p r o g r a m c o u n t e r i n o p o i n t i n g t $ A 8 2 7 , n o $ A 8 2 6 h a st h c a r r y f l a g b e e n c l e a r . N o t i c e t h a t t h f l a g s a r e n o tc h a n g e d b y t h e b r a n c h i n s t r u c t i o n . T h e n e x t i n s t r u c t i o ns t o r e 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 i m e m o r y l o c a t i o n$ 4 1 . P r e s s t h s p a c e b a r a g a i n :

P C A C X Y S S N V - B D I Z CA 8 2 9 0 0 0 0 0 2 F 0 0 1 0 0 0 0 1A 8 2 9 8 4 4 2 S T $ 4

T h e S T A i n s t r u c t i o n d o e s n o c h a n g e a n o t h f l a g s . T h en e x t i n s t r u c t i o n , S T $ 4 2 , a l s o h a n a f f e c t o t h f l a g s .P r e s s t h s p a c e b a r :

P A X Y S S N V - B D I Z CA 8 2 B 0 0 0 0 8 2 F 0 0 1 0 0 0 0 1A 2 6 R T

T h n e x t i n s t r u c t i o n i a R T S . Y o u c a n s t o p t h s i m u l a t o r

1 2

Page 129: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

c h a n g e t h c o n t e n t s o t h r e g i s t e r s a n f l a g s a y o u rd i s c r e t i o n b e f o r e t h e x e c u t i o n o e a c h i n s t r u c t i o n t s e h o t h p r o c e s s o r r e a c t s . Y o c a a l s o s e t h p r o g r a mc o u n t e r b a c k t t h s a m e i n s t r u c t i o n a f t e r i t e x e c u t i o n a n r e _ e x e c u t e i a g a i n w i t h d i f f e r e n t r e g i s t e r s o r f l a g v a l u e s .I b e c o m e s g r e a t l e a r n i n g t o o l .

s i m u l a t o r a l s o a l l o w s y o t a d v a n c e t h p r o g r a m c o u n t e rt o t h e n e x t i n s t r u c t i o n w i t h o u t e x e c u t i n g t h p r e v i o u s o n e .Y o c a d t h i s b p r e s s i n g t h " c u r s o r d o w n " k e y . F o e x a m p l e , i y o c o m e t i n s t r u c t i o n s u c h a S T o I N w h i c h o v e r w r i t e s i m p o r t a n t o p e r a t i n g s y s t e m a r e a s o m e m o r y ,y o r i s k c r a s h i n g y o u r c o m p u t e r .

F o t h i s r e a s o n , i n s t r u c t i o n s a f f e c t i n g m e m o r y a r n o r m a l l yn o e x e c u t e d . I t h e s e t y p e s o i n s t r u c t i o n s a r n e c e s s a r yt t e s t y o u r p r o g r a m c o r r e c t l y , ( f o r e x a m p l e i y o u r p r o g r a m

d e p e n d s o t h c o n t e n t s o s p e c i f i c m e m o r y l o c a t i o n ) , t h e ny o u c a n s p e c i f y t h a t t h p r o g r a m a c t u a l l y e x e c u t e s u c hc o m m a n d s . T o d o t h i s , p r e s s t h k e y . T h p r o m p t A C T U A LS I M U L A T I O N ? a p p e a r s o t h s c r e e n . I y o p r e s s < R E T U R N > ,t h e n a l i n s t r u c t i o n s w h i c h w r i t e t m e m o r y a r a c t u a l l ye x e c u t e d . I y o r e s p o n d w i t h N ( o ) i n s t e a d o Y ( e s ) , y o u c a nt u r n t h i s o p t i o n o f f .

T h s i m u l a t o r a l s o a l l o w s y o t v i e w a n a l t e r t h c o n t e n t s

1 2

Page 130: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

o m e m o r y l o c a t i o n . T d o t h i s , p r e s s t h e M k e y . T h p r o m p tA D D R E S S ? * * * * a p p e a r s o t h s c r e e n . E n t e r t h d e s i r e dm e m o r y l o c a t i o n a n p r e s s < R E T U R N > . T h c u r r e n t c o n t e n t s o t h a t l o c a t i o n a r d i s p l a y e d o t h s c r e e n . Y o c a p r e s s< R E T U R N > t l e a v e t h c o n t e n t s u n a l t e r e d , o r k e y i n e v a l u e t c h a n g e t h c o n t e n t s . C h a n g e s a r a c c e p t e d o n l y i

A C T U A L S I M U L A T I O N w a s p r e v i o u s l y s e l e c t e d w i t h E

T h e n e x t e x a m p l e d e s c r i b e s t h o p e r a t i o n o t h e s t a c k . T h eB R i n s t r u c t i o n i u s e d t i l l u s t r a t e t h s t a c k o p e r a t i o n .S t a r t t h s i m u l a t o r b t y p i n g R U N . E n t e r t s e l e c t a c t u a ls i m u l a t i o n m o d e , a n d s e t t h p r o g r a m c o u n t e r t $ 0 0 0 2 . N e x tc h a n g e t h c o n t e n t s o m e m o r y l o c a t i o n $ 0 0 0 2 t $ 0 0 . $ 0 i

t h i n s t r u c t i o n c o d e f o t h B R i n s t r u c t i o n . E v e r y t i m eB R i n s t r u c t i o n i e x e c u t e d , t h s i m u l a t o r ' s f l a g i s e t .

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

P C A C X Y S R S P N V - B D I Z C0 0 0 2 0 0 0 0 0 0 2 F 0 0 1 0 0 0 0 00 0 0 2 0 B R

T b e t t e r i l l u s t r a t e t h s t a c k o p e r a t i o n s , p l a c e u n i q u ev a l u e s i n t o t h a c c u m u l a t o r , a n r e g i s t e r s . Y o u c a n d t h i s b p r e s s t h A a n k e y s a n t y p i n g i n e w v a l u e sf o t h c o r e s p o n d i n g r e g i s t e r s . W h a v e a l t e r e d t h c o n t e n t so f t h e r e g i s t e r s t t h v a l u e s d i s p l a y e d o n t h e n e x t p a g e :

1 2

Page 131: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

P A C X R Y R S R S N V - B D I Z C0 0 0 2 2 4 8 2 F 0 0 1 0 0 0 0 0

0 0 0 2 0 B R

I t h e r e i n B R i n s t r u c t i o n a a d d r e s s $ 0 0 0 2 , t h e n p r e s sa n e n t e r t h a d d r e s s $ 0 0 0 2 . T h e c o n t e n t s o m e m o r y

l o c a t i o n a p p e a r s . A l t e r t h c o n t e n t s t $ 0 ( t h e o p e r a t i o nc o d e f o t h B R K i n s t r u c t i o n ) . N o t h B R i n s t r u c t i o n i d i s p l a y e d o t h s c r e e n a s h o w n a b o v e . P r e s s t h s p a c e b a a n o b s e r v e t h d i s p l a y :

P C A C X Y S S N V - B D I Z CF F 4 8 2 2 4 4 8 8 3 4 F C 0 0 1 1 0 1 0 0F F 4 8 4 P H

W h e n B R i n s t r u c t i o n i e n c o u n t e r e d , t h p r o c e s s o r t a k e ss e v e r a l a c t i o n s :

1 T h a n f l a g s a r s e t .

2 T h c o n t e n t s o f t h e p r o g r a m c o u n t e r ( t w o b y t e s ) a n t h s t a t u s r e g i s t e r a r s a v e d o n t o t h s t a c k .

3 T h e s t a c k p o i n t e r i d e c r e m e n t e d b y t h r e e , i t h i sc a s e f r o m $ F t $ F C .

4 T h p r o g r a m c o u n t e r i l o a d e d w i t h t h c o n t e n t s o a d d r e s s e s $ F F F E a n $ F F F F ( w h i c h c o n t a i n s $ F F 4 8 ) .$ F F E E a n $ F F F F c o n t a i n t h B R v e c t o r w h i c h i t h a d d r e s s o r o u t i n e w h i c h a l w a y s h a n d l e s B R i n t e r r u p t .

T h i n s t r u c t i o n a t h i s l o c a t i o n i P H A . T h i s i n s t r u c t i o np l a c e 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 o n t o t h s t a c k . P r e s st h s p a c e b a r a g a i n . Y o u w i l l s e t h i s :

1 2

Page 132: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

P A X Y R S R S N V - B D I Z CF F 4 9 2 4 4 8 8 3 F 0 0 1 1 0 1 0 0F F 4 9 8 A T X

T h c o n t e n t s o t h a c c u m u l a t o r i p l a c e d o n t h e s t a c k a n t h s t a c k p o i n t e r i a u t o m a t i t c a l l y d e c r e m e n t e d . N e x t t h c o n t e n t s o t h X - r e g i s t e r i c o p i e d t o t h e a c c u m u l a t o r w i t ht h T X i n s t r u c t i o n . P r e s s t h s p a c e b a a g a i n .

P A X Y R S R S N V - B D I Z CF F 4 A 4 4 8 8 3 4 F 0 0 1 1 0 1 0 0F F 4 A 4 P H

T h f l a g s a r e n o t c h a n g e d b e c a u s e t h v a l u e i t h e X -r e g i s t e r i n e i t h e r z e r o n o n e g a t i v e . T h P H i n s t r u c t i o np u s h e 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 o t h s t a c k a g a i n .P r e s s t h s p a c e b a o n c e m o r e .

P F F 4 BF F 4 B 9

A 4

X 4

Y 8

S 3

T Y

S F

N V - B D I Z C0 0 1 1 0 1 0 0

N o t i c e t h a t s t a c k p o i n t e r i a g a i n d e c r e m e n t e d . N o w t h c o n t e n t s o t h Y - r e g i s t e r i p l a c e d i t h a c c u m u l a t o r w i t ht h T Y i n s t r u c t i o n . T h i s t i m e , h o w e v e r , t h f l a g i s e b e c a u s e t h v a l u e i t h r e g i s t e r i n e g a t i v e ( g r e a t e rt h a n $ 7 F ) . T h i s i d i s p l a y e d :

P A X Y S S N V - B D I Z CF F 4 C 8 4 8 B F 1 0 1 1 0 1 0 0F F 4 C 4 P H

1 2

Page 133: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h P H i n s t r u c t i o n p u s h e s t h c o n t e n t s o f t h e a c c u m u l a t o ro n t o t h s t a c k a g a i n . N o h e r e ' s n e i n s t r u c t i o n .

P A C X R Y R S R S N V - B D I Z CF F 4 D 8 4 4 8 8 B F 1 0 1 1 0 1 0 0F F 4 D B T S

T h T S i n s t r u c t i o n t r a n s f e r s t h c o n t e n t s o t h s t a t u sr e g i s t e r t t h X - r e g i s t e r .

N o t i c e t h a t y o u h a v e s a v e d a l o t h r e g i s t e r s o n t o t h s t a c k i t h i s o r d e r : P r o g r a m C o u n t e r a n S t a t u s r e g i s t e r( s a v e d b B R K ) , A c c u m u l a t o r , X - r e g i s t e r a n Y - r e g i s t e r .

N o l e t ' s s i m u l a t e t h i n s t r u c t i o n s a d i f f e r e n t p a r t o t h o p e r a t i n g s y s t e m . T h e s e i n s t r u c t i o n s r e s t o r e t h r e g i s t e r s t h a t w e j u s t s a v e d s w c a f u r t h e r s e e t h eo p e r a t i o n o t h e s t a c k .

B e f o r e s i m u l a t i n g t h e s e i n s t r u c t i o n s , s e t t h e r e g i s t e rv a l u e s t o z e r o . T h e n y o c a o b s e r v e a t h v a l u e s c h a n g e t

s e h o t h r e g i s t e r c o n t e n t s a r r e s t o r e d . Y o u c a n d o t h i sb a l t e r i n g t h A a n r e g i s t e r s t z e r o .

N e x t s e t t h e p r o g r a m c o u n t e r t $ E A 8 1 . T h d i s p l a y s h o u l dl o o k l i k e t h i s :

P A X Y R S R S N V - B D I Z CE A 8 1 0 0 0 B F 1 0 1 1 0 1 0 0E A 8 1 6 P L

1 2

Page 134: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h m a c h i n e l a n g u a g e r o u t i n e a $ E A 8 1 r e s t o r e s a l o f t h er e g i s t e r s a n c o n t i n u e s e x e c u t i o n a t t h e p o i n t j u s t b e f o r et h B R K i n t e r r u p t o c c u r r e d .

W h e n t h P L i n s t r u c t i o n i e x e c u t e d , t h d a t a a t h t o o t h s t a c k i p l a c e d i n t o t h a c c u m u l a t o r . T h e d a t a i $ 8 8 ,w h i c h i t h o r i g i n a l c o n t e n t s o t h Y - r e g i s t e r a b o v e .

P A X Y R S R S N V - B D I Z CE A 8 2 8 0 0 B F 1 0 1 1 0 1 0 0E A 8 2 A T A

T h i s i n s t r u c t i o n c o p i e s t h v a l u e i t h a c c u m u l a t o r t o t h eY - r e g i s t e r :

P C A C X Y S S N V - B D I Z CE A 8 3 8 0 0 8 8 B F 1 0 1 1 0 1 0 0E A 6 P L

N o p u l l t h n e x t v a l u e f r o m t h s t a c k i n t o t h a c c u m u l a t o r

w i t h t h P L i n s t r u c t i o n a n t r a n s f e r i t t h X - r e g i s t e r .P r e s s t h s p a c e b a r t s e t h r e s u l t s :

P A C X R Y R S R S P N V - B D I Z CE A 8 4 4 4 0 0 8 8 3 F 0 0 1 1 0 1 0 0E A 8 4 A T A

N o t i c e t h a t e a c h t i m e v a l u e i t a k e n o f f t h e s t a c k , 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 o n e . P r e s s t h s p a c e b a

1 2

Page 135: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

a g a i n :

P A X Y S S N V - B D I Z CE A 8 5 4 4 4 4 8 8 3 F 0 0 1 1 0 1 0 0E A 8 5 6 P L

T h o r i g i n a l c o n t e n t s o t h a c c u m u l a t o r a r n o w p u l l e d f r o mt h s t a c k . P r e s s t h s p a c e b a r . T h n e x t d i s p l a y l o o k s l i k et h i s :

P A X Y R S R S N V - B D I Z CE A 8 6 2 4 8 3 F 0 0 1 1 0 1 0 0E A 8 6 4 R T

A l o t h r e g i s t e r s h a v e b e e n r e s t o r e d a n t h s t a c kp o i n t e r a g a i n p o i n t s t t h v a l u e t w h i c h i p o i n t e d a f t e rt h B R i n s t r u c t i o n . W h e n u s i n g t h s t a c k , t h i m p o r t a n tt h i n g t k e e p i m i n d i t p u l l t h v a l u e s o f o t h s t a c k

i t h r e v e r s e o r d e r t h a t y o u p u s h e d t h e m o n T h " l a s t i n f i r s t o u t " p r i n c i p l e c h a r a c t e r i z e s t h i s p r o c e d u r e .

N o w c a e x e c u t e t h e R T I i n s t r u c t i o n w h i c h r e t u r n s u s t ot h o r i g i n a l i n t e r r u p t e d p r o g r a m .

P C A C X Y S S N V - B D I Z C0 0 0 5 2 4 4 8 8 2 F 0 0 0 1 0 0 0 0

0 0 0 5 9 1 B 3 S T A ( $ B 3 ) , Y

T h s t a t u s r e g i s t e r i r e t u r n e d t i t o r i g i n a l v a l u e a n

1 2

Page 136: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t h p r o g r a m c o u n t e r p o i n t s t o t h e i n s t r u c t i o n a f t e r t h B R

i n s t r u c t i o n .

T h s i m u l a t o r i t h i d e a l t o o l f o t e s t i n g y o u r p r o g r a m s .H e r e y o c a s e e , s t e p b s t e p , i t h p r o c e s s o r r e a l l y d o e sw h a t y o h a i n t e n d e d . D e b u g g i n g , a l w a y s t r i c k y p r o c e d u r e ,i m u c h e a s i e r w i t h t h s i m u l a t o r . B e g i n n e r s , w h a r n o b

a c q u a i n t e d w i t h a l o t h a d d r e s s i n g m o d e s o w h m a h a v ep r o b l e m s u n d e r s t a n d i n g t h f l a g s e t t i n g s , f i n d t h s i m u l a t o re s p e c i a l l y h e l p f u l . T h l i s t i n g o t h s i m u l a t o r p r o g r a ma p p e a r s o n t h e n e x t p a g e s . F o l l o w i n g t h l i s t i n g i s h o r td e s c r i p t i o n o t h i n d i v i d u a l r o u t i n e s a n t h v a r i a b l e su s e d b t h p r o g r a m .

1 2

Page 137: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 0 0 P R I N T " C C L R > < : W H T 3 < : C / D N 3 - i " 6 5 1 0 S I N G L E - S T E P S I M U L A T O R "1 1 P R I N T "1 2 P R I N T " f 1 3 P R I N T " P A X Y S S I N V - - B D I Z C I "1 4 P R I N T " I I 1 5 P R I N T " « - J J < J 1 6 F F = 2 5 5 : H = 2 5 6 : U L = 2 1 6 S C = 2 t 1 5 - 1 : S P = F F1 7 D I M M N * ( F F > , O P < F F ) , A D ( F F ) , S P < F F ) , H * < 1 5 )1 B F O R J = 0 T 0 1 5 : R E A D H $ < J > : N E X T1 9 F O R J = O T O F F : R E A D M N * < J > , O P ( J ) , A D < J ) : N E X P2 0 0 R E M D I S P L A Y R E G I S T E R S2 1 P R I N T " C H 0 M E 3 - C C / D N 3 - C C / D N 3 - C C / D N 3 - C C / D N 3 - C C / D N 3 - C C / R T > - C C / R T < C / R T > C C / R 1 3 C C / R 1 3 " ;2 1 I F P O = U L T H E N P C = P C - U L2 2 A = P C i G 0 S U B 2 2 9 0 : P R I N T 1 1 C C / R T 3 - C C / R T 3 -2 3 A = A C : G 0 S U B 2 3 2 0 : P R I N T " C C / R T 3 " ;2 4 A = X R : G 0 S U B 2 3 2 0 : P R I N T " C C / R T 3 - " ;2 5 A = Y R : G O S U B 2 3 2 0 : P R I N T " C C / R T 3 - "2 5 5 G 0 S U B 9 0 0 : R E M S 2 6 A « S R : G 0 S U B 2 3 2 0 : P R I N T " C C / R T 3 " ;2 7 A = S P : G 0 S U B 2 3 2 0 : P R I N T " C C / R T 3 - C C / R T 3 -2 8 P R I N T C H R * < 4 8 + N > ;2 9 P R I N T C H R * ( 4 B + V > 3 0 P R I N T " 1 " ;3 1 P R I N T C H R * ( 4 8 + B > 3 2 0 P R I N T C H R $ < 4 8 + D > ;3 3 P R I N T C H R * ( 4 8 + I ) ;3 4 P R I N T C H R * ( 4 8 + Z ) 53 5 0 P R I N T C H R * ( 4 8 + C )3 6 P R I N T " C C / D N 3 < : C / D N > < ! C / D N 3 - - C C / D N 3 € C / D N > < C / L F > C C / L F 1 .« C / L F > { C L F > { C / L F > { C / L F 3 - { C / L F 3 - { C / L F 3 - C C / L F 3 - C C / L F 3 - C C / L F > { C / L F 3 < C / L F 3 C C / L F 3 -C C / L F 3 - C C / L F 3 - C C / L F 3 C C / L F 34 0 G E T T S : I F T * = " " T H E N 4 0 04 0 I T * = M " T H E N 1 1 0 0 : R E M S I M U L A T I O N4 1 F T * = T H E N P R I N P A = P C : B 0 S U B 2 2 9 0 : I I M P U T / 1 L L C C / L F > C C / L h . > < : C / L F > A * G 0 S U B 2 3 8 0 : P C = A4 1 I F T * = " P " T H E N 1 0 0 04 2 I F T * = " A " T H E N T * = " A C " : A = A C : G 0 S U B 5 4 0 : A C = A : 8 0 1 0 2 0 04 3 I F T * = " X " T H E N T $ = " X R " : A = X R : G 0 S U B 5 4 0 : X R = A : G 0 T 0 2 0 04 4 I F T * = " Y " T H E N T * = " Y R " : A = Y R : G 0 S U B 5 4 0 : Y R = A : G 0 T 0 2 0 04 5 I F T $ = " S " T H E N T * = " S P " : A = S P : G 0 S U B 5 4 0 : S P = A : G 0 T 0 2 0 04 6 I F T * = " N C T H E N N = 1 - N : G 0 T 0 2 0 04 7 0 I F T * = " ' M p H E N V : = 1 - V : e o T 0 2 0 04 8 I F T $ = " E r # H E N B = 1 - B : G 0 T 0 2 0 04 9 I F T * = " D " T H E N D = 1 - D : G 0 T 0 2 0 05 0 I F T * = " I " T H E N 1 = 1 - 1 : G 0 T 0 2 0 05 1 I F T * = " Z " T H E N Z = l - Z : G 0 T 0 2 0 05 2 I F T $ = " C " T H E N C = 1 - C : G 0 T 0 2 0 05 2 5 I F T * = = " C C / D N 3 " T H E N S = P : E = P : P C = P : G 0 T 0 1 0 1 05 2 I F T * * " M " T H E N 3 0 0 05 2 I F T * = " E " T H E N 3 1 0 05 3 G 0 T 0 4 0 05 4 P R I N T T * " G 0 S U B 2 3 2 0 : I N P U T " C G / L F 3 - C C / L F > C C / L F < C / L F > A

G 0 T 0 2 3 8 09 0 S R = N * 1 2 8 + V * 6 4 + 3 2 + B * 1 6 + D * 8 + 1 * 4 - < - Z * 2 + C : R E T U R N9 1 N = S G N ( S R A N D 1 2 8 ) : V = S G N ( S R A N D 6 4 > : : B = S G N ( S R A N D 1 6 ) : D ^ S B N ( S R A N D 8 )9 2 0 I = S G N ( S R A N D 4 ) Z = S G N ( S R A N D 2 ) C = S R A N L > 1 : R U R 9 8 N = S G N ( A C A N D 1 2 8 ) : Z = 1 - S G N ( A C ) : R E M F L A G S

1 2

Page 138: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

9 9 P O P C + l + L1 0 0 0 S » P C t E = P C1 0 1 0 P R I N T " C H 0 M E 3 - < C / D N 3 - { C / D N 3 C C / D N 3 - C C / D N 3 C C / D N 3 - C C / D N 3 < ! C / D N > C C / D N *

B 0 S U B 2 0 4 0 : B 0 0 2 0 01 1 0 0 A » O P ( P E E K ( P C > ) : L = 0 : I F A = 0 T H E N 9 9 01 1 1 0 0 N A G 0 T 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 , 1 2 9 0 , 1 3 0 0 ,

1 3 1 0 , 1 3 2 0 , 1 3 31 1 1 5 A = A - 1 41 1 2 0 0 N A G 0 T 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 01 1 2 5 A = A - 1 41 1 3 0 O N A G O T O 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 , 1 5 8 0 ,1 5 9 0 , 1 6 0 0 , 1 6 1 0

1 1 3 5 A = A - 1 41 1 4 0 O N A G O T O 1 6 2 0 , 1 6 3 0 , 1 6 4 0 , 1 6 5 0 , 1 6 6 0 , 1 6 7 0 , 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 01 1 5 0 G 0 T 0 2 0 01 2 0 0 I F D T H E N 1 2 0 5 : R E M A D 1 2 0 1 G O S U B 1 9 0 0 : V ~ 1 - S G N ( A C A N D 1 2 8 ) : A C = A C + O P + C : C = - ( A C > F F )1 2 0 2 A C - A C A N D F F : N = S G N ( A C A N D 1 2 8 ) : V = V A N D N : G 0 T 0 9 8 01 2 0 5 G O S U B 1 9 0 0 : A C = V A L < H < A C / 1 6 ) + H * ( A C A N D 1 5 ) ) : O P = V A L ( H * ( O P / 1 6 ) + H *

( 0 P A N D 1 5 ) )1 2 0 6 A C = A C + O P + C : C = - ( A C > 9 9 ) : I F A C > 9 9 T H E N A C = A C - 1 0 01 2 0 7 A $ = M I D * < S T R * < A C > , 2 ) : G 0 S U B 2 3 9 0 : A C = A : G 0 T 0 9 8 01 2 1 0 R E M A N D1 2 1 1 G O S U B 1 9 0 0 : A C = A C A N D O P : G 0 T 0 9 8 01 2 2 0 G O S U B 1 9 0 0 : A = 0 P * 2 : C = - ( A > F F ) : A = A A N D F F : G O S U B 1 8 5 01 2 2 1 I F A D ( P E E K ( P C ) ) = 4 T H E N A O = A C * 2 : C = - ( A C > F F ) : A C = A C A N D F F G 0 T 0 9 8 01 2 2 3 N = S G N < O P A N D F F ) : Z = 1 - S G N ( O P ) : G 0 T 0 9 9 01 2 3 0 R E M B C C1 2 4 0 R E M B C S1 2 4 1 F L = C : G O T O 1 8 0 01 2 5 0 R E B E 1 2 5 1 F L = Z : G O T O 1 8 0 01 2 6 0 R E B I 1 2 6 1 G O S U B 1 9 0 0 : N = S G N ( O P A N D 1 2 8 ) : V = S G N ( O P A N D 6 4 > 1 - S G N ( O P A N D A C )

: G 0 T 0 9 9 01 2 7 0 R E B M 1 2 7 1 F L = N : G O T O 1 8 0 01 2 8 0 R E B N 1 2 8 1 F L = 1 - Z : G O T O 1 8 0 01 2 9 0 R E M B P L1 3 0 0 R E M B R K1 3 0 1 P C = P C + 2 : I F P C > = U L T H E N P C = P C - 21 3 0 2 P H = I N T ( P C / H I ) P L = P C - P H * H I : S ( S P ) = P H : S P = S P - 1 A N D F F : S P ( S F ? T = P L

S . P = S P - 1 A N D F F1 3 0 3 B = 1 : I 1 : G 0 S U B 9 0 0 : S P S P ) = S R : S P = S P ~ 1 A N D F F : P C = P E E K ( 6 5 5 3 4 )

■ * H I » P E E K < 6 5 5 3 5 >1 3 0 4 G O T O 1 0 0 01 3 1 0 R E B V 1 3 1 1 F L = 1 - V : G O T O 1 8 0 01 3 2 0 R E B V 1 3 2 1 F L = V : G O T O 1 8 0 01 3 3 0 R E M C L C1 3 3 1 0 = 0 : G O T O 1 8 0 01 3 4 0 R E C L 1 3 4 1 D = 0 : G 0 T 0 9 9 01 3 5 0 R E C L 1 3 5 1 I = 0 : G 0 T 0 9 9 01 3 6 0 R E C L 1 3 6 1 V = 0 : G O T 0 9 9 01 3 7 0 R E M C M P

1 3

Page 139: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 3 7 1 G O S U B 1 9 0 0 : A = A C - O P1 3 7 2 N = S G N ( A A N D 1 2 8 ) : Z = - < A = O ) : C = - ( A > = 0 ) : G O T 0 9 9 01 3 8 0 R E C P 1 3 8 1 G O S U B 1 9 0 0 : A = X R - O P : G O T O 1 3 7 21 3 9 0 R E M C P Y1 3 9 1 G O S U B 1 9 0 0 : A = Y R - O P : G O T O 1 3 7 21 4 0 0 R E M D E C1 4 0 1 G O S U B 1 9 0 0 : A = O P - 1 A N D F F : G O S U B 1 8 5 01 4 0 2 G O T O 1 4 4 21 4 1 0 R E D E 1 4 1 1 X R = ( X R - 1 ) A N D F F : G O T O 1 4 5 21 4 2 0 R E M D E Y1 4 2 1 Y R = ( Y R - 1 ) A N D F F : G 0 T 0 1 4 6 21 4 3 0 R E M E O R1 4 3 1 G O S U B 1 9 0 0 : A = 0 : F O R J = 7 T 0 0 S T E P - l : E X = 2 t J : A = 2 * A - < ( Q P A N D E X ) O

( A C A N D E X ) > : N E X 11 4 3 2 A C = A : G 0 T 0 9 8 01 4 4 0 R E I N 1 4 4 1 G O S U B 1 9 0 0 : A = O P + 1 A N D F F : G O S U B 1 8 5 01 4 4 2 N = S G N ( A A N D 1 2 8 ) : Z = 1 - S G N ( A ) : G 0 T 0 9 9 01 4 5 0 R E I N 1 4 5 1 X R = ( X R + 1 ) A N D F F1 4 5 2 Z = 1 - S G N ( X R ) : N = S G N ( X R A N D 1 2 8 ) : G 0 T 0 9 9 01 4 6 0 R E I N 1 4 6 1 Y R = ( Y R + 1 > A N D F F1 4 6 2 Z = 1 ~ S G N ( Y R ) : N = S G N ( Y R A N D 1 2 8 ) : G 0 T 0 9 9 01 4 7 0 R E J M 1 4 7 1 G O S U B 1 9 0 0 : P C = A D : G O T O 1 0 0 01 4 8 0 R E M J S R1 4 8 1 A = P C + 2 : P H = I N T ( A / H I > : P L = A - P H * H I : S P < S P ) = P H : S P = S P - 1 A N D F F : S P ( S P ) = P L1 4 8 2 P C = P E E K ( P C + 1 ) + P E E K P C + 2 ) * H I : G O T O 1 0 0 01 4 9 0 R E M L D A1 4 9 1 G O S U B 1 9 0 0 : A C = O P : G 0 T 0 9 8 01 5 0 0 R E L D 1 5 0 1 G O S U B 1 9 0 0 : X R = O P : G O T O 1 4 5 21 5 1 0 R E M L D Y1 5 1 1 G O S U B 1 9 0 0 : Y R = O P : G O T O 1 4 6 21 5 2 0 R E M L S R1 5 2 1 F A ( P E E K ( P C ) M T H E N 1 5 2 41 5 2 2 A C = A C / 21 5 2 3 O < A C . < > N ( A C ) A O = A C A N D F F : G 0 T 0 9 8 01 5 2 4 G O S U B 1 9 0 0 : A = 0 P / 2 : C = - ( A O I N T ( A ) A = A A N D F F : G O S U B 1 8 5 01 5 2 5 G O T O 1 4 4 21 5 3 0 R E M N O P1 5 3 1 G 0 T 0 9 9 01 5 4 0 R E M O R A1 5 4 1 G O S U B 1 9 0 0 : A C = A C O R O P : G 0 T 0 9 8 01 5 5 0 R E M P H A1 5 5 1 S ( S P ) = A C : S P " = S P ~ A N D F F r . G 0 T 0 9 9 01 5 6 0 R E M P H P1 5 6 1 G 0 S U B 9 0 0 : S P ( S P ~ S R : S P = S P - 1 A N D F F : G O ! 0 9 9 01 5 7 0 R E P L 1 5 7 1 S P = ( S P + 1 ) A N D F F : A C = S P ( S P > : G 0 T 0 9 8 0 : R E M S E L A G S1 5 8 0 R E M P L P1 5 8 1 S P = ( S P + 1 ) A N D F F : S R = S P ( S P ) : G 0 S U B 9 1 0 : G 0 T 0 9 9 01 5 9 0 R E M R O L1 5 9 1 I F A D ( P E E K ( P C ) ) = 4 T H E N A C = A C * 2 + C : G O T O 1 5 2 21 5 9 2 G O S U B 1 9 0 0 : A = 0 P * 2 + C : C = - ( A > F F )

1 3

Page 140: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 5 9 3 A = A A N D F F : G O S U B 1 8 5 01 5 9 4 G O T O 1 4 4 21 6 0 0 R E M R O R1 6 0 1 I F A D ( P E E K ( P C > ) = 4 T H E N A C = A C / 2 + 1 2 8 * C : G 0 T 0 1 5 2 31 6 0 2 G O S U B 1 9 0 0 : A = 0 P / 2 + 1 2 8 * C : C = - ( A O I N T ( A G O T O 1 5 9 31 6 1 0 R E R T 1 6 1 1 S P = S P + 1 A N D F F : S R = S P ( S P ) : 6 0 S U B 9 1 0 : G O T O 1 6 2 11 6 2 0 R E R T 1 6 2 1 S P = S P + 1 A N D F F : A = S P S P ) : S P = S P + 1 A N D F F : P C = A + S P ( S P ) * H I : G 0 T 0 9 9 01 6 3 0 I F D T H E N 1 6 3 5 : R E M S B C1 6 3 1 G O S U B 1 9 0 0 : V = S G N ( A C A N D 1 2 8 ) : A C = A C - O P - 1 + C : C = - ( A C > = 0 )1 6 3 2 A C = A C A N D F F : N = S G N ( A C A N D 1 2 8 ) : V = V A N D 1 ~ N : G 0 T 0 9 8 01 6 3 5 G O S U B 1 9 0 0 s A C = V A L ( H * ( A C / 1 6 ) + H * ( A C A N D 1 5 ) > : O P = V A L ( H * ( O P / 1 6 ) + H *

( 0 P A N D 1 5 ) )1 6 3 6 A C = A C - 0 P + C - l s C = - ( A C > = 0 ) s I F A C < O T H E N A C = A C + l O O1 6 3 7 A $ = M I D $ ( S T R $ ( A C > , 2 ) : G 0 S U B 2 3 9 0 : A C = A : G 0 T 0 9 8 01 6 4 0 R E M S E C1 6 4 1 C = l : G 0 T 0 9 9 01 6 5 0 R E M S E D1 6 5 1 D = l : G 0 T 0 9 9 01 6 6 0 R E S E 1 6 6 1 I = l : G 0 T 0 9 9 01 6 7 0 R E S T 1 6 7 1 G O S U B 1 9 0 0 : A = A C : G O S U B 1 8 5 01 6 7 2 G O T 0 9 9 01 6 8 0 R E S T 1 6 8 1 G O S U B 1 9 0 0 : A = X R : G O S U B 1 8 5 01 6 8 2 G 0 T 0 9 9 01 6 9 0 R E S T 1 6 9 1 G O S U B 1 9 0 0 : A = Y R : G O S U B 1 8 5 01 6 9 2 G 0 T 0 9 9 01 7 0 0 R E T A 1 7 0 1 X R = A C : G O T O 1 4 5 21 7 1 0 R E M T A Y1 7 1 1 Y R = A C : G O T O 1 4 6 21 7 2 0 R E T S 1 7 2 1 X R = S P : G O T O 1 4 5 21 7 3 0 R E M T X A1 7 3 1 A C = X R : G 0 T 0 9 8 01 7 4 0 R E M T X S1 7 4 1 S P = X R : G 0 T 0 9 9 01 7 5 0 R E T Y 1 7 5 1 A C = Y R : G 0 T 0 9 8 01 8 0 0 R E M B R A N C H C O M M A N D S1 8 1 0 I F F L = 0 T H E N L = l : G 0 T 0 9 9 01 8 2 0 G O S U B 1 9 8 5 : G O T O 1 0 0 01 8 5 0 R E M P O K E1 8 7 0 I F A D < H I O R A D > H I + F F T H E N 1 8 8 01 8 7 5 S P ( A D - H I ) = A : R E T U R N1 8 8 0 I F E S T H E N P O K E A D , A1 8 8 5 R E T U R N1 9 0 0 R E G E O P E R A N D1 9 1 0 A = A D ( P E E K ( P C ) )1 9 2 0 O N A G O S U B 1 9 3 0 , 1 9 3 5 , 1 9 4 0 , 1 9 4 5 , 1 9 5 0 , 1 9 5 5 , 1 9 6 0 , 1 9 6 5 , 1 9 7 0 , 1 9 7 5 ,

1 9 8 0 , 1 9 8 5 , 1 9 9 01 9 2 5 I F A D < H I O R A D > H I + F F T H E N R E T U R N1 9 2 7 O P = S P ( A D - H I ) : R E T U R N1 9 3 0 A D = O : R E T U R N : R E M I M P L I E D1 9 3 5 A D = P C + 1 : O P = P E E K ( A D ) : L = 1 : R E T U R N : R E M1 9 4 0 A D = P E E K ( P C + 1 ) : O P = P E E K ( A D ) : L = 1 : R E T U R N : R E M Z E R O - P A G E

1 3

Page 141: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6 1 9 4 5 A D = O : R E T U R N : R E M1 9 5 0 A D = P E E K ( P C + 1 ) + H * P E E K P C + 2 O P = P E E K ( A > L = = 2 : R E T U R N1 9 5 5 A D = P E E K ( P C + 1 ) + X R A N D F F : O P ^ P E E K ( A D ) : L = 1 : R E T U R N1 9 6 0 A D = P E E K P C + 1 ) + Y R A N D F F : 0 P = P E E K ( A D ) L 1 R E T U R N1 9 6 5 A D = P E E K ( P C + 1 ) + H I * P E E K ( P C + 2 ) + X R : 0 P = P E E K ( A D ) : L = 2 : R E T U R N1 9 7 0 A D = P E E K ( P C + 1 + H I * P E E K ( P C + 2 + Y R : 0 P = P E E K ( A D ) : L = 2 : R E T U R N1 9 7 5 A D = P E E K ( P E E K ( P C + 1 ) ) . + H * P E E K ( P E E K ( P C + 1 ) + 1 A N D F F ) + Y R : O P - P E E K ( A D )

: = 1 R E T U R N1 9 8 0 A D = P E E K ( P C + 1 ) + X R A N D F F A D = P E E K ( A D ) + H I * P E E K ( A D + 1 ) s 0 P = P E E K ( A D )

: 1 R E T U R N1 9 8 5 A = P E E I < ( P C + 1 ) A = A + H ( 1 2 7 ) + 2 + P C1 9 8 6 P O I N T ( A / H I > * H I + < ( A ( A > S C ) * U L > A N D F F ) R E T U R N : R E M R E L A T I V E1 9 9 0 A D = P E E K ( P C + 1 > + H I * P E E K ( P C + 2 ) : A D = P E E K ( A D ) + H I * P E E K ( A D + 1 ) : 0 P = P E E K

( A D ) : R E n . J R M2 0 4 0 F 0 R P = S T 0 E : P R I N T " " 2 0 5 0 A = P : G 0 S U B 2 2 9 0 : R E M A D D R E S S2 0 6 0 P R I N T " " : A = P E E K < P ) : G 0 S U B 2 3 2 0 : P R I N T " : J = P E E K ( P ) : 0 P = A D ( J >2 0 7 0 0 N 0 P G 0 S U B 2 3 5 0 , 2 3 6 0 , 2 3 6 0 , 2 3 5 0 , 2 3 7 0 , 2 3 6 0 , 2 3 6 0 , 2 3 7 0 , 2 3 7 0 , 2 3 6 0 , 2 3 6 0 ,

2 3 6 0 , 2 3 7 02 0 8 0 P R I N T " " ; M N * ( J > " " 2 0 9 0 0 N 0 P G 0 S U B 2 1 1 0 , 2 1 2 0 , 2 1 3 0 , 2 1 4 0 , 2 1 5 0 , 2 1 6 0 , 2 1 7 0 , 2 1 8 0 , 2 1 9 0 , 2 2 0 0 , 2 2 1 0 ,

2 2 2 0 , 2 2 4 02 1 0 0 P R I N T " " : N E X T P2 1 0 5 I F P > = U L T H E N P = P ~ U L2 1 1 0 R E T U R N2 1 2 0 P R I N T " # " ; : G 0 S U B 2 3 3 0 : P = P + 1 : R E T U R N2 1 3 0 G 0 S U B 2 3 3 0 : P = P + 1 : R E T U R N2 1 4 0 P R I N T " A " 5 : R E T U R N2 1 5 0 G 0 S U B 2 2 6 0 : P = P + 2 : R E T U R N2 1 6 0 G 0 S U B 2 3 3 0 : P = P + 1 : P R I N T " , X "2 1 7 0 G 0 S U B 2 3 3 0 : P = P + 2 : P R I N T " , Y "2 1 8 0 G 0 S U B 2 2 6 0 : P « P + 2 s P R I N T " , X "2 1 9 0 G 0 S U B 2 2 6 0 : P = P + 2 : P R I N T " , Y "2 2 0 0 P R I N T " ( " ; s G 0 S U B 2 3 3 0 P = P + 12 2 1 0 P R I N T " ( " ; : G 0 S U B 2 3 3 0 : P = P + 1

: R E T U R N: R E T U R N: R E T U R N: R E T U R NP R I N T " ) , Y " ; : R E T U R NP R I N T " , X ) " ; : R E T U R N

2 2 2 0 A = P E E K ( P + 1 ) : A = A + H I * < A > 1 2 7 > + 2 + P2 2 3 0 A = l N T ( A / H I ) * H I + < ( A + ( A > S C ) * U L > A N D F F ) : P R I N T 1 1 * " ; : G 0 S U B 2 2 9 0

: P = P + 1 : R E T U R N2 2 4 0 P R I N T " ( " ; : G 0 S U B 2 2 6 02 2 5 0 P R I N T " ) " 5 : P = P + 2 : R E T U R N2 2 6 0 P R I N T " * " ;2 2 7 0 A = P E E K ( P + l ) + H I * P E E K ( P + 2 >2 2 8 0 R E M H E A D D R E S S2 2 9 0 H B = I N T ( A / H I ) : A = A ~ H I * H B2 3 0 0 P R I N T H $ < H B / 1 6 ) H $ ( H B A N D 1 5 > ;2 3 1 0 R E M H E B Y T E2 3 2 0 P R I N T H * < A / 1 6 ) H * ( A A N D 1 5 > ; : R E T U R N2 3 3 0 P R I N T " * " ;2 3 4 0 A = P E E K ( P + l ) : G 0 T 0 2 3 2 02 3 5 0 P R I N T " " ; : R E T U R N2 3 6 0 G 0 S U B 2 3 4 0 : P R I N T " " ; : R E T U R N2 3 7 0 G 0 S U B 2 3 4 0 : P R I N T " " ; : A = P E E K ( P + 2 ) : G 0 T 0 2 3 2 02 3 8 0 I F A S C ( A * ) = 4 2 T H E N E N D2 3 9 0 A = O : F O R J 1 T O L E N ( A $ > : X = A S C ( R I G H T * ( A * , J > > - 4 8 : X X + ( X > 9 ) * 7 s A = A + X *

( 1 6 t ( J - 1 s N t r . X 2 3 9 1 R E T U R N3 0 0 0 P R I N T : P R I N T " { C / D N 3 - C C / D N > P R I N T " A D D R E S S : * * * * - » K C / L F } < ! C / L F >

C C / L F X . C / I . . F 3 - I C / L F X i C / L F J 1 1 ; I N P U T A * : G 0 S U B 2 3 8 03 0 1 0 P R I N T " < : C / U P > " A D = A : 0 P = P E E K ( A D ) A = 0 P : G 0 S U B 2 3 2 0 : I N P U T " - C C / L F ^ -C C / L F . } < : C / I F > C C / . L F > " 5 A * s B 0 S U B 2 3 8 03 0 2 0 G 0 S U B 1 8 5 0 : P R I N T " < C / U P >T H E N 1 0 0 0

3 0 3 0 G 0 T 0 2 0 03 1 0 0 I N P U T " A C T U A L S I M U L A T I O N Y < C / L F } C C / L F > < : C / L F > " ; E S * s E S « E S * » " Y3 1 1 0 P R I N T " t C / U P > » s G 0 T 0 2 0 0

1 3

Page 142: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

D A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T AD A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T AD A T A "D A T A "D A T A 1D A T A "D A T AD A T A "D A T A 'D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "D A T A "

" , 0 , 1 , " A N D " , 2 , 8 , " R O L " , 4 0 , 8" , 0 , 1 , " R T I " , 4 2 , 1 , " E O R " , 2 4 , 1 1" , 0 , 1 , " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 1" , 2 4 , 3 , " L S R " , 3 3 , 3 , " ? ? ? " , 0 , 1

1 1 4 . , & , " b T X " , 4 9 , 3 , 7 7 7 '" , 4 , 1 2 , " S T A " , 4 8 , 1 0 , " ? ? ? " , 0 ," , 0 , 1 , " S T Y " , 5 0 , 6 , " S T A " , 4 8 , 61 4 " ? ? ? " , 0 , 1 , " T Y A " 5 6

L D L D T A

" , 0 , 1 , " S T Y " , 5 0 , 6 , " S T A " , 4 8 , 6( " , 4 9 , 7 , " ? ? ? " , 0 , 1 , " T Y A " , 5 6 ,V , 4 8 , 9 , " T X S " , 5 5 , 1 , " ? ? ? " , 0 , 1' " , 0 , 1 , " S T A " , 4 8 , 8 , " ? ? ? " , 0 , 1> " , 0 , 1 , " L D Y " , 3 2 , 2 , " L D A " , 3 0 , 1 tC " , 3 1 , 2 , " ? ? ? " , 0 , 1 , " L D Y " , 3 2 , 3

" , 3 0 , 3 , " L D X " , 3 1 , 3 , " ? ? ? " , O , 1" , 5 2 , 1 , " L D A " , 3 0 , 2 , " T A X " , 5 1 , 1

1 3

Page 143: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

1 0 5 8 0 D A T A " ? ? ? " , 0 , 1 , " L D Y " , 3 2 , 5 , " L D A " , 3 0 , 51 0 5 9 0 D A T A " L D X " , 3 1 , 5 , " ? ? ? " , 0 , 1 , " B C S " , 5 , 1 21 0 6 0 0 D A T A " L D A " , 3 0 , 1 0 , " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 11 0 6 1 0 D A T A " L D Y " , 3 2 , 6 , " L D A " , 3 0 , 6 , " L D X " , 3 1 , 71 0 6 2 0 D A T A " ? ? ? " , 0 , 1 , " C L V " , 1 7 , 1 , " L D A " , 3 0 , 91 0 6 3 0 D A T A " T S X " , 5 3 , 1 , " ? ? ? " , 0 , 1 , " L D Y " , 3 2 , 81 0 6 4 0 D A T A " L D A " , 3 0 , 8 , " L D X " , 3 1 , 9 , " ? ? ? " , 0 , l1 0 6 5 0 D A T A " C P Y " , 2 0 , 2 , " C M P " , 1 8 , 1 1 , " ? ? ? " , 0 , 11 0 6 6 0 D A T A " ? ? ? " , 0 , 1 , " C P Y " , 2 0 , 3 , " C M P " , 1 8 , 31 0 6 7 0 D A T A " D E C " , 2 1 , 3 , " ? ? ? " , 0 , 1 , " I N Y " , 2 7 , 11 0 6 8 0 D A T A " C M P " , 1 8 , 2 , " D E X " , 2 2 , 1 , " ? ? ? " , 0 , 11 0 6 9 0 D A T A " C P Y " , 2 0 , 5 , " C M P " , 1 8 , 5 , " D E C " , 2 1 , 51 0 7 0 0 D A T A " ? ? ? " , 0 , 1 , " B N E " , 9 , 1 2 , " C M P " , 1 8 , 1 01 0 7 1 0 D A T A " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 11 0 7 2 0 D A T A " C M P " , 1 8 , 6 , " D E C " , 2 1 , 6 , " ? ? ? " , 0 , 11 0 7 3 0 D A T A " C L D " , 1 5 , 1 , " C M P " , 1 8 , 9 , " ? ? ? " , 0 , 11 0 7 4 0 D A T A " ? ? ? " , 0 " ? ? ? " , 0 , 1 , " C M P " , 1 8 , 81 0 7 5 0 D A T A " D E C " , 2 1 , 8 , " ? ? ? " , 0 , 1 , " C P X " , 1 9 , 21 0 7 6 0 D A T A " S B C " , 4 4 , 1 , " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 11 0 7 7 0 D A T A " C P X " , 1 9 , 3 , " S B C " , 4 4 , 3 , " I N C " , 2 5 , 31 0 7 8 0 D A T A " ? ? ? " , 0 , 1 , " I N X " , 2 6 , 1 , " S B C " , 4 4 , 21 0 7 9 0 D A T A " N O P " , 3 4 , 1 , " ? ? ? " , 0 , 1 , " C P X " , 1 9 , 51 0 8 0 0 D A T A " S B C " , 4 4 , 5 , " I N C " , 2 5 , 5 , " ? ? ? " , 0 , 11 0 8 1 0 D A T A " B E Q " , 6 , 1 2 , " S B C " , 4 4 , 1 0 , " ? ? ? " , 0 , 11 0 8 2 0 D A T A " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 1 , " S B C " , 4 4 , 61 0 8 3 0 D A T A " I N C " , 2 5 , 6 , " ? ? ? " , 0 , 1 , " S E D " , 4 6 , 11 0 8 4 0 D A T A " S B C " , 4 4 , 9 , " ? ? ? " , 0 , 1 , " ? ? ? " , 0 , 11 0 8 5 0 D A T A " ? ? ? " , 0 , 1 , " S B C " , 4 4 , 8 , " I H C " , 2 5 , 81 0 8 6 0 D A T A " ? ? ? " , 0 , 1

1 3

Page 144: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

P r o g r a m d e s c r i p t i o n f o t h s i n g l e - s t e p s i m u l a t o r1 0 1 9 B u i l d t h r e g i s t e r d i s p l a y , i n i t i a l i z e v a r i a b l e s

a n f i e l d s .

2 0 3 6 D i s p l a y t h r e g i s t e r c o n t e n t s . T h c o n t e n t s o t h r e g i s t e r s 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 f l a g s a r d i s p l a y e d u s i n g t h C H R $ f u n c t i o n b a d d i n g t h v a l u e o t h f l a g ( o 1 t 4 8

4 0 5 3 T h k e y s a r t e s t e d . I t h s p a c e b a i p r e s s e d , e x e c u t i o n p a s s e s t t h s i m u l a t o rr o u t i n e a l i n e 1 1 0 0 . T h e r e g i s t e r c o m m a n d sr e s u l t i b r a n c h e s t i n p u t r o u t i n e s w h i c hd i s p l a y t h e o l d v a l u e a n w a i t f o t h i n p u t o t h n e v a l u e . F o r t h f l a g s , t h s t a t e i s i m p l y r e v e r s e d . I t h " c u r s o r d o w n " k e i p r e s s e d , t h d i s a s s e m b l e r r o u t i n e i c a l l e d a n t h n e x t i n s t r u c t i o n i d i s p l a y e d .

9 0 9 2 C a l c u l a t e t h v a l u e o t h s t a t u s r e g i s t e r S b a s e d o n t h e i n d i v i d u a l f l a g s .

9 8 S e a n f l a g s .9 9 I n c r e m e n t p r o g r a m c o u n t e r .

1 0 0 0 1 0 1 0 D i s a s s e m b l e t h n e x t i n s t r u c t i o n .1 1 0 0 1 1 5 0 P e r f o r m s i n g l e - s t e p s i m u l a t i o n . T h a p p r o p r i a t e

r o u t i n e i c a l l e d d e p e n d i n g o n t h e o p e r a t i o nc o d e .

1 2 0 0 1 7 5 1 S i m u l a t e r o u t i n e f o r a l l 6 5 1 0 c o m m a n d s . T h r o u t i n e s a r a l p h a b e t i c a l l y o r d e r e d b m n e m o n i c .T h p r q o g r a m c o u n t e r i i n c r e m e n t e d a c c o r d i n g t t h l e n g t h o t h i n s t r u c t i o n i l i n e 9 9 0 . T h a n f l a g s a r e s e t a c c o r d i n g t t h v a l u e i t h a c c u m u l a t o r b j u m p t l i n e 9 8 0 .

1 8 0 0 1 8 2 0 A l b r a n c h c o m m a n d s a r h a n d l e d h e r e , a f t e r t h c o r r e s p o n d i n g f l a g v a l u e i p l a c e d i t h v a r i a b l e F L

1 8 5 0 1 8 8 5 T h i s r o u t i n e i u s e d t w r i t e v a l u e s i m e m o r y .T h s t a c k a r e a f r o m $ 1 0 0 t $ 1 F F i h a n d l e dd i f f e r e n t l y . T h P O K E S a r e x e c u t e d o n l y i a c t u a l s i m u l a t i o n i d e s i r e d ( v a r i a b l e E S ) .

1 9 0 0 1 9 9 0 G e t h o p e r a n d s f o r t h e c o m m a n d s b a s e d o t h a d d r e s s i n g m o d e . 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 a d d r e s s o t h o p e r a n d i i A D t h v a l u ei t s e l f i O P

1 3

Page 145: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

2 0 4 0 2 3 7 0 D i s a s s e m b l e s t h e n n e x t i n s t r u c t i o n a f t e r e a c hs i n g l e s t e p . T h o p e r a n d i d i s p l a y e d a c c o r d i n gt t h a d d r e s s i n g m o d e i l i n e 2 0 7 0 . I t h m e m o r y l o c a t i o n d o e s n o c o n t a i n l e g a li n s t r u c t i o n c o d e , t h r e e q u e s t i o n m a r k s a r d i s p l a y e d i n s t e a d . T h f o l l o w i n g r o u t i n e s c a r r yo u t h a d d r e s s e d t a s k a w e l l a t h c o n v e r s i o nf r o m d e c i m a l t h e x .

3 0 0 0 3 0 3 0 D i s p l a y s a n c h a n g e s t h m e m o r y c o n t e n t s . T h ec h a n g e s a r a l l o w e d o n l y i t h a c t u a ls i m u l a t i o n i s e l e c t e d .

3 1 0 0 S e l e c t t h a c t u a l s i m u l a t i o n p a r a m e t e r s .1 0 0 0 0 - 1 0 8 6 0 C o n t a i n t h i n s t r u c t i o n m n e m o n i c s , o p e r a t i o n

c o d e s a n a d d r e s s i n g m o d e s .

1 3

Page 146: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

D e s c r i p t i o n s o t h i m p o r t a n t v a r i a b l e s .F

H

U

S

M N $ ( 2 5 5 )O P ( 2 5 5 )

A D ( 2 5 5 )

S P ( 2 5 5 )H $ ( 1 5 )P A

X Y S

S

T

E

O

c o n s t a n t 2 5

c o n s t a n t 2 5

c o n s t a n t 6 5 5 3 6c o n s t a n t 3 2 7 6 7

t a b l e o 6 5 1 0 m n e m o n i c st a b l e w i t h t h c o r r e s p o n d it h s i n g l e - s t e p s i m u l a t i o nt a b l e w i t h t h a d d r e s :i n s t r u c t i o n .t h s i m u l a t o r s t a c kf i e l d w i t h h e d i g i t sp r o g r a m c o u n t e ra c c u m u l a t o r

r e g i s t e rr e g i s t e r

s t a t u s r e g i s t e rs t a c k p o i n t e rn e g a t i v e f l a go v e r f l o w f l a gb r e a k f l a gd e c i m a l f l a gi n t e r r u p t f l a gz e r o f l a gc a r r y f l a gp r e s s e d k e

l e n g t h o o p e r a n d sf l a g f o a c t u a l s i m u l a t i o no p e r a n d

1 3

Page 147: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

7 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 o t h C o m m o d o r e 6

M a c h i n e l a n g u a g e i p a r t i c u l a r l y w e l l - s u i t e d f o p r o g r a m m i n gh i g h r e s o l u t i o n g r a p h i c s o t h C o m m o d o r e 6 4 I t h i ss e c t i o n . W e b e g i n b p r o g r a m m i n g g r a p h i c s i B A S I C a n t h e nc o n v e r t i n g t h c o r r e s p o n d i n g r o u t i n e s t m a c h i n e l a n g u a g e .B d o i n g t h i s , y o w i l l b e c o m e w e l l a c q u a i n t e d w i t h 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 i n g t e c h n i q u e s .

G r a p h i c s p r o g r a m m i n g c a b d o n e i B A S I C o n l y w i t hc o n f u s i n g s e t o f P E E K S a n d P O K E S s , B y w r i t i n g f e m a c h i n el a n g u a g e r o u t i n e s w c a g r e a t l y s i m p l i f y t h e s e g r a p h i c s .Y o w i l l l e a r n h o t c o m b i n e m a c h i n e l a n g u a g e p r o g r a m s w i t hB A S I C p r o g r a m s , t h e r e b y t a k i n g a d v a n t a g e o f t h e s t r o n gp o i n t s o b o t h l a n g u a g e s .

T h p r o g r a m m i n g d e t a i l s o t h v i d e o - c o n t r o l l e r k e r n a lr o u t i n e s a r d i s c u s s e d o n l y a m u c h a n e c e s s a r y t s o l v eo u p r o b l e m . I y o w a n t t g e c l o s e r l o o k a t h h a r d w a r e a n o p e r a t i n g s y s t e m o t h C o m m o d o r e 6 4 w r e c o m m e n d 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 a v a i l a b l ef r o m A B A C U S S o f t w a r e .

B e f o r e y o u t u r n t t h f i r s t e x a m p l e , t a k e l o o k a h o y o c a u s m a c h i n e l a n g u a g e p r o g r a m s f r o m B A S I C a n h o w h o w t

p a s s p a r a m e t e r s b e t w e e n t h t w p r o g r a m s .

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

1 3

Page 148: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

i t u s t h e S Y S c o m m a n d t s p e c i f y t h m e m o r y l o c a t i o nw h e r e e x e c u t i o n i t b e g i n . S Y a s s u m e s t h a t t h m a c h i n el a n g u a g e p r o g r a m i a l r e a d y i m e m o r y a n d t h e n p a s s i n gc o n t r o l t i t W h e n t h m a c h i n e l a n g u a g e p r o g r a m e x e c u t e s a

R T i n s t r u c t i o n ( r e t u r n f r o m s u b r o u t i n e ) , e x e c u t i o n r e t u r n st t h B A S I C s t a t e m e n t f o l l o w i n g t h e S Y S c o m m a n d .

S o m e m a c h i n e l a n g u a g e r o u t i n e s r e q u i r e n p a r a m e t e r s t o b ep a s s e d t i t r o u t i n e f o c l e a r i n g t h s c r e e n , f o e x a m p l e , d o e s n o r e q u i r e a n p a r a m e t e r s .

O t h e r r o u t i n e s r e q u i r e p a r a m e t e r s . r o u t i n e f o p l o t t i n gp o i n t r e q u i r e s a a n c o o r d i n a t e , f o e x a m p l e .

H o c a y o p a s s p a r a m e t e r s t m a c h i n e l a n g u a g e r o u t i n e s ?

T h e r e a r s e v e r a l d i f f e r e n t t e c h n i q u e s f o p a s s i n gp a r a m e t e r s :

a U s i n g t h p i g e o n - h o l e m e t h o d , y o c a p l a c et h p a r a m e t e r s i o n o m o r e m e m o r y l o c a t i o n sp r e v i o u s l y a g r e e d u p o n . F o o u e x a m p l e , o n m e m o r y l o c a t i o n c o n t a i n s t h h o r i z o n t a lc o o r d i n a t e a n a n o t h e r m e m o r y l o c a t i o n t h v e r t i c a l c o o r d i n a t e . Y o u c a n d t h i s f r o mB A S I C w i t h t w P O K E c o m m a n d s . T h m a c h i n el a n g u a g e p r o g r a m c a t h e n g e t t h v a l u e s o

1 4

Page 149: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

b U s i n g t h r e g i s t e r p a s s a r e a m e t h o d , y o c a p a s s v a l u e s b e t w e e n t h B A S I C p r o g r a m a n t h m a c h i n e l a n g u a g e p r o g r a m . W h e n S Y c o m m a n di e x e c u t e d b B A S I C , i i p o s s i b l e t t r a n s f e r s p e c i f i c v a l u e s t h r o u g h t h r e g i s t e r s . B e c a u s e w c a n n o t a c c e s s t h p r o c e s s o r r e g i s t e r s d i r e c t l y f r o m B A S I C , f o u rm e m o r y l o c a t i o n s a r r e s e r v e d f o t h i sp u r p o s e . W h e n t h S Y i n s t r u c t i o n i e x e c u t e d ,t h c o n t e n t s o t h f o l l o w i n g m e m o r y l o c a t i o n sa r c o p i e d i n t o t h r e g i s t e r s b e f o r e t h b r a n c h t t h r o u t i n e i m a d e .

7 8 = a c c u m u l a t o r7 8 1 = > r e g i s t e r7 8 = r e g i s t e r7 8 = s t a t u s r e g i s t e r

T s t a r t m a c h i n e l a n g u a g e r o u t i n e w i t hs p e c i f i c v a l u e i t h a c c u m u l a t o r , y o w o u l dP O K E l o c a . t i o n 7 8 w i t h t h d e s i r e d v a l u e .A d d r e s s e s 7 8 a n 7 8 p e r t a i n t t h a n r e g i s t e r s . C a u t i o n m u s t b e x e r c i s e d i

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

1 4

Page 150: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

c o m p l i c a t i o n s .A f t e r t h m a c h i n e l a n g u a g e r o u t i n e i f i n i s h e d , t h c o n t e n t s o t h e s e r e g i s t e r s a r s a v e d i t h e s e s a m e m e m o r y l o c a t i o n s . S t h m a c h i n e l a n g u a g e r o u t i n e c a p a s s i n f o r m a t i o nb a c k t t h B A S I C p r o g r a m u s i n g t h s a m et e c h n i q u e . T r e t r i e v e v a l u e , t h B A S I C

p r o g r a m m e r e l y P E E K S t h d e s i r e d r e g i s t e r p a s sa r e a . U s i n g t h i s m e t h o d , i t i s p o s s i b l e t t r a n s f e r t h r e e o p o s s i b l y f o u r 8 - b i t v a l u e sb e t w e e n t h B A S I C a n m a c h i n e l a n g u a g ep r o g r a m 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 . I m o r e p a r a m e t e r s m u s t b t r a n s f e r r e d , y o m u s t e s t a b l i s h m e m o r yl o c a t i o n s a d e s c r i b e d a b o v e .

c U s i n g t h B A S I C i n t e r p r e t e r f o r m u l a e v a l u a t i o nr o u t i n e , y o c a p a s s a a l m o s t u n l i m i t e dn u m b e r o p a r a m e t e r s t t h m a c h i n e l a n g u a g er o u t i n e . F o e x a m p l e , w h e n t h i n t e r p r e t e re n c o u n t e r s a i n s t r u c t i o n s u c h a P O K E 7 8 0 , 1 0 ,i u s e s b u i l t - i n P O r o u t i n e t e v a l u a t e t h p a r a m e t e r s f o l l o w i n g t h P O K E k e y w o r d . T h i sr o u t i n e e v a l u a t e s n o o n l y c o n s t a n t s , b u c o m p l i c a t e d e x p r e s s i o n s a w e l l , s u c h a P O K EA + 7 . 5 * Z % ( I N T ( S I N ( X ) * 1 0 0 0 ) ) , E X P ( X ) . Y o u c a nc a l l t h i s R O M r o u t i n e f r o m y o u r o w m a c h i n el a n g a u g e p r o g r a m . L a t e r y o u w i l l s e h o t

1 4

Page 151: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

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

T h d i s t i n g u i s h i n g c h a r a c t e r i s t i c o h i g h r e s o l u t i o ng r a p h i c s i t h a t y o c a a c c e s s e a c h i n d i v i d u a l p i x e l o t h s c r e e n . T h i s i u n l i k e t h n o r m a l t e x t m o d e , w h e r e y o c a a c c e s s o n l y c o m p l e t e c h a r a c t e r s ( 8 X 8 p i x e l s ) . F o n o r m a lt e x t t h e r e a r 2 4 c h a r a c t e r s a y o u r d i s p o s a l ; w i t hh i g h r e s o l u t i o n g r a p h i c s t h e r e a r e i g h t t i m e s a m a n y i e a c h d i r e c t i o n , 2 0 3 2 p o i n t s .

I n o r m a l t e x t m o d e , e a c h c h a r a c t e r r e q u i r e s o n b y t e i

v i d e o R A M . E a c h s c r e e n l o c a t i o n c a d i s p l a y a n o 2 5 d i f f e r e n t c h a r a c t e r s . N o r m a l t e x t m o d e r e q u i r e s 2 4

1 0 0 0 b y t e s o m e m o r y c a l l e d v i d e o R A M . V i d e o R A i

l o c a t e d b e g i n n i n g a a d d r e s s 1 0 2 4 t h r u 2 0 2 3 ( $ 4 0 0 t o $ 7 E 8 ) .T h i s s t a r t i n g a d d r e s s o t h v i d e o R A M c a b c h a n g e d i s t e p s o K b y t e ( $ 4 0 0 , $ 8 0 0 , $ C 0 0 0 , $ 1 0 0 0 , e t c . ) b p r o g r a m m i n g t h v i d e o c o n t r o l l e r .

I h i g h r e s o l u t i o n g r a p h i c s m o d e , e a c h p o i n t r e q u i r e s o n b i t . E a c h p i x e l c a b e i t h e r o o o f f . H i g h r e s o l u t i o ng r a p h i c s r e q u i r e s 2 0 3 2 b i 6 4 0 0 0 b i t s 8 0 0 0b y t e s o m e m o r y . M e m o r y u s e d i t h i s w a i o f t e n c a l l e d t h

1 4

Page 152: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

b i t - m a p p e d a r e a . T h s t a r t i n g a d d r e s s o t h b i t - m a p p e d a r e ai s p e c i f i e d b p r o g r a m m i n g t h v i d e o c o n t r o l l e r i t h C o m m o d o r e 6 4

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

t h a t B A S I C n o r m a l l y u s e s . B u s i n c e y o a r p r o g r a m m i n g i m a c h i n e l a n g u a g e y o h a v e o t h e r a l t e r n a t i v e s . T h C o m m o d o r e6 h a f u l l 6 4 o R A M , i a d d i t i o n t t h R O M S , i n p u t a n

o u t p u t d e v i c e s a n c h a r a c t e r R O M S . Y o c a u s t h R A t h a tl i e s " u n d e r n e a t h " ( i t h s a m e a d d r e s s r a n g e ) t h B A S I C a n k e r n a l R O M . T h i s a r e a i l o c a t e d b e g i n n i n g a a d d r e s s $ E 0 0 0t $ F F F F . N o r m a l l y y o c a n n o t u s t h i s a r e a f r o m B A S I Cb e c a u s e y o m u s t f i r s t t u r n o f f t h B A S I C i n t e r p r e t e r a n o p e r a t i n g s y s t e m w h e n a c c e s s i n g t h e s e l o c a t i o n s .

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

s a m e 1 6 r a n g e ( $ C 0 0 0 $ F F F F ) , y o u c a n u s e t h e f r o m $ C 0 0 0t $ C 3 F F f o c o l o r m e m o r y . S i n c e t h e r e i o n l y I o v i d e oR A a v a i l a b l e f o u s a c o l o r m e m o r y , e a c h b y t e o v i d e oR A d e t e r m i n e s t h c o l o r o f t h e 6 4 p i x e l s w i t h i n t h f i e l do a 8 x c e l l s .

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

1 4

Page 153: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h f i r s t r o u t i n e c h a n g e s t h C o m m o d o r e 6 f r o m t e x t m o d e t h i g h r e s o l u t i o n g r a p h i c s m o d e . B y u s i n g t h a r e a b e m e a t h t h R O M S f o t h b i t - m a p p e d g r a p h i c s a r e a , t h n o r m a l t e x ts c r e e n c o n t e n t s a r e n o t d e s t r o y e d . T h c o n t e n t s i p r e s e r v e dw h e n w s w i t c h f r o m o n m o d e t a n o t h e r . H e r e ' s t h p r o g r a mi p s e u d o - B A S I C . O c o u r s e t h i s B A S I C p r o g r a m d o e s n o t r u ns i n c e w c a n n o t u s h e x a d e c i m a l n u m b e r s a c o n s t a n t s .

1 0 5 3 4 2 8 R E V I D F O C O N T R O L L E R S T A R T A D D R E S S1 1 V V + 1 7 R E G R A P H I C S - M O D E S W I T C H A D D R E S S1 2 0 V 2 V + 2 4 R E V I D E O R A A D D R E S S1 3 C I $ D D 0 0 R E 1 6 R A N G E1 4 P O K E V I , 5 91 5 P O K E V 2 , 81 6 P O K E C I A , 01 7 E N

T c o n v e r t t h i s t m a c h i n e l a n g u a g e , f i r s t d e c i d e w h e r e t h m a c h i n e l a n g u a g e p r o g r a m i t b s t o r e d . S i n c e t h a r e af r o m $ C 0 0 0 t $ C 4 0 0 i u s e d a c o l o r m e m o r y , u s e t h e a r e ab e g i n n i n g a $ C 4 0 0 f o t h p r o g r a m . T h c o n v e r s i o n s o t h e s ec o m m a n d s t m a c h i n e l a n g u a g e i s t r a i g h t - f o r w a r d . R e m e m b e r

t R U t h s h o r t p r o g r a m U N T O K E N b e f o r e c r e a t i n g t h f o l l o w i n g a s s e m b l e r s o u r c e p r o g r a m .

1 0 V I D E O 5 3 2 4 8 V I D E O C O N T R O L L E R1 1 V 5 3 6 2 5 A D D R E S S F O G R A P H I C S M O D E1 2 V 5 3 2 7 2 A D D R E S S F O V I D E O R A A D D R E S S1 3 C I $ D D 0 0 1 6 S E L E C T I O N1 4 * $ C 4 0 0 S T A R T O O U R O U T I N E1 5 L D A # 5 91 6 S T V 1 7 L D # 1 8 S T V 1 9 L D # 2 0 S T A C I A2 1 R T 2 2 . E

1 4

Page 154: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

A s s e m b l i n g t h a b o v e p r o g r a m , g i v e s y o t h i s l i s t i n g :

D 0 0 0D 0 1 1D 0 1 8D D O OC 4 0 0C 4 0 2C 4 0 5C 4 0 7C 4 0 AC 4 0 CC 4 0 F

A 8 A 8 A 8 6

3 1 D 0 1 D 0 0 D

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

V I D E OV V C I O L D

S T L D S T L D S T R T . E

5 3 2 4 85 3 2 6 55 3 2 7 2$ D D 0 0$ C 4 0 0# 5 V # V # C I

N o l e t ' s w r i t e r o u t i n e w h i c h s w i t c h e s t h C o m m o d o r e 6

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

1 0 V I D E O 5 3 2 4 8 V I D E O C O N T P O L L E R1 1 V 5 3 6 2 5 A D D R E S S F O G R A P H I C S M O D E1 2 V 5 3 2 7 2 A D D R E S S F O V I D E O R A A D D R E S S1 3 C I $ D D 0 0 1 6 S E L E C T I O N1 4 * $ C 4 0 0 S T A R T O O U R O U T I N E1 5 O N L D A # 5 1 6 S T V 1 7 0 L D A # 1 8 S T V 1 9 L D # 2 0 S T C I 2 1 R T 2 2 T U R N O F F2 3 O F L D # 2 2 4 L D V 2 5 L D # 2 2 6 S T V 2 7 L D # 2 8 S T A C I A2 9 R T 3 0 . E

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

1 4

Page 155: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t a b l e . T h s y m b o l s O a n O F h a v e b e e n d e f i n e d , e v e n t h o u g ht h e y a r e n o t r e f e r r e d t i t h p r o g r a m ? W h a v e d o n e t h i sb e c a u s e t h e s e a d d r e s s e s a r u s e d l a t e r f o r t h e c a l l s v i a t h S Y i n s t r u c t i o n .

D 0 0 0D 0 1 1D 0 1 8D D O OC 4 0 0C 4 0 2C 4 0 5C 4 0 7C 4 0 AC 4 0 CC 4 0 FC 4 1 0C 4 1 0C 4 1 2C 4 1 5C 4 1 7C 4 1 AC 4 1 CC 4 1 F

C 4 0 0S O U R C E

A 8 A 8 A 8 6

A 8 A 8 A 8 6

3 1 0 1 0 0

I 1 1 1 0 0

C 4 2 0F I L E

E R R O R S

O F V I D E O

C 4 1 0D 0 0 0

D

D

D

D

D D

I

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

0 0 2 0

V I D E OV V C I O

O F

E X A M P L E . S R C

C I V

D D O OD 0 1 1

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

L D S T L D S T L D S T R T . E

O V

5 3 2 4 85 3 2 6 55 3 2 7 2$ D D 0 0$ C 4 0 0# 5 V # V # C I

T U R N O F F# 2 V # 2 V # C I

C 4 0 0D 0 1 8

B e f o r e y o t e s t t h e s e r o u t i n e s , c o n v e r t t h s t a r t i n ga d d r e s s e s O N a n d O F i n t o d e c i m a l : $ C 4 0 0 i e q u a l t 5 0 1 7 6 ,$ C 4 1 0 i e q u a l t 5 0 1 9 2 . Y o u c a t e s t t h r o u t i n e s b u s i n g

s h o r t B A S I C p r o g r a m :

1 0 S Y 5 0 1 7 6 R E G R A P H I C S O 1 1 G E A I A $ = I I H T H E N 1 1 1 2 S Y 5 0 1 9 2 R E G R A P H I C S O F

1 4

Page 156: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

W h e n y o u R U N t h p r o g r a m , m i x t u r e o c o l o r e d s q u a r e sa p p e a r s o n t h e s c r e e n . W h a t y o s e a r t h r a n d o m v a l u e st h a t t h u n u s e d R A a r e a c o n t a i n s a f t e r t h c o m p u t e r i

t u r n e d o n I y o p r e s s k e y , y o r e t u r n t t h n o r m a lt e x t s c r e e n m o d e .

T h e n e x t t a s k i t c l e a r t h h i g h - r e s o l u t i o n g r a p h i c s c r e e na n c o l o r m e m o r y . I B A S I C y o u c a n p e r f o r m t h i s b u s i n gl o o p t P O K E t h b i t - m a p p e d g r a p h i c s a r e a .

T e r a s e a l t h p o i n t s i t h b i t - m a p p e d g r a p h i c s a r e a ,e a c h b i m u s t b s e z e r o . T h e r e f o r e e a c h b y t e o t h b i m a p p e d a r e a i a l s o s e t o z e r o . T h e l o o p m u s t c l e a r t h a r e a b e g i n n i n g a a d d r e s s $ E 0 0 0 t h r o u g h $ F F F F ( a c t u a l l y t $ F F 3 F b e c a u s e o n l y 8 0 0 0 a n n o 8 1 9 2 b y t e s a r u s e d ) .

F O 5 3 7 4 4 T 6 5 5 3 5 P O K E 1 , N E X T

Y o u c a n d o t h i s w i t h B A S I C p r o g r a m , b u i t a k e s a b o u t 3 s e c o n d s t e x e c u t e . I m a c h i n e l a n g u a g e t h w h o l e t h i n gt a k e s p l a c e m u c h f a s t e r .

E a r l i e r w 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 d i s p l a y t h C o m m o d o r e 6 4 ' s c h a r a c t e r s e o t h e s c r e e n . W e u s e d a i n d e x

1 4

Page 157: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o i n i n o d o r e 6

r e g i s t e r t c o n t r o l t h p r o g r a m l o o p . T h i s n e x t l o o jr e q u i r e s r a n g e b e y o n d t h e 2 5 6 m a x i m u m r a n g e o t h a n i n d e x r e g i s t e r s . S i n c e y o u m u s t c l e a r 8 0 0 0 b y t e s ( l e n g t h o t h b i t - m a p p e d a r e a ) y o c a d t h i s w i t h t w o n e s t e d l o o p s .

I B A S I C i m i g h t l o o k l i k e t h i s :

1 0 A 5 7 3 4 41 1 F O T 3 1 2 F O T 2 5 1 3 P O K E A D + Y ,1 4 N E X T1 5 A A D + 2 5 61 6 N E X T

H e r e w d i v i d e d t h r a n g e o 8 1 9 2 b y t e s i n t o 3 p a r t s ( o " p a g e s " ) o f 2 5 6 b y t e s e a c h . D u r i n g e a c h p a s s t h r o u g h t h l o o p 2 5 b y t e s a r c l e a r e d . T h e n t h b a s e a d d r e s s ( A D ) i i n c r e m e n t e d b 2 5 6 a n d t h e n e x t 2 5 b y t e s a r c l e a r e d . T h eo c c u r s t o t a l o f 3 2 t i m e s , a c o n t r o l l e d b t h v a r i a b l e X

A a " f r e e b i e " w a l s o c l e a r e d a e x t r a 1 9 b y t e s i t h e ,

l a s t p a g e ( b y t e s 8 0 0 1 t h r o u g h 8 1 9 2 ) . S i n c e t h e s e 1 9 b y t e sa r u n u s e d , t h i s w o n ' t c a u s e u a n p r o b l e m s . N o w c o n v e r t

t h B A S I C p r o g r a m t m a c h i n e l a n g u a g e :

1 0 A $ E 0 0 01 1 L D # E R A S E A C 1 2 L D # 1 3 L D # 1 4 S T A D , Y1 5 0 I N Y1 6 B N S Y M B 11 7 A A $ 1 0 01 8 I N 1 9 I S 3 1 2 0 N O T H E N B A C K T L I N E 1 3 2 1 . E

1 4

Page 158: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

S o m e m i s s i n g p i e c e s f r o m t h a b o v e p r o g r a m . C a y o c o r r e c t l y p l a c e t h l a b e l S Y M B 1 ? I s h o u l d b p l a c e d a l i n e1 4 0 . V a r i a b l e A i n o y e i n c r e m e n t e d . U s t h i n d i r e c ti n d e x e d a d d r e s s i n g m o d e f o t h i s . U s i n g t h i s t e c h n i q u e , t h a c t u a l a d d r e s s i o b t a i n e d f r o m t h s u o t h t w o - b y t ep o i n t e r i p a g e z e r o a n t h Y - r e g i s t e r . L a t e r y o c a i n c r e m e n t t h i s p o i n t e r b $ 1 0 0 , a c a l l e d f o i l i n e 1 7 0 .

T h i n d e x e d a d d r e s s i n g m o d e u s e d i l i n e 1 4 a b o v e c a a c c e s s r a n g e o o n l y 2 5 b y t e s , b u t t h i n d i r e c t i n d e x e da d d r e s s i n g t e c h n i q u e o v e r c o m e s t h i s l i m i t a t i o n . T h e t e s t o t h X - r e g i s t e r f o 3 i l i n e 1 9 0 a n d t h e b r a n c h b a c k i

l i n e 2 0 a r s t r a i g h t - f o r w a r d . H e r e ' s t h e c h a n g e s t t h a b o v e p r o g r a m :

1 0 A $ E 0 0 01 1 L D # E R A S E A C 1 2 L D # 1 3 S Y M B 2 L D Y # 1 4 S Y M B 1 S T A ( A D ) , Y1 5 I N 1 6 B N S Y M B 11 7 A A $ 1 0 01 8 I N 1 9 C P X # 3 22 0 B N S Y M B 22 1 . E

U s i n g i n d i r e c t i n d e x e d a d d r e s s i n g , a d d r e s s A D m u s t b t w o -b y t e p o i n t e r l o c a t e d i p a g e z e r o , n o t a a b s o l u t e a d d r e s sa b e f o r e . Y o c a n u s e t h m e m o r y l o c a t i o n s $ F a n $ F f o

t h i s p o i n t e r . T h i s p o i n t e r i l o a d e d w i t h t h v a l u e $ E 0 0 0 a t h b e g i n n i n g o f t h e r o u t i n e t h l o w - b y t e ( $ 0 0 ) i $ F a n t h h i g h - b y t e ( $ E 0 ) i n $ F B . N o a d a R T i n s t r u c t i o n t

1 5

Page 159: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t h e n o t h r o u t i n e , a n t h f i n a l p r o g r a m l o o k s l i k et h i s :

9 * $ C 4 2 01 0 L D A # < $ E 0 0 01 0 S T A $ F A1 0 L D A # > $ E 0 0 01 0 S T $ F 1 1 L D # E R A S E A C C1 2 L D # 3 1 3 S Y M B 2 L D # 1 4 S Y M B 1 S T ( A D ) , Y1 5 0 I N Y1 6 B N S Y M B 11 7 I N C $ F B1 8 0 I N X1 9 C P # 3 2 0 B N S Y M B 22 0 R T 2 1 0 . E N

T h i s r o u t i n e i a s s e m b l e d b e g i n n i n g a $ C 4 2 0 . S a v e t h s o u r c e p r o g r a m t d i s k a n t h e n a s s e m b l e i t

0 0 F A0 0 F BC 4 2 0C 4 2 0C 4 2 2C 4 2 5C 4 2 7C 2 C 4 2 CC 4 2 EC 4 3 0C 4 3 2C 4 3 3C 4 3 5C 4 3 8C 4 3 9C 4 3 BC 4 3 D

A 8 A 8 A A A 9 C D E E E D 6

0 F 0 E F B 0 00 0 0 F

F F 0

2 F

9 A 9 A D 9

1 0 1 0 1 0 1 0 1 1 1 2 1 3 S Y M B 21 4 S Y M B 11 5 1 6 1 7 1 8 1 9 2 0 2 0 2 1

* L D S T L D S T L D L D L D S T I N B N I N I N C P B N R T . E

$ F $ F $ C 4 2 0# < $ E 0 0 0A # > $ E 0 0 0A D # # 3 # ( A D ) , YS Y M B 1A D

# 3 S Y M B 2

1 5

Page 160: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C 4 2 0 C 4 3 E 0 0 1 ES O U R C E F I L E I E X A M P L E 2 . S R C

E R R O R S

A O O F A A D O O F B S Y M B 1 C 4 3 0 S Y M B 2 C 4 2 E

N o t h a t t h a b o v e p r o g r a m w o r k s , c a y o w r i t e p r o g r a mt h a t p r e s e n t s m o r e e l e g a n t s o l u t i o n ? F i r s t , y o u c a n u s ez e r o - p a g e a d d r e s s i n g f o t h t w a d d r e s s e s A D a n A D I . T h i s

i d o n e b u s i n g a a s t e r i s k b e f o r e e a c h o t h l a b e l s . Y o c a a l s o r e m o v e t h i n s t r u c t i o n f o l o a d i n g t h a c c u m u l a t o rw i t h z e r o i l i n e 1 1 0 a s t h i s a l r e a d y o c c u r s i l i n e 1 0 0 ;b u y o m u s t f i r s t r e v e r s e t h o r d e r o t h a s s i g n m e n t s i l i n e s 1 0 t o 1 0 2 a n d 1 0 4 t o 1 0 6 . I y o l e t h l o o p v a r yf r o m 3 t 0 y o c a e l i m i n a t e t h c o m p a r i s o n i l i n e 1 9 0 .

T h e s e i m p r o v e m e n t s e n a b l e t h p r o g r a m b i s h o r t e r . H e r e ' st h n e l i s t i n g :

O O F AO O F BC 4 2 0C 4 2 0C 4 . 2 2C 4 2 4C 4 2 6C 4 2 8C 4 2 AC 2 C 4 2 DC 4 2 EC 4 3 0C 4 3 2C 4 3 3C 4 3 5

A 8 A 8 A A 9 C D E C D 6

E F 0 F 2

F

F F

F

9 A 9 A D 9

1 0 1 0 1 0 1 0 1 1 1 2 S Y M B 21 3 S Y M B 11 4 1 5 1 6 1 7 1 8 1 9 2 0

L D S T L D S T L D T A S T I N B N I N D E B N R T . E

$ F $ F $ C 4 2 0# > $ E 0 0 0* A D 1# < $ E 0 0 0* A # 3 ( A D ) , YS Y M B 1* A D 1S Y M B 2

C 4 2 0 C 4 3 6 0 0 1 6S O U R C E F I L E I E X A M P L E 2 . S R C

E R R O R S

1 5

Page 161: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A O O F A A D O O F B S Y M B l C 4 2 B S Y M B 2

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

1 0 S Y S 5 0 1 7 6 R E G R A P H I C S O 1 1 G E A I A I I T H E N 1 1 1 2 S Y 5 0 2 0 8 R E E R A S E G R A P H I C I M A G E1 3 G E A I A I M T H E N 1 3 1 4 S Y 5 0 1 9 2 R E G R A P H I C S O F

A f t e r R U N n i n g i t t h b i t - m a p p e d g r a p h i c s m o d e o t h C o m m o d o r e 6 i t u r n e d o n W h e n k e i p r e s s e d , t h g r a p h i c s s c r e e n i c l e a r e d . T h i s h a p p e n s a l m o s t i m m e d i a t e l y .W i t h t h e a r l i e r B A S I C v e r s i o n , t h i s t o o k 3 s e c o n d s ! B p r e s s i n g k e y a g a i n , y o u t u r n o f t h b i t - m a p p e d g r a p h i c sm o d e a n r e t u r n t n o r m a l t e x t m o d e . N o y o c a w r i t e t h c o r r e s p o n d i n g r o u t i n e t i n i t i a l i z e t h c o l o r m e m o r y .

T h i s r o u t i n e a c c e p t s t w o p a r a m e t e r s o n r e p r e s e n t i n g t h b a c k g r o u n d c o l o r a n t h o t h e r t h c o l o r o t h e s e t p o i n t s .T h l o w e r f o u r b i t s ( n y b b l e ) o e a c h c o l o r m e m o r y b y t ed e t e r m i n e s t h b a c k g r o u n d c o l o r a n d t h e u p p e r n y b b l e , t h c o l o r o t h s e p o i n t s . E a c h c o l o r m e m o r y b y t e c o n t r o l sg r o u p o 8 x p i x e l s , a m e n t i o n e d e a r l i e r . F o e x a m p l e , i t h v a l u e o t h b y t e i $ 1 0 , t h e n t h l o w e r n y b b l e i a n t h u p p e r n y b b l e i 1 T h i s m e a n s t h a t t h b a c k g r o u n d i b l a c k a n t h f o r e g r o u n d i w h i t e f o r t h a t p a r t i c u l a r 8 X

1 5

Page 162: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

c e l l . Y o u c a p a s s t h c o l o r s t t h r o u t i n e i t h a c c u m u l a t o r . T r t s o l v e t h p r o b l e m y o u r s e l f a n t h e nc o m p a r e y o u r s o l u t i o n t h o n e b e l o w . U s e $ C 4 4 0 a t h s t a r t i n g a d d r e s s o t h r o u t i n e . H e r e ' s o u l i s t i n g :

O O F AO O F BC 4 4 0C 4 4 0C 4 4 2C 4 4 4C 4 4 6C 4 4 8C 4 4 AC 4 4 CC 4 4 DC 4 4 FC 4 5 1C 4 5 2C 4 5 4

A 8 A 8 A 9 C D E C D 6

C F 0 F 0 F

F F

F

9 A 9 A D 9

1 0 1 0 1 0 1 0 1 1 1 3 S Y M B 11 4 1 5 1 6 1 7 1 8 1 9 2 0

L D S T L D S T L D S T I N B N I N D E B N R T . E

$ F $ F $ C 4 2 0# > $ C 0 0 0* A D 1# < $ C 0 0 0* A # ( A D ) , YS Y M B 1* A D 1S Y M B 1

C 4 4 0 C 4 5 5 0 0 1 5S O U R C E F I L E I E X A M P L E 3 . S R C

E R R O R S

A O O F A A D O O F B S Y M B 1 C 4 4 A

T h e r e i s m a l l c h a n g e t t h p r e v i o u s p r o g r a m . T h i n s t r u c t i o n a t 1 8 0 b r a n c h e s t S Y M B 1 s i n c e t h Y - r e g i s t e rc o n t a i n s z e r o ; r e l o a d i n g w i t h z e r o a S Y M B 2 i s u p e r f l u o u s .T r y o u r v e r s i o n n o w . T h s t a r t i n g a d d r e s s i $ C 4 4 0 o 5 0 2 4 0 . P a s s t h c o l o r v a l u e t t h a c c u m u l a t o r w i t h P O K E7 8 0 , 1 6

N o t h a t w e h a v e t a k e n c a r e o t h " h o u s e k e e p i n g r o u t i n e s " ,y o c a s t a r t p r o g r a m m i n g t h m o s t i m p o r t a n t r o u t i n e f o

1 5

Page 163: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

u s i n g h i g h r e s o l u t i o n g r a p h i c s : s e t t i n g a n e r a s i n gi n d i v i d u a l p o i n t s . T h e n e x t r o u t i n e d e m o n s t r a t e s s e v e r a l

p r o g r a m m i n g t e c h n i q u e s .

F i r s t w o r d a b o u t t h l a y o u t o t h b i t - m a p p e d g r a p h i c sa r e a .

L o o k a t h t a b l e o n t h e f o l l o w i n g p a g e . I i l l u s t r a t e s t h r e l a t i o n s h i p o f t h e b i t - m a p p e d g r a p h i c s a r e a t t h n o r m a l4 c o l u m n b y 2 5 l i n e s t e x t s c r e e n . T h n u m b e r s i t h t a b l er e p r e s e n t t h o f f s e t f r o m t h s t a r t o t h b i t - m a p p e dg r a p h i c s m e m o r y t h a t s p e c i f y i f p a r t i c u l a r p i x e l i t u r n e do n o r o f f . L e t ' s c a l l t h a d d r e s s o f t h e s t a r t o t h b i

m a p p e d g r a p h i c s m e m o r y t h i s o f f s e t , t h t a r g e t a d d r e s s .F o e x a m p l e , o f f s e t o f t h e b i t - m a p p e d g r a p h i c s a r e ac o n t r o l s t h p i x e l a = 8 Y = l . T h t a r g e t a d d r e s s f o t h i sp o i n t i $ E 0 0 9 ( $ E 0 0 0 9 ) w h e r e $ E 0 0 0 i t h s t a r t o t b b i t - m a p p e d g r a p h i c s a r e a .

1 5

Page 164: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

X — c o o r d i n a t e0 - 8 - 1 5 . . . . 3 1 2 - 3 1 9

C O L U M N /L I N E

L i n e

L i n e

. .

L i n e 2

C o

3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2

7 6 8 07 6 8 17 6 8 27 6 8 37 6 8 47 6 8 57 6 8 67 6 8 7

C o

1 1 1 1 1 1

3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3

7 6 8 87 6 8 97 6 9 07 6 9 17 6 9 27 6 9 37 6 9 47 6 9 5

. . . . C o 3 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 6 3 6 3 6 3

. . . . 6 3 6 3 6 3 6 3 6 3

7 9 9 27 9 9 37 9 9 4

. . . . 7 9 9 57 9 9 67 9 9 77 9 9 87 9 9 9

Y — c o o r d i n a t e

1 1 1 1 1 1

• • • •

1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9

T h s c r e e n i d i v i d e d i n t o 2 l i n e s o f 4 c o l u m n s e a c h ; e a c h" c e l l " r e q u i r e s b y t e s t r e p r e s e n t t h 6 p i x e l s w i t h i nt h a t c e l l ( p i x e l s p e r / l i n e l i n e s / c e l l ) . T h c o n t e n t so s i n g l e b y t e c o n t r o l s o n r o o p i x e l s . E a c h b i c o n t r o l s a i n d i v i d u a l p i x e l o n t h e s c r e e n . T h h i g h e s t -o r d e r b i r e p r e s e n t s t h p i x e l o t h e f a r l e f t ; t h l o w e s t -o r d e r b i r e p r e s e n t s t h p i x e l o n t h e f a r r i g h t .

b i n u m b e rc o n t e n t s

7 6 5 4 3 2 1 01 0 0 0 1 1 0 0

1 5

Page 165: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

I b y t e i t h b i t - m a p p e d a r e a c o n t a i n s t h b i p a t t e r n o % 1 0 0 0 1 1 0 0 ( o $ 8 i h e x ) , t h i s m e a n s t h a t t h f i r s t ,f i f t h , a n d s i x t h p i x e l s f r o m t h l e f t a r s e t . L e t ' s c a l lt h c o n t e n t s o t h b y t e a t h t a r g e t a d d r e s s t h t a r g e tv a l u e .

T p e r m i t e a s y m a n i p u l a t i o n o t h g r a p h i c s , e a c h p i x e l i a d d r e s s e d b i t h o r i z o n t a l ( X a n v e r t i c a l ( Y c o o r d i n a t e s . T h c o o r d i n a t e s r a n g e f r o m t o 3 1 9 f o t h X a x i s ( l e f t s i d e o s c r e e n t r i g h t ) a n d f r o m t 1 9 9 f o rt h Y - a x i s ( t o p o f s c r e e n t b o t t o m ) .

F i r s t c o n v e r t t h c o o r d i n a t e s t a c t u a l o f f s e t s w i t h i n t h

b i t - m a p p e d g r a p h i c s a r e a . N o t e t h a t e a c h c e l l i 8 - b y t e s i l e n g t h . A l s o n o t e t h a t X - c o o r d i n a t e s o t h r u a l w a y s f a l lw i t h i n t h s a m e 8 - b y t e b l o c k . T h e s a m e h o l d s t r u e f o X c o o r d i n a t e s o t h r u 1 5 1 t h r u 2 3 e t c . T c o n v e r t t h X c o o r d i n a t e v a l u e t t h s t a r t o t h a p p r o p r i a t e 8 - b y t eb l o c k , i g n o r e t h l o w e r t h r e e b i t s o t h X - c o o r d i n a t ev a l u e . D t h i s b u s i n g a A N i n s t r u c t i o n . T i g n o r e t h l o w e r t h r e e b i t s , d t h f o l l o w i n g :

A N % 1 1 1 1 1 0 0 0

H e r e ' s a e x a m p l e :

X - c o o r d i n a t e = = = = = = = = = = > 1 8 B i n a r y r e p r e s e n t a t i o n = = > % 0 0 0 1 0 0 1 0 a e c i m a iM a s k f o A N D i n g = = = = = = = = > % 1 1 1 1 1 0 0 0

R e s u l t = = = = = = = = = = = = = = = = = > % 0 0 0 1 0 0 0 0 1 6 d e c i m a l

1 5

Page 166: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h b y t e w h i c h c o n t r o l s t h p i x e l w i t h , a X - c o o r d i n a t e o 1

i i t h b l o c k b e g i n n i n g a o f f s e t 1 6

T h o f f s e t f o t h X - c o o r d i n a t e i c a l c u a t e d a f o l l o w s :

O F F S E T X ( X 2 5 6 ) ( X A N 2 4 8 )

T h r e a s o n f o X a n X i t h a t a X - c o o r d i n a t e m a y r a n g ef r o m t o 3 1 9 w h i c h i b e y o n d t h 2 5 r a n g e o s i n g l eb y t e . T h e r e f o r e t h X - c o o r d i n a t e m u s t b s p e c i f i e d u s i n g t w b y t e s .

N o f o r t h e Y - c o o r d i n a t e . T h o f f s e t f o r t h e Y - c o o r d i n a t e i

c a l c u l a t e d a f o l l o w s :

O F F S E T Y = ( A N 7 + 4 ( A N 2 4 8 )

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

O F F S E T X H * 2 5 6 ( X A N 2 4 8 ) ( A N 7 4 0 * ( Y A N 2 4 8 )

N o t r a n s l a t e t h f o r m u l a i n t o m a c h i n e l a n g u a g e . U s t h r e g i s t e r s t p a s s i n f o r m a t i o n t t h r o u t i n e a f o l l o w s :

R E G I S T E R C O N T E N T S= Y - c o o r d i n a t e= X L - c o o r d i n a t e= X H - c o o r d i n a t e

A g a i n , a X - c o o r d i n a t e c a r a n g e f r o m t o 3 1 9 , s t h i s

1 5

Page 167: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

r e q u i r e s t w o b y t e s o s t o r a g e . T h Y - c o o r d i n a t e i k e p t i

t h Y - r e g i s t e r . Y o a l s o n e e d s e c o n d 1 6 - b i t s t o r a g el o c a t i o n f o s t o r i n g t h o f f s e t ( S U M L / S U M H ) .

1 0 X $ F 1 1 X $ F 1 2 S U M L $ F 1 3 S U M H $ F 1 4 0 * = $ C 4 6 01 5 S T * X 1 6 S T * X S A V E X - C O O R D I N A T E1 7 T Y Y - C O O R D I N A T E1 8 A N # $ F 8

F i r s t c a l c u l a t e t h e l a s t t e r m o f t h e f o r m u l a ( E X P 1 4 ( A N 2 4 8 ) . T h e 6 5 1 0 h a n m u l t i p l i c a t i o n i n s t r u c t i o n .T h e r e f o r e a a l t e r n a t i v e w a y o p e r f o r m i n g m u l t i p l i c a t i o n i

n e e d e d . R e c a l l t h a t v a l u e c a b d o u b l e d b s h i f t i n g t h c o n t e n t s t t h l e f t . R e d u c e t h m u l t i p l i c a t i o n b 4 t s e v e r a l d o u b l i n g s :

A 4 = > A * 2 * 2 A * 2 * 2 * 2

H e r e , y o f i r s t g e t t w i c e t h o r i g i n a l v a l u e ( 2 ) t h e nf o u r t i m e s ( 2 ) a n t h e n f i v e t i m e s b a d d i n g t h o r i g i n a l v a l u e ( * + A ) . T h r e e m o r e d o u b l i n g s b (

8 y i e l d t h o r i g i n a l v a l u e t i m e s 0

1 9 S T * $ F E S A V E O R I G I N A L V A L U E2 0 S T * S U M L2 1 L D # 2 2 S T * S U M H C L E A R H I - B Y T E2 3 A S * S U M L D O U B L I N G T H O R I G I N A L V A L U E2 4 R O * S U M H . . I N S U M L / S U M H2 5 A S * S U M L D O U B L I N G V A L U E A G A I N P R O D U C E S2 6 R O * S U M H . . O R I G I N A L V A L U E * I S U M L / S U M H

1 5

Page 168: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

W h e n s h i f t i n g 1 b i t s , y o m u s t u s c o m b i n a t i o n o t h A S i n s t r u c t i o n f o r t h e l o w - b y t e ( 8 - b i t s ) a n d t h R O i n s t r u ct i o n f o r t h e h i g h - b y t e ( 8 - b i t s ) . I t h A S i n s t r u c t i o nc a u s e s t h h i g h e s t b i t b s h i f t e d o u o t h o p e r a n d , t h c a r r y f l a g i s e t . T h R O i n s t r u c t i o n s h i f t s t a k e s i n t oa c c o u n t b s h i f t i n g t h i s c a r r y f l a g i n t o t h l o w - o r d e r b i o t h o p e r a n d , k e e p i n g t h m a t h e m a t i c s e x a c t i n g . N o y o c a a d t h o r i g i n a l v a l u e .

2 7 C L C L E A R O V E R F L O W2 8 L D * S U M L2 9 A D C * $ F E3 0 S T * S U M L S T O R E R E S U L T A G A I N3 1 L D A * S U M H3 2 A D # 3 3 S T * S U M H ; O R I G I N A L V A L U E * I S U M L / S U M H

W h d w a d z e r o t S U M H ? I c a r r y o c c u r s i t h S U M La d d i t i o n , i m u s t b t a k e n i n t o a c c o u n t b a d d i n g t h c a r r yt o t h e h i g h - b y t e . A d d i n g z e r o a d d s a n y c a r r y w h i c h m a y h a v eb e e n g e n e r a t e d b y t h e a d d i t i o n o t h l o w - b y t e s .

N o w m u s t d o u b l e t h r e s u l t t h r e e m o r e t i m e s .

3 4 A S * S U M L3 5 R O * S U M H O R I G I N A L V A L U E 1 I S U M L / S U M H3 6 A S * S U M L3 7 R O * S U M H O R I G I N A L V A L U E 2 I S U M L / S U M H3 8 A S L * S U M L3 9 R O * S U M H O R I G I N A L V A L U E 4 0 I N S U M L / S U M H

T h i s t a k e s c a r e c a r e o t h f i r s t a n m o s t d i f f i c u l t t e r m .N o a d t h s e c o n d e x p r e s s i o n ( E X P 2 ( A N 7 E X 1 )

1 6

Page 169: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h i s i d o n e u s i n g a n o t h e r 1 6 - b i t a d d i t i o n .

4 0 T Y Y - C O O R D I N A T E I A C C U M L A T O R4 1 A N # 4 2 C L 4 3 A D C * S U M L4 4 S T A * S U M L4 5 L D A * S U M H4 6 A D # 4 7 S T * S U M H

N e x t , w a d t h X - v a l u e A N 2 4 ( E X P 3 ( A N 2 4 8 )E X P 2 ) . E X P 3 i t h o f f s e t t o t h e m e m o r y l o c a t i o n f o t h s p e c i f i e d a n c o o r d i n a t e s . I i c o n t a i n e d i S U M L / S U M Ha f t e r t h i n s t r u c t i o n a l i n e 5 5 i e x e c u t e d .

4 8 C L 4 9 L D * X 5 0 A N # $ F 85 1 A D C * S U M L5 2 S T * S U M L5 3 L D * X 5 4 A D * S U M H5 5 S T A * S U M H

T h b i t - m a p p e d g r a p h i c s b e g i n s a $ E 0 0 0 , s a d t h i s v a l u et t h o f f s e t ( T A R G E T $ E 0 0 0 E X P 3 ) t a r r i v e a t h t a r g e t a a d d r e s s .

5 6 C L 5 7 L D # < $ E 0 0 05 8 A S C * S U M L5 9 S T * S U M L6 0 L D A # > $ E 0 0 06 1 A D C * S U M H6 2 S T A * S U M H

A l a s t t h t a r g e t a d d r e s s i i S U M L / S U M H .

1 6

Page 170: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

R e m e m b e r t h a t t h c o n t e n t s o t h b y t e a t h t a r g e t a d d r e s sc o n t r o l s p i x e l s o t h b i t - m a p p e d g r a p h i c s s c r e e n . F r o mt h X - c o o r d i n a t e , w m u s t n o d e t e r m i n e t h b i p o s i t o nw i t h i n t h a t b y t e m u s t b s e t o n i o r d e r f o r t h e p i x e lt b t u r n e d o n

E a r l i e r w e i g n o r e d t h l o w e s t t h r e e b i t s o t h X - c o o r d i n a t e

t c a l c u l a t e t h t a r g e t a d d r e s s . H e r e ' s w h e r e u s u s t h i n f o r m a t i o n c o n t a i n e d i t h o s e t h r e e b i t s . F i r s t i s o l a t et h l o w e s t t h r e e b i t s o t h X - c o o r d i n a t e :

X X L A N D

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

c o o r d . b i o f f s e t p o s i t i o n

= = = = = = = =

T h l o w e s t t h r e e b i t s o t h X - c o o r d i n a t e a n t h b i p o s i t o n a r i n v e r s e s o e a c h o t h e r . Y o u c a n c o n v e r t a ) <

c o o r d i n a t e o f f s e t t b i p o s i t i o n b u s i n g t h e x c l u s i v e

1 6

Page 171: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

O i n s t r u c t i o n :

6 3 L D A * X L ; l o w - b y t e o X - c o o r d i n a t e6 4 A N # ; i s o l a t e t h l o w e s t t h r e e b i t s6 5 E O # ; c o n v e r t t b i p o s i t i o n

F r o m t h e a r l i e r c a l c u l a t i o n s , w e f o u n d t h t a r g e t a d d r e s s .F r o m t h a b o v e c a l c u l a t i o n s , w e f o u n d t h b i p o s i t i o n w h i c hn e e d s t b s e a t h a t t a r g e t a d d r e s s t t u r n o t h p i x e l .W k n o w t h a t e a c h b i p o s i t i o n h a c e r t a i n v a l u e , w h i c h w c a l l t h t a r g e t v a l u e . N o w h a v e t c o n v e r t t h a t b i p o s i t i o n t t h t a r g e t v a l u e . T h i s t a r g e t v a l u e i t h e ns t o r e d a t h t a r g e t a d d r e s s t s e t h s p e c i f i c p i x e l .

T c a l c u l a t e t h t a r g e t v a l u e c o r r e s p o n d i n g t t h i s b i p o s i t i o n w s h i f t o n b i t t h e l e f t f o r t h n u m b e r o t i m e s i n d i c a t e d b t h b i p o s i t i o n . H e r e ' s t h c o d e :

6 6 T A b i p o s i t i o n i X - r e g i s t e r6 7 L D # ; " o n e " b i 6 8 S H I F T D E X6 9 0 B M I O 7 0 A S s h i f t t l e f t7 1 B N S H I F T7 2 0 O K . .

T h b i p o s i t i o n i c o n t a i n e d i t h a c c u m u l a t o r a f t e re x e c u t i n g t h i n s t r u c t i o n i l i n e 6 5 0 . T h t a r g e t v a l u e i c a l c u l a t e d b s h i f t i n g l e f t a m a n y t i m e s a s p e c i f i e d b t h X - r e g i s t e r . I l i n e s 6 8 a n 6 9 t h c o n t e n t s o t h e X -r e g i s t e r a r d e c r e m e n t e d a n c h e c k e d t s e i i t ' s n e g a t i v e( l e s s t h a n z e r o ) . I n o t , c o n t i n u e s h i f t i n g a n o t h e r p o s i t i o n

1 6

Page 172: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

t t h l e f t . T h b r a n c h i l i n e 7 1 i a l w a y s e x e c u t e db e c a u s e t h r e s u l t o t h s h i f t i n e v e r e q u a l t o z e r o .

S t o r i n g t h t a r g e t v a l u e c o n t a i n e d i t h a c c u m u l a t o r a t h t a r g e t a d d r e s s t u r n s o n t h e d e s i r e d p i x e l .

B u t h e r e ' s a n o t h e r c o n s i d e r a t i o n . R e m e m b e r t h a t e a c h t a r g e ta d d r e s s c o n t r o l s p i x e l s . I a n o t h e r p i x e l i a l r e a d y s e a t h a t t a r g e t a d d r e s s , t h e n s t o r i n g t h a b o v e t a r g e t v a l u ed e s t r o y s t h p r e v i o u s v a l u e a n e r a s e t h o t h e r p i x e l sc o n t r o l l e d b t h s a m e t a r g e t a d d r e s s .

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

t a r g e t a d d r e s s w i t h n e t a r g e t v a l u e . U s e t h e O i n s t r u c t i o nf o t h i s . B y O R i n g t h o l v a l u e w i t h t h n e w t a r g e t v a l u e ,a n p r e v i o u s l y s e p i x e l s a r n o e r a s e d .

T h t a r g e t a d d r e s s i p o i n t e d t b t h c o n t e n t s o

S U M L / S U M H . T c o m b i n e t h p r e v i o u s v a l u e w i t h t h n e v a l u e , y o u c a n d o t h e f o l l o w i n g :

7 2 O L D # 7 3 O R ( S U M L ) , Y7 4 S T ( S U M L ) , Y

5 R T

N o t h n e p i x e l i s e a n w e a r e d o n e . T h e r e i o n s m a l lp o i n t w h i c h w e o v e r l o o k e d .

1 6

Page 173: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h O i n s t r u c t i o n i l i n e 7 3 a c c e s s e s t h c o n t e n t s o m e m o r y l o c a t i o n i t h r a n g e f r o m $ E 0 0 0 t $ F F F F . T h eC o m m o d o r e 6 n o r m a l l y r e t u r n s t h v a l u e o f t h e c o n t e n t s o t h k e r n a l R O a l s o l o c a t e d a t h e s e s a m e a d d r e s s e s ( b u t i

d i f f e r e n t b a n k ) , " s w i t c h " c o n t r o l s a c c e s s t e i t h e r t h R O o R A a t h o s e a d d r e s s e s . T h O R ( S U M L ) , Y i n s t r u c t i o na b o v e w o u l d a c c e s s t h R O a n d n o t t h b i t - m a p p e d g r a p h i c s

a r e a . T a c c e s s t h R A M c o n t a i n i n g t h b i t - m a p p e d g r a p h i c sa r e a , s e t h s w i t c h ( I / O r e g i s t e r ) l o c a t e d a a d d r e s s 1

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

7 3 0 L D X # $ 3 4 R A C O N F I G U R A T I O N7 4 0 S E I I N H I B I T I N T E R R U P T S7 5 S T * 7 6 O R ( S U M L ) , Y7 7 S T A ( S U M L ) , Y S E P O I N T7 8 L D X # $ 3 7 R O C O N F I G U R A T I O N7 9 S T * 8 0 0 C L I E N A B L E I N T E R R U P T S8 1 R T 8 2 . E

H e r e i t h c o m p l e t e a s s e m b l y l i s t i n g o a l l o f t h r o u t i n e st h a t w e ' v e t a l k e d a b o u t i t h i s c h a p t e r :

0 0 F A0 0 F B0 0 F C0 0 F DC 4 6 0C 4 6 0C 4 6 2

8 8

F F

1 0 1 1 1 2 1 3 1 4 1 5 1 6

X X S U M LS U M H

S T S T

$ F $ F $ F $ F $ C 4 6 0* X * X S A V E X - C O O R D I N A T E

1 6

Page 174: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

C 4 6 4C 4 6 5C 4 6 7C 4 6 9C 4 6 BC 4 6 DC 4 6 FC 4 7 1C 4 7 3C 4 7 5C 4 7 7C 4 7 8C 4 7 AC 4 7 CC 4 7 EC 4 8 0C 4 8 2C 4 8 4C 4 8 6C 4 8 8C 4 8 AC 4 8 CC 4 8 EC 4 9 0C 4 9 1C 4 9 3C 4 9 4C 4 9 6C 4 9 8C 4 9 AC 4 9 CC 4 9 EC 4 9 FC 4 A 1C 4 A 3C 4 A 5C 4 A 7C 4 A 9C 4 A BC 4 A DC 4 A EC 4 B 0C 4 B 2C 4 B 4C 4 B 6C 4 B 8C 4 B AC 4 B CC 4 B EC 4 C 0C 4 C 1C 4 C 3C 4 C 4C 4 C 6C 4 C 7

9 2 8 8 A 8 0 2 0 2 1 A 6 8 A 6 8 0 2 0 2 0 2 9 2 1 6 8 A 6 8 1 A 2 6 8 A 6 8 1 A 6 8 A 6 8 A 2 4 A A C 3 0 D

F F F 0 F F F F F

F F F F 0 F F F F F F F

0

F F F 0 F

F F F F F F F

0 F F E F F F 0 0 0

0

F

1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 S H I F T6 9 7 0 7 1

T Y A N S T S T L D S T A S R O A S R O C L L D A D S T L D A D S T A S R O A S R O A S R O T Y A N C L A D S T L D A D S T C L L D A N A D S T L D A D S T C L L D A D S T L D A D S T L D A N E O T A L D D E B M A S B N

Y - C O O R D I N A T E# $ F 8* $ F E* S U M L# * S U M H* S U M L* S U M H* S U M L* S U M H

E R A S E C A R R Y* S U M L* $ F E* S U M L* S U M H# * S U M H* S U M L* S U M H* S U M L* S U M H* S U M L* S U M H

Y - C O O R D I N A T E# * S U M L* S U M L* S U M H# * S U M H* X # $ F 8* S U M L* S U M L* X * S U M H* S U M H# < $ E 0 0 0* S U M L* S U M L# > $ E 0 0 0* S U M H* S U M H* X # # # O

S H I F T

1 6

Page 175: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C 4 C 9C 4 C BC 4 C DC 4 C EC 4 D 0C 4 D 2C 4 D 4C 4 D 6C 4 D 8C 4 D 9

A A 7 8 1 9 A 8 5 6

0 3 0 F F 3 0

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

L D L D S E S T O R S T L D S T C L R T . E

# # $ 3 4* ( S U M L ) , Y( S U M L ) , Y# $ 3 7*

C 4 6 0 C 4 D A 0 0 7 AS O U R C E F I L E I E X A M P L E 3 . S R C

E R R O R S

O X

C 4 C 90 0 F B

S H I F T C 4 C 3X 0 0 F A

S U M H 0 0 F D S U M L O O F C

N o t t r o u t h e s e r o u t i n e s , w c a n t y p e t h i s s h o r t B A S I Cp r o g r a m t c a l l t h h i g h r e s o l u t i o n g r a p h i c s :

1 0 S Y S 5 0 1 7 6 R E G R A P H I C S O 1 1 S Y S 5 0 2 0 8 R E E R A S E G R A P H I C I M A G E1 2 P O K E 7 8 0 , 1 6 R E B L A C K / W H I T E1 3 S Y S 5 0 2 4 0 R E I N I T I A L I Z E C O L O R1 4 F O X = 0 T O 3 1 1 5 P O K E 7 8 0 r X A N 2 5 R E X - L O1 6 P O K E 7 8 1 , X 2 5 R E X - H I1 7 P O K E 7 8 2 f X 0 . 6 2 5 R E 1 8 S Y 5 0 2 7 2 S E P O I N T1 9 N E X T2 0 G E A I A $ = " M T H E N 2 0 2 1 S Y 5 0 1 9 2 R E T U R N O F F

R U N n i n g t h i s p r o g r a m d r a w s d i a g o n a l l i n e f r o m t h u p p e rl e f t t o t h e l o w e r r i g h t c o r n e r . P r e s s i n g k e r e t u r n s t h C o m m o d o r e 6 t t h n o r m a l t e x t m o d e .

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

1 6

Page 176: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

e r a s i n g p o i n t . B c h a n g i n g l i n e 7 6 0 , y o c a c a u s e t h r o u t i n e t e r a s e p i x e l i n s t e a d o s e t t i n g i t L o o k a w h a th a p p e n s w h e n y o u s e p o i n t w i t h O R A .

p r e v i o u s b i p a t t e r n 0 1 0 0 1 0 0 0p a t t e r n f o n e w p i x e l 0 0 0 1 0 0 0 0r e s u l t o O R 0 1 0 1 1 0 0 0

T h n e w p o i n t i s e t b y u s i n g a O R A i n s t r u c t i o n . T e r a s et h s a m e p o i n t u s t h A N i n s t r u c t i o n .

p r e v i o u s b i p a t t e r n 0 1 0 1 1 0 0 0p a t t e r n f o p i x e l t o b e e r a s e d 0 0 0 1 0 0 0 0r e s u l t o A N 0 0 0 1 0 0 0 0

S o m e t h i n g i w r o n g h e r e ! A l t h p o i n t s a r e r a s e d e x c e p tf o r t h e o n e y o w a n t t e r a s e . T h e b i t v a l u e s m u s t b i n v e r t e d p r i o r t A N D i n g . Y o c a n c a n d t h i s w i t h t h E O i n t r u c t i o n .

p i x e l t o b e e r a s e d 0 0 0 1 0 0 0 0i n v e r t a l b i t s 1 1 1 1 1 1 1 1g i v e s t h n e p a t t e r n 1 1 1 0 1 1 1 1

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

p r e v i o u s b i p a t t e r n 0 1 0 1 1 0 0 0n e p a t t e r n 1 1 1 0 1 1 1 1c o r r e c t p a t t e r n 0 1 0 0 1 0 0 0

1 6

Page 177: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

N o a d t h e r a s e f u n c t i o n t o t h e o t h e r r o u t i n e s . Y o c a u s t h c a r r y f l a g t s i g n a l w h e t h e r t h p o i n t i t b s e o e r a s e d . I t h c a r r y f l a g i c l e a r , t h e n t h r o u t i n ee r a s e s t h p i x e l . T h r o u t i n e m u s t m a k e n o t e o t h c o n d i t i o n o t h c a r r y f l a g . U s t h P H P i n s t r u c t i o n t s a v et h s t a t u s r e g i s t e r o t h s t a c k , a i l i n e 1 4 5 . E x a m i n et h f l a g s b u s i n g P L i n s t r u c t i o n i l i n e 7 3 5 . H e r e a r t h r e m a i n i n g c h a n g e s t t h p r o g r a m :

7 6 B C E R A S E7 7 O R ( S U M L ) , Y7 8 B C S O K 27 9 E R A S E E O R # $ F F I N V E R T8 0 A N ( S U M L ) , Y8 1 0 O K 2 S T ( S U M L )

2 L D # $ 3 78 3 S T * 8 4 C L 8 5 R T 8 6 . E

I t h c a r r y f l a g i c l e a r , j u m p t l i n e 7 9 w h e r e t h b i t sa r i n v e r t e d w i t h E O # $ F F . T h A N D i n s t r u c t i o n i e x e c u t e da n d t h e r e s u l t i s t o r e d . I f o t h o t h e r h a n d , t h c a r r yf l a g i s e t , t h e n t h b i i s e w i t h O R a b e f o r e a n t h n e v a l u e i a g a i n s t o r e d a t h t a r g e t a d d r e s s . T h c o m p l e t e l i s t i n g i s h o w n b e l o w :

0 0 F A0 0 F B0 0 F C0 0 F DC 4 6 0C 4 6 0C 4 6 1C 4 6 3C 4 6 5

8 F 8 F 9

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

X X S U M LS U M H

* P H S T S T T Y

$ F $ F $ F $ F $ C 4 6 0* X * X X - C O O R D I N A T E

Y - C O O R D I N A T E

1 6

Page 178: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

C 4 6 6C 4 6 8C 4 6 AC 4 6 CC 4 6 EC 4 7 0C 4 7 2C 4 7 4C 4 7 6C 4 7 8C 4 7 9C 4 7 BC 4 7 DC 4 7 FC 4 8 1C 4 8 3C 4 8 5C 4 8 7C 4 8 9C 4 8 BC 4 8 DC 4 8 FC 4 9 1C 4 9 2C 4 9 4C 4 9 5C 4 9 7C 4 9 9C 4 9 BC 4 9 DC 4 9 FC 4 A 0C 4 A 2C 4 A 4C 4 A 6C 4 A 8C 4 A AC 4 A CC 4 A EC 4 A FC 4 B 1C 4 B 3C 4 B 5C 4 B 7C 4 B 9C 4 B BC 4 B DC 4 B FC 4 C 1C 4 C 2C 4 C 4C 4 C 5C 4 C 7C 4 C 8C 4 C A

2 8 8 A 8 0 2 0 2 1 A 6 8 A 6 8 0 2 0 2 0 2 9 2 1 6 8 A 6 8 1 A 2 6 8 A 6 8 1 A 6 8 A 6 8 A 2 4 A A C 3 0 D A

F F F 0 F F F F F

F F F F 0 F F F F F F F

0

F F F 0 F F F F F F F F E

0 F F E F F F 0 0

0 0

F 0

1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 S H I F T6 9 7 0 7 1 7 2 O

A N S T S T L D S T A S R O A S R O C L L D A D S T L D A D S T A S R O A S R O A S R O T Y A N C L A D S T L D A D S T C L L D A N A D S T L D A D S T C L L D A D S T L D A D S T L D A N E O T A L D D E B M A S B N L D

# $ F 8* $ F E* S U M L# * S U M H* S U M L* S U M H* S U M L* S U M H

E R A S E C A R R Y* S U M L* $ F E* S U M L* S U M H# * S U M H* S U M L* S U M H* S U M L* S U M H* S U M L* S U M H

Y - C O O R D I N A T# * S U M L* S U M L* S U M H# * S U M H* X # $ F 8* S U M L* S U M L* X * S U M H* S U M H# < $ E 0 0 0* S U M L* S U M L# > $ E 0 0 0* S U M H* S U M H* X # #

# O

S H I F T#

1 7

Page 179: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C 4 C CC 4 C EC 4 C FC 4 D 0C 4 D 2C 4 D 4C 4 D 6C 4 D 8C 4 D AC 4 D CC 4 D EC 4 E 0C 4 E 2C 4 E 3C 4 6 0

A 3 2 7 8 0 9 0 0 41 F B 0 4 F 3 F 9 1 F CA 3 8 0 5 6

C 4 E 4S O U R C E F I L E

E R R O R S

E R A S ES U M H

C 4 D 80 0 F D

7 3 7 3 7 4 7 5 7 6 7 7 7 8 7 9 E R A S E8 0 8 1 O K 8 2 8 3 8 4 8 5 8 6

0 0 8 4I E X A M P L E 4 . S R C

O C 4 C AS U M L 0 0 F C

L D P L S E S T B C O R B C E O A N S T L D S T C L R T . E

# 5 3 4

* E R A S E( S U M L ) f Y

O # $ F F( S U M L ) f Y( S U M L ) , Y# $ 3 7*

O K C 4 D CX H 0 0 F B

S H I F TX

C 4 C 40 0 F A

N o w c h a n g e t h p r e v i o u s B A S I C " t e s t " p r o g r a m :

1 0 S Y S 5 0 1 7 6 R E G R A P H I C S O 1 1 S Y 5 1 2 0 8 R E M E R A S E G R A P H I C I M A G E1 2 P O K E 7 8 0 , 1 61 3 S Y 5 0 2 4 0 R E S E C O L O R1 4 1 = 1 5 F O X = T 3 1 1 6 P O K E 7 8 0 , A N 2 5 R E M X L O1 7 P O K E 7 8 1 , A N 2 5 R E H 1 8 P O K E 7 8 2 , 0 . 6 2 5 R E 1 9 P O K E 7 8 3 , R E S E T / E R A S E2 0 S Y S 5 0 2 7 2 N E X T2 1 G E A I A $ = " " T H E N 1 = 1 - 1 G O T O 1 5 2 2 S Y S 5 0 1 9 2 R E G R A P H I C S O F

T h i s p r o g r a m d r a w s d i a g o n a l l i n e a c r o s s t h s c r e e n a n t h e n e r a s e s i a g a i n . T h e r o u t i n e d e t e r m i n e s i p i x e l i t b s e o e r a s e d , b y t h e c o n d i t i o n o t h c a r r y f l a gw h i c h i p a s s e d i m e m o r y l o c a t i o n 7 8 3 . B e c a u s e t h c a r r yf l a g o c c u p i e s b i p o s i t i o n z e r o w i t h i n t h s t a t u s r e g i s t e r ,t h c o r r e s p o n d i n g v a l u e s a r e o n e a n d z e r o .

1 7

Page 180: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

Y o u c a n s t o p t h p r o g r a m b p r e s s i n g k e y . T h o r i g i n a ls c r e e n c o n t e n t s i p r e s e r v e d , j u s t a t h g r a p h i c s s c r e e n i

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

1 0 S Y S 5 0 1 7 6 R E G R A P H I C S O 1 1 S Y 5 1 2 0 8 R E E R A S E G R A P H I C S1 2 P O K E 7 8 0 , 1 61 3 S Y S 5 0 2 4 0 R E S E C O L O R1 4 R E 1 5 F O X = 7 0 T 1 5 F O Y = X T O 1 9 1 6 P O K E 7 8 0 , R E L 1 7 P O K E 7 8 1 , R E H 1 8 P O K E 7 2 R E 1 9 P O K E 7 8 3 , R E M S E T2 0 S Y 5 0 2 7 2 N E X T N E X T2 1 F O C = T 2 5 2 2 F O 1 = T 5 0 N E X T2 3 P O K E 7 8 0 ,2 4 S Y S 5 0 2 4 0 R E C O L O R2 5 N E X T2 6 S Y S 5 0 1 9 2 R E G R A P H I C S O F

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

T s u m m a r i z e , y o u h a v e l e a r n e d a b o u t i n d i r e c t i n d e x e da d d r e s s i n g ? y o u h a v e w o r k e d w i t h t h l o g i c a l o p e r a t i o n s t

s e a n e r a s e d e s i g n a t e d b i t s ; y o u h a v e a l s o u s e d t h s t a c kf o s t o r i n g d a t a ; a n y o u h a v e p e r f o r m e d 1 6 - b i t a d d i t i o n sa n s h i f t s .

A i m p o r t a n t p r o g r a m m i n g c o n c e p t s t i l l m i s s i n g i t h u s o s u b r o u t i n e s . T h i s i d i s c u s s e d i t h n e x t s e c t i o n .

1 7

Page 181: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

8 E x t e n d i n g B A S I C

I t h p r e v i o u s s e c t i o n w p a s s e d p a r a m e t e r s t o t h e g r a p h i c sr o u t i n e b m e a n s o P O K E c o m m a n d s . N o w w p r e s e n t m o r ee l e g a n t w a o d o i n g t h i s .

T h i s t e c h n i q u e p a s s e s p a r a m e t e r s t h s a m e w a a p a r a m e t e r s

a r p a s s s t t h B A S I C c o m m a n d s .

L e t ' s t a k e s i m p l e B A S I C c o m m a n d :

P O K E A ,

T h v a r i a b l e s a n a r a r g u m e n t s f o r t h e P O K E c o m m a n d .T h r u l e s o B A S I C a l l o w y o t u s a n e x p r e s s i o n s ,c o n s t a n t s o s u b s c r i p t e d v a r i a b l e s i p l a c e o a n B F o e x a m p l e , t h f o l l o w i n g i s l e g a l B A S I C s t a t e m e n t :

P O K E A ( 1 0 0 0 ) / 7 5 0 * I N T ( X % / 9 ) , E X P ( A B S ( S I N ( 3 * A ) ) ) + 2

T h B A S I C i n t e r p r e t e r u s e s r o u t i n e i i t R O M s t e v a l u a t et h v a l u e o t h e x p r e s s i o n s . Y o c a l e t t h e B A S I Ci n t e r p r e t e r d h a r d e v a l u a t i o n w o r k b c a l l i n g t h i s r o u t i n ef r o m y o u r o w p r o g r a m s . I a d d i t i o n , y o u c a n p e r f o r m r a n g ec h e c k i n g b u s i n g v a r i o u s e n t r y p o i n t s t t h B A S I C R O r o u t i n e s .

W h e n e v a u l a t i n g t h a r g u m e n t s f o t h P O K E r o u t i n e , f o

1 7

Page 182: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

e x a m p l e , t h r o u t i n e s c h e c k t m a k e s u r e t h a t t h f i r s tp a r a m e t e r i v a l u e b e t w e e n a n d 6 5 5 3 5 ( 1 6 - b i t ) . I n o t ,t h e r r o r m e s s a g e I L L E G A L Q U A N T I T Y i i s s u e d . T h e r o u t i n e st h e n c h e c k t h s e c o n d p a r a m e t e r f o v a l u e b e t w e e n t 2 5 5 , a n t h s a m e e r r o r m e s s a g e i g i v e n i f i t f a i l s t h i st e s t .

H o c a n y o u u s t h e s e r o u t i n e s i y o u r o w n p r o g r a m s ?

F i r s t y o u m u s t u n d e r s t a n d p r o g r a m m i n g t e c h n i q u e t h a t w eh a v e n o d i s c u s s e d u t t h i s p o i n t t h s u b r o u t i n e .

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

G O S U B a n R E T U R N

T h G O S U B c o m m a n d b r a n c h e s t g i v e n l i n e . I t d i f f e r s f r o mt h G O T O i n s t r u c t i o n i t h a t t h i n t e r p r e t e r r e m e m b e r s t h p l a c e f r o m w h i c h i b r a n c h e d . W h e n t h s u b r o u t i n e i f i n i s h e d , a n d t h i n t e r p r e t e r e n c o u n t e r s R E T U R N , t h p r e v i o u s l y s a v e d r e t u r n a d d r e s s i f e t c h e d a n e x e c u t i o nb r a n c h e s b a c k t t h p l a c e f r o m w h e r e t h s u b r o u t i n e c a l lw a m a d e .

T h e 6 5 1 0 m i c r o p r o c e s s o r h a t w o i n s t r u c t i o n s f o m a n a g i n g o s u b r o u t i n e s . T h e s e c o m m a n d s c o r r e s p o n d e x a c t l y t t h e i rB A S I C c o u n t e r p a r t s .

1 7

Page 183: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

J S a n d R T S

J S ( j u m p t s u b r o u t i n e ) c a l l s t h s u b r o u t i n e w h i l e t h R T i n s t r u c t i o n ( r e t u r n f r o m s u b r o u t i n e ) t a k e s c a r e o b r a n c h i n gb a c k t t h c a l l i n g r o u t i n e . W h e n d y o u s t h e s ei n s t r u c t i o n s ?

S u b r o u t i n e s i m a c h i n e l a n g u a g e p r o g r a m s a r u s e d i t h s a m e c i r c u m s t a n c e s a i B A S I C . I c e r t a i n r o u t i n e i t b u s e d m o r e t h a n o n c e , i s h o u l d b m a d e i n t o s u b r o u t i n e .

W h a t d o e s t h p r o c e s s o r d w h e n i e n c o u n t e r s J S R i n s t r u c t i o n ?

B e f o r e i b r a n c h e s t t h s u b r o u t i n e , i s a v e s t h c u r r e n ta d d r e s s o t h p r o g r a m c o u n t e r s t h a t i k n o w s w h e r e t r e t u r n a f t e r t h s u b r o u t i n e i c o m p l e t e . W h e r e d o e s i s a v et h i s i n f o r m a t i o n ? I u s e s t h s t a c k !

s u b r o u t i n e c a l l s a v e s t h c u r r e n t a d d r e s s ( t w o b y t e s ) o t h p r o g r a m c o u n t e r o n t h e s t a c k . L a t e r , w h e n t h e R T S

i n s t r u c t i o n i e n c o u n t e r e d , t h a d d r e s s o n t h e s t a c kr e p l a c e s t h p r o g r a m c o u n t e r c o n t e n t s . T h e i n s t r u c t i o nf o l l o w i n g t h J S i t h e n e x e c u t e d .

S t h a t t h e 6 5 1 0 k n o w s a w h i c h p l a c e o t h s t a c k t s a v et a n r e t r i e v e f r o m , t h e r e i r e g i s t e r c a l l e d t h s t a c kp o i n t e r ( s h o r t e n e d t S P ) . T h i s r e g i s t e r i p o i n t e r t t h

1 7

Page 184: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

c u r r e n t p o s i t i o n o t h s t a c k . L e t ' s s e e w h a t h a p p e n s w h e nt h J S a n R T c o m m a n d s a r e x e c u t e d .

C 0 0 0 2 0 0 C l J S $ C 1 0 0C 0 0 3C 1 0 0 6 R T

W h e n t h i s p r o g r a m i s t a r t e d a a d d r e s s $ C 0 0 0 f c a l l i m a d e t o t h e s u b r o u t i n e a a d d r e s s $ C 1 0 0 . I o u e x a m p l e , t h

R T i n s t r u c t i o n i e n c o u n t e r e d i m m e d i a t e l y a n d t h e p r o c e s s o rr e t u r n s t t h i n s t r u c t i o n f o l l o w i n g t h s u b r o u t i n e c a l l ,w h i c h i $ C 0 0 3 i o u c a s e . L e t ' s s e e w h a t h a p p e n s t o t h es t a c k a n d t h e s t a c k p o i n t e r .

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 0 0 0 J S $ C 1 0 0 $ F $ O 1 F 9 X

T h d a t a f r o m a n p r e v i o u s o p e r a t i o n s i l o c a t e d a s t a c ka d d r e s s $ 0 1 F 9 . W h e n t h p r o c e s s o r e n c o u n t e r s t h J S i n s t r u c t i o n , i t a k e s 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 ,i n c r e m e n t s i b t w a n d i v i d e s i i n t o l o a n h i g h b y t e s .I t a k e s t h h i g h - b y t e a n s t o r e s i a t h a d d r e s s t w h i c ht h s t a c k p o i n t e r p o i n t s . T h s t a c k p o i n t e r i t h e nd e c r e m e n t e d b o n e :

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 0 0 0 J S $ C 0 0 0 $ F $ O 1 F 9 C

$ 0 1 F 8 X X

N o t h l o w - b y t e o t h a d d r e s s i s a v e d o n t h e s t a c k a n

1 7

Page 185: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

t h s t a c k p o i n t e r i a g a i n d e c r e m e n t e d . T h p r o g r a m c o u n t e r

i t h e n s e t t h s t a r t i n g a d d r e s s o t h s u b r o u t i n e :

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 1 0 0 R T $ F $ 0 1 F 9 C

$ O 1 F 8 0 $ 0 1 F 7 X

S d u r i n g J S R , t h e p r o g r a m c o u n t e r i s a v e d o n t h e s t a c ka n t h s t a c k p o i n t e r i d e c r e m e n t e d b y t w o . T h s t a c kp o i n t e r a l w a y s p o i n t s t t h n e x t f r e e l o c a t i o n o t h s t a c k .

T h R T i n s t r u c t i o n p e r f o r m s t h e s e f u n c t i o n s i r e v e r s e .F i r s t 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 a n t h e n t h l o w - b y t ei f e t c h e d f r o m t h e s t a c k :

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 1 0 0 R T $ F $ 0 1 F 9 C

$ 0 1 F 8 0 $ 0 1 F 7 X X

T h v a l u e $ 0 i p l a c e d i n t o t h l o w - b y t e o t h p r o g r a mc o u n t e r . T h e n s t a c k p o i n t e r i i n c r e m e n t e d :

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 1 0 0 R T $ F $ 0 1 F 9 C

$ 0 1 F 8 0 $ 0 1 F 7 X X

S C i p u l l e d f r o m t h s t a c k a n b e c o m e s t h h i g h - b y t e o t h p r o g r a m c o u n t e r . T h e p r o g r a m c o u n t e r n o w c o n t a i n s $ C 0 0 2 .

1 7

Page 186: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

T h p r o g r a m c o u n t e r i i n c r e m e n t e d b o n e a n d t h n e x ti n s t r u c t i o n i f e t c h e d f r o m $ C 0 0 3 :

A d d r e s s I n s t r u c t i o n S t a c k p o i n t e r S t a c k$ C 0 0 3 . . $ F $ 0 1 F 9 C

$ 0 1 F 8 0 $ 0 1 F 7 X

N o t i c e t h a t t h s t a c k p o i n t e r c o n t a i n s t h s a m e v a l u e a f t e rt h r e t u r n f r o m t h s u b r o u t i n e a b e f o r e t h e c a l l .

I i a l s o p o s s i b l e t n e s t s u b r o u t i n e s w i t h t h i s t e c h n i q u e .I s u b r o u t i n e i c a l l e d f r o m a n o t h e r s u b r o u t i n e s , i t r e t u r n a d d r e s s i s a v e d o t h s t a c k . T h e s t a c k p o i n t e r i s e t $ F i o u e x a m p l e . T h l a s t r e t u r n a d d r e s s i f e t c h e d b y t h e n e x t R T i n s t r u c t i o n a n d t h e s t a c k p o i n t e r i i n c r e m e n t e d t $ F 7 . R T w i l l a l w a y s j u m p s b a c k t t h a d d r e s s o t h e l a s t s u b r o u t i n e c a l l . T h r o u g h t h i s , i t i s

p o s s i b l e t n e s t l e v e l s o s u b r o u t i n e s .

T h 6 5 1 0 m i c r o p r o c e s s o r c a s a v e a n r e t r i e v e t h c o n t e n t so t h a c c u m u l a t o r a n t h p r o c e s s o r s t a c k r e g i s t e r t a n f r o m t h s t a c k . T h c o m m a n d s a r e P H A a n d P L A f o r t h ea c c u m u l a t o r a n P H a n P L f o r t h e s t a t u s r e g i s t e r . T h e s ec o m m a n d s a l s o a f f e c t t h s t a c k p o i n t e r . U s i n g t h e s ei n s t r u c t i o n s y o c a n , f o e x a m p l e , s a v e t h e c o n t e n t s o t h s t a t u s r e g i s t e r a n l a t e r r e t r i e v e i t T h u s t h s t a c k c a b u s e d a " s c r a t c h p a d " .

1 7

Page 187: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

P H a c c u m u l a t o r t s t a c kT Y P H a n r e g i s t e rT X P H a n r e g i s t e rP L T A g e r e g i s t e r b a c kP L T A a n r e g i s t e rP L a n a c c u m u l a t o r

T h a n r e g i s t e r s c a n n o t b s a v e d d i r e c t l y o n t o t h s t a c k . Y o u h a v e t t r a n s f e r t h c o n t e n t s o t h t h e X -r e g i s t e r o Y - r e g i s t e r t o t h e a c c u m u l a t o r f i r s t a n t h e np l a c e d t h c o n t e n t s t t h s t a c k w i t h P H A i n s t r u c t i o n .N o t i c e t h a t t h r e g i s t e r s m u s t b p u l l e d f r o m t h s t a c k i t h r e v e r s e o r d e r t h e y w e r e p u s h e d o n T h i s i i a c c o r d a n c e

w i t h t t h p r i n c i p l e o t h e s t a c k . T h e l a s t v a l u e p l a c e o t h s t a c k i t h f i r s t v a l u e r e t r i e v e d f r o m t h s t a c k i l a s t i n - f i r s t o u ( L I F O ) o r d e r .

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

N o l e t ' s c a r e t u r n t o u d i s c u s s i o n s a b o u t t h B A S I Ci n t e r p r e t e r r o u t i n e s f o p a s s i n g p a r a m e t e r s .

r o u t i n e c a l l e d G E T B Y T i t h B A S I C R O M s , r e a d s a e x p r e s s i o n f r o m B A S I C t e x t , c h e c k s i f o r a n g e f r o m a n 2 5 5 , a n r e t u r n s t h i s v a l u e i t h X - r e g i s t e r .

Page 188: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

A n o t h e r r o u t i n e c a l l e d F R M N U M , c o n v e r t s e x p r e s s i o n t 1 6 b i ( t 6 5 5 3 5 ) v a l u e s .

T h r o u t i n e G E T A D R , c h e c k s a e x p r e s s i o n f o r a n g e f r o mt 6 5 5 3 5 . I f i t i s v a l i d , t h l o w - b y t e o f t h e v a l u e i r e t u r n e d i m e m o r y l o c a t i o n $ 1 a n t h h i g h - b y t e o t h v a l u e i r e t u r n e d i m e m o r y l o c a t i o n $ 1 5 . T h a d d r e s s e s o t h e s e r o u t i n e s a r l i s t e d b e l o w .

E a r l i e r w e t a l k e d a b o u t h o t h B A S I C i n t e r p r e t e r r e a d s e a c hl i n e c h a r a c t e r b c h a r a c t e r i o r d e r t f i n d t h B A S I Ck e y w o r d s . I d o i n g s o B A S I C k e e p s t r a c k o i t p l a c e i t h l i n e b u s i n g a i n t e r n a l v a r i a b l e c a l l e d T X T P T R ( f o r t e x t

p o i n t e r ) . A a n g i v e n t i m e , T X T P T R p o i n t s t t h B A S I C t e x tw h i c h t h i n t e r p r e t e r i p r o c e s s i n g .

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

S Y A A A A A , P P P

A A A A A i t h d e c i m a l a d d r e s s o t h m a c h i n e l a n g u a g er o u t i n e . P P P i t h p a r a m e t e r t h a t y o a r p a s s i n g t t h m a c h i n e l a n g a u g e r o u t i n e .

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

1 8

Page 189: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

i c a l l e d C H K C O M a n c h e c k s t s e i T X T P T R i p o i n t i n g t c o m m a .

I y o w a n t t r e a d c h a r a c t e r d i r e c t l y f r o m t h B A S I Ct e x t , t h r o u t i n e C H R G O T g e t s t h c h a r a c t e r p o i n t e d t b T X T P T R a n p u t s i i n t o t h a c c u m u l a t o r . T h r o u t i n e C H R G B Td o e s t h s a m e t h i n g b u f i r s t i n c r e m e n t s T X T P T R b e f o r eg e t t i n g t h c h a r a c t e r .

T h e s e r o u t i n e s a l s o s e c e r t a i n f l a g s w h i c h g i v e a d d i t i o n a li n f o r m a t i o n a b o u t t h c h a r a c t e r r e a d . I t h z e r o f l a g i s e t , t h e n e i t h e r z e r o b y t e ( e n d - o f - l i n e i B A S I C p r o g r a m s )o c o l o n " : w a r e a d , i n d i c a t i n g t h e n o t h s t a t e m e n t . I d i g i t i r e a d , t h e c a r r y f l a g i c l e a r .

H e r e i s u m m a r y o t h a d d r e s s e s :

G E T B Y TF R M N U MG E T A D RC H K C O MC H R G O TC H R G E TG E T P A R

$ B 7 9 E$ A D 8 A$ B 7 F 7$ A E F D$ 0 0 7 9$ 0 0 7 3$ B 7 E B

T g e 1 6 - b i t p a r a m e t e r f o l l o w e d b a 8 - b i t p a r a m e t e rs u c h a f o t h P O K E c o m m a n d , y o c a n u s e t h r o u t i n eG E T P A R . T h r o u t i n e G E T P A R c a l l s t h f o l l o w i n g r o u t i n e s i

o r d e r : F R M N U M , G E T A D R , C H K C O M , a n G E T B Y T .

Y o c a n u s e G E T P A R f o r t h e b i t - m a p p e d g r a p h i c s r o u t i n e s

1 8

Page 190: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

b e c a u s e t h v a l u e f o t h X - c o o r d i n a t e i 1 6 - b i t n u m b e r( 0 - 3 1 9 ) a n t h v a l u e f o r t h e Y - c o o r d i n a t e ( 0 - 1 9 9 ) i a 8 b i t n u m b e r . I t h v a l u e s e x c e e d 6 5 5 3 5 o 2 5 5 , r e s p e c t i v e l y ,t h B A S I C i n t e r p r e t e r r e s p o n d s w i t h I L L E G A L Q U A N T I T Y . S G E T P A R c h e c k s t h r a n g e s o f t h e c o o r d i n a t e s a n d i s p l a y t h i se r r o r m e s s a g e i r e q u i r e d .

T u s t h e s e r o u t i n e s f o p a r a m e t e r p a s s i n g , c a l l w o u l dl o o k l i k e t h i s :

S Y 5 0 2 4 0 , X , Y

W h e n B A S I C e n c o u n t e r s t h i s s t a t e m e n t , i s e t s u t e x e c u t et h m a c h i n e l a n g u a g e r o u t i n e b e g i n n i n g a m e m o r y l o c a t i o n5 0 2 4 0 . T h B A S I C T X T P T R i l e f t p o i n t i n g a t h f i r s t c o m m af o l l o w i n g t h 5 0 2 4 0 .

U s i n g t h i s t e c h n i q u e , y o u d n o h a v e t P O K E t h p a r a m e t e r s

i n t o m e m o r y . T h p r o g r a m i a l s o l o e a s i e r t f o l l o w .

N o l e t ' s r e p r o g r a m t h g r a p h i c s r o u t i n e s a g a i n , b u i n c o p r o r a t i n g t h n e t e c h n i q u e s :

1 0 J S C H K C O M C O M M A F O L L O W I N G ?1 1 J S G E T P A R G E C O O R D I N A T E S1 2 S T Y C O O R S A V E Y - C O O R D I N A T E1 3 L D $ 1 1 4 S T A X L X - C O O R D I N A T E L 1 5 L D $ 1 1 6 S T X

1 8

Page 191: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

F i r s t w e c h e c k f o c o m m a w h i c h s e p a r a t e s t h S Y a d d r e s sf r o m t h X - c o o r d i n a t e . N e x t w e u s e t h r o u t i n e w h i c h g e t st w p a r a m e t e r s , G E T P A R . T h e v a l u e o t h o n e - b y t e p a r a m e t e r ,t h Y - c o o r d i n a t e , i r e t u r n e d i t h X - r e g i s t e r w h i c h w s a v e a t h a d d r e s s Y C O O R . T h e v a l u e o t h s e c o n dp a r a m e t e r , t h X - c o o r d i n a t e r e t u r n e d i $ 1 4 / $ 1 5 a n d s a v e d i X a n X H N o c h e c k t h a t t h e a n Y - c o o r d i n a t e s l i i t h p e r m i t t e d v a l u e r a n g e . I t h Y - c o o r d i n a t e i l e s s t h a n 2 0 0 ,i t i s l e g a l , o t h e r w i s e d i s p l a y I L L E G A L Q U A N T I T Y . T h s a m et y p e o r a n g e c h e c k i n g i p e r f o r m e d f o r t h e X - c o o r d i n a t e .

1 7 C P # 2 0 0 > 2 0 0 ?1 8 B C O 1 9 E R R O R J M I L L E G A L2 0 O L D X 2 1 C M # > 3 2 02 2 B C O K 2 3 B N E E R R O R2 3 L D A X L2 4 C M # < 3 2 02 5 B C E R R O R2 6 0 O K I .

T h r e m a i n d e r o t h p r o g r a m i t h s a m e a t h e a r l i e rv e r s i o n .

1 8

Page 192: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

9 I n p u t / O u t p u t O p e r a t i o n s

I B A S I C y o u u s e s p e c i f i c c o m m a n d s t i n p u t c h a r a c t e r s f r o mt h k e y b o a r d , d i s p l a y t h e m o t h s c r e e n a n c o m m u n i c a t ew i t h p e r i p h e r a l s . S o m e o f t h e B A S I C c o m m a n d s t o d o t h i s a r e :

O P E NC M P R I N T #I N P U T #C L O S E

I 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 y o u u s e s i m i l a r t e c h n i q u e s .T h o p e r a t i n g s y s t e m a l r e a d y c o n t a i n s r o u t i n e s w h i c hc o r r e s p o n d t t h B A S I C c o m m a n d s a b o v e . Y o u c a u s t h e s er o u t i n e s t p e r f o r m i n p u t o o u t p u t o p e r a t i o n s .

S o m e o f t h e r o u t i n e s f o l l o w s :

O P E N

T h i s r o u t i n e r e q u i r e s t h r e e p a r a m e t e r s : t h l o g i c a l f i l en u m b e r , t h d e v i c e a d d r e s s , a n t h s e c o n d a r y a d d r e s s , a n a o p t i o n a l f i l e n a m e . T h e s e p a r a m e t e r s a r s e b y t h er o u t i n e s S E T F L S a n d S E T N A M . T h O P E N r o u t i n e i t s e l f n e e d s n p a r a m e t e r s b u i d o e s r e q u i r e p r i o r c a l l s t t h o t h e rr o u t i n e s .

1 8

Page 193: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

S E T F L S

T o u s e S E T L F S , l o a d t h a c c u m u l a t o r w i t h t h l o g i c a lf i l e n u m b e r , t h X - r e g i s t e r w i t h t h d e v i c e n u m b e r , a n d t h Y - r e g i s t e r w i t h t h s e c o n d a r y a d d r e s s a n t h e n c a l l t h i sr o u t i n e t s e t h e s e p a r a m e t e r s f o r t h e O P E N r o u t i n e .

S E T N A M

T h i s r o u t i n e i d e f i n e s f i l e n a m e . L o a d t h a c c u m u l a t o rw i t h t h o t h f i l e n a m e ( i n d i c a t e s t h a t n f i l e n a m e w i l lb u s e d ) ; p l a c e t h a d d r e s s o t h f i l e n a m e ( t h e f i r s tm e m o r y l o c a t i o n i i s t o r e d i n i t h X - r e g i s t s e r ( l o w -b y t e ) a n Y - r e g i s t e r ( h i g h - b y t e ) .

P R I N T

L o a d t h a c c u m u l a t o r w i t h t h c h a r a c t e r y o w i s h t o u t p u ta n d t h e n c a l l t h i s r o u t i n e . N o r m a l l y t h o u t p u t g o e s t t h s c r e e n . I y o w a n t t o u t p u t t t h p r i n t e r , f o e x a m p l e ,y o m u s t f i r s t o p e n f i l e t t h p r i n t e r ( d e v i c e 4 w i t ht h O P E N r o u t i n e a n t h e n c a l l t h n e x t r o u t i n e .

1 8

Page 194: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C H K O U T

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 C M i n s t r u c t i o n i B A S I C . T oo u t p u t c h a r a c t e r t a o p e n e d f i l e , l o a d t h e X - r e g i s t e rw i t h t h l o g i c a l f i l e n u m b e r a n d c a l l t h s u b r o u t i n e C H K O U T .A l o u t p u t f r o m t h P R I N T i n s t r u c t i o n i s e n t t t h i s d e v i c eu n t i l c a n c e l l e d w i t h t h n e x t r o u t i n e .

C L R C H

C L R C H c a n c e l s t h C M m o d e s e t b y t h C H K O U T i n s t r u c t i o n . I r e q u i r e s n p a r a m e t e r s .

I N P U T

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 k e y b o a r d a n r e t u r n si i t h a c c u m u l a t o r . T r e a d d a t a f r o m f i l e , f i r s t o p e n

a n t h e n a c t i v a t e i w i t h t h n e x t r o u t i n e .

C H K I N

L o a d t h l o g i c a l f i l e n u m b e r i t h X - r e g i s t e r a n c a l l t h i sr o u t i n e . A f t e r c a l l i n g t h i s r o u t i n e , a l i n p u t i r e a d f r o mt h i s d e v i c e u n t i l c a n c e l l e d w i t h C L R C H .

1 8

Page 195: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C L O S E

L o a d t h l o g i c a l f i l e n u m b e r i n t o t h a c c u m u l a t o r a n d c a l lt h i s r o u t i n e t c l o s e f i l e .

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

r o u t i n e s .R o u t i n e A d d r e s sO P E NS E T F L SS E T N A MP R I N TC H K O U TC L R C HI N P U TC H K I NC L O S E

$ F F C 0$ F F B A$ F F B D$ F F D 2$ F F C 9$ F F C C$ F F C F$ F F C 6$ F F C 3

T d e m o n s t r a t e h o t u s t h e s e r o u t i n e s , l e t ' s c o n v e r t t h

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

O P E N 1 , 8 , 1 5P R I N T # 1 , " I "C L O S E

1 0 L D # L O G I C A L F I L E N U M B E R1 1 L D # D E V I C E N U M B E R1 2 L D # 1 S E C O N D A R Y A D D R E S S1 3 J S S E T F L S1 4 L D # 1 5 J S R S E T N A M N N A M E1 6 J S O P E N O P E N F I L E1 7 L D # L O G I C A L F I L E N U M B E R1 8 J S C H K O U T O U T P U T T F I L E1 9 L D # 7 " I 2 0 J S R P R I N T2 1 J S C L R C H2 2 L D # L O G I C A L F I L E N U M B E R2 3 J S C L O S E2 4 R T

1 8

Page 196: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

L i n e s 1 0 t 1 3 s e t u p t h p a r a m e t e r s f o r t h e O P E N . T h e r e i

n f i l e n a m e , s t h l e n g t h o t h f i l e n a m e i s e t z e r o i l i n e 1 4 0 t o 1 5 0 . L i n e 1 6 O P E N S t h f i l e . N o w o u t p u t t o t h el o g i c a l f i l e i e n a b l e d ( l i n e s 1 7 0 - 1 8 0 ) a n t h A S C I Iv a l u e o " I i t r a n s m i t t e d t o t h e d i s k ( d e v i c e 8 b t h P R I N T r o u t i n e t i n i t i a l i z e t h d i s k e t t e . R o u t i n e C L R C H ,r e d i r e c t s o u t p u t t t h s c r e e n . F i n a l l y , l i n e s 2 2 a n 2 3 C L O S E S t h f i l e a n e x e c u t i o n r e t u r n s t B A S I C ( o o t h e rc a l l i n g p r o g r a m ) w i t h t h R T S .

T h n e x t e x a m p l e , r e a d s t h e r r o r c h a n n e l o t h d i s k d r i v ea n d i s p l a y t h e r r o r m e s s a g e o t h s c r e e n . Y o c a d t h i si B A S I C l i k e t h i s :

1 0 O P E N 1 , 8 , 1 51 1 I N P U T # 1 , A , B $ f C , D1 2 P R I N T A B $ C 1 3 C L O S E

B e c a u s e w c a o u t p u t t h e r r o r m e s s a g e d i r e c t l y t t h s c r e e n , w e n e e d n v a r i a b l e s i o u p r o g r a m . W e s i m p l y r e a dc h a r a c t e r s f r o m t h c h a n n e l u n t i l t h s t a t u s v a r i a b l e S T i

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

1 0 O P E N 1 , 8 , 1 51 1 G E T # 1 , A P R I N T A $ 1 2 I S < > 6 4 T H E N 1 1 1 3 C L O S E

T d t h i s i m a c h i n e l a n g u a g e , y o m u s t k n o w t h a t t h

1 8

Page 197: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

s t a t u s v a r i a b l e o f t h e o p e r a t i n g s y s t e m S T i s t o r e d i l o c a t i o n 1 4 o $ 9 0 . L e t ' s t 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 :

1 O P E N $ F F C 02 S E T F L S $ F F B A3 S E T N A M $ F F B D4 P R I N T $ F F D 25 C L R C H $ F F C C6 I N P U T $ F F C F7 C H K I N $ F F C 68 C L O S E $ F F C 39 S T A T U S $ 9 S T A T U S V A R I A B L E1 0 L D # L O G I C A L F I L E N U M B E R

1 1 L D # D E V I C E N U M B E R1 2 L D # 1 S E C O N D A R Y A D D R E S S1 3 J S S E T F L S1 4 L D # 1 5 J S S E T N A M N N A M E1 6 J S O P E N O P E N F I L E1 7 L D # L O G I C A L F I L E N U M B E R1 8 J S C H K I N I N P U T F R O M E R R O R C H A N N E L1 9 L J S R I N P U T G E C H A R A C T E R2 0 J S P R I N T A N O U T P U T2 1 B I S T A T U S T E S T S T A T U S2 2 B V L 2 3 J S C L R C H I N P U T F R O M D E F A U L T2 4 L D # 2 5 J S C L O S E2 6 R T 2 7 0 . E N

T h r o u t i n e f r o m t h p r e v i o u s p r o g r a m f o O P E N i n g t h f i l ei t h e s a m e . T h i s t i m e , w i n p u t d a t a f r o m t h f i l e . L i n e s1 7 a n 1 8 s e t u p t d o t h i s . T h X - r e g i s t e r i l o a d e d w i t ht h l o g i c a l f i l e n u m b e r a n d t h e r o u t i n e C H K I N i c a l l e d .

I n p u t i n o r e a d f r o m t h d i s k d r i v e . L i n e 1 9 r e a d sc h a r a c t e r f r o m t h d i s k a n l i n e 2 0 w r i t e s i t t h s c r e e nw i t h J S P R I N T . T h o u t p u t g o e s t t h s c r e e n b e c a u s e w d i n o p r e v i o u s l y u s C H K O U T . T h s t a t u s v a r i a b l e S i t e s t e dw i t h t h B I i n s t r u c t i o n . I t h e n o f t h e f i l e i r e a c h e d ,s t a t u s v a r i a b l e S i s e t 6 4 6 i e q u a l t 2 o

1 8

Page 198: The Machine Language Book for the Commodore 64

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

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

Page 199: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

N o w y o u c a t r o u t h m a c h i n e l a n g u a g e r o u t i n e b t y p i n g :

S Y 4 9 1 5 2

T h e r r o r m e s s a g e f r o m t h d i s k a p p e a r s o t h s c r e e n , s u c ha s

0 0 O K , 0 0 , 0 0

1 9

Page 200: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

1 0 B A S I C L o a d e r P r o g r a m

Y o u c a n e n t e r t h m a c h i n e l a n g u a g e p r o g r a m a s e q u e n c e o n u m b e r s i D A T A s t a t e m e n t s . T h e y c a b R E A D b B A S I Cp r o g r a m a n s t o r e d i m e m o r y w i t h P O K E , Y o u c a n o u t p u t t h v a l u e s i d e c i m a l b m e a n s o s m a l l B A S I C p r o g r a m a n i n s e r t t h e s e a D A T A s t a t e m e n t s i l o a d e r p r o g r a m . H e r e i

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

I i u s e d a f o l l o w s . F i r s t l o a d y o u r m a c h i n e l a n g u a g ep r o g r a m . T h e n t y p e i 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 d R U Ni t Y o a r n o a s k e d t e n t e r t h s t a r t i n g a n e n d i n ga d d r e s s e s o t h m a c h i n e l a n g u a g e p r o g r a m . T h p r o g r a mc r e a t e s c o m p l e t e l o a d e r p r o g r a m o n t h e p r i n t e r w i t h a a u t o m a t i c a l l y g e n e r a t e d c h e c k s u m . T h c h e c k s u m i s i m p l y t h s u o a l t h v a l u e s . T h v a l u e s a r s u m m e d w h i l e b e i n gl o a d e d a n t h c h e c k s u m c o n t a i n e d w i t h i n t h p r o g r a m i c h e c k e d a g a i n s t t h v a l u e g e n e r a t e d b y t h e p r o g r a m . I t h t w o v a l u e s a r e n ' t e q u a l , a a p p r o p r i a t e m e s s a g e i d i s p l a y e d .

B d o i n g t h i s y o u c a n d e t e r m i n e i t h u s e r m a d e a e r r o rw h i l e t y p i n g i t h d a t a .

1 0 O P E N 1 , 1 0 1 1 I N P U T " S T A R T A D D R E S S " ; 1 2 I N P U T " E N D A D D R E S S " ; 1 3 C M D 1 P R I N T " F O R = " T O "1 4 I = Z = Z + 1 0 P R I N T " R E A D P O K E I , S = S + X N E X T "1 5 Z = Z + 1 0 N = P R I N T " D A T A "

1 9

Page 201: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 6 X = P E E K ( I ) S = S + X P R I N T R I G H T $ ( " " + S T R $ ( X ) , 3 ) ; : N = N + 11 7 I I = T H E N P R I N T G O T O 2 0 01 8 1 = 1 + 1 : I F N = 1 2 T H E N P R I N T : G O T O 1 5 01 9 P R I N T " r " ; : G O T O 1 6 02 0 P R I N T Z + 1 0 " I S O " T H E N P R I N T " C H R $ ( 3 4 ) " E R R O R

I D A T A I I C H R $ ( 3 4 ) P R I N T E N D " E N 2 1 P R I N T Z + 2 0 " P R I N T C H R $ ( 3 4 ) " O K " C H R $ ( 3 4 )2 2 P R I N T # 1 : C L O S E 1

1 9

Page 202: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

1 1 6 5 1 0 D i s a s s e m b l e r

T h i s s e c t i o n c o n t a i n s p r o g r a m c a l l e d d i s a s s e m b l e r . T h p u r p o s e o d i s a s s e m b l e r i t t r a n s l a t e m a c h i n e l a n g u a g ep r o g r a m s i m e m o r y b a c k t t h m n e m o n i c s u s e d f o e n t e r i n ga s s e m b l y l a n g u a g e p r o g r a m s . F r o m t h s e q u e n c e $ A 9 f $ 8 0 , f o

e x a m p l e , t h d i s a s s e m b l e r g e n e r a t e s L D # $ 8 0 . T h e

d i s a s s e m b l e r i s i m p l y s t a r t e d w i t h R U N a n d i a s k s f o r t h es t a r t i n g a n e n d i n g a d d r e s s e s o t h m e m o r y r a n g e t d i s a s s e m b l e . T h o u t p u t t h e n a p p e a r s o t h s c r e e n , b u i c a b r e d i r e c t e d t t h p r i n t e r w i t h a a p p r o p r i a t e O P E Ni n s t r u c t i o n a n C M a s s i g n m e n t .

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

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

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

1 9

Page 203: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

H e r e i t h d i s a s s e m b l e r l i s t i n g .

1 0 R E M 6 5 1 0 D I S A S S E M B L E R1 1 D I M M N $ < 2 5 5 > , A D < 2 5 5 ) , H $ < 1 5 >1 2 F F = 2 5 5 : H = 2 5 6 : U L = 2 T 1 6 S C = 2 1 5 - 11 3 P R I N T " i C L R y C C / D N 3 - { C / D N 3 - { C / D N 3 - - C C / R T 3 - < i C / R T 3 - C C / R T 3 - { C / R T 3 < : C / R T > - C C / R 1C C / R I X C / R t M C / R T 3 C C / R T M C / R T 3 - 6 5 1 O D I S A S S E M B L E R "1 4 F 0 R I = 0 T 0 1 5 : R E A D H * ( I ) : N E X T1 5 F 0 R I = 0 T 0 2 5 5 : R E A D M N * ( I > , A D < I ) : N E X T1 6 P R I N T " < C / D N 3 S T A R T A D D R E S S : - * * * * * < : C / L F > < C / L F 3 - I C / L F 3 - { C / L F 3 - C C / L F 3 -1 7 G 0 S U B 5 4 0 : S = A1 8 P R I N T " C C / D N 3 - E N D A D D R E S S : - * * * * * < : C / L F 3 - < : C / L F > - C C / L F 3 ■ C C / L F 3 • - C . C / L F 3C C / L F J " I P U A * P R I N T1 9 G 0 S U B 5 4 0 : E = A

2 0 F 0 R P = S T 0 E2 1 A = * P : G 0 S U B 4 5 0 : R E M A D D R E S S2 2 P R I N T " " ; : A = P E E K ( P ) : B 0 S U B 4 8 0 : P R I N T " " ; : I = P E E K ( P ) : O P - A D ( I )2 3 0 N 0 P G 0 S U B 5 1 0 , 5 2 0 , 5 2 0 , 5 1 0 , 5 3 0 , 5 2 0 , 5 2 0 , 5 3 0 , 5 3 0 , 5 2 0 , 5 2 0 , 5 2 0 , 5 3 02 4 0 P R I N T " " ; M N * < I > " " 2 5 0 N 0 P G 0 S U B 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 , 4 0 02 6 N E X T P : G O T O 1 6 02 7 P R I N T : R E T U R N2 8 P R I N T " * * " ; : G 0 S U B 4 9 0 : P = P + 1 : P R I N T : R E T U R N2 9 G 0 S U B 4 9 0 : P = P + l : P R I N T : R E T U R N3 0 P R I N T " A " : R E T U R N3 1 G 0 S U B 4 2 0 : P = P + 2 : P R I N T : R E T U R N3 2 G 0 S U B 4 9 0 : P = P + 1 : P R I N T " , X " : R E T U R N3 3 G 0 S U B 4 9 0 : P = P + 1 : P R I N T " , Y " : R E T U R N3 4 G 0 S U B 4 2 0 : P = P + 2 : P R I N T " , X " : R E T U R N3 5 G 0 S U B 4 2 0 : P = P + 2 : P R I N T " , Y " R E T U R N3 6 P R I N T " ( " ; : G 0 S U B 4 9 0 : P = P + 1 : P R I N T " ) , Y " : R E T U R N3 7 P R I N T " < " ; : G 0 S U B 4 9 0 : P = P + l : P R I N T " , X ) " : R E T U R N3 8 T = P E E K ( P + 1 ) : Q = T + H I * T > 1 2 7 ) + 2 + P3 9 A = I N T ( Q / H I ) * H I + ( ( Q + ( Q > S C ) * U L > A N D F F ) : P R I N T " * " ; : G O S U B 4 f 5 O : P = P + 1 :4 0 P R I N T " ( " ; : G 0 S U B 4 2 04 1 P R I N T " > " : P = P + 2 : R E T U R N4 2 P R I N T " * " ;4 3 A = P E E K ( P + 1 ) + H I * P E E K ( P + 2 )4 4 R E H E A D D R E S S4 5 H B = I N T ( A / H I ) : A = A - H I * H B4 6 P R I N T H $ < H B / 1 6 ) H $ ( H B A N D 1 5 > ;4 7 0 R E M H E X B Y T E4 8 P R I N T H * < A / 1 6 ) H * < A A N D 1 5 > ; : R E T U R N4 9 P R I N T " * " ;5 0 A = P E E K ( P + 1 ) : G D T 0 4 8 05 1 P R I N T " " ; : R E T U R N5 2 G 0 S U B 5 0 0 : P R I N T " " ; : R E T U R N5 3 G 0 S U B 5 0 0 : P R I N T " " 5 : A « P E E K < P + 2 ) : G D T 0 4 8 05 4 I F A S C ( A * ) = 4 2 T H E N E N D5 5 0 A = O : F O R I 1 T O 4 : V = A S C ( R I G H T * ( A * , I ) - 4 0 : V = V + ( V > 9 ) * 7 A = A W * ( 1 6 1U - l ) : N E X f : R E I U R N

1 0 0 0 D A T A 0 , l , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , h1 0 1 0 D A T A " B R K " , 1 , " O R A " , 1 1 , " ? ? ? " , l1 0 2 0 D A T A " ? ? ? " " ? ? ? • ' " O R A "1 0 3 0 D A T A " A S L " , 3 , " ? ? ? " , 1 , " P H P " , 11 0 4 0 D A T A " O R A " , 2 , " A S L " , 4 , " ? ? ? " , 11 0 5 0 D A T A " ? ? ? " , ! , " O R A " , 5 , " A S L " , 5

1 9

Page 204: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 0 6 0 D A T A " ? ? ? " , 1 , " B P L " , 1 2 , " O R A " , 1 01 0 7 0 D A T A " ? ? ? " ' • ? ? ? " » ? ? ? • •1 0 8 0 D A T A " O R A " " A S L " , 6 , " ? ? ? " , 11 0 9 0 D A T A " C L C " , 1 , " O R A " , 9 , " ? ? ? " , 11 1 0 0 D A T A " ? ? ? " , 1 , " ? ? ? " , 1 , " O R A " , 81 1 1 0 D A T A " A S L " , 8 , " ? ? ? " , 1 , " J S R " , 51 1 2 0 D A T A " A N D " , 1 1 , " ? ? ? " » ? ? ? ' •1 1 3 0 D A T A " B I T " , 3 , " A N D " , 3 , " R O L " , 31 1 4 0 D A T A " ? ? ? " , 1 , " P L P " , 1 , " A N D " , 21 1 5 0 D A T A " R O L " , 4 , " ? ? ? " , 1 , " B I T " , 51 1 6 0 D A T A " A N D " , 5 , " R O L " , 5 , " ? ? ? " , 11 1 7 0 D A T A " B M I " , 1 2 , " A N D " , 1 0 , " ? ? ? " , 11 1 8 0 D A T A " ? ? ? " , 1 , " ? ? ? " , 1 , " A N D " , 61 1 9 0 D A T A " R O L " , 6 , " ? ? ? " , 1 , " S E C " , 11 2 0 0 D A T A " A N D " , 9 , " ? ? ? " , 1 , " ? ? ? " , 11 2 1 0 D A T A " ? ? ? " , 1 , " A N D " , 8 , " R O L " , 81 2 2 0 D A T A " ? ? ? " , 1 , " R T I " , 1 , " E O R " , 1 11 2 3 0 D A T A " ? ? ? " " ? ? ? " • • ? ? ? ■ • 7 1 2 4 0 D A T A " E O R " , 3 , " L S R " , 3 , " ? ? ? " , 11 2 5 0 D A T A " P H A " , 1 , " E O R " , 2 , " L S R " , 41 2 6 0 D A T A " ? ? ? " , 1 , " J M P " , 5 , " E O R " , 51 2 7 0 D A T A " L S R " , 5 , " ? ? ? " , 1 , " B V C " , 1 21 2 8 0 D A T A " E O R " , 1 0 , " ? ? ? " , 1 , ' ' 7 7 7 " ? 1 2 9 0 D A T A " ? ? ? " , 1 , " E O R " , 6 , " L S R " , 61 3 0 0 D A T A " ? ? ? " , 1 , " C L I " , 1 , " E O R " , 91 3 1 0 D A T A " ? ? ? " , 1 , » ? ? ? » , 1 , » ? ? ? " ?1 3 2 0 D A T A " E O R " , 8 , " L S R " , 8 , " ? ? ? " , 11 3 3 0 D A T A " R T S " " A D C " , 1 1 , ' ■ ? ? ? »1 3 4 0 D A T A " ? ? ? " , 1 , " ? ? ? " , 1 , " A D C " , 31 3 5 0 D A T A " R O R " , 3 , " ? ? ? " , 1 , " P L A " , 11 3 6 0 D A T A " A D C " , 2 , " R O R " , 4 , " ? ? ? " , 11 3 7 0 D A T A " J M P " , 1 3 , " A D C " , 5 , " R O R " , 51 3 8 0 D A T A " ? ? ? " , 1 , " B V S " , 1 2 , " A D C " , 1 01 3 9 0 D A T A " ? ? ? " " ? ? ? " • • ? ? ? • •1 4 0 0 D A T A " A D C " , 6 , " R O R " , 6 , " ? ? ? " , 11 4 1 0 D A T A " S E I " , 1 , " A D C " , 9 , " ? ? ? " , 11 4 2 0 D A T A " ? ? ? " , 1 , " ? ? ? " , 1 , " A D C " , 81 4 3 0 D A T A " R O R " , 8 ■ • ? ? ? • ■ " ? ? ? " ,1 4 4 0 D A T A " S T A " , 1 1 , " ? ? ? ' • " 7 7 7 "1 4 5 0 D A T A " S T Y " , 3 , " S T A " , 3 , " S T X " , 31 4 6 0 D A T A " ? ? ? " " D E Y " ' ■ ? ? ? • '1 4 7 0 D A T A " T X A " , 1 , " ? ? ? " , 1 , " S T Y " , 51 4 8 0 D A T A " S T A " , 5 " S T X " , 5 ' • ? ? ? »1 4 9 0 D A T A " B C C " , 1 2 , " S T A " , 1 0 , " ? ? ? " , 11 5 0 0 D A T A " ? ? ? " , 1 , " S T Y " , 6 , " S T A " , 61 5 1 0 D A T A " S T X " , 7 , " ? ? ? " , 1 , " T Y A " , 11 5 2 0 D A T A " S T A " , 9 , " T X S " , 1 , " ? ? ? " , 11 5 3 0 D A T A " ? ? ? " " S T A " , 8 " ? ? ? ■ •1 5 4 0 D A T A " ? ? ? " , 1 , " L D Y " , 2 , " L D A " , 1 11 5 5 0 D A T A " L D X " , 2 , " ? ? ? " , 1 , " L D Y " , 31 5 6 0 D A T A " L D A " , 3 , " L D X " , 3 , " ? ? ? " , l1 5 7 0 D A T A " T A Y " , 1 , " L D A " , 2 , " T A X " , 11 . 5 8 0 D A T A " ? ? ? " " L D Y " , 5 " L D A " , 1 5 9 0 D A T A " L D X " , 5 , " ? ? ? " , 1 , " B C S " , 1 21 6 0 0 D A T A " L D A " , 1 0 , " ? ? ? • ' - 7 7 7 ' '1 6 1 0 D A T A " L D Y " , 6 , " L D A " , 6 , " L D X " , 71 6 2 0 D A T A " ? ? ? " , 1 , " C L V " , 1 , " L D A " , 91 6 3 0 D A T A ' T S X " • ' ? ? ? ' ■ " L D Y " ,

1 9

Page 205: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

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

D A T A " L D A "D A T A " C P Y "D A T A " ? ? ? "D A T A " D E C "D A T A " C M P "D A T A " C P Y "D A T A " ? ? ? "D A T A " ? ? ? "D A T A " C M P "D A T A " C L D "D A T A " ? ? ? 1 1D A T A " D E C "D A T A " S B C "D A T A " C P X "D A T A " ? ? ? "D A T A " N 0 P "D A T A " S B C "D A T A " B E Q "D A T A " ? ? ? "D A T A " I N C "D A T A " S B C "D A T A " ? ? ? "D A T A " ? ? ? "

" L D X " , 9 , " ? ? ? " , 1" C M P " , 1 1 , " ? ? ? " , 1" C P Y " , 3 , " C M P " , 3" D E X "" C M P" B N E" 7 7 ' ?" D E C" C M P

" S B C" I N X

I N , " S B C

/ ' ? ? ? "" ? ? ?" S B C

, 1 , " ? ? ? " , 1, 5 , " D E C " , 5

' , 1 2 , " C M P " , 1 0, 1 , " ? ? ? " , 1

' , 6 , " ? ? ? " , 1' , 9 , " ? ? ? " , 1\ 1 , " C M P " , 8' , 1 , " C P X " , 2? " , 1 , " ? ? ? " , 1' , 3 , " I N C " , 3\ 1 , " S B C " , 2' , 1 , " C P X " , 5

, 5 , " ? ? ? " , 1" , 1 0 , " ? ? ? " , 1, 1 , " S B C " , 6' l , " ? ? ? " ' l, 8 , " I N C " , 8

1 9

Page 206: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

P r o g r a m D e s c r i p t i o n1 0 1 5 I n i t i a l i z a t i o n ; b u i l d t a b l e s1 6 1 9 P r o m p t f o s t a r t i n g a n e n d i n g a d d r e s s e s f o t h

d i s a s s e m b l y a n c o n v e r s i o n t d e c i m a l ,2 0 2 6 F O R - N E X T l o o p f o d i s a s s e m b l y f r o m s t a r t i n g t

e n d i n g a d d r e s s . L i n e 2 2 g e t s t h i n s t r u c t i o nc o d e a n t h c u r r e n t a d d r e s s i o u t p u t . L i n e 2 3 o u t p u t s t h o p e r a n d s d e p e n d i n g o t h a d d r e s sm o d e . L i n e 2 4 o u t p u t s t h i n s t r u c t i o n m n e m o n i c .L i n e 2 5 d i s p l a y s t h o p e r a n d c o r r e s p o n d i n g t t h a d d r e s s i n g m o d e . L i n e 2 6 e n d s t h l o o p a n j u m p s b a c k t t h i n p u t .

2 8 4 1 O u t p u t t h o p e r a n d a t h a d d r e s s m o d e d i c t a t e s .4 2 5 3 O u t p u t h e x a d e c i m a l f o r m s o b y t e s a n d a d d r e s s e s ,5 4 5 5 C o n v e r s i o n o h e n u m b e r t d e c i m a l .

1 0 0 0 1 8 6 0 T a b l e s c o n t a i n i n g t h i n s t r u c t i o n m n e m o n i c s a n a d d r e s s i n g m o d e s .

1 9

Page 207: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

V a r i a b l e D e s c r i p t i o n

M N $ ( 2 5 5 ) T a b l e o i n s t r u c t i o n w o r d sA D ( 2 5 5 ) T a b l e o a d d r e s s m o d e sH $ ( 1 5 ) F i e l d w i t h h e d i g i t sF c o n s t a n t 2 5

H c o n s t a n t 2 5 U c o n s t a n t 6 5 5 3 6S c o n s t a n t 3 2 7 6 7A s t r i n g v a r i a b l e f o h e n u m b e r

s t a r t a d d r e s se n a d d r e s sp r o g r a m c o u n t e r

O a d d r e s s i n g m o d e

1 9

Page 208: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

1 2 U s i n g M a c h i n e L a n g u a g e M o n i t o r

H e r e ' s a n o t h e r t o o l t a i i m a c h i n e l a n g u a g e d e v e l o p m e n t .T h e t o o l i c a l l e d m o n i t o r .

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

l o c a t i o n s a n t h r e g i s t e r s . A d d i t i o n a l l y , y o u c a n s a v e a n l o a d m a c h i n e l a n g u a g e p r o g r a m s t t a p e o r d i s k e t t e . Y o u c a e x e c u t e m a c h i n e l a n g u a g e p r o g r a m s f r o m i t I y o u e n d s u c hp r o g r a m w i t h B R i n s t r u c t i o n , c o n t r o l i r e t u r n e d t t h m o n i t o r a n d 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 b d i s p l a y e d .

T h f o l l o w i n g i a e x p l a i n a t i o n o t h c o m m a n d s a v a i l a b l ew i t h t h S U P E R M O N m o n i t o r . S U P E R M O N i p u b l i c d o m a i nm o n i t o r w r i t t e n b w e l l k n o w C o m m o d o r e e x p e r t J i B u t t e r f i e l d w h o h a g i v e n u s m a n y u s e f u l t o o l s . S U P E R M O Ni a v a i l a b l e f r e e o c h a r g e f r o m m a n y s o u r c e s i n c l u d i n g m o s tl o c a l u s e r g r o u p s . W e h a v e e x p l a i n e d t h e u s e o S U P E R M O N

b e a c u s e i t i s s w i d e l y a v a i l a b l e .

S U P E R M O N i s t a r t e d b L O A D " S U P E R M O N " , 8 a n a c t i v a t e dw i t h R U N . T h m o n i t o r r e s p o n d s w i t h :

. . J I M B U T T E R F I E L DB

P S R A C X R Y S . 9 8 3 5 3 4 E 0 0 F 6

i n d i c a t e s t h a t t h m o n i t o r w a e n t e r e d b " B R K "

2 0

Page 209: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h l a b e l s a r a f o l l o w s :

P p r o g r a m c o u n t e rS s t a t u s r e g i s t e rA a c c u m u l a t o rX x - r e g i s t e rY y - r e g i s t e rS s t a c k p o i n t e r

T h c o n t e n t s o t h o s e r e g i s t e r s a p p e a r b e l o w t h l a b e l s . Y o c a c h a n g e t h c o n t e n t s o a n r e g i s t e r b m o v i n g t h c u r s o ro v e r t h e o l d c o n t e n t s , o v e r w r i t i n g i w i t h t h n e v a l u e ,a n p r e s s i n g t h < R E T U R N > k e y . I y o w a n t t c h a n g e t h f l a g s , t h s t a t u s r e g i s t e r m u s t b c h a n g e d .

S U P E R M O N u s e s t h p e r i o d a i t p r o m p t . W h e n y o s e t h

p e r i o d o n t h e s c r e e n , S U P E R M O N i a s k i n g y o t e n t e rc o m m a n d .

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

.

a n p r e s s i n g t h < R E T U R N > k e y . T h c o n t e n t s o f t h e r e g i s t e r si d i s p l a y e d , j u s t a a b o v e .

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

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

2 0

Page 210: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

n u m b e r s s u c h a s

. A O A O A O A FA O A O C 4 4 D 4 4 5 D

. A 0 A 8 4 4 1 5 4 C 4 4 5 5

S U P E R M O N d i s p l a y s t h c o n t e n t s m e m o r y b e l o w y o u r e n t r y . Y o uc a i n t e r p r e t t h o u t p u t i t h f o l l o w i n g w a y :

A a d d r e s s i d i s p l a y e d a f t e r t h e c o l o n . T h i s i t h a d d r e s so t h f i r s t o e i g h t f o l l o w i n g b y t e s . I t h i s e x a m p l e ,a d d r e s s $ A 0 A 0 c o n t a i n s t h v a l u e $ C 4 . A d d r e s s $ A 0 A l c o n t a i n s$ 4 6 f a n s o n t o t a l o e i g h t b y t e s a r d i s p l a y e d p e l i n e . S U P E R M O N d i s p l a y s a m a n y l i n e s a s p e c i f i e d b y t h e

a d d r e s s r a n g e w h i c h y o e n t e r e d .

T o c h a n g e s i n g l e b y t e i m e m o r y , m o v e t h c u r s o r o v e r t h o l d v a l u e , t y p e i t h n e v a l u e , a n p r e s s t h < R E T U R N >k e y .

I y o w a n t t e x e c u t e p r o g r a m , u s t h i n s t r u c t i o n G I t h p r o g r a m s t a r t s a a d d r e s s $ C F 2 0 , e n t e r

. C F 2 0

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

2 0

Page 211: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

p r o g r a m s h o u l d b B R w h i c h c a u s e s e x e c u t i o n t r e t u r n t t h m o n i t o r w h e n t h p r o g r a m i d o n e . W h e n B R i e x e c u t e d , t h r e g i s t e r c o n t e n t s a r t h e n a u t o m a t i c a l l yd i s p l a y e d , a b e l o w :

B P C S R A C X Y S

. C F 3 9 B 8 7 3 B O F 6

T h i n d i c a t e s t h a t y o u r p r o g r a m e n d e d w i t h B R i n s t r u c t i o n a n d t h a t t h m o n i t o r w a s e n t e r e d b m e a n s o t h i s B R K i n s t r u c t i o n . T h p r o g r a m c o u n t e r p o i n t s t t h b y t ei m m e d i a t e l y a f t e r t h B R i n s t r u c t i o n . I y o h a v e s e v e r a lB R c o m m a n d s i y o u r p r o g r a m , t h i s i n f o r m a t i o n t e l l s y o a w h i c h p o i n t y o u r p r o g r a m w a s t o p p e d .

K n o w i n g t h i s , y o c a d e v e l o p t h f o l l o w i n g m e t h o d f o t e s t i n g a n d e b u g g i n g p r o g r a m s . P l a c e B R i n s t r u c t i o n s a

a l o t h i m p o r t a n t l o c a t i o n s i t h p r o g r a m s t h a t t h p r o g r a m s t o p s a t h e s e p o i n t s . T h e n c h e c k t h r e g i s t e rc o n t e n t s a n d a t a i m e m o r y . I t h p r o g r a m h a r u p r o p e r l yu t t h i s p o i n t , r e p l a c e t h B R i n s t r u c t i o n w i t h t h

o r i g i n a l i n s t r u c t i o n a n p l a c e B R i n s t r u c t i o n a t h n e x tc r i t i c a l l o c a t i o n . T h i s w a y o c a t e s t y o u r p r o g r a m s t e pb s t e p u n t i l i r u n s t y o u r s a t i s f a c t i o n .

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

. " N A M E " , X X

2 0

Page 212: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T l o a d p r o g r a m t y p e t h n a m e o t h p r o g r a m i q u o t a t i o n m a r k s f o l l o w e d b c o m m a s e p a r a t i n g i t h d e v i c ea d d r e s s g i v e n a t w o - d i g i t h e n u m b e r a r e a I y o w a n tt l o a d t h p r o g r a m G R A P H I C f r o m d i s k f f o r e x a m p l e , t h i n s t r u c t i o n w o u l d l o o k l i k e t h i s :

. " G R A P H I C " , 0 8

I y o w a n t t l o a d f r o m c a s s e t t e , y o u u s e t h d e v i c ea d d r e s s 0 1

. " G R A P H I C S " , 0 1

T h S A V E c o m m a n d w o r k s t h s a m e w a y . B e c a u s e t h c o m p u t e rm u s t k n o w t h m e m o r y r a n g e t o s a v e , i i n e c e s s a r y t g i v e

s t a r t i n g a n a e n d i n g a d d r e s s . T h e e n d i n g a d d r e s s m u s t b

o n g r e a t e r t h a n t h l a s t b y t e y o w a n t t s a v e . T h c o m m a n dl o o k s l i k e t h i s :

, " P R O G R A M " , 0 8 , 7 0 0 0 , 8 0 0 0

I w r i t e s t h m e m o r y r a n g e f r o m $ 7 0 0 0 t $ 7 F F F t t h d i s ku n d e r t h n a m e " P R O G R A M " . H e r e t o o t h d e v i c e a d d r e s s 0 c a b e n t e r e d i o r d e r t s a v e t t h c a s s e t t e d r i v e .

A n o t h e r f u n c t i o n o S U P E R M O N i t h b u i l t - i n d i s a s s e m b l e r .B e n t e r i n g f o l l o w e d b y a n a d d r e s s r a n g e y o c a d i s p l a ym a c h i n e l a n g u a g e p r o g r a m s o t h s c r e e n i d i s a s s e m b l e d

2 0

Page 213: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

. B 8 2 4 B 8 2 C

t h f o l l o w i n g i d i s p l a y e d :

. B 8 2 4 2 0 E B B 7 J S R $ B 7 E BB 8 2 7 T X

. B 8 2 8 A 0 L D # $ 0 0. B 8 2 A 9 1 S T ( $ 1 4 ) , . B 8 2 C 6 R T

W d i s a s s e m b l e d p a r t o t h B A S I C i n t e r p r e t e r w h i c hp e r f o r m s t h P O K E c o m m a n d .

A n o t h e r u s e f u l c o m m a n d i S U P E R M O N a l l o w s o n a r e a o m e m o r yt b c o p i e d t a n o t h e r . E n t e r t h s t a r t i n g a n e n d i n ga d d r e s s e s o t h a r e a t b c o p i e d a n t h s t a r t i n g a d d r e s so t h d e s t i n a t i o n a r e a . T h c o n t e n t s o t h o r i g i n a l a r e aa r e l e f t u n c h a n g e d .

. 6 0 0 0 6 F F F 3 0 0 0

c o p i e s t h a r e a f r o m $ 6 0 0 0 t $ 6 F F F t t h a d d r e s s e s f r o m$ 3 0 0 0 t $ 3 F F F .

A n o t h e r u s e f u l f u n c t i o n h u n t c o m m a n d . W i t h t h i s c o m m a n d y o

2 0

Page 214: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

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

. E 0 0 0 E F F F 2 D F

s e a r c h e s t h r o u g h t h m e m o r y r a n g e f r o m $ E 0 0 0 t $ E F F F f o t h v a l u e s $ 2 0 f $ D 2 f $ F F . T h i s c o m m a n d w i l l d i s p l a y l i s to a d d r e s s e s a w h i c h t h e s e v a l u e s w e r e f o u n d . I t h i se x a m p l e w e w o u l d s e e :

E 1 0 C

S U P E R M O N f o u n d t h v a l u e s 2 0 D 2 F F a t t h a r e a o m e m o r ys t a r t i n g a E 1 0 C .

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

. 8 0 0 0 8 F F F 0

f i l l s t h a r e a f r o m $ 8 0 0 0 t $ 8 F F F w i t h z e r o b y t e s .

Y o u c a n u s e t h e n e x t c o m m a n d t a s s e m b l e s i n g l e l i n e s o m a c h i n e l a n g u a g e . B y e n t e r i n g t h f o l l o w i n g :

. 0 8 0 0 L D A # $ F F

S U P E R M O N w i l l a s s e m b l e t h m a c h i n e l a n g u a g e c o d e s A 9 F F i n t om e m o r y b e g i n n i n g a $ 0 8 0 0 . T h i s f u n c t i o n m a k e s i e a s y t e n t e r s h o r t m a c h i n e l a n g u a g e p r o g r a m .

2 0

Page 215: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

T h e l a s t c o m m a n d e x i t s f r o m S U P E R M O N a n r e t u r n s y o t t h

B A S I C i n t e r p r e t e r . S i m p l y e n t e r :

.

a n t h i n t e r p r e t e r w i l l r e s p o n d w i t h R E A D Y . I y o l a t e rw i s h t u s t h m o n i t o r a g a i n , y o c a r e t u r n t i b e n t e r i n g

S Y S 4 9 1 5 2

2 0

Page 216: The Machine Language Book for the Commodore 64

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

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

Page 217: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A P P E N D I X

G r o u p e d I n s t r u c t i o n s

B r a n c h B P B M B V B V B C C B C S B N E B E OI n s t r . 1 0 3 0 5 0 7 0 9 B 0 D O F 0

T r a n s f e r T X T A T Y T A T S X T X SI n s t r . 8 A A 9 A B A 9 AS t a c k P H P P L P P H P L I n s t r . 0 8 2 8 4 8 6 8J u m p B R J S R T R T J M J M N O I n s t r . 0 0 2 0 4 0 6 0 4 C 6 C E F l a g C L C S E C C L I S E C L C L S E I n s t r . 1 3 5 7 B D 8 F 8

I n c / D e c D E Y I N Y D E X I N XI n s t r . 8 C C E

2 0 S >

Page 218: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

C o n v e r s i o nD e c i m a l

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4

A P P E N D I XT a b l e D e c i m a l

H e 0 0 0 0 0 0 0 0 0 0 0 0 O 0 0 O 1 1 1 1 1 1 1 1 1 1 1 I 1 I I I 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3

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

H e x a d e c i m a lD e c i m a l

4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9

H e 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6

B i n a r yB i n a r y

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

2 1

Page 219: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m i n o d o r e 6 4

D e c i m a l9

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4

H e 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 9 9 9

B i n a r y0 1 1 0 0 0 1 10 1 1 0 0 1 0 00 1 1 0 0 1 0 10 1 1 0 0 1 1 00 1 1 0 0 1 1 10 1 1 0 1 0 0 00 1 1 0 1 0 0 10 1 1 0 1 0 1 00 1 1 0 1 0 1 10 1 1 0 1 1 0 00 1 1 0 1 1 0 10 1 1 0 1 1 1 00 1 1 0 1 1 1 10 1 1 1 0 0 0 00 1 1 1 0 0 0 10 1 1 1 0 0 1 00 1 1 1 0 0 1 10 1 1 1 0 1 0 00 1 1 1 0 1 0 10 1 1 1 0 1 1 00 1 1 1 0 1 1 10 1 1 1 1 0 0 00 1 1 1 1 0 0 10 1 1 1 1 0 1 00 1 1 1 1 0 1 10 1 1 1 1 1 0 00 1 1 1 1 1 0 10 1 1 1 1 1 1 00 1 1 1 1 1 1 11 0 0 0 0 0 0 01 0 0 0 0 0 0 11 0 0 0 0 0 1 01 0 0 0 0 0 1 11 0 0 0 0 1 0 01 0 0 0 0 1 0 11 0 0 0 0 1 1 01 0 0 0 0 1 1 11 0 0 0 1 0 0 01 0 0 0 1 0 0 11 0 0 0 1 0 1 01 0 0 0 1 0 1 11 0 0 0 1 1 0 01 0 0 0 1 1 0 11 0 0 0 1 1 1 01 0 0 0 1 1 1 11 0 0 1 0 0 0 01 0 0 1 0 0 0 11 0 0 1 0 0 1 01 0 0 1 0 0 1 1

D e c i m a l1 4 1 4 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 6 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 9 1 9 1 9 1 9 1 9 1 9 1 9

H e 9 9 9 9 9 9 9 9 9 9 9 9 A A A A A A A A A A A A A A A A B B B B B B B B B B B B B B B B C C C C C

B i n a r y1 0 0 1 0 1 0 01 0 0 1 0 1 0 11 0 0 1 0 1 1 01 0 0 1 0 1 1 11 0 0 1 1 0 0 01 0 0 1 1 0 0 11 0 0 1 1 0 1 01 0 0 1 1 0 1 11 0 0 1 1 1 0 01 0 0 1 1 1 0 11 0 0 1 1 1 1 01 0 0 1 1 1 1 11 0 1 0 0 0 0 01 0 1 0 0 0 0 11 0 1 0 0 0 1 01 0 1 0 0 0 1 11 0 1 0 0 1 0 01 0 1 0 0 1 0 11 0 1 0 0 1 1 01 0 1 0 0 1 1 11 0 1 0 1 0 0 01 0 1 0 1 0 0 11 0 1 0 1 0 1 01 0 1 0 1 0 1 11 0 1 0 1 1 0 01 0 1 0 1 1 0 11 0 1 0 1 1 1 01 0 1 0 1 1 1 11 0 1 1 0 0 0 01 0 1 1 0 0 0 11 0 1 1 0 0 1 01 0 1 1 0 0 1 11 0 1 1 0 1 0 01 0 1 1 0 1 0 11 0 1 1 0 1 1 01 0 1 1 0 1 1 11 0 1 1 1 0 0 01 0 1 1 1 0 0 11 0 1 1 1 0 1 01 0 1 1 1 0 1 11 0 1 1 1 1 0 01 0 1 1 1 1 0 11 0 1 1 1 1 1 01 0 1 1 1 1 1 11 1 0 0 0 0 0 01 1 0 0 0 0 0 11 1 0 0 0 0 1 01 1 0 0 0 0 1 11 1 0 0 0 1 0 0

Page 220: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o f t h e C o m m o d o r e 6

D e c i m a l1 9 1 9 1 9 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 1 2 1 2 1 2 1 2 i 2 1 2 1 2 1 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2

H e C C C C C C C C C C C D D D D D D D D D D D D D D D D E E E

B i n a r y1 1 0 0 0 1 0 11 1 0 0 0 1 1 01 1 0 0 0 1 1 11 1 0 0 1 0 0 01 1 0 0 1 0 0 11 1 0 0 1 0 1 01 1 0 0 1 0 1 11 1 0 0 1 1 0 01 1 0 0 1 1 0 11 1 0 0 1 1 1 01 1 0 0 1 1 1 11 1 0 1 0 0 0 01 1 0 1 0 0 0 11 1 0 1 0 0 1 01 1 0 1 0 0 1 11 1 0 1 0 1 0 01 1 0 1 0 1 0 11 1 0 1 0 1 1 01 1 0 1 0 1 1 11 1 0 1 1 0 0 01 1 0 1 1 0 0 11 1 0 1 1 0 1 01 1 0 1 1 0 1 11 1 0 1 1 1 0 01 1 0 1 1 1 0 11 1 0 1 1 1 1 01 1 0 1 1 1 1 11 1 1 0 0 0 0 01 1 1 0 0 0 0 11 1 1 0 0 0 1 0

D e c i m a l2 2 2 2 2 2 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 5 2 5 2 5 2 5 2 5 2 5

H e E E E E E E E E E E E E E F F F F F F F F F F F F F F F F

B i n a r y1 1 1 0 0 0 1 11 1 1 0 0 1 0 01 1 1 0 0 1 0 11 1 1 0 0 1 1 01 1 1 0 0 1 1 11 1 1 0 1 0 0 01 1 1 0 1 0 0 11 1 1 0 1 0 1 01 1 1 0 1 0 1 11 1 1 0 1 1 0 01 1 1 0 1 1 0 11 1 1 0 1 1 1 01 1 1 0 1 1 1 11 1 1 1 0 0 0 01 1 1 1 0 0 0 11 1 1 1 0 0 1 01 1 1 1 0 0 1 11 1 1 1 0 1 0 01 1 1 1 0 1 0 11 1 1 1 0 1 1 01 1 1 1 0 1 1 11 1 1 1 1 0 0 01 1 1 1 1 0 0 11 1 1 1 1 0 1 01 1 1 1 1 0 1 11 1 1 1 1 1 0 01 1 1 1 1 1 0 11 1 1 1 1 1 1 01 1 1 1 1 1 1 1

2 1

Page 221: The Machine Language Book for the Commodore 64

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

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

       

                      

   

  

    

   

   

  

  

  

   

   

  

    

          

    

        

  

    

   

   

   

  

  

  

   

   

   

  

    

          

    

        

  

    

   

   

  

  

  

   

   

   

  

    

          

    

        

  

    

   

   

  

  

  

       

   

  

    

          

    

        

    

   

   

   

  

  

   

   

   

  

    

              

      

    

  

      

   

   

   

  

  

  

   

   

   

 

  

    

              

      

            

  

  

    

   

   

   

  

  

  

   

   

   

 

  

    

          

    

        

  

    

   

   

   

  

  

  

   

   

   

  

    

          

    

        

                 

                          

                                                        

              

         

                  

                                                   

           

                        

         

   

          

       

        

      

        

      

       

       

      

       

      

        

              

        

      

          

     

Page 222: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A D A N A S B C B C B E B I B M B N B P B R B V B V C L C L C L C L C M C P C P D E D E D E E O I N I N I N J M J S L D L D L D N O O R

O P E R A T I O NB i m a 0 1 1 X X X 0 10 0 1 X X X 0 10 0 0 X X X 1 01 0 0 1 0 0 0 01 0 1 1 0 0 0 01 1 1 1 0 0 0 00 0 1 0 X 1 0 00 0 1 1 0 0 0 01 0 0 1 0 0 0 00 0 0 1 0 0 0 00 0 0 0 0 0 0 00 1 0 1 0 0 0 00 1 1 1 0 0 0 00 0 0 1 1 0 0 01 1 0 1 1 0 0 00 1 0 1 1 0 0 01 0 1 1 1 0 0 01 1 0 X X X 0 11 1 1 0 X X 0 01 1 0 0 X X 0 01 1 0 X X 1 1 01 1 0 0 1 0 1 01 0 0 0 1 0 0 00 1 0 X X X 0 10 0 0 X X 1 1 01 1 1 0 1 0 0 01 1 0 0 1 0 0 00 1 X 0 1 1 0 00 0 1 0 0 0 0 01 0 1 X X X 0 11 0 1 X X X 1 01 0 1 X X X 0 01 1 1 0 1 0 1 00 0 0 X X X 0 1

A P P E N D I XC O D E S A N D F L

X

2 1

Page 223: The Machine Language Book for the Commodore 64

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

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

T h e M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

P H P H P L P L R O R O R T R T S B S E S E S E S T S T S T T A T A T S T X T X T Y

B i m a 0 1 0 0 1 0 0 00 0 0 0 1 0 0 00 1 1 0 1 0 0 00 0 1 0 1 0 0 00 0 1 X X X 1 00 1 1 X X X 1 00 1 0 0 0 0 0 00 1 1 0 0 0 0 01 1 1 X X X 0 10 0 1 1 1 0 0 01 1 1 1 1 0 0 00 1 1 1 1 0 0 01 0 0 X X X 0 11 0 0 X X 1 1 01 0 0 X X 1 0 01 0 1 0 1 0 1 01 0 1 0 1 0 0 01 0 1 1 1 0 1 01 0 0 0 1 0 1 01 0 0 1 1 0 1 01 0 0 1 1 0 0 0

I t h e b i t m a o i n s t r u c t i o n c o n t a i n s o n o m o r e X s t h e s e b i t s a r d e p e n d e n t o t h a d d r e s s m o d e . A i f l a gc o l u m n i n d i c a t e s t h a t t h a t f l a g i a f f e c t e d b y t h ei n s t r u c t i o n . A o m e a n s t h a t t h f l a g i c l e a r e d o s e t ,r e s p e c t i v e l y . I n e n t r y i g i v e n u n d e r p a r t i c u l a r f l a g ,t h i n s t r u c t i o n i q u e s t i o n d o e s n o t a f f e c t t h a t f l a g .

2 1

Page 224: The Machine Language Book for the Commodore 64

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

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

T h M a c h i n e L a n g u a g e B o o k o t h C o m m o d o r e 6

A P P E N D I X

O P T I O N A L D I S K E T T E O R D E R I N G I N F O R M A T I O N

T h l i s t i n g s i t h i s b o o k f o r t h e L E A s s e m b l e r , 6 5 1 0S i n g l e - S t e p S i m u l a t o r , D i s a s s e m b l e r a n S U P E R M O N m o n i t o r a r a v a i l a b l e o r e a d y t r u 1 5 4 1 F o r m a t D i s k e t t e ,B p u r c h a s i n g t h i s d i s k e t t e , y o c a e l i m i n a t e t y p i n g t h e s ep r o g r a m s i n t o y o u r C o m m o d o r e 6 f r o m t h l i s t i n g s .T h p r o g r a m s o t h d i s k e t t e h a v e b e e n f u l l y t e s t e d a n a r a v a i l a b l e f o r $ 1 4 . 9 5 $ 2 . 0 0 ( $ 5 . 0 0 f o r e i g n ) p o s t a g e a n h a n d l i n g c h a r g e .T o r d e r , s e n d n a m e , a d d r e s s a n c h e c k , m o n e y o r d e r o c r e d i t c a r d i n f o r m a t i o n t o

A B A C U S S O F T W A R EP . O . B O X 7 2 1 1

G R A N D R A P I D S , M 4 9 5 1 0F o f a s t s e r v i c e , o r d e r b p h o n e 6 1 6 / 2 4 1 - 5 5 1 0 .

B s u r e t a s f o t h " O p t i o n a l D i s k e t t e f o t h M a c h i n eL 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

9 1

Page 225: The Machine Language Book for the Commodore 64

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

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

G E T H M O S T ( X J T

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 l 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 l 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 0 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 Y H Y - 6 4T h i s i r e n o w n e d a t h t i n e s ! 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 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 m a k e s m u s i c b e l 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 f t h i s p a c k a g eI 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 5

U 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 0 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 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 Y 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 c h a w s p > e . b a a n l i n e c h a r t s a n d g r a p h s f r o my o u r d a t a o D I F . M u l t i p l a n a n B u s i c a l c d i e s C h a r t s a r d r a w n i a n o 2 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 n 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 l e r I n c l u d e s m a n u a l a n 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 l 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 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 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 yl i 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 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 ts 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 t 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 r 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 SG r a a t B r i t a i n ' B t l o u l m - F r a n e r N Z t a l a n d :A O A M S O F T S S l E f e M S m A P F U C M O N ^ U N T E L K T R O N I C S1 N o r w i c h A v e . A V G u f l « u m e 3 0 1 4 A v e n u e P a u M J o u m e r S ^ J ^ ^R o c h d * . L a n e s B r u s s e l 1 1 6 0 . B e m u i m R u e f f l M a l m a i s o n . F r a n c e7 0 6 - 5 2 4 3 0 4 2 - 6 6 0 - 1 4 4 7 1 7 3 2 - 9 2 5 4W t s t Q t r m a n y : S w i d t n : A u s t r a l i a :W T B E C K E R T I A L T R A D I N G C E L E C T R O N I C SM e r o w b g e r s t r 3 P 5 1 6 4 1 6 L o o m R o a dW D j S H j d D f f 3 4 3 0 0 A l m h u B B r S S0 2 1 1 / 3 1 2 0 8 5 4 7 6 - 1 2 3 0 4 0 7 - 3 9 7 - 0 8 0 8

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

f t ? * ? * "6 3 - 6 6 - 6 9 8

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 $ 4 . 0 0 ( U . S . a n C a n a d a ) , a d $ 6 . 0 0f o 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 i d e n 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 226: The Machine Language Book for the Commodore 64

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

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

H A C K E R S O N L Y ! £ - 6 4T h u l t i m a t e s o u r c ef o C o m m o d d 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 I

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 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 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 i n c l u d e s t h e 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 D D $ 1 9 . 9 5

T H A N A T O M Y O T H 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 O e i a d 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 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 l a s t e r . m o r e m e m o r y e f i 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 r 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 o y o u c a n s e e t h o p e r at i o n o t h 6 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 c o l l e c t i o n o f 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 l o t h 6 p e r f 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 id e f i n e d c h a r a c t e r s e t s l o y s l 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 4t 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 da 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 sI 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 T H C - 6 4q i v e s y o u a n i n t e n s i v e t r e a t m e n t o t h p o w e r f u l 6 l 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 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 / 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 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 d w i t h y o u r ' 6 I t i w r i t t e n l o t h e 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 f 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 sP a c k e d w i t h e x a m p l e s a n d u t i l i t y p r o g r a m s , y o u ' l l l e a r nh o t m a k e h a r d c o p y o f t e x t a n g r a p h i c s , u s s e c o nd a r y a d d r e s s e s , p l o t 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 sI 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 eD 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 n t 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 I 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 sI 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 5 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 u 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 n -t a i n s n e o p e r a t i n g s y s t e m f o l 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 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 R I T E :

A b a c u s 1 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 4 9 5 1 0

E x c l u s i v e U . S . D A T A B E C K E R P u b H s l w mF 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 f 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 r s b c h e c k , m o n e y o r d e rc 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 \ 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 0C o m m o d o r e 6 i r » g . T . M . o C o m m o d o r t B u t i n M t M t c h i r w t

Page 227: The Machine Language Book for the Commodore 64

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

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

Page 228: The Machine Language Book for the Commodore 64

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

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