Page 1
T h e W o r k i n g
Co m m od or e
6 4
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 6 9 0 1 2 3 * + 5 6 7 8 9 0 1 .2 34 56 / 8 V 0 1 _ 3 4 5 6
; ^ 5 & m | i 2 3 4 5 6 7 8 9 0 1 2 * 5 6 7 M 0
I ' m a m
■
1
_
M W M W I
01 2 3 4 5 6 r S 9 m 2 3 ^ ^ 8 9 0 1 2 3 4 5 ™ S 4 0
0 1 _ 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
’ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 : 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 ' 7 l t 2' 3‘ + 5 6 7 8 9 0 1 2 3 4 5 6 7 8 7 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 6 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 } 2 3 4 5 6 7 8 9 0 1 2 3 4 5 A 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 ^ 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 8 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 ^ 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
S l 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 - 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 * . ’ 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
? 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 r
7 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1
7 0 1 2 3 4 5 , 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 , 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1
7 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 . 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1
7 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
7 0 1 2 3 4 5 6 7 8 9 0 1
7 0 1 2 3 4 5 6 7 8 9 0 1
7 0 1
7 0 1
2 * 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 ; 2 3 4 5 6 7 8 9 0
La w re n ce
2 5 l § S ^ f W 2 3 ? 5 ™ 8 W 2 3 ^ T C 7 ™ 1 ™ 3 4 5 , i 7 8 9 0
3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 4 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
Page 2
Page 3
T h e W o r k in g
C o m m o d o r e
6 4
A libra ry o f p r a c t i c a l
s u b r o u t i n e s a n d p r o g r a m s
D a v id Law ren ce
Page 4
P u b l i s h e d b y :
S u n s h in e B o o k s ( A n i m p r i n t o f Sc o t P r e s s L t d . )
H o b h o u s e C o u r t ,
1 9 W h i t c o m b S tr e e t ,
L o n d o n W C 2 7 H F
C o p y r i g h t © D a v id L a w r e n c e
F i r s t p u b l i s h e d F e b r u a r y 1 9 8 3
R e p r i n t e d J u l y 1 9 8 3
R e p r i n t e d S e p t e m b e r 1 9 8 3
R e p r i n t e d O c t o b e r 1 9 8 3
A l l r ig h ts re s e rv e d . N o p a r t o f t h i s p u b l i c a t i o n m a y b e rep ro d u ced ,
s t o r e d i n a r e tr ie v a l s y s t e m , o r t r a n s m i t t e d in a n y f o r m o r b y a n y
m ea ns , el ect ro n ic , m e c h an ic al , p h o t o c o p y i n g , r ec o r d in g a n d / o r
ot h erw is e, w i t h o u t t h e p r i o r w ri t te n p e r m i s s i o n o f t h e Pub lish er s.
IS BN 0 9 4 6 4 0 8 0 2 5
C o v e r d e s i g n e d b y
T h r e e ’ s C o m p a n y .
P h o t o g r a p h o f t h e C o m m o d o r e 6 4
k in d ly s u p p li e d b y C o m m o d o r e U K .
T y p e s e t a n d p r i n t e d in E n g l a n d b y
C o m m e r c ia l C o l o u r P r e s s , L o n d o n E7.
2
Page 5
C O N T E N T S
P a g e
C a l l i n g u p C o m m o d o r e 9
1
G o o d t h i n g s i n s m a l l p a c k a g e s
C l o c k
G r a p h
T e x t e d
2
P r o g r a m m i n g t o o l s
M e r g e 3 1
D e l e t e 3 3
R e n u m b e r 3 5
3 T h e c o l o u r f u l 6 4
A r t i s t
C h a r a c t e r s 5 0
S p r i t e s 6 0
H i - R e s 6 9
1 1
1 6
2 2
4 1
4
T h e 6 4 a s s e c r e t a r y
U n i f i l e
U n i f i l e I I 8 9
N n u m b e r 1 0 1
H o m e e d u c a t i o n
5
M u l t i Q
W o r d s
T y p i s t
H i g h m i c r o - f i n a n c e
6
B a n k e r 1 3 1
A c c o u n t a n t
B u d g e t
7
M u s i c
7 7
1 1 1
1 1 9
1 2 5
1 3 9
1 4 8
1 6 3
3
Page 6
Page 7
C o n t e n t s in de ta il
C H A P T E R 1
G o o d t h in g s in sm a ll p a c k a g e s
1 . 1 C l o c k — i n t r o d u c e s t h e 6 4 ’ s f le xi b le t i m e f u n c t i o n t o c r e a t e a c o l o u r f u l
way o f te lli ng t h e t im e .
1 . 2 G r a p h — b u i l d y o u r o w n c o l o u r e d t h r e e - d i m e n s i o n a l d i s p l a y s .
1 . 3 T e x t e d — y o u r o w n s im pl e w o r d - p r o c e s s o r .
C H A P T E R 2
P r o g r a m m i n g t o o l s
2 . 1 M e rg e — a llo w s y o u t o k e e p u s e f u l m o d u l e s o n t a p e a n d s tr i n g t h e m
t o g e t h e r w h e n n e e d e d .
2.2 De le te — a r o u t i n e e n a b l i n g y o u t o l o a d a n o r i g i n a l p r o g r a m a n d d e le te
p a r t s o f it t o s u it ne w a p p l i c a t i o n s .
2. 3 R e n u m b e r — g iv e a p r o f e s s i o n a l l o o k t o y o u r p r o g r a m s w i t h t h is
r e n u m b e r i n g r o u t i n e .
C H A P T E R 3
T h e c o l o u r f u l 6 4
3 . 1 A r t i s t — e n a b le s y o u t o u s e t h e s c re e n l ik e a n e a se l, p a i n t i n g o n
c o lo u r e d g r a p h i c s c h a r a c t e r s , e r a s i n g a n d c h a n g i n g t h e m , a n d s a v in g t h e m
o n t o t a p e .
3.2 C h a r a c t e r s —all o ws y o u t o c r e a t e y o u r o w n s p e ci a l c h a r a c t e r s , u s in g
t h e u s e r - d e f i n e d c h a r a c t e r c a p a b i l i t y .
3 .3 S p r it e s — let s y o u m o v e h i g h - r e s o l u t i o n d e s ig n s ea sil y a r o u n d t h e
screen.
3.4 H i - R e s —i n t r o d u c e s b i t - m a p p e d g r a p h i c s , a ll o w i n g y o u t o se t a n y
in d iv i d u a l d o t o r pixel o n t h e s c re e n .
C H A P T E R 4
T h e 6 4 as s e c r e ta r y
4 . 1 U n i f il e — t h i s use s t h e 6 4 ’ s s t r e n g t h s as a f il in g c a b i n e t , e n a b l i n g y o u
t o s to r e u p t o 5 0 0 e n t r i e s , s e a r c h f o r n a m e d i te m s , a n d t o a m e n d o r d e le te
t h e m .
5
Page 8
Th e Wor king C o m m o d o r e 6 4
4 .2 U n i f il e I I — s im i la r t o t h e p r e v i o u s p r o g r a m , t h is t a c k l e s l e s s
s t r u c t u r e d fi les a n d i n t r o d u c e s t h e m u l t i p l e s e a r c h r o u t i n e .
4 .3 N n u m b e r — t h i s c o p e s w i t h n u m e r i c d a t a w h e n y o u n e e d t o s t o r e
n a m e s o f ite m s a l o n g w i t h a u n i t o f q u a n t i t y .
C H A P T E R 5
H o m e e d u c a t i o n
5 . 1 M u l t i q — t h is p r o g r a m e x p la i n s h o w t o e n t e r a ser ies o f q u e s ti o n s a n d
a ns w e rs w hi c h f o r m t h e b a s is f o r m u l t i p l e c h o ic e t e s t s .
5.2 W o r d s —s im i la r t o M u l t i q , h e r e t h e q u e s t i o n s t a k e t h e f o r m o f
p i c t u r e s .
5 .3 T y p i s t — i m p r o v e y o u r t o u c h - t y p i n g w i t h t h is s h o r t , n e a t p r o g r a m .
C H A P T E R 6
H i g h m i c r o - f i n a n c e
6 . 1 B a n k e r —a llo w s y o u t o p r e s e n t y o u r f i n a n c i a l t r a n s a c t i o n s in t h e f o r m
o f a n e a t b a n k s t a t e m e n t .
6 .2 A c c o u n t a n t — a s im pl e w a y o f k e e p in g t r a c k o f y o u r a c c o u n t s .
6.3 B u d g e t —a p o w e r f u l a n d fle x ib le t o o l a ll o w i n g y o u t o p l a n y o u r
f in a n c e s o v e r a 1 2 - m o n t h p e r i o d .
C H A P T E R 7
Mu sic
T h e 6 4 h a s n o le ss t h a n t h r e e s o u n d s y n th e s i s e r s . T h i s p r o g r a m exp lai ns
h o w t o d e v e lo p y o u r o w n m u s i c a n d e m b e l li s h o t h e r p r o g r a m s i n t h is b o o k .
6
Page 9
P R O G R A M N O T E S
A n u m b e r o f f u n c t i o n s o n t h e C o m m o d o r e 64, a s w i t h o t h e r C o m m o d o r e
m ac hi ne s , a r e d i c t a t e d b y ‘ c o n t r o l c h a r a c t e r s ’ w h ic h a r e c o n t a i n e d in
o r d i n a r y st r i n g s a n d t a k e e f f e c t w h e n t h e s t r i n g i s p r i n t e d . C o n t r o l
c h a r a c te r s c a n n o r m a l l y b e r e c o g n i s e d b y t h e f a c t t h a t t h e y a r e in ve rs e
c h a r a c te r s ( th e c o l o u r s o f t h e b a c k g r o u n d a n d f o r e g r o u n d a r e r e v e r s e d in
th e c h a r a c t e r p o s i t i o n ) . T h e f u n c t i o n s u n d e r t h e c o n t r o l o f s u c h c h a r a c t e r s
includ e c u r s o r p o s i t i o n , p r i n t c o l o u r , i n v e r s e (RVS ) o n a n d o f f , c u r s o r
ho m e a n d c le a r s c re e n .
T h e fo ll o w i n g t a b l e s h ow s t h e c o n t r o l c h a r a c t e r s a s t h e y a p p e a r i n t h e
p r o g r a m s i n t h i s b o o k :
B L A C K ■
W H I T E 4
R E D » )
C Y A N k
P U R P L E m
G R E E N i i
B L U E 3
Y E L L O W ! i l
O R A N G E ; a
B R O W N I S
L I G H T R E D f f l
G R E Y 1 f l
G R E Y 2 »
7
Page 10
The Wor kin g C o m m o d o r e 6 4
L I G H T G R E E N I I
L I G H T B L U E H
g r a y 3 : :
R V S O N a
R V S O F F a
u p n
D O W N M
R I G H T P I
L E F T I I
8
Page 11
Calling up C o m m o d o r e
Thi s b o o k , a n d t h e ser ies o f wh i c h it f o r m s a p a r t , was u n d e r t a k e n t o t r y
a n d fi l l w h a t s eem ed t o b e a y a w n i n g g a p in t h e p r o v i s i o n o f b o o k s f o r
h o m e m i c r o - o w n e r s . T h a t g a p was t h e a b s e n c e o f w o r k s a i m e d a t f u lf il li n g
t h e d r e a m t h a t I t h i n k a l m o s t e ve ry o w n e r h a s , t h a t t h e ne w m a c h i n e w il l
n o t sim pl y b e a t o y , n o t ev en a n e d u c a t i o n a l i n t r o d u c t i o n t o t h e s ili co n ag e ,
b u t a t o o l , t a k i n g o v e r all k i n d s o f t a s k s a n d o p e n i n g u p all k i n d s o f
po ss ib ili tie s. T h e m a j o r i t y o f b o o k s c o n s i s t e i t h e r o f t r i v i a o r a s s u m e t o o
g r e a t a d e s ir e — p e r h a p s ev en t h e c a p a c i t y — t o e x p e r i m e n t .
I w a n t e d t o w r i te a b o o k b a s e d o n a s o li d c o l l e c t i o n o f p r o g r a m s t h a t
w o u l d be w o r t h h a v i n g —p r o g r a m s t h a t w o u l d h a n d l e s u c h a r e a s as d a t a
s to r a g e , f i n a n c e , g r a p h i c s , m u s i c , h o u s e h o l d m a n a g e m e n t a n d e d u c a t i o n .
D is cu ssi on o f p r o g r a m m i n g t e c h n i q u e s w o u l d a r i s e o u t o f t h e p r o g r a m s
th emselves r a t h e r t h a n as p a r t o f a c u r r i c u l u m o f ‘ t h i n g s t h a t s h o u l d b e
l e a r n e d ’ . I h o p e t h a t y o u w il l f i n d t h e b o o k t h a t h a s e m e r g e d f r o m t h a t
de sire a u s e fu l o n e , n o t o n l y as a w a y o f l e a r n i n g ne w p r o g r a m m i n g
t e c h n i q u e s , b u t a ls o as a c o l l e c t i o n o f p r o g r a m s i n i t s e l f , all o f t h e m t e s t e d
by a n i n d e p e n d e n t a s s e s s o r f o r e r r o r s a n d o f f e r i n g a wi de r a n g e o f
a p p li c a t i o n s t h a t m i g h t o n l y h a v e b e e n o p e n t o t h o s e p r e p a r e d t o b u y
exp ensive c o m m e r c i a l s o f t w a r e o r a l r e a d y a b le t o w r i te s u b s t a n t i a l
p r o g r a m s t o f it t h e i r o w n n e e d s .
I n a d d i t i o n t o t h e p r o g r a m s i n t h i s b o o k y o u h a v e t h e p a r t s o f t h e
p r o g r a m s — n o t as s il ly as it s o u n d s f o r t h e p r o g r a m s i n t h e b o o k a r e w r i t t e n
in ‘ m o d u l a r ’ f o r m . T h a t i s t o s ay t h e y a r e m a d e u p o f c le a rl y i d e n t i f i a b l e
f u n c t i o n a l u n i t s w h i c h , as y o u c o m e t o u n d e r s t a n d t h e m , c a n b e l i f t e d o u t
a n d e m p l o y e d f o r y o u r o w n p u r p o s e s . E a c h m o d u l e i s c o m m e n t e d u p o n
fully wher e it co v e rs ne w g r o u n d a n d i n s t r u c t i o n s a r e gi v en f o r t e s t i n g t h e
p r o g r a m s as t h e m o d u le s a r e e n t e r e d .
I n us ing t h i s b o o k , t h o u g h y o u w il l f i n d t h a t t h e r e a r e s e c t i o n s w h e r e
ge ne ral iss ues a r e d i s c u s s e d , it i s n o t a b o o k t o b e r e a d b u t t o b e u s e d . T h e
rele van ce o f t h e c o m m e n t s a n d a d v ic e w ill o n l y b e a p p a r e n t w h e n y o u h a v e
t a k e n t h e p l u n g e a n d a n d b e g u n t h e t a s k o f e n t e r i n g w h a t a p p e a r a t f i r s t t o
be d a u n t i n g l y lo n g a n d c o m p l e x p r o g r a m s . H e r e , t h e m o d u l a r a p p r o a c h
w i l l he lp t o p r e v e n t p r o g r a m s b e c o m i n g u n r e d e e m a b l e t a n g l e s o f e r r o r s , so
d o t e s t m o d u le s as s u g g e s t e d , e s p ec ia ll y i n t h e e a r l y s ta g e s .
I n t h e e n d h o w e v e r , t h e success o r f a i l u r e o f t h e b o o k m u s t b e j u d g e d o n
w h e t h e r it he lp s y o u t o e n j o y y o u r 64 . I t i s v e ry m u c h a ‘ 6 4 b o o k ’, f o r while
t h e g e n e ra l s t r u c t u r e o f t h e b o o k i s b a s e d u p o n its t w o p r e d e c e s s o r s i n t h i s
9
Page 12
Cal ling u p C o m m o d o r e
series, t h e p r o g r a m s we re a d a p t e d a n d ne w p r o g r a m s a d d e d t o t a k e
a c c o u n t o f t h e 6 4 ’ s e x t r a o r d i n a r y a b il it i e s . W h il e w r i ti n g a b o o k s uc h as
t h is i s h a r d w o r k , I h a v e n e v e rt h e l e s s e n j o y e d t h e p o l is h t h a t t h e 6 4 h a s
given t o p r o g r a m s t h a t o n le ss c a p a b l e m a c h i n e s m i g h t h a v e b e e n f a r l e s s
ex cit ing . I n u s in g t h e s e p r o g r a m s y o u w o n ’ t h a v e t o w o r k q u i t e as
h a r d — b u t t h e e n d p r o d u c t w ill b e j u s t as e xc iti n g .
F i n a ll y , n o i n t r o d u c t i o n t o a b o o k s u c h as t h i s c o u l d e n d w i t h o u t
ex pr es sin g p r o f o u n d t h a n k s t o C o m m o d o r e U K f o r all t h e facili tie s t h e y
ha v e m a d e a v a i l a b l e a n d n o t l e a s t t o St eve Be a ts a t C o m m o d o r e ’ s UK
h e a d q u a r t e r s , f o r hi s p a t i e n c e i n a n s w e r i n g t h e i d i o t i c q u e s ti o n s t h a t
o p e n e d u p t h e 6 4 f o r m e .
1 0
Page 13
C H A P T E R 1
G o o d t h i n g s in s m a l l p a c k a g e s
Th e p r o g r a m s in t h is b o o k a r e i n t e n d e d t o b e p u t t o w o r k o n a v a r i e t y o f
i m p o r t a n t a p p l i c a t i o n s . B e c a u s e m a n y o f t h e a p p l i c a t i o n s a r e c o m p l e x , so
a re m a n y o f t h e p r o g r a m s . T h a t s h o u l d n o t b e t a k e n t o m e a n t h a t u s e f u l
p r o g r a m s c a n n o t b e c o m p r e s s e d i n t o a sm a l l s p a c e . As a n i n t r o d u c t i o n t o
t h e a p p r o a c h a d o p t e d , t h i s c h a p t e r p r e s e n t s t h r e e r e l a ti v e ly s h o r t
p r o g r a m s t h a t a r e a n y t h i n g b u t t o y s .
1 .1 C L O C K
Th is p r o g r a m p r o v i d e s q u i t e a p l e a s a n t i n t r o d u c t i o n t o s o m e o f t h e 6 4 ’ s
a b ili ti es — i t ’ s easy t o e n t e r , f u n t o lea ve r u n n i n g o n t h e f a m i l y TV a n d it
m ake s g o o d use o f t h e 6 4 * s fle xi ble s t r i n g a n d s c re e n h a n d l i n g .
T h e p r o g r a m i s e x a ct ly w h a t it sa y s, a c lo c k , b u t y o u w o n ’ t s e e a circle
a n d h a n d s a p p e a r w h e n i t i s r u n . T h e 6 4 c lo c k uses t w o line s swee ping
a c ro ss t h e s c re e n , l e f t t o r i g h t f o r t h e m i n u t e s a n d d o w n w a r d s f o r t h e
h o u r s , d i vi d in g t h e s c re e n i n t o d i f f e r e n t c o l o u r a r e a s . Al l o f t h is i s o n l y
p os sib le b e c a u s e t h e 6 4 h a s a fle x ib le t i m e f u n c t i o n w h i c h c a n b e set a n d
r e a d in a s t r a i g h t f o r w a r d wa y f r o m w i t h i n t h e p r o g r a m .
C lo c k : T a b l e o f V a r ia b l e s
C S
D T$
H
M
M 1$,M2$
S S
TI $
M O D U L E 1 .1 . 1
A d d r e s s o f t h e s t a r t o f c o l o u r m e m o r y
F o r m a t t e d a d a p t a t i o n o f T I $
H o u r v a lu e a d j u s t e d i n t o s c re e n u n i t s
M i n u t e v a lu e a d j u s t e d i n t o s c re e n u n i t s
T w o - c o l o u r s tr i n g s d i s p l a y i n g h o u r a n d m i n u t e va lu e s
A d d r e s s o f t h e s t a r t o f t h e s c re e n
A s y s te m v a r i a b l e c o n t a i n i n g t h e t i m e b y t h e i n t e r n a l
c lo c k
1 1 y U W R E M t t * 4 5 4 5 4 * * 4 : $ $ $ 4 - $ 4 4 4 4 - 4 5 4 5 4 5 $ $ 4 4 5 4 : $ 4 4 5 5 t 5 4 5
1 1 0 1 0 R E M I N I T I A L I S E TI ME A N D D I S P LA Y
1 1 0 2 0
1 1 0 3 0 P O K E 5 3 2 8 0 , PO K E 5 3 2 8 1 , 1
1 1 0 4 0 I N P U T " r i S K P L E A S E I N P U T T H E H O U R ( 0
1 - 1 2 > : " : H $
1 1
Page 14
T h e Wor kin g C o m m o d o r e 6 4
1 . 1 0 5 0 I N P U T " K F S P L E f i S E I N P U T T H E HI M U T E C
8 0 - 5 9 ) : " M $
1 1 0 6 0 T I $ = H $ + M $ + " 0 0 "
1 1 0 7 0 P R I N T " M l 5 10 15 2 0 2 5 8 0 3 5
4 0 4 5 5 0 5 5 6 0 "
1 1 0 8 0 8 8 = 1 0 2 4 : C S = 5 5 2 9 6 : F O R 1 = 8 T O 2 4
1 1 0 9 0 P O K E C S + 4 0 * 1 ,0 : P O K E 8 8 + 4 0 * 1 , 1 6 0
1 1 1 0 8 P O K E 0 8 + 4 0 * I + 1 , 0 : P O K E 8 8 + 4 0 * I+ 1 , 1 6
0
1 1 1 1 0 P O K E 0 8 + 4 0 * I + 3 8 , 0 : P O K E 8 8 + 4 0 * I + 3 8 ,
1 6 0
1 1 1 2 0 P O K E 0 8 + 4 0 * I + 3 9 , 0 : P O K E 8 8 + 4 0 * I + 3 9 ,
: ! 60
1 1 1 3 0 N E X T I
1 1 1 4 0 P R I N T " S 3 " : F O R I = 1 T O 1 1 : P R I N T " S " ;
M I M - <S T R $ < I > . . 2 > : P R I N T : N E X T
1 1 1 5 0 P R I N T " a " ; M I D $ < S T R $ ( I > , 2 ' )
T h i s m o d u l e a ll o w s t h e u s e r t o i n p u t t h e t i m e i n h o u r s a n d m i n u t e s (1 2 h o u r
c lo c k f o r m a t ) , s ets t h e t i m e r a n d t h e n d is p l a y s t h e c lo c k f ac e .
C o m m e n ta r y
L i n e 1 1 0 3 0 : T w o u s e f u l m e m o r y l o c a t i o n s : 5 32 80 — r e d e f in e s t h e c o l o u r o f
t h e b o r d e r a r o u n d t h e s c r e e n , 5 3 2 8 1 r e d e f in e s t h e s c re e n b a c k g r o u n d
c o l o u r . E i t h e r o f t h e s e c a n b e r e s e t i n s t a n t a n e o u s l y d u r i n g t h e c o u r s e o f a
p r o g r a m . I n t h i s c a s e t h e b o r d e r i s s e t t o b l a c k a n d t h e s c re e n t o w h it e.
Li ne s 1 1 0 4 0 - 1 1 0 6 0 : H o u r s a n d m i n u t e s a r e i n p u t i n t w o d i g it f o r m . T h e y
a r e t h e n a d d e d t o g e t h e r a n d 00 i s a d d e d f o r t h e s e c o n d s . T h e s y s te m i s t o l d
t h a t t h i s i s T I $ a n d i m m e d i a t e l y r es e ts t h e i n t e r n a l c lo c k t o c o u n t f r o m t h a t
t im e .
L i n e 1 1 0 7 0 : T h e sc re e n i s c l e a r e d , t h e p r i n t c o l o u r set t o b l a c k a n d rev e rs e i s
s e t, t h e n t h e f ig u r e s a r e p r i n t e d a c r o s s t h e t o p o f t h e sc re e n .
Li ne s 1 1 0 8 0 - 1 1 1 3 0 : T h e b l a c k b o r d e r s o f t h e c lo c k a r e a a r e n o w p u t o n t o
t h e ed ge o f t h e sc re e n . W h e n p r i n t i n g r i g h t t o t h e ed ge o f t h e scre en i t i s
o f t e n m o r e c o n v e n i e n t t o P O K E c h a r a c t e r s o n t o t h e sc re e n , since t h is
a v o id s t h e p r i n t p o s i t i o n j u m p i n g f r o m o n e li n e t o t h e n e x t . I n o r d e r t o
P O K E t h e sc re e n su c c e s s fu l l y , t w o l o c a t i o n s m u s t b e d e a l t w i t h , o n e w i t h in
t h e sc re e n m e m o r y i t s e l f ( a d d r e s s e s 1 0 2 4 - 2 0 2 3 ) a n d t h e o t h e r w i t h i n t h e
c o l o u r m e m o r y ( 5 5 2 9 6 - 5 6 2 9 5 ) . A ll t h a t t h i s l o o p d o e s i s t o P O K E t h e f ir s t
t w o c h a r a c t e r s a n d t h e l a s t t w o c h a r a c t e r s o f t h e 2 5 line s o n t h e sc re e n wi th
1 2
Page 15
C h a p t e r 1 G o o d th in g s in s m a l l p a c k a g e s
a c h a r a c t e r c o d e o f 1 6 0 ( a n i n v e r s e s p a c e ) a n d t h e c o r r e s p o n d i n g l o c a t i o n
in t h e c o l o u r m e m o r y w i t h z e r o , w h i c h t u r n s t h a t c h a r a c t e r p o s i t i o n b l a c k .
Line 1 1 1 4 0 : T h e c u r s o r i s h o m e d a n d t h e h o u r s a r e p r i n t e d d o w n t h e l e f t
h a n d sid e o f t h e s c re e n . T h e l a s t v a l u e i s p r i n t e d s e p a r a t e l y w i t h a se m i
c o lo n fo ll o w i n g , so t h a t t h e s c r e e n w ill n o t s c r o l l u p w a r d s , sin ce i t i s o n t h e
b o t t o m lin e o f t h e s c re e n .
T e s t i n g M o d u l e 1 .1 .1
I n s e r t a t e m p o r a r y l in e 1 1 1 6 0 G O T O 1 1 1 6 0 a n d r u n t h e m o d u l e . Y o u
s h o u ld b e a s k e d t o i n p u t h o u r s a n d m i n u t e s , t h e n t h e b o r d e r s o f t h e c lo c k
face w il l b e p l a c e d o n t o t h e s c re e n . T h e t e m p o r a r y l in e e n s u re s t h a t t h e
scr een d o e s n o t s c ro ll u p w a r d s t o p r i n t R E A D Y w h e n t h e m o d u l e i s
fin is he d.
M O D U L E 1.1.2
i 2 0 0 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 2 0 1 0 R E M C A L C U L A T E A N D D I S P L A Y T I M E
1 20 20 R E m m m m m M m w M m w M M M M *
1 2 0 3 0 M ~ I N T < < V A L < MI D $ < TI $ , 3 , 2 > ) + 8 8 > * 3 / 5
12 040 H = 2 * V A L < M I D $ < T I $ , 1 , 2 > )
12 05 0 I F M > = 3 0 T H E N L E T H = H + 1
12060 I F H > = 2 4 T H E N L E T H = H - ~ 2 4
12070 I F M ~ 0 T H E N L E T M = 1
120 80 M i $ - " w * a s
1 2 0 9 0 L E T M 1 $ = L EF T- f < M 1 $ , M + 4 > + " W ' + R I G H T $ <
J 1 1 S G 3 6 - M )
1 2 1 0 0 M 2 $ = " H « 5 S I
I I
1 2 1 1 0 L E T M 2 $ = L E F T # (M 2 $ , M + 4 > + " + R I G H T $<
M 2 $ , 3 6 - M >
1 2 1 2 0 P R I N T " S W " ;
1 2 1 3 8 IF H > 0 T H E N F O R 1=1 T O H : P R I N T M l $
: N E X T
1 2 1 4 8 IF H < 2 3 T H E N F O R I = H + 1 T O 2 3 : P R I N T
: N F V T
1 2 1 5 0 P R I N T M 2 $ ;
1 2 1 6 0 p r i n t 1 1
1 2 1 7 0 D T $ = L E F T $ i TI $ . • 2 > +" " + M I D f C T I f , 3 , 2
> + " " + R I G H T $ C T J . $ , 2 >
1 3
Page 16
Th e Wor king C o m m o d o r e 6 4
1 2 1 8 0 F O R 1 = 1 T O L E N C D T $ ) • P R I N T M I D G E T *
, i , i ) ; " M l " ; : n ex t
1 2 1 9 0 G O T O 1 2 0 3 0
T h is m o d u l e de riv e s t h e v a lu e s n e c e s s a ry t o c r e a t e t h e d i s p l a y f r o m t h e
i n t e r n a l clo c k a n d d i sp l a y s t h e t i m e i n t w o f o r m s .
Co m m e n ta r y
L in e 1 2 0 3 0 : T h e r e a r e 3 6 a v a i l a b l e sp a ce s a c r o s s t h e s cre en o n c e t h e
b o r d e r s h a v e b e e n d r a w n , so t h e n u m b e r o f m i n u t e s m u s t b e d iv id e d b y
6 0 / 3 6 ( 5 / 3 ) t o o b t a i n t h e r i g h t u n i t s t o m o v e a c r o s s t h e sc re e n .
Li ne 1 2 0 4 0 : T h e r e a r e 2 4 sc re e n lines a v a i l a b l e , so all t h a t i s ne c es s a ry i s t o
m u lt ip l y t h e h o u r s b y 2 .
Li ne 1 2 0 7 0 : T h e p r o g r a m i s d e s ig n e d alw a ys t o d i s p l a y m i n u t e s , so t h a t o n
t h e h o u r t h e m i n u t e v a lu e i n c r e m e n t s t o s ho w o n e u n i t .
Li ne 1 2 0 8 0 : M l $ i s set e q u a l t o t w o c u r s o r m o v es t o t h e r i g h t p lu s th e
p u r p l e c o n t r o l c h a r a c t e r a n d t h e re v e r s e c o n t r o l c h a r a c t e r , f o ll o w e d b y 3 6
sp a ce s . I f p r i n t e d , t h i s w o u l d s h o w a p u r p l e lin e.
Li ne 1 2 0 9 0 : M l $ i s n o w c h a n g e d so t h a t it b e c o m e s e q u a l t o t h e f i r s t f o u r
c o n t r o l c h a r a c t e r s p l u s M s p a c e s , t h e n a r e d c o n t r o l c h a r a c t e r , t h e n t h e
r e m a in i n g s p a ce s . T h i s c r e a te s a new s t r i n g w h i c h c h a n g e s c o l o u r a t a p o i n t
d e f i n e d b y t h e v a lu e o f M .
Li nes 1 2 1 0 0 - 1 2 1 1 0 : T h e s a m e p r o c e s s i s c a r r i e d o u t f o r M 2$, w hi ch w i l l
b e g in b l u e a n d e n d w h i t e .
Li nes 1 2 1 3 0 - 1 2 1 5 0 : M l $ i s p r i n t e d f o r as m a n y lines as t h e r e a r e h o u r s ;
M 2$ i s p r i n t e d o n t h e r e m a i n d e r o f t h e lin e s . T h e t w o s tr i n g s t h u s d e f i n e a
b o r d e r b e tw e en d i f f e r e n t c o l o u r a r e a s d i c t a t e d b y t h e v a lu e o f H .
L i n e 1 2 1 6 0 : T h e c u r s o r i s h o m e d a n d t h e p r i n t p o s i t i o n m o v e d t o a b o u t o n e
t h i r d o f t h e w a y d o w n t h e p e n u l t i m a t e c o l u m n o f t h e s c re e n , w i t h t h e p r i n t
c o l o u r set t o b l a c k . ^
Li ne 1 2 1 7 0 : D T $ i s n o w d e f i n e d as T I $ w i t h t w o s p ace s i n s e r t e d b e tw e en
t h e h o u r , m i n u t e a n d s e c o n d v a lu e s . T h r o u g h o u t t h e c o u r s e o f t h e
p r o g r a m , t h e s ys tem h a s b e e n u p d a t i n g T I $ so t h a t it a lw ay s c o n t a i n s t h e
l a t e s t t im e .
1 4
Page 17
C h a p te r 1 G o o d thi ng s i n s m a l l p a c k a g e s
L ine 1 2 1 8 0 : D T $ i s p r i n t e d d o w n t h e r i g h t h a n d side o f t h e s c ^ e n . T h e
m e t h o d us e d i s t o p r i n t o n e c h a r a c t e r a t a t i m e , t h e n m o v e t h e c u r s o r d o w n
a n d b a c k .
T e s t i n g M o d u le 1 .1 .2
Yo ur c loc k s h o u l d n o w b e r e a d y t o r u n , w i t h f o u r d i f f e r e n t r e c t a n g l e s o f
c o lo u r m a r k i n g t h e lines f o r h o u r s a n d m i n u t e s . T h e t im e i s d i s p l a y e d
digitally o n t h e r i g h t - h a n d sid e o f t h e s c re e n .
H a v i n g s a id w h a t it s h o u l d d o , a l m o s t i n e v i t a b l y t h e r e w il l b e e r r o r s in
wh at y ou ha v e e n t e r e d . I f n o t h e r e , t h e n i n l a t e r p r o g r a m s . F r o m t h e k i n d
o f que rie s t h a t c o m e t o m e it seems t h a t m a n y m i c r o - o w n e r s f i n d it v e ry
d i ff ic u l t t o k n o w h o w t o b e g in t o d e a l w i t h s u c h e r r o r s a n d p e r h a p s a fe w
basi c gu id elin es m i g h t b e o f he lp :
1 ) M a ke t h e m o s t o f t h e h e lp a v a i l a b l e t o y o u . I f t h e r e i s a n e r r o r m es s a g e ,
m ak e su re y o u t a k e a c c o u n t o f i t , n o t i n g t h e lin e w h e r e t h e e r r o r o c c u r s a n d
th e ty pe o f e r r o r .
2 ) D o n ’ t r u n t h e p r o g r a m a g a i n t o se e i f it w ill w o r k a s e c o n d t i m e . I f it d o e s
w or k t h e n yo u a r e in a w o r s e s t a t e t h a n y o u s t a r t e d since y o u h a v e l o s t t h e
ch an ce o f r u n n i n g d o w n t h e e r r o r f o r t h e p r e s e n t .
3 ) Us e t h e d i r e c t m o d e ( c o m m a n d s e n t e r e d d i r e c t l y f r o m t h e k ey b o a r d
r a t h e r t h a n p r o g r a m line s) t o p r i n t o u t t h e v a lu e s o f all t h e v a r i a b l e s i n lines
t h a t a p p e a r t o h a v e a n e r r o r . A l u d i c r o u s v a lu e w ill o f t e n giv e y o u t h e clue
a s t o w h a t i s g o i n g w r o n g . A n a w f u l l o t o f a l m o s t i n d e t e c t a b l e e r r o r s r e s u l t
f r o m t h e s im pl e m is s p e ll in g o f a v a r i a b l e n a m e , s u b s t i t u t i n g 1 f o r I f o r
i n st a nc e.
4 ) F o llo w t h e p r o g r a m t h r o u g h i n y o u r h e a d o r o n p a p e r , u s in g sim pl e
values so t h a t y o u c a n s e e e x a c t ly w h a t it s h o u l d b e d o i n g a t e a c h p o i n t .
5 ) D o n ’ t be t o o h a s t y in m a k i n g a n a l t e r a t i o n u n t i l y o u a r e s u r e t h a t it i s t h e
on ly o n e y o u w a n t t o m a k e . O n c e y o u e n t e r a c h a n g e t o a l in e , a ll y o u r d a t a
d i s a p p e a r s a n d w i t h it y o u r c h a n c e t o m a k e f u r t h e r c h e ck s w i t h o u t r u n n i n g
th e p r o g r a m a g a i n .
6 ) S ave y o u r p r o g r a m r e g u l a r l y as y o u d i s c o v e r e r r o r s a n d / o r a d d new
lines . M a n y e r r o r s in f i n a l p r o g r a m s r e s u l t f r o m c h a n g e s w h i c h wer e
e n te r e d i n t o a p r o g r a m b u t n e v e r f i n a l l y r e c o r d e d o n t a p e . A ll m y
p r o g r a m s c o m m e n c e w i t h t h e f o ll o w i n g 3 lines:
1 G O T O 3
2 SAVE ‘ X X X X ’ : S T O P
3 R E M
Th es e t h r e e lines a ll o w p r o g r a m s t o b e s a ve d w i t h t h e c o m m a n d ‘ G O T O
2 ’ (p ro v i d e d ‘ X X X X ’ i s r e p l a c e d w i t h t h e p r o g r a m n a m e . O n e i n c i d e n t a l
si d e - b e n ef it i s t h a t I c a n alw a y s s t a r t m y p r o g r a m s w i t h G O T O 1 r a t h e r
t h a n h a v in g t o r e m e m b e r t h e f i r s t l in e n u m b e r o f t h e m a i n p r o g r a m .
1 5
Page 18
Th e Wor king C o m m o d o r e 6 4
E v e r y b o d y m a k e s m i s t a k e s in d e s ig n i n g a n d e n t e r i n g p r o g r a m s , t h e
d i f f e r e n c e i s w h e t h e r t h e y l e a r n t o c o p e w i t h t h e i r m is t a k e s c o m p e t e n t l y .
S u m m a r y
W h e t h e r y o u lik e t h e c lo c k i s s o m e t h i n g o n l y y o u c a n say . P e r s o n a l l y I
f i n d it q u i t e a t t r a c t i v e . R e g a r d le s s o f t h e c lo c k , h o w e v e r , t h e t e c h n i q u e s o f
slicin g u p s tr i n g s a n d o f P O K E i n g t h e s c re e n a n d c o l o u r m e m o r y
c o n t a i n e d w i t h i n t h e p r o g r a m w ill c o m e i n u s e f u l i n a wid e v a r i e ty o f
p r o g r a m s , so it i s w o r t h e n t e r i n g t h e p r o g r a m a n d e n s u r i n g t h a t y o u
u n d e r s t a n d h o w it f u n c t i o n s .
1 . 2 G R A P H
I f y o u w a n t t o u n d e r s t a n d t h is p r o g r a m y o u c a n d o n o b e t t e r t h a n t o l o o k
a t t h e b o x i n w h ic h y o u r 6 4 a r r i v e d . T h e r e y o u w il l f i n d a c o l o u r f u l
t h r e e - d i m e n s i o n a l b a r c h a r t — t h i s p r o g r a m i s a n a t t e m p t t o r e p r o d u c e t h e
p r b g r a m t h a t g e n e r a t e d t h e c h a r t . I s a y a t t e m p t , b e c a u s e o n suc cessfu lly
r e p r o d u c i n g t h e c h a r t o n t h e b o x I d i s c o v e r e d t h a t t h e d a t a it was given to
w o r k o n h a d b e e n c a r e f u l l y c h o s e n t o h i d e t h e l i m i t a t i o n s o f t h e t ig h t ly
p a c k e d b a r s . O t h e r d a t a le d t o t h e g r a p h i c s c h a r a c t e r s m a k i n g u p t h e b a r s
k n o c k i n g h ol es i n n e i g h b o u r i n g b a r s , m a k i n g t h e w ho le t h i n g a g r e a t dea l
le s s a t t r a c t i v e t h a n t h e bo x d i s p l a y .
T h i s p r o g r a m , t h e n , i s a c o m p r o m i s e , p r o d u c i n g a le s s p a c k e d d is p la y
b u t o n e w hi c h w ill w o r k o n a n y set o f d a t a a n d still l o o k as g o o d —s o g o o d ,
in fa c t , t h a t w h e n y o u h a v e c o m p l e t e d e n t e r i n g i t, it i s t h e k i n d o f p r o g r a m
t o call t h e f a m i ly i n t o i m p r e s s t h e m w i t h y o u r w i z a r d r y .
C o l o u r f u l a n d p r a c t i c a l , t h e d is p l a y s p r o d u c e d w il l n o d o u b t f i n d m a n y
a p p l i c a t i o n s . I n a d d i t i o n t h e p r o g r a m p r o v i d e s a sim pl e i n t r o d u c t i o n t o
t h e s u b j e c t o f s a v in g d a t a o n t a p e a n d l a t e r r e l o a d i n g i t.
G r a p h : T a b l e o f V a r i a b l e s
C O S
T h r e e - c h a r a c t e r s t r i n g u s e d t o d e c id e c o l o u r o f d i f f e r e n t
b a r s o n t h e g r a p h
F$
F 1 $ ,F 3 $
F2 $
H H ( 2 , 6 )
N B
N D
N H $
NV $( 2)
F o r m a t t i n g s t r i n g o f r i g h t c u r s o r c h a r a c t e r s
F o r m a t t i n g s tr i n g s o f d o w n c u r s o r c h a r a c t e r s
T e m p o r a r y s t r i n g d e r i v e d f r o m F$
A r r a y h o l d i n g d a t a f o r g r a p h
N u m b e r o f b a n k s i n f r o n t o f e a c h o t h e r (1 - 3 )
N u m b e r o f c o l u m n s a l o n g t h e h o r i z o n t a l axis ( 1 - 6 )
N a m e f o r h o r i z o n t a l axis
N a m e s f o r e a c h s e p a r a t e b a n k
T T $
1 6
Page 19
C h a p te r 1 G o o d thin gs i n s m a l l p a c k a g e s
T e m p o r a r y s t r i n g u s e d t o f o r m a t p r i n t i n g o f v e r t i c a l ax is
n a m e s
U V N u m b e r t o b e r e p r e s e n t e d b y e a c h u n i t o n t h e v e r t i c a l axis
M O D U L E 1 . 2 . 1
1 1 0 1 0 R E M A C C E P T D A T A
1 1 0 2 0 rem * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 1 0 3 0 P O K E 5 3 2 3 1 , 1 5 : I N P U T " Zf cM D O V O U W I S
H T O L O A D F R O M T A P E C V / N ) : " ; 9 : $
1 1 0 4 0 IF Q $ = " V " T H E N 1 2 4 2 0
1 1 0 5 0 P R I N T "Z f c J i i i i M M i i U S W j R R P H "
1 1 0 6 0 P R I N T " E t o T H E R E A R E 19 U N I T S O N T H E
V E R T I C A L L V „ "
1 1 0 7 0 P R I N T " M B I N P U T N U M B E R T O B E R E P R E S
E N T E D B V E A C H "
1 1 0 8 0 I N P U T " U N I T : " ; U V
1 1 0 9 0 I N P U T "MjaHAM E F O R H O R I Z O N T A L A X I S "
N H $
1 1 1 0 0 P R I N T "I Stt YOU C A N H A V E O N E T O S I X
C O L U M N S . "
1 1 1 1 0 I N P U T " 3 8 H O W M A N Y W O U L D V O U L I K E : " ;
N D
1 1 1 2 0 P R I N T " M M H Y O U C A N H A V E O N E T O T H R E
E B A N K S . "
1 1 1 3 8 I N P U T " S H O W M A N Y W O U L D Y O U LI K E . : " ;
N B
1 1 1 4 0 F O R I = @ T O N B - 1
1 1 1 5 0 P R I N T "M HNf lME F O R V E R T I C A L A X I S " ; I
+ 1 ; :I N P U T N V $ ( I ) : N E X T I
1 1 1 6 8 D I M H H < 2 ■ 6 >
1 1 1 7 0 P R I N T : F O R 1 = 0 T O N B - 1
1 1 1 8 0 F O R , J = 1 T O N D
1 1 1 9 0 P R I N T " m N P U T B A N K " ; I + 1 ; " V A L U E " ; J
; " : : I N P U T T
1 1 2 0 0 IF I N T < T / U V >> 19 T H E N P R I N T "W v'ALUE
T 0 0 H I O H . " : G O T O 1 1 1 9 0
1 1 2 1 0 H H < I , J )= T ; N E X T J , I
T h e p u r p o s e o f t h i s s t r a i g h t f o r w a r d m o d u l e i s t o a ll o w t h e i n p u t o f t h e
d a t a whic h w il l b e u s e d t o b u i l d u p a n d l a b e l t h e g r a p h . R a t h e r t h a n a s k t h e
user t o i n p u t m a x i m u m a n d m i n i m u m f ig u r e s f o r t h e r a n g e o f v a lu e s a n d
t h e n c a lc u la t e t h e u n i t s (w h ich c a n r e s u l t i n e x tr e m e l y o d d u n i t s ) , t h e
1 7
Page 20
The W or kin g C o m m o d o r e 6 4
p r o g r a m a s k s t h e u s e r t o s p e c i f y h o w m a n y u n i t s o f t h e d a t a i n p u t w i l l b e
r e p r e s e n t e d b y e a c h v e r t i c a l u n i t o n t h e g r a p h . N a m e s a r e gi ven t o t h e
h o r i z o n t a l ax is a n d t o t h e b a n k s o f 3- D p i l l a r s , s t a r t i n g f r o m t h e b a c k .
F i n a l l y d a t a i s r e q u e s t e d i n c o n f o r m i t y w i t h t h e s t r u c t u r e c h o s e n b y t h e
u s e r .
Te st in g M o d u l e 1 .2 .1
Si m pl y a m a t t e r o f r u n n i n g t h e m o d u l e t o c h e c k t h e s y n ta x i s c o r r e c t .
N o t h i n g c a n b e d r a w n y e t.
M O D U L E 1. 2. 2
1 2 0 0 0 R E M # # # # # # * # # # # * # # * # # # # * # * # # * # # * * *
1 2 0 2 0 R E M D R A W G R A P H
1 2 0 3 0 R E M # * # * * # * # * * * * * * * * * * # * * * * * # * * * * *
1 2 0 4 0 P O K E 5 3 2 8 1 , 0 : P R I N T "
W t i M B M e i M t i l "
1 2 0 5 0
1 2 0 6 0 F O R 1= 1 T O 4 = P R I N T F $ ; " ^ 3
T ' : F f * F f + " M " • N E X T
1 2 0 7 8 P R I N T
— _ _ _ _ _ _ _ _
. " : R E M 3 0 C H A R L I N E
_ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 2 0 8 0 F O R 1 = 1 T O 1 9 : P R I N T
1 2 0 9 0 P R I N T "
J " ■ N E X T
1 2 1 8 0 P R I N T " 5 3 " ; : F 0 R 1 = 1 T O 4 : P R I N T " W S W
: e ! » f t f t K * i r ;
1 2 1 1 0 P R I N T "
_ _
_ _ _
_ _ _ _ _ _ _
_ __ ___ ___ __
_ _ _ _ _ _ _
_
N E X T = R E M 2 8 CHAR L I N E
1 2 1 2 0 F I f = " = F f = " » » I
: c o f = n n i r a "
1 2 1 3 0 P R I N T " S S B M i J c M i l M B l C l i S M i i l l c M i l M f i M R M t l M f i M " ;
N H f ;
1 2 1 4 0 F O R H = 0 T O N B - 1 : P R I N T " ci?liBi ll0 ln ;
m i m < f $ , 1 , 2 * ( h + 1 > > ; m i n f ( c o $ . • h + 1 , 1 > ;
1 2 1 5 0 T T f = N V f ( . H > + " # " + S T R f < U V > : F O R 1 = 1 T
0 L E N ( T T f )
1 2 1 6 0 PR I N T M I I l f - C T T f , 1 , 1 > ; " I W " ; : N E X T I , H
1 2 1 7 0 P R I N T " 5 * i » K M ( ! M l 0 I I D M H M M 5
I K W W W W B "
1 2 1 8 0 F 3 f = F 1 $ ; F O R H * 0 T O N B - 1 : P R I N T M I D f
( C O f , H + 1 , 1 >
1 2 1 9 0 F 2 f = L E F T f < F f , 8 + 4 * ( N B - 1 ) + H > • P R I N T F
If ; F 2 r ;
1 2 2 8 0 F O R I = N H T O 1 S T E P - 1 = IF I N T ( . H H < H , I
1 8
Page 21
C h a p te r 1 G o o d thin gs i n s m a l l p a c k a g e s
> / j j V ; j = 0 T H E N 1 2 2 7 6
1 2 2 1 0 F O R J = 1 T O I H I < H H < H . • I ) X U V > + H
1 2 2 2 8 I F I N T < H H < H . ■ I > / U V ) = 9 THE N 1 2 2 7 0
1 2 2 3 0 I F , T = 1 TH E N PR INT " R S T ' ; M I D T < C O $ ,
H + l , 1) : , ! i i r j f l i l i 1 '
1 2 2 4 0 I F J > 1 T H E N P R I N T " ! ® ■ n i H I " ;
1 2 2 4 5 R E M C H A R S A R E " ! „ . S U . 1 9 . I I . I f
1 2 2 5 0 N E X T J
1 2 2 6 0 P R I NT " m T
1 2 2 7 0 P R I N T : F 2 * = L E F T $ ( F 2 T , L E W < F 2 $ > - 4
P R
I N T F1 $;F2$;:NEXT I
1 2 2 8 0 F l f = F l$ +" M "
1 2 2 9 0 F 2 T= ! . . . . E F T $ < F $ , 9 + 4 * ( N D ~ 1 > ) : P R I N T
;F2 $ ;
1 2 3 8 0 N E X T H
1 2 3 1 0 F O R 1 = 1 T O N B • P R I N T F 3 $ ;
1 2 3 2 0 F 2 $ = L E F T $ (F T , 9 + 4 * U ~ 1 > > : P R I N T F 2 $ ;
; F O R J = 1 T O N B
1 2 3 3 0 I F J > 1 O R H H C 2 . I — 1 > ~ 0 T H E N P R I N T i !
U S ' I ^ I I ! " ‘
1 2 3 4 0 P R I N T " M M " ; : N E X T J , I
1 2 3 5 0 G E T f l f ;IF " T H E N 1 2 3 5 0
Thi s i s a f id d l y m o d u l e w h i c h i s b a s e d , n o t o n a n y c le a r set o f m e t h o d s b u t
simply o n t h e c o n d i t i o n s t h a t I f o u n d , i n p r a c t i c e , h a d t o b e f u l f i l l e d t o
c o m p le te a n a t t r a c t i v e p r e s e n t a t i o n o f t h e g r a p h .
3 $
Com me ntar y
L ine s 1 2 0 4 0 - 1 2 0 6 0 : T h e s c re e n i s set b l a c k a n d t h e b r o w n b a s e o n w h ic h
th e g r a p h s t a n d s i s p a i n t e d i n .
Lines 1 2 0 7 0 - 1 2 1 1 0 : T h e g r i d s u r r o u n d i n g t h e g r a p h a r e a i s d r a w n , u n i t s
a re m a r k e d d o w n t h e sid es a n d line s p l a c e d a c r o s s t o m a r k t h e five u n i t
le v e ls .
Lines 1 2 1 4 0 - 1 2 1 6 0 : T h e s e t h r e e line s d e t e r m i n e a p r i n t p o s i t i o n a t t h e t o p
r ig h t h a n d c o r n e r o f t h e sc re e n a n d p r i n t t h e n a m e s o f t h e t h r e e b a n k s
th e r e , d o w n t h e s c re e n , i n c o l o u r s c o r r e s p o n d i n g t o t h e b a n k s th e m s e lv e s .
T h e screen p o s i t i o n i s d e t e r m i n e d u s in g a c h u n k t a k e n o u t o f F$ a n d t h e
c o l o u r by p r i n t i n g a d i f f e r e n t o n e o f t h e t h r e e c o l o u r c o n t r o l c h a r a c t e r s f o r
e ach e x e c u t io n o f t h e l o o p .
1 9
Page 22
Th e Working C o m m o d o r e 6 4
Li ne s 1 2 1 8 0 - 1 2 3 0 0 : T h r e e l o o p s a r e c a ll e d u p o n i n t h i s s e c t i o n . T h e H
l o o p d e te r m i n e s h o w m a n y b a n k s w il l b e d r a w n i n f r o n t o f o n e a n o t h e r ,
b e in g a ls o u s e d t o e x t r a c t a c o l o u r c o n t r o l c h a r a c t e r f r o m COS a n d t o
d e te r m i n e ho w m a n y d o w n c u r s o r c h a r a c t e r s w il l b e p r i n t e d , t h u s mo v in g
t h e b a n k s d o w n c o n s e c u t iv e l y . T h e I l o o p c o n t r o l s h o w m a n y c o lu m n s w i l l
be p r i n t e d a c r o s s t h e s c re e n , t h e J l o o p c o n t r o l s h o w h ig h a n y p a r t i c u l a r
3- D b l o c k w il l b e .
Li ne 1 2 1 9 0 : T h e h o r i z o n t a l p r i n t p o s i t i o n a t t h e s t a r t o f e a c h b a n k (th e y a r e
d r a w n f r o m r i g h t t o l e f t ) i s c a l c u l a t e d a c c o r d i n g t o t h e b a n k — e a c h b a n k
mov es a c r o s s o n e , giv ing t h e 3 -D a p p e a r a n c e t o t h e t h r e e b a n k s .
Li ne 1 2 2 0 0 : A c o l u m n i s n o t p r i n t e d i f t h e r e l e v a n t a r r a y e le m e n t in t h e
a r r a y H H i s z e r o .
Lin es 1 2 2 3 0 - 1 2 2 4 0 : A t t h e b o t t o m o f e a c h c o l u m n i s p r i n t e d t h e s la n t in g
b o t t o m w h ic h m a k e s t h e c o l u m n l o o k as i f it i s r e s t in g o n t h e s u r f a c e .
L i n e 1 2 2 6 0 : W h e n t h e t o p o f t h e c o l u m n i s r e a c h e d t h e s lo p i n g t o p i s a d d e d .
L i n e 1 2 2 7 0 : F o r t h e n e x t c o l u m n , f o u r c h a r a c t e r s a r e s u b t r a c t e d f r o m t h e
c u r s o r r i g h t s t r i n g , d e f i n i n g t h e ne w p r i n t p o s i t i o n .
L i n e 1 2 2 8 0 : T h e v e r t i c a l p r i n t p o s i t i o n i s m o v e d d o w n b e f o r e p r i n t i n g t h e
ne x t b a n k .
Line s 1 2 3 1 0 - 1 2 3 4 0 : I n p r i n t i n g t h e b a n k s t h e b o t t o m s o f t h e c o lu m n s
ha v e b e e n c o r r u p t e d . T h e s e a r e f ill e d i n .
Li ne 1 2 3 5 0 : T h e g r a p h r e m a i n s o n t h e sc re e n u n t i l a ke y i s p r e s s e d .
Te st i n g M o d u l e 1.2 .2
O nc e a g a i n a s t r a i g h t f o r w a r d m a t t e r o f r u n n i n g t h e p r o g r a m a n d se e in g
t h a t t h e r e s u l t a n t d i s p l a y d o e s l o o k r i g h t . I f y o u r u n i n t o p r o b l e m s , t h e n
t h e a n s w e r i s t o c u t d o w n t h e n u m b e r o f b a n k s t o o n e , a n d p e r h a p s even t h e
n u m b e r o f c o l u m n s t o o n e , t o s im p l if y y o u r a n a ly s i s o f w h a t i s g o in g aw ry .
L o o k a t t h e f u n c t i o n o f e a c h o f t h e l o o p s s e p a r a t e l y t o d e c id e wh ic h o f
t h e m a p p e a r s t o b e p r o d u c i n g t h e e r r o r . T h i s i s a f r u s t r a t i n g m o d u l e t o
d e b u g so , i f y o u t h i n k t h a t a c h a n g e t o y o u r line s w o u l d o v e rc o m e t h e
p r o b l e m ^ v e n t h o u g h y o u c a n ’ t s e e w h e r e y o u h a v e d e p a r t e d f r o m t h e
lis tin g given h e r e , m a k e t h e c h a n g e a n d see— n o t h i n g h e r e o r a n y w h e r e e l s e
in t h i s b o o k i s s a c r o s a n c t .
2 0
Page 23
C h a p t e r 1 G o o d thi ng s in s m a l l p a c k a g e s
M O D U L E 1. 2.3
1 . 2 3 6 0 I N P U T " n f l a C C i O Y O U W I S H T O S A V E D A T A
( V / T O : " ; Q $ : I F Q $ = " N " T H E N E N D
1 2 3 7 0 I N P U T " . ' ( ( P O S I T I O N T A P E C O R R E C T L Y , T
H E N E P E T U R N S — " Q $ : R $ = C H R $ < 13 )
1 2 3 8 0 O P E N 1 , 1 , 1 , " G R A P H "
1 2 3 9 0 P R I N T # 1 , N B ;R $ ;N D ; R $ ;N H $ ; R f ; U V
1 2 4 0 0 F O R I= 0 T O N B - 1 : P R I N T # 1 , N V $ ( I > : F O R
• J = 0 T O N D = P R I N T # 1 , H H ( I , J ) : N E X T J , I
1 2 4 . 1 . 0 C L O S E 1 : E N D
1 2 4 2 0 I N P U T " I M P O S I T I O N T A P E C O R R E C T L Y
T H E N ^ R E T U R N S — " ; Q $ = D I M N V $ < 2 > , H H ( 2 , 6 >
1 2 4 3 0 O P E N 1 , 1 , 0 , " G R A P H "
1 2 4 4 0 I N P U T # 1 , N B , N D , N H $ , I J V
1 2 4 5 0 F O R 1 = 0 T O N B - 1 :1 N P U T # 1 , N V f ( I ) ’ • F O R
J = 0 T O N D : I N P U T # 1 , H H ( I ,J ) : N E X T J , I
1 2 4 6 0 C L 0 S E 1 : G 0 T 0 1 2 0 0 0
1 2 4 7 0 G O T O 1 2 4 7 0
Now t h a t y o u h a v e d e f i n e d y o u r g r a p h , r a t h e r t h a n l o s e t h e d a t a a n d h a v e
t o e n te r it a g a i n , y o u c a n s t o r e it o n t a p e . T h i s m o d u l e w ill a ll o w y o u t o d o
t h a t a n d t o re c a ll i t s u b s e q u e n t l y . T h e m o d u l e i s d e s ig n e d t o m a k e t a p e
s to r a g e a s ea sy a s p o s s ib l e i n t h a t i t g iv es y o u t i m e t o p o s i t i o n y o u r t a p e t o
t h e c o r r e c t p l a c e b e f o r e i t b e g in s t h e p r o c e s s o f l o a d i n g o r s a v in g .
Co mme ntary
Line 1 2 3 8 0 : T h i s l in e o p e n s a f ile , a p l a c e i n t o w h i c h d a t a i s t o b e p l a c e d ,
a n d in t h is ca se t h e s t o r a g e p l a c e i s t h e c a s s e t t e r e c o r d e r . T h e t h r e e f ig u r e s
r ep re s en t:
a ) T h e n u m b e r o f t h e f ile — a n y i n s t r u c t i o n s t o s t o r e s o m e t h i n g i n a file
m u st m e n t i o n t h e file n u m b e r
b ) T h e device n u m b e r ( th e pi ec e o f e q u i p m e n t w h i c h i s t o rece ive t h e d a t a )
wit h 1 r e p r e s e n t i n g t h e c a s s e t te r e c o r d e r
c ) T h e t y p e o f file — 1 m e a n s th a t i t i s a fil e i n t o w hi c h d a t a i s t o b e p l a c e d
r a t h e r t h a n o n e f r o m w h ic h d a t a i s t o b e t a k e n .
N B , N D , N H $ a n d UV a r e p l a c e d i n t o t h e fil e ( o n t o t a p e ) . N o t e t h e u s e o f
th e v a r i a b l e R$ h e r e . W h e n s t o r i n g d a t a o n t a p e t h e 6 4 i s a l i t t l e f i n n i c k y
a b o u t h o w e a c h i te m i s s e p a r a t e d f r o m t h e n e x t — s im p l y p u t t i n g in
co m m a s c a n r e s u l t i n e r r o r s w h e n t h e d a t a i s r e l o a d e d . R$ wa s d e f i n e d in
Line 1 2 3 7 0 a s C H R $ ( 1 3 ) , t h e c o d e f o r R E T U R N , a n d p l a c i n g it b e tw e e n
items en s ur e s t h a t t h e y a r e p r o p e r l y s e p a r a t e d .
Line 1 2 4 0 0 : T h e p r o g r a m ’ s a r r a y s a r e p r i n t e d o n e b y o n e t o t h e file.
2 1
Page 24
Th e Wor king C o m m o d o r e 6 4
Li ne 1 2 4 1 0 : W h e n y o u h a v e f i n i s h e d w i t h a file f o r t h e t im e b e in g it m u s t be
C L O S E d . F a i l u r e t o d o t h is w il l r e s u l t in a n e r r o r t h e n e x t t im e y o u t r y t o
O P E N a file o f t h e s a m e n u m b e r .
Li ne 1 2 4 2 0 : T h i s i s t h e p a r t o f t h e m o d u l e w h ic h l o a d s b a c k d a t a i n t o t h e
6 4 . T h e o n l y d i f f e r e n c e b e tw e e n t h e s p e c i f i c a t i o n s f o r t h e t w o ty p e s i s t h a t
t h is o n e h a s a file t y p e o f 0 , w h ic h m e a n s a file f r o m w h ic h d a t a w i l l be
t a k e n .
Lines 1 2 4 4 0 - 1 2 4 5 0 : D a t a w h ic h W a s p r i n t e d i n t o t h e file i s no w rec a lle d .
T h e sa f e s t wa y t o b u i l d u p y o u r l o a d i n g r o u t i n e i s t o e d it t h e line n u m b e r s
o f t h e SA VE r o u t i n e a n d c h a n g e t h e P R I N T c o m m a n d s t o I N P U T . T h a t
way y o u k n o w t h a t t h e r o u t i n e w il l p i c k u p t h e d a t a in e x a ct ly t h e sam e
o r d e r as it was s t o r e d . I f t h e d a t a i s p i c k e d u p i n t h e w r o n g o r d e r , n o t on ly
w il l it m a k e n o n s e n s e o f y o u r p r o g r a m b u t a n e r r o r m a y r e s u l t in t h e
p r o g r a m s t o p p i n g .
T e st in g M o d u l e 1 .2 .3
T h e s im pl e t e s t f o r t h i s m o d u l e i s w h e t h e r y o u c a n i n p u t d a t a t o th e
p r o g r a m , save it o n t a p e a n d t h e n r e l o a d it .
S u m m a r y
T h is p r o g r a m i s a t r i b u t e t o t h e q u a l i t y o f t h e 6 4 ’ s g r a p h i c s set a n d s creen
h a n d l i n g . O n c e y o u h a v e e n t e r e d it y o u b e g in t o s e e t h a t it i s n o t a t al l s uc h a
d i f f i c u l t t h i n g t o u se l o o p s a n d s im p le c a l c u l a t i o n s t o d r a w s h a p e s a n d
a p p a r e n t l y s ol id o b j e c t s a t c o n t r o l l e d p la c e s o n t h e sc re e n a n d t h a t suc h
di sp la ys a r e o n e o f t h e m o s t e f f e c ti v e ways o f g e t t i n g t h e f a c t s a c ro s s t h a t
y o u w i l l ever f i n d .
1.3 TEXT ED
T h e f in a l p r o g r a m i n t h i s c h a p t e r i s a n a t t e m p t t o p r o v i d e s o m e o f t h e
s im pl er f u n c t i o n s o f a w o r d p r o c e s s o r in a re l a ti v e ly s h o r t a n d
u n c o m p l i c a t e d p r o g r a m . T h e p r o g r a m is, o f c o u r s e , n o m a t c h f o r a
p r o f e s s i o n a l l y w r i t t e n m a c h i n e - c o d e b a s e d w o r d p r o c e s s o r , n o r w o u l d it
be t h e t o o l I w o u l d c h o o s e f o r w r i t i n g a b o o k l ik e t h is o n e , i f o n l y b e c au s e
C o m m o d o r e U K we re k i n d e n o u g h t o p r o v i d e m e w i t h a c o p y o f t h e i r
ex cellent E a s y s c r i p t p r o g r a m f o r t h e p u r p o s e . N e v e r th e le s s t h e p r o g r a m
w o r k s a n d I w o u l d a n d h a v e c h o s e n it i n p r e f e r e n c e t o a t y p e w r i t e r f o r
m a n y p u r p o s e s b e c a u s e o f t h e fl e x i b il it y it p r o v i d e s i n e n t e r i n g a n d e d it in g
t e x t b e f o r e it i s f in a l ly o u t p u t o n t o p a p e r . O f c o u r s e , i f y o u d o n ’ t poss ess a
p r i n t e r , t h e n y o u w il l n e e d t o r u s h o u t a n d b u y o n e t o g e t t h e m o s t o u t o f t h e
p r o g r a m .
2 2
Page 25
Text ed: T a b l e o f V a r i a b l e s
A $
C H
FN A ( P )
FN B(P2 )
L L
P
P 2
P L
SP
S S
T $
T l $
TEX T$( 500 )
TT$
L i n e o f t e x t b e in g e n t e r e d
C o d e o f c h a r a c t e r u n d e r f l a s h i n g c u r s o r
C a l c u l a t e s p o s i t i o n i n m e m o r y o f f l a s h i n g c u r s o r i n t e x t
b e in g e n t e r e d
C a l c u l a t e s p o s i t i o n i n m e m o r y o f e d i t c u r s o r in m a i n
b o d y o f t e x t
N u m b e r o f lines o f t e x t i n m a i n b o d y o f t e x t
P o s i t i o n o f f l a s h i n g c u r s o r i n l in e b e in g e n t e r e d
P o s i t i o n o f e d i t c u r s o r d o w n s c re e n
L i n e n u m b e r o f e d i t c u r s o r i n m a i n b o d y o f t e x t
N u m b e r o f s pa ce s a v a i l a b l e a t e n d o f lin e w h e n
f o r m a t t i n g
L i n e n u m b e r o f f i r s t l in e o f p a r t o f m a i n t e x t b e in g
d i s p l a y e d
L a s t c h a r a c t e r i n p u t w h e n e n t e r i n g ne w l in e o f t e x t
C h a r a c t e r i n p h t a s c o m m a n d i n M o v e E d i t L i n e m o d u l e
M a i n a r r a y f o r t h e s t o r a g e o f t e x t
T e m p o r a r y s t o r a g e o f line s b e in g e n t e r e d i n t o m a i n b o d y
o f t e x t
N u m b e r o f line s o f t e x t e x t r a c t e d f r o m b a t c h o f t e x t b e in g
i n s e r t e d i n t o m a i n b o d y
C h a p t e r 1 G o o d th in gs i n s m a l l p a c k a g e s
M O D U L E 1 .3 .1
3 1 0 8 8 R E M # * # * * * # # # # # * # # # # # * * # * # # * # # * # * #
1 1 0 1 0 R E M I N I T I A L I S E
1 i ? 0 8 0 R E M # * , # * * # * # # # # * # * # * * # # * # # # # * * # 9 | 6 * *
1 2 0 1 0 P R I N T " IT ; : D I M T E X T $< 5 8 0 > • L L = 1 • P L = 1
1 2 8 2 0 T E X T $ (0 > = : " n r
1 2 0 3 0
t e x t $< i > = * • m s ?
M
1 2 0 4 0 D E F F N f l < P > * 1 0 2 4 + 2 0 # 4 0 + P
1 2 8 5 0 D E F F N B C P 2 ) * 1 0 2 4 + 4 0 # P 2
1 2 0 6 0 G O S U E 1 4 1 1 0
This in iti a lis e s t h e m a i n v a r i a b l e s a n d p l a c e s b e g i n n i n g a n d e n d o f t e x t
m a r k e r s i n t o t h e m a i n a r r a y .
M O D U L E 1.3.2
1 3 0 0 0
1 3 0 1 0 R E M E D I T LI H E
2 3
Page 26
T h e Wor king C o m m o d o r e 6 4
1 3 0 2 0 R E M # * # * * * # * # # * * * * # * * # # * # * # * * # * * * #
1 3 0 3 0 A T = " "
1 3 0 4 0 F - 0 : P R I N T " 1 1
. : A T
1 3 0 5 0 C H = P E E K ( F N R (P ) > : P O K E 5 4 2 7 2 + F N f i (P > ,
1 4 : P O K E F H f l (P > . ■ 1 6 0
1 3 0 6 © F O R T T = 1 T O 5 : N E X T T T ; P O K E F N R ( P ) ,
C H
1 3 0 7 0 G E T T T • I F T T - ~ " " TH E N G O T O 1 3 0 5 0
1 3 0 8 0 I F T T = C H R T < 1 3 > O . R L Eh KA T> = 81 T H E N
G O S U B 1 4 0 0 0 : GO T O 1 3 0 5 0
1 3 0 9 0 I F T T = " T " TH E N G O SU B 1 50 00: P O K E P N
B ( P L - - S S > , 6 2 : GO T O 1 3 0 4 0
1 3 1 0 9 IF T T = " 4 - M A N D P O @ T H E N 1 . 3 0 4 0
1 3 1 1 0 IF T T =" + - " flNDP=0 T H E N P = L E N < f l $ > - l =
G O T O 1 3 1 5 0
1 3 1 2 0 IF P > 0 A N D T T = C H R T < 2 0 > T H E N A T = L E F
T T A T , P - - 1 > + M I D T < A T , P + 1 > : P = P - 5 . : G O T O 1 . 3 1 5 @
1 3 1 3 0 IF T T = C H R T i 2 0 > T H E N 1 3 0 5 0
1 3 1 4 0 IF T $ 0 , , " A N D T $ 0 " l l " A N D T $ 0 " M " T H
E N A T = L E F T T < A T ,P > + T T + M I D T < A T , P + 1 > : p = p + 1
1 . 3 1 5 0 P R I N T " A T : I
F T T = " I I " A N D P > 0 T H E N P * P - 1
1 3 1 6 0 I F T T = " M " A N D F ' < L E N < A T > - 1 T H E N P = P
+ 1
1 3 1 7 0 G O T O 3 . 3 0 5 0
T h e p u r p o s e o f t h i s m o d u l e i s a ll o w t h e u s e r t o i n p u t a n d e d i t u p t o t w o
scre en line s o f t e x t a t t h e b o t t o m o f t h e sc re e n a n d t o e d it t h o s e lines in
p r e p a r a t i o n f o r i n s e r t i n g t h e m i n t o t h e m a i n b o d y o f t h e t e x t w i t h a
s u b s e q u e n t m o d u l e .
C o m m e nt ar y
Li ne s 1 3 0 5 0 - 1 3 0 7 0 : O u r f i r s t e n c o u n t e r w i t h a f l a s h i n g c u r s o r r o u t i n e . O n
t h e b a s is o f u s e r - d e f i n e d f u n c t i o n A , t h e s e line s P E E K t h e sc re e n m e m o r y
a t t h e p o i n t i n d i c a t e d b y t h e v a r i a b l e P a n d o b t a i n t h e c o d e o f t h e c h a r a c t e r
l o c a t e d t h e r e . A n in v er s e b l u e s p a c e i s t h e n P O K E d i n t o t h e s a m e l o c a t i o n ,
l e f t t h e r e f o r t h e d u r a t i o n o f a s h o r t t i m i n g l o o p a n d t h e n r e p l a c e d b y t h e
o r ig i n a l c h a r a c t e r . I f t h e r e h a s b e e n n o i n p u t f r o m t h e k e y b o a r d , as
i n d i c a t e d by t h e G E T s t a t e m e n t , t h e p r o c e s s i s r e p e a t e d .
L i n e 1 3 0 8 0 : P r e s s i n g R E T U R N i n s e r t s t h e l in e i n t o t h e m a i n b o d y o f t ex t
— a l a t e r m o d u l e i s n e e d e d . T h e l in e i s a l s o i n s e r t e d a u t o m a t i c a l l y i f t h e
l e n g t h exce eds t w o sc re e n li n e s — t h i s m a y s t r i p t h e f i n a l c h a r a c t e r s f r o m
t h e lin e.
2 4
Page 27
C h a p t e r 1 G o o d thi n gs in s m a l l p a c k a g e s
Lin e 1 3 0 9 0 : P r e s s i n g t h e s y m b o l a ll o w s t h e u s e r t o m o v e i n t o a
s u b s eq ue nt m o d u l e w h ic h a c ts o n t h e m a i n b o d y o f t e x t .
L in es 1 3 1 0 0 - 1 3 1 1 0 : P r e s s i n g t h e l e f t a r r o w s y m b o l a t t h e t o p l e f t o f t h e
k e y b o a rd m ov es t h e c u r s o r e i t h e r t o t h e b e g i n n i n g o f t h e lin e o r t o t h e e n d ,
de pe n di n g o n its c u r r e n t p o s i t i o n .
L in es 1 3 1 2 0 - 1 3 1 3 0 : P r o v i d e d t h a t t h e c u r s o r i s n o t p o s i t i o n e d a t t h e
beginnin g o f t h e lin e , p r e s s i n g D E L E T E r e m o v e s t h e c h a r a c t e r b e f o r e t h e
cu rs o r . N o t e t h a t , u s in g G E T , t h e c o n t r o l keys s u c h a s D E L E T E h a v e n o
effe ct unl ess t h e y a r e P R I N T e d , so t h a t i f we d o n o t p r i n t t h e m w e c a n
r ede fin e t h e i r f u n c t i o n .
L ine 1 3 1 4 0 : I f t h e c h a r a c t e r e n t e r e d i s n o t a c u r s o r m o v e a r r o w , t h e n i t i s
a ssu m ed t o b e a c h a r a c t e r t o b e p r i n t e d a n d i t i s a d d e d t o t h e s t r i n g i n t h e
p o s it i o n o f t h e c u r s o r . I f t h e c u r s o r i s i n t h e m i d d l e o f t h e s t r i n g , t h e n t h e
c h a r a c te r i s a d d e d i n — i t d o e s n o t r e p l a c e t h e c h a r a c t e r u n d e r t h e c u r s o r .
L ine s 1 3 1 5 0 - 1 3 1 6 0 : T h e s t r i n g i s r e p r i n t e d i n i ts c h a n g e d f o r m . I f t h e
i n p u t was a c u r s o r a r r o w t h e n t h e c u r s o r p o s i t i o n i s c h a n g e d a c c o r d i n g l y .
T e s t i n g M o d u le 1.3. 2
B y e n te r in g a t e m p o r a r y R E T U R N a t L i n e 1 4 0 0 0 , y o u s h o u l d n o w b e a b le
t o i n p u t t e x t t o t h e b o t t o m o f t h e s c r e e n a n d t o e d i t t h a t t e x t .
M O D U L E 1.3.3
1 4 0 0 0 R E M # * # # # # # # # # # # # * * # * # # # # # # # # # # # # #
1 4 0 1 0 R E M I N S E R T L I N E
1 4 0 2 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 4 0 3 0 X - 0
1 4 0 4 0 IF L E N < f l $ X 4 1 T H E N T T $ < X ) = L E F T $ < R $
, L E N < ) - 1 > = f l * = " " : G O T O 1 4 0 7 0
1 4 0 5 0 F O R 1 = 4 1 T O 1 S T E P - 1 =IF MID $< f l $, I . •
1 ) 0 " " T H E N N E X T I 1 = 4 1
1 4 0 6 0 T T $ < X > = L E F T $ <f l $ , I ■ - 1 > = f l $ * M I D $ <A * . I +
1 )
1 4 0 7 0 X = X + 1 : IF f i f O " " A N D R I O " " T H E N G
0 T 0 1 4 0 4 0
1 4 0 3 0 F O R I = L L + X T O P L + X S T E P - 1 = T E X T # < I >
= T E X T T < I - X ) : N E X T I
1 4 0 9 0 F O R 1 = 0 T O X - l : T E X T $ < P L + 1 ) = T T $ < . I > :
N E X T
1 4 1 0 0 A $ = " " : P = 0 : P R I N T " I T ; : L L = L L + X = P L - P
L + X
2 5
Page 28
Th e Wor king C o m m o d o r e 6 4
1 4 1 1 9 S S = P L “ 7 - I F * L L - P L < 8 T H E N 8 5 = 1 1 - 1 5
1 4 1 2 0 P R I N T " 1 ' ; ;
" S S U . ; : IF S 8 - C 0 T H E N S S = 6
1 4 1 3 0 F O R I = S S T O S S + 1 5 : P R I N T " l i l " ; T E X T $ <
I > ; : IF LEN < T E X T $ ( . I > ) <40 T H E N P R I N T
1 4 1 4 0 IF I — F ‘ L ~ 1 T H E N P R I N T C H R f < 6 2 >
1 4 1 5 0 N E X T I : P R I N T "S Si
" : R E T U R N
T h e p u r p o s e o f t h i s m o d u l e i s t o e n t e r t h e c u r r e n t l in e i n t o t h e m a i n b o d y o f
t e x t .
C o m m e nt ar y
L in e 1 4 0 4 0 : I f t h e li n e b e in g i n s e r t e d i s le ss t h a n 4 1 c h a r a c t e r s l o n g it i s
p l a c e d i n t o t h e p o s i t i o n i n d i c a t e d b y t h e > e d i t c u r s o r .
Li ne s 1 4 0 5 0 - 1 4 0 7 0 : I f t h e l in e i s l o n g e r t h a n 4 1 c h a r a c t e r s , t h e s e line s
s e a r c h b a c k f o r t h e e n d i n g o f t h e l a s t w o r d w h i c h w ill f i t f u ll y o n t o t h e line
a n d m a k e e v e r y t h i n g t o t h e l e f t o f i t t h e f i r s t li n e t o b e i n s e r t e d a n d s t o r e it
i n T T $ . A$ i s n o w r e d e f i n e d a s w h a t i s l e f t a n d t h e p r o c e s s i s r e p e a t e d . T h e
v a r i a b l e X r e c o r d s h o w m a n y l in e s r e s u l t .
Li ne s 1 4 0 8 0 - 1 4 0 9 0 : T h e m a i n b o d y o f t e x t , f r o m t h e e d i t c u r s o r o n , i s
s h i f t e d t o m a k e r o o m f o r t h e X n ew line s a n d t h e new line s a r e in s e r te d .
Lin es 1 4 1 0 0 - 1 4 1 1 0 : A $ i s s e t t o a sing le s p a c e , t h e f la s h i n g c u r s o r p o s i t i o n
i s set t o z e r o a n d t h e e d i t c u r s o r i s m o v e d d o w n b e lo w t h e new lin es . T h e
s t a r t o f m a i n t e x t d i s p l a y i s r e d e f i n e d so t h a t t h e e d i t c u r s o r r e m a in s
r o u g h l y i n t h e m i d d l e .
Te st in g M o d u l e 1 .3.3
Y o u s h o u l d n o w b e a b l e t o i n s e r t line s o f t e x t i n t o t h e m a i n b o d y o f t e x t by
p r e s s i n g R E T U R N .
M O D U L E 1. 3. 4
1 5 0 0 0 R E M # # # # # # * # # * # # # * # # # # # * # # # # # # # # # #
1 5 0 1 0 R E M M O V E E D I T L I N E
1 5 0 2 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 5 0 3 0 P 2 = F ’ L - S S
1 5 0 4 0 G E T T 1 $ : I F T 1 $ < > " " T H E N 1 5 0 7 0
1 5 0 5 0 P O K E 5 4 2 7 2 + F N B < P 2 > , 8 : P O K E F N B < P 2 > ,
> 5 2 : F O R IT I = i J O 20 : N E X T
1 5 0 6 0 P O K E F N B ( P 2 > , 3 2 : G O T O 1 5 0 4 0
2 6
Page 29
C h a p te r 1 G o o d thi ng s in s m a l l p a c k a g e s
1 5 0 7 9 P L « P L + 1 1 $ - " 7 1 " ) + 1 0 # < T 1 $ = = " U " ) : I F P L .
• C l T H E N P L = 1
1 5 0 8 0 P L = P L - C T 1 , * = "M" > - 1 0 # C T . 1 $ = " E " > : I F P L
> 1 . 1 . T H E N P L = L L
1 5 0 9 0 IF T l $ = C H R f - - : : i 3 > T H E N R E T U R N
1 5 1 0 0 I F PL== >L L O R T 1 T O C H R T < 2 0 > T H E N 15
1 2 0
1 5 1 1 0 L L = L L - 1 : F O R I = P L T O L L : T E X T $ < I > ~ - T E
X T ■ $ < I +1 > : N E X T • • T E X T S < L L + 1 ) * " "
1 5 1 2 0 IF P L C L L F I N D T 1 $ « " C " T H E N F l $ = T E X T $
< F ' L > + " " : R E T U R N
1 5 1 3 0 IF T 1 $ = " P " T H E N G O S U E 1 7 0 0 0
1 5 1 4 0 IF T l f = " S " T H E N G O S U E 1 8 0 0 0
1 5 1 5 0 IF T 1 T ~ " F " T H E N G O S U E 1 6 0 0 0
1 5 1 6 8 G O S U E 1 4 1 1 0 : G O T O 1 5 8 3 0
Thi s m o d u le a llo ws t h e m a i n e d i t p o i n t e r t o b e m o v e d a b o u t i n t h e m a i n
bo d y o f t e x t , t h u s a ll o w i n g l in e s t o b e i n s e r t e d a t d i f f e r e n t p o i n t s . F r o m
thi s m o d u le t h e u s e r i s a ls o a b le t o c a ll u p o t h e r m o d u l e s w h i c h f o r m a t t h e
t ex t, o u t p u t i t t o a p r i n t e r o r sa v e i t t o t a p e .
Co mme ntary
L in es 1 5 0 4 0 - 1 5 0 6 0 : F l a s h i n g c u r s o r r o u t i n e f o r t h e m a i n e d i t c u r s o r .
L ine s 1 5 0 7 0 - 1 5 0 8 0 : T h e s e t w o line s m o v e t h e m a i n e d i t c u r s o r u p a n d
do wn . Sing le lin e m o v es a r e a c c o m p l i s h e d b y t h e o r d i n a r y c u r s o r m o v e
a rr o w s . P r e s s i n g U o r D w ill r e s u l t i n a 1 0 lin e j u m p . N o t e t h e u s e o f lo gi c a l
c on d it io n s t o a c c o m p li s h t h e s e m o v e s . T h e e x p r e s s i o n ( T l $ = ‘ U ’ ) h a s a
va lue o f z e ro w h e n t h e c o n d i t i o n i s f a l s e a n d o f m i n u s o n e w h e n it i s t r u e
a n d c a n t h u s b e u s e d t o e c o n o m i c a l l y r e p l a c e a n I F s t a t e m e n t s u c h as I F
T 1 $ = ‘ U ’ T H E N etc .
Lin e 1 5 0 9 0 : P r e s s i n g R E T U R N w ill r e t u r n t o t h e t e x t e n t r y m o d u l e .
L in es 1 5 1 0 0 - 1 5 1 1 0 : P r e s s i n g D E L E T E re m o v e s t h e lin e b e n e a t h t h e
c u rs o r .
Lin e 1 5 1 2 0 : P r e s s i n g C c o p ie s t h e li n e b e n e a t h t h e c u r s o r t o t h e b o t t o m o f
th e sc ree n f o r f u r t h e r e d i t i n g .
2 7
Page 30
Th e Wor king C o m m o d o r e 64
Te st in g M o d u l e 1.3 .4
Y o u s h o u l d n o w b e a b l e t o m o v e t h e m a i n e d i t c u r s o r , t o d e le t e lin es a n d t o
c o p y t h e m b a c k t o t h e b o t t o m o f t h e s c re e n .
M O D U L E 1. 3. 5
1 6 0 0 0 R E M # # # # # # # # # # # # # # # # # # # # # # * * # # # * # #
1 6 0 1 0 R E M F O R M A T L I N E
1 6 0 2 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 6 0 3 0 F O R 1 = 1 T O L L ~ 2 : IF T E X T # < I > = " " O R
T E X T $ a + l ) = " " T H E M 1 6 1 2 0
1 6 0 4 0 S F - 4 0 - L E N < T E X T # < I > ) : F O R , T = 1 T O L E N
( T EX T# ( I + 1 ) )
1 6 0 5 0 IF M I D # <T E X T # ( 1 + 1 > , J , 1 ! : ■ O " " T H E M
M E X T J : J = . . T - 1
1 6 0 6 0 IF S F ' C J O R J = L E M ( T E X T # ( I +1 ' ) T H E M
1 6 0 9 0
1 6 0 7 0 T E X T # < I ) = T E X T # ( I > +" "+ L E F T #< T E X T # (
I + l > , , T - 1 >
1 6 0 8 0 T E X T # < 1 + 1 > = M I D # <T E X T # < I + 1 > , J + 1 > : G O
T O 1 6 0 4 0
1 6 0 9 0 IF L E M < T E X T # < I +1 > ) = > S F ’ T H E M 1 6 1 2 0
1 6 1 0 0 T E X T # < I > = T E X T # ( I > + , ! " + T E X T # ( I + l >
1 6 1 1 0 F O R J = I + 1 T O ILL T E X T # ( J > = T E X T # < J + l
: M E X T J : L L = L L - 1 : P L = P L - 1 : G O T O 1 6 0 4 0
1 6 1 2 0 M E X T I • • R E T U R N
T h i s m o d u l e f o r m a t s t h e t e x t , t h a t is t o s a y t h e t e x t i s r e a r r a n g e d so t h a t
e m p t y s pa ces a t t h e e n d o f line s a r e , w h e r e p o s s ib l e , fil led w i t h w o r d s f r o m
t h e s u b s e q u e n t lin e s .
L i n e 1 6 0 3 0 : W h e n a n e m p t y li n e i s e n t e r e d i n t o t h e m a i n b o d y o f t e x t i t w i l l
n o t be f o r m a t t e d . E m p t y line s c a n t h u s b e u s e d t o s e p a r a t e p a r a g r a p h s o r
o t h e r lines t h e u s e r d o e s n o t w is h t o h a v e r u n t o g e t h e r .
Lin es 1 6 0 4 0 - 1 6 0 8 0 : T h e s p a c e a t t h e e n d o f t h e l in e i s c a l c u l a t e d a n d a n
a s se s s m e n t i s m a d e o f w h e t h e r t h e r e i s a w o r d a t t h e b e g in n i n g o f t h e ne x t
lin e w h ic h w ill f it t h e s p a c e — i f so i t i s t r a n s f e r r e d .
Lin es 1 6 0 9 0 - 1 6 1 1 0 : I f t h e w h o l e o f t h e n e x t li n e w ill f i t o n t o t h e e n d o f t h e
c u r r e n t l in e t h e n i t i s a d d e d a n d t h e file c o l l a p s e d t o c o v e r t h e re s u l ti n g
sp a ce .
Te st in g M o d u l e 1.3. 5
I f y o u i n p u t a ser ies o f sing le w o r d line s t o t h e m a i n b o d y o f t e x t y o u s h o u l d
n o w b e a b le t o e n t e r t h e m a i n e d i t m o d e , p r e s s F a n d s e e t h e w o r d s r u n
2 8
Page 31
C h a p t e r 1 G o o d th in gs i n s m a l l p a c k a g e s
to g et h e r i n t o c o n t i n u o u s l in e s . Y o u c a n a ls o i n s e r t s h o r t line s i n t o t h e
midd le o f t h e m a i n t e x t a n d t h e n r e f o r m a t i t .
M O D U L E 1.3.6
1 7 0 0 0 R E M # # # # # * # # # # # * # # # # # # # # # # # # # # # * # #
1 7 0 1 0 R E M O U T P U T T O P R I N T E R
1 7 0 2 0 R E M # # # # # * # # # # # # # # # # # # # # # # # # # # # # # #
1 7 0 3 0 O P E N 1 . • 4 : X ~ 1
1 7 0 4 0 IF X = L L T H E N 1 7 1 0 0
1 7 0 5 0 IF T E X T S <X > = " " T H E N P R I N T # ! , X - X
• 4 - 1 : G O T O 1 7 0 4 0
1 7 0 6 0 P R I N T # 1 , T E X T S (X >; " " ;
1 7 0 7 0 IF X + 1- L L T H E N 1 7 1 0 0
1 7 0 8 0 P R I N T # 1 , T E X T S < X + 1 > : IF T E X T S < X + 1 ) =
" T H E N P R I N T # 1 , " "
1 7 0 9 0 X = X + 2 : G 0 T 0 1 7 0 4 0
1 7 1 0 0 P R I N T # 1 , " " : C L O S E 1 = R E T U R N
This sim pl e m o d u l e o p e n s c o m m u n i c a t i o n w i t h t h e p r i n t e r (devi ce 4) a n d
p r in t s o u t t h e m a i n b o d y o f t e x t . T e x t i s p r i n t e d i n 80 c o l u m n f o r m a t (i e t w o
scre en lin es m a k e o n e p r i n t e d li n e ) , a n d c le a r lin e s a r e p r i n t e d w h e r e v e r
t h e r e i s a c le a r lin e in t h e m a i n t e x t . N o t e t h a t t h o u g h t h e p r o g r a m i t s e l f w il l
h a p p il y de a l w i t h c h a r a c t e r s i n l o w e r c a se m o d e ( p re s s S H I F T a n d
C O M M O D O R E k e y t o g e t h e r ) , m o s t p r i n t e r s r e q u i r e a s p e ci a l c o m m a n d
t o a c tu a ll y o u t p u t l o w e r c a se c h a r a c t e r s . T h i s i s n o t p r o v i d e d sinc e it
di ff e rs f r o m p r i n t e r t o p r i n t e r . Y o u r p r i n t e r m a n u a l w ill p r o v i d e t h e
neces sa ry i n f o r m a t i o n .
M O D U L E 1.3. 7
1 8 0 0 0
1 8 0 1 0 R E M D A T A F I L E S
1 8 0 2 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 8 0 3 0 P R I N T " m i s F O S I T I O N T A P E C O R R E C T L Y ,
T H E N ^ R E T U R N S — "
1 8 0 4 0 I N P U T " M O T O R W I L L S T O P A U T O M A T I C A L
L V ; " Q $ : P O K E 1 9 2 , 7 : P O K E 1 , 3 9
1 8 0 5 0 P R I N T " C O M M A N D S A V A I L A B L E • " ' • P R I N T
" i W D S A V E D A T A " : P R I N T " M 2 ) L O A D D A T A "
1 8 0 6 0 I N P U T " M B W H I C H D O Y O U R E Q U I R E Q :
O N Q G O T O 1 8 0 8 0 , 1 8 1 2 0
1 8 0 7 0 R E T U R N
1 8 0 8 0 P O K E 1 , 7 : F O R i= i T O 2 0 0 0 : N E X T
1 8 0 9 0 O P E N 1 , 1 , 2 , " T E X T E D " : P R I N T # 1 , P L = P R I
2 9
Page 32
Th e Wor king C o m m o d o r e 64
N T # 1 , L . L
1 3 1 0 0 F O R I = 0 T O L L • F F T " T E X T $ ( I > + " @ " : P R I
N T # i . . F F T : N E X T I
1 8 1 1 0 C L O S E 1 : R E T U R N
1 8 1 2 0 O P E N 1 , 1 , @ , " T E X T E D " • I N P U T # 1 , P L ,L L
1 8 1 3 0 F O R I* 0 T O L L :I N P U T # 1 , T E X T T ( I ) : N E X
T = C L O S E 1
1 8 1 4 0 F O R 1 = 0 T O L L
1 8 1 5 0 IF T E X T $ a X > , , @" T H E N T E X T T C I ) = L E F
T f < T E X T ■ $ ( . I , L E N < T E X T $ < I > > • - 1 >
1 8 1 6 0 IF T E X T * ( I : : • = " ( ? ! " T H E N T E X T T C I "
1 8 1 7 0 N E X T I : R E T U R N
A s t a n d a r d d a t a - f i l e m o d u l e .
S u m m a r y
T h e t e c h n i q u e s u s e d i n t h i s p r o g r a m o f a l t e r i n g s o m e t h i n g whi le y o u a r e
l o o k i n g a t i t o n t h e sc re e n b e a r s o m e s t u d y sinc e t h i s i s b y f a r t h e easi es t way
( f o r t h e u s e r) o f a l t e r i n g s tr i n g s a n d c a n b e w r i t t e n i n t o a v a r i e ty o f
p r o g r a m s w h e r e s t r i n g d a t a , h a v i n g b e e n i n p u t h a s t o b e c h a n g e d —
i n c l u d i n g , i f y o u w a n t e d t o , m o s t o f t h e p r o g r a m s i n t h i s b o o k .
T e x t e d : S u m m a r y o f o n e - k e y i n s t r u c t i o n s
T e x t e n t r y m o d e :
T e x t c h a r a c t e r s m a y b e e n t e r e d a t p o s i t i o n o f f l a s h i n g c u r s o r .
L e f t a n d r i g h t a r r o w s m o v e c u r s o r o v e r s t r i n g .
* • * - ’ m ov es c u r s o r t o b e g i n n i n g o r e n d o f l in e . ca lls u p m a i n e d i t m o d u l e .
R E T U R N pl ac e s c u r r e n t s t r i n g i n t o t h e m a i n b o d y o f t e x t .
M a i n e d i t m o d e :
R E T U R N
U , D
D E L E T E
C
P
S
F
3 0
r e t u r n s t o p r e v i o u s m o d e
a n d u p a n d d o w n c u r s o r a r r o w s m o v e m a i n e d i t c u r s o r
r e m o v e s li n e b e n e a t h m a i n e d i t c u r s o r
c o p ie s l in e b e n e a t h m a i n e d i t c u r s o r
se n ds t e x t t o p r i n t e r
sa ves t e x t o n t a p e
f o r m a t s t e x t
Page 33
/
C H A P T E R 2
P r o g r a m m i n g T o o l s
Hav in g be e n i n t r o d u c e d t o s o m e o f t h e 6 4 ’ s c a p a b i l i t i e s w e n o w d e p a r t
fr om t h e n o r m a l f o r m a t o f t h e b o o k f o r a b r i e f s p a c e t o p r e s e n t t h r e e
tigh tly p a c k e d p r o g r a m s w h i c h w ill p r o v i d e y o u w i t h e s se n t ia l t o o l s
ena bli ng y o u t o m er g e s e p a r a t e p r o g r a m s t o g e t h e r , r e n u m b e r t h e m a n d
d el ete wh ol e s e ct io n s w i t h ea se . T h e p r o g r a m s a r e d e n s el y p a c k e d f o r t h e
si m pl e r e a s o n t h a t , u s in g t h e M e rg e r o u t i n e , t h e y a r e i n t e n d e d t o b e s t r u n g
t o g e t h e r a n d t h e n a d d e d t o t h e e n d o f e x is tin g p r o g r a m s w i t h o u t t a k i n g u p
t o o m uc h m e m o r y sp a c e . W h e n y o u h a v e f in i s h e d m e r g i n g i n e x t r a s e ct io n s
t o y o u r p r o g r a m a n d r e n u m b e r i n g i t , t h e D e le te r o u t i n e w il l h a p p i l y de le te
its elf a n d its t w o c o m p a n i o n s !
2 . 1 M E R G E
Th is p r o g r a m , t o g e t h e r w i t h t h e o t h e r t w o p r e s e n t e d i n t h is s h o r t c h a p t e r ,
i s a m u s t f o r t h o s e w h o i n t e n d t o t a k e m o d u l a r p r o g r a m m i n g s e ri o u s ly .
Us ing th is t i n y p r o g r a m h o u r s o f w o r k c a n b e s a v ed b y k e e p in g u s e f u l
m odu les o n t a p e a n d si m p l y s tr i n g i n g t h e m t o g e t h e r w i t h t h e p r e s s o f a t a p e
re c o r d e r b u t t o n . I n p r e s e n t i n g t h e p r o g r a m I a m i n d e b t e d t o Steve B e a ts o f
C o m m o d o r e U K , w h o su g g e st e d t o m e t h e b a s ic i d e a f r o m w h ic h i t was
dev elo pe d.
T h e r e a r e n o m o d u le s i n t h e p r o g r a m —a t e ig h t line s it w o u l d h a r d l y b e
w o r t h it a n d ye t a p r o g r a m s u c h as t h i s w ill m a k e m o d u l a r p r o g r a m m i n g
come al ive f o r y o u .
W h a t t h e p r o g r a m d o e s i s t o p i c k u p a n o t h e r p r o g r a m , o r s e c t i o n o f a
p r o g r a m f r o m t a p e a n d t o e n t e r it i n t o t h e 6 4 w i t h o u t d a n g e r o f lo si n g w h a t
i s a lr e a d y t h e r e — u nl es s t h e l in e n u m b e r s c o in c i d e , i n w h ic h ca se t h e f ir s t
p r o g r a m w i l l be o v e r w r i t t e n .
M O D U L E 2.1.1
6 3 9 9 0 P R I N T " I T ;
6 3 9 9 1 O P E N 1, 1, 0, " T E S T "
6 3 9 9 2 P O K E 1 8 4 , 1 - P O K E 1 8 5 , 9 6 ' P O K E 1 8 6 , 1 •
P O K E 1 5 2 , 1 : P R I N T ' T M "
6 3 9 9 4 G E T # 1 , P R I N T f l $ ; : I F S T T H E N 6 3 9 9
9
3 1
Page 34
Th e Wor king C o m m o d o r e 64
63 995 I F R $ O C H R $ ( 1 3 > T H E N 6 3 9 9 4
63 9 9 6 PR INT " G O T O 6 3 9 9 2 5 5 " ; • P O K E 6 31 ,1 3 : R
O K E 6 3 2 , 1 3 : PO KE 63 3 , 1 3
6 3 9 9 7 PO KE 1 9 8 , 3 : E N D
63 9 9 9 C L O S E 1
Co m m e n ta r y
L in e 63 9 9 1 : T h e file w h ic h t h i s p r o g r a m w il l r e a d i s a l is tin g o f a n y o t h e r
p r o g r a m w h ic h wa s s t o r e d o n t a p e u s in g t h e f o ll o w i n g c o m m a n d : O P E N
1,1, 2 ‘ T E S T ’ : C M D 1 : L I S T . T h e C M D c o m m a n d m e a n s t h a t a n y t h i n g t h a t
w o u l d n o r m a l l y b e o u t p u t t o t h e s c re e n i s a c t u a l l y s e n t t o t h e file n u m b e r
sp e c i f ie d — i n t h i s ca se a file o p e n e d t o t h e c a s s e t te r e c o r d e r . T h e o n ly
di st i n c t iv e t h i n g a b o u t t h e file i s t h e s e c o n d a r y a d d r e s s , wh ic h i s 2 ,
m e a n i n g t h a t t h i s i s a n o u t p u t file w h i c h w ill h a v e a s pe cia l e n d o f fi le
m a r k e r p r i n t e d a t its c o n c l u s i o n . T h e L I S T i n g o f t h e p r o g r a m i s s e n t, n o t
t o t h e s c re e n , t h e r e f o r e , b u t t o t h e c a s s e t t e r e c o r d e r , n o t in t h e s a m e f o r m
t h a t a p r o g r a m i s n o r m a l l y s t o r e d b u t i n A S C I I f o r m a t o r c h a r a c t e r f o r
c h a r a c t e r w h a t y o u w o u l d se e o n t h e s c re e n i f t h e p r o g r a m wer e l is te d o u t .
W h e n t h e c a s s e t te r e c o r d e r s t o p s , w i t h o u t sw i tc h i n g o f f t h e c a ss e tte
r e c o r d e r y o u m u s t f in i s h t h e file o f f b y e n t e r i n g : P R I N T # 1 : C L O S E 1
w hi c h e n s u re s t h a t t h e f i n a l c h a r a c t e r s o f t h e p r o g r a m a r e p r i n t e d a n d t h e
file p r o p e r l y c lo s e d .
Lin es 6 3 9 9 4 - 6 3 9 9 5 : S k i p p i n g o v e r l in e 63 99 2 f o r a m o m e n t , t h e m erg e
p r o g r a m n o w b e g in s t o p i c k u p t h e c h a r a c t e r s o f t h e p r o g r a m l is te d o n t o
t a p e , u n t i l it r e a c h e s a R E T U R N c o d e , si g n i f y in g t h e e n d o f a l ine.
Li ne 63 9 9 6 : T h i s s t r a n g e li n e i s a c t u a l l y t h e k e y t o t h e p r o g r a m . H a v i n g
p i c k e d u p a l in e a n d p r i n t e d i t o n t o t h e s c r e e n , t h e p r o g r a m n o w p r i n t s , j u s t
u n d e r n e a t h t h e l in e , t h e c o m m a n d G O T O 6 399 2 a n d t h e c u r s o r h o m e c o n
t r o l c h a r a c t e r . F o l l o w i n g t h i s , t h r e e R E T U R N c o d e s a r e P O K E d i n t o t h e
k e y b o a r d b u f f e r , t h e a r e a o f m e m o r y w h i c h s t o r e s a n y keys wh ic h h a v e
be e n p r e s s e d b u t n o t ye t a c t e d u p o n , a n d t h e n u m b e r t h r e e i s P O K E d i n t o
l o c a t i o n 1 9 8 , w h i c h r e c o r d s h o w m a n y keys h a v e y e t t o b e a c te d u p o n .
H a v i n g d o n e t h i s t h e p r o g r a m n o w E N D s . O r a t l e a s t i t w o u l d d o , ex cep t
t h a t t h e 6 4 n o w belie ves t h a t R E T U R N h a s b e e n p r e s s e d t h r e e t im es a n d
pr oc e e ds t o r e a c t a c c o r d i n g l y . T h e e f f e c t o f t h i s i s t o m o v e t h e c u r s o r d o w n
ove r t h e l in e p i c k e d u p f r o m t a p e a n d p r i n t e d o n t h e s c re e n a n d o v e r t h e
G O T O 639 92. T h e r e s u l t i s t h a t t h e l in e i s e n t e r e d i n t o t h e m e m o r y j u s t a s i f
you h a d p l a c e d t h e c u r s o r o v e r i t a n d p r e s s e d R E T U R N . T h e p r o g r a m t h e n
begi ns a g a i n a t 63 992 .
3 2
/
Page 35
C h a p te r 2 P ro g ra m m i n g T o ol s
L ine 6 3 9 9 2 : T h i s line o f m y s t e r i o u s P O K E c o m m a n d s i s t h e r e t o o v e r c o m e
a basi c p r o b l e m — w h e n e v e r a new lin e i s e n t e r e d t o a p r o g r a m , all e x ist in g
f i l e s a re C L O S E d . W h e n t h e f i r s t l in e o f t h e n ew p r o g r a m i s e n t e r e d , t h e
f i l e t o t h e c a s s e t te r e c o r d e r i s c lo s e d a n d a n y i n s t r u c t i o n s t o G E T f r o m it
w i l l r es ul t in a n e r r o r . T h e file c a n n o t b e r e - o p e n e d w i t h a Basic c o m m a n d
because w e a r e a l r e a d y p a s t t h e file h e a d e r , w h i c h w o u l d tel l t h e 64 t h a t a
f i l e ha s be e n f o u n d o n t h e t a p e . W h a t t h e P O K E s d o i s c h e a t a l i t t l e a n d tel l
the 6 4 t h a t file n u m b e r o n e , w i t h a s e c o n d a r y a d d r e s s o f z e r o , i s o p e n t o t h e
c assette r e c o r d e r . T h e s e c o n d l in e c a n n o w b e p i c k e d u p , a n d so o n a d
in fi n it u m .
E ve n t u a l ly t h e p r o g r a m e n c o u n t e r s t h e e n d o f file m a r k e r w h i c h m e a n s
t h a t t h e l is tin g i s c o m p l e t e a n d t h e n t h e s e c o n d p a r t o f lin e 6 39 94 ( I F ST
T H E N 6 3 9 9 9 ) d e te c ts t h i s a n d j u m p s t o t h e l a s t l in e . N o r m a l l y t h e p r o g r a m
w i l l s to p w it h t h e e r r o r m es sa g e O U T O F D A T A . T h i s m e a n s t h e m er g e h a s
been a succ ess.
In a c t u a l us e t h i s p r o g r a m i s b y n o m e a n s f a s t . I t a l t e r n a t e s b e tw e e n t h e
b l a n k s cree n o f t a p e - l o a d i n g a n d f la s h e s o f line s a t t h e t o p o f t h e s c re e n . I t
ne ed s a g o o d t a p e , since a t a p e w i t h d r o p o u t s m a y w el l c r a s h t h e w ho le
th in g. B ut gi ven a l it tl e c a r e t h i s i s a p r o g r a m y o u w ill c o m e b a c k t o t im e
a nd t im e a g a i n — t r y it a n d se e.
2 .2 D E L E T E
W he n de v e lo p i n g p r o g r a m s w h i c h u s e s im i la r m o d u l e s t o p r o g r a m s y o u
have p re v i o u s ly e n t e r e d , a u s e f u l a b i l i t y i s t o b e a b le t o l o a d t h e o r i g i n a l
p r o g r a m a n d d e le te o n l y t h o s e p a r t s t h a t a r e n o t n e e d e d f o r t h e new
a p p l i c a t i o n . T h i s 1 2 l in e r o u t i n e w ill a ll o w y o u t o d o j u s t t h a t .
T h e r o u t i n e i s b a s e d u p o n t h e e x tr e m e l y c le a r a n d s im p le w a y i n w hi c h
p r o g r a m lis tin gs a r e set o u t i n t h e m e m o r y o f C o m m o d o r e c o m p u t e r s .
Ea c h p r o g r a m lin e i n t h e m e m o r y b e g in s w i t h t w o l i n k b y t e s o f m e m o r y
w hic h spe cif y t h e s t a r t a d d r e s s i n m e m o r y o f t h e n e x t li n e . T h i s i s f o ll o w e d
by t w o by tes w hi c h r e c o r d t h e a c t u a l l in e n u m b e r . W h a t t h i s r o u t i n e d o e s i s
t o s can a lo n g t h e l in e n u m b e r s b e tw e e n a s t a r t n u m b e r s p e c i f ie d b y t h e u s e r
a n d a fin is h n u m b e r a ls o u s e r s p e c i f ie d . W h e n t h e a d d r e s s o f t h e f i n a l line
t o b e d e le te d is f o u n d , t h e p r o g r a m s im p l y sets t h e n e x t li n e a d d r e s s i n t h e
firs t line t o b e d e le t e d t o p o i n t t o t h e l in e a f t e r t h e l a s t l in e t o b e d e le t e d . T h e
eff e c t o f t h is i s t o p r o d u c e a singl e l in e s t r e t c h i n g f r o m t h e b e g i n n i n g o f t h e
fir st lin e t o b e d e le t e d t o t h e e n d o f t h e l a s t . D e l e t i o n c a n n o w b e
a c co m pl is he d b y m e r e ly d e le t in g t h e f i r s t l in e —all t h e o t h e r s g o w i t h i t.
M O D U L E 2.2.1
6 3 7 0 0 I N P U T " F I R S T L I N E T O B E D E L E T E D • " ; D
1
6 3 7 1 0 I N P U T " L A S T L I N E T O B E D E L E T E D : " ; D
9
3 3
Page 36
Th e Wor king C o m m o d o r e 64
6 3 7 1 5 B E F F N D H C X > = P E E K < X >+ 2 5 6 # P E E K (X + 1 )
6 3 7 1 6 B E F F N H 1 < X ) = X f l N B 2 5 5
6 3 7 1 7 B E F F N H 2 < X ) * I N T < X / ' 2 5 6 )
6 3 7 2 0 L f l » 2 0 4 9
6 3 7 3 0 L N = F N B H < L f l + 2 > :IF L N C B l T H E N L R - F N B
H ( L H ) : G O T O 6 3 7 3 0
6 3 7 4 0 B S T f l R T = L f l
6 3 7 5 0 L N = F N B H ( L f l + 2 ) :IF F N B H < L f l > = 0 T H E N 6
3 7 6 0
6 3 7 5 5 IF L N O B 2 T H E N L f l- F N DHC Lf l ) : G O T O 6 3
7 5 0
6 : 3 7 6 0 P O K E D S T f l R T , F M H 1 < L f l > - P O K E D S T f l R T + 1
. . F N H 2 < L f l >
6 3 7 7 0 P O K E D S T f l R T + 4 , 1 4 3 : F O R 1 * 5 T O 1 0 : P O
K E D S T A R T + 1 . . 3 3 : N E X T
Co m m e n ta r y
L in e 6 3 71 5: T h i s f u n c t i o n , w h i c h c a n b e u s e f u l i n a v a r i e t y o f c o n te x t s ,
c o n v e r t s a t w o b y t e n u m b e r o f t h e k i n d t h a t m o s t c o m p u t e r s w o r k w it h ,
i n t o a n o r m a l d e c im a l n u m b e r in t h e r a n g e 0-6553 5. T h e t w o b y t e n u m b e r
e f f e c tiv el y h a s a b a s e o f 256, t h a t i s t o s a y t h a t i t i s c o m p o s e d o f u p t o 2 5 5
u n i t s a n d a s e c o n d d i g it o f u p t o 25 5*256, i n t h e s a m e w a y t h a t 9 9 i s 9 u n i ts
a n d 9 ti m e s 1 0 . J u s t t o c o n f u s e y o u , h o w e v e r , t h e di g its a r e s t o r e d b a c k t o
f r o n t , w i t h t h e h i g h e r v a l u e b y t e c o m i n g s e c o n d .
Li ne s 6 3 7 1 6 - 6 3 7 1 7 : T h e s e t w o u s e r - d e f i n e d f u n c t i o n s d o t h e o p p o s i t e j o b
o f t r a n s f o r m i n g a d e c im a l n u m b e r i n t o a t w o b y t e f o r m .
L i n e 63 7 20 : L A i s set e q u a l t o t h e s t a r t a d d r e s s o f t h e f i r s t lin e o f t h e
p r o g r a m .
L i n e 63 7 3 0 : L N i s set e q u a l t o t h e v a l u e o f t h e t h i r d a n d f o u r t h b y te s o f t h e
l in e — t h e lin e n u m b e r — a n d i f t h i s i s le ss t h a n t h e v a lu e o f t h e f i r s t lin e t o be
de le t e d t h e n L A uses t h e tw o l i n k b y t e s t o j u m p t o t h e s t a r t a d d r e s s o f t h e
n e x t lin e. T h e p r o c e s s i s r e p e a t e d u n t i l a l in e n u m b e r i s f o u n d w h ic h i s e q u a l
t o o r g r e a t e r t h a n t h e f i r s t l in e n u m b e r t o b e d e le t e d .
L i n e 63 7 4 0 : T h e s t a r t a d d r e s s o f t h e f i r s t l in e t o b e d e le t e d i s s t o r e d i n t h e
v a r i a b l e D S T A R T .
L i n e 63 7 5 0 : U s i n g t h e F N D H f u n c t i o n , t h e v a r i a b l e L A s h o o t s u p t h e
m e m o r y f r o m l in e s t a r t t o l in e s t a r t , a n d w i t h e a c h j u m p t h e v a r i a b l e LN i s
set e q u a l t o t h e lin e n u m b e r f o u n d t h e r e . I f F N D H f in d s a m e m o r y l o c a t io n
3 4
Page 37
C h a p te r 2 P ro g ra m m i n g T o o ls
w ith ze ro i n i t , w h e r e t h e r e s h o u l d b e a p a i r o f l i n k b y t e s , i t h a s r e a c h e d t h e
end o f t h e p r o g r a m .
L in e 6 3 7 5 5 : E a c h t im e a ne w l in e n u m b e r i s f o u n d , it i s c o m p a r e d w i t h t h e
nu m b er o f t h e l a s t l in e t o b e d e l e t e d . I f t h e l a s t l in e h a s n o t b e e n r e a c h e d ,
th e next j u m p i s m a d e .
L in e 6 3 7 6 0 : I f t h e p r o g r a m h a s r e a c h e d t h i s p o i n t , it h a s f o u n d t h e l a s t lin e
t o be d e le te d a n d i n t o t h e t w o l i n k b y t e s a t D S T A R T it P O K E s t h e a d d r e s s
o f th e line a f t e r t h e l a s t lin e t o b e d e le t e d .
L in e 6 3 7 7 0 : T h e f i r s t c h a r a c t e r o f t h e ne w single l in e b l o c k t o b e d e le t e d i s
mad e in t o a R E M s t a t m e n t a n d a ser ies o f e x c l a m a t i o n m a r k s a r e P O K E d
in a f t e r t h e R E M t o m a r k t h e l in e t o d e le t e .
Th e r o u t i n e h a s n o w f i n i s h e d its j o b a n d all t h a t r e m a i n s i s t o e n t e r t h e
n u m b e r o f t h e lin e m a r k e d a n d p r e s s R E T U R N — t h e w h o l e b l o c k , f r o m a
f e w li ne s t o a c o m p l e t e p r o g r a m , w ill d i s a p p e a r .
I n p r a c t ic e , t h i s r o u t i n e i s b e s t u s e d w i t h t h e m e r g e r o u t i n e i n t h e
prev io us se ct i o n o f t h is c h a p t e r ( l o a d t h e m er g e r o u t i n e a n d e i t h e r a d d t h is
one o r m er ge i t) , since t h i s w ill a ll o w t h e r o u t i n e t o b e a d d e d t o e x ist in g
p r o g ra m s f r o m w h ic h y o u wis h t o e x t r a c t s o m e line s whi le d i s c a r d i n g
o t h er s . I t t a k e s o n l y m o m e n t s t o r u n a n d c a n save a l o t o f k ey p o u n d i n g !
2 .3 RENUM BE R
One t h in g t h a t e v e ry o n e w a n t s t o d o i s t o h a v e n e a t l y n u m b e r e d p r o g r a m s
— s om e ho w it m a k e s all t h e d i f f e r e n c e b e tw e e n s o m e t h i n g t h a t l o o k s
pr o fe s s io n a l a n d s o m e t h i n g w h i c h a p p e a r s d o w n r i g h t s l o p p y . U s i n g t h e
relatively s h o r t p r o g r a m p r e s e n t e d h e r e , y o u c a n r e n u m b e r t o y o u r h e a r t ’ s
c o n te n t , t h o u g h i t i s n ’ t w h a t y o u ’ d ca ll f a s t a n d i t d o e s i m p o s e a s im pl e
l i m it a ti o n o n t h e r a n g e o f p r o g r a m lin es .
T h e p r o g r a m w il l r e n u m b e r a n y p r o g r a m , i n c l u d i n g G O T O s , G O S U B s ,
O N . . . G O T O s a n d G O S U B s a n d l in e n u m b e r s f o ll o w i n g I F . . . T H E N .
W h a t it w il l n o t d o i s r e l o c a t e t h e p r o g r a m i n t h e m e m o r y , so i t c a n n o t a d d
di gi ts t o a G O T O ( e t c .) o r s u b t r a c t d i g it s , f o r t o d o so m e a n s m o v in g t h e
wh ole o f t h e p r o g r a m t h a t f o ll o w s t h e a l t e r e d a d d r e s s . I t i s n o t t h a t t h a t i s
im po ss ibl e, o r eve n p a r t i c u l a r l y d i f f i c u l t , i t i s si m p l y t h a t t o b e a t al l
p r ac tic a l it m u s t b e d o n e i n m a c h i n e c o d e , w h i c h i s o u t s i d e t h e s c o p e o f t h is
b o o k .
I t i s be c a u s e o f t h a t l i m i t a t i o n t h a t all t h e p r o g r a m s i n t h i s b o o k , w h ic h
w e re r e n u m b e r e d u s in g t h i s r o u t i n e (w h e re lin e n u m b e r s a r e i r r e g u l a r it i s
because c ha n ge s wer e m a d e l a t e i n t h e p r o c e s s ) , b e g in a t 1 1 0 0 0 , t h u s
en su rin g t h a t all lin e n u m b e r s h a v e five d i g it s .
3 5
Page 38
Th e Wor king C o m m o d o r e 64
T h e wa y i n w h ic h t h e r e n u m b e r e d p r o g r a m i s s t r u c t u r e d c a n b e
c o n t r o l l e d by t h e u se o f f o r m a t t i n g line s w i t h i n t h e p r o g r a m t o be
r e n u m b e r e d . L o o k c lo s e ly a t t h e p r o g r a m s i n t h i s b o o k a n d y o u w il l s e e
t h a t t h e m o d u le s a l m o s t i n v a r i a b l y s t a r t w i t h a R E M s t a t e m e n t , a n d t h a t
t h e f i r s t c h a r a c t e r a f t e r t h e R E M i s a ‘ f t ’ s y m b o l . T h e r e n u m b e r p r o g r a m i s
so de sig ne d t h a t i t s t a r t s r e n u m b e r i n g a t 1 1 0 0 0 , a n d c o n t i n u e s i n s te p s o f 1 0
u n t il it c om e s a c r o s s s u c h a l in e , t h e n i t i n c r e m e n t s t h e lin e n u m b e r t o t h e
n e x t 1 0 0 0 u p .
N o t o n l y d o e s t h i s m a k e f o r e a si ly r e a d a b l e p r o g r a m s , i t m e a n s t h a t y o u
c a n c o n t r o l t h e s t r u c t u r e o f t h e p r o g r a m t o b e r e n u m b e r e d . Sa y y o u h a v e
a n exis tin g p r o g r a m f r o m w h ic h y o u w a n t t o u s e t h r e e o r f o u r m o d u le s , b u t
t h e p r e s e n t lin e n u m b e r s d o n o t c o n f o r m t o t h e s t r u c t u r e y o u w a n t f o r t h e
new p r o g r a m — n o t e n o u g h s p a c e b e tw e e n t h e m o d u l e s , s a y , t o m er g e in
s o m e t h in g else y o u h a v e o n t a p e . By i n s e r t i n g t w o R E M s t a t e m e n t s , w ho se
f ir s t c h a r a c t e r i s a 4 f t ’ a n d t h e n r e n u m b e r i n g , y o u a u t o m a t i c a l l y o p e n a
g a p o f 200 0 w h e r e t h e R E M s t a t e m e n t s a r e l o c a t e d —h a r d l y comp le x!
M O D U L E 2.3.1
6 3 0 0 0 C L R : D I M Z Z < 5 0 0 , 1 > = L A - 2 0 4 9 : P P = L A
6 3 0 1 0 D E F F N D H <X > = P E E K <X > + 2 5 6 # P E E K < X + 1 >
6 3 0 1 3 D E F F H H 1 ( X > ~ X A N D 2 5 5
6 3 0 1 6 D E F F N H 2 X > = I N T < X / 2 5 6 >
6 3 0 5 0 IF P P O F H D H <L f l > T H E N 6 3 0 6 0
6 3 0 5 3 L f l = F N D H C L A > : • N L = F M D H < L A + 2 > ' • I F N L = 6
3 0 0 0 T H E N G O T O 6 3 5 0 0
6 3 0 5 8 IF P E E K <L f l+5> = 1 4 3 T H E N F P = F N D H < L A >
: G O T O 6 3 0 5 3
6 3 0 5 8 Pp aRP +4
6 3 0 6 0 IF P E E K < P P > 0 1 6 7 T H E N 6 3 0 7 0
6 3 0 6 2 S = 0 • IF P E E K X P P + 1 > = 3 2 T H E N S = 1
6 3 0 6 4 IF P E E K <PP +1 +S >< 4 8 O R P E E K ( P P + 1 +
S > > 5 7 T H E N 6 3 2 0 0
6 3 0 6 5 G O T O 6 3 0 7 6
6 3 0 7 0 IF P E E K C P P X 0 1 3 7 A N D P E E K ( P P > 0 1 4
1 T H E N 6 3 2 0 0
6 3 0 7 6 L E T 8 = 0 : I F P E E K X P P + 1 > = 3 2 TH EN 8=1
6 3 0 8 0 G G $ = " " : FO R 1 = 1 +8 T O 5 + S ' - I F P E E K X P P
+ 1 X 4 8 O R P E E K C P P + 1 > > 5 7 THEN G O T O 6 3 1 4 0
6 3 0 8 5 L E T G G * = G G $ + C H R $ < P E E K . < P P + 1 > > : N E X T
6 3 0 9 0 G G = V A L < GG$> : L 1 = 2 0 4 9 : L 2 = F N D H < 2 0 5 1 > :
L L = 1 1 0 0 0
6 3 0 9 3 I F L 2 = 6 3 0 0 0 T H E N P R I N T " U N D E F I N E D
L I N E A T L I N E " ; N L = S T O P
6 3 0 9 5 IF L 2 = G G T H E N 6 3 1 0 0
3 6
Page 39
C h a p te r 2 P ro g ra m m i n g T o ol s
6 3 0 9 7 L 1 = F N D H ( L 1 > : L 2 = F N H H ( L 1 + 2 > : L . L = L L + 10
6 3 0 9 8 I F P E E K ( L I + 4 > = 1 4 3 A N D P E E K ( L I + 5 > = 3
5 T H E N L L = 1 0 0 0 # I N T ( ( L L + 1 @ 0 0 > / 1 0 0 0 >
6 3 0 9 9 G O T O 6 3 0 9 3
6 3 1 0 0 L E T Z Z ( Z I . . 0 > = L L : L E T Z Z ( Z I , 1 > = P P + S =
Z I = Z I + 1
6 3 1 1 0 I F P E E K (F ‘ P + S + 6 > = 4 4 T H E N P P = P P + 6 + S ' ■
G O T O 6 3 8 7 6
6 3 1 3 5 G O T O 6 3 2 0 0
6 3 1 4 0 P R I N T " N O N - S T A N D A R D C O M M A N D A T L I N
E " ; N L : S T O P
6 3 2 O 0 P P = P P + l : G O T O 6 3 9 5 0
6 3 5 0 0 L A = 2 0 4 9 : L L = 1 0 0 0 0
6 3 5 0 3 I F P E E K ( L A + 4 > = 1 4 3 A N D P E E K ( L A + 5 > = 3
5 T H E N L L = 1 0 0 0 # I N T ( ( L L + 1 0 0 0 > / 1 @ 0 0 >
6 3 5 0 5 IF F N D H C L A + 2 ) = 6 3 9 0 0 T H E N 6 3 6 0 0
6 3 5 1 0 P O K E L A + 2 , F N H 1 (L L > ' • P O K E L A + 3 , F N H 2 (
L L >
6 3 5 2 0 L E T L . L = L L + 1 0 : L E T L A = F N D H ( L F l > ' • G O T O
6 3 5 0 3
6 3 6 0 0 I F Z I = 0 T H E N S T O P
6 3 6 0 5 F O R 1 = 0 T O Z I - 1
6 3 6 1 0 F O R J = . l T O 5 : P O K E Z Z ( 1 , 1 > + . J , A S C ( M I
D $ (S T R $ (Z Z ( 1 ,0 > > , J + 1 > > : N E X T J
6 3 6 2 0 N E N T I
6 3 6 5 0 S T O P
Com me nta ry
Line 6 3 0 0 0 : T h e a r r a y Z Z w ill b e u s e d t o r e c o r d t h e a d d r e s s e s o f G O T O s
etc . t h a t ne e d t o r e n u m b e r e d a n d t h e ne w n u m b e r t h e y a r e t o b e g iv en .
Lin es 6 3 0 1 0 - 63 0 1 6 : T h e s a m e f u n c t i o n s a s i n t h e b l o c k d e le t e r o u t i n e . I f
yo u m erg e t h e t w o t o g e t h e r y o u w ill n e e d t o d e le t e t h i s se t.
L ine s 6 3 0 5 0 - 6 3 0 5 9 : P P i s a p o i n t e r t h a t s c an s t h e m e m o r y f o r G O T O s e tc .
I t s t a r t s a t t h e b e g in n i n g o f t h e p r o g r a m a r e a a t 2049. E v e r y t i m e i t r e a c h e s
t h e s t a r t o f a new li n e t h e lin e a d d r e s s v a r i a b l e ( L A ) i s i n c r e m e n t e d . T h e
li ne n u m b e r o f t h e c u r r e n t lin e i s s t o r e d i n L N a n d t h e p r o g r a m s to p s
w or k in g a t lin e 63000— t h e s t a r t o f t h i s r o u t i n e . P P n o w j u m p s t o t h e f i r s t /
c h a r a c te r o f t h e lin e.
L ine s 6 3 0 6 0 - 6 3 0 6 5 : T h e s e line s c h e c k w h e n T H E N is f o u n d i n t h e
m em o r y , t o s e e i f i t is f o l l o w e d , e i t h e r i m m e d i a t e l y , o r a f t e r a s p a c e , b y a
n u m b e r . T h e v a r i a b l e S s im p ly r e c o r d s w h e t h e r a s p a c e i s p r e s e n t . I f
T H E N i s n o t f o ll o w e d b y a n u m b e r , P P m ov es o n .
3 7
Page 40
Th e Wo rking C o m m o d o r e 6 4
Li nes 6 3 0 7 0 - 6 3 0 8 5 : I f t h e c o d e f o r G O S U B o r G O T O i s f o u n d t h e
p r o g r a m ch eck s t o s e e w h e t h e r a sp a ce fo llo w s o r n o t . GG $ i s c o n s t r u c t e d
o u t o f t h e di g its o f t h e l in e d e s t i n a t i o n . L ess t h a n fi ve d ig its p r o d u c e s a n
e r r o r mess ag e a t l in e 63 140 .
Lines 6 3 0 9 0 - 6 3 0 9 9 : G G i s set e q u a l t o t h e G O T O o r G O S U B d e s t i n a t i o n .
T h e r o u t i n e n o w s c an s u p t h e lin e n u m b e r s i n t h e p r o g r a m f r o m t h e s t a r t ,
l o o k in g f o r t h e d e s t i n a t i o n . F o r e a c h lin e t h a t i s e x a m i n e d , t h e v a r i a b l e LL
i s i n c r e m e n t e d b y 1 0 , s t a r t i n g a t 1 1 0 0 0 , a n d t h u s r e c o r d s w h a t t h e line
n u m b e r w il l b e o n c e t h e p r o g r a m i s r e n u m b e r e d — t h e lin e c a n n o t be
r e n u m b e r e d a t t h is p o i n t since t h e r e m a y b e a n o t h e r G O T O p o i n t i n g t o it.
W h e n R E M ft i s e n c o u n t e r e d L L i n c r e m e n t s t o t h e n e x t 1 0 0 0 u p w a r d s .
L in e 63 1 0 0 : A t t h is p o i n t t h e c o r r e c t lin e n u m b e r h a s b e e n f o u n d , so t h e
a d d r e s s o f t h e G O T O i s s t o r e d in t h e a r r a y Z Z a l o n g w i t h its f u t u r e lin e
n u m b e r ( LL ) .
Li ne 6 3 11 0: I f t h e 6 t h c h a r a c t e r a f t e r t h e G O T O o r G O S U B i s a c o m m a , it
i s a s s u m e d t h a t t h i s i s a n O N . . . G O T O —G O S U B a n d P P i s m o v e d o n a n d
t h e new line d e s t i n a t i o n p i c k e d u p b y a n e a r l i e r p a r t o f t h e r o u t i n e .
Li ne 6 3 20 0: T h e p r o c e s s c o n t i n u e s , w i t h P P m o v in g u p t h e m e m o r y u n t il
L in e 630 0 0 i s e n c o u n t e r e d .
Lines 6 3 5 0 0 - 6 3 5 2 0 : T h e s e lines s t a r t a t t h e b e g in n i n g o f t h e p r o g r a m a n d
r e n u m b e r t h e line s o n l y ( r e m e m b e r i n g R E M f t) .
Li nes 6 3 6 0 0 - 6 3 6 5 0 : Al l t h a t r e m a i n s i s t o t a k e t h e a d d r e s s e s o f all t h e
G O T O — G O S U B d e s t i n a t i o n s o u t o f Z Z a n d t o P O K E t h e n ew
d e s t i n a t i o n s i n t o t h e five b y t e s f o ll o w i n g e a c h a d d r e s s — t h e y h a v e a lr e a d y
b e e n c a l c u l a t e d .
T h o u g h t h i s p r o g r a m d o e s n o t c o m p a r e i n s p e ed o r fle x ib ili ty wi th a
g o o d m a c h i n e c o d e u t i l i t y , i t d o e s d o t h e j o b , as t h e p r o g r a m s i n t h i s b o o k
i l l u s t r a t e . I f y o u d o n o t o w n a m a c h i n e c o d e r e n u m b e r r o u t i n e t h e n I
p r e d i c t t h a t y o u w il l c o m e b a c k t o t h i s r o u t i n e m o r e o f t e n t h a n a l m o s t a n y
y o u po ss ess .
/
3 8
Page 41
C h a p te r 2 P r o g r a m m i n g T o o ls
W h e n m er g e d w i t h t h e t w o p r e v i o u s u t i l i t i e s , w i t h a ll t h r e e i s o l a t e d f r o m
eac h o t h e r b y S T O P s t a t e m e n t s , y o u w ill h a v e b u i l t f o r y o u r s e l f a p o w e r f u l
th re e f u n c t i o n t o o l w h ic h w il l m a k e y o u r p r o g r a m m i n g m o r e p l e a s a n t a n d
y ou r p r o g r a m s m o r e p r e s e n t a b l e .
3 9
Page 42
Page 43
C H A P T E R 3
The C o l o u r f u l 6 4
The C o m m o d o r e 6 4 p r o v id e s a n a l m o s t b e w i ld e r in g a r r a y o f g r a p h i c s
ca pa bi lit ie s. T h e s h a p e s a n d c o l o u r s t h a t it c a n d i s p l a y a r e e n o u g h t o c o ve r
a lm os t a n y i m a g i n a b l e n e e d a n d c e r t a i n l y e n o u g h t o k e e p t h e a m a t e u r
a rt i s t oc c u p ie d f o r a l if e ti m e . I n t h i s c h a p t e r y o u w il l f i n d f o u r g r a p h i c s
p r o g ra m s wh ic h w il l a ll o w y o u t o e x p lo r e t h e w o r l d o f t h e g r a p h i c s
c h a r a c te r se t, u s e r - d e f i n e d c h a r a c t e r s , s p ri t e s a n d b i t - m a p p e d g r a p h i c s . A
mere f o u r p r o g r a m s a r e b y n o m e a n s t h e l a s t w o r d i n w h a t t h e 6 4 c a n
ac hi eve so t h e p r o g r a m s a r e d e s ig n e d as t o o l s , w h o s e o b j e c t i s t o a llo w y o u
t o feed i n t o y o u r l a t e r p r o g r a m s all t h e c o l o u r f u l f e a t u r e s t h a t w il l l i f t t h e m
o u t o f t h e o r d i n a r y r u n .
3 . 1 A R T I S T
F e w h o m e m ic r o s h a v e a g r a p h i c s c h a r a c t e r set as u s e f u l as t h a t o f
C o m m o d o r e m a c h i n e s . U s i n g t h e c o m b i n a t i o n s o f c h a r a c t e r s a v a il a b l e
f ro m t h e k e y b o a r d it i s v e ry d i f f i c u l t t o t h i n k o f a n y t h i n g t h a t c o u l d n o t be
d r a w n in som e sh a p e o r f a s h i o n . T h i s i s e x tr e m e l y u s e f u l w h e n liv e n in g u p
th e o u t p u t o f t h e m o s t m u n d a n e p r o g r a m s , es p ec ia ll y w h e n c o m b i n e d w it h
th e 64’ s exc ellen t c o l o u r c a p a b i l i t i e s .
One l i m i t a t i o n t o all o f t h i s i s i n t h e c r e a ti v e p r o c e s s o f a c t u a l l y
dev elo pi ng g r a p h i c s d i s p l a y s . O f c o u r s e , t h is c a n b e d o n e p u r e l y w i t h p r i n t
s ta t e m e n ts in a p r o g r a m , b u t g e t t i n g t h e p r i n t s t a t e m e n t s e x a ct ly r i g h t ,
with a v a ri e ty o f c o l o u r c o m m a n d s , r ev e r s e c o m m a n d s a n d so f o r t h , w it h
eac h line h a v in g t o b e d e f i n e d s e p a r a t e l y c a n b e a n e x tr e m e l y t e d i o u s
pr ocess. W h a t i s r e a l ly n e e d e d i s a w a y o f u s in g t h e s c re e n r a t h e r lik e a n
ea s el , p a i n t i n g o n g r a p h i c s c h a r a c t e r s i n a v a r i e t y o f c o l o u r s , e ra s i n g ,
cha ng in g a t w il l a n d t h e n , f o r t h e s a k e o f p o s t e r i t y o r a t l e a s t f o r t h e s a k e o f
o t h e r p r o g r a m s w hi c h c o u l d use t h e d e s ig n c r e a t e d , s a v in g t h e d e s ig n o n t o
t a p e . A ll o f t h i s t h e c u r r e n t p r o g r a m sets o u t t o d o .
A l on g t h e way y o u w il l p i c k u p a f a i r a m o u n t o f i n f o r m a t i o n a b o u t h o w
t o m a n i p u l a t e t h e s c re e n a n d c o l o u r m e m o r y , t o g e t h e r w i t h u s e f u l m e m o r y
l o ca tio ns f o r c o n t r o l l i n g s u c h c h a r a c t e r i s t i c s a s p r i n t c o l o u r .
A r t is t : T a b l e o f V a r ia b l e s
CC T h e c u r r e n t c u r s o r p o s i t i o n
C O (3 ) C o - o r d i n a t e s o f t w o c o r n e r s o f d e s ig n t o b e sa ved
4 1
Page 44
The Wor king C o m m o d o r e 64
D 3$ ,D 4 $
M O D E
C T
C U
D l $
D2 $
P C
P P
P T
T e m p o r a r y s t o r a g e o f c u r s o r p o s i t i o n
C u r r e n t c u r s o r c o l o u r
V a l u e s o f c h a r a c t e r s i n d e s ig n t o b e s a v ed
C o l o u r v a lu e s o f c h a r a c t e r s t o b e s av ed
T e m p o r a r y c o p ie s o f D l $ a n d D2 $
D e f in e s w h i c h o f a v a r i e t y o f c o l o u r c h a r a c t e r i s t i c s i s
b e i n g a d d r e s s e d
T h e c o l o u r o f t h e c h a r a c t e r i n p o s i t i o n P P
T h e o r i g i n a l c o n t e n t s o f t h e c u r r e n t c u r s o r l o c a t i o n
L o c a t i o n i n m e m o r y o f t h e t w o c o r n e r s h e l d i n a r r a y C O
M O D U L E 3.1. 1
1 1 0 1 0 R E M V A R I A B L E S
H a r d l y f a i r t o c a ll t h i s a m o d u l e , b u t i ts p r e s e n c e d o e s m e a n t h a t i f y o u
de cid e t o d e v e lo p t h e p r o g r a m f u r t h e r , t h e r e i s a p r o p e r a r e a set a s id e f o r
t h e n e c e s s a ry v a r i a b l e s . T h e s t r i n g a c t u a l l y d e f i n e d i s a s t a n d a r d - d a t a file
s e p a r a t o r .
M O D U L E 3 . 1 . 2
1 2 0 1 0 R E M C U R S O R , M O V E , PR I N T
1 2 0 7 O IF A $ = " " T H E N 1 2 0 4 0
1 2 0 8 0 IF C O 1 9 8 3 A N D T H E N 1 2 8 4 8
1 2 0 9 0 IF 0 0 * 2 0 2 3 A N D A $ = " M " T H E N 1 2 0 4 0
1 2 1 0 8 IF 0 0 = 1 0 2 4 A N D A $ = " i r T H E N 1 2 8 4 8
1 2 1 1 8 IF C C C 1 8 6 4 A N D A $ = " T T H E N 1 2 8 4 8
1 2 1 2 8 IF A $ = , , n" O R A $ * , , M" O R A # - , l l B | n O R
* = " 1 1 " T H E N P R I N T A * . ; : G O T O 1 2 8 4 8
1 2 1 3 8 I F A * = C H R $ ( . 1 3 3 > T H E N M 0 B E = 1
1 2 1 4 8 IF A * = C H R $ < 1 3 7 > T H E N M 0 B E - 2
4 2
Page 45
\
C h a p te r 3 Th e C o lo u r f u l 6 4
1 2 1 6 0 I F < M 0 D E = 1 O R M O D E = 2 O R M O D E - 3 ) A N
B A T * " * - " T H E M M O D E = M O D E + . 5 : G O T O 1 2 0 4 0
1 2 1 7 0 IF A T = C H R T < 1 3 5 ) T H E N I N V = ( I N V = 0 )
1 2 1 8 0 I F R T = C H R T ( 1 3 3 ) T H E M M O D E - 6
1 2 1 9 0 IF A T = C H R T < 1 3 6 ) T H E M M O D E * ?
1 2 2 0 0 IF R T = C H R T ( 1 4 0 ) T H E M M 0 D E * 8
1 2 2 1 0 IF M O D E * 1 A M D A T > = " 1 " A M D A T < > " 8 "
T H E M P O K E C C + 5 4 2 7 2 ,V A L ( A t ) - 1 : G O T 0 1 2 0 4 0
1 2 2 2 0 I F M O D E = l . 5 A N D R T > = " 1 " A M D A T < = " 8 " T
H E N P O K E C C + 5 4 2 7 2 , 8 + V A L ( A T ) ~ 1 : G O T O 1 2 0 4 0
1 2 2 3 0 IF M O D E - 2 A M D R T > * " 1 " H M D A T O " 8 "
T H E M P O K E 5 3 2 8 1 , V A L ( A T ) - 1 : G O T O 1 2 0 4 0
1 2 2 4 0 IF M O D E - 2 . 5 A M D A T > = " 1 " A M D A T O " 8
" T H E N P O K E 5 3 2 8 1 , 8 + V A L ( A $ ) -1 O 3 0 T 0 1 2 0 4 0
1 2 2 5 0 IF M O D E - 3 A N D f lT>*"l " A M D A T < = " 8 "
T H E N P O K E 6 4 6 , V A L ( A t - ) ~ 1 : G O T O 1 2 0 4 0
1 2 2 6 0 IF M 0 D E * 3 .5 A M D A T > = " 1 " A M D A T < = " 8
" T H E M P O K E 6 4 6 , 8 + V A L (A T ) - 1 : G O T O 1 2 0 4 0
1 2 2 7 0 IF M 0 D E O 6 O R ( A T O " R " A M D A T O " D "
A M D A T O " S " ) T H E N 1 2 3 2 0
1 2 2 8 0 IF A T = " R " T H E M G O S U B 1 3 0 0 0
1 2 2 9 0 I F A T = " D " T H E M G O S U B 1 3 0 6 0
1 2 3 0 0 IF A T * " S ' 1 T H E M G O S U B 1 4 0 0 0
1 2 3 1 0 C C = C T : G O T O 1 2 0 4 0
1 2 3 2 0 IF M 0 D E = 8 A M D A T > = " 1 " A M D A $ < = " 8 "
T H E M C U * V A L (A T ) • - 1 : G O T 0 1 2 0 4 0
1 2 3 3 0 IF I M V * - 1 T H E M P R I N T "3";
1 2 3 4 6 P R I N T A T ; ;
1 2 3 5 0 G O T O 1 2 0 4 0
This m o d u le i s re a l ly all t h a t i s n e e d e d t o t u r n y o u r s c re e n i n t o a g r a p h i c s
eas el. I ts p u r p o s e i s t o a ll o w y o u t o m o v e a f l a s h i n g c u r s o r a r o u n d t h e
sc reen, p r i n t i n g c h a r a c t e r s , c h a n g i n g t h e m , e r a s i n g t h e m , c h a n g in g
c o lo u r s f o r f o r e g r o u n d a n d b a c k g r o u n d o f c h a r a c t e r s
Co mme ntary
L ine s 1 2 0 4 0 - 1 2 0 7 0 : T h i s r o u t i n e p r o v i d e s a f l a s h i n g c u r s o r u n d e r u s e r
c o n tr o l .
Line 1 2 0 4 0 : T h i s P O K E sets t h e r e p e a t c h a r a c t e r i s t i c so t h a t a ke y, o n c e
he ld d o w n , w il l c o n t i n u e p r i n t i n g t h e s a m e c h a r a c t e r . T h e s e c o n d p a r t o f
th e line re cei ves a n y sing le c h a r a c t e r i n p u t f r o m t h e k e y b o a r d .
. . . . . . .
4 3
Page 46
Th e Wor kin g C o m m o d o r e 64
Li ne 1 2 0 5 0 : C C i s set e q u a l t o t h e a d d r e s s i n t h e m e m o r y o f t h e c u r r e n t
p r i n t p o s i t i o n . P E E K ( 2 1 1 ) g iv e s t h e p o s i t i o n a l o n g t h e lin e ( 0 - 3 9 ) w h ile
PE E K (2 1 0) *2 56 + P E E K ( 2 0 9 ) g iv e s t h e m e m o r y a d d r e s s o f t h e b e g in n in g
o f t h e lin e. P P i s set e q u a l t o t h e sc re e n c o d e o f w h a t e v e r i s c u r r e n t l y
o c c u p y in g t h e p o s i t i o n wh e r e t h e c u r s o r i s a b o u t t o f l a s h . P C i s t h e c o l o u r
o f t h e c h a r a c t e r in t h a t p o s i t i o n .
L i n e 1 2 0 6 0 : A n a s t e r i s k , s c re e n c o d e 42, i s n o w P O K E d i n t o t h e p o s i t i o n
w he re t h e c u r s o r i s m e a n t t o f l a s h a n d t h e c u r r e n t c u r s o r c o l o u r C U , i s
P O K E d i n t o c o l o u r m e m o r y a t t h e c o r r e s p o n d i n g p o s i t i o n . A s h o r t t im in g
l o o p ke ep s t h e a s t e r i s k o n t h e s c re e n f o r a m o m e n t , t h e n t h e o r g in a l
c h a r a c t e r ( co d e P P ) a n d t h e o r i g i n a l c o l o u r ( P C ) a r e r e P O K E d i n t o t h e
m e m o r y .
L in e 1 2 0 7 0 : I f n o k ey h a s b e e n d e p r e s s e d t h e n t h e cy cl e i s r e p e a t e d .
Li ne s 1 2 0 8 0 - 1 2 1 1 0 : T h e s e lines c h e c k t h a t i f c u r s o r m o v e a r r o w s a re
i n p u t , t h e c u r s o r d o e s n o t a t t e m p t t o m o v e o f f t h e s c re e n .
Li ne 1 2 1 2 0 : I f a c u r s o r c o n t r o l i s i n p u t a n d pa s se s t h r o u g h t h e t e s t s in t h e
f o u r lines a b o v e it i s i m m e d i a t e l y p r i n t e d a n d t h e p r o g r a m r e t u r n s t o t h e
fl a s h in g c u r s o r r o u t i n e .
Line s 1 2 1 3 0 - 1 2 2 0 0 : U s i n g t h e f u n c t i o n keys o n t h e r i g h t o f t h e k e y b o a r d
as i n p u t s , th e s e line s a ll o w t h e u s e r t o s p e ci f y d i f f e r e n t m o d e s w hi ch p e r m i t
d i f f e r e n t c o l o u r c h a r a c t e r i s t i c s t o b e se t.
Li ne 1 2 1 3 0 : P r e s s i n g k e y f 1 p u t s t h e p r o g r a m i n t o M O D E 1 . I n t h i s m o d e ,
p r e s s i n g a n y o f t h e keys 1 t o 8 w il l r e d e f i n e t h e c o l o u r o f a n y c h a r a c t e r ov er
wh ic h t h e c u r s o r i s c u r r e n t l y p l a c e d . T h e c o l o u r w il l b e t h a t i n d i c a t e d o n
t h e f r o n t o f t h e key.
Li ne 1 2 1 4 0 : P r e s s i n g f2 a llo w s t h e sa m e p r o c e d u r e t o r e d e f i n e t h e screen
b a c k g r o u n d c o l o u r .
L i n e 1 2 1 5 0 : P r e s s i n g f 3 a llo w s t h e r e s e t t i n g o f t h e p r i n t c o l o u r b y t h e same
p r o c e d u r e .
L in e 1 2 1 6 0 : Since t h e r e a r e i n f a c t 1 6 c o l o u r s a v a i l a b l e , i n p u t o f t h e l e f t
a r r o w a t t h e t o p l e f t h a n d c o r n e r o f t h e k e y b o a r d whi le in M O D E s 1 ,2 o r 3 ,
r e d e f in e s t h e m o d e so t h a t e n t r y o f keys 1 - 8 w il l p r o v i d e t h e c o l o u r t h a t
w o u l d n o r m a l l y b e o b t a i n e d b y p r e s s i n g t h a t key t o g e t h e r wi th
C o m m o d o r e lo gc f k e y . T h e c h a r a c t e r i s t i c r e d e f i n e d w il l b e t h e sa m e as t h a t
r e f e r r e d t o b y t h e m a i n m o d e n u m b e r .
4 4
Page 47
C h a p te r 3 Th e C o lo u r f u l 6 4
L in e 1 2 1 7 0 : O n p r e s s i n g f 5 t h e in v er s e c h a r a c t e r i s t i c i s set o r r e s e t — t h u s
al lowing inver se c h a r a c t e r s t o b e p r i n t e d .
L ine 1 2 1 8 0 : O n p r e s s i n g f6 t h e p r o g r a m w il l a ll o w t h e sa vi n g o f t h e
des ig n c r e a t e d . T h e c o r r e c t p r o c e d u r e w il l b e e x p l a i n e d i n d e t a i l l a t e r .
L in e 1 2 1 9 0 : P r e s s i n g f7 d oe s n o t h i n g a t all e x c e p t t o r e d e f i n e i n t o a n o n -
effective m o d e . T h i s a llo w s t h e u s e r t o p r i n t t h e n u m b e r s 1 - 8 o n t h e
sc re en r a t h e r t h a n r e d e f i n e a c o l o u r c h a r a c t e r i s t i c .
L in e 1 2 2 0 0 : P r e s s i n g f8 a llo w s t h e u s e r t o c h a n g e t h e c u r s o r c o l o u r t o
an y o f th e f i r s t e ig h t c o l o u r s . T h i s i s u s e f u l i f t h e s c re e n c o l o u r h a s b e e n
re -d e fin e d in su c h a wa y t h a t t h e c u r s o r i s n o l o n g e r c le a rl y v isibl e.
L in es 1 2 2 1 0 - 1 2 2 2 0 : I f M O D E i s 1 o r 1 . 5 t h e n t h e c o l o u r i n p u t i s
P O K E d i n t o t h e c o l o u r m e m o r y f o r t h e c u r r e n t s q u a r e .
L in es 1 2 2 3 0 - 1 2 2 4 0 : I f M O D E i s 2 o r 2.5 t h e ne w c o l o u r c o d e i s P O K E d
in to l o c a t i o n 53 28 1 , wh ic h sets t h e sc re e n b a c k g r o u n d c o l o u r .
L in es 1 2 2 5 0 - 1 2 2 6 0 : I f M O D E i s 3 o r 3. 5 t h e n t h e new c o l o u r c o d e i s
P O K E d i n t o l o c a t i o n 64 6, w h i c h d i c t a t e s t h e c u r r e n t p r i n t c o l o u r .
L in es 1 2 2 7 0 - 1 2 3 1 0 : W h e n i n M O D E 6 t h i s r o u t i n e r e l a te s t o t h e sa vin g
o f e it h e r sma ll o r la r g e d e s ig n s . I n p u t o f R a llo w s t h e d e f i n i t i o n o f a
rec tan gl e o f sc re e n t o b e s a v e d . D saves a s m a ll- s c al e d e s ig n . S save s t h e
wh ole scre en t o t a p e .
Lin e 1 2 3 1 0 : C T i s u s e d t o save t h e c u r r e n t c u r s o r p o s i t i o n , w h ic h m a y b e
a lte re d d u r i n g t h e SA VE r o u t i n e .
L in e 1 2 3 2 0 : I f M O D E i s 8 t h e n t h e new c o l o u r c o d e i s s t o r e d in t h e
v a ria b le C U .
Line 1 2 3 3 0 : I f t h e in v er s e c h a r a c t e r i s t i c i s set ( IN V = - 1 ) t h e R VS O N
c o n tr o l c h a r a c t e r i s p r i n t e d , t h u s i n v e r t i n g t h e n e x t c h a r a c t e r t o b e
p r in t e d .
Lin e 1 2 3 4 0 : I f t h e p r o g r a m h a s r e a c h e d t h i s p o i n t t h e n w h a t e v e r
c h a r a c te r was i n p u t i s p r i n t e d o n t h e s c re e n a n d t h e re v e r s e o f f c o n t r o l
c h a r a c te r i s p r i n t e d f o ll o w i n g i t.
4 5
Page 48
Th e Wor king C o m m o d o r e 6 4
Test in g M o d u l e 3 . 1 .2
A f t e r e n t e r i n g t h i s m o d u l e y o u s h o u l d b e a b le t o c r e a t e de s ig n s o n t h e
sc re e n a t wil l, u s in g t h e w h o l e c h a r a c t e r s e t a v a i l a b l e f r o m t h e k e y b o a r d .
All t h e c o l o u r r e d e f i n i t i o n c o m m a n d s s h o u l d b e a v a i l a b l e b u t y o u w il l n o t
ye t be a b le t o save a n y d e s ig n y o u c r e a t e .
M O D U L E 3 .1 . 3
1 3 0 0 0 R E M # * # # # # # # # # # # # # # # # # # # # # * # # # # # # #
1 3 0 1 0 R E M S A V E D E S I G N
1 3 0 2 0 R E M # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
1 3 0 3 0 G E T T $ :IF T $ = " " T H E N 1 3 0 3 0
1 3 0 4 0 IF T $ < > " 1 " A N D T $ < > " 2 " T H E N R E T U R N
1 3 8 5 0 C O < V f l L < T $ ) * 2 - 2 > = F ' E E K < 2 1 1 ) : C O < V A L _ < T
$> * 2 ~ 1 > = I N T < < C C - 1 0 2 4 >/ 4 8 ) : R E T U R N
1 3 0 6 0 R E M # * # * # * # # * * # * # # # # # # # # # * # # * # * # * #
1 3 0 7 0 C T = C C : P O K E 6 4 6 . . C U
1 3 0 8 0 I F C C K 0 X = C O < 2 ) A N D C O < 1 O C O < 3> T
H E N 1 3 1 1 0
1 3 0 9 0 P R I N T " S R E C T A N G L E I M P R O P E R L Y D E F I N
E D . " : F O R I = 1 T O 1 0 0 0 : N E X T
1 3 1 0 0 P R I N T " a
" ; : R E T U R N
1 3 1 1 0 IF < C O < 2 > - C O < 0 > -1 * < C O < 3) - C O < 1 -1 >
< 2 5 1 T H E N 1 3 1 4 0 .
1 3 1 2 0 P R I N T " S I D E S I G N T O O L A R G E . " ; = F O R 1 =
1 T O 1 0 0 0 : N E X T
1 3 1 3 0 P R I N T " S 3
l i '
1 3 1 4 0 F O R I = 1 ' T O 2 ; P T = 1 0 2 4 + 4 0 # C O < 1 * 2 - 1 > +
C O < I * 2 - 2 > : T C < I : • = P T • • T C < I + 2 > = P E E K < P T >
1 3 1 5 0 P O K E P T , 4 2 : P O K E P T + 5 4 2 7 2 . • C U ■ N E X T
1 3 1 6 0 I N P U T "S 3TH ESE P O I N T S O . K . < V / N > : " ;
Q f : I F Q $ = " V " T H E N 1 3 1 7 0
1 3 1 6 2 P R I N T " 3
" : F O R 1 = 1 T O 2 ' • P O K E T C < I > , T C < I + 2 > : N E X T
1 3 1 6 4 R E T U R N
1 3 1 7 0 D l $ = " " ; D 2 $ = " " : F O R I = C 0 < 1 > + 1 T O C C K
3 > -1 : F O R J = C O < 0 : ■ +1 T O C O < 2 -1
1 3 1 8 0 D 1$ = D 1 $ + C H R $ < P E E K < 1 8 2 4 + 4 0 * I + J > ) = P O
K E 1 0 2 4 + 4 0 * I + J .42
1 3 1 9 0 D 2 $ = D 2 $ + C H R $ < P E E K < 5 5 2 9 6 + 4 8 * I + J > > : P
O K E 5 5 2 9 6 + 4 0 * I + J , 0 : N E X T J , I = P R I N T " 2 1 " ;
1 3 2 0 0 D 3 f = D l | : : D 4 f - = D 2 $ : F O R I = C 0 C 1 > + 1 T O C
0 < 3 > - 1 : F O R J = C O <0 > + 1 T O C O <2 ) - l
46
Page 49
C h a p te r 3 The C o l o u r f u l 6 4
1 3 2 1 0 P O K E 1 0 2 4 + 4 0 * I + J ,f i S C <L E F T $ < B 3 $ , 1 > )
B 3 $ = R I G H T f < D 3 $ , L E N < D 3 $ ) -1 )
1 3 2 2 0 P O K E 5 5 2 3 6 + 4 0 * I + J , f l S C < L E F T $ ( D 4 $ ,1 )
> : D 4 $ « R I G H T $ < D 4 $ , L E N (D 4 $ > - • 1 ) : N E X T J , I
1 3 2 3 0 P R I N T " S T H I S I S W H A T I S B E I N G S A V E
B . " : F O R 1=1 T O 1 0 0 0 : N E X T
1 3 2 4 0 I N P U T 1 1 I M P O S I T I O N T A P E C O R R E C T L Y . • T
H E N R E T U R N • " ; Q $
1 3 2 5 0 P R I N T " 3
1 3 2 6 0 O P E N l ’ , 1 , 1 , " A R T I S T " ’ - F O R I ^ : 0 T O 3 ^ P
R I N T # 1 , C O ( I • N E X T : P R I N T # 1 , L E N C D 1 $ >
1 3 2 7 0 F O R I = j . T O L E N ( D i $ > • P R I N T # 1 , f l S C C M I
I , i : : 0 R $ f l S C ( M I I i $ ( . D 2 $ . • I . • 1 > > : N EX T
1 3 2 8 0 C L O S E 1 - R E T U R N
T h e p u r p o s e o f t h i s m o d u l e i s t o a ll o w a s m a l l d e s ig n t o b e d e f i n e d o n t h e
screen a n d t h e n s a ve d e c o n o m i c a l ly .
Com me nta ry
Lines 1 3 0 3 0 - 1 3 0 5 0 : I f , i n t h e p r e v i o u s m o d u l e , M O D E 6 i s set a n d t h e n R
pr ess ed t h e s e t h r e e line s a c c e p t t h e i n p u t o f a f u r t h e r c h a r a c t e r w h i c h m u s t
be a 1 o r a 2. I f 1 i s p r e s s e d , t h e c u r r e n t c u r s o r s q u a r e i s d e f i n e d a s t h e t o p
l e f t - h a n d c o r n e r o f a r e c t a n g l e t o b e s a v e d , 2 d e f i n e s t h e b o t t o m r i g h t - h a n d
c o r n e r . Th e se t w o s q u a r e s a r e a c t u a l l y o u t s i d e t h e d e s ig n t o b e sa v e d , t h e y
d e fi n e a n o u t s i d e b o r d e r t o w h a t i s t o b e s a v e d . T h e p o s i t i o n s i n m e m o r y o f
t h e t w o de sig n c o r n e r s a r e s t o r e d i n t h e a r r a y C O . N o t e t h a t t h i s a r r a y h a s
n o t be e n d e c l a r e d since it h a s le ss t h a n 1 0 e l e m e n t s —si m p l y i n p u t t i n g a
va lue t o it w i l l set it u p s a t i s f a c t o r i l y . CO (0 ) o r C O (2 ) i s set t o t h e p o s i t i o n
o f t h e c u r s o r i n t h e r o w , as i n d i c a t e d b y P E E K ( 2 1 1 ) . C O ( l ) o r C O (3 ) i s se t
t o t h e c u r r e n t s c re e n l in e n u m b e r + ( a c t u a l m e m o r y p o s i t i o n - s c r e e n
s t a r t ) / 4 0 .
Line s 1 3 0 6 0 - 1 3 2 8 0 : T h e s e line s a ll o w t h e sa v in g o f t h e r e c t a n g l e
p re vi ou s ly d e f i n e d .
Lin e 1 3 0 7 0 : T h e p r i n t c o l o u r i s se t t e m p o r a r i l y t o t h e c o l o u r o f t h e c u r s o r .
Lin e 1 3 0 8 0 : A c h e ck i s m a d e t h a t a v a li d r e c t a n g l e h a s b e e n d e f i n e d ie t h a t it
ha s le n g t h a n d w i d t h ) . I f n o t , a n e r r o r m es s a g e i s p r i n t e d .
4 7
Page 50
Th e Wo rk ing C o m m o d o r e 64
L in e 1 3 1 1 0 : D a t a f o r t h e d e s ig n w il l b e t e m p o r a r i l y s t o r e d i n a s tr i n g so a
ch e ck i s m a d e t h a t t h e s t r i n g w il l n o t b e t o o l o n g . A n e r r o r messa ge i s
p r i n t e d i f t h e s t r i n g i s l ik e ly t o b e t o o l o n g .
Line s 1 3 1 4 0 - 1 3 1 6 0 : U s i n g t h e c o - o r d i n a t e s c o n t a i n e d in t h e a r r a y C O , t h e
c o r n e r s o f t h e r e c t a n g l e a r e r e P O K E d o n t o t h e s c re e n a n d t h e u s e r i s a s k e d
t o c o n f i r m t h e c o r r e c t n e s s o f t h e r e c t a n g l e t o b e s a v ed .
Li ne 1 3 1 7 0 : T h e t w o s tr i n g s w h i c h w il l b e u s e d a r e i n it ia l is e d . T h e t w o
l o o p s c o m b i n e t o m e a n t h a t J c h a r a c t e r s ( th e w i d t h o f t h e des ign ) w i l l be
r e a d f r o m t h e s c re e n f o r I lin es ( th e h e i g h t o f t h e d e s ig n ) .
Lin es 1 3 1 8 0 - 1 3 1 9 0 : O n t h e b a s is o f t h e a d d r e s s e s p r o v i d e d b y t h e l o o p s ,
t h e sc re e n a n d c o l o u r m e m o r y a r e P E E K e d , a n d t h e v a lu e s a d d e d t o t h e
s t o r a g e s t r i n g in t h e f o r m o f c h a r a c t e r s o f t h a t c o d e v a lu e . T h e t w o s tri ng s
t h u s f o r m e d w o u l d m a k e n o sen se p r i n t e d o u t , t h e y a r e m er e ly a simple
wa y o f t e m p o r a r i l y s t o r i n g a series o f v a lu e s w i t h o u t h a v in g t o se t
c o m p l i c a t e d p o i n t e r s t o a p o s i t i o n i n a n a r r a y . A f t e r t h is i s d o n e , a n
a s te r is k i s P O K E d i n t o t h e sc re e n l o c a t i o n a n d its c o l o u r c h a r a c t e r i s t i c se t
t o b l a c k , m a k i n g t h e p r o c e s s i n g o f t h e d e s ig n v isibl e.
L i n e 1 3 2 0 0 : A c o p y o f D l $ a n d D2$ i s t a k e n , t h e n t w o m o r e l o o p s a r e u se d
t o P O K E b a c k o n t o t h e s c re e n t h e c h a r a c t e r s w h i c h h a v e b e e n s t o r e d ,
t o g e t h e r w i t h t h e i r c o l o u r c h a r a c t e r i s t i c s . E a c h t im e a c h a r a c t e r i s P O K E d
b a c k o n t o t h e s c re e n t h e t w o s tr i n g s a r e s t r i p p e d o f t h e i r l e f t - h a n d
c h a r a c t e r , so t h a t it i s a lw a ys t h e f i r s t c h a r a c t e r o f t h e s t r i n g w h ic h i s u se d .
I t i s t h is s t r i p p i n g p r o c e s s t h a t n e c e s s i ta te s t h e c r e a t i o n o f a t e m p o r a r y
c o p y o f t h e t w o o r i g i n a l s t r i n g s . T h e so le p u r p o s e o f t h e s e t w o l o o p s i s
r ea l ly t o r e - a s s u r e t h e u s e r t h a t t h e d e s ig n i s g o i n g t o b e s a v ed c o rr e c tl y .
Li ne s 1 3 2 4 0 - 1 3 2 8 0 : T h e d e s ig n i s sa v e d o n t o t a p e .
L in e 1 3 2 6 0 : T h e v a lu e s i n t h e a r r a y C O a r e s a v e d , t o g e t h e r w i t h t h e le n g t h
o f D l $ (w h ich i s a ls o t h e l e n g t h o f D2$) .
L i n e 1 3 2 7 0 : A l o o p e q u a l t o t h e l e n g t h o f D l $ , saves t h e v a lu e s o f t h e
c h a r a c t e r s o f b o t h s t r i n g s ( i e t h e v a lu e s t a k e n f r o m s c re e n a n d c o l o u r
m e m o r y ) . U n f o r t u n a t e l y t h e tw o s tr i n g s t h em s e lv e s c a n n o t b e sa ve d o n t o
t a p e since t h e y m a y c o n t a i n n o n - p r i n t i n g c h a r a c t e r s w h ic h t h e 6 4 i s n o t
c a p a b l e o f sa vi ng in s t r i n g f o r m .
4 8
Page 51
C h a p te r 3 Th e C o lo u r f u l 6 4
T e s t i n g M o d u le 3. 1.3
Y ou s h o u ld n o w b e a b le t o sa ve a d e s ig n o n t o t a p e . I f t h e r e d i s p l a y o f t h e
de si gn i s s a t i s f a c t o r y , it i s lik e ly t h a t t h e s a v in g i s b e in g d o n e c o r r e c t l y , b u t
this c a n o n l y be fu ll y t e s t e d i f y o u s u b s e q u e n t l y e n t e r a t l e a s t t h e r e l e v a n t
m o du le o f t h e p r o g r a m W o r d s , w h ic h i s i n t e n d e d t o m a k e u se o f t h e
de si g ns so c r e a t e d .
M O D U L E 3 .1 . 4
1 4 0 0 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 4 0 1 0 R E M S A V E S C R E E N
1 4 0 2 0 R E M # * * # * * ^ : ^ # * # # * * ^ * ^ * * : ^ * ' * * * * * *
1 4 8 3 0 P R I N T " ^ P O S I T I O N T A P E C O R R E C T L Y . T
H E N R E T U R N = "Q $
1 4 0 4 0 P R I N T " S I
: O P E N 1 . - 1 , 1 , " S C R E E N "
1 4 0 5 0 F O R I S 0 T O 9 9 9 : P R I N T # 1 , P E E K < 1 0 2 4 + 1 > : P
R I N T # 1 ,P E E K < 5 5 2 9 6 + I ) : N E X T = C L O S E 1 : R E T U R N
I f , d u r i n g t h e e x e c u t io n o f M o d u l e 2, M O D E 6 i s set a n d S t h e n p r e s s e d ,
th is m o d u le w il l e n s u r e t h a t t h e w h o l e o f t h e c o n t e n t s o f t h e s c re e n a r e
save d t o t a p e . T h is i s d o n e b y t h e u n c o m p l i c a t e d m e t h o d o f P E E K i n g th e
c o n te n t s o f t h e m e m o r y f r o m 1 0 2 4 t o 2 0 2 3 ( th e s c re e n m e m o r y ) p l u s t h e
e qu iv a l e n t c o l o u r m e m o r y l o c a t i o n s a n d s a v in g t h e v a lu e s . A l a t e r
p r o g r a m c a n r e a d t h e v a lu e s f r o m t a p e a n d P O K E t h e m b a c k i n t o t h e sa m e
lo c a t io n s .
S u m m ar y
Thi s p r o g r a m i s c a p a b l e o f p r o v i d i n g a g r e a t d e a l o f f u n b u t its g r e a t e s t
c o n t r i b u t i o n i s t h e c a p a c i t y t h a t it g iv es y o u t o d e s ig n c o m p l e x g r a p h i c s
with ease, e d it in g t h e m a t w il l a n d s im pl y c a ll in g t h e m u p f o r u se in
s u b s e q u e n t p r o g r a m s . Y o u s h o u l d a l s o , b a s e d o n t h e t e c h n i q u e s e m p l o y e d
here , ha ve n o d i f f i c u l t y w i t h s u b s e q u e n t p r o g r a m s o f y o u r o w n w h ic h n ee d
to P O K E t h e s cre en a n d c o l o u r m e m o r y .
G o i n g Further
1 ) N o p r o v i s i o n i s mad e t o save t h e sc re e n b a c k g r o u n d c o l o u r — i t w o u l d be
a s im ple m a t t e r t o a d d t h i s .
2 ) W hy n o t a d d a d i s p l a y o n t h e b o t t o m lin e o f t h e s c re e n t o sh o w w hi ch
m od e i s c u r r e n t l y set.
A r t is t : T a b l e o f o n e -k e y c o m m a n d s
f 1 A ll ow s r e d e f i n i t i o n o f c o l o u r o f c h a r a c t e r u n d e r c u r s o r
f 2 A ll ow s r e d e f i n i t i o n o f s c re e n c o l o u r
f 3 A ll ow s c h a n g e o f p r i n t c o l o u r
4 9
Page 52
T h e Wo rking C o m m o d o r e 6 4
f4 E r a s e s c u r r e n t d e s ig n
f 5 Sets o r r e s e t s R VS
f 6 SA V E m o d e
f7 D u m m y m o d e
f8 A ll o w s c h a n g e o f c u r s o r c o l o u r
- * • A ll o w s e n t r y o f s e c o n d c o l o u r s e t i n m o d e s 1 - 3
SA VE m o d e :
R t h e n 1 o r 2 d e f i n e s c o r n e r o f r e c t a n g l e t o b e s av ed
D sa ves s m a ll sc ale d e s ig n
S save s w h o l e s c re e n
3 . 2 CHA RACTERS
N o m a t t e r h o w g o o d t h e c h a r a c t e r s e t p r o v i d e d b y a h o m e m i c r o , t h e r e i s
b o u n d t o c o m e a t im e w h e n t h e c h a r a c t e r y o u w a n t i s n o t a v a i l a b l e . I t m ay
b e t h a t y o u w a n t t o p r i n t i n a n o t h e r l a n g u a g e a n d u se c h a r a c t e r s w it h
a c c e n t s , o r i n a b s t r u s e m a t h e m a t i c a l s y m b o l s , o r i t m a y b e t h a t y o u n ee d
s o m e t h i n g r a t h e r s pe ci a l t o p u t t h e f i n i s h i n g t o u c h e s t o y o u r l a t e s t g a m e .
W h a t e v e r i t i s t h a t y o u n e e d , t h e 64 is w a i t i n g t o m e e t t h a t n e e d wi th its
u s e r - d e f i n e d c h a r a c t e r c a p a b i l i t y .
W h e n t h e 64 i s s t a r t e d u p , a ll i ts p o t e n t i a l c h a r a c t e r s a r e s t o r e d i n its
R e a d O n l y M e m o r y , in a s e c t i o n b e g i n n i n g a t a d d r e s s 54 2 4 8 . E a c h
c h a r a c t e r t a k e s t h e f o r m o f e ig h t b y t e s o f m e m o r y a n d t h e 8 * 8 g r id o f d o t s
m a k i n g u p e a c h c h a r a c t e r i s r e p r e s e n t e d b y t h e i n d i v i d u a l b i t s o f t h e e ig ht
b y t e s set a s i d e f o r e a c h c h a r a c t e r . F o r i n s t a n c e , i f t h e e ig h t b y t e s o f
m e m o r y f o r a p a r t i c u l a r c h a r a c t e r we re 1 2 8 , 6 4 , 3 2 , 1 6 , 8 , 4 , 2 a n d 1 t h e n , in
b i n a r y n o t a t i o n t h e y w o u l d b e 1 0 0 0 0 0 0 0 , 0 1 0 0 0 0 0 0 , 0 0 1 0 0 0 0 0 , 0 0 0 1 0 0 0 0 ,
0 0 0 0 1 0 0 0 ,0 0 0 0 0 1 0 0 ,0 0 0 0 0 0 1 0 a n d 00 000001. N o w p l a c e t h o s e v a lu e s i n a
gr id :
100 000 00
0 1 0 0 0 0 0 0
00 10 000 0
0 0 0 1 0 0 0 0
00 00 100 0
00000 10 0
00 00 001 0
0 0 0 0 0 0 0 1
T h e b i ts w h ic h a r e s e t ( o r o n ) d e f i n e a c h a r a c t e r (in t h i s c a se a d i a g o n a l line )
w i t h e a c h set b i t b e in g t r a n s l a t e d i n t o o n e pixel o n t h e s c re e n .
5 0
Page 53
C h a p te r 3 Th e C o lo u r f u l 6 4
T h a t ’ s all ve ry w e ll b u t sinc e t h e c h a r a c t e r d a t a i s s t o r e d in R e a d O n l y
M e m o r y , it c a n n o t be c h a n g e d — it i s p e r m a n e n t l y set w h e n t h e R O M c h ip
i s m a n u f a c t u r e d . F o r t u n a t e l y t h e 6 4 p r o v i d e s a n e a t w a y a r o u n d t h e
p r o b le m b u t t o u n d e r s t a n d it w e f i r s t h a v e t o e x a m i n e t h e m e t h o d b y w h ic h
t h e vi de o d i s p l a y i s g e n e r a t e d .
A ll t h e t a s k s r e l a t i n g t o t h e v i d e o s c re e n o n t h e 6 4 a r e h a n d l e d b y a
s e p a r a te c h ip , t h e 6 5 6 7 V id e o I n t e r f a c e C h i p ( o r V I C I I c h ip ) . T h is
w o r k h o r s e h a n d l e s b o t h t h e s c re e n i t s e l f a n d t h e c h a r a c t e r s w h ic h a r e t o b e
pl ac e d o n t o t h e s c re e n , d e f i n i n g a n a r e a o f m e m o r y i n w hi c h t h e s c re e n
i n f o r m a t i o n w il l b e s t o r e d a n d a n o t h e r it w il l d r a w u p o n f o r c h a r a c t e r
d a t a .
C o n t r a r y t o w h a t y o u m i g h t e x p e c t , t h e V I C II d o e s n o t d r a w its
c h a r a c t e r d a t a f r o m t h e R O M a t a d d r e s s 53 2 4 8 . T h e r e a s o n f o r t h i s i s t h a t
t h e VIC II i s o n l y c a p a b l e o f p e rc e iv i n g 1 6 K o f m e m o r y a t o n e t i m e , so w it h
th e scree n m e m o r y in its n o r m a l p o s i t i o n a t 1 0 2 4 - 2 0 2 3 i n t h e m e m o r y ,
c h a r a c t e r d a t a m u s t b e d r a w n f r o m s o m e w h e r e b e tw e e n 0 a n d 1 6 3 8 3 in t h e
m em o r y . T o a ch iev e t h i s , t h e o p e r a t i n g s y s te m c h e a t s a l it t l e a n d m a k e s t h e
VIC II bel ieve t h a t t h e r e i s c o p y o f t h e c h a r a c t e r set d a t a l o c a t e d a t
4 0 9 6 - 6 1 4 3 . W h e n e v e r t h e V I C I I l o o k s a t t h a t m e m o r y a r e a it d e te c ts t h e
c h a r a c t e r set d a t a , d e s p it e t h e f a c t t h a t i n a c t u a l f a c t t h a t a r e a o f m e m o r y
w i l l p r o b a b l y b e fil led w i t h a Basic p r o g r a m .
Thi s m a y see m a l it t l e a b s t r u s e b u t it i s o f v i ta l i m p o r t a n c e since it m e a n s
t h a t , r a t h e r t h a n l o o k i n g f o r its c h a r a c t e r d a t a i n t h e R O M , w hi c h c a n n o t
be a l t e r e d , t h e V I C I I l o o k s f o r t h e d a t a i n R a n d o m Acc ess M e m o r y
(RA M ) , t h a t i s t o s ay m e m o r y t h a t t h e u s e r c a n g e t a t a n d a l t e r . O f c o u r s e
i t ’ s n o t q u i te t h a t s im pl e. W e h a v e a l r e a d y n o t e d t h a t w h e n t h e V I C I I l o o k s
a t t h e m e m o r y a r e a f r o m 40 96 o n w a r d s , it i s n o t a c t u a l l y t h o s e a d d re s s e s
t h a t it s e e s b u t a n i m a g e o f t h e c h a r a c t e r d a t a i n t h e R O M . F o r t u n a t e l y , t h is
i s a f e a t u r e o f o n l y t w o b l o c k s o f m e m o r y w i t h i n t h e 1 6 K b l o c k , 4 0 9 6 - 6 1 4 3
a n d 6 1 4 4 - 8 1 9 3 . I f t h e V I C I I i s i n s t r u c t e d t o seek its c h a r a c t e r d a t a f r o m
a ny o f t h e o t h e r 2 K b l o c k s w i t h i n t h e t o t a l 1 6K , t h e n i t w il l n o t s e e t h e R O M
image b u t w il l t a k e t h e d a t a w h i c h i s a c t u a l l y i n m e m o r y a n d t r e a t i t as i f it
w er e t h e c h a r a c t e r se t.
T h e q u e s t i o n n o w b e c o m e s , w h i c h b l o c k s h a ll w e s p eci fy ? T h e f i r s t o n e
a va ilab le i s 2 0 4 8 - 4 0 9 5 b u t t h i s h a s t h e s li g ht d r a w b a c k t h a t it i s wh e r e t h e
B a s ic p r o g r a m s t a r t s a n d P O K E i n g it w i t h ne w c h a r a c t e r d a t a w ill c r a s h t h e
p r o g r a m . W e c o u l d u se t h e b l o c k s a t 81 9 2 , 1 0 24 0, 12 28 8 o r 1 4 3 3 6 , b u t
u n f o r t u n a t e l y t h i s w o u l d m e a n t h a t w e w o u l d h a v e t o l im it t h e a r e a
a va ilab le t o t h e Basic p r o g r a m q u i t e d r a s t i c a l l y sinc e o t h e r w i s e t h e r e
wou ld b e a d a n g e r t h a t a l a r g e p r o g r a m w o u l d o v e r w r i t e t h e a r e a u s e d f o r
c h a r a c te r s . T h e s o l u t i o n a d o p t e d h e r e i s t o m o v e t h e w h o l e a r e a t h a t t h e
VI C II c h ip a d d re s s e s f u r t h e r u p i n t o t h e m e m o r y .
You w i l l r e m e m b e r t h a t t h e V I C I I i s c a p a b l e o f seeing a 1 6 K c h u n k o f
m em or y a t o n e t i m e , h o w e v e r it i s n o t f u ss y w h ic h 1 6 K b l o c k it se e s. T h e r e
5 1
Page 54
Th e Wor king C o m m o d o r e 6 4
a r e f o u r s u c h b l o c k s , b e g i n n i n g a t 0,1 6 3 84 ,3 2 7 6 8 a n d 49 15 2. M o v in g t o t h e
b l o c k a t 49152, whi le p r o v i d i n g t h e m a x i m u m m e m o r y a r e a f o r Basic,
p r e s e n t s t h e p r o b l e m t h a t t h a t i s w h e r e t h e R O M is, s o w e s h a ll a s k t h e V IC
I I t o a d d r e s s t h e 1 6 K b l o c k s t a r t i n g a t a d d r e s s 32 7 6 8 . H a v i n g d o n e t h a t , al l
t h a t r e m a in s i s t o s p e c i f y w h e r e i n t h a t b l o c k t h e c h a r a c t e r d a t a w il l b e
t a k e n f r o m a n d w h e r e t h e sc re e n d a t a w ill b e l o c a t e d . T h e r e w ill n o w b e
3 0 K o f m e m o r y a v a i l a b l e f o r a Bas ic p r o g r a m ( 2 0 4 8 - 3 2 7 6 7 ) a n d t h e
p o t e n t i a l f o r a u s e r - d e f i n e d c h a r a c t e r s e t i n t h e R A M a b o v e 3 2 7 6 8 .
N o d o u b t a ll t h i s seem s i n o r d i n a t e l y c o m p l i c a t e d . I n f a c t it i s sim p ly a
m a t t e r , g iv en t h e 6 4 ’ s f le x i b le m e m o r y s t r u c t u r e , o f a fe w P O K E s a n d t h e
j o b i s d o n e . O n t h e b a s is o f t h e c h a n g e s w r o u g h t b y t h o s e P O K E s , t h e
p r o g r a m w h i c h f o ll o w s w ill al l o w y o u t o c o m p l e te l y r e d e f i n e a ll o r p a r t o f
t h e 6 4 ’ s c h a r a c t e r set a n d t o s t o r e y o u r ne w c h a r a c t e r set so t h a t it c a n
p i c k e d u p a n d u s e d b y o t h e r p r o g r a m s .
C h a r a c t e r s : T a b l e o f V a r i a b l e s
A$ Sin gle k e y c o m m a n d o b t a i n e d b y u s e o f G E T
C l O r i g i n a l c o l o u r o f s c re e n a t l o c a t i o n C C
C C C u r r e n t p o s i t i o n o f fla sh ing , c u r s o r i n t h e s c re e n m e m o r y
C H N u m b e r o f c u r r e n t c h a r a c t e r in c h a r a c t e r se t
C P P o i n t e r t o l o c a t i o n i n m e m o r y o f c h a r a c t e r C P
M M V a l u e i n p u t t o c h a n g e C P
P 1 R ow o f c u r s o r p o s i t i o n o n s c re e n
P 2 C o l u m n o f c u r s o r p o s i t i o n o n s cre en
P P O r i g i n a l c o n t e n t s o f s c re e n a t l o c a t i o n C C
T T ( ( 7 ,7 ) U s e d t o a ll o w t h e m a n i p u l a t i o n o f d a t a f o r c u r r e n t
c h a r a c t e r
M O D U L E 3.2.1
1 1 0 1 0 R E M R E - A R R A N G E M E M O R Y
1 1 0 2 0 R E M ' * * # ' * * # ** * - * ^ ^ - * * # * * # # * * . * * * ' * ^ * * * *
1 1 @ 3 0 P O K E 5 3 2 8 1 , 6 : P R I N T C H R $ < 1 4 2 >
1 1 0 4 0 P O K E 5 2 , 1 2 8 = P 0 K E 5 6 , 1 2 8
1 1 0 5 0 P O K E 5 6 3 3 4 , P E E K < 5 6 3 3 4 > A N D 2 5 4
1 1 0 6 0 P O K E 1 , P E E K C l > A N D 2 5 1
1 1 0 7 0 F O R 1 = 0 T O 2 0 4 7 : P O K E 3 2 7 6 8 + 1 , P E E K <
5 3 2 4 8 + 1 ) : N E X T
1 1 0 8 0 P O K E 1 , P E E K < 1 ' ) 0 R 4
1 1 0 9 0 P O K E 5 6 3 3 4 , P E E K < 5 6 3 3 4 >O R 1
1 1 1 0 0 P Q K E 5 6 5 7 8 , P E E K < 5 6 5 7 8 > 0 R 3
1 1 1 1 0 P O K E 5 6 5 7 6 , < P E E K < 5 6 5 7 6 > A N D 2 5 2 > O R 1
1 1 1 2 0 P O K E 6 4 8 . . 1 3 6
1 1 1 3 0 P O K E 5 3 2 7 2 , 3 2
5 2
Page 55
C h a p te r 3 The C o lo u r f u l 6 4
The p u r p o s e o f t h i s m o d u l e i s t o a c c o m p l i s h all t h e c h a n g e s t o m e m o r y
s tr u c tu r e sp e ci fie d a b o v e a n d t o c o p y a n i n i t i a l c h a r a c t e r set i n t o t h e R A M
a re a s pe cif ied .
Commentary
L in e 1 1 0 3 0 : T h is sets t h e m a c h i n e i n c a p i t a l c h a r a c t e r s m o d e , since o n l y t h e
first o f t h e t w o a v a il a b l e c h a r a c t e r sets o n t h e 6 4 i s g o i n g t o b e u s a b l e o n c e
th e VIC II s to p s l o o k i n g a t t h e R O M im a g e .
L in e 1 1 0 4 0 : T he s e t w o P O K E s set t h e t o p o f t h e a r e a a v a i l a b l e f o r t h e Bas ic
p r o g r a m in s uc h a wa y t h a t a n y p r o g r a m e n t e r e d w il l n o t b e c a p a b l e o f
i n te r fe ri n g w it h t h e a r e a o f m e m o r y se t a s id e f o r c h a r a c t e r s . 3 0 K o f
m em o ry i s a v a il a b l e u n d e r t h i s s e t t i n g .
L in es 1 1 0 5 0 - 1 1 0 6 0 : T h e s e t w o P O K E s s w itc h o f f t h e k e y b o a r d s c a n s o
t h a t n o i n t e r r u p t s c a n d i s t u r b t h e n e x t s e c t i o n o f t h e p r o g r a m a n d t h e n
m ak e t h e R O M c h a r a c t e r set visi bl e t o t h e p r o g r a m b y sw i tc h i n g o f f t h e
n o r m a l pr o ce s s o f i n p u t a n d o u t p u t . D u r i n g t h e l o o p t h a t f o ll o w s , th e o n l y
w ay t o s t o p t h e p r o g r a m w il l b e t o s w itc h o f f t h e m a c h i n e .
Line 1 1 0 7 0 : T h i s co pi e s t h e c h a r a c t e r s e t f r o m R O M t o t h e m e m o r y a r e a
be gin ni ng a t 32 76 8— t h i s i n vo lve s t h e t r a n s f e r o f 2 K b y t e s .
L in es 1 1 0 8 0 - 1 1 0 9 0 : T h e s e sw itc h t h e n o r m a l i n p u t — o u t p u t r eg im e b a c k
on a n d r e s t o r e t h e n o r m a l i n t e r r u p t s .
L in es 1 1 1 0 0 - 1 1 1 1 0 : T h e s e t w o P O K E s f i r s t r e a d y t h e V I C I I c h ip f o r a
c ha nge o f m e m o r y b l o c k a n d t h e n sp e c i f y B lo c k 1 ( 3 2 7 6 8 - 4 9 1 5 1 ) .
Line 1 1 1 2 0 : T h i s l o c a t i o n i s o u t s i d e t h e V I C I I c h i p a n d i s t h e o p e r a t i n g
sys tem ’ s g u i d e t o w h e r e s c re e n m e m o r y i s t o b e l o c a t e d — i n t h i s case
s ta r ti n g a t 25 6 * 13 6 = 3 4 8 1 6 .
L in e 1 1 1 3 0 : T h e l o c a t i o n a t w h ic h t h e V I C I I ex p e ct s t o f i n d b o t h s cre en
a n d c h a r a c t e r d a t a w i t h i n its 1 6 K b l o c k i s d i c t a t e d b y t h e c o n t e n t s o f
a ddr es s 54 2 7 2 — t h e u p p e r f o u r b i ts f o r t h e s c re e n , t h e l o w e r f o u r f o r t h e
c h a r a c te r se t. T h i s P O K E sets t h e u p p e r f o u r b i ts t o 0010, w hi c h signifies
th e IK b l o c k s t a r t i n g a t 3 2 7 6 8 + 2 0 4 8 f o r t h e sc re e n , a n d t h e lo w e r f o u r b its
t o 0 0 0 0 , s pe cif yin g t h a t c h a r a c t e r d a t a w il l b e t a k e n f r o m 3 2 7 6 8 + 0. T o
arriv e a t o t h e r p o s s ib l e l o c a t i o n s i n t h e 1 6 K b l o c k , t h e f o r m u l a t o d i c t a t e
th e P O K E w o u l d b e ( ( S C R E E N S T A R T - B L O C K S T A R T ) / 1 0 2 4 ) * 1 6 +
( C H A R A C T E R S - B L O C K S T A R T ) / 2 0 4 8 ) . T h e s c re e n c a n o n l y s t a r t a t a
IK b o u n d a r y w i t h i n t h e b l o c k a n d c h a r a c t e r s a t o n l y a 2 K b o u n d a r y . N o t e
5 3
Page 56
Th e Wo rk ing C o m m o d o r e 6 4
t h a t w e c o u l d h a v e l e f t t h e sc re e n a t 1 0 2 4 a n d t h e c h a r a c t e r m e m o r y a t
4096, e x c ep t t h a t i n t h i s 1 6 K b l o c k o f m e m o r y a s i n t h e b l o c k s t a r t i n g a t
a d d r e s s z e r o , t h e V I C I I s ee s a R O M i m a g e a t 40 96 o n w a r d s .
Te st in g M o d u l e 3 .2 .1
T h e t e s t f o r t h i s m o d u l e i s q u i t e s im p l e . R u n it a n d t h e m a c h i n e w il l l o c k u p
f o r a wh il e—t h e r e i s n o t h i n g y o u c a n d o t o i n t e r r u p t i t . W h e n t h e R E A D Y
co m e s u p on t h e s c r e e n , n o t h i n g s h o u l d h a v e c h a n g e d — wh ic h sh ow s t h a t
t h e m o d u l e h a s w o r k e d ! I f t h e m o d u l e h a s n o t w o r k e d , t h e n t h e sc re e n w i l l
b e filled w i t h g a r b a g e .
M O D U L E 3 .2 . 2
1 2 0 1 0
1 2 0 2 0
R E M P R I N T G R I D
1 2 0 3 0 C H - 0 : D I M TT ’ i < 7 , 7 >
1 2 0 4 0 P R I N T " m " ; : F O R 1 = 1 T O 8 : P R I N T " » l
>11111 11 " N E X T
1 2 0 5 0 PRINT " S
1 2 0 6 0 CP =3 27 68 +CH *8
1 2 0 7 0 PR INT " M i " ; : F O R i ~ c p T O CP+7=F0R J
= 7 T O 0 S T E P - 1
1 2 0 8 0 I F ( P E E K ( I > A N D 2 t J > = 2 f . T T H E N P R I N
t " a " ' •
1 2 0 9 0 IF ( P E E K ( I ) A N D 2TJ>=0 T HE N P R I N T
1 2 1 0 0 N E X T J : P R I N T : N E X T I
1 2 1 1 0 P R I N T " r M i P C H A R A C T E R N U M B E R : " ; C H
1 2 1 2 0 I N P U T " H N U M B E R T O M O V E P O I N T E R : ( 0 =
R E D E F . ) : " M M : C H = C H + M M
1 2 1 3 0 IF C H < 0 T H E N C H = 0
1 2 1 4 0 IF C H > 2 5 5 T H E N C H = 2 5 5
1 2 1 5 0 IF M M = 0 T H E N 1 3 0 0 0
1 2 1 6 0 G O T O 1 2 0 4 0
T h e r e a r e m a n y w a y s i n w h i c h ne w c h a r a c t e r s c a n b e e n t e r e d i n t o t h e
c h a r a c t e r m e m o r y . Y o u c a n , i f y o u w i s h , d r a w t h e m o n a n 8 * 8 g r id ,
t r a n s l a t e t h e line s o f d o t s i n t o b i n a r y a n d t h e n i n t o d e c im a l , e n t e r t h e
f ig u r e s a s d a t a s t a t e m e n t s a n d t h e n P O K E t h e m i n t o t h e m e m o r y .
F o r t u n a t e l y , i t is m u c h e a s i e r t o g e t t h e 64 t o d o t h e w o r k b y d r a w in g t h e
c u r r e n t c h a r a c t e r g r i d o n t h e s c r e e n a n d t h e n a ll o w i n g i t t o b e eas ily
m a n i p u l a t e d . T h i s m o d u l e d r a w s t h e c h a r a c t e r g r i d , t h e n e x t o n e allows
m a n i p u l a t i o n .
5 4
Page 57
C h a p t e r 3 The C o l o u r f u l 64
Com me ntar y
L ine s 1 2 0 4 0 - 1 2 0 5 0 : A n 8 * 8 b o x i s o u t l i n e d i n t h e t o p - l e f t h a n d c o r n e r o f
th e scre en .
Line 1 2 0 6 0 : T h e p o s i t i o n o f t h e c u r r e n t c h a r a c t e r ’ s d a t a i s c a l c u l a t e d .
L ine s 1 2 0 7 0 - 1 2 1 0 0 : A n e n l a r g e d v e r s i o n o f t h e c u r r e n t c h a r a c t e r i s
p r i n t e d in t h e b o x o u t l i n e d . N o t e t h e u se o f A N D h e r e t o g e t a t t h e c o n t e n t s
o f i n d iv i d u a l b i ts w i t h i n t h e e i g h t b y t e s o f m e m o r y f o r t h e c h a r a c t e r . Al l
t h a t A N D d o e s i n t h i s c o n t e x t i s t o c o m p a r e t w o b i n a r y n u m b e r s a n d
p r o d u c e a t h i r d w h ic h h a s o n l y t h o s e b i t s s e t w h i c h we re a l s o s e t i n b o t h t h e
t w o n u m b e r s o r ig i n a ll y c o m p a r e d . T h u s i f 1 9 3 i s A N D e d w i t h 1 2 9
(B inary: 1 1 0 0 0 0 0 1 A N D 1 0 0 0 0 0 0 1 ) t h e r e s u l t is 1 2 9 s in c e b i t 6 i n t h e f i r s t
n u m b e r i s n o t set i n t h e s e c o n d a s w ell. A N D i n g t h e v a l u e o f a b y t e w it h
2 | ( J ) w he re J i s f r o m Ot o 7, w ill s h o w w h e t h e r b i t J i s s e t o r n o t — r e m e m b e r
t h a t b its a r e n u m b e r e d f r o m 0- 7 r i g h t t o l e f t .
Lines 1 2 1 0 0 - 1 2 1 6 0 : T h e n u m b e r o f t h e c h a r a c t e r d i s p l a y e d i s g iv en a n d
t h e u s e r h a s t h e o p t i o n t o m o v e t h e c h a r a c t e r p o i n t e r w i t h i n t h e 2 5 5
c h a r a c t e r s . I f z e ro i s i n p u t , t h e p r o g r a m m ov es o n t o t h e n e x t m o d u l e .
T e s t i n g M o d u l e 3 . 2 .2
O nc e a g a i n , t h e t e s t i s q u i t e s im p l e . I f t h e m o d u l e h a s b e e n c o r r e c t l y
e n te r e d , r u n n i n g t h e p r o g r a m w ill r e s u l t ( a f t e r a p a u s e ) i n t h e p r i n t i n g o f a n
e nl a r g e d v e r s i o n o f o n t h e sc re e n . Y o u s h o u l d a l s o b e a b le t o p a g e
t h r o u g h t h e o t h e r c h a r a c t e r s .
M O D U L E 3. 2. 3
1 3 0 0 0
1 3 0 1 0 R E M R E D E F I N E C H A R A C T E R
1 3 0 2 0 r e n * * * * * # * * # * # * * * * * * * * * * * m m m m
1 3 0 3 0 P R I N T " T l
! T O " : R E M 4 0 S P A C E S
1 3 0 4 0 P R I N T " a r i - ' T O I N V E R T " , , , " i i ' W T O
M I R R O R " , , , " STR"- T O R E T U R N "
1 3 0 5 0 P R I N T "IV T O I N K I N S Q U A R E " - P R I N
T " ■ ( ' 0 ’ T O B L A N K S Q U A R E "
1 3 0 6 0 P R I N T " i i ' T ' T O T U R N " , , , " a T P ' T O P L
A C E IN M E M O R Y "
1 3 0 7 0 P R I N T " i i * - D - T O S A V E I N A D A T A F I L E
" s r C - ' T O P I C K U P S E T F R O M T A P E "
1 3 0 8 0 P R I N T " W \ Y T O N O R M A L I S E M E M O R Y A N
D E N D "
5 5
Page 58
Th e Wor king C o m m o d o r e 64
1 3 1 0 0 P R I N T 1 1 a C U R S O R A R R O W S T O M O V E "
1 3 1 1 0 P R I N T "H ";
1 3 1 2 0 G E T A $
1 3 1 3 0 C C - P E E K ( 2 1 1 ) + P E E K ( 2 1 0 > * 2 5 6 + P E E K ( 2 0
9 ) : P P = P E E K ( C C > : C 1 = 5 5 2 9 6 + C C - 3 4 8 16
1 3 1 4 0 C 2 = P E E K (C 1 >
1 3 1 5 0 P O K E C C , 4 2 : P O K E C l . . 1
1 3 1 6 0 F O R 1= 1 T O 1 5 : N E X T : P O K E C C , p p : P O K E
C 1 , C 2 : I F f l $ = , , n T H E N 1 3 1 2 0
1 3 1 7 0 P 1 = I N T < < C C - - 3 4 8 16) / 4 0 > : P 2 = C C - ( 3 4 8 1 6
+ 4 0 # P 1 )
1 3 1 8 0 IF < P 1 > 0 A N D A * = " T ' > O R ( P I < 7 A N D
R $ = " ; r > T H E N P R I N T A $ ; : G O T O 1 3 1 2 0
1 3 1 9 0 I F ( P 2 > 0 A N D f l$="H" ) O R ( P 2 < 7 A N D
A $ = " M " ) T H E N P R I N T A T : G O T O 1 3 1 2 0
1 3 2 0 0 IF A $ = " 1 " T H E N P R I N T " i i S
1 3 2 1 0 IF A $ = " 0 " T H E N P R I N T " B B ;
1 3 2 2 0 IF A T O ' 1 1 “ T H E N 1 3 2 8 0
1 3 2 3 0 F O R 1 = 0 T O 7 : F O R J = 0 T O 7
1 3 2 4 0 IF P E E K ( 3 4 8 1 6 + 1 i f 4 0 + J > = 3 2 T H E N 1 3 2 6
0
1 3 2 5 0 P O K E 3 4 8 1 6 + 4 0 # I + J . 3 2 : P O K E 5 5 2 9 6 + 4 0
* I + J . . 18 2 : G O T O 1 3 2 7 0
1 3 2 6 0 P O K E 3 4 8 1 6 + I# 4 0 + J , 1 6 0 : P O K E 5 5 2 9 6 + 4
0 ' ■ ¥ I + J 1 8 1
1 3 2 7 0 N E X T J . i I
1 3 2 8 0 IF A $ = " R " T H E N G O T O 1 2 0 4 0
1 3 2 9 0 IF R I O " M " T H E N 1 3 3 7 0
1 3 3 0 0 F O R 1 = 0 T O 7 : F O R J = 0 T 0 7 ; T T X ( I . ■ J} =
0 : N E X T J , I
1 3 3 1 0 F O R 1 = 0 T O 7 : F 0 R J = 0 T O 7
1 3 3 2 0 IF P E E K ( 3 4 8 1 6 + 4 0 # I + J ) = 1 6 0 T H E N T T X
( I , J ) = l
1 3 3 3 0 N E X T J , I
1 3 3 4 0 P R I N T " S T ; : F O R I = 0 T O 7 : F O R J = 7 T O G S T
E P - 1 : I F T T X (I . . J > = 1 TH E N P R I N T " S i S J i " ;
1 3 3 5 0 I F T T X ( I. . J > = 0 TH E N P R I N T " 3 " j
1 3 3 6 0 NE XT J: PR INT:NEXT I .
1 3 3 7 0 I F A $ O u T" T H E N 1 3 4 5 0
1 3 3 8 0 F O R 1 = 0 T O 7 : F O R J = 0 T O 7 : T T X ( I . T : <
= 0 : N E X T J , I
1 3 3 9 0 F O R 1 = 0 T O 7 : F O R J = 0 T O 7
1 3 4 0 0 I F P E E K ( 3 4 8 1 6 + 4 0 * 1 + J ) = 1 6 0 T H E N T T X
( 7 ~ J , 7 ~ I > = 1
5 6
Page 59
C h a p te r 3 The C o lo u r f u l 6 4
1 3 4 1 0 N E X T , T , I
1 3 4 2 0 F : ' R I N T 1 1 S 3 " 1 : F O R I - 0 T O 7 : F O R , T = 7 T O 0 S T
E F ' - l ' • I F T T X < I . ■ J > = 1 T H E N P R I N T " l i d 1 " ;
1 3 4 3 0 IF T T V < I , , T > = U T H E N P R I N T " 3
1 3 4 4 0 N E X T J : P R I N T : N E X T I
1 3 4 5 0 IF A $ 0 " P " T H E N 1 3 5 1 0
1 3 4 6 0 : F O R 1 = 0 T O 7 : T T X < 0 , I > = 0 = N EX T
1 3 4 7 0 F O R 1 = 0 T O 7 : F O R J = 0 T O 7
1 3 4 8 0 IF P E E K < . 3 4 8 1 6 + 4 0 # I + J ) = 1 6 0 T H E N T T X
( 0 , 1 > = T T X < 0 , 1) O R 2 t < 7 - J
1 3 4 9 0 N E X T J , I
1 3 5 0 0 F O R 1 = 0 T O 7 : P O K E C P + 1 . • T T X < 0 . ■ I > : N E
X T : G O T O 1 2 0 4 0
1 3 5 1 0 IF A $ 0 " B " T H E N 1 3 5 5 0
1 3 5 2 0 O P E N 1 , 1 . . 1 , " C H A R A C T E R S "
1 3 5 3 0 F O R 1 = 0 T O 2 0 4 7 : T X = P E E K . < 3 2 7 6 8 + I . ) : P
R I N T # 1 , T A : N E X T
1 3 5 4 0 C L O S E 1
1 3 5 5 0 IF A $ < > " C " T H E N 1 3 5 9 0
13 5 60 O P E N 1 , 1 , 0 , " C H A R A C T E R S "
135 70 F O R 1 = 0 T O 2 0 4 7 : I N P U T # 1 , T : P O K E 3 2 7
6 8 + I , T - N E X T
13 5 80 C L O S E 1
135 90 I F A $ 0 " H " T H E N 1 3 6 6 0
136 00 P O K E 5 2 , 1 6 0 : P 0 K E 5 6 , 1 6 0 : C L P
136 10 P 0 K E 5 6 5 7 8 , P E E K < 5 6 5 7 8 > 0 R 3
136 20 P O K E 5 6 5 7 6 , ( P E E K < 5 6 5 7 6 > A N D 2 5 2 ) 0 R 3
136 30 P O K E 5 3 2 7 2 , 2 1
13 6 40 P U K E 6 4 8 , 4
13 650 E N D
13660 G 0 TO 1 3 1 2 0
Thi s m o d u le p e r f o r m s a v a r i e t y o f f u n c t i o n s t o d o w i t h t h e m a n i p u l a t i o n
o f t h e c h a r a c t e r o n t h e s c r e e n , a ll o w i n g i t t o b e r e d e f i n e d , p l a c e d b a c k i n t o
m em o r y a n d S A V E d t o t a p e a m o n g o t h e r t h i n g s .
C o m m e n t a r y
L ine s 1 3 0 3 0 - 1 3 1 0 0 : B r i e f i n s t r u c t i o n s f o r t h e u s e o f t h e m o d u l e a r e
p r i n t e d o n t h e s c re e n .
L ine s 1 3 1 2 0 - 1 3 1 6 0 : T h i s m o d u l e h o l d s n o s u r p r i s e s . I t i s s im p ly t h e c u r s o r
flash r o u t i n e f r o m t h e A r t i s t p r o g r a m .
5 7
Page 60
Th e Wor king C o m m o d o r e 64
L in e 1 3 1 7 0 : C u r s o r p o s i t i o n a l i s t h e r o w d o w n f r o m t h e t o p o f t h e scre en ,
P 2 i s t h e c o l u m n a c r o s s f r o m t h e l e f t .
Lin es 1 3 1 8 0 - 1 3 1 9 0 : L i m i ts o f c u r s o r m o v e m e n t w i t h t h e 8 * 8 s q u a r e .
Lin es 1 3 2 0 0 - 1 3 2 1 0 : P r e s s i n g 1 in k s i n a g r e e n s q u a r e , p r e s s i n g 0 b l o t s o u t a
s q u a r e .
Lin es 1 3 2 3 0 - 1 3 2 7 0 : T h e s e t w o l o o p s s c a n a c r o s s t h e s q u a r e r ev e r s in g t h e
i n k e d - i n o r b l a n k e le m e n t s , t h u s p r o d u c i n g a n in v er s e c h a r a c t e r .
Li ne 1 3 2 8 0 : I n p u t o f R r e t u r n s t o t h e p r e v i o u s m o d u l e .
Line s 1 3 2 9 0 - 1 3 3 6 0 : T h i s r o u t i n e p r o d u c e s a m i r r o r i m a g e o f w h a t e v e r i s
t h e g r i d — ie t h e c h a r a c t e r i s a p p a r e n t l y seen f r o m b e h i n d .
L in e 1 3 3 0 0 : T h e a r r a y T T ° /o i s c le a r e d .
Lines 1 3 3 1 0 - 1 3 3 3 0 : T h e c o n t e n t s o f t h e sc re e n a r e t r a n s f e r r e d t o t h e
a r r a y . T h e s c re e n c a n n o t b e m a n i p u l a t e d d i r e c t l y since t h is m ig h t r e s u l t in a
s q u a r e b e in g t r a n s f e r r e d f r o m t h e l e f t t o r i g h t a n d t h e n r e a d tw ice,
p r o d u c i n g n o n s e n s e .
Lin es 1 3 3 4 0 - 1 3 3 6 0 : H a v i n g t r a n s f e r r e d t h e c o n t e n t s o f t h e g r id t o t h e
a r r a y t h e i n f o r m a t i o n i s n o w r e a d b a c k o n t o t h e s c re e n b u t th e h o r i z o n t a l
e le m en t i s r e v e r s e d so t h a t p o s i t i o n 7 i s p l a c e d i n t o p o s i t i o n z e r o .
Li ne s 1 3 3 7 0 - 1 3 4 4 0 : T h e c o n t e n t s o f t h e g r id a r e t u r n e d 9 0 degr ees
a n ti - cl o c k w i se .
Lin es 1 3 4 2 0 - 1 3 4 4 0 : T h e c o n t e n t s o f t h e a r r a y a r e p u t b a c k o n t o t h e screen
a n ti - c l o c k w i s e — t h u s p o s i t i o n 0 ,7 b e c o m e s p o s i t i o n 0 , 0 a n d p o s i t i o n 0 ,0
be c o m e s p o s i t i o n 7 ,0 .
Lin es 1 3 4 5 0 - 1 3 5 0 0 : T h e r e d e f i n e d c h a r a c t e r i s p l a c e d b a c k i n t o t h e
c h a r a c t e r m e m o r y . I t n o w b e c o m e s a p e r m a n e n t p a r t o f t h e u s e r - d e f i n e d
set.
Li ne 1 3 4 6 0 : Since o n l y e ig h t b y t e s a r e r e q u i r e d f o r e a c h c h a r a c t e r , on ly
e ig h t b yt es o f t h e a r r a y , l in e z e r o , 0-7 , n e e d b e c le a r e d .
Line s 1 3 4 7 0 - 1 3 4 9 0 : E a c h l in e o f t h e a r r a y i s s c a n n e d a n d w h e n a n in k e d - i n
s q u a r e i s d e t e c t e d , it i s t r a n s l a t e d i n t o a singl e b i t i n o n e o f t h e e ig h t bytes
u s e d t o d e f i n e t h e c h a r a c t e r . H a v i n g u s e d A N D t o r e a d i n d i v i d u a l b i ts ,
n o t e t h e us e o f O R t o m a n i p u l a t e i n d i v i d u a l b i t s . W h e n t w o b i n a r y
5 8
Page 61
C h a p te r 3 The C o lo u r f u l 6 4
n um be r s a r e O R e d , all t h e b i t s w h i c h a r e se t i n e i t h e r ( o r b o t h ) a r e se t i n t h e
resu lti ng n u m b e r . T h u s t o O R a n u m b e r w i t h 2 j ( J ) , w h e r e J i s f r o m 0 t o 7
means t h a t b i t J w il l b e t u r n e d o n , r e g a r d le s s o f w h e t h e r i t wa s o n o r o f f
b e fo r e .
L ine 1 3 5 0 0 : T h e e ig h t b y t e s o f t h e a r r a y a r e p l a c e d i n t o t h e m e m o r y a t t h e
p o s it i o n p r e v i o u s ly o c c u p i e d b y t h e c h a r a c t e r w h i c h h a s b e e n r e d e f i n e d .
L in es 1 3 5 1 0 - 1 3 5 4 0 : T h e a r e a o f m e m o r y s t a r t i n g a t 3 2 7 6 8 i s s t o r e d o n t o
t a p e in t h e f o r m o f i n te g e r n u m b e r s .
L in es 1 3 5 5 0 - 1 3 5 6 0 : A p r e v i o u s l y s t o r e d c h a r a c t e r set c a n b e p i c k e d u p
f ro m t a p e f o r f u r t h e r m a n i p u l a t i o n . NB T h i s i s a ls o a n e x a m p l e o f h o w
y o u r new c h a r a c t e r se t c a n b e p i c k e d u p b y a n o t h e r p r o g r a m f o r
s u b s e q u e n t us e.
Lin es 1 3 5 9 0 - 1 3 6 5 0 : I f t h e p r o g r a m i s t e r m i n a t e d , t h e m e m o r y m u s t b e
res et t o its o r i g i n a l c o n d i t i o n —u n le s s y o u wis h t o g o o n u s in g y o u r new
c h a r a c t e r set w i t h a n o t h e r p r o g r a m y o u a r e g o i n g t o l o a d . F a i l u r e t o r e s e t
th e m e m o r y w o u l d m e a n t h a t s u b s e q u e n t p r o g r a m s w ill b e d e p r i v e d o f 8 K
o f m e m o r y a n d f o r c e d t o u se t h e r e d e f i n e d c h a r a c t e r se t.
Line 1 3 6 0 0 : Basic i s r e s e t t o its f u ll p o t e n t i a l si ze.
L ine s 1 3 6 1 0 - 1 3 6 2 0 : T h e b a n k o f m e m o r y a d d r e s s e d b y t h e V I C I I i s r es e t
t o 3 (0 -1 6 3 8 3 ) .
L in es 1 3 6 3 0 - 1 3 6 4 0 : T h e s c re e n i s r e s e t t o s t a r t a t 1 0 2 4 (i ts n o r m a l
p o s it i o n ) a n d t h e c h a r a c t e r m e m o r y r e s e t t o 40 96 o n w a r d s .
Tes tin g M o d u l e 3 . 2 . 3
S in ce t h is i s a l o n g m o d u l e w i t h a v a r i e t y o f f u n c t i o n s , it i s s u g g e st e d t h a t
yo u t es t e a ch f u n c t i o n a s it i s e n t e r e d . N o t e t h a t i f a p a r t i c u l a r f u n c t i o n i s
f a u l t y a n d yo u h a v e e n t e r e d c h a n g e s t o a l in e , t h e r e i s n o n e e d t o R U N t h e
p r o g r a m f r o m t h e s t a r t . S im p ly G O T O 1 2 0 0 0 sin c e t h e c h a r a c t e r s e t, w h ic h
i s a bo ve t h e Basic a r e a , a n d t h e m e m o r y s t r u c t u r e a r e u n d i s t u r b e d b y t h e
e n tr y o f new line s. I f all i s well, t h e f u n c t i o n s d e s c r i b e d i n t h e c o m m e n t a r y
w i l l be a v a il a b l e .
S u m m a r y
This is , as y o u w il l d i s c o v e r , a n e x tr e m e l y e n j o y a b l e p r o g r a m t o u s e , p u r e l y
f o r its o w n s a k e b u t its r e a l p o w e r c o m e s i n w h a t it c a n d o i n l iv e n in g u p t h e
o u t p u t o f y o u r o t h e r p r o g r a m s . B e c a u s e i t d o e s n o t a c t u a l l y r e l o c a t e Basi c,
only lim its t h e s p a ce a v a i l a b l e , n ew p r o g r a m s c a n b e l o a d e d i n t o t h e
5 9
Page 62
T h e Wor king C o m m o d o r e 64
m a c h i n e t o m a k e u s e o f t h e r e d e f i n e d c h a r a c t e r se t. I f t h e m a c h i n e h a s b ee n
sw itc he d o f f since t h e c h a r a c t e r set was r e d e f i n e d , o r t h e m e m o r y
n o r m a l i s e d , all t h a t n e e d s t o be d o n e i s t o a d d t h e f i r s t m o d u l e t o t h e f r o n t
o f s u b s e q u e n t p r o g r a m s ( m i n u s line s 1 1 0 5 0 - 1 1 0 9 0 ) a n d t h e n t o l o a d t h e
r e d e f in e d c h a r a c t e r se t f r o m t a p e u s in g t h e r o u t i n e a t 1 3 5 6 0 - 1 3 5 8 0 . Bu t
d o r e m e m b e r t h a t i f y o u r e d e f i n e t h e l e t t e r A a s a s p a ce i n v a d e r c h a r a c t e r
t h e n eve ry A o u t p u t b y t h e p r o g r a m , eve n i n t h e p r o g r a m l is tin g , w i l l be
r e d e f i n e d . F o r t h e s a k e o f l e g ib ili ty i t ’ s u s u a l l y b e t t e r t o s tic k t o r e d e f in i n g
t h e g r a p h i c s c h a r a c t e r s !
Q u i t e a p a r t f r o m t h e g e n e r a l u s e f u l n e s s o f t h e p r o g r a m , h o w e v e r , y o u
ha ve a lso b e e n i n t r o d u c e d t o s o m e o f t h e p o s s ib i li ti e s o p e n e d u p b y t h e 6 4 ’ s
flexible m e m o r y s t r u c t u r e a n d t h e t e c h n i q u e s n e c e s s a ry t o m a k e t h e m o s t
o f w h a t i s a v a il a b l e . I f y o u w a n t t o l o o k f u r t h e r i n t o m e m o r y m a n i p u l a t i o n
y o u w i l l ne e d t o ge t h o l d o f a c o p y o f t h e P r o g r a m m e r s R e f e r e n c e M a n u a l
— w it h t h is p r o g r a m u n d e r y o u r b e l t y o u s h o u l d h a v e n o d i ff i c u l t y
u n d e r s t a n d i n g a n d a p p l y i n g w h a t y o u f i n d t h e r e .
G o i n g F u r t h e r
1 ) O n e s im pl e a d d i t i o n t o t h e p r o g r a m w o u l d b e a r o u t i n e t o all o w t h e
p o s i t i o n o f t w o c h a r a c t e r s t o b e s w a p p e d , o r f o r a r e d e f i n e d c h a r a c t e r t o be
p l a c e d a t a n o t h e r l o c a t i o n i n t h e c h a r a c t e r se t.
2 ) M a k in g u p a w h o l e ne w c h a r a c t e r set w i t h t h i s p r o g r a m w o u l d be
e xt r e m e ly t im e c o n s u m i n g . W h y n o t t r y a d d i n g s o m e b l o c k m a n i p u l a t i o n
c o m m a n d s w hi c h w o u l d a ll o w y o u t o i n v e r t , t u r n , m i r r o r etc . a wh o le s e t
o f c h a r a c t e r s b e tw e e n sp e c i f ie d li m it s . P r o g r a m lis tin g s l o o k ex tre m el y
i n t e r e s t in g w i t h all t h e l e t t e r s u p s id e - d o w n !
3,3 S P R IT E S
W it h t h e C h a r a c t e r s p r o g r a m e n t e r e d w e h a v e p r e p a r e d t h e wa y f o r a n
e x a m i n a t i o n o f o n e o f t h e f e a t u r e s o f t h e 6 4 t h a t o t h e r m ic r o -o w n e r s ca n
o n l y d r e a m o f —s p r i t e s . W i t h t h e a d v e n t o f t h e 64 , g o n e a r e t h e d a y s when
o n l y m a c h i n e c o d e p r o g r a m m e r s c o u l d m a k e h i g h - r e s o l u t i o n des igns mov e
s m o o t h l y a n d ea sily a r o u n d t h e s c re e n w i t h a n ee rie r e a l is m . I n t h e field o f
gam es e sp eci all y , s p ri t e s r e p r e s e n t a r e v o l u t i o n i n a f f o r d a b l e m ic r o s.
I n es sence, a s p r i t e i s v e ry l it t l e d i f f e r e n t f r o m t h e u s e r - d e f i n e d
c h a r a c t e r s w e h a v e b e e n e x p e r i m e n t i n g w i t h . A g r e a t d e a l o f te c h n i c a l
i m a g i n a t i o n a n d c o m p e t e n c e h a s g o n e i n t o t h e c r e a t i o n o f t h e s p ri te
fa c i li ty , b u t w h e n it c o m e s t o t h e u s e r ’ s p a r t , a s p r i t e i s j u s t a l ar g e r
c h a r a c t e r w h ic h c a n b e m o r e fle x ib ly m o v e d a r o u n d t h e sc re e n .
Li ke t h e c h a r a c t e r s o f t h e n o r m a l c h a r a c t e r s e t, s p r i t e s a r e d e f i n e d b y a
se ri es o f b yt es s t o r e d in R A M . I n s t e a d o f a n 8 * 8 g r i d , h o w e v e r , s p ri t e s use a
g r id wh ic h is 24 d o t s a c r o s s b y 2 1 d o w n . C l e a r l y t h i s c a n n o t be d e f i n e d by
t h e 6 4 b i ts p r e s e n t in ei g h t b y t e s . I n f a c t , e a c h ro w o f a s p r i t e i s d e f i n e d by
6 0
Page 63
C h a p te r 3 The C o lo u r f u l 6 4
t h re e bytes ( 2 4 b i ts ) a n d , sinc e t h e r e a r e 2 1 r o w s , it t a k e s a t o t a l o f 6 3 b y te s
to de fin e a s p r i t e . S p r it e d a t a c a n b e s t o r e d a t a n y se c u r e p l a c e w i t h i n t h e
1 6 K b l o c k o f m e m o r y a d d r e s s e d b y t h e V I C I I . W i t h i n t h i s b l o c k , u p t o
eig ht s pr it es c a n b e d e f i n e d a t a n y o n e t i m e b u t m a n y m o r e s p r i t e de sig ns
ca n be h e ld in r es e rv e, i f n e c e s s a ry , f o r i n s t a n t a c t i v a t i o n
Th e m a i n l o c a t i o n s in m e m o r y w h i c h c o n t r o l t h e u se o f s p r i t e s a r e as
fol low s:
a ) 2 0 4 0 - 2 0 4 7 : T h e s e e ig h t l o c a t i o n s a r e t h e s p r i t e p o i n t e r s . T h e i r f u n c t i o n
i s to in d ic a te w h e re i n t h e 1 6 K b l o c k t h e d a t a f o r a n y p a r t i c u l a r s p r i t e i s t o
t a k e n f r o m . Since s p ri t e s a r e s t o r e d in b l o c k s o f 6 4 b y t e s ( t h o u g h t h e y o n l y
u se 6 3 ) , t h e 2 56 va lu e s t h a t c a n b e P O K E d i n t o e a c h p o i n t e r a ll o w t h e m t o
cove r t h e w ho le o f t h e 1 6 K b l o c k . T h u s , t h e d a t a f o r s p r i t e 2 w ill be t a k e n
f r o m t h e m e m o r y a t 6 4* PE E K ( 2 0 4 2 ) .
b ) 5 3 2 6 9 : T h e s p r i t e e n a b l e r e g i s te r . A s p r i t e i s o n l y visi bl e w h e n t h e
c o r r e s p o n d i n g b i t in t h i s r e g i s te r i s se t.
c ) 5 3 2 4 8 - 5 3 2 6 4 : T h e s p r i t e p o s i t i o n r e g i s te r s . T h e s e w o r k i n p a i r s f r o m
5 3 2 4 8 t o 5 32 63 , d e f i n i n g t h e X a n d Y c o - o r d i n a t e s o f t h e t o p l e f t - h a n d
c o r n e r o f t h e s p r i t e g r i d o n t h e sc re e n . H o w e v e r , sinc e t h e s c re e n i s a c t u a l l y
w ider ( 3 2 0 pix els) t h a n t h e m a x i m u m v a lu e s t o r a b l e i n a sing le b y t e (25 5 ) ,
one b i t a t l o c a t i o n 53 26 4 i s u s e d t o r e m e m b e r w h e t h e r t h e p o s i t i o n o f e a c h
sp rit e o n t h e X axi s i s m o r e t h a n 255. T h i s g iv e s a t o t a l o f 5 1 2 p o s s ib l e
po s it i o n s o n t h e X axis a n d 25 6 o n t h e Y ax is.
d) 53287 - 5 3 2 9 4 : T h e s p r i t e c o l o u r r e g i s te r s . E a c h s p r i t e c a n t a k e o n a n y o f
th e 64 ’ s 1 6 c o l o u r s , s im p ly b y P O K E i n g t h e c o r r e c t v a lu e i n t o t h e a p p r o
p r ia t e r eg is te r . T h e r e a r e i n f a c t m o r e l o c a t i o n s t h a n t h i s w h ic h a r e r e l e v a n t
b u t th es e w i l l d o t o b e g o i n g o n w i t h .
Th e f in a l issue t o b e d e c id e d i s w h e r e t o p u t t h e s p r i t e d a t a . I f y o u o n l y w a n t
t h re e s p ri t e s , t h e n a p r a c t i c a l p l a c e i s t h e C a s s e t t e I n p u t —O u t p u t b u f f e r
which i s l o c a t e d f r o m 8 2 8 t o 1 0 1 9 ( o b v io u s l y y o u c a n ’ t l o a d o r save d a t a
w hi le t h e s p ri t e s a r e l o c a t e d t h e r e ) . I f y o u w a n t m o r e s p r i t e s t h a n t h a t t h e n
yo u m u s t set a s id e a n a r e a o f m e m o r y f o r t h e m , e x a c t ly t h e s a m e s i t u a t i o n
a s wit h u s e r - d e f i n e d c h a r a c t e r s . F o r t h e s a k e o f v a r i e t y , f o r o u r
s p ri t e - d e fi n in g p r o g r a m w e sh a ll a d o p t a d i f f e r e n t s o l u t i o n t o t h a t o f f e r e d
f o r t h e C h a r a c t e r s p r o g r a m . W h a t we sh a ll d o i s s h i f t t h e s t a r t o f t h e Basic
p r o g r a m f r o m 2 0 4 8 t o 4096, t h u s le a v i n g o u r se l v e s 2 K o f m e m o r y in wh ic h
t o s to r e u p t o 3 2 s e p a r a t e sets o f s p r i t e d a t a . T h i s i s c o n v e n i e n t i n t h a t it
i n v o l v e s a b s o l u t e l y n o s h i f t i n g a r o u n d o f t h e v i d e o m e m o r y
s t r u c t u r e — w h a t it w il l in v o lv e , h o w e v e r , i s a r e s e t t i n g o f t h e Basic s t a r t
ad dr e s s b e f o r e t h e p r o g r a m i s l o a d e d .
H a v i n g d o n e t h a t , t h e p r o g r a m , l ik e t h e c h a r a c t e r g e n e r a t o r , w il l a llo w
th e d e f i n i t i o n a n d m a n i p u l a t i o n o f t h e s p r i t e g r id s a n d t h e o p t i o n o f sav in g
th em t o t a p e f o r u se b y l a t e r p r o g r a m s . T h e s im p l e s t w a y t o e n t e r t h is
p r o g r a m i s t o f i r s t l o a d C h a r a c t e r s a n d a d a p t t h a t p r o g r a m .
6 1
Page 64
T h e Wo rk ing C o m m o d o r e 6 4
L o a d e r P r o g r a m f o r S p r i t e s
T h e fo ll o w i n g line s a r e N O T p a r t o f t h e m a i n p r o g r a m , t h e y a r e i n te n d e d
t o b e e n t e r e d i n t o t h e 6 4 a n d sa v e d o n t o t a p e b e f o r e t h e m a i n p r o g r a m i s
e n t e r e d a n d s a v e d . T h e f u n c t i o n o f t h e p r o g r a m i s t o r e s e t t h e b e g in n i n g o f
Basic a n d t h e n t o l o a d t h e m a i n p r o g r a m i n t o t h e r e c o n f i g u r e d m em o r y :
1 0 0 R e m * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 1 0 R E M L O A D E R
1 2 0 r e m * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 3 0 P O K E 4 3 , 1 : P O K E 4 4 , 1 6 : P O K E 4 0 9 6 , 0 : C L R
1 4 0 L O A D ‘ S P R I T E S ’
C o m m e n t a r y
L o c a t i o n s 4 3 a n d 44 a r e t h e p o i n t e r s u s e d b y t h e s y s te m t o t h e b e g in n i n g o f
t h e Basic p r o g r a m , n o r m a l l y c o n t a i n i n g t h e v a lu e s 1 a n d 8 Oo ca tio n
1 + 25 6 * 8 = 2049) . A ll t h a t t h e m a i n l in e d o e s i s t o a l t e r t h i s v a lu e t o 4 0 97 .
T h e f i r s t p r o g r a m b y t e m u s t a lw a ys b e a z e r o , so t h i s i s P O K E d i n t h e n t h e
m e m o r y i s c le a r e d , c o m p l e t i n g t h e r e c o n f i g u r a t i o n . W h e n t h i s h a s b e e n
d o n e t h e m a i n p r o g r a m i s l o a d e d a u t o m a t i c a l l y . A t t h e r i s k o f b o r i n g y o u ,
r e m e m b e r t h a t t h i s i s N O T p a r t o f t h e m a i n p r o g r a m — t o i n c l u d e i t a t t h e
b e g in n i n g o f t h e m a i n p r o g r a m w o u l d c h o p o f f t h e f i r s t 2 K o f t h e p r o g r a m
w h e n i t was r u n .
S p r it e s : T a b l e o f V a r i a b l e s
( wh ere d i f f e r e n t f r o m C h a r a c t e r s )
SP
SC
S S
F N S( S N )
SN
T T( (2 0, 23 )
M M
M O D U L E 3.3. 1
A d d r e s s o f c u r r e n t s p r i t e p o i n t e r
T h e a d d r e s s o f t h e s p r i t e c o l o u r r e g i s te r
S t a r t o f s p r i t e d a t a
S t a r t o f b l o c k o f d a t a f o r s p r i t e SN
S p r i t e n u m b e r
A r r a y f o r t e m p o r a r y m a n i p u l a t i o n o f s p r i t e d a t a
V a l u e t o m o v e SN
1 2 0 0 0
1 2 0 0 2
R E M S E T U P SPR ITE POINT ERS
1 2 0 0 5
1 2 0 1 0
1 2 0 2 0
1 2 0 3 0
T h e v a r i a b le s d e c l a r e d h e r e a r e e x p l a i n e d i n t h e t a b l e o f v a r i a b le s .
6 2
S P - 2 0 4 0 : S E = 5 3 2 6 9 : SS= 204 8
D E F F N S < S N > =S S +64 * < S N >
S N = 0 : D I M T T ' i < 2 0 , 2 3 > : P O K E 53 28 1 ,6
Page 65
C h a p t e r 3 The C o lo u r f u l 64
M O D U L E 3 . 3 . 2
1 3 0 0 8 RE M # # # # # # ** # # # # # ## ## ** ## ## ## ### ##
1 3 0 1 0 R E M PR INT G R I D
1 3 0 3 0 P 0 K E 5 3 2 6 3 . • 1 : P O K E 5 3 2 8 7 , 1 : P O K E S P , F
N S ( S N > / 6 4
1 3 0 4 0 P O K E 5 3 2 4 8 , 0 : P O K E 5 3 2 6 4 , 1 : P O K E 5 3 2
4 3 , 8 0
1 3 0 5 0 P R I N T F O R 1 = 1 T O 1 1 : P R I N T " H S I
1 3 8 6 0 p r i n t
: N E X T
1 3 0 7 0 P R I N T " T O T
1 3 0 8 0 P R I N T
13030 P R I N T " 5 i i " ; : F O R I . = F N S ( S N > TO F N S C S
N > + 6 2 S T E P 3 : F O R J = 8 T O 2
13 100 F O R K = 7 TO 0 S T E P - 1
1 3 1 1 0 I F ( P E E K < I + J ) F I N D 2 t K ) = 2 1 K T H E N P R
I N T
13 120 I F
T "
13138 N E X T K , J : P R I N T : N E X T 1
1 3 1 4 0 P R I N T " J ® [ D E S I G N N U M B E R : ";S N
13 15 0 I N P U T " N U M B E R T O M O V E P O I N T E R : < 0 = R
E H E F . > : " ; M M : S N = S N + M M
13160 I F S N < 0 T H E N S N = 0
1 3 1 7 0 I F S N > 3 1 T H E N S N = 3 1
13 180 I F M M = 0 T H E N P O K E 5 3 2 4 8 , 0 : P O K E 5 3 2
6 4 , 1 • P O K E 5 3 2 4 9 , 2 0 0 : G O T O 1 4 0 0 0
13 190 G O T O 1 3 0 0 0
( P E E K ( I + J ) A N D 2 ' 1 1 0 = 0 T H E N P R I N
A l m o st e x a ct ly t h e s a m e a s t h e g r i d d r a w i n g m o d u l e i n C h a r a c t e r s .
C o m m e n t a r y
Line 13030: 532 69 i s t h e s p r i t e e n a b l e r e g i s t e r — t h i s P O K E se ts b i t z e r o a n d
t u r n s o n s p r i t e 0 . 5 3 2 8 7 i s t h e c o l o u r r e g i s te r f o r s p r i t e z e r o a n d t h e P O K E
se t s t h e c o l o u r t o w h i t e . T h e s p r i t e z e r o p o i n t e r i s set t o p o i n t t o t h e f i r s t 6 4
byt e b l o c k i n t h e r e s e r v e d m e m o r y a r e a .
Line 1 3 0 4 0 : S p r i t e z e r o i s s e t a t 25 6 o n t h e X ax is a n d 8 0 o n t h e Y ax is.
6 3
Page 66
Th e Wor king C o m m o d o r e 6 4
Li ne s 1 3 0 5 0 - 1 3 0 8 0 : T h e o u t l i n e o f t h e g r i d i s p r i n t e d .
Li ne s 1 3 0 9 0 - 1 3 1 3 0 : T h e I l o o p l o o k s a t t h e s p r i t e d a t a i n g r o u p s o f t h r e e ,
t h e J l o o p l o o k s a t e a c h b y t e , t h e K l o o p l o o k s a t e a c h b i t . A cir cle i s p r i n t e d
f o r e a c h set b i t .
Li ne s 1 3 1 4 0 - 1 3 1 9 0 : T h e u s e r c a n m o v e t h e s p r i t e p o i n t e r . N o t e t h a t i t i s
t h e a r e a o f m e m o r y p o i n t e d t o b y t h e s p r i t e p o i n t e r , n o t t h e a c t u a l s p ri t e
p o i n t e r t h a t i s c h a n g e d . I n t h i s p r o g r a m w e s h a ll a lw ay s b e u s in g s p ri t e
z e ro .
T e s ti n g M o d u l e 3 . 3 . 2 .
O n r u n n i n g t h i s m o d u l e ( r e m e m b e r t h a t t h e l o a d e r p r o g r a m m u s t f i r s t h a v e
b e e n r u n ) a g a r b a g e s p r i t e w ill a p p e a r t o t h e r i g h t o f t h e g r i d a n d t h e
i n d iv i d u a l d o t s w ill b e fi l le d i n . o n t h e g r i d . I t is s o m e t im e s d i f f i c u l t t o s e e
t h e c o r r e s p o n d e n c e b e tw e e n t h e t w o b e c a u s e o f t h e a u t o m a t i c s h a d o w i n g
p l a c e d i n t o s p r i t e s . T w o s e t b i ts o n t h e s a m e lin e w i t h a s p a c e b e tw e e n t h e m
w il l a c t u a l l y a p p e a r a s a b l o c k o f b l a c k .
M O D U L E 3. 3. 3
1 4 0 0 0 R E M # # # * # # * # * # # # * # # # * # # # * # # # # * # # * #
1 4 0 1 0 R E M R E D E F I N E S P R I T E
1 4 0 2 0
1 4 0 3 0
1 4 0 4 0
1 4 0 5 0
1 4 0 6 0
1 4 07 0
1 4 0 8 0
1 4 0 9 0
1 4 1 0 0
1 4 11 0
1 4 12 0
1 4 1 3 0
1 4 1 4 0
1 4 1 5 0
1 4 16 0
1 4 1 7 0
P R I N T " H
3 " : R E M 39 S P A C E S
f i = "
P R I N T F $ ; " s r i ' I N V E R T "
PR INT F $ ; " S i ' M ' M I R R O R "
PR INT F $ ; " * ' R ' R E T U R N "
P R I N T F * ; " S i - 1 - I N K I N "
P R I N T F t J "s r 0' B L A N K "
PR INT F # ; " i i ' T ' T U R N "
P R IN T F $ ; " S C - P - ' M E M O R Y "
P R IN T F # ; " i i ' D ' S A V E "
P R IN T F $ ; " * ' L ' L O A D "
PR INT F $ ; " i i - E " E N D "
p r i n t f $ ; " s o r r o w s m o v e "
P R I N T " a " ;
G E T A$
1 4 1 8 0 C C = P E E K < 2 1 1 > + PE E K < 2 1 @ > # 2 5 6 + P E E K < 2 0
9 ) :PP=PEEK<CC>:C1»55296+CC-1024
1 4 1 9 0 C 2 - P E E K ( C 1 >
1 4 2 0 8 P O K E CC ,4 2 : PO K E a , i
6 4
Page 67
C h a p te r 3 Th e C o lo u r f u l 6 4
1 4 2 1 0 F O R 1 = 1 T O 1 5 : N E X T : P O K E CC ,P P: P O K E
C 1 . ■ C 2 : 1 F A $ = " " THEN 1 4 1 7 8
1 4 2 2 0 P 1 = I N T < < C C - 10 2 4 ) / 4 0 > : P 2 = C C - < 1 0 2 4 + 4
0 # P 1 >
1 4 2 3 8 IF C P 1 > 0 A N D f l $ = " T , > O R < P 1 < 2 0 A N D
T H E N P R I N T A $ ; = G O T O 1 4 1 7 0
1 4 2 4 ( 5 " IF (P 2 > 0 A N D f i $=" H"> O R < P 2 < 2 3 A N D
A $ = " M " > T H E N P R I N T f i t ; : G O T O 1 4 1 7 0
1 4 2 5 0 IF A $ = " 1 " T H E N P R I N T " f i i i i r ; : G O T O 1
4 1 7 0
1 4 2 6 0 I F A $ = " 0 " THE N PRINT " 3 S in";:G OT O
1 4 1 7 0
1 4 2 7 0 I F f l $ 0 " I " T H E N 1 4 3 3 0
1 4 2 8 0 F O R 1 = 8 T O 2 0 : F O R J = 8 T O 2 3
1 4 2 9 0 I F P E E K < 1 0 2 4 + 1 # 4 0 + J ' ) = 3 2 THEN 1 4 3 1 8
1 4 3 0 0 P O K E 1 0 2 4 + 4 0 * I + J . . 3 2 : P O KE 5 5 2 9 6 + 4 0 4 ;
I + J , 1 8 2 : G OT O 1 4 3 2 8
1 4 3 1 8 P O K E 1 0 2 4 + 1 # 4 0 + J . ' 8 1 : POK E 55296+40#
I + J . ' 1 8 1
1 4 3 2 0 N E X T J,I:GOTO 1 4 1 7 0
1 4 3 3 0 I F A * = " R " TH E N GOTO 1 3 0 3 0
1 4 3 4 0 I F A $ < > " M " TH E N 1 4 4 2 8
1 4 3 5 0 F O R 1 = 8 T O 2 0 : F O R J = 0 T O 2 3 : T T X < I ,
J ) = 0 : N E X T J , I
1 4 3 6 0 F O R 1 = 0 T O 2 0 : F O R J = 0 T O 2 3
1 4 3 7 0 I F P E E K < . 10 24 + 4 0 # I + J > = 1 6 0 THEN T T X C
I , J ) = l
1 4 3 8 0 N E X T J , I
1 4 3 9 0 P R I N T " 3 " ; : F O R I = 0 T O 2 0 - F O R J = 2 3 T 0 8 S
T E P - l : I F T T ? i < I , J ) = l THEN P R I N T " i i a E l " ;
1 4 4 0 0 I F T T X C I . , J > = 0 T H E N P R I N T " 3
1 4 4 1 0 N E X T J : P R I N T ' • N E X T I : G O T O 1 4 1 7 0
1 4 4 2 0 I F f l $ 0 " T " TH EN 1 4 5 0 0
1 4 4 3 0 FOR 1=0 T O 2 0 : FO R J = 0 T O 2 3 : T T X ( I ,
J > = 0 ; N E X T J , I
1 4 4 4 0 F O R 1 = 0 T O 20 :F O R J = 0 T O 2 0
1 4 4 5 0 I F P E E K < 1 0 2 4 + 4 0 # I +J > = 8 1 T H E N TTXC 2
0 ~ J , 2 0 - 1 > = 1
1 4 4 6 0 NE X T J , I
1 4 4 7 0 P R I N T " 3 8 " ; : F O P I = 0 T O 2 0 : F OR J=23T O0 S
T E F ’ - l : I F T T % U , J > = 1 T H E N PR IN T " i S t H " ;
1 4 4 8 0 IF T T X ( I . . J ) = 0 T H E N P R I N T
1 4 4 9 8 N E X T J : P R I N T : N E X T I : G O T O 1 4 1 7 0
1 4 5 0 0 IF f l $ 0 " P " T H E N 1 4 5 6 0
I T ;
6 5
Page 68
Th e Wor king C o m m o d o r e 64
1 4 5 1 0 F O R 1 = 0 T O 20: F O R J = 0 T O 2 : T T X < I , J
) = 0 : N E X T J , I
1 4 5 2 0 F O R 1 = 0 T O 2 0 : F O R J = 0 T O 2: F O R K = 0
T O 7
1 4 5 3 0 IF P E E K < 1 0 2 4 + 4 0 * I + J # 8 + K > = 8 1 T H E N T
J ' / . < I , J ) * T T X < I , J > O R 2 f < 7 - K )
1 4 5 4 0 N E X T K , J , I
1 4 5 5 0 F O R I = 0 T O 2 0 : F O R J = 0 T O 2: P O K E F N S ( S
N ) + 1 *3 + J , T T X < I , J ) : N E X T J , I : G OT O 1 3 0 3 0
1 4 5 6 0 I F f l $ < > " S " T H E N 1 4 6 2 0
1 4 5 7 0 PR IN T
O W M f l N V SPRIT ES T O B E S H VE DN N
1 4 5 8 0 I F N N < 1 O R NN >32 THE N 1 4 5 7 0
1 4 5 9 0 OP EN 1, 1,1 ,"S P R I T E S " : P R I N T # 1 , N N
1 4 6 0 0 F O R 1 = 0 T O N N * 6 4 - - 1 : T X = P E E K < S S + I > : P
R IN T#1,T X : N E X T
1 4 6 1 0 C L O SE 1
1 46 20 IF f l I O T " T H E N 1 4 6 6 0
1 4 6 3 0 O P E N 1 , 1 , 0 , " S P R IT E S " : I N P U T # 1 , N N
1 4 6 4 0 F O R 1 = 0 T O N N * 6 4 ~ 1 : I N P U T # 1 , T : P O K E
S P + I , T : N E X T
1 4 6 5 0 C L O S E 1
1 4 6 6 0 IF A $ 0 " E " T H E N 1 4 6 8 0
1 4 6 7 0 P O K E 5 3 2 6 9 , 0 : P O K E 4 3 , 1 : P O K E 4 4 , 8 : P
OK E" 2 0 4 8 , 0 : C L R : E N D
1 4 6 8 0 IF A $ < > " X " T H E N 1 4 7 4 0
1 4 6 9 0 i n p u t " i m m m m m m i m m m m a m w j
M B E R T O E X C H A N G E W I T H : " ; S 2
1 4 7 0 0 IF S 2 C 0 O R S 2 > 3 1 T H E N 1 4 6 9 0
1 4 7 1 0 F O R I = F N S < S N ) T O F N S ( S N ) + 6 2 ; L E T T1
= P E E K . I > : P O K E I , P E E K < I + F N S C S N >- F N S (S 2 > >
1 4 7 2 0 P O K E I + F N S <S N ) - F N S C S 2 ) , T 1 : N E X T
1 4 7 3 0 G O T O 1 3 0 0 0
1 4 7 4 0 IF R $ O h C" T H E N 1 4 8 4 0
1 4 7 5 0 IF P E E K < 5 3 2 7 6 ) A N D 1 =1 T H E N P O K E 5 3
2 76 ,U : UUTO 1 4 1 7 0
1 4 7 6 0 I N P U T " S I f f I N P
U T C O L O U R F O R @ 1 < 0 - 1 5 ) : " . : Cl
1 4 7 7 0 I F C 1 < 0 O R C 1 > 1 5 T H E N P R I N T " l
" : G O T O 1 4 7 6 0
1 4 7 8 0 I N P U T " N P
U T C O L O U R F O R 1 6 < 6 - 1 5 ) : " ; C 2
6 6
Page 69
C h a p te r 3 The C o lo u r f u l 6 4
1 4 7 9 0 IFC 2< 8 0 R C 2> 1 5 T H E N P R I N T " 1
" : G O T O 1 4 7 8 8
1 4 8 0 0 I N P U T " I T M W B M B l i M f l M f l M l i M i l M i l l B i B i B M i l M f P I H P
U T CO LO U R F O R 1 1 <0 - 15 ): " ;C 3
1 4 8 1 0 IF C3 <0 OR C3> 1 5 T H E N P R I N T " 1
’ " • G O T O 1 4 8 0 0
1 4 8 2 0
: P O K E
1 4 8 3 0
PO K E 53 28 5, (P E E K ( 5 3 2 8 5 > R N D 2 4 0 > O R C 1
5 3 2 8 7 , < P E E K < 5 3 28 7 )R N D 2 4 0 ) 0 RC 3
P O K E 5 3 2 8 6 , ( P E E K ( 5 3 2 8 6 ) A N D 2 4 0 ) 0
R C 2 : P O K E 5 3 2 7 6 , 1 : GO T O 1 4 1 7 0
1 4 8 4 0 G O T O 1 4 1 7 0
Th is m o d u le se rves t h e s a m e p u r p o s e as t h e c h a r a c t e r r e d e f i n e m o d u l e i n
th e l as t p r o g r a m .
C o m m e n t a r y
L in es 1 4 0 5 0 - 1 4 1 5 0 : I n s t r u c t i o n s f o r t h e u s e o f t h e m o d u l e .
L in es 1 4 1 7 0 - 1 4 2 1 0 : S t a n d a r d c u r s o r m o v e m o d u l e .
Line 1 4 2 2 0 : R o w a n d c o l u m n o f t h e c u r s o r o n t h e g r i d .
Lin e . 1 4 3 3 0 : R r e t u r n s t o p r e v i o u s m o d u l e .
L in es 1 4 3 4 0 - 1 4 4 9 0 : C l o c k w i s e t u r n .
L in es 1 4 5 0 0 - 1 4 5 5 0 : R e d e f i n e d s p r i t e i s p l a c e d b a c k i n t o m e m o r y . T h e I
lo o p scans e a c h r o w o f t h e g r i d , t h e J l o o p s c an s i n g r o u p s o f t h r e e b y t e s ,
the K l o o p s c an s e a c h b i t .
L in e s 1 4 5 6 0 - 1 4 6 1 0 : T h e s p r i t e d a t a i s sa v e d o n t o t a p e . T h e u s e r h a s t h e
o p t io n o f d e c la r i n g h o w m a n y s p r i t e s a r e t o b e s a v e d . T h i s m a k e s it
possible t o save t h r e e s p r i t e s , w h i c h c a n b e s t o r e d i n t h e t a p e i n p u t b u f f e r o f
a s u b s e q u e n t p r o g r a m .
I f a ny s p r i t e i s c a ll e d u p f r o m t a p e f o r f u r t h e r m a n i p u l a t i o n , s p r i t e s
cu rr e n tl y i n t h e m e m o r y a r e l o s t .
L in e s 1 4 6 6 0 - 1 4 6 7 0 : T h i s r o u t i n e s w itc he s o f f t h e s p r i t e , n o r m a l i s e s t h e
mem or y a n d e n d s t h e p r o g r a m .
L in es 1 4 6 8 0 - 1 4 7 3 0 : X a ll o w s t h e c u r r e n t s p r i t e d a t a t o b e e x c h a n g e d wi th
d a t a a t a n o t h e r p o s i t i o n — p a r t i c u l a r l y u s e f u l w h e n m a k i n g u p a set o f
th ree .
6 7
Page 70
T h e Wor king C o m m o d o r e 6 4
Li nes 1 4 7 4 0 - 1 4 8 3 0 : T h i s r o u t i n e e n a b le s t h e u s e r t o e n t e r o r leave s p ri t e
m u l t i - c o l o u r m o d e .
L i n e 1 4 7 5 0 : I f m u l t i - c o l o u r m o d e i s set ( i e t h e c o r r e s p o n d i n g b i t in t h e
s p r i t e m u l t i - c o l o u r re g i s te r a t 5 32 76 i s s et) a n d th i s f u n c t i o n i s c a ll e d , t h e n
m u l t i - c o l o u r m o d e i s r e s e t ( t u r n e d o f f ) f o r s p r i t e z e ro .
Lin es 1 4 7 6 0 - 1 4 8 0 0 : T h e e n i g m a t i c 0 1 , 1 0 a n d 1 1 in t h e s e p r o m p t s r e f e r t o
b i t c o m b i n a t i o n s o n t h e s p r i t e g r i d . W h e n i n m u l t i - c o l o u r m o d e , t h e sp ri t e
i s r e g a r d e d as h a v i n g o n l y 1 2 d o t s a c r o s s ( t h o u g h t h e y a r e tw ice as lo n g ) .
Bit s a r e r e a d i n p a i r s f r o m t h e l e f t a n d , n a t u r a l l y , f o r m p a i r s o f 0 0 ,0 1 ,1 0 o r
1 1 . E a c h o f t h e s e t h r e e c o m b i n a t i o n s w ill p r o d u c e a d i f f e r e n t c o l o u r in
m u l t i - c o l o u r m o d e , w i t h 0 0 b e in g t h e sc re e n b a c k g r o u n d c o l o u r e d b y t h e
s p r i t e m u l t i - c o l o u r r e g i s te r a t 5 328 5. T h e 1 0 c o l o u r i s d i c t a t e d b y t h e
o r d i n a r y s p r i t e c o l o u r r e g i s t e r . 1 1 c o l o u r c o m e s f r o m t h e sp ri t e
m u l t i - c o l o u r r e g i s te r a t 53 2 8 6.
T e s ti n g M o d u l e 3 . 3 , 3
All t h e f u n c t i o n s d e s c r i b e d i n t h e c o m m e n t a r y s h o u l d b e a v a il a b l e on ce
t h is m o d u l e h a s b e e n e n t e r e d . A s w i t h t h e e q u i v a l e n t m o d u le in
C h a r a c t e r s , it i s b e t t e r t o t e s t e a c h f u n c t i o n as it i s e n t e r e d .
S u m m a r y
A l it tl e t h o u g h t a b o u t t h i s p r o g r a m w il l d e m o n s t r a t e j u s t h o w easy s p rit es
a r e t o u s e o n c e t h e f u n c t i o n s o f a few m e m o r y l o c a t i o n s a r e u n d e r s t o o d .
T h e p r o g r a m i t s e l f w il l p r o v i d e a n e nd le s s series o f s p ri t e s w h ic h c a n be
s t o r e d f o r f u t u r e u se o n a s e p a r a t e t a p e . T h e t e c h n i q u e s c o n t a i n e d in t h e
p r o g r a m w il l m a k e it a si m p l e m a t t e r t o m a k e t h e b e s t u se o f su c h s p rit es in
y o u r o w n c r e a t i o n s .
G o i n g F u r t h e r
1 ) T h e p r o g r a m m a k e s n o p r o v i s i o n f o r o n e o t h e r s p r i t e f u n c t i o n , a n d t h a t
i s t h e e x p a n d c a p a b i l i t y , w h i c h d o u b l e s t h e h e i g h t o r w i d t h o f t h e sp ri t e
(sa m e n u m b e r o f b y t e s — j u s t m a d e l o n g e r ) . T h i s w o u l d b e a sim pl e m a t t e r
t o a d d since all t h a t i s i n v o lv e d i s s e t t i n g t h e c o r r e s p o n d i n g b i t in t h e
re g i s te r a t 5 3 2 7 7 f o r t h e h o r i z o n t a l e x p a n s i o n a n d 5 3 2 7 1 f o r t h e v e rt i ca l .
F o r t h e p u r p o s e s o f t h i s p r o g r a m t h e c o r r e c t b i t i s z e r o .
2 ) I t w o u l d b e u s e f u l t o b e a b l e t o p i c k u p o n l y p a r t o f a set o f s p ri t e s f r o m
t a p e , s a y o n e a t a t i m e , t o d e c id e w h e t h e r y o u w a n t e d t o c o m p i le it i n t o t h e
c u r r e n t s e t. A sl i g h t c h a n g e t o t h e l o a d r o u t i n e w o u l d e n a b l e y o u t o d o th is .
6 8
Page 71
C h a p te r 3 Th e C o l o u r f u l 6 4
3.4 H I R E S
T h o u g h t h e p o s s ib i li ti e s p r o v i d e d b y u s e r - d e f i n e d c h a r a c t e r s a n d s p ri t e s
are a lm o s t l im itl e s s , t h e 6 4 d o e s p r o v i d e y e t a n o t h e r m a j o r g r a p h i c s m o d e ,
b i t- m a p p e d g r a p h i c s . W h a t t h is m e a n s i s t h a t r a t h e r t h a n b e in g a b le t o
a dd res s a m i n i m u m o f o n e o f t h e 1 0 0 0 c h a r a c t e r s q u a r e s o n t h e n o r m a l
scre en, t h e u s e r i s a b le t o set a n y i n d i v i d u a l pix el ( s h o r t f o r p i c t u r e e le m e n t )
o r d o t o n t h e s c re e n . I n t h is m o d e l in e d r a w i n g s a n d c u rv e s c a n b e d r a w n o n
th e scre en , t h o u g h t o m a k e th e f u l l e s t us e o f i t y o u w ill n e e d t o g e t h o l d o f
th e gr a p h i c s e x te n s i o n c a r t r i d g e f o r t h e 64 , w h i c h w ill p r o v i d e y o u w i t h a
vari ety o f flexi ble g r a p h i c s c o m m a n d s .
T o u n d e r s t a n d t h e p r o g r a m gi ven h e r e it i s n e c e s s a ry t o k n o w a l it tl e
a b o u t t h e wa y t h e b i t - m a p p e d s c re e n i s se t u p . T h e s c re e n i t s e l f c o n t a i n s
3 2 0 * 2 0 0 s e p a r a t e p o s i t i o n s , a t o t a l o f 64 000 . I n o r d e r t o s t o r e e a c h o f t h e s e
s e p ar a te ly , 80 0 0 by t e s o f m e m o r y a r e n e e d e d , p r o v i d i n g 6400 0 i n d i v i d u a l
bi ts. E a c h o f t h e s t a n d a r d c h a r a c t e r p o s i t i o n s r e q u i r e s e ig h t b y t e s ( t h e 8 * 8
grid t h a t w e u s e d f o r u s e r - d e f i n e d g r a p h i c s ) . S t a r t i n g f r o m t h e t o p
l e f t - h a n d c o r n e r o f t h e s c re e n , t h e f i r s t 8 (0 - 7 ) by t e s o f t h e sc re e n m e m o r y
are us ed t o c r e a t e w h a t w o u l d b e o n t h e n o r m a l s c re e n t h e f i r s t c h a r a c t e r
p o s it i o n . T h e se c o n d e ig h t b y t e s f o r m t h e s e c o n d 8 * 8 g r i d a n d so o n a lo n g
th e line. S inc e t h e r e a r e 4 0 c h a r a c t e r p o s i t i o n s i n a l in e , e a c h l in e t a k e s 3 2 0
byte s. I n a c t u a l f a c t , b e c a u s e t h e b i t - m a p p e d m o d e e n a b le s i n d i v i d u a l
p ix e ls t o be a d d r e s s e d , t h is l in e o f 8 * 8 g r id s i s c a p a b l e o f h o l d i n g ei g h t
s i n g le pix e l t h ic k n e s s line s ( t h o u g h i f y o u d r e w t h e m all it w o u l d l o o k l ik e a
sol id b a r ) .
Th e 8 K o f m e m o r y n e c e s s a ry t o h o l d t h e b i t - m a p p e d s c re e n i s o b v i o u s l y
n o t s t o r a b l e i n t h e n o r m a l I K s c re e n m e m o r y n o r , in f a c t , c a n it ev en us e
t h a t a r e a as a p a r t o f its a r e a , sinc e 1 0 2 4 t o 2 0 2 3 i s u s e d t o s t o r e c o l o u r
i n f o r m a t i o n f o r t h e b i t - m a p p e d s c re e n . T h e s o l u t i o n a d o p t e d i n t h e
p r o g r a m t h a t fo llo w s i s t o l o c a t e t h e sc re e n b e g i n n i n g a t 81 92 , le a v i n g 6 K
o f m e m o r y f o r t h e Bas ic p r o g r a m , w i t h t h e o p t i o n o f r e l o c a t i n g Basic i f t h e
p r o g r a m i s d e v e lo p e d a n d l e n g t h e n e d . U s i n g t h e p r o g r a m gi v en h e r e y o u
w i l l be a b le t o u se t h e b i t - m a p p e d sc re e n as a s k e t c h - p a d , u s in g e i t h e r t h e
c u rs o r m o ve a r r o w s o r a sim p le l in e - d r a w i n g a l g o r i t h m t o c r e a t e a d e s ig n
on th e scre en .
Hi-Res: T a b l e o f V a r i a b l e s
DX D i s ta n c e b e tw e e n e n d s o f l in e a l o n g X ax is.
D Y D i s t a n c e b e tw e e n e n d s o f lin e a l o n g Y ax is.
FN P E T h e v a lu e t h a t m u s t b e P O K E d i n t o P P t o e ra s e pixe l
X , Y . t
FN P P T h e l o c a t i o n o f t h e b y t e i n w h i c h pixel X , Y fa l l s.
FN PV T h e v a lu e t h a t m u s t b e P O K E d i n t o P P t o set pi xel X , Y .
M O T h e c u r r e n t m o d e o f t h e p r o g r a m .
SC S t a r t o f sc re e n .
6 9
Page 72
Th e Wor king C o m m o d o r e 64
S L
X I , X2
Y1.Y2
M O D U L E 3.4. 1
T h e s lo p e o f t h e l in e t o b e d r a w n .
X c o - o r d i n a t e s o f e n d s o f l in e t o b e d r a w n .
Y c o - o r d i n a t e s o f e n d s o f li n e t o b e d r a w n .
1 0 0 1 0 R E M IN I TI A L I S E HI- RES S CR EEN
1 0 0 2 0 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1 0 0 2 2 C L f = " " : I N P U T " S WC L ER R SCR EEN C V / N )
: " ; C L $
1 0 0 2 5 R E M PO K E 44,64:PO K E 4 3 , 1 : POKE 1 6 3 8
4 , 0 : C L P .
1 0 0 2 7 D E F F N P P < X > =SC+ 32 0* I N T < V / 8 ) + 8 * I N T <
X/8 ) +( V A N D 7 )
1 0 0 2 8 D E F FN P V ( X > = P EE K > ' F N P P < X ) > O R < 2 T ( 7
- C X A N D 7 > > : : <
1 0 0 2 9 D E F F N P E O O = P E E K < F N P P O O > A N D < 2 5 5
- 2 T < 7 - ( X A N D 7 > > >
1 0 0 3 0 POKE 5 3 2 7 2 , < PE E K < 53 2 7 2 ) > O R 8 : P O K E
53 26 5, PE E K < 53 265 > 0 R 3 2 : S C = 8 1 9 2
1 0 0 3 5 I F C L $ = " N " TH E N 1 0 0 5 0
1 0 0 4 0 F O R I = 3 C T O S C + 7 9 9 9 : P OK E 1 , 0 : N E X T
1 0 0 5 0 F O R 1 = 1 0 2 4 T O 2 0 2 3 : P O K E 1 , 6 * 1 6 + 1 2 :
T h i s m o d u l e c o n f i g u r e s t h e s c r e e n m e m o r y f o r t h e b i t - m a p p e d m o d e ,
d e fi n e s s o m e u s e f u l f u n c t i o n s a n d c le a rs t h e h i g h r e s o l u t i o n sc re e n .
C o m m e n t a r y
L i n e 1 0 0 2 5 : T h e P O K E s i n t h i s R E M s t a t e m e n t a r e n o t n e c e s s a ry f o r t h e
r u n n i n g o f t h i s p r o g r a m . T h e y a r e i n c l u d e d i n o r d e r t h a t i f y o u wish t o
e x p a n d t h e p r o g r a m i n s u c h a w a y t h a t i t m a y o v e r r u n t h e s c re e n a t 8 1 9 2
a n d o n w a r d s , y o u w ill h a v e t h e n e c e s s a r y i n f o r m a t i o n t o r e l o c a t e Basi c. A s
w i t h t h e S p r it e s p r o g r a m , t h e P O K E s s h o u l d b e i n c l u d e d in a l o a d e r
p r o g r a m w h ic h is r u n B E F O R E t h e m a i n p r o g r a m . T h e p r o g r a m a s gi ven
h e r e w o r k s h a p p i l y w i t h i n t h e 6K o f m e m o r y u p t o 81 9 2— t h e r e i s n o
ne cessity eve n t o s e t a l i m i t t o t h e t o p o f b a s i c .
Li ne s 1 0 0 2 7 - 1 0 0 2 9 : T h e u s e o f t h e s e f u n c t i o n s i s g iv en i n t h e t a b l e o f
v a r i a b le s .
7 0
Page 73
C h a p te r 3 The C o lo u r f u l 6 4
Line 10030: 532 72 i s t h e r e g i s t e r n o r m a l l y u s e d t o c o n t r o l w h e r e t h e V I C I I
l ook s f o r c h a r a c t e r d a t a , in t h i s c a se i t w ill d i c t a t e t h e b e g i n n i n g o f t h e
b i t - m a p p e d s c re e n . P O K E i n g 8 i n h e r e s ets t h e sc re e n s t a r t t o 81 9 2 .
P O K E i n g 5 3 2 6 5 w i t h 3 2 sets t h e b i t - m a p p e d m o d e .
Lin es 1 0 0 3 5 - 1 0 0 4 0 : I n L i n e 1 0 0 2 2 , t h e u s e r was g iv en t h e o p t i o n o f
clea rin g t h e s c re e n . D u r i n g t h e d e v e l o p m e n t o f t h e p r o g r a m , w h e n t h e
p r o g r a m i s s t o p p e d a n d R U N —R E S T O R E p r e s s e d , a l t e r a t i o n s c a n b e
m a d e t o t h e p r o g r a m w i t h o u t a f f e c t i n g t h e c o n t e n t s o f t h e s c r e e n a t a ll . O n
r u n n i n g t h e p r o g r a m a g a i n it sa ves t i m e n o t t o h a v e t o c l e a r t h e 80 00 b y t e s .
Line 1 0 0 5 0 : T h i s l in e c le a rs t h e n o r m a l s c r e e n m e m o r y a r e a , w h i c h i s n o w
em pl oy e d t o h o l d t h e c o l o u r d a t a f o r e a c h o f t h e 1 0 0 0 n o r m a l c h a r a c t e r
p o s it i o n s .
Tes tin g M o d u l e 3 . 4 . 1
O n f ir s t r u n n i n g t h e p r o g r a m , t h e s c re e n s h o u l d i m m e d i a t e l y fill w it h
ga rb a g e . G r a d u a l l y t h i s w ill c l e a r , le a v i n g a s c re e n w h i c h m a y still b e
c ove red w i t h c o l o u r e d s q u a r e s c o r r e s p o n d i n g t o t h e p o s i t i o n o f c h a r a c t e r s
o n t h e n o r m a l m o d e s c re e n . T h e s e t o o s h o u l d t h e n b e g in t o c l e a r a n d t h e
screen be set t o w h i t e . W h e n t h e m o d u l e i s f i n i s h e d , p r e s s R U N a n d
R E S T O R E t o r e t u r n t o n o r m a l m o d e .
M O D U L E 3 . 4 .2
1 1 0 0 0
1 1 0 1 0 R E M D R A W O N SCREEN
1 1 0 2 0 R E M # * # # # # #* * # # * # * # # * ## * # # * # * # ## # #
1 1 0 3 0 X * 1 6 0 • • Y = 9 6 : M 0 * 1 : PO K E 1 0 2 4 , < P E E K < 1 0
2 4 > R N D 2 4 0 > O R M 0 $ 2
1 1 0 4 0 T T * P E E K < F N P P < X > >
1 1 0 4 2 G E T A T : I F f l $ 0 " " THEN 1 1 0 5 0
1 1 0 4 4 PO K E F N P P < X > . ■ F N F ' V ( X > : POKE F N P P ( X > . •
F N F ' E O O : G OT O 1 1 0 4 2
1 1 0 5 0 P O K E F N P P < X > . . T T
1 1 0 6 0 I F M O O THEN X * X - < f l $ * " M " A N D X 0 1 9
) + ( f l $ * " l l " A N D X > 0 >
1 1 0 6 2 I F M0* 3 T H E N X * X - 1 0 # < f l $ * " M " A N D X C
31 0> +1 0 # < R $ * " H " A N D X > 1 0 >
1 1 0 7 0 I F M O O TH E N Y * Y - < f l » * " M " A N D Y C 1 9 1
)+ <A$="nH A N D Y > 0 )
1 1 0 7 2 I F M 0 = 3 T H E N Y*Y-10#<A$ *"M" A N D Y <
1 8 2 > + 10* (A $ = , , n " A N D V > 1 0 >
1 1 0 7 5 I F A T * " # " TH E N M 0 * M 0 + 1 : M 0 * M 0 + 4 # ( M 0>3
> : P O K E 1 0 2 4 , PE E K ( 1 0 2 4 ) AND 240 > O R < M0#2 >
7 1
Page 74
Th e Wor king C o m m o d o r e 64
1 1 0 8 0 I F M 0 = 1 T H EN PO KE F N P P C X ) , F N P V O O
1 1 0 9 0 I F 1 1 0 = 0 TH E N P O KE F N P P ( X > , F N P E < X >
1 1 1 0 0 I F T H EN X 1 = X : V 1 = V
1 1 1 1 0 I F f l $ = , , 2 , ‘ TH EN X 2 = X : V 2 = V
1 1 1 2 0 I F f l $ « " L " T H E N GO SU B 1 2 0 0 0
1 1 2 0 0 G O T O 1 1 0 4 0
1 1 4 9 9 G O T O 1 1 4 9 9
T h is m o d u l e all ow s a f l a s h i n g pix el t o b e m o v e d a r o u n d t h e s c re e n , in k in g
in and e r a s i n g i n d i v i d u a l pix els .
C o m m e n t a r y
L i n e 1 1 0 3 0 : X a n d Y a r e t h e c o - o r d i n a t e s o f t h e pixel o n t h e 3 0 0 * 2 0 0
sc re e n. T h e f l a s h i n g pixel c u r s o r i s set t o t h e m i d d l e o f t h e s c re e n . T h e f ir s t
p o s i t i o n i n n o r m a l sc re e n m e m o r y i s P O K E d w i t h a v a lu e w hi c h p r o d u c e s a
c o l o u r i n d i c a t o r o f t h e c u r r e n t m o d e ( b l a c k = 0 , r e d = 1 ,
p u r p l e = 2 , b l u e = 3 ) . E f f e c t s o f m o d e s w il l b e e x p la i n e d l a t e r .
L i n e 1 1 0 4 0 : T h e s t a t e o f t h e s c re e n a t t h e p o s i t i o n a t w h ic h t h e c u r s o r i s t o
be f la s h e d i s o b t a i n e d .
Lin es 1 1 0 4 2 - 1 1 0 5 0 : T h e c u r s o r i s f l a s h e d o n a n d o f f u n t i l a k ey i s p r es s e d .
Li ne s 1 1 0 6 0 - 1 1 0 7 2 : I n m o d e 3 , p r e s s i n g t h e c u r s o r a r r o w r e s u l ts in t h e
f la s h in g pixel m o v in g 1 0 p o s i t i o n s i n t h e r e q u i r e d d i r e c t i o n ( w i th i n screen
lim its ) . I n m o d e s 0 , 1 a n d 2 t h e c u r s o r m ov es o n l y o n e s p a ce a t a t im e .
L in e 1 1 0 7 5 : T h e u n s h i f t e d f u n c t i o n k ey s, f r o m t o p t o b o t t o m , a r e u s e d t o
se t t h e m o d e s . I f t h e m o d e i s c h a n g e d t h e c o l o u r i n d i c a t o r i s c h a n g e d .
Line s 1 1 0 8 0 - 1 1 0 9 0 : I f t h e m o d e i s z e r o ( b la c k ) t h e n t h e pixel a t t h e c u r s o r
p o s i t i o n i s b l a n k e d . I f t h e m o d e i s 1 ( re d ) t h e n t h e pixel i s i n k e d i n . T h e
r e m a in i n g t w o m o d e s a ll o w t h e c u r s o r t o b e m o v e d a r o u n d , slo w o r f a s t ,
w i t h o u t a f f e c t i n g w h a t i s o n t h e s c re e n .
Lin es 1 1 1 0 0 - 1 1 1 2 0 : T h e s e i n p u t s r e l a t e t o t h e n e x t m o d u l e .
7 2
Page 75
C h a p te r 3 The C o lo u r f u l 6 4
Testing M o d u l e 3 . 4 . 2
Yo u s h o u ld n o w b e a b le t o m o v e t h e t i n y c u r s o r a r o u n d t h e sc re e n , d r a w i n g
o r era si ng .
M O D U L E 3. 4. 3
1 2 0 0 0
1 2 0 1 0
1 2 0 2 0
1 2 0 2 5
1 2 0 3 0
2 - V 1 >
1 2 0 3 2
1 2 0 3 5
1 2 0 4 0
1 2 0 5 0
' l
1 2 0 5 5
R E M L I N E D R A W I N G
r e m w m w m w m m m m w w m m m m m
x = x 1 : y = V l
D X * X 2 - X 1 + S G N C X 2 - X 1 > : D V = V 2 - V 1 + S G N <V
IF A B S < D Y » A B S < D X > T H E N 1 2 2 0 0
SL==A BS D V / D X ) ~ 0 .5
F O R 1 = 1 T O A B S < D X >
IF M O D E * 1 T H E N P O K E F N P F ' O O , F N P V < X
IF M O D E * 0 T H E M P O K E F N P P (X ) F M P E <X
1 2 0 6 0 I F SL>@ T H E M V * V + S G N < D V > : S L = S L - 1 : G
0 T 0 1 2 8 6 0
1 2 8 7 0 S L * S L + R B S < D V / D X )
1 2 1 0 0 X ^ X + S G M C D X ) : N E X T I
1 2 1 2 0 RE TUR N
1 2 2 0 0 S L * R B S ( D X / D V > - 0 . 5
1 2 2 1 0 F O R 1 = 1 T O R B S i D V )
1 2 2 2 0 I F M 0 D E * 1 TH E N PO K E F N P F ' < X > , FNPV<X
1 2 2 2 5 I F M 0 D E* @ TH E N POKE F N P P < X ’ > . • F N P E < . X
1 2 2 3 0 I F S L > 0 THEN X* X +S GN< DX ) = S L * S L ~ 1 ' - G
0 T 0 1 2 2 3 0
1 2 2 4 0 S L - S L + R B S < D X / D V >
1 2 2 5 0 V = V + 3 G H < D V > : NE X T I
1 2 3 0 0 RE T URN
Th is m o d u l e p r o v i d e s f o r t h e d r a w i n g o f s t r a i g h t line s b e tw e e n p o i n t s
de fi n e d by t h e u s e r . I t i s a n a d a p t a t i o n o f a m e t h o d k n o w n a s B r e s e n h a m ’ s
a lg o r i th m a n d a v e r s i o n o f it i s o f t e n u s e d i n t h o s e Basi cs w h ic h h a v e l in e
d r a w in g c o m m a n d s .
C o m m e n t a r y
Line 1 2 0 2 5 : T h e va lu e s X I a n d Y 1 we re d e f i n e d w h e n t h e u s e r i n p u t 1 — a t
t h a t p o i n t t h e y wer e s e t e q u a l t o t h e X a n d Y p o s i t i o n s o f t h e c u r s o r . X 2 a n d
Y 2 were set o n i n p u t o f 2 . T h e l in e w il l b e d r a w n f r o m X 1 , Y 1 .
7 3
Page 76
Th e Wor king C o m m o d o r e 6 4
Li ne 1 2 0 3 0 : D X a n d DY a r e set e q u a l t o t h e d i s t a n c e b e tw e e n X I a n d X2 ,
a n d Y 1 a n d Y2, p l u s o n e . T h e S G N f u n c t i o n m e a n s t h a t it d o e s n o t m a k e
a n y d i f f e r e n c e i f t h e d i s t a n c e i s p o s it i v e o r n e g a ti v e ( i f it i s n e g a tiv e t h e n
m in u s o n e w il l b e a d d e d r a t h e r t h a n 1 ) .
L in e 1 2 0 3 2 : T h e l i n e - d r a w i n g a l g o r i t h m use s t h e g r e a t e r o f t h e t w o
d i ff e re n c e s as t h e b a s is o f its c a l c u l a t i o n s so i t i s f a s t e r t o h a v e t w o s e p a r a t e
r o u t i n e s .
Li ne 1 2 0 3 5 : SL i s t h e s lo p e , o r r a t i o b e tw e e n D X a n d DY m in u s 0 . 5 .
L i n e s 1 2 0 4 0 : T h e l o o p i s as l o n g as t h e d i f f e r e n c e a l o n g t h e X c o - o r d i n a t e .
Lines 1 2 0 5 0 - 1 2 0 5 5 : D e p e n d i n g o n w h e t h e r t h e m o d e i s 0 o r 1 , a si ngle d o t
o n t h e lin e i s e r a s e d o r d r a w n . N o t e t h a t n o t h i n g w il l h a p p e n i n m o d e s 2 o r
3 .
L in e 1 2 0 6 0 : A c c o r d i n g t o t h e r a t i o b e tw e e n D X a n d D Y , SL m a y no w
i n d i c a t e t h a t t h e n e x t d o t s h o u l d m o v e u p o r d o w n t h e Y ax is. I f so t h e Y
p o s i t i o n i s c h a n g e d a n d SL i s r e d u c e d b y o n e .
L in e 1 2 0 7 0 : T h e sl o p e v a l u e i s a d d e d t o SL e a c h t im e a d o t h a s b e e n
p r i n t e d .
L in e 1 2 1 0 0 : T h e X p o s i t i o n i s i n c r e m e n t e d f o r e a c h i t e r a t i o n o f t h e l o o p .
O nc e a g a i n t h e S G N f u n c t i o n t a k e s c a r e o f l ines w h ic h m o v e b a c k w a r d s
a l o n g t h e ax is.
Lin es 1 2 2 0 0 - 1 2 2 5 0 : E x a c t l y t h e s a m e r o u t i n e f o r t h o s e cases w h e r e D Y i s
g r e a t e r t h a n D X .
T e s tin g M o d u l e 3 . 4 . 3
Y o u s h o u l d n o w b e a b le t o s p e c i f y a s t a r t a n d e n d p o i n t f o r a line ( 1 a n d
2 ) th e n t o d r a w it o r e r a s e a n e x is tin g li n e , d e p e n d i n g u p o n w h e t h e r m o d e 1
o r 0 i s set.
S u m m a r y
T h is p r o g r a m i s in t e n d e d a s n o m o r e t h a n a n a p p e t i s e r f o r t h e p o ss ib ili tie s
r a i s e d b y t h e b i t - m a p p e d m o d e . F u l l u se o f b i t - m a p p e d g r a p h i c s r e q u i r e s
s om e c a r e f u l t h o u g h t as t o w h a t y o u wi sh t o a c h ie v e a n d s o m e o f t e n
c o m p l e x m a t h e m a t i c s t o a c hi e ve i t. S h o u l d y o u d e c id e t o go f u r t h e r , t h e
t e c h n i q u e s gi ve n h e r e , a n d t h e f u n c t i o n s u s e d t o l o c a t e i n d i v i d u a l pixe ls,
w il l m a k e t h e t a s k t h a t m u c h e a si e r.
7 4
Page 77
C h a p te r 3 The C o lo u r f u l 6 4
Go in g f u r t h e r
1 ) W hy n o t a d d a f a c i li ty a ll o w i n g t h e s a v in g o f a s c re e n o f g r a p h i c s o n t o
t a p e — y o u ’ l l ne e d a f a i r l y l o n g t a p e b u t t h e r o u t i n e w o u l d b e sim p le
e n o u g h .
2 ) C o m p u t e r gr a p h i c s b o o k s p r o v i d e a n u m b e r o f a l g o r i t h m s w hi c h all o w
th e d r a w in g o f circles a n d a r c s . W h y n o t a d d a m o d u l e t o t h e e n d o f t h e
p r o g r a m t o a ch iev e t h i s — t h e m a i n d r a w b a c k w il l b e l a c k o f s p e ed .
7 5
Page 78
Page 79
C H A P T E R 4
T he 6 4 a s S ec r et a ry
S o o n e r o r l a t e r , m o s t m i c r o - o w n e r s r e a l is e t h a t t h e i r n ew d i g i t a l f r i e n d
rea lly co m e s i n t o i ts o w n w h e n i t is s t o r i n g i n f o r m a t i o n , p r o c e s s i n g i t a n d
p r e s e n t in g i t i n a v a r i e t y o f w a y s t h a t w o u l d b e l a b o r i o u s i n t h e e x t r e m e i f
d o n e m a n u a l l y . T h e y t h e n b e g in t h e t a s k o f w r i t i n g si m p l e p r o g r a m s w h i c h
w i l l s to r e t h e i r f r i e n d s ’ n a m e s a n d a d d r e s s e s o r c a t a l o g u e t h e i r r e c o r d
co ll e ct i o n . T h e y m a y e n d u p w i t h h a l f a d o z e n p r o g r a m s , e a c h l i m i t e d t o a
sing le us e , a n d ye t e a c h p r o g r a m e m p l o y i n g m u c h t h e s a m e m e t h o d s .
I n t h is c h a p t e r w e b e g in a s e c t i o n o f m o r e s u b s t a n t i a l p r o g r a m s b y
e x a m i n in g h o w a sing le p r o g r a m c a n b e w r i t t e n t o s a t i s f y a w i d e v a r i e t y o f
filing ne e ds w i t h o u t t h e c o n s t a n t n e e d f o r r e w r i t i n g e v e ry t i m e a ne w
a p p l i c a t i o n c o m e s a l o n g .
4. 1 UN IFILE
T h e f ir s t p r o g r a m i s c a ll e d U n i f i l e a n d , i n t h e f o r m p r e s e n t e d h e r e , i t i s
c a p a b l e o f s t o r i n g u p t o 50 0 e n t r i e s , a s we ll a s a ll o w i n g t h e u s e r t o s e a r c h
t h r o u g h t h e m f o r n a m e d i t e m s , t o a m e n d e n t r i e s a n d t o d e le t e t h e m . Q u i t e
a p a r t f r o m t h e wi d e a p p l i c a t i o n s o f s u c h a p r o g r a m , I h o p e t h a t t h e sim p le
a c t o f e n t e r i n g i t a n d u n d e r s t a n d i n g t h e m e t h o d s u s e d w il l p r o v i d e y o u w i t h
a h o s t o f id ea s f o r f u r t h e r a p p l i c a t i o n s .
U ni fil e : T a b l e o f V a r i a b l e s
IN
AV o(49 9,X -l)
A $( 49 9)
B $( X -1 )
F F
IT
P O
P P
R $
F l a g i n d i c a t o r u s e d t o s h o w w h e t h e r t h e p r o g r a m h a s
b e e n i n i t i a l i s e d .
R e c o r d s t h e l e n g t h o f i n d i v i d u a l i te m s i n e a c h e n t r y .
M a i n fil e a r r a y .
H o l d s n a m e s o f i te m t y p e s f o r e a c h e n t r y .
F l a g i n d i c a t o r u s e d t o d e t e r m i n e w h e t h e r a u s e r s e a r c h
h a s b e e n s u c c e s s fu l .
N u m b e r o f e n t r i e s i n fil e so f a r .
U s e d in b i n a r y s e a r c h t o i n d i c a t e n u m b e r o f s e a r c h
s a m p l e s n e c e s s a r y .
P o i n t e r t o s t a r t p o s i t i o n o f c u r r e n t i t e m t o b e p r i n t e d
f r o m a n e n t r y .
S e p a r a t o r f o r u s e i n s a v in g d a t a o n t a p e .
7 7
Page 80
Th e Wor king C o m m o d o r e 64
SI
S S
T l $
T I % ( 2 0 )
X
z
M O D U L E 4. 1. 1
1 1 0 0 0 R E M # * * ; m * * ; m * ; m ! m ; m * ; m * * * * *
T e m p o r a r y s e a r c h p o i n t e r f o r u s e r s e a r c h m o d u l e .
M a i n s e a r c h p o i n t e r i n b i n a r y s e a r c h m o d u l e .
T e m p o r a r y s t o r a g e s t r i n g u s e d t o b u i l d u p ne w e n tr y .
T e m p o r a r y s t o r a g e f o r l e n g t h o f i te m s b e in g b u i l t u p
i n t o ne w e n t r y .
H o l d s n u m b e r o f i te m s s p e c i f ie d f o r e a c h fi le.
I n d i c a t o r f o r n u m b e r o f p r o g r a m f u n c t i o n t o be c a ll ed
u p f r o m m a i n m e n u .
1 1 0 1 0 R E M ME N U
1 1 0 2 0
1 1 0 3 0 POKE 5 3 2 8 1 , ? : P R I N T "
W H S W U N I F I L E "
1 1 0 4 0 PR INT " M W B C O M M f l N D S A V A I L A B L E : "
1 1 0 5 0 P R I N T
1 1 0 6 0 PR INT
1 1 0 7 0 PRIN T " M
1 1 0 8 0 P R IN T " M
1 1 0 9 0 P R IN T " M
1 1 1 0 0 I N P U T
" K m 1 > E N T E R I N F O R M A T I O N "
" M 2 > S EA RC H/ DI SPL AV /C HA NG E
3) D A T A F I L E S "
4 ) S E T U P N E W F I L E "
5> S T O P "
' M B J H I C H D O V O U R E Q U I R E : "
P R I N T
1 1 1 1 0 I F 2 > 3 O R I N = 1 T H E N 1 1 1 4 0
1 1 1 2 0 P R I N T " I N I T
I A L I S E D VET .":FOR 1 = 1 T O 1 0 00 :N E X T
1 1 1 3 0 GO T O 1 1 0 0 0
1 1 1 4 0 O N Z GOSUB 13 00 0,17000,18000,12000
, 1 1 15 0: G O T O 1 1 0 0 0
1 1 1 5 0 P R I N T " I L I N G
SY STE M C L O S E D " : E N D
T h e p u r p o s e o f t h e m o d u l e i s t o p r e s e n t all t h e f u n c t i o n s wh ic h t h e
p r o g r a m m a k e s a v a i l a b l e a n d t o a ll o w t h e u s e r t o m a k e a ch oic e
b e tw e e n t h e m . A s a r u l e o f t h u m b , a n y c o m p l e x p r o g r a m wh ic h doe s
n o t b e g in w i t h a c l e a r - c u t m e n u o f w h a t t h e p r o g r a m d o e s , i s a b a d
p r o g r a m . A n d i f y o u d o n ’ t a g re e w i t h t h a t s t a t e m e n t n o w , y o u
c e r t a i n l y w ill a t s o m e t i m e i n t h e f u t u r e w h e n y o u h a v e t o r e t u r n t o a
c o m p l e x p r o g r a m w h i c h h a s n o t b e e n u s e d f o r a fe w wee ks a n d f in d
y o u s e l f s p e n d i n g h a l f a n h o u r g o i n g t h r o u g h t h e l is t in g t r y i n g t o
r e m i n d y o u r s e l f w h a t i t d o e s a n d h o w .
7 8
Page 81
C h a p te r 4 Th e 6 4 a s S ecr et ary
C o m m e n t a r y
L in e 1 1 0 3 0 : A t y p ic a l u s e o f C o m m o d o r e ’ s fle xi b le c u r s o r c o n t r o l
c o m m a n d s . T h e s t r i n g c le a rs t h e s c re e n , m o v e s t h e c u r s o r d o w n o n e
spac e, a c ro s s t o t h e m id d l e o f t h e l in e , sets t h e RVS O N c h a r a c t e r i s t i c
a n d p r i n t s in gr e e n .
L in es 1 1 1 1 0 - 1 1 1 3 0 : N o p r o g r a m c a n b e s u c ce s s fu l l y r u n u n le s s t h e
a rr a y s it uses h a v e b e e n set u p . I n t h i s p r o g r a m t h e v a r i a b l e I N i s set t o
1 whe n t h a t h a p p e n s . I f I N i s n o t e q u a l t o 1 t h e n t h e o n l y f u n c t i o n s
a va ilab le f r o m t h e m e n u a r e i n i t i a l i s a t i o n ( s e t ti n g u p t h e a r r a y s ) a n d
s to p .
Line 1 1 1 4 0 : F o r t h o s e t o w h o m t h i s c o m m a n d i s n e w , O N . . . G O S U B
a n d O N . . . G O T O a r e s im p ly way s o f c u t t i n g d o w n o n lists o f mess y
I F . . . T H E N . . . G O S U B ( G O T O ) s t a t e m e n t s . T h e c o m m a n d w il l c h o o s e
th e d e s t i n a t i o n i n t h e lis t w h i c h i s d e s i g n a t e d b y Z .
A t th is st a g e , all t h a t c a n b e t e s t e d i s t h a t t h e m o d u l e p r e s e n t s a n e a t l y
o r d e r e d m e n u p a g e a n d a c c e p t s a n i n p u t . T h e o n l y i n p u t t h a t w il l n o t
p r o d u c e a n e r r o r r e p o r t i s 5 —p r o g r a m s t o p .
M O D U L E 4 . 1 . 2
1 2 0 1 0 R E M STR UCTURE O F F I L E
1 2 0 2 0 r e m m m m m m m m m m m m m m m m
1 2 0 3 0 C L R : D I M f l $ < 4 3 9 PRI NT " ) » » » » » i » » » i l
WV IS HF IL E STRUCT URE M : I N = 1 : R$=C HR $ ( 1 3 >
1 2 0 3 5 I N P U T " W A R E V 0 U LORDING F RO M T A P E
< V / N > : " ; Q $ : I F Q $ = " V " T H E N 1 1 0 0 0
1 2 0 4 0 I N P U T " M M B H O W M f l N V I T E M S I N EACH E
N T R V : n ; X - DI M B $ < X - 1 > , A X < 4 9 9, X - 1 >
1 2 0 5 0 PR I N T n : « n ; - F 0 R 1 = 0 T O X - l : PRIN T " I
N A M E O F I T E M " ; S T R $ C I + 1 > ; M • " ; • I N P U T Q $
1 2 0 6 0 E $ (I > : N E XT I : G O T O 1 1 0 0 0
This m o d u l e p e r f o r m s t h e e s s e n t ia l f u n c t i o n o f s e tt in g u p t h e a r r a y s
w hich w i l l b e u s e d t o s t o r e t h e p r o g r a m d a t a — u n t i l i t h a s b e e n c a lle d
u p , t h e p r o g r a m c a n n o t b e u s e d . O n c e d a t a h a s b e e n e n t e r e d , ca ll in g u p
th e m o d u le a g a i n w il l r e s u l t i n t h e lo ss o f a ll t h e d a t a — t h e m e m o r y i s
w iped c le a n r e a d y f o r a new set o f d a t a . T h e u s e o f t h e m a i n v a r i a b l e s i s
e x p la i n e d i n t h e t a b l e o f v a r i a b l e s a n d d u r i n g t h e s u b s e q u e n t
c o m m e n t a r y o n t h e p r o g r a m .
7 9
Page 82
The W or kin g C o m m o d o r e 64
C o m m e n t a r y
L i n e 1 2 0 3 0 : N o t e t h a t b e f o r e a n y a r r a y i s d i m e n s i o n e d , t h e m e m o r y
m u s t be c l e a r e d . F a i l u r e t o d o t h i s r e s u l t s i n t h e R E D I M M E D A R R A Y
e r r o r m ess ag e.
L i n e 1 2 0 4 0 : U n i f i l e d o e s n o t d i c t a t e t o t h e u s e r h o w m a n y i te m s t h e
t y p ic a l e n t r y c a n c o n t a i n , i t i s u p t o t h e u s e r t o sp e c i f y . O n c e t h is i s
d o n e t h e p r o g r a m c o n f i g u r e s t h e p o i n t e r a r r a y A % a n d t h e i te m t i t l e
a r r a y B $ a c c o r d i n g l y .
Li ne s 1 2 0 5 0 - 1 2 0 6 0 : H a v i n g s p e c i f ie d t h e n u m b e r o f i te m s p e r e n t r y , t h e
i te m s a r e n a m e d eg n a m e , a d d r e s s , t e l e p h o n e n u m b e r . N o t e t h a t
b e c a u s e t h e m e m o r y h a s b e e n c l e a r e d , t h e m o d u l e c a n n o t R E T U R N t o
t h e m e n u , it h a s t o b e g iv en t h e sp e c i f ic l i n e t o G O T O .
T e s ti n g M o d u l e 4 . 1 . 2
O n ca ll in g u p t h e m o d u l e y o u s h o u l d b e a s k e d t o s p e ci f y t h e n u m b e r o f
i te m s p e r file a n d t o give n a m e s t o t h e it e m s .
M O D U L E 4 .1 . 3
1 3 0 0 0 REM ** ** * * ** * * * * * * * * * ** * * * * * * * ** * *
1 3 0 1 0 R E M E MT R V O F M E W I T E M S
1 3 0 2 0 REM * * # # # * ## # # # # # * # * # #* # # # # # # * *# * #
1 3 0 3 0 T 1 $ = 1 1 1 1 : P R I NT 1 1 3 t ! » » » m» »ii i» »l !? :H E
W I T E M S "
1 3 0 4 0 p r i n t " ; I
T . : " I T E M S S O F A R "
1 3 0 5 0 P R I N T " W S C O M M f l N D S A V A I L A B L E : "
1 3 0 6 0 PRINT " XH > §E NT E R I T E M S P E C I F I E H "
1 3 0 7 0 PR INT " ■ T T I I H P U T ' Z Z Z ' T O RET URN T O
M E N U B U P "
1 3 0 8 0 F O R 1 = 0 T O X - l : P RI N T B $ (I > ; I N
P U T Q$ -IF Q $ = " Z Z Z " THEN RET URN
1 3 0 9 0 I F L E N - r . T 1 $ > + L E N < Q $ ) 0 2 5 5 T H E N 1 3 1 1 0
1 3 1 0 0 PR INT "G E N T R Y T O O L O N G . F O R J = 1 T
0 3000:N E X T J: RETURN
1 3 1 1 0 T 1 $ = T 1 $ + Q $ : T I X ( I > = L E N < T 1 $ > : N E X T I :
PR INT n : « i W A I T "
1 3 1 2 8 G Q S U B 1 4 0 0 0 : G 0 S U B 1 5 0 0 0 : G O T 0 1 3 0 0 0
T h e p u r p o s e o f t h i s m o d u l e i s t o a c c e p t t h e i n p u t o f t h e i te m s sp e ci fie d
b y t h e u s e r a n d t o c o m p i l e t h e m i n t o a n e n t r y r e a d y f o r t h e m a i n fi le.
8 0
Page 83
C h a p te r 4 The 64 a s S ecr et a ry
C o m m e n t a r y
L ine 1 3 0 8 0 : U s i n g t h e v a r i a b l e X t o d e t e r m i n e t h e n u m b e r o f
re p e t it io n s , t h e p r o g r a m p r o m p t s t h e u s e r t o i n p u t e a c h o f t h e n a m e d
it em s.
L in es 1 3 0 9 0 - 1 3 1 0 0 : I n d i v i d u a l e n t r i e s c a n b e a m a x i m u m o f 2 5 5
c h a ra c te r s l o n g — t h e m a x i m u m l e n g t h o f a sing le s t r i n g o n t h e 64 . T h e s e
li n e s ch eck t h a t t h e l i m i t i s n o t b e in g e xc ee d e d .
L ine 1 3 1 1 0 : T h e i te m i n p u t i s a d d e d t o t h e t e m p o r a r y s t o r a g e s t r i n g T l $
a n d t h e l e n g t h o f t h e e n t r y so f a r i s r e c o r d e d in T I % . N o t e t h a t T I %
w a s n o t d e c l a r e d i n t h e i n i t i a l i s a t i o n m o d u l e . S im p ly m e n t i o n i n g it in
th e c o u rs e o f t h e p r o g r a m , a u t o m a t i c a l l y d i m e n s i o n s i t w i t h 1 0 e le m e n t s
( 0 - 9 ) . I f y o u w a n t t o h a v e e n t r i e s w i t h m o r e t h a n 1 0 i te m s t h e n y o u
m u st d e c la re a b i g g e r T I % i n t h e i n i t i a l i s a t i o n m o d u l e .
Testing M o d u l e 4 . 1 . 3
A t t h is s ta g e , b y e n t e r i n g t e m p o r a r y R E T U R N S a t lin e s 1 4 0 0 0 a n d
1 5 0 0 0 , y o u s h o u l d b e a b le t o call u p t h i s m o d u l e a n d b e p r o m p t e d t o
i n p u t ite m s u n d e r t h e n a m e s y o u h a v e s p e c i f ie d . N o t e t h a t t h e r e i s n o t
y e t a n y p r o v i s i o n t o e n t e r t h e s e i n t o t h e file.
M O D U L E 4 . 1 . 4
14000
1 4 0 1 0
R E M BIN ARY SE A RCH
14020
14030
14040
14 050
14 060
14 070
14 080
1409 0
14 100
14 110
O f all t h e m o d u le s i n t h i s p r o g r a m , t h i s o n e i s m o s t lik e ly t o l o o k l ik e
d o u b l e d u t c h o n f i r s t s ig h t . I n r e a l i t y i t i s v e ry s im p l e , b u t f i r s t y o u n e e d
t o u n d e r s t a n d t h e b a s ic p r i n c i p le s t h a t lie b e h i n d a m e t h o d o f s e a r c h in g
f o r s o m e t h in g c a ll e d t h e b i n a r y s e a r c h , w h ic h d r a m a t i c a l l y r e d u c e s t h e
a m o u n t o f w o r k n e e d e d t o f i n d t h e r i g h t p l a c e f o r a n ew i te m i n a n
o r d e r e d lis t o f d a t a .
I F I T = 0 TH E N SS =0=RETURN
P 0 = I N T L O G < I T > / L O G C 2 > ) : S S = 2 T P 0 - 1
F O R I«PQ T O 0 S T E P - 1
I F A $ < S S X T 1 $ T H E N S S = S S + 2 t I
I F f l $ < S S » T l $ T H E N S S = S S - 2 T I
I F S S < 0 T H E N S S = 0
I F S S > I T - 1 T H E N S S - I T - 1
N E X T I:I F f l $ < S5 >< Tl $ T H E N S S * S S + 1
R E T U R N
8 1
Page 84
Th e Wo rking C o m m o d o r e 6 4
C o n s i d e r t h e f o ll o w i n g e x a m p l e :
We h a v e e s t a b l i s h e d a file c o n t a i n i n g 2 ,0 0 0 n a m e s in a l p h a b e t i c a l o r d e r
a n d t h e r e i s a ne w n a m e t o b e i n s e r t e d , w h o s e r i g h t f u l p la c e w il l a c tu a ll y
b e a t p o s i t i o n 1 7 3 1 , t h o u g h t h i s h a s y e t t o b e d e t e r m i n e d . T h e se ar c h
r o u t i n e t h e r e f o r e b e g in s b y e x a m i n in g t h e f i r s t n a m e i n t h e file , deci des
t h a t t h e new n a m e w ill c o m e a f t e r i t a n d m o v es o n t o t h e s e c o n d n a m e .
E v e n t u a l l y , a f t e r e x a m i n in g 1 7 3 2 n a m e s , t h e s e a r c h r o u t i n e fin d s a
n a m e w hi c h t h e new n a m e s h o u l d c o m e b e f o r e a n d it k n o w s t h a t it h a s
f o u n d t h e r i g h t p l a c e t o i n s e r t t h e ne w n a m e . T h i s i s a s t r a i g h t f o r w a r d
p r o c e d u r e a n d o n e t h a t i s e a sy t o p r o g r a m b u t c o m p a r e it w it h t h is :
T h e s e a r c h p r o c e d u r e b e g in s b y e x a m i n in g t h e n a m e i n p o s i t i o n 1 0 2 4 o f
t h e file, b e c a u s e 1 0 2 4 i s t h e g r e a t e s t p o w e r o f 2 t h a t c a n b e f i t t e d i n t o
t h e t o t a l n u m b e r o f n a m e s i n t h e fil e. T h e n a m e a t 1 0 2 4 i s f o u n d t o be
a lp h a b e t i c a l l y le s s t h a n t h e n ew n a m e , so t h e s e a r c h r o u t i n e a d d s 102 4/ 2
t o t h e o r i g i n a l 1 0 2 4 a n d m o ve s o n t o n a m e n u m b e r 1 5 3 6 . T h a t n a m e i s
st ill le ss t h a n t h e ne w n a m e , so 1 0 2 4 / 4 i s a d d e d t o 1 5 3 6 , m a k i n g 1 7 9 2 .
N o w s o m e t h i n g d i f f e r e n t h a p p e n s — n a m e n u m b e r 1 7 9 2 i s a lp h a b e t i c a l l y
g r e a t e r t h a n t h e ne w n a m e — t h e s o l u t i o n i s t o s u b t r a c t 1 2 0 4/ 8 , g ivi ng
1 6 6 4 . T h e s e a r c h r o u t i n e goe s o n a d d i n g o r s u b t r a c t i n g d e c re a s in g
p o w e r s o f 2 t o b u i l d a s e a r c h p a t t e r n t h a t l o o k s lik e t h is :
1 6 4 4 ( t h e n a d d 6 4 )
1 7 2 8 ( th e n a d d 3 2 )
1 7 6 0 ( t h e n s u b t r a c t 1 6 )
1 7 4 4 ( t h e n s u b t r a c t 8 )
1 7 3 6 ( t h e n s u b t r a c t 4 )
1 7 3 2 ( t h e n s u b t r a c t 2 )
1 7 3 0 ( t h e n a d d 1 )
T h e n u m b e r o f c o m p a r i s o n s n e e d e d t o f i n d t h e c o r r e c t p l a c e i n t h e f il e
h a s b e e n r e d u c e d f r o m 1 7 3 2 t o 1 0 . T h e p o w e r o f t h e b i n a r y s e ar c h
s h o u l d b e a p p a r e n t .
Li ne 1 4 0 3 0 : I f t h e r e a r e n o it e m s i n t h e file y e t, t h e n t h e r i g h t p o s i t i o n
do e s n o t h a v e t o b e c a l c u l a t e d .
Li ne 1 4 0 4 0 : T h e L O G f u n c t i o n i s u s e d t o f i n d t h e m a x i m u m p o w e r o f 2
t h a t w il l f i t t h e c u r r e n t n u m b e r o f it e m s .
Li ne s 1 4 0 5 0 - 1 4 1 0 0 : T h e b i n a r y j u m p i s p e r f o r m e d , w i t h ch e ck s t o s e e
t h a t t h e s e a r c h i s n o t le a v i n g t h e e n d s o f t h e fil e. O n e f i n a l c o m p a r i s o n
i s m a d e w h e n t h e l o o p i s f in i s h e d a n d t h e c o r r e c t p o s i t i o n h a s b ee n
d e t e r m i n e d a n d s t o r e d in t h e v a r i a b l e S S .
8 2
Page 85
C h a p te r 4 The 6 4 as S ecr et ary
Testing M o d u l e 4 . 1 . 4
Fu ll t e s t in g o f t h e m o d u l e w ill h a v e t o w a i t u n t i l t h e n e x t m o d u l e h a s
been e n t e r e d b u t a c h e c k t h a t t h e s y n t a x i s c o r r e c t c a n b e m a d e b y
simp ly c a ll in g u p t h e i n s e r t m o d u l e , f r o m w h i c h t h i s m o d u l e i s c a ll e d .
M O D U L E 4 .1 .5
1 5 0 0 0 * * * * * * * *
150 10 R E M I N S E R T
1 5 0 2 0 $ B W * * * * * * * * * * . * * m M M % % * * * * * M M .
15 03 0 I F IT=0 T H E N G O T O 1 5 0 6 0
15 040 F O R I~ IT T O SS +1 S T E P - 1 : A $ ( I > = A $ (
I - l >
1 5 0 5 0 F O R J ~ 0 T O X - 1 : R X (I , J ) = A X (1 -1 ,J > : N
E X T J , I
15 0 60 A $ ( S S > = T 1 $ : F O R 1=0 T O X - l : A X ( S 3 , I )
= T I X < I >:N E X T = I T = I T + 1 : R E T U R N
T h e c o r r e c t p o s i t i o n h a v i n g b e e n d e t e r m i n e d , t h i s m o d u l e m o v es all
t h e e n tr i e s f r o m t h a t p o s i t i o n o n w a r d s , o n e s p a c e u p t h e f ile , t o g e t h e r
with t h e i r a s s o c i a t e d p o i n t e r s i n A % . T h e ne w e n t r y i s p l a c e d i n t o
p o s i t i o n S S o f t h e f ile , a n d t h e p o i n t e r s w h i c h s h o w t h e l e n g t h o f t h e
in d iv i d u al i te m s a r e p l a c e d i n t o t h e s a m e p o s i t i o n i n A % .
Testin g M o d u l e s 4 . 1 . 4 a n d 4 . 1 . 5
Yo u s h o u l d n o w b e a b le t o i n p u t e n t r i e s t o t h e fil e w h ic h w ill b e
pla c e d i n t o a l p h a b e t i c a l o r d e r . T o c h e c k t h i s y o u m u s t s t o p t h e
p r o g r a m a n d p r i n t o u t , i n d i r e c t m o d e , t h e c o n t e n t s o f A $ ( 0 ) , A $ ( l )
etc . Y o u s h o u l d a ls o c h e ck t h a t t h e p o i n t e r s s t o r e d i n t h e s a m e lin e o f
A % d o i n f a c t p o i n t t o t h e l a s t c h a r a c t e r o f e a c h i te m in t h e e n t r y .
M O D U L E 4 .1 . 6
18 000
18 0 10 R E M B A T A F I L E S
1 8 0 2 0
18 0 3 0 P R I N T " D E P O S I T I O N T A P E C O R R E C T L Y ,
T H E N S E N T E R 1 — "
1 8 0 4 0 I N P U T " M O T O R W I L L ST O P A U T O M A T I C f l L
L V : " Q $ : P O K E 1 9 2 , 7 : POKE 1 , 3 9
1 8 0 5 0 P R IN T " ^ C O M M A N D S A V A I L A B L E •" : P R I N
T " M i 1 > S A V E DAT A":PRIN T " 2 ) L OA D D A T A "
1 8 0 6 0 I N P U T " M 5 W H I C H D O V O U R E Q U I R E : " i Q :
O N R G O T O 1 8 0 7 0 , 1 8 1 2 0 ’ RE TUR N
8 3
Page 86
Th e Wo rk ing C o m m o d o r e 64
1 8 0 7 0 P O K E 1 , 7 : F O R 1 = 1 T O 20 00 :N E X T
1 8 0 8 0 OP E N 1 , 1 ,1 , "U N I F I L E " : P R I N T # 1, I T , R $
* X
1 8 8 9 0 F O R 1 = 0 T O I T - 1 : P R I N T # 1 , f l $ C l > : F O R
, T = 0 T O X - 1 : P R I N T # 1 , H‘ ; (I , J > : N E X T J , I
1 8 1 0 0 F O R 1 * 0 T O X - 1 : P R I N T # 1 , B $ CI > : N E X T
1 8 1 1 0 C L O S E 1 : RE T URN
8 1 2 0 OP E N 1,1 ,0,"U N I F I L E ": I N P U T # 1 ,I T , X :
1
D I M E f < X - 1 > , F I X < 4 9 9 , X - 1 >
18 1 3 0 F O R 1= 0 T O I T - 1
18 1 3 2 G E T # 1 , T f : I F T $ O C H R $ < 1 3 ) T H E N R$<I
: : ' = f l $ a > + T $ : g o t o 1 0 1 3 2
1 8 1 3 4 F O R J = 0 T O X - l • I H P U T t t l , I , J ): N E X
T J , I
1 8 1 4 0 F O R 1= 0 T O X - l : I N P U T # 1 , B $ < I > : N E X T
18 1 5 0 C L O S E 1: R E T U R N
N o w t h a t y o u c a n i n p u t s o m e d a t a t o t h e f ile , t h e f i r s t t h i n g t o d o i s t o
s t o r e s o m e d a t a o n t a p e t h e n , a s y o u e n t e r n ew m o d u l e s o r c h a n g e line s
t o c o r r e c t e r r o r s , y o u w ill n o t h a v e t o g o t h r o u g h t h e c h o r e o f
r e - e n te r in g all t h e d a t a e v e ry t i m e .
C o m m e n t a r y
Li ne 1 8 0 4 0 : H a v i n g p o s i t i o n e d y o u r t a p e , y o u m a y wis h t o f i r s t p la c e i t
i n t o R E C O R D o r P L A Y m o d e a n d r u n u p t o p re c is el y t h e p o i n t
i n d i c a t e d b y t h e t a p e c o u n t e r . W h e n t h e p r ec i s e p o i n t i s r e a c h e d ,
pr es s in g R E T U R N s w itc he s o f f t h e c a s s e t t e r e c o r d e r m o t o r b y t h e use o f
t h e s e t w o P O K E s .
L i n e 1 8 0 7 0 : T h e r e c o r d e r m o t o r i s s w i tc h e d b a c k o n b e f o r e a n y d a t a i s
r e c o r d e d a n d a h e a d e r p r i n t e d i n a d d i t i o n t o t h a t a d d e d a u t o m a t i c a l l y
b y t h e o p e r a t i n g s y s te m — t h i s h e lp s t o e n s u r e t h a t y o u d o n o t r e c o r d o n
t h e n o n - m a g n e t i c l e a d e r o f t h e c a s s e t t e i f y o u a r e s t a r t i n g f r o m t h e
b e g in n n i n g .
Li ne s 1 8 1 2 0 - 1 8 1 4 0 : D a t a w h ic h w a s p r i n t e d i n t o t h e file i s no w
re c a ll e d . N o t e t h a t b e c a u s e t h e s tr i n g s i n t h e m a i n fil e m a y b e m o r e t h a n
8 0 c h a r a c t e r s l o n g , w e c a n n o t u s e t h e I N P U T c o m m a n d . I n s t e a d , e a ch
c h a r a c t e r o f t h e s tr i n g s i n t h e m a i n fil e is p i c k e d u p s e p a r a t e l y u sin g
G E T , a n d e a c h e n t r y is c o n s i d e r e d c o m p l e t e w h e n a c a r r i a g e r e t u r n
c h a r a c t e r i s p i c k e d u p f r o m t a p e .
8 4
Page 87
C h a p t e r 4 The 64 a s S ecr et ary
Testing M o d u l e 4 . 1 . 6
The simple t e s t f o r t h i s m o d u l e i s w h e t h e r y o u c a n i n p u t d a t a t o t h e
p r o g r a m , save i t o n t a p e a n d t h e n r e l o a d i t.
M O D U L E 4 . 1 .7
1 7 0 0 0
1 7 0 1 0 R E M SE A RCH
1 7 0 2 0 R E N * * * * * * *
1 7 0 3 0 3 1 = 0 : f f = 0 : p r i n t "
I
B W S E f l R C H "
1 7 0 4 0 P R I N T "KS DO MM AN D S AV A IL A BL E: "
1 7 0 5 0 P RI N T " H ■ > f i i I N P U T I T E M F O R NORMA L
S E A R C H "
1 7 0 6 0 P R I N T " «> B P R E C E B E W I T H ' I I I ' F O R
I N I T I A L S E A R C H "
1 7 0 7 0 P RI N T " i> SPRECEBE WI T H ' S S S ' F O R
S P E C I A L S E A R C H "
1 7 0 8 0 P R I N T " l > i i 3 E N T E R 8 F O R FIRST I T E M
O N F I L E "
1 7 0 9 0 P RI N T "
A A A A A A A A AA AA AA AA 1 1
1 7 1 0 0 T I f I N P U T ' T T B I N P U T SEAR CH C OM MA
N D : " ; T 1 $
1 7 1 1 0 I F L E F T $ ( T 1 f . • 3 > O " I I I " T H E N 1 7 1 4 0
1 7 1 2 0 T 1 $ = R I G H T $ < T 1 $ , L E N < T 1 $ > - 3 > : G O S UB 1
40 0 0 : S 1 = S S : I F S 1 > I T — 1 T H E N RET URN
1 7 1 3 0 G O T O 1 7 2 4 0
1 7 1 4 0 I F L E F T $( T 1 $ j 3 ) O " S S S " T H E N 1 7 1 9 0
1 7 1 5 0 F F = 0 : T 1 $ = R I G H T $ < T 1 $ , L EN < T 1 $ > - 3 > : F O
R I = S 1 T O I T - 1 : F O R J = 1 T O LEN < A* <I > >
1 7 1 6 0 I F M I m ( . m < I > , - J , L E N < T 1 $ > ) = T 1 $ T H E N
F F = 1 : S 1 = I : J = L E N < A f <I )> :I = I T “ 1
1 7 1 7 0 N E X T J , I ' I F F F = 1 THE N T 1 $= "S S S" + T1
$ : G O T O 1 7 2 4 0
1 7 1 8 0 RE TUR N
1 7 1 9 0 I F T l $ = " " TH E N 1 7 2 4 0
1 7 2 0 0 FF = @ ' • F O R 1 = 8 1 T O I T - 1 : P P= 0 : F O R , T = 0
T O X - l
1 7 2 1 0 I F M I D $ < A $ • : I > , P P + 1 * KA (I , J > ~ PP >= T 1$
T H E N F F = 1 3 1 = 1 : J = X - 1 : I = I T - 1
1 7 2 2 0 P P = A X (I . . J ) : N E X T J : N E X T I : I F F F = 1 T
H E N 1 7 2 4 0
1 7 2 3 0 RE TUR N
1 7 2 4 0 I F S 1> I T - 1 T H E N S 1 = I T - 1
8 5
Page 88
Th e Wor kin g C o m m o d o r e 6 4
1 7 2 5 0 I F I T = 0 THE N RE TUR N
1 7 2 6 0 I F S 1 < 0 TH E N 3 1 =0
1 7 2 7 0 PR INT " n K P S E N T R V ” ; 3 1 + 1 ; 1 1 : - M " : P P = 0
1 7 2 8 0 FO R 1 = 0 T O X - l : P R I N T " S i " ; B $ C I > ; " : 3 "
; M I D $ ( m < S 1 > , P P + 1 , f l X ( S 1, 1> - P P >
1 7 2 9 0 P P = f l ? i < S 1 , I > : NEXT 1 : 3 1 = 3 1 + 1 : P R I N T "
m m m m m i m m m W n n n W '
1 7 3 0 0 PR INT " S W S E f l R C H S BCOMMA ND S R V f l I L H B
L E : "
1 7 3 1 0 PR INT " M i > a a E N T E R H F O R N E X T I T E M "
1 7 3 2 0 P R IN T " ■ > : ! • - f l f l f i - ' T O A M E N D '
1 7 3 3 0 PR INT " ■ > ! • ' • C C C - T O CO NTINUE S E R R C
H "
1 7 3 4 8 PR INT " ■ > * ' # ' FOLLOWED B V N O . T O
MOV E P O I N T E R "
1 7 3 5 0 PR INT " B M ' Z Z Z ' T O Q U I T F U N C T I O N '
1 7 3 6 0 P T = " " : I N P U T " J f B W H I C H D O V O U R E Q UI R
E : " P $
1 7 3 7 0 I F P * » "C C C" TH E N 1 7 1 1 0
1 7 3 8 0 I F P $ = " " THEN 1 7 2 4 0
1 7 3 9 0 I F P t = " f l F l f l " TH E N GO SU B 1 6 0 0 0 : G O T O
1 7 2 4 0
1 7 4 0 0 I F P$= "Z ZZ " T H E N RET URN
1 7 4 1 0 I F L E F T $ ( P $ , 1 T H EN S l * S l + V f l L <
M I D $ < P $ , 2 > > - 1 : GO T O 1 7 2 4 0
1 7 4 2 0 S 1=8 1-1 :G O T O 1 7 2 4 0
H a v i n g p l a c e d y o u r d a t a i n t o t h e 64 it w o u l d b e n ice t o t h i n k t h a t y o u
c o u l d ge t i t b a c k a g a i n . T h e p u r p o s e o f t h i s m o d u l e i s t o e n a b le y o u t o
d o j u s t t h a t , r e t r i e v i n g t h e i n f o r m a t i o n s t o r e d i n a v a r i e t y o f ways t h a t
m a k e t h e f ili n g s y s te m m o r e u s e f u l .
C o m m e n t a r y
Li ne s 17 1 10 — 1 7 1 3 0 : I f t h e i t e m t o b e s e a r c h e d f o r i s p r e c e d e d b y t h e
l e t t e r s I I I , t h e n t h e b i n a r y s e a r c h m o d u l e i s c a ll e d u p t o f i n d a n e n tr y
w h ic h b e g in s w i t h t h e l e t t e r s s p e c i f ie d o r t h e o n e n e a r e s t t o t h e r ig h t
p o s i t i o n i f t h e r e i s n o c o r r e c t e n t r y . N o t e t h a t t h i s w ill n o t n e c es s a ri ly be
t h e f i r s t i te m in t h e fil e t o s a t i s f y t h e c o n d i t i o n , s o i f y o u a r e u s in g t h e
i n it ia l s e a r c h f u n c t i o n t o f i n d t h e f i r s t e n t r y b e g i n n i n g w i t h L , f o r
i n s t a n c e , y o u w ill g e t a n e n t r y b e g i n n i n g w i t h L a n d c a n p a g e b a c k w a r d s
t o s e e i f it i s t h e f i r s t . I I I L A w o u l d g e t y o u c lo s e r , wh il e I I I L A A A A
s h o u l d d o t h e t r i c k u n l e s s y o u a r e s t o r i n g s o m e v e ry u n u s u a l n a m e s .
8 6
Page 89
C h a p te r 4 The 6 4 as S ecr et ary
L in e s 1 7 1 4 0 - 1 7 1 8 0 : P r e c e d i n g t h e i te m t o b e s e a r c h e d f o r w i t h S S S w il l
resul t in t h e w h o le file b e in g s c a n n e d f o r t h a t c o m b i n a t i o n o f
c h a r a c te r s — it d o e s n ’ t h a v e t o b e a w h o l e i t e m . S SS LO w o u l d p i c k u p
any e nt ri es c o n t a i n i n g L o n d o n , l o g a n b e r r i e s o r h e ll o . T h i s s e a r c h i s
nece ssa ri ly s lo w e r t h a n a n y o f t h e o t h e r s .
L in e 1 7 1 9 0 : I f y o u h a v e p r e s s e d R E T U R N , w i t h o u t a n i n p u t , t h e f i r s t
it em o n t h e file w il l b e d i s p l a y e d .
L in e s 1 7 2 0 0 - 1 7 2 3 0 : A n y o t h e r i n p u t w ill b e u n d e r s t o o d as a f u ll i te m t o
be s e ar c he d f o r a n d o n l y t h o s e e n t r i e s w h i c h h a v e a n i te m i n e x a c t ly t h a t
f o rm w i l l b e r e t u r n e d . N o t e , i n t h i s r o u t i n e , h o w t h e p o i n t e r a r r a y A ( ,
w hi ch g iv e s t h e p o s i t i o n o f t h e l a s t c h a r a c t e r o f e a c h i te m in a n e n t r y , i s
use d t o e x t r a c t ite m s f r o m t h e e n t r y ev en t h o u g h t h e r e i s n o visib le
m a r k e r f o r t h e i te m s i f a n e n t r y is p r i n t e d o u t i n d i r e c t m o d e .
L in es 1 7 2 7 0 - 1 7 2 9 0 : T h e e n t r y w h ic h t h e s e a r c h m o d u l e h a s d i s c o v e r e d
i s p r i n t e d o n t o t h e s c re e n .
L in es 1 7 3 0 0 - 1 7 4 2 0 : H a v i n g d i s p l a y e d a n e n t r y , t h e p r o g r a m n o w g iv e s
you t h e o p t i o n o f view ing t h e n e x t e n t r y , a m e n d i n g t h e e n t r y ,
c o n ti n u in g t h e s e a r c h s p e c i f ie d , m o v in g t o a n o t h e r e n t r y b y e n t e r i n g
N N , w he re N N i s a p o s it i v e o r n e g a ti v e n u m b e r t o m o v e a l o n g t h e file,
o r r e t u r n i n g t o t h e m a i n m e n u . I f a r e c o g n i s a b l e i n p u t i s n o t m a d e , t h e
same e n t r y i s d i s p l a y e d a g a i n .
Testin g M o d u l e 4 . 1 . 7
You s h o u l d n o w b e a b le t o d i s p l a y a n y d a t a t h a t y o u h a v e s t o r e d a n d t o
sear ch t h r o u g h it u s in g t h e s e a r c h m e t h o d s d e s c r i b e d . Y o u c a n n o t yet
a m e n d e n tr i e s .
M O D U L E 4 . 1 .8
1 6 0 0 0 R E M # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
1 6 0 1 0 R E M C H AN G E EN TR V
1 6 0 2 0 REM# # * # * # *# ### ## *# ## *# ## ## ## ## ## #
1 6 0 3 0 S l * S l - l : T l * = , , n
1 6 0 4 0 P P = 0 : F O R 1 = 0 T O X - l : P R INT " H W S E N T R
V n ; S l + l ; M
1 6 0 5 0 P R I N T " i i n ; B $ < I > ; " : 3 M ; M I D $ < f l $ < S 1 > , P P
+ 1 • f l " « ( A 1 . I ! « — F ‘ p ‘ i
1 6 0 6 0 ' P R I N T 1 1 » B i » l i » » l i | i | i » i | i » l
S a A M E N D "
1 6 0 7 0 P R I N T "M S DO MM A ND S AVA I L AB LE : "
1 6 0 8 0 P R I N T " M i > S i 3 E N T E R 5 LEA V ES I T E M U N
8 7
Page 90
Th e Wor king C o m m o d o r e 6 4
C H A N G E D "
1 6 0 9 9 PRINT " ■ > B i I N P ! J T N E W I T E M T O R E P L A
C E O N E S H O W N "
1 6 1 0 0 P R I N T " ■ X i' D DD ' DELET ES W HO LE E N T
R V "
1 6 1 1 0 P R IN T " « > B i - " Z Z 2 ' LEAVES E N T R Y U N C H
A N G E D "
1 6 1 2 0 Q $ = " " ; I N P U T " S E U H I C H D O V O U R E QU IR
E : " Q $
1 6 1 3 0 I F Q * = " Z Z Z " TH E N RE TU RN
1 6 1 4 0 I F Q $ = " " THEN Q $ * M I D $ < f l $ ( S l > , P P + l ,
A X< S1 ,I > ~ P P>
1 6 1 5 0 I F Q $ = " D D D " T H E N G O S U E 1 6 1 8 0 : R E T U R N
1 6 1 6 0 P P = A X < SI , I ) : T 1 $ = T 1 $ + Q $ • T I ' i < I > = L E N <
T 1$ > : N E X T I : G O S U B 1 6 1 8 0 = G O S U E 1 4 0 0 0
1 6 1 7 0 S 1= S S : G O S U E 1 5 0 0 0 : R E T U R N
1 6 1 8 0 F O R J * S 1 T O I T - 1 : f l f - < J ) = A $ < . J + 1 > : F O R
K - 0 T O X - 1 • • A X (J , K ) = A X < J + 1 , K > : N E X T K , J
1 6 1 9 0 I T — I T — 1 : R E T U R N
T h e p u r p o s e o f t h i s m o d u l e i s t o a ll o w y o u t o m a k e c h a n g e s t o i te m s in
e n tr i e s w h ic h h a v e a l r e a d y b e e n s t o r e d , w i t h o u t h a v in g t o m a k e t h e
w h o le e n t r y o v e r a g a i n , a s w el l as t o d e le t e i te m s o r w h o le e n tr i e s i f
d e s ir e d .
C o m m e n t a r y
L i n e 1 6 1 4 0 : T h e m o d u l e ’ s m e t h o d o f w o r k i n g i s s im i la r t o t h a t o f t h e
m a i n i n p u t m o d u l e , e x c e p t t h a t i f R E T U R N i s p r e s s e d , t h e i te m be in g
i n p u t i s d e f i n e d a s b e in g t h e c u r r e n t i te m o n d i s p l a y .
L i n e 1 6 1 8 0 : T h i s r o u t i n e m ov es a ll t h e f o ll o w i n g e n t r i e s i n t h e file d o w n
o n e p l a c e , t h u s e r a s i n g t h e c u r r e n t e n t r y .
T e s ti n g M o d u l e 4 . 1 . 8
Y o u s h o u l d n o w b e a b le t o a m e n d i te m s i n a n e n t r y a r r i v e d a t i n t h e
s e a r c h m o d u l e o r t o d e le t e t h e w h o l e e n t r y . I f t h i s m o d u l e i s w o r k i n g
c o r r e c t l y , t h e n t h e p r o g r a m i s r e a d y f o r u s e .
S u m m a r y
Y o u h a v e n o w c o m p l e t e d t h e e n t r y o f a s u b s t a n t i a l a n d co m pl e x
p r o g r a m w h i c h I h o p e y o u w ill f i n d u s e f u l i n a v a r i e t y o f a p p l i c a t i o n s .
A l o n g w i t h t h a t p r o c e s s y o u h a v e a l s o l e a r n e d a n u m b e r o f t e c h n i q u e s
8 8
Page 91
C h a p te r 4 The 64 a s S ecr et ary
w hi ch w i l l s t a n d y o u in g o o d s t e a d w h e n e v e r y o u d e c id e o n a m b i t i o u s
p r o g ra m s o f y o u r o w n t o s t o r e a n d p r o c e s s n o n - n u m e r i c d a t a .
M o re i m p o r t a n t l y , h o w e v e r , i f y o u h a v e t a k e n t h e t r o u b l e t o
u n d e r s t a n d w h a t y o u h a v e b e e n e n t e r i n g , t r a c i n g t h r o u g h t h e f u n c t i o n s
o f t h e i n d iv i d u a l lin e s , a s w el l as t h e o v e r a l l f u n c t i o n s o f t h e m o d u l e s ,
you w i l l h a v e g a in e d c o n f i d e n c e t h a t s u b s t a n t i a l a n d c o m p l e x p r o g r a m s
a re n o t alw ay s as a w e s o m e a s t h e y a r e m a d e o u t t o b e . U s i n g a m o d u l a r
a p p r o a c h , w hi c h b r e a k s d o w n t h e p r o g r a m i n t o a series o f m a n a g e a b l e
t a s k s , a p p l i c a t i o n s lik e t h i s o n e c a n b e d e v e lo p e d b y a n y o n e w h o i s
p r e p a r e d t o in v es t a l it t l e t im e ( a n d a l i t t l e h a i r ) .
Go in g F u r t h e r
1 ) I f y o u h a v e a p r i n t e r t h e n y o u w il l w a n t t o a d d s o m e
p r o v i s i o n f o r o u t p u t t i n g e n tr i e s o r g r o u p s o f e n tr i e s o n t o
p a p e r . T h e e a si e s t w a y t o d o t h i s w o u l d b e t o a d d a n o t h e r
c o m m a n d t o t h e s e c o n d p a r t o f t h e S e a rc h M o d u l e .
2 ) O n e i n t e r e s t i n g c h a ll e n g e w o u l d b e t o s ee w h e t h e r y o u
c o u l d g ive t h e p r o g r a m t h e a b i l i t y t o d e a l w i t h n u m e r i c
d a t a as w el l a s n o n - n u m e r i c . T h i s w o u l d in vo lv e s e tt in g
u p a n u m e r i c a r r a y w i t h 50 0 e le m e n t s , w i t h p r o v i s i o n t o
i n p u t v a lu e s t o it a n d p e r h a p s s o m e s e a r c h c o m m a n d s
a l o n g t h e line s o f ‘ f i n d a n y e n t r i e s w hi c h h o l d a v a lu e o f
g r e a t e r t h a n X \ T h e r e a r e q u i t e a l a r g e r a n g e o f
a p p l i c a t i o n s w h e r e t h e a b i l i t y t o s t o r e o n e o r m o r e
n u m e r i c it e m s w o u l d b e a n a d v a n t a g e .
4.2 UN IFILE II - D A T A B A S E
A f t e r e n t e r i n g U n i f il e a n d d e b u g g i n g i t , t h e l a s t t h i n g t h a t y o u m a y
w a n t t o f ac e i s a v a r i a t i o n o n t h e s a m e t h e m e . I f s o , fee l f re e t o s k ip t h is
p r o g r a m f o r t h e p r e s e n t a n d m o v e o n t o g r e e n e r p a s t u r e s . A t s o m e
stag e, h o w e v e r , y o u w il l w a n t t o c o m e b a c k t o t h i s p r o g r a m t o solve a t
least so me o f t h e p r o b l e m s t h a t U n i f i l e i s n o t d e s ig n e d t o c o p e wi th.
Unif ile i s fi n e f o r file s w h ic h h a v e a r e g u l a r s t r u c t u r e , a n d m a n y d o .
E q u a l ly , t h e r e a r e a l a r g e n u m b e r o f a p p l i c a t i o n s w h e r e y o u s im p ly d o
n o t kn o w in a d v a n c e h o w m a n y i te m s t h e r e a r e g o i n g t o b e i n a
p a r t i c u l a r e n t r y . Y o u m a y , f o r i n s t a n c e , w a n t t o c a t a l o g u e y o u r b o o k s .
You c o u ld set u p t h e o r i g i n a l U n i f i l e p r o g r a m t o r e q u e s t a u t h o r a n d
tit le , b u t w i t h p r o b a b l y m a n y m o r e t h a n o n e b o o k b y m o s t a u t h o r s ,
tag gi ng t h e a u t h o r ’ s n a m e o n t o ev ery i n d i v i d u a l t i t l e i s g o i n g t o b e a
c o n s id e r a b l e w a s t e o f sp a ce .
U n if ile II i s d e s ig n e d t o c o p e w i t h s u c h le ss s t r u c t u r e d fil es. I t i s m o r e
fl exi bl e t h a n U n i f il e i n t h a t y o u c a n g o o n a d d i n g it e m s t o a n e n t r y as
long as y o u lik e w i t h i n t h e o v e r a l l l im it o f 2 5 5 c h a r a c t e r s a n d c a n
spe ci fy a m o r e c o m p l e x f o r m o f s e a r c h w h i c h w ill seek o u t a n y e n tr i e s
8 9
Page 92
Th e Wor king C o m m o d o r e 64
w hi ch c o n t a i n u p t o 1 0 s e p a r a t e s e a r c h t a r g e t s . T h i s fle x ib ili ty h a s a
p r ic e , h o w e v e r , i n t h a t t h e p r o g r a m i s m o r e c o m p l i c a t e d t o u s e — t h e r e
a r e n o n e o f t h e e a sy p r o m p t s t o d i c t a t e w h ic h i te m t o i n p u t n e x t. In
a d d i t i o n , i f y o u w a n t t o l a b e l it e m s w i t h i n a n e n t r y w i t h a t i t l e , y o u w i l l
ha v e t o s p e ci f y w h a t t h o s e t it le s a r e a n d a t t a c h t h e m i n a co d e d
f o r m — t h e p r o g r a m h a s n o i d e a w h a t i s c o m i n g n e x t so y o u h a v e t o .
Bec au se t h e p r o g r a m i s s im i la r i n s t r u c t u r e t o U n i f il e , t h e e asi es t way
t o e n t e r it i s t o f i r s t l o a d U n i f i l e i t s e lf . A s y o u e n t e r U n i f il e II y o u w i l l
f i n d t h a t m a n y o f t h e p r o g r a m line s a r e i d e n t i c a l , o r n e a r l y s o , even i f
t h e n u m b e r i n g d i f f e r s . R e n u m b e r i n g t h o s e line s b e f o r e g o in g o n t o dea l
w it h t h e d i f f e r e n c e s w ill save y o u a n e n o r m o u s a m o u n t o f t im e .
U n i f il e I I : T a b l e o f v a r i a b l e s
B $ (4 9 )
E X
F N A ( S l )
F N B ( S l )
N N
S S $
52
5 3
TI(( 49)
T N
C o n t a i n s t h e o p t i o n a l i te m t it le s sp e c i f ie d .
T e m p o r a r y i n d i c a t o r t o s h o w t h a t a n e x t r a i te m h a s b ee n
a d d e d t o a n e n t r y d u r i n g t h e A m e n d m o d u l e .
F u n c t i o n w h i c h e x t r a c t s f r o m t h e v a lu e o f t h e la st
c h a r a c t e r i n a n e n t r y t h e n u m b e r o f i te m s w i t h in t h a t
e n t r y .
F u n c t i o n wh i c h o b t a i n s t h e p o s i t i o n o f t h e l a s t c h a r a c t e r
o f a n i te m w i t h i n a n e n t r y . T h i s f u n c t i o n m u s t b e use d
w i t h i n a l o o p w i t h a l o o p v a r i a b l e I s p e ci f y in g t h e n u m b e r
o f t h e i te m .
T e m p o r a r y v a r i a b l e r e g i s te r in g t h e n u m b e r o f items
w i t h i n a n e n t r y b e in g i n p u t .
I t e m e x t r a c t e d f r o m e n t r y o n t h e b a s is o f F N A a n d FN B.
T e m p o r a r y p o i n t e r u s e d d u r i n g se a r c h e s.
T e m p o r a r y r e c o r d o f v a l u e o f SI d u r i n g m u l t i p l e se ar c h
T e m p o r a r i l y u s e d t o s t o r e t h e p o s i t i o n o f ite m s w i t h in a n
e n t r y t h a t i s b e in g i n p u t .
T h e t y p e n u m b e r o f a n i te m i f o n e i s s p e ci f ie d .
M O D U L E 4.2 .1
1 1 0 1 0 R E M M E N U
1 1 0 2 0
1 1 0 3 0 PO KE 532 81, 7 : PR I N T
P i U S S U N I F I L E 1 1
1 1 0 4 0 P RI NT n : « ? ® : : 0 M r i f l N r i S A V A I L A B L E ' n
1 1 0 5 0 PR I N T "Kim 1 ) EN TER I N F O R M A T I O N "
1 1 0 6 0 PR INT " M 2 > S E A RC H/ DI SPL AV /C HA NG E
H
1 1 0 7 0 PRINT " M 3) H E W TV P E N A M E S "
1 1 0 8 0 P RI NT " M 4 ) D A T A F I L E S "
90
Page 93
C h a p t e r 4 The 64 a s Se cr et a ry
1 1 0 9 0 P R I N T " M 5 ) S E T U P H E W F I L E "
1 1 1 0 0 P R I NT " W 6 ) S T O P "
1 1 1 1 0 I N P U T " S S - 1 H I C H D O V O U REQUI RE = " ; Z :
P R I N T
1 1 1 2 0 I F Z > 4 O R I N = 1 TH E N 1 1 1 5 0
1 1 1 3 0 P R I NT " ^ P l ( ! M W « ! ! M P l i i » » i » » i l l t T J T I N I T
I A L I S E D V E T . " : F O R 1 = 1 T O 1000:N E X T
1 1 1 4 0 GO TO 1 1 0 0 0
1 1 1 5 0 O N Z G O SU B 1 3 0 0 0 , 17 000 ,1 90 00 ,2 00 00
. 1 2 0 0 0 , 1 1 1 6 0 : GOTO 1 1 0 0 0
1 1 1 6 0 P R I N T " I L I N G
S Y S T E M C L O S E D " : E N D
A s t a n d a r d m e n u m o d u l e .
M O D U L E 4 . 2 . 2
1 2 0 0 0 R l
1 2 0 1 0 R E M INI TI AL IS E F I L E
1 2 0 2 0
1 2 0 3 8 C L R : D I M f l $ < 4 9 9 > , B $ < 4 9 ) , T I V . < 4 9 > : I N =
1
1 2 0 4 0 D E F F N f l ( S 1 > = A S C ( R I G H T $ < A $ ( S l > , 1 ) ) +
1
1 2 0 5 0 D E F F N B < S 1 ) = R S C ( R I G H T $ < R $ ( S 1 > , F N f l <
S D - I + l ) )
1 2 0 6 0 G O T O 1 1 0 0 0
Th e m o d u le in it ia l is e s t h e a r r a y s a n d r e t u r n s i m m e d i a t e l y t o t h e m e n u .
M O D U L E 4. 2 . 3
1 3 0 0 0 r e m # * # ^ ^ * * * - * # ^ * # * # ^ * * # m x * m * * .
1 3 0 1 0 R E M E NT R Y O F N E W I T E M S
1 3 0 2 0
1 3 0 3 0 T 1 $ - " " : N N = - 1 : T N = 0 : P R I N T "
l» imi lf f » JE M I T E M S "
1 3 0 4 0 p r i n t " ' . l i H i k i i i i i k i i i i i i i P i i i i i i i " ; i
T ; " I T E M S S O F A R "
1 3 0 5 0 PR INT " W aC O MM RN D S AV AIL AB LE: "
1 3 0 6 0 PR INT " W I N T E R I T E M T O B E I N P U T "
1 3 0 7 0 P R IN T "B >3 EN T ER T O T E R MI NA TE T
H I S R E C O R D "
9 1
Page 94
Th e Wor king C o m m o d o r e 64
1 3 0 8 0 PR INT " ■ > CE NT ER ' T N N ' F O R I T E M T V P
E"
1 3 0 9 0 P RI N T " B > a i N P U T ' Z Z Z ' T O RE TU R N T O
M E N U i B T
1 3 1 0 0 I N P U T Q$:IF Q $ = " Z Z Z " T HE N R ET UR N
1 3 1 1 0 I F Q $ * " Z Z Z " THEN RE TURN
1 3 1 2 0 I F LEFT$ < Q $ . . 1 > < > " T " T HE N 1 3 1 5 0
1 3 1 3 0 T N - v ' f l L < M I D * < Q $ , 2 > ) : T N = T N + 1 0
1 3 1 4 0 P R I N T " H " ; B $ < T N - 1 1 > ; " : " ; = G O T O 1 3 1 0 O
1 3 1 5 0 I F T N O 0 TH E N Q $ = Q $ + " T , , + Mi n $ ( S T R $ (
T N ) , 2 ) : T N =0
1 3 1 6 0 I F L E H < T 1 * > + L E N ( Q $ > +N N+ 2< >25 5 T H E N
1 3 1 8 0
1 3 1 7 0 P R I N T "M E N T R V T O O L O N G . " : F O R J = 1 T
0 3 0 0 0 : N E X T , T : RET URN
1 3 1 8 0 I F 0 * = " * " T H E N GO T O 1 3 2 0 0
1 3 1 9 0 T1 $=T 1 $+ Q $ : T1 7 . ( N N + 1 > =LE N ( T 1 $ > : N N = N
N + l : G O T O 1 3 1 0 0
1 3 2 0 0 F O R 1 = 0 T O N N ' • T 1 $ = T 1 $+ CH R $ < . T I V . C I ) )
• • N E X T • • T 1 $ = T 1 $+ CH R* C N N + 1 )
1 3 2 1 0 PR INT " M i W f l I T " ; G O S U B 140 00:GO SU B 1 5
000 :G O T O 1 3 0 0 0
T h i s m o d u l e i s e q u i v a l e n t t o t h e e n t r y m o d u l e o f U n i f i l e b u t i s m o r e
c o m p l e x f o r t w o r e a s o n s :
1 ) T h e r e m u s t b e p r o v i s i o n w i t h i n t h e m o d u l e t o tell t h e
p r o g r a m w h e n a n e n t r y i s f i n i s h e d . T h i s i s d o n e by
e n t e r i n g a n a s t e r i s k w i t h o u t o t h e r i n p u t .
2 ) Sin ce t h e r e i s n o r e g u l a r s t r u c t u r e t o t h e f ile , r e g u l a r
p r o m p t s f o r t h e n a m e s o f i te m s t o b e i n p u t c a n n o t b e
p r o v i d e d . T h e r e is, h o w e v e r , p r o v i s i o n i n t h e p r o g r a m
f o r i t e m s t o b e n a m e d . S u c h n a m e s , a n d t h e n u m b e r s t o
b e g iv en t o t h e m a r e d e f i n e d b y a s u b s e q u e n t m o d u l e — in
t h i s m o d u l e t h e i t e m n a m e c a n b e a t t a c h e d t o a n it e m b y
f i r s t o f a ll e n t e r i n g t h e s y m b o l f o ll o w e d b y t h e n u m b e r
p r e v i o u s l y g i v e n t o t h e d e s i r e d t y p e n a m e .
C o m m e n t a r y
Lin es 1 3 1 0 0 - 1 3 1 4 0 : I f a n e n t r y b e g in s w i t h t h e ‘ J ’ s y m b o l t h e n t h e
c h a r a c t e r s f o ll o w i n g i t a r e t a k e n t o b e t h e n u m b e r o f a n i te m n a m e t o b e
a t t a c h e d t o t h e i te m a b o u t t o b e i n p u t . T h e i n p u t p r o m p t i s no w
r e p e a t e d u n d e r t h a t t y p e n a m e . T h e t y p e n u m b e r i s s t o r e d a t t h e e n d o f
t h e i t e m , i ts v a l u e i n c r e a s e d b y t e n s o t h a t i t w ill a lw a y s b e a t w o d i g it
n u m b e r ( t h e r e a r e 5 0 p o s s ib l e t y p e n u m b e r s / n a m e s ) .
9 2
Page 95
C h a p t e r 4 The 64 a s S ecr et ary
L in e 1 3 2 0 0 : T o t h e s t r i n g o f i te m s w h i c h h a s b e e n b u i l t u p i s n o w a d d e d
a n u m b e r o f c h a r a c t e r s w h o s e c o d e v a l u e i s e q u a l t o t h e p o s i t i o n o f t h e
last c h a r a c t e r o f e a c h i t e m . T o t h e v e ry e n d o f t h e s t r i n g i s a d d e d
a n o th e r c h a r a c t e r w h o s e c o d e v a l u e i s e q u a l t o t h e n u m b e r o f i te m s i n
the e n tr y . N o t e t h a t w h e n s a v in g t h e e n t r i e s o n t o t a p e , t h e s e c h a r a c t e r s
mu st be t r a n s l a t e d i n t o n u m b e r s sin ce t h e c h a r a c t e r s m a y f a l l o u t s i d e
the r an ge o f t h o s e w h ic h c a n b e s a v e d i n c h a r a c t e r f o r m .
Test ing M o d u l e 4 . 2 . 3
The m o d u le c a n n o t b e f u ll y t e s t e d b u t a r u n n i n g c h e c k c a n b e m a d e b y
en ter in g t e m p o r a r y R E T U R N S a t 1 4 0 0 0 a n d 1 5 0 0 0 . Y o u s h o u l d t h e n b e
able t o e n t e r i te m s a n d t e r m i n a t e t h e e n t r y w i t h a n a s t e r i s k .
M O D U L E 4 .2 . 4
1 4 0 8 0
1 4 0 1 0
R E M # # # # # # # # # # # # # # # # # # # # # # # # # # * # # #
R E M B I N A R Y S E A R C H
1 4 0 2 0
1 4 0 3 8
1 4 0 4 0
1 4 0 5 0
1 4 0 6 0
1 4 0 7 8
1 4 0 8 0
1 4 0 9 0
1 4 1 0 0
1 4 1 1 0
A s t a n d a r d b i n a r y s e a r c h m o d u l e a s i n U n i f il e .
M O D U L E 4 . 2 .5
I F I T = 0 T H E N S S = 0 : R E T U R N
P 0 = I N T C L O G < : IT ) / L O G C 2 > > • S S = 2 T P 0 - 1
F O R I * P 0 T O 0 S T E P - 1
IF A t C S S X T It T H E N S S = S S + 2 T I
I F A t C S S X T l t T H E N S S = S S - 2 T I
IF S S C 0 T H E N S S = 0
IF S S > I T - 1 T H E N S S = I T - 1
N E X T I :IF A t C S S X T I t T H E N S S = S S + 1
R E T U R N
1 5 0 0 0
1 5 0 1 0
R E M
I N S E R T
1 5 0 2 0
1 5 0 3 8 I F I T = 0 T H E N G O T O 1 5 0 5 0
1 5 0 4 0 F O R I * I T T O S S + 1 S T E P - l ' - A t C I )
I - 1 > : N E X T
1 5 0 5 0 A t C S S )= T 11 :1 T = I T + 1 : R E T U R N
A s t r a i g h t f o r w a r d i n s e r t i o n m o d u l e .
9 3
Page 96
Th e Wor king C o m m o d o r e 6 4
T e s ti n g M o d u l e 4 . 2 . 4 a n d 4 . 2 . 5
Y o u s h o u l d n o w b e a b le t o e n t e r i te m s a n d h a v e t h e m sa v e d i n t h e m a i n
file a r r a y (A $) . T h i s c a n o n l y b e c h e c k e d i n d i r e c t m o d e .
M O D U L E 4 . 2 . 6
1 9 0 0 0 R E m m m m m w m m m m m m m m m m
1 9 0 1 0 R E M I T E M TY P E NA ME S
1 9 0 3 0 F O R 1=0 T O 4 9 S T E P 1 0
1 9 0 4 0 P R I N T l l 3 M » * i » » » * » » » * » » * I S n i T E M N A M E S
I I
1 9 0 5 0 P R I N T " i i " ; : F 0 R J= I T O 1 + 1 0 : P R I N T J
+ 1 . ; " > " ; B $ < J > : N E X T J
1 9 0 6 0 P R I N T " M B C O M M A N D S A V A I L A B L E : "
1 9 0 7 0 P R I N T " Z 2 Z ' = Q U I T "
1 9 0 8 0 P R I N T " I I I I T E M / D E L E T E "
19 0 9 0 P R I N T " «>SI 'NN N'= NEXT P A G E "
1 9 1 0 0 I N P U T " 8 W H I C H D O V O U R E Q U I R E : " ; Q $ :
I F Q $ = " Z Z Z " T H E N R E T U R N
1 9 1 1 0 I F Q $ = " N N N " T H E N N E X T I : R E T U R N
1 9 1 2 0 I F Q $ < > " I I I " T H E N G O T O 1 9 0 0 0
1 9 1 3 0 I N P U T " ^ P O S I T I O N N U M B E R : " ; q
1 9 1 4 0 P R I N T " i t l A M E O F T V P E OR S R E T U R N H T
0 D E L E T E : "
1 9 1 5 0 Q $ = " " : IN P U T Q $ : B $ ( Q - 1 > = Q $ : G O T O 1904
0
T h i s i s a ne w m o d u l e e n a b l i n g t h e u s e r t o d e f i n e i te m t y p e s . T h e m o d u l e
sim pl y d is p l a y s t h e c o n t e n t s o f t h e a r r a y B $ i n g r o u p s o f 1 1 a n d g iv e s
t h e u s e r t h e o p t i o n t o i n p u t a t y p e n a m e t o a p a r t i c u l a r p o s i t i o n i n t h e
a r r a y . O n c e e n t e r e d , a t y p e n a m e c a n b e a t t a c h e d t o a n i te m o r i n p u t as
d e s c r i b e d u n d e r M o d u l e 4. T y p e n a m e s c a n b e r e d e f i n e d sim p ly b y
e n t e r i n g a ne w n a m e i n t h e p o s i t i o n o c c u p i e d b y a n o l d o n e o r d e le te d
b y p r e s s i n g R E T U R N w h e n a s k e d f o r a t y p e n a m e .
T e s ti n g M o d u l e 4 . 2 . 6
E n t e r s o m e t y p e n a m e s t h e n g o b a c k t o t h e m a i n i n p u t m o d u l e a n d
e n t e r f o ll o w e d b y t h e n u m b e r o f a t y p e n a m e y o u h a v e d e f i n e d . T h e
p r o m p t s h o u l d b e r e p e a t e d u n d e r t h e d e s ir e d t y p e n a m e .
94
Page 97
C h a p t e r 4 The 64 a s S ecr et a ry
M O D U L E 4 . 2 . 7
2 0 0 0 0 R E M # * * * « * « « * * * * * * i ( E * * * 3 | ( * * * * * * * 3 K * « *
2 0 0 1 0 R E M B A T A F I L E S
2 0 0 3 0 P R I N T " M S P O S I T I O N T A P E C O R R E C T L Y ,
T H E N S E N T E R S — "
2 0 0 4 0 I N P U T “ MOTOR WI L L S T O P AUTOM AT I C F I L
L V : " ; Q * : P OK E 1 9 2 , 7 = POKE 1 , 3 9
2 0 0 5 0 P R IN T " ^ C O M M A N D S A V A I L A B L E : " : P R I N
T u m 1 ) S A V E DATA ": PR INT " 2> LORD D A T A "
2 0 0 6 0 I N P U T " M E WH I CH D O Y O U R E Q U I R E Q =
O N Q G O T O 20 0 7 0 , 2 0 1 50 : RE TUR N
2 0 0 7 0 P O K E 1, 7:F O R i = i J O 2 0 0 0 : N E X T
2 0 0 8 0 O P E N 1,1 ,1,"U N I F I L E " : P R I N T # 1 , I T
2 0 0 9 0 F O R S 1 = 0 T O I T — 1 : P R I N T #1 ,F N A ( S 1 >
2 0 1 0 0 F O R 1 = 1 T O F N A 0 B 1 > - 1 : PRI NT# 1 , F N B - : : S
1 > : N E X T I
2 0 1 1 0 P R I N T # 1 , L E F T * < A $ < S 1 > , L E N R $ < S 1 > > - F
N R ( S I > ' ) : N E X T SI
2 0 1 2 0 F O R 1 = 0 T O 4 9 : IF B * < I ) = " M T H E N B $ <
I ) = " "
2 0 1 3 0 P R I N T # 1 , B $ <1 > = N E X T
2 0 1 4 0 C L O S E 1 : R E T U R N
2 8 1 5 0 O P E N 1 , 1 , 0 , " U N I F I L E " : I N P U T # 1 , IT
2 0 1 6 0 F O R S 1 = 0 T O I T - 1 :I N P U T # 1 , N N
2 0 1 7 0 T T f = " " : F O R I = 1 T O N N - 1 : I N P U T # 1 , T T : T T
$ = T T $ + C H R f i T T > : N E X T I : T T t = T T $ + C H R $ (N N - 1 >
2 0 1 8 0 G E T # 1 , T $ : IF T $ O C H R $ < 1 3 > T H E N A $ < S
1 > = A $ <S 1 > + T $ : G O T O 2 0 1 8 0
2 0 1 8 5 A * <S 1 ) = A $ <S 1 > + T T $ : N E X T S 1
2 0 1 9 0 F O R 1 = 9 T O 4 9 : 1 N P U T # 1 , B f < I ) : N E X T
2 0 2 0 0 C L O S E 1 : R E T U R N
A s t a n d a r d d a t a - f i l e m o d u l e .
M O D U L E 4 .2 .8
2 1 0 0 0
2 1 0 1 0 F U N C T I O N A L S U B R O U T I N E S
2 1 0 2 0
2 1 0 3 0 S S $ = M I I i $ < A $ < S 2 > , P P + 1 , F N B C S 2 ) - P P ) : R
E T U R N
2 1 0 4 0 F F = 0 : T 1 $ = R I G H T $ <T 1 $ , L E N < T 1$) -3) :F O
R S 2 * SI T O I T - 1 : F O R J = 1 T O LEN< A$ <I) >
9 5
Page 98
Th e Wor king C o m m o d o r e 6 4
2 1 05 0 I F M I n $ ( m < S 2 > , J , L E N C T 1 $ > > = T 1 $ T H E
N F F = 1 -SI= S2: J = L E N ( f l $ ( S 2 > ) : S 2 = I T - 1
2 1 060 NE X T J , S 2 : RE TUR N
21 070 F F = 0 • F O R S 2 = S 1 T O I T - 1 : P P = 0 : F O R 1 =
1 T O F N f l < : S 2 > - 1 ' ■ GOSUB 21 0 30
2 10 80 I F S S $ - T 1 $ THEN F F = 1 : S 1 = S 2 • I * F N F K S
2 > - 1 : 8 2 = I T - 1 : G O T O 21 1 20
2 1 0 9 0 I F L E N < S S * X 4 THEN 21 1 1 0
2 11 00 I F M I D # 1 'S S$, L E N < S S $ > - 2 , 1 ) = " T " T H E N
S S $ = L E F T $ ( S S $ , L E N C S 3 * ) - 3 ) ' ■ G OT O 2 1 0 8 0
2 1 110 P P = FN B <S 2>
21 120 NE X T I, S 2: RE T UR N
T h e m o d u l e c o n s is t s o f t h r e e r o u t i n e s w h i c h a r e m o r e e c o n o m i c a l ly
p l a c e d h e r e sinc e t h e y a r e c a ll e d b y d i f f e r e n t p a r t s o f t h e p r o g r a m .
C o m m e n t a r y
L i n e 21 0 30 : T h i s l in e c a n b e c a ll e d f r o m w i t h i n t w o l o o p s : a n S 2 l o o
s pe ci f yi ng t h e l in e i n t h e m a i n fil e a n d a n I l o o p sp e c i f y in g t h e ite m
n u m b e r w i t h i n t h e p a r t i c u l a r e n t r y . I t t h e n e x t r a c t s , i n t h e f o r m o f S S $ ,
it e m I o f e n t r y S 2 .
Lin es 2 1 0 4 0 - 2 1 0 6 0 : E q u i v a l e n t t o t h e s pe ci a l s e a r c h r o u t i n e in U n i f il e .
Li ne s 2 1 0 7 0 - 2 1 1 2 0 : A s t r a i g h t f o r w a r d i te m s e a r c h . T h e I l o o p u ses
F N A t o d i s c o v e r h o w m a n y i te m s t h e r e a r e i n t h e e n t r y ( FN A (S 2 ) = t h e
n u m b e r o f i te m s t h e r e a r e i n e n t r y S 2 p l u s 1 f o r t h e i n d i c a t o r a t t h e en d)
a n d t h e n ca lls u p 21030 t o e x t r a c t t h e i n d i v i d u a l i te m s . I te m s w i t h t yp e
i n d i c a t o r a r e c o m p a r e d w i t h a n d w i t h o u t t h e t y p e s u f f i x .
T e s ti n g M o d u l e 4 . 2 . 8
T h e m o d u l e c a n n o t b e c h e c k e d u n t i l t h e f o ll o w i n g m o d u l e h a s b ee n
e n t e r e d .
M O D U L E 4 . 2 . 9
1 7 0 1 0 RE M SE ARC H
1 7 0 2 0 r e m $* *** **
1 7 0 3 0 S 1 = 0 : F F = 8 : P R I N T 1 1
S E A R C H "
1 7 0 4 0 PR INT " J P E S C 0 M M A N D S AVAILABLE • "
1 7 0 5 0 PR INT " W ■ > i i I N P U T I T E M F O R N OR MA L
S E A R C H "
1 7 0 6 0 PR INT " l > f i F ' R E C E I i E W IT H ' I I I ' F O R
I N I T I A L S E A R C H "
9 6
Page 99
C h a p t e r 4 The 64 as S ecr et ary
1 7 0 7 0 P R I N T " i > i F R E C E D E W I T H ' S S S ' F O R
S P E C I A L S E A R C H "
1 7 0 8 0 P R I N T " i M I S E N T E R B F O R F I R S T I T E M
O N F I L E "
1 7 0 9 0 P R I N T " O i i ' M M M ' F O R M U L T I P L E S E A R
C H "
1 7 1 0 0 P R I N T
1 7 1 1 0 T l # = " " I N P U T " E S S E A R C H C O M M A N D = " ; T 1
I - IF L E F T # T 1 $ , 1 ; ■ O " V ' T H E N 1 7 1 3 0
1 7 1 2 0 L E T T N = V A L (M I D # <T 1 # , 2 ) > + 1 0 - G O T O 17
1 1 0
1 7 1 3 0 IF T N O 0 T H E N L E T T 1 # = T 1 # + " f " + H I H #
< 5 T R # ( T N > ,2 > ■ T N ~ 0
1 7 1 4 0 IF L E F T # C T 1 # . • 3 > O " I I I " T H E N 1 7 1 7 0
1 7 1 5 0 T 1# = R I G H T # < T 1 # ,L E N ( T 1 * > - 3 > : G O S U B 1
4 0 0 0 : S 1 = S S :IF S 1 > I T - 1 T H E N R E T U R N
1 7 1 6 0 T l # = " I I I " + T 1 # : G O T O 1 7 3 1 8
1 7 1 7 0 IF L E F T # <T 1 # . ■ 3 > O " S S S " T H E N 1 7 2 0 0
1 7 1 8 0 G O S U B 2 1 8 4 0 : IF F F = 1 T H E N T 1 # = " S S S "
+ T 1 # : G O T 0 1 7 3 1 8
1 7 1 9 0 R E T U R N
1 7 2 0 0 IF L E F T # < T 1 # . • 3 > < > " M M M " T H E N 1 7 2 7 0
1 7 2 1 0 G E T Z # : I N P U T " S L U M B E R O F I T E M S T O
c ; E f i R f ‘ H F f i R : 1 1 i H N
1 7 2 2 0 F O R K = 0 T O N N - 1 = P R I N T " S E A R C H I T E M
" ; K + 1 ; : I N P U T M # < K > : N E X T K
1 7 2 3 0 F O R K = 0 T O N N - 1 : T 1 # - M # < K ) : S 3 = S 1 : G O
S U B 2 1 0 7 0 :IF F F = 8 T H E N R E T U R N
1 7 2 4 0 IF S 3 0 S 1 T H E N 1 7 2 3 0
1 7 2 5 0 N E X T K
1 7 2 6 0 L E T T 1 # = " M M M " : G O T O 1 7 3 1 8
1 7 2 7 0 IF T l # = " " T H E N 1 7 3 1 0
1 7 2 8 8 G O S U B 2 1 0 7 8
1 7 2 9 8 IF F F = 1 T H E N 1 7 3 1 0
1 7 3 0 8 R E T U R N
1 7 3 1 8 IF S 1 > I T ~ 1 T H E N S 1 = I T - 1
1 7 3 2 0 IF I T = 0 T H E N R E T U R N
1 7 3 3 0 IF S K 0 T H E N S 1 = 0
1 7 3 4 0 P R I N T " n W C N T R V " ; S 1 + 1 " : - W " : P P = 0 :
5 2 * 3 1 : F O R 1=1 T O F N A C S l > - l
1 7 3 4 5 I F I / 1 2 = I N T < 1 / 1 2 ) T H E N I N P U T " i M O R
E " T T #
1 7 3 5 8 G O S U B 2 1 0 3 0 - IF L E N < S S # X 4 T H E N 1 7 3
8 0
9 7
Page 100
Th e Wo rk ing C o m m o d o r e 6 4
1 7 3 6 0 I F M I D $ ( R I G H T $ < S S $ , 3 > , 1 , 1 ) O " t " T H
E H 1 7 3 8 0
1 7 3 7 0 P R I N T B $ C V F l L < R I G H T $ < S S $ . ■ 2 ) ) - 1 1 > ; " :
" ; : SS $=LEFT* ( S S * , L E N ( S S $ ) - 3 >
1 7 3 8 0 P R I N T S S $
1 7 3 9 0 P F ' = F N B < S 1 > = N E X T I - S I = S 1 + 1
1 7 4 0 0 PR INT " M S W S E f l R C H S SC OMMANDS A V AI LA
B L E = 1 1
1 7 4 1 0 PR INT " f f l i> l S E N T E R S F O R N E X T I T E M "
1 7 4 2 0 P R IN T " ■ > : £ - ■ A A A ' T O A M E N D - '
1 7 4 3 0 PR INT " i > f T C C C x T O CON TIN UE S E A R C
H 1 1
1 7 4 4 0 P R IN T " FOLL OW ED B V N O . T O
MO VE P O I N T E R "
1 7 4 5 0 P R I N T " « > : I ' Z Z Z - ' TO Q U I T F U N C T I O N "
1 7 4 6 0 P $ = " " : I N P U T " H W H I C H D O Y O U R E Q U I R
E : " ; P $
1 7 4 7 0 I F T 1 $= "M M M " A N D S K I T T HE N 1 7 2 3 0
1 7 4 8 0 I F P $ * " C C C " A N D S K I T T H E N 1 7 1 4 0
1 7 4 9 0 I F P $ ~ u " T H E N 1 7 3 1 0
1 7 5 0 0 I F P $ = " A R A ' ‘ T H E N GO SU B 1 6 0 0 0 : G O T O
1 7 3 1 0
1 7 5 1 0 I F P $ = " Z Z Z " TH E N RE T URN
1 7 5 2 0 I F L E F T * < P $ , 1 T H E N S 1= S 1 + V A L (
M I D $ ( P $ , 2 > > - 1 • • GO T O 1 7 3 1 0
1 7 5 3 0 S l - S l - l : G O T O 1 7 3 1 0
S i m i la r t o t h e S e a r c h m o d u l e in U n i f i l e , b u t m a k i n g p r o v i s i o n f o r t h e
m u l t i p l e s e a r c h a n d f o r t y p e n a m e s .
C o m m e n t a r y
Lin es 1 7 1 1 0 - 1 7 1 3 0 : N o t e t h e wa y i n w h i c h t h i s r o u t i n e d e te c ts w h e t h e r
a n it e m w i t h a t y p e n u m b e r a t t a c h e d i s b e in g s e a r c h e d f o r a n d t h e n
r e q u e s t s i n p u t u n d e r t h a t t y p e h e a d i n g , t a g g i n g t h e t y p e n u m b e r o n t o
t h e e n d o f t h e i te m .
Lin es 1 7 1 4 0 - 1 7 1 6 0 : A n i n i t i a l s e a r c h a s i n U n i f il e .
Lin es 1 7 1 7 0 - 1 7 1 9 0 : S p e c ia l s e a r c h m a k i n g u se o f t h e r o u t i n e in t h e
p r e v i o u s m o d u l e .
Lin es 1 7 2 0 0 - 1 7 2 6 0 : T h e n ew m u l t i p l e s e a r c h r o u t i n e . I t re q u e s t s t h e
u s e r t o s pe ci f y t h e n u m b e r o f i te m s t o b e s e a r c h e d f o r , t h e n t o i n p u t t h e
i n d i v i d u a l i t e m ( ty p e n u m b e r s a r e n o t d e a l t w i t h ) . A s e a r c h r o u t i n e i s
c a ll e d u p a t 2 1 0 7 0 - 2 1 1 2 0 . B e f o r e e a c h s e a r c h i te m i s sp e c i f ie d , a r e c o r d
i s t a k e n i n t h e f o r m o f t h e v a r i a b l e S 3 o f t h e v a l u e o f t h e s e a r c h p o i n t e r
S I . W h e n t h e r o u t i n e a t 21 070 r e t u r n s t o t h i s r o u t i n e t h e v a lu e o f S 3 i s
9 8