hands-on basic for the commodore 64

348
8/6/2019 Hands-On BASIC for the Commodore 64 http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 1/348

Upload: cubemanpdx

Post on 08-Apr-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 1/348

Page 2: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 2/348

Page 3: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 3/348

H A N D S - O I M B A S I CF O R T H E C O M M O D O R E 6

Page 4: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 4/348

O T H E R C O M P U T E R L I T E R A C Y T I T L E SL u e h r m a n nP e c k h a mP e c k h a m

L u e h r m a n nP e c k h a mL u e h r m a n nP e c k h a mL u e h r m a n nP e c k h a mP e c k h a m w i t hE l l i s & L o d iP e c k h a m w i t hE l l i s L o d iP e c k h a m

P e c k h a m w i t hE l l i s L o d iP e c k h a m w i t hE l l i s L o d iP e c k h a m

A p p l e P a s c a l : H a n d s - O n A p p r o a c h( M c G r a w - H i l l , 1 9 8 1 )B A S I C : H a n d s - O n M e t h o d( M c G r a w - H i l l , 1 9 7 8 )C o m p u t e r L i t e r a c y : H a n d s - O n A p p r o a c h( A p p l e I v e r s i o n ) ( M c G r a w - H i l l , 1 9 8 3 )C o m p u t e r L i t e r a c y : H a n d s - O n A p p r o a c h( T R S - 8 0 v e r s i o n ) ( M c G r a w - H i l l , 1 9 8 3 )

C o m p u t e r L i t e r a c y S u r v i v a l K i ( A p p l e v e r s i o n ) ( M c G r a w - H i l l , 1 9 8 4 )H a n d s - O n B A S I C f o t h A p p l e I ( M c G r a w - H i l l , 1 9 8 2 )H a n d s - O n B A S I C f o A t a r i C o m p u t e r s( M c G r a w - H i l l , 1 9 8 3 )H a n d s - O n B A S I C f o t h I B P e r s o n a l C o m p u t e r( M c G r a w - H i l l , 1 9 8 2 )H a n d s - O n B A S I C f o t h T 9 9 / 4 A( M c G r a w - H i l l , 1 9 8 3 )H a n d s - O n B A S I C f o t h T R S - 8 0 C o l o r C o m p u t e r( M c G r a w - H i l l , 1 9 8 3 )H a n d s - O n B A S I C w i t h P E

Page 5: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 5/348

H A N D S - O N B A S I CF O T H C O M M O D O R E 6

H E R B E R T P E C K H A Mw i t h W A D E E L L I S , J r

a n E L O D I

Page 6: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 6/348

H A N D S - O N B A S I C F O R T H E C O M M O D O R E 6

C o p y r i g h t 1 9 8 4 b M c G r a w - H i l l , I n c . A l r i g h t s r e s e r v e d . 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 . E x c e p t a p e r m i t t e d u n d e r t h U n i t e d S t a t e s C o p yr i g h t A c o 1 9 7 6 , n p a r t o t h i s p u b l i c a t i o n m a b r e p r o d u c e d o d i s t r i b u t e di a n f o r m o b a n m e a n s , o r s t o r e d i d a t a b a s e o r e t r i e v a l s y s t e m ,w i t h o u t t h p r i o r w r i t t e n p e r m i s s i o n o t h p u b l i s h e r .

2 3 4 5 6 7 8 9 0 H A L H A L 8 9 8 7 6 5 4

I S B N D - D T -

Page 7: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 7/348

C O N T E N T S

P R E F A C EA c k n o w l e d g m e n t s

I N T R O D U C T I O NW h a t I B A S I C ?W h e r e D i B A S I C O r i g i n a t e ?

Page 8: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 8/348

v C o n t e n t s

C H A P T E RI N T R O D U C T I O N T B A S I C 2

2 - O B J E C T I V E S 2 L e a r n i n g t E d i t P r o g r a m s 2 L e a r n i n g t h e R e q u i r e m e n t s f o B A S I C P r o g r a m s 2 T e l l i n g t h C o m p u t e r W h a t t D 2 E n t e r i n g a n C o n t r o l l i n g P r o g r a m s 2 A s s i g n i n g V a r i a b l e N a m e s i B A S I C 2 2D I S C O V E R Y E X E R C I S E S 2 D I S C U S S I O N 3 L e a r n i n g t E d i t P r o g r a m s 3 L e a r n i n g t h e R e q u i r e m e n t s F o B A S I C P r o g r a m s 3 T e l l i n g t h C o m p u t e r W h a t t D 3 E n t e r i n g a n C o n t r o l l i n g P r o g r a m s 3 A s s i g n i n g V a r i a b l e N a m e s i B A S I C 3 P R A C T I C E T E S T 3

C H A P T E RC O M P U T E R A R I T H M E T I C A N P R O G R A MM A N A G E M E N T 4

3 — O B J E C T I V E S 4 D o i n g A r i t h m e t i c o t h C o m p u t e r 4 U s i n g f a r e n t h e s e s i C o m p u t a t i o n s 4 L e a r n i n g N o t a t i o n f o N u m b e r s 4

Page 9: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 9/348

C o n t e n t s v i

C H A P T E RI N P U T , O U T P U T , A N S I M P L E A P P L I C A T I O N S 6

4 - O B J E C T I V E S 6 G e t t i n g N u m b e r s i n t o B A S I C P r o g r a m 6 P r i n t i n g O u V a r i a b l e s a n S t r i n g s 6 S p a c i n g t h e P r i n t o u t 6 U s i n g t h R E S t a t e m e n t 6 W o r k i n g w i t h P r o g r a m E x a m p l e s 6 D I S C O V E R Y E X E R C I S E S 6

4 - D I S C U S S I O N 7 G e t t i n g N u m b e r s i n t o B A S I C P r o g r a m 7 2P r i n t i n g o u V a r i a b l e s a n S t r i n g s 7 S p a c i n g t h P r i n t o u t 7 U s i n g t h R E S t a t e m e n t 7

4 — W O R K I N G W I T H P R O G R A M E X A M P L E S 7 E x a m p l e U n i t P r i c e s 7 E x a m p l e C o n v e r t i n g T e m p e r a t u r e 8 E x a m p l e S u a n P r o d u c t o N u m b e r s 8 P R O B L E M S 8

6 P R A C T I C E T E S T 8

C H A P T E RD E C I S I O N S , B R A N C H I N G , A N A P P L I C A T I O N S 9

Page 10: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 10/348

v f i i C o n t e n t s

C H A P T E RL O O P I N G A N F U N C T I O N S 1 2

6 — O B J E C T I V E S 1 2 U n d e r s t a n d i n g B u i l t - i n L o o p i n g 1 2 U s i n g B u i l t - i F u n c t i o n s 1 2 W o r k i n g w i t h P r o g r a m E x a m p l e s 1 2

6 - D I S C O V E R Y E X E R C I S E S 1 2 6 - D I S C U S S I O N 1 3

U n d e r s t a n d i n g B u i l t - i n L o o p i n g 1 3 0U s i n g B u i l t - i n F u n c t i o n s 1 3

6 - W O R K I N G W I T H P R O G R A M E X A M P L E S 1 3 E x a m p l e F i n d i n g t h e A v e r a g e o f G r o u p o N u m b e r s 1 3 E x a m p l e 2 T e m p e r a t u r e C o n v e r s i o n T a b l e 1 3 E x a m p l e E x a c t D i v i s i o n 1 4 E x a m p l e 4 D e p r e c i a t i o n S c h e d u l e 1 4 P R O B L E M S 1 4 P R A C T I C E T E S T 1 4

C H A P T E RW O R K I N G W I T H C O L L E C T I O N S O N U M B E R S 1 5

7 — O B J E C T I V E S 1 5 U s i n g S i n g l e - a n D o u b l e - S u b s c r i p t e d V a r i a b l e s 1 5 1S a v i n g S p a c e f o A r r a y s 1 5

Page 11: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 11/348

C o n t e n t s i

C H A P T E RS T R I N G V A R I A B L E S 1 8

8 - O B J E C T I V E S 1 8 U n d e r s t a n d i n g S t r i n g I n p u t a n O u t p u t 1 8 U s i n g S t r i n g F u n c t i o n s 1 8 1W o r k i n g w i t h P r o g r a m E x a m p l e s 1 8 D I S C O V E R Y E X E R C I S E S 1 8

8 - D I S C U S S I O N 1 9 U n d e r s t a n d i n g S t r i n g I n p u t a n d O u t p u t 1 9 U s i n g S t r i n g F u n c t i o n s 1 9

8 - W O R K I N G W I T H P R O G R A M E X A M P L E S 1 9 E x a m p l e S t r i n g R e v e r s a l 1 9 E x a m p l e W o r d C o u n t 1 9 E x a m p l e R e p l a c e m e n t C o d e 1 9 E x a m p l e 4 S a l e s C h a r t a s S t r i n g A r r a y 1 9 P R O B L E M S 1 9 P R A C T I C E T E S T 1 9

C H A P T E R" D O - I T - Y O U R S E L F " F U N C T I O N S A N S U B R O U T I N E S 2 0

9 — O B J E C T I V E S 2 0 D e f i n i n g " D o - I t - Y o u r s e l f F u n c t i o n s 2 0 U n d e r s t a n d i n g S u b r o u t i n e s 2 0

Page 12: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 12/348

C o n t e n t s

C H A P T E R 1 C H A R A C T E R G R A P H I C S A M C O L O R 2 2

W — O B J E C T I V E S 2 2 C o n t r o l l i n g P r o g r a m s 2 2 P l a c i n g C h a r a c t e r s 2 2 W o r k i n g w i t h t h e G r a p h i c s F e a t u r e s o f t h C o m m o d o r e 6 2 2 C o n t r o l l i n g C o l o r 2 2 W o r k i n g w i t h P r o g r a m E x a m p l e s 2 2

1 D I S C O V E R Y E X E R C I S E S 2 2 1 D I S C U S S I O N 2 3

C o n t r o l l i n g P r o g r a m s 2 3 P l a c i n g C h a r a c t e r s 2 3 W o r k i n g w i t h t h G r a p h i c s f e a t u r e s o t h C o m m o d o r e 6 2 3 C o n t r o l l i n g C o l o r 2 3

1 0 - 4 W O R K I N G W I T H P R O G R A M E X A M P L E S 2 3 E x a m p l e C u r s o r M o v e m e n t 2 3 E x a m p l e 2 B a G r a p h s 2 4 E x a m p l e 3 C o l o r B a G r a p h s 2 4 E x a m p l e 4 A n i m a t i o n 2 4

1 P R O B L E M S 2 4 1 P R A C T I C E T E S T 2 4

Page 13: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 13/348

C o n t e n t s x

1 1 — 4 W O R K I N G W I T H P R O G R A M E X A M P L E S 2 5 E x a m p l e F l i p p i n g C o i n s 2 5 E x a m p l e R a n d o m I n t e g e r s 2 5 E x a m p l e D i s t r i b u t i o n o R a n d o m N u m b e r s 2 5 6E x a m p l e R a n d o m W a l k 2 5 E x a m p l e R a n d o m C o l o r s 2 5 E x a m p l e B i r t h d a y f a i r s i C r o w d 2 5

1 1 - 5 P R O B L E M S 2 6 1 1 - 6 P R A C T I C E T E S T 2 6

C H A P T E R 1 F I L E S 2 6

1 2 - 1 O B J E C T I V E S 2 6 O p e n i n g a n d C l o s i n g I n f o r m a t i o n P a t h s 2 6 W r i t i n g I n f o r m a t i o n t F i l e 2 6 R e t r i e v i n g I n f o r m a t i o n f r o m F i l e 2 6 W o r k i n g w i t h P r o g r a m E x a m p l e s 2 6

1 2 - 2 D I S C O V E R Y E X E R C I S E S 2 6 1 2 - 3 D I S C U S S I O N 2 7

O p e n i n g a n C l o s i n g I n f o r m a t i o n P a t h s 2 7 W r i t i n g I n f o r m a t i o n t F i l e 2 7 R e t r i e v i n g I n f o r m a t i o n f r o m F i l e 2 7

1 P R O G R A M E X A M P L E S 2 7 E x a m p l e M a i l L i s t D a t a E n t r y P r o g r a m 2 7

Page 14: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 14/348

x i C o n t e n t s

A P P E N D I XO T H E R C O N F I G U R A T I O N S 2 8 C o m m o d o r e 6 w i t h o u t D i s k D r i v e 2 8 C o m m o d o r e 6 w i t h C o m m o d o r e D a t a c a s s e t t eR e c o r d e r 2 8

A P P E N D I XS U P P O R T P R O G R A M 2 9 T h C - 6 4 W e d g e o D O S u p p o r t P r o g r a m 2 9

A P P E N D I XG L O S S A R Y 2 9

A P P E N D I XP R A C T I C E T E S T S O L U T I O N S 2 9

A P P E N D I XS O L U T I O N S T O D D - I M U M B E R E D P R O B L E M S 3 0 I N D E X 3 2

Page 15: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 15/348

P R E F A C E

T h i s b o o k i m o d i f i c a t i o n o B A S I C : H a n d s - o n M e t h o d ,w h i c h i n t r o d u c e s s t u d e n t s t B A S I C o n u m b e r o d i f f e r e n t t i m es h a r i n g c o m p u t e r s . T h e a r l i e r b o o k h a b e e n r e v i s e d a n m o d i f i e dt b u s e d s p e c i f i c a l l y o p e r s o n a l c o m p u t e r m a n u f a c t u r e d b C o m m o d o r e B u s i n e s s M a c h i n e s , I n c . T h t h i n k i n g b e h i n d a n j u t i f i c a t i o n f o r t h e o r i g i n a l w o r k r e m a i n u n c h a n g e d a n b e a r r e p e a t -i n g . M o s t B A S I C p r o g r a m m i n g t e x t s h a v e t w s e r i o u s d r a w b a c k s .F i r s t , a l m o s t a l t h t e x t s p r e s u p p o s e k n o w l e d g e o m a t h e m a t i c st h a t m o s t o o u i n t e n d e d r e a d e r s d n o h a v e . S e c o n d , m o s t t e x t s r q u i r e r e a d e r s t s p e n d l i t t l e , i a n y , t i m e o t h c o m p u t e r . T y p i c a l l y ,s t u d e n t s t r y t o s t u d y p r o g r a m m i n g l i k e a n o t h e r s u b j e c t a n d d o

Page 16: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 16/348

H a n d s - o n B A S I C

a b o u t o n e o t w h o u r s o c o m p u t e r w o r k a n p e r h a p s o n o t w h o u r s t e x t s t u d y . R e v i e w s a t h e n o e a c h c h a p t e r l e s t u d e n t s t e s tt h e i r m a s t e r y o f t h e o b j e c t i v e s . T h b o o k c a n b e u s e d i n d i f f e r e n tw a y s : a s e l f - s t u d y t e x t ; a t h t e x t f o a o p e n - e n t r y , o p e n - e x i t ,s e l f - p a c e d c o u r s e ; a n i t a n d e m w i t h t r a d i t i o n a l l e c t u r e c o u r s e .

P e o p l e a a n l e v e l f r o m j u n i o r h i g h t h r o u g h g r a d u a t e s c h o o ls h o u l d b e a b l e t u s t h i s b o o k t l e a r n p r o g r a m m i n g s k i l l s i B A S I Cr a p i d l y a n e f f e c t i v e l y . T h s t u d e n t n e e d s n k n o w l e d g e o m a t h em a t i c s p a s t i n t r o d u c t o r y a l g e b r a , a n t h a l g e b r a u s e d i m a i n l y f o m u l a e v a l u a t i o n . S t u d e n t s w i t h m o r e a d v a n c e d m a t h e m a t i c a l s k i l l sc a n a p p l y t h e m t i n d e p e n d e n t w o r k o t h c o m p u t e r .

A l l s t u d e n t s w i l l n e e d a c c e s s t C o m m o d o r e 6 c o m p u t e r ,a l e a s t o n d i s k d r i v e , a n b l a c k - a n d - w h i t e o c o l o r T s e t .A l t h o u g h m o s t o t h w o r k i t h b o o k c a n b e d o n e w i t h o u t d i s kd r i v e , t h l a c k o d i s k d r i v e s i g n i f i c a n t l y l i m i t s t h p o t e n t i a l o t h C o m m o d o r e 6 c o m p u t e r .

T h d o c u m e n t s f u r n i s h e d w i t h t h C o m m o d o r e 6 a n t h V I C - 1 5 4 1 D i s k D r i v e a r v a l u a b l e t t h s t u d e n t . T h C o m m o d o r e6 U s e r ' s G u i d e t e l l s h o t c o n n e c t t h C o m m o d o r e 6 t T s e a n h a a l t h s p e c i f i c a t i o n s a n c a p a b i l i t i e s o C o m m o d o r e6 B A S I C . T h V I C - 1 5 4 1 S i n g l e D r i v e F l o p p y D i s k U s e r ' s M a n u a ld e s c r i b e s t h e u s o d i s k d r i v e w i t h t h C o m m o d o r e 6 4

A c k n o w l e d g m e n t s

Page 17: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 17/348

P r e f a c e

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

W a d e E l l i s , J r E L o d i

Page 18: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 18/348

Page 19: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 19/348

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

C o m p u t e r s p l a y a p a r t i m o s t o o u d a i l y a c t i v i t i e s . W i t h o u t c o p u t e r s , b u s i n e s s e s o a l s i z e s , e d u c a t i o n a l i n s t i t u t i o n s , a n v a r i o u sb r a n c h e s o g o v e r n m e n t w o u l d b u n a b l e t h a n d l e t h b e w i l d e r i n gq u a n t i t y o i n f o r m a t i o n t h a t c h a r a c t e r i z e s o u s o c i e t y . A l t h o u g h t h r o u t i n e u s o c o m p u t e r s h a b e c o m e s i g n i f i c a n t p a r t o e v e r y d a ya c t i v i t i e s o n l y i r e c e n t y e a r s , t h t r e n d w i l l s u r e l y c o n t i n u e a t h p r i c e o f c o m p u t e r s c o n t i n u e s t d r o p . M o r e a n m o r e p e o p l e w i l ln e e d t k n o w h o t u s c o m p u t e r s i t h e y a r t p a r t i c i p a t e f u l l yi o u s o c i e t y .

W h a t I B A S I C ?

Page 20: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 20/348

H a n d s - o n B A S I C

y o w i l l s t u d y w r i t t e n m a t e r i a l t h a t s u m m a r i z e s w h a t y o u h a v el e a r n e d .

W h e r e D i B A S I C O r i g i n a t e ?T h o r i g i n a l v e r s i o n o B A S I C w a d e s i g n e d a n w r i t t e n a D a r t m o u t h C o l l e g e u n d e r t h d i r e c t i o n o f P r o f e s s o r s J o h n G K e m e n y a n T h o m a s E K u r t z . I S e p t e m b e r 1 9 6 3 t h e y b e g a n t c r e a t e a p r o g r a m m i n g l a n g u a g e w r i t t e n f r o m t h u s e r ' s p o i n t o v i e w . M u c h o t h e a c t u a l p r o g r a m m i n g o t h e p r o j e c t w a d o n e b D a r t m o u t h u n d e r g r a d u a t e s t u d e n t s . P r o f e s s o r s K e m e n y a n K u r t zi n t r o d u c e d t h c o m p l e t e d l a n g u a g e o M a 1 1 9 6 4 .

T h s u c c e s s o t h i s p i o n e e r i n g e f f o r t a D a r t m o u t h a t t r a c t e dn a t i o n a l a t t e n t i o n , a n o t h e r i n s t i t u t i o n s b e c a m e i n t e r e s t e d . T h r e s t i h i s t o r y . W h a t s t a r t e d a s a p r o j e c t a s i n g l e c o l l e g e i n o a e s t a b l i s h e d p a r t o t h c o m p u t e r i n d u s t r y . T o d a y n e a r l y e v e r yt i m e - s h a r i n g c o m p u t e r " s p e a k s " s o m e v e r s i o n o B A S I C .

T h e n h a n c e d v e r s i o n s h a v e s i g n i f i c a n t l y i n c r e a s e d t h p o w e ra n c a p a b i l i t y o f t h e l a n g u a g e . T h m o s t r e c e n t d e v e l o p m e n t i t h a d a p t a t i o n o B A S I C f o u s o s m a l l , i n e x p e n s i v e p e r s o n a lc o m p u t e r s . C o m m o d o r e 6 B A S I C , t h l a n g u a g e p r e s e n t e d i t h i sb o o k , i p o w e r f u l a n f l e x i b l e e n h a n c e d v e r s i o n o f B A S I C .

H o t U s T h i s B o o kE a c h c h a p t e r b e g i n s w i t h b r i e f s t a t e m e n t o t h o b j e c t i v e s . S t u d y

Page 21: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 21/348

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

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

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

B e g i n n i n g w i t h C h a p t e r 4 w g i v e s e o p r o b l e m s a t h e n o e a c h c h a p t e r . Y o s h o u l d w o r k e n o u g h p r o b l e m s t s a t i s f y y o u rs e l f t h a t y o c a w r i t e p r o g r a m s a t h a p p r o p r i a t e l e v e l . S o l u t i o n st t h o d d - n u m b e r e d p r o b l e m s a r i A p p e n d i x E

F i n a l l y , e a c h c h a p t e r h a p r a c t i c e t e s t t h a t l e t s y o r e v i e wt h m a t e r i a l a n d i s c o v e r n e e d s f o f u r t h e r s t u d y . T h a n s w e r s t t h e p r a c t i c e t e s t s a r c o n t a i n e d i A p p e n d i x D

Page 22: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 22/348

Page 23: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 23/348

C H A P T E R

G E T T I N G A C Q U A I N T E DW I T H Y O U R

C O M M O D O R E 6 C O M P U T E R

S i n c e t h c o m p u t e r m a s e e m b i s t r a n g e a n c o m p l i c a t e d a f i r s t ,w w i l l p r o c e e d s l o w l y . A f t e r f e s e s s i o n s , r o u t i n e o p e r a t i o n s w i l ls e e m v e r y n a t u r a l a n w i l l c a u s e y o u n o t r o u b l e . I n i t i a l l y , t h o u g h ,b p r e p a r e d f o c e r t a i n " c o n f u s i o n q u o t i e n t / ' D o n ' t h e s i t a t e t r e v i e w p r e v i o u s l y s t u d i e d m a t e r i a l i n e c e s s a r y .

1 - O B J E C T I V E SI t h i s c h a p t e r y o w i l l b e c o m e f a m i l i a r w i t h t h c o m p u t e r a n d s t a r tl e a r n i n g h o i o p e r a t e s . Y o w i l l d o n o B A S I C p r o g r a m m i n g u n t i l

Page 24: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 24/348

1 H a n d s - o n B A S I C

C o r r e c t i n g M i s t a k e sT h i n f o r m a t i o n e n t e r e d i n t o c o m p u t e r i r a r e l y m i s t a k e f r e e . Y o n e e d t k n o w h o t e d i t — h o t c h a n g e o c o r r e c t m a t e r i a l t h a th a b e e n e n t e r e d .

1 - D I S C O V E R Y E X E R C I S E SB e f o r e b e g i n n i n g w o r k o t h c o m p u t e r , w m u s t e s t a b l i s h s e v e r a li m p o r t a n t p o i n t s . O t y p e w r i t e r , t h l e t t e r i o f t e n u s e d f o r t h en u m e r a l 1 O t h c o m p u t e r , h o w e v e r , t h n u m e r a l i w i t h t h o t h e r n u m e r a l k e y s a l o n g t h t o r o o f t h e k e y b o a r d . S i m i l a r l y ,t h l e t t e r i s o m e t i m e s u s e d f o t h n u m e r a l o t y p e w r i t e r ,b u o t h c o m p u t e r t h i f o u n d o t h t o r o o f t h e k e y b o a r d .

D o n ' t u s t h f o t h 1 D o n ' t u s t h f o t h 0

T h p l u s s i g n i t y p e d w i t h o u t h o l d i n g d o w n t h s h i f t k e y .T h s y m b o l s - , * a n a r a l s o t y p e d w i t h o u t u s i n g t h S H I F Tk e y .

T h d i s k d r i v e w i l l n o b u s e d u n t i l C h a p t e r 3 Y o n e e d n o i n s t a l l i o t u r n i o u n t i l t h e n .

T h a n t e n n a s w i t c h b o x s h o u l d b e c o n n e c t e d t o t h e T s e t .c a b l e s h o u l d b e c o n n e c t e d t b o t h t h a n t e n n a s w i t c h b o x a n t h

Page 25: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 25/348

G e t t i n g A c q u a i n t e d w i t h Y o u r C o m m o d o r e 6 C o m p u t e r 1

* * # * C O M M O D O R E B A S I C U * * * *6 4 R A S Y S T E M 3 3 9 1 1 B A S I C B Y T E S F R E ER E A D Y .

o s o m e t h i n g s i m i l a r . Y o m a w i s h t a d j u s t t h e T s e t g e c l e a r e r p i c t u r e . I y o d n o s e t h e s e m e s s a g e s , s t a r t t h p r o c e d u r eo v e r a g a i n . T h b l i n k i n g s q u a r e i c a l l e d c u r s o r . I w i l l b d i s p l a y e d o t h s c r e e n m o s t o t h t i m e .

3 N o t y p e

P R I N T 1 + I y o g e o n l y l o w e r c a s e l e t t e r s , i . e . , p r i n t 1 + 4 , p r e s s t h e S H I F Tk e a n t h C o m m o d o r e k e G s i m u l t a n e o u s l y a n c o n t i n u e . D n o t h o l d d o w n t h S H I F T k e w h e n y o t y p e H a a n y t h i n gh a p p e n e d ?

N o p r e s s [ R E T U R N ) a n r e c o r d w h a t h a p p e n e d .

Page 26: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 26/348

1 H a n d s - o n B A S I C

6 T y p e

P R I N T 1 2 ^ 2

a n p r e s s [ r E T U R N | W h a t h a p p e n e d ?

W h a t a r i t h m e t i c o p e r a t i o n d o e s t h c a l l f o r ?

7 I y o m a k e a t y p i n g e r r o r , y o c a m o v e t h e c u r s o r , b a c k t t h e r r o r b p r e s s i n g t h k e m a r k e d I N S T / D E L a t h u p p e r r i g h to f t h e d a r k b r o w n k e y s . W w i l l r e f e r t t h k e a t h d e l e t e k e y .E a c h t i m e y o p r e s s t h e d e l e t e k e y , t h e c u r s o r w i l l m o v e o n p l a c et t h l e f t , e r a s i n g a c h a r a c t e r . W h e n y o r e a c h t h e r r o r , r e t y p e t h l i n e c o r r e c t l y . S o m e t i m e s , a f t e r y o p r e s s R E T U R N ] y o m a s e t h m e s s a g e ? S Y N T A X E R R O R . I t h i s h a p p e n s , t r t s e w h a tt h p r o b l e m i a n r e t y p e t h e n t i r e l i n e c o r r e c t l y .

8 Y o u r T s c r e e n s h o u l d b f a i r l y f u l l n o w . H o l d d o w n t h S H I F Tk e a n p r e s s t h k e m a r k e d C L R / H O M E n e x t t t h d e l e t e k e a t h r i g h t s i d e o f t h e k e y b o a r d . W s h a l l c a l l t h i s o p e r a t i o nl S H i F T | C L R / H O M E | t W h a t h a p p e n e d ?

Page 27: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 27/348

G e t t i n g A c q u a i n t e d w i t h Y o u r C o m m o d o r e 6 C o m p u t e r 1

W h a t a r i t h m e t i c o p e r a t i o n i c a l l e d f o b t h *

1 0 T y p eP R I N T < 2 + 3 > * 4 - l

b u d o n ' t p r e s s R E T U R N ] W h a t d o y o u t h i n k w i l l h a p p e n w h e ny o p r e s s [ R E T U R N ]

P r e s s [ R E T U R N ] a n r e c o r d w h a t h a p p e n e d ._

1 1 T y p eP R I N T " < 2 + 3 5 * 4 - 1 "

a n p r e s s R E T U R N ] W h a t h a p p e n e d ?

1 2 W h a t w i l l h a p p e n i y o t y p e

P R I N T " B A D D O G "

Page 28: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 28/348

1 H a n d s - o n B A S I C

N o t y p e

? G R A D E

a n p r e s s [ R E T U R N ! W h a t h a p p e n e d ?

T h q u e s t i o n m a r k i a a b b r e v i a t i o n f o P R I N T .1 4 T a k e f e m o m e n t s t e x a m i n e t h l i n e s b e l o w .

W I D T H = 1 0D E P T H = 6H E I G H T = 4U O L L I M E = W I D T H : * : D E P T H * H E I G H TP R I N T U O L U M E

W h a t d o y o u t h i n k w i l l h a p p e n i y o t y p e i t h e s e l i n e s ?

N o t y p e i t h l i n e s . R e m e m b e r t p r e s s [ R E T U R N ] a t h e n o e a c h l i n e . W h a t h a p p e n e d ?

Page 29: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 29/348

G e t t i n g A c q u a i n t e d w i t h Y o u r C o m m o d o r e 6 C o m p u t e r 1

1 6 N o g o t d i f f e r e n t t o p i c . C l e a r t h s c r e e n . P r e s s t h S H I F TL O C K k e o t h l e f t o f t h e k e y b o a r d . N o p r e s s t h k e y s m a r k e dA S D F G H J K a n L W h a t h a p p e n e d ?

P r e s s i n g [ S H I F T L O C K ] p l a c e s t h c o m p u t e r k e y b o a r d i g r a p h i c sm o d e . L o o k a t h e f r o n t s o f t h e k e y s y o h a v e p r e s s e d t s e t h g r a p h i c c h a r a c t e r g e n e r a t e d i n t h i s m o d e . N o a l k e y s g e n e r a t eg r a p h i c s c h a r a c t e r s . Y o m a w i s h t e x p e r i m e n t w i t h t h o t h e rk e y s o t h k e y b o a r d .

1 7 N o h o l d d o w n t h S H I F T k e o t h l e f t a n p r e s s t h e k e m a r k e dC j u s t t t h l e f t o t h S H I F T k e y . W h a t h a p p e n e d ?

R e p e a t t h i s o p e r a t i o n s e v e r a l t i m e s o b s e r v i n g t h s c r e e n a y o u d os o

1 8 T h i s c o n c l u d e s t h d i s c o v e r y m a t e r i a l f o t h i s c h a p t e r . T u r n o f y o u rc o m p u t e r a n T s e t .

1 - D I S C U S S I O N

Page 30: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 30/348

1 H a n d s - o n B A S I C

w i l l a p p e a r o t h s c r e e n .T h c o m p u t e r s t a r t s u i u p p e r c a s e / g r a p h i c s m o d e . Y o

m a s h i f t i n t o ( a n d o u o f t h u p p e r / l o w e r c a s e m o d e b p r e s s i n gt h C a n S H I F T k e y s s i m u l t a n e o u s l y . Y o w i l l u s t h u p p e rc a s e / g r a p h i c s m o d e t h r o u g h o u t t h i s b o o k .

O n i m p o r t a n t p o i n t : I t h i n g s g e t a w a y f r o m y o u , i y o l o s et o u c h , o i t h c o m p u t e r s e e m s o u o c o n t r o l , y o h a v e w a t r e g a i n c o n t r o l . S i m p l y t u r n o f t h c o m p u t e r w i t h t h O N / O F Fs w i t c h r e c e s s e d i t h r i g h t s i d e o t h c a b i n e t . T h d i s a d v a n t a g e t t h i s r e m e d y i t h a t y o w i l l l o s e p r o g r a m s o i n f o r m a t i o n i m e m o r yw h e n y o r e c o v e r i t h i s m a n n e r . A l t e r n a t i v e l y , y o m a h o l d d o w nt h R U N / S T O P k e a n p r e s s t h R E S T O R E k e y . T h i s a c t i o n e r a s e st h d i r e c t m o d e s t a t e m e n t s o t h s c r e e n , b u d o e s n o e r a s e t h i n f o r m a t i o n s t o r e d i m e m o r y .U s i n g D i r e c t M o d eI n t h e d i s c o v e r y a c t i v i t i e s , y o l e a r n e d h o t u s t h c o m p u t e rl i k e s i m p l e c a l c u l a t o r t d s i m p l e a r i t h m e t i c o p e r a t i o n s . T h i si a l s o k n o w n a t h d i r e c t m o d e . A y o s h a l l s e i t h n e x tc h a p t e r , y o c a u s B A S I C t o s t o r e s t a t e m e n t s a n c o m m a n d s i

s e r i e s o n u m b e r e d l i n e s a n t h e n d i r e c t t h c o m p u t e r t p e r f o r ma l t h e s t a t e m e n t s . I f h o w e v e r , y o t y p e i t h s t a t e m e n t s w i t h o u tl i n e n u m b e r s , t h c o m p u t e r a s s u m e s y o w a n t d i r e c t o i m m e d i a t ea n s w e r a n d o e s w h a t y o a s k e d i t d o i p o s s i b l e .

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

Page 31: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 31/348

G e t t i n g A c q u a i n t e d w i t h Y o u r C o m m o d o r e 6 4 C o m p u t e r 1

I y o t y p e

P R I N T " A B C D E F G 1 1

a n p r e s s R E T U R N ] t h c o m p u t e r p r i n t s o u t h c o l l e c t i o n o fc h a r a c t e r s b e t w e e n t h q u o t a t i o n m a r k s — i t h i s c a s e t h l e t t e r sA B C D E F G . S u c h a c o l l e c t i o n i c a l l e d " c h a r a c t e r s t r i n g , " a i p o r t a n t c o n c e p t t h a t w w i l l r e t u r n t t h r o u g h o u t t h b o o k .

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

B = P R I N T A +

t h c o m p u t e r w i l l p r i n t o t h s c r e e n . T h e r e i v e r y i m p o r t a n tp o i n t i c o n n e c t i o n w i t h t h i s c o n c e p t . I y o t y p e

P R I N T T A

a n p r e s s [ R E T U R N ] t h c o m p u t e r w i l l d i s p l a y 0 S i n c e y o g a v en v a l u e t T A X , t h c o m p u t e r a s s i g n e d t h v a l u e 0 a n p r i n t e d i t

T h c o m p u t e r i v e r y r e l a x e d a b o u t n a m e s f o r q u a n t i t i e s u s e de i t h e r i t h d i r e c t m o d e o i B A S I C p r o g r a m s . Y o c a u s l o n g n a m e s l i k e D E P T H o R A T E a w e l l a s h o r t n a m e s l i k e

Page 32: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 32/348

1 H a n d s - o n B A S I C

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

1 - P R A C T I C E T E S TT a k e t h t e s t b e l o w t d i s c o v e r h o w e l l y o h a v e l e a r n e d t h o b j e c t i v e s o f C h a p t e r 1 T h a n s w e r s t t h i s a n a l s u b s e q u e n tp r a c t i c e t e s t s a r g i v e n i A p p e n d i x D

1 H o d y o l e t h c o m p u t e r k n o w t h a t y o a r t h r o u g h t y p i n gl i n e ?

2 I y o l o s e c o n t r o l o f t h e c o m p u t e r , h o c a y o r e g a i n i t

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

4 H o d o y o u c l e a r t h e s c r e e n d i s p l a y ?

Page 33: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 33/348

Page 34: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 34/348

O • —

Page 35: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 35/348

C H A P T E R

I N T R O D U C T I O N T B A S I C

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

2 - O B J E C T I V E SL e a r n i n g t E d i t P r o g r a m sY o a l r e a d y k n o w h o t c o r r e c t l i n e u s i n g t h d e l e t e k e y . Y o w i l l l e a r n t r e p l a c e a l i n e i p r o g r a m s i m p l y b t y p i n g a n e l i n e w i t h t h s a m e n u m b e r , a n d y o u w i l l l e a r n t u s t h e d i t i n gf e a t u r e s o f C o m m o d o r e 6 B A S I C t a d i n f o r m a t i o n t o d e l e t ei n f o r m a t i o n f r o m l i n e . t h o r o u g h k n o w l e d g e o f e d i t i n g w i l l s a v e

Page 36: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 36/348

2 H a n d s - o n B A S I C

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

A s s i g n i n g V a r i a b l e N a m e s i B A S I CY o m u s t k n o w h o t n a m e e i t h e r n u m b e r s o s t r i n g s o c h a r a c t e r si B A S I C p r o g r a m s . F o r t u n a t e l y , t h c o m p u t e r ' s r u l e s f o a s s i g n i n gn a m e s a r v e r y r e l a x e d .

2 - D I S C O V E R Y E X E R C I S E SI n t h e d i s c o v e r y a c t i v i t i e s t h a t f o l l o w , y o w i l l b d i r e c t e d t e n t e rv a r i o u s p r o g r a m s . I y o s e ( R E T U R N ) i t h i n s t r u c t i o n s , p r e s sR E T U R N ) . R e m e m b e r f r o m y o u r e x p e r i e n c e s i C h a p t e r t h a t p r e s s

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

1 T u r n o t h T s e a n y o u r c o m p u t e r . B s u r e t h a n t e n n a s w i t c ha n T c h a n n e l s e l e c t o r s w i t c h a r s e c o r r e c t l y .

2 T y p e i

1 0 L E f t = l < R E T U R H >T h i s i t h f i r s t l i n e o B A S I C p r o g r a m .

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

Page 37: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 37/348

I n t r o d u c t i o n t o B A S I C 2

5 F o r t u n a t e l y , a l i n o l o s t . T h c o m p u t e r r e m e m b e r s w h a t y o t y p e di e v e n t h o u g h t h s c r e e n i b l a n k . T y p e L I S T a n p r e s s [ R E T U R N ) .W h a t h a p p e n e d ?

6 O t h T d i s p l a y y o s h o u l d s e t h p r o g r a m y o j u s t e n t e r e d . F o t h t i m e b e i n g i g n o r e t h l i n e n u m b e r s a t h b e g i n n i n g o e a c h l i n e .J u s t r e a d t h l i n e s i n t h p r o g r a m a n t r y t o g e t s e n s e o w h a t t h e ym e a n . I t h c o m p u t e r i t o l d t o c a r r y o u t t h i n s t r u c t i o n s , w h a t d y o t h i n k w i l l h a p p e n ?

T y p e t h l e t t e r s R U a n p r e s s R E T U R N ] . W h a t h a p p e n e d ?

7 N o t y p e

1 1 L E T B = 5 < R E T U R N >

C l e a r t h s c r e e n , t y p e L I S T , a n t h e n p r e s s [ R E T U R N ! I t h l a s t

Page 38: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 38/348

2 H a n d s - o n B A S I C

9 N o t y p e

1 4 < R E T U R H >c l e a r t h s c r e e n , a n d i s p l a y t h p r o g r a m u s i n g t h L I S T c o m m a n d .W h a t h a h a p p e n e d t l i n e 1 4 0 ?

I y o w a n t t o d e l e t e l i n e i B A S I C p r o g r a m , h o d y o u d o i t

1 0 N o r u t h p r o g r a m ( t y p e R U a n p r e s s [ R E T U R N ) ) W h a th a p p e n e d ?

D o e s t h c o m p u t e r a p p e a r t o r e q u i r e t h e E N s t a t e m e n t t h a tf o r m e r l y w a i l i n e 1 4 0 ?

1 1 E x p e r i m e n t b i m o r e . O f t e n y o w i l l w a n t t o c l e a r o u t h p r o g r a mi t h c o m p u t e r ' s m e m o r y . Y o u s t h N E c o m m a n d t c l e a r t h m e m o r y . T y p e N E a n p r e s s J R E T U R I S f l . W h a t h a p p e n e d ?

Page 39: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 39/348

I n t r o d u c t i o n t o B A S I C 2

1 8 L E A = < R E T U R N >1 1 L E B = < R E T U R N >1 2 L E T C = A + B < R E T U R N >1 3 P R I N T < R E T U R N >1 4 E N < R E T U R N >

C h e c k a l t h l i n e s t m a k e s u r e y o e n t e r e d t h e m c o r r e c t l y . I l i n e n e e d s t b c h a n g e d , r e t y p e i t I y o h a t r e t y p e l i n e s , c l e a rt h s c r e e n w i t h [ s h i f t | c l r / h o m e | a n r e d i s p l a y t h e p r o g r a m b t y p i n gL I S T .

1 3 N o t y p e

1 2 L E D = B - A < R E T U R N >1 3 P R I N T < R E T U R N >

C l e a r t h e s c r e e n a n d i s p l a y t h e p r o g r a m . W h a t h a h a p p e n e d ?

1 4 T a k e f e m o m e n t s t s t u d y t h p r o g r a m . W h a t w i l l h a p p e n i y o r u t h p r o g r a m ?

T y p e R U N , p r e s s [ R E T U R N ] a n r e c o r d b e l o w w h a t t h c o m p u t e r

Page 40: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 40/348

2 6 H a n d s - o n B A S I C

1 7 C l e a r t h p r o g r a m i m e m o r y b t y p i n g N E a n p r e s s i n g[ R E T U R N ! . E n t e r t h p r o g r a m b e l o w .

1 0 I N P U T W H I T E < R E T U R N >1 1 L E R E D = W H I T E + 2 < R E T U R N >1 2 P R I N T R E < R E T U R N >1 3 G O T O 1 8 < R E T U R N >1 4 E N < R E T U R N >

1 8 T h i s n e p r o g r a m h a s e v e r a l f e a t u r e s y o h a v e n o s e e n b e f o r e .S t u d y t h p r o g r a m c a r e f u l l y a n t h i n k a b o u t w h a t w i l l h a p p e n i y o r u t h p r o g r a m . W h a t d o e s G O T O 1 0 i l i n e 1 3 m e a n ?

1 9 R u t h p r o g r a m a n d r e c o r d w h a t t h c o m p u t e r d i d .

T y p e t h n u m e r a l a n p r e s s l R E T U R f \ f | . W h a t h a p p e n e d ?

2 0 T y p e t h n u m e r a l 1 a n p r e s s [ R E T U R N l . W h a t t o o k p l a c e ?

Page 41: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 41/348

I n t r o d u c t i o n t o B A S I C 2

I n o t h i n g h a p p e n e d , p r e s s 1 R U N / s t o p | r e s t o r e | a g a i n a n c o n t i n u e .2 3 U s N E t c l e a r t h p r o g r a m i m e m o r y . T y p e i t h f o l l o w i n g

p r o g r a m .

1 9 L E A = 1 @ 0 < R E T U R N >1 1 P R I N T < R E T U R N >1 2 L E T A = A + 1 < R E T U R N >1 3 G O T O 1 1 < R E T U R N >1 4 E N < R E T U R N >

R u t h p r o g r a m a n r e c o r d b e l o w w h a t h a p p e n e d .

W h e n y o g e t i r e d o w a t c h i n g t h d i s p l a y , p r e s s I R U N / S T O P 1 . W h a th a p p e n e d ?

2 4 T r i o n c e m o r e . R u t h p r o g r a m a n a f t e r f e n u m b e r s a r v p e d o u t , i n t e r r u p t t h e p r o g r a m . H o d o y o u s t o p B A S I C p r

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

Page 42: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 42/348

2 H a n d s - o n B A S I C

P r e s s [ R U N / s t o p | t i n t e r r u p t t h p r o g r a m . C l e a r l y , s o m e s p a c e s a r i m p o r t a n t i B A S I C s t a t e m e n t s , o t h e r s a r n o t . J u s t n o t e t h f a c tf o n o w . W w i l l r e t u r n t t h i s m a t t e r l a t e r .

2 6 L e t ' s t r p r o g r a m w i t h s o m e n e f e a t u r e s . C l e a r t h p r o g r a m f r o mm e m o r y b t y p i n g N E a n t h e n p r e s s i n g 1 r E T U R N | T y p e i t h p r o g r a m b e l o w .

1 8 P R I N T " T Y P E N U M B E R " < R E T U R N >1 1 I N P U T F I R S T < R E T L I R N >1 2 P R I N T " O N E M O R E T I M E " < R E T U R H >1 3 I N P U T L A S T < R E T U R N >1 4 L E S U M = F I R S T L A S T < R E T U R N >1 5 P R I N T " T H E I R S U I S < R E T U R N >1 6 P R I N T S U < R E T U R N >1 7 E N < R E T U R N >

2 7 S t u d y t h p r o g r a m f o f e w m o m e n t s . N o R U t h p r o g r a m .W h a t h a p p e n e d ?

T y p e t h n u m e r a l 1 2 p r e s s [ R E T U R N ] a n r e c o r d b e l o w w h a t t h c o m p u t e r d i d .

Page 43: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 43/348

I n t r o d u c t i o n t o B A S I C 2

H o l d d o w n t h S H I F T k e a n p r e s s t h e k e m a r k e d 1 T C R S R 1 J . a t h l o w e r r i g h t o t h k e y b o a r d . W h a t h a p p e n e d ?

P r e s s I S H i F T l t T C R S R i J ] ^ m o r e t i m e s . T h c u r s o r s h o u l d n o b o l i n e 1 2 0 . R e l e a s e t h S H I F T k e a n p r e s s t h e k e m a r k e d < = C R S R = *s e v e r a l t i m e s u n t i l t h c u r s o r i o t h s e c o n d q u o t a t i o n m a r k . P r e s st h d e l e t e k e t i m e s t o d e l e t e t h l e t t e r s E , M I a n t t h l e f t o f t h e c u r s o r . N o t y p e N U M B E R " a n p r e s s i R E T U R N l . W h a th a p p e n e d ?

L i s t t h p r o g r a m . L i n e 1 2 s h o u l d l o o k l i k e

1 2 P R I N T " O N E M O R E N U M B E R "

3 0 D i s p l a y t h p r o g r a m t o s e e t h a t t h c h a n g e h a b e e n m a d e . I t h l i n ei n o c o r r e c t , y o m a w i s h t r e t y p e i o u s t h e d i t i n g f e a t u r e st c o r r e c t i t

3 1 l i n e m a b c h a n g e d b l i s t i n g i t m o v i n g t h c u r s o r ( a b b r e v i a t e dC S R S ) t t h e p o s i t i o n w h e r e c h a n g e s s h o u l d b m a d e a n t h e nt y p i n g t h c h a n g e s . P r e s s i n g i R E T U R N l p l a c e s t h e c h a n g e d l i n e i

Page 44: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 44/348

3 H a n d s - o n B A S I C

3 4 N o p r e s s [ R E T U R N ) t c o m p l e t e t h e d i t i n g o t h l i n e . D i s p l a y t h p r o g r a m t s e t h a t t h c h a n g e s h a v e b e e n m a d e . L i n e 1 2 s h o u l dl o o k l i k e

1 2 P R I N T " O N E M O R E N U M B E R , P L E A S E "3 5 R u t h p r o g r a m . A t h i n p u t p r o m p t s , t y p e 2 a n 2 3 I t h

p r o g r a m m o r e p o l i t e n o w ?

3 6 N o l o o k a d i f f e r e n t t o p i c . C l e a r t h s c r e e n . T y p e N E a n p r e s s i R E T U R N l t o c l e a r t h p r o g r a m i m e m o r y . T h e n e n t e r t h f o l l o w i n g p r o g r a m .

1 8 L E A = < R E T U R N >1 1 L E T A $ = " H O U S E " < R E T U R N >1 2 P R I N T < R E T U R N >1 3 P R I N T " A < R E T U R N >1 4 P R I N T A < R E T U R N >1 5 P R I N T " A $ " < R E T U R N >1 6 E N < R E T U R N >

3 7 T h i s p r o g r a m c o n t a i n s s o m e t h i n g n e w . L o o k a t h A i l i n e 1 1 0 .N o t e t h a t i i s e e q u a l t w o r d e n c l o s e d i q u o t a t i o n m a r k s . T h b a l a n c e o t h p r o g r a m h a t d w i t h v a r i a t i o n s o p r i n t i n g o u

Page 45: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 45/348

I n t r o d u c t i o n t o B A S I C 3

A l r i g h t , n o r u t h p r o g r a m a n r e c o r d w h a t h a p p e n e d .

4 0 A y o u s a w i C h a p t e r 1 e v e n t h o u g h t h v a l u e o w a n o d e f i n e di t h p r o g r a m , t h c o m p u t e r a s s i g n e d i v a l u e o 0 T h i s i a i m p o r t a n t f a c t t r e m e m b e r w h i l e w r i t i n g p r o g r a m s .

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

2 - D I S C U S S I O NL e a r n i n g t E d i t P r o g r a m sS i n c e m o s t o u m a k e m i s t a k e s w h i l e t y p i n g , w n e e d t b a b l e t c o r r e c t e r r o r s . S u p p o s e y o m a k e m i s t a k e w h i l e y o a r t y p i n g al i n e . I y o h a v e n o y e p r e s s e d I r E T U R N I t e n t h a t l i n e , y o c a m o v e t h c u r s o r l e f t u s i n g t h d e l e t e k e a n m a k e c o r r e c t i o n s a y o s a i C h a p t e r 1 W h e n a l t h c o r r e c t i o n s a r m a d e i l i n e ,p r e s s i R E T U R N l . I y o w i s h t c h a n g e l i n e a f t e r y o h a v e f i n i s h e dt y p i n g i ( a f t e r y o h a v e p r e s s e d [ R E T U R N ! ) y o m a r e t y p e t h l i n eo y o m a u s t h e e d i t i n g f e a t u r e s o f C o m m o d o r e 6 B A S I C . F o e x a m p l e , i y o w i s h t c h a n g e l i n e 1 1 i p r o g r a m , y o s h o u l dt y p e i

Page 46: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 46/348

3 H a n d s - o n B A S I C

u s e d i t h c o m p u t e r w o r k :i e l e a = 1 1 L E T B = 81 2 L E C = A + B1 3 P R I N T1 4 E N

E a c h B A S I C p r o g r a m c o n s i s t s o g r o u p o l i n e s c a l l e d s t a t em e n t s . E a c h s t a t e m e n t m u s t h a v e l i n e n u m b e r a n b l e s s t h a nt w l i n e s l o n g ( 8 c h a r a c t e r s ) . I n t h e p r o g r a m a b o v e , t h e r e a r e t h r e et y p e s o B A S I C s t a t e m e n t s : L E T , P R I N T , a n E N D . T h f i r s t t w s t a t e m e n t s w i l l b t r e a t e d f u l l y i t h n e x t c h a p t e r . F o t h t i m eb e i n g t h u s o e a c h o f t h e s e s t a t e m e n t s i t h p r o g r a m i c l e a r .T h C o m m o d o r e 6 w i l l e x e c u t e p r o g r a m w i t h o w i t h o u t t h E N s t a t e m e n t . H o w e v e r , i i g o o d p r a c t i c e t u s i t e s p e c i a l l yi l o n g p r o g r a m s , s o t h e r e w i l l b n c o n f u s i o n a b o u t w h e r e t h p r o g r a m e n d s . W w i l l m a k e i a r u l e t u s t h E N s t a t e m e n t i a l p r o g r a m s e v e n t h o u g h t h c o m p u t e r d o e s n ' t r e q u i r e i t

G e n e r a l l y , t h l i n e n u m b e r s i B A S I C p r o g r a m a r n o n u b e r e d c o n s e c u t i v e l y ( s u c h a 1 0 0 , 1 0 1 , 1 0 2 , e t c . ) . T h r e a s o n i t h a to f t e n p r o g r a m m e r s n e e d t o i n s e r t a d d i t i o n a l s t a t e m e n t s l a t e r i t h e yd i s c o v e r e r r o r s o w a n t t m o d i f y t h p r o g r a m . I t h l i n e s w e r en u m b e r e d c o n s e c u t i v e l y ( s p a c e d a p a r t ) , i w o u l d b l e s s c o n v e n i e n tt m a k e c h a n g e s . W h e n t h e r e a r e g a p s i t h l i n e n u m b e r s , s t a t e

Page 47: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 47/348

I n t r o d u c t i o n t o B A S I C 3

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

Y o c a r e m o v e B A S I C s t a t e m e n t f r o m p r o g r a m b t y p i n gt h l i n e n u m b e r a n p r e s s i n g R E T U R N . Y o c a m o d i f y s t a t e m e n t sb r e t y p i n g t h l i n e s i n v o l v e d , p r e s s i n g R E T U R N a f t e r e a c h l i n e i t y p e d , o b u s i n g t h e d i t i n g f e a t u r e s . A i n d i c a t e d a b o v e , y o c a a d s t a t e m e n t s b u s i n g l i n e n u m b e r s n o a l r e a d y i t h p r o g r a m .T h u s , y o c a a d d , r e m o v e , o c h a n g e B A S I C s t a t e m e n t s a y o w i s h . T h i s a b i l i t y t c h a n g e p r o g r a m s e a s i l y i o n o t h p o w e r f u lc h a r a c t e r i s t i c s o C o m m o d o r e 6 B A S I C .

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

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

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

Page 48: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 48/348

3 4 H a n d s - o n B A S I C

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

U s [ S H I F T | C L R / H O M E | t t d i s p l a y t h e p r o g r a m i m e m o r y .T y p e N E t c l e a r t h p r o g r a m i m e m o r y .T y p e R U t h a v e t h c o m p u t e r e x e c u t e p r o g r a m .

E n t e r i n g a n C o n t r o l l i n g P r o g r a m sS f a r , i t h i n s t r u c t i o n s f o r t y p i n g p r o g r a m s o c o m m a n d s ,t h ( R E T U R N ) p r o m p t r e m i n d e d y o t p r e s s t h e R E T U R N k e y .T h i s h a b i t s h o u l d b e w e l l d e v e l o p e d n o w , s w w i l l n o u s t h ( R E T U R N ) p r o m p t i t h f u t u r e . P r o m n o o n w h e n y o a r t h r o u g h t y p i n g s t a t e m e n t o r c o m m a n d , p r e s s R E T U R N l t l e t h c o m p u t e r k n o w y o a r f i n i s h e d .

A t i m e s , y o w i l l n e e d t c o n t r o l a p r o g r a m t h a t i r u n n i n g .A e x t r e m e c a s e i p r o g r a m i a c l o s e d l o o p . S u c h p r o g r a mw i l l k e e p o r u n n i n g f o r e v e r i y o d o n ' t i n t e r r u p t i t Y o c a n b r e a ki n t o p r o g r a m b p r e s s i n g [ R U N / s t o p | W h e n y o p r e s s | R U N / s t o p |t h c o m p u t e r b r e a k s t h p r o g r a m e x e c u t i o n a n d i s p l a y s t h e w o r d s ,B R E A K I f o l l o w e d b t h n u m b e r o f t h e l i n e t h a t w a b e i n gp r o c e s s e d w h e n t h e i n t e r r u p t i o n t o o k p l a c e . d i f f e r e n t s i t u a t i o n

Page 49: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 49/348

I n t r o d u c t i o n t o B A S I C 3

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

C o n s i d e r t h f o l l o w i n g s t a t e m e n t .

1 3 L E C = A + B

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

N o c o n s i d e r t h B A S I C s t a t e m e n t :

1 2 L E T B = B + 1

S u p p o s e y o c o n s i d e r t h s t a t e m e n t a a a l g e b r a i c e q u a t i o n :

Page 50: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 50/348

3 H a n d s - o n B A S I C

1 8 L E A = 1 1 L E A = 2 * 3

L i n e 1 0 i n s t r u c t s t h c o m p u t e r t s e u a l o c a t i o n c a l l e d a n p u t h n u m b e r i t h a t l o c a t i o n . L i n e 1 1 t e l l s t h c o m p u t e r t m u l t i p l y 2 b a n s t o r e t h p r o d u c t i l o c a t i o n A T h 1 s t o r e dp r e v i o u s l y i l o c a t i o n i l o s t .

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

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

I i e a s y t d i s t i n g u i s h b e t w e e n n u m e r i c a n c h a r a c t e r - s t r i n gv a r i a b l e s . A B O O K , M a n a l i d e n t i f y n u m e r i c v a r i a b l e s a n n a m e n u m e r i c q u a n t i t i e s . A $ B O O K S , M $ a n P a l n a m e s t r i n g so f c h a r a c t e r s . T h s y m b o l i d e n t i f i e s t h n a m e a c h a r a c t e r - s t r i n gv a r i a b l e . I t h B A S I C s t a t e m e n t

1 0 L E T B $ = " B A R N "B n a m e s l o c a t i o n i m e m o r y i w h i c h t h c h a r a c t e r s t r i n g" B A R N " i s t o r e d . T h q u o t a t i o n m a r k s s e o f t h s t r i n g , b u a r n o p a r t o i t

Page 51: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 51/348

3 8 H a n d s - o n B A S I C

Page 52: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 52/348

5 W h a t w o u l d h a p p e n i y o c o r r e c t e d a n r a t h p r o g r a m i q u e st i o n 4

6

7

8

9

1 0

1 1

H o

H o

H o

H o

H o

H o

l o n g c a l o n g v a r i a b l e n a m e s b e

d

d

d

d

d

y o

y o

y o

y o

y o

i n s e r t l i n e i B A S I C p r o g r a m ?

r e p l a c e l i n e i B A S I C p r o g r a m ?

r e m o v e l i n e f r o m B A S I C p r o g r a m ?

d i s p l a y t h p r o g r a m i m e m o r y ?

e r a s e t h e s c r e e n ?

Page 53: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 53/348

I n t r o d u c t i o n t o B A S I C 3

1 5 W h a t w i l l t h f o l l o w i n g e d i t i n g c o m m a n d d o

L I S T 1 2

1 6 W h a t k e y s a r u s e d t m o v e t h c u r s o r ?

1 7 W h a t k e y s a r u s e d t i n s e r t a n d e l e t e c h a r a c t e s i l i n e ?

1 8 W h e n l i n e i b e i n g e d i t e d , h o i t h e e d i t i n g e n d e d ?

(

Page 54: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 54/348

o

Page 55: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 55/348

C H A P T E R

C O M P U T E R A R I T H M E T I CA N

P R O G R A M M A N A G E M E N T

3 - O B J E C T I V E SY o w i l l n e e d b l a n k d i s k e t t e f o s o m e o f t h e s e a c t i v i t i e s .I n s t r u c t i o n s f o r i n s t a l l i n g t h d i s k d r i v e t h a t y o w i l l a l s o n e e d a r g i v e n i t h V I C - 1 5 4 1 S i n g l e D r i v e F l o p p y D i s k U s e r ' s M a n u a l .

D o i n g A r i t h m e t i c o t h C o m p u t e r

4 H a n d s - o n B A S I C

Page 56: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 56/348

I n i t i a l i z i n g D i s k e t t eN e o b l a n k d i s k e t t e s m u s t b p r e p a r e d o i n i t i a l i z e d f o u s o y o u r C o m m o d o r e 6 4 Y o m u s t k n o w h o w t i n i t i a l i z e d i s k e t t e sc o r r e c t l y i o r d e r t s t o r e p r o g r a m s .

S t o r i n g a n R e t r i e v i n g P r o g r a m sY o n e e d t k n o w t h c o m m a n d s t h a t p e r m i t y o t s t o r e p r o g r a m so a n r e t r i e v e p r o g r a m s f r o m a d i s k e t t e . Y o u . w i l l l e a r n t h e s e a n o t h e r p r o g r a m m a n a g e m e n t c o m m a n d s .

3 - D I S C O V E R Y E X E R C I S E S

I t h d i s k d r i v e h a s n o t b e e n i n s t a l l e d , y o m a u s t h f o l l o w i n gi n s t r u c t i o n s t i n s t a l l i t Y o m u s t f i r s t t u r n t h c o m p u t e r o f f . P l u gt h g r e y p o w e r c a b l e s u p p l i e d w i t h t h d i s k d r i v e i n t o t h t h r e e -p r o n g r e c e p t a c l e a t h r e a r o f t h e d i s k d r i v e c a b i n e t . P l u g t h d i s k d r i v e p o w e r c a b l e i n t o w a l l o u t l e t . M a k e s u r e t h O N / O F Fs w i t c h e s o t h d i s k d r i v e a n t h c o m p u t e r a r O F F . N l i g h t ss h o u l d b o n P l u g t h b l a c k s e r i a l c a b l e i n t o t h e l e f t s e r i a l b u s o c k e t a t h e r e a r o f t h e d i s k d r i v e c a b i n e t a n i n t o t h s e r i a l p o r ta t h r i g h t c e n t e r o t h c o m p u t e r . N o t u r n o t h e d i s k d r i v e a n t h e n t h c o m p u t e r . T h c o m p u t e r m u s t b t u r n e d o l a s t . Y o c a f i n d f u r t h e r i n s t a l l a t i o n d e t a i l s a n d i a g r a m s i t h V I C - 1 5 4 1 S i n g l e

C o m p u t e r A r i t h m e t i c a n P r o g r a m M a n a g e m e n t 4

Page 57: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 57/348

D i s p l a y t h p r o g r a m a n d s t u d y i b r i e f l y . I y o w e r e t e x e c u t e t h p r o g r a m a n e n t e r f o a n f o B w h a t d y o t h i n k w o u l db d i s p l a y e d ?

E x e c u t e t h p r o g r a m , e n t e r i n g a n a t h p r o m p t s , a n w r i t ed o w n w h a t h a p p e n e d .

2 C l e a r t h p r o g r a m i m e m o r y . N o t y p e

1 8 L E A = 3 * 31 1 L E B = 3 T 21 2 P R I N T1 3 P R I N T1 4 E N

D i s p l a y t h p r o g r a m a n m a k e s u r e i i c o r r e c t . N o e x e c u t e t h p r o g r a m a n r e c o r d w h a t w a s d i s p l a y e d .

4 H a n d s - o n B A S I C

Page 58: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 58/348

4 T y p e

1 8 L E A = 2 # 2 # 2 * 21 1 L E B = 2 | 4

E x e c u t e t h p r o g r a m . W h a t w a d i s p l a y e d ?

W h a t i t h s y m b o l u s e d f o r ?

5 R e m e m b e r f r o m y o u r i n t r o d u c t o r y a l g e b r a c o u r s e ( i y o h a v e n ' t h a a l g e b r a , d o n ' t p a n i c ! ) t h a t i y o w a n t t o i n d i c a t e t h a t n u m b e r i t b m u l t i p l i e d b i t s e l f t h r e e t i m e s , y o c a u s a e x p o n e n t . I t h n u m b e r w e r e 2 y o w o u l d w r i t e t h e x p r e s s i o n a

H o w o u l d t h i s e x p r e s s i o n b w r i t t e n i B A S I C u s i n g t h s y m b o l ?( H i n t : S e s t e p s 2 3 a n 4 .

C o m p u t e r A r i t h m e t i c a n P r o g r a m M a n a g e m e n t 4

Page 59: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 59/348

7 C l e a r t h p r o g r a m i m e m o r y . T y p e

1 8 L E A = 4 + 2 * 61 1 L E B = < 4 + 2 > * 61 2 L E C = 4 + < 2 * 6 )1 3 P R I N T1 4 P R I N T1 5 P R I N T1 6 E N

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

N o c h a n g e l i n e s 1 0 0 , 1 1 0 , a n d 1 2 0 a s f o l l o w s .

1 0 L E A = 4 + 2 * 6 / 3

4 H a n d s - o n B A S I C

Page 60: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 60/348

8 C l e a r t h p r o g r a m i m e m o r y . N o e n t e r t h e f o l l o w i n g p r o g r a m :

1 0 L E A = 3 * 1 0 0 * 1 8 81 1 L E 6 = 3 * 1 8 8 * 1 0 0 * 1 0 01 2 L E 0 = 3 * 1 0 8 * 1 8 8 * 1 8 8 * 1 8 01 3 L E 0 = 3 * 1 0 0 * 1 0 0 * 1 0 8 * 1 8 0 * 1 8 01 4 P R I N T1 5 P R I N T1 6 P R I N T1 7 P R I N T1 8 E N

E x e c u t e t h p r o g r a m a n r e c o r d t h o u t p u t .

C a y o e x p l a i n t h d i f f e r e n t f o r m i w h i c h t h c o m p u t e r d i s p l a y e dt h n u m b e r s ? ( H i n t : C o u n t t h n u m b e r o z e r o s i t h m u l t i p l i e r s i l i n e s 1 0 0 , 1 1 0 , a n 1 2 0 ) .

9 T y p e

1 0 L E A = 4 / - < 1 0 0 * 1 0 8 )1 1 L E B = 4 ^ < 1 8 0 * 1 0 0 * 1 0 0 )1 2 L E C 4 x - < 1 0 0 * 1 0 0 * 1 0 0 * 1 0 0 )1 2 L E E = 4 / - ( 1 8 8 * 1 0 0 * 1 0 8 * 1 8 0 * 1 0 0 )

C o m p u t e r A r i t h m e t i c a n P r o g r a m M a n a g e m e n t 4

Page 61: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 61/348

1 1 N o m o v e o t t h s u b j e c t o f s t o r i n g a n r e t r i e v i n g p r o g r a m s .B e f o r e y o c a p r o c e e d w i t h s t o r i n g a n r e t r i e v i n g p r o g r a m s , y o m u s t l e a r n t o i n i t i a l i z e d i s k e t t e . ( I y o h a v e n o i n s t a l l e d y o u rV I C - 1 5 4 1 D i s k D r i v e , s e t h i n s t a l l a t i o n i n s t r u c t i o n s a t h b e g i nn i n g o t h i s s e c t i o n o i t h V I C - 1 5 4 1 S i n g l e D r i v e F l o p p y D i s kU s e r ' s M a n u a l B s u r e t t u r n t h c o m p u t e r o f b e f o r e i n s t a l l i n g t h d i s k d r i v e . ) I y o w i s h t u s t a p e r e c o r d e r f o p r o g r a m s t o r a g e ,s e t h C o m m o d o r e 6 U s e r ' s G u i d e .

1 2 T u r n o f t h c o m p u t e r . T u r n o t h e d i s k d r i v e . T u r n o t h c o m p u t e ra g a i n . P l a c e d i s k e t t e i t h e d i s k d r i v e w i t h t h n o t c h o t h l e f ta n t h l a b e l u p C l o s e t h d o o r o t h e d i s k d r i v e . W i t h t h d i s k e t t ei t h d r i v e , t y p e ( b u t d n o p r e s s R E T U R N ]

O P E N 1 5 , 8 , 1 5 " N E l ^ B A S I C Z Z "N o t e : A l p r o g r a m s a n i n f o r m a t i o n s t o r e d o t h i s d i s k e t t e w i l l b l o s t w h e n t h d i s k e t t e i i n i t i a l i z e d b p r e s s i n g R E T U R N )N o p r e s s [ R E T U R N l

1 3 T h r e l i g h t o t h d i s k d r i v e w i l l g o a n R E A D Y w i l l a p p e a ro t h s c r e e n . T h d r i v e w i l l w h i r r f o a b o u t 7 s e c o n d s . W h e nt h e d r i v e s t o p s w h i r r i n g a n t h r e l i g h t g o e s o u t , y o a r r e a d yt p r o c e e d w i t h s t o r i n g a n r e t r i e v i n g p r o g r a m s . D n o t p r o c e e d t t h n e x t s t e p u n t i l t h r e l i g h t g o e s o u t .

4 H a n d s - o n B A S I C

Page 62: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 62/348

T h i s t r a n s f e r s t h p r o g r a m i m e m o r y t o d i s k e t t e u n d e r t h n a m eP R O D U C T . ( Y o u m a c h o o s e a n n a m e f o p r o g r a m a l o n g a i h a 1 o f e w e r c h a r a c t e r s . )

1 7 N o t y p e

L 0 A D " $ " , 8 < R E T U R N >

t l o a d t h d i r e c t o r y ( $ o f t h e d i s k e t t e o t h d i s k d r i v e ( 8 ) . W h e nR E A D Y a p p e a r s , t y p e

L I S T < R E T U R N >

t d i s p l a y t h d i r e c t o r y . Y o w i l l s e

" B A S I C " Z 2 " P R O D U C T " P R G

6 6 B L O C K S F R E E .R E A D Y .

T h i s s h o w s t h a t t h p r o g r a m P R O D U C T i n o o t h d i s k e t t e .T h P R s t a n d s f o p r o g r a m . T h n u m b e r a t h l e f t ( 1 d e s c r i b e st h s i z e i b l o c k s ( 2 5 6 c h a r a c t e r s ) o t h p r o g r a m P R O D U C T . T h

Page 63: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 63/348

Page 64: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 64/348

C o m p u t e r A r i t h m e t i c a n P r o g r a m M a n a g e m e n t 5

Page 65: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 65/348

T h b l i n k i n g r e l i g h t i n d i c a t e s t h a t a d i s k d r i v e e r r o r h a o c c u r r e d .S A V E a n L O A D c o m m a n d s w i l l c a u s e t h i s e r r o r l i g h t t s t o p b l i n ki n g . C l e a r P R O G R A M 1 f r o m t h d i s k e t t e . ( S e e s t e p 2 3 . ) R e m o v et h d i s k e t t e f r o m t h d i s k d r i v e . T u r n o f t h c o m p u t e r , t h T s e t ,a n t h d i s k d r i v e .

3 - D I S C U S S I O ND o i n g A r i t h m e t i c o t h C o m p u t e rW a r c o n c e r n e d w i t h f i v e a r i t h m e t i c o p e r a t i o n s . T h e s e a r a d i t i o n , s u b t r a c t i o n , m u l t i p l i c a t i o n , d i v i s i o n , a n e x p o n e n t i a t i o n( + — , * , / , ! ) • T h f i r s t f o u r a r c e r t a i n l y f a m i l i a r t y o u , a n t h o n l y d i f f i c u l t y w i t h t h l a s t ( e x p o n e n t i a t i o n ) i t h e i n t i m i d a t i n g w o r du s e d t d e f i n e t h e p r o c e s s .

T h e x p o n e n t i a t i o n o p e r a t i o n i r e p r e s e n t e d b t h s y m b o l .E x p o n e n t i a t i o n m e a n s " r a i s e d t t h p o w e r . " T h e r e f o r e , 3 | m e a n s" r a i s e d t t h f o u r t h p o w e r , " w h i c h i t u r n m e a n s 3 m u l t i p l i e d b i t s e l f f o u r t i m e s , g i v i n g 8 a t h r e s u l t .

Y o n e e d f u l l u n d e r s t a n d i n g o f t h e o r d e r i w h i c h t h c o p u t e r p e r f o r m s a r i t h m e t i c o p e r a t i o n s . A e x a m p l e w i l l i l l u s t r a t e t h p o i n t . C o n s i d e r t h f o l l o w i n g e x p r e s s i o n :

2 + 3 T 2 / 5 - 1I t h c o m p u t e r s i m p l y w e n t t h r o u g h t h e x p r e s s i o n f r o m l e f t t r i g h t

Page 66: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 66/348

Page 67: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 67/348

5 H a n d s - o n B A S I C

Page 68: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 68/348

w h i c h a f t e r t h f i n a l m u l t i p l i c a t i o n r e s u l t s i n t h a n s w e r o 2 4 5 .T h u s , i p a r e n t h e s e s a r e n e s t e d , t h c o m p u t e r w o r k s o u f r o mt h e d e e p e s t s e t , w o r k i n g f r o m l e f t t r i g h t . W h e n s e o p a r e n t h e s e s

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

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

L e a r n i n g N o t a t i o n f o N u m b e r sI B A S I C , n u m b e r s a r s o m e t i m e s p r i n t e d o u i w h a t i k n o w n a

n o t a t i o n . E x a m p l e s o n o t a t i o n a r 2 . 1 4 5 E + 0 6 a n 6 . 0 3 2 E - 0 7 .I i e a s y t o s e e w h s p e c i a l n o t a t i o n i n e e d e d f o e i t h e r v e r y

l a r g e o v e r y s m a l l n u m b e r s . T h c o m p u t e r u s u a l l y p r i n t s o u n i n ed i g i t s f o r a n u m b e r . p r o b l e m c o m e s u i y o u w a n t t h c o m p u t e rt o p r i n t o u v a r i a b l e w h o s e v a l u e i s f o i n s t a n c e , 4 5 6 1 2 8 0 0 0 0 0( 1 d i g i t s ) . T h c o m p u t e r p r i n t s t h i s n u m b e r a 4 . 5 6 1 2 8 E + 1 0 ,w h i c h m e a n s t h a t t h d e c i m a l p o i n t b e l o n g s 1 p l a c e s t t h r i g h to i t p r e s e n t p o s i t i o n . v a r i a b l e w h o s e v a l u e i 8 9 5 4 0 0 0 0 0 0 0 0 0i p r i n t e d a 8 . 9 5 4 E + 1 2 . T h E + 1 2 m e a n s t h a t t h e d e c i m a l p o i n tb e l o n g s 1 p l a c e s t o t h e r i g h t . V e r y s m a l l n u m b e r s a r e x p r e s s e d i t h s a m e w a y . v a r i a b l e w h o s e v a l u e i 0 . 0 0 0 0 0 0 0 6 8 3 i p r i n t e da 6 . 8 3 E — 0 8 . T h E - 0 8 m e a n s t h a t t h d e c i m a l p o i n t b e l o n g s e i g h tp l a c e s t t h l e f t . T h t a b l e b e l o w s h o u l d h e l p y o u n d e r s t a n d h o t c o n v e r t f r o m d e c i m a l t n o t a t i o n o r f r o m n o t a t i o n b a c k t

Page 69: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 69/348

5 6 H a n d s - o n B A S I C

Page 70: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 70/348

T m o v e p r o g r a m f r o m m e m o r y t d i s k e t t e , t y p eS A V E " ( n a m e o p r o g r a m ) " , 8T m o v e p r o g r a m f r o m d i s k e t t e s t o r a g e t m e m o r y , t y p eL O A D " ( n a m e o p r o g r a m ) " , 8

T c l e a r p r o g r a m f r o m d i s k e t t e s t o r a g e , t y p eO P E N 1 5 , 8 , 1 5 , " S C R A T C H 0 : ( n a m e o p r o g r a m ) "T d i s p l a y d i r e c t o r y o f p r o g r a m s , t y p eL O A D " $ " , 8L I S T

T h s i m p l e S A V E c o m m a n d d o e s n o t a l l o w y o t c o p y o v e rp r o g r a m s a l r e a d y o d i s k e t t e . T r e p l a c e a p r o g r a m o d i s k e t t e w i t ht h p r o g r a m i m e m o r y , t y p e

S A U E £ ( n a m e o p r o g r a m ) "

A l t e r n a t e l y , y o m a e r a s e ( S C R A T C H ) t h p r o g r a m a n t h e nu s s i m p l e S A V E c o m m a n d .

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

O c c a s i o n a l l y , w h e n u s i n g a O P E N s t a t e m e n t , F I L E O P E N

Page 71: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 71/348

Page 72: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 72/348

Page 73: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 73/348

Page 74: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 74/348

Page 75: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 75/348

6 H a n d s - o n B A S I C

Page 76: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 76/348

W o r k i n g w i t h P r o g r a m E x a m p l e sY o u r u l t i m a t e g o a l i t l e a r n t w r i t e a n t r o u b l e s h o o t p r o g r a m s .I t h i s c h a p t e r y o w i l l b e g i n s o m e m o d e s t p r o g r a m a s s i g n m e n t s .

4 - D I S C O V E R Y E X E R C I S E S1 T u r n o t h T s e a n t h c o m p u t e r E n t e r t h f o l l o w i n g p r o g r a m :

1 0 I N P U T1 1 I N P U T1 2 I N P U T1 3 L E D = A + B + C1 4 P R I N T1 5 E N

W h a t d y o t h i n k w i l l h a p p e n i y o r u t h i s p r o g r a m ?

R u t h p r o g r a m . W h e n t h f i r s t q u e s t i o n m a r k ( t h e I N P U T p r o m p tf o A i d i s p l a y e d , t y p e i 2 W h e n t h s e c o n d q u e s t i o n m a r k c o m e su p t y p e i 3 a n f i n a l l y , a t h l a s t q u e s t i o n m a r k , t y p e i 5 R e c o r dw h a t h a p p e n e d b e l o w .

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 6

Page 77: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 77/348

3 R u t h p r o g r a m , a n w h e n t h I N P U T p r o m p t ( ? i d i s p l a y e d ,t y p e i

2 , 3 , 5W h a t h a p p e n e d ?

C a y o i n p u t m o r e t h a n o n v a r i a b l e a t i m e i B A S I C p r o g r a m ?

4 R u t h p r o g r a m , a n w h e n t h I N P U T p r o m p t i d i s p l a y e d , t y p e

2 ,

W h a t h a p p e n e d ?

W h a t i t h c o m p u t e r w a i t i n g f o r ?

T y p e

Page 78: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 78/348

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 6

Page 79: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 79/348

F r o m t h a b o v e , y o c a i n f e r t h a t w h e n e v e r B A S I C p r o g r a mc o n t a i n s R E A D s t a t e m e n t , i m u s t a l s o c o n t a i n a n o t h e r t y p e o s t a t e m e n t . W h a t i t h a t s t a t e m e n t ?

1 1 N a m e t w d i f f e r e n t m e t h o d s ( o t h e r t h a n u s i n g L E s t a t e m e n t ) f o g e t t i n g n u m b e r s i n t o p r o g r a m . ( H i n t : S e s t e p s a n 8 .

1 2 D i s p l a y t h p r o g r a m i m e m o r y . D e l e t e t h D A T A s t a t e m e n t . T y p e1 4 D A T A 2 , 3 , 5

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

1 3 R u t h p r o g r a m a n r e c o r d t h o u t p u t .

D o e s i a p p e a r t m a k e a n d i f f e r e n c e w h e r e i t h p r o g r a m t h D A T A s t a t e m e n t a p p e a r s ?

6 H a n d s - o n B A S I C

Page 80: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 80/348

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

I t h " O U T O F D A T A " m e s s a g e a s s o c i a t e d w i t h t h R E A D s t a t em e n t o t h D A T A s t a t e m e n t ?

1 5 D e l e t e t h D A T A s t a t e m e n t i l i n e 1 4 0 f r o m t h p r o g r a m . N o e n t e r t h e f o l l o w i n g s t a t e m e n t s :

1 8 D A T A 1 8 , 21 1 D A T A 1 8 8 , 5 81 2 D A T A 5 8 , 5

D i s p l a y t h p r o g r a m i m e m o r y . W h a t h a s t a k e n p l a c e ?

1 6 I y o r u t h p r o g r a m , w h a t d y o t h i n k w i l l b d i s p l a y e d ?

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 6

Page 81: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 81/348

1 8 C l e a r t h p r o g r a m i m e m o r y . E n t e r t h f o l l o w i n g p r o g r a m :

1 8 L E A = 1 61 1 P R I N T1 2 E N

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

R u t h p r o g r a m a n r e c o r d w h a t t o o k p l a c e .

1 9 N o t y p e

l i P R I N T " A a n d i s p l a y t h p r o g r a m i m e m o r y . W h a t h a h a p p e n e d ?

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

6 H a n d s - o n B A S I C

Page 82: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 82/348

2 1 N o l e t ' s t r d i f f e r e n t w r i n k l e . T y p e

l i P R I N T " n . ; A

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

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

L _ 2 2 T h n e x t l i n e i l o n g e r t h a n t h 4 s p a c e s a v a i l a b l e o o n s c r e e n

l i n e . D n o p r e s s | R E T U R I \ f | w h e n y o c o m e t t h e d g e o t h \ s c r e e n . J u s t k e e p t y p i n g . T y p e

9 R E T H I S I P R O G R A M T D E M O N S T R A T E R E A D . - D A T A

D i s p l a y t h p r o g r a m . W h a t h a h a p p e n e d ? {

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 6

Page 83: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 83/348

2 3 C l e a r t h p r o g r a m i m e m o r y . E n t e r t h f o l l o w i n g p r o g r a m :

1 0 R E M E T R I C C O N U E R S I O N P R O G R A M1 1 R E C O H U E R T L B T G R A M S1 2 P R I N T " I N P U T N O O L B S . " ;1 3 I N P U T1 4 L E G = 4 5 4 * P1 5 P R I N T P . ; 1 1 P O U N D S I " . G " G R A M S "1 6 G O T O 1 2 1 7 E N

D i s p l a y t h p r o g r a m a n v e r i f y i i c o r r e c t . S t u d y t h p r o g r a mc a r e f u l l y a n t r t g u e s s w h a t w i l l h a p p e n w h e n i i e x e c u t e d .N o r u t h p r o g r a m . W h e n t h I N P U T p r o m p t a p p e a r s , e n t e r a n n u m b e r y o d e s i r e . N o t e w h a t i d i s p l a y e d . R e p e a t t h i s p r o c e s ss e v e r a l t i m e s , t h e n j u m p t h c o m p u t e r o u o f t h e I N P U T l o o p . I y o h a v e f o r g o t t e n h o w , s e C h a p t e r 2 s t e p 2 o t h D i s c o v e r yE x e r c i s e s .W h a t i t h p u r p o s e o t h R E s t a t e m e n t ?

2 4 T y p e

Page 84: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 84/348

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 7

Page 85: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 85/348

2 7 T y p e1 1 P R I N T A

N o t e t h a t a l y o d i i n s e r t c o m m a a f t e r t h i l i n e 1 1 0 .E x e c u t e t h p r o g r a m . A r t h n u m b e r s i t h l a s t t w c o l u m n sa l i g n e d ?

2 8 N o r e p l a c e t h c o m m a a f t e r w i t h s e m i c o l o n b t y p i n g1 1 P R I N T A

R u t h p r o g r a m a n d r e c o r d w h a t h a p p e n e d .

2 9 I v a r i a b l e i P R I N T s t a t e m e n t i n o f o l l o w e d b p u n c t u a t i o nm a r k s , h o d o e s t h c o m p u t e r s p a c e t h o u t p u t ? ( H i n t : S e s t e p2 6 . )

S u p p o s e t h e v a r i a b l e i f o l l o w e d b c o m m a ?

Page 86: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 86/348

Page 87: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 87/348

Page 88: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 88/348

Page 89: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 89/348

Page 90: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 90/348

I n p u t , O u t p u t a n S i m p l e A p p l i c a t i o n s 7

1 8 P R I N T

Page 91: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 91/348

t p r o d u c e v e r t i c a l s p a c i n g i t h o u t p u t . T h c o m p u t e r l o o k sf o r t h e q u a n t i t y t b p r i n t e d a n f i n d s n o n e . I t h e n l o o k s f o p u n c t u a t i o n , a n f i n d i n g n o n e , o r d e r s c a r r i a g e r e t u r n a n a d v a n c e st h c u r s o r o n l i n e . I y o w a n t t w o t h r e e e m p t y l i n e s i p r i n t o u t , u s t w o t h r e e e m p t y P R I N T s t a t e m e n t s .

U s i n g t h R E S t a t e m e n tT h R E ( f o r " r e m a r k " ) s t a t e m e n t i q u i t e d i f f e r e n t f r o m t h s t a t em e n t s y o h a v e s e e n p r e v i o u s l y . A s o o n a t h c o m p u t e r s e n s e s t h ec h a r a c t e r s R E f o l l o w i n g t h l i n e n u m b e r , i i g n o r e s t h b a l a n c eo t h s t a t e m e n t a n g o e s o t t h n e x t l i n e . T h R E s t a t e m e n tp r o v i d e s i n f o r m a t i o n f o r t h e b e n e f i t o f t h e p r o g r a m m e r o s o m e o n er e a d i n g t h p r o g r a m . R E s t a t e m e n t s m a k e i m u c h e a s i e r t f o l o w h a t i t a k i n g p l a c e i t h p r o g r a m . T h w i s e p r o g r a m m e r u s e sR E s t a t e m e n t s l i b e r a l l y .

T s e t h v a l u e o R E s t a t e m e n t s , r e a d t h f o l l o w i n g t w p r o g r a m s . T h p r o g r a m s p r o d u c e i d e n t i c a l r e s u l t s , b u t h s e c o n dp r o g r a m u s e s R E s t a t e m e n t s t d e s c r i b e w h a t i h a p p e n i n g . Y o c a b t h j u d g e o w h i c h p r o g r a m i e a s i e r t f o l l o w .

1 W i t h o u t R E s t a t e m e n t s :

7 8 H a n d s - o n B A S I C

P u R E s t a t e m e n t s i p r o g r a m s t m a k e t h e m e a s y t o r e a d .

Page 92: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 92/348

4 - W O R K I N G W I T H P R O G R A M E X A M P L E SI l a t e r c h a p t e r s , y o w i l l s p e n d p r o g r e s s i v e l y m o r e t i m e w r i t i n ga n d e b u g g i n g p r o g r a m s . T h e x a m p l e s i t h i s c h a p t e r a r v e r ys i m p l e b u i l l u s t r a t e t h e i d e a s y o h a v e s t u d i e d . S t u d y e a c h e x a m p l ec a r e f u l l y u n t i l y o a r e c e r t a i n y o u n d e r s t a n d a l t h d e t a i l s . Y o m i g h t w a n t t e n t e r t h e p r o g r a m s i n t o t h c o m p u t e r a n d e x e c u t et h e m t o v e r i f y t h a t t h e y w o r k a i n t e n d e d .

E x a m p l e U n i t P r i c e sY o u r p r o b l e m i t w r i t e p r o g r a m t c o m p u t e u n i t p r i c e s o s u p e r m a r k e t i t e m s . L e s t a n d f o t h t o t a l p r i c e , f o t h n u m b e ro i t e m s , a n f o r t h e u n i t p r i c e . Y o c a c o m p u t e t h u n i t p r i c ea f o l l o w s :

T /

A a e x a m p l e , s u p p o s e t h a t c a s e o 1 l a r g e c a n s o f r u i t j u i c ec o s t s $ 6 . 9 6 . T h u n i t c o s t p e c a w o u l d b

6 . 9 6 / 1 2 $ 0 . 5 8

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 7

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

Page 93: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 93/348

b e l o w t h s t a t e m e n t s w i l l b t h l i n e n u m b e r s i t h p r o g r a m . I l i n e 1 0 y o u w a n t t h c o m p u t e r t t y p e o u t t h m e s s a g e i n d i c a t e d .U s t h P R I N T c o m m a n d f o t h i s p u r p o s e .

1 8 P R I N T " W H A T I T H T O T A L P R I C E " '

N o t e t h s e m i c o l o n o u t s i d e t h e c l o s i n g q u o t a t i o n m a r k s . I i t h e r es t h a t t h e r e w i l l b n c a r r i a g e r e t u r n . I n s t e a d t h I N P U T p r o m p tw i l l a p p e a r a t h e n o t h p r i n t e d l i n e . L i n e 2 0 s h o u l d b a I N P U T s t a t e m e n t t c a l l f o r t h e i n p u t o f T .

2 0 I N P U T

T h m e s s a g e i l i n e 3 0 r e q u i r e s P R I N T s t a t e m e n t .

3 0 P R I N T " W H A T I T H N U M B E R O I T E M S "

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

4 0 0 I N P U T

T h u n i t p r i c e i c o m p u t e d i l i n e 5 0 0 .

Page 94: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 94/348

I n p u t O u t p u t , a n S i m p l e A p p l i c a t i o n s 8

1 8 P R I N T " I N P U T N O O D E G R E E S

Page 95: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 95/348

2 8 8 I N P U T3 8 8 L E T C = < 5 ^ 9 > * < F 3 2 4 8 P R I N T F ; D E G R E E S I " j C j " D E G R E E S C 5 8 8 E N D

T h i s p r o g r a m i s l i g h t l y d i f f e r e n t f r o m t h o n i t h f i r s te x a m p l e . I l i n e 1 0 0 , t h e r e i n p u n c t u a t i o n f o l l o w i n g t h s t r i n g .T h u s t h I N P U T p r o m p t g e n e r a t e d b t h I N P U T s t a t e m e n t i n l i n e2 0 w i l l b p r i n t e d o t h l i n e f o l l o w i n g t h i n i t i a l s t r i n g . T h P R I N T s t a t e m e n t i l i n e 4 0 p r i n t s o u ( 1 t h v a l u e o F ( 2 s t r i n g , ( 3 t h v a l u e o C a n ( 4 s e c o n d s t r i n g . T h s e m i c o l o n si l i n e 4 0 s e o f t h v a r i a b l e s a n s t r i n g s i n t h P R I N T s t a t e m e n t s .

E x a m p l e S u a n P r o d u c t o f N u m b e r sT h f i n a l e x a m p l e i t h i s c h a p t e r i p r o g r a m t h a t c o m p u t e s t h s u a n p r o d u c t o a n y t w o n u m b e r s . A g a i n , c o n s i d e r h o y o w a n t t h o u t p u t t a p p e a r .

I N P U T A ( Y o u e n t e r v a l u e o A I N P U T B ( Y o u e n t e r v a l u e o B S U O A N I ( C o m p u t e r p r i n t s s u m )P R O D U C T O A N I ( C o m p u t e r p r i n t s p r o d u c t )( C o m p u t e r i n s e r t s b l a n k l i n e s . )I N P U T A ( Y o u e n t e r v a l u e o A

Page 96: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 96/348

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 8

1 7 P R I N T " P R O D U C T O A N I " ;

Page 97: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 97/348

1 8 P R I N T1 9 P R I N T2 0 G O T O 1 0 £ 1 E N

f i n a l n o t e o p r o g r a m m i n g : W o r k o u t h d e t a i l s o f p r o g r a m w i t h p a p e r a n p e n c i l b e f o r e y o t y p e t h p r o g r a m i n t o t h C o m m o d o r e 6 c o m p u t e r . Y o w i l l s a v e y o u r s e l f t i m e a n t r o u b l e .

4 - P R O B L E M S1 W r i t e p r o g r a m t h a t w i l l r e a d t h f o u r n u m b e r s 1 0 9 , 1 , a n

f r o m D A T A s t a t e m e n t , p u t t i n g t h n u m b e r s i A B C a n D r e s p e c t i v e l y . T h e p r o g r a m s h o u l d a d t h f i r s t t w o n u m b e r s a n dp u t h s u i S t h e n c o m p u t e t h p r o d u c t o t h l a s t t w o n u m b e r sa n p u t h r e s u l t i P F i n a l l y , t h p r o g r a m s h o u l d p r i n t t h v a l u eo a n o t h s a m e l i n e .

2 W r i t e p r o g r a m t h a t w i l l c a l l f o t h i n p u t o f o u r n u m b e r s , t h e np r i n t b a c k t h n u m b e r s i r e v e r s e o r d e r . F o e x a m p l e , i y o t y p ei 5 2 1 1 , 1 2 , t h c o m p u t e r s h o u l d t y p e b a c k 1 2 1 1 2 , 5 . T h p r o g r a m m u s t w o r k f o a n s e o f o u r n u m b e r s t h a t y o d e c i d e t t y p e i n U s o n l y f o u r l i n e s i n c l u d i n g t h E N s t a t e m e n t i y o u rp r o g r a m .

8 4 H a n d s - o n B A S I C

5 W h a t i w r o n g w i t h t h i s p r o g r a m ?

Page 98: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 98/348

1 0 L E A = 1 1 R E A D1 2 L E A = A + C / B1 3 D A T A1 4 P R I N T1 5 E N

6 E x p l a i n i y o u r o w w o r d s w h a t t h f o l l o w i n g p r o g r a m d o e s .

1 0 I N P U T A , 1 1 L E S = A + B1 2 L E T = A - B1 3 L E U = A * B1 4 P R I N T S i T i U1 5 E N

7 O n o t h r a t i o s u s e d t j u d g e t h h e a l t h o a b u s i n e s s i t h a c i d -t e s t r a t i o . T f i g u r e t h a c i d - t e s t r a t i o , d i v i d e t h s u o c a s h ,m a r k e t a b l e s e c u r i t i e s , a n r e c e i v a b l e s b c u r r e n t l i a b i l i t i e s . W r i t e

p r o g r a m t c a l l f o t h i n p u t o t h n e c e s s a r y q u a n t i t i e s , t h e nc o m p u t e a n o u t p u t t h a c i d - t e s t r a t i o .

8 W r i t e p r o g r a m t c o u n t a n p r i n t o u b f i v e s , b e g i n n i n g w i t h z e r o .

I n p u t , O u t p u t , a n S i m p l e A p p l i c a t i o n s 8

w h e r e i t h e d i s t a n c e f a l l e n ( i n f e e t ) a n i t h t i m e o f a l l i

Page 99: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 99/348

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

T I M E O F A L L S E ( Y o u e n t e r T O B J E C T F A L L S ( C o m p u t e r t y p e s o u S F E E T

1 1 T h v o l u m e o b o i c o m p u t e d a

L W w h e r e L W a r e t h e l e n g t h , w i d t h , a n h e i g h t , r e s p e c t i v e l y . I t h e s e a r e a l m e a s u r e d i c e n t i m e t e r s , f o r e x a m p l e , t h v o l u m e w i l lb i c u b i c c e n t i m e t e r s . T h o b j e c t i t w r i t e p r o g r a m t h a t w i l lp r o d u c e t h f o l l o w i n g o u t p u t w h e n e x e c u t e d :

L E N G T H < C M > ( Y o u e n t e r L W I D T H C ( Y o u e n t e r W H E I G H T < C M ) ( Y o u e n t e r H U O L U M E I ( C o m p u t e r t y p e s o u V C U B I C C M

T h p r o g r a m b e l o w i i n c o r r e c t a n w i l l n o p r o d u c e t h o u t p u tc a l l e d f o a b o v e . W h a t i w r o n g ?

1 9 P R I N T " L E N G T H ( C I 1 ) " ; L1 1 P R I N T " W I D T H < C M > " ; W

8 6 H a n d s - o n B A S I C

1 3 S u p p o s e t h o d o m e t e r o y o u r c a r e a d s R m i l e s w h e n t h g a t a n ki f u l l . Y o d r i v e u n t i l t h o d o m e t e r r e a d i n g i R 2 a w h i c h p o i n t

Page 100: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 100/348

g a l l o n s o g a s o l i n e a r r e q u i r e d t f i l l t h e t a n k . M i l e s p e r g a l l o na r e x p r e s s e d b

( R 2 - R i ) / G

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

R i ?

2 1 4 2 3 2 1 4 9 30 5 2 7 0 0 5 5 0 4 1 6 5 2 1 4 6 5 5 5 9 1 1 . 5

1 4 S u p p o s e y o a r w r i t i n g p r o g r a m t o p r i n t o u n u m b e r s o n f o r m .A s s u m e t h e r e a r e t h r e e n u m b e r s t b h a n d l e d , a n t h e y a r i D A T A s t a t e m e n t . W r i t e p r o g r a m t h a t w i l l p r i n t t h f i r s t n u m b e rb e g i n n i n g 2 p o s i t i o n s i f r o m t h l e f t o f t h e o u t p u t d e v i c e . F o l l o wt h i s w i t h t w b l a n k l i n e s . P r i n t t h s e c o n d n u m b e r b e g i n n i n g a p o s i t i o n 1 0 T h e n p r i n t b l a n k l i n e , f o l l o w e d b t h t h i r d n u m b e rb e g i n n i n g a p o s i t i o n 1 5 . P u a n n u m b e r s y o u w i s h i t h D A T A

I n p u t O u t p u t , a n S i m p l e A p p l i c a t i o n s 8

1 7 I c o m p o u n d i n t e r e s t i p a i d , t h e t r u e a n n u a l i n t e r e s t r a t e i h i g h e rt h a n t h n o m i n a l r a t e q u o t e d f o t h i n v e s t m e n t . T h f o l l o w i n g

Page 101: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 101/348

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

( ( l + R / ( 1 0 0 * M ) ) T M - l ) * 1 0 0

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

Q U O T E D I N T E R E S T R A T E ( P E R C E N T )( Y o u e n t e r r a t e )

N U M B E R O T I M E S C O M P O U N D E D P E Y E A R( Y o u e n t e r t i m e s )

T R U E A N N U A L I N T E R E S T R A T E I ( C o m p u t e r t y p e s o u a n s w e r )

1 8 S i m p l e i n t e r e s t o a i n v e s t m e n t i c o m p u t e d a c c o r d i n g t t h f o l o w i n g r u l e :

( P ) ( R / 1 0 0 ) ( T / 3 6 5 )w h e r e i t h p r i n c i p a l i n v e s t e d a a a n n u a l i n t e r e s t r a t e( e x p r e s s e d i p e r c e n t ) f o t i m e ( e x p r e s s e d i d a y s ) . W r i t ep r o g r a m t h a t w i l l g e n e r a t e t h d i s p l a y s h o w n b e l o w

8 H a n d s - o n B A S I C

1 9 I a a m o u n t o m o n e y i l e f t t a c c u m u l a t e i n t e r e s t a r a t e o fp e r c e n t p e y e a r f o y e a r s , t h m o n e y w i l l g r o w t t o t a l a m o u n t

Page 102: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 102/348

g i v e n b

P * ( l + I / 1 0 0 ) f NA a e x a m p l e , i $ 1 0 0 0 , p e r c e n t , a n y e a r s ,

1 0 0 0 * ( l + 6 / 1 0 0 ) ! 5 1 3 3 8 . 2 3

W r i t e p r o g r a m t h a t w h e n e x e c u t e d w i l l p r o d u c e t h f o l l o w i n go u t p u t :

I N I T I A L I N V E S T M E N T ( Y o u e n t e r P A N N U A L I N T E R E S T R A T E < m s m > ? ( Y o u e n t e r I Y E A R S L E F T T A C C R U E I N T E R E S T ( Y o u e n t e r N T O T A L U A L U E I ( C o m p u t e r t y p e s o u T

2 0 I a a m o u n t o m o n e y i l e f t t a c c u m u l a t e i n t e r e s t a p e r c e n tc o m p o u n d e d t i m e s p e r y e a r f o y e a r s , t h v a l u e o t h i n v e s t m e n tw i l l b

P * ( l + I / ( 1 0 0 * J ) ) t ( J * N )

W r i t e p r o g r a m t h a t w i l l c a l l f o t h i n p u t o P I J a n N E x e c u t e

I n p u t O u t p u t a n S i m p l e A p p l i c a t i o n s 8

4 - P R A C T I C E T E S T

Page 103: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 103/348

1 W h a t w i l l b o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?

1 8 L E X = 1 1 P R I N T X 1 2 L E T X = X + 11 3 G O T O 1 1 1 4 E N

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

3 I P R I N T s t a t e m e n t , w h a t i c o l l e c t i o n o c h a r a c t e r s b e t w e e nq u o t a t i o n m a r k s c a l l e d ?

4 W h a t i t h p u r p o s e o t h R E s t a t e m e n t ?

9 H a n d s - o n B A S I C

7 H o m a n y s t a n d a r d p r i n t c o l u m n s p e l i n e a r p r o v i d e d f o i B A S I C w h e n t h p r i n t q u a n t i t i e s a r s e p a r a t e d b y c o m m a s ?

Page 104: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 104/348

8 H o m a n y D A T A s t a t e m e n t s c a t h e r e b i p r o g r a m ?

9 W h a t i t h p u r p o s e o f t h e T A f u n c t i o n i B A S I C ?

1 0 W h a t w i l l t h o u t p u t l o o k l i k e i t h f o l l o w i n g p r o g r a m i e x e c u t e d ?

1 0 L E A = 1 1 L E B = 1 2 P R I N T A , 1 3 P R I N T A ; 1 4 E N

Page 105: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 105/348

' Q

Page 106: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 106/348

Page 107: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 107/348

9 4 H a n d s - o n B A S I C

5 - D I S C O V E R Y E X E R C I S E S

Page 108: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 108/348

1 T u r n o t h T s e a n t h c o m p u t e r . E n t e r t h f o l l o w i n g p r o g r a m :1 8 L E X = 1 1 P R I N T1 2 l e : * : = x + i1 3 I X < 5 T H E N 1 1 1 4 E N

T h s y m b o l i l i n e 1 3 m e a n s " l e s s t h a n " ; t h u s , t h s t a t e m e n tm e a n s " I i l e s s t h a n 5 t h e n 1 1 0 . " S t u d y t h p r o g r a m c a r e f u l l y .W h a t d o y o u t h i n k t h c o m p u t e r w i l l p r i n t i y o r u t h p r o g r a m ?

_ _

R u t h p r o g r a m a n r e c o r d t h o u t p u t .

2 N o t y p e

i 8 L E T X = 2D i s p l a y t h p r o g r a m i m e m o r y . W h a t w i l l t h o u t p u t b n o w ?

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 9

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

Page 109: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 109/348

4 T e x p l o r e a n o t h e r i d e a r e l a t e d t t h p r o g r a m i m e m o r y , y o n e e dt m a k e s o m e c h a n g e s . E d i t t h p r o g r a m t m a k e i j u s t l i k e t h o n b e l o w o c l e a r t h p r o g r a m i m e m o r y a n e n t e r t h e o n b e l o w .

1 9 L E X = 1 1 P R I N T1 2 L E X = X + 11 3 I X > = 5 T H E N 1 4 1 3 G O T O 1 1 1 4 E N

R u t h p r o g r a m a n r e c o r d t h o u t p u t .

C o m p a r e t h o u t p u t y o r e c o r d e d a b o v e t t h o u t p u t y o r e c o r d e di s t e p 1 I t h e r e a n c o n n e c t i o n ?

Page 110: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 110/348

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 9

D i s p l a y t h p r o g r a m a n d c h e c k t h a t y o h a v e e n t e r e d i c o r r e c t l y .S t u d y t h p r o g r a m b r i e f l y . R e m e m b e r t h a t w h e n y o r u t h p r g r a m a n t h I N P U T p r o m p t a p p e a r s o t h s c r e e n , y o a r s u

Page 111: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 111/348

p o s e d t t y p e e i t h e r 1 2 o 3 W h i c h v a l u e o w i l l l e t h c o p u t e r r e a c h l i n e 1 5 i t h p r o g r a m ?

W h i c h v a l u e o r v a l u e s o f w i l l l e t h c o m p u t e r r e a c h l i n e 1 7 0 ?

H o a b o u t l i n e 1 9 0 ?

8 S u p p o s e y o w a n t e d t h c o m p u t e r t t y p e S W E A T . W h a t v a l u e o s h o u l d y o e n t e r ?

S e i y o w e r e r i g h t . R u t h p r o g r a m a n e n t e r t h n u m b e r y o w r o t e a b o v e . W h a t h a p p e n e d ?

Page 112: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 112/348

Page 113: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 113/348

Page 114: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 114/348

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 1 0

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

Page 115: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 115/348

t w i n p u t v a l u e s a n t h e n f o t h l a s t t w i n p u t v a l u e s . O b s e r v et h a t t h G O T O s t a t e m e n t i l i n e 1 4 g o e s t t h w r o n g l i n e , t h a ti s l i n e 1 0 ( w h e r e i r e s e t t z e r o e a c h t i m e ) .

1 8 D e l e t e l i n e 1 3 5 a n d E D I T l i n e 1 4 a f o l l o w s

1 4 G O T O 1 1 R u t h p r o g r a m a n t y p e i t h s a m e v a l u e s ( 3 1 , 6 , 5 1 1 1 1 1 ) . I t h o u t p u t t h s u o f t h e n u m b e r s y o i n p u t ?

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

1 9 T u r n o f t h c o m p u t e r a n t h T s e t . G o t t h d i s c u s s i o n o t h o b j e c t i v e s .

5 - D I S C U S S I O NU n d e r s t a n d i n g T r a n s f e r S t a t e m e n t sF r o m t h v e r y b e g i n n i n g o f t h e b o o k , y o h a v e b e e n u s i n g u n c o n d i

1 0 H a n d s - o n B A S I C

1 3 c a u s e s t h c o m p u t e r t j u m p b a c k t l i n e 1 1 i n s t e a d o g o i n gt 1 4 0 .

N o t e t h a t t h e r e a r e n c o n d i t i o n s a t t a c h e d t t h s t a t e m e n t i

Page 116: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 116/348

l i n e 1 3 0 . F o t h i s r e a s o n t h G O T O s t a t e m e n t i c a l l e d a n u n c o n d it i o n a l t r a n s f e r s t a t e m e n t . I t i s a l s o c l e a r t h a t i t h i s c a s e t h e G O T Os t a t e m e n t c r e a t e s l o o p f r o m w h i c h t h e r e i n e s c a p e . T h o n l yw a t o g e t t h c o m p u t e r o u o t h l o o p i t i n t e r r u p t t h p r o g r a mf r o m t h k e y b o a r d w h i l e i i r u n n i n g . ( T h e p r o g r a m w i l l e v e n t u a l l yp r o d u c e n u m b e r l a r g e r t h a n B A S I C c a h a n d l e , a n a o v e r f l o we r r o r w i l l s t o p t h p r o g r a m . )

T s u u p i a s o m e p o i n t i p r o g r a m y o u w a n t t h c o p u t e r t m a k e a u n c o n d i t i o n a l j u m p t a n o t h e r l i n e , u s e t h e G O T Os t a t e m e n t . H o w e v e r , b c a r e f u l t h a t y o d o n ' t g e t h p r o g r a m " h u n gu p i a l o o p .

G O T O i u n c o n d i t i o n a l .

S o m e t r a n s f e r s t a t e m e n t s c o n t a i n c o n d i t i o n s . B n o y o h a v e m o s t l i k e l y e s t a b l i s h e d t h e c o n n e c t i o n b e t w e e n t h I T H E Ns t a t e m e n t s y o u s a w i t h c o m p u t e r w o r k a n t h n o t i o n o t h c o n d i t i o n a l t r a n s f e r s t a t e m e n t .

I T H E N s t a t e m e n t s a r c o n d i t i o n a l .

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

Page 117: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 117/348

1 0 H a n d s - o n B A S I C

C o n d i t i o n M e a n i n gE q u a l t

Page 118: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 118/348

L e s s t h a nG r e a t e r t h a n

< L e s s t h a n o e q u a l t > G r e a t e r t h a n o r e q u a l t

N o e q u a l t

T h " s t a t e m e n t " a f t e r t h T H E N o i c o n d i t i o n a l s t a t e m e n t sn e e d n o t b e l i n e n u m b e r . F o i n s t a n c e , t h e s e s t a t e m e n t s a r p o s i b l e :

I X = T H E N E N I X > = 6 T H E N P R I N T " Y O U L O S E "

M o s t o f t e n , h o w e v e r , l i n e n u m b e r s f o l l o w T H E N . T h r e a s o n i t h a tt h a b i l i t y t b r a n c h a n y w h e r e i p r o g r a m i p o w e r f u l t o o l f o t h p r o g r a m m e r .

5 - W O R K I N G W I T H P R O G R A M E X A M P L E SU t t h i s p o i n t t h p r o g r a m s y o u h a v e s e e n h a v e h a s e r i o u s l i m i t a

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 1 0

Y o n e e d t t h i n k a b o u t s e v e r a l c h a r a c t e r i s t i c s o t h i s p a t t e r n w h e ny o w r i t e t h p r o g r a m . T h f i r s t n u m b e r i 2 a n s u c c e e d i n gn u m b e r s a r s p a c e d a c r o s s i t h s t a n d a r d s p a c i n g ( f o u r n u m b e r s

Page 119: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 119/348

t l i n e ) . E a c h n u m b e r i g r e a t e r t h a n t h p r e v i o u s o n e . T h l a s tn u m b e r p r i n t e d o u i 1 1 t h e n t h c o m p u t e r s h o u l d s t o p .

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

1 9 P R I N T 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 , 1 11 1 E N Y o m i g h t c h e c k t h i s p r o g r a m t o s e e t h a t i d o e s i n f a c t p r o d u c e t h c o r r e c t n u m b e r p a t t e r n . I a l s o i l l u s t r a t e s v e r y i m p o r t a n t c o n c e p t .T h e r e i n s u c h t h i n g a t h e c o r r e c t p r o g r a m . T h o n l y t e s t t h a t c a b a p p l i e d i " D o e s t h p r o g r a m w o r k ? " C e r t a i n l y s o m e p r o g r a m sa r c l e v e r e r o a c c o m p l i s h t h r e s u l t s m o r e e f f i c i e n t l y t h a n o t h e r s ,b u t h a t i s e p a r a t e i s s u e .

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

s i n g l e p r i n t s t a t e m e n t i r e q u i r e d . T h e r e f o r e , t h c o m p u t e r s h o u l dp r i n t o u t h v a l u e o v a r i a b l e a n c h a n g e t h a t v a l u e a i e x e c u t e st h p r o g r a m . S t a r t t h p r o g r a m w i t h t h f o l l o w i n g s e g m e n t :

1 0 L E T X = 2

1 0 H a n d s - o n B A S I C

T h p r o g r a m i f i n i s h e d w i t h a E N s t a t e m e n t .

1 4 E N

Page 120: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 120/348

T h c o m p l e t e p r o g r a m i

1 8 L E T X = 21 1 P R I N T X 1 2 L E T X = X + 11 3 I X < = 1 1 T H E N 1 1 1 4 E N

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

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

H o r s e p o w e r L i c e n s e F e 5 h o l e s s $ M o r e t h a n 5 b u 1 0 h o l e s s 3

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 1 0

C l e a r l y , t h o n l y d i f f i c u l t y i p r o g r a m m i n g t h c o m p u t e r t d e c i d ew h a t t h f e i s T h i s d e c i s i o n - m a k i n g p r o c e s s i m a d e t o r d e r f o t h I T H E N s t a t e m e n t .

Page 121: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 121/348

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

1 8 P R I N T " I N P U T A U T O H " 1 1 I N P U T

N o w , w o r k o u m e t h o d t d e c i d e i w h i c h l i c e n s e c a t e g o r yl i e s . l o g i c a l m e t h o d i t c h e c k u p w a r d f r o m t h l o h o r s e p o w e rr a t i n g s . F i r s t , t h c o m p u t e r c h e c k s w h e t h e r i 5 o l e s s . I s o t h e n t h e t a x i 0

1 2 I P < = 5 8 T H E N ( F e e i 0 T h l i n e n u m b e r f o l l o w i n g T H E N i m i s s i n g f o r a r e a s o n . I t h n u m b e r i i l e s s t h a n o e q u a l t 5 0 t h c o m p u t e r s h o u l d j u m pt s t a t e m e n t t h a t . w i l l a s s i g n t h e v a l u e t t h f e e . B u a t h i sp o i n t y o d o n ' t k n o w w h a t l i n e n u m b e r t u s f o t h i s s t a t e m e n t .C o n s e q u e n t l y , l e a v e i b l a n k a n r e t u r n l a t e r a n i n s e r t t h p r o p e rv a l u e . T h n o t e a t h r i g h t r e m i n d s y o w h a t t h f e i s u p p o s e dt b i t h a s s e r t i o n i t r u e a n t h b r a n c h i t a k e n .

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

1 0 H a n d s - o n B A S I C

1 2 I P < = 5 8 T H E N ( R i 0 1 3 I P 1 0 T H E N ( R i $ 3 0 )1 4 I P < = 2 0 0 T H E N ( R i $ 7 0 )1 5 I P < = 3 0 0 T H E N ( F e e i $ 1 5 0 )

Page 122: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 122/348

1 6 I P > 3 0 0 T H E N ( F e e i $ 5 0 0 )

N o y o c a f i l l i t h m i s s i n g l i n e n u m b e r i l i n e 1 2 0 . S i n c et h n e x t l i n e n u m b e r i t h p r o g r a m w o u l d b 1 7 0 , u s t h a t n u m b e r .

1 0 P R I N T " I N P U T A U T O H " 1 1 I N P U T1 2 I P < = 5 0 T H E N 1 7 1 3 I P 1 1 T H E N ( F e e i $ 3 0 )1 4 I P < = 2 0 0 T H E N ( F e e i $ 7 0 )1 5 I P ^ = 3 0 0 T H E N ( F e e i $ 1 5 0 )1 6 I P > 3 0 0 T H E N ( F e e i $ 5 0 0 )1 7 L E T F = 01 8 G O T O ( P R I N T s t a t e m e n t )

A g a i n , l i n e 1 8 h a m i s s i n g l i n e n u m b e r . I n c l u d e r e m i n d e rt h a t y o u w a n t t h c o m p u t e r t t r a n s f e r t P R I N T s t a t e m e n t . I t h e a s s e r t i o n i l i n e 1 2 i t r u e , t h c o m p u t e r j u m p s t l i n e 1 7 a n a s s i g n s t h v a l u e t F w h i c h s t a n d s f o r t h e f e e . Y o c a f i l l i t h m i s s i n g n u m b e r s i n l i n e s 1 3 0 , 1 4 0 , 1 5 0 , a n d 1 6 0 u s i n g t h s a m ep a t t e r n . T h r e s u l t i

Page 123: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 123/348

1 1 0 H a n d s - o n B A S I C

1 5 I P < = 3 0 @ T H E N 2 6 1 6 L E F = 5 0 01 7 P R I N T " L I C E N S E F E I " ; 1 3 P R I N T

Page 124: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 124/348

1 9 G O T O 1 0 2 0 0 L E T F = 02 1 G O T O 1 7 2 2 L E T F = 3 02 3 G O T O 1 7 2 4 L E T F = 7 02 5 G O T O 1 7 2 6 0 L E T F = 1 5 02 7 G O T O 1 7 2 8 0 E N D

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

1 0 P R I N T " I N P U T A U T O H " 1 1 I N P U T1 2 I P < = 5 0 T H E N F = 0 = G O T O 1 7 1 3 I P < = 1 0 0 T H E N F = 3 0 = G O T O 1 7 1 4 I P < = 2 0 0 T H E N F = 7 6 = G O T O 1 7 1 5 I P < = 3 8 0 T H E N F = 1 5 0 = G O T O 1 7 1 6 L E F = 5 0 0

Page 125: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 125/348

1 1 H a n d s - o n B A S I C

b e e n p r o c e s s e d a n t h a v e r a g e c a b c o m p u t e d . I t h a s s e r t i o ni f a l s e , t h e n t h n u m b e r j u s t r e a d i p a r t o f t h e d a t a a n s h o u l d b p r o c e s s e d . T h i s i d o n e a f o l l o w s :

Page 126: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 126/348

1 4 L E S 1 5 L E T N = N + 1

I l i n e 1 4 0 , t h v a l u e o ( t h e n u m b e r j u s t r e a d ) i a d d e dt t h v a l u e i S R e m e m b e r t h a t t h s u o a l t h n u m b e r s t b a v e r a g e d i b e i n g d e v e l o p e d i S I l i n e 1 5 0 , i a d d e d t t r e c o r d t h f a c t t h a t a n o t h e r n u m b e r h a b e e n p r o c e s s e d . T h e n a d

G O T O t t h R E A D s t a t e m e n t , w h i c h i n s t r u c t s t h c o m p u t e r t c h e c k t h n e x t n u m b e r i D A T A .

1 6 G O T O 1 2

N o y o c a f i l l i t h m i s s i n g n u m b e r i n l i n e 1 3 0 , s i n c e t h n e x t l i n e n u m b e r i t h p r o g r a m w o u l d n o r m a l l y b e 1 7 0 . L i n e 1 7 c o m p u t e s t h e a v e r a g e , A I t y p i c a l D A T A s t a t e m e n t i i n c l u d e d ,t h c o m p l e t e p r o g r a m i

1 8 L E T S = 81 1 L E T N = 81 2 R E A D

Page 127: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 127/348

Page 128: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 128/348

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 1 1

1 0 C o n s i d e r t h s e r i e s

1 / 1 / 1 / . .

Page 129: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 129/348

W r i t e p r o g r a m t f i n d t h e s u o f t h e f i r s t t e r m s . U s t h p r o g r a m t f i n d t h s u o f t h e f i r s t 1 0 , 1 0 0 , a n d 1 0 0 0 t e r m s . S t u d yt h r e s u l t s . W h a t d y o t h i n k t h s u w o u l d b e c o m e a t h n u m b e ro t e r m s i n c r e a s e s f o r e v e r .

1 1 S t u d y t h f o l l o w i n g p r o g r a m . C a y o d e s c r i b e w h a t t h p r o g r a md o e s ? Y o m a w i s h t u s t h t r o u b l e s h o o t i n g t e c h n i q u e s d i s c u s s e dp r e v i o u s l y .

1 8 R E A D1 1 L E L = 1 2 L E C = 1 3 R E A D1 4 L E T C = C1 5 I X < T H E N 1 7 1 6 L E T L = X1 7 I C < T H E N 1 3 1 8 P R I N T1 3 D A T A 1 2 0 D A T A 5 , 3 3 , 1 7 , 3 , 4 72 1 D A T A 2 5 , 1 6 , 4 1 , 5 1 , 72 2 0 E N D

1 1 H a n d s - o n B A S I C

1 5 I N P U T1 6 L E S = + 1 7 L E T C = C i 1 8 I C < T H E N 1 4

Page 130: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 130/348

1 9 L E A = S / N2 0 P R I N T " T H E A U E R A G E I " 2 1 0 E N D

1 3 Y o c a c o m p u t e t h d i s c o u n t e d p r i c e o f a i t e m w i t h t h e q u a t i o n

L * ( l R / 1 0 0 )

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

< L I S T P R I C E < $ > ? ( Y o u i n p u t p r i c e )D I S C O U N T R A T E ) ? ( Y o u i n p u t r a t e )D I S C O U N T E D P R I C E I ( C o m p u t e r d i s p l a y s p r i c e ) D O L L A R S

1 4 T h e r e i a i n t e r e s t i n g s e q u e n c e o n u m b e r s c a l l e d t h F i b o n a c c in u m b e r s . T h s e b e g i n s w i t h 0 , 1 . E a c h s u c c e e d i n g n u m b e r i t h ^

Page 131: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 131/348

1 1 H a n d s - o n B A S I C

1 8 s e o i n t e g e r s ( w h o l e n u m b e r s ) i c h o s e n a r a n d o m f r o m t h s e 1 2 3 a n p u i D A T A s t a t e m e n t . T h e n o f t h e s e i m a r k e dw i t h t h f l a g 9 9 9 9 . W r i t e B A S I C p r o g r a m t h a t w i l l c o m p u t e a n p r i n t o u t h n u m b e r o I s , 2 s , 3 s a n 4 i t h s e t . T e s t y o u r

Page 132: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 132/348

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

D A T A 3 , 1 , 2 , 1 , 4 , 4 , 1 , 2 , 2 , 2 , 3

5 - P R A C T I C E T E S T

1 W h a t w i l l b t h o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?

1 9 L E T Y = 31 1 L E X = 2 * Y1 2 P R I N T1 3 L E Y = Y + 21 4 I Y < = 1 0 T H E N 1 1 1 5 E N

D e c i s i o n s , B r a n c h i n g , a n A p p l i c a t i o n s 1 1

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

Page 133: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 133/348

# P u r c h a s e d P r i c e p e W i d g e t2 o l e s s $ 2 . 0 02 t 5 1 . 8 0

5 o m o r e 1 . 5 0

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

H O M A N Y W I D G E T S ( Y o u i n p u t p u r c h a s e q u a n t i t y )P R I C E P E W I D G E T I ( C o m p u t e r d i s p l a y s u n i t p r i c e )T O T A L C O S T O O R D E R I ( C o m p u t e r d i s p l a y s t o t a l )

Page 134: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 134/348

C H A P T E R

Page 135: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 135/348

L O O P I N GA N F U N C T I O N S

6 - O B J E C T I V E SU n d e r s t a n d i n g B u i l t - i n L o o p i n gY o h a v e a l r e a d y l e a r n e d h o t l o o p p r o g r a m s b u s i n g e i t h e r t h u n c o n d i t i o n a l o c o n d i t i o n a l t r a n s f e r s t a t e m e n t s . C o m m o d o r e 6 B A S I C h a s p e c i a l s t a t e m e n t s t h a t c a u s e a u t o m a t i c l o o p i n g . T h e s es t a t e m e n t s s i m p l i f y t h p r o g r a m m i n g t a s k a n p r o v i d e f l e x i b i l i t y i

Page 136: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 136/348

Page 137: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 137/348

1 2 H a n d s - o n B A S I C

7 N o t y p e

1 8 F O Y = 1 0 T 2 S T E P -

Page 138: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 138/348

D i s p l a y t h p r o g r a m . W h a t d o y o u t h i n k w i l l h a p p e n n o i y o r u t h p r o g r a m ?

R u t h p r o g r a m a n w r i t e d o w n w h a t h a p p e n e d .

N o t i c e t h a t t h F O N E X T l o o p i e x e c u t e d o n t i m e , s i n c e 1 i p r i n t e d o u t . Y o h a v e f a l l e n i n t o a t r a p i B A S I C . W h a t i t h p r o b l e m ?

8 S f a t h s t e p s i z e s i n y o u r s t a t e m e n t s h a v e a l l o w e d y o t r e a c h

L o o p i n g a n F u n c t i o n s 1 2

9 N o g o t s o m e m o r e c o m p l e x u s e s o F O N E X T s t a t e m e n t s .C l e a r t h p r o g r a m i m e m o r y a n e n t e r t h f o l l o w i n g p r o g r a m :

1 8 F O X = l T O1 1 F O Y = T

Page 139: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 139/348

1 2 P R I N T X , 1 3 N E X T1 4 N E X T1 5 E N

R u t h p r o g r a m a n r e c o r d t h o u t p u t .

1 0 N o t y p e

1 0 F O X = l T OR u t h i s n e p r o g r a m a n r e c o r d t h o u t p u t .

C o m p a r e t h t w n u m b e r p a t t e r n s y o h a v e j u s t o b t a i n e d . C a y o s e t h c o n n e c t i o n b e t w e e n t h p a t t e r n s a n t h l i m i t s i n t h F O N E X T s t a t e m e n t s ?

Page 140: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 140/348

L o o p i n g a n F u n c t i o n s 1 2

D o e s t h " N E X T W I T H O U T F O R " E R R O R s u g g e s t w a t a v o i dg e t t i n g i n t o t r o u b l e w h e n y o u s m o r e t h a n o n F O N E X T c o b i n a t i o n i s i n g l e p r o g r a m ?

Page 141: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 141/348

1 4 I a e a r l i e r c h a p t e r y o e x p e r i m e n t e d w i t h t h T A f u n c t i o n t g e v a r i a b l e s p a c i n g i t h e o u t p u t . N o t h a t y o h a v e t h F O N E X Ts t a t e m e n t s a y o u r d i s p o s a l , g o b a c k t t h T A f u n c t i o n ( s e e t h d i s c u s s i o n s e c t i o n i C h a p t e r 4 ) C l e a r t h p r o g r a m i m e m o r y a n e n t e r t h f o l l o w i n g p r o g r a m :

1 6 F O X = T 1 1 P R I N T T A B < X > ;1 2 F O Y = T 1 3 P R I N T " Y " ;1 4 N E X T1 5 P R I N T1 6 N E X T1 7 E N

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

Page 142: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 142/348

L o o p i n g a n F u n c t i o n s 1 2

I y o u h a d t r o u b l e u n d e r s t a n d i n g w h a t h a p p e n e d t t h n e g a t i v ev a l u e s o A d o n ' t w o r r y a t t h i s p o i n t . W w i l l r e v i e w t h i s c o m p l e t e l yl a t e r .

1 7 J u m p t h c o m p u t e r o u o t h i n p u t l o o p . T y p e

Page 143: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 143/348

1 1 L E B = S G N < A )

D i s p l a y t h p r o g r a m a n r e v i e w t h p r o g r a m s t r u c t u r e t o r e f r e s hy o u r m e m o r y a b o u t h o t h p r o g r a m w o r k s . R u t h p r o g r a m a n di n p u t t h f o l l o w i n g v a l u e s o A I e a c h c a s e , r e c o r d t h o u t p u t .

O u t p u t

1 . 4

1 2 8 . 3

- - 1 . 2

- 3 4 5 . 7

Page 144: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 144/348

Page 145: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 145/348

1 3 H a n d s - o n B A S I C

t t h l i n e n u m b e r f o l l o w i n g t h N E X T s t a t e m e n t . L o o k a o n m o r ee x a m p l e o F O N E X T s t a t e m e n t s i n a c t i o n .

1 0 L E A = 1 1 F O K = T S T E P1 2 L E A = 2 # A

Page 146: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 146/348

1 3 P R I N T A , 1 4 N E X T1 5 E N

T h e r e a r o n l y t w v a r i a b l e s ( a n X i t h i s p r o g r a m . Y o c a l i s t t h l i n e n u m b e r s i t h o r d e r t h c o m p u t e r e n c o u n t e r s t h e m a n t h c o r r e s p o n d i n g v a l u e s o f t h e v a r i a b l e s a s f o l l o w s :

L i n e N u m b e r1 0 1 1 1 2 1 3 1 4 1 1 1 2 1 3

L o o p i n g a n F u n c t i o n s 1 3

S t u d y t h s e q u e n c e o l i n e n u m b e r s a n t h c o r r e s p o n d i n gv a l u e s o a n u n t i l y o a r e c e r t a i n y o u n d e r s t a n d h o t h F O N E X T s t a t e m e n t s c o n t r o l t h e l o o p . W h e n y o r u t h p r o g r a m , l i n e1 3 w i l l p r i n t o u t

Page 147: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 147/348

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

1 8 F O R A = 2 T O 2 01 1 F O B = T

L o o p s c r o s s !2 4 N E X T2 5 0 N E X T

A n o t h e r e x a m p l e w i t h c r o s s e d l o o p s i

Page 148: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 148/348

F u n c t i o n

S Q R ( X )I N T ( X )

A c t i o n

S q u a r e r o o t

I n t e g e r p a r t

L o o p i n g a n F u n c t i o n s

o o

1 3

Page 149: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 149/348

S G N ( X ) S i g n o A B S ( X ) A b s o l u t e v a l u e o

T h f i r s t f u n c t i o n , S Q R ( X ) , i l l u s t r a t e s h o a l f u n c t i o n s i g e n e r a l o p e r a t e . i c a l l e d t h a r g u m e n t o t h f u n c t i o n . I t h i sd e f i n i t i o n b o t h e r s y o u , t h e n t h i n k o a " w h a t t h f u n c t i o n w o r k so n . ; ; I y o u s S Q R ( X ) i p r o g r a m , y o a r e i n s t r u c t i n g t h c o m p u t e r t l o o k u t h e v a l u e o X t h e n t a k e t h e s q u a r e r o o t o t h n u m b e r . F o e x a m p l e ,

S Q R ( 3 6 )S Q R ( 6 4 )S Q R ( 8 1 )S Q R ( 2 ) 1 . 4 1 4 2 1 3 5 6

a n s o o n . l i m i t a t i o n o f t h i s f u n c t i o n i p a r t i c u l a r i t h a t y o c a n ' t t a k e t h s q u a r e r o o t o n e g a t i v e n u m b e r . I y o i n s t r u c t t h c o m p u t e r t e v a l u a t e S Q R ( - 6 ) , f o e x a m p l e , i w o u l d s i g n a l a e r r o ra n s t o p .

1 3 6 H a n d s - o n B A S I C

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

I N T ( - 2 ) -

Page 150: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 150/348

I N T ( - . 9 3 ) - a n s o n N o t e c a r e f u l l y t h a t t h e I N f u n c t i o n d o e s n o r o u n d o f

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

■ T h e i n t e g e r p a r t o n u m b e r i t h f i r s t w h o l e n u m b e r l e s s t h a n t h n u m b e r .

S G N ( X ) i v e r y i n t e r e s t i n g f u n c t i o n . I ( t h e a r g u m e n t )i p o s i t i v e , S G N ( X ) i + 1 I i n e g a t i v e , S G N ( X ) i - 1 I i 0 S G N ( X ) i 0 I e f f e c t , S G N ( X ) r e t u r n s t h s i g n o X e i t h e r+ 1 , - 1 , o 0 T h e r e f o r e ,

S G N ( 4 . 5 6 8 ) + S G N ( 3 7 5 ) + S G N ( O )S G N ( - 5 . 9 3 ) - S G N ( - 4 ) -

Page 151: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 151/348

Page 152: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 152/348

L o o p i n g a n F u n c t i o n s 1 3

E x a m p l e T e m p e r a t u r e C o n v e r s i o n T a b l eI a e a r l i e r p r o g r a m y o u s e d t h r e l a t i o n

5 / 9 * ( F - 3 2 )

t c o n v e r t d e g r e e s F a h r e n h e i t t d e g r e e s C e l s i u s . N o l e t ' s g e n e r a t e

Page 153: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 153/348

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

1 2

1 0 ( e t c . )

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

- 6 . 6 6 6 6 6 6 6 6 7

3 7 . 7 7 7 7 7

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

1 9 P R I N T " D E G R E E S F " D E G R E E S C 1 1 P R I N T

T 4 H a n d s - o n B A S I C

1 3 L E C = 5 * < F - 3 2 > / 91 4 P R I N T F , 1 5 N E X T1 6 E N

Page 154: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 154/348

E x a m p l e E x a c t D i v i s i o nT h p r o b l e m i t w r i t e p r o g r a m t h a t w i l l c o m p u t e a l t h i n t e g e r s( w h o l e n u m b e r s ) t h a t d i v i d e e x a c t l y i n t o a n o t h e r i n t e g e r . F o r e xa m p l e , i i t h t e s t i n t e g e r , y o w a n t t f i n d a l t h i n t e g e r s t h a tw i l l d i v i d e e x a c t l y i n t o w i t h n r e m a i n d e r . T h r u l e t o u s i

I N / I N T ( N / X ) t h e n t h e r e i n r e m a i n d e rI N / < I N T ( N / X ) t h e n t h e r e i r e m a i n d e r

N o w r i t e p r o g r a m t p r o d u c e t h f o l l o w i n g o u t p u t w h e ne x e c u t e d :

I N P U T P O S I T I V E N H O L E N U M B E R ? ( E n t e r n u m b e r )N U M B E R S T H A T D I U I D E E X A C T L Y A R ( C o m p u t e r d i s p l a y s f i r s t n u m b e r , s e c o n d n u m b e r , e t c . )

T h p r o g r a m b e g i n s e a s i l y .

1 0 P R I N T " I N P U T P O S I T I U E W H O L E N U M B E R " ;

L o o p i n g a n F u n c t i o n s 1 4 1

1 7 E N

T h c o m p l e t e p r o g r a m i

1 8 P R I N T " I N P U T P O S I T I V E N H O L E N U M B E R " ;1 1 I N P U T

Page 155: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 155/348

1 2 P R I N T " N U M B E R S T H A T D I U I D E " ; N ;" E X A C T L Y A R E "1 3 F O X = T 1 4 I N / < I N T < N ^ X > T H E N 1 6 1 5 P R I N T X 1 6 N E X T1 7 E N

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

E x a m p l e D e p r e c i a t i o n S c h e d u l eW h e n c o m p a n y i n v e s t s i n e q u i p m e n t , t h i n v e s t m e n t i d e p r e c i a t e do v e r n u m b e r o y e a r s f o t a p u r p o s e s . T h i s m e a n s t h a t t h v a l u eo t h e q u i p m e n t d e c r e a s e s e a c h y e a r ( d u e t w e a r a n t e a r ) , a n t h d e c r e a s e i t a x - d e d u c t i b l e . O n o t h m e t h o d s u s e d t c o m p u t ed e p r e c i a t i o n i t h " s u m - o f - t h e - y e a r s ' - d i g i t s " s c h e d u l e . T i l l u s t r a t e ,s u p p o s e a p i e c e o e q u i p m e n t h a l i f e o f i v e y e a r s . T h s u o

Page 156: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 156/348

L o o p i n g a n F u n c t i o n s 1 4

N o c o m p u t e t h s c h e d u l e a n p r i n t i t U s t h v a r i a b l e P t k e e p t r a c k o f t h c u r r e n t a s s e t v a l u e .

2 2 6 L E T P 1 = P2 3 9 F O R 1 = T 2 4 9 L E T F = < N + 1 - I > / S

Page 157: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 157/348

2 5 0 L E T D = P * F2 6 L E P 1 = P 1 - D2 7 P R I N T I , I N T < F * 1 0 8 > ^ 1 0 0 , I N T ( D * 1 0 0 V 1 0 0 ,I N T < P 1 * 1 0 0 V 1 0 02 8 N E X T

I l i n e 2 4 0 , F i t h d e p r e c i a t i o n f r a c t i o n f o r t h I t y e a r .Y o c a c h e c k t h i s o u f o v a r i o u s v a l u e s o t e n s u r e t h a t t h ee x p r e s s i o n d o e s g e n e r a t e t h e c o r r e c t v a l u e o F I l i n e 2 5 0 , i t h d e p r e c i a t i o n . I n l i n e 2 7 0 , t h v a l u e s o f F D a n d P I a r r o u n d e dd o w n t t h n e a r e s t c e n t . t h o r o u g h d i s c u s s i o n o f a i r e r r o u n d i n gm e t h o d i g i v e n i t h f i r s t p r o g r a m e x a m p l e i t h c h a p t e r o d o - i t - y o u r s e l f f u n c t i o n s . T h o n l y t h i n g m i s s i n g n o i t h E N s t a t e m e n t .

2 9 0 E N DT h c o m p l e t e p r o g r a m i

1 4 H a n d s - o n B A S I C

2 6 0 L E T P 1 = P 1 - D2 7 P R I N T I I N T < F * 1 0 0 > . . - 1 0 0 , I N T < D * 1 0 0 > . - 1 0 0 ,I N T < P 1 * : 1 0 0 } , - - 1 0 02 8 N E X T2 9 E N

Page 158: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 158/348

T r t h p r o g r a m w i t h d i f f e r e n t i n p u t s . O c o u r s e , y o c a u s t h i s t s e u s c h e d u l e s f o y o u r t a r e t u r n s . I m p r e s s t h I n t e r n a l R e v e n u e S e r v i c e w i t h y o u r c o m p u t e r - g e n e r a t e d d e p r e c i a t i o ns c h e d u l e s !

6 - P R O B L E M S1 W r i t e p r o g r a m t g e n e r a t e t a b l e o n u m b e r s a n t h e i r s q u a r e

r o o t s . T h t a b l e s h o u l d l o o k l i k e t h o n b e l o w :

2 2 2

S 8 R < N >. 4 1 4 2 1 4 3 5 6. 4 8 3 2 3 9 7. 5 4 9 1 9 3 3

( e t c . )

2 W r i t e p r o g r a m t c o u n t f r o m t 5 0 b 1 0 ' s a n p r i n t o u t h r e s u l t s .

3 W r i t e p r o g r a m t a c c e p t t h i n p u t o n u m b e r N t h e n p r i n t o u

L o o p i n g a n F u n c t i o n s 1 4

6 S t u d y t h f o l l o w i n g p r o g r a m . W h a t w i l l b t h o u t p u t ?

1 9 F O 1 = T 1 1 R E A D1 2 L E B = I N T < A > - S G N < A ) * 21 3 P R I N T

Page 159: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 159/348

1 4 N E X T1 5 D A T A 2 , 2 , - 3 , 1 0 , 0 , - 1 . 51 6 E N

7 W h a t w i l l t h c o m p u t e r p r i n t i y o r u t h f o l l o w i n g p r o g r a m ?

1 0 F O X = T 1 1 1 L E Y = 2 * X1 2 F O Z = T 1 3 L E T U = Z1 4 F O U = T 1 5 P R I N T U + 1 6 N E X T1 7 N E X T1 8 N E X T1 9 E N

8 T h f o l l o w i n g p r o g r a m w o n ' t w o r k . W h a t ' s w r o n g ?

Page 160: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 160/348

Page 161: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 161/348

1 4 H a n d s - o n B A S I C

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

Page 162: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 162/348

1 8 A s s u m e t h a t t h f o l l o w i n g D A T A s t a t e m e n t s g i v e t h e p e r f o r m a n c eo f t h e s t u d e n t s i a E n g l i s h c l a s s o t h r e e e x a m i n a t i o n s :

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

L i n e 1 9 g i v e s t h n u m b e r o s t u d e n t s i t h c l a s s . E a c h o f t h e D A T As t a t e m e n t s t h a t f o l l o w g i v e s t h e p e r f o r m a n c e o f s i n g l e s t u d e n t . T h i n f o r m a t i o n i s t u d e n t I n u m b e r , g r a d e 1 g r a d e 2 a n g r a d e 3 T h u s , a s h o w n i l i n e 2 0 2 , s t u d e n t r e c e i v e d e x a m i n a t i o n g r a d e so 1 0 0 , 8 2 a n 8 1 W r i t e p r o g r a m u s i n g t h e s e D A T A s t a t e m e n t st c o m p u t e a n d p r i n t o u e a c h s t u d e n t ' s I n u m b e r a n c o u r s eg r a d e . A s s u m e t h a t t h f i r s t t w e x a m i n a t i o n g r a d e s a r w e i g h t e d 2

L o o p i n g a n f u n c t i o n s T 4

2 W h a t w i l l b p r i n t e d i t h y o r u t h f o l l o w i n g p r o g r a m ?1 0 F O A = T 1 1 F O B = T 1 2 P R I N T A * B ;1 3 N E X T1 4 N E X T

Page 163: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 163/348

1 5 E N

3 F i l l i t h b l a n k s .

a S Q R ( 3 6 )b I N T ( 7 . 1 3 )c A B S ( - 2 2 . 8 )d S G N ( - 1 . 3 )

4 W h a t ( i a n y t h i n g ) i w r o n g w i t h t h f o l l o w i n g p r o g r a m ?

1 0 F O 1 = T 1 1 F O J = T 1 2 P R I N T I 1 3 N E X T1 4 N E X T

1 5 H a n d s - o n B A S I C

M I L E S K I L O M E T E R S1 1 6 . 0 92 3 2 . 1 33 e t c .

Page 164: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 164/348

1 0 1 6 0 . 9

6 T w D A T A s t a t e m e n t s c o n t a i n t h f o l l o w i n g n u m e r i c a l i n f o r m a t i o n .

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

L i n e 1 0 g i v e s t h n u m b e r o n u m b e r s t b p r o c e s s e d i t h r e s to t h D A T A s t a t e m e n t s . W r i t e p r o g r a m u s i n g t h e s e s t a t e m e n t s t c o m p u t e t h a v e r a g e o t h n u m b e r s e x c l u d i n g t h o n i l i n e 1 0 0 .

Page 165: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 165/348

1 5 H a n d s - o n B A S I C

7 - D I S C O V E R Y E X E R C I S E S

S i n c e y o w i l l w o r k w i t h c o l l e c t i o n s o n u m b e r s , y o n e e d t a d t w i m p o r t a n t w o r d s t y o u r c o m p u t e r v o c a b u l a r y . A l t h o u g hy o c o u l d u s t h w o r d c o l l e c t i o n t o d e s c r i b e a g r o u p o n u m b e r s ,t w o t h e r w o r d s , m a t r i x a n a r r a y a r m o r e c o m m o n l y u s e d . I t h i sb o o k , t h e y b o t h m e a n t h s a m e t h i n g : " c o l l e c t i o n o f n u m b e r s . "

Page 166: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 166/348

W h e n y o w o r k w i t h a r r a y s , y o n e e d t b a b l e t d i s t i n g u i s ho n n u m b e r i t h a r r a y f r o m t h o t h e r n u m b e r s . S u b s c r i p t s h e l py o d i s t i n g u i s h t h n u m b e r s i a a r r a y o m a t r i x .

M A T R I X a n A R R A Y m e a n c o l l e c t i o n s o n u m b e r s .

T s e h o t h i s w o r k s , l o o k a t h a r r a y g i v e n b e l o w .

Y i = 9Y 1

Y

Y 1

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 5

N o l o o k a m o r e c o m p l i c a t e d e x a m p l e :Z l t l Z l f 2 Z i | 3

Z 2 t \ Z 2 , 2 = = ^ 2 , 3I t h i s e x a m p l e , t h e r e a r e s i e l e m e n t s i t h a r r a y Z H o w e v e r , t h i sa r r a y i t w o - d i m e n s i o n a l , s i n c e y o m u s t s p e c i f y a e l e m e n t i t h

Page 167: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 167/348

a r r a y b o t h b y r o w a n b c o l u m n . T h f i r s t s u b s c r i p t g i v e s t h e r o n u m b e r ; t h s e c o n d , t h c o l u m n . Z ( 2 , l ) i r e a d a " s u t w o n e "a n m e a n s t h e l e m e n t o a t h s e c o n d r o a n f i r s t c o l u m n .L i k e w i s e , t h e e l e m e n t a r o 1 c o l u m n w o u l d b i d e n t i f i e d a Z ( l , 3 ) ( " s u o n t h r e e " ) .

I s u m m a r y , y o u w i l l w o r k w i t h t w k i n d s o m a t r i c e s o ra r r a y s . Y o n e e d o n l y o n s u b s c r i p t t l o c a t e a e l e m e n t i o n e -d i m e n s i o n a l a r r a y , b u t w s u b s c r i p t s ( r o n u m b e r a n c o l u m nn u m b e r ) t l o c a t e a e l e m e n t i t w o - d i m e n s i o n a l a r r a y .

1 T u r n o t h T s e a n t h c o m p u t e r . E n t e r t h f o l l o w i n g p r o g r a m :

1 8 L E X < 1 > = 2 11 1 L E X < 2 ) = 1 31 2 L E X < 3 > = 1 61 3 L E X < 4 > = 81 4 L E X < 5 ) = 1 11 5 P R I N T X < 1 )

Page 168: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 168/348

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 5

7 C l e a r o u t t h p r o g r a m i m e m o r y . E n t e r t h f o l l o w i n g p r o g r a m :

1 6 L E Y < 1 , 1 > = 21 1 L E Y < 1 , 2 > = 51 2 L E Y < 1 , 3 > = 11 3 L E Y < 2 , 1 ) = 1 4 L E Y < 2 , 2 > = 4

Page 169: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 169/348

1 5 L E Y < 2 , 3 > = 31 6 P R I N T Y < 1 , 3 )1 7 E N

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

2

D i s p l a y t h p r o g r a m a n d m a k e s u r e y o h a v e e n t e r e d i c o r r e c t l y .W h a t d o y o u t h i n k t h i s p r o g r a m d o e s ?

R u t h p r o g r a m a n r e c o r d w h a t a p p e a r e d o t h s c r e e n .

Page 170: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 170/348

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 5

1 1 N o t y p e

1 6 F O J = T 1 6 L E S = S + Y < I , J >1 6 N E X T1 7 N E X T1 7 P R I N T

Page 171: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 171/348

1 8 E N D i s p l a y t h p r o g r a m a n t h i n k a m i n u t e a b o u t i t I p a r t i c u l a r ,c o m p a r e w h a t y o s e n o t w h a t w a s g o i n g o i s t e p s a n 1 0 W h a t d o e s t h i s p r o g r a m d o

R u t h p r o g r a m a n r e c o r d w h a t w a t y p e d o u t .

1 2 C l e a r t h p r o g r a m i m e m o r y . T y p e t h f o l l o w i n g p r o g r a m :

1 0 D I X 1 2 ) , Y < 1 2 )1 1 F O 1 = T 1 1 2 R E A D H < ) Y < I >1 3 N E X T

Page 172: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 172/348

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 5

1 5 T y p e1 0 D I X < 9 > , Y < 9 >1 1 F O 1 = T

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

Page 173: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 173/348

T r i a n s e i y o w e r e c o r r e c t .1 6 T y p e

1 0 W i l l t h p r o g r a m w o r k n o t h a t t h D I s t a t e m e n t h a b e e n t a k e no u t ?

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

C o m p a r e t h r e s u l t s o f s t e p 1 w i t h t h o s e o s t e p 1 6 S o m e t i m e st h D I s t a t e m e n t m u s t b p r e s e n t a n o t h e r t i m e s i n e e d n o b e

1 6 0 H a n d s - o n B A S I C

2 3 D A T A 1 , 3 , 12 4 D A T A 4 , 2 , 52 5 9 D A T A 1 , 4 , 22 6 D A T A 3 , 2 , 52 7 0 E N D

M a k e s u r e t h a t y o h a v e e n t e r e d t h p r o g r a m c o r r e c t l y , t h e n t a k ef e m i n u t e s t s t u d y i t C a y o s e w h a t w i l l b p r i n t e d o u i

Page 174: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 174/348

y o r u t h p r o g r a m ?

R u t h p r o g r a m a n r e c o r d t h o u t p u t .

C o m p a r e w h a t w a s p r i n t e d o u t t h n u m b e r s i t h D A T A s t a t em e n t s i t h p r o g r a m .

1 8 C l e a r t h p r o g r a m i m e m o r y a n e n t e r t h f o l l o w i n g p r o g r a m :1 0 1 1 1 2 1 3 1 4 1 5

D I A F O I N P U TN E X TP R I N TP R I N T

2

A

2 T I > , A < I , 2 >

\ X f o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 6

C o m p a r e t h o u t p u t t t h n u m b e r s y o t y p e d i n 1 9 C l e a r t h p r o g r a m i m e m o r y . T h e n e n t e r t h f o l l o w i n g p r o g r a m :

1 9 D I X < 3 , 3 >1 1 F O 1 = T 1 2 F O J = T 1 3 R E A D X < I , J >

Page 175: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 175/348

1 4 N E X T1 5 N E X T1 6 P R I N T1 7 P R I N T1 8 F O 1 = T 1 9 F O J = l T O2 0 P R I N T X < I , J > 2 1 N E X T2 2 P R I N T2 3 N E X T2 4 D A T A Z , 1 , 32 5 D A T A 4 , ? , 52 6 D A T A 1 , 2 , 62 ? E N

R u t h p r o g r a m . W h a t h a p p e n e d ?

1 6 H a n d s - o n B A S I C

t h a t i n v o l v e d o n l y f o u r n u m b e r s , y o w o u l d h a v e n d i f f i c u l t y n a i n t h e m . Y o m i g h t c a l l t h n u m b e r s X Y U a n V B u t s u p p o s ey o n e e d e d t w o r k w i t h 1 0 n u m b e r s ? F o t h i s r e a s o n , i i o f t e nv e r y u s e f u l t h a v e s u b s c r i p t e d n u m b e r s . F o r t u n a t e l y , B A S I C m a k e sp r o v i s i o n s f o r s u b s c r i p t s w i t h w h i c h t n a m e e l e m e n t s .

C o n s i d e r t h f o l l o w i n g s e o n u m b e r s :

Page 176: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 176/348

1

1 1 2

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

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 6

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

t h a r r a y . F o e x a m p l e , Y ( l , 3 ) i t h e l e m e n t o l o c a t e d a r o 1 c o l u m n 3 I n t h e e x a m p l e a b o v e , t h e l e m e n t h a s t h v a l u e 1 0

g e n e r a l w a t d e n o t e a e l e m e n t i t w o - d i m e n s i o n a l a r r a y i Y ( I J ) . T h f i r s t s u b s c r i p t ( I i t h r o n u m b e r , a n t h s e c o n ds u b s c r i p t ( J i t h c o l u m n n u m b e r .

Page 177: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 177/348

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

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

Y i , 4

Y s , s

y 2 | 1T h c o m p u t e r c a i n t e r p r e t s u b s c r i p t s i t h f o r m o e x p r e s

s i o n s . T h u s , X ( M - N + 3 , S * T ) i l e g a l p r o v i d e d t h a t t h c o m p u t e r

1 6 H a n d s - o n B A S I C

i n D I s t a t e m e n t . I t w o - d i m e n s i o n a l a r r a y i u s e d , B A S I Cw i l l s a v e e n o u g h s p a c e i m e m o r y f o r a 1 0 - b y - 1 0 a r r a y i n D I s t a t e m e n t i i t h p r o g r a m . E v e n s o i i w i s e t u s d i m e n s i o ns t a t e m e n t s i a l p r o g r a m s r e g a r d l e s s o f t h e s i z e o f t h e a r r a y s .

S a v e s p a c e w i t h D I s t a t e m e n t .

Page 178: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 178/348

A e x a m p l e o D I ( f o r " d i m e n s i o n " ) s t a t e m e n t i

1 9 D I B < 5 , 2 8 > , Y c : 8 ) , Z c : 3 4 > , : K < 3 , 6 )

F o u r a r r a y s a r d i m e n s i o n e d i t h i s s t a t e m e n t . i t w o -d i m e n s i o n a l a r r a y h a v i n g r o w s a n 2 c o l u m n s . i o n e -d i m e n s i o n a l a r r a y w i t h e l e m e n t s . i o n e - d i m e n s i o n a l a r r a y w i t h3 e l e m e n t s . F i n a l l y , i t w o - d i m e n s i o n a l a r r a y w i t h r o w s a n dc o l u m n s . T h D I s t a t e m e n t m u s t p r e c e d e a n s t a t e m e n t s t h a tr e f e r t o a r r a y s . M a k e i h a b i t t m a k e t h D I s t a t e m e n t t h f i r s to n o f t h e p r o g r a m . T h a t w a y o n e e d o n l y g l a n c e a t h b e g i n n i n go f t h e p r o g r a m t o s e e t h s i z e s o f t h e a r r a y s t h a t w i l l b u s e d .

U s i n g S u b s c r i p t e d V a r i a b l e s a n F O R N E X T L o o p s .S i n c e s u b s c r i p t s l o c a t e n u m b e r s i c o l l e c t i o n , a n s i n c e o p e r a t i o n sw i t h c o l l e c t i o n s o n u m b e r s a l m o s t a l w a y s i n v o l v e r e p e t i t i o n , i i

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 6

t h v a l u e s 1 2 3 a n 4 T h p r o c e s s g o e s o u n t i l a l t h e l e m e n t so t h a r r a y h a v e b e e n s e e q u a l t 5

Y o c a u s s u b s c r i p t s i t h i s m a n n e r t h a n d l e e i t h e r o n e -o t w o - d i m e n s i o n a l a r r a y s . I m a n y a p p l i c a t i o n s , i i p r e f e r a b l e t u s F O N E X T l o o p s t c a r r y o u o p e r a t i o n s o a r r a y s .

7 - W O R K I N G W I T H P R O G R A M E X A M P L E S

Page 179: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 179/348

E x a m p l e E x a m i n a t i o n G r a d e sT i l l u s t r a t e t h c o n c e p t o o n e - d i m e n s i o n a l a r r a y , w e ' l l u s e a s e o e x a m i n a t i o n g r a d e s . T h f o l l o w i n g a r e t h e r e s u l t s o a e x a m i n a t i o ng i v e n t c l a s s o 1 s t u d e n t s :

S t u d e n t N u m b e r7 8 1 1 1 1 2 1 3 1 4 1

G r a d e 6 8 9 7 4 6 8 9 9 1 7 4 7 1 6 5 8 3 7 6 9 7 2

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

H O M A N Y S T U D E N T S ? ( Y o u t y p e i t h n u m b e r )S T U D E N T G R A D E

( Y o u t y p e f i r s t g r a d e , e t c . )

1 6 H a n d s - o n B A S I C

1 1 P R I N T " H O W M A N Y S T U D E N T S 1 1 . ;1 2 I N P U T1 3 P R I N T

G e n e r a t e t h c o l u m n h e a d s f o t h t a b l e .

1 4 P R I N T " S T U D E N T " , " G R A D E "1 5 P R I N T

Page 180: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 180/348

N o y o a r r e a d y t e n t e r t h g r a d e s . l o o p u s i n g F O N E X T s t a t e m e n t s i i d e a l t o c o n t r o l t h i n p u t o f g r a d e s .

1 6 F O 1 = T 1 7 P R I N T I 1 3 I N P U T G < 1 9 N E X T

L i n e 1 7 i n s t r u c t s t h c o m p u t e r t o p r i n t t h s t u d e n t n u m b e r . I l i n e1 8 0 , t h s t u d e n t n u m b e r ( I ) i s u s e d a a s u b s c r i p t f o t h e g r a d e . T h i sg e n e r a t e s g r a d e s i t h c o m p u t e r i t h f o r m G ( l ) , G ( 2 ) , . . , G ( N ) .

T h n e x t t a s k i t f i n d t h e a v e r a g e o f t h e g r a d e s . D t h i s w i t hp r o g r a m l i n e s t h a t s u u a l t h g r a d e s a n d i v i d e b t h n u m b e ro g r a d e s .

2 0 0 L E T S = 0

\ X f o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 6

g r a d e s , c o m p a r e a n d L w i t h e a c h g r a d e , a n m a k e a d j u s t m e n t s t a n a s r e q u i r e d .

2 7 8 L E T H = G <2 8 L E L = G < 1 >2 9 F O 1 = 2 T O3 0 I L < G < I T H E N 3 2 03 1 L E L = G < I >

Page 181: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 181/348

3 2 I H > G < I T H E N 3 4 03 3 0 L E T H = G < I >3 4 N E X T

G e n e r a t e t h r e q u i r e d p r i n t o u t w i t h t h e s e t w l i n e s .

3 5 P R I N T " H I G H E S T G R A D E I S " ; H3 6 P R I N T " L O W E S T G R A D E I S " ; L

T h E N s t a t e m e n t c o m p l e t e s t h p r o g r a m .

3 7 E N

T h c o m p l e t e p r o g r a m f o l l o w s :

1 0 D I G C 5 0 )1 1 P R I N T " H O W M A N Y S T U D E N T S " i

Page 182: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 182/348

V C f a r k i n g W i t h C o l l e c t i o n s o f N u m b e r s 1 6

S T U D E N T C O U R S E A U E R A G E( C o m p u t e r p r i n t s a v e r a g e , e t c . )

( e t c . )T E S T C L A S S A U E R A G E

( C o m p u t e r p r i n t s a v e r a g e , e t c . )

Page 183: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 183/348

( e t c . )

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

1 0 D I G < 5 , 1 0 >

T h i s s t a t e m e n t r e s e r v e s m e m o r y s p a c e f o a a r r a y w i t h r o w sa n d 1 0 c o l u m n s . T h r o n u m b e r ( R ) w i l l b t h e x a m i n a t i o nn u m b e r , a n t h c o l u m n n u m b e r ( C w i l l c o r r e s p o n d t t h s t u d e n tn u m b e r . P u t h D A T A s t a t e m e n t s n e x t , a l t h o u g h t h e y c o u l d a p p e a ra n y w h e r e i t h p r o g r a m .

1 1 D A T A 9 2 , 7 1 , 8 1 , 5 2 , 7 5 , 9 7 , 1 0 0 , 6 3 , 4 1 , 7 51 2 D A T A 8 5 , 6 3 , 7 9 , 4 9 , 7 1 , 9 1 , 9 3 , 5 8 , 5 2 , 7 11 3 D A T A 8 9 , 7 4 , 8 0 , 6 1 , 7 9 , 8 8 , 9 7 , 5 5 , 5 1 , 7 31 4 D A T A 9 6 , 6 8 , 8 4 , 5 8 , 8 0 , 9 3 , 9 5 , 6 1 , 4 7 , 7 0

1 7 H a n d s - o n B A S I C

2 1 P R I N T " S T U D E N T " , " C O U R S E A U E R A G E 1 12 2 P R I N T

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

2 3 6 F O R C = l T O 1

Page 184: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 184/348

L i n e 2 3 o p e n s l o o p i w h i c h t h c o m p u t e r w i l l e x a m i n e e a c hc o l u m n i t h e m a t r i x . F o e a c h v a l u e o C t h c o m p u t e r w i l lc a l c u l a t e t h c o l u m n a v e r a g e a n p r i n t i t

2 4 L E S = 2 5 8 F O R R = T 2 6 0 L E T S = G < R , C >2 7 N E X T2 8 P R I N T C S / 5

T h e n c l o s e t h l o o p .

2 9 N E X T

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

W f a r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 7

1 8 D I G < 5 , 1 0 >1 1 D A T A 9 2 , 7 1 , 8 1 / 5 2 , 7 5 , 9 7 , 1 0 0 , 6 3 , 4 1 , 7 51 2 D A T A 8 5 , 6 3 , 7 9 , 4 9 , 7 1 , 9 1 , 9 3 , 5 8 , 5 2 , 7 11 3 D A T A 8 9 , 7 4 , 8 0 , 6 1 , 7 9 , 8 8 , 9 7 , 5 5 , 5 1 , 7 31 4 D A T A 9 6 , 6 8 , 8 4 , 5 8 , 8 0 , 9 3 , 9 5 , 6 1 , 4 7 , 7 01 5 D A T A 8 2 , 7 2 , 8 2 , 6 3 , 7 3 , 9 2 , 9 3 , 6 8 , 5 6 , 7 41 6 F O R = T 1 7 F O C = T 1

Page 185: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 185/348

1 8 R E A D G < R , C )1 9 N E X T2 0 N E X T2 1 P R I N T " S T U D E N T " , " C O U R S E A U E R A G E 1 12 2 P R I N T2 3 0 F O R C = l T O 1 2 4 L E T S = 02 5 F O R = T 2 6 L E T S = S G ( R , C >2 7 N E X T2 8 P R I N T C S / - 52 9 N E X T3 0 P R I N T3 1 P R I N T " T E S T " , " C L A S S A U E R A G E "3 2 P R I N T3 3 F O R = T 3 4 0 L E T S = 03 5 F O C = l T O 1

Page 186: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 186/348

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 7

7 - P R O B L E M S1 W r i t e p r o g r a m u s i n g t h D A T A s t a t e m e n t s

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

T h p r o g r a m s h o u l d r e a d t h s i z e o a a r r a y f r o m t h f i r s t D A T As t a t e m e n t , t h e n r e a d t h e l e m e n t s o f t h e a r r a y f r o m t h s e c o n d D A T A

Page 187: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 187/348

s t a t e m e n t , l o a d t h e l e m e n t s i n t o a a r r a y X a n p r i n t t h a r r a y .2 W r i t e p r o g r a m t f i l l a t h r e e - b y - f o u r a r r a y w i t h I s 3 W r i t e p r o g r a m t c a l l f o r t h e i n p u t o s q u a r e N - b y - N m a t r i x

w h e r e i w h o l e n u m b e r n l a r g e r t h a n 1 0 T h e n p r o g r a m t h c o m p u t e r t c a l c u l a t e a n p r i n t t h s u o t h e n t r i e s o t h m a i nd i a g o n a l o t h a r r a y ( w h e r e t h f i r s t a n s e c o n d s u b s c r i p t s a r e t h s a m e ) .

4 W r i t e B A S I C p r o g r a m u s i n g t h R E A D c o m m a n d t r e a d 2 n u m b e r s f r o m t h D A T A s t a t e m e n t s i n t o o n e - d i m e n s i o n a l a r r a yn a m e d A I n c l u d e i y o u r p r o g r a m i n s t r u c t i o n s t s e a r c h t h a r r a ya n p r i n t t h n u m b e r o e l e m e n t s i t h a r r a y t h a t a r e g r e a t e r t h a n5 0 F i l l i t h r e q u i r e d D A T A s t a t e m e n t s w i t h a n n u m b e r s y o c h o o s e .

5 W r i t e p r o g r a m t c a l l f o r t h e i n p u t o a M - b y - N m a t r i x . A s s u m et h a t b o t h a n a r n l a r g e r t h a n 1 5 T h e n p r o g r a m t h

1 7 H a n d s - o n B A S I C

1 9 P R I N T2 8 0 E N D

7 W h a t w i l l b o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?1 0 D I Y < 6 >1 1 F O 1 = T 1 2 R E A D Y d 1 3 N E X T

Page 188: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 188/348

1 4 D A T A 2 , 1 , 3 , 1 , 2 , 11 5 L E S 1 = 01 6 L E T S 2 = 01 7 F O 1 = T 1 8 L E T S 1 = S 1 Y < I >1 9 L E T S 2 = S 2 + Y > | 2 0 N E X T2 1 0 L E T X = S 2 S 2 2 P R I N T2 3 0 E N D

8 W h a t w i l l b e o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?

1 0 D I A < 1 0 )1 1 F O 1 = T 1 1 2 R E A D A 1 3 N E X T

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 7

1 3 R E A D X < I , J >1 4 N E X T1 5 N E X T1 6 D A T A 1 , 2 , 3 , 4 , 2 , 3 , 4 , 51 7 D A T A 3 , 4 , 5 , 6 , 4 , 5 , 6 , 71 8 L E S = 1 9 F O 1 = T 2 0 0 L E T S = S + X < 1 , 5 - 12 1 N E X T

Page 189: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 189/348

2 2 P R I N T2 3 E N

1 0 W h a t w i l l b p r i n t e d i y o r u t h f o l l o w i n g p r o g r a m ?

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

D I Y < 4 ,F O R = F O C = L E Y < R ,N E X TN E X TF O R = F O C = L E Y < R ,N E X TN E X T

4 T T C > = 0

T T C ) = R * C

1 7 H a n d s - o n B A S I C

p r o g r a m t h a t w i l l c o m p u t e t h n u m b e r o I s 2 s e t c . , i t h d a t aa n t h e n p r i n t t h r e s u l t s . ( H i n t : U s t h d a t a a t h e y a r r e a d i a s u b s c r i p t t i n c r e m e n t a e l e m e n t o a a r r a y u s e d t c o u n t t h n u m b e r s . )

1 3 W h a t w i l l b p r i n t e d i y o r u t h f o l l o w i n g p r o g r a m ?1 0 D I Z < 6 , 6 >1 1 F O R = l T O

Page 190: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 190/348

1 2 F O C = T 1 3 L E Z < R , C > = 01 4 N E X T1 5 N E X T1 6 F O R = l T O S T E P1 7 F O C = T 1 8 L E Z < R , C > = 11 9 N E X T2 0 N E X T2 1 F O R = T 2 2 0 F O R C = T 2 3 P R I N T Z < R , C > ;2 4 N E X T2 5 P R I N T2 6 N E X T2 7 0 E N D

V f o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 7

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

F O R F O C P R I N TN E X TP R I N TN E X TE N

A

T T

1 5 W r i t e p r o g r a m t r e a d t h f o l l o w i n g a r r a y f r o m D A T A s t a t e m e n t s ,

Page 191: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 191/348

t h e n p r i n t t h a r r a y .

1 1

1 6 W r i t e p r o g r a m t r e a d t h f o l l o w i n g a r r a y f r o m D A T A s t a t e m e n t s ,t h e n p r i n t t h a r r a y .

"

-

3

6

1 7 W r i t e B A S I C p r o g r a m t h a t w i l l c a l l f o t h i n p u t o a M - b y - Na r r a y , t h e n c o m p u t e a n d p r i n t o u t h s u o t h e l e m e n t s i e a c h

Page 192: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 192/348

W o r k i n g W i t h C o l l e c t i o n s o N u m b e r s 1 7

3 U s e a n a r r a y i p r o g a m t i n p u t l i s t o n u m b e r s , t h e n f i n d a n p r i n t o u t h s u o t h p o s i t i v e n u m b e r s i t h l i s t . T h p r i n t o u ts h o u l d l o o k a s f o l l o w s :

H O M A N Y N U M B E R S ? ( Y o u t y p e i t h n u m b e r )W H A T A R T H N U M B E R S ? ( Y o u t y p e t h e m i n T H S U O P O S I T I U E E L E M E N T S I ( C o m p u t e rt y p e s o u t a n s w e r )

Page 193: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 193/348

4 W r i t e p r o g r a m u s i n g F O R N E X T s t a t e m e n t s t l o a d a f o u r b s i a r r a y w i t h s

5 W h a t w i l l b p r i n t e d i y o r u t h f o l l o w i n g p r o g r a m ?

1 8 D I A C 5 , 5 >1 1 1 2 1 3

F O 1 = F O J = L E A < R ,

T T C =

1 8 H a n d s - o n B A S I C

6 T h f o l l o w i n g a r r a y i n a m e d A

a W r i t e D I s t a t e m e n t f o A

Page 194: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 194/348

b W h a t i t h v a l u e o A ( 2 , 3 ) ?

c I a n 2 w h a t i A ( X , Y ) ?

d W h a t i A ( A ( 1 , 1 ) , A ( 2 , 2 ) ) ?

C H A P T E R

S T R I N G V A R I A B L E S

Page 195: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 195/348

8 - O B J E C T I V E SS o m e o t h m o s t i m p o r t a n t a p p l i c a t i o n s o c o m p u t e r s a r n o n -n u m e r i c a n d e a l w i t h c h a r a c t e r s r a t h e r t h a n n u m b e r s . S t r i n g s o c h a r a c t e r s c a b h a n d l e d a " s t r i n g v a r i a b l e s " a n a r t h s u b j e c t o ft h i s c h a p t e r . S p e c i f i c a l l y y o w i l l s t u d y t h f o l l o w i n g s t r i n g - r e l a t e dt o p i c s .

U n d e r s t a n d i n g S t r i n g I n p u t a n O u t p u t

1 8 2 H a n d s - o n B A S I C

1 0 I N P U T A 1 1 P R I N T1 2 P R I N T A 1 3 P R I N T A 1 4 E N

T h A i t h p r o g r a m i d e n t i f i e s t h v a r i a b l e a s t r i n g v a r i a b l e .R u t h p r o g r a m a n a t h i n p u t p r o m p t ( t h e q u e s t i o n m a r k ) t y p ei y o u r f u l l n a m e . W h a t h a p p e n e d ?

Page 196: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 196/348

2 N o m o d i f y t h p r o g r a m a s f o l l o w s :

1 0 I N P U T A $ , B $1 1 P R I N T1 2 P R I N T B 1 3 P R I N T A 1 4 E N

I y o e x e c u t e t h p r o g r a m a n a t h i n p u t p r o m p t t y p e t h w o r d sI N T E L L I G E N T a n C O N V E R S A T I O N s e p a r a t e d b c o m m a w h a td y o t h i n k t h c o m p u t e r w i l l p r i n t ?

S t r i n g V a r i a b l e s 1 8

R u t h p r o g r a m a n r e c o r d w h a t t o o k p l a c e .

4 A y o s e e , y o c a i n c l u d e s t r i n g s i n D A T A s t a t e m e n t s . C h a n g el i n e 1 1 a f o l l o w s :

1 1 D A T A 1 8 , " H E R B " , 2 6 , " C H A R L I E "

Page 197: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 197/348

R u t h p r o g r a m . W h a t h a p p e n e d ?

5 C h a n g e l i n e 1 1 a f o l l o w s :1 1 D A T A " 1 0 " , " H E R B " , 2 0 , C H A R L I E

D i s p l a y t h p r o g r a m . R u t h p r o g r a m . W h a t h a p p e n e d ?

" 1 0 " i s t r i n g w h i l e i l o o k i n g f o n u m b e r .

1 8 H a n d s - o n B A S I C

7 A g a i n , t h s y n t a x e r r o r i c a u s e d b c o n f l i c t i n d a t a t y p e s . D i s p l a yt h p r o g r a m a n o b s e r v e t h a t H E R B i s t r i n g , b u i n u m e r i cv a r i a b l e . C l e a r l y , y o u m u s t b c a r e f u l t h a t t h t y p e o i n f o r m a t i o ni t h D A T A s t a t e m e n t s m a t c h e s t h t y p e o f v a r i a b l e i R E A Ds t a t e m e n t s . N o o t d i f f e r e n t t o p i c . C l e a r t h m e m o r y a n e n t e r t h e f o l l o w i n g :

1 8 I N P U T C 1 1 L E T N = L E N C C S >1 2 P R I N T

Page 198: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 198/348

1 3 E N

T h n e f e a t u r e i t h i s p r o g r a m i t h f u n c t i o n L E N . I w o r k s o s t r i n g ( i n t h i s c a s e t h s t r i n g i C $ r a t h e r t h a n a n u m b e r . C a y o g u e s s w h a t t h f u n c t i o n d o e s ?

N o t i c e t h a t t h e r e s u l t o f t h e f u n c t i o n L E o p e r a t i n g o s t r i n g m u s tb n u m b e r s i n c e t h r e s u l t i a s s i g n e d t n u m e r i c v a r i a b l e , N

8 R u t h p r o g r a m a n a t h i n p u t p r o m p t t y p e i A B C D E . W h a td i t h c o m p u t e r p r i n t ?

T r i a g a i n , b u t h i s t i m e t y p e i A A R D V A R K . W h a t h a p p e n e d ?

S t r i n g V & r i a b l e s 1 8

I t h L E f u n c t i o n , d s p a c e s c o u n t a c h a r a c t e r s ?

1 0 N o e x p l o r e h o t s p e c i f y a s u b s t r i n g i g i v e n s t r i n g . T h a t i s i t h s t r i n g A $ h o c a y o s p e c i f y c h a r a c t e r s o f t h s t r i n g s t a r t i n gw i t h t h N t c h a r a c t e r i t h s t r i n g ? T h f u n c t i o n t h a t y i e l d s t h i ss u b s t r i n g i M I D $ ( A $ , N , M ) . I g i v e s c h a r a c t e r s f r o m A s t a r t i n ga t h N t c h a r a c t e r . C l e a r t h p r o g r a m i m e m o r y a n e n t e r t h

Page 199: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 199/348

o n b e l o w :

1 0 I N P U T A 1 1 P R I N T " " 1 2 I N P U T I 1 3 P R I N T " " 1 4 I N P U T1 5 P R I N T M I D $ < A $ , N , M >1 6 E N

R u t h p r o g r a m a n a t h i n p u t p r o m p t , t y p e M I S S I S S I P P I . N o t et h a t t h l e n g t h o t h i s s t r i n g i 1 1 E n t e r f o a n f o N W h a th a p p e n e d ?

Page 200: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 200/348

S t r i n g V a r i a b l e s 1 8

T e s t y o u r t h e o r y t h i s w a y : R u t h p r o g r a m a n a t h f i r s t i n p u tp r o m p t , t y p e i D U C K ; a t h s e c o n d p r o m p t , t y p e i F I S H . W h a tw a d i s p l a y e d ?

1 5 T h c o m p u t e r i a t h i n p u t p r o m p t w a i t i n g f o y o t o e n t e rs t r i n g . T h i s t i m e t y p e i H O U S E f o l l o w e d b T E L E V I S I O N . W h i c hw a d i s p l a y e d ?

Page 201: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 201/348

K e e p e x p e r i m e n t i n g w i t h w o r d s o l e t t e r s o y o u r c h o i c e u n t i l y o s e e x a c t l y w h a t t h e x p r e s s i o n A B m e a n s . O n c e y o u n d e r s t a n dt h i s , y o c a g u e s s w h a t A B $ A > B $ o A < B m e a n .

1 6 J u m p t h c o m p u t e r o u o f t h e i n p u t l o o p . C l e a r t h p r o g r a m i m e m o r y , a n g o t t h n e x t s t r i n g v a r i a b l e f u n c t i o n : C H R $ .C H R $ i f u n c t i o n t h a t c o n v e r t s a n u m b e r t a c h a r a c t e r o t h k e y b o a r d . M o s t c h a r a c t e r s o t h k e y b o a r d c o r r e s p o n d t n u m b e r .E n t e r t h f o l l o w i n g p r o g r a m :

1 8 I N P U T1 1 P R I N T C H R $ < N >1 2 G O T O 1 8 1 3 E N

1 8 H a n d s - o n B A S I C

1 8 T s e a p o r t i o n o t h A S C I I c h a r a c t e r s e t , c l e a r t h m e m o r y a n t y p e i a n r u t h f o l l o w i n g p r o g r a m . T h s y m b o l s t h a t w i l l a p p e a ro t h e s c r e e n a r o t h f e C o m m o d o r e 6 g r a p h i c s c h a r a c t e r s .

1 8 F O N = 6 5 T 1 2 1 1 P R I N T C H R $ < N > ; " 1 2 N E X T1 3 E N

Y o c a s e t h e n t i r e A S C I I c h a r a c t e r s e o p a g e s 1 3 5 - 1 3 7 o

Page 202: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 202/348

A p p e n d i x o t h C o m m o d o r e 6 U s e r ' s G u i d e . A f t e r r u n n i n g t h i sp r o g r a m , h o l d i n g d o w n t h C o m m o d o r e K e ( G = ) a t h f a l o w e rl e f t o f t h e k e y b o a r d ) a n t h e n p r e s s i n g t h e S H I F T k e c h a n g e s t h c h a r a c t e r s o t h s c r e e n . R e p e a t i n g t h i s o p e r a t i o n c h a n g e s t h s c r e e na g a i n . T h i s i a e a s y w a t o s e e t h e d i f f e r e n c e s b e t w e e n u p p e r / l o w e rc a s e m o d e a n u p p e r c a s e / g r a p h i c s m o d e .

1 9 N o o t d i f f e r e n t t o p i c . F i r s t , c l e a r t h p r o g r a m i m e m o r y .A S i t h f u n c t i o n t h a t c o n v e r t s a c h a r a c t e r t i t e q u i v a l e n t p o s it i o n n u m b e r i t h c h a r a c t e r s e u s e d b t h c o m p u t e r . T y p e i t h f o l l o w i n g p r o g r a m :

1 8 I N P U T A 1 1 L E X = A S C < A $ )1 2 P R I N T1 3 G O T O 1 8

Page 203: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 203/348

1 9 0 H a n d s - o n B A S I C

2 3 I t h p r e v i o u s c h a p t e r , w u s e d n u m e r i c a r r a y s . Y o c a a l s od e f i n e a n u s s t r i n g a r r a y s i B A S I C p r o g r a m s . T y p e t h f o l l o w i n gp r o g r a m .

1 8 D I A $ < 6 >1 1 F O 1 = T 1 2 R E A D A $ I 1 3 P R I N T A $ > 1 4 N E X T1 5 D A T A 8 , S U E , 9 , F R E D , 1 0 , A N N

Page 204: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 204/348

1 6 E N

R u t h p r o g r a m . R e c o r d w h a t w a s p r i n t e d o u t .

H e r e 8 9 a n 1 a r s t r i n g s o c h a r a c t e r s i A $ a a r r a y o s t r i n g s .T s u 8 , 9 , a n 1 n u m e r i c a l l y , a d l i n e 1 4 a s f o l l o w s :

1 4 P R I N T U A L C A $ 1 > + U A L < A $ > + U A L X A $ >

R u t h p r o g r a m . I t h s u c o r r e c t ?

S t r i n g V a r i a b l e s 1 9

8 - D I S C U S S I O NU n d e r s t a n d i n g S t r i n g I n p u t a n O u t p u tA y o a l r e a d y k n o w , s e o c h a r a c t e r s s u r r o u n d e d b q u o t a t i o nm a r k s i c a l l e d s t r i n g . T h q u o t a t i o n m a r k s a r n o p a r t o t h s t r i n g , h o w e v e r . T h n e i d e a i t h i s c h a p t e r i t h a t t h s t r i n g c a b t r e a t e d a v a r i a b l e t h s t r i n g v a r i a b l e .

T h s t r i n g v a r i a b l e i i d e n t i f i e d b a d d i n g d o l l a r s i g n ( $ t t h e n o n a m e . B A R N S , B O X $ , a n B a r s t r i n g v a r i a b l e n a m e s .

Page 205: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 205/348

T h c o m p u t e r h a n d l e s i n p u t a n o u t p u t o s t r i n g v a r i a b l e st h s a m e w a a i n p u t a n o u t p u t o n u m e r i c v a r i a b l e s . Y o c a m i n u m e r i c a n s t r i n g v a r i a b l e s i t h s a m e B A S I C s t a t e m e n t s .E x a m p l e s a r

1 9 P R I N T A $ , X , Y , Z $1 1 I N P U T M $ , N1 2 R E A D A $ , B $ , Z

Y o m u s t b c a r e f u l t h a t t h i n p u t i e i t h e r I N P U T o R E A D s t a t em e n t s m a t c h e s t h t y p e o f v a r i a b l e g i v e n . A i e x e c u t e s l i n e 1 1 a b o v e , t h c o m p u t e r e x p e c t s a s t r i n g o f c h a r a c t e r s a n n u m b e r .H o w e v e r , b a w a r e t h a t y o c a t y p e i 1 2 3 4 5 6 7 8 9 a n d , i t h c o m p u t e r e x p e c t s s t r i n g , i w i l l i d e n t i f y t h a t q u a n t i t y a s t r i n g ,n o a n u m b e r . T h r e a s o n i t h a t s t r i n g c o n s i s t s o c h a r a c t e r s ,a n t h s y m b o l s t h r o u g h a r p a r t o f t h e s t a n d a r d c h a r a c t e r

1 9 H a n d s - o n B A S I C

U s i n g S t r i n g F u n c t i o n sT h L E f u n c t i o n i u s e d t d e t e r m i n e t h l e n g t h o s t r i n g . I f f o e x a m p l e , A " H O W N O B R O W N C O W " , t h e n L E N ( A $ ) 1 7 N o t e t h a t t h s p a c e s c o u n t a c h a r a c t e r s . Y o c a a l s o h a v e " n u l l "s t r i n g . I A " ; ( t h e r e i n o t h i n g i n s i d e t h q u o t a t i o n m a r k s ) , t h e nL E N ( A $ ) 0

L E N ( A $ ) g i v e s t h n u m b e r o f c h a r a c t e r s i A $

Page 206: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 206/348

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

1 8 L E f t $ = " R 0 B E R T E L E E "1 1 P R I N T M I D $ c : A $ , 8 , 6 >1 2 E N

T h e x p r e s s i o n M I D $ ( A $ , 8 , 6 ) i d e n t i f i e s t h s u b s t r i n g o A c o n s i s ti n o s i c h a r a c t e r s s t a r t i n g a t h e i g h t h c h a r a c t e r . I t h p r o g r a mw e r e r u n , t h c h a r a c t e r s E L E E w o u l d b p r i n t e d o u t .

M I D $ ( A $ , I J g i v e s c h a r a c t e r s o s t r i n g A s t a r t i n g a c h a r a c t e r I

S t r i n g V a r i a b l e s 1 9

S i n c e t h e r e a r t w o k e y b o a r d m o d e s , e a c h n u m b e r m a r e p r e s e n tt w s c r e e n s y m b o l s .

T w s t r i n g f u n c t i o n s w o r k w i t h t h A S C I I c h a r a c t e r s e t . F i r s t ,C H R $ ( N ) r e t u r n s t h N t c h a r a c t e r f r o m t h A S C I I c h a r a c t e r s e t .F o e x a m p l e , C H R $ ( 6 5 ) A C H R $ ( 9 0 ) Z a n s f o r t h . Y o c a a l s o c o n v e r t c h a r a c t e r t i t A S C I I n u m b e r w i t h t h A S C ( A $ )f u n c t i o n . R > e x a m p l e , A S C ( " A " ) 6 a n A S C ( " Z " ) 9 0

S u p p o s e t h a t A " A I R P L A N E " . W h a t i A S C ( A $ ) ? W h e nt h l e n g t h o t h s t r i n g i g r e a t e r t h a n o n e , t h c o m p u t e r c o s i d e r s o n l y t h f i r s t c h a r a c t e r . S i n c e t h f i r s t c h a r a c t e r i A

Page 207: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 207/348

A S C ( A $ ) 6 5 T w f u n c t i o n s a r u s e d i d e a l i n g w i t h n u m b e r sa s t r i n g s o d i g i t s . S T R $ ( - 9 4 5 ) r e t u r n s a s t r i n g w h o s e c h a r a ct e r s a r m i n u s s i g n , 9 4 a n 5 T h f u n c t i o n V A r e t u r n st h n u m e r i c v a l u e o s t r i n g w h o s e c h a r a c t e r s a r d i g i t s . T h u s ,V A L ( " 1 1 2 2 3 3 4 4 5 5 6 6 ; ; ) r e t u r n s 1 . 1 2 2 3 3 4 4 6 E + 1 1 .

8 - W O R K I N G W I T H P R O G R A M E X A M P L E SE x a m p l e S t r i n g R e v e r s a lT h t a s k i t w r i t e p r o g r a m t c a l l f o t h i n p u t o s t r i n g a n t h e n p r i n t i b a c k i r e v e r s e o r d e r . F i r s t , a r r a n g e f o r t h e s t r i n g i n p u t .

1 8 I N P U T A

1 9 H a n d s - o n B A S I C

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

E x a m p l e W o r d C o u n tT h e n u m b e r o w o r d s i p h r a s e c a n b e d e t e r m i n e d f r o m t h n u m b e ro s p a c e s ( a s s u m i n g t h a t t h o n l y p u r p o s e o s p a c e i t s e p a r a t ew o r d s ) . T h f o l l o w i n g p r o g r a m p r i n t s t h n u m b e r o w o r d s i t h i n p u t s t r i n g .

A

Page 208: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 208/348

1 8 I N P U T1 1 L E S = 1 2 F O 1 = T L E N ( A $ )1 3 I M I D $ < A $ , I , 1 > < " T H E N 1 5 1 4 L E T S = S + 11 5 N E X T1 6 P R I N T " N O R D C O U N T " ; S + 11 7 E N

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

E x a m p l e R e p l a c e m e n t C o d eS u p p o s e y o w a n t p r o g r a m t e n c o d e s e n t e n c e . s i m p l e - m i n d e d

Page 209: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 209/348

1 9 H a n d s - o n B A S I C

J a c kN a m e F r e d

M a r y

Q u a r t e r

1 1 1 2

1 2 1

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

Page 210: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 210/348

p r i n t s o u t h r e s u l t .F i r s t y o d i m e n s i o n t h a r r a y .

1 8 D I U N I T S A L E S $ < 3 , 5 >T h e n y o p l a c e t h d a t a i t h p r o g r a m .

1 1 D A T A J A C K , 7 , 9 , 1 1 , 1 71 2 D A T A F R E D , 5 , 1 0 , 1 5 , 2 01 3 D A T A M A R Y , 8 , 7 , 2 1 , 1 4

N o e n t e r t h e d a t a i t h s t r i n g a r r a y U N I T S A L E S S .1 4 F O R = T 1 5 F O C = T

S t r i n g E n a b l e s 1 9

2 4 P R I N T " N S U C H S A L E S P E R S O N " ; N $2 5 G O T O 1 9

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

3 0 R E C O M P U T E U N I T S A L E S3 1 0 L E T S = 03 2 F O C = T 3 3 0 L E T S = S U A L < U N I T S A L E S $ < R , C > >3 4 N E X T3 5 P R I N T N $ ; " S O L D " ; S ; " C O M P U T E R S "

Page 211: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 211/348

3 6 E N S i n c e t h e a r r a y y o a r u s i n g i s t r i n g a r r a y , t h n u m b e r s

i t h a r r a y a r s t r i n g s . T h u s , i l i n e 3 3 0 y o u m u s t u s t h V A f u n c t i o n t c o n v e r t t h e s e s t r i n g s t n u m b e r s . O n c e y o h a v e t h t a b l e a s t r i n g a r r a y , t h e r e a r e m a n y t y p e s o q u e s t i o n s y o c a u s B A S I C p r o g r a m m i n g t a n s w e r . T h t a b l e c a n , o c o u r s e , b m u c h l a r g e r .

T h c o m p l e t e p r o g r a m f o l l o w s .

1 0 D I U N I T S A L E S $ < C 3 , 5 )1 1 D A T A J A C K , 7 , 9 , 1 1 , 1 71 2 D A T A F R E D , 5 , 1 0 , 1 5 , 2 81 3 D A T A M A R Y , 8 , 7 , 2 1 , 1 4

1 9 H a n d s - o n B A S I C

3 5 P R I N T N $ ; " S O L D n ; S ; " C O M P U T E R S "3 6 8 E N D

8 - P R O B L E M S1 W r i t e p r o g r a m t c a l l f o r t h e i n p u t o s t r i n g , t h e n p r i n t t h s t r i n g

i c o l u m n .2 W r i t e p r o g r a m t c a l l f o t h i n p u t o s t r i n g , t h e n p r i n t t h s t r i n g

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

Page 212: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 212/348

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

i t h s t r i n g i c o l u m n .5 A s f o s e n t e n c e t b i n p u t . U s t h i s s e n t e n c e t g e n e r a t e n e

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

c a s e l e t t e r s . T h e n c o n v e r t a l t h u p p e r c a s e l e t t e r s t l o w e r c a s e a n p r i n t t h s t r i n g b a c k . Y o m a n e e d t r e f e r t t h A S C I I c h a r a c t e rs e i t h C o m m o d o r e 6 U s e r ' s G u i d e , A p p e n d i x F

7 A s s u m e t h a t f i v e s e n t e n c e s a r t b e n t e r e d o n a t i m e . W r i t ep r o g r a m t c o u n t t h n u m b e r o t i m e s t h w o r d t h a p p e a r s i t h f i v e s e n t e n c e s .

8 I a t h i n p u t p r o m p t f o r t h e p r o g r a m b e l o w y o t y p e i t h s t r i n g

S t r i n g V a r i a b l e s 1 9

1 1 C h a n g e t h p r o g r a m i E x a m p l e s t h a t i d e t e r m i n e s t h u n i t s a l e sf o e a c h s a l e s p e r s o n w i t h o u t a s k i n g f o t h n a m e o t h e s a l e s p e r s o n .

1 2 C h a n g e t h p r o g r a m i E x a m p l e s t h a t i d e t e r m i n e s t h t o t a lu n i t s a l e s i t h t h i r d q u a r t e r .

8 - P R A C T I C E T E S T1 H o a r s t r i n g v a r i a b l e s i d e n t i f i e d i n B A S I C ?

Page 213: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 213/348

2 I A " K I T T Y " a n d B $ " K I T T Y C A T " , t h e n A B $ T r u e o f a l s e ?

3 I A " H O W N O B R O W N C O W " , w r i t e a f u n c t i o n t h a t w i l le x t r a c t N O B R O W N .

4 W r i t e a p r o g r a m t c a l l f o t h i n p u t o s t r i n g a n t h e n p r i n tt h s t r i n g a g a i n a n a g a i n , d e l e t i n g o n c h a r a c t e r e a c h t i m e , u n t i l

2 0 H a n d s - o n B A S I C

5 W h a t w i l l b p r i n t e d i y o r u t h f o l l o w i n g p r o g r a m ?1 0 F O N = 6 5 T O 9 01 1 F O M = 6 5 T 1 2 P R I N T C H R $ < M > ;1 3 N E X T1 4 P R I N T1 5 N E X T1 6 E N

Page 214: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 214/348

Page 215: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 215/348

2 0 H a n d s - o n B A S I C

1 8 D E F N A < X ) = 5 X X + 41 1 L E T X = 21 2 L E Y = 5 * X + 41 3 P R I N T Y , F N A < 2 >1 4 E N

R u t h p r o g r a m a n r e c o r d t h o u t p u t b e l o w .

2 E d i t l i n e 1 3 a f o l l o w s :

Page 216: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 216/348

1 3 P R I N T Y j F N A O OD i s p l a y t h p r o g r a m i m e m o r y . W h a t d o y o u t h i n k w i l l h a p p e n i w r u t h i s p r o g r a m ?

R u t h p r o g r a m . W h a t h a p p e n e d ?

3 T y p e1 1 L E T X = 5

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 0

R u t h p r o g r a m a n w r i t e d o w n t h o u t p u t .

5 N o t i c e t h a t t h e e x p r e s s i o n s a f t e r t h e q u a l s i g n s i l i n e s 1 0 0 a n d1 2 o y o u r p r o g r a m a r t h s a m e . I o n v e r s i o n o t h p r o g r a m ,y o p r i n t e d a n F N A ( X ) a n s a t h a t t h e y w e r e t h s a m e . N o f o l l o w u o t h i s i n f o r m a t i o n . C l e a r t h p r o g r a m i m e m o r y . T h e ne n t e r t h e f o l l o w i n g p r o g r a m :

1 8 D E F N A < X ) = X t 2

Page 217: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 217/348

1 1 D E F N B < X ) = 3 * X1 2 D E F N C < X > = X + 21 3 L E X = 1 4 P R I N T F N A < X > ; F N B O O j F N C < X >1 5 E N

S t u d y t h p r o g r a m c a r e f u l l y . W h a t d o y o u t h i n k t h c o m p u t e r w i l lp r i n t i y o r u t h p r o g r a m ?

N o r u t h p r o g r a m a n w r i t e d o w n w h a t h a p p e n e d .

2 0 H a n d s - o n B A S I C

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

7 T y p e

1 3 L E T X = 3

N o w h a t w i l l h a p p e n i y o r u t h p r o g r a m ?

Page 218: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 218/348

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

8 N o o t s o m e m o r e i d e a s y o c a e x p l o r e w i t h t h i s p r o g r a m .T y p e

1 3 L E X = 1 4 P R I N T F N C < X + 4 > ; F N B < 2 > ; F N A < X >

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

Page 219: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 219/348

2 0 H a n d s - o n B A S I C

1 2 T w h i c h s t a t e m e n t d o e s t h G O S U B s t a t e m e n t i l i n e 1 1 t r a n s f e rt h p r o g r a m ? ( H i n t : L o o k a t h o u t p u t i s t e p 1 1 . )

1 3 T w h i c h s t a t e m e n t d o e s t h R E T U R N s t a t e m e n t i n l i n e 2 1 t r a n s f e rt h p r o g r a m ? ( H i n t : A g a i n , e x a m i n e t h o u t p u t i n s t e p 1 1 . )

Page 220: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 220/348

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

L i n e N u m b e r1 0 1 1 2 0 2 1 1 2

W h a t H a p p e n sP r i n t sT r a n s f e r s t l i n e 2 0 P r i n t sT r a n s f e r s t l i n e 1 2 P r i n t s

Page 221: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 221/348

2 0 H a n d s - o n B A S I C

T h o r i g i n a l a r r a y i

1 Y o c a s e t h i s b c h e c k i n g t h D A T A s t a t e m e n t i l i n e 2 9 5 . I l i n e1 6 0 , t h p r o g r a m j u m p s t t h e s u b r o u t i n e , w h i c h s o r t s t h n u m b e r s .W h e n t h p r o g r a m r e t u r n s t l i n e 1 7 0 , t h s o r t e d a r r a y i

1 I l i n e 2 2 0 , y o c h a n g e t h t h i r d e l e m e n t o f t h e a r r a y , t h e n b r a n c ht t h s u b r o u t i n e f o a n o t h e r s o r t i n g . A f t e r t h r e t u r n t l i n e 2 5 0 ,

Page 222: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 222/348

t h s o r t e d a r r a y

1 i p r i n t e d o u t . F i n a l l y , t h E N c o m m a n d i l i n e 2 9 s t o p s t h er u n n i n g o t h p r o g r a m . C l e a r l y , y o c o u l d s o r t t h a r r a y a o f t e na y o w i s h e d m e r e l y b i n s e r t i n g G O S U B 3 0 s t a t e m e n t . T h i s i c e r t a i n l y m o r e e f f i c i e n t t h a n r e p e a t i n g t h e s o r t i n g i n s t r u c t i o n s e a c ht i m e y o u w a n t t h a r r a y s o r t e d .

1 6 N o l o o k a a n o t h e r s t a t e m e n t . C l e a r t h m e m o r y a n t y p e t h f o l l o w i n g p r o g r a m .

1 0 P R I N T " E N T E R N U M B E R B E T W E E N A N 5 1 1 P R I N T " E N T E R T Q U I T . "

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 0

R u t h p r o g r a m . W e r e y o r i g h t ?

1 7 T h i s c o m p l e t e s t h c o m p u t e r w o r k f o t h i s c h a p t e r . T u r n o f t h c o m p u t e r a n t h T s e t .

9 - D I S C U S S I O ND e f i n i n g " D o - I t - Y o u r s e l f F u n c t i o n sT h D E ( f o r " d e f i n e " ) s t a t e m e n t p e r m i t s u s e r - s p e c i f i e d f u n c t i o n s i

Page 223: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 223/348

B A S I C p r o g r a m s i a d d i t i o n t t h o s e f u n c t i o n s ( S Q R , I N T , e t c . )a l r e a d y b u i l t i n t o t h l a n g u a g e . T h f o r m o a l D E s t a t e m e n t s i t h s a m e .

( l i n e # > D E F N ( l e t t e r ) ( v a r i a b l e ) ( e x p r e s s i o n u s i n g v a r i a b l e )1 0 D E F H P < X ) = X T 2

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

I y o u s t h s a m p l e D E s t a t e m e n t i n l i n e 1 0 i p r o g r a m ,a n l a t e r u s e d t h e x p r e s s i o n F N P ( 2 ) , t h c o m p u t e r w o u l d " l o o k u p t h d e f i n i t i o n o F N i l i n e 1 0 0 a n d t h e n s u b s t i t u t e f o o t h r i g h t s i d e o t h e q u a l s i g n i t h D E s t a t e m e n t , w i t h t h i s r e s u l t

2 1 H a n d s - o n B A S I C

i c o r r e c t p r o v i d e d y o h a v e d e f i n e d f u n c t i o n F N p r e v i o u s l y . T h p r i m a r y p u r p o s e o f u s e r - s p e c i f i e d f u n c t i o n s i t s i m p l i f y p r o g r a mm i n g b a v o i d i n g r e p e a t e d u s e o c o m p l i c a t e d e x p r e s s i o n s . T h w i s ep r o g r a m m e r i a l e r t f o o p p o r t u n i t i e s t s a v e e f f o r t w i t h D E s t a t em e n t s .

U s t h D E s t a t e m e n t t d e f i n e y o u r o w f u n c t i o n s .

U n d e r s t a n d i n g S u b r o u t i n e s

Page 224: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 224/348

O n l i m i t a t i o n o f D E s t a t e m e n t i t h a t i c a o c c u p y n m o r e t h a ns i n g l e l i n e . Y o a r b o u n d t e n c o u n t e r m o r e c o m p l i c a t e d s i t u a

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

M a i n p r o g r a m b e g i n s

2 6 G O S U B 1 0 0 02 1

" D o - I t Y o u r s e l f ' F u n c t i o n s a n S u b r o u t i n e s 2 1

W h e n t h c o m p u t e r e n c o u n t e r s t h R E T U R N i l i n e 1 1 5 0 , i r e t u r n st l i n e 2 1 0 — t h n e x t h i g h e r l i n e n u m b e r a f t e r t h G O S U B t h a t p u i i t h s u b r o u t i n e . T h e n t h c o m p u t e r p r o c e e d s t h r o u g h t h m a i np r o g r a m t t h G O S U B i l i n e 3 5 0 , w h i c h a g a i n c a u s e s i t b r a n c ht t h s u b r o u t i n e i n l i n e 1 0 0 0 . T h i s t i m e , t h R E T U R N s t a t e m e n ts e n d s t h c o m p u t e r b a c k t l i n e 3 6 i t h p r o g r a m .

O c o u r s e , y o c a u s G O S U B 1 0 0 0 a m a n y t i m e s a y o w a n t o y o c a u s a m a n y s u b r o u t i n e s a y o n e e d . G e n e r a l l y , t h t o p a r t o t h p r o g r a m i t h m a i n p r o g r a m , a n t h s u b r o u t i n e sa r g r o u p e d t o g e t h e r a t h e n d . T h e r e i g o o d r e a s o n f o t h i s .Y o w a n t t h c o m p u t e r t p e r f o r m t h s u b r o u t i n e s o n l y w h e n t h e ya r c a l l e d b G O S U B . T h u s , a f t e r t h m a i n p r o g r a m i f i n i s h e d ,

Page 225: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 225/348

y o p u a E N s t a t e m e n t i t h p r o g r a m .

T r a n s f e r t s u b r o u t i n e s w i t h G O S U B .

I i p o s s i b l e , a n s o m e t i m e s d e s i r a b l e , t j u m p t s u b r o u t i n ef r o m s u b r o u t i n e . T h d i a g r a m b e l o w i n d i c a t e s h o t h c o m p u t e rt r e a t s s u c h a e v e n t .

M a i n p r o g r a m

S u b r o u t i n e

2 1 2 H a n d s - o n B A S I C

4 1 o t l i n e 8 3 0 ? T h r u l e i t h a t t h c o m p u t e r r e t u r n s t t h n e x t s t a t e m e n t a f t e r t h G O S U B t h a t p u i i t h e s u b r o u t i n e . T h c o m p u t e r i i s u b r o u t i n e 2 b e c a u s e o t h G O S U B i l i n e 8 2 0 ;t h e r e f o r e t h e R E T U R N i l i n e 9 9 b r a n c h e s b a c k t l i n e 8 3 0 . T h s a m e r u l e a p p l i e s w h e n t h c o m p u t e r r e a c h e s t h R E T U R N i l i n e8 8 0 . A t h a t p o i n t t h c o m p u t e r i i s u b r o u t i n e a n a r r i v e dt h e r e f r o m t h G O S U B i l i n e 4 0 0 . T h u s , t h R E T U R N i l i n e 8 8 b r a n c h e s b a c k t l i n e 4 1 0 .

U s R E T U R N t b r a n c h b a c k f r o m s u b r o u t i n e s .

Page 226: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 226/348

T h O N . . . G O S U B s t a t e m e n t a l l o w s y o t s e n d t h c o m p u t e rt o n o n u m e r o u s s u b r o u t i n e s d e p e n d i n g o t h v a l u e o n u m e r i cv a r i a b l e . F o e x a m p l e , t h s t a t e m e n t

1 4 8 O N G O S U B 3 8 0 , 4 0 8 , 5 0 8w i l l g t t h s u b r o u t i n e a 3 0 i i 1 t t h s u b r o u t i n e a 4 0 i i 2 o t t h s u b r o u t i n e a 5 0 i i 3

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

9 - 4 W O R K I N G W I T H P R O G R A M E X A M P L E S

" D o - I t Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 1

F i r s t y o d e f i n e a f u n c t i o n t d t h r o u n d i n g o f f . S u c hf u n c t i o n i

1 8 D E F N R < J O I N T < X * 1 8 8 + . 5 V 1 8 8T s e h o t h i s f u n c t i o n w o r k s , s u p p o s e 2 3 . 1 5 9 7 . F o l l o w t h i sv a l u e t h r o u g h t h e x p r e s s i o n t s e w h a t h a p p e n s .

X * 1 0 0 2 3 1 5 . 9 7X * 1 0 0 + 0 . 5 2 3 1 6 . 4 7

I N T ( X * 1 0 0 + 0 . 5 ) 2 3 1 6

Page 227: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 227/348

I N T ( X * 1 0 0 + 0 . 5 ) / 1 0 0 2 3 . 1 6

T h e r e f o r e , 2 3 . 1 5 9 7 i c o r r e c t l y r o u n d e d u t 2 3 . 1 6 .N o s u p p o s e t h a t 2 3 . 1 5 4 7 . T h e n

X * 1 0 0X * 1 0 0 + 0 . 5

I N T ( X * 1 0 0 + 0 . 5 )I N T ( X * 1 0 0 + 0 . 5 ) / 1 0 0

2 3 1 5 . 4 72 3 1 5 . 9 72 3 1 52 3 . 1 5

2 1 H a n d s - o n B A S I C

1 7 E N

T h c o m p l e t e p r o g r a m i

1 0 D E F N R < X > = I N T < K * 1 0 8 + . 5 V 1 0 01 1 P R I N T " L A B E L P R I C E " ;1 2 1 3 1 4 1 5 1 6 1 7

I N P U TP R I N TP R I N TP R I N TG O T OE N

" 1 0 * D I S C O U N T" 1 5 5 : D I S C O U N T" 2 0 * D I S C O U N T

1 1

I S " ; F N R <I S " ; F N R <I S " ; F N R <

8 5 * Z >8 0 * Z >

Page 228: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 228/348

L i n e s 1 3 0 , 1 4 0 , a n d 1 5 0 u s t h d e f i n e d f u n c t i o n . F o 1 p e r c e n t d i s c o u n t , t h s e l l i n g p r i c e i 9 p e r c e n t o f t h e o r i g i n a l p r i c eZ H e n c e , t h c o m p u t e r p r i n t s F N R ( . 9 0 * Z ) , w h i c h r o u n d s o f t h v a l u e t t h n e a r e s t c e n t . N o t e t h e c o n o m y o u s i n g t h d e f i n e df u n c t i o n r a t h e r t h a n w r i t i n g o u t h e x p r e s s i o n i l i n e 1 0 e a c h t i m ey o w a n t t p r i n t r o u n d e d d o l l a r a m o u n t .

E x a m p l e C a r p e t E s t i m a t i n g

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

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 1

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

H O M A N Y R O O M S ? ( Y o u t y p e i n u m b e r o r o o m s )F O E A C H R O O M , T Y P E I L E N G T HA N W I D T H I F E E T ,S E P A R A T E D B C O M M AR O O M D I M E N S I O N S

( Y o u t y p e i d i m e n s i o n s )( Y o u t y p e i d i m e n s i o n s )

Page 229: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 229/348

( L o o p u n t i l a l r o o m s a r e n t e r e d )( C o m p u t e r t y p e s o u n u m b e r ) S Q U A R E Y A R D S R E Q U I R E DC A R P E T G R A D E C O S T O O R D E RA ( C o m p u t e r t y p e s o u t , e t c . )

B e f o r e p r o c e e d i n g f u r t h e r w i t h t h p r o g r a m , t h i n k b i a b o u tt h e o u t p u t . S i n c e t h o u t p u t i i d o l l a r s a n c e n t s , y o m a a w e l l u s t h D E f u n c t i o n f r o m e x a m p l e t r o u n d o f t h a n s w e r sp r o p e r l y . B e g i n t h p r o g r a m w i t h t h a t d e f i n e d f u n c t i o n .

2 1 H a n d s - o n B A S I C

1 9 L E A = 2 0 8 F O R 1 = T 2 1 P R I N T 1 2 2 I N P U T L , 2 3 0 L E T A = A + L * W2 4 N E X T

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

2 5 0 L E T A = A / - 9

Page 230: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 230/348

2 5 P R I N T2 6 P R I N T A ; " S Q U A R E Y A R D S R E Q U I R E D "A t h i s p o i n t y o m a a s w e l l u s D A T A s t a t e m e n t s t i n c l u d e

t h p r i c e t a b l e i t h p r o g r a m .2 7 D A T A 1 0 , 8 . 5 , 7 . 2 52 8 D A T A 1 3 . 2 5 , 1 2 , 9 . 7 52 9 D A T A 1 6 , 1 4 , 1 1 . 2 53 0 0 D A T A 2 0 , 1 7 . 2 , 1 5 . 2 5

N e x t p r i n t o u t h h e a d i n g s r e q u i r e d f o t h p r i c e p r i n t o u t .

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 1

8 0 R E S U B R O U T I N E T C O M P U T E C A R P E T P R I C E8 1 R E A D C 1 . C 2 . C 3N e x t w r i t e p r o g r a m l i n e s t h a t t e s t w h e t h e r t h c a r p e t a r e a i

l e s s t h a n 1 5 b e t w e e n 1 5 a n 2 5 , o r m o r e t h a n 2 s q u a r e y a r d s a n t h e n c o m p u t e t h p r i c e a c c o r d i n g l y .

8 2 I A > 2 5 T H E N 8 6 8 3 I A > 1 5 T H E N 8 8 8 4 L E P = C 1 * A8 5 G O T O 8 9 8 6 0 L E T P = 1 5 * C 1 1 0 * C 2 < A - 2 5 ) * C 3

Page 231: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 231/348

8 7 G O T O 8 9 8 8 0 L E T P = 1 5 * C 1 < A - 1 5 > * C 28 9 R E T U R N

S t u d y t h i s p r o g r a m s e g m e n t t c o n v i n c e y o u r s e l f t h a t t h e p r i c ei c o m p u t e d c o r r e c t l y . T h e n r e t u r n t t h m a i n p r o g r a m a n p r i n to u t h f i r s t p r i c e .

3 6 P R I N T " A " j T A B < 2 5 ^ F N R < P >O n c e t h i s p a t t e r n i e s t a b l i s h e d , t h r e s t o t h m a i n p r o g r a m

f o l l o w s e a s i l y .

2 1 H a n d s - o n B A S I C

T h c o m p l e t e p r o g r a m i

1 6 D E F N R < X > = I N T < X * 1 0 0 + . 5 V 1 0 01 1 P R I N T " H O W M A N Y R O O M S " ;1 2 I N P U T1 3 P R I N T " F O R E A C H R O O M , T Y P E I L E N G T H "1 4 P R I N T " A N D W I D T H I F E E T , "1 5 P R I N T " S E P A R A T E D B C O M M A "1 6 P R I N T1 7 P R I N T " R O O M " , " D I M E N S I O N S "1 8 P R I N T1 9 L E T A = 0

Page 232: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 232/348

2 0 F O 1 = T 2 1 P R I N T I 2 2 0 I N P U T L , W2 3 0 L E T A = A + L * W2 4 N E X T2 5 0 L E T A = A / 92 5 P R I N T2 6 P R I N T A ; " S Q U A R E Y A R D S R E Q U I R E D "2 7 D A T A 1 0 , 8 . 5 , 7 . 2 52 8 0 D A T A 1 3 . 2 5 , 1 2 , 9 . 7 52 9 D A T A 1 6 , 1 4 , 1 1 . 2 53 0 D A T A 2 0 , 1 7 . 2 , 1 5 . 2 53 1 P R I N T

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 1

8 2 I A > 2 5 T H E N 8 6 8 3 I A > 1 5 T H E N 8 8 8 4 0 L E T P = C 1 * A8 5 G O T O 8 9 8 6 L E P = 1 5 # C 1 1 0 * C 2 < A - 2 5 > * C 38 7 G O T O 8 9 8 8 L E P = 1 5 # C 1 < A - 1 5 ) * C 28 9 R E T U R N

9 - P R O B L E M S1 S t u d y t h p r o g r a m b e l o w a n w r i t e d o w n w h a t i w i l l p r i n t i y o

Page 233: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 233/348

r u t h p r o g r a m .

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

D E D E D E L E L E L E

F N A ( X > = 2 + >F N B < Y > = 1 0 ^F N C < Z ) = Z t 2R = S = T =

1 6 P R I N T F N C < T > ; F N A < S ) ; F N B < R )1 7 L E R = S + T1 8 P R I N T F N A < R > F N B < F N C X1 9 E N

2 2 H a n d s - o n B A S I C

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

4 W h a t w i l l b t h o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7

D I A < 5 >F O 1 = T R E A D A < I >N E X TD A T A 6 , 2 , 7 ,G O S U B 5 0 L E A < C 3 > = 1 6G O S U B 5 0

1 ,

Page 234: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 234/348

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

L E A < 5 ) = 8G O S U B 5 0 E N F O 1 = T L E A < n = A <N E X TG O S U B 6 0 R E T U R NF O J = l T OP R I N T A < J > jN E X TR E T U R N

w i l l b t h o u t p u t i y o r u

" D o - I t - Y o u r s e l f F u n c t i o n s a n S u b r o u t i n e s 2 2

6 A s s u m e t h a t o n e - d i m e n s i o n a l a r r a y c o n t a i n s n u m b e r s t b a d d e d t o g e t h e r . T h f i r s t e l e m e n t o f t h e a r r a y Z ( l ) g i v e s t h n u m b e ro e l e m e n t s t h a t f o l l o w i t h a r r a y a n a r t b s u m m e d . W r i t e

s u b r o u t i n e b e g i n n i n g i l i n e 8 0 t c o m p u t e t h s u o t h e l m e n t s a f t e r Z ( l ) . A s s i g n t h s u t t h e v a r i a b l e T T e r m i n a t e t h s u b r o u t i n e w i t h R E T U R N s t a t e m e n t . A s s u m e t h a t t h a r r a y h a b e e n p r o p e r l y d i m e n s i o n e d a n t h a t t h e v a l u e s i t h a r r a y h a v eb e e n l o a d e d i t h m a i n p r o g r a m .

7 i o n e - d i m e n s i o n a l a r r a y . T h f i r s t e l e m e n t o t h a r r a y X ( l )g i v e s t h n u m b e r o p i e c e s o f d a t a t h a t f o l l o w i t h a r r a y . W r i t es u b r o u t i n e b e g i n n i n g i l i n e 5 0 t s e a r c h t h a t a r r a y f o r t h e l a r g e s tv a l u e . A s s i g n t h i s v a l u e t o t h e v a r i a b l e L T e r m i n a t e t h s u b r o u t i n e

Page 235: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 235/348

w i t h R E T U R N s t a t e m e n t . A s s u m e t h a t t h a r r a y h a b e e np r o p e r l y d i m e n s i o n e d a n l o a d e d w i t h n u m b e r s e l s e w h e r e .

8 S u p p o s e t h a t a p a r t o f p r i n t o u t y o n e e d s e r i e s o 4 a s t e r i s k s( * i s t r a i g h t l i n e a c r o s s t h p a g e . W r i t e s u b r o u t i n e b e g i n n i n gi l i n e 1 0 0 0 t d t h i s . T e r m i n a t e t h s u b r o u t i n e w i t h R E T U R Ns t a t e m e n t .

9 A s s u m e t h a t o n e - d i m e n s i o n a l a r r a y i l o a d e d w i t h n u m b e r s . T h f i r s t e l e m e n t Y ( l ) g i v e s t h n u m b e r o e l e m e n t s t f o l l o w . W r i t es u b r o u t i n e t o c a l c u l a t e t h m e a n ( M a n s t a n d a r d d e v i a t i o n ( S o t h n u m b e r s i t h a r r a y t h a t f o l l o w t h f i r s t e l e m e n t . B e g i n t h s u b r o u t i n e i l i n e 9 0 0 a n d t e r m i n a t e w i t h R E T U R N s t a t e m e n t .

2 2 H a n d s - o n B A S I C

b F N A ( 4 )

c F N A ( 9 )

d F N A ( Z * W )

Page 236: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 236/348

2 W h a t w i l l b t h o u t p u t i y o r u t h f o l l o w i n g p r o g r a m ?

1 0 D E F N R < X > = X * X1 1 D E F N S ( X > = 3 * X1 2 D E F N K Y > = Y + 11 3 L E A = 1 4 P R I N T F N K A > ; F N R < A > ; F N S < A >1 5 L E M = 1 6 P R I N T F N R < S Q R < M > >

Page 237: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 237/348

Page 238: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 238/348

C H A P T E R 1

C H A R A C T E R G R A P H I C SA N C O L O R S

Page 239: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 239/348

1 0 - 1 O B J E C T I V E SC o n t r o l l i n g P r o g r a m sG r a p h i c s p r o g r a m m i n g i e a s i e r i m o r e e l a b o r a t e p r o g r a m c o n t r o l i p o s s i b l e . Y o w i l l l e a r n a d d i t i o n a l t e c h n i q u e s f o p r o g r a m c o n t r o l .

P l a c i n g C h a r a c t e r sG r a p h i c s p r o g r a m m i n g r e q u i r e s t h a t y o b a b l e t p l a c e a c h a r a c t e ra a n p o s i t i o n o t h s c r e e n . Y o w i l l l e a r n t u s s u b r o u t i n e t d t h i s .

Page 240: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 240/348

C h a r a c t e r G r a p h i c s a n C o l o r 2 2

4 N o c h a n g e l i n e 1 0 a f o l l o w s .

1 0 I N P U T A , B

D i s p l a y t h p r o g r a m . T h p r o g r a m s h o u l d l o o k l i k e t h i s .

1 0 I N P U T A , B1 1 P R I N T T A B < 1 0 ) ; 1 , 2 , 31 2 P R I N T2 0 P R I N T " A " , A = 1 , A = 2 , A = 32 1 P R I N T2 2 P R I N T " B " , B = 1 , B = 2 , B = 32 5 P R I N T

Page 241: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 241/348

3 0 G O T O 1 0 4 0 E N

R u t h p r o g r a m . A t h i n p u t p r o m p t s , t y p e1 , 2 , 3 ,

R > w h i c h p a i r s o n u m b e r s a r t h — l ' s i t h s a m e c o l u m n ?

2 2 8 H a n d s - o n B A S I C

6 I n t e r r u p t t h e p r o g r a m . F i n a l l y , c h a n g e l i n e 2 3 a f o l l o w s .

2 3 I A = O B = T H E N P R I N T" C O N D I T I O N I S A T I S F I E D " = P R I N T = G O T O 1 0

D i s p l a y t h p r o g r a m . W h a t p a i r s o n u m b e r s w i l l c a u s e" C O N D I T I O N I S A T I S F I E D " t b t y p e d o u t ?

Page 242: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 242/348

T r y o u r p a i r s o n u m b e r s t o s e e i y o w e r e c o r r e c t . Y o s h o u l dh a v e w r i t t e n d o w n f i v e p a i r s o n u m b e r s . I t h c o n d i t i o n s a t i s f i e di b o t h a n a r i n p u t a 1

Page 243: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 243/348

2 3 H a n d s - o n B A S I C

9 I n t e r r u p t t h e p r o g r a m . I d i r e c t m o d e , t y p e

P R I N T

N o p r e s s e a c h o f t h e k e y s i n d i c a t e d i s t e p s a n 8 N o t i c et h a t c h a r a c t e r s a r n o p r i n t e d o u t . N o p r e s s [ R E T U R N l W h a th a p p e n e d ?

W h e r e t h C H R $ f u n c t i o n a n t h A S C I I c o d e a r e u s e d , y o u m a y , i y o w i s h , u s e ( t h e d e s i r e d k e c o m b i n a t i o n ) " . F o e x a m p l e , t y p e

Page 244: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 244/348

P R I N T " ( S H I F T | C L R / - H O M E ) "W h a t h a p p e n e d ?

P r e s s [ r u n / s t o p r e s t o r e | t r e t u r n t o t h e s t a n d a r d c h a r a c t e r d i s p l a y .N o t y p e t r e t u r n t t h s t a n d a r d

P R I N T C H R $ < 1 4 7 )

R e c a l l f r o m t h t a b l e y o f i l l e d i n i n s t e p t h a t t h e A S C I I c o d e f o

Page 245: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 245/348

Page 246: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 246/348

C h a r a c t e r G r a p h i c s a n C o l o r 2 3

1 5 F i n a l l y c h a n g e l i n e 1 4 a f o l l o w s .

1 4 P R I N T C H R $ < 1 > "

H e r e y o w i l l p r i n t r e v e r s e s p a c e . R u t h p r o g r a m e n t e r i n g 1 3 , 2 0a t h i n p u t p r o m p t . W h a t d o e s r e v e r s e s p a c e l o o k l i k e ?

1 6 I y o d n o h a v e a c o l o r T s e t , g t o s t e p 2 1

Page 247: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 247/348

1 7 C l e a r t h m e m o r y o t h p r o g r a m w i t h i t s u b r o u t i n e . T y p e i t h f o l l o w i n g p r o g r a m .

1 8 R E M A S C I I C O D E S F O C O L O R1 1 D A T A B L A C K , 1 4 4 , W H I T E , 5 , R E D , 2 81 2 D A T A C Y A N , 1 5 9 , P U R P L E , 1 5 6 , G R E E N , 3 81 3 D A T A B L U E , 3 1 , Y E L L O W , 1 5 81 4 F O K = T 1 5 R E A D C 0 L R $ , C 0 L R1 6 P R I N T C H R $ < C O L R ) j

2 3 H a n d s - o n B A S I C

1 8 C l e a r t h m e m o r y a n t y p e i t h f o l l o w i n g p r o g r a m .

1 8 R E M A S C I I C O D E S F O C O L O R S1 1 D A T A Y E L L O W , 1 5 8 , G R E E N , 3 0 , R E D , 2 81 2 F O K = T 1 3 R E A D C $ < K > , C < K >1 4 N E X T1 5 P R I N T " E N T E R C O L O R " ;1 6 I N P U T C O L R $1 7 F O K = T 1 8 I A S G ( C O L R $ > = A S C < C $ < K > > T H E N 2 0 01 9 N E X T2 0 P R I N T " E N T E R N U M B E R O S Q U A R E S " ;

Page 248: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 248/348

2 1 I N P U T2 2 P R I N T C H R $ < C < K ) > j2 3 0 F O R 1 = T 2 4 P R I N T C H R $ U 3 > . : " C H R $ < 1 4 > . 2 5 N E X T2 6 P R I N T C H R $ U 5 4 > . ;2 7 P R I N T2 8 0 G O T O 1 5 2 9 0 E N D

S t u d y t h p r o g r a m . I l i n e 2 6 0 , C H R $ ( 1 5 4 ) r e t u r n s t h c h a r a c t e rp r i n t i n g c o l o r t t h s t a r t - u p c o l o r . I l i n e 1 8 0 , h o m a n y c h a r a c t e r s

C h a r a c t e r G r a p h i c s a n C o l o r 2 3

1 9 N o e n t e r

B L A C K , 2 5

W h a t c o l o r w a t h h o r i z o n t a l b a t h i s t i m e ?

2 0 T h i s c o n c l u d e s t h D i s c o v e r y E x e r c i s e s . T u r n o f t h c o m p u t e r a n t h T s e t .

1 0 - 3 D I S C U S S I O N

Page 249: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 249/348

C o n t r o l l i n g P r o g r a m sL o g i c a l ( t r u e / f a l s e ) e x p r e s s i o n s s u c h a A = a r e v a l u a t e d b C o m m o d o r e 6 B A S I C a - o 0 T h v a l u e o A = d e p e n d so w h e t h e r t h s t a t e m e n t " i e q u a l t 5 i t r u e o f a l s e . W h e nt h n u m e r i c v a r i a b l e i 5 t h s t a t e m e n t i t r u e a n t h v a l u e o A = i - 1 W h e n i n o 5 t h s t a t e m e n t i f a l s e a n t h v a l u eo A = i 0 I T H E N c o n d i t i o n s c o n t a i n s u c h l o g i c a l e x p r e s s i o n s .

I t h c h a p t e r o d e c i s i o n s a n b r a n c h i n g , y o l e a r n e d a b o u tI T H E N s t a t e m e n t s w i t h s i m p l e c o n d i t i o n s . I n t h i s c h a p t e r , y o u s e d c o n d i t i o n s c o n t a i n i n g t w s i m p l e l o g i c a l e x p r e s s i o n s s e p a r a t e db A N o O R F o e x a m p l e , t h c o n d i t i o n i

2 3 H a n d s - o n B A S I C

Y o e v a l u a t e a a r i t h m e t i c e x p r e s s i o n s u c h a ( A + B ) * C w h i c hc o n t a i n s t h a r i t h m e t i c o p e r a t i o n s + , - , * u s i n g t h r u l e s d i s c u s s e di t h c h a p t e r o c o m p u t e r a r i t h m e t i c . Y o e v a l u a t e a l o g i c a l e p r e s s i o n t h a t c o n t a i n s t h l o g i c a l w o r d s o o p e r a t i o n s A N a n O u s i n g t h e i r s t a n d a r d l o g i c a l m e a n i n g s . D e p e n d i n g o t h v a l u e s o t h e v a r i a b l e s i a a r i t h m e t i c e x p r e s s i o n , i t v a l u e c a n b e a n o h o s t o n u m b e r s . O t h o t h e r h a n d , t h e v a l u e s o f a l o g i c a l e x p r e ss i o n c a o n l y b - ( t r u e ) o r ( f a l s e ) .

T h c o l o n ( : c a n b e u s e d t s e p a r a t e m u l t i p l e s t a t e m e n t s o s i n g l e l i n e . Y o h a v e u s e d t h i s c a p a b i l i t y o n l y a f t e r T H E N i I

T H E N s t a t e m e n t s . F o e x a m p l e , t h p r o g r a m l i n e s1 8 I A = 5 T H E N P R I N T " A = 5 I T R U E " :G O T O 3 9

Page 250: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 250/348

2 0 P R I N T " A = 5 I F A L S E "w i l l p r i n t A = I T R U E a n t h e n t r a n s f e r t l i n e 3 0 i t h c o n d i t i o ni s a t i s f i e d . I t h c o n d i t i o n i n o s a t i s f i e d , A = I F A L S E w i l l b p r i n t e d . E x c e s s i v e u s o t h i s f e a t u r e c a m a k e p r o g r a m s h a r d t u n d e r s t a n d a n t t r o u b l e s h o o t .

P l a c i n g C h a r a c t e r s

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

C h a r a c t e r G r a p h i c s a n C o l o r 2 3

t m a k e s u r e t h a t t h e r o a n c o l u m n p o s i t i o n i o t h s c r e e n . L i n e1 0 2 0 m a k e s s u r e t h a t t h l a s t r o w , l a s t c o l u m n p o s i t i o n i n o u s e d .I a c h a r a c t e r i p r i n t e d i t h l a s t s c r e e n p o s i t i o n , C o m m o d o r e 6 B A S I C i s s u e s R E T U R N c h a r a c t e r , w h i c h m o v e s a l t h d i s p l a y e dc h a r a c t e r s u o n l i n e . L i n e 1 0 3 0 u s e d t h A S C I I c o d e C H R $ ( 1 9 ) ,f o | C L R / H O M E | t m o v e t h c u r s o r t t h H O M E p o s i t i o n i t h u p p e rl e f t c o r n e r o t h s c r e e n . L i n e s 1 0 5 0 - 1 0 7 0 a n d l i n e s 1 0 9 0 - 1 1 1 0 p r i n tt h e d e s i r e d n u m b e r o r i g h t c u r s o r , C H R $ ( 1 7 ) , a n d d o w n c u r s o r ,C H R $ ( 2 9 ) , t p l a c e t h c u r s o r i t h R t r o a n C t c o l u m n . L i n e s1 0 4 0 a n 1 0 8 0 t a k e c a r e o f t h e s p e c i a l c a s e s w h e n i o i 1 I t h o s e c a s e s , n c u r s o r r i g h t o r c u r s o r d o w n c h a r a c t e r s s h o u l db p r i n t e d t t h s c r e e n a t h c u r s o r a l w a y s s t a r t s i t h H O M Ep o s i t i o n i t h f i r s t r o a n f i r s t c o l u m n .

Page 251: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 251/348

Y o c a n c h a n g e t h E N s t a t e m e n t s i 1 0 1 0 a n 1 0 2 0 d e p e n di n o t h e p a r t i c u l a r r e s u l t s y o d e s i r e . Y o m i g h t w i s h t d e v e l o ps u b r o u t i n e s t h a n d l e t h e s e s p e c i a l c a s e s .

W o r k i n g w i t h t h e G r a p h i c s F e a t u r e s o f t h e C o m m o d o r e 6 C h a r a c t e r s c a b p r i n t e d a w h i t e o b l u e b a c k g r o u n d ; o t h r e v e r s e , b l u e c h a r a c t e r s o w h i t e b a c k g r o u n d . T h i s r e v e r s e c h a r a ct e g r a p h i c s f e a t u r e o f t h e C o m m o d o r e 6 i a c t i v a t e d u s i n g t h C T R L | 9 k e o b p r i n t i n g C H R $ ( 1 8 ) . T h i s f e a t u r e i t u r n e d o f u i n g t h e C T R L | 0 k e o b p r i n t i n g C H R $ ( 1 4 6 ) t o t h e s c r e e n . T h e s eA S C I I c o d e s w e r e d e t e r m i n e d i s t e p 8 o f t h e d i s c o v e r y e x e r c i s e s .

Page 252: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 252/348

C h a r a c t e r G r a p h i c s a n C o l o r 2 3

C O L O RB l a c kW h i t eR e C y a nP u r p l eG r e e nB l u e

C T R L K E A S C I I C O D E1 4

2 1 5

1 5

3 3

Page 253: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 253/348

Y e l l o w 1 5

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

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

P R I N T C H R $ < 1 8 > ; C H R $ C 3 0 > j n

2 4 H a n d s - o n B A S I C

C H R $ ( 1 5 7 ) c a u s e s t h c u r s o r t m o v e b a c k o n s p a c e . T h c o m p l e t ep r o g r a m f o l l o w s .

1 8 P R I N T C H R $ < 1 4 7 )1 1 L E R = 1 31 2 L E T C = 2 01 3 G O S U B 1 0 0 01 4 P R I N T C H R $ < 1 8 ) ; " 1 5 G E A 1 6 I A $ = " " T H E N 1 5 1 7 I A $ = " U " T H E N R = R - 11 8 I A $ = " D " T H E N R = R + 11 9 I A $ = " R " T H E N C = C + 12 0 I A $ = " L " T H E N C = C - 1

Page 254: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 254/348

2 1 I R < O R > 2 5 T H E N 1 0 2 2 I C < O C > 4 0 T H E N 1 0 2 3 P R I N T C H R $ < 1 5 7 > ; C H R $ < 1 4 6 > ; "2 4 G O S U B 1 0 0 02 5 P R I N T C H R $ < 1 8 ) ; " 2 6 G O T O 1 5 2 7 0 E N D1 0 6 0 R E C U R S O R P L A C E M E N T S U B R O U T I N E1 0 1 0 I R < O R > 2 5 O C O O 4 T H E N E N 1 0 2 0 I R = 2 5 A N C = 4 0 T H E N E N

C h a r a c t e r G r a p h i c s a n C o l o r 2 4

D e l e t i n g l i n e 2 3 0 w h e r e t h e c u r r e n t s q u a r e i e r a s e d a l l o w sy o t u s t h i s p r o g r a m t d r a w l i n e s a n s h a p e s . Y o m a e n j o yr u n n i n g t h i s p r o g r a m i b o t h i t f o r m s .

E x a m p l e B a r G r a p h sT h f o l l o w i n g p r o g r a m w i l l r e a d t h n a m e a n n u m e r i c a l q u i zg r a d e f o e a c h p e r s o n i c l a s s . T h n a m e s w i l l b d i s p l a y e d o t h s c r e e n w i t h b a g r a p h t o t h e r i g h t s t a r t i n g a t a b p o s i t i o n 1 0 . T h n u m b e r o s q u a r e s i t h b a g r a p h i e q u a l t t h n u m e r i c a l g r a d e .T h c o m p l e t e p r o g r a m f o l l o w s .

1 6 P R I N T C H R $ < 1 4 7 >1 1 R E A D

Page 255: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 255/348

1 2 F O J = T 1 3 R E A D N A M E S / G R A D E1 4 P R I N T N A M E S ; T A B < 1 0 ) ;1 5 R E D R A W B A G R A P H1 6 F O K = T G R A D E1 7 P R I N T C H R $ < 1 8 > , " " 1 8 N E X T1 9 P R I N T2 0 P R I N T2 1 N E X T2 2 D A T A

2 4 H a n d s - o n B A S I C

9 R E C L E A R T H S C R E E N1 0 P R I N T C H R $ < 1 4 7 >1 1 R E A D1 2 F O J = T 1 3 R E A D N A M E S , G R A D E , C O L R1 4 P R I N T N A M E S ; T A B < 1 > 1 5 R E D R A W B A G R A P H1 6 F O K = T G R A D E1 6 R E C < C O L R > I 2 3 , 3 0 , O 1 5 1 7 P R I N T C H R $ < C < C O L R > > j C H R $ < 1 8 > , " " C H R $ < 1 5 4 > ;1 3 N E X T1 9 P R I N T2 0 P R I N T

Page 256: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 256/348

2 1 N E X T2 1 5 R E M N A M E , G R A D E A N C O L R < 1 , 2 , 3 > D A T A2 2 D A T A2 3 D A T A J A C K , 4 , 12 4 D A T A S U E , 7 , 22 5 D A T A R U T H , 8 , 32 6 0 E N D

L i n e s 3 0 - 7 0 s t o r e t h c o l o r c o d e n u m b e r s g i v e n i l i n e 8 i t h n u m e r i c a l a r r a y C C ( l ) i t h c o l o r c o d e f o r g r e e n ; C ( 2 )f o r e d ; a n C ( 3 ) f o y e l l o w . I l i n e 1 7 0 , t h c o l o r c o d e f o l i g h t

C h a r a c t e r G r a p h i c s a n C o l o r 2 4

t h S H I F T k e a n p r e s s i n g f C t i m e s a n h o l d i n g d o w n t h C o m m o d o r e k e a n p r e s s i n g | S f . T h c o m p l e t e p r o g r a m f o l l o w s .O y o u r s c r e e n , t h l i n e s w i l l n o b d a s h e d .

1 0 P R I N T C H R $ < 1 4 7 > . i1 1 L E J = 1 2 P R I N T C r l R $ < 1 > 1 3 F O 1 = T 1 4 P R I N T1 5 N E X T1 6 P R I N T T A B < J > . ; " | 1 1 7 P R I N T T A B < J ) . ; " I I "1 3 P R I N T T A B < J > " I 1 9 P R I N T T A B < J > J n | '

Page 257: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 257/348

2 0 L E T J = J + 12 1 I J > 3 3 T H E N E N D2 2 P R I N T C H R $ < 1 4 7 > ;2 3 G O T O 1 2 2 4 E N

T b e g i n w i t h , l i n e 1 0 e r a s e s t h s c r e e n . L i n e s 1 2 t h r o u g h1 5 m o v e t h c u r s o r d o w n l i n e s . L i n e s 1 6 t h r o u g h 1 9 p r i n t t h b o s t a r t i n g a c o l u m n w h i c h i i n i t i a l l y s e t i l i n e 1 1 0 . L i n e2 0 i n c r e a s e s t h v a l u e o b 1 a n l i n e 2 2 c h e c k s t m a k e s u r e

i n o t o l a r g e t o p r i n t t h b o c o r r e c t l y . L i n e s 2 2 0 a n d 2 3 e r a s e

2 4 H a n d s - o n B A S I C

2 W h a t w i l l h a p p e n i y o r u t h f o l l o w i n g p r o g r a m ?

1 L E 2 P R I N T " A = 5 I H . ; A = 53 P R I N T " A = 6 I " . ; A = 64 E N

3 H o c a y o u m o d i f y t h c u r s o r p l a c e m e n t s u b r o u t i n e i s t e p 1 o t h D i s c o v e r y E x e r c i s e s t o p r i n t t h e r r o r m e s s a g e " O F F T H S C R E E N " w h e n t h v a l u e s o a n a r t o l a r g e o t o s m a l l ?

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

Page 258: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 258/348

5 W r i t e p r o g r a m t h a t c a u s e s r e b o t m o v e d i a g o n a l l y a c r o s st h s c r e e n . T h b o s h o u l d s t o p b e f o r e i r e a c h e s t h b o t t o m o f t h es c r e e n .

6 M o d i f y t h d a t a s t a t e m e n t s i t h C o l o r B a G r a p h s p r o g r a m s t h a t t h f i r s t b a g r a p h i y e l l o w , t h e s e c o n d i g r e e n , a n t h t h i r di r e d .

1 0 - 6 P R A C T I C E T E S T1 W h a t v a l u e o m u s t b e n t e r e d f o r t h e f o l l o w i n g p r o g r a m t p r i n t

C h a r a c t e r G r a p h i c s a n C o l o r 2 4

3 W h a t w i l l b p r i n t e d b t h d i r e c t m o d e s t a t e m e n t b e l o w ?

P R I N T

4 W h a t c o l o r s q u a r e w i l l b p r i n t e d b t h f o l l o w i n g d i r e c t m o d es t a t e m e n t ?

P R I N T C H R $ ( 2 3 ) ; C H R $ c : 1 >

Page 259: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 259/348

5 W h a t d y o u d o t p r i n t t h g r a p h i c s c h a r a c t e r | o t h e s c r e e n ?( H i n t : L o o k a t h f r o n t s o f t h e k e y s . )

Page 260: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 260/348

C H A P T E R 1

R A N D O M N U M B E R SA N S I M U L A T I O N S

Page 261: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 261/348

1 1 - 1 O B J E C T I V E SO n o t h m o s t i n t e r e s t i n g a p p l i c a t i o n s o c o m p u t e r s i t h s i m u l at i o n o e v e n t s o p r o c e s s e s t h a t i n v o l v e a e l e m e n t o c h a n c e . F o re x a m p l e , y o m i g h t u s e a c o m p u t e r t s i m u l a t e g a m b l i n g g a m e s o p e r h a p s t o i n v e s t i g a t e h o m a n y b a n k t e l l e r s a r r e q u i r e d t e n s u r et h a t a r r i v i n g c u s t o m e r s d n o h a v e t w a i t m o r e t h a n f e m i n u t e sf o s e r v i c e . I t h i s c h a p t e r y o w i l l s e h o t h c o m p u t e r h a n d l e sp r o b l e m s o t h i s t y p e . T h o b j e c t i v e s a r a f o l l o w s .

2 4 H a n d s - o n B A S I C

1 1 - 2 D I S C O V E R Y E X E R C I S E SS e t t i n g U t h R a n d o m - N u m b e r G e n e r a t o rB e f o r e b e g i n n i n g t h c o m p u t e r w o r k , y o n e e d t k n o w s o m e i mp o r t a n t c h a r a c t e r i s t i c s o r a n d o m - n u m b e r g e n e r a t o r s . B t h e i r v e r yn a t u r e , t h e s e g e n e r a t o r s p r o d u c e s e q u e n c e s o n u m b e r s t h a t a p p e a rt h a v e n p a t t e r n o r r e l a t i o n s h i p . F o r a r a n d o m - n u m b e r g e n e r a t o rt b u s e f u l , i m u s t r e t u r n a d i f f e r e n t s e q u e n c e o n u m b e r s e a c ht i m e y o r u p r o g r a m t h a t u s e s i t B u t s u p p o s e p r o g r a m t h a tu s e s r a n d o m n u m b e r s i n o w o r k i n g c o r r e c t l y . I t h p r o b l e m l i e sw i t h t h r a n d o m n u m b e r s , i m i g h t b e e x t r e m e l y d i f f i c u l t t c o r r e c t ,s i n c e d i f f e r e n t r a n d o m n u m b e r s a r g e n e r a t e d e a c h t i m e t h p r o g r a mi r u n . C o n s e q u e n t l y , C o m m o d o r e 6 B A S I C a l l o w s s e q u e n c e o r a n d o m n u m b e r s t b r e p e a t e d e a c h t i m e t h p r o g r a m i r u n . T

Page 262: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 262/348

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

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

2 T y p e i t h f o l l o w i n g p r o g r a m .

1 0 F O 1 = T

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 4

3 A d l i n e 9 a s f o l l o w s :

9 P R I N T R N D C - l )

R u t h p r o g r a m t w i c e . A r t h s e t s o n u m b e r s t h s a m e ?

P R I N T R N D ( - l ) s t a r t s t h r a n d o m - n u m b e r g e n e r a t o r a t h n u m b e r2 . 9 9 1 9 6 4 7 2 E - 0 8 a n d p r i n t s i t T h n e x t e i g h t n u m b e r s g e n e r a t e da r b a s e d o t h i s n u m b e r . T h u s , b o t h s e t s o n u m b e r s a r e t h e s a m e .

Page 263: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 263/348

4 C l e a r t h p r o g r a m i m e m o r y . E n t e r t h f o l l o w i n g p r o g r a m :

1 0 L E L = . 51 1 L E S = . 51 2 F O 1 = T 1 0 1 3 L E X = R N D < 1 >1 4 I X > T H E N 1 7 1 5 I X < S T H E N 1 9 1 6 G O T O 2 0 1 7 L E L =

2 5 H a n d s - o n B A S I C

5 E d i t l i n e 1 2 a f o l l o w s .

1 2 F O 1 = T 1 0 0 8N o t h p r o g r a m w i l l g e n e r a t e 1 0 0 0 r a n d o m n u m b e r s . T h p r g r a m w i l l t a k e a b o u t 1 5 s e c o n d s t r u n . R u t h p r o g r a m a n r e c o r d w h a t w a p r i n t e d o u t .

P r o m w h a t y o h a v e s e e n t h u s f a r , w h a t d y o b e l i e v e i t h l a r g e s tn u m b e r t h R N f u n c t i o n w i l l g e n e r a t e ?

W h a t a b o u t t h s m a l l e s t ?

Page 264: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 264/348

6 N o l e t ' s g o t s o m e o t h e r i d e a s a s s o c i a t e d w i t h r a n d o m n u b e r s . C l e a r t h p r o g r a m i m e m o r y a n e n t e r t h f o l l o w i n g p r g r a m :

1 0 F O 1 = T 1 1 P R I N T I N T < 2 * R N D < 1 > > ;1 2 N E X T1 3 E N

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 5

R u t h p r o g r a m s e v e r a l t i m e s . C a y o p r e d i c t a n y t h i n g a b o u t t h s e q u e n c e o p a t t e r n i w h i c h t h n u m b e r s w i l l a p p e a r ?

8 E d i t l i n e 1 1 a s f o l l o w s .

1 1 P R I N T I N T C 2 * R H D < l > + l ) iW h a t d y o t h i n k t h p r o g r a m w i l l d n o w ?

R u t h p r o g r a m a n r e c o r d t h o u t p u t .

Page 265: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 265/348

_ _ _ ^

9 E d i t l i n e 1 1 a s f o l l o w s .

1 1 P R I N T I N T < 4 X R N D < l ) + 5 ) ;I t h p r o g r a m i r u n , w h a t d y o t h i n k w i l l b p r i n t e d ?

Page 266: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 266/348

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 5

f r o m 0 . 0 0 0 0 0 0 0 0 0 t 0 . 9 9 9 9 9 9 9 9 9 . O c c a s i o n a l l y , s h o w s u p b u t h n u m b e r n e v e r d o e s . ) O t h e r p o s i t i v e a r g u m e n t s f o r t h e R N f u n c t i o n g e n e r a t e t h s a m e r a n d o m n u m b e r s t h a t t h a r g u m e n td o e s . T h R N f u n c t i o n a l s o t a k e s n e g a t i v e a r g u m e n t s . n e g a t i v ea r g u m e n t y i e l d s t h e s a m e n u m b e r ( b e t w e e n a n 1 e a c h t i m e i i u s e d . n e g a t i v e a r g u m e n t f o t h R N f u n c t i o n u s e d i P R I N Ts t a t e m e n t r e s e e d s t h r a n d o m n u m b e r g e n e r a t o r b d e t e r m i n i n g t h s t a r t i n g n u m b e r o t h r a n d o m n u m b e r s t b g e n e r a t e d b R N D ( l ) .

R N g e n e r a t e s n u m b e r s i t h r a n g e 0 t 0 . 9 9 9 9 9 9 9 9 9 .

D e s i g n i n g S e t s o R a n d o m N u m b e r sM o s t o f t e n y o d n o w a n t r a n d o m n u m b e r s i t h r a n g e p r o d u c e db t h R N f u n c t i o n . Y o m i g h t w a n t r a n d o m i n t e g e r s i c e r t a i n

Page 267: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 267/348

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

L e t ' s b e g i n w i t h t h c h a r a c t e r i s t i c s o f t h e R N f u n c t i o n .R N D ( l ) d e l i v e r s n u m b e r s i t h r a n g e t 1 t h a t i s f r o m t s l i g h t l y l e s s t h a n 1 I y o m u l t i p l y R N D ( l ) b y N y o m u l t i p l y t h r a n g e o t h f u n c t i o n b N T h u s , N * R N D ( 1 ) w i l l p r o d u c e r a n d o mn u m b e r s i t h r a n g e t N I d e s i r e d , y o c o u l d s h i f t t h n u m b e r s( k e e p i n g t h s a m e r a n g e ) b a d d i n g n u m b e r . N * R N D ( 1 ) + A w o u l dp r o d u c e r a n d o m n u m b e r s o v e r t h r a n g e t ( A + N ) o f r o m t s l i g h t l y l e s s t h a n ( A + N ) . F i n a l l y , y o c o u l d u s t h I N f u n c t i o n

2 5 H a n d s - o n B A S I C

o n u m b e r s h a v i n g a g i v e n m e a n a n s t a n d a r d d e v i a t i o n . T h r u l ef o g e n e r a t i n g t h e s e n u m b e r s i

M + S ( ( s u m o 1 n u m b e r s f r o m R N D ( l ) f u n c t i o n ) 6

w h e r e a n a r e t h e d e s i r e d m e a n a n s t a n d a r d d e v i a t i o n , r e s p e ct i v e l y . s u b r o u t i n e i v e r y u s e f u l i t h i s a p p l i c a t i o n . A d e f i n e da b o v e , t h v a l u e s o w i l l a p p e a r t b f r o m c o l l e c t i o n o n u m b e r sw i t h m e a n a n s t a n d a r d d e v i a t i o n S T h v a l u e s o c a b u s e dt s i m u l a t e a p r o c e s s f o l l o w i n g b e l l c u r v e .

n o t e o t r o u b l e s h o o t i n g : I C o m m o d o r e 6 B A S I C , t h e r ei w a t r u p r o g r a m s e v e r a l t i m e s a n r e p e a t t h e s e q u e n c e o r a n d o m n u m b e r s g e n e r a t e d b t h R N f u n c t i o n ( s e e s t e p 1 o t h D i s c o v e r y E x e r c i s e s ) . I t i s g o o d p r a c t i c e t w r i t e p r o g r a m s i n i t i a l l ys o t h a t t h e y w i l l g e n e r a t e t h s a m e s e q u e n c e o r a n d o m n u m b e r s e a c h

Page 268: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 268/348

t i m e t h e y a r e r u n . O n c e y o a r s u r e t h a t t h e p r o g r a m i w o r k i n gc o r r e c t l y , y o c a m o d i f y t h p r o g r a m t g e n e r a t e t r u l y r a n d o mn u m b e r s .

1 - W O R K I N G W I T H P R O G R A M E X A M P L E SE x a m p l e F l i p p i n g C o i n sO n o t h e a s i e s t a p p l i c a t i o n s o f r a n d o m n u m b e r s i c o i n - t o s s i n gs i m u l a t i o n . S u p p o s e y o u w a n t t w r i t e p r o g r a m t h a t w i l l p r o d u c e

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 5

N o o p e n t h l o o p t g e n e r a t e t h 1 t o s s e s o f t h e c o i n .

1 2 F O 1 = T 1

T h n e x t s t e p i t g e n e r a t e 0 a n I r a n d o m l y . A s s u m e t h a tm e a n s " h e a d s " a n m e a n s " t a i l s . " S t u d y t h n e x t p r o g r a m

s t a t e m e n t u n t i l y o a r e s u r e i w i l l p r o d u c e 0 a n I r a n d o m l y .

1 3 L E X = I N T < 2 * R N D < 1 > >

N o p r o g r a m t h c o m p u t e r t a n a l y z e t s e w h e t h e r h e a d ( 0 o r t a i l ( 1 h a o c c u r r e d .

1 4 I X = T H E N 1 7

Page 269: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 269/348

1 5 P R I N T I , " T "1 6 G O T O 1 8 1 7 P R I N T I j " H "1 8 N E X T

A l t h a t r e m a i n s n o i t h E N s t a t e m e n t .

1 9 E N

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

2 5 6 H a n d s - o n B A S I C

E x a m p l e R a n d o m I n t e g e r sT h n e x t p r o b l e m i t w r i t e B A S I C p r o g r a m t g e n e r a t e a n p r i n t5 r a n d o m i n t e g e r s o v e r t h r a n g e 1 t 1 5 T h o n l y p a r t o f t h ep r o g r a m t h a t r e q u i r e s m u c h t h o u g h t i t h s t a t e m e n t t g e n e r a t e t h r a n d o m i n t e g e r s , s c o n c e n t r a t e o t h a t s t a t e m e n t .

R e m e m b e r t h a t R N D ( l ) g e n e r a t e s n u m b e r s o v e r t h r a n g et 1 T h u s , 6 * R N D ( 1 ) w i l l g e n e r a t e n u m b e r s i t h r a n g e

t 6 A c t u a l l y t h u p p e r l i m i t i 5 . 9 9 9 9 9 9 9 9 . Y o u s t h i t e g e r f u n c t i o n t c o n v e r t f r o m r a n d o m n u m b e r s t r a n d o m i n t e g e r s .I N T ( 6 * R N D ( 1 ) ) w i l l p r o d u c e t h i n t e g e r s 0 , 1 , 2 , 3 , 4 , r a n d o m l y .N o i i c l e a r t h a t t g e t h e d e s i r e d n u m b e r s , y o m u s t a d 1 0 T h u s , t h e x p r e s s i o n I N T ( 6 * R N D ( 1 ) ) 1 w i l l p r o d u c e t h n u m b e r sy o w a n t .

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

Page 270: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 270/348

1 8 F O 1 = T O 5 81 1 L E Y = I N T < 6 * R N D < 1 > > 1 1 2 P R I N T Y 1 3 N E X T1 4 E N

E x a m p l e D i s t r i b u t i o n o R a n d o m N u m b e r sS u p p o s e y o g e n e r a t e g r e a t n u m b e r o i n t e g e r s a r a n d o m o v e r t h

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 5

N e x t , o p e n l o o p t g e n e r a t e 1 0 0 0 n u m b e r s , g e n e r a t e t h r a n d o m i n t e g e r s , t h e n u s t h i n t e g e r s a s u b s c r i p t s t i n c r e m e n t t h a p p r o p r i a t e c o u n t e r s i t h a r r a y .

1 4 F O 1 = T 1 0 0 01 5 L E Y = I N T < 1 0 * R N D < 1 > >1 6 L E X < Y > = X ( Y >1 7 N E X T

N o a l t h a t r e m a i n s i t p r i n t o u t h c o n t e n t s o t h a r r a y X

1 3 F O J = l T O 1 1 9 P R I N T J , X < J >2 0 N E X T2 1 0 E N D

Page 271: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 271/348

T h c o m p l e t e p r o g r a m f o l l o w s :

1 0 D I X < 1 0 >1 1 F O 1 = T 1 1 2 L E X < I > = 01 3 N E X T1 4 F O 1 = T O 1 0 0 01 5 L E Y = I N T ( 1 0 * R N D < 1 > >1 6 L E X < Y ) = X < Y >1 7 N E X T

2 5 H a n d s - o n B A S I C

L i n e 1 5 a s s i g n s a i n t e g e r v a l u e r a n d o m l y c h o s e n f r o m 1 2 3 a n 4 L i n e s 1 6 t h r o u g h 2 0 u s t h v a l u e o t d e c i d ew h e t h e r t h n e x t t i l e y o u w a l k o n i u p d o w n , r i g h t , o l e f t . L i n e2 3 " w a l k s " o t h t i l e b p r i n t i n g s q u a r e . L i n e s 2 0 a n 2 1 s t a r t t h p r o c e s s o v e r a g a i n i y o u w a l k o f t h t i l e d f l o o r . O n c ea g a i n t h c u r s o r p l a c e m e n t s u b r o u t i n e s t a r t i n g i l i n e 1 0 0 0 i u s e dt p o s i t i o n t h e c u r s o r p r i o r t p r i n t i n g t h s q u a r e c h a r a c t e r .

1 0 P R I N T C H R $ < 1 4 7 )1 1 L E R = 1 31 2 L E C = 2 01 3 C O S U B 1 0 0 01 4 P R I N T C H R $ < 1 8 ) ; " 1 5 L E A = I N T < 4 * R N D < 1 > > + 11 6 I A = T H E N R = R - 11 7 I A = T H E N R = R + 1

Page 272: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 272/348

1 8 I A = 3 T H E N C = C - 11 9 I A = T H E N C = C + 12 0 I R < O R > 2 5 T H E N 1 0 2 1 I C < 1 O R C > 4 0 T H E N 1 0 2 2 G 0 S U B 1 0 0 02 3 P R I N T C H R $ < 1 8 ) ; " 2 4 0 G O T O 1 5 2 5 0 E N D1 0 0 0 R E C U R S O R P L A C E M E N T S U B R O U T I N E1 0 1 0 I R < O R > 2 5 O C < O C > 4 0

R a n d o m N u m b e r s a n d S i m u l a t i o n s 2 5

E x a m p l e R a n d o m C o l o r sT h i s p r o g r a m c o l o r s r e c t a n g l e i t h e c e n t e r o t h e s c r e e n w i t hs q u a r e s o r a n d o m c o l o r a n p o s i t i o n . T h h e a r t o t h p r o g r a mi i l i n e s 2 2 0 , 2 3 0 , a n d 2 4 0 w h e r e t h e i n t e g e r v a l u e d f u n c t i o n sd e f i n e d i l i n e s 1 8 0 , 1 9 0 , a n 2 0 a r u s e d t d e t e r m i n e t h e c o l o ra n r o a n c o l u m n p o s i t i o n o s q u a r e . T h f u n c t i o n s a r F N C ,F N R O W , a n F N C O L . F N r e t u r n s r a n d o m i n t e g e r c h o s e n f r o mt h n u m b e r s t h r o u g h 8 F N R O W r e t u r n s r a n d o m i n t e g e r f r o mt h r o u g h 1 6 a n F N C O L r e t u r n s r a n d o m i n t e g e r f r o m 1 t h r o u g h2 4 L i n e 2 7 p r i n t s t h c o l o r e d s q u a r e o t h s c r e e n . T h p r o g r a mf o l l o w s w i t h o u t t h n e c e s s a r y c u r s o r p l a c e m e n t s u b r o u t i n e , w h i c hs h o u l d s t a r t a t l i n e 1 0 0 0 .

1 9 R E C R E A T E T H C O L O R A R R A Y1 1 F O 1 = T 1 2 R E A D C < I >

Page 273: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 273/348

1 3 N E X T1 4 D A T A 1 4 4 , 5 , 2 8 , 1 5 9 , 1 5 6 , 3 0 , 3 1 , 1 5 81 5 R E C L E A R T H S C R E E N1 6 P R I N T C H R $ < 1 4 7 > ;1 7 R E D E F I N E T H C O L O R , R O N A N D C O L U M NR A N D O M N U M B E R F U N C T I O N S1 8 D E F N C < I > = I N T < 8 * R N D < 1 > ) + l1 9 D E F N R O k K I > = I N T < 1 0 * R N D < 1 > > + 2 0 0 D E F F N C O L < I > = I N T < 1 0 * R N D < 1 ) > + 1 5

2 6 H a n d s - o n B A S I C

p r o b l e m w i t h t h f o l l o w i n g s t r a t e g y . B g e n e r a t i n g r a n d o m i n t e g e r so v e r t h r a n g e t 3 6 5 , y o c a s i m u l a t e a b i r t h d a y f o e a c h o t h s t r a n g e r s . I y o u s o n e - d i m e n s i o n a l a r r a y f o r t h e b i r t h d a y sa t h e y a r g e n e r a t e d , i i e a s y t c h e c k f o i d e n t i c a l b i r t h d a y s .B e g i n n i n g w i t h t h f i r s t b i r t h d a y B ( l ) , p r o g r a m t h c o m p u t e r t c h e c k i i m a t c h e s a n y o t h r e m a i n i n g o n e s . T h e n h a v e t h c o m p u t e r c h e c k B ( 2 ) i t h s a m e w a y , a n s o o n .

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

1 0 D I B < 5 0 )1 1 F O 1 = T O 5 01 2 L E B ) = I N T < 3 6 5 * R N D < ) 1 3 N E X T1 4 L E T F = 01 5 F O 1 = T O 4 9

Page 274: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 274/348

1 6 F O J = I + 1 T O 5 01 7 I B < I ) < B < J ) T H E N 1 9 1 8 L E T F = F + 11 9 N E X T2 0 N E X T2 1 P R I N T " N U M B E R O B I R T H D A Y P A I R S I S " . ; F2 2 0 E N D

O c o u r s e , l i n e 1 0 m e r e l y d i m e n s i o n s a a r r a y f o 5 e l m e n t s . L i n e s 1 1 t h r o u g h 1 3 l o a d t h a r r a y w i t h r a n d o m i n t e g e r s

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 6

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

1 1 - 5 P R O B L E M S1 W r i t e p r o g r a m t g e n e r a t e a n p r i n t 2 r a n d o m n u m b e r s l i k e 5 .

o f t h e f o r m X . w h e r e a n a r d i g i t s s e l e c t e d r a n d o m l y f r o mt h s e t 0 , 1 , 2 3 . . . , 9

2 W r i t e p r o g r a m t g e n e r a t e a n p r i n t 5 i n t e g e r s s e l e c t e d a r a n d o mf r o m t h r a n g e 1 t 2 5

3 W h a t w i l l b p r i n t e d i t h f o l l o w i n g p r o g r a m i r u n ?1 9 F O N = T O 2 01 1 P R I N T I N K 2 0 * R N D < > + V 1 B B1 2 N E X T1 3 E N

Page 275: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 275/348

4 I y o r u t h f o l l o w i n g p r o g r a m , w h a t w i l l y o s e o t h s c r e e n ?1 0 F O 1 = T 1 1 1 P R I N T I N T < 1 B 8 * R N D < 1 ) > « ' 1 B1 2 N E X T1 3 E N

5 W r i t e p r o g r a m t h a t w i l l s i m u l a t e t o s s i n g c o i n , 1 0 5 0 5 0 0 , a n 1 0 0 0 t i m e s . I e a c h c a s e , p r i n t t h t o t a l n u m b e r o h e a d s a n t a i l s

2 6 H a n d s - o n B A S I C

1 0 S u p p o s e b a s k e t c o n t a i n s c o l o r e d g o l f b a l l s . T h e r e a r 1 r e d ,b l u e , g r e e n , a n 1 y e l l o w b a l l s . W r i t e p r o g r a m t s i m u l a t ed r a w i n g f i v e b a l l s a r a n d o m f r o m t h e b u c k e t . T h b a l l s a r d r a w ni s e q u e n c e a n a r n o r e p l a c e d a f t e r b e i n g d r a w n .

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

1 2 S u p p o s e s o a p m a n u f a c t u r e r d e c i d e s t s e l e c t f i v e c h a r a c t e r b r a n dn a m e . T h f i r s t , t h i r d , a n f i f t h c h a r a c t e r s a r s e l e c t e d a r a n d o mf r o m t h l e t t e r s B C D F G H J K L M N P Q R S T V W X Y Z . T h s e c o n d a n f o u r t h l e t t e r s a r s e l e c t e d a r a n d o m f r o m t h v o w e l s A E I O U . W r i t e

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

Page 276: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 276/348

1 3 M o d i f y t h p r o g r a m f r o m p r o b l e m t s i m u l a t e t o s s i n g p a i r o fd i c e 1 0 0 0 t i m e s . P r i n t o u t h n u m b e r o t i m e s e a c h o t h 1 p o s s i b l e o u t c o m e s h a p p e n e d i t h s i m u l a t i o n .

1 1 - 6 P R A C T I C E T E S T1 W r i t e p r o g r a m t g e n e r a t e a n p r i n t o u 1 0 r a n d o m i n t e g e r s

s e l e c t e d f r o m t h s e 1 2 3 a n 4 2 W r i t e p r o g r a m t g e n e r a t e a n p r i n t 1 0 r a n d o m n u m b e r s o v e r

R a n d o m N u m b e r s a n S i m u l a t i o n s 2 6

4 W h a t w i l l b p r i n t e d i y o r u t h f o l l o w i n g p r o g r a m ?

1 6 F O J = l T O1 1 P R I N T I N T < 1 0 0 0 * R N D C1 2 N E X T1 3 E N

Page 277: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 277/348

Page 278: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 278/348

C H A P T E R 1

F I L E S

1 2 - 1 O B J E C T I V E SY o c a u s f i l e s s a v e d o d i s k e t t e t o s t o r e a n r e t r i e v e c o l l e c t i o n s o i n f o r m a t i o n . I t h i s c h a p t e r y o w i l l l e a r n t u s f i l e s t m a n i p u l a t ec o l l e c t i o n s o i n f o r m a t i o n .

Page 279: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 279/348

O p e n i n g a n d C l o s i n g I n f o r m a t i o n P a t h sB e f o r e y o c a s t o r e i n f o r m a t i o n t f i l e , y o h a v e t c r e a t e p a t ht u s i t r a n s f e r r i n g i n f o r m a t i o n f r o m t h c o m p u t e r t t h e d i s kd r i v e . Y o w i l l l e a r n t c r e a t e a n d i s m a n t l e t h e s e p a t h s .

W r i t i n g I n f o r m a t i o n t F i l eY o w i l l l e a r n t c r e a t e f i l e s i w h i c h t s t o r e i n f o r m a t i o n .

2 6 H a n d s - o n B A S I C

r e q u i r e s m a n y t e c h n i q u e s a n c o n c e p t s l e a r n e d i p r e v i o u s c h a p t e r s .1 T u r n o y o u r T s e t , d i s k d r i v e , a n c o m p u t e r . P l a c e a f o r m a t t e d

d i s k i t h d r i v e . ( S e e c h a p t e r 3 . C l e a r t h m e m o r y .2 D n o u s a a a b b r e v i a t i o n f o P N i t h e s e e x e r c i s e s . T y p e

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

9 O P E N 1 5 , 8 , 1 51 0 O P E N 2 , 3 , 2 , " G I F T L I S T , L , " C H R $ < 5 1 1 P R I N T " N A M E :1 2 I N P U T N A M E S1 3 P R I N T " A M O U N T : " 1 4 I N P U T A M T1 5 P R I N T # 1 5 , I I P " C H R $ < 2 > C H R $ < 3 > C H R $ < 0 ) C H R $ < 1 1 6 P R I N T # 2 , N A M E S ; " ; A M T1 7 C L O S E

Page 280: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 280/348

1 3 C L O S E 1 1 3 E N r e c o r d i s t r u c t u r e d s e o i n f o r m a t i o n . I o r d e r t o s t o r e r e c o r d

o d i s k e t t e , y o u m u s t b a b l e t o t r a n s f e r t w t y p e s o i n f o r m a t i o n :i n f o r m a t i o n a b o u t p l a c e m e n t o t h r e c o r d a n t h i n f o r m a t i o n i t h e r e c o r d . L i n e 9 e s t a b l i s h e s p l a c e m e n t i n f o r m a t i o n p a t h . L i n e1 0 e s t a b l i s h e s r e c o r d i n f o r m a t i o n p a t h . T h e s e t w p a t h s t o g e t h e rw i l l b c a l l e d t h i n f o r m a t i o n p a t h . T h 1 5 i l i n e s 9 0 1 5 0 , a n 1 8 r e f e r t o t h p l a c e m e n t i n f o r m a t i o n p a t h . T h 2 i l i n e s 1 0 0 ,

F i l e s 2 6

4 S a v e t h i s p r o g r a m a s U R I T E D I S K . ( S e e c h a p t e r 3 .

5 T y p e

L 0 A D " $ " , 8L I S T

t o b t a i n l i s t o f i l e s a n d p r o g r a m s o y o u r d i s k e t t e . C o m m o d o r e6 B A S I C p r o g r a m s a r i d e n t i f i e d o t h l i s t b P R i t h t h i r d c o l u m n . W h a t l e t t e r s a r i t h e t h i r d c o l u m n f o r t h e f i l eG I F T L I S T ?

R E s t a n d s f o r e l a t i v e , t h t e c h n i c a l n a m e f o t h t y p e o f i l e y o

Page 281: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 281/348

a r e u s i n g .

6 C l e a r t h m e m o r y a n t y p e i t h f o l l o w i n g p r o g r a m .

9 O P E N 1 5 , 8 , 1 51 8 O P E N 2 , 8 , 2 , " G I F T L I S T , L , " C H R $ < 5 8 >1 1 P R I N T # 1 5 , " P " C H R $ < > C H R $ < > C H R $ < ) C H R $ <1 2 I N P U T # 2 , N A M E S , A M 1 3 C L O S E

Page 282: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 282/348

F i l e s 2 6

1 2 I N P U T N A M E S1 2 I N A M E $ = " Q U I T " T H E N C L O S E 2 = C L O S E 1 5 = E N D1 3 P R I N T " A M O U N T : « ■ 1 4 I N P U T A M T1 5 P R I N T # 1 5 , " P " C H R $ < > C H R $ < > C H R $ < > C H R $ <1 6 P R I N T # 2 , N A M E S ; " , " ; A M 1 7 C L O S E1 8 C L O S E 1 1 8 L E 1 = 1 8 G O T O 9 1 9 E N

R u t h p r o g r a m . A t h i n p u t p r o m p t , e n t e r t h f o l l o w i n g n a m e sa n a m o u n t s :

A N 1 5

Page 283: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 283/348

B O 3 J A C K 7 S U 4

N o t i c e t h a t t h a m o u n t s a r a b o v e a n b e l o w 5 0 W h a t d o y o u t y p et e n t h i n f o r m a t i o n e n t r y ?

Page 284: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 284/348

Page 285: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 285/348

2 7 2 H a n d s - o n B A S I C

R u t h p r o g r a m . D o e s t h e d i s p l a y a g r e e w i t h t h i n f o r m a t i o n y o w r o t e t t h f i l e ?

Y o m a w i s h t d i s p l a y t h p r o g r a m a n s t u d y i t 1 8 N o a d u s o m e t h i n g s . D i s p l a y t h p r o g r a m . D e l e t e l i n e 1 6 0 .

C h a n g e l i n e s 7 0 1 3 4 , a n d 1 5 0 a f o l l o w s .

7 L E S U M = 81 3 L E S U M = S U M A M 1 5 P R I N T " T O T A L G I F T S U I " . S U

D i s p l a y t h p r o g r a m . R u t h p r o g r a m . W h a t w a t h t o t a l o f t h eg i f t s i t h i n f o r m a t i o n y o e n t e r e d ?

Page 286: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 286/348

D e l e t e l i n e 1 3 5 . R u t h p r o g r a m . I t h i n f o r m a t i o n i e a c h r e c o r dp r i n t e d o u t h i s t i m e ?

1 9 T h a t e n d s t h D i s c o v e r y E x e r c i s e s . T u r n o f t h c o m p u t e r a n d t h T s e t . R e m o v e t h d i s k e t t e a n t u r n o f t h d i s k d r i v e . G o t

F i l e s 2 7

o p e n a n c l o s e t h t w p a r t s o t h i n f o r m a t i o n p a t h f o t h f i l eF I L E O N E . L i n e 2 0 o p e n s t h p l a c e m e n t i n f o r m a t i o n p a t h w h i l e l i n e3 0 o p e n s t h r e c o r d i n f o r m a t i o n p a t h f o t h f i l e F I L E O N E . L i n e3 0 c r e a t e s t h f i l e , i n e c e s s a r y , a r e l a t i v e ( R E L ) f i l e , t h e t y p e o f i l e w h a v e u s e d i t h D i s c o v e r y E x e r c i s e s . A l s o , i l i n e 3 0 0 , e a c hr e c o r d i F I L E O N E i g i v e n l e n g t h 7 b t h L a n d C H R $ ( 7 0 ) .L i n e s 4 0 a n d 5 0 0 c l o s e t h i n f o r m a t i o n p a t h f o F I L E O N E b c l o s i n g i t p a t h s a n 1 5

W i l t i n g I n f o r m a t i o n t F i l e

O n c e a i n f o r m a t i o n p a t h t f i l e i o p e n e d , y o c a w r i t e t t h f i l e o r e a d f r o m i t T w r i t e t f i l e , y o u s P R I N T # s t a t e m e n tw i t h f o u r C H R $ f u n c t i o n s t o l o c a t e t h e r e c o r d t w h i c h y o w i s h t w r i t e . F o e x a m p l e ,

1 1 P R I N T # 1 5 , " P 1 I C H R $ < 2 ) C H R $ C 3 ) C H R $ < 8 ) C H R $ < 1

Page 287: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 287/348

u s e s t h p l a c e m e n t i n f o r m a t i o n p a t h t l o c a t e t h f i l e a s s o c i a t e d w i t hr e c o r d i n f o r m a t i o n p a t h a n p l a c e s ( " P " ) t h f i l e a r e c o r d 3 T h C H R $ ( 1 ) a t h e n o l i n e 1 1 i n d i c a t e s t h a t y o w i s h t o a c c e s sr e c o r d s t a r t i n g a p o s i t i o n 1 T h t h i r d C H R $ f u n c t i o n i u s e do n l y i m o r e t h a n 2 5 r e c o r d s n e e d t b a c c e s s e d . S e p a g e 3 o t h V T C - 2 5 4 2 S i n g l e D r i v e F l o p p y D i s k U s e r ' s M a n u a l f o r f u r t h e ri n f o r m a t i o n .

T w r i t e i n f o r m a t i o n t t h f i l e , a n o t h e r P R I N T # s t a t e m e n t

2 7 H a n d s - o n B A S I C

9 8 L E T 1 = 1 9 O P E N 1 5 , 8 , 1 51 1 O P E N 4 , 8 , 4 , " Q U I Z l , L , " C H R $ < 5 1 2 P R I N T " F I R S T N A M E " 1 3 I N P U T F I R S T N A M E S1 4 I F I R S T N A M E $ = " Q U I T " T H E N C L O S E 4 C L O S E 1 5 = E N D1 5 P R I N T " L E T T E R G R A D E = " 1 6 I N P U T G R A D E S1 7 P R I N T # 1 5 , " P " C H R $ ( 4 ) C H R $ < I > C H R $ < > C H R $ <1 8 P R I N T # 4 , F I R S T N A M E S . ; " , " ; G R A D E S1 9 L E 1 = 2 8 C L O S E2 1 C L O S E 1 2 2 0 G O T O 1 0 2 3 0 E N D

Page 288: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 288/348

I l i n e 1 0 0 a n d 1 1 0 , t h i n f o r m a t i o n p a t h t Q U I Z l i e t a b l i s h e d , ( f i l e Q U I Z l i c r e a t e d i n e c e s s a r y ) a n e a c h r e c o r d i a s s i g n e d a l e n g t h o 5 c h a r a c t e r s . I l i n e 1 7 0 , r e c o r d i l o c a t e d .I l i n e 1 8 0 , F I R S T N A M E S , c o m m a , a n G R A D E S a r w r i t t e nt r e c o r d o f t h e f i l e a s s o c i a t e d w i t h r e c o r d i n f o r m a t i o n p a t h( Q U I Z l ) . L i n e 2 1 a n 2 2 t e r m i n a t e t h i n f o r m a t i o n p a t h .

U s e t w o P R I N T # s t a t e m e n t s t w r i t e t f i l e .

F i l e s 2 7

L i n e 1 2 i s i m i l a r t o l i n e 1 7 i t h p r e v i o u s p r o g r a m . I l o c a t e s t h f i l e a s s o c i a t e d w i t h r e c o r d i n f o r m a t i o n p a t h ( Q U I Z 1 )a n p l a c e s t h a t f i l e a r e c o r d I p o s i t i o n 1 R e c a l l t h a t w i t h o u t t h i n s t r u c t i o n i l i n e 1 6 0 , t h c o m p u t e r w o u l d d i s p l a y n o t h i n g o t h s c r e e n . T h I N P U T # s t a t e m e n t i l i n e 1 5 o n l y r e a d s i n f o r m a t i o ni n t o t h v a r i a b l e s . W h a t i t h e n d o n e w i t h t h v a r i a b l e s d e p e n d s o t h e d e s i r e d o u t c o m e . A g a i n , P R I N T # a n I N P U T # a r p a i r .

U s P R I N T # a n I N P U T # s t a t e m e n t s t r e a d f i l e .

A e r r o r n u m b e r i r e c o r d e d o t h p l a c e m e n t i n f o r m a t i o np a t h ( 1 5 ) f o r e a c h d i s k a c c e s s . Y o c a r e a d t h e e r r o r n u m b e r w i t ha I N P U T # 1 5 s t a t e m e n t . I n e r r o r o c c u r s , t h e e r r o r n u m b e r i 0 I l i n e 1 3 0 , y o l o o k a t h p l a c e m e n t i n f o r m a t i o n p a t h t f i n dt h e e r r o r n u m b e r ( E R R N U M ) o t h l a s t d i s k a c c e s s . I l i n e 1 4 0 ,y o d e t e r m i n e w h e t h e r t h e e r r o r n u m b e r i 5 ( t h e R E C O R D N O

Page 289: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 289/348

P R E S E N T e r r o r ) . I t h r e c o r d i p r e s e n t , t h e n y o h a v e r e a c h e d t h e n o t h f i l e o r e c o r d s a n t h t w p a r t s o f t h e i n f o r m a t i o n p a t ha r c l o s e d .

M o r e e l a b o r a t e r e l a t i v e f i l e s t r u c t u r i n g t e c h n i q u e s a n e r r o rh a n d l i n g t e c h n i q u e s a r i t h V T C - 2 5 4 1 S i n g l e D r i v e F l o p p y D i s kU s e r ' s M a n u a l . Y o w i l l e x p l o r e s o m e o t h e s e t e c h n i q u e s .

A n o t h e r k i n d o f i l e , c a l l e d s e q u e n t i a l f i l e , i s a l s o a v a i l a b l ei C o m m o d o r e 6 B A S I C . Y o h a v e s e e n t h a t r e l a t i v e ( a l s o c a l l e d

Page 290: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 290/348

F i l e s 2 7

3 1 G O S U B 2 8 0 03 2 C L O S E3 3 C L O S E 1 3 4 E N 1 0 0 0 R E C H E C K R E C O R D N O P R E S E N T E R R O R1 0 1 0 I N P U T # 5 , E R R N U M , E R R N A M E $1 0 2 0 I E R R N U M = 5 0 O E R R N U M = 0 T H E N R E T U R N1 0 3 0 P R I N T E R R N U M , E R R N A M E $1 0 4 0 C L O S E1 0 5 0 C L O S E 1 1 0 6 0 E N 1 0 7 0 R E T U R N2 0 0 0 R E M P L A C E N U M B E R O R E C O R D S A N 2 0 1 0 R E R E C O R D L E N G T H I R E C O R D2 0 2 0 P R I N T # 1 5 , " P " C H R $ < 2 ) C H R $ < > C H R $ < > C H R $ <2 0 3 0 G O S U B 1 0 0 02 0 4 0 P R I N T # 2 , 1 - 1 ; " , " i 1 2 0

Page 291: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 291/348

2 0 5 0 R E T U R NS a v e t h i s p r o g r a m a E N T E R D A T A . Y o w i l l u s i a g a i n .

E x a m p l e A d R e c o r d s P r o g r a mT h i s p r o g r a m a l l o w s y o t a d r e c o r d s t a g i v e n f i l e . T h p r o g r a m c a l l s f o s m a l l m o d i f i c a t i o n o t h p r e v i o u s p r o g r a m ,E N T E R D A T A . T h m o d i f i c a t i o n i s i m p l y t h e d e l e t i o n o f l i n e 1 0

Page 292: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 292/348

F i l e s 2 7

T h c o m p l e t e p r o g r a m f o l l o w s .

1 0 L E 1 = 1 1 O P E N 1 5 , 8 , 1 51 2 O P E N 2 , 8 , 2 , " M A I L L I S T , L , " C H R S C 1 2 0 )1 2 R E M R E A D I L A S T R E C O R D N U M B E R1 3 P R I N T # 1 5 , " P " C H R $ < > C H R $ < > C H R $ < > C H R $ < 1 1 4 I N P U T # 2 , R E C N U M1 4 R E R E A D I R E C O R D1 5 P R I N T # 1 5 , " P " C H R $ < 2 > C H R $ < > C H R $ < ) C H R $ < 1 1 6 I N P U T # 2 , F I R S T S , L A S T $ , S T R E E T S , C I T Y S ,Z I P $ , B A L1 6 R E P R I N T O U L A B E L1 7 P R I N T F I R S T S ; " , " ; L A S T S1 8 P R I N T S T R E E T S1 9 P R I N T C I T Y S ; " C A " j Z I P S2 0 P R I N T

Page 293: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 293/348

2 1 P R I N T2 2 0 L E T 1 = 2 3 I < R E C N U M T H E N 1 5 2 4 C L O S E2 5 C L O S E 1 2 6 E N

S a v e t h i s p r o g r a m a L A B E L S .

Page 294: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 294/348

F i l e s 2 8

1 9 I N P U T N A M E S2 8 I N A M E $ = " Q U I T " T H E N C L O S E 2 C L O S E 1 5 = E N D2 1 F O J = T R E C N U M2 2 P R I N T # 1 5 , " P " C H R $ < : > C H R $ < > C H R $ < > C H R $ <2 3 G O S U B 2 0 0 02 4 0 I N P U T # 2 , F I R S T S , L A S T S , S T R E E T S , C I T Y S ,Z I P $ , B A L2 5 I N A M E $ = L A S T $ T H E N 2 9 2 6 N E X T2 7 P R I N T " N M A T C H F O U N D "2 8 G O T O 1 5 2 9 P R I N T C H R $ < 1 4 7 )3 0 P R I N T " 1 " i F I R S T S3 1 P R I N T " 2 " ; L A S T S3 2 P R I N T " 3 " > S T R E E T S3 3 P R I N T " 4 " j C I T Y S

Page 295: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 295/348

3 4 P R I N T " 5 " ; Z I P $3 5 P R I N T " 6 " ; B A L3 6 P R I N T " ? E X I T "3 7 P R I N T " W H A T I T H N U M B E R O T H E "3 8 P R I N T " I T E M Y O U W I S H T M O D I F Y " 3 9 0 I N P U T4 0 I N < 1 O R N > T H E N 2 9 4 1 O G O S U B 5 0 0 , 6 0 0 , 7 0 0 , 8 0 0 , 9 0 0 , 1 0 0 0 , 4 8 0 0

Page 296: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 296/348

F i l e s 2 8

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

1 A D N E R E C O R D2 C O M P L E T E S E O L A B E L S3 S E L E C T E D S E O L A B E L S4 M O D I F Y R E C O R D5 E X I T T H E P R O G R A MT h b e g i n n i n g o f t h e p r o g r a m f o l l o w s .

1 8 P R I N T " 0 E N T E R R E C O R D S F O R T H EF I R S T T I M E "1 1 P R I N T " 1 A D N E R E C O R D "1 2 P R I N T " 2 C O M P L E T E S E O L A B E L S "1 3 P R I N T " 3 S E L E C T E D S E O L A B E L S "1 4 P R I N T " 4 M O D I F Y R E C O R D "1 5 P R I N T " 5 E X I T T H P R O G R A M "

Page 297: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 297/348

1 6 P R I N T " C H O O S E N U M B E R " 1 7 I N P U T1 8 I N = T H E N E N 1 9 I N = T H E N 1 0 0 0 02 0 O G O T O 1 1 0 0 0 . 1 2 0 0 0 . 1 3 0 0 0 . 1 4 0 0 0

E a c h o f t h e f i v e s u b p r o g r a m s s h o u l d b r e n u m b e r e d a i i g a t h e r e d i n t o t h l a r g e p r o g r a m a n R E M A R K s t a t e m e n t s h o u l d

2 8 H a n d s - o n B A S I C

E x a m p l e P r e c i s i o n R e c o r d A c c e s sI n t h e p r e v i o u s e x a m p l e s , y o u s e d t h P R I N T # a n I N P U T # c o m a n d s t w r i t e t a n r e a d f r o m a r e c o r d i f i l e u s i n g c o m m a sa i t e m s e p a r a t o r s . Y o d i n o c o n c e r n y o u r s e l f w i t h t h p r e c i s el o c a t i o n o e a c h i t e m i r e c o r d . I t h i s e x a m p l e , y o w i l l p l a c ee a c h d a t a i t e m ( o f i e l d ) o r e c o r d i s p e c i f i e d p o s i t i o n i t h r e c o r d . Y o w i l l u s t h l a s t C H R $ f u n c t i o n i t h " P P R I N T #s t a t e m e n t t d t h i s . A d d i t i o n a l c h e c k i n g o t h l e n g t h o s t r i n g sw i l l b n e c e s s s a r y t a v o i d o n f i e l d o v e r r u n n i n g t h n e x t f i e l d .

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

1 8 O P E N 1 5 , 8 , 1 51 1 O P E N 2 , 8 , 2 , " E X A M P L E , L , " C H R $ < 4 8 >1 2 R E A D D E S $ , P R I C E , C O L R $

Page 298: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 298/348

1 3 D A T A S W I M S U I T , 2 7 . 5 8 , B L U E1 4 R E M P A D S T R I N G U A R I A B L E S W I T H S P A C E S1 5 L E T S P A C E S $ = "1 6 L E D E S $ = M I D $ < D E S $ , 1 1 1 7 L E P A D = 1 4 L E N C D E S S )1 8 L E D E S $ = D E S $ M I D $ < S P A C E S S , 1 P A 1 9 L E C O L R $ = M I D $ < C O L R $ , 1 , 7 )2 0 0 L E T P A D = 7 L E N < C O L R $ >

F i l e s 2 8

3 4 R E M R E A D U A L U E S F R O M F I L E T F D E S $ ,F P R I C E . F C O L R S ( B E G I N A 2 N P O S I T I O N )3 5 L E P = 3 6 G O S U B 2 0 0 03 7 I N P U T # 2 , F D E S $3 8 L E P = 1 73 9 G O S U B 2 0 0 04 0 I N P U T # 2 , F P R I C E4 1 0 L E T P = 3 34 2 G O S U B 2 0 8 04 3 I N P U T # 2 , F C 0 L R $4 4 P R I N T4 5 P R I N T " U A L U E S R E A D F R O M F I L E "4 6 P R I N T F D E S $ , F P R I C E , F C O L R $4 7 C L O S E4 8 C L O S E 1 4 9 E N

Page 299: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 299/348

2 0 0 0 R E M L O C A T E P O S I T I O N P I R E C O R DS U B R O U T I N E2 0 1 0 P R I N T # 1 5 , " P " C H R $ < 2 > C H R $ < 5 ) C H R $ < 0 )C H R $ < P >2 0 2 0 R E T U R N

1 2 - 5 P R O B L E M S

2 8 H a n d s - o n B A S I C

5 W r i t e p r o g r a m t h a t w i l l u s f i l e c a l l e d C H A R G E t m a n a g e y o u rc h a r g e c a r d s . E a c h r e c o r d s h o u l d h a v e t h f o l l o w i n g s t r u c t u r e .

V a r i a b l e D e s c r i p t i o n A p p r o x i m a t e L e n g t hC A R D S N a m e o C a r d 2 N A M E S N a m e o S t o r e 3 D A T E S D a t e o P u r c h a s e 1 D E S S D e s c r i p t i o n o P u r c h a s e 5 A M A m o u n t o P u r c h a s e

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

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

Page 300: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 300/348

f r i e n d s a w o r k .1 2 - 6 P R A C T I C E T E S T

1 I t h f o l l o w i n g p r o g r a m i e x e c u t e d

9 O P E N 1 5 , 8 , 1 5i 9 O P E N 2 , 8 , 2 , " F I L E T N 0 . . L , C H R $ < 7 0 >

F i l e s 2 8

d W h i c h r e c o r d w i l l b w r i t t e n t o

2 W r i t e p r o g r a m l i n e t h a t o p e n s r e l a t i v e f i l e n a m e d I N V E N T O R Yw i t h r e c o r d l e n g t h 4 5 .

3 W r i t e p r o g r a m t h a t w i l l r e a d f i v e i n f o r m a t i o n i t e m s f r o m r e c o r d7 i r e l a t i v e f i l e n a m e d T E S T 1 w i t h r e c o r d l e n g t h 5 0 . B s u r e t c l o s e t h f i l e .

Page 301: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 301/348

4 W h a t i w r o n g w i t h t h f o l l o w i n g p r o g r a m l i n e ?

2 0 O P E N 2 , 8 , 2 , " F I L E O N E , L " , C H R $ < 7 0 )

g

Page 302: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 302/348

A P P E N D I X

O T H E R C O N F I G U R A T I O N S

C o m m o d o r e 6 w i t h o u t D i s k D r l y eT h i s b o o k c a n b e u s e d e f f e c t i v e l y w i t h o u t d i s k d r i v e . C h a p t e r1 o f i l e s , h o w e v e r , m u s t b o m i t t e d a l o n g w i t h t h s e c t i o n s o C h a p t e r o p r o g r a m m a n a g e m e n t .

C o m m o d o r e 6 w i t h C o m m o d o r e D a t a c a s s e t t e R e c o r d e rI C h a p t e r 3 y o m a u s D a t a c a s s e t t e r e c o r d e r i n s t e a d o f

Page 303: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 303/348

d i s k d r i v e t s t o r e a n r e t r i e v e p r o g r a m s . Y o m u s t r e f e r t t h C o m m o d o r e 6 U s e r ' s G u i d e f o r i n s t r u c t i o n s o h o t u s t h D a t a c a s s e t t e r e c o r d e r t d t h i s .

T h c h a p t e r o f i l e s r e q u i r e s d i s k d r i v e s t o r a g e a n r e t r i e v a la n d m u s t b o m i t t e d i y o a r u s i n g t h D a t a c a s s e t t e r e c o r d e r .

Page 304: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 304/348

0

A P P E N D I X

S U P P O R T P R O G R A M

T h C - 6 4 W e d g e o D O S u p p o r t P r o g r a m

T h C - 6 4 W e d g e o D O S u p p o r t P r o g r a m o t h D e m o n s t r a t i o n( T e s t / D e m o ) D i s k a l l o w s y o t c o n t r o l t h e d i s k d r i v e m o r e e a s i l y .Y o m a w i s h t s a v e t h i s p r o g r a m a n i t c o m p a n i o n p r o g r a m D O 5 . o e a c h o t h d i s k e t t e s y o u s e . T u s t h i s p r o g r a m , y o m u s tt y p e

Page 305: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 305/348

L O A D " C - 6 4 H E D G E " . 8R U e a c h t i m e y o t u r n o t h c o m p u t e r . O n c e t h p r o g r a m i l o a d e da n r u n , y o m a u s f o l o a d i n g p r o g r a m s w i t h o u t u s i n g q u o t e so t h c o m m a a n t h 8 F o e x a m p l e ,

/ A V E R A G E

2 9 H a n d s - o n B A S I C

G S C R A T C H 8 : H E L L Oe r a s e s t h e p r o g r a m H E L L O f r o m t h d i s k e t t e i n t h e d i s k d r i v e .

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

( a n d [ R E T U R N l

F u r t h e r i n f o r m a t i o n o t h C - 6 4 W e d g e p r o g r a m i a v a i l a b l e i C h a p t e r o t h V I C - 1 5 4 1 S i n g l e D r i v e F l o p p y D i s k U s e r ' s M a n u a l

Page 306: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 306/348

A P P E N D I X

G L O S S A R Y

A B S ( X ) B A S I C f u n c t i o n t h a t t a k e s t h e a b s o l u t e v a l u e o X P o s i t i v e v a l u e s o r e m a i n p o s i t i v e . N e g a t i v e v a l u e s o fb e c o m e p o s i t i v e .

A r i t h m e t i c O p e r a t o r s A d d i t i o n + s u b t r a c t i o n - , m u l t i p l i c a t i o n * d i v i s i o n / a n e x p o n e n t i a t i o n f

A S C ( A $ ) B A S I C f u n c t i o n t h a t c o n v e r t s t h f i r s t c h a r a c t e r i A t i t e q u i v a l e n t p o s i t i o n n u m b e r i t h A S C I I c h a r a c t e r s e t .

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

Page 307: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 307/348

M o r e p e o p l e k n o w h o t p r o g r a m c o m p u t e r s i B A S I C t h a ni a n o t h e r l a n g u a g e .

C H R $ ( N ) B A S I C f u n c t i o n t h a t r e t u r n s t h e N t c h a r a c t e r f r o mt h A S C I I c h a r a c t e r s e t .

C L O S E s t a t e m e n t t h a t c l o s e s a i n f o r m a t i o n p a t h .C u r s o r k e y s K e y s a t h r i g h t o f t h e k e y b o a r d u s e d t m o v e t h c u r s o r a r o u n d t h s c r e e n . U s e f u l i e d i t i n g p r o g r a m l i n e s .

2 9 4 H a n d s - o n B A S I C

D o u b l e S u b s c r i p t s I n d i c a t e d w i t h i n p a r e n t h e s e s f o l l o w i n g a v a r i a b l en a m e , a n s e p a r a t e d b c o m m a . U s e d t s p e c i f y r o a n c o l u m n n u m b e r i a a r r a y . A ( 3 , 5 ) , f o e x a m p l e , m e a n st h e l e m e n t i t h t w d i m e n s i o n a l a r r a y a r o a n c o l u m n 5

N o t a t i o n n o t a t i o n u s e d i B A S I C t e x p r e s s e i t h e r v e r y l a r g eo v e r y s m a l l n u m b e r s .

E N M a r k s t h e n o B A S I C p r o g r a m o t h e n o t h m a i np r o g r a m .

F i l e c o l l e c t i o n o f i n f o r m a t i o n .F O R N E X T S t a t e m e n t s u s e d i B A S I C t s e u l o o p s .G E s t a t e m e n t t h a t a s s i g n s t h e n e x t k e p r e s s e d t v a r i a b l e .G O S U B s t a t e m e n t u s e d t o t r a n s f e r p r o g r a m c o n t r o l t s u

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

s o m e o f t h e k e y s o t h C o m m o d o r e 6 4 T h e s e c h a r a c t e r s a r

Page 308: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 308/348

a c c e s s e d w i t h t h S H I F T a n C o m m o d o r e ( C = ) k e y s w h e n t h c o m p u t e r i i u p p e r c a s e / g r a p h i c s m o d e .

I T H E N c o n d i t i o n a l b r a n c h s t a t e m e n t .I N P U T s t a t e m e n t t h a t c a l l s f o i n p u t o i n f o r m a t i o n f r o m t h

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

G l o s s a r y 2 9

M I D $ s t a t e m e n t t h a t r e t u r n s t h e r e q u e s t e d p a r t o g i v e n s t r i n g .R > e x a m p l e , i A " T O G E T H E R " , t h e n M I D $ ( A $ , 5 , 3 ) w i l lr e t u r n t h s t r i n g " T H E " .

N E c o m m a n d t h a t e r a s e s t h c u r r e n t p r o g r a m i m e m o r y .N u m e r i c V a r i a b l e N a m e s T h C o m m o d o r e 6 c o m p u t e r a l l o w s v a r i

a b l e n a m e s u t 7 c h a r a c t e r s l o n g . T h f i r s t c h a r a c t e r m u s tb l e t t e r .

O P E N s t a t e m e n t t h a t a s s i g n s a i n f o r m a t i o n p a t h .P R I N T s t a t e m e n t t h a t s e n d s i n f o r m a t i o n f r o m t h c o m p u t e r t

t h s c r e e n o t h d i s k d r i v e .

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

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

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

Page 309: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 309/348

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

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

t h p r o g r a m i m e m o r y .

2 9 H a n d s - o n B A S I C

T A B A S I C f u n c t i o n t h a t w i l l t a t s p e c i f i c p o s i t i o n w h e n i P R I N T s t a t e m e n t .

U p p e r c a s e / g r a p h i c s m o d e T h s t a r t - u p s c r e e n m o d e i w h i c hp r e s s i n g l e t t e r k e p l a c e s c a p i t a l l e t t e r o t h s c r e e n .

U p p e r / l o w e r c a s e m o d e s c r e e n m o d e a c c e s s e d b p r e s s i n g t h C o m m o d o r e k e ( C = ) 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 . I t h i s m o d e , c a p i t a l l e t t e r s a r o b t a i n e d b u s i n g t h S H I F T k e y .

Page 310: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 310/348

A P P E N D I X

P R A C T I C E T E S T S O L U T I O N S

C h a p t e r

1 P r e s s t h R E T U R N k e y .

2 H o l d d o w n [ R U N / s t o p | a n p r e s s | r e S T Q R E ] A l t e r n a t e l y , y o m a t u r n t h m a c h i n e o f a n b a c k o a g a i n .

3

Page 311: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 311/348

4 H o l d d o w n | S H I F T | a n p r e s s [ C L R / H O M E ) ,

5 D i v i s i o n .

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

7 T h s t r i n g 2 5 / 5 + 2 w i l l b d i s p l a y e d o t h s c r e e n .

2 9 8 H a n d s - o n B A S I C

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

6 U t 7 c h a r a c t e r s .

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

8 R e t y p e t h l i n e i n c l u d i n g t h l i n e n u m b e r .

9 T y p e t h l i n e n u m b e r a n p r e s s t h R E T U R N k e y .

1 0 T y p e L I S T a n d p r e s s [ R E T U R N ) .

1 1 P r e s s | s h / f t | c l r / h o m e | <

1 2 T y p e R U a n p r e s s [ R E T U R N ] .

1 3 T y p e N E a n p r e s s [ R E T U R N l .

1 4 c h a r a c t e r s t r i n g v a r i a b l e a l w a y s e n d s w i t h $

Page 312: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 312/348

1 5 D i s p l a y s l i n e 1 2 f o e d i t i n g .

1 6 T h c u r s o r k e y s [ < = C R S R = > a n I T T C R S R J | a n s o m e t i m e s t h S H I F Tk e ( f o r < a n f t ) .

| S H I F T | I N S T / D E q a n c J | I N S T / D E L | ,

P r a c t i c e T e s t S o l u t i o n s 2 9

5 1 8 L E A < 4 + 3 * B . - D > t 2

6

7 a 5 . 1 6 E + 0 9 b 3 . 1 4 E - 0 5

8 . a . 7 2 5 8 0 0 0 b 0 . 0 0 1 4 3 7

9 t h e n 4 t h e n

1 0 a T y p e L O A D " ( n a m e o p r o g r a m ) 1 1 , 8 a n p r e s sb T y p e S A U E ' ^ n a m e o p r o g r a m ) " , 8 a n p r e s s

R E T U R NR E T U R N l ,c O P E N 1 5 , 8 , 1 5 , S C R A T C H 8 ( n a m e o p r o g r a m ) " .

d T y p e N E a n p r e s s 1 r E T U R N |e T y p e L I S T a n p r e s s [ R E T U R N !f T y p e R U a n p r e s sg T y p e L O A D " $ " , 9

R E T U R NR E T U R N

L I S T i R E T U R N l .

Page 313: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 313/348

1 1 U s t h c u r s o r k e y s o t h r i g h t s i d e o f t h k e y b o a r d t m o v e t h c u r s o r t t h e r r o r . T y p e t h e c o r r e c t c h a r a c t e r a n p r e s s | R E T U R N |t e n t e r t h e l i n e i n t h p r o g r a m .

C h a p t e r

3 0 H a n d s - o n B A S I C

7 F o u r .

8 A m a n y a n e e d e d .

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

1 0

1 1 ? 1 6 , 1 2 , 1 7 E X T R A I G N O R E D2 R E A D Y .

1 2 1 0 P R I N T " I N P U T N O O M I L E S 1 1 . ;1 1 I N P U T1 2 L E K = l . 6 8 9 X N1 3 P R I N T N . ; " M I L E S E Q U A L " . K " K I L O M E T E R S "1 4 E N

Page 314: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 314/348

C h a p t e r

1 1 1

P r a c t i c e T e s t S o l u t i o n s 3 0

1 3 I < = 5 8 T H E N 1 8 1 4 L E U = l . 51 5 G O T O 1 9 1 6 L E U = 1 7 G O T O 1 9 1 8 L E U = l . 81 9 L E P = N * U2 0 P R I N T " P R I C E P E W I D G E T I " > 2 1 P R I N T " T O T A L C O S T O O R D E R I S " ; P2 2 P R I N T2 3 G O T O 1 0 2 4 0 E N D

4 1 0 L E X = 1 1 P R I N T X 1 2 L E X = X + 51 3 I < = 1 7 5 T H E N 1 1 1 4 E N

Page 315: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 315/348

5 1 0 P R I N T " W H A T W A S S P E E D L I M I T " 1 1 I N P U T1 2 P R I N T " S P E E D A R R E S T E D A " 1 3 I N P U T1 4 L E X = B - A1 5 I F < 1 T H E N 2 1

3 0 2 H a n d s - o n B A S I C

C h a p t e r

1 2 1 8 1 6 1 4 1 2 1 Q 3 4

2 1 2 3 2 4 6 3 6 9 4 8 1

3 a b c 2 2 . 8 d -

4 T h l o o p s a r e c r o s s e d .

5 1 0 P R I N T " M I L E S " , " K I L O M E T E R S "1 1 P R I N T " , 1 2 P R I N T1 3 F O M = 1 0 T 1 0 S T E P 1 1 4 P R I N T M , 1 . 6 0 9 * M1 5 N E X T1 6 E N

6 1 0 D A T A 1

Page 316: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 316/348

1 1 D A T A 2 5 , 2 1 , 2 4 , 2 1 , 2 6 , 2 7 , 2 5 , 2 4 , 2 3 , 2 41 2 R E A D1 3 L E T S = 01 4 F O 1 = T 1 5 R E A D1 6 L E S = S + X1 7 N E X T

P r a c t i c e T e s t S o l u t i o n s 3 0

1 7 L E S = 1 8 F O 1 = T 1 9 I A < I > < T H E N 2 1 2 0 L E S = S + A < I >2 1 0 N E X T2 2 P R I N T " S U M O F P O S I T I U E E L E M E N T S I " i 2 3 E N

4 1 0 F O R = T 1 1 F O C = T 1 2 L E X C R , C > = 41 3 N E X T1 4 N E X T1 5 E N

5 2 0 0 2 0 0 0 0

Page 317: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 317/348

0

6 a 1 0 D I A 2 , b A ( 2 , 3 ) c A ( X , Y ) A ( l , 2 )d A ( A ( 1 , 1 ) , A ( 2 , 2 ) ) A ( l , 2 )

3 0 4 H a n d s - o n B A S I C

5 A A B A B C DA B C D E

( e t c . )

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

C h a p t e r 9

1 a b 1 c 3 d 8 2

3 a T y p e i G O S U B ( l i n e n u m b e r a b e g i n n i n g o s u b r o u t i n e )b R E T U R N

Page 318: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 318/348

4 W H I T ER E B L U E

C h a p t e r 1

P r a c t i c e T e s t S o l u t i o n s 3 0

2 1 0 F O T O 1 0 01 1 L E X = 2 5 + 2 5 * R N D < 1 >1 2 P R I N T X 1 3 N E X T1 4 E N

3 T h o u t p u t w i l l b r a n d o m l y s e l e c t e d f r o m W H I T E a n R E D . T h r e ep r o g r a m o u t p u t s a r s h o w n t i n d i c a t e t h r a n d o m n a t u r e o f t h ep r o c e s s .< < 2 < 3

W H I T ER E W H I T EW H I T EW H I T EW H I T ER E W H I T EW H I T ER E

R E R E W H I T EW H I T ER E R E R E W H I T ER E R E

W H I T EW H I T ER E W H I T EW H I T ER E R E R E W H I T EW H I T E

Page 319: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 319/348

4 F i v e r a n d o m n u m b e r s o f t h e f o r m X . X X o v e r t h r a n g e 0 . 0 0 t 9 . 9 9 .T h r e e p r o g r a m o u t p u t s a r s h o w n b e l o w t i l l u s t r a t e t h r a n d o mn a t u r e o t h p r o c e s s .

< 2 > < 3 >1 0 . 5 1 6 . 6 9

3 0 6 H a n d s - o n B A S I C

3 9 O P E N 1 5 , 3 , 1 51 0 O P E N 2 , 8 , 2 , " T E S T 1 , L " C H R $ < 5 0 >1 1 P R I N T # 1 5 , " P " C H R $ < 2 > C H R $ < 7 5 > C H R $ < 0 ^ C H R $ < : i1 2 I N P U T # 2 A $ , B $ , C $ , D $ , E $1 3 C L O S E1 4 C L O S E 1 1 5 E N

4 T h c o r r e c t p r o g r a m l i n e i s

2 0 O P E N 2 , 8 , 2 , " F I L E O N E , L " C H R $ < 7 5 L i n e s 2 1 a n 2 2 s h o u l d b e

2 1 O P E N 2 , 8 , 2 , " F I L E O N E , L , C H R $ < 1 0 0 >2 2 P R I N T # 1 5 , " P " C H R $ < 2 > C H R $ < 5 > C H R $ < 0 > C H R $ < 1 >

Page 320: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 320/348

A P P E N D I X

S O L U T I O N S T O D D - N U M B E R E D

P R O B L E M SC h a p t e r

1 1 0 R E C H A P 4 P R O B1 1 R E A D A , B , C , D1 2 D A T A 1 0 , 9 , 1 , 21 3 L E S = A + B1 4 L E P = C * D1 5 P R I N T S , 1 6 E N

Page 321: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 321/348

3 1 0 R E C H A P 4 P R O B1 1 R E A D A , B , C , D1 2 D A T A 2 1 , 1 8 , 6 , 31 3 P R I N T1 4 P R I N T

3 0 8 H a n d s - o n B A S I C

9 T h p r o g r a m l o o p s b a c k t l i n e 1 0 w h e r e i s e e q u a l t o a f t e re a c h p r i n t o u t . T h p r o g r a m c a n b e c o r r e c t e d b c h a n g i n g l i n e 1 3 a f o l l o w s .1 3 G O T O 1 1

1 1 T h p r o b l e m l i e s i s t a t e m e n t s 1 0 0 , 1 1 0 , a n 1 2 0 . T h v a l u e so L W a n a r s u p p o s e d t b p r i n t e d o u t , b u t h e y h a v e n ' tb e e n d e f i n e d . T h c o m p u t e r w i l l a s s i g n t h e v a l u e z e r o t t h e t h r e ev a r i a b l e s a n t h e s e z e r o s a r p r i n t e d o u b l i n e s 1 0 0 , 1 1 0 , 1 2 0 .T h p r o g r a m m a b c o r r e c t e d b d e l e t i n g l i n e 1 3 a n L W a n

a t h e n d s o l i n e s 1 0 0 , 1 1 0 , a n 1 2 a n a d d i n g :1 0 I N P U T1 1 I N P U T1 2 I N P U T

1 3 1 0 R E C H A P 4 P R 0 B 1 1 1 D A T A 2 1 4 2 3 , 2 1 4 9 3 , 51 2 D A T A 5 2 7 0 , 5 5 0 4 , 1 31 3 D A T A 6 5 2 1 4 , 6 5 5 5 9 , 1 1 . 5

Page 322: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 322/348

1 4 R E A D R 1 , R 2 , G1 5 L E M = ( R 2 - R 1 V G1 6 P R I N T1 7 G O T O 1 4 1 8 E N

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 0

1 9 1 0 R E C H A P 4 P R O B 1 1 1 P R I N T " I N I T I A L I N U E S T M E N T " 1 2 I N P U T1 3 P R I N T " A N N U A L I N T E R E S T R A T E < % > " 1 4 I N P U T1 5 P R I N T " Y E A R S L E F T T A C C R U E I N T E R E S T " 1 6 I N P U T1 7 L E T = P * < I / 1 0 0 > T N1 8 P R I N T " T O T A L U A L U E I " ; 1 9 E N C h a p t e r

1 1 0 R E C H A P 5 P R O B1 1 I N P U T X , 1 2 I X > Y T H E N 1 5 1 3 P R I N T1 4 G O T O 1 6 1 5 P R I N T1 6 E N

Page 323: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 323/348

3 1 0 R E C H A P 5 P R O B1 1 L E S = 1 2 L E X = 1 3 L E S = S + K1 4 L E y . = K + l1 5 I F < 1 0 T H E N 1 3

3 1 H a n d s - o n B A S I C

9 1 8 R E C H A P 5 P R O B1 1 L E C = 1 2 L E T T = 01 3 L E M = 1 4 L E T = T + W1 5 L E T C = C + 11 6 L E M = 2 * U1 7 I < 2 T H E N 1 4 1 3 P R I N T T 1 8 1 9 E N

1 1 T h n u m b e r 8 w i l l b p r i n t e d o u t . T h p r o g r a m f i n d s t h l a r g e s tn u m b e r c o n t a i n e d i t h t w D A T A s t a t e m e n t s .

1 3 1 0 R E C H A P 5 P R O B 1 1 1 P R I N T " L I S T P R I C E < $ " 1 2 I N P U T1 3 P R I N T " D I S C O U N T R A T E 5 j 1 4 I N P U T1 5 L E D = L * < R , ' 1 0 0 >

Page 324: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 324/348

1 6 P R I N T " D I S C O U N T E D P R I C E I S 1 7 P R I N T D ; D O L L A R S "1 8 E N

1 5 1 0 R E C H A P 5 P R O B 1 1 1 I N P U T A ,

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 1 1

1 7 1 8 R E C H A P 5 P R O B 1 1 1 P R I N T " G R Q N T H R A T E < * " 1 2 I N P U T1 3 L E N = 1 4 L E Q = 1 5 L E Q = Q * ( 1 + R / 1 0 0 >1 6 L E T N = N + 11 7 I < T H E N 1 5 1 3 P R I N T " N U M B E R O G R O N T H P E R I O D S T D O U B L EI " ; 1 9 E N

C h a p t e r 6

1 1 0 R E C H A P 6 P R O B1 1 P R I N T " N " S Q R < N > "1 2 P R I N T1 3 F O N = T S T E P . 1 4 P R I N T N , S Q R < N >

Page 325: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 325/348

1 5 N E X T1 6 E N

3 1 0 R E C H A P 6 P R O B1 1 I N P U T1 2 F O X = T S T E P

3 1 2 H a n d s - o n B A S I C

7 S i n c e t h a n l o o p s a r c r o s s e d , N E X T W I T H O U T F O E R R O R m e s s a g e w i l l a p p e a r .

9 I r e a d s a n p r i n t s o u f i v e n u m b e r s r o u n d e d o f t t w p l a c e s p a s tt h d e c i m a l p o i n t .

1 1 P r i n t s o u 1

1 3 1 0 R E C H A P 6 P R O B 1 . 1 1 I N P U T1 2 I N P U T1 3 L E L = 1 4 L E T H = X1 5 L E S = 1 6 F O 1 = T O N - l1 7 I N P U T1 8 I T H E N 2 0 1 9 L E T L = X2 0 I T H E N 2 2 2 1 L E T H = X

Page 326: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 326/348

2 2 L E S = S + K2 3 N E X T2 4 P R I N T " H I G H E S T G R A D E I " ; 2 5 P R I N T " L O W E S T G R A D E I | 2 6 P R I N T " A U E R A G E I S . . - N2 7 E N

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 1

2 2 D A T A2 3 8 D A T A 2 , 4 . 8 , 8 , 1 0 , 8 , 7 , 1 02 4 D A T A 5 , 3 . 7 5 , 7 , 8 , 8 , 6 , 1 02 5 D A T A 1 , 3 . 2 5 , 8 , 1 0 , 6 , 8 , 82 6 D A T A 4 , 5 , 8 , 1 0 , 6 , 1 0 , 62 7 D A T A 3 , 4 . 2 5 , 6 , 6 , 8 , 1 0 , 72 8 E N

C h a p t e r

1 1 0 R E C H A P 7 P R O B1 1 D I X ( 2 0 )1 2 R E A D1 3 F O 1 = T 1 4 R E A D X < I >1 5 N E X T1 6 F O 1 = T 1 7 P R I N T X < I >1 8 N E X T

1

Page 327: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 327/348

1 9 D A T A2 0 0 D A T A 2 , 1 , 4 , 3 , 2 , 4 , 5 , 6 , 3 , 5 , 4 , 12 1 0 E N D

3 1 0 R E C H A P 7 P R O B1 1 D I A < 1 0 , 1 0 >

3 1 H a n d s - o n B A S I C

1 3 F O R = l T O1 4 F O C = T 1 5 I N P U T A < R , C >1 6 N E K T1 7 N E X T1 8 L E T S = 01 9 F O R = l T O2 0 F O C = l T O2 1 L E S = S + A C R , C )2 2 N E X T2 3 N E K T2 4 P R I N T " S U M O E N T R I E S I " ; 2 5 E N

7 1

9 1

1 1 1 0 1 1

R E C H A PD I K 1 0 0 >

P R O B 1

Page 328: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 328/348

1 2 1 3 1 4 1 5 1 6 1 7

I N P U TF O I N P U TN E K TF O I K <

T X I

T > N -

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 1

1 5 1 0 R E C H A P 7 P R O B 1 1 1 D I H < 2 , 5 >1 2 F O R = l T O1 3 F O C = T 1 4 R E A D H < R , C 1 5 N E H T1 6 N E H T1 7 D A T A 2 . 1 . 0 . . 5 . . 11 8 D A T A 3 , 2 , 1 , 3 , 11 9 F O R = T 2 0 0 F O R C = l T O2 1 P R I N T X ( R j C ) ;2 2 N E H T2 3 P R I N T2 4 0 N E H T2 5 0 E N D

1 7 1 0 R E C H A P 7 P R O B 1 1 1 D I H < 2 0 , 2 0 )1 2 I N P U T M , N

Page 329: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 329/348

1 3 F O R = T 1 4 F O C = T 1 5 I N P U T H < R , C >1 6 N E H T1 7 N E H T

3 1 6 H a n d s - o n B A S I C

1 9 I B R E C H A P 7 P R O B 1 1 1 D I X < 4 , 6 >1 2 F O R = T 1 3 F O C = l T O1 4 R E A D X < R , C >1 5 N E X T1 6 N E X T1 7 D A T A 4 3 , 4 0 . - 7 3 , 1 2 0 , 1 0 0 , 9 01 8 D A T A 7 5 , 1 3 0 , 9 0 , 1 4 8 , 1 1 0 , 8 51 9 D A T A 5 0 , 7 2 , 1 4 0 , 1 2 5 , 1 0 6 , 9 22 0 D A T A 1 0 8 , 7 5 , 9 2 , 1 5 2 , 9 1 , 8 72 1 0 F O R C = T 2 2 L E T S = 02 3 0 F O R R = T 2 4 L E S = S + X < R , C >2 5 N E K T2 6 P R I N T " T O T A L - D A Y " i d " I " 2 7 N E X T2 8 P R I N T2 9 0 F O R R = T

Page 330: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 330/348

3 0 0 L E T S = 03 1 F O C = l T O3 2 0 L E T S = S + X < R , C >3 3 N E X T3 4 P R I N T " T O T A L - S A L E S P E R S O N n . ; R . ; " I " 3 5 N E X T

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 1

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

F O 1 = L E P N E X TF O R = I N P U TN E X TF O 1 = I X < P <L E T = L E P < L E P < G O T O 2 N E X TP R I N TP R I N TF O 1 =

T ) =

T I * * C * * 1 •

T I ) ( ) = P <

N • X

- : P < I ) T H E N 2 6

) =

P " T

P R I N T P < ) N E X TE N

i

X

X

> , x c p « : i )

Page 331: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 331/348

C h a p t e r 8

1 1 0 R E C H A P 8 P R O B1 1 I N P U T A 1 2 F O 1 = T L E N < A $ )1 3 P R I N T M I D S C A S , 1 , 1 )

3 1 8 H a n d s - o n B A S I C

5

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

1 0 1 1

G O T O 3 3 0L E A = A + 1G O T O 3 3 L E E = E + 1G O T O 3 3 QL E 1 = 1 + 1G O T O 3 3 L E T 0 = 0 + 1G O T O 3 3 L E L I = U + 1N E X TP R I N T " P R I N T " P R I N T " P R I N T " P R I N T " E N

R E C H A PI N P U T A

1 1 " . ; E" . ; I" . " .

P R O B

Page 332: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 332/348

1 2 1 3 1 4 1 5 1 6

F O 1 = T I M I D $ < A $ ,L E B $ = B $N E H TP R I N T B

L E N < A $ : >I > = C H R $ C 3 2 > T H E N 1 5

m i d $ < a $ , i i

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 1

9 1 6 R E C H A P 8 P R O B1 1 I N P U T A 1 2 L E C = 1 3 F O K = T L E N ( A $ > - 11 4 I M I D $ < A $ , K J 2 X > " I N " T H E N 1 6 1 5 L E C = C + 11 6 N E X T1 7 P R I N T1 8 E N

1 1 D e l e t e l i n e s 1 9 t h r o u g h 2 5 0 . A d l i n e s 1 8 a n 3 5 a s f o l l o w s .

1 8 F O R = T 3 5 5 N E X TC h a p t e r 9

1 2 2 6

3 1 0 R E C H A P 9 P R O B

Page 333: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 333/348

1 1 D E F N A < R > = 3 . 1 4 1 5 9 * R | 21 2 D E F F N B < R > = 4 * 3 . 1 4 1 5 9 * R T 3 . ^ 31 3 P R I N T1 4 P R I N T R " , " A R E A O F " , " U O L U M E O F 1 5 P R I N T T A B < 1 0 ) ; " C I R C L E " . . " S P H E R E "

3 2 0 H a n d s - o n B A S I C

9 9 0 S R E M S U B R O U T I N E9 1 0 L E T S 1 = 09 2 0 L E T S 2 = 09 3 F O 1 = 2 T O Y < 1 > + l9 4 0 L E T S 1 = S 1 + Y C I )9 5 0 L E T S 2 = S 2 + Y < > ! 9 6 N E X T9 7 L E M = S l x - Y <9 8 0 L E T S = S Q R < Y ) * S 2 - S 1 T 2 > ' Y > * Y - ■9 9 R E T U R N •

C h a p t e r 1

1 O w i l l b p r i n t e d .

3 M o d i f y l i n e 1 0 1 0 a s f o l l o w s :1 0 1 0 I R < O R > 2 5 O C O C M T H E NP R I N T " O F F T H S C R E E N " = E N D

Page 334: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 334/348

5 m o d i f i c a t i o n o E x a m p l e g i v e s :9 P R I N T C H R $ < 2 8 > ;1 0 P R I N T C H R $ < 1 4 7 > ;1 1 L E J = 1 2 P R I N T C H R $ < 1 9 > . ;

S o l u t i o n s t O d d - N u m b e r e d P r o b l e m s 3 2

C h a p t e r 1

1 5 R E C H A P 1 1 P R O B1 0 F O 1 = T 2 1 1 L E T N = I N T < 1 0 0 * R N D <1 2 P R I N T N 1 3 N E X T1 4 E N

3 t y p i c a l o u t p u t i s

5

. 0 . 0 . 0 . 0 . 1

5 1 0 1 1

. 0 . 0 . 1

1 .

. 1 . 1 . 1 . 0 . 1 9 . 1 2. 1 . 1 . 1 8 . 0 4

R E C H A P 1 1 P R O BF O R E A D

1 = T

Page 335: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 335/348

1 2 1 3 1 4 1 5 1 6

L E L E F O L E I

H = T = J = T X = I N T < 2 * R N D < 1 > + l >= T H E N 1 9

3 2 2 H a n d s - o n B A S I C

9 5 R E C H A P 1 1 P R O B1 8 L E M = 1 1 F O 1 = T 1 0 0 01 2 L E T A = 6 0 * R N D < 1 1 3 L E B = 6 0 * R N D < 1 >1 4 I A B S < A - B > > 1 0 T H E N I S f l1 5 L E T M = M + 11 6 N E K T1 7 P R I N T " P R O B A B I L I T Y O M E E T I » I V 1 0 0 01 3 E N

1 1 5 R E C H A P 1 1 P R O B 1 1 0 F O 1 = T 2 1 1 L E T S = 01 2 F O J = T 1 1 3 L E S = S + R N D < 1 >1 4 N E K T1 5 L E R = 1 0 + 2 * < S - 6 >1 6 P R I N T I N 1 0 0 * R + . 5 V . ' 1 0 0 ,1 7 N E K T

Page 336: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 336/348

1 8 E N

1 3 5 R E M C H A P 1 1 P R O B 1 1 0 D I A < 1 1 )1 1 F O N = l T O 1 0 0 0

S o l u t i o n s t o O d d - N u m b e r e d P r o b l e m s 3 2

V a r i a b l e D e s c r i p t i o n A p p r o x i m a t e L e n g t hC T I T L E S T i t l e o c a s s e t t e 5 L A B E L S R e c o r d c o m p a n y 2 N A M E S N a m e o m u s i c i a n s 5 K I N D S C a t e g o r y o m u s i c 1 5P R I C E P r i c e o f c a s s e t t e

T h r e c o r d l e n g t h m i g h t b e 4 5 w h e r e f i v e e x t r a s p a c e s h a v e b e e na d d e d f o r t h e i t e m s e p a r a t i o n n o n - p r i n t i n g c h a r a c t e r s .

3 p o s s i b l e r e c o r d s t r u c t u r e w o u l d b a s f o l l o w s .V a r i a b l e D e s c r i p t i o n A p p r o x i m a t e L e n g t hN A M E SR O O M !A M

N a m e o i t e mL o c a t i o n o i t e mV a l u e o i t e m

5 1 1

Page 337: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 337/348

T h r e c o r d l e n g t h m i g h t b e 7 8 w h e r e t h r e e s p a c e s a r a d d e d t s e p a r a t e t h i t e m s .

3 2 H a n d s - o n B A S I C

2 4 8 O P E N 2 , 3 , 2 " C H A R G E , L , " C H R $ C 1 2 5 >2 5 P R I N T # 1 5 , " P " C H R $ < 2 > C H R $ < > C H R $ < > C H R $ <2 6 G O S U B 1 0 0 02 7 P R I N T # 2 , C A R D $ ; " N A M E S . ; " . D A T E S ;1 1 " ; D E S S ; " " ; A M T2 8 C L O S E2 9 C L O S E 1 3 8 0 L E T 1 = 3 1 G O T O 1 2 3 2 0 R E M S U M T H E C H A R G E S3 3 8 L E T S U M = 03 4 P R I N T " N A M E O C A R D T T O T A L = " 3 5 0 I N P U T T E M P S3 6 I T E M P $ = " Q U I T 1 1 T H E N E N D3 7 O P E N 1 5 , 8 , 1 53 8 O P E N 2 , 8 , 2 , " C H A R G E , L C H R $ < 1 2 5 >3 9 0 F O R K = T 4 0 P R I N T # 1 5 , " P " C H R $ < 2 ) C H R $ ( K > C H R $ < 0 ) C H R $ < 14 1 G O S U B 1 0 0 04 2 I N P U T # 2 , C A R D S , N A M E S , D A T E S , D E S S , A M

Page 338: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 338/348

4 3 I C A R D S < > T E M P S T H E N 4 5 4 4 L E S U M = S U M A M 4 5 N E X T4 6 P R I N T " T O T A L F O " T E M P S . ; " I " . S U 4 7 C L O S E

I N D E X

A c c e s s i n g m o d e sU p p e r c a s e / g r a p h i c s 1 6 , 2 3 8U p p e r / l o w e r c a s e 1 6 , 2 3 8

A B 1 2 9 , 1 3 5 , 1 3 6A d R e c o r d s P r o g r a m 2 7 7 - 2 7 8A d d i t i o n 1 1 , 1 6 , 4 2A n i m a t i o n p r o g r a m 2 4 2 - 2 4 3A n t e n n a s w i t c h b o x 1 A r i t h m e t i c i B A S I C 4 2 , 5 1 - 5 2 , 5 3 - 5 4A r i t h m e t i c O p e r a t o r s

o r d e r 5 1 , 5 2

S Q 1 2 7 , 1 3 5S T R $ 1 8 9 - 1 9 0T A 7 1 , 7 2 , 7 6 , 1 2 7V A 1 8 9 - 1 9 0 , 1 9 1

B A S I C o r i g i n sB A S I C p a r e n t h e s e s 4 5 , 5 3 - 5 4B A S I C p r o g r a m s

e n t e r i n g a n c o n t r o l l i n g 2 1 , 3 4e x e c u t i o n 3 3 - 3 4r e t r i e v a l 4 8 , 5 5 - 5 6s t o r a g e 4 7 , 5 5 - 5 6

B A S I C p r o g r a m r e q u i r e m e n t s

Page 339: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 339/348

p r i o r i t y 5 s y m b o l s 5 1

A r i t h m e t i c p r i o r i t y 5 A r r a y O p e r a t i o n s p r o g r a m 1 7 1 - 1 7 2A r r a y s 1 5 1 , 1 5 2 - 1 5 3 , 1 6 2 - 1 6 4 ,

l i n e n u m b e r s 2 2 , 2 4 , 3 2 - 3 3o r d e r 3 2 - 3 3s p a c i n g 2 7 - 2 8 , 3 2

B A S I C s t a t e m e n t sC L O S E 5 0 , 5 6 , 2 6 6 , 2 7 2 - 2 7 3

Page 340: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 340/348

I n d e x 3 2

I N P U T 2 6 , 2 8 , 3 7 , 6 2 - 6 4 , 7 3 , 8 2I N P U T # 2 6 7 , 2 7 4 - 2 7 5I N S T / D E L k e y 1 2 , 2 9I n s e r t i n g l i n e s 2 5 , 3 2I N 1 2 8 , 1 3 5 - 1 3 6 , 1 4 0I n t e r r u p t i n g p r o g r a m e x e c u t i o n s 2 6

2 7 , 2 8 , 3 4I n t e r r u p t i n g I N P U T l o o p s 2 6 , 2 7 , 2 8 , 3 4

J u m p i n g o u o l o o p s 2 6 , 2 7 , 2 8 , 3 4J u m p i n g o u o I N P U T l o o p s

2 6 , 2 7 , 2 8 , 3 4

K e y sG = 1 1 , 1 5 , 1 6C L R / H O M E ] 1 2 / 2 2 9

C T R LI N S T / D E L

2 9 , 2 2 9 - 2 3 02 9 , 2 2 9 - 2 3 0

2 2 9 , 2 3 7 , 2 3 8 , 2 3 91 2 , 2 9 , 3 1

S H 1 F T | C L R / H O M E ] 1 2 , 2 2 , 2 5 , 3 4 ,

M a i l L i s t D a t a E n t r y p r o g r a m2 7 6 - 2 7 7

M a i l i n g L a b e l p r o g r a m 2 7 8 - 2 7 9M a t r i x 1 5 M e a n 2 2 M e n u - D r i v e n M a i l i n g p r o g r a m

2 8 2 - 2 8 3M I D $ 1 8 5 , 1 9 2M o d i f y i n g t h M a i l L i s t

p r o g r a m 2 8 0 - 2 8 2M u l t i p l i c a t i o n 1 2 , 1 6 , 4 2

N E 2 1 , 2 4 , 3 3 , 3 6N o e q u a l t 1 0 N u m e r i c v a r i a b l e d e f i n i t i o n 3 4 - 3 7

O N / O F F s w i t c h 1 O N . . . G O S U B 2 0 8 , 2 1 2 , 2 8 1 , 2 8 3O P E N 2 6 6 , 2 7 2 - 2 7 3O P E N 1 5 , 8 , 1 5 4 7 , 5 0 , 5 5 , 5 6 , 2 6 6 ,

2 7 O p e r a t i o n s

Page 341: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 341/348

2 2 9 - 2 3 0S H I F T | t N S T / D E L | 2 9 , 3 1R E S T O R E ! 2 6 , 2 7 , 2 8 , 3 4

R U N / S T O P ] 2 6 , 2 7 , 2 8 , 3 4

A r i t h m e t i c 1 6 , 5 1 - 5 2O r d e r 5 1 - 5 2O r d e r ( o a r i t h m e t i c o p e r a t i o n s )

5 1 - 5 2

3 2 I n d e x

C o l o r B a G r a p h s 2 4 1 - 2 4 2C o n v e r t i n g T e m p e r a t u r e 8 0 - 8 1C o u r s e G r a d e s 1 6 8 - 1 7 1C u r s o r M o v e m e n t 2 3 9 - 2 4 1D e p r e c i a t i o n S c h e d u l e 1 4 1 - 1 4 4D i s t r i b u t i o n o R a n d o m

N u m b e r s 2 5 6 - 2 5 7E x a c t D i v i s i o n 1 4 0 - 1 4 1E x a m i n a t i o n G r a d e s 1 6 5 - 1 6 8F i n d i n g t h A v e r a g e o G r o u p

o N u m b e r s 1 3 7 - 1 3 8F l i p p i n g C o i n s 2 5 4 - 2 5 5M a i l L i s t D a t a E n t r y p r o g r a m

2 7 6 - 2 7 7M a i l i n g L a b e l p r o g r a m 2 7 8 - 2 7 9M e n u - D r i v e n M a i l i n g p r o g r a m

2 8 2 - 2 8 3M o d i f y i n g t h M a i l L i s t p r o g r a m

2 8 0 - 2 8 2P r e c i s i o n R e c o r d A c c e s s 2 8 4 - 2 8 5P r i n t o u t o N u m b e r P a t t e r n s

1 0 4 - 1 0 6R a n d o m I n t e g e r s 2 5 R a n d o m C o l o r s 2 5 R a n d o m W a l k 2 5 7 - 2 5 8R e p l a c e m e n t C o d e 1 9 4 - 1 9 5

R E S T O R E k e 1 6 , 2 6R E T U R N 1 0 , 1 1 , 1 6 , 3 4R e t r i e v i n g B A S I C p r o g r a m s 4 8 , 5 5 - 5 6R N 2 4 8 , 2 5 3 - 2 5 4

R o u n d i n g O f D o l l a r V a l u e s t C e n t sp r o g r a m 2 1 2 - 2 1 4

R U 2 1 , 2 3 , 3 3 - 3 4R U N / S T O P k e 1 6 , 2 6 , 2 7 , 2 8 , 3 4R U N / S T O P R E S T O R E k e 1 6 , 2 6 ,

2 7 , 3 4 , 2 3 3 , 2 3 9

S a l e s C h a r t a a S t r i n g A r r a y p r o g r a m1 9 5 - 1 9 7

S A V E 4 7 , 5 5 - 5 6S C R A T C H 5 0 - 5 6S e l e c t e d L a b e l s p r o g r a m 2 7 9 - 2 8 0S G 1 2 9 , 1 3 5 , 1 3 6S H I F T k e 1 0 , 1 1S H I F T | C L R / H O M E 1 2 , 2 2 , 2 5 , 3 4

Page 342: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 342/348

R o u n d i n g O f D o l l a r V a l u e st C e n t s 2 1 2 - 2 1 4

S a l e s C h a r t a S t r i n g A r r a y1 9 5 - 1 9 7

S e l e c t e d L a b e l s p r o g r a m 2 7 9 - 2 8 0S t r i n g R e v e r s a l 1 9 3 - 1 9 4

S H I F T | I N S T / D E L k e y 2 9 , 3 1S H I F T L O C K k e 1 S p a c i n g o p r i n t o u t 7 1 , 7 5 - 7 7S Q 1 2 7 , 1 3 5S t a n d a r d d e v i a t i o n 2 2

I n d e x 3 2

T A 7 1 , 7 2 , 7 6T e m p e r a t u r e C o n v e r s i o n T a b l e

p r o g r a m 1 3 9 - 1 4 0T r a c i n g p r o g r a m s 1 0 1T r a n s f e r

c o n d i t i o n a l 9 3 , 9 6 , 1 0 2 - 1 0 4u n c o n d i t i o n a l 2 7 , 9 3 ,

1 0 1 - 1 0 2T r o u b l e s h o o t i n g p r o g r a m s 9 3 , 1 1 3T u r n i n g o n / o f f y o u r c o m p u t e r 1 T C h a n n e l S e l e c t o r s w i t c h 1

U n c o n d i t i o n a l t r a n s f e r 2 7 , 9 3 , 1 0 1 -1 0

U n i t P r i c e s p r o g r a m 7 8 - 8 0U p p e r c a s e / g r a p h i c s m o d e 1 6 , 2 3 8U p p e r / l o w e r c a s e m o d e 1 5 , 2 3 8

V A 1 8 9 - 1 9 0 , 1 9 1V a r i a b l e n a m e s 3 4 - 3 7V a r i a b l e s , s u b s c r i p t e d 1 6 1 - 1 6 3

Page 343: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 343/348

W o r d C o u n t p r o g r a m 1 9

1 0 , 1 1 , 4 2 , 1 9 11 0 , 1 1 , 4 2

N O T E S

Page 344: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 344/348

Page 345: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 345/348

C O M M A N D S

C O N T R e s t a r t s e x e c u t i o n a f t e r u s o t h I R U N / S T O P l k e y

D e l e t i n g f i l e : S e t h O P E N c o m m a n dL I S T D i s p l a y s t h p r o g r a m i m e m o r y

L I S T L i s t s t h e n t i r e p r o g r a mL I S T 4 0 - 3 1 0 L i s t s l i n e s 4 t h r o u g h 3 1 L I S T - 4 0 0 L i s t s a l l i n e s t h r o u g h 4 0 L I S T 4 0 0 - L i s t s a l l i n e s f r o m 4 0 t t h e n

L O A D " f i l e n a m e " , 8 B r i n g s t h e s p e c i f i e d p r g r a m f r o m d i s k e t t e i n t o m e m o r yL O A D " M E N U " , 8

N E E r a s e s t h p r o g r a m i m e m o r yO P E N 1 5 , 8 , 1 5 , " N E W 0 : d i s k n a m e , i d F o r m a t s

d i s k e t t e w i t h t h g i v e n d i s k n a m e a n d i d d e s t r o y s a n i n f o r m a t i o n p r e v i o u s l y o t h d i s k e t t eO P E N 1 5 , 8 I 1 5 , " N E W 0 : T A X F I L E S , Z Z "

O P E N 1 5 , M 5 / ' S C R A T C H 0 : f i l e n a m e " D e l e t e sf i l e f r o m t h d i s k e t t e

O P E N 1 5 , 8 , 1 5 , " S C R A T C H 0 : T A X J U N E "R U P e r f o r m s t h p r o g r a m i m e m o r yS A V E " f i l e n a m e " , 8 W r i t e s t h p r o g r a m i

m e m o r y o n t o t h d i s k e t t e a n g i v e s i t h s p e c i f i e d n a m es a v e ; l a b e l s m , 8

S A V E " @ f i l e n a m e " , 8 T h r o w s a w a y t h c o t e n t s o t h o l s p e d / i e d f i l e a n r e p l a c e st h e m w i t h t h p r o g r a m i m e m o r yS A V E " @ L A B E L S " , 8

Page 346: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 346/348

F U N C T I O N S

Page 347: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 347/348

Page 348: Hands-On BASIC for the Commodore 64

8/6/2019 Hands-On BASIC for the Commodore 64

http://slidepdf.com/reader/full/hands-on-basic-for-the-commodore-64 348/348