229

Compute's First Book of Commodore 128

Embed Size (px)

Citation preview

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 1/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 2/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 3/228

C O M P U T E DF I R S T B O O K

O T H C O M M O D O R E1 2

C O M P U T E ! ' P u b l f o a t i o n s j n c dP a r t o A B C o n s u m e r M a g a z i n e s , I n c .^ O n o t h A B P u b l i s h i n g C o m p a n i e sG r e e n s b o r o , N o r t h C a r o l i n a

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 4/228

T h f o l l o w i n g a r t i c l e s w e r e o r i g i n a l l y p u b l i s h e d i C O M P U T E ! m a g a z i n e , c o p y r i g h t 1 9 8 5 , C O P U T E ! P u b l i c a t i o n s , I n c . :" S o u n d a n d M u s i c / ' o r i g i n a l l y t i t l e d " S o u n d a n M u s i c o t h C o m m o d o r e 1 2 8 " ( A u g u s t a n S e p t e m b e r ) ; " J u m p S e a r c h " ( S e p t e m b e r ) ; " W o r d S e a r c h " ( S e p t e m b e r ) ; " S a v e - w i t h - R e p l a c e : D b u g g e d a L a s t " ( O c t o b e r a n N o v e m b e r ) ; " D y n a m i c K e y b o a r d , " o r i g i n a l l y t i t l e d " D y n a m i c K e yb o a r d f o C o m m o d o r e M a c h i n e s " ( O c t o b e r , N o v e m b e r , a n D e c e m b e r ) ; " A d v a n c e d C o m m o d o r e1 2 8 V i d e o " ( D e c e m b e r ) .

T h f o l l o w i n g a r t i c l e s w e r e o r i g i n a l l y p u b l i s h e d i C O M P U T E R S G a z e t t e m a g a z i n e , c o p y r i g h t 1 9 8 5 ,C O M P U T E ! P u b l i c a t i o n s , I n c . :" L i t t e r P a t r o l " ( S e p t e m b e r ) ; " E x p l o r i n g B A S I C 7 . 0 , " o r i g i n a l l y t i t l e d " E x p l o r i n g 1 2 B A S I C : A E n t P E E K s a n P O K E s " ( N o v e m b e r ) .T h f o l l o w i n g a r t i c l e w a o r i g i n a l l y p u b l i s h e d i C O M P U T E ! m a g a z i n e , c o p y r i g h t 1 9 8 6 , C O P U T E ! P u b l i c a t i o n s , I n c . :" S w i t c h b o x " ( M a r c h ) .T h f o l l o w i n g a r t i c l e s w e r e o r i g i n a l l y p u b l i s h e d i C O M P U T E ' S G a z e t t e m a g a z i n e , c o p y r i g h t 1 9 8 6 ,C O M P U T E ! P u b l i c a t i o n s , I n c . :" P r o g r a m m i n g M u s i c a n d S o u n d , " o r i g i n a l l y t i t l e d " P r o g r a m m n g M u s i c a n d S o u n d o t h 1 2 8 "( J a n u a r y ) ; " R E M H i g h l i g h t e r " ( J a n u a r y ) ; " E x p l o r i n g t h e 1 2 8 ' s M o n i t o r " ( F e b r u a r y ) ; " I m p o r t a n t 1 2 8M e m o r y L o c a t i o n s , " o r i g i n a l l y t i t l e d ' C o m m o d o r e 1 2 M e m o r y M a I m p o r t a n t L o c a t i o n s " ( F e b r ua r y ) ; " L e x i t r o n " ( F e b r u a r y ) ; " D i s k C o m m a n d s , " o r i g i n a l l y t i t l e d " D i s k C o m m a n d s o t h 1 2 8 "( F e b r u a r y ) ; " A u t o b o o t , " o r i g i n a l l y t i t l e d " 1 2 8 A u t o b o o t " ( M a r c h ) ; " C a t a l o g e r " ( M a r c h ) ; " S t o r a g ea n D i s p l a y , " o r i g i n a l l y t i t l e d " S t o r a g e a n D i s p l a y : U s i n g P e r i p h e r a l s w i t h t h 1 2 8 " ( M a r c h ) ;" A l l A b o u t C P / M o t h 1 2 8 " ( A p r i l ) ; " W i n d o w s o t h 1 2 8 " ( A p r i l ) ; " W o r d C o u n t e r " ( M a y ) ;" B l i c k , " o r i g i n a l l y t i t l e d " P o w e r B A S I C : B l i c k " ( M a y ) ; " C o d e r - D e c o d e r " ( M a y ) .

C o p y r i g h t 1 9 8 6 , C O M P U T E ! P u b l i c a t i o n s , I n c . A l r i g h t s r e s e r v e d .

R e p r o d u c t i o n o t r a n s l a t i o n o a n p a r t o f t h i s w o r k b e y o n d t h a t p e r m i t t e d b S e c t i o n s 1 0 a n 1 0 o t h U n i t e d S t a t e s C o p y r i g h t A c w i t h o u t t h p e r m i s s i o n o t h e c o p y r i g h t o w n e r i u n l a w f u l .P r i n t e d i t h U n i t e d S t a t e s o A m e r i c a

1 9 8 7 6 5 4 3 2I S B N 0 - 8 7 4 5 5 - 0 5 9 - 9T h a u t h o r s a n p u b l i s h e r h a v e m a d e e v e r y e f f o r t i t h e p r e p a r a t i o n o t h i s b o o k t i n s u r e t h a c c u r a c y o f t h e p r o g r a m s a n i n f o r m a t i o n . H o w e v e r , t h i n f o r m a t i o n a n p r o g r a m s i t h i s b o o k a r s o l d w i t h o u t w a r r a n t y , e i t h e r e x p r e s s o r i m p l i e d . N e i t h e r t h a u t h o r s n o C O M P U T E ! P u b l i c at i o n s , I n c . , w i l l b l i a b l e f o a n d a m a g e s c a u s e d o a l l e g e d t b c a u s e d d i r e c t l y , i n d i r e c t l y , i n c id e n t a l l y , o r c o n s e q u e n t i a l l y b t h p r o g r a m s o i n f o r m a t i o n i t h i s b o o k .T h o p i n i o n s e x p r e s s e d i t h i s b o o k a r e s o l e l y t h o s e o t h a u t h o r s a n a r n o n e c e s s a r i l y t h o s eo C O M P U T E ! P u b l i c a t i o n s , I n c .

C O M P U T E ! P u b l i c a t i o n s , I n c . , P o s t O f f i c e B o 5 4 0 6 , G r e e n s b o r o , N 2 7 4 0 3 , ( 9 1 9 )2 7 5 - 9 8 0 9 , i p a r t o A B C o n s u m e r M a g a z i n e s , I n c . , o n o t h A B P u b l i s h i n g C o m - I p a n i e s , a n i n o a s s o c i a t e d w i t h a n m a n u f a c t u r e r o p e r s o n a l c o m p u t e r s . C o m m od o r e 6 4 C o m m o d o r e 1 2 8 , a n V I C - 2 0 a r t r a d e m a r k s o C o m m o d o r e E l e c t r o n i c sL i m i t e d . C P / M i r e g i s t e r e d t r a d e m a r k o D i g i t a l R e s e a r c h , I n c .

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 5/228

C o n t e n t sF o r e w o r d

C h a p t e r 1 P r o g r a m m i n gE x p l o r i n g B A S I C 7 .

T o d d H e i m a r c kS a v e - w i t h - R e p l a c e : D e b u g g e d a L a s t

P A S l a y m a k e r 1 D y n a m i c K e y b o a r d

J i B u t t e r f i e l d 2 J u m p S e a r c h

J e r r y S t u r d i v a n t 3 C o d e r - D e c o d e r

W M S h o c k l e y 4 E x p l o r i n g t h 1 2 8 ' s M o n i t o r

R i c h a r d M a n s f i e l d 4 I m p o r t a n t 1 2 M e m o r y L o c a t i o n sJ i B u t t e r f i e l d 4

A l A b o u t C P / M o t h 1 2 H o w a r d G o l k 5

C h a p t e r 2 S o u n d a n G r a p h i c s 6 W i n d o w s o t h 1 2

J i V a u g h a n 6 A d v a n c e d C o m m o d o r e 1 2 V i d e o

J i B u t t e r f i e l d 6 P r o g r a m m i n g M u s i c a n S o u n d

P h i l i p I N e l s o n 7 S o u n d a n M u s i c

P h i l i p I N e l s o n 8 C h a p t e r 3 G a m e s 9 O r b i t r o n

M a r k T u t t l e a n K e v i n M y k y t y n 1 0 L i t t e r P a t r o l

C h a r l e s B r a n n o n 1 1 W o r d S e a r c h

M i c h a e l B W i l l i a m s1 2 V e r s i o n b P a t r i c k P a r r i s h 1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 6/228

S w i t c h b o xT o d d H e i t n a r c k 1 2

L e x i t r o nR o W i l s o n 1 3

C h a p t e r 4 . U t i l i t i e s 1 4 M e t a B A S I C : P r o g r a m m e r ' s P r o b l e m S o l v e r

K e v i n M y k y t y n 1 4 R E H i g h l i g h t e r

D o A E l l i s 1 5 B l i c kP l u m m e r H e n s l e y 1 5

W o r d C o u n t e rT h o m a s K T u c k e r 1 5

C h a p t e r 5 P e r i p h e r a l s 1 6 S t o r a g e a n D i s p l a y 1 6 D i s k C o m m a n d s

T o d d H e i t n a r c k 1 7 C a t a l o g e r

K e v i n M y k y t y n 1 8 A u t o b o o t

S t e v e S t i g l i c h 1 8

A p p e n d i c e s 1 9 A H o t T y p e I P r o g r a m s 1 9 B T h A u t o m a t i c P r o o f r e a d e r

P h i l i p I N e l s o n 1 9 C M a c h i n e L a n g u a g e E d i t o r , M L

O t t i s R C o w p e r 2 0

I n d e x 2 1 D i s k C o u p o n 2 1

L

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 7/228

F o r e w o r dC O M P U T E l ' s F i r s t B o o k o f t h e C o m m o d o r e 1 2 i p a c k e d f u l l o i n f o r m a t i o n a n p r o g r a m s r e a d y t t y p e i a n r u i 1 2 m o d e .C O M P U T E ! P u b l i c a t i o n s i t h e l e a d i n g p u b l i s h e r o t y p e -i p r o g r a m s a n a r t i c l e s f o C o m m o d o r e u s e r s . I C O P U T E l ' s F i r s t B o o k o t h C o m m o d o r e 1 2 w e ' v e c o l l e c t e d o u b e s t p r o g r a m s a n a r t i c l e s f o t h 1 2 f r o m C O M P U T E ! m a g az i n e a n C O M P U T E l ' s G a z e t t e a n a d d e d s o m e n e v e r b e f o r ep u b l i s h e d p r o g r a m s .G a m e p l a y e r s w i l l e n j o y t h c h a l l e n g e a n t h r i l l o p l a yi n g " O r b i t r o n , " a f a s t - p a c e d g a m e f o t w p l a y e r s t h a t r q u i r e s c a r e f u l p l a n n i n g , a n " S w i t c h b o x , " s t r a t e g y g a m e f o o n o t w p l a y e r s .

P r o g r a m m e r s w i l l e n j o y t h a d d e d c o n v e n i e n c e o " M e t a -B A S I C , " u t i l i t y t h a t a d d s 1 n e c o m m a n d s t B A S I C , s u c ha F i n d , M e r g e , D l i s t , a n R e s a v e . T h e y ' l l a l s o e n j o y a r t i c l e sa n p r o g r a m s t h a t i l l u s t r a t a t e h o t a d d w i n d o w s , s o u n d ,a n m u s i c t p r o g r a m s .

A l s o i n c l u d e d a r e a s y - t o - u s e p r o g r a m s t c a t a l o g y o u rd i s k l i b r a r y , m a k e a n y p r o g r a m o d i s k a u t o m a t i c a l l y l o a da n r u w h e n y o t u r n o y o u r 1 2 8 , a n m u c h m o r e .

T h a r t i c l e s a r c l e a r l y a n c o n c i s e l y w r i t t e n . A n w e ' v ei n c l u d e d " T h e A u t o m a t i c P r o o f r e a d e r " a n " M L X , t h M c h i n e L a n g u a g e E d i t o r " t h e l p y o a v o i d e r r o r s w h e n t y p i n gi t h p r o g r a m s . A w i t h a l C O M P U T E ! p u b l i c a t i o n s , e a c hp r o g r a m h a b e e n c a r e f u l l y a n t h o r o u g h l y t e s t e d .

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 8/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 9/228

C h a p t e r

P r o g r a m m i n g

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 10/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 11/228

E x p l o r i n g B A S I C 7 . T o d d H e i m a r c k

B A S I C 7 . i t h m o s t p o w e r f u l C o m m o d o r e B A S I C t o d a t e . I y o l e a r n e d p r o g r a m m i n g o n V I o 6 4 y o u ' l l a p p r e c i a t e t h m a n yn e c o m m a n d s w h i c h g r e a t l y s i m p l i f y p r o g r a m m i n g . I l i n e o t w o , y o c a a c c o m p l i s h w h a t m i g h t h a v e t a k e n f i v e o t e o V I o 6 4

T h C o m m o d o r e 1 2 8 h a s t w t h i n g s g o i n g f o i t T h f i r s t i s1 2 2 , 3 6 5 a v a i l a b l e b y t e s o m e m o r y , t w i c e a m u c h m e m o r y a

P l u s / 4 , t h r e e t i m e s a m u c h a 6 4 a n 3 t i m e s a m u c ha a u n e x p a n d e d V I C . I y o w i s h , y o c a a d s t i l l m o r em e m o r y — t h e 1 2 i e x p a n d a b l e t 5 1 2 K .

T h s e c o n d a n e v e n m o r e i m p r e s s i v e f e a t u r e i t h n e B A S I C 7 . 0 , w h i c h v i r t u a l l y e l i m i n a t e s t h e n e e d f o P E E K s a n P O K E s . B A S I C p r o g r a m m e r s c a f o r g e t a b o u t l o o k i n g u t h m e m o r y l o c a t i o n s f o h i g h - r e s o l u t i o n g r a p h i c s o t r y i n g t r m e m b e r h o t d e f i n e s p r i t e . ( M a c h i n e l a n g u a g e p r o g r a mm e r s , o c o u r s e , w i l l s t i l l b c o n c e r n e d w i t h h o P E E K s a n P O K E s a f f e c t t h c o m p u t e r . )

T h 1 2 8 ' s B A S I C i n c l u d e s a l c o m m a n d s f r o m B A S I C 2 . ( t h e l a n g u a g e i t h V I a n 6 4 ) , a l c o m m a n d s e x c e p t o n ( R L U M ) f r o m B A S I C 3 . ( f o u n d i t h P l u s / 4 a n 1 6 ) , t h d i s k c o m m a n d s f r o m t h C o m m o d o r e P E T , p l u s m a n y b r a n dn e o n e s .

I y o u ' r e e x p e r i e n c e d a p r o g r a m m i n g t h V I o 6 4 y o u ' l l e n j o y e x p l o r i n g t h e n e B A S I C . L e t ' s l o o k a w h a t y o c a d w i t h t h 1 2 8 .

S p r i t e s a n M u s i c W i t h o u t P O K E sT h P l u s / 4 h a m o r e m e m o r y a n b e t t e r B A S I C t h a n t h 6 4 B u C o m m o d o r e e l i m i n a t e d t w v e r y p o p u l a r f e a t u r e s o t h 6 4 s p r i t e s a n t h S I c h i p . S p r i t e s , o b j e c t s w h i c h c a b m o v e d i n d e p e n d e n t l y a r o u n d t h s c r e e n , a r o f t e n u s e d a c h a r a c t e r s i g a m e s . T h S o u n d I n t e r f a c e D e v i c e ( S I D c h i p ) ,b e s t d e s c r i b e d a s m i n i s y n t h e s i z e r , c a p r o d u c e s o u n d s a n m u s i c t h a t w o u l d b i m p o s s i b l e o c o m p u t e r s w i t h s i m p l et o n e g e n e r a t o r s .

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 12/228

C h a p t e r -

C r e a t i n g s p r i t e s o t h 6 4 c a n b d i f f i c u l t , e v e n i y o — k n o w w h a t y o u ' r e d o i n g . F i r s t , y o h a v e t c o n v e r t t h s h a p et D A T A s t a t e m e n t s , e i t h e r o g r a p h p a p e r o w i t h s p r i t e I e d i t o r . N e x t , e a c h s p r i t e n e e d s s e v e r a l P O K E s t s e a n ' — p o s i t i o n s , c o l o r s , e x p a n s i o n , p r i o r i t i e s , a n s o n

T h 1 2 m a k e s s p r i t e s e a s y . s p r i t e e d i t o r p r o g r a m i b u i l t i n — j u s t e n t e r S P R D E F t t u r n i o n D r a w t h s p r i t e o ' — t h s c r e e n , a n t h s h a p e c a b i m m e d i a t e l y s a v e d t m e o r y . Y o t h e n u s e t h S P R I T E c o m m a n d t t u r n i o n g i v e i c o l o r , a n s e p r i o r i t y , e x p a n s i o n , a n m u l t i c o l o r m o d e .M O V S P R m o v e s i t s p e c i f i c p o s i t i o n o t h s c r e e n . Y o c a a l s o i n c l u d e s p e e d a n d i r e c t i o n — t h e s p r i t e w i l l m o v ea u t o m a t i c a l l y , u n t i l y o t e l l i t o s t o p .

A n o t h e r o p t i o n i t d r a w s h a p e o t h h i - r e s s c r e e n ,s a v e i i n t o a v a r i a b l e w i t h S S H A P E ( S a v e S H A P E ) , a n p u t h a t s h a p e i n t o s p r i t e w i t h S A V S P R . T h s h a p e c a b s t o r e d t d i s k t h r o u g h B S A V E o b p u t t i n g t h e S S H A P E dv a r i a b l e i n t o a s e q u e n t i a l f i l e .

W h i l e t h s p r i t e i m o v i n g a r o u n d t h s c r e e n , y o c a c h e c k f o r c o l l i s i o n s w i t h C O L L I S I O N . T h i s c o m m a n d w o r k sl i k e a c o n d i t i o n a l G O S U B . W h e n s p r i t e h i t s a o b j e c t o t h s c r e e n , t h p r o g r a m a u t o m a t i c a l l y g o e s t s u b r o u t i n e . W i t h i nt h e s u b r o u t i n e , B U M P t e l l s y o u w h i c h s p r i t e s a r i n v o l v e d .T h e r e a r e a l s o c o m m a n d s f o r e a d i n g s p r i t e c o l o r s a n p o s it i o n s . I t ' s a l d o n e w i t h o u t s i n g l e P O K E .

M u s i c i j u s t a e a s y t p r o g r a m . T h n e s t a t e m e n t s g i v ey o m u c h e a s i e r a c c e s s t t h c a p a b i l i t i e s o f t h e S I c h i p . P L A Y" D E F " , f o e x a m p l e , p l a y s t h n o t e s D E a n F T h e r e a r t h r e e v o i c e s , s i o c t a v e s , a n t e e n v e l o p e s ( i n c l u d i n g p i a n o ,a c c o r d i o n , c a l l i o p e , d r u m , f l u t e , g u i t a r , h a r p s i c h o r d , o r g a n ,t r u m p e t , a n x y l o p h o n e ) . T h n o t e s o t h m e l o d y c a n r a n g ef r o m s i x t e e n t h s t w h o l e n o t e s . Y o c a d e f i n e y o u r o w i s t r u m e n t s w i t h E N V E L O P E a n F I L T E R . T E M P O s p e e d s u o s l o w s d o w n t h m e l o d y b e i n g p l a y e d . T h e r e ' s a l s o S O U N D — c o m m a n d f o e x p l o s i o n s , b l i p s , a n o t h e r s o u n d e f f e c t s .

M o r e C o n t r o l o v e r P r o g r a m m i n gN u m e r o u s c o m m a n d s t h e l p t h p r o g r a m m e r a r i n c l u d e d . , - — .A U T O e n a b l e s a u t o m a t i c l i n e n u m b e r i n g , a n R E N U M B E R r e j n u m b e r s l i n e s . D E L E T E r e m o v e s r a n g e o l i n e s f r o m t h p r o g r a m . K E a l l o w s y o t p u c o m m o n l y u s e d s t r i n g s i n t o , — - ,

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 13/228

P r o g r a m m i n g

f u n c t i o n k e d e f i n i t i o n s . H E L P i v e r y u s e f u l w h e n y o u ' r e d b u g g i n g p r o g r a m ; i l i s t s t h l i n e w h e r e t h e r r o r o c c u r r e da n i n d i c a t e s w h e r e t h p r o b l e m i ( t h e r e ' s a l s o a H E L P k e y ,w h i c h d o e s t h s a m e t h i n g ) . T R O N t u r n s o t h t r a c e f u n ct i o n , s y o c a f o l l o w p r o g r a m l i n e b l i n e . T R A P i l i k eG O T O ; w h e n i t ' s e n a b l e d , a e r r o r d o e s n o h a l t t h p r g r a m — i t c a u s e s t h p r o g r a m t j u m p t a e r r o r - h a n d l i n gr o u t i n e y o u ' v e w r i t t e n .

N e r e s e r v e d v a r i a b l e s i n c l u d e E ( t h e e r r o r n u m b e r i s o m e t h i n g g o e s w r o n g i p r o g r a m ) , E ( t h e l i n e n u m b e rw h e r e a e r r o r o c c u r r e d ) , a n E R R $ ( t h e n a m e o t h e r r o r ) .R E S U M E m a k e s t h p r o g r a m c o n t i n u e a f t e r a e r r o r h a s t o p p e d i t A n i t h l i g h t o t h d i s k d r i v e s t a r t s b l i n k i n gb e c a u s e o a d i s k e r r o r , y o n l o n g e r h a v e t o p e n t h e r r o rc h a n n e l a n i n p u t t h e r r o r i n f o r m a t i o n . J u s t t y p e P R I N TD S , D S $ t f i n d o u w h a t w e n t w r o n g .

O t h e r d i s k c o m m a n d s , m o s t o w h i c h a r s e l f - e x p l a n a t o r y ,i n c l u d e A P P E N D , B A C K U P , B L O A D , B O O T , B S A V E , C A T AL O G , C O L L E C T , C O N C A T , C O P Y , D C L E A R , D C L O S E , D R E C T O R Y , D L O A D , D O P E N , D S A V E , D V E R I F Y , H E A D E R ,R E C O R D , R E N A M E , a n S C R A T C H .

Y o c a n e x p e r i m e n t w i t h m a c h i n e l a n g u a g e b u s i n g t h b u i l t - i n M m o n i t o r , e n t e r e d v i M O N I T O R . I t ' s s i m i l a r t M i c r o m o n o S u p e r m o n . O n c e y o u ' v e w r i t t e n a M p r o g r a m ,s t a r t i u w i t h t h n e v e r s i o n o t h S Y c o m m a n d , w h i c ha l l o w s p a s s i n g o v a l u e s t t h A X Y a n r e g i s t e r s . O n c ey o e x i t t B A S I C , y o c a l o o k a t h l a s t v a l u e s i t h e s e r e gi s t e r s w i t h R R E G ( R e a d R E G i s t e r ) . D E a n H E a s s i s t i m a k i n g c o n v e r s i o n s b e t w e e n d e c i m a l a n h e x a d e c i m a l . C o m o d o r e h a a d d e d X O ( e x c l u s i v e O R t c o m p l e m e n t A N a n d O R . T h e r e a r e a l s o w a y s o h a n d l i n g d a t a t h a t m a b i t h e x t e r n a l m e m o r y e x p a n s i o n m o d u l e : F E T C H , S T A S H ,S W A P .

E n h a n c e m e n t s a n d I m p r o v e m e n t sI a d d i t i o n t t h n o r m a l P R I N T s t a t e m e n t , t h e r e ' s P R I N TU S I N G , w h i c h a l l o w s f o r m a t t i n g o s t r i n g s a n d n u m b e r sb e f o r e t h e y ' r e p r i n t e d . T h i s i e s p e c i a l l y u s e f u l w h e n y o u ' r ed e a l i n g w i t h f i n a n c i a l i n f o r m a t i o n a n d w a n t d o l l a r s a n c e n t sp r i n t e d . P U D E F a l l o w s p r i o r d e f i n i t i o n o w h i c h c h a r a c t e r sw i l l a p p e a r i P R I N T U S I N G s t a t e m e n t s . W h e n y o p r i n t o u

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 14/228

C h a p t e r

c h e c k , f o e x a m p l e , y o m i g h t w a n t l e a d i n g a s t e r i s k s i n s t e a do f s p a c e s .

T h C H A R s t a t e m e n t i v a r i a t i o n o P R I N T , b u i w o r k s o b o t h t e x t a n h i - r e s s c r e e n s . S i n c e y o c a i n c l u d et h a n p o s i t i o n s , i w o r k s l i k e P R I N T A T w h i c h i f o u n do o t h e r c o m p u t e r s .

I F - T H E N n o i n c l u d e s E L S E a n B E G I N - B E N D . B E G I Na n B E N D m a r k o f s e c t i o n o t h p r o g r a m t h a t w i l l b e x c u t e d o n l y i t h p r e v i o u s I c o n d i t i o n i t r u e . F O R - N E X Tl o o p s c a b r e p l a c e d w i t h D O - L O O P ( s e e t h e x a m p l eb e l o w ) .

M I D $ h a n e f e a t u r e : I c a a s s i g n s t r i n g t o t h m i d l o a n o t h e r s t r i n g . S A " H E L L O " : M I D $ ( A $ , 2 ) = " I P P "w o u l d m a k e A i n t o " H I P P O " . I N S T R f i n d s t h p o s i t i o n o fo n s t r i n g i n s i d e a n o t h e r . I c o u l d t e l l y o u , f o e x a m p l e , t h a t" D E F " i i n s i d e " A B C D E F G H I " , s t a r t i n g a t h f o u r t hp o s i t i o n .

T h R E S T O R E c o m m a n d c a b f o l l o w e d b l i n e n u b e t s e t h R E A D - D A T A p o i n t e r t s p e c i f i c l i n e .

P R I N T F R E ( O ) n o d i s p l a y s h o m u c h m e m o r y i a v a i la b l e i t h f i r s t b a n k o m e m o r y , w h e r e p r o g r a m s a r s t o r e d ,w h i l e F R E ( l ) d i s p l a y s h o m u c h m e m o r y i l e f t i t h b a n kc o n t a i n i n g v a r i a b l e s . A n s i n c e t h v a r i a b l e s a r e k e p t s e p a r a t ef r o m t h p r o g r a m , a d d i n g l i n e t p r o g r a m d o e s n o d e s t r o yv a r i a b l e d e f i n i t i o n s . Y o c a s t o p p r o g r a m , m a k e s o m ec h a n g e s , a n t h e n G O T O l i n e t o r e s u m e t h p r o g r a m w i t hp r e v i o u s l y d e f i n e d v a r i a b l e s .

T h S l o w e s t C o m m o d o r e — A n d t h F a s t e s tH o f a s t i t h 1 2 8 ? A s i m p l e b e n c h m a r k , w r a F O R -N E X T l o o p t h a t c o u n t e d f r o m t 1 0 , 0 0 0 a n p r i n t e d t h en u m b e r o j i f f i e s ( j i f f y i 1 / 6 0 s e c o n d ) . T h 1 2 w a t h f a s t -e s a n t h s l o w e s t C o m m o d o r e c o m p u t e r ( i w a t e s t e d t w i c e ,o n c e w i t h t h F A S T c o m m a n d , o n c e w i t h S L O W ) :S p e e d i J i f f i e s C o m p u t e r

9 2 1 2 ( S L O W )8 9 + 4 / 1 6 , - - ,6 5 6 6 1 V I 4 4 1 2 8 ( F A S T )

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 15/228

P r o g r a m m i n g

T h e r e ' s g o o d r e a s o n w h t h 1 2 c a b b o t h t h f a s t e s ta n t h s l o w e s t . A l l C o m m o d o r e B A S I C s a r i n t e r p r e t e d ,w h i c h m e a n s t h c o m p u t e r f i g u r e s o u ( i n t e r p r e t s ) w h a t t h p r o g r a m s h o u l d b d o i n g a t h p r o g r a m i r u n n i n g . S o m eo t h e r l a n g u a g e s — e v e n o t h e r B A S I C s — a r e c o m p i l e d . C o m p i l e dp r o g r a m s a r w r i t t e n w i t h a e d i t o r p r o g r a m ( s i m i l a r t w o r d p r o c e s s o r ) a n t h e n c o m p i l e d i n t o o b j e c t c o d e t h a t ' sc l o s e r t m a c h i n e l a n g u a g e t h a n a i n t e r p r e t e d p r o g r a m .

W h e n a i n t e r p r e t e d B A S I C g e t s t c o m m a n d l i k eP R I N T , i h a t l o o k t h r o u g h t a b l e l i s t i n g t h l o c a t i o n o t h r o u t i n e t h a t m a k e s P R I N T w o r k . A d d i n g m o r e c o m m a n d st t h e P l u s / 4 , a n e v e n m o r e t t h 1 2 8 , m a k e s t h l i s tl o n g e r . S t h c o m p u t e r h a t s p e n d m o r e t i m e s e a r c h i n g f o c o m m a n d d e f i n i t i o n s . I n a d d i t i o n , T h a s e v e r a l m e a n i n g s i B A S I C 7 . 0 . Y o c a l o o p F O D = T 1 0 0 0 0 , o D R A Wf r o m o n e p o i n t T a n o t h e r , o r c o p y f i l e s f r o m o n e d i s k d r i v eT a n o t h e r .

T h 1 2 8 , w i t h t h b i g g e s t a n b e s t C o m m o d o r e B A S I C , i a l s o t h s l o w e s t o t h b u n c h , a y o c a s e f r o m t h t i m i n g sa b o v e . T a d j u s t f o t h i s , C o m m o d o r e h a a d d e d t w n e c o m m a n d s : F A S T a n S L O W .

T h c l o c k t h a t d r i v e s t h e m a i n p r o c e s s i n g c h i p r u n s a m e g a h e r t z ( M H z ) , o 1 , 0 0 0 , 0 0 0 c y c l e s p e s e c o n d . T h F A S Tc o m m a n d d o u b l e s t h s p e e d o t h c l o c k t M H z . I t ' s e s p ec i a l l y g o o d i p r o g r a m s t h a t r e q u i r e a l o o c a l c u l a t i o n s .T h e r e ' s a t r a d e o f f , t h o u g h . T h 4 0 - c o l u m n s c r e e n g o e s b l a n kw h i l e F A S T i i e f f e c t . B u i y o w a n t s p e e d , t h s c r e e n d i p l a y p r o b a b l y w o n ' t m a t t e r . I y o o w 6 a n t a p e d r i v e ,y o u ' r e p r o b a b l y u s e d t s e e i n g t h e s c r e e n b l a n k w h i l e p r g r a m s a r l o a d e d .

T h V I C - 2 0 h a b e e n t h f a s t e s t C o m m o d o r e c o m p u t e rf o t h l a s t f e y e a r s . N o t h e r e ' s f a s t e r o n e .

H i - R e s G r a p h i c sT h s o u n d , p r o g r a m m i n g , d i s k a c c e s s , a n o t h e r c o m m a n d sa r g r e a t i m p r o v e m e n t s . B u t h n e h i - r e s g r a p h i c s c o m a n d s a r t h m o s t f u t p l a y w i t h . R a t h e r t h a n t r u d g i n gt h r o u g h l o n g l i s t o w h a t t h c o m m a n d s d o l e t ' s l o o k a t h r e e s h o r t g r a p h i c s p r o g r a m s .

P r o g r a m 1 - c r e a t e s b a c h a r t . I r e a d s v a l u e s f r o mD A T A s t a t e m e n t s , f i g u r e s o u s c a l e , a n d r a w s t h c h a r t .

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 16/228

C h a p t e r

T h n u m b e r o v a l u e s i l i m i t e d o n l y b t h e h o r i z o n t a l r e s o l ut i o n o t h e s c r e e n ( 3 2 0 p i x e l s ) . T h v a l u e s c a b a n p o s i t i v en u m b e r ; t h g r a p h w i l l b s c a l e d a c c o r d i n g l y .

F i r s t , l i n e s 2 0 - 3 0 s e u l o o p t R E A D t h r o u g h t h D A T A s t a t e m e n t s . N o r m a l l y , y o u ' d e x p e c t a O U O D A T Ae r r o r a s o o n a t h e r e a r n m o r e i t e m s t r e a d . B u l i n e 1 p r e v e n t s t h p r o g r a m f r o m s t o p p i n g . T R A P 4 0 t e l l s t h c o p u t e r t g t o l i n e 4 i a e r r o r o c c u r s . F o r c i n g a e r r o r t h a p p e n i n o p a r t i c u l a r l y g o o d p r o g r a m m i n g p r a c t i c e , b u i i l l u s t r a t e s o n u s o T R A P .

B t h t i m e w g e t o l i n e 4 0 t h v a r i a b l e M A h o l d s t h h i g h e s t v a l u e , a n T i t h t o t a l n u m b e r o b a r s t b p l o t t e d .W c h a n g e t h T R A P t a r g e t t l i n e 1 0 0 , w h i c h s w i t c h e s t t h t e x t s c r e e n , G R A P H I C 0 , a n p r i n t s t h l i n e n u m b e r w i t h t h e r r o r , E L a n t h t y p e o e r r o r , E R R $ ( E R ) . I y o t y p e t h p r g r a m c o r r e c t l y , t h i s e r r o r r o u t i n e s h o u l d n ' t b n e c e s s a r y .

T h b u s i n e s s w i t h t h l o g a r i t h m s i p a r t o t h s c a l i n g .D i v i d i n g t h L O o f n u m b e r b t h L O o 1 a n t a k i n gt h I N T e g e r v a l u e g i v e s y o t h n u m b e r o d i g i t s t t h l e f t o t h d e c i m a l p l a c e . A n o t h e r w a t d t h i s i S L E N ( S T R $ ( I N T ( M A X * 1 . 2 ) ) ) - 1 .

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 17/228

P r o g r a m m i n g

W e ' l l b u s i n g t h e s c r e e n a i i w e r e g r a p h p a p e r 5 0 s q u a r e s a c r o s s b 1 0 2 4 s q u a r e s d e e p . T h s c r e e n i r e a l l y o n l y3 2 b 2 0 0 , a n i t ' s n o p o s s i b l e t g e b e t t e r r e s o l u t i o n t h a nt h a t , b u t h S C A L E c o m m a n d i l i n e 5 a l l o w s y o t t r e a tt h e s c r e e n a i i h a m o r e p o i n t s .

s i n g l e c o m m a n d , G R A P H I C 1 i l i n e 5 0 t u r n s o h i - r e sm o d e . O t h e r o p t i o n s w o u l d b t s p l i t t h s c r e e n b e t w e e n h r e a n t e x t o t g i n t o m u l t i c o l o r h i - r e s ( w i t h o w i t h o u tt e x t s p l i t ) . S C N C L R c l e a r s w h i c h e v e r s c r e e n ( h i - r e s o t e x t ) i c u r r e n t l y b e i n g d i s p l a y e d . C O L O R 0 , t h b a c k g r o u n d , i s e t t ow h i t e . T h f o r e g r o u n d ( C O L O R 1 ) a n b o r d e r ( C O L O R 4 ) a r p a i n t e d p u r p l e . T h 1 2 u s e s c o l o r n u m b e r s 1 - 1 6 r a t h e r t h a n0 - 1 5 , s y o c a l o o k a t h k e y b o a r d a n f i n d t h c o l o r n u b e f r o m t h c o l o r s p r i n t e d o t h n u m e r i c k e y s . B l u e w o u l db c o l o r 7 f o e x a m p l e .

W c a n o s t a r t t h e g r a p h . I l i n e 6 0 t e l i n e s a r d r a w n a c r o s s t h s c r e e n a b a c k g r o u n d f o t h b a r s . T h f i r s tn u m b e r a f t e r D R A W i t h c o l o r ( c o l o r w a s e t p u r p l e i t h p r e v i o u s l i n e ) . I t ' s f o l l o w e d b t h a n c o o r d i n a t e s o t h b e g i n n i n g a n t h e n o t h l i n e . R E S T O R E r e s e t s t h D A T A s t a t e m e n t s s o t h e v a l u e s c a b r e a d a g a i n .

A l l o f t h e b a r s a r d r a w n i t h n e x t l o o p . T h v a l u e s a r t a k e n f r o m D A T A s t a t e m e n t s a n t h e c o o r d i n a t e s ( X a n Y C a r e c a l c u l a t e d f o t h t o l e f t c o r n e r o t h b a r . B O t h e np l o t s r e c t a n g l e , b a s e d o t h a n p o s i t i o n s o t w o p p os i t e c o r n e r s . T m a k e t h e b a r s f a t t e r , i n c r e a s e t h . 7 t v a l u e o 1 D e c r e a s e i t m a k e t h i n n e r b a r s . T h s e c o n d t t h l a s t n u m b e r a f t e r B O m e a n s t h r e c t a n g l e s h o u l d n o t b r t a t e d . T h l a s t n u m b e r a f t e r B O f i l l s i t h r e c t a n g l e a f t e ri t ' s d r a w n .

F i n a l l y , w w a i t f o a k e y p r e s s . G E T K E Y w o r k s l i k e G E T ,e x c e p t i s t o p s t h p r o g r a m u n t i l k e i p r e s s e d . G R A P H I C 0s e n d s u b a c k t t h t e x t s c r e e n , a n t h p r o g r a m e n d s .

E v e r y t h i n g h a s b e e n d o n e i t e l i n e s , w i t h o u t s i n g l eP E E K , P O K E , A N D , o O R I y o w r o t e s u c h p r o g r a m o t h 6 4 i w o u l d b a t l e a s t t w i c e a l o n g . A n y o u ' d n e e dr e f e r e n c e g u i d e t f i n d a l t h P O K E s a n f o r m u l a s f o t u r n i n gp i x e l s o n a n d o f f .

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 18/228

C h a p t e r

T h P i C h a r tT h n e x t e x a m p l e p r o g r a m , P r o g r a m 1 - 2 , r e a d s l i s t o v a l u e sf r o m D A T A s t a t e m e n t s a n c r e a t e s p i c h a r t .

L

T h f i r s t l i n e m a l o o k s t r a n g e t V I a n 6 o w n e r s ,w i t h t h D O - U N T I L - L O O P s t r u c t u r e . T h t y p i c a l F O R - N E X Tl o o p s t a r t s c o u n t i n g a o n n u m b e r a n e n d s w h e n i r e a c h e s

s p e c i f i e d v a l u e . B u t h i s l o o p s t a r t s a D a n r e p e a t s o v e ra n o v e r w h e n i r e a c h e s t h L O O P s t a t e m e n t . T h r e e t h i n g sc a t e r m i n a t e t h e l o o p . I c a l o o p W H I L E a e x p r e s s i o n i t r u e ( w h e n i t ' s f a l s e , t h l o o p e n d s ) . O D O - L O O P c a c o t i n u e w h i l e s o m e e x p r e s s i o n i f a l s e , U N T I L i t ' s t r u e . O r , t h eE X I T c o m m a n d c a g e y o o u o t h l o o p .

I t h i s c a s e , t h l o o p r e a d s a v a r i a b l e A f r o m D A T As t a t e m e n t s . I c o n t i n u e s U N T I L i f i n d s t h w o r d E N D . T L i t h t o t a l n u m b e r o i t e m s o t h l i s t — t h e n u m b e r s w h i c h w i l lb t r a n s l a t e d t s l i c e s o t h p i g r a p h . S U i t h t o t a l o t h v a l u e s . W d o n ' t n e e d m a x i m u m i t h i s p r o g r a m .

L i n e 2 e n a b l e s t h e m u l t i c o l o r h i - r e s s c r e e n a n c l e a r s i ( a d d i n g , a f t e r G R A P H I C 3 i a n o t h e r w a o d o i n gS C N C L R ) . T h d i f f e r e n t c o l o r s a r e s e t , a n S C A L E i t u r n e do ( t t h d e f a u l t v a l u e o 1 0 2 4 b 1 0 2 4 ) . W I D T H l m a k e s t h g r a p h i c s r o u t i n e s u s t h t h i n n e s t l i n e s a v a i l a b l e .

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 19/228

P r o g r a m m i n g

N e x t , t h e C I R C L E c o m m a n d d r a w s c i r c l e i c o l o r 2 c e n t e r e d o t h s c r e e n . C I R C L E c o u l d h a v e b e e n c a l l e d P O L YG O N , b e c a u s e i c a a l s o c r e a t e t r i a n g l e s , s q u a r e s , p e n t a g o n s ,h e x a g o n s , a n o t h e r r e g u l a r s h a p e s . T h l a b e l " P i e C h a r t " i t h e n p r i n t e d i u p p e r c a s e / l o w e r c a s e a b o v e t h c i r c l e . T h C H A R c o m m a n d , a n o t e d a b o v e , p r i n t s a s p e c i f i e d l o c a t i o no a n t e x t o h i - r e s s c r e e n . I t h i s c a s e , w e ' r e p r i n t i n g i c o l o r 2 s t a r t i n g a t h e f o u r t e e n t h c o l u m n a n d f i r s t r o w .

T h r e s t o f t h e p r o g r a m i m a t h , t c o n v e r t t h n u m b e r sf r o m t h D A T A s t a t e m e n t s f i r s t i n t o p e r c e n t a g e s o t h t o t a la n t h e n i n t o a n g l e s ( w h i c h w i l l a d u t 3 6 d e g r e e s ) . N o t et h u n d e r l i n e d a t h e n o l i n e 5 0 T h a t m e a n s y o s h o u l dt y p e S H I F T e d f t h p c h a r a c t e r ( n ) .

W d o n ' t n e e d t g i n t o t h d e t a i l s o t r i g o n o m e t r i c f u n ct i o n s l i k e s i n e a n c o s i n e . T h e y ' r e n e c e s s a r y t c a l c u l a t e t h a n g l e s f o t h s i d e s o f t h e w e d g e s . A f t e r t h e w e d g e i o t h s c r e e n , w a l s o h a v e t f i n d p o i n t i t h m i d d l e o t h a n g l ea n u s P A I N T t f i l l i w i t h c o l o r ( l i n e 9 0 ) .

T h U . S . o F l a gT h f i n a l p r o g r a m , P r o g r a m 1 - 3 , b e s t i l l u s t r a t e s t h p o w e r o t h n e g r a p h i c s c o m m a n d s . I t ' s j u s t n i n e l i n e s l o n g , p l u st h r e e f o D A T A s t a t e m e n t s . T h r e s u l t i a n A m e r i c a n f l a g s p e r i m p o s e d o m a o t h U n i t e d S t a t e s .

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 20/228

C h a p t e r

L i n e 1 j u m p s r i g h t i n t o t h m u l t i c o l o r h i - r e s s c r e e n . C o l - ' o r 0 - a r s e t t o b l u e , r e d , w h i t e , a n l i g h t g r a y . L i n e 2 d r a w s t h 1 s t r i p e s , u s i n g t h B O c o m m a n d , a l t e r n a t i n g b e j ~ t w e e n r e a n w h i t e . T h e x p r e s s i o n ( J > 9 6 ) w i l l e q u a l i ' — f a l s e a n i t r u e . I t ' s n e e d e d t m a k e t h s t r i p e s s h o r t e r a t h t o o t h f l a g , s t h e r e w i l l b r o o m f o t h s t a r s .

s i n g l e w h i t e s t a r i c r e a t e d i l i n e 3 0 T h e r e s h o u l d b < — 5 s t a r s o t h f l a g , b u i t ' s n e c e s s a r y t d r a w o n l y o n t b g i w i t h . T h S S H A P E ( S a v e S H A P E ) i l i n e 4 c o p i e s t h es t a r ( t e n p i x e l s w i d e a n s i d e e p ) i n t o t h v a r i a b l e S A $ . O n c ei t ' s s a v e d , w c a n u s e S A l i k e r u b b e r s t a m p a n q u i c k l ym a k e a l 5 s t a r s a p p e a r .

L i n e 5 c a l c u l a t e s a n p o s i t i o n s f o e a c h o f t h e 5 s t a r s a n G S H A P E s t h e m i n t o p l a c e . T h f l a g i d o n e .

T h c o o r d i n a t e s o t h r o u g h l y d r a w n U . S . m a s h a p e h a v eb e e n p u i n t o D A T A s t a t e m e n t s t b r e a d i l i n e 6 0 D R A Wp u t s t h e d g e s o t h m a o t h s c r e e n , o t o o f t h e f l a g . F n a l l y , l i n e 8 f i l l s t h a r e a o u t s i d e t h e m a w i t h l i g h t g r a y .

T h Q u e s t i o n o C o m p a t i b i l i t yV I a n 6 o w n e r s m a w o n d e r a b o u t h a r d w a r e a n s o f t w a r ec o m p a t i b i l i t y b e t w e e n t h e i r s y s t e m s a n t h 1 2 8 . A f a a w c a t e l l , t a p e d r i v e s , d i s k d r i v e s , m o n i t o r s , m o d e m s , j o y s t i c k s ,a n o t h e r p e r i p h e r a l s w i l l w o r k w i t h t h 1 2 i n e i t h e r 6 m o d e o 1 2 m o d e . I n a d d i t i o n , t h 6 m o d e i c o m p l e t e l yc o m p a t i b l e w i t h a l 6 s o f t w a r e ( o n d i s k , t a p e , o c a r t r i d g e ) w h a v e t e s t e d . T h C P / M o p t i o n , h o w e v e r , r e q u i r e s t h n e w e r ,f a s t e r 1 5 7 1 ( s i n g l e d o u b l e - s i d e d d r i v e ) o 1 5 7 2 ( d u a l d o u b l e -s i d e d d r i v e ) . A n t h t a p e d r i v e s a n j o y s t i c k s f o r t h P l u s / 4a n 1 w i l l n o w o r k o t h 1 2 8 b e c a u s e t h c o n n e c t o r s a r e o fd i f f e r e n t s i z e s .

T h e r e a r t w v i d e o o u t p u t s a v a i l a b l e i 1 2 a n C P / Mm o d e : 4 0 - c o l u m n c o m p o s i t e v i d e o a n 8 0 - c o l u m n R G ( t h e6 m o d e h a n 8 0 - c o l u m n o p t i o n ) . Y o c a h a v e t w o s c r e e n sc o n t a i n i n g c o m p l e t e l y d i f f e r e n t t e x t . E a r l y r e p o r t s o t h 1 2 n o t e d t h a t t h 8 0 - c o l u m n o p t i o n i a v a i l a b l e o n l y w i t h a R G ( R e d , G r e e n , B l u e ) m o n i t o r . T h a t ' s t r u e i y o u w a n t 8 c o l u m n s a n c o l o r ; w e ' v e h o o k e d u t h 1 2 t a I B R G m o n i t o r u s i n g s t a n d a r d c a b l e . B u p i o t h I B c a b l e i n o u s e d , a n C o m m o d o r e h a s p u t 8 0 - c o l u m n m o n o c h r o m eo u t p u t o t h a t p i n . W e ' v e w i r e d u c a b l e t h a t a l l o w s 8 c o u m n s ( b l a c k - a n d - w h i t e o n l y ) o 1 7 0 1 o 1 7 0 2 m o n i t o r .1

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 21/228

P r o g r a m m i n g

( C a r d c o r e c e n t l y a n n o u n c e d s u c h c a b l e , a s u g g e s t e d p r i c eo $ 9 . 9 5 . ) Y o c a h a v e 8 c o l u m n s , b u n c o l o r , o y o u rC o m m o d o r e m o n i t o r w i t h o n l y s l i g h t s a c r i f i c e o r e s o l u t i o n .

B A S I C 7 . K e y w o r d sA l C o m m o d o r e B A S I C s c o n t a i n t h c o m m a n d s o v e r s i o n 2 . 0 ,f o u n d o t h V I a n 6 4 V e r s i o n 3 . 5 , f r o m t h P l u s / 4 a n 1 6 i n c l u d e d m a n y u s e f u l n e g r a p h i c s c o m m a n d s a w e l l a s o m e n e c o m m a n d s a n f u n c t i o n s f o p r o g r a m c o n t r o l . T h n e B A S I C 7 . h a a l o f t h e p r e v i o u s c o m m a n d s ( e x c e p tR L U M , u s e d t r e a d c o l o r ' s l u m i n a n c e i B A S I C 3 . 5 ) , a n m u c h m o r e , g i v i n g 1 2 p r o g r a m m e r s t h m o s t p o w e r f u lB A S I C y e t a v a i l a b l e o C o m m o d o r e c o m p u t e r .T a b l e 1 - 1 . B A S I C 7 . K e y w o r d sA B A N A P P E N DA S A T A U T OB A C K U PB A N KB E G I N - B E N DB L O A DB O O TB O B S A V EB U M PC A T A L O GC H A RC H R $C I R C L EC L O S EC L C M C O L L E C TC O L L I S I O NC O L O RC O N C A TC O N TC O P YC O D A T AD C L E A RD C L O S ED E

D E F F ND E L E T ED I D I R E C T O R YD L O A DD O - L O O P - W H I L E - U N T I L - E X I TD O P E ND R A WD S A V ED S D V E R I F YE L S EE N E N V E L O P EE R R $E X F A S TF E T C HF I L T E RF F O R - N E X TF R G E G E T #G E T K E YG 6 G O S U BG O T O / G O T G R A P H I CG S H A P EH E A D E RH E L P

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 22/228

C h a p t e r

H E X $I F - G O S U BI F - G O T OI F - T H E NI F - T H E N - E L S EI N P U TI N P U T #I N S T RI N J O K E L E F T $L E L E L I S TL O A DL O C A T EL O L O O PM I D $M O N I T O RM O V S P RN E O N - G O S U BO N - G O T OO P E NP A I N TP E E KP E P L A YP O I N T E RP O K EP O P O P R I N TP R I N T #P R I N T U S I N GP R I N T # U S I N GP U D E FR C L RR D O TR E A DR E C O R DR E R E N A M ER E N U M B E RR E S T O R ER E S U M ER E T U R NR G

1

R I G H T $R N R R E GR S P C O L O RR S P P O SR S P R I T ER U R W I N D O WS A V ES C A L ES C N C L RS C R A T C HS G S I S L E E PS L O WS O U N DS P S P R C O L O RS P R D E FS P R I T ES P R S A VS Q S S H A P ES S T A S HS T E PS T O PS T R $S W A PS Y T A T A T E M P OT T I T T R A PT R O F FT R O NU N T I LU S V A V E R I F YV O W A I TW H I L EW I D T HW I N D O WX O

L

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 23/228

P r o g r a m m i n g

P r o g r a m 1 - 1 . B a C h a r tF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

f ~ J 1 T R A P 4 0P 2 R E A D N : I F N > M A X T H E N M A X = NG 3 T L = T L + 1 : G O T O 2 0n C 4 T R A P 1 0 0 : S C = I N T ( 1 + L O G ( M A X * 1 . 1 ) / L O G ( 1 0 ) ) : Y Y = 1 0

T ( 3 - S C ) : X X = 5 0 0 / ( T L + 2 )D 5 G R A P H I C 1 : S C N C L R : S C A L E 1 , 5 0 0 , 1 0 2 3 : C O L O R 0 , 2 : C O L

O R 1 , 5 : C O L O R 4 , 5E 6 F O R J = 1 T O 1 0 : D R A W 1 / 0 , J * 1 0 0 T O 4 9 9 , J * 1 0 0 : N E X T : R E S

T O R EF 7 F O R J = 1 T O T L : R E A D N : X C = J * X X : Y C = 1 0 0 0 - ( N * Y Y ) : B O X 1, X C , Y C , X C + X X * • 7 5 , 1 0 0 0 , 0 , 1 : N E X T

E 8 G E T K E Y A $ : G R A P H I C 0 : E N DR 9 D A T A 2 5 2 , 1 8 3 , 1 8 5 , 2 0 4 , 2 8 9 , 4 4 6 , 4 1 8 , 1 9 3 , 2 0 4 , 3 4 , 2

7 2 , 2 0 3Q 1 0 G R A P H I C 0 : P R I N T " L I N E " E L " S E E M S T H A V E A N E R RO R " : P R I N T E R R $ ( E R )

P r o g r a m 1 - 2 . P i G r a p hF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B X 1 D U N T I L A $ = " E N D " : R E A D A $ : T L = T L + 1 : S U M = S U M + V A L

( A $ ) : L O O P : T L = T L - 1H 2 G R A P H I C 3 , 1 : C O L O R 0 , 1 3 : C O L O R 1 , 3 : C O L O R 2 , 2 : C O L O R

3 , 1 5 : C O L O R 4 , 1 3 : S C A L E 1 : W I D T H 1G 3 C I R C L E 2 , 5 1 2 , 5 1 2 , 3 0 0 , 3 6 0 : C H A R 2 , 1 4 , 1 , C H R $ ( 1 4 ) +

1 P I C H A R T " , E 4 X S = 8 1 2 : Y S = 5 1 2 : P C = 0 : A N = 0 : R E S T O R EC 5 F O R J = 1 T O T L : D R A W 2 , 5 1 2 , 5 1 2 T O X S , Y S : R E A D N : T N = A N +

( N / S U M ) * 2 * TR 6 Y S = 5 1 2 - S I N T T N ) * 3 6 0 : X S = 5 1 2 + C O S ( T N ) * 3 0 0P 7 M A = P N + ( A N - P N ) / 2J 8 A T = 5 1 2 - S I N ( M A ) * 2 7 0 : X T = 5 1 2 + C O S ( M A ) * 2 5 5B F 9 0 P A I N T P C , X T , A T , 1G 1 0 P N = A N : A N = T N : P C = ( P C + 1 ) A N D 3 : N E X Tn S 1 1 G E T K E Y A $ : G R A P H I C 0 , 1 : C O L O R 0 , 1 2 : L I S TS 1 2 D A T A 1 2 3 5 , 3 6 7 9 , 4 1 6 8 , 1 7 1 8 , 3 6 9 6 , 1 4 6 7 , 2 3 7 5 , 1 1 3 7

, E N D

P r o g r a m 1 - 3 . M a w i t h F l a gF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B

C 1 G R A P H I C 3 , 1 : C O L O R 0 , 7 : C O L O R 1 , 3 : C O L O R 2 , 2 : C O L O R 3, 1 6 : C O L O R 4 , 1 6 : W I D T H 1 : C = 1

H 2 F O R J = 3 5 T O 1 6 0 S T E P 1 0 : H X = 6 4 * ( J > 9 6 ) + 7 5 : B O X C , H X , J, 1 5 0 , J + 9 , 0 , 1 : C = 3 - C : N E X T

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 24/228

C h a p t e r

D 3 D R A W 2 , 1 9 , 4 0 T 2 1 , 4 5 T O 1 6 , 4 2 T O 2 2 , 4 2 T 1 , 4 T 1 9 , 4 0Q 4 S S H A P E S A $ , 1 5 , 4 0 , 2 4 , 4 5 : N S = 5 : I N = 0

G S 5 0 F O R J = 0 T O 8 : S Y = J * 7 + 4 0 : F O R K = 0 T O N S : S X = K * 1 0 + 1 4 + I N: G S H A P E S A $ , S X , S Y : N E X T K : N S = 9 - P - N S : I N = 5 - I N : N E XT E 6 X = 1 5 : Y = 3 6 : F O R J = 1 T O 1 5 : R E A D N X , N Y : D R A W 3 , X , Y T O N X, N Y : X = N X : Y = N Y : N E X TM 7 D R A W 3 , X , Y T O 1 5 , 3 6P 8 P A I N T 3 , 8 0 , 1 , 0F 9 G E T K E Y A ? : G R A P H I C 0E C 1 0 0 D A T A 9 0 , 3 8 , 9 8 , 5 0 , 1 2 0 , 6 0 , 1 4 3 , 3 5 , 1 4 8 , 3 9C D 1 1 0 D A T A 1 2 8 , 8 6 , 1 2 2 , 1 2 0 , 1 3 8 , 1 4 3 , 1 3 2 , 1 4 6 , 1 1 2 , 1 2 6S 1 2 D A T A 8 4 , 1 3 0 , 7 7 , 1 6 5 , 5 6 , 1 4 0 , 2 4 , 1 2 6 , 1 1 , 9 ? 0

1 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 25/228

S a v e - w i t h - R e p l a c e :I - D e b u g g e d a L a s t

P A S l a y m a k e r

S i n c e t h e e a r l y d a y s o f t h C o m m o d o r e P E i t h l a t e 1 9 7 0 s ,c o n t r o v e r s y h a s r a g e d o v e r o n p a r t i c u l a r d i s k c o m m a n d — 5 a v e -w i t h - R e p l a c e , T h i s c o n v e n i e n t c o m m a n d a u t o m a t i c a l l y r e p l a c e s a e x i s t i n g d i s k f i l e w i t h n e f i l e o t h s a m e n a m e , c o m b i n i n gS C R A T C H a n S A V E i o n o p e r a t i o n . B u f o r y e a r s , m a n yC o m m o d o r e u s e r s h a v e s h u n n e d S a v e - w i t h - R e p l a c e l i k e p o i s o n ,s w e a r i n g t h a t i c o n t a i n s m y s t e r i o u s b u w h i c h u n p r e d i c t a b l ys c r a m b l e s d i s k s . A n j u s t a m a n y o t h e r u s e r s c o n t e n d t h b u d o e s n ' t e x i s t a a l l . N o w , f i n a l l y , t h e r e ' s p r o o f : T h b u d o e s e x i s t i nt h 1 5 4 1 a n 1 5 7 1 d r i v e s , i c a b d e m o n s t r a t e d , a n d , m o s t i p o r t a n t l y , i c a b a v o i d e d . T h i s i t h f i r s t f u l l e x p l a n a t i o n o w h t h b u h a p p e n s a n h o y o c a c i r c u m v e n t i t

I t ' s t i m e t s e t t l e s o m e t h i n g o n c e a n f o a l l : T h e r e i S a v e -w i t h - R e p l a c e b u g ! I a f f l i c t s t h e d i s k o p e r a t i n g s y s t e m ( D O S )b u i l t i n t o e v e r y 1 5 4 1 a n 1 5 7 1 d i s k d r i v e , p o t e n t i a l l y t h r e a t e ni n e v e r y d i s k o n w h i c h y o u s t h S a v e - w i t h - R e p l a c e c o m a n d . W e ' l l r e v i e w w h a t t h S a v e - w i t h - R e p l a c e b u t y p i c a l l yd o e s , l i s t p r o g r a m w h i c h d e m o n s t r a t e s t h b u b e y o n dd o u b t , e x p l a i n w h i h a p p e n s , a n d , f i n a l l y , r e c o m m e n d p r c e d u r e f o a v o i d i n g t h b u g .

T h S a v e - w i t h - R e p l a c e c o m m a n d ( t y p e d a S A V E @ ) h a b e e n a c c u s e d o s c r a m b l i n g , s w a p p i n g , d u p l i c a t i n g , o o v e rw r i t i n g d i s k f i l e s a n o m e s s i n g u b l o c k a l l o c a t i o n m a p s ( B A i m a o d i s k w h i c h k e e p s t r a c k o w h i c h b l o c k sa r s t o r i n g f i l e s a n d w h i c h a r f r e e ) . M a n y c o m p u t e r m a g az i n e s a n o t h e r a u t h o r i t i e s i t h C o m m o d o r e c o m m u n i t yh a v e w a r n e d a g a i n s t u s i n g S A V E @ . Y e o t h e r C o m m o d o r e e p e r t s h a v e n e v e r e x p e r i e n c e d p r o b l e m s w i t h S A V E @ a n s w e a r t h b u i a o l h a c k e r ' s t a l e . T h e r e a r m a n y a n e cd o t e s a b o u t w h e n t h b u s t r i k e s , w h i c h f i l e s a r a f f e c t e d , a n w h e n t h f i l e s o B A w i l l b g a r b l e d . T h m y s t e r y h a p e s i s t e d f o r s l o n g b e c a u s e u s u a l l y t h e b u i n o r e p e a t a b l e .B u t h i s a r t i c l e s h o w s h o t r e p l i c a t e t h b u a n e x p l a i n s

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 26/228

C h a p t e rL

w h i i r e l a t e d p r i m a r i l y t t h f i l e l e n g t h a n t h d i s t r i b u - ' — t i o n o f r e e b l o c k s o t h d i s k a d e t e r m i n e d b t h B A M .

R e c e n t l y s o m e n e e v i d e n c e s u r f a c e d a b o u t S A V E @ . I a a r t i c l e p u b l i s h e d i t h J u l y 1 9 8 5 i s s u e o T h T r a n s a c t o r , ' — " S A V E w i t h R e p l a c e E x p o s e d ! ! / ' a u t h o r C h a r l e s H W h i t t e r ns h o w e d t h a t t h b u e x i s t s u n d e r s o m e c o n d i t i o n s . T h i s a r t i c l em a d e s o m e o b s e r v a t i o n s o f i l e s l i k e l y t b a f f e c t e d a n ' l i s t e d p r o g r a m w h i c h r e p e a t e d l y l o a d e d a n s a v e d f i l e su s i n g S A V E @ . A f t e r w a r d , a e x a m i n a t i o n o t h d i s k s h o w e ds o m e f i l e s t b s c r a m b l e d . U n f o r t u n a t e l y , n d e t a i l s o t h f i l e c o n f i g u r a t i o n s w e r e g i v e n , a n t h e d i t o r s a d m i t t e d t h a tt h b u h a d t h e m b a f f l e d — b u t a t l e a s t t h p r o b l e m w a r e o g n i z e d , f i r s t s t e p .

O u i n v e s t i g a t i o n s h o w s t h a t t h b u u s u a l l y o c c u r s w h e n t h d r i v e n u m b e r h a n o b e e n s p e c i f i e d o p r e v i o u s d r i v e o p e r a t i o n s ,s u c h a l o a d i n g f i l e o l i s t i n g d i r e c t o r y . I o t h e r w o r d s , t y p i n gL 0 A D " f i l e n a m e " , 8 o L 0 A D " $ " , 8 i n s t e a d o f D L O A D " f i l e n a m e "o L O A D " 0 : f i l e n a m e " , 8 o L O A D " 0 : $ " , 8 s e t s u c o n d i t i o n sf o t h e b u g . T h d r i v e n u m b e r s h o u l d b s p e c i f i e d i n d i s kc o m m a n d s b e c a u s e , a w e l l e x p l a i n l a t e r , t h S A V E @ b u i r e l a t e d t t h p h a n t o m s o f t w a r e d r i v e i t h 1 5 4 1 a n 1 5 7 1 .( N o t e t h a t B A S I C 7 . a d d s t h 0 t a l D O c o m m a n d s . ) I a d d i t i o n , t h b u t e n d s t b i t e d i s k s o w h i c h m a n y f i l e s h a v eb e e n s c r a t c h e d a n r e w r i t t e n . T h i s l e a v e s g a p s o t h d i s k s t h a t f i l e i s c a t t e r e d o v e r m a n y t r a c k s . T h e s e g a p s d n o n o r m a l l y c a u s e p r o b l e m i y o s p e c i f y t h d r i v e n u m b e r i d i s k c o m m a n d s .

T h e r e f o r e , t h k e t a v o i d i n g t h S A V E @ b u i t a l w a y ss p e c i f y d r i v e w h e n p e r f o r m i n g a n d i s k d r i v e f u n c t i o n , t o a lw a y s r e s e t t h d r i v e b e f o r e a n S A V E @ o p e r a t i o n , o t u s D L O A D , D S A V E , a n F f o d i r e c t o r y . R e s e t t i n g t h d r i v e r q u i r e s e i t h e r t u r n i n g t h d r i v e o f a n t h e n o n o s e n d i n gr e s e t c o m m a n d ( O P E N 1 5 , 8 , 1 5 , " U J " ) .

D e m o n s t r a t i n g t h B u A t h i s p o i n t , s o m e o y o m i g h t b s k e p t i c a l t h a t t h S A V E @b u r e a l l y e x i s t s . T p r o v e t h a t i d o e s , t h a c c o m p a n y i n g p r g r a m f o r m a t s n e d i s k w i t h t h s i n g l e f i l e " S A V E @D E M O " a n a l t e r s t h B A t s i m u l a t e p a r t i a l l y u s e d d i s kw i t h g a d u t s c r a t c h e d f i l e s .

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 27/228

P r o g r a m m i n g

F o t h i s d e m o n s t r a t i o n y o u ' l l n e e d t w o d i s k s — o n e t s a v et h o r i g i n a l p r o g r a m o a n s e c o n d d i s k t h a t w i l l b f o r m a tt e b t h a c c o m p a n y i n g p r o g r a m . R e m e m b e r , f o r m a t t i n gd i s k e r a s e s e v e r y t h i n g f r o m i t s b e s u r e t u s n e d i s k f o rt h i s d e m o n s t r a t i o n .

F o l l o w t h e s e i n s t r u c t i o n s c a r e f u l l y ( b s u r e t u s t h L O A D a n S A V E c o m m a n d s , n o D L O A D a n D S A V E , f o t h i s d e m o n s t r a t i o n ) :1 T y p e t h p r o g r a m e x a c t l y a l i s t e d — i n c l u d i n g a l u p p e r c a s e

R E s t a t e m e n t s . I t ' s i m p o r t a n t t t y p e t h p r o g r a m a l i s t e d b e c a u s e i m u s t b a t l e a s t n i n e b l o c k s l o n g o t h t e s t d i s k t i n s u r e p r o p e r r e s u l t s .

2 S a v e t h p r o g r a m o a d i s k b e f o r e r u n n i n g i t 3 S e t h c o m p u t e r f o 4 c o l u m n s . P u t b l a n k t e s t d i s k i

t h d r i v e a n r u t h p r o g r a m . I w i l l f o r m a t t h d i s k( e r a s i n g a n y t h i n g t h a t m i g h t b e o t h d i s k ) a n s a v e f i l ec a l l e d S A V E @ D E M O o t h d i s k . T y p e L O A D " $ " , 8 t l i s tt h d i r e c t o r y a n n o t i c e t h a t 2 5 b l o c k s a r f r e e i y o h a v e 1 5 4 1 d r i v e a n t h a t 9 1 b l o c k s a r f r e e i y o h a v e

1 5 7 1 d r i v e .4 R e s e t t h d r i v e b t u r n i n g i o f f , t h e n o n L o a d t h f i l e b

t y p i n g L O A D " S A V E @ D E M O " , 8 .5 S a v e t h f i l e t h r e e t i m e s u s i n g t h S A V E @ c o m m a n d

( S A V E " @ 0 : S A V E @ D E M O " , 8 ) . D n o l i s t t h d i r e c t o r y o p e r f o r m a n o t h e r o p e r a t i o n b e t w e e n S A V E @ c o m m a n d s .

6 I n i t i a l i z e t h d r i v e w i t h O P E N l , 8 , 1 5 , " I 0 : " : C L O S E 1 7 L i s t t h d i r e c t o r y b t y p i n g L O A D " $ " , 8 . W h a t ' s t h i s ? T h e r ew e r e 2 5 ( 1 5 4 1 ) o 9 1 ( 1 5 7 1 ) b l o c k s f r e e b e f o r e , b u n o

t h e r e a r 2 5 ( 1 5 4 1 ) o r 9 2 ( 1 5 7 1 ) — a d i s c r e p a n c y o f o u rb l o c k s . ( I y o d o n ' t g e t h i s r e s u l t , i p r o b a b l y m e a n s t h a ty o h a v e n ' t f o l l o w e d t h d i r e c t i o n s e x a c t l y . S t a r t a g a i n a s t e p 3 . I y o e x a m i n e t h B A w i t h a d i s k u t i l i t y , y o u ' l ls e t h a t t h f i r s t f o u r s e c t o r s o t h f i l e a r m a r k e d a f r e e .I y o e x e c u t e d f o u r t h S A V E @ c o m m a n d , i w o u l d o v e rw r i t e t h b e g i n n i n g o t h f i l e , a n t h d i s k w o u l d b c o r u p t e d e v e n w o r s e .

8 N o r e r u n t h p r o g r a m t o ^ m a k e n e t e s t d i s k . R e s e t t h d r i v e a n r u t h a b o v e t e s t a g a i n , b u s p e c i f y t h e d r i v en u m b e r f o t h l o a d ( L O A D " 0 : S A V E @ D E M O " , 8 ) . T h S A V E @ b u d o e s n o o c c u r !

1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 28/228

C h a p t e r

A l w a y s S p e c i f y D r i v e ' T h i s d e m o n s t r a t i o n p r o v i d e s p o w e r f u l l e s s o n : A l D O c o m a n d s s h o u l d i n c l u d e t h e d r i v e n u m b e r ( r e m e m b e r , B A S I C7 . D O c o m m a n d s a d d r i v e n u m b e r f o y o u ) : ' — L o a d f i l e L O A D " 0 : f i l e n a m e " , 8

D L O A D " f i l e n a m e "S a v e f U S A V E " 0 : f i l e n a m e " , 8 ! — D S A V E " f i l e n a m e "

S a v e w i t h r e p l a c e S A V E " @ 0 : f i l e n a m e " , 8D S A V E " @ f i l e n a m e "L O A D d i r e c t o r y L O A D " $ 0 : " , 8D I R E C T O R YF

I n i t i a l i z e d r i v e O P E N 1 5 , 8 , 1 5 , " I 0 " : C L O S E 1 5V a l i d a t e O P E N 1 5 , 8 , 1 5 , " V 0 " : C L O S E 1 5

C O L L E C TS i m i l a r l y , a l d i s k f i l e c o m m a n d s s h o u l d s p e c i f y t h e d r i v e

n u m b e r .M o s t C o m m o d o r e u s e r s d n o s p e c i f y t h e d r i v e n u m b e rw h e n l o a d i n g t h d i r e c t o r y o f i l e s . T h 2 5 4 1 U s e r ' s M a n u a l

e x a m p l e s f o t h L O A D c o m m a n d d o n ' t s p e c i f y t h d r i v e , a n n e i t h e r d o m o s t m a g a z i n e a r t i c l e s . I t h d r i v e n u m b e r i n o s p e c i f i e d , t h d i s k d r i v e i s u p p o s e d t d e f a u l t t d r i v e 0 W h a t a c t u a l l y h a p p e n s v e r y o f t e n c a u s e s a e r r o r m e s s a g es u c h a 7 4 , D R I V E N O R E A D Y , 0 0 , 0 0 .

T h M i s s i n g D r i v eT h e a r l y C o m m o d o r e P E T s w e r e a v a i l a b l e w i t h d u a l d i s kd r i v e s — t w o d r i v e s i o n u n i t . T h d r i v e s w e r e a d d r e s s e d a 0 a n 1 w h e n u s i n g d i s k c o m m a n d s . B u o l a t e r C o m m od o r e c o m p u t e r s d e s i g n e d t u s t h 1 5 4 0 / 1 5 4 1 , m u l t i p l ed r i v e s a r e a d d r e s s e d b c h a n g i n g t h d e v i c e n u m b e r , n o t h d r i v e n u m b e r . T h d e v i c e n u m b e r f o s i n g l e d r i v e i s 8 . T h a t ' s I w h y o t y p e c o m m a n d l i k e L O A D " f i l e n a m e " , 8 . O d u a l -d r i v e s y s t e m s , t h s e c o n d d r i v e i u s u a l l y a d d r e s s e d a d e v i c e9 a i L O A D " f i l e n a m e " , 9 . T h e r e f o r e , m o s t p e o p l e s t o p p e d I ( o n e v e r s t a r t e d ) s p e c i f y i n g t h d r i v e n u m b e r , w h i c h i s 0 : , f o a l 1 5 4 1 a n 1 5 7 1 d i s k d r i v e s . D r i v e 1 s i m p l y d o e s n ' t e x i s tw i t h t h 1 5 4 1 .W h a t h a p p e n s w h e n t h d r i v e n u m b e r i n o s p e c i f i e d f o ' —

L O A D o S A V E ? D O f i r s t c h e c k s f o d r i v e n u m b e r . I

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 29/228

P r o g r a m m i n g

n o n e i s p e c i f i e d , i a s s u m e s d r i v e 0 O k a y s f a r . T h e n D O a t t e m p t s t r e a d t h d i s k . I n d i s k i f o u n d , D O a u t o m a t ic a l l y s w i t c h e s t t h n o n e x i s t e n t d r i v e 1 D R I V E N O R E A D Y e r r o r t h e n r e s u l t s w h e t h e r o n o a d r i v e n u m b e r w a s p e c i f i e d . I a d i s k i f o u n d , D O s e a r c h e s i t i n t e r n a l d i r e c t o r yf o t h s p e c i f i e d f i l e . I t h d e f a u l t d r i v e w a u s e d , D O s w i t c h e s t d r i v e t c o n t i n u e s e a r c h i n g . T h i s a l s o c a u s e s t h D R I V E N O R E A D Y e r r o r , s i n c e t h e r e i n d r i v e 1 F u r t h e rm o r e , d r i v e r e m a i n s t h d e f a u l t d r i v e a l o n g a t h e r e a r d r e c t o r y s e a r c h e s t b d o n e . T h i n t e r n a l d r i v e p o i n t e r s m u s tb r e s e t t o r e c o v e r f r o m t h i s e r r o r c o n d i t i o n .

S A V E @ a l w a y s w o r k s p r o p e r l y i o u t e s t s i t h d r i v en u m b e r i s p e c i f i e d o a l o p e r a t i o n s a n n d i r e c t a c c e s sb u f f e r s a r e a l l o c a t e d . W a r n o a w a r e o a n y o n e w h h a d o c u m e n t e d f a i l u r e u n d e r t h e s e c o n d i t i o n s ( a s s u m i n gc l o s e d f i l e w a s p e c i f i e d , s u f f i c i e n t r o o m w a p r e s e n t o t h d i s k , a n n r e a d o w r i t e e r r o r s o c c u r r e d ) . T h u s , C o m m o d o r ee x p e r t s w h c l a i m t h e r e i n b u a r p a r t i a l l y c o r r e c t . W h a v e a l s o f o u n d t h a t i t h d r i v e n u m b e r i n o a l w a y s s p e c if i e d d u r i n g l o a d s a n d i r e c t o r y l i s t i n g s , a i c o m m o n p r a c t i c e ,t h S A V E @ b u c a o c c u r e v e n t h o u g h t h d r i v e n u m b e r i s p e c i f i e d i n t h S A V E @ c o m m a n d .

F i l e s s t o r e d o j u s t o n o t w t r a c k s — s u c h a s h o r t f i l e so f r e s h d i s k — a r e n o p r o n e t t h S A V E @ b u g . F i l e s s t o r e do v e r m a n y t r a c k s o d i s k s o w h i c h m a n y f i l e s h a v e b e e ns a v e d a n s c r a t c h e d a r t h m o s t s u s c e p t i b l e , a a r f i l e s s a v e dw i t h s o m e u t i l i t i e s i n t e n d e d t s p e e d u t h 1 5 4 1 d i s k d r i v e .

D O T h i e v e r yF i r s t , w s h o u l d n o t e t h a t a l t h o u g h t h S A V E @ c o m m a n d d l e t e s a d i s k f i l e a n s a v e s r e p l a c e m e n t i s i n g l e o p e r a t i o n ,i w o r k s d i f f e r e n t l y t h a n i y o i s s u e d s e p a r a t e S C R A T C H a n S A V E c o m m a n d s . S A V E @ c a l l s e n t i r e l y d i f f e r e n t D O r o u t i n e s — t h e S C R A T C H a n S A V E a r e x e c u t e d a p a r t o f c o n t i n u o u s p r o c e d u r e , a n t h S A V E @ c o m m a n d t h e r e f o r e r q u i r e s t h a t m o r e d r i v e b u f f e r s b a v a i l a b l e .

D O V 2 . 6 h a f i v e i n t e r n a l b u f f e r s , n u m b e r e d 0 - 4 . T h e s eb u f f e r s s t a r t a m e m o r y p a g e s $ 3 0 0 , $ 4 0 0 , $ 5 0 0 , $ 6 0 0 , a n $ 7 0 0 , r e s p e c t i v e l y . N o r m a l l y , a i m a g e o t h d i s k ' s B A ( B l o c k A v a i l a b i l i t y M a p ) i s t o r e d i t h p a g e a $ 7 0 0 , a i a g o f t h e d i r e c t o r y s e c t o r i u s i s t o r e d a $ 6 0 0 , a n t h

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 30/228

C h a p t e r

o t h e r t h r e e b u f f e r s a r e a v a i l a b l e f o f i l e u s e . A l o n g a ' b u f f e r i a c t i v e , i c a n n o t b e u s e d f o a n y t h i n g e l s e . I D O h a a s s i g n e d a i n t e r n a l c h a n n e l t t h B A a $ 7 0 0 , t h e nt r y i n g t o p e n d i r e c t c h a n n e l t b u f f e r 4 ( f r o m B A S I C : ' O P E N 2 , 8 , 2 , / / # 4 / / ) w i l l p r o d u c e 7 0 , N O C H A N N E L , 0 0 , 0 0e r r o r .

S i m i l a r l y , D O a s s i g n s c h a n n e l s a n b u f f e r s t t h d i r e c - ' — t o r y s e c t o r a n f i l e s e c t o r s w h i c h a r b e i n g r e a d o w r i t t e n .N o r m a l l y , D O a s s i g n s t w r e a d o t w w r i t e c h a n n e l s a n u s e s o n l y t h r e e o f t h f i v e b u f f e r s . T h S A V E @ c o m m a n d ,h o w e v e r , r e q u i r e s a l f i v e b u f f e r s — t w o r e a d , t w w r i t e , a n t h B A M . I D O c a n ' t f i n d f r e e b u f f e r , i t r i e s t s t e a l a a s i g n e d b u i n a c t i v e b u f f e r . T h i s t h i e v e r y c a u s e s t h S A V E @c o m m a n d t f a i l o c c a s i o n a l l y — f o r r e a s o n s w h i c h w i l l b d i c u s s e d s h o r t l y .

W h d o e s o m i t t i n g t h d r i v e n u m b e r i d i s k c o m m a n d sc a u s e D O t s t e a l b u f f e r ? W h e n f i l e i s o p e n e d o l o a d e dv i t h O P E N r o u t i n e ( $ D 7 B 4 ) , D O s e a r c h e s t h i n t e r n a l d r e c t o r y t l o o k f o t h s p e c i f i e d f i l e n a m e ( D O S r o u t i n e n a m e sa n a d d r e s s e s i t h i s a r t i c l e c o n f o r m t t h o s e l i s t e d i n I n s i d eC o m m o d o r e D O S , D a t a m o s t , 1 9 8 4 ) . O N E D R V ( $ C 3 1 2 ) d e t e rm i n e s w h e t h e r d r i v e w a s p e c i f i e d . O P T S C H ( $ C 3 C A ) a s i g n s a d e f a u l t o s p e c i f i e d d r i v e f o e a c h f i l e i t h c o m m a n d ,a n a l s o c a l l s A U T O I ( $ C 6 3 D ) . A U T O I r e a d s t h B A o t h d i s k i t h s p e c i f i e d d r i v e , a n a l s o t r i e s t i n i t i a l i z e d r i v e i n d r i v e w a s p e c i f i e d . U s u a l l y b u f f e r 3 ( $ 6 0 0 ) i a l l o c a t e d f o t h p h a n t o m d r i v e B A M , a n B S E E K c o m m a n d i i s s u e dt t h d i s k c o n t r o l l e r . T h i s r e s u l t s i a i n t e r n a l D R I V E N O R E A D Y e r r o r i n t h d i s k c o n t r o l l e r . T h e r r o r i t r a p p e d b A U T O I , b u t n o t r e p o r t e d o u t s i d e t h e d i s k d r i v e . T h i s l e a v e sb u f f e r a l l o c a t e d b u i n a c t i v e . F F S T ( $ C 4 9 D ) t h e n r e a d s t h d i r e c t o r y a n t r i e s t f i n d t h f i l e .

T h r e a s o n t h i s i n a c t i v e b u f f e r a s s i g n m e n t i i m p o r t a n t i t h a t t h S A V E @ c o m m a n d r e q u i r e s a l f i v e b u f f e r s , b u t o n l y f o u r i — a r n o a v a i l a b l e . W h e n e v e r D O n e e d s t o a l l o c a t e b u f f e r ,i c a l l s G E T B U F ( $ D 2 8 E ) . I o n i n o f r e e , G E T B U F t r i e s t s t e a l a i n a c t i v e o n b c a l l i n g S T L B U F ( $ D 3 3 9 ) . I t h d r i v en u m b e r i a l w a y s s p e c i f i e d a n n d i r e c t a c c e s s b u f f e r s a r ea l l o c a t e d , S T L B U F i n e v e r c a l l e d . W v e r i f i e d t h i s b m o d i f y -i n G E T B U F a f t e r c o p y i n g D O o n t o a E P R O M ( E r a s a b l e -P r o g r a m m a b l e R e a d O n l y M e m o r y ) . I c h a n n e l c a n ' t b s t o l e n , t h e n N C H A N N E L e r r o r o c c u r s . B u i S T L B U F i | ~ c a l l e d , t h S A V E @ b u s o m e t i m e s o c c u r s . I

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 31/228

P r o g r a m m i n g

S t e a l i n g t h W r o n g B u f f e rS T L B U F c a b c a l l e d s e v e r a l t i m e s d u r i n g S A V E @ c o m a n d . T h e r e s u l t i t h a t t h B A a n d i r e c t o r y s e c t o r s c a b r e a s s i g n e d t d i f f e r e n t b u f f e r s d u r i n g s i n g l e S A V E @ . W h a v e f o u n d t h B A a n d i r e c t o r y s e c t o r s i e v e r y d r i v eb u f f e r a f t e r d i f f e r e n t S A V E @ c o m m a n d s . W h a v e f o u n dc o p i e s o t h c u r r e n t d i r e c t o r y s e c t o r i t w d i f f e r e n t b u f f e r s ,o n e a n o l s e c t o r a n o n p r o p e r l y u p d a t e d , b u t t h w r o n go n h a b e e n w r i t t e n t t h d i s k . S o m e h o w , t h e p o i n t e r s t t h B A a n d i r e c t o r y s e c t o r s a r n o t p r o p e r l y a c c o u n t e d f o r .W h i c h b u f f e r i s t o l e n b S T L B U L d e p e n d s o p r i o r b u f f e ru s a g e a n t h v a l u e s s t o r e d i L R U T B L , Y ( $ F A , Y ) , t h l e a s tr e c e n t l y u s e d t a b l e . I a p p e a r s t h a t S T L B U F u p d a t e s a l p o i n te r e x c e p t L R U T B L , Y . T h i s m e a n s t h a t m u l t i p l e c a l l s t S T L B U F m a s t e a l t h w r o n g b u f f e r — i n t h i s c a s e , t h w r o n gb u f f e r t s t e a l i t h B A M .

T h B A i s t o r e d i t h e d r i v e i o n o t h b u f f e r s .S T L B U F s h o u l d n o s t e a l t h d r i v e B A M , b u t s h o u l d i n s t e a dt a k e b a c k t h u n u s e d b u f f e r i n c o r r e c t l y a s s i g n e d t d r i v e 1 I n e v e r s t e a l s t h d r i v e B A M , b u f f e r 3 a $ 6 0 0 , b e c a u s eS T L B U F c a n n o t t a k e a b u f f e r w h i c h e n c o u n t e r e d a d r i v e e r r o r .R e m e m b e r t h a t a i n t e r n a l D R I V E N O R E A D Y e r r o r d i o c u r , b e c a u s e t h e r e i n d r i v e 1

T t e s t t h i s , w c o p i e d i n t o E P R O M a a l t e r e d v e r s i o n o D O w i t h S T L B U F m o d i f i e d t a l l o w s t e a l i n g a b u f f e r w i t ht h i s e r r o r . T h i s a l l o w e d t h p h a n t o m d r i v e B A b u f f e r t b f r e e d , a n t h S A V E @ b u d i n o s t r i k e d u r i n g t e s t s w i t ht h i s m o d i f i e d D O S .

I t h i s b u f f e r s t e a l i n g o c c u r s , w h d o e s S A V E @ w o r km o s t o t h t i m e ? W m u s t d i d e e p e r i n t o D O t a n s w e rt h i s q u e s t i o n . W h e n f i l e i s o p e n e d a n b l o c k s ( o s e c t o r s ) a r w r i t t e n t d i s k , t h B A i n o d i r e c t l y u p d a t e d i t h d r i v em e m o r y . I n s t e a d , B A i m a g e f o e a c h o t w t r a c k s i s t o r e d a B A ( $ 2 A 1 - $ 2 B O ) . E a c h t i m e n e b l o c k i a l l oc a t e d b W U S E D ( $ E F 9 0 ) , i i r e c o r d e d i t h B A i m a g e .W h e n n e t r a c k i t e s t e d f o r f r e e s e c t o r s , D O c h e c k sw h e t h e r i h a B A i m a g e f o i t I n o t , i c a l l s S W A P( $ F 0 5 B ) , w h i c h f i r s t u p d a t e s t h B A w i t h t h B A i m a g ef r o m t h n e x t - t o - l a s t t r a c k , c o p i e s t h n e t r a c k ' s B A m a i n t o t h B A i m a g e , a n t h e n z e r o s t h a t t r a c k i t h B A M .T h i s a l w o r k s p e r f e c t l y — m o s t o t h t i m e .

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 32/228

C h a p t e r

A f t e r t h l a s t f i l e s e c t o r i w r i t t e n t t h d i s k , t h B A ' — s t i l l h a n o b e e n w r i t t e n t t h d i s k ^ I n f a c t , t h B A i t h d r i v e i w r o n g b e c a u s e i h a n o y e b e e n u p d a t e d f r o m t h B A i m a g e s . W h e n f i l e i s c l o s e d , t h d i s k d i r e c t o r y i ' c l o s e d , C L S D I R ( $ D B A 5 ) , b r e a d i n g i t h f i l e ' s d i r e c t o r y s e ct o r , t e s t i n g f o a r e p l a c e f i l e t y p e , a n t h e n r e w r i t i n g i t t h I d i s k . M A P O U T ( $ E E F 4 ) i c a l l e d t r e a d t h B A o f t h d i s k ,i n e c e s s a r y , a n t h e n t u p d a t e i f r o m t h B A i m a g e s b c a l l i n g P U T B A M ( $ F 0 A 5 ) . T h u p d a t e d B A i t h e n w r i t t e nb a c k t t h d i s k .

D u r i n g S A V E @ c o m m a n d , D O p e r f o r m s a a d d i t i o n a ls t e p a f t e r r e a d i n g t h d i r e c t o r y s e c t o r . T h f i l e t y p e i d e s i gn a t e d a r e p l a c e , s D E L F I L ( $ C 8 7 D ) i c a l l e d t d e l e t e t h o r i g i n a l v e r s i o n o t h f i l e f r o m t h B A M . I r e a d s i t h B A i n e c e s s a r y w h e n f r e e i n g t h f i r s t s e c t o r , F R E T S ( $ E F 5 F ) , a n t h e n p r o c e e d s t t r a c e t h r o u g h t h f i l e a n d e l e t e s e c t o r s i nt h B A i m a g e s . T h B A i t h e n w r i t t e n t t h d i s k .

B u n g l e d B A N o r m a l l y , t h i s p r o c e d u r e w o r k s c o r r e c t l y . B u h a v o c r e s u l t s i t h B A b u f f e r i s t o l e n w h i l e t h f i l e i s b e i n g c l o s e d . T h i sc a h a p p e n d u r i n g S A V E @ c o m m a n d b e c a u s e D E L F I L r q u i r e s t w a d d i t i o n a l b u f f e r s . T h B A c a b s t o l e n a d i f f e re n p o i n t s d u r i n g t h p r o c e d u r e , d e p e n d i n g o w h i c h b u f f e r sw e r e p r e v i o u s l y u s e d — w h i c h , i t u r n , d e p e n d s o t h n u m b e ro s e c t o r s i t h f i l e a n t h t r a c k s o w h i c h i i s t o r e d .

A f t e r t h B A i s t o l e n , i i r e a d b a c k i w h e n n e e d e da n u p d a t e d f r o m t h B A i m a g e s . O n l y t w t r a c k s c a b u p d a t e d , h o w e v e r , s i n c e t h e r e a r e o n l y t w i m a g e s . I m o r et h a n t w t r a c k s h a v e b e e n a c c e s s e d b S A V E @ , t h B A m a n o b c o r r e c t l y u p d a t e d . t r a c k c o u l d b e u p d a t e d c o r r e c t l y ,l e f t u n c h a n g e d , o f u l l y a l l o c a t e d , d e p e n d i n g o w h e n t h B A w a s t o l e n .

I e x t r a s e c t o r s a r a l l o c a t e d , t h B A i i n c o r r e c t , b u n p e r m a n e n t h a r m i d o n e . v a l i d a t e c o m m a n d w i l l c u r e t h ep r o b l e m . I s e c t o r s a r n o a l l o c a t e d , t h e n n e f i l e w i l l b s a v e d o t o o t h e o l d f i l e ' s s e c t o r s . I P r o g r a m 1 - 4 , f o u r t hS A V E @ c o m m a n d w o u l d r e s u l t i t h f i l e b e i n g w r i t t e n o t o o f t h e o l d f i l e ' s f i r s t f o u r s e c t o r s , a n t h e n t h w h o l e n e f i l e w o u l d b e s c r a t c h e d — a t r a g i c r e s u l t , i n d e e d .

B a s e d o t h e s e f i n d i n g s , w r e c o m m e n d t h a t y o a v o i d

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 33/228

P r o g r a m m i n g

t h S A V E @ c o m m a n d w h e n d i r e c t a c c e s s c h a n n e l s t t h d r i v e a r o p e n o i y o d o n ' t a l w a y s s p e c i f y t h d r i v e n u m b e ri d i s k c o m m a n d s . Y o u s h o u l d a l s o a v o i d S A V E @ w h e n u s i n gp r o g r a m s o c a r t r i d g e s i n t e n d e d t s p e e d u a c c e s s o t h 1 5 4 1 d i s k d r i v e . T h e s e p r o g r a m s o f t e n r e s e r v e i n t e r n a l d r i v eb u f f e r s a n m a c a u s e p r o b l e m s e v e n i t h d r i v e n u m b e r i s p e c i f i e d . I y o u ' r e u s i n g t h D O W e d g e , w r e c o m m e n d i s u i n g > U o > U c o m m a n d b e f o r e e a c h S A V E @ c o m m a n dt b s u r e a l t h b u f f e r p o i n t e r s a r r e s e t . M a n y w o r d p r o c e ss o r s a l s o a l l o w y o t s e n d t h e s e c o m m a n d s t t h d r i v e .O t h e r w i s e , t h d r i v e s h o u l d b t u r n e d o f a n t h e n o b e f o r eu s i n g S A V E @ . ( O t h S X - 6 4 , C o m m o d o r e ' s p o r t a b l e 6 4 p r e s s t h e d r i v e r e s e t b u t t o n . )

D u r i n g o u s t u d i e s w f o u n d s e v e r a l o t h e r m i n o r b u g s i D O V 2 . 6 , i n c l u d i n g t h s u b r o u t i n e w h i c h p u t s t h v a l u e a t h d r i v e m e m o r y l o c a t i o n $ 1 9 7 . T h i s b u d o e s n h a r m s i n c ei a f f e c t s n o r m a l l y u n u s e d s e c t i o n o f d r i v e m e m o r y . H o e v e r , w h a v e f o u n d i c a a f f e c t D O r o u t i n e s d o w n l o a d e di n t o t h d r i v e . T h e r e m a b o t h e r b u g s o r q u i r k s w h i c h w h a v e n o t f o u n d , s o t h e C o m m o d o r e D O c o n t r o v e r s y m a n e v e r b f u l l y c l o s e d .P r o g r a m 1 - 4 . S A V E @ B u D e m o n s t r a t i o nF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s ' T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B

K 1 C O L O R 0 , 1 : C O L O R 4 , F 2 P R I N T " { B L K } { C L R } l Y E L } { 2 D O W N } { R I G H T } { R V S }

{ T A B } " C H R $ ( 1 4 ) " { H j S A V E @ B U G D E M O N S T R A T I O N "C 4 P R I N T " { C Y N } { D O W N } { R I G H T } T H E S A V E @ D E M O P R O G R

A M F O R M A T S B L A N K "G 5 P R I N T " { R I G H T } D I S K , A L T E R S T H B A M , S A V E S I T

E L F , A N D " ;R 6 P R I N T " { R I G H T } T H E N A L T E R S T H B A M A G A I N .

{ S P A C E S } S A V E @ W I L L "P 7 P R I N T " I R I G H T j F A I L T H T H I R D T I M E O N T H I S D I

K . R 8 P R N " { D O W N { R I G H T } { G R N } _ I N S E R T D I S K T O F O R M A

P R E S S { R V S } S P A C E { O F F } . "F 9 G O S U B 5 0 0 0 : R E M { 2 S P A C E S ] G E T K E P R E S SB 1 0 0 I F K < > 6 0 T H E N 9 0 : R E M W A I T F O S P A C EB 1 1 P R I N T " { D O W N } { R I G H T } { R E D j W A R N I N G ! T H D I S K W

I L B E R A S E D . "H 1 2 P R I N T " { R I G H T } { Y E L } A R E Y O S U R E ? T O C O N T I N U E

P R E S S < Y > . "R F 1 3 0 F O T = 0 T O 1 0 0 : N E X T : R E T I M E D E L A YH 1 4 G O S U B 5 0 0 0 s R E M { 2 S P A C E S } G E T K E Y P R E S S

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 34/228

C h a p t e r . - I

G 1 5 I K = 2 5 T H E N 1 7 0 : R E C O N T I N U E I < Y J 1 6 P R I N T " { D O W N } { R I G H T } { Y E L } P R O G R A M A B O R T E D . " : G

O T 3 3 — P 1 7 C L O S E 2 : C L O S E 1 5 : R E M { 2 S P A C E S j C L O S E C H A N N E L S j K 1 8 O P E N 1 5 , 8 , 1 5 : R E O P E N C O M M A N D C H A N N E LS 1 9 P R I N T " { D O W N } { R I G H T } { C Y N } N O W F O R M A T T I N G D I S KP L E A S E W A I T . " I Q 2 0 P R I N T * 1 5 , " N 0 : S A V E @ T E S T " C H R $ ( 4 4 ) " P S " : '

{ S P A C E S } R E M { 2 S P A C E S } F O R M A T D I S KX 2 1 G O S U B 3 0 0 0 : R E M C H E C K E R R O R C H A N N E LJ 2 2 P R I N T " { U P } { R I G H T } { P U R } F O R M A T T I N G H A B E E N

O M P L E T E D . U S P A C E S } "K 2 3 P R I N T " { D O W N } { R I G H T } g 7 § A L T E R I N G B A M . "F 2 4 G O S U B 4 0 1 0 : R E M O P E N D I R E C T C H A N N E L A N D C H E

C E R R O R C H A N N E LX 2 5 G O S U B 1 0 1 0 : R E M { 2 S P A C E S } A L T E R B A C 2 6 C L O S E 2 : C L O S E 1 5 : R E M { 2 S P A C E S } C L O S E C H A N N E L SJ 2 7 P R I N T " { R I G H T } { R E D } S A V I N G S A V E @ D E M O . "B 2 8 S A V E " 0 : S A V E @ D E M O " , 8E G 2 9 0 P R I N T " { R I G H T } { Y E L } A L T E R I N G B A M . "P 3 0 G O S U B 4 0 0 0 : R E O P E N D I R E C T C H A N N E L A N D C H

C E R R O R C H A N N E LK 3 1 G O S U B 2 0 1 0 : R E M { 2 S P A C E S } A L T E R B A H 3 2 P R I N T " { D O W N } { R I G H T } { C Y N j D I S K I F I N I S H E D !

O R E F E R T O T E X T . " " S 3 3 C L O S E 2 : C L O S E 1 5 : R E M { 2 S P A C E S } C L O S E C H A N N E L SJ 3 4 P O K E 2 0 8 , 0 : R E M { 2 S P A C E S } C L E A R K E Y B O A R DP 3 5 E N E 1 0 0 0 R E M O D I F Y B A S E C T O R F O R S A V EF 1 0 1 0 P R I N T # 1 5 , " U l : 2 1 0 G O S U B 3 0 0 0 :

{ S P A C E S } R E M R E A D B A M S E C T O RB 1 0 2 0 P R I N T # 1 5 , " B - P : 2 5 2 G O S U B 3 0 0 0 :{ S P A C E S } R E M P O S I T I O N B U F F E R P O I N T E R T R A C

1 B 1 0 3 0 F O 1 = T 2 0 P R I N T # 2 , C H R $ ( 0 ) ; : { 8 S P A C E S }

N E X T : R E M { 2 S P A C E S } F I L L B A W I T H Z E R O SB A 1 0 4 0 P R I N T # 1 5 , " B - P : 2 7 6 " : G O S U B 3 0 0 0 : { 6 S P A C E S } R

E P O S I T I O N B U F F E R P O I N T E R T R A C K 1 D 1 0 5 0 F O 1 = 2 5 T 9 2 P R I N T # 2 , C H R $ ( 0 ) ; :

{ S P A C E S } N E X T : R E M { 2 S P A C E S } F I L L B A W I T H ' { S P A C E } Z E R O S

E 1 0 6 0 P R I N T # 1 5 , " U 2 : 2 1 0 G O S U B 3 0 0 0 : j { S P A C E S } R E M { 2 S P A C E S } W R I T E T B A S E C T O R

P 1 0 7 0 P R I N T # 1 5 , " 1 0 " G O S U B 3 0 0 0 : { 1 3 S P A C E S } R E M{ S P A C E } I N I T I A L I Z E B A

X 1 0 8 0 R E T U R NA 2 0 0 0 R E M O D I F Y B A S E C T O R A F T E R S A V EA 2 0 1 0 P R I N T # 1 5 , " U l : 2 1 0 G O S U B 3 0 0 0 :

{ S P A C E S j R E M R E A D B A M S E C T O R

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 35/228

B

J B C X S

K K K M F S J E

H A X S R

2 0 2 0

2 0 3 02 0 4 02 0 5 02 0 6 02 0 7 0

2 0 8 02 0 9 03 0 0 03 0 1 03 0 2 03 0 3 04 0 0 04 0 1 0

4 0 2 05 0 0 05 0 1 05 0 2 05 0 3 0

P r o g r a m m i n g

P R I N T # 1 5 , " B - P : 2 6 0 G O S U B 3 0 0 0 :( S P A C E S } R E M P O S I T I O N B U F F E R P O I N T E R T R A C

1 R E M { 2 S P A C E S } F R E E U 1 S E C T O R S O N T R A C K S{ S P A C E S } 1 5 T 1 P R I N T # 2 , C H R $ ( 4 ) C H R $ ( 1 5 ) C H R $ ( 0 ) C H R $ ( 0 ) ;P R I N T # 2 , C H R $ ( 4 ) C H R $ ( 1 5 ) C H R $ ( 0 ) C H R $ ( 0 ) ;P R I N T # 2 , C H R $ ( 4 ) C H R $ ( 1 5 ) C H R $ ( 0 ) C H R $ ( 0 ) ;P R I N T # 1 5 , M U 2 : 2 1 0 G O S U B 3 0 0 0 :{ S P A C E S } R E M { 2 S P A C E S } W R I T E T O B A M S E C T O RP R I N T # 1 5 , " I 0 " G O S U B 3 0 0 0 : 1 1 3 S P A C E S j R E M{ S P A C E U N I T I A L I Z E B A R E T U R NI N P U T # 1 5 , E N , E $ , E T , E SI E N = 0 O R E N = 7 3 T H E N R E T U R NP R I N T " { 2 D O W N } { R I G H T } M E N ; E $ ; E T ; E SC L O S E 2 : C L O S E 1 5 : E N DO P E N 1 5 , 8 , 1 5 : G O S U B 3 0 0 0 : R E M { 2 S P A C E S } O P E N C M M A N D C H A N N E L A N D C H E C K E R R O RO P E N 2 , 8 , 2 , " # M 2 G O S U B 3 0 0 0 : R E O P E N D I R E C TH A N N E L A N D C H E C K E R R O R C H A N N E LR E T U R NP O K E 2 0 8 , 0 : P O K E 2 1 2 , 8 8 : R E C L E A R K E YK = P E E K ( 2 1 2 )I K = 8 8 T H E N 5 0 1 0R E T U R N

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 36/228

D y n a m i c K e y b o a r dJ i B u t t e r f i e l d

D y n a m i c k e y b o a r d t e c h n i q u e s l e y o p e r f o r m t a s k s t h a t w o u l do t h e r w i s e b d i f f i c u l t o i m p o s s i b l e i B A S I C

L

L

M a n y B A S I C c o m m a n d s c a b e u s e d i n e i t h e r d i r e c t m o d e( t y p e d d i r e c t l y o t h k e y b o a r d w i t h o u t l i n e n u m b e r ) o r p r og r a m m o d e ( a p a r t o f p r o g r a m ) . C e r t a i n s t a t e m e n t s a n c o m a n d s , h o w e v e r , w o r k o n l y i d i r e c t m o d e . U s i n g t h e m i p r o g r a m r e q u i r e s t h d y n a m i c k e y b o a r d t e c h n i q u e , w h i c h l e t sp r o g r a m a c l i k e i t ' s y o u — t y p i n g o t h k e y b o a r d . T h i sm e t h o d i e s p e c i a l l y e f f e c t i v e o C o m m o d o r e m a c h i n e s b c a u s e o t h e i r f u l l - s c r e e n e d i t i n g . T h t e r m d y n a m i c k e y b o a r dw a f i r s t u s e d b y M i k e L o u d e r i 1 9 7 8 , t h o u g h t h t e c h n i q u eh a b e e n u s e d p r e v i o u s l y b L a r r y T e s s l e r t m e r g e p r o g r a m s .

D i r e c t V e r s u s P r o g r a m m e dd i r e c t - m o d e c o m m a n d d o e s n ' t h a v e l i n e n u m b e r a n i

e x e c u t e d a s o o n a y o p r e s s R E T U R N . A e x a m p l e i P R I N T" H E L L O " . I p r o g r a m m o d e , t h c o m m a n d d o e s h a v e l i n en u m b e r a n i e x e c u t e d o n l y w h e n y o t y p e R U a n t h e np r e s s R E T U R N . A e x a m p l e i 1 P R I N T " H E L L O " . M o s tB A S I C c o m m a n d s w o r k i b o t h d i r e c t a n p r o g r a m m o d e .

f e B A S I C c o m m a n d s c a n n o t b u s e d i d i r e c t m o d e ,h o w e v e r ; t h e y m a a p p e a r o n l y i p r o g r a m . G E T , I N P U T ,G E T # , a n I N P U T # a r t h b e s t - k n o w n o t h e s e . U s u a l l y ,t h e s e c o m m a n d s u s s e g m e n t o m e m o r y c a l l e d t h i n p u tb u f f e r t o s t o r e d a t a a i a r r i v e s , a n t h e y w o n ' t w o r k i n d i r e c tm o d e b e c a u s e t h s a m e i n p u t b u f f e r i u s e d t h o l d t h c o m -m a n d i t s e l f . T h u s , t h i n c o m i n g d a t a m i g h t o v e r w r i t e t h c o m -m a n d y o t y p e d i n

O t h o t h e r h a n d , s o m e B A S I C c o m m a n d s c a b u s e do n l y i d i r e c t m o d e — n o t i p r o g r a m . C O N T , f o e x a m p l e ,c a u s e s a i n d e f i n i t e p a u s e w h e n u s e d i p r o g r a m . L I S Tw o r k s i p r o g r a m m o d e , b u o m o s t C o m m o d o r e c o m p u t e r s ; — - ,t h p r o g r a m e n d s a f t e r e x e c u t i n g L I S T . I d i r e c t m o d e , y o uc a e n t e r p r o g r a m l i n e t a d t t h p r o g r a m o c h a n g e i t Y o c a n ' t d t h i s w h i l e r u n n i n g p r o g r a m . A g a i n , t h e r e ' s

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 37/228

P r o g r a m m i n g

d i f f e r e n c e b e t w e e n p r o g r a m s a n d i r e c t c o m m a n d s — t h e yh a v e d i f f e r e n t p o w e r s .

v e r y i m p o r t a n t d i f f e r e n c e i f o u n d i t h L O A D c o m a n d . I t y p e d a d i r e c t c o m m a n d , L O A D f i l l s m e m o r y w i t h

n e p r o g r a m f r o m t a p e o d i s k . I t h e r e w a a l r e a d y a p r g r a m i m e m o r y , i v a n i s h e s a n i t v a r i a b l e s a r e t h r o w na w a y . B u t L O A D c o m m a n d e x e c u t e d w i t h i n p r o g r a m i q u i t e d i f f e r e n t . T h n e p r o g r a m c o m e s i n b u e x i s t i n g v a r ia b l e s a r n o s c r a p p e d — t h e y a r p r e s e r v e d s t h a t t h n e p r o g r a m c a u s t h e m . T h i s i p o w e r f u l p r o g r a m m i n g t e c hn i q u e c a l l e d c h a i n i n g , w h i c h l e t s o n p r o g r a m c o n t i n u e p r c e s s i n g d a t a t h a t w a g e n e r a t e d b p r e v i o u s p r o g r a m .

I n v i s i b l e F i n g e r sD i r e c t k e y b o a r d s t a t e m e n t s c a p e r f o r m c e r t a i n t a s k s t h a t p r g r a m s c a n ' t ( a t l e a s t , n o i t h u s u a l w a y ) . F o e x a m p l e , i w w a n t p r o g r a m t o i n v i t e s t u d e n t t t y p e i f o r m u l a ,B A S I C d o e s n ' t a l l o w t h f o r m u l a t b e v a l u a t e d ( a I N P U Ts t a t e m e n t w o n ' t e v a l u t e t h e f o r m u l a a 4 )

S i m i l a r l y , s u p p o s e w w a n t o n p r o g r a m — p e r h a p sm a i n m e n u p r o g r a m — t o l o a d a n r u a n o t h e r p r o g r a m .T h a t ' s h a r d t d b e c a u s e B A S I C w a n t s t c h a i n t h n e p r g r a m t t h o l o n e . I n s t e a d o s t a r t i n g t h n e x t p r o g r a mf r e s h , i t r i e s t m a k e i c o n t i n u a t i o n o t h p r e v i o u s p r g r a m . O r a r e o c c a s i o n s , t h e r e m a b r e a l n e e d t a l l o wp r o g r a m t c h a n g e i t s e l f , a l t h o u g h t h i s i t r i c k y b e c a u s e e v e r yt i m e y o c h a n g e p r o g r a m ( b e d i t i n g l i n e , f o e x a m p l e ) , i t v a r i a b l e s g a w a y . I t ' s h a r d f o a n y p r o g r a m t c o n t i n u e r u n i n g a f t e r i t v a r i a b l e v a l u e s d i s a p p e a r .

W c a n a c c o m p l i s h t h e s e t h i n g s , h o w e v e r , b u s i n gs t a r t l i n g t e c h n i q u e : m a k i n g t h c o m p u t e r t y p e o i t o w k e b o a r d . H o c a c o m p u t e r d t h i s ? I d o e s n ' t e v e n h a v e a n yf i n g e r s .

H e r e ' s h o i w o r k s . W h e n y o s t r i k e k e y , t h i n f o rm a t i o n a l w a y s g o e s f i r s t t m e m o r y a r e a c a l l e d t h e k e y b o a r db u f f e r . A f t e r i g e t s t h e r e , i i p i c k e d u a n u s e d b t h c o p u t e r . I w c a p u c h a r a c t e r i t h k e y b o a r d b u f f e r w i t h o u ta c t u a l l y p r e s s i n g a n k e y s , i w i l l a p p e a r t h a v e b e e n t y p e d ,a n t h c o m p u t e r r e s p o n d s e x a c t l y a s i t h c o r r e s p o n d i n g k e w a p r e s s e d .

2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 38/228

C h a p t e rI

S e l f - K e y i n g L L e t ' s t r y q u i c k e x a m p l e t s e h o i w o r k s . W e ' l l a s t h 1 2 t s e l f - t y p e t h l e t t e r X P O K E 2 0 8 , 1 : P O K E 8 4 2 , 8 8

T h f i r s t P O K E t e l l s t h c o m p u t e r h o m a n y c h a r a c t e r sa r w a i t i n g i t h k e y b o a r d b u f f e r . T h s e c o n d p u t s t h e c h a r - I a c t e r i t h f i r s t s l o t o t h b u f f e r . A f t e r y o t y p e t h l i n ea n p r e s s R E T U R N , t h c o m p u t e r r e p o r t s R E A D Y a n a c t s a i y o h a p r e s s e d t h k e y . T h l e t t e r a p p e a r s o t h s c r e e n a n t h e c u r s o r f l a s h e s t i t r i g h t . I w o u l d b e a s i e rj u s t t t y p e t h X o c o u r s e , b u w e ' v e e s t a b l i s h e d n e c p a b i l i t y . p r o g r a m c a n o w , i e f f e c t , t y p e o t h k e y b o a r d .

U s i n g t h S c r e e nW i t h t h i s t e c h n i q u e a l o n e , y o u ' r e l i m i t e d t p r e t t y s h o r t c o m a n d s . T h k e y b o a r d b u f f e r u s u a l l y h a s i z e l i m i t o a b o u tn i n e c h a r a c t e r s . A l s o , i t ' s c u m b e r s o m e f o p r o g r a m t p u c h a r a c t e r s i n t o t h b u f f e r o n a t i m e . B u o C o m m o d o r em a c h i n e s w c a t a k e a d v a n t a g e o f s c r e e n e d i t i n g t p r o c e s sl o n g e r d i r e c t c o m m a n d s .

W h e n e v e r y o p r e s s t h R E T U R N k e y , t h c o m p u t e rr e a d s t h s c r e e n . W h a t e v e r i f i n d s t h e r e , i d o e s — p e r f o r mc o m m a n d , e n t e r a l i n e , o w h a t e v e r . T m a k e p r o g r a m e x c u t e a l o n g d i r e c t - m o d e c o m m a n d , f o l l o w t h e s e s t e p s :1 P R I N T t h c o m m a n d o t h s c r e e n i k n o w n p l a c e .2 P o s i t i o n t h e c u r s o r t h r e e l i n e s a b o v e t h c o m m a n d t b

e x e c u t e d .3 E n t e r P O K E 2 0 8 , 1 s o t h o p e r a t i n g s y s t e m w i l l k n o w t h a t

t h e r e i o n k e y p r e s s s t o r e d i t h k e y b o a r d b u f f e r .4 P u c a r r i a g e r e t u r n i t h k e y b o a r d b u f f e r b e n t e r i n g

P O K E 8 4 2 , 1 3 .5 T e r m i n a t e e x e c u t i o n w i t h a E N c o m m a n d .

W h e n t h p r o g r a m r e a c h e s E N D , h e r e ' s w h a t h a p p e n s .T h d e s i r e d c o m m a n d i o t h e s c r e e n a n t h R E T U R N i i t h k e y b o a r d b u f f e r . T h p r o g r a m t e r m i n a t e s , a n t h c o m - ' — p u t e r p r i n t s R E A D Y . A l t h o u g h t h p r o g r a m h a e n d e d , t h c o m p u t e r r e c e i v e s t h R E T U R N a i y o u h a d j u s t p r e s s e d t h a tk e y , s i e x e c u t e s t h e l i n e o t h s c r e e n . A m o n g o t h e r t h i n g s , < — t h a t l i n e m i g h t c o n t a i n G O T O o C O N T t h a t w o u l d c o n t i n u et h p r o g r a m .

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 39/228

P r o g r a m m i n g

S i m p l e E x a m p l e_ H e r e ' s s i m p l e p r o g r a m t h a t u s e s t h d y n a m i c k e y b o a r dI m e t h o d t d s o m e t h i n g n o r m a l l y f o r b i d d e n b B A S I C :

c o m p u t e d G O T O . I m o s t c a s e s , a s t r a i g h t f o r w a r d O N - G O T O_ c o m m a n d d o e s t h s a m e j o b e t t e r , b u l e t ' s u s t h i s e x a m p l e

f o t h s a k e o s i m p l i c i t y .E n t e r t h e f o l l o w i n g l i n e s :

J 1 2 P R I N T " P I C K A N U M B E R T 5 P 1 3 I N P U T " N U M B E R " ; LK 1 4 I L < O L > T H E N 1 3 Q H 1 5 0 P R I N T C H R $ ( 1 4 7 )E 1 6 P R I N TA 1 7 P R I N TG 1 8 P R I N T " G O T O " ; L * 1 0 0B 1 9 P R I N T C H R $ ( 1 9 )

T h p r o g r a m i s n ' t f i n i s h e d , b u y o m i g h t l i k e t s e w h a tw h a v e s f a r . I y o r u i a n e n t e r 3 i r e s p o n s e t t h p r o m p t , y o u ' l l f i n d t h p r o g r a m s t o p p e d w i t h t h e c u r s o r b l i n ki n o v e r l i n e t h a t s a y s G O T O 3 0 0 . T e x e c u t e t h a t d i r e c tc o m m a n d , a l y o u ' d n e e d t d i p r e s s R E T U R N . W h e n w c o m p l e t e t h p r o g r a m , i w i l l p r e s s R E T U R N b i t s e l f . F i n i s ht h p r o g r a m b e n t e r i n g t h e s e l i n e s :P 2 0 P O K E 2 0 8 , 1B 2 1 P O K E 8 4 2 , 1 3C 2 2 E N J 3 0 P R I N T " T H I S I L I N E 3 0 0 "D 3 1 G O T O 1 2 D 4 0 P R I N T " H E R E ' S 4 0 0 "Q 4 1 G O T O 1 2 K 5 0 P R I N T " L I N E 5 0 I T H E E N D "

I t ' s a e a s y a t h a t . O n c e y o g r a s p t h b a s i c m e t h o d , a l s o r t s o i n t e r e s t i n g a p p l i c a t i o n s c o m e t m i n d .

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

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

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 40/228

C h a p t e r

A l l o w u s e r t e n t e r a f o r m u l a t h a t t h p r o g r a m w i l l u s e ; ' A l l o w p r o g r a m t l o a d a n o t h e r p r o g r a m ;A l l o w p r o g r a m t m o d i f y i t s e l f ( t r i c k y ) ; i R u t e s t p r o g r a m s t d e t e r m i n e , f o i n s t a n c e , h o t h c o m - ' — p u t e r r e s p o n d s t o c e r t a i n d i r e c t c o m m a n d s a n c a l c u l a t i o n s .

K e y b o a r d B u f f e r L o c a t i o n sT h k e y b o a r d b u f f e r c o u n t e r o t h 1 2 i a l o c a t i o n 2 0 8 , a n t h s t a r t o t h b u f f e r i 8 4 2 . U s u a l l y , y o u r p r o g r a m m u s tP O K E v a l u e o i n t o t h c o u n t e r , a n v a l u e o 1 ( t h ec h a r a c t e r c o d e f o R E T U R N ) i n t o t h b u f f e r . T h a t t e l l s t h c o m p u t e r t h e r e ' s o n R E T U R N c h a r a c t e r i t h b u f f e r w a i t i n gt b p r o c e s s e d . I t h e r e ' s m o r e t h a n o n l i n e o d i r e c t - m o d ec o m m a n d s o t h s c r e e n t b p e r f o r m e d , y o u n e e d h i g h e rc o u n t a n m o r e c h a r a c t e r s .

E n t e r i n g F o r m u l aL e t ' s w r i t e b r i e f p r o g r a m t h a t a l l o w s s t u d e n t t e n t e r f o m u l a a n d t h e n g e n e r a t e s t a b l e o f v a l u e s b a s e d o t h f o m u l a . M o r e c o m p l e x v e r s i o n s o t h p r o g r a m m i g h t s o l v e a e q u a t i o n o d r a w g r a p h , b u w e ' l l k e e p t h e x a m p l e s i m p l e .I p r a c t i c e , i w o u l d b w i s e f o y o u r p r o g r a m t c h e c k f o v a l i d s y n t a x b e f o r e e v a l u a t i n g t h f o r m u l a . A g a i n , f o t h s a k eo b r e v i t y , w e ' l l d o n l y t h d y n a m i c k e y b o a r d p o r t i o n .M 1 0 P R I N T H { C L R } { D O W N ) F O R M U L A E V A L U A T I O N . " : P R I N T

" I N P U T F O R M U L A "J 1 1 P R I N T " B A S E D O N { S H I F T - S P A C E } V A R I A B L E X " : P R I N

T " S U C H A S : " : P R I N T " { D O W N } { 2 S P A C E S } Y = X * 7 - S QR ( X ) " . - P R I N T

R 1 2 P R I N T " Y O U R F O R M U L A : " : I N P U T " { D O W N } { 2 S P A C E S }Y = " ; F $ : P R I N T C H R $ ( 1 4 7 ) : P R I N T : P R I N T

C 1 3 P R I N T " Y = " ; F $ ; I I : G O T O 1 5 0 " : D I M V ( 1 0 ) : F O R X = 1 T O 1 0: P R I N T C H R $ ( 1 9 )

H 1 4 P O K E 2 0 8 , 1 : P O K E 8 4 2 , 1 3 : E N DF 1 5 V ( X ) = Y : N E X T X : F O R X = l T O 1 0 : P R I N T X , V ( X ) : N E

L N o t i c e h o t h i s p r o g r a m d o e s t a s k w h i c h w o u l d b d i

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

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 41/228

P r o g r a m m i n g

L o a d i n g A n o t h e r P r o g r a mI y o p u L O A D c o m m a n d i p r o g r a m , t h n e p r o g r a md o e s n ' t l o a d i t h u s u a l w a y . I n s t e a d , i t ' s c h a i n e d t t h o l p r o g r a m . T h n e p r o g r a m r e t a i n s t h v a r i a b l e s a n a r r a y s ( i c e r t a i n r u l e s a r o b s e r v e d ) , a n t h e f f e c t i t h a t o f t w s u c c e s s i v e p r o g r a m s w o r k i n g c o n t i n u o u s l y o s i n g l e j o b .T h a t ' s n o a l w a y s w h a t i w a n t e d . E s p e c i a l l y w i t h m e n u p r g r a m s o b o o t s t r a p s ( p r o g r a m - l o a d i n g p r o g r a m s ) , y o u r g o a lm a b s i m p l y t s t a r t t h n e p r o g r a m w i t h o u t p r e s e r v i n gv a r i a b l e s o d a t a f r o m t h o l o n e . T h a t ' s w h a t h a p p e n s w h e ny o p e r f o r m L O A D a d i r e c t c o m m a n d . W i t h t h d y n a m i ck e y b o a r d t e c h n i q u e , w c a s i m u l a t e t h i s f r o m w i t h i np r o g r a m .

L e t ' s w r i t e a s i m p l e d y n a m i c k e y b o a r d l o a d i n g s e q u e n c e .M 1 0 P R I N T " { C L R } { D O W N } P R O G R A M L O A D I N G " : P R I N T " P R O

G R A M { 2 D O W N } " : P R I N T " P R O G R A M N A M E " : I N P U T P $B 1 1 P R I N T " I C L R } " : P R I N T : P R I N T : P R I N T " L O A D " ; C H R $ ( 3

4 ) ; P $ ; C H R $ ( 3 4 ) ; " , 8 " : P R I N T : P R I N TR Q 1 2 0 P R I N T : P R I N T : P R I N T " R U N " : P R I N T C H R $ ( 1 9 ) : P O K E 2 08 , 2 : P O K E 8 4 2 , 1 3 : P 0 K E 8 4 3 , 1 3

N o t e t h a t t h e r e a r e t w s e p a r a t e c o m m a n d l i n e s : o n f o L O A D a n o n f o R U N . O c o u r s e , i t ' s i m p o r t a n t t p o s i t i o nt h l i n e s c o r r e c t l y , b u t h a t ' s n o h a r d t w o r k o u w h e n y o s e u t h p r o g r a m . Y o s e e v e r y t h i n g h a p p e n i n g o t h s c r e e n , a n d , i y o u ' v e p l a c e d y o u r c o m m a n d l i n e t o h i g h o l o w , t h p r o b l e m i e a s y t s p o t .

T r i c k s a n A d v a n c e d P o i n t sO c o m p u t e r s w i t h c o l o r c a p a b i l i t i e s , y o c a h i d e y o u r d n a m i c k e y b o a r d t r i c k s i y o w i s h . I y o p r i n t t h d i r e c t -m o d e c o m m a n d s i t h s a m e c h a r a c t e r c o l o r a s t h s c r e e nb a c k g r o u n d , t h e y w o n ' t b e v i s i b l e t o y o u , b u t h c o m p u t e rc a s t i l l s e a n e x e c u t e t h e m . Y o u r p r o g r a m c a e v e n c h a n g ec o l o r s a s i r u n s s t h a t s o m e p a r t s o t h c o m m a n d s a r v i s ib l a n s o m e a r n o t .

O c c a s i o n a l l y , y o u ' l l w a n t t u s t h d y n a m i c k e y b o a r dt e c h n i q u e t c h a n g e p r o g r a m a i r u n s . T h a t ' s a l w a y s t r i c k y ,a n i y o a r i 6 m o d e , a n y t i m e y o u a d d o c h a n g e p r g r a m l i n e , t h v a l u e s o a l v a r i a b l e s a r l o s t . I t ' s h a r d t r u

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 42/228

C h a p t e r

p r o g r a m w h e n i t v a r i a b l e s d i s a p p e a r , b u i c a b d o n e i h a d l e d c a r e f u l l y . T h c r i t i c a l v a r i a b l e s c a b r e e n t e r e d u s i n g t h d y n a m i c k e y b o a r d t e c h n i q u e , u s i n g l i n e s s u c h a X = 7 : L = 1 2 0 :G O T O 5 8 0 . A n o t h e r , s o m e w h a t m o r e c u m b e r s o m e m e t h o d i t P O K E t h v a l u e o e a c h v a r i a b l e i n t o s p a r e m e m o r y a n P E E K t h v a l u e l a t e r w h e n n e e d e d . I 1 2 m o d e , v a r i a b l e s a r n o p r o b l e m a v a r i a b l e s a r e n o d i s t u r b e d b c h a n g i n g t h p r o g r a m .

W h w o u l d p r o g r a m n e e d t c h a n g e i t s e l f ? T h m o s tu s u a l s i t u a t i o n i n v o l v e s c o n v e r t i n g a A S C I I p r o g r a m l i s t i n gi n t o t o k e n i z e d B A S I C f o r m a t . I t ' s c o m m o n t l i s t p r o g r a m s i A S C I I ( u n t o k e n i z e d ) f o r m w h e n t r a n s l a t i n g f r o m o n c o p u t e r t a n o t h e r . T h i s i e s p e c i a l l y t r u e w h e n y o t r a n s f e r p r g r a m s o v e r t h p h o n e l i n e w i t h m o d e m . A e a c h l i n e o f t h eA S C I I l i s t i n g a r r i v e s , i m u s t b e n t e r e d a i i w e r e b e i n gt y p e d , t o s t o r e i i t o k e n i z e d f o r m a t . W h i l e i t ' s p o s s i b l e t d t h w h o l e j o b y h a n d ( b p r i n t i n g e a c h l i n e o t h e s c r e e na n p r e s s i n g R E T U R N ) , t h d y n a m i c k e y b o a r d t e c h n i q u e l e t st h c o m p u t e r d t h i s b u s y w o r k f o y o u .S e l f - E d i t i n g P r o g r a m sT h u s u a l w a t c h a n g e p r o g r a m i t t y p e i n e l i n ea n p r e s s R E T U R N . T h l i n e i e i t h e r a d d e d t t h p r o g r a m o i r e p l a c e s a e x i s t i n g l i n e w i t h t h s a m e l i n e n u m b e r . p r g r a m c a d t h i s , t o o , u s i n g t h d y n a m i c k e y b o a r d t e c h n i q u e .

Y o m i g h t b e w o n d e r i n g w h y o u ' d e v e r n e e d t d e s i g np r o g r a m t h a t m o d i f i e s i t s e l f , a n y w a y . H e r e ' s a e x a m p l e . S u p o s e y o h a v e s o m e t h i n g i s p e c i a l p a r t o m e m o r y — a m c h i n e l a n g u a g e p r o g r a m , a s c r e e n p i c t u r e , o r d a t a t a b l e .W h a t e v e r i i s y o u w a n t t t a k e t h i n f o r m a t i o n a n b u i l d i i n t o s e r i e s o D A T A s t a t e m e n t s s t h a t i c a b r e c o n s t it u t e d b B A S I C p r o g r a m w h e n n e e d e d . P e r h a p s y o u ' d l i k et p u b l i s h s m a l l m a c h i n e l a n g u a g e p r o g r a m i n e w s l e t t e ro m a g a z i n e , a n d w a n t r e a d e r s t b a b l e t t y p e i i n a sD A T A s t a t e m e n t s r a t h e r t h a n t h m o r e c o m p l e x h e x a d e c i m a lc o d e . H o t d i t

F i r s t , l e t ' s w r i t e s o m e d a t a i n t o m e m o r y s t h a t y o u ' l lh a v e s o m e t h i n g t c o n v e r t t D A T A s t a t e m e n t s . H e r e ' sq u i c k p r o g r a m t p u s e r i e s o p r i m e n u m b e r s i n t o m e m o r yl o c a t i o n s 3 0 7 2 - 3 1 2 5 :

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 43/228

P r o g r a m m i n g

H 1 0 P O K E 3 0 7 2 , 2D 1 1 P O K E 3 0 7 3 , 3R 1 2 0 N = 3G 1 3 F O A = 3 0 7 4 T 3 1 2 5H 1 4 N = N + 2R E 1 5 0 F O M = T S Q R ( N ) + . l S T E P 2M 1 6 T = N / MA 1 7 I T = I N T ( T ) T H E N 1 4 B D 1 8 0 N E X TG 1 9 P R I N T N E 2 0 P O K E A , B 2 1 N E X T

T h a t ' s n o t h m o s t e f f i c i e n t p r i m e n u m b e r g e n e r a t o r , b u i d o e s p u t h n u m b e r s i n t o m e m o r y . T h e l a s t n u m b e r s h o u l db 2 5 1 . N o w , s u p p o s e y o w a n t t h e s e v a l u e s i D A T A s t a t em e n t s s t h a t d i f f e r e n t p r o g r a m w i l l b a b l e t P O K E t h e mb a c k a t h s t a r t o t h r u n .

F r e n z i e d A c t i v i t yT y p e N E t m a k e s p a c e f o t h n e p r o g r a m .B 1 L = 1 0 0 : A = 3 0 7 4M 1 P R I N T C H R $ ( 1 4 7 ) : N = 0D 2 P R I N TC 2 P R I N TE 3 P R I N T L ; " D A T A " ;S 3 D $ = S T R $ ( P E E K ( A ) )S 4 I N > T H E N D $ = " , " + M I D $ ( D $ , 2 )Q 4 P R I N T D $ B 5 A = A + 1 : N = N + 1 : I F N < 1 0 A N A < 3 1 2 6 T H E N G O T O 3 D 5 P R I N TJ 6 L = L + 1 0E 6 P R I N T " G O T O 1 5 X 7 P R I N T C H R $ ( 1 9 )J 7 P O K E 2 0 8 , 1 : I F A < 3 1 2 6 T H E N P O K E 2 0 8 , 2X 8 P O K E 8 4 2 , 1 3 : P O K E 8 4 3 , 1 3G 8 E N

B s u r e t t y p e t h s e m i c o l o n a t h e n d s o l i n e s 3 a n 4 5 W h e n y o r u t h p r o g r a m , y o u ' l l s e f r e n z y o a c t i v i t yo t h e s c r e e n f o f e m o m e n t s . T h e n t h a c t i o n s t o p s w i t ht h c u r s o r o v e r l i n e w h i c h s a y s G O T O 1 5 D o n ' t e x e c u t e t h i sl i n e . I n s t e a d , m o v e t h c u r s o r d o w n , t y p e L I S T , a n p r e s s R T U R N . Y o u ' l l f i n d t h a t t h p r o g r a m c o n t a i n s s i n e l i n e s o D A T A s t a t e m e n t s .

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 44/228

C h a p t e r

S t a r t t h n e D A T A l i n e s a t l i n e 1 0 ( v a r i a b l e L ) S i n c e i — t h d a t a m a k e r p r o g r a m e n d s a l o w e r l i n e n u m b e r , t h e r e ' sn d a n g e r o r e p l a c i n g e x i s t i n g l i n e s w i t h n e o n e s . T h C o m o d o r e 1 2 i 1 2 m o d e , u n l i k e t h C o m m o d o r e 6 a n t h ' — 1 2 r u n n i n g i 6 m o d e , d o e s n o r e s e t t h v a r i a b l e s b a c k t z e r o w h e n p r o g r a m l i n e i a d d e d t p r o g r a m . T h e r e f o r e ,i t ' s n e c e s s a r y t s e t h c o u n t e r , N , b a c k t z e r o o l i n e 1 ' — a n t s i m p l y i n c r e m e n t L l i n e n u m b e r , b t e n .

A f t e r t h e D A T A l i n e s h a v e b e e n c r e a t e d — y o u ' v e g e n e ra t e d o n l y f e w — y o u m i g h t w a n t t g e r i o t h p r o g r a mt h a t m a d e t h e m . Y o c o u l d d t h i s m a n u a l l y b c l e a r i n g t h s c r e e n a n g i v i n g t h e d i r e c t c o m m a n d :F O J = 1 0 T 8 S T E P 5 : P R I N T J N E X T

T h i s p r i n t s t h l i n e n u m b e r s o b l a n k s c r e e n . Y o c o u l dt h e n m o v e t h c u r s o r b a c k a n s t r i k e R E T U R N 1 t i m e s ,e l i m i n a t i n g t h e l i n e s . I w o u l d t a k e l i t t l e i n g e n u i t y , b u y o c o u l d e v e n c a u s e t h p r o g r a m t w i p e i t s e l f o u t u s i n g t h d n a m i c k e y b o a r d . ( H i n t : C r u n c h t h p r o g r a m i n t o f e w e r t h a nt e l i n e s — t h e n s t u f f t h k e y b o a r d b u f f e r w i t h t h s a m e n u b e o R E T U R N c h a r a c t e r s . )

I t ' s b e e n l o n g v o y a g e . I y o u ' v e s t a y e d w i t h i t y o c a p r o b a b l y s e h o t h d y n a m i c k e y b o a r d t e c h n i q u e e x p a n d sw h a t y o u c a d w i t h t h c o m p u t e r . T h o u g h i r e q u i r e s c a r e ,i a l s o c r e a t e s n e p o s s i b i l i t i e s . " D y n a m i c k e y b o a r d " i n o j u s t b u z z w o r d , a l t h o u g h y o m a a d i p r o u d l y t y o u rv o c a b u l a r y . I t ' s n e r e s o u r c e .

3

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 45/228

J u m p S e a r c hJ e r r y S t u r d i v a n t

L e a r n h o t h b i n a r y s e a r c h m e t h o d c a s p e e d u d a t a h a n d l i n g .T h s h o r t d e m o n s t r a t i o n p r o g r a m l i s t e d h e r e r u n s i e i t h e r 6 o 1 2 m o d e .

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

F o d e m o n s t r a t i o n , t y p e i n s a v e , a n r u " J u m pS e a r c h . " P r o g r a m 1 - w i l l o p e r a t e i n e i t h e r 6 o 1 2 m o d e .

T h d e m o p r o g r a m c r e a t e s l i s t o t e c i t y n a m e s i a p h a b e t i c o r d e r , w i t h p o p u l a t i o n f i g u r e s f o e a c h c i t y ( o c o u r s e , a a c t u a l p r o g r a m w o u l d c o n t a i n m u c h m o r e d a t a ) .L i n e s 1 0 0 - 1 4 0 s t o r e t h c i t y n a m e s i s t r i n g a r r a y a n t h p o p u l a t i o n f i g u r e s i m a t c h i n g n u m e r i c a r r a y . O n c e t h i s i d o n e , y o c a f i n d t h p o p u l a t i o n o a n c i t y i t h l i s t b s e a r c h i n g f o i t n a m e . F o e x a m p l e , i y o u r s e a r c h f i n d s t h a tA K R O N i s t o r e d i a r r a y e l e m e n t S $ ( 2 ) , t h e n t h p o p u l a t i o nf o A k r o n c a b e f o u n d i t h n u m e r i c a r r a y e l e m e n t P P ( 2 ) .

T h c i t y n a m e s a r s t o r e d i t h e a r r a y i a l p h a b e t i c a l o rd e b e c a u s e t h i s s e a r c h t e c h n i q u e w o r k s o n l y o d a t a t h a t h a b e e n a r r a n g e d i a l p h a b e t i c o n u m e r i c o r d e r . I y o c o n s i d e r t h s i t u a t i o n f o m o m e n t , y o u ' l l r e a l i z e t h a t n o r g a n i z e ds e a r c h i n g m e t h o d c a s p e e d u t h h u n t f o p a r t i c u l a r i t e mi r a n d o m l y a r r a n g e d s e o d a t a . I y o c a n ' t t e l l w h e t h e rw o r d y o u ' v e f o u n d s h o u l d c o m e b e f o r e o a f t e r t h w o r dy o u ' r e l o o k i n g f o r , t h e n y o u ' l l h a v e t e x a m i n e e v e r y w o r d i t h l i s t u n t i l y o f i n d a e x a c t m a t c h . A r r a n g i n g t h d a t a i n t oa l p h a b e t i c o r n u m e r i c o r d e r , c a l l e d s o r t i n g , i s e p a r a t e p r o bl e m . J u s t r e m e m b e r t h a t o n l y o r d e r e d d a t a c a b s e a r c h e de f f i c i e n t l y .

T h s i m p l e s t w a t f i n d a w o r d i a a l p h a b e t i c a l l i s t i st s t a r t a t h A ' a n h u n t f o r w a r d t h r o u g h t h a l p h a b e t u n t i ly o f i n d m a t c h . s e q u e n t i a l s e a r c h o t h i s t y p e i v e r y e a s yt p r o g r a m ( a l l y o u n e e d i F O R - N E X T l o o p ) , b u i t ' s a l s os l o w a n i n e f f i c i e n t . W h e n t h t a r g e t w o r d i t o w a r d t h e n

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 46/228

C h a p t e r

o t h a l p h a b e t , s e q u e n t i a l s e a r c h i n g w a s t e s l o o t i m e l o o k - ' — i n t h r o u g h a l t h p r e c e d i n g w o r d s .

J u m p t t h C e n t e rT h b i n a r y s e a r c h m e t h o d ( c a l l e d b i n a r y b e c a u s e i r e p e a t e d l y - d i v i d e s t h d a t a l i s t i h a l f ) i m u c h f a s t e r . R a t h e r t h a n s t a r t -i n a t h b e g i n n i n g o t h e a l p h a b e t , i j u m p s i a t h c e n t e r .L e t ' s l o o k a t h e x a m p l e p r o g r a m t s e h o t h i s w o r k s .

T h v a r i a b l e s t a n d s f o t h b e g i n n i n g o t h w o r d l i s t ,s t a n d s f o t h e n d , a n r e p r e s e n t s t h e c e n t e r . S a t h a t y o u rt a r g e t w o r d i A T L A N T A . W h e n t h s e a r c h b e g i n s , l i n e 2 0 f i n d s t h c e n t e r o f t h t e n - w o r d l i s t a n j u m p s t t h a t p o s i t i o n( i t h i s c a s e f i n d i n g t h s i x t h w o r d , A N A H E I M ) . S i n c e A N H E I M d o e s n ' t m a t c h A T L A N T A , t h p r o g r a m s k i p s t l i n e 2 5 f o c r i t i c a l t e s t .

A t h i s p o i n t t h d a t a b a s e i d i v i d e d i n t o t w b l o c k s ,l o w e r a n h i g h e r . T h p r o g r a m f i r s t d e c i d e s w h i c h b l o c k h o l d st h t a r g e t w o r d , t h e n j u m p s t t h e c e n t e r o f t h a t b l o c k t c o t i n u e t h s e a r c h . S i n c e A T L A N T A c o m e s a f t e r A N A H E I M i t h e a l p h a b e t , i m u s t b s t o r e d i t h h i g h e r b l o c k o w o r d s .N o t e t h a t i n j u s t o n s t e p , y o u ' v e e l i m i n a t e d t h n e e d t l o o ka a n y t h i n g i t h f i r s t h a l f o f t h e d a t a b a s e . s e q u e n t i a ls e a r c h ( w h i c h c o m p a r e s A T L A N T A t A B I L E N E , t h e n t A R O N , t h e n t A L B A N Y , a n s f o r t h ) t a k e s s i s t e p s t a c c o m p l i s h t h s a m e r e s u l t .

N o i t ' s t i m e f o t h s e c o n d j u m p . L i n e s 2 6 0 - 2 7 0 s e n e b e g i n n i n g p o i n t j u s t a b o v e t h e c e n t e r ( 1 a n g o b a c k t l i n e 2 0 0 . T h p r o g r a m f i n d s t h c e n t e r o f t h n e l i s t ( w h i c h c o n s i s t s o f o u r w o r d s , A N C H O R A G E t A U S T I N )a n j u m p s t t h a t p o s i t i o n . T h i s t i m e t h t a r g e t w o r d m a t c h e st h f o u n d w o r d . W h i l e t h b i n a r y m e t h o d f o u n d t h t a r g e tw o r d w i t h o n l y t w c o m p a r i s o n s , s e q u e n t i a l s e a r c h w o u l dr e q u i r e n i n e ( e i g h t c o m p a r i s o n s t e l i m i n a t e A B I L E N E t h r o u g hA T H E N S , a n n i n t h t c o n f i r m A T L A N T A ) . —

T h e m o r e d a t a y o h a v e , t h m o r e t i m e t h b i n a r ym e t h o d s a v e s . F o i n s t a n c e , i t h l i s t c o n t a i n s 1 , 0 0 0 w o r d s ,m o s t w o r d s a r f o u n d i a b o u t c o m p a r i s o n s ( t h e s e q u e n t i a lm e t h o d u s u a l l y r e q u i r e s h u n d r e d s ) . I y o u e x p a n d t h l i s t t 1 0 , 0 0 0 w o r d s , o n l y a b o u t 1 c o m p a r i s o n s a r r e q u i r e d ( c o mp a r e d t t h o u s a n d s f o t h s e q u e n t i a l m e t h o d ) . T h s e c r e t l i e si t h h a l v i n g t e c h n i q u e . B r e p e a t e d l y c h o p p i n g t h l i s t i

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 47/228

P r o g r a m m i n g

h a l f , t h i s m e t h o d q u i c k l y e l i m i n a t e s l a r g e c h u n k s o d a t a f r o mc o n s i d e r a t i o n a n z e r o s i o t h t a r g e t . O c o u r s e , y o u ' r e n o l i m i t e d t o s t r i n g d a t a . W i t h s l i g h t m o d i f i c a t i o n s t h i s r o u t i n ec a s e a r c h ' n u m e r i c d a t a a w e l l .P r o g r a m 1 - 5 . J u m p S e a r c hF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

C 1 0 N = 1 0M 1 1 D I S $ ( N ) , P P ( N )H 1 2 F O 1 = T K 1 3 R E A D S $ ( I ) , P P ( I )A 1 4 N E X TX 1 5 E = K 1 6 B = X 1 7 0 P = 0S 1 8 P R I N T " E N T E R C I T Y "S 1 9 I N P U T C H F 2 0 0 C = I N T ( ( E + l - B ) / 2 ) + BQ 2 1 I E - B < 3 T H E N 3 0 A J 2 2 0 I C $ < > S $ ( C ) T H E N 2 5 H 2 3 P = A 2 4 G O T O 3 4 G 2 5 I C $ < S $ ( C ) T H E N 2 8 M 2 6 B = C + 1J 2 7 G O T O 2 0 Q 2 8 E = C - 1A 2 9 G O T O 2 0 H 3 0 F O I = T X 3 1 I C $ < > S $ ( I ) T H E N 3 3 J 3 2 0 P = ID 3 3 N E X TJ 3 4 I P < > 0 T H E N 3 7 R Q 3 5 0 P R I N T " D A T A N O T F O U N D . "M 3 6 G O T O 1 5 0X 3 7 P R I N T S $ ( P ) , P P ( P )C P 3 8 0 G O T O 1 5 E 9 9 R E C I T Y P O P U L A T I O N D A T AP 1 0 0 0 D A T A A B I L E N E , 8 9 0 0 0Q H 1 0 1 0 D A T A A K R O N , 2 3 7 0 0 0K 1 0 2 0 D A T A A L B A N Y , 2 5 0 0 0 0C 1 0 3 0 D A T A A L B U Q U E R Q U E , 3 3 2 0 0 0X 1 0 4 0 D A T A A L V E R I N A , 2 9 0 0 0H H 1 0 5 0 D A T A A N A H E I M , 2 1 9 0 0 0R 1 0 6 0 D A T A A N C H O R A G E , 1 7 4 5 0 0K 1 0 7 0 D A T A A T H E N S , 1 5 0 0 0 0P C 1 0 8 0 D A T A A T L A N T A , 4 2 5 0 0 0X 1 0 9 0 D A T A A U S T I N , 3 4 6 0 0 0

3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 48/228

C o d e r - D e c o d e rW M S h o c k l e y

P r o t e c t t h p r i v a c y o f y o u r D A T A s t a t e m e n t s w i t h t h i s s h o r t r o u t i n et h a t s c r a m b l e s a n r e s t o r e s a n t e x t . I t u s e f u l i a l m o s t a n p r g r a m t h a t k e e p s i n f o r m a t i o n i D A T A s t a t e m e n t s .

P r o b a b l y t h m o s t c o n v e n i e n t w a t s t o r e l i s t s o i n f o r m a t i o ni B A S I C p r o g r a m s i t u s D A T A s t a t e m e n t s . w o r d g a m el i k e H a n g m a n , f o i n s t a n c e , m i g h t h a v e 5 0 - 1 0 0 w o r d s i D A T A . T h q u e s t i o n s a n a n s w e r s i t r i v i a g a m e w o u l d f i n i c e l y i D A T A s t a t e m e n t s . A a d v e n t u r e g a m e w o u l d c o n t a i nl i s t s o r o o m s a n d t h e i r t r e a s u r e s . h i s t o r y q u i z w o u l d c o t a i n n a m e s a n d a t e s . T h e r e a r m a n y p o s s i b i l i t i e s .

B u D A T A s t a t e m e n t s a r e n ' t v e r y s e c u r e . S o m e o n e c a e a s i l y l i s t t h p r o g r a m , w h e r e t h w o r d s , q u e s t i o n s , r o o m s ,h i s t o r y f a c t s , a n s o n a r r i g h t t h e r e f o t h u s e r t r e a d o m e m o r i z e . I o t h e r s i t u a t i o n s — a p e r s o n a l d i a r y , s a y — y o uw a n t t h i n f o r m a t i o n k e p t s e c r e t f r o m a n y o n e b u y o u r s e l f .

S c r a m b l i n g C h a r a c t e r s" C o d e r - D e c o d e r " i a s h o r t u t i l i t y p r o g r a m w h i c h t r a n s f o r m sn o r m a l D A T A i n p u t s i n t o s e e m i n g g i b b e r i s h . I t h p r o g r a m i l i s t e d , t h D A T A s t a t e m e n t s a r a l m o s t i m p o s s i b l e t r e a d .s e c o n d p a r t o t h p r o g r a m ( l i n e s 6 3 2 1 0 o n r e t r a n s l a t e s t h g i b b e r i s h i n t o t h o r i g i n a l D A T A s t a t e m e n t s .

T y p e i t h p r o g r a m a n d s a v e c o p y . C o d e r - D e c o d e r a l o w s D A T A s t a t e m e n t s t b t y p e d i d i r e c t l y , w i t h o u t l i n en u m b e r s o t h w o r d D A T A . I u s e s t h d y n a m i c k e y b o a r dt e c h n i q u e t a d D A T A s t a t e m e n t s t m e m o r y . T h C o d e rs e c t i o n ( l i n e s 6 3 0 1 0 - 6 3 1 3 0 ) c a n b e u s e d a s s u b r o u t i n e t j g e n e r a t e s t a t e m e n t s f o p r o g r a m a l r e a d y i m e m o r y . I c a b a d d e d a i s O n c e i t ' s i m e m o r y w i t h t h p r o g r a m , j u s tt y p e R U 6 3 0 1 0 . I w i l l c o n t i n u e u n t i l t h w o r d E N i t y p e da t h p r o m p t .

A d d i n g I t P r o g r a m I T h t w r o u t i n e s a r s h o r t e n o u g h s t h a t t h e y c a b l i s t e do t h e s c r e e n ( a f t e r b e i n g l o a d e d ) a n a d d e d t p r o g r a m o 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 49/228

P r o g r a m m i n g

4 0 - c o l u m n c o m p u t e r s . L o a d t h C o d e r p o r t i o n o t h p r o g r a ma n l i s t i o t h s c r e e n . L o a d t h p r o g r a m t w h i c h i i t b a p p e n d e d . T h e n g t t h t o o t h e s c r e e n a n p r e s s R T U R N e n o u g h t i m e s t e n t e r t h l i n e s o t h C o d e r r o u t i n ei n t o t h p r o g r a m i m e m o r y .

T h D e c o d e r s e c t i o n ( l i n e s 6 3 2 1 0 - 6 3 3 0 0 ) c a b a d d e d i t h s a m e w a y . T h i s r o u t i n e t u r n s t h D A T A s t a t e m e n t s b a c ki n t o w h a t y o o r i g i n a l l y t y p e d i n T h D A T A s t a t e m e n t s a r r e a d i n t o t h v a r i a b l e A $ A f t e r d e c o d i n g , a n u n s c r a m b l e dw o r d i r e t u r n e d t t h p r o g r a m a s B $ . W h e n y o h a v e m o r et h a n o n D A T A s t a t e m e n t , u s F O R - N E X T l o o p t o r e t r i e v et h c o d e d w o r d s .

T h e r e a r c o u p l e o r e s t r i c t i o n s w h i c h m u s t b o b s e r v e d .C o m m a s , c o l o n s , a n s e m i c o l o n s c a n n o t b e u s e d i t h i n p u t s .T h l e t t e r s a n d n u m b e r s a n d e x t r a c h a r a c t e r s w h i c h c a b u s e d a r l i s t e d i S $ d e f i n e d i l i n e 6 3 2 2 0 . O t h e r s c a n b a d d e d b y e x t e n d i n g S a n S l a n t h 4 i t h l o o p ( l i n e6 3 0 8 0 i t h C o d e r r o u t i n e a n l i n e 6 3 2 6 0 i t h D e c o d e rr o u t i n e ) .

I n a d d i t i o n , e a c h i n p u t m u s t b n l o n g e r t h a n 1 1 c h a ra c t e r s o t h 1 2 8 , a n u t 7 c h a r a c t e r s o t h 6 4 V I C ,P l u s / 4 , a n 1 6 P r o g r a m 1 - 6 . C o d e r - D e c o d e rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

R E * * * * C O D E R * * * *X = 1 0 0 0 0Y = 8 4 2 : Z = 2 0 8 : B $ I I P R I N T " { W H T H C L R } "S $ = " • A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ? I 1 2 3 4 5 6 7 89 0 S l $ = " 1 7 Z Y X W V U T S R Q P O N M L K J I H G F E D C B A . 0 9 8 7 6 54 3 2 1 ' "P R I N T " E N T E R D A T A T B C O D E D ( ' E N D 1 T Q I T ) : " : I N P U T A $ s I F A $ = " E N D " T H E N E N F O R N = 1 T O L E N ( A $ )F O R R = 1 T O 4 1I F M I D $ ( A $ , N , 1 ) = M I D $ ( S $ , R , 1 ) T H E N C $ = M I D $ ( S I$ , R , 1 ) : R = 4 1N E X T RB $ = B $ + C $ : N E X T NP R I N T " { C L R } I B L K } " X " D A " C H R $ ( 3 4 ) B $ C H R $ ( 3 4 ) "1 D O W N } X = " X + 1 " : G O T O 6 3 0 2 0 "P O K E Y , 1 9 : P O K E Y + 1 , 1 3 : P O K E Y + 2 , 1 3 : P O K E Y + 3 , 1 3: P O K E Z , 4 : E N D

4

M D C X D

E

H

H S A X K R

S

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

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 50/228

C h a p t e r .

A 6 3 2 0 0 R E * * * * D E C O D E R * * * *B 6 3 2 1 0 S I $ = " . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ? ! 1 2 3 4 5 6 7

8 9 0 'B 6 3 2 2 0 S $ = " i ? Z Y X W V U T S R Q P O N M L K J I H G F E D C B A . 0 9 8 7 6 5 4

3 2 1 I MB 6 3 2 3 0 P R I N T M { C L R } E N T E R O D A T A S T A T E M E N T S T O{ S P A C E } D E C O D E : " : I N P U T N : F O R L = 1 T O N : B $ = M "R 6 3 2 4 0 R E A D A $ : R E M G E F R O M D A T A S T A T E M E N T ' K 6 3 2 5 0 F O R N = 1 T O L E N ( A $ )K 6 3 2 6 0 F O R R = 1 T O 4 1B 6 3 2 7 0 I F M I D $ ( A $ , N , 1 ) = M I D $ ( S $ , R , 1 ) T H E N C $ = M I D $ ( S 1

$ R 1 ) : R = 4 1H R 6 3 2 8 0 N E X T RF 6 3 2 9 0 B $ = B $ + C $ : N E X T NK 6 3 3 0 0 P R I N T B $ : N E X T L : R E M U S B I Y O U R P R O G R A M ,

D E L E T E P R I N T B ? I N E C E S S A R Y

4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 51/228

E x p l o r i n g t h 1 2 8 ' sM o n i t o rR i c h a r d M a n s f i e l d

U n l i k e t h V I a n 6 4 t h 1 2 h a b u i l t - i n m o n i t o r . m o n i t o rc a b v a l u a b l e t o o l f o m a c h i n e l a n g u a g e p r o g r a m m e r s . I c a b e s p e c i a l l y u s e f u l f o d e b u g g i n g M r o u t i n e s .

L e t ' s t a k e a l o o k a s p e c i a l f e a t u r e b u i l t i n t o t h n e C o m o d o r e 1 2 w h i c h m a k e s l i f e e a s i e r f o M p r o g r a m m e r s . T h s e v e r a l e a r l y C o m m o d o r e m a c h i n e s — t h e P E T , 8 0 3 2 , a n S u p e r P e t w h i c h p r e c e d e d t h V I a n 6 4 — a l l h a d o o r w a yt M c a l l e d m o n i t o r . O p e n t h i s d o o r a n y o g d o w n b l o w B A S I C , d o w n i n t o t h c o m p u t e r ' s e n g i n e r o o m w h e r e y o c a g e c l o s e t t h m i c r o p r o c e s s o r a n t h c o m p u t e r ' sm e m o r y .

T h V I a n 6 d i n o c o m e w i t h m o n i t o r ( t h o u g h y o c a b u a d d - o n m o n i t o r s o f i n d m o n i t o r p r o g r a m s l i k eS u p e r m o n a n M i c r o m o n i b o o k s ) . N o n e t h e l e s s , i t ' s n i c e t h a v e a r e s i d e n t m o n i t o r , p e r m a n e n t , e a s y p a s s a g e w a y i n t ot h e h e a r t o t h m a c h i n e .

O t h 1 2 8 , y o j u s t t y p e M O N I T O R o r p r e s s F 8 a n y o u ' r e i d i f f e r e n t w o r l d , w i t h n e p r o m p t s a n n e c o m a n d s . H e r e ' s r u n d o w n o t h e v a r i o u s c o m m a n d s :

C o m p a r e t a k e s l o o k a t w s e p a r a t e s e c t i o n s o m e m o r ya n p r i n t s t h a d d r e s s o a n l o c a t i o n s w h i c h d i f f e r . Y o m i g h t u s t h i s t s e w h e t h e r t w p r o g r a m s d i f f e r o t q u i c k l y d e t e r m i n e w h i c h v e r s i o n i t h m o r e r e c e n t . ( E a c hc o m m a n d i s i n g l e l e t t e r , a n a l n u m b e r s a r h e x a d e c i m a l( b a s e 1 6 ) . C o m p a r e , f o e x a m p l e , i a c t i v a t e d w i t h 1 0 0 02 0 0 0 8 0 0 0 w h i c h p r i n t s o u d i f f e r e n c e s i m e m o r y b e t w e e n$ 1 0 0 0 - $ 2 0 0 0 a n d $ 8 0 0 0 - $ 9 0 0 0 . )F i l l f i l l s r a n g e o m e m o r y w i t h s p e c i f i c v a l u e . I t ' s s o m et i m e s u s e d t l a d o w n z o n e o z e r o s i n s a y , t h s e c o n dc a s s e t t e b u f f e r , p r i o r t r u n n i n g c o m m e r c i a l p r o g r a m . T h e n ,y o c a g o b a c k a n l o o k a t h b l a n k e t o z e r o s a n q u i c k l ys e w h i c h l o c a t i o n s a r e b e i n g u s e d b t h c o m m e r c i a l p r o -

[ — ■ 1 g r a m f o s t o r a g e .

4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 52/228

C h a p t e r

G o l i k e S Y S , s t a r t s t h e x e c u t i o n o a M r o u t i n e , w h i c h I — s h o u l d e n w i t h B R i y o w a n t t r e e n t e r t h m o n i t o r .H u n t i p a r t i c u l a r l y u s e f u l f o t r a c k i n g d o w n R O l o c a t i o n s I t h a t y o m i g h t w a n t t u s e . I f f o e x a m p l e , y o k n o w t h a t ' — 6 R O r o u t i n e t p r i n t o u n u m b e r s s t a r t s w i t h P H A i T A X ,y o c o u l d r e q u e s t h u n t f o t h i s p a t t e r n o b y t e s i 1 2 R O a n f i n d o u w h e r e t J S R . ( 1 0 0 0 2 0 0 0 4 A w o u l d I — l o o k f o P H A i T A X . )J u m p , w h i c h i u n d o c u m e n t e d i t h S y s t e m G u i d e , p e r f o r m s

J S t a M r o u t i n e . I d o e s t h s a m e t h i n g a G o w i t ho n e x c e p t i o n . I y o j u m p t a r o u t i n e t h a t e n d s w i t h R T S ,y o r e t u r n t t h m o n i t o r . B u i y o G t t h s a m e r o u t i n e ,t h R T s e n d s y o b a c k t B A S I C .L o a d l o a d s f i l e f r o m t a p e o d i s k .M e m o r y g o e s t h r o u g h a s p e c i f i e d r a n g e o m e m o r y a n p r i n t st h n u m e r i c a n c h a r a c t e r v a l u e s t h e r e i n . T h i s c a b u s e db o t h f o l o c a t i n g s p e c i a l a r e a s o R O l i k e t h B A S I Ck e y w o r d s o f o c h e c k i n g t h a t y o u r M p r o g r a m i w o r k i n gc o r r e c t l y b l o o k i n g a i t b u f f e r s , p o i n t e r s , a n s o n a f t e rB R i r u n n i n g p r o g r a m .R e g i s t e r s s h o w s y o u w h a t ' s c u r r e n t l y i t h A c c u m u l a t o r ,X a n r e g i s t e r s a w e l l a t h p r o g r a m c o u n t e r ( w h e r ey o u w e r e i m e m o r y w h e n B R t o o k e f f e c t ) a n t h s t a t u sr e g i s t e r . T h r e g i s t e r s a r a u t o m a t i c a l l y p r i n t e d o n s c r e e nw h e n y o e n t e r t h m o n i t o r . I t ' s q u i t e u s e f u l w h e n d e b u gg i n g t s e w h e r e y o u h i B R a n w h a t ' s g o i n g o w i t ht h r e g i s t e r s . T h i s i t h e e q u i v a l e n t o i n s e r t i n g S T O P i y o u rB A S I C p r o g r a m s a n t h e n a s k i n g f o v a r i a b l e v a l u e s w i t hV A R I A B L E N A M E s y o c a t r t l o c a t e w h e r e t h i n g s a r g o i n g a w r y .S a v e i v e r y v a l u a b l e . Y o c a s a v e a n s e c t i o n o m e m o r y t d i s k o r t a p e , e v e n t h s c r e e n . I y o u ' v e t r i e d t o s a v e m a c h i n el a n g u a g e p r o g r a m s o t h V I o 6 w i t h o u t m o n i t o r o a s s e m b l e r , y o k n o w h o u s e f u l a b u i l t - i n M S a v e c o m -m a n d i ( / / N A M E " , 0 8 , 1 0 0 0 , 2 0 0 0 ) .T r a n s f e r s o u n d s b e t t e r t h a n i t i s . I a l l o w s y o t m o v e a n s e c t i o n o m e m o r y t a n o t h e r l o c a t i o n . U n f o r t u n a t e l y , m o s tM i s n ' t r e l o c a t a b l e ( J S R s , a n s f o r t h , s t i l l t a r g e t t h e i r o l a d d r e s s e s ) . T h b e s t w a t r e l o c a t e M i t u s a e f f i c i e n t \ a s s e m b l e r w h e r e y o u c a s i m p l y c h a n g e t h s t a r t a d d r e s sa n r e a s s e m b l e a t h n e l o c a t i o n .

4 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 53/228

P r o g r a m m i n g

T h m o n i t o r a l s o a l l o w s y o t c h a n g e t h v a l u e s i t h r e g i s t e r s ( t s e u t e s t ) ; t o d i r e c t l y m o d i f y t h b y t e s i m e m o r y ( n o t t o u s e f u l u n l e s s y o u ' r e t y p i n g i " h e x d u m p "t y p e l i s t i n g f r o m b o o k o m a g a z i n e ) ; a n t d i r e c t l y t y p e i m n e m o n i c s ( v e r y u s e f u l w h e n y o u w a n t t i n s e r t B R K , N O P ,o t e s t v a l u e s ) . P o s s i b l y t h e m o s t v a l u a b l e t o o l i n t h m o n i t o ri t h d i s a s s e m b l e r . L i k e B A S I C ' S L I S T c o m m a n d ,d i s a s s e m b l e r w i l l d i s p l a y t h f u n d a m e n t a l s o u r c e c o d e o a n M L a n t h e n y o c a d i r e c t l y m o d i f y i a n t e s t i a g a i n .T h e r e ' s a l s o m i n i - a s s e m b l e r , b u u n l e s s y o u ' r e c r e a t i n gv e r y s h o r t M r o u t i n e , i t ' s f a b e t t e r t s t i c k w i t h m o r e e f f e ct i v e a s s e m b l e r s .

S o m e o t h f a c i l i t i e s o t h m o n i t o r a r m o r e v a l u a b l et h a n o t h e r s , a n i w o u l d h a v e b e e n n i c e t h a v e s i n g l e - s t e pt r a c e f u n c t i o n . B u w h e n y o u ' r e t r y i n g t h u n t d o w n t h o s e e l s i v e b u g s i a M p r o g r a m , t h e r e ' s n o t h i n g l i k e h a v i n gg o o d , b u i l t - i n m o n i t o r o n l y f u n c t i o n k e a w a y . I f a c t , o s o m e c o m p u t e r s t h m o n i t o r i c a l l e d , s i m p l y , t h d e b u g g e r .

4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 54/228

I m p o r t a n t 1 2 M e m o r yL o c a t i o n s

J i B u t t e r f i e l d

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

T h i s m e m o r y m a a p p l i e s t t h C o m m o d o r e 1 2 w h e n u s e di t h 1 2 m o d e . I 6 m o d e , t h m a c h i n e ' s m a i i d e n t i c a lt t h a t o t h C o m m o d o r e 6 4

T h e r e a r 2 8 p a g e s ( 2 5 6 b y t e s e a c h ) o o v e r h e a d b e f o r et h s t a r t o B A S I C . T h f o l l o w i n g l i s t s h o w s s o m e o t h m o r ei m p o r t a n t l o c a t i o n s .

A r c h i t e c t u r eB a n k n u m b e r s a u s e d i t h B A S I C B A N K c o m m a n d a n t h b u i l t - i n m a c h i n e l a n g u a g e m o n i t o r ' s a d d r e s s i n g s c h e m e a r m i s l e a d i n g . T h b a n k s d n o r e p r e s e n t d i f f e r e n t p h y s i c a lb l o c k s o m e m o r y , b u r a t h e r d i f f e r e n t a r r a n g e m e n t s o t h R A a n R O i t h c o m p u t e r ; c o n f i g u r a t i o n n u m b e r s m i g h tb m o r e a p p r o p r i a t e t e r m . B a n k s h o w s R A l e v e l 0 w h i c h c o n t a i n s w o r k a r e a s a n t h u s e r ' s B A S I C p r o g r a m .B a n k a l s o s h o w s R A M — t h i s t i m e ( f o r a d d r e s s e s a b o v e h e x ad e c i m a l $ 0 4 0 0 ) l e v e l 1 w h i c h c o n t a i n s v a r i a b l e s , a r r a y s , a n s t r i n g s . O t h e r " b a n k s " a r r e a l l y c o n f i g u r a t i o n s , w i t h v a r i o u st y p e s o R O o I / c h i p r e g i s t e r s o v e r l a y i n g R A M . T h u s ,b a n k 1 i B A S I C a n K e r n a l R O a n I / c h i p r e g i s t e r sc o v e r i n g p a r t o R A b a n k 0 B a n k 1 i B A S I C a n K e r n a lR O a n t h e c h a r a c t e r g e n e r a t o r R O o v e r l a y i n g p a r t o R A b a n k 0 A r c h i t e c t u r e i s e s t h a t a d d r e s s e s b e l o w$ 0 4 0 0 i a l b a n k s r e f e r e n c e b a n k o n l y . M e m o r y c o n f i g u r a - j t i o n s o t h e r t h a n t h 1 6 p r e d e f i n e d b a n k s c a b a c h i e v e d b s t o r i n g m a s k v a l u e i a d d r e s s $ F F 0 0 , o c a l l i n g u p r e s t o r e dm a s k s b w r i t i n g t $ F F 0 1 - $ F F 0 4 .

4 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 55/228

P r o g r a m m i n g

M e m o r y M a A l B a n k s :H e D e c i m a l D e s c r i p t i o n0 0 0 0 - 0 0 0 1 0 - 8 5 0 2 o n - c h i p I / p o r t , s i m i l a r t 6 0 0 0 F 1 T y P e : $ F F = s t r i n g ; $ 0 0 = n u m e r i c0 0 1 0 1 6 T y p e : $ 8 0 = i n t e g e r ; $ 0 0 = f l o a t i n g p o i n t0 0 1 5 2 C u r r e n t I / p r o m p t f l a g0 0 1 6 - 0 0 1 7 2 2 - 2 3 I n t e g e r v a l u e0 0 2 D - 0 0 2 E 4 5 - 4 6 P o i n t e r : s t a r t - o f - B A S I C ( b a n k 0 0 0 2 F - 0 0 3 0 4 7 - 4 8 P o i n t e r : s t a r t - o f - v a r i a b l e s ( b a n k 1 0 0 3 1 - 0 0 3 2 4 9 - 5 0 P o i n t e r : s t a r t - o f - a r r a y s ( b a n k 1 0 0 3 3 - 0 0 3 4 5 1 - 5 2 P o i n t e r : e n d - o f - a r r a y s ( b a n k 1 0 0 3 5 - 0 0 3 6 5 3 - 5 4 P o i n t e r : s t r i n g s t o r a g e ( b a n k 1 0 0 3 9 - 0 0 3 A 5 7 - 5 8 P o i n t e r : l i m i t - o f - m e m o r y ( b a n k 1 0 0 3 B - 0 0 3 C 5 9 - 6 0 C u r r e n t B A S I C l i n e n u m b e r0 0 3 D - 0 0 3 E 6 1 - 6 2 P o i n t e r : c u r r e n t c h a r a c t e r i B A S I C t e x t0 0 4 1 - 0 0 4 2 6 5 - 6 6 C u r r e n t D A T A l i n e n u m b e r0 0 4 3 - 0 0 4 4 6 7 - 6 8 P o i n t e r : c u r r e n t D A T A i t e m .0 0 4 7 - 0 0 4 8 7 1 - 7 2 P o i n t e r : c u r r e n t B A S I C v a r i a b l e n a m e0 0 4 9 - 0 0 4 A 7 3 - 7 4 P o i n t e r : c u r r e n t v a r i a b l e a d d r e s s0 0 6 3 9 F l o a t i n g p o i n t a c c u m u l a t o r 1 e x p o n e n t0 0 6 4 - 0 0 6 7 1 0 0 - 1 0 3 F l o a t i n g p o i n t a c c u m u l a t o r 1 m a n t i s s a0 0 6 8 1 0 F l o a t i n g p o i n t a c c u m u l a t o r 1 s i g n0 0 6 A - 0 0 6 F 1 0 6 - 1 1 1 F l o a t i n g p o i n t a c c u m u l a t o r 2 e x p o n e n t ,

a n s o 0 0 7 0 1 1 S i g n c o m p a r i s o n , a c c u m u l a t o r v e r s u s0 0 7 1 1 1 3 F l o a t i n g p o i n t a c c u m u l a t o r l o w - o r d e r

b y t e ( f o r r o u n d i n g )0 0 7 D - 0 0 7 E 1 2 5 - 1 2 6 P o i n t e r : B A S I C r u n t i m e s t a c k0 0 9 0 1 4 S t a t u s w o r d S T f o s e r i a l / t a p e o p e r a t i o n s0 0 9 1 1 4 S T O P a n R V f l a g s0 0 9 8 1 5 N u m b e r o o p e n f i l e s0 0 9 9 1 5 C u r r e n t i n p u t d e v i c e , n o r m a l l y0 0 9 A 1 5 C u r r e n t o u t p u t C M d e v i c e , n o r m a l l y0 0 9 D 1 5 I / m e s s a g e s : 1 9 2 = a l l , 6 4 = e r r o r s ,

0 = n o n e0 0 A 0 - 0 0 A 2 1 6 0 - 1 6 2 J i f f y c l o c k h i g h / m e d i u m / l o w0 0 A E - 0 0 A F 1 7 4 - 1 7 5 E n d i n g a d d r e s s f o L O A D , S A V E , a n d

V E R I F Y0 0 B 7 1 8 N u m b e r o c h a r a c t e r s i c u r r e n t f i l e n a m e0 0 B 8 1 8 C u r r e n t l o g i c a l f i l e n u m b e r0 0 B 9 1 8 5 C u r r e n t s e c o n d a r y a d d r e s s0 0 B A 1 8 C u r r e n t d e v i c e n u m b e r0 0 B B - 0 0 B C 1 8 7 - 1 8 8 A d d r e s s o c u r r e n t f i l e n a m e0 0 C 0 1 9 T a p e m o t o r i n t e r l o c k

4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 56/228

C h a p t e r

H e 0 0 C 8 - 0 0 C BO O C C - O O C DO O D OO O D 1

0 0 D 30 0 D 50 0 D 60 0 D 70 0 D 9O O E O - O O E 10 0 E 2 - 0 0 E 30 0 E 4 - 0 0 E 70 0 E 8 - 0 0 E 9O O E BO O E CO O F B - O O F EO 1 O O - O 1 F F0 1 0 0 - 0 1 3 E0 1 0 0 - 0 1 2 40 1 2 5 - 0 1 3 80 2 0 0 - 0 2 A 10 2 A 2 - 0 2 A E0 2 A F - 0 2 B D0 2 B E - 0 2 C C0 2 C D - 0 2 E 20 2 E 3 - 0 2 F B0 2 F C - 0 2 F D0 3 0 0 - 0 3 1 10 3 1 2 - 0 3 1 30 3 1 4 - 0 3 1 50 3 1 6 - 0 3 1 70 3 1 8 - 0 3 1 90 3 1 A - 0 3 2 D0 3 2 E - 0 3 3 D0 3 3 E - 0 3 4 90 3 4 A - 0 3 5 30 3 5 4 - 0 3 5 D0 3 5 E - 0 3 6 1

4

D e c i m a l2 0 0 - 2 0 32 0 4 - 2 0 52 0

2 0 2 1 2 1

2 1 2 1 2 1 2 2 4 - 2 2 52 2 6 - 2 2 72 2 8 - 2 3 12 3 2 - 2 3 32 3 2 3 2 5 1 - 2 5 42 5 6 - 5 1 12 5 6 - 3 1 82 5 6 - 2 9 22 9 3 - 3 1 25 1 2 - 6 7 36 7 4 - 6 8 66 8 7 - 7 0 17 0 2 - 7 1 67 1 7 - 7 3 87 3 9 - 7 6 37 6 4 - 7 6 57 6 8 - 7 8 57 8 6 - 7 8 77 8 8 - 7 8 97 9 0 - 7 9 17 9 2 - 7 9 37 9 4 - 8 1 38 1 4 - 8 2 98 3 0 - 8 4 18 4 2 - 8 5 18 5 2 - 8 6 18 6 2 - 8 6 5

D e s c r i p t i o nR S - 2 3 2 i n p u t / o u t p u t b u f f e r a d d r e s s e sK e y b o a r d d e c o d e p o i n t e r ( b a n k 1 5 N u m b e r o f c h a r a c t e r s i k e y b o a r dh i f o u u i i e rN u m b e r o p r o g r a m m e d c h a r a c t e r sw a i t i n gK e s h i f t f l a g : 0 = n o s h i f tM a t r i x c o o r d i n a t e o l a s t k e p r e s s e d ( 8 i n k e y )I n p u t f r o m s c r e e n o k e y b o a r d4 0 / 8 0 c o l u m n s : 0 = 4 0 c o l u m n sC h a r a c t e r b a s e : 0 = R O M , 4 = R A MP o i n t e r t c u r r e n t t e x t s c r e e n l i n eP o i n t e r t c u r r e n t c o l o r l i n eS c r e e n m a r g i n s : b o t t o m , t o p , l e f t , r i g h tI n p u t c u r s o r l o g ( r o w , c o l u m n )C u r r e n t c u r s o r l i n eC u r r e n t c u r s o r c o l u m nU n u s e dP r o c e s s o r s t a c k a r e aT a p e e r r o r l o D O w o r k a r e aP R I N T U S I N G w o r k a r e aB A S I C i n p u t b u f f e rR o u t i n e t g e c h a r a c t e r f r o m a n b a n kR o u t i n e t o s t o r e c h a r a c t e r i a n b a n kR o u t i n e t c o m p a r e c h a r a c t e r i a n b a n kJ S t a n o t h e r b a n kJ M t a n o t h e r b a n kF u n c t i o n e x e c u t e h o o kB A S I C i n d i r e c t v e c t o r sU n u s e dI R v e c t o rB r e a k i n t e r r u p t v e c t o rN M i n t e r r u p t v e c t o rK e r n a l v e c t o r sK e r n a l l i n k sK e y b o a r d m a t r i x s h i f t v e c t o r sK e y b o a r d b u f f e rT a s t o p b i t sL i n e w r a p b i t s

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 57/228

P r o g r a m m i n g

H e 0 3 6 2 - 0 3 6 B0 3 6 C - 0 3 7 50 3 7 6 - 0 3 7 F0 3 8 0 - 0 3 9 E0 3 8 60 3 9 F - 0 3 D 10 3 D FF F 0 0F F 0 1 - F F 0 4

D e c i m a l8 6 6 - 8 7 58 7 6 - 8 8 58 8 6 - 8 9 58 9 6 - 9 2 69 0 9 2 7 - 9 3 89 9 6 5 2 8 06 5 2 8 1 - 6 5 2 8 4

B a n k ( B A S I C p r o g r a m s ) :0 4 0 0 - 0 7 F F0 7 F 8 - 0 7 F F0 8 0 0 - 0 9 F F0 A 0 0 - 0 A 0 10 A 0 5 - 0 A 0 60 A 0 7 - 0 A 0 80 A 1 8

1 0 2 4 - 2 0 4 72 0 4 0 - 2 0 4 72 0 4 8 - 2 5 5 92 5 6 0 - 2 5 6 12 5 6 5 - 2 5 6 62 5 6 2 - 2 5 6 32 5 8 4

D e s c r i p t i o nL o g i c a l f i l e n u m b e r t a b l eD e v i c e n u m b e r t a b l eS e c o n d a r y a d d r e s s t a b l eC H R G E T s u b r o u t i n eC H R G O T e n t r yS u b r o u t i n e s t f e t c h f r o m R A b a n k sF l o a t i n g p o i n t a c c u m u l a t o r 1 o v e r f l o wM M c o n f i g u r a t i o n r e g i s t e rM M l o a d c o n f i g u r a t i o n r e g i s t e r s

4 0 - c o l u m n t e x t s c r e e n m e m o r yS p r i t e p o i n t e r sB A S I C r u n t i m e s t a c kV e c t o r : B A S I C r e s t a r tB o t t o m - o f - m e m o r y p o i n t e r ( b a n k 0 T o p - o f - m e m o r y p o i n t e r ( b a n k 1 I n d e x t l a s t c h a r a c t e r i t h R S - 2 3 2 i n

0 A 1 90 A 1 A0 A 1 B

0 A 2 0

2 5 8 5

2 5 8 6

2 5 8 72 5 9 2

0 A 2 20 B 0 0 - 0 B B F0 C 0 0 - 0 D F F0 E 0 0 - 0 F F F1 0 0 0 - 1 0 F F1 1 7 A - 1 1 7 B1 1 7 C - 1 1 7 D1 1 E 9 - 1 1 E A1 2 0 0 - 1 2 0 11 2 0 2 - 1 2 0 31 2 0 4 - 1 2 0 71 2 0 81 2 0 9 - 1 2 0 A1 2 1 0 - 1 2 1 11 2 1 2 - 1 2 1 31 2 1 8 - 1 2 1 A

2 5 9 42 8 1 6 - 3 0 0 7

3 0 7 2 - 3 5 8 33 5 8 4 - 4 0 9 54 0 9 6 - 4 3 5 14 4 7 4 - 4 4 7 54 4 7 6 - 4 4 7 74 5 8 5 - 4 5 8 64 6 0 8 - 4 6 0 94 6 1 0 - 4 6 1 14 6 1 2 - 4 6 1 54 6 1 64 6 1 7 - 4 6 1 84 6 2 4 - 4 6 2 54 6 2 6 - 4 6 2 74 6 3 2 - 4 6 3 4

p u b u f f e rI n d e x t f i r s t c h a r a c t e r i t h R S - 2 3 2 i p u b u f f e rI n d e x t l a s t c h a r a c t e r i t h R S - 2 3 2o u t p u t b u f f e rI n d e x t f i r s t c h a r a c t e r i t h R S - 2 3 2o u t p u t b u f f e rM a x i m u m n u m b e r o c h a r a c t e r s i t h k e y b o a r d b u f f e rK e r e p e a t f l a g : 1 2 8 = a l l , 6 4 = n o n eC a s s e t t e b u f f e r , a l s o u s e d b d i s ka u t o b o o t p r o g r a m s ( C P / M o o t h e r w i s e )R S - 2 3 2 i n p u t , o u t p u t b u f f e r sS p r i t e d e f i n i t i o n a r e a ( 5 6 - 6 3 )P r o g r a m m e d k e l e n g t h s a n d e f i n i t i o n sF l o a t - f i x e d v e c t o rF i x e d - f l o a t v e c t o rL i g h t p e v a l u e s , a n P r e v i o u s B A S I C l i n e n u m b e rP o i n t e r : B A S I C s t a t e m e n t f o C O N TP R I N T U S I N G c h a r a c t e r s ( $ E r r o r t y p e ( E R ) o l a s t e r r o rL i n e n u m b e r o l a s t e r r o r ( E L )P o i n t e r : E n o B A S I C ( b a n k 0 P o i n t e r : B A S I C p r o g r a m l i m i tU S j u m p v e c t o r

4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 58/228

C h a p t e r

H e 1 2 1 B - 1 2 1 F1 C 0 0 - F E F F1 C O O - 1 F F F2 0 0 0 - 3 F F F4 0 0 0 - F E F F

D e c i m a l D e s c r i p t i o n4 6 3 5 - 4 6 3 9 R N s e e d v a l u e7 1 6 8 - 6 5 2 7 9 B A S I C p r o g r a m t e x t a r e a7 1 6 8 - 8 1 9 1 C o l o r m e m o r y ( i h i - r e s s c r e e n i u s e d )8 1 9 2 - 1 6 3 8 3 S c r e e n b i t m a p m e m o r y ( i h i - r e s s c r e e n

i u s e d )1 6 3 8 4 - 6 5 2 7 9 B A S I C p r o g r a m t e x t a r e a ( i h i - r e s

s c r e e n i u s e d )B a n k ( B A S I C v a r i a b l e s ) :0 4 0 0 - F E F F 1 0 2 4 - 6 5 2 7 9 B A S I C v a r i a b l e s , a r r a y s , s t r i n g sB a n k 1 S a m e a b a n k 1 5 b e l o w , e x c e p t :D 0 0 0 - D F F F 5 3 2 4 8 - 5 7 3 4 3 C h a r a c t e r g e n e r a t o r R O B a n k 1 5 4 0 0 0 - C F F FD 0 0 0 - D 0 3 0D 4 0 0 - D 4 1 CD 5 0 0 - D 5 0 AD 6 0 0 - D 6 0 1

D 8 0 0 - D 8 E 7D C 0 0 - D C 0 FD D 0 0 - D D 0 FD F 0 0 - D F 0 AE O O O - F E F FF F 4 7 - F F F F

1 6 3 8 4 - 5 3 2 4 75 3 2 4 8 - 5 3 2 9 65 4 2 7 2 - 5 4 3 0 05 4 5 2 8 - 5 4 5 3 85 4 7 8 4 - 5 4 7 8 5R 1 8 - 1 9

R 3 5 5 2 9 6 - 5 6 2 9 55 6 3 2 0 - 5 6 3 3 65 6 5 7 6 - 5 6 5 9 15 7 0 8 8 - 5 7 0 9 85 7 3 4 4 - 6 5 2 7 96 5 3 5 1 - 6 5 5 3 5

R O M : B A S I C4 0 - c o l u m n v i d e o c h i p ( 8 5 6 4 )S I D s o u n d c h i p ( 6 5 8 1 )M M m e m o r y c o n f i g u r a t i o n c h i p ( 8 7 2 2 )8 0 - c o l u m n v i d e o c h i p ( 8 5 6 3 )V i d e o a d d r e s s , l o w / h i g hV i d e o d a t a , r e a d / w r i t eC o l o r n y b b l e s ( f o r 4 c o l u m n v i d e o )C I ( 6 5 2 6 )C I ( 6 5 2 6 )D M c o n t r o l l e rR O M : K e r n a lR O M : J u m p t a b l e t i m p o r t a n t K e r n a lr o u t i n e s

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 59/228

A l A b o u t C P / M o t h 1 2 H o w a r d G o l k

" " " 1C P / M i o n o t h o l d e s t o p e r a t i n g s y s t e m s — b u t o n o t h n e w e s t a v a i l a b l e f o C o m m o d o r e u s e r s . W e ' v e i n c l u d e d l o t s o p r a c t i c a l e x a m p l e s , u s e f u l t i p s , a n h e l p f u l n o t e s o a v a i l a b l eC P / M s o f t w a r e .

T h C o m m o d o r e 1 2 b r i n g s s o m e t h i n g v e r y n e t C o m m od o r e u s e r s : C P / M ( C o n t r o l P r o g r a m f o M i c r o c o m p u t e r s ) . A t h o u g h C P / M w a b r i e f l y a v a i l a b l e f o t h 6 4 i w a p o o rv e r s i o n w h i c h c o n f o r m e d t o n l y f e o t h s t a n d a r d s f o t r u l y c o m p a t i b l e C P / M s o f t w a r e . W i t h t h 1 2 a n 1 5 7 1 d i s kd r i v e , 1 0 p e r c e n t c o m p a t i b l e v e r s i o n o C P / M h a a r r i v e d .Y o u ' r e p r o b a b l y a w a r e o t h t h o u s a n d s o p r o g r a m s t h a t r u u n d e r C P / M . B u b e f o r e y o i n v e s t l o o t i m e a n m o n e y ,t h e r e a r f e t h i n g s y o s h o u l d k n o w a b o u t w h a t C P / Mi s — - a n d m o r e i m p o r t a n t l y , w h a t i i n o t .

F u n d a m e n t a l D i f f e r e n c eA l c o m p u t e r s h a v e a n o p e r a t i n g s y s t e m ( O S ) . T h O h a n d l e sa l t h p r i m a r y i n p u t , o u t p u t , a n h o u s e k e e p i n g o p e r a t i o n s .W h e n y o t y p e L O A D a n p r e s s R E T U R N o C o m m o d o r e6 4 y o u ' r e i n s t r u c t i n g t h O t l o c a t e a n r e a d i p r o g r a mf r o m t a p e o d i s k . T h O i r e s p o n s i b l e f o a l c o m m u n i c a t i o nb e t w e e n y o u r p r o g r a m s a n p e r i p h e r a l s , s u c h a s t h e d i s k d r i v ea n d i s p l a y s c r e e n .

T h e r e a r m a n y d i f f e r e n t k i n d s o o p e r a t i n g s y s t e m s .C o m m o d o r e c o m p u t e r s h a v e a l w a y s h a d e d i c a t e d o p e r a t i n gs y s t e m s ; t h a t i s e a c h m o d e l ( P E T , C B M , 6 4 V I C - 2 0 , a n s

n o n ) c o n t a i n s i t o w c u s t o m i z e d o p e r a t i n g s y s t e m . B e c a u s es o f t w a r e w r i t t e n f o d e d i c a t e d o p e r a t i n g s y s t e m s i n o t r a n sp o r t a b l e f r o m o n e m a c h i n e t a n o t h e r , e a c h m o d e l r e q u i r e s i t n o w n l i b r a r y o s o f t w a r e . P E p r o g r a m s d i d n ' t r u c o r r e c t l y ( i a a l l ) o 8 0 3 2 s o V I C s a n v i c e v e r s a . M a n y o t h e r p o p u l a rc o m p u t e r s a l s o h a v e d e d i c a t e d o p e r a t i n g s y s t e m s : A p p l e I I

r — A t a r i , a n T i m e x / S i n c l a i r t n a m e f e w .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 60/228

C h a p t e r

C P / M , h o w e v e r , i t r a n s p o r t a b l e o p e r a t i n g s y s t e m . I w a n o w r i t t e n f o a n o n p a r t i c u l a r c o m p u t e r . T h i d e a i t h a t p r o g r a m s w r i t t e n f o a n O s b o r n e c a t h e o r e t i c a l l y b e r u no K a y p r o , S a n y o , H e a t h k i t , o a n o t h e r c o m p u t e r w i t hC P / M . T h e a r l y C P / M m a c h i n e s e m p l o y e d s t a n d a r d e i g h t -i n c h d i s k f o r m a t ( I B M - 3 4 ) . ( I n c i d e n t a l l y , t h f i r s t C P / M m a c h i n e s w e r e v e r y e x p e n s i v e b e c a u s e t h e y r e q u i r e d 6 4 o m e m o r y , m a s s i v e a m o u n t a t h t i m e , t o p e r a t e . )

C o m m o d o r e o p e r a t i n g s y s t e m s a r R O b a s e d . T h e t i r e O ( w h i c h i m o s t l y c o l l e c t i o n o s m a l l m a c h i n e l a g u a g e p r o g r a m s ) i s t o r e d o c h i p s i n s i d e t h m a c h i n e . T h i sm e t h o d o s t o r a g e h a m a n y a d v a n t a g e s . T h c o m p u t e r g e n e ra l l y p e r f o r m s f a s t , a n a l s y s t e m c o m m a n d s a r e a v a i l a b l e a a l t i m e s . H o w e v e r , R O M - b a s e d o p e r a t i n g s y s t e m s h a v e f e d i s a d v a n t a g e s . B e c a u s e t h O i s t o r e d o c h i p s , i m u s t b r e l a t i v e l y s m a l l . R O M - b a s e d s y s t e m s a l s o a r e m o r e d i f f i c u l t t u p g r a d e o e x p a n d s i n c e t h i s r e q u i r e s a d d i n g o r r e p l a c i n gc h i p s i t h c o m p u t e r .

A a l t e r n a t i v e i R A M - b a s e d o p e r a t i n g s y s t e m l i k eC P / M . R a t h e r t h a n p u t t i n g t h e m a c h i n e c o d e t h a t m a k e s u t h o p e r a t i n g s y s t e m o c h i p s , t h c o d e i o d i s k i n s t e a d .R A M - b a s e d o p e r a t i n g s y s t e m s c a n g e n e r a l l y b m u c h l a r g e rt h a n t h o s e w h i c h a r R O b a s e d — w h i c h m e a n s y o c a h a v e m a n y m o r e c o m m a n d s a n u t i l i t i e s . U p g r a d i n g R A M -b a s e d o p e r a t i n g s y s t e m s i m u c h e a s i e r — y o u s i m p l y a d o r e p l a c e f i l e s o t h s y s t e m d i s k . T h d i s a d v a n t a g e t t h i s k i n do O i t h a t y o a m a s s l o o s y s t e m d i s k s . T h e s e c a s o m e t i m e s b s o u r c e o f r u s t r a t i o n w h e n y o u ' r e d o i n g r o ut i n e j o b s l i k e c o p y i n g f i l e s . D i s k c a p a c i t y i a l s o p r o b l e m ,s i n c e t h O c a e a s i l y u s u h a l f t h s p a c e o d i s k . B u o n c e p r o g r a m i r u n n i n g , t h s y s t e m d i s k i n l o n g e r r q u i r e d a n c a b r e m o v e d . I f a c t , t h s y s t e m d i s k i u s e l e s sw h i l e a a p p l i c a t i o n s p r o g r a m i r u n n i n g .

C P / M V e r s u s C o m m o d o r eC P / M h a m a n y i n t e r e s t i n g a d v a n t a g e s o v e r d e d i c a t e d o p e r a t - ] i n s y s t e m s l i k e C o m m o d o r e ' s . N o a l o t h e s e a d v a n t a g e s a r f e a t u r e s o C P / M p a r t i c u l a r l y . M a n y a r t h r e s u l t s o t h e f f o r t s t o w a r d c o m p a t i b i l i t y w i t h d o z e n s o d i f f e r e n t c o m p u t e r sb c l e v e r h a r d w a r e a n s o f t w a r e d e v e l o p e r s .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 61/228

P r o g r a m m i n g

C o m m o d o r e u s e r s a r e a c c u s t o m e d t s o f t w a r e t h a t n e e d sn i n s t a l l a t i o n . Y o j u s t i n s e r t t h p r o g r a m d i s k , t y p e s o m et h i n g l i k e L O A D " * " , 8 , 1 , a n y o u ' r e o y o u r w a y . T h i s i r a r e l y t h e c a s e w i t h C P / M p r o g r a m s .

S o f t w a r e p a c k a g e s f o C P / M c o m p u t e r s m u s t b i n s t a l l e df o t h p a r t i c u l a r h a r d w a r e t h e y ' r e t o r u o n S i n c e t h i s p r c e s s i r e q u i r e d f o c o m p a t i b i l i t y , i g i v e s e v e r y p r o g r a m t h c a p a b i l i t y f o l a r g e d e g r e e o c u s t o m i z a t i o n . F o e x a m p l e ,y o c a g e n e r a l l y r u C P / M s o f t w a r e w i t h a n c o m b i n a t i o no d i s k d r i v e s . Y o t e l l t h e s o f t w a r e w h i c h d r i v e s t u s a n h o t a c c e s s t h e m . T h i s e l i m i n a t e s a p r o b l e m c o m m o n t d e d i c a t e d o p e r a t i n g s y s t e m s . A l t o o f t e n , y o u r s o f t w a r e e xp e c t s s p e c i f i c h a r d w a r e d e v i c e s t b u s e d . I y o u r h a r d w a r e i u n u s u a l i a n w a y , y o m a b s t u c k . F o e x a m p l e , s o m eC o m m o d o r e p r o g r a m s a r d e s i g n e d t o p e r a t e w i t h d u a ld i s k d r i v e , b u t n o t t w s i n g l e d r i v e s .

W h e n y o i n s t a l l s o f t w a r e , y o p r o v i d e i w i t h t h c o d e sa n p a r a m e t e r s u s e d b y o u r h a r d w a r e t d s u c h t h i n g s a c l e a r t h e s c r e e n a n m o v e t h c u r s o r . B u s i n e s s s o f t w a r e i u s u a l l y w i t h o u t c o l o r , y e t c o l o r c a b a d d e d t m a n y C P / Mb u s i n e s s p r o g r a m s b t h u s e r . T h i s i p o s s i b l e b e c a u s e C P / Mp r o g r a m s m u s t b i n s t a l l e d f o y o u r t e r m i n a l ( s c r e e n ) . W h i l ey o u ' r e i d e n t i f y i n g t h c o d e s t u s f o t h i n g s l i k e r e v e r s e , u d e r l i n e , a n s o n y o c a i n s e r t f e c o l o r c o d e s .

S o f t w a r e i n o e a s y t i n s t a l l i y o u ' r e n e t c o m p u t e r s( i t ' s o f t e n d i f f i c u l t f o e x p e r t s , t o o ) . C P / M r e q u i r e s m u c h m o r ed e a l e r s u p p o r t , e s p e c i a l l y w h e n i n s t a l l i n g t h s o f t w a r e . T h i s i o n o t h r e a s o n s C P / M s o f t w a r e i m o r e e x p e n s i v e t h a ns o f t w a r e f o t h C o m m o d o r e 6 4 N e 1 2 o w n e r s w i l l q u i c k l yl e a r n t h a t m a n y g o o d C P / M p r o g r a m s c a s u c c e s s f u l l y b i s t a l l e d o n l y b t h d e a l e r .

S i n c e t h e a r l y d a y s o C o m m o d o r e , u s e r s h a v e o f t e n p r f e r r e d n o n - C o m m o d o r e p r i n t e r s . B e c a u s e o t h i s , s o f t w a r e d v e l o p e r s f o C o m m o d o r e c o m p u t e r s b e g a n p r o v i d i n g s e v e r a lv e r s i o n s o t h e i r p r o g r a m s — e a c h f o d i f f e r e n t p r i n t e r . E v e nt u a l l y , t h e s e d e v e l o p e r s p r o v i d e d m e t h o d f o u s e r s t h e ms e l v e s t d e f i n e t h p r i n t e r c o n t r o l c o d e s f o p r i n t e r s n o o t h l i s t . W i t h C P / M c o m p u t e r s , e v e r y t h i n g i h a n d l e d t h i sw a y . T h s c r e e n , p r i n t e r , d i s k d r i v e s , m e m o r y c a p a c i t y , a n k e y b o a r d a r a l r e d e f i n a b l e .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 62/228

C h a p t e r

C P / M C o m m a n d S t r u c t u r eC P / M i d i s k b a s e d . M u c h o C P / M i l o c a t e d o t h e d i s k i t h f o r m o C O f i l e s ( c o m m a n d f i l e s ) . W h e n y o t y p e c o m a n d o t h k e y b o a r d , t h c o m p u t e r l o o k s f o p r o g r a m o t h e d i s k b t h a t n a m e .

W i t h C P / M c o m m a n d s , y o c a p l a c e p a r a m e t e r a f t e rt h c o m m a n d , a n t h o p e r a t i n g s y s t e m w i l l p a s s t h a t p a r a me t e r t t h c o m m a n d p r o g r a m . F o e x a m p l e , i y o t y p e" D U M P M Y F I L E " , t h " D U M P . C O M " p r o g r a m i l o a d e d i n t om e m o r y a n " M Y F I L E " ( t h e p a r a m e t e r ) i p a s s e d t i t I t h i sc a s e , t h D U M P p r o g r a m w i l l s e n d t h c o n t e n t s o " M Y F I L E "t t h s c r e e n .

W i t h C P / M , m a n y a p p l i c a t i o n s p r o g r a m s d e p e n d o t h o p e r a t i n g s y s t e m f o p a r t o f t h e i r o p e r a t i o n . D o n ' t b s u r p r i s e di p r o g r a m y o u b u r e q u i r e s y o t s u p p l y y o u r o w t e x te d i t o r t c r e a t e a n u p d a t e d a t a f i l e s . C B A S I C f r o m D i g i t a l R s e a r c h i s u c h p r o g r a m . T h C P / M d i s k i t s e l f i n c l u d e sg e n e r a l - p u r p o s e t e x t e d i t o r c a l l e d " E D . C O M " , b u t r e v i e w s o t h i s p r o g r a m a r n o e x a c t l y r a v e s — j u s t t y p i n g u g r o c e r yl i s t c a b n i g h t m a r e . N o n e t h e l e s s , i d o e s a l l o w y o t m a n i p u l a t e t e x t f i l e s .

O n i m m e d i a t e u s f o t e x t e d i t o r i t c r e a t e b a t c h f i l e s .T h e s e a r c o m p l e t e l y n e t C o m m o d o r e - o n l y u s e r s — a n dt h e y ' r e e x t r e m e l y u s e f u l . A l c o m p u t e r s i n c l u d e c o m m a n d s f o f o r m a t t i n g d i s k s , c o p y i n g f i l e s , e r a s i n g f i l e s , l o a d i n g p r o g r a m s ,a n s o n M a n y c o m m o n h o u s e k e e p i n g j o b s r e q u i r e y o t e x e c u t e s e r i e s o t h e s e c o m m a n d s s e q u e n t i a l l y . E a c h t i m ey o p e r f o r m a r o u t i n e t a s k ( l i k e m a k i n g b a c k u p d i s k s ) , y o m u s t t y p e i t h l i s t o c o m m a n d s o n a t i m e . W i t h C P / M ,y o c a p u l o n g l i s t o t h e s e c o m m a n d s i n t o a d i s k f i l e ,t h e n e x e c u t e a l t h c o m m a n d s i t h f i l e b s i m p l y t y p i n g t h f i l e n a m e ( y o u m a h a v e t p r e c e d e t h f i l e n a m e w i t h t h w o r d S U B M I T — d e p e n d i n g o h o y o u r s y s t e m i s e u p ) .T h f i l e t h a t e x e c u t e s s e r i e s o c o m m a n d s i b a t c h f i l e .

B a t c h f i l e s c a e v e n u s v a r i a b l e s a s p a r a m e t e r s . T h a tw a y , t h s a m e b a t c h f i l e c a n p e r f o r m l o n g s e r i e s o s y s t e mf u n c t i o n s o d i f f e r e n t g r o u p s o f i l e s . I s e n s e , t h e n , C P / Mi b o t h a o p e r a t i n g s y s t e m a n s i m p l e p r o g r a m m i n g l a g u a g e . U n d e r C P / M y o c a w r i t e p r o g r a m s t h a t r u o t h e rp r o g r a m s . A a e x a m p l e , s u p p o s e y o h a v e b a t c h f i l e o y o u r s y s t e m d i s k c a l l e d " P U R G E . S U B " t h a t c o n t a i n s :

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 63/228

P r o g r a m m i n g

P I B : $ 2 A : $ lE R A : $ l

T h $ a n $ a r v a r i a b l e s . W h e n y o t y p e t h b a t c hf i l e n a m e f o l l o w e d b o n o m o r e p a r a m e t e r s , t h p a r a m e t e r sw i l l t a k e t h e p l a c e o t h v a r i a b l e s . I y o t y p e P U R G ES O M E F I L E A N Y F I L E , t h r e s u l t w o u l d b t h s a m e a i y o h a t y p e dP I B r A N Y F I L E A r S O M E F I L EE R A S E A r S O M E F I L E

P I w i l l c o p y S O M E F I L E f r o m d r i v e t d r i v e a n r n a m e i a A N Y F I L E . E R e r a s e s S O M E F I L E o d r i v e A O n o t h n i c e f e a t u r e s o f C P / M i t h a t y o c a r e n a m e c o m a n d s . T r t h i s :R E N A M E C O P Y . C O M P I P . C O M

N o y o c a u s C O P Y i n s t e a d o P I P . A l o t h e r a s p e c t so t h c o m m a n d r e m a i n t h s a m e . O c o u r s e , i y o u s e d t h P I c o m m a n d i a n b a t c h f i l e s ( l i k e t h o n a b o v e ) , t h e yw o u l d h a v e t b c h a n g e d . A l t e r n a t i v e l y , y o c a h a v e b o t hb y m a k i n g c o p y o " P I P . C O M " i n s t e a d o r e n a m i n g i ( t h a ti s P I C O P Y . C O M P I P . C O M ) .

T h T r a n s i t i o nC P / M ' s d e s i g n s e e m s r a t h e r a l i e n i y o l e a r n e d o C o m o d o r e s y s t e m . T h d i s k s y s t e m w i l l n d o u b t b f r u s t r a t i n g ,e s p e c i a l l y w i t h o n l y o n d i s k d r i v e . S i n c e C P / M i d i s k b a s e d ,y o u r d i s k s a r c l u t t e r e d w i t h " s y s t e m u t i l i t i e s . " T e x e c u t em o s t C P / M c o m m a n d s , C O f i l e m u s t b o t h e d i s ky o u ' r e u s i n g . T h i s c a b m a d d e n i n g — o f t e n C a t c h - 2 2 s i t u at i o n . Y o p l a c e u t i l i t i e s ( C O M f i l e s ) o d i s k s , e x e c u t e t h e m ,t h e n e r a s e t h e m t o f r e e u d i s k s p a c e . Y o c o u l d , o f c o u r s e ,j u s t l e a v e a l y o u r C O f i l e s o a l y o u r d i s k s , b u t h e r ew o u l d b l i t t l e o n r o o m l e f t f o y o u r p r o g r a m s a n d a t a .

T h C P / M o p e r a t i n g s y s t e m t a k e s d i s k d r i v e s v e r y s e r io u s l y . C o m m o d o r e ' s d i s k o p e r a t i n g s y s t e m ( D O S ) s t o r e s o n l yf e i t e m s o i n f o r m a t i o n a b o u t f i l e s o d i s k . O n l y t h n a m e , t y p e , a n s i z e o t h f i l e a r s t o r e d i t h d i s k ' s d i r e ct o r y . C P / M d i s k s h a v e m u c h m o r e s o p h i s t i c a t e d d i r e c t o r y .C o m m o d o r e u s e r s w i l l f i n d a l o o n e f e a t u r e s w i t h C P / Md i r e c t o r i e s : H e r e ' s s a m p l e :

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 64/228

D i r e c t o r y f o D r i v e A N a m eD I T S B A S E T D E F C O P U R G E S U T o t a l B y t e sT o t a l I B l o c k s

B y t e sI 4 I

6

U s e rR e c s

2

A t t r i b u t e sD i r R WS y s R OD i r R O

T o t a l R e c o r d s

P r o tr e a d

n o n en o n e

3 J s e d / M a x D i E n t r i e s

U p d a t e0 9 / 0 1 / 8 2 1 3 : 0 40 8 / 2 5 / 8 2 1 3 : 0 71 0 / 0 2 / 8 5 1 4 : 5 0

A c c e s s0 9 / 0 1 / 8 2 1 3 : 0 70 9 / 0 1 / 8 2 0 3 : 3 01 0 / 0 2 / 8 5 1 4 : 5 0

F i l e s F o u n df o D r i v e A 1 1 6

C h a p t e rL

Y o c a m a r k i n d i v i d u a l f i l e s a " r e a d o n l y " a n p r e v e n tt h e m f r o m b e i n g a l t e r e d o r e r a s e d . Y o c a n h i d e f i l e s s t h a tt h e y d n o s h o w u i t h d i s k ' s d i r e c t o r y . Y o c a e v e n g i v ef i l e s p a s s w o r d . C P / M w i l l t e l l y o t h d a t e a n t i m e f i l ew a c r e a t e d a n l a s t u p d a t e d ( o t h l a s t t i m e i w a r e a d ) .C P / M e v e n k n o w s i f i l e h a b e e n a l t e r e d s i n c e t h l a s t t i m ei w a c o p i e d , w h i c h i h a n d y f e a t u r e w h e n u p d a t i n g b a c k u pd i s k s .

C P / M c o m p u t e r s o f t e n e m p l o y h a r d d i s k d r i v e s . T h e l po r g a n i z e t h p o t e n t i a l t h o u s a n d s o f i l e s o o n d i s k , C P / Ma l l o w s y o t b r e a k u t h d i r e c t o r y i n t o 1 6 " u s e r a r e a s . " E s e n t i a l l y , t h c o m p u t e r t r e a t s e a c h d i r e c t o r y a s d i f f e r e n t d i s k .T o c h a n g e u s e r a r e a s , t y p e U S E R n w h e r e i n u m b e r f r o m

t 1 5 U s e r a r e a s c a b t r o u b l e s o m e . W h e n r e f o r m a t t i n g a o l d i s k , y o m i g h t e r a s e i m p o r t a n t f i l e s b e c a u s e t h e y ' r e l i s t e di a n o t h e r u s e r a r e a . T s e e t h e e n t i r e d i r e c t o r y , t y p eD I R [ U S E R S = A L L ]

M o u n t a i n s o S o f t w a r eW h u s C P / M a n y w a y ? S o f t w a r e — a n d l o t s o i t t h o u s a n d so p r o g r a m s t h a t d m u l t i t u d e o t h i n g s . I y o n e e d p r g r a m t h a t c a l c u l a t e s t h n e c a p a c i t y o f a o v a l s a l a d b o w l , o t h n u m b e r o t o o t h p i c k s r e q u i r e d t b u i l d f u l l - s i z e b o a t ,c h a n c e s a r t h e r e ' s C P / M p r o g r a m o u t h e r e t d i t B e f o r ey o b e g i n d i g g i n g t h r o u g h t h h e a p o a v a i l a b l e C P / M p r g r a m s , l e t ' s l o o k a f e i t e m s w h i c h m i g h t b o i n t e r e s t .

W o r d S t a r f r o m M i c r o P r o . N e a r l y e v e r y C P / M c o m p u t e r ' s y s t e m c o n t a i n s a c o p y o t h i s e x t r e m e l y p o w e r f u l w o r d p r c e s s i n g p r o g r a m . I t ' s s p o p u l a r t h a t i t ' s a l m o s t b e c o m e p a r t o ft h C P / M s t a n d a r d . T h e r e i c l o s e c o p y o W o r d S t a r c a l l e d • — N e w W o r d ( f r o m N e w S t a r S o f t w a r e ) . I h a s o m e i n t e r e s t i n g a v a n t a g e s o v e r W o r d S t a r , e s p e c i a l l y f o s y s t e m s w i t h a d v a n c e df e a t u r e s l i k e t h o s e f o u n d o t h n e 1 2 8 . W h e n p r o p e r l y i n ' s t a l l e d , N e w W o r d s h o w s b o l d a n u n d e r l i n i n g o t h s c r e e n .I t ' s t r u e " w h a t y o u s e i w h a t y o g e t " w o r d p r o c e s s o r .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 65/228

P r o g r a m m i n g

M B A S I C - 8 0 f r o m M i c r o s o f t . T h e r e a r t h o u s a n d s o p r g r a m s w r i t t e n i M B A S I C . C o m m o d o r e u s e r s w i l l q u i c k l y n t i c e t h l a c k o f a s c r e e n e d i t o r . M a n y p r o g r a m m e r s u s W o r dS t a r ( o a n o t h e r t e x t e d i t o r ) t e n t e r a n e d i t B A S I C p r o g r a m s .T h i s i p o s s i b l e b e c a u s e M B A S I C c a o p t i o n a l l y r e a d a n w r i t ep r o g r a m f i l e s i t e x t f o r m ( n o n t o k e n i z e d ) . T h i s a l s o m a k e s i e a s y f o B A S I C p r o g r a m s t w r i t e o t h e r B A S I C p r o g r a m s .

T u r b o P a s c a l f r o m B o r l a n d I n t e r n a t i o n a l . M a n y 1 2 o w e r w i l l h a v e p u r c h a s e d t h e i r m a c h i n e s s p e c i f i c a l l y t r u t h i sf a s t a n p o w e r f u l l a n g u a g e . I h a m a n y o u t s t a n d i n g f e a t u r e sa n s e l l s f o u n d e r $ 5 0 . I y o w r i t e l a r g e p r o g r a m s , c o n s i d e rP a s c a l a a a l t e r n a t i v e t B A S I C . M a n y c o n s i d e r t h a t T u r b oP a s c a l i f a s t b e c o m i n g t h e d e f i n i t i v e l a n g u a g e f o C P / M ( a n dM S - D O S ) c o m p u t e r s . T u r b o i e v e n s u i t a b l e f o d e v e l o p i n g a v a n c e d p r o g r a m s l i k e w o r d p r o c e s s o r s a n s p r e a d s h e e t s .

S u p e r C a l c f r o m S o r c i m . A o u t s t a n d i n g s p r e a d s h e e t , p o e r f u l e n o u g h t b e u s e d e v e n t w o r k o u m a t h r o u t i n e s i y o u r B A S I C o r P a s c a l p r o g r a m s . L i k e N e w W o r d , S u p e r C a l c i a n " e n h a n c e d " v e r s i o n o a n o t h e r p r o g r a m , V i s i C a l c ( f r o mV i s i C o r p ) . S u p e r C a l c ' f s d o c u m e n t a t i o n i b u i l t i n t o t h p r o g r a mi t s e l f . Y o c a p r e s s t h e k e a n y t i m e f o r i n s t r u c t i o n s .

d B A S E f r o m A s h t o n - T a t e . T h i s i s i m p l i f i e d p r o g r a mm i n g l a n g u a g e d e s i g n e d s p e c i f i c a l l y f o r d a t a b a s e a p p l i c a t i o n s .Y o c a l e a r n t p r o g r a m d B A S E i f r a c t i o n o t h t i m e r q u i r e d t l e a r n a a c t u a l c o m p u t e r l a n g u a g e .

W h a t i C P / M b e s t f o r ? B u s i n e s s . W o r d p r o c e s s i n g a n d a t a b a s e p r o g r a m s r u e s p e c i a l l y w e l l u n d e r C P / M . T h 8 0 c o l u m n s c r e e n i c o n s i d e r e d m u s t f o b u s i n e s s a p p l i c a t i o n s .Y o w o n ' t f i n d a l o o f a r c a d e - s t y l e g a m e s f o C P / M , b u y o w i l l f i n d s o m e e x c e l l e n t a n l e n g t h y a d v e n t u r e g a m e s ( b J o h n O ' H a r e ) . I g e n e r a l , g r a p h i c s p r o g r a m s a r f e a n f a b e t w e e n .

A l t h o u g h w e ' v e m e n t i o n e d B A S I C a n P a s c a l , y o c a g e a l m o s t a n y l a n g u a g e f o C P / M , i n c l u d i n g F o r t h , C P I L O T ,L o g o , C O B O L , F O R T R A N , a n m a n y m o r e . T h e r e a r h u d r e d s o u s e r g r o u p s f o C P / M a l s o . M o s t o f f e r f r e e a d v i c e ,t e c h n i c a l i n f o r m a t i o n , a n p u b l i c d o m a i n s o f t w a r e .

H a n d s O L e t ' s s w i t c h o y o u r C o m m o d o r e 1 2 8 w i t h t h C P / M d i s k i t h d r i v e . T h c o m p u t e r w i l l a u t o m a t i c a l l y c o m e u i C P / M + m o d e ( a l s o k n o w n a C P / M 3 . 0 ) .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 66/228

C h a p t e r

I y o d n o h a v e a R G m o n i t o r c o n n e c t e d t y o u r1 2 8 , s o m e t h i n g i r a t h e r o d f r o m t h s t a r t . T h 4 0 - c o l u m ns c r e e n s h o w s o n l y h a l f t h c o m p u t e r ' s s c r e e n . T h o t h e r h a l fi s i t t i n g i n v i s i b l y o f f t o t h r i g h t . I y o m o v e t h e c u r s o r m o r e I t h a n 3 c h a r a c t e r s t t h r i g h t , t h s c r e e n w i l l s h i f t o v e r f o y o ( t m o v e m o r e q u i c k l y , h o l d d o w n t h C O N T R O L k e i a n p r e s s t h e c u r s o r - r i g h t o c u r s o r - l e f t k e o t h t o r o o t h k e y b o a r d ) . W h o n l y h a l f s c r e e n ? B e c a u s e m o s t C P / Mc o m p u t e r s h a v e 8 0 - c o l u m n s c r e e n s . A l s o , m a n y C P / M p r g r a m s f o r m a t t h e i r o u t p u t f o a n 8 0 - c o l u m n s c r e e n . T h i ss t r a n g e c o m p r o m i s e w a t h r e s u l t . I t ' s b e s t e i t h e r t b u a R G m o n i t o r o t c o n n e c t t h 8 0 - c o l u m n o u t p u t t m o n oc h r o m e m o n i t o r . ( S e e y o u r C o m m o d o r e d e a l e r f o s p e c i a l c b l e . T h 8 0 - c o l u m n c a b l e s a r e a v a i l a b l e f r o m a l e a s t t h r e es o u r c e s : B a t t e r i e s I n c l u d e d , C a r d c o , a n M i c r o v a t i o n . ) I y o a l r e a d y o w c o l o r m o n i t o r , y o c a g e 8 c o l u m n s ( i b l a c k - a n d - w h i t e o n l y ) w i t h s u c h c a b l e .

C P / M f i l e n a m e s c o n t a i n t h r e e p a r t s :D ( D R I V E ) : E a c h d i s k d r i v e i i d e n t i f i e d b l e t t e r .T h f i r s t d r i v e i d r i v e A t h s e c o n d i B a n s o n T h

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

F I L E N A M E T h f i l e n a m e c a b e f r o m o n t e i g h t l e t e r s l o n g . I c a c o n t a i n t h l e t t e r s A - Z , t h n u m b e r s 0 - 9 , a n

f e p u n c t u a t i o n m a r k s . T b s a f e , d n o t u s e p u n c t u a t i o nm a r k s i f i l e n a m e s . U s u a l l y , c a s e i n o i m p o r t a n t . C P / M t r a n sl a t e s l o w e r c a s e t u p p e r c a s e f o a l C P / M u t i l i t i e s . H o w e v e r ,s o m e p r o g r a m s ( l i k e M B A S I C - 8 0 ) a l l o w u p p e r - a n l o w e r c a s ef i l e n a m e s , b u i u s e d , C P / M u t i l i t i e s w i l l n o b a b l e t a c c e s st h e m .

. E X T t h r e e - l e t t e r e x t e n s i o n i o p t i o n a l ( w i t h f e e x c e p t i o n s ) . I u s u a l l y i d e n t i f i e s t h t y p e o t h f i l e . F o e a m p l e , a l w o r d p r o c e s s i n g f i l e s c o u l d h a v e a e x t e n s i o n o . T X T ( f o r t e x t ) . O . D A T f o d a t a f i l e s , . B A S f o B A S I C p r o -g r a m s , . L T R f o l e t t e r s , a n s o n Y o c a m a k e u a l t h e x t e n s i o n s y o n e e d . f e a r r e s e r v e d f o t h s y s t e m ( l i k e. C O M ) , a n o t h e r s a r u s e d b a p p l i c a t i o n s p r o g r a m s .

I y o d n o s p e c i f y a d r i v e l e t t e r , t h d e f a u l t d r i v e i u s e d . T h i s i t h d r i v e i d e n t i f i e d i n t h s y s t e m p r o m p t : t A m e a n s i t h d e f a u l t d r i v e . ' — B m e a n s i t h d e f a u l t d r i v e .

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 67/228

P r o g r a m m i n g

Y o c a c h a n g e t h d e f a u l t d r i v e b t y p i n g t h d e s i r e dd r i v e l e t t e r f o l l o w e d b c o l o n ( y o u w o u l d t y p e t h B i t h i se x a m p l e ) :A > B :B

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

A l t h C P / M c o m m a n d s o u t l i n e d i t h 1 2 m a n u a l f o l o c e r t a i n f i l e n a m i n g g u i d e l i n e s . T h s y s t e m a l s o c o n t a i n ss t a n d a r d a m b i g u o u s f i l e n a m i n g s y s t e m t h a t a l l o w s y o t s p e c i f y a g r o u p o f i l e s t h a t h a v e s o m e t h i n g i c o m m o n .

T h a s t e r i s k i a w i l d c a r d . A t h n a m e i m p l i e s , a n y t h i n gw i l l m a t c h i t S u p p o s e y o u r d i s k c o n t a i n s t h e f o l l o w i n g f i l e s :L E T T E R . T X T B O B . T X T B U D G E T . C A L M A I L . D A TS P O O L . P R N D E B L T X T M A R Y . T X T M L P G M . A S MS I D . C O MI w t y p eD I * . T X Tt h c o m p u t e r w i l l r e s p o n d w i t hL E T T E R . T X T B O B . T X T D E B L T X T M A R Y . T X T

T h a s t e r i s k c a b e u s e d a l o n g w i t h l e t t e r s :D I M M A I L . D A T M A R Y . T X T M L P G M . A S M

A n o t h e r w i l d c a r d i t h e q u e s t i o n m a r k . T h a s t e r i s km a t c h e s i t e m s o a n l e n g t h . T h q u e s t i o n m a r k w i l l m a t c ho n l y o n l e t t e r . I o t h e r w o r d s , * . i t h s a m e a ? ? ? ? ? ? ? ? . ? ? ? .H e r e ' s a n e x a m p l e u s i n g w i l d c a r d s :D I * . ? A ?B U D G E T . C A L M A I L . D A TO n l y t h o s e f i l e s w i t h a i t h s e c o n d p o s i t i o n o f t h e x t e ns i o n a r e d i s p l a y e d .

R u n n i n g P r o g r a m sT h f i r s t p r o g r a m s y o u ' l l p r o b a b l y r u a r t h o s e f o u n d o t h C P / M d i s k . Y o m i g h t s p e n d h o u r s t r y i n g t l o a d p r o g r a m s i o r d e r t r u t h e m . I y o u ' r e u s e d t C o m m o d o r e , y o u ' l l s e d o z e n s o s t r a n g e e r r o r m e s s a g e s i y o t r t y p i n g t h i n g s l i k e :

5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 68/228

C h a p t e r

L O A D " P R O G R A M "o L O A D P R O G R A Mo L O A D P R O G R A M . C O Mo E X E C U T E P R O G R A Mo E X E C U T E P R O G R A M . C O M ' — o R U P R O G R A M . C O Mo A C C E S S P R O G R A M

N o n e o t h e s e w o r k . C P / M a u t o m a t i c a l l y l o a d s a n r u n sp r o g r a m w h e n y o t y p e i t n a m e . Y o u r C P / M d i s k c o n t a i n sp r o g r a m c a l l e d " H E L P . C O M " T r u t h i s p r o g r a m , y o

n e e d o n l y t y p e i t n a m e ( e x c l u d i n g . C O M ) :H E L P

T h " H E L P " p r o g r a m w i l l t h e n l o a d a n r u n . T e x i t ,p r e s s R E T U R N .

I t h p r o g r a m y o u w a n t t r u i n o i m a c h i n e l a g u a g e ( o c o m p i l e d ) , t h p r o p e r l a n g u a g e i n t e r p r e t e r m u s t b l o a d e d f i r s t . p r o g r a m w r i t t e n i B A S I C w i l l g e n e r a l l y h a v ea e x t e n s i o n o . B A S . B u y o u m u s t f i r s t l o a d p r o g r a m s u c ha M B A S I C . Y o u c a d i a l a o n c e b t y p i n gM B A S I C P R O G R A Mw h e r e P R O G R A M i t h n a m e o f t h e B A S I C p r o g r a m y o uw i s h t l o a d . M B A S I C w i l l b l o a d e d , t h e n t h B A S I C p r g r a m . T h B A S I C p r o g r a m w i l l t h e n r u a u t o m a t i c a l l y . T e x i tM B A S I C , t y p e S Y S T E M .

T h e B o t t o m L i n eC P / M i l i t t l e c r a n k y , s o m e w h a t s l u g g i s h , a n r a t h e r u n f o rg i v i n g . B u i h a e n d u r e d t h t e s t o t i m e . T h C P / M w o r l d i v e r y c o m p l e t e : E v e r y i m a g i n a b l e p r o g r a m , g a d g e t , a n u t i l i t yi a v a i l a b l e i o n o m o r e f o r m s f o C P / M .

C o m m o d o r e ' s 1 2 v e r s i o n o C P / M c o n f o r m s t a l t h C P / M s t a n d a r d s i i t ' s r u w i t h t h 1 5 7 1 d i s k d r i v e . H o w e v e r ,i y o r u t h i s v e r s i o n w i t h 1 5 4 1 d i s k d r i v e , b s u r e t b r i n g » — a l u n c h . T h i s c o n f i g u r a t i o n i v e r y , v e r y s l o w . E v e n s i m p l ed i r e c t o r y l i s t i n g i e x t r a o r d i n a r i l y s l o w .S p e e d i n o t h o n l y f a c t o r . T h 1 5 4 1 c a n n o t r e a d t h I d i s k s f r o m o t h e r C P / M c o m p u t e r s . W i t h o u t t h i s c a p a b i l i t y ,C P / M i p r a c t i c a l l y u s e l e s s . B u w i t h t h 1 5 7 1 a n 1 2 8 , a l t h s p e e d a n v e r s a t i l i t y o C P / M a r a v a i l a b l e .

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 69/228

C h a p t e rS o u n da n G r a p h i c s

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 70/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 71/228

W i n d o w s o t h 1 2 J i V a u g h a n

C r e a t i n g w i n d o w s i f a s t a n e a s y o t h 1 2 8 . T h i s t u t o r i a l c o v e r st h b a s i c s — w h a t w i n d o w s a r a n h o t u s t h e m . A l s o i n e l u d e d i p r o g r a m t h a t a l l o w s y o t s a v e t h t e x t a r e a b e n e a t h

w i n d o w .

T h C o m m o d o r e 1 2 i p o w e r f u l a n v e r s a t i l e m a c h i n e . B s i d e s h a v i n g 1 2 8 K o u s e r m e m o r y , 8 0 o 4 0 - c o l u m n s c r e e no u t p u t , a n p o w e r f u l B A S I C ( 7 . 0 ) , i a l s o h a b u i l t - i nC o m m o d o r e 6 a n f u l l C P / M c a p a b i l i t y .

W h i l e n e p r o g r a m s f o t h 1 2 m o d e a r b e g i n n i n g t e m e r g e , i t ' s s t i l l m a i n l y u t t h o w n e r t e x p l o r e t h e n e h o r i z o n s o p e n e d b y B A S I C 7 . 0 . O n o t h m o s t f a s c i n a t i n gn e c o m m a n d s a d d e d t t h B A S I C l a n g u a g e i W I N D O W .W i n d o w s h a v e b e c o m e i n c r e a s i n g l y p o p u l a r w i t h i n t h p e s o n a l c o m p u t e r i n d u s t r y i t h p a s t f e y e a r s . S o m e w o r dp r o c e s s o r s n o u s p u l l - d o w n m e n u s f o h e l p w h i l e p r e s e r vi n y o u r t e x t o n s c r e e n . S o m e w i n d o w i n g a l l o w s t w s e p a r a t ep r o g r a m s t b r u o t h t w h a l v e s o t h s c r e e n .

C r e a t i n g Y o u r F i r s t W i n d o ww i n d o w i s i m p l y s e c t i o n o t h s c r e e n t h a t y o p a r t i t i o n

o f f f o r y o u r e x c l u s i v e u s e . W h e n y o u ' r e i w i n d o w , t h c o p u t e r a c t s a i t h a t p o r t i o n o t h e s c r e e n i s a l l t h e r e i s p r g r a m l i s t i n g , a d i s k d i r e c t o r y , o e v e n r u n n i n g p r o g r a m w i l lb d i s p l a y e d i j u s t o n s e c t i o n o f t h s c r e e n . I t h i s w a y , y o c a p e r f o r m c a l c u l a t i o n s o l i s t p r o g r a m s i o n s e c t i o n w i t ho u d i s t u r b i n g t h w o r k y o u ' r e d o i n g e l s e w h e r e o t h s c r e e n .T h 1 2 o f f e r s t w w a y s i w h i c h y o u c a i m p l e m e n t w i d o w s . T r t h i s s i m p l e e x p e r i m e n t . F i r s t , t y p e i t h i s l i n e i d r e c t m o d e ( n l i n e n u m b e r ) , a n p r e s s R E T U R N :F O 1 = T 6 4 0 : P R I N T " * = " ; : N E X T

T h i s f i l l s y o u r s c r e e n w i t h j u m b l e o g a r b a g e , b u i t ' ss u f f i c i e n t t i l l u s t r a t e o u e x a m p l e . N o w , m o v e t h e c u r s o r t a n p o i n t i t h u p p e r l e f t p a r t o f t h s c r e e n , p r e s s E S a n t h e n ( E S C i t h f i r s t g r a y k e o t h t o r o o t h k e b o a r d ) . D o n ' t h o l d d o w n t h E S k e y ; p r e s s i o n c e a n r e

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 72/228

C h a p t e r

l e a s e i t t h e n p r e s s T N o m o v e t h c u r s o r t a n p o i n t i ' — t h l o w e r r i g h t s i d e o t h s c r e e n , a n p r e s s E S a n t h e n B Y o u ' v e j u s t c r e a t e d y o u r f i r s t w i n d o w — b u t i d o e s n ' t l o o k l i k e I m u c h , r i g h t ? N o w , p r e s s S H I F T - C L R / H O M E . V o i l a ! T y p e i ' — f e c o m m a n d s ( D I R E C T O R Y , f o e x a m p l e ) a n s e h o t h w i n d o w k e e p s t h s c r e e n o u t p u t w i t h i n t h b o r d e r s t h a t y o I g i v e i t I t ' s e a s y t r e m e m b e r t h k e y s : E S C - T ( f o T o p ) s e t s ' — t h t o l e f t c o r n e r o f t h e w i n d o w , a n E S C - B ( B o t t o m ) s e t s t h b o t t o m r i g h t c o r n e r .

T h i s s i m p l e e x a m p l e i l l u s t r a t e s t h f i r s t m e t h o d o w i n d o w i n g u s i n g d i r e c t m o d e . Y o c a c r e a t e w i n d o w a n w h e r e o t h s c r e e n w i t h t h i s t e c h n i q u e . T r e s t o r e y o u rs c r e e n t i t f u l l f o r m a t ( 8 2 o 4 2 5 ) , j u s t p r e s s t h C L R / H O M E k e t w i c e . T h i s c l e a r s t h w i n d o w s e t t i n g s a n r e s e t s y o u r s c r e e n t n o r m a l . T h d i r e c t m e t h o d ( E S C - T a n E S C - B ) i u s e f u l f o q u i c k c a l c u l a t i o n s o p r o g r a m d e b u g g i n g .F o e x a m p l e , o f t e n w i s h t d s o m e s i m p l e c a l c u l a t i o n sw h i l e d e b u g g i n g p r o g r a m , b u w a n t t s e t h p r o g r a ml i s t i n g a l s o . I t ' s e a s y . j u s t m o v e m c u r s o r o f f t o t h s i d e o t h l i s t i n g , u s t h a b o v e s e q u e n c e t c r e a t e w i n d o w i d r e c t m o d e , a n d c a l c u l a t e . T h l i s t i n g d o e s n ' t s c r o l l o f t h s c r e e n w h i l e I ' m t r y i n g t d s o m e s i m p l e c a l c u l a t i o n s . Y o c a a l s o u s t h w i n d o w i d i r e c t m o d e t t e s t o u p r o g r a ml i n e t o s e i t e f f e c t o t h s c r e e n .

A d d i n g W i n d o w s t P r o g r a mO n c e y o s t a r t p l a y i n g w i t h t h a b o v e w i n d o w i n g t e c h n i q u e ,y o u ' l l n d o u b t t h i n k o m a n y p r o g r a m m i n g a p p l i c a t i o n sw h e r e w i n d o w i n g c o u l d b u s e d . T h E S C a p e k e h a a A S C I I v a l u e o 2 7 s w i t h i n p r o g r a m y o c o u l d p o s i t i o n t h c u r s o r t t h t o l e f t c o r n e r a n t h e n P R I N T C H R $ ( 2 7 ) ; " T f o t h t o o t h w i n d o w a n t h e n c u r s o r d o w n a n r i g h t t P R I N T C H R $ ( 2 7 ) ; " B f o t h b o t t o m . B u B A S I C 7 . p r o v i d e sa e a s i e r m e a n s t c r e a t e w i n d o w : w i t h t h W I N D O W c o m a n d . T h i s a l l o w s e a s y a c c e s s t w i n d o w i n g f r o m w i t h i n y o u rB A S I C p r o g r a m s . T h f o r m a t f o t h c o m m a n d i j W I N D O W X 1 , Y 1 , X 2 , Y 2 , C L E A R

T h v a r i a b l e s X I a n d Y a r t h s c r e e n c o o r d i n a t e s o f t h eu p p e r l e f t c o r n e r o t h w i n d o w , a n d t h v a r i a b l e s X a n Y ' — a r t h e s c r e e n c o o r d i n a t e s o t h l o w e r r i g h t c o r n e r o t h w i d o w . C L E A R i a o p t i o n a l f l a g . I C L E A R i s e t 1 i c l e a r s6

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 73/228

S o u n d a n G r a p h i c s

t h w i n d o w a r e a a f t e r i t ' s c r e a t e d , a n i C L E A R i ( o o m i tt e a l t o g e t h e r ) , a n t e x t o t h s c r e e n r e m a i n s t h e r e . T h v a l u e s f o t h W I N D O W c o m m a n d m u s t b b e t w e e n a n 7 f o t h 8 0 - c o l u m n s c r e e n . T h v a l u e s m u s t b b e t w e e na n 2 4 | — P r o g r a m 2 - 1 , " W i n d o w D e m o , " w i l l w o r k e i t h e r i 4 0 o 8 0 - c o l u m n m o d e . T h p r o g r a m ' s p u r p o s e i t i l l u s t r a t e t h u s o w i n d o w s i p r o g r a m , b u i a l s o c r e a t e s a i n t e r e s t i n gs c r e e n d i s p l a y w h i l e r u n n i n g . T h p r o g r a m l i s t i n g p r o v i d e s t h b a s i c s f o c r e a t i n g a g e n e r a l s u b r o u t i n e t h a n d l e w i n d o w i n g .G i v e n f o u r v a l u e s ( X I , Y l X 2 Y 2 ) , t h i s r o u t i n e w i l l c r e a t e t h w i n d o w , c l e a r i o a n t e x t , a n t h e n c r e a t e b o r d e r a r o u n dt h n e w i n d o w t s e i o f f r o m t h r e s t o t h s c r e e n . I s h o u l d b e n o t e d t h a t t h i s r o u t i n e w i l l c r e a t e w i n d o w s l i g h t l yl a r g e r t h a n t h o n r e q u e s t e d s t h a t i c a a c c o m m o d a t e t h b o r d e r a r o u n d t h w i n d o w . P r o g r a m 2 - i f i n e i y o d o n ' tc a r e a b o u t t h t e x t ( o g r a p h i c s ) t h a t w i l l b w r i t t e n o v e r w h e nt h w i n d o w i c r e a t e d . B u w h a t a b o u t t h a t p u l l - d o w n m e n ut h a t c o m e s d o w n o n t o t h e s c r e e n o y o u r w o r d p r o c e s s o r o d a t a b a s e ? S u r e l y , y o d o n ' t w a n t t l o s e a n o t h a t v a l u a b l ed a t a . T h p r o g r a m m i n g s o l u t i o n i t r e a d i t h e d a t a t h a t l i e sb e n e a t h t h w i n d o w , s a v e i i s o m e b u f f e r a r e a , c r e a t e t h w i n d o w , a n t h e n w h e n y o u ' r e d o n e w i t h i t r e s t o r e t h p r e v io u c o n t e n t s o t h s c r e e n .

Y o u r f i r s t i n s t i n c t m i g h t b e t g i a n s t a r t P E E K i n g t h a p p r o p r i a t e s c r e e n l o c a t i o n s a n s a v i n g t h d a t a . T h i s w o u l dw o r k f i n e f o t h 4 0 - c o l u m n s c r e e n ( m e m o r y l o c a t i o n s b t w e e n $ 0 4 0 0 a n $ 0 8 0 0 ) , b u 8 0 - c o l u m n o u t p u t i h a n d l e db i d i f f e r e n t l y . I y o t a k e l o o k a t h a b b r e v i a t e d m e m o r ym a i t h b a c k o y o u r 1 2 S y s t e m G u i d e , y o u ' l l n o t e t h a tt h e r e a r n m e m o r y l o c a t i o n s l i s t e d f o t h 8 0 - c o l u m n s c r e e n .T h i s i b e c a u s e t h 8 0 - c o l u m n s c r e e n i s t o r e d i n t e r n a l l y i n a1 6 m e m o r y a r e a w h i c h i n o d i r e c t l y a c c e s s i b l e t t h u s e r ,a n t h e r e f o r e c a n n o t b r e a d o w r i t t e n t v i a n c o m m a n d si B A S I C .

A l t h o u g h t h 8 0 - c o l u m n s c r e e n i n o d i r e c t l y a c c e s s i b l e ,i c a b P E E K e d a n P O K E d i m a c h i n e l a n g u a g e . S o t s a v e p a r t o t h s c r e e n , w e ' l l P E E K e v e r y c h a r a c t e r f r o m t h a r e a u n d e r t h w i n d o w ( s c r e e n m e m o r y i f o u n d i l o c a t i o n s$ 0 0 0 0 - $ 0 8 0 0 o t h i n t e r n a l R A o t h 8 0 - c o l u m n c h i p ) a n s a v e t h e m t b u f f e r . I t ' s a l s o n e c e s s a r y t s a v e a t t r i b u t em e m o r y ( $ 0 8 0 0 - $ 1 0 0 0 ) , w h i c h i t h e q u i v a l e n t o 4 0 - c o l u m nc o l o r m e m o r y .

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 74/228

C h a p t e r

T h S a v e R o u t i n e sP r o g r a m 2 - i d e s i g n e d t w o r k w i t h t h 4 0 - c o l u m n s c r e e n ,w h i l e P r o g r a m 2 - i f o 8 c o l u m n s . B o t h p r o g r a m s P O K Em a c h i n e l a n g u a g e p r o g r a m i n t o m e m o r y a 8 1 9 2 . ( N o t e t h a t ' — t h i s i p a r t o f t h h i - r e s s c r e e n a r e a , s y o m u s t a v o i d g r a p hi c c o m m a n d s w h i l e u s i n g t h e s e p r o g r a m s . ) T a d t h r o u t i n e s i y o u r o w p r o g r a m s , f o l l o w t h e s e s t e p s : < — 1 B s u r e t i n c l u d e t h c o m m a n d s G R A P H I C 1 : G R A P H I C O a

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

2 A f t e r t h e r o u t i n e h a b e e n P O K E d i n t o m e m o r y , y o c a s a v e t h e c o n t e n t s o f w i n d o w w i t h S Y 8 1 9 2 . T h i s S Y m u s t c o m e a f t e r y o u ' v e u s e d t h W I N D O W c o m m a n d . Y o c a n t h e n c l e a r t h w i n d o w a n p r i n t t h m e n u ( o w h a t e v e ry o w i s h t p l a c e i t h w i n d o w ) .

3 T r e c a l l t h p r e v i o u s c o n t e n t s o t h w i n d o w , i n s e r t S Y 8 1 9 5 .

T h t w p r o g r a m s c r e a t e s a m p l e s c r e e n , p u w i n d o wt h e r e , a n t h e n w a i t f o a k e y p r e s s . T h s c r e e n u n d e r n e a t h t h w i n d o w i t h e n r e s t o r e d .P r o g r a m 2 - 1 . W i n d o w D e m oF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B E K 1 0 0 M O D E = R G R ( G )C 1 1 0 R E M * C H E C K T O S E I I T ' S 4 O 8

1 1 S P A C E S j C O L U M N D I S P L A Y *J 1 2 I M O D E = 5 T H E N B E G I NJ 1 3 : { S P A C E S } A = 7 8 : B = 4 0 : C = 3 8Q 1 4 : 1 S P A C E S } F A S TB 1 5 B E N D : E L S E B E G I NK 1 6 : { S P A C E S } A = 3 8 : B = 2 0 : C = 1 8 : B E N DS 1 7 R E * S T A R T T H M A I N L O O P *G G 1 8 0 S C N C L R ] X 1 9 P R I N T C H R $ ( 2 7 ) " M H 7 : R E M * S E T N O - S C R O L L *F 2 0 X 1 = I N T ( R N D ( 0 ) * B ) : Y 1 = I N T ( R N D ( 0 ) * 1 2 )B 2 1 X 2 = I N T ( ( R N D ( 0 ) * B ) + C ) : Y 2 = I N T ( R N D ( 0 ) * 1 0 + 1 2 ) j X 2 2 I F X 1 > X 2 O Y 1 > Y 2 O X 2 > A O Y > 2 O R X K 2

Y l < 2 T H E N 2 0 0R 2 3 R E * C R E A T E T H L A R G E R W I N D O W A N

{ 1 S P A C E S } D R A W T H B O R D E R *B 2 4 W I N D O W X 1 - 1 , Y 1 - 1 , X 2 + 1 , Y 2 + 1 , A 2 5 X = R W I N D O W ( 0 ) : Y = R W I N D O W ( 1 )Q G 2 6 0 P R I N T " O " ; : F O R I = l T O ( Y - l ) : P R I N T l l g Y 3 1 1 ; : N E X T : P R , I N T » p . . -

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 75/228

S o u n d a n G r a p h i c s

E 2 7 F O R I l T O X - l : P R I N T l l g H i M ; T A B ( Y ) ; " g M § " : N E X TM 2 8 P R I N T " L " ; : F O R I = 1 T O ( Y - l ) : P R I N T " § P § " ; : N E X T : P Rn I N T " @ / ' ~P X 2 9 0 R E * C R E A T E W I N D O W A N F I L L I T J 3 0 W I N D O W X 1 , Y 1 , X 2 , Y 2H 3 1 A 1 = ( R N D ( 0 ) * 3 8 + 4 0 ) : I F R N D ( 0 ) < . 2 T H E N P R I N T C H R $ (

1 5 ) ;G 3 2 I F R N D ( 0 ) > . 9 T H E N P R I N T C H R ? ( 1 8 ) ;H 3 3 I R N D ( 0 ) > . 8 T H E N B E G I NP 3 4 R E M * C H O O S E N O R M A L O R R E V E R S E S C R E E N *D 3 5 : { S P A C E S } I F S ? = " N " T H E N S S a s l l R " : P R I N T C H R $

2 7 ) S $ ; : E L S E P R I N T C H R ? ( 2 7 ) " N " ; : S ? = " N "A 3 6 B E N DD 3 7 R E * C H O O S E C O L O R F O D I S P L A Y *A 3 8 P R I N T C H R ? ( 1 4 9 + D ) ; : D = D + 1 : I F D > 7 T H E N D = 0B H 3 9 0 I F D = 3 T H E N D = 4S 4 0 F O R C 1 = 0 T ( Y ) : P R I N T C H R ? ( A l ) ; : N E X T : P R I N

T C H R ? ( 1 4 3 ) ; C H R ? ( 1 4 6 ) ; C H R ? ( 5 )G 4 1 G O T O 2 0 0

P r o g r a m 2 - 2 . W i n d o w S a v e f o 4 C o l u m n sF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

M 1 0 G O S U B 1 5 0 : G R A P H I C 1 : G R A P H I C 0 : C O L O R 0 , E C 1 1 0 P R I N T " { C L R } 1 1 ; : F O R A = T 2 4 : C O L O R 5 ( A A N D 1 5

) + l - ( A = 1 6 ) : P R I N T " A B C D E F G H I J K L M N O P Q R S T U V W X Y Z1 2 3 4 5 6 7 8 9 0 A S Z X " ; : N E X T

S 1 2 W I N D O W 5 , 3 , 3 5 , 1 3 : S Y S 8 1 9 2A 1 3 P R I N T " I C L R } { 5 D O W N } { 3 S P A C E S } P R E S S A N Y K E

T C O N T I N U E "A 1 4 G E T K E Y A ? : S Y S 8 1 9 5 : S L E E P 2 : G O T O 1 3 0J 1 5 C = 0 : F O R A = 8 1 9 2 T O 8 3 3 5 : R E A D B : C = C + B : P O K E A , B : N E X

T s I F C < > 2 0 2 1 5 T H E N P R I N T M { C L R } D A T A E R R O R " : E N D :E L S E R E T U R N

M 1 6 D A T A 1 6 9 , 0 , 4 4 , 1 6 9 , 1 , 1 3 3 , 1 4 3 , 3 2 , 1 0 0 , 3 2 , 1 6 9 , 0, 1 3 3 , 2 5 0

Q 1 7 D A T A 1 6 9 , 4 8 , 1 3 3 , 2 5 1 , 1 6 5 , 2 3 1 , 5 6 , 2 2 9 , 2 3 0 , 1 3 3 ,1 5 8 , 2 3 0 , 1 5 8 , 1 6 5

E 1 8 D A T A 2 2 8 , 5 6 , 2 2 9 , 2 2 9 , 1 3 3 , 1 5 9 , 2 3 0 , 1 5 9 , 1 6 5 , 1 5 8, 1 3 3 , 2 5 4 , 1 6 0 , 0

n F 1 9 D A T A 1 6 5 , 1 4 3 , 2 0 8 , 7 , 1 7 7 , 1 4 1 , 1 4 5 , 2 5 0 , 7 6 , 5 7 , 3 2, 1 7 7 , 2 5 0 , 1 4 5M 2 0 D A T A 1 4 1 , 2 0 0 , 1 9 8 , 2 5 4 , 2 0 8 , 2 3 6 , 1 6 5 , 2 5 0 , 2 4 , 1 0 1

, 1 5 8 , 1 3 3 , 2 5 0 , 1 6 5n Q 2 1 D A T A 2 5 1 , 1 0 5 , 0 , 1 3 3 , 2 5 1 , 3 2 , 1 3 0 , 3 2 , 1 9 8 , 1 5 9 , 2 08 , 2 1 0 , 1 6 5 , 1 4 2

H 2 2 D A T A 2 0 1 , 2 1 2 , 1 7 6 , 1 1 , 1 6 5 , 1 3 9 , 1 3 3 , 1 4 1 , 1 6 5 , 1 4 0, 1 3 3 , 1 4 2 , 7 6 , 1 8

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 76/228

C h a p t e r

M 2 3 D A T A 3 2 , 9 6 , 1 6 5 , 2 3 0 , 1 3 3 , 1 4 1 , 1 6 9 , 4 , 1 3 3 , 1 4 2 , 1 66 , 2 2 9 , 2 4 0 , 6

X 2 4 D A T A 3 2 , 1 3 0 , 3 2 , 2 0 2 , 2 0 8 , 2 5 0 , 1 6 5 , 1 4 1 , 1 3 3 , 1 3 9 ,1 6 5 , 1 4 2 , 2 4 , 1 0 5

R 2 5 D A T A 2 1 2 , 1 3 3 , 1 4 0 , 9 6 , 1 6 5 , 1 4 1 , 2 4 , 1 0 5 , 4 0 , 1 3 3 , 14 1 , 1 6 5 , 1 4 2 , 1 0 5 , 0 , 1 3 3 , 1 4 2 , 9 6

P r o g r a m 2 - 3 . W i n d o w S a v e f o 8 C o l u m n sF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

R E 1 0 0 G R A P H I C 1 : G R A P H I C 5 : G O S U B 1 5 0 : C O L O R 0 , F C 1 1 0 P R I N T " { C L R } " ; : F O R A = l T O 4 8 : C O L O R 5 , ( A A N D 7 )

+ 2 : P R I N T " A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 89 0 A S Z X " ; : N E X T

K Q 1 2 0 W I N D O W 1 0 , 3 , 7 0 , 1 3 : S Y S 8 1 9 2Q 1 3 P R I N T " { C L R } { 5 D O W N } { 1 6 S P A C E S j P R E S S A N Y K

T C O N T I N U E "A 1 4 G E T K E Y A $ : S Y S 8 1 9 5 : S L E E P 2 : G O T O 1 3 0G 1 5 C = 0 : F O R A = 8 1 9 2 T O 8 3 7 7 : R E A D B : C = C + B : P O K E A , B : N E X

T : I F C < > 2 4 0 7 2 T H E N P R I N T " { C L R } D A T A E R R O R " : E N D :E L S E R E T U R N

J 1 6 D A T A 1 6 9 , 0 , 4 4 , 1 6 9 , 1 , 1 3 3 , 1 4 3 , 3 2 , 1 1 8 , 3 2 , 1 6 9 , 0, 1 3 3 , 2 5 0

Q 1 7 D A T A 1 6 9 , 4 8 , 1 3 3 , 2 5 1 , 1 6 5 , 2 3 1 , 5 6 , 2 2 9 , 2 3 0 , 1 3 3 ,1 5 8 , 2 3 0 , 1 5 8 , 1 6 5

R A 1 8 0 D A T A 2 2 8 , 5 6 , 2 2 9 , 2 2 9 , 1 3 3 , 1 5 9 , 2 3 0 , 1 5 9 , 1 6 5 , 1 5 8, 1 3 3 , 2 5 4 , 1 6 5 , 1 4 2

E C 1 9 0 D A T A 1 6 2 , 1 8 , 3 2 , 1 6 2 , 3 2 , 1 6 5 , 1 4 1 , 1 6 2 , 1 9 , 3 2 , 1 6 2, 3 2 , 1 6 0 , 0

F 2 0 D A T A 1 6 2 , 3 1 , 1 6 5 , 1 4 3 , 2 0 8 , 8 , 3 2 , 1 7 4 , 3 2 , 1 4 5 , 2 5 0, 7 6 , 7 5 , 3 2G 2 1 D A T A 1 7 7 , 2 5 0 , 3 2 , 1 6 2 , 3 2 , 2 0 0 , 1 9 8 , 2 5 4 , 2 0 8 , 2 3 2 ,1 6 5 , 2 5 0 , 2 4 , 1 0 1

S G 2 2 0 D A T A 1 5 8 , 1 3 3 , 2 5 0 , 1 6 5 , 2 5 1 , 1 0 5 , 0 , 1 3 3 , 2 5 1 , 3 2 , 14 8 , 3 2 , 1 9 8 , 1 5 9

D 2 3 D A T A 2 0 8 , 1 9 2 , 1 6 5 , 1 4 2 , 2 0 1 , 9 , 1 7 6 , 1 1 , 1 6 5 , 1 3 9 , 13 3 , 1 4 1 , 1 6 5 , 1 4 0

K 2 4 D A T A 1 3 3 , 1 4 2 , 7 6 , 1 8 , 3 2 , 9 6 , 1 6 5 , 2 3 0 , 1 3 3 , 1 4 1 , 1 69 , 0 , 1 3 3 , 1 4 2R 2 5 D A T A 1 6 6 , 2 2 9 , 2 4 0 , 6 , 3 2 , 1 4 8 , 3 2 , 2 0 2 , 2 0 8 , 2 5 0 , 1 6

5 , 1 4 1 , 1 3 3 , 1 3 9J 2 6 D A T A 1 6 5 , 1 4 2 , 2 4 , 1 0 5 , 8 , 1 3 3 , 1 4 0 , 9 6 , 1 6 5 , 1 4 1 , 2 4, 1 0 5 , 8 0 , 1 3 3

J 2 7 D A T A 1 4 1 , 1 6 5 , 1 4 2 , 1 0 5 , 0 , 1 3 3 , 1 4 2 , 9 6 , 1 4 2 , 0 , 2 1 4, 4 4 , 0 , 2 1 4H 2 8 D A T A 1 6 , 2 5 1 , 1 4 1 , 1 , 2 1 4 , 9 6 , 1 4 2 , 0 , 2 1 4 , 4 4 , 0 , 2 1 4, 1 6 , 2 5 1 , 1 7 3 , 1 , 2 1 4 , 9 6

6 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 77/228

A d v a n c e d C o m m o d o r e1 2 8 V i d e o

J i B u t t e r f i e l d

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

Y o c a d l o o g r a p h i c s o t h C o m m o d o r e 1 2 w i t h a e l e m e n t a r y k n o w l e d g e o t h n e B A S I C : c i r c l e s , s q u a r e s ,l i n e s , a n p o i n t s a p p e a r b m e a n s o s i m p l e B A S I C c o m a n d s . B u a d v a n c e d p r o g r a m m e r s m a s t i l l n e e d t g e i n t ot h m e c h a n i c s o f v i d e o . H e r e ' s s i m p l e e x e r c i s e f o 1 2 8 - m o d e4 0 - c o l u m n s c r e e n s t h a t w i l l g i v e l i t t l e i n s i g h t i n t o t h " w o r k s . "

T h q u e s t i o n o f t e n a r i s e s : H o c a i m p l e m e n t n e c h a r a c t e r s e t ? S o m e p e o p l e w a n t t d e s i g n t h e i r o w p e r s o n a li z e d c o d e s o g r a p h i c s s y m b o l s f o t h s c r e e n ; o t h e r s a r i n t e re s t e d i f o r e i g n l a n g u a g e s . I 4 c o l u m n s , t h 8 5 6 4 v i d e o c h i pi p r a c t i c a l l y i d e n t i c a l t t h 6 5 6 7 o t h C o m m o d o r e 6 4 W i t h

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

B e c a u s e t h C o m m o d o r e 1 2 m a k e s i e a s y , I ' l l b i n c l u di n s o m e h e x a d e c i m a l a d d r e s s e s i t h f o l l o w i n g l i s t i n g . I y o u ' d r a t h e r u s d e c i m a l n u m b e r s , t h c o m p u t e r w i l l d q u i c kc o n v e r s i o n s f o y o u , a n d y o u c a m a k e t h s u b s t i t u t i o n s i nt h p r o g r a m .

C h a n g i n g A d d r e s s e sL e t ' s b u i l d t h p r o g r a m s t e p b s t e p a n n o t e p o i n t s o i n t e r e s t .1 0 P O K E 5 8 , D E C ( " C 0 " )1 1 C L

I ' p l a n n i n g t p u t h s c r e e n a n i t n e c h a r a c t e r s e i n t o m e m o r y b a n k 1 a a d d r e s s e s $ C 0 0 0 t $ C B F F — c h a r a c t e rs e a $ C 0 0 0 , s c r e e n a $ C 8 0 0 . [ B y t h e w a y , i y o u ' d r a t h e r u s

6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 78/228

C h a p t e r -

t h d e c i m a l v a l u e 1 9 i n s t e a d o D E C C ' C O " ) , b m g u e s t .p r e f e r C b e c a u s e i t ' s e a s i e r t v i s u a l i z e i a s p a r t o f t h f u l la d d r e s s $ C 0 0 0 . B s u r e t t y p e z e r o a n n o t h l e t t e r O o y o u ' l l g e a e r r o r . ] B a n k 1 i w h e r e B A S I C p u t s i t v a r i a b l e s ;w w o u l d n ' t w a n t t h e s e t g e m i x e d u w i t h o u r s c r e e n . S w c u d o w n t h t o p - o f - v a r i a b l e - m e m o r y p o i n t e r t $ C 0 0 0 .T h e r e ' s r e a l l y n d a n g e r o m e m o r y c o n f l i c t w i t h t h i s s m a l lp r o g r a m , b u w m i g h t a w e l l d i r i g h t .

T h C L c o m m a n d m a k e s s u r e t h e o t h e r v a r i a b l e p o i n t e r sd o n ' t g e m i x e d u b t h i s c h a n g e .1 2 T R A P 5 0

T h i s c o m m a n d m a b u n f a m i l i a r t m a n y C o m m o d o r ep r o g r a m m e r s . I s e t s u a e r r o r t r a p s t h a t i a n y t h i n g g o e sw r o n g i t h f o l l o w i n g c o d e , t h e c o m p u t e r h o p s t l i n e 5 0 0 ,w h i c h w i l l r e s t o r e t h s c r e e n . T h i s s a v e s u f r o m t h h o r r i b l ep r o s p e c t o w a t c h i n g t h p r o g r a m s t o p w i t h s y n t a x e r r o rw h i l e t h e s c r e e n i s t i l l s c r a m b l e d a n u n r e a d a b l e . T h T R A Pc o m m a n d g i v e s u a n o t h e r b o n u s : I t h c o m p u t e r f r e e z e s — o ri j u s t t o s l o w — w e c a p r e s s R U N / S T O P , a n t h p r o g r a mz i p s t l i n e 5 0 a n w r a p s t h i n g s u p .1 3 B A N K 1

W e ' r e a b o u t t o f i d d l e w i t h t h i n s i d e s o c o m p u t e r c h i p s( r e g i s t e r s ) , s t h i s c o m m a n d c a l l s f o m e m o r y b a n k 1 t m a k et h e c h i p s a c c e s s i b l e . T h i s i n s u r e s t h a t t h e n e x t f e P O K E s w i l lb d i r e c t e d t t h r i g h t p l a c e .1 4 P O K E D E C ( " D D 0 0 " ) , 1 4 8

E x c e p t f o t h d e c i m a l n u m b e r c o n v e r s i o n ( $ D D 0 0 = 5 6 5 7 6 ) ,t h i s P O K E i i d e n t i c a l t t h w a i t ' s d o n e o t h C o m m o d o r e6 4 B r i e f l y , i m e a n s t h i s : D i s p l a y v i d e o o u o t h m e m o r ys l i c e i t h r a n g e $ C 0 0 0 - $ F F F F . W h a v e n ' t s p e c i f i e d t h b a n ky e t , b u w e ' l l g e a r o u n d t i i m o m e n t .1 5 P O K E D E C ( " 0 A 2 C " ) , 3 2 I

W e ' r e s t i l l i b a n k 1 5 b u t h i s a d d r e s s i s n ' t c h i p . T h a d d r e s s $ 0 A 2 C ( d e c i m a l 2 6 0 4 ) i b e l o w $ 4 0 0 0 ( 1 6 3 8 4 ) . W h e nw e ' r e u s i n g b a n k 1 5 a l s u c h l o a d d r e s s e s g t R A M , b a n k0 T h i s P O K E s e t s t h p o s i t i o n o f t h c h a r a c t e r s e a n t h s c r e e n w i t h i n t h v i d e o s l i c e w e ' v e s e l e c t e d . T h c a l c u l a t i o ng o e s l i k e t h i s : W w a n t t h s c r e e n t b a $ C 8 0 0 , w h i c h i 2

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 79/228

S o u n d a n G r a p h i c s

a b o v e t h s t a r t o t h v i d e o s l i c e a $ C 0 0 0 , s o m u l t i p l y t h eb 1 a n d a d d s i m i l a r v a l u e f o t h c h a r a c t e r s e t . I t h i sc a s e , t h c h a r a c t e r s e i r i g h t a t h s t a r t o t h s l i c e ; s w a d t g e v a l u e o 3 2

O t h C o m m o d o r e 6 4 w e ' d d e x a c t l y t h s a m e c a l c u l at i o n , b u w e ' d p u t h r e s u l t i n a d d r e s s $ D 0 1 8 ( 5 3 2 7 2 ) . I f a c t ,t h a t ' s t h s a m e a d d r e s s a w h i c h o u v a l u e w i l l e n u i t h C o m m o d o r e 1 2 8 , b u w m u s t l e t h c o m p u t e r ' s i n t e r r u p tr o u t i n e d e l i v e r i t h e r e f o u s S i n s t e a d o P O K E i n g t h v a l u e d i r e c t l y i n t o $ D 0 1 8 , w s t o r e i a $ 0 A 2 C ( 2 6 0 4 ) . A p a r to t h c o m p u t e r ' s i n t e r r u p t p r o c e d u r e , i w i l l c o p y t h e c o n t e n t so t h i s l o c a t i o n i n t o $ D 0 1 8 .1 6 P O K E D E C ( " D 5 0 6 " ) , 6 8

T h i s t e l l s t h c o m p u t e r t t a k e v i d e o f r o m b a n k 1 . I f w w a n t e d v i d e o f r o m b a n k 0 w e ' d P O K E v a l u e o 4 — o r j u s tl e a v e t h i s l i n e o u t , s i n c e t h a t ' s t h v a l u e t h a t w i l l b t h e r e i a n c a s e .

1 7 P O K E 2 1 7 , 4T h i s P O K E t e l l s t h c o m p u t e r t t a k e i t v i d e o f r o m R A M ,

n o R O M . W d o n ' t n e e d t g i v e t h i s o n f o t h a d d r e s s e s w h a v e c h o s e n s i n c e t h e r e i n c o n f l i c t . T h i s v e r y l o a d d r e s sh a s p e c i a l b a n k i n g r u l e : A l a d d r e s s e s b e l o w h e $ 4 0 0( 1 0 2 4 ) g t R A b a n k 0 r e g a r d l e s s o f t h b a n k w h i c h h a b e e n s p e c i f i e d .

R e l o c a t i n g t h e S c r e e nN o o u r v i d e o i s e u a n r e a d y t o g o . W e ' d b e t t e r p u s o m e t h i n g o t h s c r e e n s w c a s e i w o r k i n g . I s e e m ss e n s i b l e t c o p y o u o l s c r e e n t t h n e p l a c e ; t h e n w e ' l lc o p y t h e c h a r a c t e r s e t . W e ' l l m a k e s l i g h t c h a n g e s y o c a s e h o t c r e a t e a n e s e o c h a r a c t e r s .

F i r s t , o u s c r e e n m u s t m o v e f r o m b a n k 0 a d d r e s s $ 4 0 0 , t b a n k 1 a d d r e s s $ C 8 0 0 . W m u s t m o v e t h w h o l e t h o u s a n dc h a r a c t e r s .2 0 F O J = T 9 9 2 1 B A N K 0 : X = P E E K ( 1 0 2 4 + J )2 2 B A N K 1 : P O K E D E C ( " C 8 0 0 " ) + J , X2 3 N E X T

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 80/228

C h a p t e r

T h i s m o v e s s c r e e n m e m o r y , b u s i n c e t h e c h a r a c t e r s e i n o i p l a c e , t h r e s u l t w o u l d l o o k r a t h e r m u d d y . W c a r e a dt h e c h a r a c t e r s e b s e l e c t i n g b a n k 1 4 i i f o u n d i t h i s b a n ka a d d r e s s e s $ D 0 0 0 - $ D 7 F R T h e r e a r 2 5 c h a r a c t e r s t i m e sb y t e s p e c h a r a c t e r , w h i c h m e a n s 2 0 4 8 b y t e s t m o v e . J u s t a w m o v e d t h s c r e e n i t h l i n e s a b o v e , w m u s t m o v e t h c h a r a c t e r b y t e s o n a t i m e , f l i p p i n g b e t w e e n b a n k s 1 a n 1

W e l l a l s o c h a n g e t h c h a r a c t e r s s l i g h t l y a w m o v et h e m . T h i s a l l o w s u t s e t h a t i n d e e d w e ' v e t a k e n c o n t r o l o ft h e c h a r a c t e r s e t .3 0 F O J = D E C ( " C 0 0 0 " ) T D E C C C 7 F F " ) S T E P3 1 F O K = 0 T O3 2 B A N K 1 3 3 X = P E E K ( J + 4 0 9 6 + 7 - K )3 4 B A N K3 5 P O K E J + K , X3 6 N E X T3 7 N E X T

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

C l e a n i n g U W e ' r e f i n i s h e d — a l m o s t . W m u s t b n e a t a n p u e v e r y t h i n gb a c k t h w a i w a s . T h i s a l s o g i v e s y o c h a n c e t s e t h o r i g i n a l v a l u e s t h a t w e r e i t h e v a r i o u s r e g i s t e r s a n a d d r e s s e s .5 0 B A N K 1 5 1 P O K E D E C ( " D D 0 0 " ) , 1 5 15 2 P O K E D E C ( " 0 A 2 C " ) , 2 05 3 P O K E D E C ( " D 5 0 6 " ) , 45 4 P O K E 2 1 7 , 0

T h e s e l i n e s r e s t o r e t h o r i g i n a l s c r e e n . l i t t l e s t u d y ' — s h o u l d e n a b l e y o t g u e s s a w h a t e a c h P O K E d o e s — o ru n d o e s .

F i n a l l y , w n e e d t w o l a s t l i n e s t o c o m p l e t e t h j o b . B u ' — t h e r e ' s a i m p o r t a n t n o t e : D n o e n t e r t h e s e l i n e s u n t i l y o u ' v e

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 81/228

S o u n d a n G r a p h i c s

t e s t e d t h p r o g r a m a n f o u n d i g o o d . I y o u r p r o g r a m h a p r o b l e m , y o u ' l l w a n t t b a b l e t l o o k a t h v a r i a b l e s ( b u s i n g c o m m a n d s s u c h a P R I N T J t f i n d o u w h a t w e n tw r o n g . T h e s e f i n a l l i n e s m a k e i i m p o s s i b l e f o y o t d s o 5 5 P O K E 5 8 , D E C ( " F F " )5 6 C L

W e ' v e g i v e n b a c k t t h c o m p u t e r i t v a r i a b l e s t o r a g em e m o r y . A n t h j o i c o m p l e t e .

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 82/228

P r o g r a m m i n g M u s i ca n c T S o u n dP h i l i p I N e l s o n

A n x i o u s t u n l e a s h y o u r n e C o m m o d o r e 1 2 8 ' s s o u n d a n m u s i cc a p a b i l i t i e s ? H e r e a r s o m e p r a c t i c a l e x a m p l e s o h o t u s t h p o w e r f u l n e B A S I C 7 . c o m m a n d s i w o r k i n g p r o g r a m s .

O n o t h C o m m o d o r e 1 2 8 ' s m o s t w e l c o m e f e a t u r e s i s i t sa b i l i t y t m a k e m u s i c a n s o u n d e f f e c t s w i t h s i m p l e B A S I Cc o m m a n d s . G o n e a r e t h e d a y s w h e n i t o o k h o u r s o p r o g r a mm i n g a n m u l t i p l e P O K E s t c r e a t e s o u n d o n C o m m o d o r ec o m p u t e r . S i n c e y o u r 1 2 8 S y s t e m G u i d e e x p l a i n s t h b a s i c s o fe a c h c o m m a n d , w e ' l l l o o k a s o m e p r o g r a m s t h a t a c t u a l l y p u t h e m t w o r k .

M u s i c a l K e y b o a r dP r o g r a m 2 - 4 , " M u s i c a l K e y b o a r d , " i l o t s o f u t u s a n a l s o d e m o n s t r a t e s h o a r r a y s c a s i m p l i f y y o u r p r o g r a m s . I d e f i n e s f o u r r o w s o k e y s o t h 1 2 8 ' s k e y b o a r d a m u s i c a lk e y s , g i v i n g y o u t w o s e p a r a t e o n e - o c t a v e k e y b o a r d s . B p r e s si n k e y s 0 - o t h n u m e r i c k e y p a d , y o c a s w i t c h t a n o t h e 1 2 8 ' s t e p r e d e f i n e d i n s t r u m e n t v o i c e s .T h i n k f o m o m e n t h o y o w o u l d s t r u c t u r e m u s i c a lk e y b o a r d p r o g r a m l i k e t h i s . I r e q u i r e s t h a t y o r e a d t h c o p u t e r ' s k e y b o a r d , d e t e c t t h p r e s s i n g o c e r t a i n k e y s , a n t r a n s l a t e t h o s e k e y p r e s s e s i n t o m u s i c a l n o t e s . O n w a t d t h i s w o u l d b w i t h l o n g s e r i e s o i n d i v i d u a l I t e s t s ( I A " X T H E N P L A Y " O 3 C " , a n s o n ) . B u t h a t w o u l d b s l o w a n i n e f f i c i e n t . T h i s p r o g r a m t a k e s a d i f f e r e n t a p p r o a c h ,u s i n g a r r a y s t h a t s t o r e t h m u s i c d a t a a n s i m p l i f y t h k e b o a r d - s c a n n i n g p r o c e s s a w e l l .

T a k e l o o k a l i n e s 6 0 - 9 0 , t h s e t u p p o r t i o n . B o t h o t h a r r a y s ( P a n T $ a r d i m e n s i o n e d w i t h 2 5 e l e m e n t s , e n o u g ht h o l d a l t h p o s s i b l e k e y s c a n v a l u e s . L i n e 8 s t o r e s a P L A Ys t r i n g ( O 3 C , O 3 # C , e t c . ) i e a c h e l e m e n t o t h P a r r a y t h a tc o r r e s p o n d s t t h k e y s c a n v a l u e ( 2 3 , 1 8 , e t c . ) o k e t h a tw e ' l l u s t m a k e m u s i c . L i n e 9 c r e a t e s s i m i l a r a r r a y f o r s e -7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 83/228

S o u n d a n G r a p h i c s

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

A f t e r t h e s e t u p p o r t i o n i c o m p l e t e , t h p r o g r a m l o o p sc o n t i n u o u s l y t h r o u g h l i n e s 2 0 - 5 0 . T h s t a t e m e n t X = P E E K ( 2 1 2 )r e t u r n s t h v a l u e o t h l a s t k e p r e s s e d . ( L o c a t i o n 2 1 p e f o r m s t h s a m e f u n c t i o n a s l o c a t i o n 1 9 o t h 6 a n V I C -2 0 T h s t a t e m e n t F O J = T 1 E 9 : P R I N T P E E K ( 2 1 2 ) : N E X Tl e t s y o s e e t h e k e y s c a n v a l u e o a n k e y . ) L i n e s 3 0 - 4 0 u s t h k e y s c a n v a l u e a a i n d e x i n t o t h T a n P a r r a y s . T h I s t a t e m e n t s i t h e s e l i n e s w i l l b t r u e o n l y f o t h o s e a r r a y e e m e n t s i w h i c h w p l a c e d d a t a : E v e r y o t h e r e l e m e n t i t h a r r a y s i e m p t y , c o n t a i n i n g n o t h i n g b u n u l l s t r i n g ( " ) N o t e t h a t t h a r r a y s m a k e i p o s s i b l e t u s s h o r t , e f f i c i e n tw o r k i n g l o o p t h a t d o e s n ' t s l o w t h p r o g r a m a m u l t i t u d e o I s t a t e m e n t s w o u l d .

S i n c e t h i s p r o g r a m u s e s P L A Y t m a k e t h a c t u a l n o t e s ,y o m a w o n d e r w h t h e r e ' s S O U N D c o m m a n d i l i n e 6 0 .T h s t a t e m e n t F O J = T 3 : S O U N D J , 0 , 0 : N E X T i m m e d ia t e l y s i l e n c e s a l S O U N D s t h a t m a b i e f f e c t f r o m a p r e v io u p r o g r a m ( o y o u r o w e x p e r i m e n t s ) . W h e n y o u ' r e s e t t i n gu s o u n d p r o g r a m , i t ' s p r u d e n t t r e s e t s o u n d a n d m u s i c p ar a m e t e r s t k n o w n s t a t e t o a v o i d u n w a n t e d r e s i d u a l e f f e c t s .I y o f a i l t t a k e t h i s p r e c a u t i o n , p r e v i o u s s o u n d c o m m a n d s( F I L T E R , e t c . ) m a p r e v e n t y o u r s o u n d s f r o m w o r k i n g p r o pe r l y . O c o u r s e , p r e s s i n g R U N / S T O P - R E S T O R E r e s e t s m o s ts o u n d p a r a m e t e r s , b u t h a t ' s n o v e r y e l e g a n t s o l u t i o n . T h u s ,l i n e 7 0 e n s u r e s t h a t v a r i o u s T E M P O a n P L A Y p a r a m e t e r s a r s e a n e e d e d i t h i s p r o g r a m ( f i l t e r o f f , m a x i m u m v o l u m e , e t c . ) .

A l t h o u g h P L A Y c a g e n e r a t e a m a n y a t h r e e n o t e s a o n c e , t h e 1 2 8 ' s B A S I C c a r e a d o n l y o n k e a a t i m e . S t h i sk e y b o a r d i n e c e s s a r i l y m o n o p h o n i c . M a c h i n e l a n g u a g er o u t i n e s a r e n e c e s s a r y t c r e a t e p o l y p h o n i c ( c h o r d - p l a y i n g )k e y b o a r d .

1 2 S o u n d m a k e r" S o u n d m a k e r , " P r o g r a m 2 - 5 , i t h s h o r t e s t o t h e x a m p l ep r o g r a m s , b u t i c r e a t e s t h m o s t c o m p l e x e f f e c t s , u s i n g a l t h r e e o t h 1 2 8 ' s v o i c e s s i m u l t a n e o u s l y . T y p e i S o u n d m a k e ra n s a v e i t d i s k o t a p e ( p a y c l o s e a t t e n t i o n t t h p u n c t u at i o n i l i n e 6 0 ) . W h e n y o r u t h p r o g r a m , i s p e n d s f e s e c o n d s i p r e p a r a t i o n , t h e n i n v i t e s y o t p r e s s a n k e y .

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 84/228

C h a p t e r

W h e n e v e r y o p r e s s a k e y , t h 1 2 e x e c u t e s n e S O U N D c o m m a n d a n d i s p l a y s i o t h e s c r e e n f o r e f e r e n c e .A y o u ' l l s o o n d i s c o v e r , S O U N D c a c r e a t e d a z z l i n g v a r i e t yo e f f e c t s . A l t h r e e v o i c e s a r u s e d , i 1 - 2 - 3 o r d e r , s i y o k e e p p r e s s i n g k e y s , y o u ' l l h e a r a m a n y a s t h r e e d i f f e r e n ts o u n d s a o n c e . T h d u r a t i o n o e a c h s o u n d i l i m i t e d t 1 0 0 .I y o w a n t t h e a r i n d i v i d u a l s o u n d s , w a i t u n t i l t h c u r r e n ts o u n d i d o n e b e f o r e p r e s s i n g k e y .

N o t e t h d i f f e r e n c e i t h w a t h a t S O U N D a n P L A Yh a n d l e v o l u m e . S O U N D d o e s n o p r o d u c e a n s o u n d s a a l u n l e s s y o h a v e p r e v i o u s l y s e t h v o l u m e t s o m e n o n z e r ov a l u e w i t h V O ( l i n e 7 0 ) . P L A Y , o t h o t h e r h a n d , s e t s v o u m f o i t s e l f w i t h t h s y m b o l , a n p a y s n a t t e n t i o n t V O c o m m a n d s .

T h f r e q u e n c y o e a c h s o u n d i d e t e r m i n e d b t h A S C I Iv a l u e o t h k e y o p r e s s . K e y s w i t h h i g h v a l u e s ( l i k e Z A S C I I 9 0 c r e a t e h i g h e r p i t c h e d s o u n d s t h a n t h o s e w i t h l o w e rv a l u e s ( l i k e t h s p a c e b a r , A S C I I 3 2 ) . P r e s s i n g S H I F T p i t c h e st h e n t i r e k e y b o a r d h i g h e r . T h w a v e f o r m a n d s w e e p d i r e ct i o n f o e a c h s o u n d a r e s e l e c t e d a r a n d o m , w h i l e t h m i n im u f r e q u e n c y a n s t e p v a l u e a r h e l d w i t h i n r e a s o n a b l er a n g e s .

S o n g P l a y e rP r o g r a m 2 - d e m o n s t r a t e s s i m p l e w a t e n c o d e a n p l a ym u s i c o t h 1 2 8 . " S o n g P l a y e r , " l e t s y o e n t e r P L A Y s t r i n g su n d e r p r o g r a m c o n t r o l , a d d i n g t h e m t t h p r o g r a m a D A T As t a t e m e n t s w i t h t h d y n a m i c k e y b o a r d m e t h o d . A f t e r e n t e r i n gy o u r m u s i c , y o c a r e p l a y i a a n t i m e o r e s a v e i a l o n gw i t h t h p r o g r a m . P a s p e c i a l a t t e n t i o n t t h p u n c t u a t i o n i l i n e s 6 a n 1 9 0 , w h i c h c a u s e t h p r o g r a m t m o d i f y i t s e l f .

T h m u s i c e n t r y r o u t i n e p e r m i t s y o t e n t e r a m a n y a 2 P L A Y s y m b o l s a o n t i m e ( b l a n k s p a c e s a r a c c e p t a b l e , a l I t h o u g h P L A Y i g n o r e s t h e m ) . C o n s u l t t h 1 2 S y s t e m G u i d e f o a e x p l a n a t i o n o t h v a r i o u s P L A Y s y m b o l s . B e f o r e a d d i n gt h P L A Y s t r i n g a D A T A s t a t e m e n t , t h e p r o g r a m c h e c k s e v e r c h a r a c t e r i t h s t r i n g t o m a k e s u r e i i l e g a l . I y o e n t e r

c h a r a c t e r t h a t t h P L A Y c o m m a n d d o e s n o u n d e r s t a n d ( Z f o r i n s t a n c e ) , t h p r o g r a m s i g n a l s a e r r o r a n l e t s y o t r a g a i n . N o t e t h a t w h i l e t h p r o g r a m c a t e l l w h e t h e r c h a r a ct e i l e g a l P L A Y s y m b o l , i d o e s n o t c h e c k f o c o r r e c t P L A Y

I 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 85/228

S o u n d a n G r a p h i c s

s y n t a x : Y o a r s t i l l r e s p o n s i b l e f o a r r a n g i n g t h s y m b o l s i m e a n i n g f u l o r d e r . F o r e x a m p l e , t h s t r i n g " X U $ # " c o n t a i n sl e g a l P L A Y c h a r a c t e r s , b u c a u s e s a e r r o r w h e n y o t r t P L A Y i t I t h P L A Y s t r i n g i a c c e p t e d , t h e s c r e e n f l a s h e sb r i e f l y a t h p r o g r a m a d d s t h s t r i n g a s D A T A l i n e , t h e nt h e e n t r y p r o m p t r e a p p e a r s . Y o c a r e t u r n t t h m a i n s c r e e nb e n t e r i n g M E N U o b t y p i n g R E T U R N w i t h o u t e n t e r i n ga n c h a r a c t e r s .

M u s i c d a t a i a d d e d b e g i n n i n g w i t h l i n e 1 0 0 0 . S u c c e s s i v eD A T A l i n e s a r e n t e r e d a 1 0 0 1 , 1 0 0 2 , a n s o n u t h r o u g h6 3 9 9 8 . D n o d e l e t e o r e n u m b e r l i n e 6 3 9 9 9 ; i c o n t a i n ss t r i n g t h a t m a r k s t h e n o t h m u s i c d a t a . W h e n y o e x i t t h p r o g r a m b p r e s s i n g Q i a u t o m a t i c a l l y m o d i f i e s l i n e 1 t l e y o r e s a v e t h p r o g r a m c o m p l e t e w i t h t h n e d a t a . T h n e x tt i m e y o l o a d a n r u t h p r o g r a m , a l t h e d a t a w i l l b t h e r e .S i n c e t h i s p r o g r a m m o d i f i e s i t s e l f a i r u n s , d o n ' t r e n u m b e r i o a l t e r a n l i n e s u n l e s s y o u n d e r s t a n d e x a c t l y h o t h d n a m i c k e y b o a r d p r o c e s s i n g w o r k s .

A s h o r t a t h e y a r e , t h e s e p r o g r a m e x a m p l e s d e m o n s t r a t en u m b e r o h a n d y s o u n d a n m u s i c t e c h n i q u e s . I t ' s o f t e n

p r e f e r a b l e t u s v a r i a b l e s r a t h e r t h a n l i t e r a l v a l u e s i s o u n dc o m m a n d s . S O U N D V O C , F R Q , D U i j u s t a s v a l i d a sS O U N D 1 1 1 0 0 0 , 1 0 0 — a n d c o n s i d e r a b l y e a s i e r t u n d e rs t a n d . A n r e p l a c i n g l i t e r a l s w i t h v a r i a b l e s l e t s y o c h a n g e t h s o u n d d y n a m i c a l l y , j u s t b r e d e f i n i n g t h v a r i a b l e . S i n c e t h c o m p u t e r c a o f t e n l o o k u v a r i a b l e f a s t e r t h a n i c a i n t e rp r e t a l i t e r a l , v a r i a b l e s c a a l s o s p e e d u p r o g r a ms o m e w h a t .

P L A Y a c c e p t s v a r i a b l e s , t o o , s P L A Y A a n P L A YA $ ( 2 3 ) w o r k j u s t a w e l l a P L A Y " F " Y o m a a l s oc o n c a t e n a t e P L A Y s t r i n g s a n u s o t h e r s t r i n g o p e r a t i o n s s u c ha M I D $ , L E F T S , a n s o n 1 P L A Y " X 0 U 9 S " : P $ = " C D E F G A B "2 F O J = A S C ( " 1 " ) T A S C ( " 6 " ) :

F O K = l T O3 P L A Y " O " + C H R $ ( J ) + M I D $ ( P $ , K , 1 )4 N E X T : N E X T

P L A Y a c c e p t s n e a r l y a n s t r i n g c o n s t r u c t i o n t h a t P R I N Tc a h a n d l e . H o w e v e r , y o m a n o s e p a r a t e P L A Y s t r i n g sw i t h c o m m a o s e m i c o l o n . O n f i n a l r e a s o n t p u s t r i n g si n t o v a r i a b l e s i t h a t i s i m p l i f i e s d e b u g g i n g . I y o u ' r e n o s u r e

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 86/228

C h a p t e r .

L

w h a t P L A Y s t a t e m e n t i d o i n g , s i m p l y P R I N T t h s t r i n g o t h s c r e e n t s e w h a t i c o n t a i n s .P r o g r a m 2 - 4 . M u s i c a l K e y b o a r dF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B Q 1 G O S U B 6 D 2 G E T K E Y A $ : X = P E E K ( 2 1 2 )H 3 I T $ ( X ) < > n " T H E N P L A Y T $ ( X ) : P R I N T " l H O M E j M S P

C ( 7 ) " T U N E : " M I D $ ( T $ ( X ) , 2 )S E 4 0 I P $ ( X ) < > " " T H E N P L A Y P $ ( X ) : P R I N T M { H O M E } " P $

( X ) " { 2 S P A C E S ] 1 1R 5 G O T O 2 C 6 D I P $ ( 2 5 6 ) # T $ ( 2 5 6 ) : F O R J = l T O 3 : S 0 U N D J , 0 , 0

: N E X TB 7 P L A Y " U X T S " : T E M P O 1 E 8 R E A D K , P $ : P $ ( K ) = P $ : I F P $ < > " D O N E " T H E N 8 E D 9 0 R E A D K , P $ : T ( K ) = " T " + P $ : I P $ o " D O N E M T H E N 9 X 1 0 P R I N T C H R $ ( 1 4 7 ) S P C ( 1 0 ) n { R V S } { 2 D O W N j M U S I C A L

K E Y B O A R D { O F F } 1 1 : P R I N T S P C ( 1 2 ) " 4 9 J 1 1 P R I N T S P C ( H ) " E O " : P R I N T S P C ( 1 2 ) "

F G K B 1 2 P R I N T S P C ( 1 1 ) " X , " : P R I N T " { H O M E } "S P C ( 7 ) " T U N E : " M I D $ ( T $ ( 7 0 ) , 2 ) : R E T U R N

R 1 3 D A T A 2 3 , 0 3 0 , 1 8 , O 3 # C , 2 0 , O 3 D , 2 1 , 0 3 # DX 1 4 D A T A 3 1 , O 3 E , 2 6 , O 3 F , 2 8 , O 3 # F , 2 9 , O 3 GG 1 5 D A T A 3 9 , O 3 # G , 3 4 , O 3 A , 3 6 , O 3 # A , 3 7 , O 3 BM 1 6 D A T A 4 7 , O 4 C , 1 4 , 0 4 C , 1 1 , 0 4 # C , 1 7 , 0 4 DC 1 7 D A T A 1 6 , O 4 # D , 2 2 , O 4 E , 1 9 , O 4 F , 2 5 , O 4 # FR 1 8 D A T A 2 4 , O 4 G , 3 0 , 0 4 # G , 2 7 , O 4 A , 3 3 , O 4 # AP 1 9 D A T A 3 2 , O 4 B , 3 8 , O 5 C , 2 5 6 , D O N ED 2 0 D A T A 8 1 , 0 , 7 1 , 1 , 6 8 , 2 , 7 9 , 3 , 6 9 , 4 , 6 6 , 5R 2 1 D A T A 7 7 , 6 , 7 0 , 7 , 6 5 , 8 , 7 8 , 9 , 2 5 6 , D O N E

P r o g r a m 2 - 5 . S o u n d m a k e rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B E 1 G O S U B 7 K 2 G E T K E Y A $ : V = V + 1 : I F V = T H E N V = 1 : P R I N TC 3 W = I N T ( R N D ( 1 ) * 4 ) : D I = I N T ( R N D ( 1 ) * 3 ) : F R Q = K ( T ( A S C

( $ ) ) )R B 4 0 M I = I N T ( F R Q / ( 8 * ( V * W + 1 ) ) ) : S = I N T ( ( F R Q - M I ) / ( ( I N T( R N D ( 1 ) * 1 0 ) + 1 ) * ( M I / 1 0 0 ) ) )H 5 S O U N D V , 0 , 0 : S O U N D V , F R Q , 1 0 0 , D I , M I , S , WS 6 P R I N T " S O U N D " V " { L E F T } , " F R Q " { L E F T } , " 1 0 0 " { L E F T }, " D I " { L E F T } , " M I " { L E F T } , " S " { L E F T } , " W " { L E F T } , "

: G O T O 2 A 7 F O J = l T O 3 : S O U N D J , 0 , 0 : N E X T : V O L 1 5 : D I M K ( 25 6 ) , T ( 2 5 6 ) : F O R J = l T O 2 5 5 : T ( J ) = J7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 87/228

S o u n d a n G r a p h i c s

H 8 K ( J ) = J * 1 5 : N E X T : P O K E 2 5 9 4 , 1 2 8 : P R I N T C H R $ ( 1 4 7) S P C ( 1 0 ) " { D O W N } { R V S } 1 2 8 S O U N D M A K E R { O F F } M

D 9 P R I N T S P C ( 1 0 ) " P R E S S A N K E Y " : P R I N T : R E T U R N

P r o g r a m 2 - 6 . S o n g P l a y e rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B G 1 J 1 0 1 7F 2 C H $ = " 0 1 2 3 4 5 6 7 8 9 # $ . X V O T U W H Q I S R M A B C D E F G " : P L A Y

" X U O 4 T 7 I D S 3 0 P R I N T " t C L R } [ 2 R I G H T } { R V S } 1 2 8 S O N G M A K E R " : P R IN T " { 2 D O W N } { 2 R I G H T } { R V S } E l O F F } N T E R

{ S P A C E S } { R V S } P { O F F } L A Y { 2 S P A C E S } { R V S } Q{ O F F j U I T "

G 4 G E T K E Y A $ : I F A $ < > " E " A N D A $ < > " P " A N D A $ < > " Q " T H 4

A 5 I A $ = " E " T H E N 1 2 H 6 I F A $ = " Q " T H E N P R I N T " { C L R } 1 0 J = " J : P O K E 2 0 8 , 2 :

P O K E 8 4 2 , 1 9 : P O K E 8 4 3 , 1 3 : E N DK 7 R E M S O N G P L A Y I N G R O U T I N EA 8 R E S T O R E : P R I N T " { D O W N } P L A Y I N G S O N G . P R E S S A N YK E T O Q U I T . "X 9 G E A $ : R E A D P $ : I F A $ = " " A N D P $ < > " F I N I " T H E N P

I N P $ : P L A Y P $ : G O T O 9 0G 1 0 P R I N T " I D O W N } E N D O F S O N G •X 1 1 R E M U S I C E N T R Y R O U T I N ES 1 2 P O K E 2 0 8 , 0 : P R I N T " { C L R j E N T E R M U S I C D A T A ( 2

- C H A R A C T E R M A X I M U M ) "G 1 3 P R I N T " T Y P E ' M E N U ' T E X I T "M 1 4 P $ = " " : I N P U T " { S P A C E S } " ; P $ : I F P $ = " M E N U " O

P $ = " " T H E N 2 D 1 5 X = 0 : F O R M = T L E N ( P $ ) : F O R K = T L E N ( C H $ )K 1 6 I F M I D $ ( P $ , M , 1 ) = M I D $ ( C H $ , K , 1 ) T H E N X = X + 1K 1 7 N E X T K , M : I F X < L E N ( P $ ) T H E N P R I N T " I L L E G A L M

S I D A T A " : P R I N T P : G O T O 1 3 C 1 8 P R I N T " { C L R } " ; J ; " D A T A " ; P $ : P R I N T " J = " J + 1 " : G

O T 1 2 0 "S 1 9 P O K E 2 0 8 , 4 : P O K E 8 4 2 , 1 9 : P O K E 8 4 3 , 1 3 : P O K E 8 4

, 1 3 : E N DE 9 9 R E M U S I C D A T A S T A R T S H E R EX 1 0 0 0 D A T AJ 1 0 0 1 D A T AM 1 0 0 2 D A T AA 1 0 0 3 D A T AC F 1 0 0 4 D A T AE 1 0 0 5 D A T AG 1 0 0 6 D A T AJ 1 0 0 7 D A T A

7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 88/228

C h a p t e r

M 1 0 0 8 D A T AQ 1 0 0 9 D A T AD 1 0 1 0 D A T AK 1 0 1 1J 1 0 1 2

D A T AD A T A

M G 1 0 1 3 D A T AM J 1 0 1 4 D A T AS 1 0 1 5 D A T AJ 1 0 1 6 D A T A MK 6 3 9 9 9 D A T A F I N I

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 89/228

S o u n d a n M u s i cP h i l i p I N e l s o n

T h C o m m o d o r e 1 2 8 ' s a d v a n c e d B A S I C m a k e s i e a s y a n f u t c r e a t e m u s i c o s o u n d e f f e c t s . T h i s c h a p t e r s h o w s h o t u s t h V O L , T E M P O , a n E N V E L O P E s t a t e m e n t s , e x p l o r e s t h F I L T E R ,S O U N D , a n P L A Y c o m m a n d s , a n i n c l u d e s t h r e e s h o r t t u t o r i a lp r o g r a m s .

I y o u ' v e h e a r d m u c h a b o u t t h n e C o m m o d o r e 1 2 8 , y o p r o b a b l y k n o w t h a t i c o n t a i n s a v e r y p o w e r f u l m u s i c m a k e r :t h S I D ( S o u n d I n t e r f a c e D e v i c e ) c h i p , e x a c t l y a s f o u n d i t h C o m m o d o r e 6 4 a n s t i l l t h e b e s t s o u n d c h i p i a n p e r s o n a lc o m p u t e r . T h S I c h i p p r o v i d e s t h r e e i n d e p e n d e n t v o i c e s( t o n e g e n e r a t o r s ) f o p l a y i n g u t t h r e e n o t e s a o n c e , a n f o u r d i f f e r e n t w a v e f o r m s t s i m u l a t e v i r t u a l l y a n s o u n d .

A l t h o u g h b o t h c o m p u t e r s u s t h S I c h i p , t h c o m p a r is o n e n d s t h e r e . S i n c e C o m m o d o r e 6 B A S I C h a n s o u n dc o m m a n d s , e v e n s i m p l e 6 s o u n d e f f e c t s r e q u i r e s e v e r a l P O K Es t a t e m e n t s . T h 1 2 8 ' s B A S I C e l i m i n a t e s t h P O K E s b a d d i n gs i n e m u s i c a n d s o u n d c o m m a n d s : P L A Y , S O U N D , V O L ,T E M P O , E N V E L O P E , a n F I L T E R .

S i m p l i c i t y a n d P o w e rT h P L A Y c o m m a n d i b o t h p o w e r f u l a n e a s y t u s e . I y o h a v e a c c e s s t 1 2 8 , t y p e i a n r u t h f o l l o w i n g o n e - l i n ep r o g r a m . ( T h e s p a c e s m a k e t h s t a t e m e n t m o r e r e a d a b l e , b u a r n o n e c e s s a r y . )1 0 P L A Y " C D E F G F E D C "

T h 1 2 p l a y s n i n e n o t e s , g o i n g u t h s c a l e a n d o w na g a i n . I w o u l d t a k e l o m o r e w o r k t p l a y t h s a m e n i n en o t e s o t h 6 4 — y o u ' d n e e d a l e a s t t h r e e p r e l i m i n a r y P O K E s( t s e t h v o l u m e a n d s o u n d e n v e l o p e ) , p l u s f o u r P O K E s f o e a c h n o t e ( o n e t t u r n o t h v o i c e , t w t s e t h p i t c h , a n o n t t u r n o f t h v o i c e ) .

I n t e r e s t i n g l y , y o c a c o n t r o l t h S I c h i p i 1 2 m o d ew i t h t h s a m e P O K E s a o t h 6 4 T h a t ' s u s u a l l y w a s t e o t i m e , s i n c e t h 1 2 8 ' s B A S I C c o m m a n d s a r m o r e c o n v e n i e n tt h a n P O K E s . H o w e v e r , 1 2 B A S I C h a c e r t a i n l i m i t a t i o n s

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 90/228

C h a p t e r

( S O U N D s t a t e m e n t s c a n ' t u s r i n g m o d u l a t i o n o s y n c h r o n i z at i o n , f o e x a m p l e ) . I y o a l r e a d y k n o w s o u n d p r o g r a m m i n go t h 6 4 y o m a s t i l l f i n d u s e s f o o l d - f a s h i o n e d 6 p r o -g r a m m i n g t e c h n i q u e s .

T h P L A Y c o m m a n d i s v e r s a t i l e t h a t i t ' s a l m o s tm i n i l a n g u a g e i i t s e l f . I a d d i t i o n t p l a y i n g n o t e s , y o c a i n s e r t r e s t s , c h a n g e o c t a v e s , c h o o s e a n o f t e n d i f f e r e n t i n s t r um e n t v o i c e s , u s f i l t e r i n g , a n e v e n p l a y m u l t i v o i c e m u s i c .

V O M e a n s V o l u m eT h V O c o m m a n d a f f e c t s a l t h r e e v o i c e s a o n c e a n a c c e p t sv a l u e s f r o m ( s i l e n c e ) t 1 ( m a x i m u m ) . A d t h e f o l l o w i n gl i n e t t h e x a m p l e p r o g r a m a n r u i a g a i n :1 V O 1

S i n c e t h s o n g p l a y s a t h s a m e v o l u m e , i s e e m s V O h a d n o e f f e c t . I f a c t , V O j u s t d u p l i c a t e d t h d e f a u l t v o l u m es e t t i n g t h a t P L A Y u s e s w h e n n o v o l u m e i s p e c i f i e d . W h e ny o t u r n o t h 1 2 8 , i e s t a b l i s h e s s e v e r a l m u s i c a n s o u n ds e t t i n g s ( p a r a m e t e r s ) i a d v a n c e . F o r i n s t a n c e , t h P L A Y s t a t em e n t a b o v e p l a y s t h e n o t e s a m a x i m u m v o l u m e w i t h s o u n de n v e l o p e a n d w a v e f o r m t h a t s i m u l a t e a p i a n o . O t h e r d e f a u l ts o u n d p a r a m e t e r s , t o o , r e m a i n i e f f e c t u n t i l y o c h a n g e t h e m .

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

v o l u m e c a a d t t h d y n a m i c s o a s o n g . S i n c e d r a s t i c v o l u m ec h a n g e s m a k e t h S I c h i p " p o p , " d o n ' t u s V O t t u r n i n d iv i d u a l n o t e s o n a n d o f f . ( T h e a r t h p o p , t u r n u t h v o l u m eo y o u r m o n i t o r o T s e t , e n t e r t h e f o l l o w i n g l i n e w i t h o u tl i n e n u m b e r , a n p r e s s R E T U R N : V O 1 5 : V O L 0 : V O L 1 5 . )

U n l i k e P L A Y s t a t e m e n t s , S O U N D s t a t e m e n t s d e f a u l t t v o l u m e o 0 B e f o r e u s i n g S O U N D , y o u m u s t a l w a y s u s V O t s e t h v o l u m e t s o m e n o n z e r o v a l u e .

T E M P OT E M P O i a n o t h e r c o m m a n d t h a t a f f e c t s a l v o i c e s e q u a l l y , I s e t t i n g t h s p e e d a w h i c h s o n g p l a y s . T E M P O i f o l l o w e db o n n u m b e r i t h r a n g e 0 - 2 5 5 . T h d e f a u l t t e m p o s e t t i n gi 1 5 a p e d e s t r i a n s p e e d . A d t h f o l l o w i n g l i n e t t h e x I — a m p l e p r o g r a m a n r u i a g a i n :2 T E M P O 5

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 91/228

S o u n d a n G r a p h i c s

A t e m p o o f 5 0 , t h s o n g p l a y s m u c h f a s t e r . T r s e v e r a ld i f f e r e n t T E M P O v a l u e s i l i n e 2 0 A y o u ' l l f i n d , t h h i g h e s tt e m p o s a r e x c e e d i n g l y f a s t — t o o s p e e d y f o p l a y i n g w h o l es o n g s , b u h a n d y f o s i m u l a t i n g t r i l l s a n g r a c e n o t e s . C h a n g et h T E M P O v a l u e b a c k t 1 w h e n y o u ' r e d o n e e x p e r i m e n t i n gp w i t h l i n e 2 0

D o n ' t c o n f u s e t e m p o — t h e o v e r a l l s p e e d o f t h e m u s i c —w i t h t h i n d i v i d u a l d u r a t i o n o e a c h n o t e ( q u a r t e r n o t e , s i t e e n t h , e t c . ) . I c o n v e n t i o n a l m u s i c q u a r t e r n o t e l a s t s o n " b e a t , " a e i g h t h n o t e l a s t s o n e - h a l f b e a t , a n s o n T e m p od e f i n e s h o m a n y b e a t s a r p l a y e d i m i n u t e . A f a s t e r t e p o e v e r y n o t e p l a y s f a s t e r , b u q u a r t e r n o t e s s t i l l l a s t t w i c e a l o n g a e i g h t h n o t e s . T h d e f a u l t n o t e d u r a t i o n f o P L A Y i q u a r t e r n o t e .

B u i l t - i n O r c h e s t r aT h E N V E L O P E c o m m a n d i m o r e v e r s a t i l e t h a n V O o T E M P O . I i u s e d t c r e a t e c u s t o m i z e d i n s t r u m e n t s o u n d s f o y o u r s o n g s . E N V E L O P E t a k e s t h f o l l o w i n g g e n e r a l f o r m :E N V E L O P E i a d s r w

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

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

T h f i r s t n u m b e r i a E N V E L O P E s t a t e m e n t c h o o s e s o n o t h 1 2 8 ' s i n s t r u m e n t v o i c e s . T h e r e a r t e p r e d e f i n e d i n s t r um e n t s , n u m b e r e d 0 - a s h o w n h e r e :I n s t r u m e n t E N V E L O P EP i a n oA c c o r d i o nC a l l i o p e 2D r u mF l u t eG u i t a rH a r p s i c h o r dO r g a nT r u m p e tX y l o p h o n e

S i n c e P L A Y c o m m a n d s u s t h s a m e i n s t r u m e n t n u m b e r s ,y o u ' l l w a n t t b e c o m e f a m i l i a r w i t h t h i s l i s t . T p i c k a i n s t r u -

j — m e n t w i t h i n P L A Y , a d ( f o r t u n e ) f o l l o w e d b t h e d e s i r e d

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 92/228

C h a p t e r

i n s t r u m e n t n u m b e r . F o i n s t a n c e , P L A Y " T T F s l e c t s i n s t r u m e n t ( g u i t a r ) a n p l a y s n o t e s a n D t h e n s l e c t s i n s t r u m e n t ( d r u m ) a n p l a y s n o t e s E a n d F T h e s a m en u m b e r i n g s c h e m e i d e n t i f i e s c u s t o m i z e d i n s t r u m e n t s , a y o u ' l ls e i m o m e n t . T h e d e f a u l t i n s t r u m e n t f o P L A Y s t a t e m e n t si i n s t r u m e n t ( p i a n o ) ; i y o d o n ' t s p e c i f y a i n s t r u m e n t ,P L A Y a l w a y s p r o d u c e s p i a n o s o u n d .

S o u n d E n v e l o p e sT c r e a t e n e i n s t r u m e n t s o u n d s , y o u ' l l n e e d t l e a r n a b o u ts o u n d e n v e l o p e s a n w a v e f o r m s . E v e r y n a t u r a l s o u n d h a d i s t i n c t i v e e n v e l o p e , o s o u n d p a t t e r n . C o n s i d e r t h d i f f e r e n c eb e t w e e n s n a r e d r u m a n v i o l i n . D r u m s o u n d s b e g i n a n e n v e r y s h a r p l y . T h d r u m h e a d s t a r t s v i b r a t i n g t h i n s t a n ty o s t r i k e i a n f a d e s q u i c k l y . V i o l i n s o u n d s s t a r t o u m o r es o f t l y , a t h s t r i n g g r a d u a l l y p i c k s u v i b r a t i o n s f r o m t h b o w , a n f a d e s o f t l y a t h v i b r a t i o n d i s s i p a t e s .

T h 1 2 d e f i n e s d i f f e r e n t s o u n d e n v e l o p e s i t e r m s o f o u r v a l u e s : a t t a c k , d e c a y , s u s t a i n , a n r e l e a s e ( A D S R ) . T h a t t a c k v a l u e d e f i n e s h o q u i c k l y t h e s o u n d r i s e s f r o m s i l e n c e t oi t p e a k v o l u m e . D e c a y d e f i n e s h o q u i c k l y t h e s o u n d f a d e sf r o m p e a k v o l u m e t t h v o l u m e a w h i c h i w i l l b s u s t a i n e d( h e l d ) . S u s t a i n s e t s t h v o l u m e l e v e l f o r t h s o u n d ' s m a i n d r a t i o n . R e l e a s e d e f i n e s h o q u i c k l y t h e s o u n d f a d e s f r o m i t s u s t a i n e d v o l u m e b a c k t o s i l e n c e a g a i n . F i g u r e 2 - i l l u s t r a t e st y p i c a l s o u n d e n v e l o p e .

I E N V E L O P E s t a t e m e n t s , t h e f o u r n u m b e r s a f t e r t h i s t r u m e n t n u m b e r d e f i n e t h e A D S R e n v e l o p e . A D S R n u m b e r sc a n r a n g e f r o m t 1 5 F i g u r e 2 - 1 . T y p i c a l S o u n d E n v e l o p e

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 93/228

S o u n d a n G r a p h i c s

W a v e f o r m sE N V E L O P E a l s o l e t s y o p i c k d i f f e r e n t w a v e f o r m s . E a c h o f t h eS I c h i p ' s t h r e e v o i c e s c a p r o d u c e f o u r d i f f e r e n t w a v e f o r m s ,d i a g r a m m e d i F i g u r e 2 - 2 . T h t r i a n g l e w a v e f o r m ( u s e d f o t h f l u t e , i n s t r u m e n t 4 i s o f t a n r i c h . T h s a w t o o t h w a v e( u s e d f o t h g u i t a r , i n s t r u m e n t 5 c r e a t e s l o u d e r , h a r s h e rs o u n d .

T h p u l s e w a v e f o r m ( u s e d f o t h e o r g a n , i n s t r u m e n t 7 i t h m o s t v e r s a t i l e o a l l . I t ' s l o u d e r t h a n t h t r i a n g l e w a v e a n c a b a d j u s t e d t m a k e s o u n d s t h a t a r r i c h a n f u l l o t h i na n f a i n t . T h n o i s e w a v e f o r m ( u s e d f o t h d r u m , i n s t r u m e n t3 i r a n d o m m i s h m a s h o f r e q u e n c i e s t h a t m a k e a h i s s i n go r u s h i n g s o u n d . E N V E L O P E u s e s t h e f o l l o w i n g w a v e f o r mn u m b e r s :N u m b e r W a v e f o r m

T r i a n g l eS a w t o o t hP u l s eN o i s eR i n g m o d u l a t i o n

F i g u r e 2 - 2 . W a v e f o r m sT r i a n g l e P u l s e

S a w t o o t h

\ N o i s e

R i n g m o d u l a t i o n i s p e c i a l e f f e c t , d i f f e r e n t f r o m t h D t h e r w a v e f o r m s . T h S I c h i p c r e a t e s r i n g m o d u l a t i o n b : o m b i n i n g t h f r e q u e n c i e s o f t w v o i c e s i n t o o n c o m p l e xj o u n d . N o t e t h a t E N V E L O P E c a n n o t u s s y n c h r o n i z a t i o n , a o t h e r S I e f f e c t f a m i l i a r t 6 p r o g r a m m e r s .

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 94/228

C h a p t e r

F i n a l l y , E N V E L O P E l e t s y o c h o o s e d i f f e r e n t p u l s e w i d t hv a l u e s f o t h p u l s e w a v e f o r m ( 2 ) . T h p u l s e w i d t h n u m b e rc a n r a n g e f r o m t 4 0 9 5 . L o o k a g a i n a t h p u l s e w a v e d i a -g r a m i F i g u r e 2 - 2 . T h t o p o r t i o n o e a c h w a v e i w i d e rt h a n t h b o t t o m p o r t i o n . T h p u l s e w i d t h v a l u e d e f i n e s t h e r t i b e t w e e n t h e s e t w p a r t s o f t h w a v e . M e d i u m p u l s e w i d t hv a l u e s ( r o u g h l y 1 0 0 0 - 3 0 0 0 ) p r o d u c e f a i r l y s y m m e t r i c a l w a v e sa n f u l l , s o l i d t o n e s . V e r y s m a l l o v e r y l a r g e p u l s e w i d t h v a u e p r o d u c e a s y m m e t r i c a l w a v e s a n t h i n , h o l l o w t o n e s .

E N V E L O P E w i t h P L A YT s e w h a t E N V E L O P E ^ c a n d o a d l i n e 3 t t h e x a m p l ep r o g r a m , a n c h a n g e l i n e 1 0 t a d T a n f e m o r en o t e s :3 E N V E L O P E 1 7 0 , 0 , 0 , 2 , 2 0 0 01 0 P L A Y " T C D E F G A G F E D C "

R u t h p r o g r a m a g a i n a n n o t i c e h o d i f f e r e n t t h n e i n s t r u m e n t s o u n d s . L i n e 3 s e l e c t s i n s t r u m e n t 1 s e t s a t t a c k a 7 d e c a y , s u s t a i n , a n r e l e a s e a 0 w a v e f o r m a ( p u l s e ) ; a n p u l s e w i d t h a 2 0 0 0 .T h T i l i n e 1 0 m i g h t s e e m r e d u n d a n t a f i r s t : I E V E L O P E s e l e c t s i n s t r u m e n t 1 w h s p e c i f y i n s t r u m e n t a g a i ni t h P L A Y s t a t e m e n t ? T h i s i n e c e s s a r y b e c a u s e o t h d f a u l t s y s t e m . U n t i l y o s p e c i f y o t h e r w i s e i P L A Y s t a t e m e n t ,P L A Y a l w a y s u s e s i n s t r u m e n t 0 t h p i a n o . T h u s , w h e n e v e ry o d e f i n e n e i n s t r u m e n t w i t h E N V E L O P E , y o u m u s t u s t h s a m e i n s t r u m e n t n u m b e r a f t e r i t h e a p p r o p r i a t e P L A Ys t a t e m e n t . I y o f o r g e t , P L A Y i g n o r e s t h e E N V E L O P E s t a t em e n t a n u s e s i n s t r u m e n t o w h a t e v e r i n s t r u m e n t y o l a s ts e l e c t e d w i t h T

R e d e f i n i n g a i n s t r u m e n t w i t h E N V E L O P E r e p l a c e s t h p r e d e f i n e d i n s t r u m e n t o t h a t n u m b e r . T h u s , y o c a n n e v e rh a v e m o r e t h a n t e i n s t r u m e n t s a o n c e . H o w e v e r , n e i s t r u m e n t s c a b i n t r o d u c e d a a n t i m e w i t h n e E N V EL O P E s t a t e m e n t s .E N V E L O P E c a b t r i c k y t o h a n d l e , s i n c e i g i v e s y o t o — t a c o n t r o l o v e r t h A D S R e n v e l o p e a n m u s t b p r o p e r l y i t e g r a t e d w i t h o t h e r s o u n d c o m m a n d s . F o i n s t a n c e , a e n v e l o p e t h a t s o u n d s f i n e a s l o w t e m p o s m a b u n s u i t a b l e 1 — a f a s t e r t e m p o s . D o n ' t b d i s c o u r a g e d i y o u r f i r s t e x p e r i m e n t ss o m e t i m e s f a i l . R e m e m b e r , E N V E L O P E i n e c e s s a r y o n l y f o |

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 95/228

S o u n d a n G r a p h i c s

c u s t o m i z e d i n s t r u m e n t s o u n d s . I y o u ' r e h a p p y w i t h t h p r e d e f i n e d i n s t r u m e n t s , j u s t u s i P L A Y s t a t e m e n t t c h o o s e t h o n y o w a n t .

F I L T E R N e e d s P L A YL i k e t h e E N V E L O P E c o m m a n d , F I L T E R d o e s n o t h i n g n o t i c ea b l e u n t i l y o t u r n t h f i l t e r o w i t h P L A Y s t a t e m e n t . I n s e r tX i n s i d e t h P L A Y s t r i n g w h e r e v e r y o w a n t t t u r n t h f i l t e ro n a n d X O w h e r e y o w a n t t t u r n i o f f . I f y o l e a v e o u t h p a r a m e t e r , P L A Y i g n o r e s p r e c e d i n g F I L T E R c o m m a n d s ( t h ef i l t e r r e m a i n s o f f ) . I t h s i m p l e s t c a s e ( F I L T E R c o m m a n df o l l o w e d b P L A Y " X 1 " ) , t h f i l t e r a f f e c t s a l t h r e e v o i c e s .H o w e v e r , y o c a a l s o f i l t e r e a c h v o i c e i n d i v i d u a l l y :F I L T E R 1 0 0 0 , 1 , 0 , 0 , 1 5P L A Y " V X V X V X

T h e s e s t a t e m e n t s t u r n t h l o w - p a s s f i l t e r o f o v o i c ea n t u r n i o f f f o r v o i c e s 2 a n 3 T h 1 2 r e m e m b e r s w h i c hv o i c e t f i l t e r w h e n i e x e c u t e s s u b s e q u e n t P L A Y s t a t e m e n t s( m o r e a b o u t m u l t i v o i c e m u s i c i e x p l a i n e d b e l o w ) . H o w e v e r ,y o c a u s o n l y o n f i l t e r s e t t i n g a t t i m e . F o i n s t a n c e , y o c a n ' t u s l o w - p a s s f i l t e r f o v o i c e a n b a n d - p a s s f i l t e r f o v o i c e 2 W h e n e v e r X a p p e a r s i P L A Y s t r i n g , t h 1 2 u s e st h m o s t r e c e n t F I L T E R s e t t i n g . I n F I L T E R c o m m a n d h a b e e n e x e c u t e d , t h i s m a r e s u l t i s i l e n c e .

F I L T E R E d i t o rA w i t h o t h e r s o u n d e f f e c t s , t h e b e s t w a t l e a r n i t l i s t e na n e x p e r i m e n t ; P r o g r a m 2 - 7 , " F I L T E R E d i t o r , " l e t s y o u d oj u s t t h a t . I t ' s s e l f - p r o m p t i n g , s o y o n e e d o n l y t y p e i i n s a v e

c o p y , a n r u i t T h m e n u s c r e e n d i s p l a y s a l t h e c u r r e n tf i l t e r p a r a m e t e r s a n l e t s y o c h a n g e w h a t e v e r y o l i k e . T s e l e c t a n o p t i o n , p r e s s a n u m b e r k e f r o m t 9 a n f o l l o wt h p r o m p t s . T h p r o g r a m b e g i n s w i t h n f i l t e r i n g ( a l l f i l t e r so f f ) f o c o m p a r i s o n .O p t i o n s w i t c h e s y o t t h d i s p l a y s c r e e n , p l a y s a a c e n d i n g m u s i c a l s c a l e w i t h w h a t e v e r f i l t e r i n g y o u ' v e s e l e c t e d ,a n d i s p l a y s t h F I L T E R s t a t e m e n t c u r r e n t l y i e f f e c t . O n c ey o f i n d f i l t e r s e t t i n g y o l i k e , w r i t e d o w n t h F I L T E R s t a t em e n t d i s p l a y e d o t h s c r e e n a n u s i i y o u r o w p r g r a m s . F r o m t h i s s c r e e n , t h n u m b e r k e y s 1 - s e l e c t d i f f e r e n t

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 96/228

L C h a p t e r -

o c t a v e s f o t h s c a l e . P r e s s t h e s p a c e b a r t r e t u r n t t h m a i n I s c r e e n .

O p t i o n l e t s y o s e l e c t a n o t h 1 2 8 ' s t e p r e d e f i n e di n s t r u m e n t e n v e l o p e s , a n o p t i o n c o n t r o l s t h t e m p o a I w h i c h t h s c a l e i p l a y e d . N o t e t h a t s o m e o t h p r e d e f i n e de n v e l o p e s d o n ' t w o r k w e l l a t f a s t t e m p o s : T h n o t e e n d sb e f o r e t h s o u n d e n v e l o p e c a n c o m p l e t e i t n a t u r a l c y c l e . U s

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

T h S I f i l t e r i b i n o t o r i o u s . W h i l e i w o r k s f i n e o s o m e m a c h i n e s ( m o l 6 4 h a s a g r e a t o n e ) , i t p e r f o r m a n c em a v a r y f r o m o n e S I c h i p t t h n e x t . T h e m a n u a l f o o u p r e p r o d u c t i o n 1 2 n o t e s t h a t f i l t e r i n g " c a n n o t b c o u n t e d o n , "s u g g e s t i n g t h a t n o t h i n g w a d o n e t i m p r o v e t h 1 2 8 ' s f i l t e r .W i t h p r a c t i c e y o s h o u l d b a b l e t a c h i e v e s a t i s f a c t o r y e f f e c t so y o u r o w m a c h i n e , t h o u g h t h e y m i g h t s o u n d s o m e w h a td i f f e r e n t o a n o t h e r c o m p u t e r .

T h S O U N D C o m m a n dS O U N D i v e r y p o w e r f u l c o m m a n d i n t e n d e d f o s o u n d e f e c t s r a t h e r t h a n m u s i c . U n l i k e P L A Y ( w h i c h d e f a u l t s t m a x im u v o l u m e ) , S O U N D h a d e f a u l t v o l u m e s e t t i n g o z e r o .T h u s , y o u m u s t t u r n t h v o l u m e u w i t h V O b e f o r e t h f i r s tS O U N D s t a t e m e n t i p r o g r a m . A n w h e r e a s P L A Y d e l a y st h r e s t o y o u r p r o g r a m u n t i l i c o m p l e t e s t h c u r r e n t P L A Ys t r i n g , S O U N D s t a t e m e n t s p l a y " i n t h e b a c k g r o u n d " w h i l e t h p r o g r a m c o n t i n u e s . T d e m o n s t r a t e , e n t e r N E a n p r e s sR U N / S T O P - R E S T O R E ( t c l e a r t h S I c h i p ) , t h e n t y p e i a n r u t h e f o l l o w i n g t w o - l i n e p r o g r a m :R G 1 0 V O 1 5 : S O U N D 1 , 5 0 0 0 , 2 0 0 : S O U N D 2 , 4 0 0 0 , 2 0 0 : S O U

N 3 , 3 0 0 0 , 2 0 0S 2 F O J = l T O 1 0 : P R I N T " P R O G R A M C O N T I N U I N G " : N E X T

: P R I N T " D O N E "N o t i c e h o t h t h r e e - v o i c e s o u n d c o n t i n u e s e v e n a f t e r

t h i s p r o g r a m e n d s a n r e t u r n s t h c o m p u t e r t R E A D Y m o d e .T h f i r s t n u m b e r i S O U N D s t a t e m e n t ( 1 , 2 , o 3 p i c k s ! — o n o t h 1 2 8 ' s t h r e e v o i c e s . B u s i n g d i f f e r e n t v o i c e n u b e r s , y o c a p l a y u t t h r e e s o u n d s a o n c e . H o w e v e r , t h I 1 2 o r d i n a r i l y w a i t s u n t i l a v o i c e h a f i n i s h e d t h c u r r e n t I — S O U N D s t a t e m e n t b e f o r e s t a r t i n g n e S O U N D s t a t e m e n tf o r t h a t v o i c e . T i l l u s t r a t e , i l i n e 1 o t h a b o v e p r o g r a m ,8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 97/228

S o u n d a n G r a p h i c s

c h a n g e t h a n t 1 t h e n r u i a g a i n . N o v o i c e p l a y st h r e e n o t e s i s e q u e n c e .

I m o s t c a s e s S O U N D ' S b a c k g r o u n d - p l a y i n g a b i l i t y i d e s i r a b l e : S o u n d e f f e c t s d o n ' t s l o w d o w n t h r e s t o y o u r p r og r a m . H o w e v e r , i o t h e r c a s e s y o m i g h t w a n t t i n t e r r u p ts o u n d i m m e d i a t e l y ( i f , f o e x a m p l e , t h u s e r w a n t s t e x i t t h p r o g r a m ) . F o r t u n a t e l y , t h i s i e a s y t d o S O U N D s t a t e m e n t sw i t h z e r o d u r a t i o n t a k e e f f e c t i m m e d i a t e l y , w h e t h e r o n o p r e c e d i n g s o u n d s h a v e f i n i s h e d . T h u s , S O U N D 1 , 0 , 0 s i l e n c e sv o i c e 1 u s F O J = T 3 S O U N D J , 0 , 0 : N E X T t s i l e n c e a l t h r e e v o i c e s .

S i n c e v a r i a b l e s c a b u s e d f o a n S O U N D p a r a m e t e r ,y o c a c r e a t e m o r e d y n a m i c , i n t e g r a t e d e f f e c t s b i n c o r p o r a ti n g o t h e r p r o g r a m v a r i a b l e s i S O U N D c o m m a n d s . F o e a m p l e , s a t h a t y o u r g a m e u s e s t h v a r i a b l e t r e p r e s e n ts p a c e s h i p ' s s c r e e n p o s i t i o n . T m a k e c r u i s i n g s o u n d , y o m i g h t s u b s t i t u t e s o m e t h i n g l i k e X * 1 0 0 0 f o t h f r e q u e n c yn u m b e r i S O U N D c o m m a n d .

S O U N D E d i t o r" S O U N D E d i t o r , " l i s t e d b e l o w , l e t s y o e x p e r i m e n t w i t hS O U N D c o m m a n d s a n d e s i g n s o u n d e f f e c t s f o y o u r o w p r o g r a m s u s i n g u t t h r e e v o i c e s a o n c e . T y p e i a n s a v eP r o g r a m 2 - 8 , t h e n r u i t T h f i r s t t h i n g y o u ' l l h e a r a r t h r e ec o m p l e x , m u l t i v o i c e s o u n d e f f e c t s ( d o n ' t w o r r y i t h e y ' r e n o e x a c t l y t y o u r t a s t e — y o u ' l l s o o n k n o w e n o u g h a b o u tS O U N D t r e p l a c e t h e m w i t h y o u r o w n ) . N e x t , t h e d i t i n gs c r e e n a p p e a r s , d i s p l a y i n g t e o p t i o n s a n a l t h e c u r r e n tS O U N D p a r a m e t e r s ( y o u r U s e r ' s G u i d e e x p l a i n s t h e m e a n i n go e a c h p a r a m e t e r ) . T c h o o s e a o p t i o n , p r e s s n u m b e r k e f r o m t 9 T h p r o g r a m i n s t r u c t s y o h o t p r o c e e d a n d o e s n o l e y o e n t e r i n a p p r o p r i a t e v a l u e s .

O p t i o n l e t s y o s w i t c h f r o m o n v o i c e t a n o t h e r . O t i o n s w i t c h e s y o t t h e d i s p l a y s c r e e n , w h i c h p l a y s t h e c u r -r e n * s o u n d a n d i s p l a y s t h S O U N D s t a t e m e n t s t h a t c r e a t e i t

j I t ' s f u t e x p e r i m e n t w i t h S O U N D E d i t o r , a n i c a s a v el o o p r o g r a m m i n g t i m e . U s i t d e s i g n e x a c t l y t h s o u n dy o w a n t , t h e n c o p y t h S O U N D s t a t e m e n t s f r o m t h e d i s p l a ys c r e e n a n u s t h e m i y o u r p r o g r a m s . ( T h o u g h t h p r o g r a mc a p l a y s o u n d s w i t h o n e , t w o , o r t h r e e v o i c e s a o n c e , i t ' s n o n e c e s s a r y t u s m u l t i p l e v o i c e s . Z e r o - d u r a t i o n S O U N D s t a t e -m e n t s p r o d u c e n s o u n d a n m a b i g n o r e d . )

8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 98/228

C h a p t e r

T h P L A Y C o m m a n d ' — D e s i g n e d f o r e a l m u s i c m a k i n g , P L A Y i t h m o s t v e r s a t i l e o a l t h 1 2 8 ' s s o u n d c o m m a n d s . A o u t l i n e d i t h U s e r ' sG u i d e , P L A Y w o r k s m u c h l i k e t h f a m i l i a r P R I N T c o m m a n d .E a c h P L A Y c o m m a n d i f o l l o w e d b s t r i n g c o n t a i n i n g s p c i a l c o n t r o l c h a r a c t e r s . T h l e t t e r s A - a r i n t e r p r e t e d a s n o t e s ;t h u s , t h s t a t e m e n t P L A Y " C F p l a y s t h e f o u r n o t e s C - D -E - F . I t h l a s t e x a m p l e , P L A Y w a f o l l o w e d b s t r i n g o c h a r a c t e r s e n c l o s e d i q u o t a t i o n m a r k s . H o w e v e r , P L A Y c a a l s o h a n d l e s t r i n g v a r i a b l e s ( A " F " P L A Y A $ ) .T s e t h i s m e t h o d a w o r k , t y p e i a n s a v e P r o g r a m 2 9 " P L A Y D e m o n s t r a t o r . " I p l a y s s h o r t , B a c h - l i k e t u n e w i t hs e v e r a l d i f f e r e n t i n s t r u m e n t e n v e l o p e s . N o t e t h a t a l o t h m u s i c c o n t r o l c h a r a c t e r s a r e s t o r e d i D A T A s t a t e m e n t s . L i n e5 R E A D s e a c h l i n e o d a t a i n t o a s t r i n g n a m e d A $ a n t h s u b r o u t i n e a l i n e 2 P R I N T s e a c h m u s i c s t r i n g j u s t b e f o r e i i P L A Y e d .

l i k e o t h e r s t r i n g s , P L A Y s t r i n g s c a b c o n c a t e n a t e d( c o m b i n e d ) w i t h t h o p e r a t o r , a n m a n i p u l a t e d w i t h a n o t h s t r i n g - r e l a t e d f u n c t i o n s : M I D $ , L E F T $ , R I G H T S , L E N ,V A L , C H R $ , A S C , a n S T R $ . P r o g r a m 2 - c o n t a i n s s e v e r a ld i f f e r e n t e x a m p l e s .

F o c o m p l e x m u s i c y o m i g h t w a n t t s t o r e P L A Y s t r i n g si s t r i n g a r r a y . F o i n s t a n c e , t h f o l l o w i n g s t a t e m e n t s t o r e s1 0 0 e l e m e n t s o m u s i c d a t a i s t r i n g a r r a y n a m e d M $ ( ) :F O J = T 1 0 0 : R E A D M $ f l ) : N E X T .O n c e t h m u s i c a r r a y i c r e a t e d , y o c a q u i c k l y a c c e s s a n s t r i n g i c o n t a i n s : P L A Y M $ ( 3 ) p l a y s t h e t h i r d m u s i c s t r i n gh e l d i M $ ( ) , a n s o n T h i s i v e r y h e l p f u l f o r e p e a t i n g c e t a i n p a s s a g e s . Y o m a a l s o f i n d i u s e f u l t c r e a t e s e p a r a t ea r r a y s f o d i f f e r e n t p u r p o s e s ( o n e t o s t o r e n o t e s , a n o t h e r f o d u r a t i o n c h a r a c t e r s , a n s f o r t h ) .

M u l t i v o i c e M u s i cS i n c e t h S I c h i p h a t h r e e v o i c e s , P L A Y c a p l a y u t I t h r e e n o t e s s i m u l t a n e o u s l y . T h c o n t r o l c h a r a c t e r ( f o l l o w e db 1 2 o 3 d e t e r m i n e s w h i c h v o i c e i a f f e c t e d . T h u s , t h s t a t e m e n tP L A Y " V V V 3 G "p l a y s s i m p l e t h r e e - n o t e c h o r d . A f t e r p r o c e s s i n g V C , t h e

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 99/228

S o u n d a n G r a p h i c s

1 2 " l o o k s a h e a d " t s e w h e t h e r i s h o u l d p l a y o t h e r n o t e sa t h s a m e t i m e ; h o w e v e r , t h c o m p u t e r l o o k s a h e a d o n l y a f a a t h n e x t n o t e . T h u s , t h s t a t e m e n tP L A Y " V C D V C D E "d o e s n o t p l a y t h e n o t e s C - D - E s i m u l t a n e o u s l y w i t h t w v o i c e s . I n s t e a d , i p l a y s t w s e q u e n t i a l n o t e s ( C - D ) w i t h v o i c e1 t h e n t w s i m u l t a n e o u s n o t e s ( a n C w i t h v o i c e s a n 2 f o l l o w e d b y t w o s e q u e n t i a l n o t e s ( D - E ) w i t h v o i c e 2

W h e n a l v o i c e s p l a y n o t e s o t h s a m e d u r a t i o n , m u l t i -v o i c e m u s i c i n o p a r t i c u l a r l y d i f f i c u l t t w r i t e : I n s e r t V b e f o r e e a c h n o t e f o v o i c e 1 V b e f o r e e a c h v o i c e n o t e , a n s f o r t h ( c o n c a t e n a t i o n s l i k e A " V 1 " + A $ c a h e l p c o d e n s e t h o t h e r w i s e c u m b e r s o m e c o d e ) . H o w e v e r , w h e n d i f e r e n t v o i c e s p l a y n o t e s o d i f f e r e n t d u r a t i o n s , y o u m u s t m a k es u r e t h a t a l t h d u r a t i o n s a d u p

F o i n s t a n c e , y o m i g h t w a n t v o i c e t h o l d l o n gw h o l e n o t e w h i l e v o i c e 2 p l a y s s e r i e s o s i x t e e n t h n o t e s . T k e e p t h t i m i n g s t r a i g h t , y o s h o u l d n o l e v o i c e p l a y a o t h e r n o t e u n t i l v o i c e h a f i n i s h e d t h e e q u i v a l e n t o f w h o l en o t e ( 1 6 s i x t e e n t h s o r w h a t e v e r ) . S i m i l a r l y , t h t i m i n g m a b t h r o w n o f i v o i c e p l a y s m o r e t h a n 1 s i x t e e n t h s b e f o r ev o i c e g e t s b a c k i t h a c t . T h c o n t r o l c h a r a c t e r s u p p o se d l y t e l l s t h 1 2 t w a i t u n t i l a l v o i c e s f i n i s h t h c u r r e n tm e a s u r e b e f o r e m o v i n g a h e a d . B u i j u s t a a d j u s t e r . I c a n ' t m a g i c a l l y r e p a i r m u s i c t h a t d o e s n ' t a d u i t h f i r s tp l a c e .

I n t e r a c t i o n sA n o t e d t h r o u g h o u t t h i s c h a p t e r , c e r t a i n 1 2 s o u n d c o m a n d s w o r k w i t h c e r t a i n o t h e r s . T h V O c o m m a n d , f o r i ns t a n c e , i n e e d e d o n l y f o S O U N D s t a t e m e n t s ( P L A Y s e t sv o l u m e i n d e p e n d e n t l y w i t h t h c o n t r o l c h a r a c t e r ) . T E M P O ,F I L T E R , a n E N V E L O P E , o t h e o t h e r h a n d , s e e m d e s i g n e dt w o r k w i t h P L A Y . T E M P O i i r r e l e v a n t t S O U N D ( w h i c hs e t s i t o w d u r a t i o n , a n s o n ) ; E N V E L O P E a n d F I L T E Rh a v e n e f f e c t u n t i l a c t i v a t e d b y P L A Y .

H o w e v e r , o t h e r i n t e r a c t i o n s a r p o s s i b l e ( a l e a s t o o u 1 2 8 , a d m i t t e d l y p r e p r o d u c t i o n m o d e l ) . F o r i n s t a n c e , t h o u g ht h S O U N D s t a t e m e n t p r o v i d e s n w a t t u r n o t h f i l t e r ,S O U N D s c a b a f f e c t e d b " l e f t o v e r " f i l t e r s e t t i n g s . I t h 1 2 e x e c u t e s F I L T E R s t a t e m e n t f o l l o w e d b y P L A Y " X 1 " , t h

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 100/228

C h a p t e r

f i l t e r r e m a i n s o a n a f f e c t s s u b s e q u e n t S O U N D s t a t e m e n t s .P L A Y " X 0 " t u r n s t h f i l t e r o f f f o r S O U N D a w e l l a f o P L A Y .

T h i s i n t e r a c t i o n c a b v i e w e d e i t h e r a s a a d v a n t a g e —f i l t e r i n g i o t h e r w i s e u n a v a i l a b l e w i t h S O U N D — o r a p i t f a l lf o u n w a r y p r o g r a m m e r s . T p r e v e n t u n w a n t e d i n t e r a c t i v e e f e c t s , b e g i n s o u n d a n m u s i c p r o g r a m s b s e t t i n g a l s o u n dp a r a m e t e r s a z e r o o r d e f a u l t v a l u e s . C o m m o d o r e 6 p r o g r a mm e r s o f t e n c l e a r t h S I c h i p w i t hF O J = 5 4 2 7 2 T 5 4 2 9 6 : P O K E J , 0 : N E X TT h o u g h t h i s s t a t e m e n t d o e s c l e a r t h 1 2 8 ' s S I c h i p , i d o e s n ' tn e c e s s a r i l y c h a n g e t h 1 2 8 ' s s o u n d s e t t i n g s , w h i c h a r r c o r d e d e l s e w h e r e i m e m o r y .P r o g r a m 2 - 7 . F I L T E R E d i t o rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

F 1 0 E 1 1 X 1 2 R 1 3 C 1 4 P 1 5 K 1 6 G 1 7 B 1 8 H 1 9 M 2 0 R F 2 1 0F 2 2 D 2 3 K 2 4 K 2 5 R 2 6 G 2 7

E 2 8 D 2 9 A 3 0 S 3 1 D 3 2 P 3 3

9

{ R V S } O N{ R V S } O N{ R V S } O N

{ O F F } 1 1{ O F F } "{ O F F } "

G O S U B 5 7 0 : G O T O 3 1 0F O R J = 1 T O 3 : S O U N D J , 0 , 0 : N E X T : F I L T E R 0 , 0 , 0 , 0 , 0 : RE T U R NP L A Y A $ R E T U R NL P $ = O F F " : I F L P = 1 T H E N L P $R E T U R NB P $ = " O F F " : I F B P = 1 T H E N B P $R E T U R NH P O F F n : I F H P = l T H E N H P $R E T U R NP R I N T D $ " S E T C U T O F F F R E Q U E N C Y ( 0 - 2 0 4 7 ) "I N P U T A : I F A < 0 O R A > 2 0 4 7 T H E N G O S U B 5 5 0 : G O T O 1 9 0F Q = A : R E T U R NL P = A B S ( L P = 0 ) : R E T U R NB P = A B S ( B P = 0 ) : R E T U R NH P = A B S ( H P = 0 ) : R E T U R P R I N T D $ " S ; E T F I L T E R R E S O N A N C E ( 0 - 1 5 ) " : I N P U T A: I F A < 0 O R A > 1 5 T H E N G O S U B 5 5 0 : G O T O 2 5 0R E = A : R E T U R NP R I N T D ? " C H O O S E S O U N D E N V E L O P E ( 0 - 9 ) " : I N P U T A: I F A < 0 O R A > 9 T H E N G O S U B 5 5 0 : G O T O 2 7 0

W V $ = " T " + C H R $ ( A + 4 8 ) : R E T U R NP R I N T D ? " C H O O S E T E M P O ( 1 - 2 5 5 ) " : I N P U T A : I F A < 1 0R A > 2 5 5 T H E N G O S U B 5 5 0 : G O T O 2 9 0T M = A : R E T U R NP R I N T " { C L R } { R V S } 1 2 F I L T E R E D I T O RP R I N T " 1 { R V S }1 S P A C E S } "P R I N T " 2 { R V S }U B 1 3 0 : P R I N T L P $

T E R E D I T O R : P R I N TF R E Q U E N C Y I O F F T " F Q " { L E F T }L 0 W { 2 S P A C E S } P A S S { O F F } " ; : G O S

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 101/228

S o u n d a n G r a p h i c s

E 3 4 P R I N T " 3 i R V S } B A N D P A S S { O F F } " ; : G O S U B 1 5 0 : P I N T B P $

J 3 5 P R I N T " 4 i R V S } H I G H P A S S { O F F } " ; : G O S U B 1 7 0 : P RI N T H P ?

M 3 6 P R I N T " 5 I R V S } R E S O N A N C E { O F F } " ; R E " { L E F T } " P R I N T S P A C E S { R V S O F

A 3 7 P R I N T " { R V S } E N V E L O P E { 2 S P A C E S } { O F F } " M I D $( W V $ , 2 ) T $ ( V A L ( M I D $ ( W V $ , 2 ) ) )

C 3 8 P R I N T " 8 { R V S } T E M P O { 5 S P A C E S } { O F F } " T M "{ L E F T } { 2 S P A C E S } M : P R I N T " 9 { R V S } P L A Y{ S P A C E S } { O F F } " : P R I N T " 0 { R V S } Q U I T{ S P A C E S } { O F F } { D O W N } " ~

P 3 9 P R I N T " { R V S } E N T E R Y O U R C H O I C E ( 0 - 9 ) " : P R I N T "{ S P A C E S } { U P } "

G 4 0 G E T K E Y A $ : I F A $ < " 0 " O R A $ > " 9 " O R A $ = " 6 " T H E N P R I N T :G O S U B 5 5 0 : P R I N T : G O T O 3 9 0

M 4 1 I F A $ = " 9 " T H E N 4 4 0M 4 2 I F A $ = " 0 " T H E N E N DE 4 3 O N V A L ( A $ ) G O S U B 1 9 0 , 2 2 0 , 2 3 0 , 2 4 0 , 2 5 0 , 2 5 0 , 2 7 0 , 2

9 0 : P R I N T E $ : G O T O 3 2 0M Q 4 4 0 P R I N T C H R $ ( 1 4 7 ) " O C T A V E " M I D $ ( O C $ , 2 ) C H R $ ( 1 3 )R 4 5 P R I N T " L O W { 2 S P A C E S } P A S S " L P $ : P R I N T " B A N D P A " B P $ : P R I N T " H I G H P A S S " H P $ : P R I N TB 4 6 P R I N T " { R V S } C U R R E N T F I L T E R S T A T E M E N T : " : P R I N T

: P R I N T " F I L T E R " C 4 7 P R I N T M I D ? ( S T R $ ( F Q ) , 2 ) " , " M I D $ ( S T R $ ( L P ) , 2 ) " , "

M I D $ ( S T R $ ( B P ) , 2 ) " , " ;E 4 8 P R I N T M I D $ ( S T R $ ( H P ) , 2 ) " , " M I D $ ( S T R $ ( R E ) , 2 ) : P R

I N T : F I L T E R F Q , L P , B P , H P , R EC X 4 9 0 P R I N T " P R E S S { R V S } 1 - { O F F } F O R O C T A V E " C H

R $ ( 1 3 ) S P C ( 6 ) " { R V S } S P A C E { O F F } T O E X I T "Q 5 0 F $ = " X 0 " : I F L P = 1 O R B P = 1 O R H P = 1 T H E N F $ = " X 1Q 5 1 A $ = F $ + W V $ + " S " : G O S U B 1 2 0 : T E M P O T M 5 2 G E B $ : I F B $ = C H R $ ( 3 2 ) T H E N G O S U B 1 1 0 : G O T O 3 1 0H 5 3 I F B $ = > " 1 " A N D B $ < = " 6 " T H E N O C $ = " O " + C H R $ ( V A L ( B $ )

+ 4 8 ) . - P R I N T " { H O M E } " S P C ( 6 ) V A L ( B $G 5 4 A $ = O C $ + " C D E F G A B " : G O S U B 1 2 0 : G O T O 5 2 0F 5 5 G O S U B 1 1 0 : F O R J = 1 T O 3 : S O U N D J , 1 0 0 0 + J * 5 0 0 , 1 5 , 0 , 0

, 0 , 2 , J * 1 0 0 0 : N E X Tk 5 6 p r i n t " { u p } { r v s I n a p p r o p r i a t e " : s l e e p i : p r i n t "

{ u p } { 1 3 s p a c e s } { 3 u p } " : r e t u r nh 5 7 p r i n t c h r $ ( 1 4 ) c h r $ ( 8 ) : f o r j = 5 4 2 7 2 t o 5 4 2 9 6 . - p o k ej , 0 : n e x t : v o l 1 5 : d $ = c h r $ ( 1 9 )k 5 8 f o r j = 1 t o 1 5 : d $ = d $ + c h r $ ( 1 7 ) : n e x t : f q = 1 0 0 0 : l p = 0

: b p = 0 : h p = 0 : r e = 1 5 : w v £ = " t 7 " ? t m = 5 5a 5 9 f o r j = 1 t o 3 5 : x $ = x $ + c h r $ ( 3 2 ) : n e x t : e $ = d $ + x $ + c h r

$ ( 1 3 ) + X $ + C H R $ ( 1 9 ) + C H R $ ( 1 3 )B P 6 0 0 F O R J = 0 T O 9 : R E A D X $ : T $ ( J ) = " { 2 S P A C E S } " + X $ : N E X T

: O C $ = " O 3 " : G O S U B 1 1 0 : R E T U R N

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 102/228

C h a p t e r

C 6 1 D A T A " P I A N O 1 S P A C E S } " , " A C C O R D I O N { 2 S P A C E S } ", " C A L L I O P E I S P A C E S } " , " D R U M { 7 S P A C E S } " , " F L UT E 1 6 S P A C E S } "P S 6 2 0 D A T A " G U I T A R { 5 S P A C E S } " , " H A R P S I C H O R D " , " O R G A N ) I S P A C E S } " , " T R U M P E T { 4 S P A C E S } " , " X Y L O P H O N E{ S P A C E S } "

L j P r o g r a m 2 - 8 . S O U N D E d i t o rF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

S 1 G O S U B 3 0 : G O S U B 5 7 0 : G O T O 3 2 0G 2 P R I N T " { C L R } { R V S } 1 2 8 S O U N D E D I T O R " : P R I N T : R E T UR

R 3 F O R J = 1 T O 3 : S O U N D J , 0 , 0 : N E X T : R E T U R NR 4 P R I N T D $ " C H O O S E V O I C E ( 1 - 3 ) " : I N P U T A : I F A < 1 0 R A >

3 T H E N G O S U B 5 5 0 : G O T O 4 0G 5 V C = A : R E T U R NQ 6 P R I N T D ? " C H O O S E F R E Q U E N C Y ( 0 - 6 5 5 3 5 ) "M 7 I N P U T A : I F A < 0 O R A > 6 5 5 3 5 T H E N G O S U B 5 5 0 : G O T O 6 0F G 8 0 F Q ( V C ) = A : R E T U R NB 9 P R I N T D $ " C H O O S E D U R A T I O N ( 6 0 0 = 1 0 S E C O N D S ) 1 1S 1 0 I N P U T A : I F A < 0 T H E N G O S U B 5 5 0 : G O T O 9 0Q 1 1 D U ( V C ) = A : R E T U R NK 1 2 P R I N T D ? " C H O O S E D I R E C T I O N O S O U N D S W E E P "P 1 3 P R I N T " 0 = U P { 2 S P A C E S } l = D O W N { 2 S P A C E S } 2 = O S C I L

L A T E " : I N P U T A : I F A < 0 O R A > 2 T H E N G O S U B 5 5 0 : G O T O 1 2 0E 1 4 D I ( V C ) = A : R E T U R NC F 1 5 0 P R I N T D $ " C H O O S E M I N I M U M F R E Q U E N C Y F O R "G 1 6 P R I N T " S O U N D S W E E P ( 0 - 6 5 5 3 5 ) " : I N P U T A : I F A < 0 O R

A > 6 5 5 3 5 T H E N G O S U B 5 5 0 : G O T O 1 5 0J 1 7 I F A = > F Q ( V C ) T H E N G O S U B 5 5 0 : G O T O 1 5 0J 1 8 M I ( V C ) = A : R E T U R NK 1 9 P R I N T D $ " C H O O S E S T E P V A L U E F O S O U N D S W E E P "R 2 0 P R I N T " ( L E S S E R O 3 2 7 6 7 O R " F Q ( V C ) - M I ( V C ) + l "

{ L E F T } ) "S 2 1 I N P U T A : I F A < 0 O R A > 3 2 7 6 7 T H E N G O S U B 5 5 0 : G O T O 1 9 0F 2 2 I F A > ( F Q ( V C ) - M I ( V C ) ) T H E N G O S U B 5 5 0 : G O T O 1 9 0M 2 3 S V ( V C ) = A : R E T U R N j H E 2 4 0 P R I N T D ? " C H O O S E W A V E F O R M { S H I F T - S P A C E } j

{ S P A C E S } 0 = T R I A N G L E "J 2 5 P R I N T " 1 = S A W T O O T H { 2 S P A C E S } 2 = P U L S E { 2 S P A C E S }

3 = W H I T E N O I S E "F Q 2 6 0 I N P U T A : I F A < 0 O R A > 3 T H E N G O S U B 5 5 0 : G O T O 2 4 0P 2 7 W V ( V C ) = A : R E T U R NC 2 8 P R I N T D ? " C H O O S E P U L S E W I D T H "D 2 9 P R I N T " ( 0 - 4 0 9 5 ) " : I N P U T A : I F A < 0 O R A > 4 0 9 5 T H E N G O S

U B 5 5 0 : G O T O 2 8 0F C 3 0 0 P W ( V C ) = A : R E T U R NH X 3 1 0 G O S U B 2 09

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 103/228

S o u n d a n G r a p h i c s

S 3 2 P R I N T " 1 { R V S } V O I C E { 6 S P A C E S } { O F F } " V C : P R I N T" { R V S } F R E Q U E N C Y { 2 S P A C E S } { O F F } " F Q ( V C ) "{ L E F T } { 4 S P A C E S } 1 '

Q 3 3 P R I N T " 3 { R V S } D U R A T I O N { 3 S P A C E S { O F F } " D U ( V C) " { L E F T } { 4 S P A C E S } "

G 3 4 P R I N T " 4 { R V S } D I R E C T I O N { 2 S P A C E S } { O F F } " D I ( VC ) D I $ ( D I ( V C ) )

C 3 5 P R I N T " 5 { R V S } M I N I M U M { 4 S P A C E S } { O F F } " M I ( V C )1 { L E F T } { S P A C E S } " : P R I N T " { R V S } S T E P V A L U E

{ O F F } " S V ( V C ) " { L E F T } { 4 S P A C E S } " ~ J 3 6 P R I N T " 7 { R V S } W A V E F O R M { 3 S P A C E S } { O F F } " W V ( V C

) W V $ ( W V ( V C ) )E 3 7 P R I N T " 8 { R V S } P U L S E W I D T H { O F F } " P W ( V C ) "{ L E F T } { 4 S P A C E S } "

J 3 8 P R I N T " 9 { R V S j H E A R S O U N D { O F F } " : P R I N T " 0{ R V S } Q U I T { 7 S P A C E S } { O F F } " : P R I N T

P 3 9 P R I N T " { R V S } E N T E R Y O U R C H O I C E ( 0 - 9 ) " : P R I N T "1 S P A C E S } { U P } "

B 4 0 G E T K E Y A $ : I F A $ < " 0 " O R A $ > " 9 " T H E N P R I N T : G O S U B 5 5 0: P R I N T : G O T O 3 9 0

M 4 1 I F A $ = " 9 " T H E N 4 4 0E X 4 2 0 I F A $ = " 0 " T H E N G O S U B 3 0 : E N DR 4 3 O N V A L ( A $ ) G O S U B 4 0 , 6 0 , 9 0 / 1 2 0 , 1 5 0 , 1 9 0 , 2 4 0 , 2 8 0 :

P R I N T E ? : G O T O 3 2 0H 4 4 P R I N T " { C L R } T H E F O L L O W I N G S O U N D S T A T E M E N T S " :

P R I N T " { 2 S P A C E S } C R E A T E T H E S O U N D S Y O U H E A R .H G 4 5 0 P R I N T " Z E R O - D U R A T I O N S O U N D S A R E S I L E N T . "E 4 6 F O R J = 1 T O 3 : S O U N D J , F Q ( J ) , D U ( J ) , D I ( J ) , M I ( J ) , S V( J ) , W V ( J ) , P W ( J ) : N E X TD P 4 7 0 F O R J = 1 T O 3 : P R I N T : P R I N T " S O U N D " M H 4 8 0 P R I N T M I D $ ( S T R $ ( J ) , 2 ) " , " M I D $ ( S T R $ ( F Q ( J ) ) , 2 ) ", " M I D $ ( S T R $ ( D U ( J ) ) , 2 ) " , " ;P H 4 9 0 P R I N T M I D $ ( S T R $ ( D I ( J ) ) , 2 ) " , " M I D $ ( S T R $ ( M I ( J ) ). 2 ) " , " M I D $ ( S T R $ ( S V ( J ) ) , 2 ) M , " ;H 5 0 P R I N T M I D $ ( S T R $ ( W V ( J ) ) , 2 ) " , " M I D $ ( S T R $ ( P W ( J ) ), 2 ) : N E X TG 5 1 P R I N T : P R I N T " P R E S S { R V S } R E T U R N { O F F } T O E X I T "^ R I N T S P C U J ^ t R V S j S P A C E - t O F F } T O R E P E A T "G 5 2 G E T K E Y A $ : I F A $ = C H R $ T l 3 ) T H E N G O S U B 3 0 : G O T O 3 1 0R 5 3 I F A $ = C H R $ ( 3 2 ) T H E N G O S U B 3 0 : G O T O 4 4 0E 5 4 G O T O 5 2 0G 5 5 G O S U B 3 0 : F O R J = 1 T O 3 : S O U N D J # 1 0 0 0 + J * 5 0 0 , 1 5 , 0 , 0 ,

0 , 2 , J * 1 0 0 0 : N E X TK 5 6 P R I N T " { U P } { R V S } I N A P P R O P R I A T E " : S L E E P 1 : P R I N T "{ U P } { 1 3 S P A C E S } T 3 U P } " : R E T U R NC F 5 7 0 P R I N T C H R $ ( 1 4 ) : D $ = C H R $ ( 1 9 ) : F O R J = 5 4 2 7 2 T O 5 4 2 9 6: P O K E J , 0 : N E X T : F O R J = 1 T O 1 5B 5 8 D $ = D $ + C H R $ ( 1 7 ) : N E X T : G O S U B 2 0 : V O L 1 5 : F O R J = 1 T O 38 : X $ = X $ + C H R $ ( 3 2 ) : N E X T

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 104/228

L C h a p t e r

R 5 9 V C = 1 : E $ = D $ + X $ + C H R $ ( 1 3 ) + X $ + C H R $ ( 1 3 ) + X $ + C H R $ (1 9 ) + C H R $ ( 1 3 )

M 6 0 F O R K = 2 0 0 0 T O 4 0 0 0 S T E P 2 2 0 : F O R J = 1 T O 3 : S O U N D J # K * 2 i + J * 2 0 , 4 5 , 2 , K , K / 3 , 2 , 4 0 9 5 - KG 6 1 N E X T J , K : F O R J = 4 5 T O 1 S T E P - 5 : S O U N D 1 , J * 1 0 0 0 , 5 , 1 ,

J * 1 0 0 , J * 2 8 0 , 2 , 2 3 0 0J 6 2 S O U N D 2 , 3 2 0 0 - J * 2 0 , 5 , 0 , 0 , 0 , 2 , 1 5 0 0 : S O U N D 3 , J * 1 20 0 , 5 , 1 , J * 1 2 0 , J * 3 0 0 , 2 , 3 0 0 0

J 6 3 N E X T : F O R J = 1 T O 3 : S O U N D J , 1 0 0 0 0 , 2 0 0 , 1 , J * 2 0 0 0 , J *4 0 0 , 2 , 2 3 0 0 : N E X T : F O R J = 1 T O 3

R H 6 4 0 R E A D F Q ( J ) , D U ( J ) , D I ( J ) , M I ( J ) , S V ( J ) , W V ( J ) , P W (J : N E X T : F O R J = 0 T O 3 : R E A D A $

M B 6 5 0 W V $ ( J ) = " " + A $ : N E X T : F O R J = 0 T O 2 : R E A D A $ : D I $ (J " + A $ : N E X T : R E T U R N

K 6 6 D A T A 1 0 0 0 0 , 2 6 0 , 2 , 2 0 0 0 , 6 0 , 2 , 2 0 0 0 , 0 , 0 , 0 , 0 , 0 , 0 ,2 0 0 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 0 0 0

P S 6 7 0 D A T A " T R I A N G L E " , " S A W T O O T H " , " P U L S E { 3 S P A C E S } ", " N O I S E I S P A C E S ! "G 6 8 D A T A " U P W A R D { 3 S P A C E S } " , " D O W N W A R D " " O S C I L L AT E

P r o g r a m 2 - 9 . P L A Y D e m o n s t r a t o rF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

G 1 G O T O 3 0E 2 P R I N T A $ : P L A Y A $ : R E T U R NR 3 P R I N T C H R $ ( 1 4 7 ) C H R $ ( 1 4 ) S P C ( 3 ) C H R $ ( 1 8 ) " 1 2 8 P L

D E M O N S T R A T O R " C H R $ ( 1 3 )K 4 F O R J = 5 4 2 7 2 T O 5 4 2 9 6 : P O K E J , 0 : N E X T : F I L T E R 0 , 0 , 0 , 0

: F O R J = 1 T O 3 : S O U N D J , 0 , 0 : N E X TR 5 R E A D A $ : I F A $ < > " Z " T H E N G O S U B 2 0 : G O T O 5 0X 6 P R I N T : P R I N T S P C ( 2 ) C H R $ ( 1 8 ) " P R E S S T P L A Y A G

A I N , Q T Q U I T "A 7 G E T K E Y G $ : I F G $ = " P " T H E N R U NK 8 I F G $ < > " Q " T H E N 7 0M 9 E N R 1 0 D A T A U 9 X 0 V F H 1 1 0 D A T A T 0 0 0 I S 0 G R E R G RX 1 2 D A T A T C D 0 0 I S 0 G R E R G RA 1 3 D A T A T C G D G E G D G CB H 1 4 0 D A T A 0 C 0 B A G F E D CG 1 5 D A T A 0 0 B A G F E DM B 1 6 0 D A T A T C G D G E G F G E G D GM 1 7 D A T A C 0 # 0 0 0 0 0 B 1 8 D A T A 0 3 F R 0 5 F E D 0 B 0 D Q 1 9 D A T A T 0 0 0 0 0 0 G D

F A 2 0 D A T A E R D C D G C 0 J 2 1 D A T A T E R D C D G C 0

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 105/228

E 2 2 D A T A T E R D C D G C 0 X 2 3 D A T A T E R D C D G C 0 B J 2 4 D A T A T 0 C D E F G A B CH 2 5 D A T A 0 C D E F G A B CE 2 6 D A T A 0 C D E F G A BR 2 7 D A T A 0 C 0 C 0 C A 5 0 0 0 0 D A T A

S o u n d a n G r a p h i c s

9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 106/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 107/228

C h a p t e r

G a m e s

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 108/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 109/228

O r b i t r o nM a r k T u t t l e a n K e v i n M y k y t y n

Y o u ' l l n e e d t p l a n a h e a d t o u t m a n e u v e r y o u r o p p o n e n t a n s c o r e i " O r b i t r o n , " a i n t e r p l a n e t a r y g a m e f o t w p l a y e r s . R q u i r e s t w j o y s t i c k s .

P a s s t h b a l l b e t w e e n y o u r t h r e e o r b i t i n g p l a n e t s b e f o r e y o u ro p p o n e n t g r a b s i t M o v e t h b a l l a n c o n t r o l t t h e o u t e r o r b i tw i t h p e r f e c t t i m i n g s y o u r p l a n e t m o v e s i n t o p o s i t i o n f o s h o t o g o a l . B u t b e s u r e y o p a s s i f r o n t o y o u r g o a l b e f o r et h e o t h e r p l a y e r h a c h a n c e t g r a b t h b a l l . O p a s s t h b a l lb e t w e e n o r b i t s j u s t a y o u r o p p o n e n t p i c k s u t h b a l l , b e i n gs u r e t h a t y o u r p l a y e r w i l l b a b l e t r e c a p t u r e i t P e r h a p s y o w a n t t h o t h e r p l a y e r t t e m p o r a r i l y m o v e t h b a l l i n t o p o s it i o n f o y o u .

F i r s t T h i n g s F i r s tY e s , " O r b i t r o n " i c h a l l e n g i n g g a m e w h e r e t w p l a y e r s t r t o u t w i t e a c h o t h e r i o r d e r t p a s s t h b a l l i n t o p o s i t i o n f o

s c o r e . P l a y i n g O r b i t r o n t a k e s s o m e p r a c t i c e . E a c h p l a y e rm u s t l e a r n t c o n t r o l h i o h e t h r e e o r b i t i n g p l a n e t s a n p a s st h b a l l .

P l a y e r i r e a n u s e s a j o y s t i c k a t t a c h e d t p o r t 1 p l a y e r i w h i t e a n u s e s p o r t 2 E a c h p l a y e r h a t h r e e o r b i ti n p l a n e t s : P l a y e r l ' p l a n e t s o r b i t i c l o c k w i s e d i r e c t i o n ,w h i l e p l a y e r 2 ' m o v e c o u n t e r c l o c k w i s e .

E a c h p l a y e r c a c o n t r o l o n l y o n p l a n e t a a n y o n e t i m e .T h p l a n e t c u r r e n t l y b e i n g c o n t r o l l e d i d i f f e r e n t c o l o r f r o mt h e o t h e r t w m o v i n g i t h s a m e d i r e c t i o n . P l a y e r h a c o t r o l o v e r t h p u r p l e p l a n e t ; p l a y e r 2 h a c o n t r o l o v e r t h g r a yp l a n e t . T c o n t r o l t h o u t e r o r b i t i n g p l a n e t , p r e s s t h e f i r e b u t o a n p u s h u p — i n s t a n t l y t h e p l a n e t c h a n g e s c o l o r t i n d ic a t e c o n t r o l . L i k e w i s e , p r e s s t h e f i r e b u t t o n w i t h o u t m o v i n gt h s t i c k t c o n t r o l t h c e n t e r p l a n e t , a n p u l l b a c k w h i l ep r e s s i n g t h e b u t t o n t c o n t r o l t h i n n e r p l a n e t .

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 110/228

C h a p t e r

O n c e Y o u ' v e G o C o n t r o l ' — >O n c e y o h a v e c o n t r o l o f p l a n e t , t h e r e a r t w t h i n g s y o c a d o C h a n g e i t s p e e d , a n p a s s o r s h o o t . M o v e y o u r j o y -s t i c k t t h r i g h t t o i n c r e a s e t h s p e e d o f p l a n e t a n t t h ' — l e f t t d e c r e a s e t h s p e e d . O n c e t h s p e e d o f p l a n e t i s e t , i r e m a i n s a t h a t s p e e d u n t i l i t ' s c h a n g e d a g a i n . T h s p e e d o I e a c h p l a n e t i s h o w n o t h b o t t o m o t h s c r e e n . '

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

P l a y i n g t h G a m eT h f i r s t t i m e t h g a m e i r u n , t h e r e w i l l b m i n u t e a n h a l f d e l a y w h i l e t h g a m e i s e u p O n c e t h t i t l e s c r e e n a p e a r s , p r e s s e i t h e r f i r e b u t t o n t s t a r t t h g a m e .

T h b e s t w a t l e a r n t c o n t r o l t h b a l l a n y o u r p l a n e t si t o p r a c t i c e p l a y i n g t h g a m e . T h o b j e c t o f t h g a m e i t s c o r e f i v e g o a l s f i r s t . A t h s t a r t o t h g a m e , b a l l a p p e a r ss o m e w h e r e i t h i n n e r o r b i t . T s c o r e g o a l , p l a y e r m u s tm o v e t h b a l l f r o m t h e i n n e r o r b i t t o t h o u t e r o r b i t , t h e ns h o o t i i n t o o n o t h t w g o a l s ( o t h l e f t a n r i g h t e d g e so t h e o u t e r r i n g ) . W h e n e v e r p l a n e t p a s s e s o v e r t h b a l l , i p i c k s u t h b a l l a n c a r r i e s i u n t i l i t ' s e i t h e r p a s s e d t a o t h e r o r b i t o t h o t h e r p l a n e t i t h s a m e o r b i t c r o s s e s o v e rt h p l a n e t c a r r y i n g t h e b a l l , s t e a l i n g i t Y o d o n ' t h a v e t h a v ec o n t r o l o v e r t h p l a n e t t s t e a l t h b a l l .

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

T s c o r e , y o u m u s t h a v e c o n t r o l o f y o u r o u t e r p l a n e t , t h a tp l a n e t m u s t b c a r r y i n g t h b a l l a i p a s s e s g o a l , a n d y o um u s t s h o o t ( p u s h t h s t i c k u p a t h e p l a n e t p a s s e s t h g o a l .

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

T y p i n g I I I — O r b i t r o n i w r i t t e n i t w p a r t s . P r o g r a m 3 - i w r i t t e n i B A S I C a n s h o u l d b t y p e d i u s i n g " T h e A u t o m a t i c P r o o f -r e a d e r " ( A p p e n d i x B ) I y o a r u s i n g t a p e , y o u ' l l n e e d t ' — c h a n g e t h i l i n e 1 t 1 P r o g r a m 3 - i t h m a c h i n el a n g u a g e s e c t i o n o t h p r o g r a m a n d m u s t b e n t e r e d u s i n g1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 111/228

G a m e s

" M L X , " t h m a c h i n e l a n g u a g e e d i t o r p r o g r a m . M L X , a n c o p l e t e i n s t r u c t i o n s f o i t u s e , c a b e f o u n d i A p p e n d i x C O n c e y o u ' v e t y p e d i M L X , s a v e c o p y f o u s e w i t h " M e t a -B A S I C , " f o u n d i C h a p t e r 4 a n w i t h p r o g r a m s f r o m o t h e rC O M P U T E ! p u b l i c a t i o n s .

W h e n y o u ' r e r e a d y t e n t e r t h e d a t a f r o m P r o g r a m 3 - 2 ,l o a d a n r u M L X . Y o u ' l l b a s k e d f o t h s t a r t i n g a n e n d i n ga d d r e s s o t h p r o g r a m . E n t e r :S t a r t i n g a d d r e s s : 7 5 3 0E n d i n g a d d r e s s : 7 9 9 7A l s o , s i n c e P r o g r a m 3 - w i l l a u t o m a t i c a l l y l o a d t h f i l e c r e a t e db M L X , y o s h o u l d a n s w e r t h M L p r o m p t f o f i l e n a m ew i t h O R B . O B J w h e n s a v i n g t h d a t a .

T a p e u s e r s s h o u l d s a v e P r o g r a m 3 - a t h b e g i n n i n g o n e t a p e , t h e n r e m o v e t h t a p e w i t h o u t r e w i n d i n g i t N e x t ,i n s e r t t a p e w i t h M L o i t a n l o a d a n r u M L X , a n s w e ri n g t h e p r o m p t s a a b o v e . W h e n y o u ' r e r e a d y t s a v e c o p yo t h e d a t a f r o m P r o g r a m 3 - 2 , r e m o v e t h t a p e c o n t a i n i n gM L a n i n s e r t t h t a p e w i t h P r o g r a m 3 - o i t U s i n g t h S a v e o p t i o n o M L X , s a v e t h d a t a f r o m P r o g r a m 3 - i m m e d ia t e l y f o l l o w i n g P r o g r a m 3 - 1 .

O n c e y o u ' v e f i n i s h e d e n t e r i n g a n s a v i n g P r o g r a m 3 - 1 ,a n t h d a t a f r o m P r o g r a m 3 - 2 ( u s i n g M L X ) , y o u ' r e r e a d y t p l a y t h g a m e . F i r s t , l o a d P r o g r a m 3 - 1 . N e x t , d i s k u s e r ss h o u l d i n s e r t t h d i s k w i t h O R B . O B J o i t i y o u ' r e u s i n gt a p e , l e a v e t h e p l a y b u t t o n d o w n a f t e r l o a d i n g P r o g r a m 3 - 1 .R u P r o g r a m 3 - 1 — i t w i l l a u t o m a t i c a l l y l o a d O R B . O B J f r o mt a p e o d i s k .

P r o g r a m 3 - 1 . O r b i t r o nF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

D 1 G R A P H I C 1 : G R A P H I C : B A N K 0 : I F Q = 0 T H E N Q = 1 : L O A D "O R B . O B J " , 8 , 1

X 2 C O L O R 4 , 7 : C O L O R 0 , 7 : P R I N T " t C L R J 1 9 D O W N } g 7 l1 S P A C E S } W H I L E I N I T I A L I Z I N G T H S C R E E N W I L L

S H I F T - S P A C E ] B E "X 3 P R I N T " { D O W N } 1 2 S P A C E S j B L A N K F O A P P R O X I M A T E L

l W H T } 1 . 5 g 7 3 M I N U T E S . " : S L E E P 4 : F A S T : B A N K 0 : G OS U B 5 1 0

M 4 P R I N T C H R $ ( 1 1 ) C H R $ ( 2 7 ) " M " : G R A P H I C 1 ,

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 112/228

C h a p t e r

B 5 C I R C L E 1 , 2 0 , 2 0 , 5 , 4 : P A I N T 1 , 2 0 , 2 0 : S S H A P E S P $ ,1 0 , 1 3 f 3 3 , 3 3 : F O R A = 2 T O 7 : S P R S A V S P $ , A : N E X T : C I R CL 1 , 5 0 , 5 0 , 2 . - P A I N T 1 , 5 0 , 5 : S S H A P E S P $ , 4 0 , 4 3 ,6 3 , 6 3 : S P R S A V S P $ , 1D 6 G R A P H I C 4 , 1 , 0 : W I D T H 1 : M T ( 1 ) - 4 : M T ( 2 ) 1 2 7 : C 0 = ' 1 : C R = 3 5

H 7 C O L O R 0 , 1 : C O L O R 1 , 6 : C O L O R 2 , 8 : C O L O R 3 , 1 5 : C O LO 4 , M 8 C I R C L E 3 , 3 , 1 4 , 2 , 3 : S S H A P E A $ ( 1 ) , 0 , 1 1 , 1 7 , 1 7A 9 C I R C L E 1 , 8 0 , 8 3 , 1 5 , 1 5 : F O R I = 1 T O 3 : C I R C L E C O , 8 0 ,

8 3 , C R , C R : C O = C O + 1 : C R = C R + 2 0 : N E X TA 1 0 C I R C L E 2 , 1 5 4 , 8 3 , 2 , 6 , 0 , 1 8 0 , 1 : C I R C L E 2 , 6 , 8 3 , 2, 6 , 1 8 0 , 2 , 1 : G O S U B 4 4 0J 1 1 P A I N T 3 , 1 5 0 , 1 0 0 , 1 : P A I N T 2 , 1 3 0 , 1 0 0 , 1 : P A I N T

, 5 0 , 1 0 0 , 1P 1 2 S P R I T E 1 , 1 , 1 , 0 : S P R I T E 2 , 1 , 1 2 , 0 : S P R I T S 3 , 1 , 5

, 0 : S P R I T E 4 , 1 , 2 , 0H D 1 3 0 S P R I T E 5 , 1 , 3 , 0 : S P R I T E 6 , 1 , 2 , 0 r S P R I T E 7 , 1 , 3 ,

0 : G O S U B 1 4 0 : G O T O 1 6 0S 1 4 M O V S P R 1 , 1 7 3 , 1 2 2 : M O V S P R 2 , 2 2 5 , 1 2 4 : M O V S P R 3

2 2 5 , 1 2 8 r M O V S P R 4 , 2 6 5 , 1 2 4D 1 5 M O V S P R 5 , 2 6 5 , 1 2 8 : M O V S P R 6 , 3 0 5 , 1 2 4 : M O V S P R 7

3 0 5 , 1 2 8 : R E T U R NH 1 6 C H A R 3 , 0 , 0 , " P L A Y E R 1 " , 0 : C H A R 3 , 3 2 , 0 , " P L A Y E R

2 " , 0 : P R I N T " l H O M E } { 9 D O W N } " ;X 1 7 G O S U B 1 8 0 : G O T O 2 7 0E 1 8 P R I N T " g 2 § { 4 S P A C E S } g D § I R V S J g D § g F § I O F F ] g F §

l R V S } g K § g D § g F § l O F F i g F l l R V S j g K § g D § g F § l O F F }& F l R V S } g F § g D ) | l O F F } g C R V g F g D 5 | l O F F g V l R V S } g K 3 g D § g F § l O F F j g F l g D 5 | l R V S i g D § g F § l O F F }B F l I R V S g K § g C 3 g K § I O F F } g K § 1 8 S P A C E S } { R V S } g K §I O F F } g K 3 { R V S } g K 3 I O F F J "

J 1 9 P R I N T g K R V J g K | J g C 3 g V 3 t O F } g V § t R V j g K 3 g C §B V 3 l O F F } g V 3 l R V S } g K § l O F F } g K § l 2 S P A C E S ) I R V S j& K § I O F F } g K § I R V S } g K 3 g C g V § I O F F } g V i I R V S g K

O F g K j J R V g K O F F } g K R V g K S P A C E Sl O F F } g K § l W H T } { 8 S P A C E S } { R V S j g K 3 I O F F } g K §I R V S } g K § { O F F } g K § { R V S g K § g D 3 g C § { O F F } " ;

C 2 0 P R I N T " { R V S ) g K 3 l O F F } g K § l R V S } g K 3 l O F F } g K § i I R V S } g K 3 { O F F } g K § I S P A C E S } I R V S } g K § I O F F } g K §

S P A C E } { R V S } g K § g D 3 g C § O F F } I R V S } g K § { O F F } g K §I R V S } g K § { O F F } g K § I R V S } g K 3 I O F F } g K 3 R V S } g F *l O F F } g K 5 | l 9 S P A C E S } R V } g I § l O F F } g C 3 g V § g C §B V § g C l l R V S } g 2 I i l O F F } "

H 2 1 P R I N T " t R V S j g 2 I § l O F F } l 2 S P A C E S } g C l g V l g C B V § g C i g V 3 l R V S } g 2 I § l O F F } g C 3 g V § g C 3 g V 3 " : B A NK 1 5 : P O K E 5 3 2 6 9 , 0 : B A N K 0 : S L O W

H 2 2 P R I N T S P C ( 8 ) " l D O W N } g 7 § P R E S S F I R E B U T T O N T O P A Y " : R E T U R N

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 113/228

G a m e s

M 2 3 P R I N T " g 7 1 { 2 S P A C E S } g D R V S } g D l g F l { O F F } g F { R V S } | V l g C 3 { O F F } { R V S } g K l g C 3 { O F F } g D l { R V S }B K l g D 3 E l H O F F } g V 3 l 4 S P A C E S } g D 3 R V S j i D l i F iI O F F } B F § { R V S } g K { O F F } g K { R V S } g K l I O F F } g K §l R V S } g K 3 g D § g I i l O F F } g V 3 t R V S } g K § g D § g F H O F F }& F 3 U S P A C E S } l Y E L } { R V S } g K H O F F } g K 3 g I i g F §l R V S } g K § " ;

B 2 4 P R I N T " g C l g V l l O F F } g K l { R V S } g K 3 g 2 D g K l g C lO F F } g F § S P A C E S } { R V S } g K { O F F } g K l R V g K

I O F F } g K H R V S } g K l { O F F } g K l R V g K l I O F F } g K lR V g K g C O F g F R V g K g C g V O F g V

S P A C E S G R R V g K O F g K R V g K O F g K R V g K O F g K R V g K { O F F g K

l R V S } g K l l O F F } n ;Q E 2 5 0 P R I N T " g K l I R V S } g K l { O F F } g K l 1 6 S P A C E S } { R V S }

g K 3 { O F F } g K l { R V S } g K l { O F F } g K l g C l { R V S } g C l g V lO F g V R V g K O F g K S P A C E S R V g K

B D l g C l { O F F } { 6 S P A C E S } ! R V S } g 2 H l O F F } g C l g V lg C l g V l g C l g V l { R V S } g I l l O F F } g C l { R V S } g 2 H "

C 2 6 P R I N T M { O F F } g V l l 5 S P A C E S } { R V S } g 2 H l O F F }{ S P A C E S } g C § g V l g C 3 l R V S } g 2 H { O F F } g V l g C lg V l g C l g V l { H O M E } " : R E T U R N

Q 2 7 I F J O Y ( 1 ) = 1 2 8 O R J O Y ( 2 ) = 1 2 8 T H E N G O T O 3 2 0 : E L S E 2

G 2 8 G O S U B 4 3 0 : P R I N T " { D O W N } I N N E R { 2 S P A C E S } g 4 l B{ G R N j l R V S } { O F F } { 9 S P A C E S } g 4 l B " S P C ( 2 ) " { W H T }I N N E R " ;

H 2 9 P R I N T " { 2 S P A C E S } g 4 3 B { R V S } { G R N } { O F F }{ S P A C E S } g 4 3 B "

A 3 0 P R I N T " g 2 l M I D D L E B 4 l B { Y E L } { R V S } { O F F }{ S P A C E S } g 4 3 B " S P C ( 2 ) " { W H T j M I D D L E g 4 l B { Y E L }{ R V S } { O F F } { 9 S P A C E S } g 4 l B "R 3 1 P R I N T " g 2 l O U T E R { 2 S P A C E S } " f 4 1 B B 7 3 1 R V S } { O F F }{ S P A C E S } g 4 l B " S P C ( 2 ) " { W H T } O U T E R l 2 S P A C E S }B 4 3 B B 7 3 1 R V S } { O F F } { 9 S P A C E S } g 4 3 B { H O M E } " : R E TU R

X 3 2 F O R A = 0 T O 2 1 : G R A P H I C 4 f 0 , A : F O R X = 1 T O 4 0 : N E X T : N En X T : G O S U B 2 8 0K 3 3 G O S U B 1 4 0 : B A N K 1 5 : P O K E 5 3 2 6 9 / 1 2 7 : B A N KA 3 4 G R A P H I C 4 , 0 , 2 1 : P O K E 2 9 2 1 2 , R N D ( 1 ) * 2 5 6 : S Y S 3 0 0 0

0 : G O T O 3 6 0

n Q 3 5 S Y S 3 0 0 0 3F S 3 6 0 I F P E E K ( 2 9 2 1 0 ) = 0 T H E N P L = 2 : G O T O 3 7 0 : E L S E P L = 1X 3 7 M O V S P R 1 , P E E K ( 2 9 2 1 3 ) * 2 9 7 + 2 7 , 1 2 6 : G O S U B 4 5 0 : S C

( P L ) = S C ( P L ) + 1 : M T ( P L ) = M T ( P L ) + 6A 3 8 P A I N T 3 , M T ( P L ) , 1 4 , 0 : I F S C ( 1 ) = 5 O R S C $ ( 2 ) = 5 T H E N P

R I N T " { C L R } " : G O S U B 4 3 0 : G O T O 3 9 0 : E L S E 3 5 0P E 3 9 0 S P R I T E 1 , 0 , 1 , 0 : G O S U B 4 3 0 : G O S U B 2 3 0 : G O S U B 4 8 0 : S

L E E P 2

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 114/228

C h a p t e r ,

S 4 0 M T ( 1 ) = - 4 : M T ( 2 ) = 1 2 7 : S C ( 1 ) = 0 : S C ( 2 ) = 0 : P R I N T "{ C L R J 1 7 D O W N ] " ;K H 4 1 0 S P R I T E 1 , 1 , 1 , 0 : M O V S P R 1 , 1 7 3 , 1 2 2 : G O S U B 1 8 0J 4 2 F O R A = 2 1 T O 0 S T E P - 1 : G R A P H I C 4 , 0 , A : F O R X = 1 T O 4 0 : N

E X T : N E X T : G O S U B 4 4 0 : G O T O 2 7 0D 4 3 P R I N T " I C L R J 1 2 0 D O W N J g 2 1 " : R E T U R NJ 4 4 N = 0 : F O R Z = 1 T O 2 : F O R I = 1 T O 5 : G S H A P E A $ ( 1 ) , N , 1 1 , 0: N = N + 6 : N E X T : N = 1 2 9 : N E X T : R E T U R NQ 4 5 F O R J = 1 T O 1 5 S T E P 5 : S O U N D 1 , J * 1 0 0 0 , 5 , 1 , J * 1 0 0 , J * 28 0 , 2 , 2 3 0 0B X 4 6 0 S O U N D 2 , 3 2 0 0 - J * 2 0 , 5 , 0 , 0 , 0 , 2 , 1 5 0 0 : S O U N D 3 , J * 1 20 0 , 5 , 1 , J * 1 2 0 , J * 3 0 0 , 2 , 3 0 0 0S 4 7 N E X T : R E T U R NG Q 4 8 0 V O L 3 : F O R J = 4 5 T O 1 S T E P - 2 : S O U N D 1 , J * 1 0 0 0 , 5 , 1 , J *1 0 0 , J * 2 8 0 , 2 , 2 3 0 0C 4 9 S O U N D 2 , 3 2 0 0 - J * 2 0 , 5 , 0 , 0 , 0 , 2 , 1 5 0 0 : S O U N D 3 , J * 1 20 0 , 5 , 1 , J * 1 2 0 , J * 3 0 0 , 2 , 3 0 0 0B 5 0 N E X T : R E T U R NE D 5 1 0 X C = 1 7 5 : Y C = 1 2 5 : Q = 3 : F O R R = 2 5 T O 6 5 S T E P 2 0 : N = 0X 5 2 F O R A = 0 T O 2 * T S T E P . 0 2 : X = X C + 2 * R * C O S ( A ) : Y = Y C + R * SI N ( A ) : X H = I N T ( X / 2 5 6 )K 5 3 X L = X - X H * 2 5 6 : G = ( Q - 1 ) * 1 0 0 0 + N : P O K E 2 0 0 0 0 + G , X L : PO K E 2 3 0 0 0 + G , X H : P O K E 2 6 0 0 0 + G , YS 5 4 N = N + 1 : N E X T : N = N - 1 : N H = I N T ( N / 2 5 6 ) : N L = N - N H * 2 5 6 -P O K E 2 9 0 0 0 + ( Q - 1 ) * 2 , N LK 5 5 P O K E 2 9 0 0 6 + ( Q - 1 ) * 2 , N L : P O K E 2 9 0 0 1 + ( Q - 1 ) * 2 , N H : PO K E 2 9 0 0 7 + ( Q - 1 ) * 2 , N H : Q = Q - 1 : N E X T : R E T U R N

P r o g r a m 3 - 2 , O R B . O B JT h i s d a t a m u s t b e n t e r e d u s i n g M I X . S e A p p e n d i xS t a r t i n g a d d r e s s : 7 5 3 0E n d i n g a d d r e s s : 7 9 9 7S a v e u s i n g t h e f i l e n a m e : O R B . O B J

7 5 3 0 : 2 0 8 7 A 0 F 4 A 1 7 5 3 8 : 3 E 8 0 0 F F 2 C 7 2 0 E 47 5 4 0 : 3 9 7 6 2 0 F 7 2 2 7 D 7 5 4 8 : 2 0 3 7 2 E 7 2 F F 7 5 5 0 : 7 5 C D 7 D 1 A E 4 7 5 5 8 : 7 9 8 D D F 7 9 2 0 1 7 8 2 0 6 57 5 6 0 : 7 6 7 2 B 7 2 6 7 A 7 5 6 8 : A 5 9 C 7 F F 0 F A 5 C 7 5 7 0 : C A D F 4 4 7 A 0 D 7 5 7 8 : A 2 0 A 0 8 E 7 A D 0 D7 5 8 0 : F 7 7 8 D 1 A D E F 7 7 I 7 5 8 8 : 8 D D 1 B F l 7 9 9 D 7 7 5 9 0 : 1 1 B F 7 4 2 E E 4 7 9 7 5 9 8 : B 9 E 9 7 9 9 D 1 C C 5 7 5 A 0 : 8 8 1 E A F 7 8 I D E 9 i

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 115/228

G a m e s

7 5 A 8 : 7 2 4 2 E E 4 7 A E 4 7 9 3 7 5 B 0 : 8 D E 1 6 A 0 B E F E C7 5 B 8 : 7 5 8 F B D F 0 7 8 F 8 7 5 C 0 : 8 A 4 A B 9 7 3 E 4 7 5 C 8 : 0 F 4 4 4 A 8 D E 7 A 5 7 5 D 0 : 0 A 3 E E 7 8 E 7 0 7 5 D 8 : A 0 0 A 2 C E 7 F 6 7 5 E 0 : 0 2 B 0 A A 9 F 8 9 7 5 E 8 : 1 0 F C C 1 C 6 D E 7 5 F 0 : 0 7 B 0 8 0 C 0 A 9 7 5 F 8 : 0 7 7 0 8 4 8 9 8 4 8 A F 7 6 0 0 : E 2 7 0 A 8 A 2 0 9 4 I 7 6 0 8 : C D I 7 F I A 1 0 7 2 4 7 6 1 0 : D 9 A 7 D 1 A 1 7 D 7 6 1 8 : D 9 A 7 D 0 A C 7 4 7 6 2 0 : D 0 0 9 4 8 D I B 7 A 1 7 6 2 8 : 0 1 8 D C 7 9 1 6 9 0 6 2 7 6 3 0 : A 8 C A 1 0 D 2 6 A 6 A B 7 6 3 8 : 6 0 A 2 0 5 D 9 7 9 F 0 0 E 7 6 4 0 : 4 C A 7 B 9 7 8 C C 7 6 4 8 : 0 3 9 0 3 E 0 A B 2 7 6 5 0 : 9 A 7 0 4 8 1 F 9 E 7 6 5 8 : 9 2 7 8 0 A A 8 B 9 A 2 7 9 C 97 6 6 0 : 1 8 7 B 7 9 A 7 B A 7 6 6 8 : A 3 7 9 7 9 B 7 9 9 9 A 7 E 7 6 7 0 : 1 0 0 B 4 7 9 A 7 D 7 6 7 8 : B 9 4 7 1 9 9 A 7 B 9 4 8 I 7 6 8 0 : 7 1 3 F A 7 8 E 7 E 7 6 8 8 : B 9 4 7 F 9 A 3 7 0 E 7 7 6 9 0 : 7 9 B 0 A 9 0 0 9 A 7 2 7 6 9 8 : 9 9 A 7 B A 7 8 F 0 7 6 A 0 : B 9 A 7 8 F 2 2 7 7 1 37 6 A 8 : C A 3 0 E 0 D 0 8 C 2 4 7 6 B 0 : E F 7 6 2 0 F 7 4 3 7 C 7 6 B 8 : 6 0 2 4 E 0 8 5 F 5 2 0 4 97 6 C 0 : 4 E 0 5 F 5 D 5 C B 7 6 C 8 : 5 D A 8 6 1 D 8 5 C 0 5 D A 7 7 6 D 0 : 6 1 9 6 7 6 9 6 0 6 9 F 7 6 D 8 : 6 5 7 6 6 6 1 8 6 5 F D 5 E7 6 E 0 : 8 5 F A E 7 6 F 8 6 7 6 E 8 : F C 8 E 7 A 0 6 8 1 7 6 F 0 : 4 8 9 4 A D I B 7 C 9 0 7 4 7 6 F 8 : F 0 0 0 A B A 7 8 8 7 7 0 0 : 1 0 7 B A 3 7 9 8 1 7 9 7 7 0 8 : A D 1 0 7 2 8 5 F A 1 7 2 B 37 7 1 0 : 8 5 F A E 7 0 A A 4 7 7 1 8 : 0 6 2 2 7 2 5 7 6 8 D F7 7 2 0 : A 8 6 A 6 B B 7 8 D 0 C7 7 2 8 : E 3 7 B B 9 7 6 2 D 7 A 7 7 3 0 : B 1 F B 9 D F l 7 9 A E 7 8

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 116/228

C h a p t e r .

7 7 3 8 : B 9 C 7 8 E 7 9 B 9 C 9 ' 7 7 4 0 : 7 6 2 D 7 B F B 9 D F 4 7 7 4 8 : 7 9 A E 7 B D 2 7 6 8 0 I 7 7 5 0 : E 3 7 9 B 9 D l 7 6 2 D 7 4 7 7 5 8 : B 1 F 9 E 9 7 9 6 A I 3 7 7 6 0 : 7 2 C 0 F 0 1 0 A 1 7 B 7 7 6 8 : C D C 7 D 0 A 1 7 B 7 7 7 0 : C D C 7 F 1 A 0 0 8 D 3 l 7 7 7 8 : C 4 7 A 1 7 8 C 7 9 A 77 7 8 0 : A D 1 7 8 C 7 6 A 9 2 07 7 8 8 : 0 0 A 0 8 D D C 7 8 D 9 7 7 9 0 : 7 9 9 A 7 8 1 F A 0 A 97 7 9 8 : 0 B B 7 7 9 9 9 B 7 8 F 7 7 A 0 : 1 0 F A 0 B 8 7 9 9 6 67 7 A 8 : 9 A 7 9 A 9 0 9 9 2 7 9 8 8 I 7 7 B 0 : 1 0 F A 0 8 D 7 8 1 7 7 B 8 : D B 7 8 E 2 7 9 A 0 8 E 7 7 C 0 : D F 7 8 E 7 A 0 8 D C B7 7 C 8 : 1 B 7 6 A 1 A 0 9 2 7 7 D 0 : 0 0 D B D 7 9 0 0 D 4 8 7 7 D 8 : C A 1 F 6 0 0 0 0 I 7 7 E 0 : 8 1 0 F 0 0 0 0 0 0 0 0 0 0 7 27 7 E 8 : 0 0 0 0 0 0 0 0 0 1 0 2 7 7 F 0 : 0 0 0 0 F I 6 2 0 2 7 7 F 8 : 7 8 C C B F C 6 9 F 7 8 0 0 : F 5 8 1 7 A 0 0 8 D 1 F 7 8 0 8 : 7 2 6 A 1 7 0 0 3 C 7 8 1 0 : 6 D 1 7 8 D 1 C 7 6 A F 7 8 1 8 : 0 1 B D 7 1 7 4 7 A 7 8 2 0 : 8 D D 7 2 3 7 2 0 E 7 8 2 8 : C 9 0 D 0 0 5 A 9 0 0 9 D D C 9 7 8 3 0 : 7 9 A 0 0 0 2 3 7 4 2 8 7 8 3 8 : 1 0 D 0 A 0 6 4 B 9 7 8 4 0 : 5 9 C 0 D 0 0 8 A 9 0 0 9 D B F7 8 4 8 : D A 7 4 0 5 7 9 B D D C 7 9 D 47 8 5 0 : D 0 F A D 7 C I 7 3 7 8 5 8 : D 0 F A I 7 8 D 1 A 7 C 7 8 6 0 : A 9 0 8 D I B 7 A E 7 D 7 8 6 8 : F 0 0 9 C E E 7 2 5 7 9 I 7 8 7 0 : 4 C 0 7 A 1 7 F 0 4 7 8 7 8 : A D 1 7 C 2 9 1 A C 7 8 8 0 : 1 0 7 C 0 9 0 C 9 9 9 6 7 8 8 8 : 9 0 0 A C A B 0 6 6 5 7 8 9 0 : 6 8 8 0 F A 0 8 E 6 7 8 9 8 : 7 9 6 4 B 3 C 0 D 2 7 8 A 0 : 0 7 A 0 9 D 7 9 1 0 5 D 7 8 A 8 : B D D 7 9 D 0 5 8 A D 7 9 7 8 B 0 : C D I 7 D 5 A D I B 7 8 7 8 B 8 : 8 D 1 7 A 0 8 I 7 F 7 8 C 0 : A D E 7 C 0 F 0 3 E E 4 j

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 117/228

7 8 C 8 : E 2 7 2 4 7 4 0 7 B 7 8 D 0 : 4 A B 1 A D 7 B 9 2 7 8 D 8 : 7 9 C 5 F 0 2 8 1 6 0 6 7 8 E 0 : 9 9 9 7 4 0 5 7 9 4 B 8 7 8 E 8 : 1 3 A C D 7 B 9 7 C F 7 8 F 0 : 0 F F 1 3 E 0 9 9 8 7 8 F 8 : 7 9 4 0 7 C 0 F 0 E 7 9 0 0 : A 9 0 9 D D A 7 A 0 9 7 7 9 0 8 : D C 7 C 3 0 4 1 7 1 7 9 1 0 : A 2 0 B 4 7 1 7 D B 7 9 1 8 : 7 9 A 9 0 7 B 4 7 A 7 9 2 0 : 9 9 2 D C 1 E C A 0 0 6 2 C7 9 2 8 : C C 0 7 F 0 C 0 7 A 7 9 3 0 : F 0 0 B 8 7 9 2 D 0 5 07 9 3 8 : 8 8 1 E 6 B D 0 0 D 8 6 7 9 4 0 : 0 2 7 A 0 7 6 0 0 0 7 9 4 8 : 0 B 0 A 1 8 1 D A 9 F F7 9 5 0 : 0 A 8 D 0 F D 4 A 9 1 8 1 A 7 9 5 8 : D 4 6 A 1 8 1 D A 0 7 9 6 0 : 1 2 8 D 0 F D A 1 8 1 B 7 9 6 8 : D 4 6 A 1 7 6 1 8 D 0 E7 9 7 0 : 1 4 7 8 0 D 6 F F 6 7 9 7 8 : F F F F F F F 0 0 0 0 7 7 9 8 0 : 0 1 0 0 0 2 3 5 2 0 7 9 8 8 : 3 C 5 0 1 0 1 0 0 0 0 2 F 37 9 9 0 : 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 5

G a m e s

1 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 118/228

L i t t e r P a t r o l

n

C h a r l e s B r a n n o n

B A S I C 7 . p u t s t h e p o w e r o t h 1 2 w i t h i n e a s y r e a c h o f t h e a v e ra g p r o g r a m m e r , ' l i t t e r P a t r o l " d e m o n s t r a t e s h o t h 1 2 8 ' s B A S I Cc a b u s e d t c r e a t e a i n t e r e s t i n g a n e x c i t i n g g a m e .

T h C o m m o d o r e 1 2 r u n s a l 6 s o f t w a r e , a n c a u s v i r t ua l l y a l 6 h a r d w a r e a n p e r i p h e r a l s . T h i s m a k e s i e a s y t u g r a d e t t h 1 2 a n g i v e s f i r s t - t i m e C o m m o d o r e o w n e r si n s t a n t a c c e s s t t h l a r g e 6 s o f t w a r e l i b r a r y .

T u s t h e x p a n d e d k e y b o a r d , f u l l 1 2 8 K m e m o r y , a n dR G c o l o r 8 0 c o l u m n s , y o u n e e d t r u i t h t r u e 1 2 m o d e .T h 1 2 m o d e i r e a l u p g r a d e o t h 6 4 b u h a f a m i l i a rf e e l t i t T h s a m e V I c h i p i u s e d t d i s p l a y 4 c o l u m n s ,b i t m a p g r a p h i c s , a n s p r i t e s , s t h s c r e e n e v e n l o o k s t h s a m e , e x c e p t f o C o m m o d o r e ' s n e p o w e r - o n c o l o r c h o i c e —l i g h t g r e e n t e x t o d a r k g r a y s c r e e n w i t h l i g h t g r e e n b o rd e r . Y o n e e d a R G m o n i t o r ( o m o n o c h r o m e m o n i t o rw i t h a a d a p t e r c a b l e ) t u s t h f u l l - c o l o r 8 c o l u m n m o d e ,w h i c h i e n t i r e l y i n d e p e n d e n t o t h 4 0 - c o l u m n s c r e e n s u p o r t e d b t h V I c h i p .

T h B A S I C 7 . i o n o t h m o s t f e a t u r e - p a c k e d B A S I C sI ' v e s e e n . T l e a r n a b o u t t h B A S I C , w r o t e s i m p l e F r o g g e r -t y p e g a m e , t a k i n g a d v a n t a g e o f t h e a u t o m a t i c s p r i t e - m o v e m e n tf e a t u r e s u p p o r t e d b B A S I C . I s e e m e d t h a t i t h g a m e w e r ed e s i g n e d a r o u n d t h s p e c i a l B A S I C f e a t u r e s , c o u l d g e m c h i n e l a n g u a g e a n i m a t i o n a n p a y a b i l i t y . w a h a l f r i g h t . T h g a m e , " L i t t e r P a t r o l , " w i l l r u o n l y i B A S I C 7 . i t h 1 2 m o d e .

P l a y i n g L i t t e r P a t r o l * — L i t t e r P a t r o l u s e s j o y s t i c k p l u g g e d i n t o p o r t 2 j o y s t i c kp l u g g e d i n t o p o r t s t i l l i n t e r f e r e s w i t h t h k e y b o a r d i 1 2 m o d e .

T h g o a l o L i t t e r P a t r o l i q u i t e s i m p l e : P i c k u a l t h b i t s o l i t t e r a n f i l l a l t h t r a s h c a n s . Y o u r h e a v y - d u t y ( b u ts l u g g i s h ) t r u c k c a m o v e i e i g h t d i r e c t i o n s a l m o s t a n y w h e r eo t h s c r e e n . T h c a r s , z o o m i n g b a c k a n f o r t h o t h h i g h -

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 119/228

G a m e s

w a y , a r c o n s t a n t l y t h r o w i n g o u b i t s o t r a s h , w h i c h a p p e a ra b r i g h t d o t s ( p e r i o d s ) o t h r o a d . M o v e t h c l a w o y o u rt r u c k o v e r t h t r a s h b i t , a n p r e s s t h f i r e b u t t o n . Y o u r t r u c kp i c k s u t h l i t t e r .

N o m o v e t h c l a w o v e r a n t r a s h c a n ( w h i c h l o o k s l i k eh o l l o w c i r c l e ) , a n p r e s s t h e b u t t o n . T h t r a s h d r o p s i t h

c a n , a n t h l i c l o s e s . E a c h t r a s h c a c a h o l d o n l y o n l o a do t r a s h , s i t u r n s s o l i d t o s h o w y o n o t u s i a g a i n . A f t e ry o u ' v e f i l l e d a l 1 t r a s h c a n s , y o p r o c e e d t t h e n e x t l e v e l . T h c a r s g f a s t e r , a n d y o u m o v e m o r e s l o w l y — q u i t e h a n d i c a p .T h g a m e w o u l d b e a s y ( a n d p o i n t l e s s ) i n o f o t h z o o m i n g c a r s . D o d g i n g t h e m p r o v i d e s t h e n t i r e c h a l l e n g e f o t h g a m e . I y o g e h i t , y o l o s e y o u r t r a s h b i t — i f y o u ' r e c a r y i n g o n e — a n d o n t r u c k . T h g a m e e n d s w h e n y o l o s e a l f i v e t r u c k s . J u s t t m a k e t h i n g s m o r e i n t e r e s t i n g , y o h a v et i m e l i m i t , r e p r e s e n t e d b b l u e b a a t h t o o t h s c r e e n .T h b a d r o p s b o n e s e g m e n t e v e r y t w s e c o n d s , s o y o h a v e a b o u t 8 0 s e c o n d s t c o m p l e t e e a c h l e v e l . T h g a m e e n d si n s t a n t l y w h e n y o r u o u o t i m e .

T h e r e a r s o m e s a f e z o n e s f o y o u r t r u c k w h e r e y o u c a n ' tb h i t , m e d i a n s b e t w e e n e a c h r o a d w a y , a n a t h t o a n b o t t o m o t h s c r e e n . T h e r e ' s s e c r e t s a f e t y z o n e , t o o , b u I ' l ll e a v e i t d i s c o v e r y t y o u . Y o m u s t m o v e y o u r t r u c k h a l f w a yo n t o t h r o a d w a y t f i l l a t r a s h c a n , t h o u g h . T h i s m a k e st o u g h g a m e e v e n t o u g h e r . T h h a r d e s t p a r t o f w r i t i n g g a m ei i m a k i n g i c h a l l e n g i n g b u t n o t t o f r u s t r a t i n g . A l m o s t a n yg a m e g e t s e a s i e r w i t h p r a c t i c e , b u a u n f a i r g a m e d o e s n ' t e c o u r a g e y o t t r y .

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

W e ' l l t a k e w a l k t h r o u g h t h p r o g r a m l i s t i n g . L i t t e r P t r o l , P r o g r a m 3 - 3 , i t o o b i g f o l i n e - b y - l i n e a n a l y s i s , s w e ' l lt a c k l e i i c h u n k s .

L i n e s 1 0 0 - 1 9 0 . T h G R A P H I C 0 , c o m m a n d s w i t c h e s t t h 4 0 - c o l u m n t e x t s c r e e n a n c l e a r s t h s c r e e n . T h C O L O R

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 120/228

C h a p t e r

0 , 1 2 s t a t e m e n t s e t s t h b a c k g r o u n d c o l o r t d a r k g r a y ( e v e n ' — t h o u g h t h i s i t h d e f a u l t c o l o r ) , a n C O L O R 4 , s e t s t h b o d e c o l o r t g r e e n . N o t e t h a t t h c o l o r s a r n u m b e r e d 1 - 1 6 ,n o 0 - 1 5 a i P O K E s . W G O S U B 7 6 t f i l l s p r i t e s h a p e ' — s t r i n g s f r o m t h D A T A s t a t e m e n t s .

T h r o a d w a y s w i l l b t h b a c k g r o u n d c o l o r s h o w i n gt h r o u g h o t h e r a r e a s p r i n t e d w i t h r e v e r s e s p a c e s . T h i s l e t s u ' — p u t y e l l o w a n w h i t e l i n e s o t h r o a d . W e ' l l p r i n t g r e e nr e v e r s e s p a c e s t r e p r e s e n t g r a s s , d e l i n e a t i n g t h r o a d w a y s . T p r i n t t h m e d i a n l i n e s a n g r a s s , w c r e a t e 4 c h a r a c t e r s t r i n g sw i t h i n t h F O R - N E X T l o o p . I m a b e a s i e r f o t h p r o g r a mm e j u s t t o d e f i n e t h e l i t e r a l s t r i n g s a 4 c h a r a c t e r s w i t h i nq u o t a t i o n m a r k s ( l i k e S P " { 4 0 S P A C E S } " ) , b u i t ' s e a s i e r t t y p e i t h p r o g r a m i w u s F O R - N E X T l o o p . E v e r y t h i n gi d o n e w i t h C H R $ c o d e s . I n s t e a d o f p r i n t i n g c o l o r c o d e s , w u s t h C O L O R c o m m a n d t c h a n g e t h t e x t c o l o r . H o w e v e r ,y o u ' l l o c c a s i o n a l l y s e e { S P A C E } . J u s t t y p e o n s p a c e i n s t e a do t h w o r d i n b r a c e s .

L i n e 1 4 t u r n s o f a l s p r i t e s t h a t m a h a v e b e e n a c t i v ef r o m p r e v i o u s r u o t h g a m e . W t h e n p r i n t t h r o a d w a y sw i t h g r e e n b a r s a b o v e t h r o a d , w h i t e o y e l l o w m e d i a n b a r sf o t h m i d d l e o t h r o a d , a n b l a n k l i n e s f o r t h r o a d i t s e l f .T h t i m e l i n e i p r i n t e d i b l u e a t h t o o t h s c r e e n .

L i n e s 2 0 0 - 2 5 0 . L i n e 2 0 i t r y i n g t o p r i n t 4 0 - c o l u m nr e v e r s e s t r i n g a t h b o t t o m o t h s c r e e n . Y o c a n ' t n o r m a l l yd t h i s w i t h o u t s c r o l l i n g , b u i t ' s p o s s i b l e i y o p r i n t 3 c h a ra c t e r s , c u r s o r l e f t , u s t h I N S T / D E L k e t o i n s e r t t h t h i r t y -n i n t h c h a r a c t e r i n t o t h f o r t i e t h p o s i t i o n , t h e n p r i n t a n o t h e rc h a r a c t e r t f i l l t h g a c r e a t e d b I N S T / D E L .

T h t i t l e o t h g a m e i p r i n t e d w i t h t h C H A R c o m m a n d .C H A R i u s a b l e s u b s t i t u t e f o P R I N T A T I l e t s y o p r i n ta n s t r i n g a a n x , p o s i t i o n o t h s c r e e n , a n i n o r m a l o r e v e r s e f i e l d . C o m b i n e i w i t h C O L O R t c h a n g e t h t e x tc o l o r . T h s u b r o u t i n e s a 7 2 a n 7 3 a r u s e d t d i s p l a y t h e ' — s c o r e a n n u m b e r o f t r u c k s ( " l i v e s " ) r e m a i n i n g . T h F O R -N E X T l o o p i l i n e s 2 2 0 - 2 3 0 d r a w s a l t h t r a s h c a n s , a r o w s2 , 9 , 1 6 2 3 a n c o l u m n s 8 2 0 a n 3 2 I

W t h e n b u i l d m u s i c s t r i n g . I t ' s c u t e s y , h a p p y m e l o d y ,b u a l t h a t ' s i m p o r t a n t h e r e i t n o t i c e t h P L A Y s y n t a x . T h l e t t e r s C - D - E - F - G - A - B s t a n d f o n o t e s . T h V s e t s t h v o i c e I t v o i c e 1 O s e t s t h o c t a v e t ( t h a t ' s a O n o z e r o ) ,a n T s e l e c t s p i a n o - l i k e i n s t r u m e n t s e t t i n g . T h l e t t e r s e t s j

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 121/228

G a m e s

t h n o t e d u r a t i o n t e i g h t h n o t e s ; i u s e d f o q u a r t e r n o t e s ,w i t h p e r i o d f o d o t t e d q u a r t e r . T h s h a r p ( # p r e c e d e s t h H n o t e i m o d i f i e s . A n J i u s e d a r e s t . W e ' l l p l a y t h s t r i n g1 i l i n e 3 6 0 .

L i n e s 2 6 0 - 3 2 0 . T h a u t o m a t i c c a s p r i t e s a r s e u p S P R C O L O R s e t s t h s p r i t e m u l t i c o l o r r e g i s t e r s t w h i t e a n b l a c k . A l l s p r i t e s s h a r e t h e s e c o l o r s . W h i t e i u s e d f o t h w i n d s h i e l d ( o t h c l a w o t h t r u c k ) , a n b l a c k f o t h t i r e s .u s e d t h b u i l t - i n s p r i t e e d i t o r t d e s i g n t h s p r i t e s , t h e n m a d eD A T A s t a t e m e n t s f o t h e m . T h D A T A s t a t e m e n t s a r r e a di n t o s t r i n g s , t h e n e a c h s t r i n g i a s s i g n e d t s p r i t e w i t h t h S P R S A V c o m m a n d . S p r i t e s t r i n g s a r 6 c h a r a c t e r s l o n g , n o 6 a y o m i g h t e x p e c t .

F o t h s i s p r i t e s ( F O R 1 = T 7 ) w r e a d ( l i n e 2 7 0 ) t h s p r i t e a n d y p o s i t i o n s f r o m D A T A s t a t e m e n t a l i n e 1 1 1 0 .N o t i c e t h a t y o c a n o R E S T O R E t a n l i n e n u m b e r . T h S P R I T E c o m m a n d t u r n s o t h s p r i t e , s e t s i t c o l o r , a n s p e c if i e s m u l t i c o l o r m o d e . I c a a l s o b u s e d t o s e l e c ts p r i t e / f o r e g r o u n d p r i o r i t y , a n x , e x p a n s i o n . N o n e x p a n d e ds p r i t e s o f f e r t h g r e a t e s t d e t a i l .

T h M O V S P R c o m m a n d c a m o v e s p r i t e t a n p o s it i o n , u o d o w n b a n a m o u n t , o a u t o m a t i c a l l y a a n a g l a n a 1 s p e e d s . W u s t h a u t o m a t i c s y n t a x ( t h e t w a r g u m e n t s a r s e p a r a t e d b s i g n i n s t e a d o c o m m a ) . T h a n g l e i e i t h e r 9 ( r i g h t ) o 2 7 ( l e f t ) . A n g l e i p o i n t i n gs t r a i g h t u i t h s p r i t e a n g u l a r s y s t e m . W h e t h e r s p r i t e g o e sl e f t o r i g h t d e p e n d s o i t s p r i t e n u m b e r . I ( S N = 2 ) i t r u e( - 1 ) , t h e n 1 8 i a d d e d t o 9 0 , g i v i n g u 2 7 0 . O t h e r w i s e , t h a n g l e i 9 0

T h s p e e d , w h i c h c a r a n g e f r o m t 1 5 v a r i e s f r o m u t f i v e s p e e d s f r o m t h b a s e s p e e d , D F T h i s s e t s t h d i f f i c u l t yl e v e l . h i g h e r D g i v e s g e n e r a l l y f a s t e r c a r s . W s a v e t h a n g l e s a n s p e e d s i a r r a y s s t h a t w c a l a t e r p a u s e t h g a m e( a l l s p e e d s g t z e r o ) a n r e s t a r t i f r o m t h a r r a y s .

T h a u t o m a t i c s p r i t e m o v e m e n t i a m a z i n g . E v e n i y o P " s t o p t h e p r o g r a m , t h s p r i t e s c o n t i n u e . Y o c a L I S T y o u r

p r o g r a m , a n t h s p r i t e s s t i l l w h i z b y H o w e v e r , y o u ' d n o t i c es u s p i c i o u s s l o w n e s s t t h l i s t i n g . W h e n y o u s a u t o m a t i c

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

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 122/228

C h a p t e r

p a r t o f L i t t e r P a t r o l q u i t e s l u g g i s h a n e x p l a i n s w h t h e t r u c km o v e s m o r e s l o w l y a t h c a r s g f a s t e r .

W h i l e a u t o m a t i c s p r i t e s g i v e y o s m o o t h , f a s t m o t i o n , t h i sm o t i o n i n o u n d e r y o u r c o n t r o l . S p e e d i t h r e a s o n y o w o u l d u s t h a u t o m a t i c s p r i t e s i t h f i r s t p l a c e , b u t h t i m es a v e d b t h a u t o m a t i o n i s t o l e n f r o m y o u r m a i n p r o g r a m .Y o c a a c h i e v e w o r k a b l e c o m p r o m i s e i y o p l a n y o u rg a m e a r o u n d t h l i m i t a t i o n s .

L i n e s 3 4 0 - 3 6 0 . W s y n c h r o n i z e t h t r u c k ' s p o s i t i o n w i t ht h e c h a r a c t e r s c r e e n s t h a t t h c l a w w i l l c o v e r t h e d o t s t h a tr e p r e s e n t t r a s h b i t s . T h t r u c k a l w a y s m o v e s e i g h t n o t c h e s a t i m e , a i i w e r e c h a r a c t e r . T h e r e f o r e , i t ' s a l w a y s s y n c h r on i z e d w i t h t h e c h a r a c t e r g r i d .

L i n e 3 5 t u r n s o t h c o l l i s i o n i n t e r r u p t s . A n t i m es p r i t e h i t s s p r i t e , t h p r o g r a m g o e s t o l i n e 5 8 0 . S i n c e a l t h s p r i t e s a r i s e p a r a t e l a n e s , t h i s c a h a p p e n o n l y w h e n t h t r u c k i s m a s h e d . W h e n w R E T U R N f r o m t h s u b r o u t i n e a l i n e 5 8 0 , t h e p r o g r a m p i c k s u w h e r e i l e f t o f w h e n t h c o l l is i o n o c c u r r e d .

W p l a y t h t u n e i l i n e 3 6 o n l y a t h b e g i n n i n g o t h f i r s t l e v e l ( I D F = 1 ) .

L i n e s 3 7 0 - 4 7 0 . W e n t e r t h m a i n l o o p h e r e . W h i l e t h c a s p r i t e s m o v e a u t o m a t i c a l l y , w m u s t m o v e t h t r u c k o u s e l v e s . F i r s t , i t w s e c o n d s h a v e p a s s e d ( T I — T > 1 2 0 ) , w e r a s e c h a r a c t e r f r o m t h t i m e l i n e . I t h t i m e l i n e h i t s z e r o ,w g t t h " g a m e i o v e r " r o u t i n e a l i n e 6 4 0 . I n 3 8 0 , w c h e c k f o k e y s t r o k e . I k e i p r e s s e d , w h a l t a l s p r i t e sa n w a i t f o n e k e y s t r o k e w i t h G E T K E Y , t h e n t u r n a l t h s p r i t e s b a c k o n

I l i n e 3 9 0 , w c h e c k f o t h h i g h l y p r o b a b l e : I t h v a l u eo R N D ( l ) , w h i c h r a n d o m l y v a r i e s b e t w e e n a n 1 l e s s t h a n0 . 9 5 ? A b o u t 9 t i m e s o u t o f 1 0 0 , i w i l l b e s k i p p i n g l i n e s 4 0 a n 4 1 0 . F i v e p e r c e n t o t h t i m e , t h o u g h , R N D ( 1 ) w i l l b g r e a t e r t h a n o e q u a l t 0 . 9 5 , s w p i c k s p r i t e n u m b e r , r e a di t x , p o s i t i o n , t r a n s l a t e t h s p r i t e c o o r d i n a t e s t c h a r a c t e r c o r d i n a t e s , a n d r a w w h i t e p e r i o d t r e p r e s e n t a e m p t y c o l ac a ( o w h a t e v e r l i t t e r b u g s t h r o w o u c a w i n d o w s ) . T h e y a l l o o k l i k e l i t t l e d o t s , t h o u g h , f r o m y o u r a e r i a l p e r s p e c t i v e . T h r a n d o m s t a t e m e n t c o n t r o l s t h t i m i n g o l i t t e r d r o p p i n g . W i t h o u ti t t h e r e w o u l d b s t r e a m o t r a s h y b i t s f l o w i n g f r o m a l c a r s .

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 123/228

G a m e s

L i n e s 4 2 0 - 4 6 0 . T h e s e l i n e s m o v e t h t r u c k . T h J O Y s t i c kc o m m a n d r e t u r n s a n u m b e r f r o m t 8 a n i g r e a t e r t h a n1 2 i t h f i r e b u t t o n i p r e s s e d . W u s t h J O v a l u e a a i n d e x i n t o t h D a n D a r r a y s . T h e s e a r r a y s c o n t a i n t h ev a l u e s — 8 0 o f o e a c h p o s i t i o n . F o e x a m p l e , t h s o u t hw e s t p o s i t i o n o f t h e j o y s t i c k i d o w n e i g h t ( + 8 ) a n d l e f t e i g h t( — 8 ) . R e m e m b e r t h a t w e ' r e m o v i n g e i g h t s p a c e s a t i m e . W a d t h i s d i s p l a c e m e n t t t h c u r r e n t a n p o s i t i o n s o f t h s p r i t e , t h e n r e l o c a t e t h s p r i t e t t h n e p o s i t i o n . W s u b t r a c tt h d i s p l a c e m e n t i t h a t w o u l d p u t h s p r i t e o f f t h s c r e e n .L i n e s 4 8 0 - 5 7 0 . T h i s i t h f i r e b u t t o n r o u t i n e , c a l l e d b l i n e 4 3 i i t ' s p r e s s e d . I f i r s t f i g u r e s o u t h p o s i t i o n o t h c h a r a c t e r u n d e r n e a t h t h t r u c k c l a w , t h e n P E E K s s c r e e n m e o r t s e w h a t t h c h a r a c t e r i s I i t ' s p e r i o d ( t r a s h b i t ) ,a n i t h e t r u c k i n o c a r r y i n g t r a s h b i t , w P O K E d i r e c t l yi n t o t h s p r i t e s h a p e t p u d o i t h c l a w , t h e n P O K Es p a c e i n t o t h e p o s i t i o n w h e r e t h p e r i o d w a s . S e v e n i B A S I C 7 . 0 , y o s o m e t i m e s n e e d t u s P E E K a n P O K E . O n p o i n t i a d d e d t t h p l a y e r ' s s c o r e , w h i c h i r e d i s p l a y e d u s i n gt h s u b r o u t i n e a 7 2 0 .

I t h e c h a r a c t e r i a e m p t y t r a s h c a ( h o l l o w b a l l ) , a n i t h t r u c k i c a r r y i n g a p i e c e o t r a s h , w c h a n g e t h a t h o l l o wb a l l t s o l i d b a l l , i n c r e m e n t t h f i l l e d t r a s h c a c o u n t e r , a n a w a r d t e p o i n t s . I a l 1 t r a s h c a n s a r f u l l , w a w a r d 1 0 0 0p o i n t b o n u s a n i n c r e m e n t t h d i f f i c u l t y l e v e l , w i t h o u t l e t t i n gt h d i f f i c u l t y l e v e l e x c e e d 3 T h g a m e i r e s t a r t e d a l i n e 1 4 0 .

N o t i c e t h u s o B E G I N a n B E N D . B E G I N s t a r t s b l o c ko c o d e t h a t i e x e c u t e d o n l y i p r e c e d i n g I w a t r u e . B E N De n d s t h b l o c k . S B E G I N - B E N D l e t s y o e x t e n d t h s t a t em e n t a f t e r T H E N i n t o s e v e r a l l i n e s . p l a c e d c o l o n o t h e s e e x t e n d e d l i n e s t r e m i n d m y s e l f t h a t t h e y a r p a r t o f aB E G I N - B E N D b l o c k . .

L i n e s 5 8 0 - 7 0 0 . T h i s i t h c o l l i s i o n r o u t i n e , c a l l e d a u t om a t i c a l l y w h e n e v e r t h t r u c k i h i t . T h f u n c t i o n B U M P ( l )r e a d s t h s p r i t e - t o - s p r i t e c o l l i s i o n r e g i s t e r . T h c o l l i s i o n r o t i n e s h o u l d b c a l l e d o n l y w h e n t h s p r i t e s c o l l i d e , b u f o u n di w a e n t e r e d t w i c e f o e v e r y t i m e t h t r u c k w a h i t . T h c h e c k i l i n e 5 8 p r e v e n t s f a l s e c o l l i s i o n s . s t i l l d o n ' t k n o ww h t h i s i n e c e s s a r y .

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 124/228

C h a p t e r

F o t h c o l l i s i o n , w p r i n t s i l l y m e s s a g e , m a k e h i g h - I p i t c h e d s o u n d e f f e c t , m o v e t h t r u c k b a c k t t h b o t t o m o t h s c r e e n , r e m o v e a n t r a s h b i t h e t r u c k m a b c a r r y i n g , r e s e t i t h c o l l i s i o n w i t h A = B U M P ( 1 ) , t h e n d e c r e a s e t h e n u m b e r o t r u c k s . I t h e r e a r s t i l l t r u c k s r e m a i n i n g , w c o n t i n u e w i t h t h g a m e b R E T U R N i n g f r o m t h s p r i t e i n t e r r u p t .

F o t h " g a m e o v e r " r o u t i n e , w p l a y a n o t h e r t u n e , p r i n tt h G A M E O V E R m e s s a g e , a n w a i t f o t h f i r e b u t t o n t b p r e s s e d w h i l e w r e d r a w G A M E O V E R i n d i f f e r e n t c o l o r s .B e f o r e w c h e c k f o t h b u t t o n p r e s s , w f i r s t w a i t f o t h p l a y e r t l e g o t h b u t t o n i c a s e t h e p l a y e r w a p i c k i n gu o d r o p p i n g t r a s h b i t . O t h e r w i s e , t h g a m e w o u l d i s t a n t l y r e s t a r t .

L i n e s 7 2 0 - 1 1 1 0 . T h e s e a r s i m p l e s u b r o u t i n e s . L i n e 7 2 u p d a t e s t h s c o r e ; l i n e 7 3 u p d a t e s t h n u m b e r o r e m a i n i n gt r u c k s ; 7 4 s t o p s a l s p r i t e s ; 7 5 r e s t a r t s t h e m ; a n 7 6 0 - 7 8 0r e a d i t h j o y s t i c k d i s p l a c e m e n t s a n s p r i t e s h a p e s . T h r e s to t h p r o g r a m i m a d e u o D A T A s t a t e m e n t s f o t h c a r sa n t h t r u c k .T h d e s c r i p t i o n s a b o v e c a g i v e y o a i d e a o t h d e t a i lr e q u i r e d t p r o g r a m e v e n s i m p l e g a m e . T h i s i n o m e a n t t d i s c o u r a g e , b u t c h a l l e n g e .P r o g r a m 3 - 3 . L i t t e r P a t r o lF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B A 1 0 G R A P H I C 0 , 1 : C O L O R 0 , 1 2 : C O L O R 4 , 6 : G O S U B 7 6 0 : D

F = 1 : L V = 5 : R = R N D ( - T I ) : R = R N D ( 0 )K 1 1 F O R I = 1 T O 4 0 : S P $ = S P $ + " " : L N $ = L N $ + " - MH 1 2 B L $ = B L $ + C H R $ ( 2 1 0 ) : U L $ = U L $ + C H R § ( 1 8 3 ) : N E X TC 1 3 B L $ = C H R $ ( 1 4 6 ) + B L $ : U L $ = C H R $ ( 1 4 6 ) + U L $ : S P $ = C H R

$ ( 1 8 ) + S P $A 1 4 F O R I = 1 T O 8 : S P R I T E I , 0 : M O V S P R 1 , 0 , 0 : N E X TM 1 5 P R I N T C H R $ ( 1 4 7 ) ; : C O L O R 5 , 6 : P R I N T S P $H 1 6 T L = 3 8 : C O L O R 5 , 7 : P R I N T L E F T $ ( S P $ , 4 0 ) ; : C O L O R

, 6 : P R I N T " " S P $J 1 7 P R I N T : P R I N T : C O L O R 5 , 1 6 : P R I N T L N $ : P R I N T : P R I N

R B 1 8 0 C O L O R 5 , 6 : P R I N T S P $ S P $ : P R I N T : P R I N T : C O L O R 5 1 6 : P R I N T L N $ : P R I N T : P R I N TJ 1 9 C O L O R 5 , 6 : P R I N T S P $ S P $ : P R I N T : P R I N T : C O L O R 5

8 : P R I N T B L $ ; U L $ : P R I N T : P R I N TA 2 0 C O L O R 5 , 6 : P R I N T S P $ L E F T $ ( S P $ , 4 0 ) C H R $ ( 1 5 7 ) C H R$ ( 1 4 8 ) C H R $ ( 3 2 ) ;C 2 1 C O L O R 5 , 1 4 : C H A R 1 , 1 2 , 0 , " L I T T E R P A T R O L " , 1 :

G O S U B 7 2 0 : G O S U B 7 3 0

1 1 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 125/228

_ G a m e s

F 2 2 C O L O R 5 , 6 : F O R Y = 2 T O 2 S T E PE 2 3 F O X = T 3 S T E P 1 2 : C H A R 1 , X , Y , C H R $ ( 2 1 5 ) ,1 : N E X T : N E X T

S C 2 4 0 M $ = " V 1 0 T I E G G E G G E G G , # D F F D F F D F FQ E P Q 2 5 0 M $ = M $ + " I E G G E G G E G G . A A F G G E F F D . C R R R

M 2 6 S P R C O L O R 2 , B 2 7 R E S T O R E 1 1 1 0 : F O R I = 2 T O 7 : R E A D S Y , S N : S P R S A V S $ ( S N ) , I

C 2 8 M O V S P R I , 0 , 5 6 + S Y * 8F 2 9 S P R I T E I , 1 , 1 + 1 , 0 , 0 , 0 , 1X 3 0 A N G % ( I ) = 9 0 - 1 8 0 * ( S N = 2 ) : S P D % ( I ) = 5 * R N D ( 1 ) + D FM 3 1 M O V S P R I , A N G % ( I ) # S P D % ( I )R 3 2 N E X TQ 3 3 X P = 1 0 2 : Y P = 2 3 7 : M O V S P R 1 , X P , Y PD 3 4 S P R I T E 1 , 1 , 1 1 , 0 , 0 , 0 , 1 : S P R S A V S S $ ( 0 ) , 1S S 3 5 0 C O L L I S I O N 1 , 5 8 0G 3 6 I D F = 1 T H E N P L A Y M $ : S O U N D 1 , 0 , 0K 3 7 I F T I - T > 1 2 0 T H E N C O L O R 5 , 6 : C H A R 1 , T L , 1 , C H R $ ( 3 2

) , 1 : T = T I : T L = T L - 1 : I F T L < 0 T H E N 6 4 0K 3 8 0 G E T A $ : I F A $ < > " " T H E N G O S U B 7 4 0 : G E T K E Y A $ : G OS U B 7 5 0K 3 9 I R N D ( 1 ) < . 9 5 T H E N 4 2 0R 4 0 S % = 2 + 6 * R N D ( 1 ) : X = R S P P O S ( S % , 0 ) : Y = R S P P O S ( S % , 1 )D 4 1 I X > 3 1 A N X < 3 3 6 T H E N C O L O R 5 , 2 : C H A R 1 , ( X -

2 4 ) / 8 , ( Y - 5 0 ) / 8 + l , " . "S 4 2 J = J O Y ( 2 ) : I F J = T H E N 3 7 0E 4 3 I A N 1 2 T H E N 4 8 P C 4 4 0 X P = X P + D X ( J ) : I F X P < 2 4 O R X P > 3 4 3 T H E N X P = X P - D

X ( J )F 4 5 Y P = Y P + D Y ( J ) : I Y P < 6 1 O Y P > 2 3 7 T H E N Y P = Y P - D

Y ( J )P 4 6 M O V S P R 1 , X P , Y PJ 4 7 G O T O 3 7 C 4 8 X % = ( X P - 2 4 ) / 8 + l : Y % = ( Y P - 5 0 ) / 8 : S P = 1 0 2 4 + X % + 4 0 * Y

% : C = P E E K ( S P )B C 4 9 0 I C = 4 6 A N H T = 0 T H E N B E G I N : P O K E 3 5 8 4 , 6 5 : P On K E S P , 3 2 : H T = lJ 5 0 : S O U N D 1 , 7 0 0 , 2 0 , 0 , 6 0 0 , 1 0 , 3 : S C = S C + 1 : G O S U B 7 2 d

B E N Dn F 5 1 I H A N C = 2 1 5 T H E N B E G I N : P O K E S P , 2 0 9 : P O K E3 5 8 4 , 6 4 : S O U N D 1 , 5 0 0 0 , 5 , , , , 3

D 5 2 : H T = 0 : F = F + l : S C = S C + 1 0 : G O S U B 7 2 0 : F L = F L + l : I F F < 1 T H E N 3 7 n K 5 3 : G O S U B 7 4 0 : F O R I = 0 T O 6 3

M 5 4 : C O L O R 5 , ( I A N D 1 5 ) + l : C H A R 1 , 4 , 1 2 , " B O N U S 1 0 0 0P O I N T S F O R C O M P L E T I O N " , !

J 5 5 : : N E X T : S C = S C + 1 0 0 0 : D F = D F - ( D F < 3 ) : F L = 0 : G O T O 1 4 0P 5 6 B E N D

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 126/228

C h a p t e r

D 5 7 G O T O 3 7 0X 5 8 I B U M P ( 1 ) = 0 T H E N R E T U R NP 5 9 C O L O R 5 , 9 : C H A R 1 , 1 2 , 0 , " O H 1 Y O W E E O U C H 1 M , 1H 6 0 F O R I = 1 T O 1 1 : S P R I T E 1 , 1 , 1 : S O U N D 1 , 2 0 0 0 + R N D ( 1 ) *1 0 0 0 , 1 , , , , 3 : N E X T { R 6 1 C O L O R 5 , 1 4 : C H A R 1 , 1 2 , 0 , " L I T T E R P A T R O L " , A Q 6 2 0 X P = 1 0 2 : Y P = 2 3 7 : M O V S P R 1 , X P , Y P : P O K E 3 5 8 4 , 6 4 : H I T = 0 : A = B U M P ( 1 )S 6 3 L V = L V - 1 : G O S U B 7 3 0 : I F L T H E N R E T U R NQ 6 4 C O L L I S I O N 1 : P L A Y " T 0 0 2 I C C E E G R B R A

D R " : S O U N D 1 , 0 , 0G H 6 5 0 C O L O R 5 , 1 6 : C H A R 1 , 7 , 1 2 , " G A M E O V E R P R E S S{ S P A C E } T R I G G E R " , 1 : C = 0H 6 6 I J O Y ( 1 ) = 1 2 8 T H E N 6 6 0B B 6 7 0 I J O Y ( 2 ) = 1 2 8 T H E N 6 9 0E 6 8 C O L O R 5 , C + 1 : C H A R 1 , 7 , 1 2 , " G A M E O V E R " , 1 : C = ( C +

1 ) A N D 1 5 : G O T O 6 7 0D 6 9 F O R I = 1 T O 8 : S P R I T E I , 0 : M O V S P R 1 , 0 , 0 : N E X TA 7 0 R U F 7 2 C O L O R 5 , 1 5 : C H A R 1 , 0 , 0 , " S C O R E : " + M I D $ ( S T R $ ( S C

) , 2 ) , 1 : R E T U R NA 7 3 C O L O R 5 , 4 : C H A R 1 , 3 0 , 0 , " T R U C K S : " + S T R $ ( L V ) , 1 :R E T U R NB 7 4 F 0 R Q Q = 2 T 0 7 : M O V S P R Q Q , 9 0 # 0 : N E X T : R E T U R NM 7 5 F O I = 2 T O 7 : M O V S P R I , A N G % ( I ) # S P D % ( I ) : N E X T : R E

T U R ND 7 6 F O 1 = 0 T 0 8 : R E A D D X ( I ) , D Y ( I ) : N E X TC 7 7 F O 1 = T 2 : F O R J = T 6 7 : R E A D A $ : S S $ ( I ) = S

S $ ( I ) + C H R $ ( D E C ( A $ ) ) : N E X T : N E X TR 7 8 R E T U R NX 7 9 D A T A 0 , 0 , 0 , - 8 , 8 , - 8 , 8 , 0 , 8 , 8 , 0 , 8 , - 8 , 8 , - 8 , 0 , - 8

, - C M 8 1 0 D A T A 4 0 , 1 0 , 0 0 , 4 0 , 1 0 , 0 0 , 4 0 , 1 0 , 0 0 , 1 5 , 4 0 , 0 0 , 0 5

, 0 0 , 0 0 , 0 5J 8 2 D A T A 0 0 , 0 0 , 2 A , 8 0 , 0 0 , E A , B 0 , 0 0 , E A , B 0 , 0 0 , 2 A , 8 0

, 0 0 , 2 A , 8 0K 8 3 D A T A 0 0 , E A , B 0 , 0 0 , E A , B 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0

, 0 0 , 0 0 , 0 0B 8 4 0 D A T A 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0, 0 0 , 0 0 , 1 7Q 8 5 D A T A 0 0 , 1 4 , 0 0Q 9 0 R E C A F A C I N G L E F TR M 9 1 0 D A T A 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0, 0 0 , 0 0 , 0 0 L — F F 9 2 0 D A T A 0 0 , 0 0 , 0 F , 0 0 , 3 C , A B , 9 6 , A 9 , 2 B , A A , 6 A , 3 A , 7 D

, 6 A , 2 A , 7 DB 9 3 D A T A 6 A , 3 A , 7 D , 6 A , 2 B , A A , 6 A , A B , 9 6 , A 9 , 0 F , 0 0 , 3 C, 0 0 , 0 0 , 0 0

M 9 4 D A T A 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0, 0 0 , 0 0 , 1 7

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 127/228

G a m e s

A 9 5 D A T A 0 0 , 1 4 , 0 0G 1 0 0 0 R E M C A R F A C I N G R I G H Tn K 1 0 1 0 D A T A 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0

0 , 0 0 , 0 0B 1 0 2 0 D A T A 0 0 , 0 0 , 0 0 , 3 C , 0 0 , F 0 , 6 A , 9 6 , B A , 6 9 , A A , E 8 , A

9 , 7 D , A Cn X 1 0 3 0 D A T A A 9 , 7 D , A 8 , A 9 , 7 D , A C , 6 9 , A A , E 8 , 6 A , 9 6 , B A , 3C , 0 0 , F 0

Q 1 0 4 0 D A T A 0 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 , 0 0 ,0 0 , 0 0 , 0 0

S 1 0 5 0 D A T A 0 0 , 0 0 , 0 0 , 1 7 , 0 0 , 1 4 , 0 0G 1 1 0 0 R E M P O S I T I O N A N D I R E C T I O N O E A C H C A P 1 1 1 0 D A T A 2 , 1 , 5 , 1 , 9 , 2 , 1 2 , 2 , 1 6 , 1 , 2 0 , 2

1 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 128/228

W o r d S e a r c hM i c h a e l B W i l l i a m s , 7 2 V e r s i o n b P a t r i c k P a r r i s h

' W o r d S e a r c h " i c o m p u t e r i z e d p u z z l e - m a k e r t h a t c a p r o v i d eh o u r s o c h a l l e n g i n g f u n . p r i n t e r i r e q u i r e d . I

Y o u ' r e p r o b a b l y f a m i l i a r w i t h w o r d s e a r c h p u z z l e s : C e r t a i nw o r d s a r h i d d e n i r e c t a n g l e o n o n s e n s e l e t t e r s , a n i t ' sy o u r j o t h u n t t h e m d o w n . " W o r d S e a r c h " l e t s y o c r e a t es u c h p u z z l e s o y o u r c o m p u t e r ' s p r i n t e r w i t h w o r d s o y o u ro w c h o i c e . S i n c e y o d e s i g n t h e p u z z l e , y o c a m a k e i a e a s y o a d i f f i c u l t a y o w a n t , u s i n g u t 1 0 d i f f e r e n tw o r d s . T o p i c a l p u z z l e s m a k e t h g a m e e v e n m o r e i n t e r e s t i n g .F o e x a m p l e , y o m i g h t i n c l u d e o n l y c o m p u t e r w o r d s , t h n a m e s o f o r e i g n c i t i e s , o s t u m p e r s l i k e u x o r i o u s a n b o u g a i nv i l l a e a . P a r e n t s a n t e a c h e r s c a m a k e p u z z l e s f o c h i l d r e nu s i n g w e e k l y v o c a b u l a r y l i s t s .

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

W o r d S e a r c h b e g i n s b a s k i n g y o f o t h n u m b e r o w o r d s t b h i d d e n . W h e n y o u ' v e a n s w e r e d t h a t q u e s t i o n , t h c o m p u t e r a s k s y o t c h o o s e t h n u m b e r o r o w s a n c o l u m n sf o t h p u z z l e g r i d . S i n c e t h e g r i d m u s t b b i e n o u g h t h i d ea l t h w o r d s , t h c o m p u t e r t e l l s y o w h e n y o u ' v e m a d e t h g r i d t o s m a l l a n l e t s y o t r a g a i n .

N e x t , W o r d S e a r c h l e t s y o e n t e r t h w o r d s o n b o n e .T h e r e ' s n p a r t i c u l a r l i m i t o w o r d l e n g t h , b u k e e p i m i n dt h a t t h w o r d s m u s t f i i n s i d e t h g r i d . ( F o r e x a m p l e , y o c a n ' tf i 1 2 - l e t t e r w o r d i g r i d . ) S i n c e l o n g e r w o r d s a r h a r d e r t f i i n t o t h g r i d , t h c o m p u t e r s o r t s t h w o r d s b l e n g t h ( f r o m l o n g e s t t o s h o r t e s t ) s i c a p l a c e t h l o n g e s tw o r d s f i r s t . W h e n m a n y w o r d s a r i n v o l v e d , t h i s c a t a k ef e m i n u t e s , s o b p a t i e n t .O n c e t h w o r d s a r s o r t e d , y o u ' r e a l l o w e d t n a m e t h p u z z l e . Y o a l s o h a v e t h o p t i o n o p r i n t i n g t h s o l u t i o n t t h p u z z l e ( p a r e n t s a n t e a c h e r s m i g h t w a n t t s e p a r a t e t h es o l u t i o n f r o m t h p u z z l e u n t i l t h p u z z l e h a b e e n t r i e d ) . A f t e rp r i n t i n g o n p u z z l e , y o c a c r e a t e a n o t h e r , u s i n g t h s a m ew o r d l i s t ( t h e w o r d s w i l l b r e a r r a n g e d ) o e n t i r e l y n e 1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 129/228

G a m e s

w o r d s . W o r d S e a r c h i d e s i g n e d t p e r m i t m a x i m u m o 1 0 w o r d s i 9 9 g r i d . H o w e v e r , p u z z l e s o t h a t s i z e c a r — t a k e a l o n g t i m e t c r e a t e — o v e r a n h o u r i s o m e c a s e s . I a d

! d i t i o n , m a n y p r i n t e r s c a n ' t p r i n t m o r e t h a n 8 0 c o l u m n s u n l e s sy o f i r s t s e n d t h p r i n t e r s p e c i a l e s c a p e c o d e f o c o n d e n s e d

r — - I t y p e ( s e e y o u r p r i n t e r m a n u a l ) .P r o g r a m 3 - 4 . W o r d S e a r c hF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B Q 9 M C = 9 9D 1 0 D I F F $ ( 1 0 0 ) , S $ ( 9 9 ) , W $ ( 1 0 0 ) , C C ( 1 0 0 ) , R R ( 1 0 0 ), L ( 1 0 0 ) , E $ ( 2 , 2 )E 1 1 F O I = - l T B 1 2 F O J = - l T OS 1 3 R E A D E $ ( I + 1 , J + 1 )J 1 4 N E X TQ 1 5 N E X TA 1 6 D A T A " N W " , " N " , " N E " , " W M , " i 2 S P A C E S } " , " E "

" S W " , " S " , " S E "B 1 7 F O 1 = T O M CR 1 8 G $ = G $ + "R 1 9 N E X TD 2 0 F O 1 = T B K 2 1 0 R E A D D ( 1 , I ) , D ( 2 , I )Q 2 2 N E X TS 2 3 D A T A - 1 , - 1 , - 1 , 0 , - 1 , 1 , 0 , - 1H 2 4 D A T A 0 , 1 , 1 , - 1 , 1 , 0 , 1 , 1Q 2 5 G O T O 1 2 2 0P 2 6 R E S H E L L S O R TK 2 7 P R I N T " S O R T I N G , . . "H 2 8 0 X = lA 2 9 X = 2 * XQ 3 0 I X < = W 0 T H E N 2 9 J 3 1 X = I N T ( X / 2 )H 3 2 I X < > 0 T H E N 3 4 D 3 3 R E T U R NQ 3 4 F O Y = l T O W 0 - XR 3 5 Z = X 3 6 A = Z + X 'G 3 7 I L ( Z ) > = L ( A ) T H E N 4 6 B H 3 8 0 X $ = W $ ( Z )Q S 3 9 0 W $ ( Z ) = W $ ( A )P S 4 0 0 W $ ( A ) = X $G B 4 1 0 B = L ( Z )J Q 4 2 0 L ( Z ) = L ( A )E 4 3 L ( A ) = BX 4 4 0 Z = Z - XB 4 5 I Z > T H E N 3 6

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 130/228

C h a p t e r

R 4 6 N E X T YS 4 7 G O T O 3 1 Q 4 8 R E H I D E W O R D SD 4 9 F O X = T W J 5 0 F O Y = T 5 H G 5 1 0 R 1 = I N T ( R N D ( 1 ) * R 0 )J 5 2 C 1 = I N T ( R N D ( 1 ) * C 0 )K 5 3 D 1 = I N T ( R N D ( 1 ) * 8 ) + 1G 5 4 0 O 1 = D 1A 5 5 D X = D ( 1 , D 1 )M 5 6 D Y = D ( 2 , D 1 )G 5 7 I R 1 + D X * L ( X ) < 1 O R 1 + D X * L ( X ) > R 0 O C 1 + D Y * L

( X ) < 1 T H E N 5 9 M 5 8 I C 1 + D Y * L ( X ) < = C 0 T H E N 6 3 P 5 9 D 1 = D 1 * ( D 1 < 8 ) * ( 1 = 1 ) + 1X 6 0 I D 1 O 0 1 T H E N 5 5 C 6 1 N E X TB M 6 2 0 G O T O 8 0 F 6 3 F O Z = T L ( X )E 6 4 I M I D $ ( W $ ( X ) , Z , 1 ) < " A " O M I D $ ( W $ ( X ) , Z , 1 ) > "

Z T H E N 6 8 R 6 5 R 1 = R 1 + D XC 6 6 C 1 = C 1 + D YC 6 7 I M I D $ ( S $ ( R 1 ) , C 1 , 1 ) < > " A N M I D $ ( S $ ( R l ) , C

1 , 1 ) < > M I D $ ( W $ ( X ) , Z , 1 ) T H E N 5 9 G 6 8 N E X TQ G 6 9 0 F O Z = L ( X ) T S T E P - A 7 0 0 I F M I D $ ( W $ ( X ) , Z , 1 ) < " A " O M I D $ ( W $ ( X ) , Z , 1 ) > "

Z T H E N 7 7 F D 7 1 0 S $ ( R 1 ) = M I D $ ( S $ ( R 1 ) , 1 , C 1 - 1 ) + M I D $ ( W $ ( X ) , Z , 1 ) +

M I D $ ( S $ ( R 1 ) , C 1 + 1 )D 7 2 R R ( X ) = R 1B X 7 3 0 C C ( X ) = C 1X 7 4 F F $ ( X ) = E $ ( D X + 1 , D Y + 1 )G 7 5 R 1 = R 1 - D XE 7 6 C 1 = C 1 - D YK 7 7 N E X TR 7 8 N E X T XJ 7 9 G O T O 8 9 Q 8 0 G O S U B 1 2 G 8 1 0 P R I N T " S O R R Y , B U C A N ' T F I W O R D N U M B E R I

; S T R $ ( X ) ; " " ; W $ ( X ) ; C I " D 8 2 P R I N T " I N T O T H E G R I D . S H O U L D S K I P I T S T

R O V E R , O T R A G A I N "P 8 3 I N P U T X B 8 4 I M I D $ ( X $ , 1 , 2 ) = " S T " T H E N 1 6 6 0S 8 5 I M I D $ ( X $ , 1 , 2 ) = " T R " T H E N 5 0 I J 8 6 I M I D $ ( X $ , 1 , 2 ) < > " S K " T H E N 8 3 A 8 7 W $ ( X ) = " / "B B 8 8 0 G O T O 7 8

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 131/228

G a m e s

R 8 9 0 F O R X = T R G 9 0 F O Y = T C K 9 1 I M I D $ ( S $ ( X ) , Y , 1 ) < > " T H E N 9 3 C 9 2 S $ ( X ) = M I D $ ( S $ ( X ) , 1 , Y - 1 ) + C H R $ ( I N T ( 2 6 * R N D ( 1 ) +

6 5 ) ) + M I D $ ( S $ ( X ) , Y + l )J 9 3 N E X TE J 9 4 0 N E X TX 9 5 0 R E M D O N EK 9 6 P R I N TJ 9 7 P R I N T " A F I N I S H E D . W H A T D O Y O U W A N T T O

A L T H W O R D S E A R C H "E X 9 8 0 I N P U T T F 9 9 0 S L = 0J 1 0 0 0 P R I N TX 1 0 1 0 P R I N T " D Y O U W A N T T P R I N T T H S O L U T I O N

Y / N ) "R G 1 0 2 0 G O S U B 1 1 8 0B 1 0 3 0 I A $ = " N " T H E N 1 0 5 0P K 1 0 4 0 S L = 1D C 1 0 5 0 G O S U B 2 0 0 0P 1 0 6 0 G O S U B 1 7 2 0M E 1 0 7 0 F = P 1 0 8 0 P R I N T " D Y O W A N T A N O T H E R G R I D ( Y / N ) "G 1 0 9 0 G O S U B 1 1 8 0H 1 1 0 0 I A $ = " Y " T H E N 1 1 2 0S 1 1 1 0 E N K 1 1 2 0 P R I N TF M 1 1 3 0 P R I N T " D Y O U W A N T T O U S E T H E S A M E W O R D S

Y / N ) "R 1 1 4 0 G O S U B 1 1 8 0P 1 1 5 0 I A $ = " N " T H E N 1 2 8 0M 1 1 6 0 F = J 1 1 7 0 G O T O 1 3 4 0X 1 1 8 0 I N P U T A J 1 1 9 0 I A ? < > " Y " A N A $ o " N " T H E N 1 1 8 0P P 1 2 0 0 R E T U R NH 1 2 1 0 R E M I N I T I A L I Z A T I O NA C 1 2 2 0 G O S U B 1 7 2 0G 1 2 3 0 L L = 6G 1 2 4 0 G O S U B 1 7 4 0H P 1 2 5 0 P R I N T " { S P A C E S j W O R D S E A R C H "X 1 2 6 0 L L = 4K 1 2 7 0 G O S U B 1 7 4 0E 1 2 8 0 F O 1 = T W F 1 2 9 0 W $ ( I ) = " "D 1 3 0 0 L ( I ) = 0E 1 3 1 0 N E X TR 1 3 2 0 P R I N T T A B ( 5 ) ; " H O W M A N Y W O R D S W O U L D Y O U " : P R

I N T A B ( 5 ) ; " L I K E I Y O U R W O R D S E A R C H "C 1 3 3 0 I N P U T W

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 132/228

C h a p t e r

Q 1 3 4 0J 1 3 5 0S 1 3 6 0H C 1 3 7 0A 1 3 8 0G 1 3 9 0E 1 4 0 0R F 1 4 1 0M 1 4 2 0P 1 4 3 0Q 1 4 4 0S 1 4 5 0K 1 4 6 0J 1 4 7 0S 1 4 8 0C 1 4 9 0P 1 5 0 0B M 1 5 1 0P C 1 5 2 0J 1 5 3 0Q 1 5 4 0M 1 5 5 0F 1 5 6 0E 1 5 7 0E H 1 5 8 0D 1 5 9 0C H 1 6 0 0H 1 6 1 0X 1 6 2 0C 1 6 3 0H X 1 6 4 0C 1 6 5 0K E 1 6 6 0M D 1 6 7 0S F 1 6 8 0X 1 6 9 0D 1 7 0 0K 1 7 1 0P 1 7 2 0C 1 7 3 0P 1 7 4 0A M 1 7 5 0R 1 7 6 0X 1 7 7 0D 1 9 9 9M C 2 0 0 0

1 2

P R I N TP R I N T " H O W M A N Y R O W S A N C O L U M N S I N T H E G I D I N P U T R 0 , C 0P R I N TP R I N TI R 0 * C 0 > = 1 0 * W 0 T H E N 1 4 4 0P R I N T " D O N ' T T H I N K C O U L D D T H I S . "F O 1 = T O 1 0 0 0N E X TG O T O 1 3 4 0P R I N T " T H I N K C A D T H I S . "I C 0 < = M C T H E N 1 4 7 0P R I N T " ( B U T I W O N ' T F I T O N T H E P A P E R . ) "I F = T H E N 1 6 6 0L L = 3G O S U B 1 7 4 0P R I N T " E N T E R T H E " ; S T R $ ( W 0 ) ; " W O R D S . " : P R I NT " T O C O R R E C T M I S T A K E , E N T E R X P R I N TF O 1 = T W P R I N T " W O R D N U M B E R " ; I ; " : "I N P U T X I L E N ( X $ ) < = R 0 A N D L E N ( X $ ) < = C 0 A N D X $ < > " X "

T H E N 1 6 1 0I X $ < > " X " T H E N 1 5 9 0G O T O 1 5 3 0P R I N T " O O P S . . . T H E W O R D I T O L O N G . "G O T O 1 5 3 0W $ ( I ) = X $L ( I ) = L E N ( X $ )N E X TG O S U B 1 7 2 0G O S U B 2 7 P R I N TP R I N T " O K A Y , W I L L G O T O W O R K ( W I S H M E L C K F O 1 = T R S $ ( I ) = L E F T $ ( G $ , C 0 )N E X TG O T O 4 9 P R I N T C H R $ ( 1 4 7 )R E T U R NF O 1 = T O L LP R I N TN E X TR E T U R NR E P R I N T E R R O U T I N EO P E N 3 , 4 : P R I N T # 3 , T $ : P R I N T # 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 133/228

Q

E M S

K Q S X

C B P E X J M

B C X

2 0 1 0

2 0 2 02 0 3 02 0 4 02 0 5 02 0 6 02 0 7 02 0 8 0

2 0 9 02 1 0 02 1 1 02 1 2 02 1 3 02 1 4 02 1 5 0

2 1 6 02 1 7 02 1 8 0

G a m e s

P R I N T # 3 , " 1 4 S P A C E S } " ; : F O R I = 1 T O C 0 : I F I / 1 0 < > IN T ( I / 1 0 ) T H E N P R I N T # 3 , " " ; : G O T O 2 0 3 0P R I N T # 3 , M I D $ ( S T R $ ( I ) , 2 , 1 ) ;N E X T I : P R I N T # 3P R I N T # 3 , " { 4 S P A C E S } " ; : F O R I = 1 T O C 0 : P R I N T # 3 , RI G H T $ ( S T R $ ( I ) , 1 ) ; : N E X T I : P R I N T #F O R X = 1 T O R 0 : I F X < 1 0 T H E N P R I N T # 3 , " " P R I N T # 3 , S T R $ ( X ) " " F O R Y = 1 T O C 0 : P R I N T # 3 , M I D $ ( S $ ( X ) , Y , 1 ) ;N E X T Y : P R I N T # 3 : N E X T X : P R I N T # 3 : P R I N T # 3 : P R I N T #3 , " W O R D L I S T : "F O R X = 1 T O W 0 : I F W $ ( X ) = " / " T H E N 2 1 1 0P R I N T # 3 , W $ ( X )N E X T X : F O R I = 1 T O 5 : P R I N T # 3 : N E X T I : I F S L = 0 T H E N 2 18 P R I N T # 3 , " S O L U T I O N L I S T : " : P R I N T # 3 # " W O R D{ 2 S P A C E S } R O W { 3 S P A C E S } C O L U M N " ;P R I N T # 3 , " 1 3 S P A C E S } D I R "F O R X = 1 T O W 0 : I F W $ ( X ) = " / " T H E N 2 1 7 0P R I N T # 3 # W $ ( X ) ; L E F T $ ( G $ # 2 5 - L E N ( W $ ( X ) ) ) ; R R ( X) ; L E F T $ ( G $ , 8 - L E N ( S T R $ ( R R ( X ) ) ) ) ;P R I N T # 3 # C C ( X ) ; L E F T $ ( G $ , 6 - L E N ( S T R $ ( C C ( X ) ) ) ); F F $ ( X )N E X T XC L O S E 3 R E T U R N

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 134/228

S w i t c h b o T o d d H e i m a r c k

I l o o k s e a s y , b u t a k e s t i m e t m a s t e r . " S w i t c h b o x " i c h a l l e n gi n s t r a t e g y g a m e t h a t ' s f u t w a t c h a n p l a y .

L

P l a y i n g " S w i t c h b o x " i l i k e p u t t i n g d o m i n o s i p l a c e f o c h a i n r e a c t i o n — e i t h e r y o u ' r e s e t t i n g t h e m i p o s i t i o n o ry o u ' r e k n o c k i n g t h e m o v e r . W i n n i n g r e q u i r e s s k i l l a n s e n s eo w h e n t g f o p o i n t s a n w h e n t l a b a c k a n w a i t f o b e t t e r b o a r d . T h g o a l i s i m p l e : Y o t r y t o s c o r e m o r e p o i n t st h a n y o u r o p p o n e n t b d r o p p i n g b a l l s i n t o b o x f u l o t w o -w a s w i t c h e s . E a c h s w i t c h h a t r i g g e r a n p l a t f o r m . I t h b a l l l a n d s o a e m p t y p l a t f o r m , i s t o p s d e a d . B u i i h i t st r i g g e r , i r e v e r s e s t h s w i t c h a n c o n t i n u e s . I n m a n y c a s e sd r o p p i n g s i n g l e b a l l c r e a t e s c a s c a d i n g e f f e c t — o n e b a l l s e t sa n o t h e r i m o t i o n , w h i c h s e t s o t h e r s i m o t i o n , a n s o o n , a l t h w a d o w n .

T y p e i P r o g r a m 3 - u s i n g " T h e A u t o m a t i c P r o o f r e a d e r "a n s a v e c o p y b e f o r e y o r u i t

B o o S w i t c h e sS w i t c h b o x i t a l e o t w o s : E a c h s w i t c h h a t w p a r t s , t w p o s i t i o n s , t w s t a t e s , t w p a t h s i n a n t w p a t h s o u t . T h t w p a r t s a r e t h p l a t f o r m a n t h t r i g g e r . s w i t c h c a l e a nt t h l e f t ( p l a t f o r m l e f t , t r i g g e r r i g h t ) o t t h r i g h t ( p l a t f o r mr i g h t , t r i g g e r l e f t ) .

F i g u r e 3 - 1 . T r i g g e r S t a t e sB e f o r e :

L e f t s w i t c hA f t e r :

R i g h t s w i t c h

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 135/228

G a m e s

T h t r i g g e r i w e a k a n a l w a y s a l l o w s b a l l s t p a s s . B u t h p l a t f o r m i s t r o n g e n o u g h t h o l d s i n g l e b a l l . S t h p l a t f o r m e i t h e r h o l d s a b a l l — i t ' s f u l l — o r i d o e s n o a n i e m p t y . W h e n b a l l s i t s o a p l a t f o r m , t h s w i t c h i s a i d t b l o a d e d , o f u l l .F i g u r e 3 - 2 . L o a d e d T r i g g e r

L e f tp a t h

i

R i g h tp a t h

i

F i g u r e 3 - s h o w s f u l l s w i t c h o v e r t w e m p t y s w i t c h e s .T h p l a t f o r m h o l d s b a l l a n l e a n s t t h l e f t . T h t r i g g e r e t e n d s t t h r i g h t . N o t e t h a t t h s w i t c h o t o h a t w p a t hw a y s l e a d i n g i n t h l e f t p a t h a n t h r i g h t , a n t h a t t h r i g h tp a t h l e a d i n g o u i t h l e f t p a t h i n t o o n o t h s w i t c h e s b l o w . T h l e f t p a t h o t h t o s w i t c h l e a d s i n t o t h r i g h t p a t ho t h o t h e r , t h s w i t c h b e l o w a n t t h l e f t . I f y o d r o pb a l l d o w n t h r i g h t - h a n d p a t h , i h i t s t h t r i g g e r a n f l i p s t h a ts w i t c h t t h r i g h t . T h e n i c o n t i n u e s d o w n , h i t s t h l e f t - h a n dt r i g g e r b e l o w , a n f l i p s t h a t s w i t c h a w e l l .

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

l e v e l t t h p l a t f o r m b e l o w , w h e r e i s t o p s . T h p l a y i n g f i e l di c o m p o s e d o f i v e l e v e l s , w i t h f o u r s w i t c h e s i t h f i r s t l e v e la n e i g h t i t h b o t t o m l e v e l . A t h b e g i n n i n g o t h g a m e ,t h e r e a r n b a l l s o t h e f i e l d — a l l p l a t f o r m s a r e m p t y — a n dt h p o s i t i o n o f e a c h s w i t c h i c h o s e n r a n d o m l y .

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 136/228

L C h a p t e r

M o v i n g D o w n t h P a t h ' — P l a y e r s a l t e r n a t e d r o p p i n g b a l l s i n t o o n o e i g h t e n t r y p o i n t s .T h e s e b a l l s ( a n d o t h e r s ) m a o m a n o m a k e i a l t h w a j t h r o u g h t h s w i t c h b o x t o n o t h 1 e x i t p a t h s . B a l l s f a l ls t r a i g h t d o w n ( w i t h o n e x c e p t i o n ) , s b a l l ' s m o v e m e n t i a w a y s p r e d i c t a b l e . W h e n b a l l h i t s a e m p t y s w i t c h , o n o t w t h i n g s c a h a p p e n . I i l a n d s o t h e m p t y p l a t f o r m , i s t o p s d e a d i i t t r a c k s . B u i i l a n d s o t r i g g e r , i f a l l st h r o u g h t t h n e x t l e v e l b e l o w .

M o v i n g b a l l s a l w a y s m a k e i t h r o u g h l o a d e d s w i t c h e s .T r i g g e r s a l l o w b a l l s t o c o n t i n u e a n m o v e t h s w i t c h t t h o t h e r p o s i t i o n . I i t ' s l o a d e d , t h e d e a d b a l l o t h p l a t f o r m i p u i n t o m o t i o n a n i h i t s t h t r i g g e r t h a t j u s t m o v e d o v e r .T h i s m a k e s t h s w i t c h g b a c k t i t o r i g i n a l p o s i t i o n , b u w i t h a e m p t y p l a t f o r m . S w h e n b a l l h i t s t h t r i g g e r o f l o a d e d s w i t c h , i t m o t i o n c o n t i n u e s u n a b a t e d . T h s w i t c hm o v e s , t h b a l l o t h p l a t f o r m b e g i n s t f a l l , a n i h i t s t h n e w l y p l a c e d t r i g g e r . T h e n e w l y e m p t i e d s w i t c h m o v e s b a c ka g a i n , a n t h t w b a l l s d r o p t t h n e x t l e v e l .

T h e r e ' s o n m o r e p o s s i b i l i t y : b a l l d r o p p i n g o n t o p l a tf o r m t h a t a l r e a d y h o l d s b a l l . p l a t f o r m c a n ' t h o l d m o r et h a n o n b a l l , s w h e n t h i s h a p p e n s , o n o t h b a l l s s l i d e so v e r t t h t r i g g e r . S t h b a l l d o e s n o m o v e s t r a i g h t d o w n —i s l i d e s o v e r t t h e n e x t p a t h w a y . T h i s i t h e e x c e p t i o n t t h r u l e t h a t b a l l s d r o p i s t r a i g h t l i n e . O c o u r s e , w h e n t h b a l lh i t s t h t r i g g e r , t h s w i t c h c h a n g e s p o s i t i o n , c a u s i n g t h o t h e rb a l l t d r o p a n h i t h t r i g g e r .

T h C h a i n R e a c t i o nA t h g a m e ' s s t a r t , a l p l a t f o r m s a r e m p t y , s o f o u r o e i g h te n t r y p a t h s a r b l o c k e d . R e m e m b e r t h a t y o u r t u r n e n d s w h e n

b a l l h i t s a e m p t y p l a t f o r m a n s t o p s . A t h s w i t c h e s f i l lu p , t h e c h a n c e s i n c r e a s e t h a t b a l l w i l l d e s c e n d t h r o u g h s e v -e r a l l e v e l s . T h g o a l i t s c o r e p o i n t s b g e t t i n g b a l l s t p a s sa l t h w a t h r o u g h t h m a z e o t h e s w i t c h b o x . T h b e s t w a j t o c o l l e c t l o o p o i n t s i t c a u s e c h a i n r e a c t i o n .

b a l l t h a t h i t s l o a d e d s w i t c h f r o m e i t h e r s i d e c o n t i n u e so i t w a y . A n t h p r e v i o u s l y i n e r t b a l l o t h p l a t f o r m s t a r t sm o v i n g . O n e n t e r s , t w e x i t . I b o t h o t h o s e b a l l s e n c o u n t e rf u l l p l a t f o r m s , f o u r d r o p f r o m t h s w i t c h e s . T h p a t h w a y s a r s t a g g e r e d , s o t h e e f f e c t s c a n s p r e a d o u t w a r d , w i t h m o r e a n m o r e b a l l s c a s c a d i n g t o w a r d t h b o t t o m .

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 137/228

G a m e s

R a t h e r t h a n t a k i n g a e a s y p o i n t o t w o , i t ' s o f t e n w o r t hw h i l e t b u i l d u l a y e r s o l o a d e d s w i t c h e s . W a t c h o u f o l e a v i n g y o u r s e l f v u l n e r a b l e , t h o u g h . B e c a u s e p l a y e r s t a k et u r n s , y o u ' l l w a n t t l e a v e p o s i t i o n s w h e r e y o u r o p p o n e n t ' sm o v e g i v e s y o c h a n c e t c r e a t e c h a i n r e a c t i o n . T h b e s ts t r a t e g y i t p l a y d e f e n s i v e l y . L o o k a h e a d m o v e o t w o , a n w a t c h f o a o p e n i n g t h a t a l l o w s y o t s c o r e s e v e r a l p o i n t s a o n c e .

F o u r Q u a r t e r sg a m e o S w i t c h b o x a l w a y s l a s t s f o u r r o u n d s . I n t h e f i r s t

( e q u a l i t y ) , e a c h e x i t c o u n t s f o t w p o i n t s . Y o u r g o a l i t s c o r e t e n p o i n t s . T h s e c o n d q u a r t e r h a m o r e p o i n t s a v a i l a b l ea w e l l a h i g h e r g o a l . I y o l o o k a t h e x i t s , y o u ' l l s e t h a tt h f a r t h e r a w a y f r o m t h m i d d l e , t h h i g h e r t h e p o i n t v a l u e .T h e n u m b e r s i n c r e a s e i F i b o n a c c i s e q u e n c e : 1 2 3 , 5 , 8 a n s o n E a c h n u m b e r i t h s u o t h p r e v i o u s t w ( 1 + 2i 3 2 + i 5 3 + i 8 a n s o n ) . T h t a r g e t s c o r e i r o u n di 4 0

I r o u n d t h n u m b e r s a r b i l o w e r . T h e y i n c r e a s ea r i t h m e t i c a l l y ( 1 2 , 3 , 4 , u t i t h c o r n e r s ) . g o a l o 2 p o i n t s b r i n g s y o t r o u n d 4 w h e r e y o c a s c o r e b i g . H e r et h n u m b e r s a r e s q u a r e s : 1 4 , 9 , 1 6 2 5 a l t h w a t 6 a t h e d g e s . I n r o u n d s 2 - 4 , i t ' s s o m e t i m e s p r u d e n t t l e a v em i d d l e p a t h o p e n f o y o u r o p p o n e n t t s c o r e f e p o i n t s i o r d e r t g a t h e r h i g h s c o r e o t h e b i g n u m b e r s t t h l e f t a n r i g h t .

E a c h r o u n d l a s t s u n t i l o n p l a y e r h a r e a c h e d t h g o a l . A t h a t p o i n t t h o t h e r p l a y e r h a o n l a s t t u r n b e f o r e t h r o u n de n d s . I t ' s p o s s i b l e t w i t h r o u n d o t h i s l a s t - c h a n c e p l a y ;w a t c h o u f o b a r e l y t o p p i n g t h g o a l a n l e a v i n g c h a i n r a c t i o n o p e n f o t h o t h e r p l a y e r . A a r r o w p o i n t s t t h s c o r e -b o a r d o t h e p l a y e r w h o s e t u r n i i s O t h o t h e r s i d e o t h s c r e e n , y o u ' l l s e e a n u m b e r w h e r e t h a r r o w s h o u l d b e T h a t ' st h g o a l f o t h c u r r e n t r o u n d .

B o n u s p o i n t s a r a w a r d e d a t h c o n c l u s i o n o e a c hr o u n d . F o u r n u m b e r s a p p e a r b e l o w t h s c o r e c a r d s . T h f i r s t i s i m p l y t h t o t a l s f a r . T h s e c o n d i t h t o t a l p l u s b o n u s o t h g o a l f o t h r o u n d i t h p l a y e r ' s p o i n t s a r e q u a l t o g r e a t e r t h a n t h g o a l . F o r e x a m p l e , i t h e g o a l i 2 a n y o g e 1 8 t h e r e ' s n b o n u s . I y o s c o r e 2 2 t h b o n u s i t h g o a l

1 2

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 138/228

C h a p t e r

f o t h a t r o u n d ( 2 0 ) , a n y o u ' d h a v e 4 p o i n t s . T h t h i r d n u b e u n d e r t h S c o r e b o a r d i t h d i f f e r e n c e b e t w e e n s c o r e s f o t h r o u n d s . I y o w i n b y t w p o i n t s , t w i a d d e d t y o u rs c o r e ( a n d t w i s u b t r a c t e d f r o m t h e o t h e r p l a y e r ' s ) . T h f i n a ln u m b e r i t h g r a n d t o t a l o t h f i r s t t h r e e s c o r e s a n b o n u s e s .R o u n d s a n a r f a i r l y l o w - s c o r i n g w i t h l o g o a l s . Y o m a w a n t t s e e d t h f i e l d w i t h e x t r a b a l l s d u r i n g t h e s e q u a rt e r s s t h a t y o c a c o l l e c t m o r e p o i n t s i t h s e c o n d a n f o u r t h q u a r t e r s .

V a r i a t i o n sA l t h o u g h t h g o a l o t h g a m e i t s c o r e t h m o s t p o i n t s ,t h e r e ' s n r e a s o n y o c o u l d n ' t a g r e e t p l a y f o l o s c o r e . I " l o w b a l l " g a m e , y o w o u l d t r t a v o i d s c o r i n g p o i n t s . Y o w o u l d n ' t n e c e s s a r i l y p l a y b a c k w a r d ; y o w o u l d h a v e t a d j u s tt h s t r a t e g y o w h e r e t p l a c e t h b a l l s . F i l l u t h b o a r d a m u c h a p o s s i b l e a n l e a v e y o u r o p p o n e n t i s i t u a t i o nw h e r e h o s h i f o r c e d t s c o r e p o i n t s .T h D A T A s t a t e m e n t s a t h b e g i n n i n g o t h p r o g r a md e t e r m i n e t h g o a l f o e a c h r o u n d a n t h p o i n t v a l u e s f o t h e x i t p a t h s . Y o c a n p r o l o n g t h g a m e b d o u b l i n g t h g o a l s ;t h i s a l s o d i l u t e s t h v a l u e o f b i s c o r e a t h b e g i n n i n g o r o u n d , p r e v e n t i n g o n p l a y e r f r o m w i n n i n g o t h f i r s t o s e o n t u r n . A i n t e r e s t i n g v a r i a t i o n i t a s s i g n n e g a t i v e v a l u e st s o m e s l o t s . I s o m e p a t h s s c o r e n e g a t i v e p o i n t s , y o a r f o r c e d t t h i n k h a r d e r a b o u t w h e r e t h b a l l s w i l l d r o p .

I a d d i t i o n t t h n u m b e r e d k e y s ( 1 - 8 ) , t h e p l u s ( + a n m i n u s ( — k e y s a r a c t i v e . P r e s s i n g t h e p l u s k e d r o p s b a l la r a n d o m d o w n o n o t h e i g h t e n t r y p a t h s . P r e s s i n g m i n u sa l l o w s y o t p a s s y o u r t u r n t y o u r o p p o n e n t .

O n c e y o u ' v e m a s t e r e d t h r e g u l a r g a m e , y o c a a d s o m e n e r u l e s . E a c h p l a y e r g e t s t h r e e p a s s e s p e h a l f , s i m i l a rt t h t h r e e t i m e o u t s i f o o t b a l l g a m e . I y o d o n ' t l i k e t h l o o k s o t h b o a r d , p r e s s t h m i n u s k e t u s o n o y o u rp a s s e s . A f t e r o n p l a y e r h a s s k i p p e d t u r n , t h e o t h e r p l a y e rm u s t p l a y ( t h i s p r e v e n t s t h p o s s i b i l i t y o s i p a s s e s i a r o w ) . | I t ' s a l s o g o o d i d e a t m a k e r u l e t h a t a p l a y e r c a n ' t p a s s o t w c o n s e c u t i v e t u r n s . Y o c a a l s o g i v e e a c h p l a y e r t w r a n - — d o m o v e s t b p l a y e d f o t h o p p o n e n t . I o t h e r w o r d s ,a f t e r m a k i n g m o v e , y o c o u l d i n f o r m y o u r o p p o n e n t t h a t

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 139/228

G a m e s

y o u ' r e g o i n g t g i v e h i o h e o n o y o u r r a n d o m m o v e sa n d y o u w o u l d p r e s s t h e p l u s k e y .

H e r e ' s o n m o r e c h a n g e y o c o u l d m a k e : I n s t e a d o a l t e rn a t i n g t u r n s , a l l o w a p l a y e r t c o n t i n u e a f t e r s c o r i n g . W h e np l a y e r d r o p s b a l l a n s c o r e s s o m e p o i n t s , t h o t h e r p l a y e rw o u l d h a v e t p a s s ( b y p r e s s i n g t h e m i n u s k e y ) . I t h f i r s tp l a y e r s c o r e s a g a i n , t h o p p o n e n t p a s s e s a g a i n , a n s o n u t i n o m o r e p o i n t s a r e s c o r e d .

P l a y i n g S o l i t a i r eT d r o p b a l l , p r e s s a n u m b e r k e ( 1 - 8 ) . T h n u m e r i c k e y p a di c o n v e n i e n t f o c h o o s i n g m o v e . B u s i n g t h p a s s a n r a n d o m - t u r n o p t i o n s , y o c a p l a y a g a i n s t t h c o m p u t e r . H e r ea r t h r u l e s f o s o l i t a i r e p l a y :1 T h c o m p u t e r a l w a y s s c o r e s f i r s t . A t h b e g i n n i n g o e v e r y

r o u n d , t h c o m p u t e r p l a y s r a n d o m l y u n t i l a t l e a s t o n p o i n ti a c q u i r e d . P r e s s t h e p l u s k e f o t h c o m p u t e r ' s t u r n . Y o m u s t c o n t i n u e p a s s i n g ( s k i p y o u r t u r n w i t h t h m i n u s k e y )u n t i l t h c o m p u t e r p u t s p o i n t s o t h b o a r d .

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

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

4 I y o u ' r e t h e f i r s t t r e a c h t h g o a l , t h c o m p u t e r g e t s l a s tc h a n c e . D o n ' t m a k e t h i s m o v e r a n d o m l y ; f i g u r e o u t h b e s to p p o r t u n i t y f o s c o r i n g a n p l a y t h a t m o v e f o t h l a s t -c h a n c e t u r n .

I t h i n t e r e s t o k e e p i n g t h e s e p r o g r a m s t m a n a g e a b l el e n g t h , n a t t e m p t h a b e e n m a d e t p r o v i d e a " i n t e l l i g e n t "c o m p u t e r o p p o n e n t . O n c e y o b e c o m e f a m i l i a r w i t h t h g a m e ,y o m i g h t f i n d i a i n t e r e s t i n g p r o j e c t t o t r y a d d i n g s o m er o u t i n e s t h a t g i v e t h e c o m p u t e r r a t i o n a l b a s i s f o p i c k i n g o n m o v e o v e r a n o t h e r .

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 140/228

C h a p t e r

P r o g r a m 3 - 5 . S w i t c h b o x ' F o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B F P 1 0 D I M S W ( 4 , 7 , 1 ) , S P $ ( 1 ) , L B ( 3 2 , 4 ) , A R $ ( 1 ) , P T ( 4 , 1 6 )

S ( 8 l D 1 S P $ ( 0 ) " { O F F } g * H R V S } g * § { O F F } g @ 3 I I : S P $ ( l ) = M

G @ 3 { R V S j £ t O F F } £ M : A R $ ( 0 ) " < _ I { D O W N j { 2 L E F T }J B W § " : A R ? " ( l ) l l ? Q § K { U P J l 2 L E F T } U > : Q R = 1 : P R I NT C H R $ ( 2 7 ) ; " M " " ~

E 1 C O L O R 0 , 1 6 : C O L O R 4 / 7 : C O L O R 5 , 7 : T X = R N D ( - T I / 1 3 7 )Q 2 F O R J = 1 T O 4 : R E A D P T ( J , 0 ) : R E M N A M E A N D G O A LX 2 F O R K = 1 T O 8 : R E A D L : P T ( J , K + 8 ) = L : P T ( J , 9 - K ) = L : N E X TK , J ? R E M P O I N T SR 2 D A T A 1 0 : R E M R O U N D ( E Q U A L )P 2 D A T A 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2P 2 D A T A 4 0 : R E M R O U N D ( F I B O N A C C I )H 2 D A T A 1 , 2 , 3 , 5 , 8 , 1 3 , 2 1 , 3 4K 2 D A T A 2 0 : R E M R O U N D ( A R I T H M E T I C )B 2 D A T A 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9E 3 D A T A 8 0 : R E M R O U N D ( S Q U A R E S )S 3 D A T A 1 , 4 , 9 , 1 6 , 2 5 , 3 6 , 4 9 , 6 4P 4 S C N C L R : I N P U T " P L A Y E R 1 " ; P I $ : I N P U T " P L A Y E R 2 " ; P2 ? : P 1 $ = L E F T $ ( P 1 $ , 5 ) : P 2 $ = L E F T $ ( P 2 $ , 5 ) : P R I N T P 1

$ ; V " ; P 2 $J 4 P R I N T " I T H I S C O R R E C T ? " : G E T K E Y A $ : I F A S C ( A $ ) < >

8 9 T H E N 4 0P 5 G O S U B 5 0 0 : G O S U B 7 0 0 : R E M S E T U PH 6 F O R R R = l T O 4 : T X = 1 0 7 2 + 4 0 * R R : P O K E T X , 9 0 : P O K E T X + 2 2

, 9 X 6 G O S U B 6 2 0 : R E M P U S C O R E S A B O T T O MS 6 Q R = 1 - Q R : C O L O R 5 , 7 : T Y = Q R * 2 0 : T X = 2 8 - T Y : W I N D O W T X ,

0 , T X + 2 , 1 , 1 : P R I N T R I G H T $ ( S T R ? ( P T ( R R , 0 ) ) , 3 ) : P R IN T " { 2 H O M E } " : T X = 8 + T Y : C H A R 1 , T X , Q R , A R $ ( Q R )

S 7 G O S U B 9 0 0 : I F S C ( 1 - Q R , R R ) = > P T ( R R , 0 ) T H E N 3 0 0 : R E M. { S P A C E } E N D O R O U N D

A 8 G O T O 6 5E 3 0 F O R J = 0 T O 1 : F O R K = 5 T O 8 : S C ( J , K ) = 0 : N E X T K , JQ 3 1 F O R J = 0 T O 1 : F O R K = 1 T O 4 : G L = P T ( K , 0 ) : A C = S C ( J , K ) : S

C ( J , 5 ) = S C ( J , 5 ) + A C : S C ( J , 6 ) = S C ( J , 6 ) - ( A C = > G L ) *G L : S C ( J , 7 ) = S C ( J , 7 ) + ( S C ( J , K ) - S C ( 1 - J , K ) ) : N E X TK ,

Q 3 2 F O R J = 0 T O 1 : F O R K = 6 T O 7 : S C ( J , K ) = S C ( J , K ) + S C ( J , 5 ): N E X T K , JS 3 3 F O R J = 0 T O 1 : F O R K = 5 T O 7 : S C ( J , 8 ) = S C ( J , 8 ) + S C ( J , K ): N E X T K , J

M E 3 4 0 C O L O R 5 , 1 2 : F O R J = 0 T O 1 : F O R K = 5 T O 8 : Y $ = S T R $ ( S C ( J , ~ K ) ) : L = L E N ( Y $ ) : T X = 6 + J * 3 1 - L : T Y = 3 + K : C H A R 1 , T X , TY , Y $ : N E X T K , J

C 4 0 N E X T R R : R E M E N O M A I N L O O P 6 0 - 4 9 9E B 4 9 9 G E T K E Y A $ : R U N1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 141/228

_ G a m e s

I B 5 0 S C N C L R : P R I N T S P C ( l l ) 7 " g A 3 l R V S j g O 3 l O F F } " 7 : F O RJ = 1 T O 7 : P R I N T i O F F g R 3 l R V g O : N E X T : P R I N Tn l O F F } g S 3 " : L L = 7

Q 5 1 F O R J = 0 T O 4 : T X = 9 - 2 * J : T Y = l + J * 4 : B X = T X + 2 0 + J * 4 : B Y= T Y + 4 : W I N D 0 W T X , T Y , B X , B Y : R $ = " -

C D 5 2 0 F O R K = 1 T O 2 : P R I N T " { 2 S P A C E S } { R V S j { O F F } n 7 : G OS U B 6 0 0 : P R I N T " { R V S j " : N E X TB Q 5 3 0 P R I N T " { R V S j £ { O F F } " ; : G O S U B 6 0 0 : P R I N T "I R V S ] g * § "

P 5 4 L L = L L + 2 : P R I N T " l R V S j £ l O F F } £ " 7 : G O S U B 6 0 0 : P R IN T " { L E F T } g * 3 { R V S g * f { O F F } " 7 : N E X T J

J 5 5 W I N D O W l , 2 1 , 3 8 , 2 3 : P R I N T " g R § " 7 : G O S U B 6 0 0 : P R I Ng B 5 6 R $ = H t R V S } g U i l 0 F F } g E | M : L L = L L + l : P R I N T I I § Z i " 7 :

O S U B 6 0 0 : P R I N T " { L E F T } g X § " : W I N D O W 0 , 0 , 3 9 , 2 4Q S 5 9 9 R E T U R NK 6 0 F O R L = 1 T O L L : P R I N T R $ ; : N E X T : R E T U R NM 6 2 C O L O R 5 , 1 2 : F O R J = 1 T O 1 6 : K = P T ( R R , J ) : J J = 2 + J * 2R 6 3 I F K > 9 T H E N L = I N T ( K / 1 0 ) : L $ = M I D $ ( S T R $ ( L ) , 2 , 1 ) : E

L S E L $ = C H R $ ( 3 2 )M 6 4 C H A R 1 , J J , 2 3 , L $ : C H A R 1 , J J , 2 4 , R I G H T $ ( S T R $ ( K ) , 1

) : N E X T J : R E T U R NS X 7 0 0 F O R J = 0 T O 4 : S Y = 4 + J * 4 ; F O R K = 0 T O J + 3 : S X = 1 2 - J * 2 + K *4 : C H A R 1 , S X + 1 , S Y - 1 , . "

M 7 1 W P = I N T ( R N D ( 1 ) * 2 )H 7 2 S W ( J , K , 0 ) = W P : S W ( J , K , 1 ) = 0 : G O S U B 8 0 0R 7 3 N E X T K , JS 7 4 F O R J = 1 T O 8 : P O K E 1 0 7 4 + J * 2 , 4 8 + J : N E X TX 7 5 F O R J = 0 T O 1 : B X = J * 3 1 : W I N D O W B X , 0 , B X + 7 , 7B 7 6 P R I N T " l O F F H B L K } g D < | l R V S j P U R ] { S P A C E S ]E 7 7 F O R K = l T O 4 : P R I N T " l R V S ] { B L K } i K ) | l O F F } { P U R } g K l

1 S P A C E S } l R V S ] g K § " 7 : N E X TK 7 7 P R I N T " { R V S H B L K } g K 3 l P U R } g C 2 U O F F } g 5 I i l R V S j

g V 3 I O F F } { B L K } g C § I R V S g 1 I O F F g V § " 7H 7 8 N E X T : P R I N T " 1 2 H O M E ) " : C O L O R 5 , 5R 7 9 C H A R 1 , 3 + ( L E N ( P 1 $ ) = 5 ) , 0 , P 1 $ , 1Q 7 9 C H A R 1 , 3 4 + ( L E N ( P 2 $ ) = 5 ) , 0 , P 2 $ , 1n R 7 9 R E T U R NB A 8 0 0 C O L O R 5 , 2 : C H A R 1 , S X , S Y , S P $ ( W P ) : R E T U R NJ 9 0 F O R J = 0 T O 3 2 : L B ( J , 0 ) = # : N E X T : N B = l : P O K E 2 0 8 , 0R 9 1 G E T K E Y A $ : I F A $ = " - " T H E N R E T U R N : E L S E I F A $ = " + " T H E

N A $ = S T R $ ( I N T ( R N D ( 1 ) * 8 + 1 ) )F 9 1 A = V A L ( A $ ) : I F ( A < 1 ) O R ( A > 8 ) T H E N 9 1 0F 9 2 L B ( 0 , 0 ) = 1 : F O R J = 1 T O 3 : L B ( 0 , J ) = 0 : N E X T : L B ( 0 , 4 ) =n l 0 + A * 2S F 1 0 0 0 D O : E X = 1K 1 0 1 0 F O R J = 0 T O 3 2 : I F L B ( J , 0 ) T H E N E X = 0 : G O S U B 1 1 0 0G 1 0 2 0 N E X T : I F E X T H E N E X I TE 1 0 3 0 L O O P : R E T U R N

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 142/228

C h a p t e r

K 1 1 0 0 D Y = L B ( J , 0 ) : D X = L B ( J , l ) : L Y = L B ( J , 2 ) : N Y = L B ( J , 3) : N X = L B ( J , 4 ) : S M = 1 0 6 4 + N X + L Y * 1 6 0 + N Y * 4 0 : I F ( L Y

+ N Y ) T H E N P O K E S M , 3 2G 1 1 1 0 L B ( J , 3 ) = ( N Y + 1 ) A N D 3 : O N N Y + 1 G O T O 1 2 0 0 , 1 3 0 0 , 1 4 0

0 , 1 5 0 0E 1 2 0 0 I F L Y > 4 T H E N L B ( J , 0 ) = 0 : G O T O 1 7 0 0 : R E M S C O R I N G

O U T I N EQ 1 2 2 0 P O K E S M + 4 0 / 8 1 : O N I N T ( R N D ( l ) * 3 + l ) G O T O 1 8 0 0 , 1 8 1

0 , 1 8 2 0Q 1 3 0 0 V X = 0 : G O S U B 1 6 0 0 : I F S W ( W Y , W X , 1 ) A N D ( S W ( W Y , W X ,

0 ) = S D ) T H E N V X = 1 - 2 * S D : L B ( J , 1 ) = V X : L B ( J , 3 ) = N Y+ l : L B ( J , 4 ) = N X + V X : P O K E S M + 4 0 + V X , 8 1 : G O T O 1 8 4 0E 1 3 1 0 I S W ( W Y , W X , 0 ) = S D T H E N L B ( J , 0 ) = 0 : S W ( W Y , W X , 1 )= 1 : P O K E S M + 4 0 , 8 1 : G O T O 1 8 3 0

H 1 3 2 0 L B ( J , 3 ) = N Y + 1 : P O K E S M + 4 0 , 8 1 : O N I N T ( R N D ( 1 ) * 3 + 1) G O T O 1 8 0 0 , 1 8 1 0 , 1 8 2 0

Q 1 4 0 0 L B ( J , l ) = 0 : L B ( J , 4 ) = N X + D X : P O K E S M + 4 0 + D X , 8 1 : G OT O 1 8 5 0

F 1 5 0 0 L B ( J , 2 ) = L Y + 1 : P O K E S M + 4 0 , 8 1 : G O S U B 1 6 0 0 : S W ( W Y ,W X , 0 ) = 1 - S W ( W Y , W X , 0 )

D 1 5 1 0 I S W ( W Y , W X , 1 ) T H E N L B ( N B , 0 ) = 1 : L B ( N B , 1 ) = 0 : L B( N B , 2 ) = L Y : L B ( N B , 3 ) = 0 : L B ( N B , 4 ) = N X + 2 - S D * 4 : N B= N B + l 2 S W ( W Y , W X , l ) = 0 : P O K E S M - 4 0 + 2 - S D * 4 r 3 2 : G O

S U B 1 8 6 0P A 1 5 2 0 S X = 1 2 - W Y * 2 + W X * 4 : S Y = 4 + W Y * 4 : W P = S W ( W Y , W X , 0 ) : G

O S U B 8 0 0 : G O T O 1 8 4 0F 1 6 0 0 W Y = L Y : J X = ( N X / 2 ) + L Y - 6 : W X = I N T ( J X / 2 ) : S D = J X A N D

1 : R E T U R NK 1 7 0 0 S F = P T ( R R , N X / 2 - l )R 1 7 1 0 S G = S C ( Q R , R R ) + S F : C O L O R 5 , 1 2G 1 7 2 0 T X = 5 + 3 1 * Q R + ( S G > 9 ) + ( S G > 9 9 ) + ( S G > 9 9 9 )Q 1 7 3 0 T Y = 1 + R R : A $ = M I D $ ( S T R $ ( S G ) , 2 )J 1 7 4 0 C H A R 1 , T X , T Y , A $ : S C ( Q R , R R ) = S G : G O T O 1 8 7 0M 1 8 0 0 S O U N D 1 , 4 5 0 0 , 8 : R E T U R NC 1 8 1 0 S O U N D 1 , 9 0 0 0 , 8 : R E T U R NF 1 8 2 0 S O U N D 1 , 6 7 5 0 , 8 : R E T U R NA H 1 8 3 0 S O U N D 2 , 7 5 0 0 , 8 , 1 , 6 2 5 0 , 1 2 5 , 1 , 1 0 2 4 : R E T U R NQ 1 8 4 0 S O U N D 2 , 6 0 0 0 , 1 2 , 2 , 4 2 0 0 , 1 5 0 , 3 : R E T U R NE 1 8 5 0 S O U N D 2 , 3 0 0 0 0 , 1 2 , 2 , 1 0 0 0 0 , 5 0 0 0 , 3 : R E T U R NB X 1 8 6 0 S O U N D 3 , 1 5 0 0 , 2 4 , 0 , 1 4 5 0 , 2 5 , 3 : R E T U R NR 1 8 7 0 S O U N D 1 , 1 2 0 0 0 , 2 4 : S O U N D 2 , 7 5 0 0 , 1 2 , 0 , 7 3 0 0 , 2 5 : S

O U N D 3 , 9 0 0 0 , 1 8 : R E T U R N

1 3 L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 143/228

L e x i t r o nR o W i l s o n

L i k e b o w l o a l p h a b e t s o u p , t h e " L e x i t r o n " s c r e e n a p p e a r s t b j u s t j u m b l e d m a s s o l e t t e r s . C a y o f i n d t h t e h i d d e n w o r d sb e f o r e t i m e r u n s o u t ? j o y s t i c k i r e q u i r e d .

I y o e n j o y t h h i d d e n w o r d g a m e s o f t e n f o u n d i n e w s p ap e r s a n m a g a z i n e s , y o u ' l l l i k e " L e x i t r o n . " B u u n l i k e t h o n e sd o n e w i t h p e n c i l a n p a p e r , L e x i t r o n a d d s f e t w i s t s .T h e r e ' s t i m e l i m i t , a n y o c a s e l e c t o n o f t h r e e d i f f i c u l t yl e v e l s .

T h g a m e i w r i t t e n e n t i r e l y i n B A S I C . A f t e r t y p i n g i i n b s u r e t s a v e c o p y . B e s p e c i a l l y c a r e f u l w h e n t y p i n g i t h D A T A s t a t e m e n t s i l i n e s 1 2 0 0 a n 1 2 1 0 . T h e s e l i n e s h o l dt h w o r d p o o l f r o m w h i c h L e x i t r o n s e l e c t s .

U p D o w n , L e f t ; a n R i g h tT p l a y L e x i t r o n , l o a d i a n t y p e R U N . B s u r e t h a v e a j o ys t i c k p l u g g e d i n t o p o r t 2 . F i r s t , y o u ' l l b a s k e d t s e l e c t o n o t h r e e s k i l l l e v e l s . L e v e l i t h e a s i e s t , w i t h a l t h h i d d e nw o r d s s p e l l e d l e f t t r i g h t o t o t b o t t o m . L e v e l i m o r ed i f f i c u l t . B e s i d e s f o r w a r d s p e l l i n g s , w o r d s a r a l s o f o r m e d i t h e i r r e v e r s e d s p e l l i n g o r d e r ( f r o m r i g h t t o l e f t o b o t t o m t t o p ) . L e v e l 3 i t h m o s t d i f f i c u l t , w i t h w o r d s s p e l l e d d i a g on a l l y , a n b o t h f o r w a r d a n r e v e r s e d d i a g o n a l w o r d s b e i n gf o r m e d . Y o m i g h t w a n t t s t a y c l e a r o l e v e l u n t i l y o u ' v ep l a y e d f e t i m e s .

A f t e r y o u ' v e s e l e c t e d s k i l l l e v e l b m o v i n g y o u r j o y s t i c kt t h a p p r o p r i a t e n u m b e r , p r e s s t h f i r e b u t t o n . T h s c r e e nw i l l c l e a r f o f e s e c o n d s w h i l e t h g a m e w o r d s a r b e i n gs e l e c t e d a n h i d d e n . B u d o n ' t l e a v e y o u r s e a t — t h e t i m e rs t a r t s a s o o n a t h g a m e a p p e a r s o t h s c r e e n .

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

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 144/228

C h a p t e r

A l v a l i d g a m e w o r d s a r a t l e a s t s i l e t t e r s l o n g . T h i s r u l ei i f o r c e s t h a t a c c i d e n t a l ( a n d s o m e t i m e s h u m o r o u s ) l e t t e rc o m b i n a t i o n s d n o c o s t y o t i m e a n e f f o r t . Y o u ' l l o f t e n s e w o r d s l i k e M A N , C A R , S E E , o T R Y , b u L e x i t r o n d o e s n o t ' — 'r e c o g n i z e t h e m . A l s o b a w a r e o l e t t e r a d d i t i o n s . F o e a m p l e , L e x i t r o n m a c h o o s e a n h i d e t h w o r d A M E R I C A , ) b u b c h a n c e t h l e t t e r f o l l o w i n g c o u l d b a N t h u s A M E R I - ' — C A N . L e x i t r o n m a n o r e c o g n i z e t h e e x t r a N

E a s y M o d i f i c a t i o n sT h L e x i t r o n v o c a b u l a r y w o r d s a r c o d e d s t h a t p l a y e r s c a n o l i s t t h p r o g r a m a n g e a i l l e g a l s n e a k p r e v i e w . I y o w i s h t a d y o u r o w w o r d s t t h p r o g r a m , t h c o d e i s i p l e . E a c h l e t t e r r e p r e s e n t s t h e l e t t e r w h i c h a l p h a b e t i c a l l y f o l o w s . F o e x a m p l e , t h l e t t e r i c o d e d a B A B A C U S w o u l db c o d e d a B C B D V T . I y o d e c i d e t a d y o u r o w w o r d s ,s t a r t w i t h n e l i n e — 1 2 2 0 — a n d r e m e m b e r t h a t a l w o r d sm u s t b a t l e a s t s i l e t t e r s l o n g . B s u r e t h e l a s t w o r d i t h l i s t i F O ( t h e w o r d E N i n c o d e ) . T h i s s i g n a l s t o t h p r g r a m t h a t i t ' s r e a c h e d t h e n o t h w o r d l i s t . Y o m i g h tw a n t t a v o i d u s i n g w o r d s w i t h t h l e t t e r s X Z o r t h e Q - c o m b i n a t i o n . s h a r p p l a y e r c a s p o t w o r d s w i t h t h o s e l e t t e r si s e c o n d s .

I y o f i n d t h a t L e x i t r o n i t o e a s y o t o d i f f i c u l t , y o c a c h a n g e t h v a l u e . 0 0 9 i l i n e 3 3 0 . T h i s c o n t r o l s t h t i m e r .R a i s i n g a n l o w e r i n g t h i s v a l u e w i l l c h a n g e t h a l l o t t e d t i m e ,t h u s t h d i f f i c u l t y o f t h e g a m e . v a l u e l e s s t h a n . 0 0 9 ( s u c h a . 0 0 7 ) m a k e s t h g a m e e a s i e r , a n d , c o n v e r s e l y , i n c r e a s i n g t h v a l u e m a k e s i m o r e d i f f i c u l t .

T h e r e a r f e s t r a t e g i e s t o c o n s i d e r w h e n p l a y i n gL e x i t r o n . F o i n s t a n c e , i n s o m e c a s e s i t ' s n o t y o u r a d v a n t a g et e n t e r a w o r d a s o o n a y o f i n d i t I y o h a v e t r o u b l ef i n d i n g s o m e o t h h i d d e n w o r d s , L e x i t r o n s o m e t i m e s p r o - | v i d e s a c l u e b f l a s h i n g w o r d a t h b o t t o m o f t h e s c r e e n .P r o g r a m 3 - 6 . L e x i t r o nF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

E 1 B A N K 1 H B 1 0 0 P R I N T " ( C L R } { 3 D O W N } " S P C ( 1 1 ) " L R

1 D O W N } " : D I M A R $ ( 2 0 , 1 5 ) , A R ( 2 0 # 1 5 ) , L N ( 2 0 0 )F 1 1 P { H O M E } 1 2 D O W N J U 5 S P A C E S } : F O R A = 0 T O 1 0

R E A D Q ( A ) : N E X T1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 145/228

L

G a m e s

C 1 2 F O R A = 0 T O 8 : R E A D D ( A ) : N E X T : D A T A 0 , 1 , 5 , 0 , 7 , 8 , 6 ,0 , 3 , 2 , 4 , 0 , - 4 0 , - 3 9 , 1 , 4 1 , 4 0 , 3 9 , - 1J 1 3 D I M L ( 2 0 0 ) : D A T A - 4 1 : P R I N T S P C ( 3 ) " P L E A S E W A I Tt S P A C E } W H I L E L O A D I N G W O R D S "

M 1 4 S = 5 4 2 7 2 : F O R A = S T O S + 2 3 : P O K E A , 0 : N E X T : P O K E A , 1 5 :P O K E S + 5 , 2 8 : P O K E 5 3 2 8 0 , 6

K 1 5 S C = 1 2 7 4 : C D = 5 4 2 7 2 : P T = 5 6 3 2 0 : B C = 5 3 2 8 1 : W = 1 5 : B L =6 : S B = 5 3 2 6 5 : C S = 1 5

P 1 6 Z = 6 4 6 : A 1 = 1 5 : A 2 = 1 4 : A 3 = 1 : A 4 = 7 : A 5 = 6 : A 6 = 1E K 1 7 0 G O S U B 1 1 6 0 : G O S U B 1 1 2 0S D 1 8 0 G O S U B 1 0 9 0K E 1 9 0 G W = 0 : F O R A = 0 T O 1 9 : F O R B = 0 T O 1 4 : A R ( A , B ) = 0 : N E X T B ,A : F O R A = 0 T O N W : L ( A ) = 0 : N E X T : P S = S CM 2 0 L L = 7 : P O K E B C , W : P O K E Z , A 5 : P R I N T " { C L R J 1 3 D O W N ]

1 S P A C E S } U S E J O Y S T I C K T C H O O S E A L E V E L "C S 2 1 0 P O K E Z , A 6 : P R I N T S P C ( 1 0 ) " 1 2 D O W N J 1 5 S P A C E S ]

I R V S } 1 " ; : P O K E Z , A 5 : P R I N T " { 2 S P A C E S } 21 S P A C E S J 3 " : M S = S C + 5

H Q 2 2 0 P R I N T " 1 4 D O W N j 1 3 S P A C E S } { R V S } 1 1 O F F }1 S P A C E S j A L L W O R D S S P E L L E D F O R W A R D S{ 1 S P A C E S } N O D I A G O N A L S "

S M 2 3 0 P R I N T " 1 3 S P A C E S } { 2 D O W N } { R V S } 2 { O F F }1 S P A C E S } F O R W A R D R E V E R S E D S P E L L I N G S1 1 S P A C E S } N O D I A G O N A L S "

C 2 4 P R I N T " ( 3 S P A C E S } { 2 D O W N } { R V S } 3 { O F F }1 S P A C E S } F O R W A R D R E V E R S E D S P E L L I N G S1 1 S P A C E S } D I A G O N A L S I N C L U D E D "

P 2 5 G O S U B 4 1 0 : I F J = 0 T H E N 2 5 R 2 6 P O K E M S + C D , A 5 : M S = M S - 3 * ( J = 3 ) * - ( M S < S C + l l ) + 3 * ( J

= 7 ) * - ( M S > S C + 5 ) : P O K E M S + C D , A 6Q 2 7 I F J < 1 2 8 T H E N 2 5 0Q 2 8 P R I N T " t C L R } { B L K } { 8 D O W N } " S P C ( 1 4 ) " P L E A S E W A

T " : F O R T D = 1 T O 1 0 0 0 : N E X TR 2 9 L V = ( M S - ( S C + 5 ) ) / 3 + l : P O K E S B , P E E K ( S B ) A N D 2 3 9 : P OK E B C , B L : G O S U B 9 7 0

X 3 0 G O S U B 8 5 0 : Q F = 1 : T = 1 : G O S U B 4 8 0 : P O K E S B , P E E K ( S B ) OR 1 6 : T I $ = " 0 0 0 0 0 0 " : G O T O 3 9 0

B 3 1 R E J O Y S T I C K R O U T I N EE 3 2 I F R N D ( 1 ) < . 0 0 3 T H E N G O S U B 6 7 0F 3 3 I F R N D ( 1 ) < . 0 0 9 T H E N G O S U B 5 4 0B 3 4 G O S U B 4 1 0 : I F J = 0 T H E N 3 2 0A 3 5 I F J > 1 2 7 T H E N G O S U B 4 3 0 : G O T O 3 2 0R 3 6 P O K E P S , P E E K ( P S ) A N D 1 2 7 : T P = P SQ 3 7 I F ( P E E K ( P S + C D ) A N D C S ) = A 3 T H E N P O K E P S + C D , A 2C 3 8 P S = P S + D ( J A N D 1 5 ) : I F P E E K ( P S ) < 1 O R P E E K ( P S ) > 2 6 T H

E N P S = T PM 3 9 P O K E P S , P E E K ( P S ) O R l 2 8 : I F ( P E E K ( P S + C D ) A N D C S ) < >

A 4 T H E N P O K E P S + C D , A 3J 4 0 G O T O 3 2 0

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 146/228

C h a p t e r

E 4 1 J = Q ( 1 5 - ( P E E K ( P T ) A N D 1 5 ) ) - 1 2 8 * ( ( P E E K ( P T ) A N D 1 6) = 0 ) : R E T U R N

B 4 2 0 R E M P R E S S F I R E B U T T O NE 4 3 I F ( P E E K ( P S + C D ) A N D C S ) = A 4 T H E N R E T U R NQ X 4 4 0 Y = I N T ( ( P S - S C ) / 4 0 ) : X = P S - S C - Y * 4 0K J 4 5 0 I F A R ( X , Y ) = 0 T H E N P R I N T P $ H T R Y A N O T H E R " : G O S U B 5 4

0 J R E T U R NQ 4 6 P R I N T P $ " G O O D A N S W E R " L B 4 7 P O K E P S + C D , A 4 : T = A R ( X , Y ) - 1 : L ( T ) = L ( T ) + 1G 4 8 P O K E S + 4 / 1 6 : P O K E S + 4 , 1 7 : P O K E S + l , 1 0 + 1 0 * L ( T )F 4 9 F O R A = S C + 5 5 4 T O ( S C + 5 5 4 ) - 4 0 * L L S T E P - 4 0 : P O K E A + 4 0

, 9 3 : P O K E A + 7 1 , 9 3K 5 0 P O K E A , 1 6 0 : P O K E A + 3 1 , 1 6 0 : F O R T D = 1 T O 2 0 : N E X T : N E XT : I F Q F = 1 T H E N Q F = 0 : R E T U R N

G 5 1 G O S U B 5 9 0 : L L = L L - ( L L < 1 5 ) : A R ( X , Y ) = 0 : I F L ( T ) = L N (T ) T H E N G O S U B 6 1 0

E 5 2 R E T U R NJ 5 3 0 R E M E N E R G Y D R A I NC 5 4 P O K E S + 4 , 3 2 : P O K E S + 4 , 3 3 : P O K E S + 1 , 3 0 : F O R T D = 1 T O 2

0 0 : N E X T : P O K E S + 1 , 1 5S 5 5 F O R A = S C - 6 T O ( S C - 6 ) + 4 0 * ( 1 5 - L L ) S T E P 4 0 : P O K E A - 4 0

9 : P O K E A - 9 , 9 3 : P O K E A , 1 6 A 5 6 P O K E A + 3 1 , 1 6 0 : F O R T D = 1 T O 2 0 : N E X T : N E X T : G O S U B 5 9 0: L L = L L - 1 : I F L L = - 1 T H E N 7 0 0

J 5 7 R E T U R NR 5 8 R E C L E A R M E S S A G EX 5 9 P R I N T P $ " { 1 9 S P A C E S } " : R E T U R NG 6 0 R E G O W O R DA 6 1 G W = G W + 1 : I F G W = 1 0 T H E N 7 7 0J K 6 2 0 F O R T D = 1 T O 3 0 0 : N E X T : P R I N T P $ " W E L L D O N E I A B 6 3 0 P O K E S + 4 , 3 2S 6 4 P O K E S + 4 , 3 5 : F O R A = 6 T O 2 0 : P O K E S + 1 , A : F O R T D = 3 0 T O 40 : P O K E S + 1 5 , T D : N E X T : N E X TR K 6 5 0 G O S U B 5 9 0 : R E T U R NG J 6 6 0 R E G I V E C L U ES 6 7 A = R N D ( 1 ) * 1 0 : I F L ( A ) = 0 T H E N P R I N T P $ " C L U E : " W $ ( A +

M ) : F O R T = 1 T O 8 0 0 : N E X TB 6 8 G O S U B 5 9 0 : R E T U R NS 6 9 0 R E M E N O G A M EK 7 0 P R I N T " H O M E } 1 D O W N ] i B L K } : F O R A = 0 T O 1 4 . " P R I N T

: P R I N T S P C ( 1 0 ) ; : F O R B = 0 T O 1 9R 7 1 I F A R ( B , A ) < > 0 T H E N P R I N T A R $ ( B , A ) ; : G O T O 7 3 0J 7 2 P R I N T " I R I G H T } " ;H 7 3 N E X T : N E X T : P R I N T : P O K E Z , A 4 : P R I N T " 1 D O W N ]

1 S P A C E S } P R E S S F I R E B U T T O N T C O N T I N U E "R X 7 4 0 G O S U B 4 1 0 : I F J < 1 2 8 T H E N 7 4 0X 7 5 G O S U B 4 1 0 : I F J > 1 2 7 T H E N 7 5 0J 7 6 P O K E Z , A 5 : P R I N T " { C L R } { 4 D O W N ] 1 6 S P A C E S j S O R R Y

Y O D I D N ' T M A K E I T { 4 D O W N ] " : G O T O 7 9 0

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 147/228

L G

Q X P R Q R M K

7 7

7 8 7 9

8 0 8 1 8 2 8 3 8 4 8 5

L 1

P K H

C K M G

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

G a m e s

P O K E Z , A 5 : P R I N T " { C L R } { 4 D O W N ] 1 6 S P A C E S } C O N G RA T U L A T I O N S H 2 S P A C E S } Y O U W O N "P R I N T " 1 3 D O W N } 1 9 S P A C E S } Y O U R T I M E W A " M I D ?( T I $ , 3 , 2 ) " : " R I G H T $ ( T I $ , 2 )F O R I = 1 T O 1 0 0 0 : N E X T : P O K E B C # W : P R I N T " 1 5 D O W N }1 S P A C E S } P R E S S F I R E B U T T O N T O P L A Y A G A I N "P R I N T " 1 2 D O W N } I 1 0 S P A C E S } P R E S S D O W N T O Q U I T

i

G O S U B 4 1 0 : I F J > 1 2 7 T H E N P R I N T S P C ( 1 3 ) " { 2 D O W N }I R V S } P L E A S E W A I T " : G O S U B 1 1 7 0 : G O T O 1 8 0I F J T H E N P R I N T " { C L R } " : E N DG O T O 8 1 0R E P R I N T A R R A YP R I N T " I C L R } ( 4 S P A C E S } { C Y N } { R V S } i K 3 1 O F F } B K §

S P A C E S } { R V S } g K § g D § g I § O F F } g V § I R V S } g K §I O F F } g K § I R V S } E K § I O F F } g K § I R V S } g F § g D § I O F F }B C R V S } g F l B D 3 I O F F } g V § ( R V S } g K § & D § g F § I O F F }B F g D * I R V S } g D * g P l I O F F } g F § I R V S } g K 3 B C § g K §l O F F } g K 3 M S P C ( 8 ) ;

C 8 6 P R I N T " l R V S } g K § l O F F } g K § { 2 S P A C E S } I R V S } g K § g C 3I O F F } & F § S P A C E S } t R V S } g F | B D 3 I O F F }1 S P A C E S } { R V S } g K § l O F F } g K 3 l 2 S P A C E S } { R V S }& K 3 l O F F } g K 3 l R V S } g K § g C § g V 3 l O F F } g V H R V S } g K 3t O F F } g K § R V S } g K 3 { O F F } g K § { R V S } | K l { 2 S P A C E S }t O F F } g K i I I S P C ( 8 ) " g 7 8 { R V S } g K 3 l O F F } g K l " ;

F G 8 7 0 P R I N T " 1 2 S P A C E S } I R V S } g K § I O F F } g K § I S P A C E S }& D 3 1 R V S } g D § g F 3 1 O F F } g F § I R V S } g K 3 I O F F } g K 31 S P A C E S } l R V S } g K 3 l O F F } g K 3 { R V S } g K § g D § g C §{ O F F } { R V S } g K § { O F F } g K § l R V S } g K 3 l O F F } g K 3 l R V S }B K 3 l O F F } g K 3 { R V S } g F § { O F F } g K i " S P C ( 8 ) I I g C i { R V S }B 1 3 { O F F } g V l g C | " ;

A G 8 8 0 P R I N T " { R V S } g 2 I § { O F F } g V § g C § g V § g C § g V § { R V S }B I § { O F F } { 2 S P A C E S } g C § g V l{ R V S } g 2 I i l O F F } g § g g g

M 8 9 P O K E Z # A 1 : P R I N T S P C ( 4 ) " B { 4 S P A C E S } { R V S } g A § * * *• • » » » * * * * » * * * * * » * g S | { Q F F } { 4 S P A C E S } B "P 9 0 P R I N T S P C ( 4 ) " B { 4 S P A C E S } { R V S } B { O F F } " ; : F O R A = 0

T O 1 4 : F O R B = 0 T O 1 9F 9 1 P O K E Z , A 2 : I F A R $ ( B , A ) = " " T H E N P R I N T C H R $ ( 6 5 + R N D

( 1 ) * 2 6 ) ; : G O T O 9 3 0P R I N T A R $ ( B , A ) ;N E X T : P O K E Z # A l : P R I N T " l R V S } B { O F F } { 4 S P A C E S } B ": P R I N T S P C ( 4 ) ; " B { 4 S P A C E S } T R V S } B l O F F } " ; : N E X TP R I N T : P R I N T S P C T 4 ) " { U P } B { 4 S P A C E S } { R V S } g Z § J ^• • • • • • • • • • * * * * * * * * g X J l O F F } { 4 S P A C E S } B "R E T U R NR E P U W O R D S I T H A R R A YB = I N T ( R N D ( 1 ) * ( N W - 1 0 ) )M = B : F O R A = 0 T O 9 : W $ = W $ ( B + A )

1 3

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 148/228

C h a p t e r

H 9 9 D R = R N D ( 1 ) * 2 T L V : D Y = D Y ( D R ) : D X = D X ( D R ) : L = L E N ( W $ '

F F 1 0 0 0 S X = I N T ( R N D ( 1 ) * 1 9 + 1 ) : S Y = I N T ( R N D ( 1 ) * 1 4 + 1 ) : R X j = S X : R Y = S Y | G D 1 0 1 0 N X = S X + ( L - 1 ) * D X : N Y = S Y + ( L - 1 ) * D Y : I F N X < 0 O R N Y < 0

O R N X > 1 9 0 R N Y > 1 4 T H E N 9 9 0K 1 0 2 0 F L = 0 : F O R L = 1 T O L E N ( W $ ) : I F A R $ ( S X , S Y ) < > " " T H E N

F L = 1 : L = L E N ( W $ )X 1 0 3 0 S X = S X + D X : S Y = S Y + D YS 1 0 4 0 N E X T : I F F L T H E N A = A - 1 : N E X TM X 1 0 5 0 F O R L = 1 T O L E N ( W $ ) : A R $ ( R X , R Y ) = M I D $ ( W $ , L , 1 )J 1 0 6 0 A R ( R X , R Y ) = A + 1 : R X = R X + D X : R Y = R Y + D Y : N E X T : L N ( A )= L E N ( W $ ) : N E X TM 1 0 7 0 R E T U R NC 1 0 8 0 R E S H U F F L E W O R D SH 1 0 9 0 F O R A = 1 T O N W / 2 : B = R N D ( 1 ) * N W : C = R N D ( 1 ) * N W : T $ = W $

( B ) : W $ ( B ) = W $ ( C ) : W $ ( C ) = T $J 1 1 0 0 N E X T : R E T U R NH 1 1 1 0 R E M R E A D I W O R D SD 1 1 2 0 D I M W $ ( 2 0 0 ) : N W = - 1M 1 1 3 0 N W = N W + 1 : R E A D W $ : F O R A = 1 T O L E N ( W $ ) : W $ ( N W ) = W $ ( N

W ) + C H R $ ( A S C ( M I D $ ( W $ A , 1 ) ) - 1 )F 1 1 4 0 N E X T : I F W $ ( N W ) < > " E N D " T H E N 1 1 3 0S 1 1 5 0 R E T U R NB J 1 1 6 0 F O R A = 0 T O 7 : R E A D D X ( A ) / D Y ( A ) : N E X TB 1 1 7 0 F O R A = 0 T O 1 9 : F O R B = 0 T O 1 4 : A R $ ( A # B ) = " " : N E X T B # AF M 1 1 8 0 R E T U R NA 1 1 9 0 D A T A 0 , 1 , 1 , 0 , 0 , - 1 , - 1 , 0 , - 1 , 1 , 1 , 1 , 1 , - 1 , - 1 , - 1C 1 2 0 0 D A T A D B S O J W B M , D J S D V T , D B O B E B , V O J U F E , U F M F Q I P

O F , N P O L F Z , D P N Q V U F SR 1 2 1 0 D A T A K P Z T U J D L , N P O T U F S , T U B Q M F S , N B H J D B M , T I V GG M F , F O E

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 149/228

C h a p t e r

U t i l i t i e s

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 150/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 151/228

M e t a B A S I C :P r o g r a m m e r ' s P r o b l e m S o l v e rK e v i n M y k y t y n

" M e t a B A S I C , " o r i g i n a l l y w r i t t e n f o t h C o m m o d o r e 6 4 h a b e e nr e w r i t t e n t w o r k w i t h t h e 1 2 8 r u n n i n g i 1 2 m o d e . I a d d s 1 n e d e b u g g i n g a n t e s t i n g c o m m a n d s t B A S I C 7 . 0 .

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

T a k e i t y o u r f a v o r i t e m e c h a n i c w h m i g h t g i v e y o t h r e e o p t i o n s : R e m o v e t h e n g i n e a n r e p l a c e i w i t h b r a n d -n e o n e . O a d s o m e f a n c y t u r b o c h a r g i n g , f u e l - i n j e c t e dd o o h i c k e y s t t h e n g i n e y o a l r e a d y h a v e . O r w i t h o u t a d i n g a n y t h i n g , y o c o u l d t u n e i u p u s i n g s p e c i a l m a c h i n et h a t m e a s u r e s t h e e n g i n e ' s p e r f o r m a n c e .

B A S I C T u n e - U pY o c a a d n e p r o g r a m m i n g c o m m a n d s t y o u r 1 2 8 i t h r e e s i m i l a r w a y s . T h f i r s t i s t t o s s o u B A S I C a n c r e a t ew h o l e n e l a n g u a g e ( m o r e p o w e r f u l e n g i n e ) b a s e d o y o u ri d e a s o w h a t p r o g r a m m i n g l a n g u a g e s h o u l d d o

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

T h t h i r d w a i l i k e t u n e - u p w h i c h d o e s n ' t c h a n g e t h e n g i n e . Y o a d d i r e c t m o d e c o m m a n d s f o d e b u g g i n g . T h i s i n o n e l a n g u a g e o e v e n a e x t e n s i o n o B A S I C ; i t ' s m o r ep r o p e r l y c a l l e d d e v e l o p m e n t s y s t e m o w r i t i n g / d e b u g g i n g t o o ln T h e n e c o m m a n d s y o u a d d c a n n o t b e u s e d i n s i d e p r o g r a m ;t h e y w o r k o n l y i i m m e d i a t e m o d e .

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

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 152/228

C h a p t e r

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

T y p i n g I I M e t a B A S I C i w r i t t e n e n t i r e l y i m a c h i n e l a n g u a g e , a n " M L X , "t h M a c h i n e L a n g u a g e E d i t o r , i r e q u i r e d t t y p e i i n M L c a b f o u n d i A p p e n d i x C B s u r e t r e a d t h s p e c i f i c d i r e ct i o n s f o u s i n g M L b e f o r e t y p i n g i M e t a B A S I C . S a v e c o p l o c o p i e s o M L X ; y o u ' l l n e e d i t t y p e i " O r b i t r o n " a n o t h e r p r o g r a m s w h i c h a p p e a r i o t h e r C O M P U T E !p u b l i c a t i o n s .

L o a d a n r u M L X . G i v e i t h f o l l o w i n g i n f o r m a t i o n :S t a r t i n g A d d r e s s : 1 3 0 0E n d i n g A d d r e s s : 1 8 B FN e x t , f o l l o w i n g t h e M L i n s t r u c t i o n s , e n t e r M e t a B A S I C a n s a v e i t

T u s M e t a B A S I C , f o l l o w t h e s e s t e p s :1 B L O A D " M e t a B A S I C " ( f o r d i s k ) o

L O A D " M e t a B A S I C " , l , l ( f o r t a p e )2 S Y 4 8 6 4

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

U s i n g M e t a B A S I CM e t a B A S I C u s e s E n g l i s h m n e m o n i c s , s y o d o n ' t h a v e t m e m o r i z e l o o S Y n u m b e r s . O n c e M e t a B A S I C i a c t i v e ,y o u ' l l h a v e t h e s e 1 1 a d d i t i o n a l c o m m a n d s : A I D , C H A N G E ,D E F A U L T , D L I S T , F I N D , M E R G E , Q U I T , R E A D , R E S A V E , ' — S T A R T , a n d U N N E W .

T h c o m m a n d s w o r k o n l y i d i r e c t m o d e ; y o u c a n n o t a d t h e m t p r o g r a m s . A l s o , y o u ' r e l i m i t e d t o n c o m m a n d p e l i n e ( a l t h o u g h y o c a s t i l l u s m u l t i s t a t e m e n t l i n e s i n s i d ey o u r p r o g r a m s ) . U n l i k e o r d i n a r y B A S I C c o m m a n d s , t h e r e a r n a b b r e v i a t i o n s . Y o m u s t t y p e o u t t h e n t i r e M e t a B A S I C — c o m m a n d . I y o w i s h t s t o p t h e e x e c u t i o n o f c o m m a n d ,p r e s s t h R U N / S T O P k e ( n o t R U N / S T O P - R E S T O R E ) . I i I 1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 153/228

U t i l i t i e s

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

M a c h i n e l a n g u a g e p r o g r a m m e r s s h o u l d r e m e m b e r t h a tM e t a B A S I C o c c u p i e s m e m o r y l o c a t i o n s $ 1 3 0 0 - $ 1 8 B F ( 4 8 6 4 -6 3 3 5 ) a n u s e s z e r o p a g e l o c a t i o n s $ F B - $ F E ( 2 5 1 - 2 5 4 ) a n $ A C - $ A F ( 1 7 2 - 1 7 5 ) .

M e t a B A S I C C o m m a n d sH e r e ' s a a l p h a b e t i c a l l i s t o t h n e c o m m a n d s a n h o t u s e t h e m , w i t h e x a m p l e s . M e t a B A S I C c o m m a n d s a n s t r i n g sa p p e a r i b o l d f a c e a n d n u m b e r s a p p e a r i i t a l i c s . A n y t h i n ge n c l o s e d i p a r e n t h e s e s i o p t i o n a l .

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

A I S y n t a x : A I L i s t s a l a v a i l a b l e M e t a B A S I C c o m m a n d s .

C H A N G ES y n t a x : C H A N G E @ o l d s t r i n g @ n e w s t r i n g @ ( , s t a r t n u m ,

e n d n u m )C H A N G E @ o l d s t r i n g @ n e w s t r i n g @ ( , s t a r t n u m )C H A N G E @ o l d s t r i n g @ n e w s t r i n g @ ( e n d n u m )C H A N G E / o l d s t r i n g / n e w s t r i n g / ( , s t a r t n u m ,e n d n u m )C H A N G E / o l d s t r i n g / n e w s t r i n g / ( , s t a r t n u m )C H A N G E / o l d s t r i n g / n e w s t r i n g / ( e n d n u m )

S e a l s o F I N D .C H A N G E s e a r c h e s t h r o u g h t h p r o g r a m i m e m o r y , c h a n g i n ge v e r y o c c u r r e n c e o t h e o l d s t r i n g t o t h n e o n e . T h s t r i n g sc a b u t 3 c h a r a c t e r s l o n g a n d m u s t b b r a c k e t e d b t h c o m m e r c i a l a s i g n ( @ o t h s l a s h ( / ) . A l l i n e s i w h i c hc h a n g e s a r m a d e a r l i s t e d t t h s c r e e n . T h f o r m a t w i t h t h c o m m e r c i a l a s i g n i t h t o k e n i z e d f o r m a n s h o u l d b u s e dt c h a n g e B A S I C c o m m a n d s a n v a r i a b l e n a m e s . T h A S C I If o r m ( t h e s l a s h f o r m a t ) i u s e f u l w h e n y o u w a n t t c h a n g e

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 154/228

C h a p t e r

w o r d i s t r i n g w i t h o u t c h a n g i n g k e y w o r d s . F o r e x a m p l e , i C H A N G E / p r i n t / w r i t e /w i l l c h a n g e a l o c c u r r e n c e s o t h w o r d p r i n t w i t h i n q u o t a t i o nm a r k s w i t h o u t c h a n g i n g a n P R I N T s t a t e m e n t s .

U s t h s l a s h f o r m a t t c h a n g e a n y t h i n g i n s i d e q u o t a t i o nm a r k s o a f t e r R E s t a t e m e n t ; u s t h a s i g n f o r m a t t I c h a n g e a n y t h i n g n o i n s i d e q u o t a t i o n m a r k s o a f t e r R E s t a t e m e n t . R e m e m b e r t h a t m a t h e m a t i c a l o p e r a t o r s w i t h i n p r g r a m s s u c h a + — , * , / , > , < a n a r s t o r e d a s t o k e n s ,n o c h a r a c t e r s , s y o m u s t u s t h f o r m a t w h e n s e a r c h i n gf o o n o t h e s e .

I y o o m i t t h l i n e n u m b e r s , C H A N G E a f f e c t s t h w h o l ep r o g r a m . I y o w a n t t c h a n g e o n l y o n s e c t i o n , a d t h s t a r t i n g a n e n d i n g l i n e n u m b e r s , m a r k e d o f b c o m m a s .

E x a m p l e : C H A N G E @ X @ Q Q @ , , 2 0 0 c h a n g e s t h v a r i a b l et Q i a l l i n e s u t a n i n c l u d i n g 2 0 0 . T c h a n g e t h

n a m e C h a r l e s t J o h n t h r o u g h o u t t h p r o g r a m , C H A N G E/ C H A R L E S / J O H N / .D E F A U L TS y n t a x : D E F A U L T b o r d e r , b a c k g r o u n d , t e x tS e a l s o Q U I T .W h e n y o h i R U N / S T O P - R E S T O R E , t h e s c r e e n r e v e r t s t t h d e f a u l t c o l o r s g r e e n a n b l a c k . D E F A U L T l e t s y o c h a n g et h e s e v a l u e s t w h a t e v e r y o p r e f e r .

I y o u r 1 2 i h o o k e d u t b l a c k - a n d - w h i t e T V c h a n g et h c h a r a c t e r / b a c k g r o u n d c o l o r t m o r e r e a d a b l ec o m b i n a t i o n .

T d i s a b l e D E F A U L T ( a n d g b a c k t n o r m a l c o l o r s ) , u s t h Q U I T c o m m a n d .

E x a m p l e : D E F A U L T 1 , 1 , O c h a n g e s b o r d e r a n b a c k g r o u n dt w h i t e , a n c h a r a c t e r s t b l a c k . I y o p r e s s R U N / S T O P -R E S T O R E , y o u ' l l s e w h i t e c h a r a c t e r s o b l a c k b a c k g r o u n d .

T h b o r d e r a n b a c k g r o u n d c o l o r c h a n g e s a f f e c t o n l y t h 4 0 - c o l u m n s c r e e n ; t h t e x t c o l o r c h a n g e a f f e c t s b o t h t h 4 0 a n 8 0 - c o l u m n d i s p l a y s .

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 155/228

P U t i l i t i e s

D U S TS y n t a x : D L I S T " f i l e n a m e ? 'S e a l s o R E A D .T h i s c o m m a n d l i s t s B A S I C p r o g r a m f r o m d i s k t t h e s c r e e nw i t h o u t a f f e c t i n g w h a t ' s c u r r e n t l y i m e m o r y . T h p r o g r a mn a m e m u s t b e n c l o s e d i q u o t a t i o n m a r k s . D L I S T e n a b l e sy o t l o o k a p r o g r a m b e f o r e u s i n g M E R G E o S C R A T C H .

E x a m p l e : D L I S T " B A S I C P R O G R A M " r e a d s t h e f i l e f r o md i s k a n l i s t s i t t h s c r e e n .

F I N DS y n t a x : F I N D @ s t r i n g @ ( , s t a r t n u m , e n d n u m )

F I N D @ s t r i n g @ ( , s t a r t n u m )F I N D @ s t r i n g @ ( e n d n u m )F I N D / s t r i n g / { , s t a r t n u m , e n d n u m )F I N D / s t r i n g / { , s t a r t n u m )F I N D / s t r i n g / ( e n d n u m )

S e a l s o C H A N G E .T h i s a l l o w s y o t f i n d a n w o r d , v a r i a b l e , o o t h e r s t r i n gw i t h i n p r o g r a m . E a c h l i n e c o n t a i n i n g t h s e a r c h s t r i n g i l i s t e d t t h s c r e e n . I y o w i s h t s e a r c h j u s t o n s e c t i o n o ft h p r o g r a m , a d t h s t a r t i n g a n e n d i n g l i n e n u m b e r s , s e p ar a t e d b c o m m a s .

I y o u ' r e t r y i n g t f i n d B A S I C k e y w o r d s ( l i k e P R I N T o R E M ) , u s t h f i r s t f o r m a t . I a l s o w o r k s f o v a r i a b l e s a n n u m b e r s . T h s e c o n d f o r m a t s h o u l d b e u s e d w h e n y o u ' r el o o k i n g f o r s t r i n g s o i t e m s i n s i d e q u o t a t i o n m a r k s .

E x a m p l e : F I N D @ A = @ s e a r c h e s f o r l i n e s w h e r e v a r i a b l ei d e f i n e d .

M E R G ES y n t a x : M E R G E " p r o g r a m n a m e "M E R G E r e a d s p r o g r a m f r o m d i s k , l i s t s e a c h l i n e t o t h s c r e e n , a n a d d s t h l i n e t o t h p r o g r a m i m e m o r y . I t h p r o g r a m s h a v e c o m m o n l i n e n u m b e r s , t h p r o g r a m o d i s kt a k e s p r e c e d e n c e . S a t h e y b o t h c o n t a i n l i n e 2 5 0 . T h l i n e2 5 f r o m t h d i s k p r o g r a m w i l l r e p l a c e l i n e 2 5 i m e m o r y .

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 156/228

C h a p t e r

B e f o r e u s i n g t h i s c o m m a n d , y o m a w a n t t u s D L I S T ' t m a k e s u r e y o u ' r e m e r g i n g t h r i g h t p r o g r a m . A n i t h e r ea r c o n f l i c t i n g l i n e n u m b e r s , y o c a n u s e R E N U M B E R t r e n u m b e r o n o t h t w p r o g r a m s . I y o u w a n t t m e r g e j u s t ' — p a r t o o n p r o g r a m , u s D E L E T E t e l i m i n a t e t h u n w a n t e dl i n e s .

Q U I TS y n t a x : Q U I TT h i s r e s e t s a l v e c t o r s a n d i s a b l e s a l M e t a B A S I C c o m m a n d s .M e t a B A S I C i s t i l l p r o t e c t e d f r o m B A S I C . R e e n t e r t h p r o g r a mw i t h S Y 4 8 6 4 .

R E A DS y n t a x : R E A D " f i l e n a m e "S e a l s o D L I S T .R E A D a l l o w s y o t e x a m i n e s e q u e n t i a l d i s k f i l e s . T h i n f o rm a t i o n i t h f i l e i s d i s p l a y e d t t h s c r e e n , w i t h o u t a l t e r i n gw h a t e v e r p r o g r a m i i m e m o r y .

I t h r a r e c a s e t h a t y o u w a n t t u s t h B A S I C R E A Ds t a t e m e n t f r o m d i r e c t m o d e ( t s e i a l D A T A s t a t e m e n t sh a v e b e e n r e a d ) , y o c a n p r e c e d e i w i t h c o l o n t d i s t i n g u i s hi f r o m M e t a B A S I C ' s R E A D c o m m a n d .

R E S A V ES y n t a x : R E S A V E " f i l e n a m e "T h d i s k c o m m a n d s a v e - w i t h - r e p l a c e ( S A V E " @ O \ f i l e n a m e " )f i r s t s a v e s t h p r o g r a m a n t h e n s c r a t c h e s t h o l d e r v e r s i o n ,s t h e r e m u s t a l w a y s b e e n o u g h f r e e s p a c e o t h d i s k f o t h n e v e r s i o n o t h p r o g r a m . T h u s , t h c o m m a n d c a c a u s ep r o b l e m s i y o d o n ' t h a v e e n o u g h a v a i l a b l e d i s k s p a c e f o ' — t h n e v e r s i o n . S a v e - w i t h - r e p l a c e a l s o h a o t h e r p r o b l e m s ;s e t h a r t i c l e " S a v e - w i t h - R e p l a c e : D e b u g g e d a L a s t " e a r l i e ri t h i s b o o k . ' —

R E S A V E r e v e r s e s t h e o r d e r — f i r s t i s c r a t c h e s t h e o l d v e s i o n o y o u r p r o g r a m f r o m d i s k , a n t h e n i d o e s r e g u l a rS A V E , s o l v i n g b o t h o t h a b o v e p r o b l e m s . 1 — I

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 157/228

U t i l i t i e s

S T A R TS y n t a x : S T A R T " f i l e n a m e "I y o f o r g e t w h e r e m a c h i n e l a n g u a g e p r o g r a m b e g i n s , p u t h e d i s k i t h d r i v e a n u s t h i s c o m m a n d . T h i s c a h e l pw h e n y o h a v e f o r g o t t e n t h e S Y t h a t s t a r t s p r o g r a m .

E x a m p l e : S T A R T " M E T A B A S I C " s h o u l d d i s p l a y 4 8 6 4o t h s c r e e n .

U N N E WS y n t a x : U N N E WY o m a n e v e r n e e d t h i s c o m m a n d , b u i t ' s n i c e t h a v e i a v a i l a b l e . I y o a c c i d e n t a l l y t y p e N E a n y o u w a n t t r t r i e v e t h p r o g r a m , u s U N N E W t g e i b a c k .P r o g r a m 4 - 1 . M e t a B A S I CT h i s d a t a m u s t b e n t e r e d u s i n g M I X . S e A p p e n d i x C

S t a r t i n g a d d r e s s : 1 3 0 0E n d i n g a d d r e s s : 1 8 B F1 3 0 0 : 4 C 1 5 1 3 4 E 5 4 3 2 1 3 0 8 : 8 E 4 E 4 D 4 C A 0 5 4 C 4 C1 3 1 0 : E 5 5 4 6 4 5 0 A 3 A 2 1 3 1 8 : 1 3 D 0 E A 9 0 8 0 0 B 1 3 2 0 : A 9 4 8 0 0 A 0 D A 0 8 1 3 2 8 : 4 3 8 E 0 4 0 8 0 5 0 3 A 6 1 3 3 0 : 8 0 6 C 0 0 0 A 0 0 F F 8 D 1 3 3 8 : C 1 1 A 0 8 0 F F A 9 9 1 3 4 0 : F B 8 D 2 8 0 3 A 1 8 2 E 1 3 4 8 : 0 3 A 0 A A 0 2 B F 1 3 5 0 : F F 2 E 1 A 9 0 0 2 B D 9 81 3 5 8 : F F 2 C F A 2 0 0 8 C 9 1 3 6 0 : 1 8 A F C B 9 0 0 0 F 0 1 3 6 8 : 3 F C 2 0 F 0 F 6 D B 1 6 1 3 7 0 : D 0 2 C E 8 B D B 1 2 C 1 3 7 8 : 7 F D 0 0 D 1 B B I 1 3 8 0 : 1 3 1 E A C 1 0 A 4 1 3 8 8 : 8 C C 1 8 3 D A 9 0 2 8 5 4 1 3 9 0 : 3 E B D E F 1 4 8 B D E 1 9 1 3 9 8 : 4 8 6 0 E 8 B B 7 1 3 F 0 8 E 71 3 A 0 : 1 0 F 8 E 8 E E C 1 8 1 0 B 9 6 91 3 A 8 : 1 8 A 0 2 0 C 3 F A C 6 1 3 B 0 : 1 8 8 D 0 0 F F 4 C 0 D 4 3 4 1 A 1 3 B 8 : 4 9 C 4 4 4 4 4 C 3 1 3 C 0 : 4 4 4 4 4 1 5 5 4 D 4 4 4 0 1 3 C 8 : 4 C 4 5 D 4 4 6 4 4 C D

1 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 158/228

C h a p t e r

1 3 D 0 : 4 D 4 5 5 2 4 7 C 5 5 5 5 4 9 1 1 3 D 8 : D 4 5 4 4 C 5 4 5 0 1 3 E 0 : 4 1 5 C 5 5 4 1 5 2 D 4 1 3 E 8 : 5 5 4 E 4 E 4 D 7 0 0 0 3 1 4 4 1 3 F 0 : 5 3 1 I 1 7 1 5 1 B 1 3 F 8 : 7 C 1 1 1 3 1 4 1 0 1 4 0 0 : C 8 1 E 1 A F F C 8 B 1 ] 1 4 0 8 : B 7 1 F 0 0 2 7 2 E 1 4 1 0 : D 2 F 2 1 F 2 0 3 0 1 2 1 4 1 8 : 4 C 0 1 4 0 1 2 A 8 1 4 2 0 : 1 8 8 B 1 2 A 1 8 E D 21 4 2 8 : B 6 1 2 A 1 8 B 1 C 1 4 3 0 : A 9 3 D 8 D 0 0 A 1 8 D 1 4 3 8 : 0 1 0 A 4 C 0 1 1 8 A B 1 F 1 4 4 0 : 8 D 2 D A B 1 8 2 C 1 4 4 8 : D 0 A B 1 8 F 4 0 6 1 4 5 0 : 4 0 A 9 0 2 A 0 8 C 5 F 71 4 5 8 : 1 8 2 3 1 A 2 F F 2 5 E 1 4 6 0 : 1 6 A C 1 F 0 2 0 5 F 6 1 4 6 8 : 1 6 A F 8 4 8 4 A E 1 4 7 0 : 2 D 8 F C A 5 2 E 8 F 2 2 1 4 7 8 : A 1 1 9 1 2 1 1 A 5 1 01 4 8 0 : 6 1 8 F A 6 2 8 5 F 2 F 1 4 8 8 : 8 6 0 2 A 1 9 0 8 9 1 4 9 0 : 4 7 8 4 A 0 B F 8 I 1 4 9 8 : C 2 1 C B F 0 C 1 8 1 61 4 A 0 : D 0 0 2 0 3 1 3 4 0 1 C 1 4 A 8 : C 8 B F 8 1 C 8 B l F C 1 4 B 0 : 8 5 1 A 4 3 E 1 A 5 B 51 4 B 8 : 4 8 E 1 B 0 9 E A 2 1 4 C 0 : 0 0 C B F F 0 3 0 D C E 1 4 C 8 : 1 8 D F 4 8 C C 1 C E A 1 4 D 0 : B D C 1 F 0 D F F 5 1 4 D 8 : F 5 A C 1 D E 8 C 6 1 4 E 0 : 1 8 A F 8 5 6 1 A F 8 9 1 4 E 8 : 6 2 2 0 1 A C 1 D 0 E 21 4 F 0 : 1 5 A C C 1 D C C 9 8 0 11 4 F 8 : 1 8 6 F 8 F A F 6 6 1 5 0 0 : 0 0 8 F 4 9 3 1 4 A C I 1 5 0 8 : 1 8 1 8 6 5 F C 8 D B 1 A E 1 5 1 0 : F D 6 9 0 0 8 B 1 A C C 1 5 1 8 : 1 8 1 6 F C 8 D B 1 A 0 1 5 2 0 : F D 6 9 0 0 8 B 1 A B D E B1 5 2 8 : 1 8 1 6 C 1 8 B 1 A 1 5 3 0 : A D B 1 8 6 9 0 0 8 B 1 4 1 5 3 8 : 2 0 8 E 1 A B 1 3 E D 4 01 5 4 0 : B 9 1 8 D B D 1 A B 1 E 1 5 4 8 : E D B 1 8 B 1 A 1 B 1 5 5 0 : 1 2 1 6 D B D 1 8 1 1 3 1 5 5 8 : A D 1 1 6 B 1 8 1 3 1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 159/228

U t i l i t i e s

1 5 6 0 : 1 2 A 0 B F 1 6 D B D B 1 5 6 8 : 1 8 9 F C 8 B l F 6 B 4 1 5 7 0 : 1 8 9 F C A 2 F E B C B 1 5 7 8 : 1 8 D F A A C C 1 8 8 8 E 9 1 5 8 0 : C 8 B D C 7 1 F 0 9 F B 1 5 8 8 : D 0 F 8 4 B F 1 4 A 1 0 2 81 5 9 0 : 1 2 3 E B 1 8 B 1 B 1 5 9 8 : A D 1 1 1 2 E B 1 8 B 0 1 5 A 0 : 1 8 A B 1 8 3 8 E B 1 0 1 5 A 8 : 8 D C 1 A D B A 1 E D B E F 1 5 B 0 : 1 8 0 D C 1 8 D 0 0 1 6 0 B F 1 5 B 8 : 3 E A B 1 8 1 8 8 6 B 4 1 5 C 0 : 1 8 8 E 1 A B 1 8 5 1 5 C 8 : E 3 1 1 8 6 B 1 8 F 1 5 D 0 : E 7 1 A B 1 8 E 1 9 1 5 D 8 : E 8 A C B 1 D 0 0 4 F 0 0 2 1 5 E 0 : A 0 F F B F F F F 9 F F F F F 81 5 E 8 : 8 8 C F D 0 F 5 C E E 4 1 5 1 5 F 0 : C E E 1 C D E 6 A D 6 C1 5 F 8 : B 9 1 8 1 1 A B 1 6 1 6 0 0 : 8 D I 1 A B 1 8 I F 6 01 6 0 8 : 1 6 A B 1 8 2 1 A C 1 6 1 0 : B C 1 F 0 2 0 A 0 8 D B F E 81 6 1 8 : 1 8 A 0 B F F F F 9 F 4 1 6 2 0 : F C 8 C C B 1 D F E F 1 6 2 8 : 1 D 1 E 2 0 1 6 E 0 0 0 F 6 1 6 3 0 : 0 8 C D 0 E 0 A B 1 D 9 1 6 3 8 : D D 6 E C 1 A C 3 1 8 9 1 6 4 0 : B 9 0 0 D 0 4 2 1 5 1 6 4 8 : C 9 2 F E E C 9 2 F 0 9 6 41 6 5 0 : C 9 4 D F 4 2 0 4 C 1 6 5 8 : 6 8 8 F 6 A C 1 A 0 1 6 6 0 : F F 8 C 1 C E B 0 E 1 6 6 8 : 0 2 F D 9 C 1 E E C 0 4 1 6 7 0 : 1 8 C F D E F 8 4 3 A 7 1 6 7 8 : 0 0 9 C 7 1 8 6 A 0 2 C 5 C1 6 8 0 : A 9 0 8 C 1 A 0 0 2 0 3 1 6 8 8 : 5 F 1 2 0 E 4 F 2 E F 0 1 6 9 0 : 2 0 E F F 8 D C 1 2 E 7 1 6 9 8 : F F 0 D C 1 D 0 4 0 0 1 6 A 0 : 1 8 A 0 A 0 8 0 1 0 2 2 61 6 A 8 : 2 0 E 4 F F 9 1 0 9 0 8 1 6 B 0 : 0 2 C C 0 4 D 0 F 2 8 8 C 8 9 41 6 B 8 : 2 0 E F 9 9 0 0 0 C 0 6 1 6 C 0 : D 0 F 8 C 0 0 0 A 0 C 8 C B1 6 C 8 : 9 9 0 0 C D F A 0 7 1 6 D 0 : 8 5 6 A 0 2 8 5 6 3 2 0 B 31 6 D 8 : 0 F 1 A C 1 D 0 4 B 1 6 E 0 : E 5 1 4 9 1 A 0 8 F

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 160/228

C h a p t e r= z = — _ — = _1 6 E 8 : 3 D A 0 8 3 A 2 F E A D 1 6 F 0 . - 1 6 2 0 1 A 0 0 3 C 1 6 F 8 : E 9 0 A 8 4 C 0 1 E 2 4 i 1 7 0 0 : D 0 2 I 1 A 0 8 0 5 1 7 0 8 : F F 4 9 1 A 0 0 8 C 1 7 1 0 : C 3 1 A 0 0 8 D C 4 1 F 1 7 1 8 : 8 E 0 2 0 3 8 0 0 6 A C 1 7 2 0 : C 3 1 8 0 2 0 3 A C 1 8 7 81 7 2 8 : 8 D 0 3 0 3 6 0 A 2 D 0 0 2 B 51 7 3 0 : A 9 0 4 D F A 0 2 2 0 D 1 7 3 8 : 5 F 1 2 E F 8 C 1 4 1 7 4 0 : A 5 9 0 D 0 0 9 A C 1 2 D 1 7 4 8 : D 2 F 4 C 3 A 1 4 0 1 1 8 1 1 7 5 0 : A 2 0 2 C F 2 3 1 8 4 11 7 5 8 : A C C 1 8 3 6 C 1 9 1 7 6 0 : A A 0 9 0 0 A 0 2 7 71 7 6 8 : B B 1 9 0 0 8 C 0 1 7 7 0 : 1 0 F A C 1 C C A A 1 7 7 8 : 0 2 2 B 1 2 C C F F A 7 1 7 8 0 : C 4 1 A C 1 E 8 A 0 0 D 1 7 8 8 : 2 0 B D F F 2 E 1 A 0 2 1 7 9 0 : 2 0 E 1 A 0 1 B 5 2 9 A 1 7 9 8 : F C C A 1 F A F A 1 4 1 7 A 0 : 1 2 A 1 1 2 D F 2 C 1 7 A 8 : 7 E 1 2 3 1 4 0 1 8 2 71 7 B 0 : 5 3 3 3 8 F 9 4 8 9 1 7 B 8 : F C A 0 0 0 B F C D 0 0 6 4 1 7 C 0 : A 8 6 2 0 D 2 F C 4 B 0 1 7 C 8 : 1 7 A 0 2 5 1 8 2 0 E 4 6 1 7 D 0 : F F 8 C 1 2 E F F A E 9 1 7 D 8 : C 3 1 2 0 1 2 3 1 E 1 7 E 0 : 4 C 0 1 A 0 A 2 0 8 4 C 0 1 7 E 8 : B A F F A 9 0 A 4 6 F 0 1 7 F 0 : A 0 0 9 9 2 2 0 0 3 1 D 1 7 F 8 : 4 C 0 1 1 8 2 6 F F 0 C 1 8 0 0 : 6 0 2 2 1 8 1 8 A 0 2 9 1 8 0 8 : C 3 F 1 A 9 0 F 2 0 C 3 F 3 1 8 1 0 : 2 0 C C F F 2 3 1 A C 8 1 8 1 8 : 1 8 8 D 0 F A 2 8 0 6 0 A 1 8 2 0 : 0 3 A 6 8 2 8 0 3 A F 7 1 8 2 8 : 8 D 2 0 6 1 A 0 2 7 1 8 3 0 : C 3 F 2 0 2 1 1 8 A 0 6 2 1 8 3 8 : 0 0 0 A C 1 C 8 B 9 0 0 5 I 1 8 4 0 : 0 2 F E C 2 D F 8 5 1 8 4 8 : C 3 1 A 2 F F C E B 9 0 0 1 1 8 5 0 : 0 2 F 0 C 2 D F C E 1 8 5 8 : 3 0 D E 8 E C 4 1 6 2 C 1 8 6 0 : E 3 1 2 E 1 2 3 1 C 1 8 6 8 : 8 A A C 1 8 E 8 A 0 2 7

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 161/228

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

U t i l i t i e s

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 162/228

R E H i g h l i g h t e rD o A E l l i s

I y o h e a d l i n e r o u t i n e s i y o u r p r o g r a m s w i t h R E M s , h e r e ' ss h o r t a n c l e v e r u t i l i t y t h a t h e l p s y o f i n d i m p o r t a n t s e c t i o n s o c o d e m o r e q u i c k l y . I h i g h l i g h t s R E M s o y o u r s c r e e n a n y o u rp r i n t e r .

T r y i n g t f i n d t h R E M a r k s t a t e m e n t s i c r o w d e d p r o g r a ml i s t i n g a i s c r o l l s b i d i f f i c u l t , p a r t i c u l a r l y a f t e r f e l a t e -n i g h t h o u r s i f r o n t o t h s c r e e n . L i k e m a n y o t h e r p r o g r a mm e r s , u s a s t e r i s k s ( * * * ) , b u t h a t ' s o n l y m a r g i n a l l y e f f e c t i v e .B l a n k R E l i n e s i n s e r t e d t s e o f t h c o m m e n t s a n i d e n t i f yp r o g r a m r o u t i n e s w o r k b e t t e r , b u u s u b o t h s c r e e n s p a c ea n d m e m o r y .

B e t t e r S o l u t i o n" R E M H i g h l i g h t e r " a u t o m a t i c a l l y t w e a k s a n o t h e r p r o g r a m , a n c o s t t m e m o r y , s t h a t R E s t a t e m e n t s o s e p a r a t e l i n e sw i l l b d i s p l a y e d i n r e v e r s e , s t a n d i n g o u t s h a r p l y . T h a j u s t e d p r o g r a m m a b e s a v e d n o r m a l l y , a n t h i s v e r s i o n w i l lr e t a i n i t r e v e r s e d c o m m e n t s w h e n r e l o a d e d .

F i r s t t y p e i a n s a v e P r o g r a m 4 - 2 , R E H i g h l i g h t e r . B s u r e t s a v e c o p y o t h p r o g r a m b e f o r e y o r u i s i n c e i e r a s e s i t s e l f f r o m m e m o r y w h e n i l o a d s t h p r o g r a m t b h i g h l i g h t e d .

L o a d a n r u H i g h l i g h t e r , a n e n t e r t h e n a m e o t h p r g r a m y o w i s h t t w e a k . I y o u ' r e u s i n g d i s k , t h a t ' s a l t h e r e i t i t I y o u ' r e u s i n g t a p e , t h e p r o c e s s i l i t t l e l e s s a u t o m a t i c ,b u s t i l l s i m p l e ( s e e d e t a i l s b e l o w ) . i

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

T h d i s k v e r s i o n u s e s t h d y n a m i c k e y b o a r d t e c h n i q u e . I P O K E s k e y s t r o k e s i n t o t h k e y b o a r d b u f f e r s t h a t w h e n t h p r o g r a m e n d s , t h e c o m p u t e r i f o o l e d i n t o t h i n k i n g t h a t c e rt a i n k e y s h a v e b e e n p r e s s e d . R E H i g h l i g h t e r f i r s t l o a d s t h e

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 163/228

G J

J

D

B S

H

1 1

1 1

1 2

2

U t i l i t i e s

p r o g r a m t b m o d i f i e d , s o t h H i g h l i g h t e r i t s e l f i o v e r w r i t t e n( a n d l o s t ) . B u s e v e r a l l i n e s o B A S I C ( 6 3 9 9 4 - 6 3 9 9 9 ) h a v eb e e n l e f t o t h s c r e e n . T h 1 3 ' s i t h k e y b o a r d b u f f e r a r ec a r r i a g e r e t u r n s , s o t h e c o m p u t e r p r i n t s R E T U R N o v e r l i n e s ,a d d i n g t h e m t t h p r o g r a m j u s t l o a d e d . T h f i n a l l i n e t e l l st h p r o g r a m t G O T O 6 3 9 9 5 , a n t h p r o g r a m o b l i g e s b j u m p i n g t t h e H i g h l i g h t e r r o u t i n e . W h e n i t ' s f i n i s h e d , b l a n kl i n e s n u m b e r e d 6 3 9 9 4 - 6 3 9 9 9 a r p r i n t e d o t h s c r e e n . T h d y n a m i c k e y b o a r d i a g a i n u s e d t p r e s s R E T U R N o v e r t h l i n e s , e r a s i n g t h e m f r o m m e m o r y . Y o u ' r e l e f t w i t h t h p r g r a m w i t h r e v e r s e d R E M s . Y o u c a n o s a v e b a c k t d i s k .

U s i n g t h P r o g r a m w i t h T a p es p e c i a l p r o c e d u r e i r e q u i r e d f o u s i n g H i g h l i g h t e r w i t h

t a p e . F i r s t t y p e i P r o g r a m 4 - 2 .I t ' s n e c e s s a r y t a p p e n d H i g h l i g h t e r t t h p r o g r a m y o u

w i s h t t w e a k . T a c c o m p l i s h t h i s :1 L o a d t h p r o g r a m y o u w i s h t b h i g h l i g h t e d .2 C l e a r t h s c r e e n ; i n d i r e c t m o d e , e n t e r t h f o l l o w i n g l i n e :

P R I N T 4 5 ; P E E K ( 4 5 ) / 4 6 ; P E E K ( 4 6 ) : A = P E E K ( 4 6 2 4 )+ P E E K ( 4 6 2 5 ) * 2 5 6 - 2 : C = I N T ( A / 2 5 6 ) :B = a - C * 2 5 6 : P O K E 4 5 , B : P O K E 4 6 , C

3 L o a d R E H i g h l i g h t e r .4 U s i n g t h v a l u e s d i s p l a y e d ( b s t e p 2 ) P O K E 4 a n 4

w i t h t h e i r o r i g i n a l v a l u e s a g a i n .5 T y p e R U 6 3 9 9 3 .

P r o g r a m 4 - 2 . R E H i g h l i g h t e rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

N = 2 0 8 : P = 8 4 2 : C O L O R 0 , 7 : B A N K 0P R I N T M i C L R } M C H R $ ( 1 4 ) C H R $ ( 8 ) : P R I N T " § 7 3 R E MI R V S j H I G H L I G H T E R l D O W N JI N P U T " 1 2 D O W N ] P R O G R A M N A M E " ; N $ : I F N $ = " " T H E N P RI N T " 1 5 U P j M : G O T O 1 4Q $ = C H R $ ( 3 4 ) : P R I N T M { C L R } { 2 2 D O W N L O A D I N G{ D O W N j " : P R I N T N $ " [ H O M E } { B L U } L O A D " Q $ N $ Q $ " , 8P R I N T " 1 4 D O W N 6 3 9 9 4 S = P E E ( S ) + P E E ( S + l ) * 2 5 6P R I N T M 6 3 9 9 5 I F P E E ( S + 4 ) 1 4 3 T H ? l i Q $ l l l H O M E } l C Y N } 1 1Q $ " P E E ( S + 2 ) + P E E ( S + 3 ) * 2 5 6 : T = S + 4 : G O S 6 3 9 9 7P R I N T M 6 3 9 9 6 O N - T S < > . ) G O 6 3 9 9 4 : ? " Q $ " I C L R ] { B L U } "Q $ " ; : G O 6 3 9 9 9 ~

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 164/228

L C h a p t e r 4 = ^ = — — =Q 2 P R I N T " 6 3 9 9 7 T = T + 1 : I F P E E ( T ) = . T H R E TP 2 P R I N T " 6 3 9 9 8 O N - ( P E E ( T ) = 3 2 ) G O 6 3 9 9 7 : P 0 K T + ( T > S + 5) , 1 8 : R E T . B 2 P R I N T " 6 3 9 9 9 P O K P , 1 9 : F O I = 1 T O 6 : P O K P + I , 1 3 : 7 6 3 9 9 3

+ I : N E : P O K P + I , 1 5 4 : P O K N , 8K 3 P R I N T M ? " Q $ " 1 6 D O W N ] I R V S j I W H T } H I G H L I G H T I N G " Q $

" : N = 2 0 8 : P = 8 4 2 : S = 4 5 : G O 6 3 9 9 4B 3 P O K E P # 1 9 : F O R I = 1 T O 8 : P O K E P + I / 1 3 : N E X T : P O K E N # 9

P r o g r a m 4 - 3 . R E H i g h l i g h t e r , T a p e M o d i f i c a t i o n sF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B P 6 3 9 9 3 B A N K 0 : P R I N T " { C L R } l ' : N = 2 0 8 : P = 8 4 2 : S = P E E K ( 4 5

+ P E E K ( 4 6 ) * 2 5 6 : G O T O 6 3 9 9 5A 6 3 9 9 4 S = P E E K ( S ) + P E E K ( S + l ) * 2 5 6F 6 3 9 9 5 I F P E E K ( S + 4 ) = 1 4 3 T H E N P R I N T " { H O M E } " P E E K ( S + 2 )

+ P E E K ( S + 3 ) * 2 5 6 : T = S + 4 : G O S U B 6 3 9 9 7H 6 3 9 9 6 O N - ( S < > . ) G O T O 6 3 9 9 4 : G O T O 6 3 9 9 9G 6 3 9 9 7 T = T + 1 : I F P E E K ( T ) = . T H E N R E T U R ND 6 3 9 9 8 O N - ( P E E K ( T ) = 3 2 ) G O T O 6 3 9 9 7 : P O K E T + 1 * ( T > S + 5 ) ,

1 8 : R E T U R NR 6 3 9 9 9 P R I N T " t C L R } " ; : P O K E P # 1 9 : F O R I = 1 T O 8 : P O K E P + I ,

1 3 : P R I N T 6 3 9 9 1 + I : N E X T : P O K E N r 9

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 165/228

B l i c kP l u m m e r H e n s l e y

U s b l i c k t o s p i c e u y o u r p r o g r a m s b a d d i n g b l i n k a n c l i c k t t h P R I N T c o m m a n d . A n y t i m e y o t y p e c h a r a c t e r t t h s c r e e n , y o u ' l l s e a u n d e r l i n e c u r s o r a c c o m p a n i e d b b r i e f s o u n d .

I y o d o n ' t t h i n k s o u n d i i m p o r t a n t , t r p l a y i n g y o u r f a v o r i t ea c t i o n g a m e w i t h t h v o l u m e t u r n e d a l t h w a d o w n . I t ' sj u s t n o a m u c h f u w i t h o u t t h e x p l o s i o n s , z a p s , a n o t h e rn o i s e s .

S o u n d s h e l p t l i v e n u g a m e s , s w h n o m a k e P R I N Ts t a t e m e n t s l i t t l e m o r e i n t e r e s t i n g ? T h i s p r o g r a m g i v e s y o b l i n k a n c l i c k ( a b l i c k ) e v e r y t i m e a c h a r a c t e r i p r i n t e d .

T y p i n g I I E n t e r P r o g r a m 4 - a n s a v e i t t a p e o r d i s k b e f o r e p r o c e e di n g . S a v i n g i i m p o r t a n t b e c a u s e t h l a s t c o m m a n d i l i n e 1 2 i N E W , w h i c h e r a s e s t h p r o g r a m c u r r e n t l y i m e m o r y .

" B l i c k " i w r i t t e n i m a c h i n e l a n g u a g e ( M L ) , b u y o d o n ' t n e e d t k n o w M t u s i t I i p r e s e n t e d i t h f o r m o

B A S I C l o a d e r t h a t r e a d s D A T A s t a t e m e n t s a n P O K E s t h r o u t i n e i n t o m e m o r y . A f t e r r u n n i n g i t y o s h o u l d s e t h m e s s a g e B L I C K E N A B L E D .

O n c e B l i c k i i m e m o r y , t r p r i n t i n g m e s s a g e , P R I N T" T H I S I B L I C K " , f o e x a m p l e . O l o a d p r o g r a m a n l i s t i t S e t h t a b l e b e l o w f o i d e a s o c u s t o m i z i n g t h p r o g r a m .

I y o s h o u l d a c c i d e n t a l l y d i s a b l e B l i c k b p r e s s i n gR U N / S T O P - R E S T O R E o R U N / S T O P - R E S E T , e n t e r S Y 3 0 7 2 t r e e n a b l e B l i c k . T t u r n o f B l i c k , e n t e r t h f o l l o w i n ga l o o n l i n e :P O K E 8 0 6 , 1 2 1 : P O K E 8 0 7 , 2 3 9

T c h a n g e t h e c u r s o r c h a r a c t e r , s u b s t i t u t e t h a p p r o p r i a t eA S C I I v a l u e f o i t h f o l l o w i n g P O K E :P O K E 3 1 2 8 , *

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 166/228

C h a p t e r

F i n a l l y , t h e b l i n k i n g s p e e d c a b m o d i f i e d b s u b s t i t u t - ' — i n a n n u m b e r f r o m t 2 5 f o ( a n y t h i n g a b o v e 2 3 4 w i l ls p e e d i u p i t h i s s t a t e m e n t :P O K E 3 1 3 3 , 1 /

H o I W o r k sB l i c k i " w e d g e " t h a t t e m p o r a r i l y d i v e r t s t h P R I N T c o m a n d i n t o r o u t i n e t h a t p r i n t s a u n d e r l i n e c h a r a c t e r , m a k e s

s o u n d , a n e r a s e s t h u n d e r l i n e . W h e n i t ' s f i n i s h e d , i g o e so t t h m a i n P R I N T c o m m a n d .P R I N T i c o m m o n , e a s y - t o - u s e c o m m a n d i B A S I C . B u

a t h m a c h i n e l a n g u a g e l e v e l , P R I N T i m o r e c o m p l e x ; i h a t d l o o w o r k . F i r s t , t h c o m p u t e r l o o k s a h e a d t s e w h e t h e r i w i l l b p r i n t i n g a v a r i a b l e , n u m b e r , s t r i n g , o m a y b e e v e n l o n g c a l c u l a t i o n . O n c e t h a t ' s s t r a i g h t e n e d o u a n B A S I C k n o w s t h s e q u e n c e o c h a r a c t e r s t b p r i n t e d , i g o e s t h r o u g h t h K e r n a l r o u t i n e f o p r i n t i n g c h a r a c t e r s ( a l w a y sa l o c a t i o n $ F F D 2 o t h 1 2 8 ) . T h K e r n a l r o u t i n e l o o k s a l c a t i o n s 8 0 6 - 8 0 7 t f i n d t h a c t u a l R O r o u t i n e f o p r i n t i n gc h a r a c t e r .

T h i s p o i n t e r w a d e l i b e r a t e l y d e s i g n e d t b t h w e a k l i n ki t h p r o c e s s . I w c h a n g e t h a d d r e s s t h e r e , a n y t i m e t h c o m p u t e r w a n t s t p r i n t c h a r a c t e r , i r u n s i n t o d e t o u r w h a v e s e u p T h i s d e t o u r h a n d l e s t h e b l i n k a n t h c l i c k b e f o r ej u m p i n g b a c k t t h m a i n P R I N T r o u t i n e .

P r o g r a m 4 - 4 . B l i c kF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

B 1 0 F O R I = 3 0 7 2 T O 3 1 5 8 : R E A D A : P O K E I , A : C K = C K + A : N E X TX 1 1 I F C K O 1 0 9 9 8 T H E N P R I N T " E R R O R I D A T A S T A T E M E N

T S . " : S T O PF 1 2 S Y S 3 0 7 2 : P R I N T " B L I C K E N A B L E D " : N E W , S F 1 3 0 D A T A 1 6 9 , 1 5 , 1 4 1 , 2 4 , 2 1 2 , 1 4 1 , 1 9 , 2 1 2 , 1 6 9 , 1 2 0S 1 4 D A T A 1 4 1 , 1 5 , 2 1 2 , 1 6 9 , 1 , 1 4 1 , 1 4 , 2 1 2 , 1 6 9 , 0R 1 5 D A T A 1 4 1 , 2 0 , 2 1 2 , 1 6 2 , 3 4 , 1 6 0 , 1 2 , 1 4 2 , 3 8 , 3Q 1 6 D A T A 1 4 0 , 3 9 , 3 , 9 6 , 7 2 , 1 6 9 , 0 , 1 4 1 , 0 , 2 5 5S 1 7 D A T A 1 0 4 , 3 2 , 1 2 1 , 2 3 9 , 1 3 3 , 1 6 7 , 1 3 4 , 1 6 8 , 1 3 2 , 1 6 9F 1 8 D A T A 1 6 9 , 3 3 , 1 4 1 , 1 8 , 2 1 2 , 1 6 9 , 1 7 5 , 3 2 , 1 2 1 , 2 3 9P 1 9 D A T A 1 6 2 , 2 3 4 , 1 6 0 , 0 , 2 0 0 , 2 0 8 , 2 5 3 , 2 3 2 , 2 0 8 , 2 5 0S 2 0 D A T A 1 6 9 , 3 2 , 1 4 1 , 1 8 , 2 1 2 , 1 6 9 , 2 0 , 3 2 , 1 2 1 , 2 3 9E 2 1 D A T A 1 6 5 , 1 6 7 , 1 6 6 , 1 6 8 , 1 6 4 , 1 6 9 , 9 6

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 167/228

W o r d C o u n t e rT h o m a s K T u c k e r

I y o e v e r n e e d a q u i c k w o r d c o u n t o d o c u m e n t , t h i s p r o g r a mi f o y o u . I w o r k s w i t h t e x t f i l e s — p r o g r a m o s e q u e n t i a l — c r e a t e db a l m o s t a n w o r d p r o c e s s o r . d i s k d r i v e i r e q u i r e d .

T e a c h e r s a r f o n d o g i v i n g a s s i g n m e n t s i t e r m s o w o r d s :" 3 , 0 0 0 - w o r d t e r m p a p e r " o " 5 0 0 - w o r d e s s a y , " f o e x a m p l e .r e c e n t l y w r o t e s u c h p a p e r u s i n g t h w o r d p r o c e s s o r S p e e d -

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

S p a c e s s e p a r a t e w o r d s f r o m n e i g h b o r i n g w o r d s , s t h n u m b e r o s p a c e s i d o c u m e n t s h o u l d e q u a l t h n u m b e r o w o r d s . T h o n l y s n a g w o u l d b m u l t i p l e s p a c e s i t h f i l e .d i d n ' t w a n t t c o u n t a l t h s p a c e s , j u s t t h o n e s i m m e d i a t e l yp r e c e d e d b a c h a r a c t e r t h a t w a n o s p a c e .

T h B A S I C p r o g r a m c a m e u p w i t h l o o k e d s o m e t h i n gl i k e t h i s :1 Z = 0 : A $ = " " : B $ = "2 I N P U T " F I L E N A M E " ; F $3 O P E N l , 8 , 0 , F $ + " , P , R "4 G E T # 1 / A $5 I 6 A N S T H E N 9 6 I A $ = C H R $ ( 3 2 ) T H E N I B $ < >

C H R $ ( 3 2 ) T H E N Z = Z + 17 B A 8 G O T O 4 9 C L O S E1 0 P R I N T " N U M B E R O F W O R D S I

F I L E " ; Z + 21 1 E N

L i n e 5 c h e c k s f o t h e n o t h f i l e . L i n e 6 r u l e s o u c o u n t i n g c o n s e c u t i v e s p a c e s a m o r e t h a n o n w o r d . B e p e r i m e n t , f o u n d t h a t b a d d i n g t t h c o u n t e r ( Z ) , m o r ea c c u r a t e c o u n t i s h o w n . S i n c e p r i n t e r f o r m a t c o d e s a n c a r i a g e r e t u r n s a r c o u n t e d a w o r d s , 1 0 p e r c e n t a c c u r a t ec o u n t i n o p o s s i b l e . B u i t ' s r a r e l y i m p o r t a n t t h a t t h f i n a l

1 5

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 168/228

C h a p t e r

n u m b e r o w o r d s i e x a c t . ( I a n y o n e p e n a l i z e d f o b e i n g s i ' — w o r d s s h o r t i 2 , 0 0 0 - w o r d p a p e r ? )

S p e e d i n g I U T h B A S I C p r o g r a m a b o v e t o o k o v e r f o u r m i n u t e s t c o u n ta b o u t 2 , 5 0 0 w o r d s . M u c h t o s l o w .

W r i t i n g t h l o o p p a r t o f t h p r o g r a m ( l i n e s 4 t 8 0 i m a c h i n e l a n g u a g e ( M L ) s e e m e d t b t h a n s w e r . S i n c e i t ' ss h o r t r o u t i n e , i f i t s n i c e l y i n t o t h R S - 2 3 2 i n p u t b u f f e r a $ 0 C 0 0 ( 3 0 7 2 ) . T h M d a t a i P O K E d i n t o t h i n p u t b u f f e r b u s i n g D A T A s t a t e m e n t s .

L a t e r a d d e d t h d i r e c t o r y r o u t i n e a n t h o p t i o n o c o u n t i n g s e q u e n t i a l a w e l l a p r o g r a m f i l e s . T h i s p r o g r a ms h o u l d r e a d f i l e s w r i t t e n o a n w o r d p r o c e s s o r — b u t r e m e mb e r , t h m o r e p r i n t e r c o d e s t r i n g s u s e d i t h f i l e , t h l e s s a c u r a t e t h w o r d c o u n t . I n a n c a s e t h p r o g r a m i p r e t t y f a s t ,t a k i n g a b o u t 4 s e c o n d s t c o u n t 2 , 5 0 0 - w o r d , 6 0 - b l o c k f i l e .

H o t U s I " W o r d C o u n t e r " i e a s y t o u s e . T y p e i a n s a v e P r o g r a m 4 5 T h p r o g r a m a l i s t e d i f o t h 1 2 m o d e , b u i w i l l c o u n tw o r d s c r e a t e d b w o r d p r o c e s s o r i 6 o 1 2 m o d e .

W h e n y o u ' v e f i n i s h e d w r i t i n g a n s a v i n g y o u r d o c u m e n t ,l o a d W o r d C o u n t e r a n t y p e R U N . T h f i r s t p r o m p t i P R E S S

F O D I R E C T O R Y . I n s e r t t h e d i s k c o n t a i n i n g t h t e x t f i l ea n p r e s s D Y o u ' r e t h e n a s k e d t t y p e i t h f i l e n a m e a n t y p e ( P r o g r a m ) o ( S e q u e n t i a l ) f o f i l e t y p e . W o r d C o u n t e rr e a d s t h r o u g h t h f i l e , a n s e c o n d s l a t e r d i s p l a y s t h n u m b e ro w o r d s . Y o u ' r e t h e n a s k e d i y o u ' d l i k e t c o u n t t h w o r d si a n o t h e r f i l e .

E d i t o r ' s N o t e : W t e s t e d W o r d C o u n t e r w i t h t e x t f i l e s c r e a t e db y S p e e d S c r i p t , P a p e r b a c k W r i t e r ( 1 2 8 a n 6 v e r s i o n s ) , a n W o r d W r i t e r 1 2 8 . T h e p r o g r a m g a v e r e a s o n a b l y a c c u r a t e c o u n t ' — w i t h t h e s e f i l e s ( p r o g r a m o s e q u e n t i a l ) , w h i c h w e r e o v a r y i n gl e n g t h .P r o g r a m 4 - 5 . W o r d C o u n t e rF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

P 1 P R I N T " 1 C L R } " C H R $ ( 1 4 2 ) : B S = 3 0 7 2 : C O L O R 0 , 7 : C O L O R4 ,

C 2 I = I + 1 : R E A D A : I F A < 0 T H E N 5 0

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 169/228

U t i l i t i e s

Q 3 P O K E B S + 1 + I , AA 4 G O T O 2 0R 5 Z = 0 : D $ = " "E 6 P R I N T " l C L R } { 2 D O W N } P R E S S F O D I R E C T O R Y "K 7 G E T A $ : I F A $ = " " T H E N 7 0F 8 I F A $ o " D " T H E N 1 6 0X 9 O P E N 1 , 8 , 0 , " $ 0 "E S 1 0 0 P R I N T : F O R A = 1 T O 3 2 : G E T # 1 , C $ : N E X TK 1 1 G E T # 1 , B $ : I F S T < > 0 T H E N C L O S E 1 : S Y S 6 5 4 8 4 : G O T O 1 6 0B 1 2 I F B $ < > C H R $ ( 3 4 ) T H E N 1 1 0P 1 3 G E T # 1 , B $ : I F B $ < > C H R $ ( 3 4 ) T H E N D $ = D $ + B $ : G O T O 1 3 0M 1 4 G E T # 1 , B $ : I F B $ = C H R $ ( 3 2 ) T H E N 1 4 0A 1 5 P R I N T " " ; B $ ; " 1 3 S P A C E S } " ; D $ : D $ = " " : G O T O 1 1 0H 1 6 I N P U T " 1 2 D O W N j F I L E N A M E " ; F $A 1 7 I F F $ = " " T H E N P R I N T M { 4 U P } " : G O T O 1 6 0F E 1 8 0 P R I N T " l C L R } { 2 D O W N j F I L E T Y P E ? "E 1 9 P R I N T " ( 2 D O W N } { R V S j P l O F F j R O G R A M "G 2 0 P R I N T " t D O W N } { R V S } S I O F F J E Q U E N T I A L "H 2 1 G E T G $ : I F G $ o " P " A N D G $ < > " S " T H E N 2 1 0K 2 2 P R I N T " 1 2 D O W N } C O U N T I N G "B 2 3 I F G $ = " S " T H E N 2 5 0J 2 4 O P E N 1 , 8 , 0 , F $ + " , P , R " : G O T O 2 6 0M 2 5 O P E N 1 , 8 , 0 , F $ + " , S , R "F 2 6 S Y S B S + 2A 2 7 Z = P E E K ( B S ) + 2 5 6 * P E E K ( B S + l ) + 2R 2 8 P R I N T " I C L R } { D O W N } N U M B E R O W O R D S : " Z : C L O S E 1D 2 9 O P E N 1 5 , 8 , 1 5 , " 1 0 " : C L O S E 1 5G 3 0 P R I N T " I D O W N } A N O T H E R F I L E ? I 2 S P A C E S } ( Y / N )A 3 1 G E T A $ : I F A $ = " Y " T H E N 5 0A 3 2 I F A $ = " N " T H E N E N DC 3 3 G O T O 3 1 0H 3 4 D A T A 1 6 9 , 0 , 1 4 1 , 0 , 1 2 , 1 4 1 , 1 , 1 2 , 1 4 1 , 6 6 , 1 2 , 1 4 1 ,

6 7 , 1 2 , 1 6 2 , 1 , 3 2B 3 5 D A T A 1 9 8 , 2 5 5 , 3 2 , 1 8 3 , 2 5 5 , 4 1 , 6 4 , 2 0 8 , 3 4 , 3 2 , 2 0 7

, 2 5 5 , 1 4 1 , 6 6 , 1 2 , 2 0 1 , 3 2 , 2 0 8 , 1 5Q 3 6 D A T A 3 2 , 2 0 7 , 2 5 5 , 2 0 1 , 3 2 , 2 4 0 , 8 , 2 3 8 , 0 , 1 2 , 2 0 8 , 3

, 2 3 8 , 1 , 1 2 , 1 7 3 , 6 6 , 1 2 , 1 4 1B 3 7 D A T A 6 7 , 1 2 , 7 6 , 2 1 , 1 2 , 3 2 , 2 3 1 , 2 5 5 , 9 6 , 3 , 4 , - 1

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 170/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 171/228

C h a p t e r

P e r i p h e r a l s

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 172/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 173/228

S t o r a g e a n D i s p l a yT h t w m o s t i m p o r t a n t p e r i p h e r a l s y o u ' l l u s w i t h y o u r 1 2 a r e ad i s k d r i v e a n m o n i t o r . H e r e ' s s o m e h e l p f u l i n f o r m a t i o n o t h 1 5 7 1 d r i v e a n t h v i d e o d i s p l a y o p t i o n s t h a t a r a v a i l a b l e . A e c e r p t f r o m C h a p t e r 4 o C O M P U T E l ' s 1 2 P r o g r a m m e r ' s G u i d e .

A y o p r o b a b l y k n o w , t h 1 5 7 1 d r i v e h a t w s e p a r a t e o e r a t i n g m o d e s . I c a b e i t h e r f a s t , d o u b l e - s i d e d d r i v e ( 1 5 7 1m o d e ) o a s l o w e r , s i n g l e - s i d e d d r i v e ( 1 5 4 1 m o d e ) . I o r d i n a r yc i r c u m s t a n c e s , D O a u t o m a t i c a l l y u s e s 1 5 7 1 m o d e w h e n t h c o m p u t e r i i 1 2 m o d e , a n 1 5 4 1 m o d e w h e n y o s w i t c ht h c o m p u t e r t 6 m o d e w i t h G 6 4 H o w e v e r , i t ' s p o s s i b l et s w i t c h t h d r i v e f r o m o n m o d e t a n o t h e r u n d e r p r o g r a mc o n t r o l . T h f o l l o w i n g p r o g r a m s w i t c h e s f r o m 1 5 7 1 m o d e t 1 5 4 1 m o d e :1 O P E N 1 5 , 8 , 1 52 P R I N T # 1 5 , " U 0 > M 0 "3 C L O S E 1

A f t e r y o r u t h p r o g r a m , t h d r i v e w i l l r e a d a n w r i t et t h t o s i d e o t h e d i s k a l o n e , j u s t l i k e 1 5 4 1 . T r e t u r n t 1 5 7 1 m o d e , r e p l a c e l i n e 2 a s h o w n h e r e a n r e r u n t h p r o g r a m :2 P R I N T # 1 5 , " U O > M 1 "

Y o c a a l s o s w i t c h f r o m o n e r e a d / w r i t e h e a d t a n o t h e ri p r o g r a m . S w i t c h y o u r d r i v e t 1 5 4 1 m o d e , t h e n f o r m a tn e d i s k u s i n g t h e d i s k n a m e S I D E Z E R O . N o r e p l a c e l i n e2 a s h o w n h e r e a n r e r u n t h p r o g r a m :2 P R I N T # 1 5 , " U O > H 1 "

N o f o r m a t t h e d i s k a g a i n u s i n g t h d i s k n a m e S I D EO N E , t h e n r e a d t h e d i s k d i r e c t o r y .

R e p l a c e l i n e 2 0 w i t h t h i s l i n e a n r e r u n t h p r o g r a m :2 P R I N T # 1 5 , " U 0 > H 0 "

A t h i s p o i n t , t h d i s k d i r e c t o r y s h o u l d s h o w S I D E Z E R O .Y o n o h a v e d i s k f o r m a t t e d o b o t h s i d e s i 1 5 4 1 m o d e .E i t h e r s i d e m a b a c c e s s e d b c h a n g i n g d i s k h e a d s a s h o w na b o v e . I y o h a v e o l s i n g l e - s i d e d d i s k s a r o u n d , t h i s i o n

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 174/228

C h a p t e r

w a t e x t e n d t h e i r u s e f u l n e s s . N o t e , h o w e v e r , t h a t t h s e c - ' o n s i d e c a n n o t b r e a d i 1 5 4 1 d r i v e . I i o n l y r e a d a b l e b

1 5 7 1 d r i v e , w h i c h h a t w r e a d / w r i t e h e a d s r a t h e r t h a n o n e .

W h t h 1 5 7 1 I F a s t e r1 5 4 1 d i s k d r i v e c a r e a d a d i s k p r e t t y q u i c k l y . T h a t i s i

c a c o p y d a t a f r o m t h s u r f a c e o t h d i s k t i t i n t e r n a l m e o r f a s t e n o u g h . B u i t r a n s f e r s d a t a t t h c o m p u t e r a m u c h s l o w e r r a t e . T h p r o b l e m l i e s i t h e 1 5 4 1 ' s c o m m u n i c at i o n p r o t o c o l , w h i c h C o m m o d o r e h a f i t t i n g l y d u b b e d " s l o wm o d e . " T h e r e a r n o a a b u n d a n c e o C o m m o d o r e 6 4 p r og r a m s w h i c h i n c r e a s e t h s p e e d o t h 1 5 4 1 d r i v e . S u c h u t i l it i e s r e p r o g r a m b o t h t h d r i v e a n t h c o m p u t e r t a c c e l e r a t et h d a t a t r a n s f e r r a t e a t h r i s k o l e s s r e l i a b l e c o m m u n i c at i o n s . T h 1 5 7 1 o f f e r s m u c h f a s t e r t r a n s f e r m o d e s , a n w e ' l ls h o w y o h o t a c c e s s t h e m u n d e r p r o g r a m c o n t r o l . B u y o f i r s t n e e d t u n d e r s t a n d s o m e s i m p l e f a c t s a b o u t s e r i a l d a t at r a n s f e r .M o s t C o m m o d o r e p e r i p h e r a l s , i n c l u d i n g 1 5 4 1 a n 1 5 7 1d r i v e s , a t t a c h t t h c o m p u t e r t h r o u g h s e r i a l c o m m u n i c a t i o nb u s . T h t e r m b u i j a r g o n n a m e f o " g r o u p o f w i r e s , " a n s e r i a l m e a n s t h a t o n l y o n b i t ( l o g i c a l o 0 o d a t a c a m o v ea l o n g t h b u a t i m e . T s e n d b y t e o d a t a o v e r t h s e r i a lb u s , d e v i c e f i r s t h a t b r e a k t h d a t a d o w n i n t o i t e i g h tc o m p o n e n t b i t s . T h i s s o u n d s s l o w e r t h a n i r e a l l y i s S o m e s r i a l c o m m u n i c a t i o n s y s t e m s — t h e E t h e r n e t l o c a l - a r e a n e t w o r k ,f o i n s t a n c e — a r e v e r y f a s t . B u t h e r e ' s o n r e a s o n w h C o m o d o r e ' s s e r i a l b u i s s l o w . C o m m o d o r e c o m p u t e r s b u i l tb e f o r e t h 1 2 d o n ' t u s a n s p e c i a l - p u r p o s e h a r d w a r e f o s r i a l b u c o m m u n i c a t i o n s . I n s t e a d , t h c o m p u t e r ' s m i c r o p r o c e s s o re x e c u t e s p r o g r a m t c o n v e r t b y t e t b i t s a n s e n d b o t h t h d a t a a n a s s o c i a t e d c o n t r o l s i g n a l s ( l i k e " H e r e ' s a n o t h e r b i t "a n " I ' m d o n e , n o i t ' s y o u r t u r n t t a l k " ) d o w n t h b u s .S i n c e t h m i c r o p r o c e s s o r i s n ' t s p e c i f i c a l l y d e s i g n e d f o s u c ho p e r a t i o n s , i c a n ' t d t h e m a f a s t a s s p e c i a l - p u r p o s e s e r i a ld e v i c e .

T h 1 2 a n 1 5 7 1 u s n e s y s t e m c a l l e d f a s t s e r i a l m o d et r e l i e v e t h m i c r o p r o c e s s o r o m o s t s e r i a l c o m m u n i c a t i o nc h o r e s . I n t h o r i g i n a l s e r i a l p r o t o c o l , o n w i r e i t h s e r i a lb u c a b l e w a n a m e d — S e r v i c e R e q u e s t ( S R Q ) — b u t n e v e ru s e d . N o t h i s w i r e h a b e e n p u t w o r k c a r r y i n g a h i g h -

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 175/228

P e r i p h e r a l s

s p e e d c l o c k s i g n a l t a c c o m p a n y d a t a s e n t a f a s t e r r a t e .S i n c e t h e c l o c k s i g n a l a n t h d a t a m o v e f a s t e r t h a n t h m i c r o p r o c e s s o r c a f o l l o w , t h C o m p l e x I n t e r f a c e A d a p t e rc h i p a l o c a t i o n $ D C 0 0 ( C I A # 1 a s s u m e s m o r e r e s p o n s i b i l i t yf o c o m m u n i c a t i o n s . T h C I A ' s S e r i a l D a t a R e g i s t e r ( S D R ) a l o c a t i o n $ D C 0 C w a u n u s e d o t h 6 4 B u i t h 1 2 8 , i r e a d sa n w r i t e s t t h s e r i a l b u s ' s d a t a l i n e . T h u s , i t h e 1 2 8 ' s f a s ts e r i a l m o d e , t h m o s t s p e e d - c r i t i c a l t a s k s a r e d o n e b h a r dw a r e t h a t w a u n u s e d ( o u n d e r u s e d ) o t h 6 4

W h L e a r n A b o u t F a s t M o d e ?S o m e p e o p l e — C o m m o d o r e ' s p r o g r a m m e r s , f o i n s t a n c e —h a v e t k n o w t h d e t a i l s o s e r i a l c o m m u n i c a t i o n b a c k w a r da n f o r w a r d , b u y o c a i g n o r e a l t h b i t s a n b y t e s a n t h r e e - l e t t e r w o r d s a n s t i l l b e n e f i t f r o m f a s t s e r i a l m o d e . E v e r ys e r i a l i n p u t / o u t p u t r o u t i n e i t h 1 2 8 ' s o p e r a t i n g s y s t e m h a b e e n w r i t t e n t u s f a s t m o d e w h e n e v e r i c a n . W h e n e v e rs e r i a l d e v i c e i a c t i v e , t h 1 2 c h e c k s t s e i i c a h a n d l ef a s t m o d e . W h e t h e r y o a c c e s s t h d e v i c e f r o m B A S I C o m c h i n e l a n g u a g e , f a s t m o d e w i l l b u s e d i y o h a v e 1 5 7 1c o n n e c t e d t y o u r 1 2 8 .

F o s o m e d i s k o p e r a t i o n s , t h 1 5 7 1 i e v e n f a s t e r b e c a u s eo n e b u r s t m o d e d i s k a c c e s s c o m m a n d s . I c o n v e n t i o n a l d i s ka c c e s s , e a c h r e q u e s t f o d a t a f r o m t h d r i v e r e t u r n s o n l y o n b y t e . W h e n y o u ' r e l o a d i n g l a r g e f i l e , t h c o m p u t e r s p e n d sm o s t o i t t i m e s a y i n g " n e x t b y t e , p l e a s e " o v e r a n o v e ra g a i n . B u r s t c o m m a n d s , o t h o t h e r h a n d , t e l l t h d i s k d r i v et p a s s m a n y b l o c k s ( 2 5 6 - b y t e p a c k a g e s ) o d a t a w i t h o u t a n f u r t h e r i n s t r u c t i o n . T h e s e c o m m a n d s c a o p e r a t e o a m a n ya 2 5 b l o c k s o f d i s k d a t a a t i m e . T h e r e i a l s o n e f a s tl o a d c o m m a n d t h a t r e a d s c o m p l e t e d i s k f i l e i o n o p e r at i o n . A C P / M u s e r s w i l l b g l a d t l e a r n , b u r s t m o d e i a l s oa v a i l a b l e w i t h a n c o m m a n d t h a t r e l a t e s t o M F M - f o r m a t t e d( n o n - C o m m o d o r e C P / M ) d i s k s .

S i n c e t h c o m p u t e r ' s L O A D r o u t i n e k n o w s a b o u t f a s tl o a d , o r d i n a r y B A S I C c o m m a n d s l i k e L O A D , D L O A D , a n B L O A D ( a w e l l a M r o u t i n e s w h i c h c a l l K e r n a l L O A D ) u s b u r s t m o d e i f i t ' s a v a i l a b l e . U n f o r t u n a t e l y , s i n c e t h e r e i n c o r r e s p o n d i n g f a s t s a v e c o m m a n d , a l s a v e o p e r a t i o n s t r a n s f e rd a t a a t h n o r m a l b y t e - b y - b y t e r a t e .

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 176/228

L C h a p t e r

V i d e o D i s p l a y sL i k e v i r t u a l l y e v e r y o t h e r m i c r o c o m p u t e r , t h C o m m o d o r e 1 2 c o m m u n i c a t e s w i t h y o u , t h e p r o g r a m m e r , c h i e f l y t h r o u g hm o n i t o r o s o m e t y p e o d i s p l a y s c r e e n . S e v e r a l o p t i o n s a r ' — a v a i l a b l e t a c c o m m o d a t e w i d e v a r i e t y o n e e d s .

T h l e a s t e x p e n s i v e a l t e r n a t i v e i t c o n n e c t t h c o m p u t e rt a o r d i n a r y T V u s i n g t h c a b l e a n s w i t c h b o s u p p l i e d b ' — t h m a n u f a c t u r e r . T h R ( R a d i o F r e q u e n c y ) m o d u l a t e d o u t p u to t h c o m p u t e r c o n t a i n s b o t h a u d i o a n v i d e o s i g n a l s , w h i c ht h T r e c e i v e s t h r o u g h i t a n t e n n a i n p u t l i k e a o r d i n a r yb r o a d c a s t s i g n a l . T h o u g h i h a t h a d v a n t a g e o l o c o s t ,T h o o k u p r a r e l y p r o v i d e s a c l e a r a d i s p l a y a u s i n g d e d ic a t e d m o n i t o r . T h R c a b l e a c t s a a a n t e n n a o s o r t s , p i c ki n u s t r a y s i g n a l s f r o m t h g e n e r a l v i c i n i t y . I t h p a s t f e y e a r s , a i n c r e a s i n g n u m b e r o c o m b i n a t i o n T V / m o n i t o r d v i c e s h a v e a p p e a r e d o t h m a r k e t . T h e s e a r e s s e n t i a l l y t e l ev i s i o n s w i t h e x t r a c o n n e c t i o n s f o d i r e c t i n p u t f r o m h o m ec o m p u t e r o v i d e o - r e c o r d i n g d e v i c e . I m o n i t o r m o d e , t h d v i c e b y p a s s e s t h T c i r c u i t s t h a t r e c e i v e b r o a d c a s t s i g n a l s ,u s u a l l y p r o v i d i n g d i s p l a y e q u a l t t h a t o d e d i c a t e d m o n i t o r .

I y o h a v e o w n e d o u s e d a n o t h e r C o m m o d o r e c o m p u t e rb e f o r e p u r c h a s i n g y o u r 1 2 8 , c h a n c e s a r g o o d t h a t y o u ' r e f m i l i a r w i t h t h m o s t p o p u l a r t y p e o d e d i c a t e d m o n i t o r — t h ec o m p o s i t e m o n i t o r . T h i s t y p e i n c l u d e s t h e C o m m o d o r e 1 7 0 1a n 1 7 0 2 m o n i t o r s ( a n d m a n y s i m i l a r n o n - C o m m o d o r e d v i c e s ) , w h i c h d i s p l a y a e x c e l l e n t i m a g e i 4 0 - c o l u m n m o d e .T h e s e m o n i t o r s a r c o n n e c t e d t t h c o m p u t e r t h r o u g h t h e i g h t - p i n v i d e o c o n n e c t o r a t h c o m p u t e r ' s r e a r . C o m m o d o r ec o m p o s i t e m o n i t o r s u s u a l l y p r o d u c e t h b e s t p i c t u r e t h r o u g ht h r e a r c o n n e c t o r s , w h i c h s p l i t t h c o l o r p o r t i o n o t h s i g n a li n t o s e p a r a t e c h r o m a ( c o l o r ) a n d l u m a ( b r i g h t n e s s ) s i g n a l s ,r a t h e r t h a n t h o s e i t h f r o n t o f t h e d e v i c e .

m o n o c h r o m e m o n i t o r , t h o u g h i p r o v i d e s n c o l o r ( a n do f t e n n s o u n d ) , o f f e r s a n o t h e r i n e x p e n s i v e a l t e r n a t i v e . F o 4 0 - c o l u m n d i s p l a y , s i m p l y c o n n e c t t h l u m a o u t p u t p l u g o t h v i d e o o u t p u t c a b l e t t h m o n i t o r ' s i n p u t ( l u m a i e s s e n -t i a l l y t h v i d e o s i g n a l s t r i p p e d o i t c o l o r i n f o r m a t i o n ) . d i a -g r a m o t h e p i n s i t h v i d e o o u t p u t a p p e a r s i y o u r 1 2 S y s t e m G u i d e . I y o u ' r e n o s u r e w h i c h p l u g i l u m a , g a h e a da n e x p e r i m e n t . Y o c a n ' t h a r m e i t h e r d e v i c e b m o m e n t a r i l yc o n n e c t i n g t h w r o n g p l u g t t h m o n i t o r . M o n o c h r o m e d i p l a y s a r u s u a l l y v e r y s h a r p — m o r e d i s t i n c t t h a n t h e b e s t d i s -1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 177/228

P e r i p h e r a l s

p l a y p r o d u c e d b c o m p o s i t e m o n i t o r .T h t h i r d m a j o r t y p e o m o n i t o r i t h R G B I ( R e d / G r e e n /

B l u e / I n t e n s i t y ) , i w h i c h s e p a r a t e s i g n a l i p r o v i d e d f o e a c ho t h t h r e e p r i m a r y v i d e o c o l o r s — r e d , g r e e n , a n b l u e . T h 1 2 8 ' s 8 0 - c o l u m n d i s p l a y i i R G B I f o r m a t . S i n c e t h n i n e - p i nR G B I c o n n e c t o r a t h r e a r o t h 1 2 i m u c h l i k e t h a t o a I B P o r P C j r , y o s h o u l d b a b l e t u s a n c o l o r m o n i t o rc o m p a t i b l e w i t h t h o s e m a c h i n e s . B e s i d e s p r o v i d i n g a e t r e m e l y c l e a r i m a g e , a R G B I m o n i t o r g i v e s y o 8 c o l u m n s o c h a r a c t e r s o t h s c r e e n — i d e a l f o w o r d p r o c e s s i n g , s p r e a ds h e e t s , a n s o n T h C o m m o d o r e 1 9 0 2 m o n i t o r , d e s i g n e de x p r e s s l y f o t h 1 2 8 , i d u a l m o n i t o r : Y o c a s w i t c h i f r o m 4 0 - c o l u m n c o m p o s i t e m o d e t 8 0 - c o l u m n R G B I m o d es i m p l y b p r e s s i n g s w i t c h .

T h o u g h i r e q u i r e s m a k i n g y o u r o w c o n n e c t o r c a b l e , y o c a g e a a c c e p t a b l e 8 0 - c o l u m n m o n o c h r o m e d i s p l a y o C o m m o d o r e 1 7 0 1 o 1 7 0 2 m o n i t o r . T h f i r s t s t e p i t p u c h a s e s t a n d a r d m a l e n i n e - p i n c o n n e c t o r ( R a d i o S h a c k p a r t# 2 7 6 - 1 5 3 7 i a c c e p t a b l e ) , l e n g t h o s h i e l d e d c o a x i a l c a b l e ,a n a o r d i n a r y R C p h o n o p l u g . A s s h o w n o p a g e 3 5 o t h C o m m o d o r e 1 2 S y s t e m G u i d e , p i o t h R G B I c o n n e c t o ri g r o u n d , a n p i i m o n o c h r o m e o u t p u t . ( N o t e t h a t t h d a g r a m o n p a g e 3 5 s h o w s t h p i n s a i y o a r i n s i d e t h c o m p u t e r l o o k i n g o u t . T h p i n s o t h p l u g y o b u s h o u l d b n u m b e r e d ; j u s t l o o k f o p i n s a n 7 . T m a k e a 8 0 - c o l u m nc a b l e , y o u n e e d o n l y c o n n e c t p i o t h c o n n e c t o r t t h s i g n a l ( i n n e r ) p o r t i o n o t h R C p l u g a n c o n n e c t p i t t h g r o u n d ( o u t e r ) p o r t i o n o t h p l u g ( v i a t h c o a x i a l c a b l e , o c o u r s e ) . I y o d o n ' t k n o w h o t d t h i s y o u r s e l f , a n f r i e n dw i t h s o l d e r i n g i r o n a n s o m e e l e c t r o n i c s e x p e r i e n c e s h o u l db a b l e t d i f o y o u .

h o m e b r e w c a b l e o f t h i s t y p e p r o d u c e s a e x c e l l e n t 8 0 c o l u m n i m a g e o a n m o n o c h r o m e m o n i t o r t h a t a c c e p t s c o p o s i t e o u t p u t , a n a a c c e p t a b l e d i s p l a y o C o m m o d o r e1 7 0 1 o 1 7 0 2 m o n i t o r . T u s i w i t h C o m m o d o r e c o m p o s i t em o n i t o r , t u r n t h e c o n t r a s t d o w n a n p l u g t h R C c o n n e c t o re n o t h e c a b l e i n t o t h V I D E O c o n n e c t o r o t h f r o n t o r t h eL U M A c o n n e c t o r o t h b a c k . T h o r d i n a r y l i g h t - o n - d a r k d i p l a y w i l l p r o b a b l y n o b v e r y r e a d a b l e : P r e s s E S C - R t s w i t c h t d a r k c h a r a c t e r s o l i g h t b a c k g r o u n d . T h o u g h i t ' sn o q u i t e R G B I q u a l i t y , t h i m a g e i d e f i n i t e l y u s a b l e a n g i v e s y o a c c e s s t 8 c o l u m n s a c o s t o o n l y f e d o l l a r s .

1 6

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 178/228

D i s k C o m m a n d sT o d d H e i m a r c k

1 7

W h e t h e r y o h a v e 1 5 4 1 d i s k d r i v e o r n e 1 5 7 1 , t h e r e a r n u m b e r o p o w e r f u l d i s k c o m m a n d s a v a i l a b l e t y o u ; a l s o i n c l u d e dh e r e a r s o m e u s e f u l h i n t s a n s h o r t c u t s . i —

B A S I C 7 . i v a s t i m p r o v e m e n t o v e r p r e v i o u s C o m m o d o r eB A S I C s . T h c o m p u t e r h a i t s h a r e o f l a s h y n e c o m m a n d s ,t h o n e s t h a t g i v e y o P O K E l e s s s p r i t e s , e a s y - t o - p r o g r a m m s i a n s o u n d e f f e c t s , a n h i - r e s g r a p h i c s . T h g l a m o u r o t h e s e p o w e r f u l k e y w o r d s c a e a s i l y b e w i t c h n e 1 2 o w n e r .

D i s k c o m m a n d s , o t h e o t h e r h a n d , a r j u s t d i s k c o m a n d s . T h e y ' r e m u n d a n e . B u i y o l e a r n a b o u t t h n e w a y s o l o a d i n g , s a v i n g , a n h a n d l i n g f i l e s , y o u ' l l s a v e l o o t i m e , t i m e t h a t c o u l d b s p e n t p r o g r a m m i n g — o r p l a y i n g w i t hs p r i t e s , m u s i c , a n h i - r e s g r a p h i c s .

W e ' l l c o n c e n t r a t e o u s i n g t h 1 2 d i s k c o m m a n d s , m o s to w h i c h w o r k e q u a l l y w e l l o t h 1 5 4 1 d i s k d r i v e o r t h n e 1 5 7 1 . B u w e ' l l a l s o t o u c h b r i e f l y o f e o t h n e 1 5 7 1D O c o m m a n d s .

D o z e n W a y s t L o a dI y o w a n t t l o a d B A S I C p r o g r a m , y o h a v e f o u r c h o i c e s :

1 L O A D " f i l e n a m e " , 82 D L O A D " f i l e n a m e "3 R U " f i l e n a m e "4 P r e s s S H I F T - R U N / S T O P

F o m a c h i n e l a n g u a g e o b i n a r y f i l e s :5 L O A D " f i l e n a m e " , * , !6 B L O A D " f i l e n a m e "7 B L O A D " f i l e n a m e " , B b a n k , P a d d r e s s8 B O O T " f i l e n a m e " [

F r o m w i t h i n t h m a c h i n e l a n g u a g e m o n i t o r :9 " f i l e n a m e " , S

1 0 " f i l e n a m e " , 8 , a d d r e s s ' —

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 179/228

P e r i p h e r a l s

F i n a l l y , t h e r e a r t w w a y s t s t a r t u a u t o b o o t p r o g r a m s :1 1 B O O T1 2 T u r n o o r e s e t t h c o m p u t e r w i t h a a u t o b o o t d i s k i

t h d r i v e .

L o a d i n g B A S I C P r o g r a m sA i B A S I C 2 . 0 , t h L O A D c o m m a n d d e f a u l t s t t a p e , s y o m u s t i n c l u d e t h e d e v i c e n u m b e r w h e n l o a d i n g f r o m d i s k . B u L O A D s h o u l d n e v e r b n e c e s s a r y w h e n D L O A D a n R U a r a v a i l a b l e .

D L O A D i n e c o m m a n d ; t h s t a n d s f o " D i s k / ' a n i d e f a u l t s t o d r i v e 0 d e v i c e 8 I y o o w d u a l d r i v e , y o c a a d c o m m a a n e i t h e r D o D t p i c k d r i v e f o l o a di n g . U n f o r t u n a t e l y , 1 2 o w n e r s m a n e v e r s e t h 1 5 7 2 d u a ld r i v e ; a o t h i s w r i t i n g , C o m m o d o r e h a a p p a r e n t l y d e c i d e dn o t m a n u f a c t u r e i t Y o c a s t i l l a d s i n g l e d r i v e s t y o u rs y s t e m , t h o u g h . T a c c e s s s e c o n d o t h i r d d r i v e , f o l l o wD L O A D w i t h c o m m a a n U 9 U 1 0 , a n s o n T h c u r r e n td e v i c e n u m b e r o t h 1 5 7 1 c a n b s e l e c t e d b f l i p p i n gs w i t c h e s o t h e b a c k . T c h a n g e t d e v i c e 9 f o e x a m p l e ,m a k e s u r e i t ' s t u r n e d o f a n f l i p d o w n t h s w i t c h n e a r e s t t t h c o r d s . T h i s i m u c h s i m p l e r t h a n w h a t ' s r e q u i r e d t m o i f 1 5 4 1 , o p e n i n g i u a n c u t t i n g s o l d e r t r a c e .

T h n e x t c o m m a n d o t h l i s t , R U N , h a b e e n m o d i f i e d .B i t s e l f , i s t i l l r u n s p r o g r a m , b u i y o u a d d p r o g r a mn a m e , t h p r o g r a m l o a d s a n r u n s . A w i t h D L O A D a n m o s to t h e r d i s k c o m m a n d s , y o u c a s p e c i f y a d r i v e n u m b e r w i t ho r d e v i c e n u m b e r w i t h a f t e r t h p r o g r a m n a m e .

I 6 m o d e , p r e s s i n g S H I F T - R U N / S T O P s t i l l l o a d s a n r u n s t h f i r s t p r o g r a m f r o m t a p e . B u i 1 2 m o d e , t h i s c o b i n a t i o n l o a d s a n r u n s t h f i r s t p r o g r a m o d i s k .

B L O A D i n g B i n a r y F i l e sb i n a r y f i l e i s m o s t o f t e n a m a c h i n e l a n g u a g e p r o g r a m , a

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

I y o u ' r e f a m i l i a r w i t h t h V I o 6 4 y o u ' l l r e c o g n i z eL O A D " f i l e n a m e " , 8 , 1 - I l o a d s f i l e b a c k i n t o t h p a r t o m e m o r y f r o m w h i c h i w a s a v e d .

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 180/228

C h a p t e r

B L O A D d o e s t h s a m e t h i n g , b u y o d o n ' t h a v e t i n ' e l u d e t h e 8 a n t h 1 B L O A D c a a l s o s e n d f i l e t d i f f e re n t s e c t i o n o m e m o r y i y o a p p e n d ( f o r B a n k n u m b e r )a n ( P o s i t i o n ) . W i t h a n u n e x p a n d e d 1 2 8 , t h o n l y t w ' — c h o i c e s f o t h b a n k a r a n 1 B A S I C p r o g r a m s a r s t o r e di b a n k 0 v a r i a b l e s i b a n k 1 T h p o s i t i o n c a b a n m e m -o r l o c a t i o n i t h r a n g e 0 - 6 5 5 3 5 . ' —

B O O T " f i l e n a m e " l o a d s m a c h i n e l a n g u a g e p r o g r a m a n e x e c u t e s S Y t t h s t a r t i n g a d d r e s s . I t ' s t h m a c h i n e l a g u a g e e q u i v a l e n t o R U " R e n a m e " f o B A S I C p r o g r a m s .Y o c a a l s o l o a d f r o m w i t h i n t h m a c h i n e l a n g u a g em o n i t o r w i t h t h c o m m a n d . A f t e r t h f i l e n a m e , y o m u s ti n c l u d e c o m m a a n a ( f o r d e v i c e 8 t h e d i s k d r i v e ) . I y o w i s h t r e l o c a t e t h p r o g r a m t d i f f e r e n t s e c t i o n o m e m o r y ,y o c a i n c l u d e t h n e a d d r e s s a w e l l .

A u t o b o o t S e c t o r sW h e n y o f i r s t t u r n o a 1 2 8 , i c h e c k s t s e w h e t h e r a d i s kd r i v e i a t t a c h e d a n t u r n e d o n I s o i t r i e s t r e a d t r a c k 1 s e c t o r i n t o m e m o r y ( t h e 2 5 b y t e s o t h b o o t s e c t o r a r r e a d i n t o l o c a t i o n s $ 0 B 0 0 - $ 0 B F F ) . I t h l e t t e r s C B a r f o u n da t h b e g i n n i n g o t h a t d i s k s e c t o r , t h a u t o b o o t s e q u e n c eb e g i n s .

Y o c a s e h o t h i s w o r k s b f o l l o w i n g t h i s p o w e r - o ns e q u e n c e :1 T u r n o y o u r T V / m o n i t o r a n d d i s k d r i v e , b u t n o t t h 1 2 8 .2 I n s e r t t h C P / M d i s k t h a t c a m e w i t h t h 1 2 i n t o t h 1 5 4 1

o 1 5 7 1 .3 T u r n o t h 1 2 8 .

T h C P / M d i s k h a a a u t o b o o t s e c t o r ; i t ' s d e s i g n e d t l o a d a n r u C P / M a u t o m a t i c a l l y . A a l t e r n a t i v e t r e s e t t i n gt h c o m p u t e r i t e n t e r B O O T w i t h o u t f i l e n a m e . ]

A u t o b o o t s e c t o r s a r e n ' t l i m i t e d t C P / M . I t ' s p o s s i b l e t ' — c r e a t e d i s k s t h a t a u t o m a t i c a l l y l o a d a n r u B A S I C o a M p r o g r a m . T c r e a t e s u c h d i s k , l o a d a n r u t h A U T O B O O TM A K E R p r o g r a m o t h d i s k t h a t c o m e s w i t h t h e 1 5 7 1 . ' —

T h f i r s t t h r e e b y t e s o t r a c k 1 s e c t o r ( t h e c h a r a c t e r s C B a n M a r f o l l o w e d b t h l o b y t e o t h l o a d a d d r e s s ,t h h i g h b y t e , t h b a n k n u m b e r f o t h l o a d , a n t h n u m b e r ' — o f s e q u e n t i a l d i s k s e c t o r s t b l o a d e d . T h e s e f o u r b y t e s a r e n ' ti m p o r t a n t w h e n y o u ' r e a u t o b o o t i n g B A S I C p r o g r a m s , s t h e y1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 181/228

P e r i p h e r a l s

s h o u l d u s u a l l y b z e r o s . S t a r t i n g a t h e i g h t h b y t e , y o p u t h e d i s k n a m e ( f o r t h B O O T I N G m e s s a g e ) , a n e n w i t hz e r o . N e x t i t h n a m e o t h p r o g r a m y o u w a n t e d t l o a d ,a g a i n t e r m i n a t e d b z e r o . F i n a l l y , t h e r e ' s m a c h i n e l a n g u a g ew h i c h w i l l b c a l l e d a f t e r t h l o a d .

C h a i n e d P r o g r a m sC o m m o d o r e c o m p u t e r s h a v e a l w a y s h a p r o b l e m s w i t h c h a i ni n g , t h p r o c e s s o l o a d i n g a n r u n n i n g o n p r o g r a m f r o mw i t h i n a n o t h e r . T h d i f f i c u l t i e s s t e m m e d f r o m t h w a v a r ia b l e s w e r e s t o r e d i m e m o r y i p r e v i o u s C o m m o d o r e s : T h b e g i n n i n g o f v a r i a b l e s t o r a g e i m m e d i a t e l y f o l l o w e d t h e n o t h B A S I C p r o g r a m .

C h a i n i n g i s n a p o t h 1 2 8 . S i n c e t h p r o g r a m i k e p ts e p a r a t e f r o m v a r i a b l e s , y o d o n ' t n e e d t w o r r y a b o u t p r g r a m l e n g t h . T l o a d a n r u a n o t h e r p r o g r a m , j u s t f o l l o wt h e s e r u l e s :1 . I f y o w a n t t k e e p t h v a r i a b l e s f r o m t h f i r s t p r o g r a m ,u s D L O A D . T h s e c o n d p r o g r a m l o a d s a n r u n s . A l l v a r i

a b l e v a l u e s a r r e t a i n e d .2 I y o w a n t t c l e a r t h v a r i a b l e s , u s R U " f i l e n a m e " ,

w h e r e f i l e n a m e i t h n a m e o t h s e c o n d p r o g r a m .3 T l o a d b i n a r y f i l e , u s e i t h e r B L O A D " f i l e n a m e " o B O O T

" f i l e n a m e " .

S h o r t c u tT h e r e ' s q u i c k a n c o n v e n i e n t w a t D L O A D o R U p r g r a m i y o s a v e i c e r t a i n w a y . I n c l u d e t h i s l i n e a t t h b g i n n i n g o t h p r o g r a m y o u ' r e w o r k i n g o n

R E D S A V E " 0 1 P R O G R A M -N A M E { S H I F T - S P A C E } :

T h { S H I F T - S P A C E } m e a n s h o l d d o w n S H I F T a n p r e s st h s p a c e b a r . P l a y w i t h t h s p a c i n g o t h l i n e s t h a t p r e s si n T A o n c e p u t s t h c u r s o r i n f r o n t o D S A V E a n p r e s s i n gi t w i c e l a n d s t h e c u r s o r o t h i n f r o n t o t h p r o g r a mn a m e . W h e n y o u w a n t t d s a f e t y s a v e o a i n c o m p l e t ep r o g r a m , L I S T a n T A t w i c e . C h a n g e v e r s i o n n u m b e r 0 t 0 2 a n p r e s s R E T U R N . N o c u r s o r u t t h b e g i n n i n g o t h l i n e a n T A o n c e . T a t h E S k e ( n e x t t T A B ) a n t h e n p r e s s P T h i s e r a s e s e v e r y t h i n g f r o m t h c u r s o r t t h e b e -

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 182/228

C h a p t e r— — _ ^ = _ _g i n n i n g o t h l i n e ( E S C - Q e r a s e s e v e r y t h i n g t t h e n o l i n e , a n d y o u c a r e m e m b e r t h e s e t w E S c o m m a n d s i y o m i n d y o u r p ' a n q ' s ) . P r e s s R E T U R N , a n y o u r p r o g r a m i s a v e d t d i s k w i t h t h n e v e r s i o n n u m b e r .

L a t e r , w h e n y o c o m e b a c k t w o r k o t h p r o g r a m , p r e s sF t s e e t h e d i r e c t o r y ( i i g o e s b t o f a s t , t h C o m m o d o r ek e s l o w s i d o w n ; t h N S C R O L L k e t e m p o r a r i l y p a u s e si t ) . W h e n y o s e e t h e l a t e s t v e r s i o n , p r e s s R U N / S T O P . C u r s o ru t t h p r o g r a m n a m e a n t y p e D L O A D o R U N . B e t t e r y e t ,p r e s s F ( D L O A D ) o F 6 ( R U N ) . T h S H I F T - S P A C E i l i n ep u t s q u o t a t i o n m a r k b e t w e e n t h p r o g r a m n a m e a n t h c l o n . W i t h o u t t h c o l o n , D L O A D o R U w o u l d i n t e r p r e t P R a s p a r t o f t h c o m m a n d .

A n o t h e r a d v a n t a g e t i n c l u d i n g t h e D S A V E o l i n e i t h a t w h e n y o s e n d p r o g r a m l i s t i n g t y o u r p r i n t e r , t h v e s i o n n u m b e r i r i g h t t h e r e a t h e t o p o t h e p a g e .

S a v i n gH e r e a r f e w a y s t s a v e p r o g r a m s :1 S A V E " f i l e n a m e " , *2 D S A V E " f i l e n a m e "3 B S A V E " f i l e n a m e " , B b a n k , P s t a r t T F e n d4 F r o m t h M m o n i t o r : " f i l e n a m e " , 8 , s t a r t , e n d + 1

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

Y o m i g h t t h i n k t h e s e t w o m e t h o d s w o u l d b m o s t u s e f u lf o s a v i n g M p r o g r a m s . T h e y a r g o o d f o t h a t , o c o u r s e , b u t h e r e a r e a l s o s e v e r a l a r e a s o m e m o r y y o m a w a n t t B S A V Ef o u s i B A S I C p r o g r a m : i $ 0 E 0 0 - $ 0 F F F S p r i t e d e f i n i t i o n s ' —

1 0 0 0 - $ O F T e f u n c t i o n k e d e f i n i t i o n s$ 1 C O O - $ 3 F F F H i - r e s s c r e e n

T h a d d r e s s e s a r l i s t e d i h e x a d e c i m a l . T c o n v e r t t d e c i m a l , u s t h D E f u n c t i o n , P R I N T D E C ( " 0 E 0 0 " ) , f o e x a m p l e .

I y o c r e a t e s e v e r a l s p r i t e s w i t h S P R D E F f o g a m e , y o c a B S A V E t h s p r i t e a r e a t d i s k . I t h g a m e , y o w o u l d

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 183/228

P e r i p h e r a l s

t h e n B L O A D t h e m b a c k i n t o m e m o r y . T h i s w o r k s l o f a s t e rt h a n P O K E i n g t h e m i n t o m e m o r y o r e a d i n g s e q u e n t i a l f i l e ,e s p e c i a l l y i y o u ' r e u s i n g 1 5 7 1 .

I n c a s e y o u ' r e w o n d e r i n g a b o u t t h e r e f e r e n c e a b o v e t t e f u n c t i o n k e y s , y e s , t h e r e a r t e r e d e f i n a b l e k e y s . T h e r e a r t h e i g h t y o c a d e f i n e w i t h t h K E c o m m a n d ( l a b e l e dF 1 - F 8 ) , b u a l s o S H I F T - R U N / S T O P a n d H E L P . I y o g i n t ot h m o n i t o r a n d m e m o r y d i s p l a y o 1 0 0 0 - 1 O F F , y o c a s e e t h e t e n k e d e f i n i t i o n s . T h f i r s t t e b y t e s i t h i s a r e a l i s tt h l e n g t h o e a c h f u n c t i o n k e y . T h r e s t a r t h a c t u a l c h a r a ct e r s t h a t p r i n t w h e n y o p r e s s o n o t h e m . T h n u m b e r 1 i A S C I I f o c a r r i a g e r e t u r n , t h e q u i v a l e n t o p r e s s i n g t h e R T U R N k e y . A f t e r r e d e f i n i n g t h e k e y s , y o c a B S A V E t h e i rn e v a l u e s . T r e t r i e v e t h p r e v i o u s k e d e f i n i t i o n s , u s B L O A D .

H a n d l i n g S e q u e n t i a l F i l e sD O P E N a n D C L O S E a r n e w a y s o f e s t a b l i s h i n g a n b r e a k i n g c o n n e c t i o n s w i t h s e q u e n t i a l f i l e . T h e r e ' s n o m u c ht s a a b o u t t h e m ; i y o a l r e a d y k n o w h o t O P E N a n C L O S E s e q u e n t i a l f i l e s , y o u ' l l c a t c h o q u i c k l y . T h d i f f e r e n c ei s y n t a x i i l l u s t r a t e d b e l o w :O P E N 3 , 8 A , " f H e n a m e , S , V f "D O F E N # 3 , " f i l e n a m e " , W

N o t e t h a t D O P E N d o e s n ' t n e e d a m u c h i n f o r m a t i o n a O P E N . O P E N i g e n e r a l - p u r p o s e c o m m a n d ; i c a s e u l o g i c a l f i l e t a d i s k f i l e , t a p e f i l e , p r i n t e r , m o d e m , a n s o n D O P E N , o t h o t h e r h a n d , i f o d i s k f i l e s o n l y . S O P E N n e e d s t h d e v i c e n u m b e r a n d i s k c h a n n e l ( , 8 , 4 ) , b u D O P E N d o e s n ' t . T h a f t e r t h f i l e n a m e i n d i c a t e s t h a t s q u e n t i a l f i l e w i l l b o p e n e d . S i n c e D O P E N d e f a u l t s t s e q u e nt i a l f i l e s , i t o i u n n e c e s s a r y . A l s o , n o t e t h a t t h f o W r i t ei o u t s i d e t h q u o t a t i o n m a r k s i t h s e c o n d e x a m p l e .

A P P E N D i v a r i a t i o n o D O P E N . I o p e n s a n a l r e a d ye x i s t i n g d i s k f i l e f o a w r i t e o p e r a t i o n . A n i n f o r m a t i o n w r i tt e t t h e s e q u e n t i a l f i l e i a d d e d t t h e n d . D a t a a t h b g i n n i n g o t h f i l e i s a f e a n u n c h a n g e d .

T h e r e a r e n ' t a n n e w a y s o r e a d i n g o w r i t i n g f i l e s .Y o s t i l l P R I N T * t s e n d d a t a a n e i t h e r I N P U T # o G E T # t r e a d f i l e .

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 184/228

L C h a p t e r s

R e l a t i v e F i l e s A r M u c h E a s i e rB e i n g a b l e t r a n d o m l y a c c e s s r e c o r d s i f i l e c a s o m e t i m e sg r e a t l y s p e e d u p r o g r a m . W i t h s e q u e n t i a l f i l e s , y o m a s o m e t i m e s h a v e t r e a d t h r o u g h 5 r e c o r d s j u s t t g e t t h f i f t y - f i r s t . r e l a t i v e f i l e a l l o w s y o t o b t a i n t h e i n f o r m a t i o ny o u n e e d a l m o s t i m m e d i a t e l y . L

I B A S I C 2 . 0 , c r e a t i n g a n m a i n t a i n i n g r e l a t i v e f i l e r q u i r e s s e n d i n g n u m b e r o C H R $ c o d e s . I y o w r i t e p r g r a m s f o r e l a t i v e f i l e s i 6 m o d e , y o u ' l l h a v e t l e a r n t h c o m p l e x i t i e s o r e l a t i v e f i l e s . B u n o o t h 1 2 8 . I j u s t f e l i n e s , y o c a o p e n a n d w r i t e t r e l a t i v e f i l e . L e t ' s s a y o w a n t e d 1 0 r e c o r d s w i t h 2 0 c h a r a c t e r s i e a c h r e c o r d . Y o u rp r o g r a m t s e u f i l e w o u l d l o o k s o m e t h i n g l i k e t h i s :1 D O P E N # 3 , " X Y Z F I L E " , L 2 02 R E C O R D # 3 , 1 0 03 P R I N T # 3 , " L A S T R E C O R D "4 R E C O R D # 3 , 1 0 05 C L O S E 3

T h a t ' s a l t h e r e i t i t W h e n D O P E N i f o l l o w e d b a a n n u m b e r , i o p e n s r e l a t i v e f i l e . T h l e n g t h o e a c hr e c o r d i s e b L 2 0 . R e c o r d s c a b f r o m t 2 5 b y t e s l o n g .B e c a u s e t h r e c o r d l e n g t h i s t o r e d i t h d i r e c t o r y , y o n e e dt u s t h p a r a m e t e r o n l y w h e n t h f i l e i f i r s t c r e a t e d .

R E C O R D * p o s i t i o n s t h e p o i n t e r t t h e d e s i r e d r e c o r d ( u t 6 5 5 3 5 c a b a c c e s s e d , d e p e n d i n g o t h r e c o r d l e n g t h ) .Y o m u s t i n c l u d e t h e l o g i c a l f i l e n u m b e r a n t h r e c o r d n u b e r . t h i r d n u m b e r c a b a d d e d i y o w a n t t s t a r t r e a d i n go w r i t i n g p a r t w a y i n t o t h r e c o r d . I t h i s n u m b e r i o m i t t e d ,y o u ' l l b e g i n a t h f i r s t b y t e o t h r e c o r d .

I l i n e 3 0 w P R I N T # t r e c o r d n u m b e r 1 0 0 . P r i n t i n g t p r e v i o u s l y n o n e x i s t e n t r e c o r d f o r c e s t h d i s k d r i v e t c r e a t e

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

O n c e t h f i l e i c r e a t e d , y o c a e a s i l y a c c e s s r e c o r d s w i t hD O P E N a n R E C O R D * . Y o P R I N T # t w r i t e a n e i t h e rG E T # o I N P U T # t r e a d r e c o r d s .

U t i l i t i e sT h e r e a r m o r e n e c o m m a n d s t h a t h e l p w h e n y o u ' r e p r g r a m m i n g . T h F 3 k e y i d e f i n e d t p r i n t D I R E C T O R Y . S o 1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 185/228

P P e r i p h e r a l s

w i t h t h e p r e s s o s i n g l e k e y , y o c a s e w h a t ' s o d i s k .T w v e r y u s e f u l r e s e r v e d v a r i a b l e s a r e D ( s h o r t f o D i s kS t a t u s ) a n D S $ . T h f i r s t r e t u r n s t h d i s k e r r o r n u m b e r ; t h s e c o n d p r i n t s o u t h e r r o r m e s s a g e . I t h r e l i g h t o 1 5 4 1s t a r t s f l a s h i n g ( t h e g r e e n l i g h t o 1 5 7 1 ) , j u s t e n t e r P R I N TD S a n d y o u c a s e w h a t w e n t w r o n g . C o n s u l t y o u r d i s kd r i v e m a n u a l f o c o m p l e t e l i s t o e r r o r m e s s a g e s .

W i t h i n p r o g r a m , D i u s u a l l y m o r e h e l p f u l t h a n D S $ .A f t e r a d i s k o p e r a t i o n , a d l i n e I D S > 1 9 T H E N 5 0 0 , w h e r el i n e 5 0 i t h b e g i n n i n g o a e r r o r - h a n d l i n g r o u t i n e .

T h v a r i a b l e D w i l l n o r m a l l y h o l d z e r o i n e r r o r s o c u r r e d . B u i D i e q u a l t 2 o m o r e , s o m e t h i n g h a g o n ew r o n g . T h e r e a r f e e x c e p t i o n s , t h o u g h : E r r o r 0 i n o a e r r o r ; i t ' s t r i g g e r e d a f t e r S C R A T C H o p e r a t i o n . T h e r r o rm e s s a g e w i l l b F I L E S S C R A T C H E D , f o l l o w e d b c o m m aa n t h n u m b e r o f i l e s t h a t w e r e s c r a t c h e d . E r r o r 5 ( R E C O R D N O P R E S E N T ) i n m a t t e r f o c o n c e r n i y o u ' v ej u s t c r e a t e d o r e x p a n d e d r e l a t i v e f i l e . I y o w r i t e t p r e v io u s l y n o n e x i s t e n t r e c o r d i r e l a t i v e f i l e , i t ' s a d d e d t t h d i s k . T h r e c o r d w a n o p r e s e n t b e f o r e t h e o p e r a t i o n a n t h u s c a u s e s t h e r r o r 5 0 . F i n a l l y , w h e n y o f i r s t t u r n o o r s e a d i s k d r i v e , y o u ' l l r e c e i v e a e r r o r 7 3 w h i c h i s i m p l y a a n n o u n c e m e n t o w h i c h v e r s i o n o D O i i n s i d e t h d r i v e .

S e v e r a l o t h e r n e c o m m a n d s m a k e f i l e m a n a g e m e n t e a s i e r .R E N A M E a n S C R A T C H a r f a i r l y s t r a i g h t f o r w a r d . S C R A T C Hi f o l l o w e d b f i l e n a m e i n s i d e q u o t a t i o n m a r k s . P a t t e r nm a t c h i n g , u s i n g w i l d c a r d s l i k e q u e s t i o n m a r k s o a s t e r i s k s , i a v a i l a b l e f o t h o s e t i m e s w h e n y o w a n t t s c r a t c h s e v e r a lf i l e s w i t h s i m i l a r n a m e s . T c h a n g e t h n a m e o f i l e , R N A M E " o l & n a m e " T " n e w n a m e " . T h i s s y n t a x i c e r t a i n l y e a i e t r e m e m b e r t h a n O P E N 1 5 , 8 , 1 5 , " R 0 : n e w n a m e = o l d n a m e " ,t h e r e q u i r e d s y n t a x o t h V I o 6 4

C O L L E C T v a l i d a t e s t h d i s k . I t ' s u s e d m o s t l y f o c l e a n i n gu t h b l o c k a l l o c a t i o n m a ( B A M ) t g e r i o i m p r o p e r l yc l o s e d f i l e s . T h e s e w e r e f o r m e r l y c a l l e d " p o i s o n f i l e s , " b u t h 1 5 7 1 d i s k d r i v e m a n u a l r e f e r s t t h e m a " s p l a t f i l e s . " T h e y ' r em a r k e d b a a s t e r i s k i t h d i r e c t o r y , * P R G , f o e x a m p l e .

D C L E A R i n i t i a l i z e s t h d i s k ; i t ' s t h s a m e a s e n d i n g " 1 0 "t c h a n n e l 1 5

C O N C A T c o m b i n e s t h e c o n t e n t s o t w s e q u e n t i a l f i l e s .Y o c a u s i o n p r o g r a m f i l e s , b u t h r e s u l t w o n ' t b

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 186/228

C h a p t e r

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

T w d i s k c o m m a n d s d e s i g n e d p r i m a r i l y f o d u a l d r i v e s 1 a r C O P Y a n B A C K U P . T h f i r s t c o p i e s f i l e f r o m o n e d r i v e ' — t a n o t h e r . B u y o u m u s t u s d u a l d r i v e — C O P Y w o n ' t w o r kw i t h t w s i n g l e d r i v e s . I c a a l s o m a k e c o p y t t h o r i g i n a ld i s k ( i y o u w a n t t r e a r r a n g e d i r e c t o r y , f o r e x a m p l e ) . ' — B A C K U P c o p i e s a w h o l e d i s k . I t o r e q u i r e s d u a l d r i v e .

F e Q u i r k sT h e r e a r e a f e a n n o y i n g f e a t u r e s o t h 1 2 8 — n o t b u g s , j u s tb o t h e r s o m e q u i r k s .

T h m o s t s e r i o u s o t h e s e i t h a t S H I F T - R U N / S T O Pl o a d s a n r u n s t h f i r s t f i l e o d i s k . n i c e f e a t u r e i t h a t ' sw h a t y o w a n t , b u t s o o n e r o l a t e r , w h i l e p r o g r a m m i n g , y o u ' l la c c i d e n t a l l y p r e s s S H I F T - L O C K a n R U N / S T O P o r t h e C o m o d o r e k e a n R U N / S T O P . W h e n t h d i s k d r i v e s t a r t s s p i nn i n g , y o h a v e o n l y f e s e c o n d s t u n l o c k t h S H I F T -L O C K k e a n p r e s s R U N / S T O P t p r e v e n t t h f i r s t p r o g r a mf r o m l o a d i n g . I y o f a i l t s t o p i t t h p r o g r a m l o a d s a n r u n sa n y o u ' v e l o s t a n p a r t o y o u r o t h e r p r o g r a m t h a t w a n o s a v e d . T a v o i d t h i s s i t u a t i o n , y o m a w a n t t p u s e q u e nt i a l f i l e a t h b e g i n n i n g o d i s k . I y o a c c i d e n t a l l y t y p eS H I F T - R U N / S T O P , t h c o m p u t e r w i l l t r y t o l o a d t h s e q u e nt i a l f i l e , b u i w o n ' t w o r k . T h p r o g r a m y o u ' r e w o r k i n g o w i l l b s a f e i t h i s p r e c a u t i o n i t a k e n .

Y o c a a l s o a c c i d e n t a l l y s a v e p r o g r a m . T h d e f a u l t v a lu e f o F a n F a r L I S T a n D I R E C T O R Y . V e r y h e l p f u lw h e n y o u w a n t t t a k e a l o o k a w h a t ' s o a d i s k o r w h a t ' s i

p r o g r a m . B u i b e t w e e n t h e s e t w k e y s i F 5 w h i c h i d f i n e d a D S A V E . I y o r e a c h u t l i s t p r o g r a m a n a c c id e n t a l l y p r e s s F a n F 7 t h c o m p u t e r w i l l p r i n t D S A V E " L I S Ta n b e g i n s a v i n g y o u r p r o g r a m u n d e r t h a t n a m e .

V E R I F Y a n D V E R I F Y d o n ' t a l w a y s w o r k a y o w o u l de x p e c t . E a c h l i n e o B A S I C p r o g r a m c o n t a i n s a m e m o r yp o i n t e r t t h b e g i n n i n g o t h e n e x t l i n e . W h e n y o a l l o c a t eg r a p h i c s a r e a , t h B A S I C p r o g r a m i m o v e d u b 9 K a n a l t h l i n e l i n k s c h a n g e . L i n e l i n k s t h a t d o n ' t m a t c h w i l l l e a d t

f a l s e V E R I F Y E R R O R . Y o c a t e s t t h i s b e n t e r i n g o n e -l i n e p r o g r a m a n d s a v i n g i t d i s k . N o t y p e G R A P H I C 1 :G R A P H I C O t o a l l o c a t e g r a p h i c s a r e a . L i s t t h p r o g r a m a n

1 7

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 187/228

P e r i p h e r a l s

u s D V E R I F Y t c h e c k y o u r s a v e . Y o s h o u l d s e a e r r o rm e s s a g e .

S o m e t h i n g t r e m e m b e r w h e n y o u ' r e u s i n g d i s k c o m a n d s i t h a t v a r i a b l e s m u s t b e n c l o s e d i p a r e n t h e s e s . T h f o l l o w i n g t w e x a m p l e s s h o w t h r i g h t a n w r o n g w a y s t u s v a r i a b l e s :W r o n g R E N A M E H T " F I N A L F I N A L "C o r r e c t R E N A M E ( H $ ) T " M O S T R E C E N T "

H o F a s t I t h 1 5 7 1 ?I y o a l r e a d y o w 1 5 4 1 d r i v e , y o c a u s i w i t h a 1 2 8 .Y o d o n ' t n e e d t b u 1 5 7 1 , u n l e s s s p e e d i i m p o r t a n t .H e r e ' s h o t h t w d r i v e s c o m p a r e :

1 5 4 1 1 5 7 19 L O A D ( h i - r e s s c r e e n ) 2 s e c o n d s s e c o n d sD i s k f o r m a t 8 s e c o n d s 4 s e c o n d s

( o n e s i d e ) ( t w o s i d e s )Q u i c k f o r m a t ( n I D 2 . s e c o n d s 3 . s e c o n d s( o n e s i d e ) ( t w o s i d e s )

G o i n g i n t o 8 c o l u m n s a n u s i n g t h F A S T c o m m a n d t d o u b l e t h s p e e d o t h m i c r o p r o c e s s o r s a v e s o n l y f e t e n t h s o s e c o n d o d i s k o p e r a t i o n s . S t h s p e e d o f t h ec o m p u t e r i n o f a c t o r . T h b o t t l e n e c k i t h s p e e d a w h i c ht h d a t a t r a v e l s t h r o u g h t h s e r i a l c a b l e .

N o t e t h a t f o r m a t t i n g , w h i c h i h a n d l e d c o m p l e t e l y w i t h i nt h d i s k d r i v e , i t w i c e a f a s t f o t w i c e t h d i s k c a p a c i t y . T h i ss u g g e s t s t h a t w r i t i n g o p e r a t i o n s a r q u i c k e r o t h 1 5 7 1 .

E v e n w h e n y o s e n d t h c o m m a n d t m a k e t h 1 5 7 1 a c l i k e a 1 5 4 1 , i t ' s f a s t e r . 1 5 4 1 t a k e s n e a r l y m i n u t e a n a h a l ft f o r m a t d i s k . T h 1 5 7 1 i 1 5 4 1 m o d e t a k e s o n l y o n m i n u t e a n 1 s e c o n d s .

1 — T h " a c t l i k e 1 5 4 1 " c o m m a n d i O P E N 1 5 , 8 , 1 5 :P R I N T # 1 5 , " U 0 > M 0 " . T r e s e t t o 1 5 7 1 m o d e , P R I N T # 1 5 ," U O > M 1 " ( t h e s e c o m m a n d s c a b u s e d i 6 m o d e a w e l l ) .

W h i l e t h 1 5 7 1 i e m u l a t i n g t h e 1 5 4 1 , y o c a n c h o o s ew h i c h r e a d / w r i t e h e a d i u s e d w i t h P R I N T # 1 5 , " U 0 > H 0 " o P R I N T # 1 5 , " U O > H 1 " . B s w i t c h i n g h e a d s , y o c a f o r m a tn b o t h s i d e s o d i s k a i t h e y w e r e s e p a r a t e d i s k s .

A n o t h e r p l u s f o t h 1 5 7 1 i s i t s a b i l i t y t r e a d v a r i e t y o C P / M f o r m a t s . I y o p l a n t d m u c h w i t h C P / M , t h 1 5 7 1p r o v i d e s m o r e f l e x i b i l i t y . E v e n i y o d o n ' t , i t ' s f a s t e r a n c a h a n d l e m o r e d a t a t h a n t h e 1 5 4 1 .

1 7

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 188/228

C a t a l o g e rK e v i n M y k y t y n L O r g a n i z e y o u r d i s k l i b r a r y b m a k i n g i e a s y t f i n d a n p r o g r a mo n a n y d i s k . I n c l u d e d a r e o p t i o n s t p r i n t o u m a s t e r d i r e c t o r y | a n a l p h a b e t i c a l l y s o r t a l f i l e n a m e s . ' —

A f t e r o w n i n g c o m p u t e r a n d i s k d r i v e f o a w h i l e , i d o e s n ' tt a k e l o n g b e f o r e y o f i n d y o u r s e l f i n u n d a t e d b p r o g r a m s a n d i s k s . N m a t t e r h o w e l l y o u r d i s k s a r e o r g a n i z e d , y o m a s t i l l f i n d y o u r s e l f l o a d i n g s e v e r a l d i r e c t o r i e s s e a r c h i n g f o t h a to n p r o g r a m . " C a t a l o g e r " o f f e r s p r a c t i c a l s o l u t i o n . I t ' ss t r a i g h t f o r w a r d , m e n u - b a s e d p r o g r a m t h a t c r e a t e s m a s t e r d r e c t o r y f o a l y o u r d i s k - b a s e d p r o g r a m s . S e v e r a l e x t r a f e a t u r e sm a k e i e s p e c i a l l y u s e f u l .

M a n a g i n g H u n d r e d s o F i l e sC a t a l o g e r i w r i t t e n e n t i r e l y i B A S I C . A l i s t e d , i c a h a n d l eu t 2 0 0 0 f i l e n a m e s i 1 2 m o d e . I 6 m o d e , t h p r o g r a mc a h a n d l e o n l y 8 0 f i l e n a m e s — i f y o u w a n t t u s t h p r g r a m i 6 m o d e , y o u ' l l n e e d t c h a n g e t h v a l u e o N i l i n e 1 f r o m 2 0 0 0 t 8 0 0 .

A f t e r y o u ' v e t y p e d i t h p r o g r a m u s i n g " T h e A u t o m a t i cP r o o f r e a d e r , " s a v e a c o p y . T u s i t t y p e R U N . m e n u o n i n e c h o i c e s i d i s p l a y e d :1 C A T A L O G S E O D I S K S2 S E A L R L N A M E S3 P R I N T A L F I L E N A M E S4 S O R T N A M E S A L P H A B E T I C A L L Y5 C R E A T E S E Q U E N T I A L F I L E6 C R E A T E A P R O G R A M F I L E7 L O A D A O L F I L E 1 — 8 D E L E T E D I S K9 S T A R T N E F I L E

I y o u ' r e u s i n g t h p r o g r a m f o t h f i r s t t i m e , c h o o s e o t i o n 1 C a t a l o g S e o f D i s k s . Y o u ' l l t h e n b a s k e d f o d i s kn a m e u t 1 c h a r a c t e r s l o n g . T h i s s h o u l d b t h n a m e o I t h l a b e l o t h d i s k y o w i s h t o c a t a l o g . P u t h e d i s k i t h d r i v e a n p r e s s R E T U R N . T h d i r e c t o r y o f t h e d i s k i d i s -

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 189/228

P e r i p h e r a l s

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

A f t e r e n t e r i n g a l t h d i s k s y o w i s h t c a t a l o g , y o c a v i e w t h m a s t e r d i r e c t o r y . O p t i o n 2 S e A l F i l e N a m e s , d i p l a y s t h m a s t e r d i r e c t o r y o t h s c r e e n . Y o c a a l s o p r i n t i o u o a n C o m m o d o r e p r i n t e r b u s i n g o p t i o n 3 M a k e s u r et h p r i n t e r i t u r n e d o b e f o r e y o c h o o s e t h i s o p t i o n .

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

O n c e y o u ' v e v i e w e d t h d i r e c t o r y , u s o p t i o n 5 C r e a t eS e q u e n t i a l F i l e , t s a v e i t C h o o s e t h i s o p t i o n i y o w i s h t m a k e c h a n g e s l a t e r t t h m a s t e r d i r e c t o r y .

O p t i o n a l s o s a v e s y o u r m a s t e r d i r e c t o r y t d i s k , b u i s t e a d o f c r e a t i n g a s e q u e n t i a l f i l e , i c r e a t e s p r o g r a m b e g i nn i n g a l i n e 1 0 0 . W h e n e v e r y o w i s h t v i e w t h m a s t e rd i r e c t o r y , y o c a l o a d t h p r o g r a m c r e a t e d .

A d d i n g , D e l e t i n g ; a n S o r t i n gA s o m e p o i n t , y o u ' l l w a n t t a d o d e l e t e d i s k s f r o m y o u rm a s t e r d i r e c t o r y . O p t i o n s a n a r u s e d f o t h i s p u r p o s e .O p t i o n i u s e d t l o a d a n d i r e c t o r y s t o r e d i s e q u e n t i a l f i l ef o r m a t ( w i t h o p t i o n 5 ) A f t e r l o a d i n g f i l e , y o c a c h o o s eo p t i o n 1 a n a l n e f i l e n a m e s w i l l b a p p e n d e d t t h e o l dd i r e c t o r y . M a k e s u r e y o s a v e y o u r c h a n g e s t d i s k w h e ny o u ' r e t h r o u g h .

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

T h d e l e t e o p t i o n r e m o v e s a l f i l e n a m e s f r o m t h d i s kn a m e s p e c i f i e d . T h e r e f o r e , i t ' s i m p o r t a n t t h a t a l d i s k s h a v eu n i q u e n a m e . I y o u ' v e m a d e c h a n g e s t d i s k a n w i s h t e n t e r t h e c h a n g e s i t h m a s t e r d i r e c t o r y , u s o p t i o n t d l e t e t h a t d i s k ; t h e n u s e o p t i o n t e n t e r t h n e w e r d i s kv e r s i o n .

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

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 190/228

C h a p t e r — — — =T d e l e t e t h d i r e c t o r y i m e m o r y a n s t a r t n e d i r e c - '

t o r y , u s o p t i o n 9

P r o g r a m 5 - 1 . C a t a l o g e rF o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

G 1 N R = 2 0 0 0 : D I M B $ ( N R ) : I F P E E K ( 7 9 4 ) O 7 4 T H E N 3 0F 2 P O K E 5 3 2 8 1 , 1 5 : P O K E 5 3 2 8 0 , 1 5 : K B = 1 9 8 : R O = 2 1 4 : G O T O6

E 3 I F P E E K ( 7 9 4 ) < > 1 8 9 T H E N 5 0K H 4 0 C O L O R 0 , 1 6 : C O L O R 4 , 1 6 : K B = 2 0 8 : R O = 2 3 5 : P R I N T C H R

$ ( 2 7 ) " M " z G O T O 6 0B 5 R O = 2 0 5 : K B = 2 3 9 : P O K E 6 5 3 0 1 , 2 4 1 : P O K E 6 5 3 0 5 , 2 4 1 : P OK E 2 0 2 5 , 2 5 5

R 6 S $ = " { 2 0 S P A C E S } " : C = 0 : O P E N 1 5 , 8 , 1 5 : D $ = "1 D O W N ] 1 1

G 7 P R I N T " I C L R j l R V S i l R E D } 1 6 S P A C E S J C H O O S E O N E O FT H F O L L O W I N G { 7 S P A C E S } { B L U } { O F F } "

A 8 P R I N T S P C ( 5 ) " { 2 D O W N } 1 . C A T A L O G S E O D I S KS

B 9 P R I N T S P C ( 5 ) " { D O W N } 2 . S E A L F I L E N A M E S "J 1 0 P R I N T S P C ( 5 ) " { D O W N } 3 . P R I N T A L L F I L E N A M E S "S 1 1 P R I N T S P C ( 5 ) " { D O W N } 4 . S O R T N A M E S A L P H A B E T I C A

L L Y "K 1 2 P R I N T S P C ( 5 ) " { D O W N } 5 . C R E A T E A S E Q U E N T I A L F

L E A 1 3 P R I N T S P C ( 5 ) " { D O W N j 6 . C R E A T E A P R O G R A M F I L E "S X 1 4 0 P R I N T S P C ( 5 ) " { D O W N J 7 . L O A D A N O L D F I L E "S 1 5 P R I N T S P C ( 5 ) " { D O W N } 8 . D E L E T E D I S K "Q H 1 6 0 P R I N T S P C ( 5 ) " { D O W N } 9 . S T A R T N E W F I L E "M 1 7 P R I N T S P C ( 1 2 ) " l R E D } I D O W N J I R V S J P R E S S T Q

I T l B L U H O F F j "D 1 8 P O K E K B , 0 : W A I T K B , 1 : G E T A $ : I F A $ = " Q " T H E N C L O S E 1 5

: P R I N T " { C L R J " : E N DS 1 9 I F A $ < " 1 " O R A $ > " 9 " T H E N 1 8 0F 2 0 O N V A L ( A $ ) G O S U B 2 1 0 , 5 1 0 , 5 2 0 , 6 4 0 , 7 3 0 , 7 4 0 , 8 5 0 , 9

4 0 , 1 0 4 0 : G O T O 7 0J 2 1 F $ = " D I S K " : G O S U B 1 0 5 0 : I F D N $ = " Q " T H E N R E T U R NQ 2 2 P R I N T " t C L R H R V S H R E D } " S P C ( 2 0 - L E N ( D N $ ) / 2 ) D N $" 1 D O W N i l B L U j "C P 2 3 0 C L O S E 2 : O P E N 2 , 8 , 0 , " $ " : G O S U B 3 9 0 : I F A $ = " Q " T H E N R

E T U R NK 2 4 X = 4 : N F = 0 : I F E X T H E N 2 2 0 1 Q 2 5 B $ ( C ) = " " : F L = - 1 : G O S U B 3 1 0 : X = 2 : G E T # 2 , L N $B J 2 6 0 G E T # 2 # H N $ : N M = A S C ( L N $ + C H R $ ( 0 ) ) + 2 5 6 * A S C ( H N $ + C

H R $ ( 0 ) ) : P R I N T S P C ( 5 ) N M ;P 2 7 G E T # 2 # A $ : I F A $ = " " T H E N 3 2 0X 2 8 I F A $ = C H R $ ( 3 4 ) T H E N F L = - F LJ 2 9 I F F L = 1 T H E N B $ ( C ) = B $ ( C ) + A $R C 3 0 0 P R I N T A $ ; : G O T O 2 7 01 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 191/228

P e r i p h e r a l s

E R 3 1 0 F O R A = 1 T O X : G E T # 2 , A $ : N E X T : R E T U R NE Q 3 2 0 I F B $ ( C ) = " " T H E N C L O S E 2 : G O S U B 4 8 0 : I F A $ < > " Q " T H E N

2 1 A 3 3 I F B $ ( C ) = " " T H E N R E T U R NX 3 4 P R I N T : N M $ = S T R $ ( N M )F 3 5 B $ ( C ) = R I G H T $ ( B $ ( C ) , L E N ( B $ ( C ) ) - 1 )S 3 6 B $ ( C ) = B $ ( C ) + L E F T $ ( S $ , 1 9 - L E N ( B $ ( C ) ) - L E N ( N M $ )

) + N M $ + " l 2 S P A C E S } " + D N $A 3 7 I F N F = 1 T H E N C = C + 1 : I F C = N R T H E N 1 0 8 0B 3 8 N F = 1 : G O T O 2 5 0D 3 9 R F = 0 : E X = 0 : A $ = " H : I N P U T # 1 5 , E N , M $ , T , SR 4 0 I F E N < 2 0 T H E N R E T U R NK 4 1 P R I N T " t H O M E } " D $ : F O R A = l T O 5 : P R I N T " l 3 5 S P A C E S }

: N E X TH B 4 2 0 E X = 1 : P R I N T : P R I N T " { H O M E } { B L U } " D $ E N ; M $ ; T ; S : I F

E N O 6 3 T H E N 4 7 0R D 4 3 0 R F = 1 : P R I N T " { D O W N } D Y O W A N T T O R E P L A C E T

F I L E ? ( Y / N ) 1 1A B 4 4 0 G E T A $ : I F A $ = M N M T H E N R E T U R NC 4 5 I F A $ o " Y " T H E N 4 4 0J 4 6 E X = 0 : P R I N T # 1 5 , " S M + D N $ : R E T U R NE K 4 7 0 C L O S E 2R 4 8 P R I N T : P R I N T " I D O W N J t B L U } I 2 S P A C E S } P R E S S A N Y

S P A C E } K E Y T O C O N T I N U E ( R V S } Q T O Q U I T O F F } 1 1: P O K E K B , 0 : W A I T K B , 1

P 4 9 G E T A $ : R E T U R NG 5 0 P R I N T : P R I N T " { D O W N } { B L U } { 6 S P A C E S j P R E S S A N Y

i S P A C E } K E Y T C O N T I N U E " : P O K E K B , 0 : W A I T K B , 1 : RE T U R N

B 5 1 D V = 3 : S A = 0 : S P = 1 : D N $ = " " : N M = 0 : G O T O 5 5 0E 5 2 P R I N T " { C L R } " D $ " P R E S S [ M T R E T U R N T T H

E N A N Y { 5 S P A C E S } O T H E R K E T O P R I N T "B 5 3 P O K E K B , 0 : W A I T K B , 1 : G E T A $ : I F A $ = " M " T H E N 7 0J 5 4 D V = 4 : S P = 2 0 : S A = 0 : D N $ = " " : N M = 0M 5 5 I F C < = 0 T H E N P R I N T " { C L R } " D $ S P C ( 1 0 ) " { B L U } N O F I

E S I N M E M O R Y " : G O T O 5 0 0A 5 6 I F N M T H E N G O S U B 1 0 5 0 : D N $ = " 0 : " + D N $ + " , S , W "Q 5 7 C L O S E 2 : O P E N 2 , D V , S A , D N $ : G O S U B 3 9 0 : I F A $ = " Q " T H E

N R E T U R NM 5 8 I F R F A N D E X = 0 T H E N 5 7 0H X 5 9 0 I F R F T H E N 5 6 0Q 6 0 I F E X T H E N 5 7 0S 6 1 P R I N T " t C L R } l D O W N } l l : F O R A = 0 T O C : P R I N T # 2 , S P C ( S P

) B $ ( A )F 6 2 I F P E E K ( R O ) = 2 1 T H E N G O S U B 5 0 0 : P R I N T " l C L R }

1 D O W N } "S 6 3 N E X T : C L O S E 2 : G O S U B 5 0 0 : R E T U R NG 6 4 I F C < = 0 T H E N P R I N T " t C L R } " D $ S P C ( 1 0 ) " t B L U } N O F I

E S I N M E M O R Y " : G O T O 5 0 0

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 192/228

C h a p t e r

M 6 5 D = C - 1 : M = D : P R I N T I I I C L R } " D $ S P C ( 1 5 " S O R T I N Gi

A 6 6 M = I N T ( M / 2 ) : I F M = 0 T H E N R E T U R NE J 6 7 0 J = 0 : K = D - MJ 6 8 I = R 6 9 L = I + MM 7 0 I F B $ ( I ) > B $ ( L ) T H E N T $ = B $ ( I ) : B $ ( I ) = B $ ( L ) : B $ ( L )

= T $ : I = I - M : I F I > 0 T H E N 6 9 0C Q 7 1 0 J = J + 1 : I F J > K T H E N 6 6 0P 7 2 G O T O 6 8 0P 7 3 D V = 8 : S P = 5 : S A = 2 : F $ = " F I L E " : N M = 1 : D N $ = D N $ + " , S , W

" : G O T O 5 5 0S X 7 4 0 G O S U B 1 0 5 0 : D N $ " 0 : I I + D N $ : I F D N $ " 0 : Q " T H E N R E T U RB S 7 5 0 G L O S E 2 : O P E N 2 , 8 , 2 , D N $ + " , P , W " : G O S U B 3 9 0 : I F A $ = M

Q " T H E N R E T U R NK 7 6 I F R F A N D E X = 0 T H E N 7 5 0G 7 7 I F R F T H E N 7 4 0K 7 8 I F E X T H E N 7 5 0M 7 9 P R I N T # 2 , C H R $ ( 1 ) C H R $ ( 8 ) ; : F O R A = 0 T O C - 1F 8 0 P R I N T # 2 , C H R $ ( 4 ) C H R $ ( 4 ) ; : L N = 1 0 0 + AB 8 1 H B = I N T ( L N / 2 5 6 ) : L B = L N - H B * 2 5 6 : P R I N T # 2 , C H R $ ( L B

) C H R $ ( H B ) ;A 8 2 P R I N T # 2 , C H R $ ( 3 4 ) B $ ( A ) C H R $ ( 3 4 ) C H R $ ( 0 ) ;Q 8 3 N E X T A : P R I N T # 2 , C H R $ ( 0 ) C H R $ ( 0 ) ;R 8 4 C L O S E 2 : R E T U R NQ 8 5 F " F I L E 1 1 : G O S U B 1 0 5 0 : I F D N $ I I Q I 1 T H E N R E T U R NE C 8 6 0 O P E N 2 , 8 , 2 , " 0 : " + D N $ + " , S , R " : G O S U B 3 9 0 : I F E X T H E N

8 5 X 8 7 F L = - 1 : B $ ( C ) = " " : F O R A = 1 T O 5 : G E T # 2 , A $ : N E X TS 8 8 G E T # 2 , A $ : I F A $ = C H R $ ( 1 3 ) T H E N 9 1 0B 8 9 B $ ( C ) = B $ ( C ) + A $Q 9 0 G O T O 8 8 0G 9 1 I F S T T H E N C L O S E 2 : R E T U R NG 9 2 C = C + 1 : I F C = N R T H E N 1 0 8 0K 9 3 G O T O 8 7 0Q M 9 4 0 F $ = " D I S K " : G O S U B 1 0 5 0 : I F D N $ = " Q " T H E N R E T U R ND 9 5 P R I N T " I C L R } " D $ S P C ( 1 4 ) " D E L E T I N G " : E N = 0K 9 6 F L = 0 : F O R A = 0 T O C - 1X 9 7 I F M I D $ ( B $ ( A ) , 2 2 , 1 6 ) = D N $ A N D F L = 0 T H E N F L = 1 : S N = AR E 9 8 0 I F M I D $ ( B $ ( A ) , 2 2 , 1 6 ) < > D N $ A N D F L = 1 T H E N E N = A : A = CB 9 9 N E X T : I F F L = 0 T H E N P R I N T " [ D O W N ] " S P C ( 1 2 ) " F I L E N

F O U N D " : G O T O 1 0 3 0P 1 0 0 0 I F E N = 0 T H E N E N = C + 1 : G O T O 1 0 2 0G 1 0 1 0 F O R A = S N T O C - ( E N - S N ) : B $ ( A ) = B $ ( E N + A - S N ) : N E X TQ G 1 0 2 0 C = C - ( E N - S N ) : P R I N T " I D O W N } " S P C ( 1 4 ) " D E L E T E D "M H 1 0 3 0 G O S U B 5 0 0 : C = C - ( C < 0 ) : R E T U R NF 1 0 4 0 C = 0 : R E T U R NB 1 0 5 0 P R I N T " I C L R } 1 4 D O W N ] P U D I S K I D R I V E A N

t S P A C E } E N T E R " F $ " N A M E "1 8

L

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 193/228

P e r i p h e r a l s»

X 1 0 6 0 P R I N T " ( U T 1 C H A R A C T E R S ) ( R V S j Q T Q U T l O F F j "n R 1 0 7 0 P O K E 1 9 , 1 . - I N P U T " { D O W N ] R E D } ; D N $ : P O K E 1 9 , D N $ = L E F T $ ( D N $ , 1 6 ) : R E T U R N

H G 1 0 8 0 P R I N T " I C L R } " D $ " I R E D } T H E M A S T E R D I R E C T O R YF U L L . 1 2 S P A C E S } S A V E T H P R E S E N T F I L E A N

Q 1 0 9 0 P R I N T " S T A R T N E D I R E C T O R Y • t B L U } " : G O S U B 5 00 : R E T U R N

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 194/228

A u t o b o o t

1 8

S t e v e S t i g l i c h

T h e s e f o u r p r o g r a m s a l l o w y o t c r e a t e b o o t d i s k s t h a t a u t o m a t ic a l l y l o a d a n r u p r o g r a m w h e n y o u r 1 2 i t u r n e d o n Y o I d o n ' t e v e n h a v e t t y p e L O A D — i t s a l d o n e f o y o u . T h ' — " a u t o r u n " d i s k s c a n b o o t p r o g r a m s f o e i t h e r 1 2 m o d e o 6 m o d e f r o m t h 1 5 4 1 o r 1 5 7 1 d r i v e .

F o m a n y C o m m o d o r e u s e r s , t h e i d e a o b o o t d i s k i b r a n d -n e w . B u i y o u ' v e d o n e m u c h w o r k w i t h a A p p l e , I B M , o A t a r i , y o k n o w h o c o n v e n i e n t i i t i n s e r t d i s k , t u r n o t h e s y s t e m , a n s e p r o g r a m a u t o m a t i c a l l y l o a d a n r u n .W h e n C o m m o d o r e 1 2 i t u r n e d o ( o w h e n i t ' s r e s e t w i t hS Y 6 5 3 4 1 ) , i c h e c k s f o t h p r e s e n c e o d i s k d r i v e . I t h d r i v e i t u r n e d o n a n d c o n t a i n s d i s k , t h 1 2 c h e c k s t r a c k 1 s e c t o r 0 f o a a u t o b o o t s e c t o r . U p o n f i n d i n g o n e , i f o l l o w st h i n s t r u c t i o n s t h e r e f o l o a d i n g a n r u n n i n g p r o g r a m .

T h p r o g r a m s p r e s e n t e d h e r e a l l o w y o t w r i t e a a u t o b o o t s e c t o r t a n d i s k . I a d d i t i o n , y o c a c r e a t e d i s kt h a t m a k e s t h 1 2 g i n t o 6 m o d e a n a u t o m a t i c a l l y l o a da n r u y o u r f a v o r i t e p r o g r a m f o t h 6 4 Y o c o u l d m a k eS p e e d S c r i p t b o o t d i s k , f o r e x a m p l e . A l y o u ' d h a v e t d i t u r n o t h d r i v e , i n s e r t t h d i s k , a n d p o w e r o t h 1 2 8 .

A l f o u r p r o g r a m s a r w r i t t e n i B A S I C , a l t h o u g h s o m ec o n t a i n s h o r t m a c h i n e l a n g u a g e r o u t i n e s i n s i d e D A T A s t a t em e n t s . P r o g r a m 5 - w r i t e s a a u t o b o o t s e c t o r t o d i s k . T h b o o t s e c t o r a t t e m p t s t l o a d a n r u 1 2 p r o g r a m c a l l e d" H I " , s o y o s h o u l d h a v e f i l e b t h a t n a m e o t h s a m ed i s k . P r o g r a m 5 - i m e n u p r o g r a m t h a t g i v e s y o f i v ec h o i c e s . I y o w a n t t h i s t b y o u r b o o t p r o g r a m , s a v e i t d i s k u n d e r t h n a m e " H I " . P r o g r a m 5 - c r e a t e s m a c h i n el a n g u a g e a u t o r u n 6 p r o g r a m f i l e t h a t c a u s e s a n o t h e r 6 p r g r a m t l o a d a n r u a u t o m a t i c a l l y a f t e r g o i n g i n t o 6 m o d e .P r o g r a m 5 - u s e s t h d y n a m i c k e y b o a r d t e c h n i q u e t l o a d a n r u B A S I C o m a c h i n e l a n g u a g e p r o g r a m f o t h 6 4

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 195/228

P e r i p h e r a l s

S p e c i a l T y p i n g I n s t r u c t i o n sP r o g r a m s 5 - 2 , 5 - 3 , a n 5 - s h o u l d b t y p e d i a n s a v e d f r o m1 2 m o d e . Y o u m u s t n o h a v e g r a p h i c s a r e a a l l o c a t e d w h e nt h e s e p r o g r a m s a r e s a v e d . I y o u ' v e b e e n w o r k i n g w i t h h i - r e sg r a p h i c s , e n t e r G R A P H I C C L b e f o r e s a v i n g t h p r o g r a m s .T h n a m e g i v e n t P r o g r a m 5 - s h o u l d b " H I " i y o u w a n tt h m e n u t c o m e u a u t o m a t i c a l l y w h e n y o t u r n o t h s y t e ( i y o p l a n t b o o t a n o t h e r 1 2 8 p r o g r a m , y o c a s k i pP r o g r a m 5 - 3 ) . I t ' s o n i m p o r t a n c e w h i c h n a m e s y o u s f o P r o g r a m 5 - o P r o g r a m 5 - 4 .P r o g r a m 5 - i w r i t t e n f o 6 m o d e , s y o s h o u l d e n t e rG 6 b e f o r e b e g i n n i n g t t y p e i i n T h i s p r o g r a m m u s t b s a v e d f r o m 6 m o d e . B v e r y c a r e f u l w i t h l i n e s 1 a n 2 0 t y p et h e m e x a c t l y a l i s t e d . S a v e t h i s p r o g r a m ( f r o m 6 m o d e ) u d e t h n a m e " 6 4 L O A D E R " . I s h o u l d b o t h s a m e d i s k a P r o g r a m s 5 - a n 5 - 4 .

C r e a t i n g a A u t o b o o t S e c t o r f o 1 2 8 P r o g r a m sP r o g r a m 5 - 2 , " C r e a t e 1 2 A u t o b o o t S e c t o r , " i f a i r l y s t r a i g h tf o r w a r d . I w r i t e s a a u t o b o o t s e c t o r t o t r a c k 1 s e c t o r 0 o f d i s k . L o a d P r o g r a m 5 - 2 , i n s e r t d i s k i n t o y o u r 1 5 4 1 o 1 5 7 1 ,a n t y p e R U N .

I f i r s t p r o m p t s y o f o a s c r e e n c o l o r . E n t e r n u m b e r i t h r a n g e 0 - 1 5 . I y o u w a n t t h e s c r e e n t b w h i t e , f o e a m p l e , e n t e r 1 N e x t , y o u ' r e a s k e d f o b o r d e r c o l o r . T h d f a u l t v a l u e s ( i y o d o n ' t a n s w e r t h q u e s t i o n s ) a r e a b l u es c r e e n w i t h l i g h t g r a y b o r d e r . T h s c r e e n a n b o r d e r w i l lt a k e o t h e s e c o l o r s w h e n t h d i s k i b o o t e d .

W h e n y o u ' v e s e t h e s c r e e n a n b o r d e r c o l o r s , P r o g r a m 5 w r i t e s t h a u t o b o o t s e c t o r t d i s k . I y o r e s e t y o u r 1 2 8 b

t u r n i n g i o f a n t h e n o n i w i l l r e a d t h s e c t o r a n t r t l o a d f i l e c a l l e d " H I " . T h H f i l e c a b a n v a l i d p r o g r a ms a v e d f r o m 1 2 m o d e . I w i l l l o a d a n a u t o m a t i c a l l y r u n . I y o s h o u l d w a n t t l o a d a n r u m a c h i n e l a n g u a g e p r g r a m , u s t h e s e t w l i n e s , s u b s t i t u t i n g t h f i l e n a m e a n S Y a d d r e s s o y o u r M ( m a c h i n e l a n g u a g e ) p r o g r a m :1 B L O A D " f i l e n a m e ? '2 S Y x x x x x

D S A V E t h i s s h o r t p r o g r a m a " H I " , a n w h e n i b o o t s , i w i l l l o a d t h M a n s t a r t i r u n n i n g .

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 196/228

C h a p t e r

U s i n g t h M e n u f r o m P r o g r a m 5 - I y o l o a d a n r u P r o g r a m 5 - 3 , y o u ' l l s e m e n u w i t h f i v eo p t i o n s : I 6 M O D E — B A S I C ' — 6 M O D E — R U N F I L EB O O T C P / M D I S K1 2 M O D E — B A S I C ' 1 2 M O D E — R U N F I L E

U s t h e c u r s o r k e y s t s e l e c t o n o t h o p t i o n s , t h e np r e s s R E T U R N . I y o s h o u l d c h o o s e 1 2 M O D E — B A S I C , t h p r o g r a m N E W s i t s e l f a n e x i t s t B A S I C ; 1 2 M O D E — R U NF I L E p r o m p t s y o f o t h p r o g r a m n a m e a n t h e n l o a d s a n r u n s t h a t f i l e .

I y o o p f o C P / M , i a s k s y o t i n s e r t C P / M d i s k .A f t e r d o i n g s o p r e s s R E T U R N , a n C P / M w i l l b o o t .

C h o o s e 6 M O D E — B A S I C t g d i r e c t l y t 6 m o d ew i t h o u t l o a d i n g p r o g r a m . T h s e c o n d c h o i c e , 6 M O D E —R U F I L E , l e a d s i n t o s e v e r a l q u e s t i o n s . F i r s t , y o u ' r e a s k e dD O E S F I L E C O N T A I N A U T O R U N C O D E ( Y / N ) ? I y o u ' v eu s e d P r o g r a m 5 - t c r e a t e a a u t o r u n f i l e ( s e e b e l o w ) , y o s h o u l d a n s w e r y e a n p r o v i d e a f i l e n a m e . P r o g r a m 5 - t h e nB L O A D s t h a u t o r u n f i l e a n e x e c u t e s t h G 6 c o m m a n d .

I y o a n s w e r n t t h p r o m p t , t h e n t h e r e m u s t b c o p y o t h " A U T O R U N . C 6 4 " f i l e o t h d i s k ( s e e t h d s c r i p t i o n o P r o g r a m 5 - b e l o w f o i n s t r u c t i o n s o h o t c r a t t h i s f i l e ) . T h p r o g r a m l o a d s A U T O R U N . C 6 4 , a n i n s e r t st h n a m e o y o u r p r o g r a m . N e x t , y o u ' r e a s k e d I T H I SS E L F - S T A R T I N G F I L E ( Y / N ) ? I t h 6 p r o g r a m t b l o a d e di i B A S I C , a n s w e r y e s . I n o t , y o u ' l l h a v e t p r o v i d e S Y a d d r e s s . F i n a l l y , t h 1 2 8 g o e s i n t o 6 m o d e a n r u n s t h p r g r a m y o u ' v e r e q u e s t e d .

M e m o r y - B a s e d C a r t r i d g e f o t h 6 4 W e ' v e a l r e a d y s e e n t h a t t h 1 2 c h e c k s f o a a u t o b o o t d i s ks e c t o r w h e n p o w e r i s f i r s t t u r n e d o n B u h o d o e s t h i s p r o -g r a m g i n t o 6 m o d e a n d , i t h p r o c e s s , c a u s e t h 6 t | l o a d a n r u p r o g r a m ? T h a n s w e r c a b f o u n d i t h 6 4 ' so w p o w e r - u p r o u t i n e . W h e n y o t u r n o 6 ( o G 6 o t h 1 2 8 ) , t h c o m p u t e r d o e s n ' t a c c e s s t h d i s k d r i v e , b u i | d o e s l o o k f o c a r t r i d g e . I i f i n d s c e r t a i n s e q u e n c e o l e t t e r sa n n u m b e r s a l o c a t i o n 3 2 7 6 8 ( h e x a d e c i m a l $ 8 0 0 0 ) , i d o e s1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 197/228

P e r i p h e r a l s

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

A l t h r e e m o d e s o t h 1 2 ( 1 2 8 , 6 4 a n C P / M ) s h a r ec e r t a i n a r e a s o f m e m o r y . S o i w w r i t e a c a r t r i d g e e m u l a t o r ,i c a b B L O A D e d i n t o l o c a t i o n 3 2 7 6 8 ( i 1 2 8 m o d e ) . W i t ht h a t s p e c i a l p r o g r a m i p l a c e , t h G 6 c o m m a n d m a k e s t h c o m p u t e r t u r n i n t o 6 a n b e g i n t h r e s e t r o u t i n e . A 6 m o d e i i n i t i a l i z i n g i t s e l f , i f i n d s s o m e t h i n g t h a t l o o k s l i k ec a r t r i d g e a 3 2 7 6 8 . T h e m e m o r y - b a s e d c a r t r i d g e t e l l s i t l o a da n r u p r o g r a m f r o m d i s k .I o r d e r t g e t h i s t w o r k , w h a v e t c r e a t e t h c a t r i d g e e m u l a t o r w i t h P r o g r a m s 5 - a n 5 - 5 .

F i r s t , e n t e r P r o g r a m 5 - ( r e m e m b e r , t h i s m u s t b t y p e d a n s a v e d f r o m 6 m o d e ) . L e t ' s s a y o c a l l i " 6 4 L O A D E R " . N o t u r n t h e 1 2 o f a n b a c k o n a n e n t e r P r o g r a m 5 - ( f r o m1 2 8 m o d e ) . N o w c a b e g i n .

R u P r o g r a m 5 - 4 . A n s w e r t h f i r s t p r o m p t w i t h" 6 4 L O A D E R " ( w h i c h m u s t b o t h d i s k c u r r e n t l y i t h d r i v e ) . T h d i s k d r i v e l i g h t w i l l t u r n o w h i l e t h p r o g r a m i r e a d i n t o m e m o r y . W h e n i t ' s f i n i s h e d , i w i l l a s f o f i l en a m e . A n s w e r " A U T O R U N . C 6 4 " . I w i l l c r e a t e t h g e n e r i cc a r t r i d g e e m u l a t o r u s e d b P r o g r a m 5 - 3 . I t h i s e m u l a t o r i o

d i s k , P r o g r a m 5 - w i l l b a b l e t p u t h 1 2 i n t o 6 m o d ea n r u a n B A S I C o M p r o g r a m .

Y o c a a l s o g e n e r a t e c a r t r i d g e e m u l a t o r f o r u n n i n gs p e c i f i c p r o g r a m . L e t ' s s a y o u w a n t t c r e a t e a a u t o r u n f i l ef o g a m e c a l l e d S P A C E G A M E ( s a v e d a B A S I C p r o g r a mf r o m 6 m o d e ) . L o a d a n r u P r o g r a m 5 - 4 . W h e n i a s k s f o t h p r o g r a m n a m e , a n s w e r " S P A C E G A M E " . A f t e r r e a d i n g t h f i l e , i w i l l a s f o f i l e n a m e . C a l l i s o m e t h i n g l i k e" S P A C E . B O O T " .

W i t h s p e c i f i c b o o t p r o g r a m i p l a c e , y o c a g i n t o 6 m o d e a n r u i w i t h t h f o l l o w i n g s e q u e n c e o e v e n t s :1 I n s e r t t h e d i s k i t h d r i v e a n t u r n o y o u r 1 2 8 .2 T h b o o t s e c t o r ( w h i c h w a c r e a t e d b y P r o g r a m 5 - 2 ) i

l o a d e d . I t i t u r n , l o a d s t h " H I " p r o g r a m ( P r o g r a m 5 - 3 ,s a v e d u n d e r t h n a m e H I f r o m t h d i s k .

3 P r o g r a m 5 - 3 p r e s e n t s y o w i t h t h m e n u o c h o i c e s . C u r s o rd o w n t 6 M O D E — R U N F I L E a n p r e s s R E T U R N .

4 A n s w e r y e t D O E S F I L E C O N T A I N A U T O R U N C O D E ?a n e n t e r S P A C E . B O O T a t h n a m e o f t h e p r o g r a m . T h c o m p u t e r t h e n g o e s i n t o 6 m o d e . T h b o o t p r o g r a m , a c t i n g

1 8

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 198/228

L C h a p t e r

l i k e c a r t r i d g e , t h e n l o a d s a n r u n s t h 6 p r o g r a m J — S P A C E G A M E .

B y p a s s i n g t h M e n uT h e r e ' s o n f i n a l o p t i o n . L e t ' s s a y o u w a n t t s e u b o o td i s k t h a t g o e s i n t o 6 m o d e a n l o a d s ( a n d r u n s ) S p e e d S c r i p t . | Y o d o n ' t n e e d P r o g r a m 5 - 3 , b e c a u s e y o d o n ' t w a n t t h m e n u t a p p e a r — y o u j u s t w a n t S p e e d S c r i p t t l o a d a n r u n .F o l l o w t h e s e s t e p s :1 L o a d S p e e d S c r i p t ( f r o m 6 m o d e ) a n s a v e i t f r e s h l y

f o r m a t t e d d i s k .2 L o a d P r o g r a m 5 - ( a g a i n f r o m 6 m o d e ) a n c h a n g e l i n e s

1 0 - 2 0 . T h f i r s t l i n e s h o u l d s a A $ = " S P E E D S C R I P T " a n l i n e 2 0 s h o u l d r e a d B $ = " R U N : " . ( I t h i s w e r e m a c h i n el a n g u a g e p r o g r a m s t o r e d a 4 9 1 5 2 , y o w o u l d s u b s t i t u t eS Y 4 9 1 5 2 i l i n e 2 0 . ) S a v e t h i s u n d e r t h n a m e" S S L O A D E R " a t h s e c o n d p r o g r a m o t h d i s k c o n t a i n i n gS p e e d S c r i p t .

3 G i n t o 1 2 m o d e b p r e s s i n g t h r e s e t s w i t c h , o t u r n i n g i o f a n t h e n b a c k o n L o a d P r o g r a m 5 - a n i n s e r t t h d i s kc o n t a i n i n g t h e t w p r o g r a m s . R u P r o g r a m 5 - a n a n s w e rS S L O A D E R f o t h p r o g r a m n a m e . T h e n a n s w e r S S . B O O Tf o t h n a m e o t h b o o t p r o g r a m . T h e r e a r n o t h r e e p r g r a m s o t h d i s k .

4 W h i l e s t i l l i 1 2 m o d e , t y p e N E W . E n t e r t h i s o n e - l i n ep r o g r a m :1 B L O A D " S S . B O O T " : G O 6 S a v e t h i s t t h d i s k a s " H I " — t h e f o u r t h p r o g r a m o n t h d i s k .

5 F i n a l l y , l o a d P r o g r a m 5 - 2 . S w i t c h d i s k s , i n s e r t i n g t h d e d ic a t e d S p e e d S c r i p t d i s k . R u t h p r o g r a m , a n a a u t o b o o ts e c t o r w i l l b c r e a t e d . N o y o h a v e a d i s k w h i c h c o n t a i n sf o u r p r o g r a m s a n b o o t s e c t o r .

T u r n e v e r y t h i n g o f f . T u r n o t h e d i s k d r i v e a n i n s e r t t h S p e e d S c r i p t d i s k . T u r n o t h 1 2 8 . Y o d o n ' t n e e d t d a n y -t h i n g e l s e . T h b o o t s e c t o r l o a d s t h p r o g r a m c a l l e d " H I " . I l o a d s t h e c a r t r i d g e e m u l a t o r a n g o e s i n t o 6 m o d e . T h c o d ea 3 2 7 6 8 m a k e s t h 6 t h i n k c a r t r i d g e i i p l a c e , s S S L O A D E R i r u n . I t i n t u r n , l o a d s a n r u n s S p e e d S c r i p t .

I m a s e e m l i k e l o o w o r k , b u t h r e s u l t s a r w o r t h i — L

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 199/228

P e r i p h e r a l s

i t T l o a d a n r u 6 4 p r o g r a m , j u s t t u r n o y o u r 1 2 8 . E e r y t h i n g i h a n d l e d b t h b o o t s e c t o r ( a n d t h r e l a t e d f i l e s ) .P r o g r a m 5 - 2 . C r e a t e 1 2 A u t o b o o t S e c t o rF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B Q 1 R E * * P R O G R A M C R E A T E S C - 1 2 8 B O O T D I S K T

L O A D R U ' H I 1 F I L E * * B 2 D A T A 6 7 , 6 6 , 7 7 , 0 , 0 , 0 , 0 , 0 , 0 , 1 2 0 , 3 2 , 1 3 2 , 2 5 5 , 2 3 4 ,

2 3 4 , 2 3 4 , 2 3 4 , 2 3 4 , 1 6 9 , 1 9 5H 3 D A T A 1 4 1 , 2 3 8 , 2 5 5 , 1 6 9 , 8 , 1 4 1 , 2 3 9 , 2 5 5 , 1 6 9 , 0 , 1 4 1 ,

2 4 0 , 2 5 5 , 1 6 9 , 1 5 , 1 4 1 , 3 2 , 2 0 8 , 1 6 9 , 6R 4 D A T A 1 4 1 , 3 3 , 2 0 8 , 1 6 5 , 2 1 3 , 2 0 1 , 7 2 , 2 0 8 , 1 , 9 6 , 1 6 9 , 72 , 1 4 1 , 2 3 3 , 7 , 1 6 9 , 7 3 , 1 4 1 , 2 3 4 , 7 , 1 6 9

Q 5 D A T A 1 , 1 6 2 , 8 , 1 6 0 , 2 5 5 , 3 2 , 1 8 6 , 2 5 5 , 3 2 , 1 9 2 , 2 5 5 , 1 69 , 2 , 1 6 2 , 2 3 3 , 1 6 0 , 7

H 6 D A T A 3 2 , 1 8 9 , 2 5 5 , 1 6 9 , 0 , 3 2 , 2 1 3 , 2 5 5 , 1 4 2 , 1 6 , 1 8 , 1 40 , 1 7 , 1 8 , 3 2 , 2 3 1 , 2 5 5 , 1 6 9 , 4 , 1 3 3 , 2 0 8

E 7 D A T A 1 6 9 , 8 2 , 1 4 1 , 7 4 , 3 , 1 6 9 , 8 5 , 1 4 1 , 7 5 , 3 , 1 6 9 , 7 8 , 14 1 , 7 6 , 3 , 1 6 9 , 1 3 , 1 4 1 , 7 7 , 3 , 9 6 , - 1

D 8 D I M A ( 1 2 1 )C 9 F O R M X = 1 T O 1 2 1 : R E A D S : X = X + S : I F S = - 1 T H E N 1 1 0E P 1 0 0 A ( M X ) = S : N E X TC 1 1 I F X O 1 4 7 3 3 T H E N P R I N T " E R R O R I D A T A S T A T E M E N T

S . " : S T O PG 1 2 P R I N T " l C L R } g 6 § 1 2 D O W N j E N T E R Y O U R P R E F E R R E D

{ S P A C E ] C O L O R C H O I C E S "S 1 3 P R I N T " { 2 D O W N } # O S C R E E N C O L O R " ; : I N P U T A ( 4 0

) : P O K $ E 5 3 2 8 1 , A ( 4 0 )E 1 4 P R I N T " l D O W N } # O B O R D E R C O L O R " ; : I N P U T A ( 3 5 ) :

P O K E 5 3 2 8 0 , A ( 3 5 )K 1 5 P R I N T " ( D O W N ) A R E T H E S E A C C E P T A B L E ? ( Y / N ) " ; : I

N P U T A $ : I F A $ O " Y " T H E N 1 2 0D 1 6 P O K E 5 3 2 8 0 , 1 5 : P O K E 5 3 2 8 1 , 6 : P R I N T " { C L R ] { W H T } "D 1 7 P R I N T " { 2 D O W N J I R V S } I N S E R T F O R M A T T E D D I S K

I S P A C E J T O R E C E I V E D A T AQ 1 8 P R I N T " I R V S } 1 1 0 S P A C E S } T H E N P R E S S [ R E T U R N ]

1 1 S P A C E S ] "F 1 9 G E T R $ : I F R $ < > C H R $ ( 1 3 ) T H E N 1 9 0F G 2 0 0 P R I N T " { 2 D O W N ] W O R K I N G . . . " : O P E N 1 5 , 8 , 1 5 : O P E N 5

, 8 , 5 , " # " : P R I N T # 1 5 , " B - P : 5 , 0 "J 2 1 F O R D = 1 T O M X : P R I N T # 5 , C H R $ ( A ( D ) ) ; : N E X T D : P R I N T #G 2 2 P R I N T * 1 5 , " M - W : " C H R $ ( 0 ) C H R $ ( 5 ) ; 1 ; C H R $ ( 6 7 )K 2 3 P R I N T # 1 5 , " B - P : 5 , 0 " : P R I N T * 1 5 , " U 2 : 5 , 0 , 1 , 0 " : C L

O S E 5 : C L O S E 1 5F 2 4 O P E N 1 5 , 8 , 1 5 : I N P U T * 1 5 , A $ , B $ , C $ , D $ : C L O S E 1 5M 2 5 I F A $ = " 0 0 " T H E N P R I N T " B O O T T R A C K W R I T T E N " : E N DM 2 6 P R I N T " I R V S } A N E R R O R H A O C C U R R E D . " : P R I N T A $ ,

B $ , C $ , D $G 2 7 E N

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 200/228

C h a p t e r

P r o g r a m 5 - 3 . M e n u I — N o t e : S a v e a " H I " i y o u w a n t t h m e n u t o b o o t .F o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r , " A p p e n d i x B H 1 R E * * A U T O - B O O T " H I " P R O G R A M * * H 2 P R I N T " l C L R } { 2 D O W N ] " T A B ( 8 ) " § 5 §C 3 P R I N T T A B ( 1 1 ) " { Y E L } C - 1 2 8 S Y S T E M M E N U & 5 1 " : P R I NT T A B ( 8 ) " B 6 § "X 4 D A T A 6 4 M O D E B A S I C , 6 4 M O D E R U F I L E , B O O T

I S P A C E j C P / M D I S K , 1 2 8 M O D E B A S I CF 5 D A T A 1 2 8 M O D E R U F I L EM 6 M X = 5 : F O R D = 1 T O M X : R E A D A $ ( D ) : N E X TJ 7 F O R D = l T O M X : C H A R 0 , 2 0 - ( L E N ( A $ ( D ) ) / 2 ) , 5 + D * 2 , A $ (

D ) , 0 : N E X TF 8 N W = 1 : C H A R 0 , 0 , 2 0 , " U S E C U R S O R K E Y S T O M O V E - R E T

U R N T O S E L E C T "E 9 P R I N T " l W H T } " : C H A R 0 , 2 0 - ( L E N ( A $ ( N W ) ) / 2 ) , 5 + N W * 2

, A $ ( N W ) , l : P R I N T " i 6 § "H 1 0 G E T R $ : I F R $ = " l D O W N j " T H E N 1 4 0H B 1 1 0 I F R $ = " l U P j " T H E N 1 7 0H 1 2 I F R $ = C H R $ ( 1 3 ) T H E N 2 0 0E 1 3 G O T O 1 0 0D 1 4 C H A R 0 , 2 0 - ( L E N ( A $ ( N W ) ) / 2 ) , 5 + N W * 2 , A $ ( N W ) , 0A 1 5 N W = N W + 1 : I F N W = M X + 1 T H E N N W = 1B 1 6 G O T O 9 0H F 1 7 0 C H A R 0 , 2 0 - ( L E N ( A $ ( N W ) ) / 2 ) , 5 + N W * 2 , A $ ( N W ) , 0C G 1 8 0 N W = N W - 1 : I F N W = . T H E N N W = M XR D 1 9 0 G O T O 9 0Q 2 0 O N N W G O T O 2 2 0 , 2 9 0 , 2 3 0 , 2 8 0 , 2 6 0P 2 1 G O T O 1 0 0S 2 2 G O 6 4S 2 3 P R I N T " I C L R } { D O W N ] I N S E R T C P / M S Y S T E M D I S K ,R E S S [ R E T U R N ] "B 2 4 G E T R $ : I F R $ < > C H R $ ( 1 3 ) T H E N 2 4 0H 2 5 0 B O O TJ 2 6 P R I N T " I C L R } { D O W N J F I L E N A M E " ; : I N P U T F $E 2 7 R U N ( F $ )R F 2 8 0 P R I N T " I C L R } { D O W N } T H I S D I S K C O N T A I N S : I D O W N j ": D I R E C T O R Y : N E WM 2 9 P R I N T " { C L R } D O E S F I L E C O N T A I N A U T O R U N C O D E

Y / N ) " ;P 3 0 I N P U T F $ : I F F $ < > " Y " A N D F $ < > I I N " T H E N 2 9 0 i C 3 1 I F F $ = " Y " T H E N 4 4 0D 3 2 B L O A D " A U T O R U N . C 6 4 "P 3 3 P R I N T " I C L R J I D O W N J F I L E N A M E " ; : I N P U T F $K 3 4 I L E N ( F $ ) = . O R L E N ( F $ ) > 1 6 T H E N 2 9 0E 3 5 F O R D = 1 T O L E N ( F $ ) : P O K E 3 2 8 8 8 + D , A S C ( M I D $ ( F $ , D , 1

) ) : N E X T : P O K E 3 2 8 8 8 + D , 4 2E 3 6 P R I N T " I S T H I S S E L F S T A R T I N G F I L E ? ( Y / N ) "

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 201/228

P e r i p h e r a l s

S 3 7 G E T K E Y A ?R 3 8 I A $ o M N " T H E N 4 3 M H 3 9 0 P R I N T " I D O W N } E N T E R F I L E S T A R T A D D R E S S " ; : I N P U

T F A 4 0 I F L E N ( F $ ) = . O R L E N ( F $ ) > 5 T H E N 3 9 0H 4 1 F $ = " S Y S " + F $S 4 2 F O R D = 1 T O L E N ( F $ ) : P O K E 3 2 9 1 5 + D , A S C ( M I D $ ( F $ , D , 1) ) : N E X TH 4 3 G O 6 4P 4 4 P R I N T " I 2 D O W N j F I L E N A M E " ; : I N P U T F $D 4 5 B L O A D ( F $ )P 4 6 G O 6 4

P r o g r a m 5 - 4 . C r e a t e 6 A u t o r u n P r o g r a mF o m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B C 1 R E * C R E A T E S A A U T O R U F I L E W H E N Y O E N

E 6 M O D E * E 2 R E * M U S T B R U I 1 2 M O D E . T H P B A S I C

R O G R A M M U S T B B A S I C 2 . * J 3 D A T A 1 5 , 1 2 8 , 9 , 1 2 8 , 1 9 5 , 1 9 4 , 2 0 5 , 5 6 , 4 8 , 1 0 4 , 1 6 8 , 1

0 4 , 1 7 0A 4 D A T A 1 0 4 , 6 4 , 1 6 2 , 2 5 5 , 1 2 0 , 1 5 4 , 2 1 6 , 1 4 2 , 2 2 , 2 0 8 , 3 2

, 1 6 3 , 2 5 3 , 3 2 , 8 0D 5 D A T A 2 5 3 , 3 2 , 2 1 , 2 5 3 , 3 2 , 2 4 , 2 2 9 , 8 8 , 3 2 , 8 3 , 2 2 8 , 3 2 ,

1 9 1 , 2 2 7 , 3 2J 6 D A T A 3 4 , 2 2 8 , 1 6 2 , 2 5 1 , 1 5 4 , 1 6 9 , 1 1 3 , 1 3 3 , 4 3 , 1 6 9 , 1 2

8 , 1 3 3 , 4 4 , 2 3 4 , 2 3 4D 7 D A T A 1 6 9 , 0 , 1 3 3 , 4 5 , 1 6 9 , 0 , 1 3 3 , 4 6J 8 D A T A 1 6 2 , 1 6 0 , 1 3 4 , 5 6 , 1 6 9G 9 D A T A 8 2 , 1 4 1 , 1 1 9 , 2 , 1 6 9 , 2 1 3 , 1 4 1 , 1 2 0 , 2 , 1 6 9 , 1 3 , 1 4

1 , 1 2 1 , 2 , 1 6 9D 1 0 D A T A 3 , 1 3 3 , 1 9 8 , 1 6 2 , 1 2 8 , 1 3 8 , 7 6 , 1 1 6 , 1 6 4 , 0 , 0 , 0 ,

0 , 0 , 0 , 5 1 , 4 7F D 1 1 0 D A T A 4 9 , 5 3 , 2 2 , 4 9 , 4 6 , 4 9 , 0 , 0 , 0 , 0G 1 2 P R I N T C H R $ ( 1 4 7 ) : D N $ = C H R $ ( 1 7 )K 1 3 P R I N T D N $ " E N T E R F I L E N A M E T O A U T O R U N " ; : I N P U T F

1 S 1 4 O P E N 2 , 8 , 2 , F 1 $ + " , P , R " : G O S U B 3 0 0 : C L O S E 2H 1 5 P R I N T C H R $ ( 1 4 7 ) D N $ D N $ " P O K E 4 5 , 1 1 3 : P O K E 4 6 , 1 2 8 :

D L O A D " C H R $ ( 3 4 ) F l $ C H R $ ( 3 4 )P 1 6 P R I N T D N $ D N $ D N $ D N $ " P P = F R E ( 0 ) : P 0 K E 4 5 , l : P 0 K E 4 6, 2 8 : G O T O 1 7 0 t H O M E j " X 1 6 P O K E 2 0 8 , 2 : P O K E 8 4 2 , 1 3 : P O K E 8 4 3 , 1 3 : E N DX 1 7 P R I N T C H R $ ( 1 4 7 ) C H R $ ( 1 7 ) " E N T E R A U T O R U N F I L E N A

M E " ; : I N P U T F $E 1 8 P R I N T C H R $ ( 1 7 ) " [ " F $ " ] F I L E S I Z E : " 1 1 8 + ( 3 2 3 9 7 - P

P ) " B Y T E S "Q 1 9 X X = ( 3 2 3 9 7 - P P ) + 3 2 7 6 8 + 1 1 8

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 202/228

L C h a p t e r s ,

M 2 0 B A N K 0 : R E S T O R E : F O R D = . T O 1 1 2 : R E A D S : P O K E 3 2 7 6 8 + D, S : N E X T

G 2 1 H I = I N T ( X X / 2 5 6 ) : L O = 2 5 6 * ( X X / 2 5 6 - I N T ( X X / 2 5 6 ) )Q 2 2 P O K E 3 2 8 2 7 , L O : P O K E 3 2 8 3 1 , H IC C 2 3 0 B S A V E ( F $ ) , B 0 , P 3 2 7 6 8 T O P ( X X )B 2 4 G O S U B 3 0 0M 2 5 P R I N T C H R $ ( 1 7 ) M A U T 0 R U N F I L E C R E A T E D . "A 2 6 P R I N T C H R $ ( 1 7 ) " C R E A T E A N O T H E R ? ( Y / N ) " I F 2 7 G E T K E Y A $ : I F A $ = " Y " T H E N R U NX 2 8 I A $ = " N " T H E N P R I N T C H R $ ( 1 4 7 ) : N E WD 2 9 G O T O 2 7 0K 3 0 C L O S E 1 5 : O P E N 1 5 , 8 , 1 5 : I N P U T # 1 5 , A $ , B $ : I F A $ < > " 00 M T H E N P R I N T " I D O W N } ( R I G H T } I R V S } E R R O R : " B $ : E NP 3 1 R E T U R N

P r o g r a m 5 - 5 . 6 L o a d e r P r o g r a mE n t e r a n s a v e f r o m 6 m o d e .F o r m i s t a k e - p r o o f p r o g r a m e n t r y , b s u r e t u s " T h e A u t o m a t i c P r o o f r e a d e r / ' A p p e n d i x B

K 1 0 A $ = " D 2 B $ = " R U N : . . . • "B 3 P R I N T " I C L R } { B L U } 1 2 D O W N J P O 4 3 , 1 : P O 4 4 , 8 : N E W " : P

R I N T " 1 2 D O W N ] L O A D " C H R § ( 3 4 ) A $ C H R $ ( 3 4 ) " , 8 , 1E 4 P R I N T " { 4 D O W N j ? C H R $ ( 5 ) : " B $ " ( H O M E j " ;S 5 P O K E 8 0 8 , 2 3 7 : P O K E 8 0 9 , 2 4 6M 6 P O K E 1 9 8 # 3 : P O K E 6 3 1 , 1 3 : P O K E 6 3 2 , 1 3 : P O K E 6 3 3 , 1 3 : E

N

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 203/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 204/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 205/228

A p p e n d i xH o t T y p e I P r o g r a m s

I o r d e r t m a k e i a e a s y a p o s s i b l e t e n t e r t h p r o g r a m si t h i s b o o k , w e ' v e i n c l u d e d t w p r o g r a m e n t r y a i d s w r i t t e n i B A S I C : " T h e A u t o m a t i c P r o o f r e a d e r " a n " M I X " T a s s i s ty o i u n d e r s t a n d i n g h o t e n t e r t h e s e p r o g r a m s , C O P U T E ! h a e s t a b l i s h e d t h e f o l l o w i n g l i s t i n g c o n v e n t i o n s .

G e n e r a l l y , B A S I C p r o g r a m l i s t i n g s l i k e t h o n f o M L w i l l c o n t a i n w o r d s w i t h i n b r a c e s w h i c h s p e l l o u a n s p e c i a lc h a r a c t e r s : { D O W N } m e a n s t p r e s s t h e c u r s o r - d o w n k e y ; { S P A C E S } m e a n s t p r e s s t h s p a c e b a f i v e t i m e s .

T i n d i c a t e t h a t k e s h o u l d b s h i f t e d ( p r e s s t h k e w h i l e h o l d i n g d o w n t h S H I F T k e y ) , t h k e w i l l b u n d e rl i n e d i o u l i s t i n g s . F o e x a m p l e , m e a n s t t y p e t h S k e yw h i l e h o l d i n g d o w n t h S H I F T k e y . T h i s w o u l d a p p e a r o y o u r s c r e e n a h e a r t s y m b o l . I y o f i n d a u n d e r l i n e d k e e n c l o s e d i n b r a c e s , f o e x a m p l e , { 1 0 N } y o s h o u l d t y p e t h k e a m a n y t i m e s a i n d i c a t e d . I t h i s c a s e , y o u w o u l d e n t e rt e s h i f t e d N ' s .

I k e i e n c l o s e d i n s p e c i a l b r a c k e t s , f > \ y o s h o u l dh o l d d o w n t h C o m m o d o r e k e w h i l e p r e s s i n g t h k e i n s i d et h s p e c i a l b r a c k e t s . ( T h e C o m m o d o r e k e i t h k e i t h l o w e r l e f t c o r n e r o t h e k e y b o a r d . ) A g a i n , i t h k e i p r c e d e d b n u m b e r , y o s h o u l d p r e s s t h e k e a m a n y t i m e sa i n d i c a t e d ; [ < 9 @ > ] m e a n s t y p e C o m m o d o r e - @ n i n e t i m e s .

R e f e r t F i g u r e A - w h e n e n t e r i n g c u r s o r a n c o l o r c o t r o l k e y s :

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 206/228

A p p e n d i x

F i g u r e A - 1 . K e y b o a r d C o n v e n t i o n sW h e n t o uR e a d :{ C L R }{ H O M E }{ U P }{ D O W N }{ L E F T }{ R I G H T }{ R V S }{ O F F }{ B L K }{ W H T }{ R E D }{ C Y N }{ P U R }{ G R N }{ B L U }{ Y E L }

P r e s s :S H I F T C L R / H O M E

C L R / H O M ES H I F T

S H I F T

C R S RC R S R

« - C R S R - >« - C R S R - * |

C T R L | C T R L |

[ C T R L | _ C T R LC T R L | C T R L [ ~ ~ 4C T R L | C T R L |

C T R L | | C T R L |

S e e :W h e n Y b uR e a d :

F 2 F 3

F F F F

P r e s s :C O M M O D O R E | T C O M M O D O R E

| c o m m o d o r e | | 3 |c o m m o d o r e [ ~ 4 ~ [c o m m o d o r e [ 7 C O M M O D O R EC O M M O D O R E | T c o m m o d o r e ] [ T

~ 7

S e e :

S H I F T f f

S H I F T p j f

S H I F T f

S H I F T

L

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 207/228

A p p e n d i xT h A u t o m a t i c P r o o f r e a d e rP h i l i p I N e l s o n

" T h e A u t o m a t i c P r o o f r e a d e r " h e l p s y o t y p e i p r o g r a m l i s ti n g s w i t h o u t t y p i n g m i s t a k e s . I t ' s a s h o r t e r r o r - c h e c k i n g p r g r a m t h a t c o n c e a l s i t s e l f i m e m o r y a n a d h e r e s t y o u rC o m m o d o r e ' s o p e r a t i n g s y s t e m . E a c h t i m e y o p r e s s R E T U R Nt e n t e r a p r o g r a m l i n e , t h P r o o f r e a d e r d i s p l a y s t w o - l e t t e rc h e c k s u m i r e v e r s e v i d e o a t h t o o y o u r s c r e e n . I t h c h e c k s u m o y o u r s c r e e n d o e s n ' t m a t c h t h o n i t h e p r i n t e dl i s t i n g , y o u ' v e t y p e d t h l i n e i n c o r r e c t l y — i t ' s t h a t s i m p l e . Y o d o n ' t h a v e t u s t h P r o o f r e a d e r t e n t e r p r i n t e d l i s t i n g s , b u d o i n g s g r e a t l y r e d u c e s y o u r c h a n c e s o m a k i n g t y p o .

G e t t i n g S t a r t e dF i r s t , t y p e i t h A u t o m a t i c P r o o f r e a d e r p r o g r a m e x a c t l y a i a p p e a r s i t h l i s t i n g . S i n c e t h P r o o f r e a d e r c a n ' t c h e c k i t s e l f ,t y p e c a r e f u l l y t a v o i d m i s t a k e s . D o n ' t o m i t a n l i n e s , e v e n i t h e y c o n t a i n u n f a m i l i a r c o m m a n d s . A s o o n a y o u ' r e f i n i s h e dt y p i n g t h e P r o o f r e a d e r , s a v e a l e a s t t w c o p i e s o d i s k o r t a p eb e f o r e r u n n i n g i t h f i r s t t i m e . T h i s i v e r y i m p o r t a n t b e c a u s et h P r o o f r e a d e r e r a s e s t h B A S I C p o r t i o n o i t s e l f w h e n y o r u i t l e a v i n g o n l y t h m a c h i n e l a n g u a g e p o r t i o n i m e m o r y .W h e n t h a t ' s d o n e , t y p e R U a n p r e s s R E T U R N . A f t e ra n n o u n c i n g w h i c h c o m p u t e r i t ' s r u n n i n g o n , t h e P r o o f r e a d e ri n s t a l l s t h M r o u t i n e i m e m o r y , d i s p l a y s t h m e s s a g eP R O O F R E A D E R A C T I V E , e r a s e s t h B A S I C p o r t i o n o i t s e l f ,a n e n d s . I y o t y p e L I S T a n d p r e s s R E T U R N , y o u ' l l s e t h a tn B A S I C p r o g r a m r e m a i n s i m e m o r y . T h e c o m p u t e r i r e a d yf o y o t t y p e i n n e B A S I C p r o g r a m .

E n t e r i n g P r o g r a m sO n c e t h P r o o f r e a d e r i a c t i v e , y o c a b e g i n t y p i n g i B A S I C p r o g r a m a s u s u a l . E v e r y t i m e y o f i n i s h t y p i n g l i n ea n p r e s s R E T U R N , t h P r o o f r e a d e r d i s p l a y s a t w o - l e t t e rc h e c k s u m ( r e v e r s e - v i d e o l e t t e r s ) i t h u p p e r l e f t c o r n e r o t h s c r e e n . C o m p a r e t h i s c h e c k s u m w i t h t h t w o - l e t t e r c h e c k s u m

1 9

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 208/228

A p p e n d i x

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

T h P r o o f r e a d e r i g n o r e s s p a c e s t h a t a r e n ' t e n c l o s e d i q u o t a t i o n m a r k s , s y o c a n o m i t s p a c e s ( o a d e x t r a o n e s )b e t w e e n k e y w o r d s a n s t i l l s e e a m a t c h i n g c h e c k s u m . F o e x ' — a m p l e , t h e s e t w l i n e s g e n e r a t e t h s a m e c h e c k s u m :1 P R I N T ' T H I S I B A S I C '1 P R I N T " T H I S I B A S I C '

H o w e v e r , s i n c e s p a c e s i n s i d e q u o t a t i o n m a r k s a r a l m o s ta l w a y s s i g n i f i c a n t , t h P r o o f r e a d e r p a y s a t t e n t i o n t t h e m . F o i n s t a n c e , t h e s e t w l i n e s g e n e r a t e d i f f e r e n t c h e c k s u m s :1 P R I N T " T H I S I B A S I C1 P R I N T ' T H I S I S B A S I C "

c o m m o n t y p i n g m i s t a k e i t r a n s p o s i t i o n — t y p i n g t w s u c c e s s i v e c h a r a c t e r s i t h w r o n g o r d e r , l i k e P I R N T i n s t e a do P R I N T o 6 4 3 7 8 i n s t e a d o 6 4 7 3 8 . c h e c k s u m p r o g r a mt h a t a d d s u t h v a l u e s o a l t h c h a r a c t e r s i l i n e c a n ' tp o s s i b l y d e t e c t t r a n s p o s i t i o n e r r o r s ( i c a o n l y t e l l w h e t h e rt h r i g h t c h a r a c t e r s a r e p r e s e n t , r e g a r d l e s s o f w h a t o r d e rt h e y ' r e i n ) . B e c a u s e t h P r o o f r e a d e r c o m p u t e s t h c h e c k s u mw i t h m o r e s o p h i s t i c a t e d f o r m u l a , i i a l s o s e n s i t i v e t t h p o s i t i o n o e a c h c h a r a c t e r w i t h i n t h l i n e a n t h u s c a t c h e st r a n s p o s i t i o n e r r o r s .

T h P r o o f r e a d e r d o e s n o a c c e p t k e y w o r d a b b r e v i a t i o n s( f o r e x a m p l e , i n s t e a d o P R I N T ) . I y o p r e f e r t u s a b b r e v ia t i o n s , y o c a s t i l l c h e c k t h l i n e w i t h t h P r o o f r e a d e r : S i p l L I S T t h l i n e a f t e r t y p i n g i t m o v e t h c u r s o r b a c k o n t o t h l i n e , a n p r e s s R E T U R N . L I S T i n g t h l i n e s u b s t i t u t e s t h f u l lk e y w o r d f o t h a b b r e v i a t i o n a n a l l o w s t h P r o o f r e a d e r t w o r k p r o p e r l y . T h s a m e t e c h n i q u e w o r k s f o r e c h e c k i n gp r o g r a m y o u ' v e a l r e a d y t y p e d i n R e l o a d t h p r o g r a m , L I S T i — s e v e r a l l i n e s o t h s c r e e n , a n p r e s s R E T U R N o v e r t h e m .

D n o t u s e a n G R A P H I C c o m m a n d s w h i l e t h P r o o f r e a d e ri a c t i v e . W h e n y o a c t i v a t e c o m m a n d l i k e G R A P H I C 1 t h I c o m p u t e r m o v e s e v e r y t h i n g a t h s t a r t o B A S I C p r o g r a ms p a c e — i n c l u d i n g t h P r o o f r e a d e r — t o a n o t h e r m e m o r y a r e a ,c a u s i n g t h P r o o f r e a d e r t c r a s h . T h e s a m e t h i n g h a p p e n s i y o r u a n p r o g r a m t h a t c o n t a i n s G R A P H I C c o m m a n d .T h P r o o f r e a d e r d e a l l o c a t e s a n g r a p h i c s a r e a s b e f o r e i n s t a l l -

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 209/228

A p p e n d i x

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

B A S I C o p e r a t i o n s , i t ' s a l w a y s g o o d i d e a t d i s a b l e i b e f o r er u n n i n g a n o t h e r p r o g r a m . S o m e p r o g r a m s m a n e e d t h s p a c e o c c u p i e d b t h P r o o f r e a d e r ' s M r o u t i n e o m a c r e a t eo t h e r m e m o r y c o n f l i c t s . H o w e v e r , t h P r o o f r e a d e r i p u r p o s e l ym a d e d i f f i c u l t t d i s l o d g e : I t ' s n o a f f e c t e d b t a p e o d i s k o e r a t i o n s , o b p r e s s i n g R U N / S T O P - R E S T O R E . T h s i m p l e s tw a t d i s a b l e i i t t u r n t h e c o m p u t e r o f f , t h e n o a g a i n .P r o g r a m B - 1 . T h A u t o m a t i c P r o o f r e a d e r1 V E C = P E E K ( 7 7 2 ) + 2 5 6 * P E E K ( 7 7 3 ) : L O = 4 3 : H I = 4 42 P R I N T " A U T O M A T I C P R O O F R E A D E R F O " ; : I F V E C = 4 2 3 6

T H E N P R I N T " C - 6 4 "3 I V E C = 5 0 5 5 6 T H E N P R I N T " V I C - 2 0 "4 I V E C = 3 5 1 5 8 T H E N G R A P H I C C L R : P R I N T " P L U S / 4

6 5 0 I F V E C = 1 7 1 6 5 T H E N L O = 4 5 : H I = 4 6 : G R A P H I C C L R : P R I N T" 1 2 8 "6 S A = ( P E E K ( L O ) + 2 5 6 * P E E K ( H I ) ) + 6 : A D R = S A7 F O J = 0 T O 1 6 6 : R E A D B Y T : P O K E A D R , B Y T : A D R = A D R + 1 :

C H K = C H K + B Y T : N E X T8 I C H K < > 2 0 5 7 0 T H E N P R I N T " * E R R O R * C H E C K T Y P I N G

{ S P A C E } I N D A T A S T A T E M E N T S " : E N D9 F O J = T 5 : R E A D R F , L F , H F : R S = S A + R F : H B = I N T ( R S / 2

5 6 ) : L B = R S - ( 2 5 6 * H B )1 0 C H K = C H K + R F + L F + H F : P O K E S A + L F # L B : P O K E S A + H F , H B : N

E X 1 1 I C H K < > 2 2 0 5 4 T H E N P R I N T " * E R R O R * R E L O A D P R O G R

A A N C H E C K F I N A L L I N E " : E N D1 2 P O K E S A + 1 4 9 , P E E K ( 7 7 2 ) : P O K E S A + 1 5 0 , P E E K ( 7 7 3 )1 3 I V E C = 1 7 1 6 5 T H E N P O K E S A + 1 4 , 2 2 : P O K E S A + 1 8 , 2 3 :

P O K E S A + 2 9 , 2 2 4 : P O K E S A + 1 3 9 , 2 2 41 4 P R I N T C H R $ ( 1 4 7 ) ; C H R $ ( 1 7 ) ; " P R O O F R E A D E R A C T I V E " :

S Y S 1 5 P O K E H I , P E E K ( H I ) + l : P O K E ( P E E K ( L O ) + 2 5 6 * P E E K ( H I )

) - l , 0 : N E W1 6 D A T A 1 2 0 , 1 6 9 , 7 3 , 1 4 1 , 4 , 3 , 1 6 9 , 3 , 1 4 1 , 5 , 31 7 D A T A 8 8 , 9 6 , 1 6 5 , 2 0 , 1 3 3 , 1 6 7 , 1 6 5 , 2 1 , 1 3 3 , 1 6 8 , 1 6 91 8 D A T A 0 , 1 4 1 , 0 , 2 5 5 , 1 6 2 , 3 1 , 1 8 1 , 1 9 9 , 1 5 7 , 2 2 7 , 31 9 D A T A 2 0 2 , 1 6 , 2 4 8 , 1 6 9 , 1 9 , 3 2 , 2 1 0 , 2 5 5 , 1 6 9 , 1 8 , 3 22 0 D A T A 2 1 0 , 2 5 5 , 1 6 0 , 0 , 1 3 2 , 1 8 0 , 1 3 2 , 1 7 6 , 1 3 6 , 2 3 0 , 1 8 02 1 D A T A 2 0 0 , 1 8 5 , 0 , 2 , 2 4 0 , 4 6 , 2 0 1 , 3 4 , 2 0 8 , 8 , 7 22 2 D A T A 1 6 5 , 1 7 6 , 7 3 , 2 5 5 , 1 3 3 , 1 7 6 , 1 0 4 , 7 2 , 2 0 1 , 3 2 , 2 0 82 3 D A T A 7 , 1 6 5 , 1 7 6 , 2 0 8 , 3 , 1 0 4 , 2 0 8 , 2 2 6 , 1 0 4 , 1 6 6 , 1 8 02 4 D A T A 2 4 , 1 6 5 , 1 6 7 , 1 2 1 , 0 , 2 , 1 3 3 , 1 6 7 , 1 6 5 , 1 6 8 , 1 0 5

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 210/228

L A p p e n d i x

2 5 D A T A 0 , 1 3 3 , 1 6 8 , 2 0 2 , 2 0 8 , 2 3 9 , 2 4 0 , 2 0 2 , 1 6 5 , 1 6 7 , 6 92 6 D A T A 1 6 8 , 7 2 , 4 1 , 1 5 , 1 6 8 , 1 8 5 , 2 1 1 , 3 , 3 2 , 2 1 0 , 2 5 52 7 D A T A 1 0 4 , 7 4 , 7 4 , 7 4 , 7 4 , 1 6 8 , 1 8 5 , 2 1 1 , 3 , 3 2 , 2 1 0 i 2 8 D A T A 2 5 5 , 1 6 2 , 3 1 , 1 8 9 , 2 2 7 , 3 , 1 4 9 , 1 9 9 , 2 0 2 , 1 6 , 2 4 82 9 D A T A 1 6 9 , 1 4 6 , 3 2 , 2 1 0 , 2 5 5 , 7 6 , 8 6 , 1 3 7 , 6 5 , 6 6 , 6 73 0 D A T A 6 8 , 6 9 , 7 0 , 7 1 , 7 2 , 7 4 , 7 5 , 7 7 , 8 0 , 8 1 , 8 2 , 8 3 , 8 83 1 D A T A 1 3 , 2 , 7 , 1 6 7 , 3 1 , 3 2 , 1 5 1 , 1 1 6 , 1 1 7 , 1 5 1 , 1 2 8 , 1 2 9 ,1 6 7 , 1 3 6 , 1 3 7

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 211/228

A p p e n d i xM a c h i n e L a n g u a g e E d i t o r ,M L O t t i s R C o w p e r

" M L X " i n e w a t e n t e r l o n g m a c h i n e l a n g u a g e p r og r a m s w i t h o u t l o o f u s s . M L l e t s y o e n t e r t h e n u m b e r sf r o m s p e c i a l l i s t t h a t l o o k s s i m i l a r t B A S I C D A T A s t a t em e n t s . I c h e c k s y o u r t y p i n g o l i n e - b y - l i n e b a s i s . I w o n ' tl e y o e n t e r i n v a l i d c h a r a c t e r s o l e y o c o n t i n u e i t h e r e ' sm i s t a k e i l i n e . I w o n ' t e v e n l e y o e n t e r a l i n e o d i g i t o u o s e q u e n c e .

U s i n g M L T y p e i a n s a v e s o m e c o p i e s o M L ( y o u ' l l w a n t t u s i t e n t e r f u t u r e M p r o g r a m s f r o m o t h e r C O M P U T E ! p u b l i c at i o n s ) . W h e n y o u ' r e r e a d y t e n t e r t h m a c h i n e l a n g u a g e p a r to " O r b i t r o n " o " M e t a B A S I C " , l o a d a n r u M L X . I a s k s y o f o s t a r t i n g a d d r e s s a n a e n d i n g a d d r e s s . T h e s e a d d r e s s e sa r P r o g r a m 3 - 2 . O R B . O B JS t a r t i n g a d d r e s s : 7 5 3 0 . .E n d i n g a d d r e s s : 7 9 9 7S a v e a s O R B . O B JP r o g r a m 4 - 1 . M e t a B A S I CS t a r t i n g a d d r e s s : 1 3 0 0E n d i n g a d d r e s s : 1 8 B F

I y o u ' r e u n f a m i l i a r w i t h m a c h i n e l a n g u a g e , t h a d d r e s s e s( a n d a l o t h e r v a l u e s y o e n t e r i M L X ) m a a p p e a r s t r a n g e .I n s t e a d o t h u s u a l d e c i m a l n u m b e r s y o u ' r e a c c u s t o m e d t o t h e s e n u m b e r s a r i h e x a d e c i m a l — a b a s e 1 6 n u m b e r i n g s y t e c o m m o n l y u s e d b M p r o g r a m m e r s . H e x a d e c i m a l — h e xf o s h o r t — i n c l u d e s t h n u m b e r s 0 - a n t h l e t t e r s A - F . B u d o n ' t w o r r y — e v e n i y o k n o w n o t h i n g a b o u t M o h e x , y o s h o u l d h a v e n t r o u b l e u s i n g M L X .

A f t e r y o e n t e r t h s t a r t i n g a n e n d i n g a d d r e s s e s , M L w i l l o f f e r y o t h o p t i o n o c l e a r i n g t h w o r k s p a c e . C h o o s e

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 212/228

A p p e n d i x

t h i s o p t i o n i y o u ' r e s t a r t i n g t o e n t e r p r o g r a m f o t h f i r s tt i m e . I y o u ' r e c o n t i n u i n g t e n t e r p r o g r a m t h a t y o p a r t i a l l yt y p e d f r o m p r e v i o u s s e s s i o n , d o n ' t c h o o s e t h i s o p t i o n .

I t ' s n o n e c e s s a r y t k n o w m o r e a b o u t t h i s o p t i o n t u s l — M L X , b u h e r e ' s a e x p l a n a t i o n i y o u ' r e i n t e r e s t e d : W h e n y o f i r s t r u M L X , t h w o r k s p a c e a r e a c o n t a i n s r a n d o m v a l u e s .C l e a r i n g t h e w o r k s p a c e f i l l s i w i t h z e r o s . T h i s m a k e s i e a s i e r ' — t f i n d w h e r e y o u l e f t o f i y o e n t e r t h l i s t i n g i m u l t i p l es i t t i n g s . H o w e v e r , c l e a r i n g t h w o r k s p a c e i u s e f u l o n l y b e f o r ey o f i r s t b e g i n e n t e r i n g l i s t i n g ; t h e r e ' s n n e e d t c l e a r i b e f o r e y o r e l o a d t c o n t i n u e e n t e r i n g p a r t i a l l y t y p e d l i s t i n g .

W h e n y o s a v e y o u r w o r k w i t h M L X , i s t o r e s t h e n t i r ec o n t e n t s o t h d a t a b u f f e r . I y o c l e a r t h w o r k s p a c e b e f o r es t a r t i n g , t h i n c o m p l e t e p o r t i o n o t h l i s t i n g i f i l l e d w i t h z r o w h e n s a v e d a n t h u s r e f i l l e d w i t h z e r o s w h e n r e l o a d e d . I y o d o n ' t c l e a r t h w o r k s p a c e w h e n f i r s t s t a r t i n g , t h i n c o mp l e t e p o r t i o n o t h l i s t i n g i f i l l e d w i t h r a n d o m d a t a . W h e t h e ro n o y o c l e a r t h w o r k s p a c e b e f o r e y o r e l o a d , t h i s r a n d o md a t a w i l l r e f i l l t h u n f i n i s h e d p a r t o f t h l i s t i n g w h e n y o l o a dy o u r p r e v i o u s w o r k . T h r u l e , t h e n , i t u s t h c l e a r w o r ks p a c e f e a t u r e b e f o r e y o b e g i n e n t e r i n g d a t a f r o m l i s t i n g a n n o t b o t h e r w i t h i a f t e r w a r d .

A t h i s p o i n t , M L p r e s e n t s m e n u o c o m m a n d s :E n t e r d a t aD i s p l a y d a t aL o a d d a t aS a v e f i l eC a t a l o g d i s kQ u i t

E n t e r i n g L i s t i n gT b e g i n e n t e r i n g d a t a , p r e s s E Y o u ' l l b a s k e d f o t h a d d r e s s a w h i c h y o w i s h t b e g i n e n t e r i n g d a t a . ( I y o p r e s s e d b m i s t a k e , y o c a r e t u r n t t h c o m m a n d m e n ub p r e s s i n g R E T U R N . ) W h e n y o b e g i n t y p i n g , y o s h o u l de n t e r t h s t a r t i n g a d d r e s s h e r e . I y o u ' r e t y p i n g p r o g r a m i m u l t i p l e s i t t i n g s , y o s h o u l d e n t e r t h a d d r e s s w h e r e y o u l e f to f t y p i n g a t h e n o t h p r e v i o u s s e s s i o n . I a n c a s e ,m a k e s u r e t h a d d r e s s y o e n t e r c o r r e s p o n d s t t h a d d r e s s o

l i n e o t h M L l i s t i n g . O t h e r w i s e , y o u ' l l b u n a b l e t e n t e rt h e d a t a c o r r e c t l y .

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 213/228

A p p e n d i x

A f t e r y o e n t e r t h a d d r e s s , y o u ' l l s e t h a t a d d r e s s a p p e a ra p r o m p t w i t h n o n b l i n k i n g c u r s o r . N o y o u ' r e r e a d y t e n t e r d a t a . T y p e i a l n i n e n u m b e r s o n t h a t l i n e , b e g i n n i n gw i t h t h f i r s t t w o - d i g i t n u m b e r a f t e r t h c o l o n ( : ) . E a c h l i n er e p r e s e n t s e i g h t d a t a b y t e s a n c h e c k s u m . A l t h o u g h a M L X -f o r m a t l i s t i n g r e s e m b l e s t h " h e x d u m p " m a c h i n e l a n g u a g el i s t i n g s y o m a b e a c c u s t o m e d t o t h e x t r a c h e c k s u m n u b e o t h e n a l l o w s M L t c h e c k y o u r t y p i n g . ( Y o u c a e t e t h d a t a f r o m a M L l i s t i n g u s i n g t h b u i l t - i n m o n i t o r i t h r i g h t m o s t c o l u m n o d a t a i o m i t t e d , b u w r e c o m m e n da g a i n s t i t I t ' s m u c h e a s i e r t l e M L d t h p r o o f r e a d i n g a n e r r o r c h e c k i n g f o y o u . )

O n l y t h n u m b e r s 0 - a n t h l e t t e r s A - c a b t y p e di n I y o p r e s s a n o t h e r k e ( w i t h s o m e e x c e p t i o n s n o t e d b el o w ) , y o u ' l l h e a r w a r n i n g b u z z . T s i m p l i f y t y p i n g , M L r d e f i n e s t h f u n c t i o n k e y s a n t h a n k e y s o t h n u m e r i ck e y p a d s t h a t y o c a e n t e r d a t a o n e - h a n d e d . F i g u r e C - s h o w s t h k e y p a d c o n f i g u r a t i o n s u p p o r t e d b M L X .F i g u r e C - 1 . K e y p a d f o 1 2 M L

M L c h e c k s f o t r a n s p o s e d c h a r a c t e r s . I y o u ' r e s u p p o s e dt t y p e i A a n i n s t e a d e n t e r 0 A , M L w i l l c a t c h y o u r m i t a k e . T c o r r e c t t y p i n g m i s t a k e s b e f o r e f i n i s h i n g l i n e , u s t h I N S T / D E L k e t d e l e t e t h c h a r a c t e r t t h l e f t o t h c u r s o r .

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 214/228

L A p p e n d i x

( T h e c u r s o r - l e f t k e a l s o d e l e t e s . ) I y o m e s s u l i n e r e a l l y ' — b a d l y , p r e s s C L R / H O M E t s t a r t t h l i n e o v e r .

T h R E T U R N k e i a l s o a c t i v e , b u t o n l y b e f o r e a n d a t a I i t y p e d o l i n e . P r e s s i n g R E T U R N a t h i s p o i n t r e t u r n s y o ' — t t h c o m m a n d m e n u . A f t e r y o t y p e a c h a r a c t e r o f d a t a ,M L d i s a b l e s R E T U R N u n t i l t h e c u r s o r r e t u r n s t t h s t a r t o

l i n e . R e m e m b e r , y o c a p r e s s C L R / H O M E t g e t l i n e ' — n u m b e r p r o m p t q u i c k l y .

B e e p o B u z zW h e n y o e n t e r l i n e , M L r e c a l c u l a t e s t h c h e c k s u m f r o mt h e i g h t b y t e s a n t h a d d r e s s a n c o m p a r e s t h i s v a l u e t t h n u m b e r f r o m t h n i n t h c o l u m n . I t h v a l u e s m a t c h , y o u ' l lh e a r p l e a s a n t b e e p t i n d i c a t e t h a t t h l i n e w a e n t e r e d c o r e c t l y . T h d a t a i t h e n a d d e d t t h w o r k s p a c e a r e a , a n t h p r o m p t f o t h n e x t l i n e o d a t a a p p e a r s . B u i M L d e t e c t st y p i n g e r r o r , y o u ' l l h e a r l o b u z z a n s e a e r r o r m e s s a g e .M L w i l l t h e n r e d i s p l a y t h e l i n e f o r e d i t i n g .T m a k e c o r r e c t i o n s i n l i n e t h a t M L h a r e d i s p l a y e df o e d i t i n g , c o m p a r e t h l i n e o t h s c r e e n w i t h t h o n p r i n t e d i t h l i s t i n g , t h e n m o v e t h e c u r s o r t t h m i s t a k e a n p r e s s t h c o r r e c t k e y . T h c u r s o r - l e f t a n - r i g h t k e y s p r o v i d et h n o r m a l c u r s o r c o n t r o l s . ( T h e I N S T / D E L k e n o w o r k s a a a l t e r n a t i v e c u r s o r - l e f t k e y . ) Y o c a n n o t m o v e l e f t b e y o n dt h f i r s t c h a r a c t e r i t h l i n e . I y o t r y t o m o v e b e y o n d t h r i g h t m o s t c h a r a c t e r , y o u ' l l r e e n t e r t h l i n e . D u r i n g e d i t i n g , R T U R N i a c t i v e ; p r e s s i n g i t e l l s M L t r e c h e c k t h l i n e . Y o c a p r e s s t h e C L R / H O M E k e t o c l e a r t h e n t i r e l i n e i y o w a n t t s t a r t f r o m s c r a t c h , o i y o w a n t t g e t l i n e n u b e p r o m p t t u s R E T U R N t g e b a c k t t h m e n u .

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

O t h e r M L F u n c t i o n sT h s e c o n d m e n u c h o i c e , D I S P L A Y D A T A , e x a m i n e s m e m o r y I a n s h o w s t h c o n t e n t s i t h s a m e f o r m a t a t h p r o g r a m ' — l i s t i n g ( i n c l u d i n g t h c h e c k s u m ) . W h e n y o p r e s s D M L a s k sy o f o s t a r t i n g a d d r e s s . B s u r e t h a t t h s t a r t i n g a d d r e s sy o g i v e c o r r e s p o n d s t l i n e n u m b e r i t h l i s t i n g . O t h e r - ' — 'w i s e , t h e d i s p l a y w i l l b m e a n i n g l e s s . M L d i s p l a y s p r o g r a ml i n e s u n t i l i r e a c h e s t h e n o t h p r o g r a m , a w h i c h p o i n t2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 215/228

A p p e n d i x

t h m e n u i r e d i s p l a y e d . Y o c a n p a u s e t h s c r o l l i n g d i s p l a yb p r e s s i n g t h e s p a c e b a r . ( M L X f i n i s h e s p r i n t i n g t h e c u r r e n tl i n e b e f o r e h a l t i n g . ) T o r e s u m e s c r o l l i n g , p r e s s t h e s p a c e b a ra g a i n . T b r e a k o u o t h e d i s p l a y a n r e t u r n t t h m e n ub e f o r e t h e n d i n g a d d r e s s i r e a c h e d , p r e s s R E T U R N .

T w m o r e m e n u s e l e c t i o n s l e y o s a v e p r o g r a m s a n l o a d t h e m b a c k i n t o t h c o m p u t e r . T h e s e a r S A V E F I L E a n L O A D D A T A ; t h e i r o p e r a t i o n i q u i t e s t r a i g h t f o r w a r d . W h e ny o p r e s s o L M L a s k s y o f o t h f i l e n a m e . ( A g a i n ,p r e s s i n g R E T U R N a t h i s p r o m p t w i t h o u t e n t e r i n g a n y t h i n gr e t u r n s y o t t h c o m m a n d m e n u . ) N e x t , M L a s k s y o t p r e s s e i t h e r o t o s e l e c t d i s k o t a p e .

Y o u ' l l n o t i c e t h e d i s k d r i v e s t a r t i n g a n s t o p p i n g s e v e r a lt i m e s d u r i n g s a v e . D o n ' t p a n i c ; t h i s i n o r m a l b e h a v i o r . M L o p e n s a n w r i t e s t t h f i l e i n s t e a d o f u s i n g t h u s u a l S A V Ec o m m a n d . ( L o a d s , o t h e o t h e r h a n d , o p e r a t e a n o r m a l s p e e d —t h a n k s t t h r e l o c a t i n g f e a t u r e o B A S I C 7 . 0 ' s B L O A D c o m a n d . ) R e m e m b e r t h a t M L s a v e s t h e e n t i r e w o r k s p a c e a r e af r o m t h s t a r t i n g a d d r e s s t t h e n d i n g a d d r e s s , s o t h e s a v e o l o a d m a t a k e l o n g e r t h a n y o m i g h t e x p e c t i y o u ' v e e n t e r e do n l y s m a l l a m o u n t o d a t a f r o m l o n g l i s t i n g . W h e n s a v i n g

p a r t i a l l y c o m p l e t e d l i s t i n g , m a k e s u r e t n o t e t h a d d r e s sw h e r e y o s t o p p e d t y p i n g s t h a t y o u ' l l k n o w w h e r e t o r es u m e e n t r y w h e n y o r e l o a d .

E r r o r A l e r tM L r e p o r t s a n e r r o r s d e t e c t e d d u r i n g t h s a v e o l o a d a n d i s p l a y s t h s t a n d a r d e r r o r m e s s a g e s . ( T a p e u s e r s s h o u l d b e a ri m i n d t h a t t h C o m m o d o r e 1 2 i n e v e r a b l e t d e t e c t e r r o r sw h e n s a v i n g t t a p e . ) M L a l s o h a t h r e e s p e c i a l l o a d e r r o rm e s s a g e s :

I N C O R R E C T S T A R T I N G A D D R E S S , w h i c h m e a n s t h f i l ey o u ' r e t r y i n g t l o a d d o e s n o h a v e t h s t a r t i n g a d d r e s s y o s p e c i f i e d w h e n y o r a M L X . I t h i s c a s e , n d a t a w i l l b l o a d e d .L O A D E N D E D A a d d r e s s , w h i c h m e a n s t h f i l e y o u ' r e t r i n t l o a d e n d s b e f o r e t h e e n d i n g a d d r e s s y o s p e c i f i e dw h e n y o s t a r t e d M L X . T h d a t a f r o m t h f i l e i l o a d e d , b u i e n d s a t h a d d r e s s s p e c i f i e d i t h e r r o r m e s s a g e .T R U N C A T E D A E N D I N G A D D R E S S , w h i c h m e a n s t h f i l ey o u ' r e t r y i n g t l o a d e x t e n d s b e y o n d t h e n d i n g a d d r e s s y o

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 216/228

A p p e n d i x

s p e c i f i e d w h e n y o s t a r t e d M L X . T h d a t a f r o m t h f i l e i sl o a d e d , b u t o n l y u t t h s p e c i f i e d e n d i n g a d d r e s s .

I y o s e o n o f t h e s e m e s s a g e s a n f e e l c e r t a i n t h a ty o u V e l o a d e d t h r i g h t f i l e , e x i t a n r e r u n M L X , b e i n g c a r e f u lt e n t e r t h e c o r r e c t s t a r t i n g a n e n d i n g a d d r e s s e s .

I y o w i s h t c h e c k w h i c h p r o g r a m s a r o d i s k , s e l e c t | t h o p t i o n f r o m t h c o m m a n d m e n u f o d i r e c t o r y . Y o c a u s t h 1 2 8 ' s N S C R O L L k e t p a u s e t h d i s p l a y . A f t e rw a r d , p r e s s a n k e t r e t u r n t t h m e n u .

T h Q u i t m e n u o p t i o n h a t h o b v i o u s e f f e c t — i t s t o p sM L a n e n t e r s B A S I C . T h R U N / S T O P k e i t r a p p e d , s t h o p t i o n l e t s y o e x i t t h p r o g r a m w i t h o u t t u r n i n g o f t h c o m p u t e r . ( O c o u r s e , R U N / S T O P - R E S T O R E a l s o g e t s y o o u t . ) Y o u ' l l b e a s k e d f o r v e r i f i c a t i o n ; p r e s s t e x i t t B A S I Co a n o t h e r k e t r e t u r n t t h m e n u . A f t e r q u i t t i n g , y o c a t y p e R U a g a i n a n r e e n t e r M L w i t h o u t l o s i n g y o u r d a t a a l o n g a y o d o n ' t u s t h c l e a r w o r k s p a c e o p t i o n .

T h F i n i s h e d P r o d u c tW h e n y o u ' v e f i n i s h e d t y p i n g a l t h d a t a f o a M p r o g r a ma n s a v e d y o u r w o r k , y o u ' r e r e a d y t s e e t h e r e s u l t s . T h i s t r u c t i o n s f o l o a d i n g a n u s i n g t h f i n i s h e d p r o d u c t v a r yf r o m p r o g r a m t p r o g r a m . S c h e c k t h i n s t r u c t i o n s i t h a t i c l e a b o u t t h p r o g r a m .

A O u n c e o P r e v e n t i o nB t h t i m e y o f i n i s h t y p i n g i t h d a t a f o l o n g M p r g r a m , y o u ' l l h a v e m a n y h o u r s i n v e s t e d i t h p r o j e c t . D o n ' tt a k e c h a n c e s — u s e o u " A u t o m a t i c P r o o f r e a d e r " ( A p p e n d i x B t t y p e M L X , a n t h e n t e s t y o u r c o p y t h o r o u g h l y b e f o r e f i r s tu s i n g i t e n t e r a n s i g n i f i c a n t a m o u n t o d a t a . M a k e s u r e a l t h m e n u o p t i o n s w o r k a t h e y s h o u l d . E n t e r f r a g m e n t s o t h p r o g r a m s t a r t i n g a s e v e r a l d i f f e r e n t a d d r e s s e s , t h e n u s t h D i s p l a y o p t i o n t v e r i f y t h a t t h e d a t a h a b e e n e n t e r e d c o r -r e c t l y . A n b s u r e t t e s t t h S a v e a n d L o a d o p t i o n s s e v e r a lt i m e s t i n s u r e t h a t y o c a r e c a l l y o u r w o r k f r o m d i s k o rt a p e . D o n ' t l e s i m p l e t y p i n g e r r o r i n M L c o s t y o s e v e r a ln i g h t s o h a r d w o r k .

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 217/228

A p p e n d i x

P r o g r a m C - 1 . M L A 1 0 T R A P 9 6 0 : P O K E 4 6 2 7 , 1 2 8 : D I M N L $ , A ( 7 )X 1 1 Z 2 = 2 : Z 4 = 2 5 4 : Z 5 = 2 5 5 : Z 6 = 2 5 6 : Z 7 = 1 2 7 : B S = 2 5 6 * P E E

K ( 4 6 2 7 ) : E A = 6 5 2 8 0F B 1 2 0 B E $ = C H R $ ( 7 ) : R T $ = C H R $ ( 1 3 ) : D L $ = C H R $ ( 2 0 ) : S P $ = C

H R $ ( 3 2 ) : L F $ = C H R $ ( 1 5 7 )K 1 3 D E F N H B ( A ) = I N T ( A / 2 5 6 ) : D E F F N L B ( A ) = A - F N H B ( A

) * 2 5 6 : D E F F N A D ( A ) = P E E K ( A ) + 2 5 6 * P E E K ( A + 1 )J 1 4 K E Y 1 , M A " : K E Y 3 , " B " : K E Y 5 , M C M : K E Y 7 , " D " : V 0 L

1 5 : I F R G R ( 0 ) = 5 T H E N F A S TF J 1 5 0 P R I N T " { C L R } " C H R $ ( 1 4 2 ) ; C H R $ ( 8 ) : C O L O R 0 , 1 5 : C 0

L O 4 # 1 5 : C O L O R 6 , 1 5G 1 6 P R I N T T A B ( 1 2 ) " { R E D } { R V S } { 2 S P A C E S } | 9 @

{ S P A C E S } " R T $ ; T A B ( 1 2 ) " { R V S } { 2 S P A C E S } { O F F }{ B L U } 1 2 8 M L { R E D } { R V S } { 2 S P A C E S } M R T $ ; T A B (1 2 ) " { R V S } { 1 3 S P A C E S } { B L U } 1 1

F 1 7 P R I N T " { 2 D O W N } { 3 S P A C E S } C O M P U T E I ' S M A C H I N E{ S P A C E } L A N G U A G E E D I T O R { 2 D O W N } "

D 1 8 P R I N T " { B L K } S T A R T I N G A D D R E S S | < 4 § " ; : G O S U B 2 6 0 :I A T H E N S A = A D : E L S E 1 8

F H 1 9 0 P R I N T " { B L K } { 2 S P A C E S } E N D I N G A D D R E S S & 4 § " ; : G OS U 2 6 0 : I F A T H E N E A = A D : E L S E 1 9

M 2 0 P R I N T " { D O W N } { B L K } C L E A R W O R K S P A C E [ Y / N ] ? g 4 § ": G E T K E Y A $ : I F A $ < > " Y " T H E N 2 2

Q H 2 1 0 P R I N T " { D O W N } { B L U } W O R K I N G . . . " ; : B A N K 0 : F O R A B T B S + ( E A - S A ) + 7 : P O K E A , 0 : N E X T A : P R I N T " D ON E

D 2 2 P R I N T T A B ( 1 0 ) " { D O W N } { B L K } { R V S } M L X C O M M A N D{ S P A C E j M E N U E 4 3 { D O W N } " : P R I N T T A B ( 1 3 ) " { R V S } E{ O F F } N T E R D A T A " R T $ ; T A B ( 1 3 ) " { R V S } D { O F F } I S P L A

D A T A " R T $ ; T A B ( 1 3 ) " { R V S } L { O F F } O A D F I L E "H B 2 3 0 P R I N T T A B ( 1 3 ) " { R V S } S { O F F } A V E F I L E " R T $ ; T A B ( 1

3 ) " { R V S } C { O F F } A T A L O G D I S K " R T $ ; T A B ( 1 3 ) " { R V S }Q { O F F } U I T { D O W N } { B L K } "

A 2 4 G E T K E Y A $ : A = I N S T R ( " E D L S C Q " , A $ ) : O N G O T O 3 0 , 5 5 0 , 6 4 0 , 6 5 0 , 9 3 0 , 9 4 0 : G O S U B 9 5 0 : G O T O 2 4

S 2 5 P R I N T " S T A R T I N G A T " ; : G O S U B 2 6 0 : I F ( A D < > 0 ) O R ( A$ = N L $ ) T H E N R E T U R N : E L S E 2 5

B 2 6 A $ = N L $ : I N P U T A $ : I F L E N ( A $ ) = 4 T H E N A D = D E C ( A $P 2 7 I A D = 0 T H E N B E G I N : I F A $ < > N L $ T H E N 3 0 0 : E L S E

R E T U R N : B E N DM 2 8 I A D < S A O R A D > E A T H E N 3 0 P 2 9 I A D > 5 1 1 A N D A D < 6 5 2 8 0 T H E N P R I N T B E $ ; : R E T U

R S 3 0 G O S U B 9 5 0 : P R I N T " { R V S } I N V A L I D A D D R E S S

{ D O W N } { B L K } " : A D = 0 : R E T U R NR 3 1 C K = F N H B ( A D ) : C K = A D - Z 4 * C K + Z 5 * ( C K > Z 7 ) : G O T O 3 3

2 0

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 218/228

A p p e n d i x

D 3 2 C K = C K * Z 2 + Z 5 * ( C K > Z 7 ) + A I A 3 3 C K = C K + Z 5 * ( C K > Z 5 ) : R E T U R NQ 3 4 P R I N T B E $ ; " { R V S } E N T E R D A T A M : G O S U B 2 5 0 : I F , { S P A C E } A $ = N L $ T H E N 2 2 J 3 5 B A N K 0 : P R I N T : F = 0 : O P E N 3 , B 3 6 G O S U B 3 1 0 : P R I N T H E X $ ( A D ) + " : " ; : I F T H E N P R

N L $ : P R I N T " { U P } { 5 R I G H T } 1 1 ;Q 3 7 F O 1 = 0 T O 2 S T E P 3 : B $ = S P $ : F O R J = l T O 2 : I FT H E N B $ = M I D $ ( L $ , I + J , 1 )

P 3 8 P R I N T M { R V S } " B $ + L F $ 7 : I K 2 T H E N P R I N T 1 1{ O F F } " ;

R C 3 9 0 G E T K E Y A $ : I F ( A § > 1 1 / 1 1 A N A $ < " : " ) O R ( A $ > " @ l i{ S P A C E } A N D A $ < " G " ) T H E N 4 7 A 4 0 I A $ = " + " T H E N A $ = " E " : G O T O 4 7 Q 4 1 I A $ = H - " T H E N A $ = n F n : G O T O 4 7 F B 4 2 0 I A $ = R T $ A N D ( ( 1 = 0 ) A N ( J = l ) O F T H E N

R I N T B $ ; : J = 2 : N E X T : I = 2 4 : G O T O 4 8 R 4 3 I A $ = " { H O M E } " T H E N P R I N T B $ : J = 2 : N E X T : I = 2 4 :

N E X T : F = 0 : G O T O 3 6 X 4 4 I ( A { R I G H T } 1 1 ) A N T H E N P R I N T B $ + L F $ ;

G O T O 4 7 J 4 5 I A $ < > L F $ A N A $ < > D L $ O ( ( 1 = 0 ) A N ( J = l ) )T H E N G O S U B 9 5 0 : G O T O 3 9 P 4 6 A $ = L F $ + S P $ + L F $ . - P R I N T B $ + L F $ ; J = 2 - J : I F T H

P R I N T L F $ ; : 1 = 1 - 3G 4 7 P R I N T A $ ; : N E X T J : P R I O T S P $ ;H 4 8 N E X T I : P R I N T : P R I N T " { U P } { R I G H T } " ; : L $ = "

{ 2 S P A C E S } "D 4 9 F O 1 = T 2 S T E P 3 : G E T # 3 , A $ , B $ : I F A $ = S P $

{ S P A C E } T H E N 1 = 2 5 : N E X T : C L O S E 3 : G O T O 2 2 B 5 0 A $ = A $ + B $ : A = D E C ( A $ ) : M I D $ ( L $ , I , 2 ) = A $ : I F K 2

{ S P A C E j T H E N G O S U B 3 2 0 : A ( l / 3 ) = A : G E T # 3 , A $A 5 1 N E X T I : I F A < > C K T H E N G O S U B 9 5 0 : P R I N T : P R I N T "{ R V S } E R R O R : R E E N T E R L I N E " : F = 1 : G O T O 3 6

D X 5 2 0 P R I N T B E $ : B = B S + A D - S A : F O R 1 = T 7 : P O K E B + I ,A ( I ) : N E X T

X 5 3 F = 0 : A D = A D + 8 : I F A D < = E A T H E N 3 6 C A 5 4 0 C L O S E 3 : P R I N T " { D O W N } { B L U } * * E N D O F E N T R Y *

{ B L K } { 2 D O W N } ' 1 : G O T O 6 5 M 5 5 P R I N T B E $ ; " { C L R } { D O W N } { R V S } D I S P L A Y D A T A " G O S U B 2 5 0 : I F A $ = N L $ T H E N 2 2

J 5 6 B A N K 0 : P R I N T " { D O W N } { B L U } P R E S S : { R V S } S P A C E{ O F F } T P A U S E , { R V S } R E T U R N { O F F } T O B R E A KB 4 § { D O W N } "

X 5 7 P R I N T H E X $ ( A D ) + " : " ; : G O S U B 3 1 0 : B = B S + A D - S AD 5 8 F O R I = B T B + 7 : A = P E E K ( I ) : P R I N T R I G H T $ ( H E X $ (A ) , 2 ) ; S P $ ; : G O S U B 3 2 0 : N E X TX 5 9 P R I N T " { R V S } " ; R I G H T $ ( H E X $ ( C K ) , 2 )G 6 0 F = 1 : A D = A D + 8 : I F A D > E A T H E N P R I N T " { B L U } * * E N r O D A T A * * " : G O T O 2 2 2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 219/228

A p p e n d i x

E 6 1 0 G E T A $ : I F A $ = R T $ T H E N P R I N T B E $ : G O T O 2 2 Q 6 2 I A $ = S P $ T H E N F = F + 1 : P R I N T B E $ ;X 6 3 O G O T O 5 7 0 , 6 1 0 , 5 7 0R 6 4 0 P R I N T B E $ " { D O W N } { R V S } L O A D D A T A H : O P = 1 : G O T O

6 6 B 6 5 0 P R I N T B E $ " { D O W N } { R V S } S A V E F I L E M : O P = 0D 6 6 F = : F $ = N L $ : I N P U T " F I L E N A M E ^ ! " ; F $ : I F $ = N L $

{ S P A C E } T H E N 2 2 R 6 7 P R I N T " { D O W N } { B L K } { R V S } T { O F F } A P E O { R V S } D

{ O F F } I S K : B 4 l " ;S 6 8 G E T K E Y A $ : I F A $ = " T " T H E N 8 5 0 : E L S E I A $ < > " D

1 T H E N 6 8 S 6 9 P R I N T " D I S K { D O W N } " : I F O T H E N 7 6 E 7 0 D O P E N # 1 , ( F $ + " , P " ) , W : I F D T H E N A $ = D $ : G O T O

4 J 7 1 B A N K 0 : P O K E B S - 2 , F N L B ( S A ) : P O K E B S - 1 , F N H B ( S A

) : P R I N T " S A V I N G " ; F $ x P R I N TM 2 F O A = B S - 2 T B S + E A - S A : P R I N T # 1 , C H R $ ( P E E K ( A )

) ; : I F S T T H E N A $ = " D I S K W R I T E E R R O R " : G O T O 7 G 7 3 N E X T A : C L O S E 1 : P R I N T " { B L U } * * S A V E C O M P L E T E D

W I T H O U T E R R O R S * * " : G O T O 2 2 R 7 4 I D S = 6 3 T H E N B E G I N : C L O S E 1 : I N P U T " { B L K } R E P LA C E X I S T I N G F I L E [ Y / N ] & 4 l " ; A $ : I F A $ = " Y " T E S C R A T C H ( F $ ) : P R I N T : G O T O 7 0 0 : E L S E P R I N T "{ B L K } " : G O T O 6 6 0 : B E N D

G 7 5 C L O S E 1 : G O S U B 9 5 0 : P R I N T " { B L K } { R V S } E R R O R D R I N G S A V E : B 4 § " : P R I N T A $ : G O T O 2 2

F D 7 6 0 D O P E N # 1 , ( F $ + " , P " ) : I F D T H E N A $ = D S $ : F = 4 : C L OS 1 : G O T O 7 9

P 7 7 G E T # 1 , A $ , B $ : C L O S E 1 : A D = A S C ( A $ ) + 2 5 6 * A S C ( B $ ) :I A D O S A T H E N F = l : G O T O 7 9 0K 7 8 P R I N T " L O A D I N G " ; F $ : P R I N T : B L O A D ( F $ ) , B 0 , P ( B S ): A D = S A + F N A D ( 1 7 4 ) - B S - 1 : F = - 2 * ( A D < E A ) - 3 * ( A D > E A

R Q 7 9 0 I F T H E N 8 0 0 : E L S E P R I N T " { B L U } * * L O A D C O M P LE T E D W I T H O U T E R R O R S * * " : G O T O 2 2

E R 8 0 0 G O S U B 9 5 0 : P R I N T " { B L K } { R V S } E R R O R D U R I N G L O D B 4 § " : O N G O S U B 8 1 0 , 8 2 0 , 8 3 0 , 8 4 0 : G O T O 2 2 0

Q 8 1 P R I N T " I N C O R R E C T S T A R T I N G A D D R E S S ( " ; H E X $ ( A D) ; " ) " : R E T U R N

D 8 2 P R I N T " L O A D E N D E D A " ; H E X $ ( A D ) : R E T U R NE B 8 3 0 P R I N T " T R U N C A T E D A E N D I N G A D D R E S S ( " H E X $ ( E A) " ) " : R E T U R N

F 8 4 P R I N T " D I S K E R R O R " ; A $ : R E T U R NK 8 5 P R I N T " T A P E " : A D = P O I N T E R ( F $ ) : B A N K 1 : A = P E E K ( A D

) : A L = P E E K ( A D + 1 ) : A H = P E E K ( A D + 2 )X 8 6 B A N K 1 5 : S Y S D E C ( " F F 6 8 " ) , 0 , 1 : S Y S D E C ( " F F B A " )

, 1 , 1 , 0 : S Y S D E C ( " F F B D " ) , A , A L , A H : S Y S D E C ( " F F 90 " ) , 1 2 8 : I F O T H E N 8 9

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 220/228

A p p e n d i x

F 8 7 P R I N T : A = S A : B = E A + 1 : G O S U B 9 2 0 : S Y S D E C ( " E 9 1 9 ", 3 : P R I N T " S A V I N G " ; F $

A B 8 8 0 A = B S : B = B S + ( E A - S A ) + 1 : G O S U B 9 2 0 : S Y S D E C ( " E A 1 8" ) : P R I N T M { D O W N } { B L U } * * T A P E S A V E C O M P L E T E D{ S P A C E } * * " : G O T O 2 2

C 8 9 S Y D E C ( M E 9 9 A M ) : P R I N T : I F P E E K ( 2 8 1 6 ) = 5 T H E N{ S P A C E j G O S U B 9 5 0 : P R I N T " { D O W N } { B L K } { R V S } F I

N O F O U N D " : G O T O 2 2 G 9 0 P R I N T " L O A D I N G . . . { D O W N } " : A D = F N A D ( 2 8 1 7 ) : I F

D < > S A T H E N F = l : G O T O 8 0 0 : E L S E A D = F N A D ( 2 8 1 9 ) -1 : F = - 2 * ( A D < E A ) - 3 * ( A D > E A )

S H 9 1 0 A = B S : B = B S + ( E A - S A ) + 1 : G O S U B 9 2 0 : S Y S D E C ( " E 9 F B" ) : I F S T H E N 8 0 0 : E L S E 7 9 X 9 2 P O K E 1 9 3 , F N L B ( A ) : P O K E 1 9 4 , F N H B ( A ) : P O K E 1 7 4 , F N

L B ( B ) : P O K E 1 7 5 , F N H B ( B ) : R E T U R NC 9 3 C A T A L O G : P R I N T " { D O W N } { B L U } * * P R E S S A N Y K E

O M E N U * * " : G E T K E Y A $ : G O T O 2 2 M 9 4 P R I N T B E $ " { R V S } Q U I T B 4 § " ; R T $ ; " A R E Y O S U R E

[ Y / N ] ? " : G E T K E Y A $ : I F A $ o " Y " T H E N 2 2 0 : E L S EP R I N T " { C L R } " : B A N K 1 5 : E N D

J 9 5 S O U N D 1 , 5 0 0 , 1 0 : R E T U R NA 9 6 I E R = 1 4 A N E L = 2 6 0 T H E N R E S U M E 3 0 M 9 7 I E R = 1 4 A N D E L = 5 0 0 T H E N R E S U M E N E X TK 9 8 I E R = 4 A N D E L = 7 8 0 T H E N F = 4 : A $ = D S $ : R E S U M E

0 D 9 9 I E R = 3 0 T H E N R E S U M E : E L S E P R I N T E R R $ ( E R ) ; "

{ S P A C E } E R R O R I L I N E " ; E L

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 221/228

I n d e xS e a s i g n

S e q u e s t i o n m a r kS e s l a s h

a c c u m u l a t o r 4 a d d r e s s e s , c h a n g i n g 6 9 - 7 1a d d r e s s i n g s c h e m e 4 A D S R 8 4 8 A I 1 4 4 , 1 4 A N A P P E N D 5 1 7 A S C 9 0A S C I I c o d e 3 4 , 6 4 , 7 6 1 4 5 , 1 7 a s t e r i s k 5 a s i g n ( @ 1 4 a t t a c k r a t e 8 3 , 8 A U T Oa u t o b o o t 1 7 2 , 1 8 6 - 9 0a u t o b o o t s e c t o r 1 8 6 , 1 8 A U T O I 2 " A u t o m a t i c P r o o f r e a d e r , T h e " p r o g r a m2 0 1 - 2a u t o m a t i c s p r i t e m o v e m e n t 1 1 0 , 1 1 1 ,

1 1 B A C K U P 5 1 7 B A 1 7 2 1 - 2 4 , 1 7 B A N K 5 4 6 7 0 - 7 2b a n k n u m b e r s 4 " B a r C h a r t " p r o g r a m 1 B A S I C 7 . B A S I C 7 . k e y w o r d s 1 3 1 b a t c h f i l e s 5 4 5 B E G I N 6 1 1 B E G I N - B E N DB E N D 6 1 1 b i n a r y s e a r c h m e t h o d 3 7 - 3 9" B l i c k " p r o g r a m 1 5 B L O A D 5 1 6 7 , 1 7 0 - 7 2 , 1 7 5b l o c k a l l o c a t i o n m a p . S e B A b l o c k s o f d a t a 1 6 B O O T 5 1 7 0 , 1 7 b o o t d i s k 1 8 b o o t s t r a p s 3 B O B R 4 4 4 B S A V E 4 5 1 7 4 , 1 7 B U M P r o u t i n e 4 1 1 b u r s t m o d e 1 6 b u 1 6 C A T A L O G" C a t a l o g e r " p r o g r a m 1 8 2 - 8 5C B 1 7

c h a i n i n g 2 9 3 3 1 7 C H A N G E 1 4 4 , 1 4 C H A R 6 1 1 1 1 c h a r a c t e r s e 6 9 - 7 1C H R $ c o d e 9 0 1 7 c h r o m a 1 6 C I c h i p 1 6 C I R C L E 1 C L E A R 6 c l o c k 7C L O S E 1 8 1 7 C L R 7 0C L S D I R 2 " C o d e r - D e c o d e r " p r o g r a m 4 c o d i n g 4 0C O L L E C T 5 1 7 C O L L I S I O Nc o l l i s i o n r o u t i n e 1 1 c o l o n 1 1 4 , 1 1 c o l o r 9 5 C O L O RC O f i l e s 5 c o m p a r e 4 c o m p a t i b i l i t y ( o 1 2 8 ) 1 c o m p l e x i n t e r f a c e a d a p t e r . S e C I c h i pC O N C A T 5 1 7 C O N T 2 C O P Y 5 1 7 C P / M 5 1 - 6 0" C r e a t e 1 2 A u t o b o o t S e c t o r " p r o g r a m

1 9 " C r e a t e 6 A u t o r u n P r o g r a m " p r o g r a m

1 9 D A T A 3 4 4 d B A S E p r o g r a m 5 7D C L E A R 5 1 7 D O L O S E 5 1 7 D E d e c a y r a t e 8 3 8 d e c i m a l a d d r e s s e s 4 d e c o d i n g 4 0 4 D E F A U L T 1 4 4 , 1 4 d e f a u l t v o l u m e 8 D E L E T E 4 1 4 D E L F I L 2 d e v e l o p m e n t s y s t e m 1 4 d e v i c e n u m b e r 2 D F 1 1 3d i r e c t m o d e 2 8 - 3 3D I R E C T O R Y 5 1 7 6 , 1 7 d i s a s s e m b l e r 4

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 222/228

d i s k c o n t r o l l e r 2 d i s k d r i v e n u m b e r 2 d i s k d r i v e s 1 2 , 1 7 , 2 0 , 5 3 , 1 6 5 - 6 7

1 5 4 1 m o d e 1 6 5 , 1 6 6 , 1 7 1 5 7 1 m o d e 1 6 5 - 6 7 , 1 7

d i s k o p e r a t i n g s y s t e m . S e D O D L I S T 1 4 4 , 1 4 D L O A D 5 1 7 2 0 1 6 7 , 1 7 0 , 1 7 1 , 1 7 3 ,

1 7 D O - L O O PD O P E N 5 1 7 5 , 1 7 D O 1 7 2 0 , 5 5 , 1 7 D O V 2 . 6 2 5D O W e d g e 2 D O - U N T I L - L O O P s t r u c t u r e 1 D R A W 7 D R I V E N O R E A D Y e r r o r 2 1 , 2 D S 1 7 7D S 1 7 D S A V E 5 1 7 2 0 1 7 3 , 1 7 D U 7 d u r a t i o n 8 D V E R I F Y 5 1 7 d y n a m i c k e y b o a r d t e c h n i q u e 2 8 - 3 6 , 4 0

7 6 1 5 e d i t i n g 3 4 - 3 6E 5 E L S EE N 3 E N V E L O P E 4 8 1 8 3 - 8 6 , 9 1E P R O M ( E r a s a b l e - P r o g r a m m a b l e R e a d

O n l y M e m o r y ) 2 E R E R R $ 5 E X I T 1 F A S T 7 1 7 f a s t s e r i a l m o d e 1 6 F E T C HF F S T ( $ C 4 9 D ) 2 f i l l 4 F I L T E R 4 8 1 8 7 8 8 9

S I 8 " F I L T E R E d i t o r " p r o g r a m 9 2 - 9 4F I N D 1 4 4 , 1 4 F O R - N E X T l o o p 6 3 7 4 f r e q u e n c y 7 F R E T S 2 F R 7 G E 2 G E T # 2 8 1 7 5 , 1 7 G E T B U F 2 G E T K E YG 4 G O T O 3 G R A P H I C 9 6 6 1 7 G R A P H I C C L 1 8

G S H A P E 1 H E A D E RH E L P" H E L P " p r o g r a m 6 H E h e x a d e c i m a l a d d r e s s e s 4 6 2 0 h i - r e s g r a p h i c s 7 - 1 2h o r i z o n t a l r e s o l u t i o nh u n t 4 I F - T H E NI N P U T 2 I N P U T # 2 8 1 7 5 , 1 7 i n p u t b u f f e r 2 I N S T R 6i n s t r u m e n t n u m b e r 8 I N i n t e r n a l b u f f e r s 2 1 2 i n t e r n a l c h a n n e l 2 j i f f yJ O Y s t i c k 1 1 J S r o u t i n e 4 j u m p 4 " J u m p S e a r c h " p r o g r a m 3 K E k e y b o a r d b u f f e r 2 9 - 3 2k e y b o a r d b u f f e r c o u n t e r 3 k e y b o a r d c o n v e n t i o n s 1 9 k e y s c a n v a l u e s 7 L 1 7 0L E F T $ 7 7 9 L E N 9 0" L e x i t r o n " p r o g r a m 1 3 6 - 4 0L I S T 2 8 1 7 3 , 1 7 " L i t t e r P a t r o l " p r o g r a m 1 1 6 - 1 9L O A D 1 7 2 0 2 9 , 3 3 , 4 4 , 1 6 7 , 1 7 0 , 1 7 l o a d i n g p r o g r a m 1 7 0 - 7 4L R U T B L , Y 2 l u m a 1 6 M A P O U T 2 " M a p w i t h F l a g " p r o g r a m 1 m a s k v a l u e 4 M B A S I C - 8 0 p r o g r a m 5 7m e g a h e r t zm e m o r y 6 2 8 2 M E M O R Y 4 m e m o r y m a 4 6 - 5 0M E N U 7 m e n u , b y p a s s i n g 1 9 0" M e n u " p r o g r a m 1 9 M E R G E 1 4 4 , 1 4 " M e t a B A S I C " p r o g r a m 1 4 9 - 5 3M I D $ 6 7 7 9 " M L X " p r o g r a m 2 0 9 - 1 2m n e m o n i c s 4 5 1 4

L

L

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 223/228

m o n i t o r 4 3 - 4 5 , 1 6 8 , 1 6 c o m p o s i t e 1 6 m o n o c h r o m e 1 6 R G B I 1 6

M O N I T O Rm o n o p h o n i c 7 M O V S P R 4 1 1 m u l t i v o i c e m u s i c 9 0m u s i c 7 4 - 7 8 , 8 1 - 9 2" M u s i c a l K e y b o a r d " p r o g r a m 7 N E 8 N e w W o r d p r o g r a m 5 N C H A N N E L e r r o r 2 N O P 4 5O N E D R V 2 O N - G O T O 3 O P E N 1 7 2 2 1 7 o p e r a t i n g s y s t e m ( O S ) 5

d e d i c a t e d 5 R A M - b a s e d 5 R O M - b a s e d 5 t r a n s p o r t a b l e 5

O P T S C H 2 O " O r b i t r o n " p r o g r a m 1 0 3 - 9P A I N T 1 p c h a r a c t e r 1 1p i e c h a r t 1 " P i e G r a p h " p r o g r a m 1 p i t c h 7 P L A Y 4 7 4 - 7 8 , 8 1 - 8 4 , 8 6 , 8 7 , 9 " P L A Y D e m o n s t r a t o r " p r o g r a m 9 P O L Y G O N 1 p o l y p h o n i c 7 P R I N T 5 6 7 7 1 5 P R I N T # 1 7 5 , 1 7 P R I N T D S , D S $P R I N T F R E ( #P R I N T U S I N Gp r o g r a m m i n g 4 p r o g r a m m o d e 2 8 - 3 3p r o g r a m s

c o m p i l e di n t e r p r e t e d

P U D E Fp u l s e w i d t h 8 3 8 P U T B A M 2 q u e s t i o n m a r k 4 4 5 Q U I T 1 4 4 , 1 4 6 , 1 4 r a d i o f r e q u e n c y . S e R R A 4 R E A D 1 4 4 , 1 4 R E A D - D A T A p o i n t e rR E C O R DR E C O R D # 1 7

r e g i s t e r s 5 4 A P X Y

r e l a t i v e f i l e 1 7 r e l e a s e r a t e 8 3 , 8 r e l o c a t i n g t h s c r e e n 7 R E 1 4 6 , 1 5 " R E M H i g h l i g h t e r " p r o g r a m 1 5 5 , 1 5 R E N A M E 5 1 7 R E N U M B E R 4 1 7 R E S A V E 1 4 4 , 1 4 r e s e r v e d v a r i a b l e sR E S T O R E 6 R E S U M ER E T U R N 2 8 , 7 7 , 1 7 R ( r a d i o f r e q u e n c y ) o u t p u t 1 6 R I G H T S 9 r i n g m o d u l a t i o n 8 R O l o c a t i o n s 4 4 , 4 6 , 5 R R E G 5R U 2 8 1 7 0 , 1 7 1 , 1 7 3 , 1 7 r u n n i n g p r o g r a m s 5 9R U N / S T O P k e 1 4 R U N / S T O P - R E S T O R E 7 5 8 8 1 4 S 1 7 4S A V E 1 7 , 2 0 , 2 1 4 S A V E @ 1 7 2 " S A V E @ B u D e m o n s t r a t i o n " p r o g r a m

2 5 - 2 7s a v e - w i t h - r e p l a c e 1 7 - 2 7 , 1 4 s a v i n g a p r o g r a m 1 7 S A V S P RS C A L ES C N C L R 9 1 S C R A T C H 5 1 7 2 1 1 4 7 , 1 7 s c r e e n e d i t i n g 3 S E E K 2 s e q u e n t i a l f i l e s 1 7 s e q u e n t i a l s e a r c h 3 s e r i a l 1 6 s e r i a l c o m m u n i c a t i o n b u s 1 6 6s e r v i c e r e q u e s t ( S R Q ) 1 6 S H I F T - R U N / S T O P 1 7 0 , 1 7 1 , 1 7 S I c h i p . S e s o u n d i n t e r f a c e d e v i c es l a s h ( / 1 4 S L O W" S o n g P l a y e r " p r o g r a m 7 s o r t i n g 3 s o u n d 8 1 - 9 2S O U N D 4 7 5 - 7 7 , 8 1 , 8 2 , 8 8 , 8 9 , 9 " S O U N D E d i t o r " p r o g r a m 9 4 - 9 6s o u n d e f f e c t s 7 4 - 7 8s o u n d i n t e r f a c e d e v i c e ( S I D ) 3 8 1 9

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 224/228

" S o u n d m a k e r " p r o g r a m 7 s o u n d p a t t e r n 8 s p e e d 6 S P R C O L O R 1 1 S P R D E F 4 1 7 S P R I T E 4 1 1 s p r i t e sS P R S A V 1 1 S S H A P E 4 1 S T A R T 1 4 4 , 1 4 S T A S HS T L B U T 2 2 2 S T O P 4 S T R $ 9 S U B M I T 5 S u p e r C a l c p r o g r a m 5 7s u s t a i n r a t e 8 3 , 8 S W A P 5 2 s w e e p d i r e c t i o n 7 " S w i t c h b o x " p r o g r a m 1 3 2 - 3 4s y n c h r o n i z a t i o n 8 5S Y S 5s y s t e m u t i l i t i e s 5 T A 1 7 T E M P O 4 7 5 8 1 , 8 3 , 9 t e x t e d i t o r 5 T H E N 1 1 4 , 1 1 T t o n e g e n e r a t o r s 8 1t r a n s f e r 4 T R A P 5 8 7 T R O N 5t u n e 8 3

T u r b o P a s c a l 5 U N N E W 1 4 4 , 1 4 u s e r a r e a s 5 u t i l i t i e s 1 7 6 - 7 8V A L 9 0v a l i d a t e 2 v a r i a b l e s 1 7 V E R I F Y 1 7 v i d e o d i s p l a y s 1 6 8 , 1 6 v i d e o o u t p u t s 1 V O 7 v o i c e s 8 V O 7 6 8 1 8 2 , 8 8 , 9 w a v e f o r m 7 6 8 1 , 8 3 , 8

n o i s e 8 p u l s e 8 s a w t o o t h 8 t r i a n g l e 8

W I D T H 1 W I N D O W 6 3 - 6 6" W i n d o w D e m o " p r o g r a m 6 w i n d o w s 6 3 - 6 8

a d d i n g 6 " W i n d o w S a v e f o 8 C o l u m n s " p r

g r a m 6 " W i n d o w S a v e f o 4 C o l u m n s " p r

g r a m 6 " W o r d C o u n t e r " p r o g r a m 1 6 0 , 1 6 " W o r d S e a r c h " p r o g r a m 1 2 1 - 2 5W o r d S t a r p r o g r a m 5 w r i t i n g / d e b u g g i n g t o o l 1 4 W U S E D 2 X O R 5

2 1

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 225/228

T o o r d e r y o u r c o p y o F i r s t B o o k o 1 2 D i s k , c a l l o u t o l l - f r e e U o r d e r l i n e : 1 - 8 0 0 - 3 4 6 - 6 7 6 7 ( i N 2 1 2 - 8 8 7 - 8 5 2 5 ) o s e n d y o u r

| — p r e p a i d o r d e r t o J F i r s t B o o k o 1 2 D i s k

_ _ C O M P U T E ! P u b l i c a t i o n sP . O . B o 5 0 3 8F . D . R . S t a t i o nN e Y o r k , N 1 0 1 5 0

A l o r d e r s m u s t b p r e p a i d ( c h e c k , c h a r g e , o m o n e y o r d e r ) . N r e i d e n t s a d 4 . 5 % s a l e s t a x .

S e n d c o p i e s o F i r s t B o o k o 1 2 D i s k a $ 1 2 . 9 5 p e r c o p y .S u b t o t a l

S h i p p i n g a n H a n d l i n g : $ 2 . 0 0 / d i s k $

S a l e s t a ( i a p p l i c a b l e )

T o t a l p a y m e n t e n c l o s e d $

P a y m e n t e n c l o s e dC h a r g e V i s a M a s t e r C a r d A m e r i c a n E x p r e s s

A c c t . N o E x p . D a t e( R e q u i r e d )

N a m e

A d d r e s s

4 6 6 5 9 9 2 3

j — C i t y S t a t e Z i P l e a s e a l l o w 4 - w e e k s f o d e l i v e r y ,

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 226/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 227/228

8/6/2019 Compute's First Book of Commodore 128

http://slidepdf.com/reader/full/computes-first-book-of-commodore-128 228/228