The Commodore 128 Subroutine Library

290
2 2 0 F D R N U - N A $ = U S * ( N 1 B $ = U S S ( N 1 - 1 ) R E M U S « ( N ) : A R R A Y N E X T I T E M T O N U B U S C H 5 U B R 0 U T I N G 0 T D ~ 2 N U ' 1 0 G O T O S T R I N G S O R T V A R I A B L E S N U M B E R U S S ( N > : A R R A Y W I T H S O R T E D M S 2 7 0 F D R 1 T E M = 1 P R 1 N T " E N T E R I N P U T U S S ( I T E M ) N E X T I T E M T O N U N 1 = 1 N U - N A J = U S S ( N 1 ) B S = U S S ( N 1 U S S ( N 1 ) U S * ( N 1 - 1 ) N E X T N E X T T O N U P R I N T U S S ( N ) R E T U R N A $ = U S S ( N 1 ) B S = U S S ( N 1 T H E N G O T O 2 6 0 U S S 2 7 0 U S * + 1 ) - A $ N E X N E X 3 0 0 F D R N " 1 T D P R I N T U S S ( N ) N E X T R E T U R N P R O G R A M S T A R T S H E R E G O S U B P R O G R A M S T A R T S H E R E G D S U B I T E M T E M ) P R I N T I N P U T N E X T I T E M 2 2 0 F D R N U - N A S = U S S ( N 1 ) U S S ( N 1 » 1 T H E N G O T O ) - 9 S 2 7 0 U S S N E X T N E X T T O N U P R I N T U S $ ( N ) N E X T R E T U R N S O R T I T E M S S O R T E D ^ W I T H I T E M S V A R I A B L E S N U M B E R I T E M S S O R T E D U S J ( N > : A R R A Y W I T H I T E M S I N I T I A L I Z E U - 1 Q U S S ( N U ) G O T O : . N U = 1 0 U S S ( N U ) G O T O S U B R O U T I N E I T E M - 1 T O P R I N T ' ' E N T E R I T E M I N P U T U S S ( I T E M ) N E X T I T E M T D N U N U - N T H E N G O T O 3 4 0 R E M G O S U B G O T O P R O G R A M S T A R T S H E R E S U B R O U T I N E R O U T I N E P R I N T * I N P U T N E X T A $ = U B S = U 2 6 0 U S S ( N 1 ) = B * 2 7 0 U S B ( N 1 + 1 ) « A * N E X T N E < ~ I T E M G O T O I T E M = 1 P R I N T ' ' E N T E R I N P U T U S S ( I T E M ) N E X T 2 2 0 F O R N U - N A S * U S $ ( N 1 B $ = U S S ( N 1 - 1 ) T H E N G O T O 2 6 0 U S S ) ' B $ < N 1 ! ) - A * N E X T N E X T 3 0 0 F D R T D N U P R I N T U S S ( N ) N E X T 3 3 0 R E T S G R T V A R I A B L E S N U M B E R D F I T E M S S O R T E D U 5 S ( N ) : A R R A Y W I T H I T E M S I N I T I A L N U - 1 0 U S S t N U ) G O T O B a n t a m C o m p u t e r B o o k C O M P U T E R B O O K S 3 4 0 R E M G Q S U B - 1 7 0 I T E M - 1 T O N U P R I N T ' ' E N T E R I T E M

Transcript of The Commodore 128 Subroutine Library

Page 1: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 1/290

2 2 0 F D R N ' T N U - NA $ = U S * ( N 1

2 4 B $ = U S S ( N 1 - 1 )

9 R E M U S « ( N ) : A R R A Y W F 1 0 R E U R E

I T E MN - T O N U

D B U S C H 6 R E 5 U B R 0 U T I N

G 0 T D ~ 2

E E E

I U S

E

S T R I N G S O R T

♦ V A R I A B L E S • N U N U M B E R O U S S ( N > : A R R A Y W I T H

7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 S O R T E D 2 6

M S 2 7 02 B 2 9 3 0 * 3 1 3 3 3

F D R 1 T E M = 1 T N P R 1 N T " E N T E R * I N P U T U S S ( I T E M )N E X T I T E M

F O N - T O N UF O N 1 = 1 T N U - NA J = U S S ( N 1 )B S = U S S ( N 1I A S B

U S S ( N 1 )U S * ( N 1 - 1 )N E X T N N E X TF O N - T O N UP R I N T U S S ( N )R E T U R N

2 3 A $ = U S S ( N 1 )2 4 B S = U S S ( N 12 5 I A S B T H E N G O T O 2 8 2 6 0 U S S ( N B 2 7 0 U S * N + 1 ) - A $2 B N E X T N 2 9 N E X T3 0 0 F D R N " 1 T D N 3 1 P R I N T U S S ( N )3 2 N E X T3 3 R E T U R N3 4 R E ■ • P R O G R A M S T A R T S H E R E3 5 G O S U B 1 7

3 4 R E • • P R O G R A M S T A R T S H E R E3 5 G D S U B 1 7

U S * ' I T E M

T E M )

O I

I T E MO N = T N D R N = T N U - N

U S S ( N 1 » 1A t B T H E N G O T O 2 8

5 ( N ) - 9 SS S ( N * > A

N

D T O N UU S $ ( N )

1 R E 2 R E 3 R E 1 R E 5 R E

R E : :

I S O R T

I T E M S S O R T E D ^W I T H I T E M S

• V A R I A B L E SN U N U M B E R G I T E M S S O R T E DU S J ( N > : A R R A Y W I T H I T E M S

I N I T I A L I Z EU - 1 Q

D I U S S ( N U )G O T O 3 5

: . R E 1 3 N U = 1 01 4 D I U S S ( N U )1 5 G O T O 3 5

; z

1 6 R E S U B R O U T I N E1 7 F O I T E M - 1 T O N 1 8 P R I N T ' ' E N T E R / " I T E M1 9 I N P U T U S S ( I T E M )2 0 N E X T I T E M

- T D N U1 - T N U - N

( N 1

T H E N G O T O 2 8 E M

N D I G O T OR E

P R O G R A M S T A R T S H E R E 1 6 R E S U B R O U T I N E

R O U T I N EO [

P R I N T *I N P U TN E X T f

F O N = F O A $ = UB S = UI A U S S ( N 1 ) = B *U S B ( N 1 + 1 ) « A *N E X T N N E < ~

I T E M

H E G O T O 2 8

1 7 F D I T E M = 1 T N 1 8 P R I N T ' ' E N T E R » 1 9 I N P U T U S S ( I T E M )? 0 N E X T H E 2 1 F D N » T N 2 2 0 F O R N - T N U - N2 3 A S * U S $ ( N 12 4 B $ = U S S ( N 1 - 1 )2 5 I A S B T H E N G O T O 2 8 2 6 0 U S S ( N ) ' B $2 7 U S < N 1 • ! ) - A *2 6 N E X T N 2 9 N E X T3 0 0 F D R N - T D N U3 1 P R I N T U S S ( N )3 2 N E X T3 3 0 R E T

I N S G R T

V A R I A B L E S • N U M B E R D F I T E M S S O R T E D

U 5 S ( N ) : A R R A Y W I T H I T E M S1 1 R E

1 2 R E I N I T I A L1 3 N U - 1 01 4 D I U S S t N U )1 5 G O T O 3 5 B a n t a m C o m p u t e r B o o k B N T C O M P U T E RB O O K S

3 4 0 R E M3 5 G Q S U B - 1 7 0

1 7 F D I T E M - 1 T O N U1 8 P R I N T ' ' E N T E R * I T E M

Page 2: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 2/290

Page 3: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 3/290

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

S U B R O U T I N EL I B R A R Y

Page 4: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 4/290

B a n t a m C o m p u t e r B o o k sA s y o u r b o o k s e l l e r f o t h b o o k s y o u h a v e m i s s e dT H E A M I G A D O S M A N U A L

b C o m m o d o r e - A m i g a , I n c .T H A P P L E / / B O O Kb B i l l O ' B r i e nT H E A R T O D E S K T O P P U B L I S H I N Gb T o n y B o v e , C h e r y l R h o d e s , a n W e T h o m a s

A R T I F I C I A L I N T E L L I G E N C E E N T E R S T H E M A R K E T P L A C Eb L a r r y R H a r r i s a n d D w i g h t B D a v i sT H B I T I B O O K F O R T H E A P P L E I S E R I E Sb B e r t K e r s e y a n B i l l S a n d e r sT H C O M M O D O R E 6 S U R V I V A L M A N U A Lb W i n n L R o s c hC O M M O D O R E 1 2 P R O G R A M M E R ' S R E F E R E N C E G U I D Eb 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 C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Yb y D a v i d D B u s c hT H C O M P U T E R A N T H B R A I Nb S c o t t L a d d T h e R e d F e a t h e r P r e s sE X P L O R I N G A R T I F I C I A L I N T E L L I G E N C E O Y O U R A P P L E I b T i H a r t n e l lE X P L O R I N G A R T I F I C I A L I N T E L L I G E N C E O N Y O U R C O M M O D O R E 6 b T i H a r t n e l lE X P L O R I N G A R T I F I C I A L I N T E L L I G E N C E O Y O U R I B M P Cb T i H a r t n e l lE X P L O R I N G T H U N I X E N V I R O N M E N Tb T h W a i t e G r o u p I r e n e P a s t e r n a c kF R A M E W O R K F R O M T H G R O U N D U b T h W a i t e G r o u p C y n t h i a S p o o r a n R o b e r t W a r r e nH O T O G E T T H E M O S T O U O F C O M P U S E R V E , 2 E D I T I O Nb C h a r l e s B o w e n a n D a v i d P e y t o nH O T O G E T T H E M O S T O U O F T H E S O U R C Eb C h a r l e s B o w e n a n D a v i d P e y t o nT H I D E A B O O K F O Y O U R A P P L E I H o t P u t Y o u r A p p l e I t W o r k a H o m eb D a n n y G o o d m a nT H E M A C I N T O S Hb B i l l O ' B r i e n

M A C I N T O S H P R I M E R P L U Sb T h W a i t e G r o u p S t e p h e n W P r a t aT H N E i G U I D E T I B M ' S P C j rb W i n n L R o s c hO R C H E S T R A T I N G S Y M P H O N Yb T h W a i t e G r o u p D a S h a f e r w i t h M a r y J o h n s o n

P C - D O S / M S - D O SU s e r ' s G u i d e t t h M o s t P o p u l a r O p e r a t i n g S y s t e m f o P e r s o n a l C o m p u t e r s

b A l a n M . B o y d' O W E IP O W E R P A I N T I N G : C O M P U T E R G R A P H I C S O T H E M A C I N T O S H

b V e r n e B a u m a n a n R o n a l d K i d d i l l u s t r a t e d b y G a s p e r V a c c a r oS M A R T E R T E L E C O M M U N I C A T I O N SH a n d s - O n G u i d e t O n - L i n e C o m p u t e r S e r v i c e s

b C h a r l e s B o w e n a n S t e w a r t S c h n e i d e rS W I N G W I T H J A Z Z : L O T U S J A Z Z O T H E M A C I N T O S Hb D a t a t e c h P u b l i c a t i o n s C o r p . M i c h a e l M c C a r t yU N D E R S T A N D I N G E X P E R T S Y S T E M Sb T h W a i t e G r o u p M i k e V a H o r nU S E R ' S G U I D E T T H E A T & T P 6 3 0 0 P E R S O N A L C O M P U T E Rb D a v i d B P e a t r o y , R i c a r d o A . A n z a l d u a , H A W o h l w e n d , a n d D a t a t e c hP u b l i c a t i o n s C o r p .

Page 5: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 5/290

T H C O M M O D O R E1 2 S U B R O U T I N E

L I B R A R YD a v i d D B u s c h

B A N T A M B O O K ST O R O N T O N E Y O R K L O N D O N S Y D N E Y A U C K L A N D

Page 6: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 6/290

A a l w a y s , f o C a t h y .

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R YB a n t a m B o o k A u g u s t 1 9 8 6

A l r i g h t s r e s e r v e d .C o p y r i g h t 1 9 8 6 b D a v i d D . B u s c h .

C o m m o d o r e 1 2 i t r a d e m a r k o C o m m o d o r e E l e c t r o n i c s , L t d .C o v e r d e s i g n b J C a r o f f A s s o c i a t e s , I n c .

B o o k d e s i g n b y N i c o l a M a z z e l l aT h i s b o o k m a n o b e r e p r o d u c e d i w h o l e o i p a r t , b

m i m e o g r a p h o a n o t h e r m e a n s , w i t h o u t p e r m i s s i o n .F o i n f o r m a t i o n a d d r e s s : B a n t a m B o o k s , I n c .

I S B N 0 - 5 5 3 - 3 4 3 0 8 - 4P u b l i s h e d s i m u l t a n e o u s l y i t h U n i t e d S t a t e s a n C a n a d a

B a n t a m B o o k s a r p u b l i s h e d b B a n t a m B o o k s , I n c . I t t r a d em a r k , c o n s i s t i n g o t h w o r d s ' B a n t a m B o o k s ' ' a n t h p o t r a y a l o r o o s t e r , i R e g i s t e r e d i U . S . P a t e n t a n T r a d e m a r kO f f i c e a n i o t h e r c o u n t r i e s . M a r c a R e g i s t r a d a . B a n t a mB o o k s , I n c . , 6 6 F i f t h A v e n u e , N e Y o r k , N e Y o r k 1 0 1 0 3 .

P R I N T E D I T H U N I T E D S T A T E S O F A M E R I C A0 9 8 7 6 5 4 3 2 1

Page 7: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 7/290

C O N T E N T S

P R E F A C E i I N T R O D U C T I O N x

S U B R O U T I N E M A G I CB U S I N E S S A N F I N A N C I A L 1

L o a n A m o u n t 1 P a y m e n t A m o u n t 1 N u m b e r o P a y m e n t s 1 R e m a i n i n g B a l a n c e 2 Y e a r s t R e a c h D e s i r e d V a l u e 2 F u t u r e V a l u e 2 R e g u l a r D e p o s i t s 2 D e p o s i t A m o u n t 2 A n n u i t y W i t h d r a w 3 R a t e o R e t u r n 3 3D e p r e c i a t i o n R a t e 3 D e p r e c i a t i o n A m o u n t 3 T e m p e r a t u r e 4 D a t e F o r m a t t e r 4 3N u m b e r o D a y s 4

Page 8: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 8/290

D a C o n v e r t e r 4 M e n u 5 T i m e A d d e r 5 M P 5 A b b r e v i a t i o n s 5 S e q u e n t i a l F i l e — W r i t e t D i s k 6 S e q u e n t i a l F i l e — R e a d f r o m D i s k 6 7

B O M B P R O O F D A T A I N P U T 7 L i n e I n p u t 7 N u m b e r I n p u t 7 L e t t e r I n p u t 7 C a s e C o n v e r t e r 8

S T R I N G H A N D L I N G 8 R e p l a c e S t r i n g 8 I n s e r t S t r i n g 8 C H R $ V a l u e 8 E x c h a n g e 9 S t r i n g $ 9 S t r i n g S o r t 9 S h e l l - M e t z n e r S o r t 9 A r r a y L o a d e r 1 0 D e s p a c e r 1 0 4C e n t e r S t r i n g 1 0 F l u s h R i g h t S t r i n g 1 0 E n c o d e S t r i n g 1 1 D e c o d e S t r i n g 1 1 W o r d C o u n t e r 1 1 4G l o b a l S e a r c h 1 1 7

G A M E R O U T I N E S 1 2 U s i n g J o y s t i c k s 1 2

8 0 - C o l u m n J o y s t i c k — H o r i z o n t a l M o v e m e n t 1 2 8 0 - C o l u m n J o y s t i c k — V e r t i c a l M o v e m e n t 1 2 8 0 - C o l u m n J o y s t i c k — A l l D i r e c t i o n s 1 3 8 0 - C o l u m n J o y s t i c k — C o l o r D r a w i n g 1 3 4 0 - C o l u m n J o y s t i c k — H o r i z o n t a l M o v e m e n t 1 3 4 0 - C o l u m n J o y s t i c k — V e r t i c a l M o v e m e n t 1 3 4 0 - C o l u m n J o y s t i c k — M o v e A l l D i r e c t i o n s 1 4 4 0 - C o l u m n J o y s t i c k — C o l o r D r a w i n g 1 4

Page 9: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 9/290

4 0 - C o l u m n J o y s t i c k s — f o r T w J o y s t i c k sK e y b o a r d J o y s t i c kK e y b o a r d D r a w i n g

P a d d l e sR a n d o m I n t e g e rR a n d o m S e t sA n i m a t e d C o i n F l i pN - S i d e d D i c eD e a l C a r d sD e l a y L o o p

I N T R O D U C T I O N T O G R A P H I C SB i t - M a p D r a w i n gG r a p h i c s P l o t t i n gP r o g r a m m i n g C h a r a c t e r sS h a p e M o v e r

U S I N G S O U N DC o m m o d o r e 1 2 O r g a nS i r e nF l y i n g S a u c e rB u r g l a r A l a r mA l a r m S o u n dP l a n e E n g i n eB o m b D r o p p i n gH e l i c o p t e rC o m p u t e r S o u n dD i s a s t e r S o u n dR o u l e t t e W h e e lC l o c k T i c k i n g

S O F T W A R E T R I C K SC l o c k S e t t e rE l a p s e d T i m eT i m e rC o l o r C h e c k e rP r o g r a m K e y sF u n c t i o n K e y sU t i l i t y K e y sC u r s o r M o v e rP r o g r a m T r a n s f e rT e r m i n a l

1 4 1 4 1 4 1 5 1 5 1 5 1 5 1 6 1 6 1 6

1 7 1 7 1 7 1 8 1 8

1 9 1 9 1 9 1 9 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 1

2 1 2 1 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 3 2 3

Page 10: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 10/290

B I T S A N B Y T E S 2 3 P e e k B i 2 3 B i D i s p l a y e r 2 3 B i t O n 2 4 B i t Z e r o 2 4 R e v e r s e B i 2 4 B i n a r y t D e c i m a l 2 4 R o u n d e r 2 4 8P r i m e N u m b e r s 2 5 N u m b e r S o r t 2 5 G L O S S A R Y 2 5 I N D E X 2 6

Page 11: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 11/290

P R E F A C E

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

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

T h i s c o l l e c t i o n o s u b r o u t i n e s f o t h p o p u l a r C o m m o d o r e 1 2 p e r s o n a l c o m p u t e r h a t w p u r p o s e s . Y o u ' l l f i n d n e a r l y 1 0 u s e f u l ,r e a d y - t o - t r a n s p l a n t s u b r o u t i n e s a n p r o g r a m m i n g t i p s t h a t w i l le n a b l e y o u r o w p r o g r a m s t s o l v e t o u g h b u s i n e s s p r o b l e m s ,r e s o u n d w i t h m u s i c , o s i z z l e w i t h j o y s t i c k a c t i o n . A l t h o u g h t h i sc o l l e c t i o n i n o i n t e n d e d a " h o w - t o " p r o g r a m m i n g g u i d e , w

I

Page 12: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 12/290

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

t h i n k y o u ' l l p i c k u w e a l t h o f u s e f u l g u i d e l i n e s a n t r i c k s a l o n gt h w a y .

T h C o m m o d o r e 1 2 S u b r o u t i n e L i b r a r y i i n t e n d e d a c o m p a n i o n t t h C o m m o d o r e 1 2 8 S y s t e m G u i d e p r o v i d e d w i t hy o u r c o m p u t e r , a n m o r e a d v a n c e d t e x t s l i k e C o m m o d o r e 1 2 P r o g r a m m e r ' s R e f e r e n c e G u i d e . M a n y o t h c o n c e p t s y o l e a r ni t h o s e m a n u a l s a r e a p p l i e d h e r e i s i m p l y c o n s t r u c t e d s u r o u t i n e s , w i t h o n l y o n o t w s t a t e m e n t s p e l i n e f o e a s yc o m p r e h e n s i o n . G r o u p e d b f u n c t i o n , c a r e f u l l y a n n o t a t e d , a n a r r a n g e d t b r e a d i l y d r o p p e d i n t o y o u r o w B A S I C s o f t w a r e ,t h e s e s u b r o u t i n e s s h o u l d s a v e y o t i m e w h i l e s h a r p e n i n g y o u rp r o g r a m m i n g s k i l l s .

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

Page 13: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 13/290

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

B A S I C s u b r o u t i n e b o o k s h a v e b e e n a r o u n d a l o n g a p e r s o n a lc o m p u t e r s h a v e . H o w e v e r , t h i s o n i u n l i k e a n c o l l e c t i o n o s u b r o u t i n e s t h a t y o m i g h t h a v e s e e n b e f o r e . Y o u ' l l f i n d e i g h td o z e n p r o g r a m m o d u l e s y o u c a r e a l l y u s e , f o r m a t t e d f o m a x im u c l a r i t y , e x p l a i n e d c o m p l e t e l y , a n r i g o r o u s l y t e s t e d . M o s ti m p o r t a n t , t h e s e s u b r o u t i n e s w e r e d e s i g n e d f o o p t i m a l f l e x i b i li t y , s t h a t y o c a e a s i l y a d a p t t h e m t y o u r o w p r o g r a m s .T h e s e r o u t i n e s s u p p l y t h m o s t - n e e d e d b u s i n e s s f o r m u l a s , c o m m o ns o f t w a r e t r i c k s f o t h C o m m o d o r e 1 2 8 , a n g r a p h i c s a n s o u n dr o u t i n e s t h a t c a s e r v e a s p r i n g b o a r d t m o r e a d v a n c e dp r o g r a m m i n g .

x

Page 14: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 14/290

x i T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y o u ' l l l e a r n h o t f i g u r e h o w m u c h m o n e y c a b d r a w n o u o a a n n u i t y e a c h m o n t h , h o t p r o g r a m y o u r o w c u s t o mc h a r a c t e r s e t s , h o t r e a l l y u s t h C o m m o d o r e 1 2 8 ' s f u n c t i o nk e y s .

W h a t y o w o n ' t f i n d a r e c h a p t e r s t o p - h e a v y w i t h e x o t i c m a t hf u n c t i o n s a n r a r e l y u s e d s t a t i s t i c a l p r o g r a m s . T h o s e w e r e f i n eb a c k i t h d a y s w h e n m i c r o c o m p u t e r s w e r e u s e d p r i m a r i l y b s c i e n t i s t s , c o m p u t e r n u t s , a n o t h e r h i g h - t e c h t y p e s w h d o t e d o n e w e r a n b e t t e r w a y s o d o i n g F a s t F o u r i e r t r a n s f o r m s .

H o w e v e r , t h C o m m o d o r e 1 2 8 , w h i l e i i p o w e r f u l , c a p a b l em i c r o c o m p u t e r , i b e i n g s o l d t a b r o a d r a n g e o u s e r s , i n c l u d i n gm a n y n o n t e c h n i c a l o w n e r s . S o m e w a n t t u s t h b r o a d r a n g e o s o f t w a r e a v a i l a b l e f o t h C o m m o d o r e 1 2 a n C o m m o d o r e 6 t d w o r d p r o c e s s i n g o d a t a b a s e m a n a g e m e n t o t m u l l o v e re l e c t r o n i c s p r e a d s h e e t s . O t h e r s w a n t o n l y t p l a y g a m e s , s i n c et h C o m m o d o r e 1 2 8 , w i t h i t t h r e e s y n t h e s i z e r - q u a l i t y v o i c e s ,s p r i t e s , a n b i t - m a p g r a p h i c s , i g a m e s m a c h i n e n o n p a r e i l .M a n y m o r e o w n e r s a r i n t e r e s t e d i n l e a r n i n g p r o g r a m m i n g b u m a h a v e s k i m p y t e c h n i c a l b a c k g r o u n d . T h e n t h e r e a r e t h o s e o y o w h r e a l l y d u n d e r s t a n d c o m p u t e r s b u w o u l d l i k e t o a v o i dr e i n v e n t i n g t h e w h e e l .

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

W h i l e B A S I C 7 . h a s a d d e d d o z e n s o n e c o m m a n d s t t h o s ea v a i l a b l e w i t h t h B A S I C 2 . o f f e r e d w i t h t h C o m m o d o r e 6 4 s o m e i m p o r t a n t s t a t e m e n t s a n f u n c t i o n s c o m m o n t o t h e r B A S I C s h a v e b e e n l e f t o u t . T h i s b o o k s h o w s y o h o t a d t y o u rc o m p u t e r t h S T R I N G $ , M I D $ L I N E I N P U T , a n S W A P ( w c a l l i E X C H A N G E ) c o m m a n d s a v a i l a b l e o t h I B P C B e t e y e t , y o c a n a d d s o m e n e f u n c t i o n s , l i k e R E P L A C E a n I N S E R T S T R I N G , n o a v a i l a b l e o a n o t h e r m a c h i n e !

A r y o c o n f u s e d b e v e n t h m o s t l u c i d e x p l a n a t i o n s o u s i n g t h j o y s t i c k s t m a n i p u l a t e o b j e c t s o t h e s c r e e n ? J u s tt r a n s p l a n t o n o t e j o y s t i c k r o u t i n e s i n c l u d e d i t h i s b o o k .

Page 15: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 15/290

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

I y o f i n d t h a t e v e n t h C o m m o d o r e 1 2 8 ' s s e v e r a l h u n d r e da l p h a n u m e r i c , g r a p h i c s , a n s p e c i a l c h a r a c t e r s a r e n ' t e n o u g h f o y o a n y o u ' d l i k e t o d e s i g n y o u r o w s p e c i a l c h a r a c t e r s , t a k eh e a r t . Y o d o n ' t n e e d t c o m p r e h e n d a l t h g o r y d e t a i l s .m o d u l e i i n c l u d e d w h i c h y o u c a u s t r e d e f i n e u t o f i v ec h a r a c t e r s w i t h n p r o b l e m s . U s i n g t h C o m m o d o r e 1 2 8 ' s r e a lt i m e c l o c k t m e a s u r e e l a p s e d t i m e o t c o n t r o l o u t s i d e e v e n t s i a l s o p r o v i d e d f o r . G e n e r a t e m u s i c a l n o t e s w i t h i n y o u r o w p r o g r a m s — o r a d d s o u n d e f f e c t s . R e a d y - m a d e s u b r o u t i n e s a r e p r v i d e d f o y o u r u s e .

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

M o r e a d v a n c e d p r o g r a m m e r s c a u s s e v e r a l r o u t i n e s a su t i l i t i e s t m a k e t h e i r w o r k e a s i e r w h i l e d o i n g s o p h i s t i c a t e d" s o f t " P O K i n g o i n d i v i d u a l b i t s w i t h i n m u l t i p u r p o s e C o m m od o r e 1 2 r e g i s t e r .

W e ' v e g o n e l i g h t o t h " b a s i c " s u b r o u t i n e s , a l t h o u g h p l e n t yo t h m o r e i m p o r t a n t c o n v e r s i o n a n f i n a n c i a l r o u t i n e s a r e p r ov i d e d . T h e m p h a s i s h e r e i o n m o d u l e s y o c a n ' t f i n d a n y w h e r ee l s e , a n t h o s e t a i l o r e d s p e c i f i c a l l y f o r t h C o m m o d o r e 1 2 8 , t h a tw i l l h e l p y o i m p r o v e y o u r p r o g r a m m i n g i m m e d i a t e l y .

S O M E G R O U N D R U L E SF i r s t , t h i s i B A S I C s u b r o u t i n e g u i d e . Y o d o n ' t h a v e t

k n o w t h f i r s t t h i n g a b o u t m a c h i n e o a s s e m b l y l a n g u a g e t u s a n o t h m o d u l e s i t h i s b o o k . W w o n ' t a s y o t c a l l u t h M O N I T O R , a n y o n e e d n ' t t y p e i i n t e r m i n a b l e D A T A l i n e st h a t w i l l b P O K E d i n t o m e m o r y a m a c h i n e - l a n g u a g e c o d e .S o m e f u n c t i o n s , p a r t i c u l a r l y s o r t i n g , a r f a s t e s t w h e n h a n d l e d b m a c h i n e l a n g u a g e c a l l s . H o w e v e r , i y o c h o o s e t s t i c k w i t hB A S I C , y o u ' l l f i n d t h r e e s o r t i n g r o u t i n e s i t h i s b o o k t h a t a r ep e r f e c t l y u s a b l e f o s m a l l l i s t s .

Page 16: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 16/290

x i T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

T h i s b o o k i i n t e n d e d f o o w n e r s o t h C o m m o d o r e 1 2 o n l y . I c o m p u t e r t e r m s , t h f u n c t i o n a l i t y ( p o w e r ) o t h C o m m od o r e 1 2 i s u p e r s e t ( e n h a n c e m e n t ) o t h a t o t h C o m m o d o r e6 4 I o t h e r w o r d s , j u s t a b o u t e v e r y t h i n g t h C o m m o d o r e 6 w i l ld o t h C 1 2 8 w i l l d a w e l l . M o s t C 6 s o f t w a r e w i l l r u a i s H o w e v e r , t h C o m m o d o r e 1 2 h a m a n y n e f e a t u r e s ( s u c h a b u i l t - i n 8 0 - c o l u m n s c r e e n o u t p u t ) a n r a f t o m o r e p o w e r f u lB A S I C c o m m a n d s . S o w h i l e t h C 1 2 8 c a r u C 6 p r o g r a m s ,m a n y i n t e n d e d f o t h C o m m o d o r e 1 2 8 c a n n o t b e u s e d o t h C o m m o d o r e 6 4

M a n y o t h e s u b r o u t i n e s i t h i s b o o k w i l l w o r k o t h C o m o d o r e 6 4 b u m a n y m o r e w i l l n o t . N s p e c i a l e f f o r t w a m a d e t w r i t e t h e c o d e t r e t a i n c o m p a t i b i l i t y w i t h t h e a r l i e r c o m p u t e r . I B E G I N / B E N D w a m o r e e f f i c i e n t u s o t h I F / T H E N c o n d it i o n a l s t a t e m e n t , w d i d n ' t a v o i d i t S o m e t i m e s f e w c h a n g e sw i l l c o n v e r t a s u b r o u t i n e f o p r o p e r o p e r a t i o n o t h C o m m o d o r e6 4 b u r e a d e r s w h w a n t t t r a r o t h e i r o w n . I c o u p l e o s p e c i f i c c a s e s , r o u t i n e s w e r e w r i t t e n t b e c o m p a t i b l e w i t h t h e a r l i e r c o m p u t e r , a n t h e y a r s n o t e d i t h t e x t .

" S a m p l e r u n s " a r u s e d o n l y i s e l e c t e d c a s e s . F o m a n y o t h s u b r o u t i n e s , s u c h a t h s o u n d a n g r a p h i c s r o u t i n e s , p r s e n t i n g a n i m a g e o w h a t t h e s c r e e n l o o k s l i k e i d i f f i c u l ta n n o v e r y u s e f u l . I n o t h e r c a s e s , s a m p l e o u t p u t i d o w nr i g h t d u m b , b e c a u s e a n i n t e l l i g e n t u s e r w i l l k n o w a g l a n c ew h e t h e r o n o s o r t e d l i s t i s o r t e d p r o p e r l y , o r w h e t h e r o n o a a r r a y i p r o p e r l y l o a d e d .

S a m p l e r e s u l t s a r u s e f u l f o t h o s e w h w a n t t d o u b l e - c h e c kt s e i t h e y h a v e t y p e d i a s u b r o u t i n e p r o p e r l y , a n t h e y a r p r o v i d e d i t h o s e c a s e s , p a r t i c u l a r l y i t h e b u s i n e s s r o u t i n e s . I y o u s t h v a r i a b l e v a l u e s w p r o v i d e i t h i s b o o k , y o s h o u l da c h i e v e t h e s a m e r e s u l t s w d i d .

A g a i n , w e m p h a s i z e t h a t t h i s b o o k i n o i n t e n d e d a h o w - t o - p r o g r a m t u t o r i a l . M a n y o t h e t e c h n i q u e s a r e e x p l a i n e d i d e t a i l , b u y o s h o u l d a l r e a d y h a v e s o m e e x p e r i e n c e i p r o g r a mm i n g t g e t h m o s t f r o m t h e m . M u c h o t h t i m e y o w i l l b a b l e t s u b s t i t u t e y o u r o w v a r i a b l e v a l u e s f o t h o s e p r o v i d e d

Page 17: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 17/290

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

a n t u s t h s u b r o u t i n e s w i t h o u t f u l l y u n d e r s t a n d i n g t h e n u t sa n b o l t s o w h a t i g o i n g o n H o w e v e r , s o m e u n d e r s t a n d i n g o p r o g r a m m i n g i p r e r e q u i s i t e f o t h i s b o o k .

C e r t a i n c a p a b i l i t i e s o t h C o m m o d o r e 1 2 a r b e y o n d t h s c o p e o t h i s b o o k , e v e n t h o u g h t h e y a r r e a d i l y a c c e s s i b l e f r o mB A S I C . A d v a n c e d m u s i c a n s o u n d t e c h n i q u e s c o u l d e a s i l y e c o m p a s s b o o k o t h e i r o w n . T h i s b o o k p r o v i d e s a i n t r o d u c t i o n ;l e a r n i n g t s h a p e y o u r o w E N V E L O P E c a b p i c k e d u f r o mC o m m o d o r e 1 2 8 P r o g r a m m e r ' s R e f e r e n c e G u i d e , a l s o a v a i l a b l ef r o m B a n t a m B o o k s .

S p r i t e a n m u l t i c o l o r b i t - m a p g r a p h i c s a l s o a r w o r t h m o r ep a g e s t h a n a r a l l o t t e d h e r e . F o r t u n a t e l y , t h e C o m m o d o r e 1 2 h a b u i l t - i n s p r i t e d e f i n i t i o n a n m a n i p u l a t i o n c o m m a n d s t h a tm a k e t h e s e t o o l s e a s i e r t u s t h a n e v e r . T h i s b o o k ' s g r a p h i c sc h a p t e r h a r o u t i n e , S h a p e M o v e r , t h a t d e m o n s t r a t e s h o o

j e c t s ( n o t j u s t s p r i t e s ) c a b d r a w n o t h s c r e e n a n s t o r e d i s t r i n g v a r i a b l e . I t h i s i n t r o d u c t i o n t s p r i t e c o n c e p t s p i q u e s y o u ri n t e r e s t , C o m m o d o r e 1 2 8 P r o g r a m m e r ' s R e f e r e n c e G u i d e h a s l o m o r e e x c e l l e n t i n f o r m a t i o n .

Page 18: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 18/290

Page 19: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 19/290

S U B R O U T I N EM A G I C

W h i l e m a n y o t h e s u b r o u t i n e s i t h i s b o o k a r e r e a d y - t o - r u np r o g r a m s i t h e i r o w r i g h t , t h e y w i l l b m o s t u s e f u l t y o w h e ny o t r a n s p l a n t t h e m i n t o y o u r o w p r o g r a m s . W e ' v e m a d e d o i n gt h a t a s s i m p l e a p o s s i b l e .

T h s u b r o u t i n e s h a v e b e e n d i v i d e d i n t o s e c t i o n s , s e t o f w i t hR E M a r k s t a t e m e n t s . T h b a s i c r o u t i n e i t s e l f i c l e a r l y l a b e l e da n h a u n i q u e s e o l i n e n u m b e r s n o t d u p l i c a t e d b a n o t h e rs u b r o u t i n e i t h i s b o o k . T h l i n e n u m b e r s a r a l h i g h , b e g i n n i n gw i t h 1 0 0 0 0 a n p r o c e e d i n g t n e a r l y 3 0 0 0 0 . T h e r e f o r e , y o c a u s a m a n y o t h e s e s u b r o u t i n e s a y o w i s h i p r o g r a mw i t h o u t h a v i n g t r e n u m b e r t h e m .

Page 20: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 20/290

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

A a m a t t e r o f a c t , y o m a f i n d i m o s t c o n v e n i e n t n o t r e n u m b e r t h e s u b r o u t i n e s a a l d u r i n g p r o g r a m d e v e l o p m e n t .W i t h t h e i r o r i g i n a l l i n e n u m b e r s i n t a c t , y o c a r e f e r t l i s ty o u h a v e c o m p i l e d o r o u t i n e s b e i n g u s e d ( o c h e c k t h i s b o o k ) t s e w h e t h e r y o s h o u l d t y p e G O S U B 2 0 1 0 0 , o G O S U B 2 1 0 0 0 t a c c e s s g i v e n r o u t i n e .

Y o m i g h t n e e d t r e n u m b e r y o u r p r o g r a m d u r i n g d e v e l o pm e n t f o s o m e r e a s o n . P e r h a p s y o r a o u o l i n e n u m b e r s i t h m a i n b o d y o t h p r o g r a m a n d n e e d m o r e r o o m . Y o c a s t i l lr e n u m b e r w i t h o u t " l o s i n g " t h l o c a t i o n o f y o u r r o u t i n e s . T y p ef e l i n e s a t h b e g i n n i n g o t h p r o g r a m l i k e t h e s e :

G O T O 1 G O S U B 2 7 1 0 0 : R E M T I M E R S U B R O U T I N EG O S U B 2 8 2 0 0 : R E M C U R S O R M O V E RG O S U B 2 0 2 0 0 : R E M R A N D O M R A N G EG O S U B 1 7 0 0 0 : R E M J O Y S T I C K R O U T I N E

1 * * S T A R T O P R O G R A M * *

W h e n y o a r r e a d y t r e n u m b e r , y o t y p e :

R E N U M B E R 1 0 , 1 0 , 1 0

Y o u r p r o g r a m i n u m b e r e d i i n c r e m e n t s o 1 0 b e g i n n i n gw i t h L i n e 1 0 A n y t i m e y o w a n t t f i n d y o u r s u b r o u t i n e s , j u s tt y p e :

L I S T 1 - 1 0

Y o u ' l l s e s o m e t h i n g l i k e t h i s :

G O T O 1 G O S U B 1 0 1 0 : R E M T I M E R S U B R O U T I N EG O S U B 8 5 0 : R E M C U R S O R M O V E RG O S U B 7 0 0 : R E M R A N D O M R A N G EG O S U B 6 2 0 : R E M J O Y S T I C K R O U T I N E

1 * * S T A R T O P R O G R A M * *

T h p r o g r a m l i n e s 2 - a r n e v e r c a l l e d , s i n c e L i n e j u m p sc o n t r o l o v e r t h e m . H o w e v e r , t h C o m m o d o r e 1 2 w i l l o b e d i e n t l yr e n u m b e r t h e m t a c c o u n t f o t h n e l i n e n u m b e r s o y o u r

Page 21: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 21/290

S u b r o u t i n e M a g i c

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

K E 8 , C H R $ ( 1 4 7 ) + " L I S T l - 4 " + C H R $ ( 1 3 )

a n p r e s s R E T U R N . T h e r e a f t e r , p r e s s i n g t h F f u n c t i o n k e w i l ls h o w y o t h e c u r r e n t a d d r e s s e s . T h i s p a r t i c u l a r l i n e w i l l c l e a r t h s c r e e n f i r s t ( w i t h C H R $ ( 1 4 7 ) ) , s y o d o n ' t e v e n h a v e t m o v e t h c u r s o r d o w n t a e m p t y l i n e t u s i t

P A R T S O T H S U B R O U T I N EI a d d i t i o n t t h e s u b r o u t i n e i t s e l f , e a c h m o d u l e w i l l h a v e

R E M a r k s e c t i o n t h a t l i s t s t h m a j o r v a r i a b l e s t h a t y o s u p p l y t t h e s u b r o u t i n e a n t h m a j o r v a r i a b l e s t h a t a r r e t u r n e d f r o mt h s u b r o u t i n e . M o d u l e s t h a t d o n ' t h a v e v a r i a b l e s o u s t t h p r o g r a m m e r a r i n s t e a d d e s c r i b e d i t e r m s o a c t i o n n e e d e d a n r e s u l t .

S U P P L I E D B U S E R l i s t s v a r i a b l e s t h a t y o m u s t d e f i n eb e f o r e c a l l i n g t h e s u b r o u t i n e . Y o m a n e e d t o s t o r e i t h v a r i a b l e t h a m o u n t o l o a n , o t h i n t e r e s t r a t e . Y o m a d t h i sa n y w h e r e i y o u r p r o g r a m p r i o r t c a l l i n g t h e s u b r o u t i n e .

R E S U L T l i s t s t h v a r i a b l e s r e t u r n e d f r o m t h s u b r o u t i n e .T h e s e w i l l g e n e r a l l y b c a l c u l a t e d a n m a t h e n b u s e d i y o u ro w p r o g r a m . I s o m e c a s e s , t h e r e a r e o t h e r v a r i a b l e s u s e d w i t h i nt h e s u b r o u t i n e t e m p o r a r i l y t h a t a r e o n p a r t i c u l a r u s t t h p r o g r a m m e r . T h e s e a r e n o t d e s c r i b e d i t h t e x t .

I M P O R T A N T N O T E : V a r i a b l e n a m e s w e r e c h o s e n , w h e r ep o s s i b l e , t p r o v i d e s o m e c l u e a t t h u s o t h v a r i a b l e . I a d d i t i o n , w t r i e d t c h o o s e n a m e s d i f f e r e n t f r o m t h o s e u s e d i s i m i l a r r o u t i n e s w h e r e t h e f u n c t i o n s w e r e d i f f e r e n t . H o w e v e r , i w a i m p o s s i b l e t c r o s s - r e f e r e n c e e v e r y v a r i a b l e n a m e u s e d i e v e r y s u b r o u t i n e t m a k e s u r e t h e r e w a n d u p l i c a t i o n .

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

Page 22: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 22/290

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

s u b r o u t i n e s i w a t h a t w i l l c a u s e i n c o r r e c t r e s u l t s . K e e p i m i n d t h a t o n l y t h f i r s t t w c h a r a c t e r s o C o m m o d o r e 1 2 v a r i a b l e n a m e a r s i g n i f i c a n t . V a r i a b l e s P A Y M E N T , P A I D , P T I O , a n P A Y C H E C K a r a l t h s a m e v a r i a b l e n a m e t B A S I C7 . 0 . F u r t h e r , y o s h o u l d k e e p l i s t o t h v a r i a b l e s y o u s i y o u r o w c o d e , t m a k e s u r e y o a r e n o t d u p l i c a t i n g n a m e s . T h i si p r o b a b l y o n o t h m o s t c o m m o n e r r o r s p r o g r a m m e r s m a k e .C r o s s - r e f e r e n c e u t i l i t i e s t h a t l i s t a l v a r i a b l e s a n t h e i r l i n e n u b e r s a r e h a n d y t o o l s t o h a v e .

I n t h e " I n i t i a l i z a t i o n " s e c t i o n o f t h m o d u l e , c e r t a i n c o n d it i o n s t h a t m u s t b s e u o n c e a r e s t a b l i s h e d . F o e x a m p l e ,D A T A u s e d b t h s u b r o u t i n e m a b e r e a d i n t o a a r r a y . I n i t i a li z a t i o n w i l l a l s o i n c l u d e d e f i n i n g v a r i a b l e s s u p p l i e d t t h s u b r o ut i n e . Y o m u s t t a k e c a r e o i n s e r t i n g t h e s e s o m e w h e r e i y o u rp r o g r a m s t h e s u b r o u t i n e w i l l o p e r a t e p r o p e r l y . W h a t y o m u s td i d e s c r i b e d i t h t e x t a c c o m p a n y i n g e a c h r o u t i n e .

I s o m e c a s e s t h e r e a r e s e v e r a l r e l a t e d r o u t i n e s . F o e x a mp l e , t h e r e a r e t e j o y s t i c k r o u t i n e s . S o m e o t h e c o n c e p t s a r ee x p l a i n e d o n l y o n c e . Y o m a b d i r e c t e d t l o o k a p r e v i o u ss u b r o u t i n e s f o l o n g e r e x p l a n a t i o n s . I t h i s w a y o c a a c c e s st h r o u t i n e s i a n o r d e r , w i t h o u t r e a d i n g t h e n t i r e b o o k .

P r e v i o u s C o m m o d o r e b o o k s y o m a h a v e s e e n h a v e h a p r o g r a m l i s t i n g s t h a t w e r e o f t e n s o m e w h a t d i f f i c u l t t r e a d . T h r e a s o n f o t h i s i t h a t C o m m o d o r e u s e s v a r i e t y o s p e c i a l s y b o l s t i n d i c a t e v a r i o u s s c r e e n c o l o r a n c u r s o r m o v e m e n t o t i o n s . h e a r t s y m b o l i u s e d f o " c l e a r s c r e e n " ( w C 1 2 8 u s e r sn o h a v e t h S C N C L R o p t i o n , i n s t e a d ) , t h e r e v e r s e d " Q r e p r es e n t s " C u r s o r D o w n , " a n s f o r t h . L i s t i n g s w i t h t h e s e s y m b o l sm u s t b o u t p u t w i t h a d o t - m a t r i x p r i n t e r , w h i c h i o f t e n n e a rl e t t e r q u a l i t y b u n o c l o s e e n o u g h t s t a n d u u n d e r t h p r i n t i n gr e p r o d u c t i o n p r o c e s s .

A l t h o d s p e c i a l C o m m o d o r e 1 2 c h a r a c t e r s h a v e b e e n l e f to u o t h i s b o o k . I n s t e a d , w u s t h e i r C H R $ e q u i v a l e n t s , o f t e n b d e f i n i n g v a r i a b l e w i t h t h a t v a l u e . P R I N T D N ( w h e r e D N C H R $ ( 1 7 ) ) i p r e f e r a b l e t h a r d - t o - r e a d r e v e r s e d Q ' s , o s t r a n g ew o r d - e q u i v a l e n t s s u c h a { C R S R D W N S } u s e d i s o m e o t h m a g a z i n e s . W l i k e t h v a r i a b l e s m e t h o d s m u c h t h a t w d e

Page 23: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 23/290

S u b r o u t i n e M a g i c

s i g n e d s p e c i a l c u r s o r m o v e m e n t s u b r o u t i n e ( f o u n d i C h a p t e r 8 t h a t m a k e s m o v i n g a r o u n d t h s c r e e n a s s i m p l e a s i n g l e l i n e :

1 0 P R I N T H M $ ; L E F T ? ( R $ , C O L ) ; L E F T $ ( D $ , R O W )

S c r e e n - c l e a r i n g , c u r s o r m o v e m e n t , a n c o l o r s h a v e b e e n a d d e do n l y w h e r e n e c e s s a r y i t h e s e s u b r o u t i n e s , t k e e p t h e l e n g t hd o w n a n t a l l o w t h e u s e r t o t a i l o r m o d u l e s t s u i t h i s o h e o w t a s t e . I y o w a n t p r o m p t s t f e a t u r e r e v e r s e d p r i n t i n g o a t t e n t i o n - g r a b b i n g c o l o r , f e e l f r e e t m a k e a n c h a n g e s y o w i s h .Y o m i g h t a l s o w a n t t f o l l o w o u e x a m p l e o u s i n g v a r i a b l e s( R E D $ , e t c . ) r a t h e r t h a n o d d s y m b o l s t m a k e y o u r p r o g r a ml i s t i n g s m o r e r e a d a b l e . T h i s i s u b r o u t i n e c o o k b o o k ; t h f i n i s hi n g t o u c h e s o t h m e a l a r u t y o u .

T H A C C O M P A N Y I N G T E X TE a c h s u b r o u t i n e i p r e c e d e d b d e s c r i p t i v e t e x t t h a t p r o v i d e s

m o r e i n f o r m a t i o n o t h m o d u l e a n d h o t u s i t A t h t o p o ft h d e s c r i p t i o n i t h e s u b r o u t i n e n a m e . N e x t i s h o r t W H A T I D O E S s u m m a r y o t h r o u t i n e ' s f u n c t i o n . L E V E L t e l l s y o t h a p p r o x i m a t e p r o g r a m m i n g p r o w e s s n e e d e d t u n d e r s t a n d a n d ,p r e s u m a b l y , u s t h r o u t i n e e f f e c t i v e l y .

M o s t o t h s u b r o u t i n e s f a l l i n t o t h i n t e r m e d i a t e c a t e g o r y . I i a s s u m e d t h a t u s e r s h a v e b a s i c u n d e r s t a n d i n g o t h m o s t -o f t e n - u s e d B A S I C 7 . s t a t e m e n t s a n f u n c t i o n s . S o m e o t h s u r o u t i n e s h a v e b e e n d e e m e d n o v i c e l e v e l . R e a d e r s w h h a v e b e e np r o g r a m m i n g a w h i l e w i l l p r o b a b l y f i n d s u c h r o u t i n e s a M P c a l c u l a t o r s , M e n u f o r m a t t e r s , a n d E x c h a n g e f u n c t i o n s b i t e l em e n t a r y . H o w e v e r , b e g i n n i n g p r o g r a m m e r s f i n d t h e s e s i m p l e r o t i n e s a v a l u a b l e a t h m o r e a d v a n c e d f o l k s h a t e t h e m . T h e r e f o r e ,y o B A S I C v e t e r a n s s h o u l d b p a t i e n t a n r e m e m b e r t h e r e w a o n c e t i m e w h e n y o f o u n d t h i n g s a s i m p l e a F O R - N E X Tl o o p b i p u z z l i n g .

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

Page 24: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 24/290

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

a d v a n c e d p r o g r a m m e r s . T h i s i s o m e t h i n g o c a t c h - 2 2 . T h o s ew h a r r e a l l y a d v a n c e d h a v e l i t t l e n e e d f o p r e p a c k a g e d r o u t i n e st h a t P E E K b i t s a n s f o r t h . T h o s e w h n e e d t h o s e f u n c t i o n s c a p r o b a b l y w r i t e t h e i r o w n , o c a a c c e s s t h C o m m o d o r e 1 2 K e r n a lr o u t i n e s f r o m B A S I C a q u i c k l y a s t h e y c a l o o k u s o m e t h i n g i t h i s b o o k .

N e v e r t h e l e s s s o m e m o r e a d v a n c e d m o d u l e s a r e p r o v i d e d , a n t h e s e c a s e r v e a s a b r i d g e f o t h i n t e r m e d i a t e p r o g r a m m e r w h i o t h e t h r e s h o l d o t r u e c o m p u t e r e x p e r t i s e a n n e e d s s o m ea d d i t i o n a l h e l p . W h e n y o r e a c h t h i s a d v a n c e d s t a g e , y o u ' l l w a n tt m o v e o t m o r e s o p h i s t i c a t e d s p r i t e a n s o u n d t e c h n i q u e ss u c h a t h o s e f o u n d i C o m m o d o r e 1 2 P r o g r a m m e r ' s R e f e r e n c eG u i d e .A f t e r L E V E L y o u ' l l f i n d H O T O U S E I d i s c u s s i o n o t h s u b r o u t i n e . T h i s s e c t i o n m a b v e r y b r i e f o r m o r e l e n g t h y , d p e n d i n g o t h c o m p l e x i t y o t h e c o n c e p t s b e i n g i n t r o d u c e d . W h i l et h i s b o o k d o e s n ' t h a v e t h e s p a c e f o t r u l y c o m p r e h e n s i v e c o v e r a g eo a l t h B A S I C t e c h n i q u e s u s e d , y o u ' l l f i n d t h i s s e c t i o n g o o di n t r o d u c t i o n i m a n y c a s e s .

L I N E - B Y - L I N E D E S C R I P T I O N i b r i e f d e s c r i p t i o n o f t h f u n c t i o n o m a j o r s u b r o u t i n e l i n e s . N o e v e r y l i n e i d i s c u s s e d( t h e f u n c t i o n o 3 0 E N b e i n g o b v i o u s t e v e r y r e a d e r , w h o p e ) ,b u t h k e p o i n t s a r c o v e r e d .

S U G G E S T E D E N H A N C E M E N T S p o i n t s o u i m p r o v e m e n t so m o d i f i c a t i o n s t h r e a d e r c a a d w h e n i n c l u d i n g t h e r o u t i n e i h i s o r h e o w p r o g r a m . S o m e o t h s u b r o u t i n e s , p a r t i c u l a r l y t h g r a p h i c s a n j o y s t i c k m o d u l e s , h a v e r a t h e r l a v i s h e n h a n c e m e n t sb u i l t i n a l e a s t r e l a t i v e t s u b r o u t i n e s . O t h e r s a r m o r e b a r e -b o n e s i s c o p e . U s e r s c a n e x p a n d t h e s e w i t h t h e i r o w c h a n g e s ,i n c o r p o r a t i n g o t h e r s u b r o u t i n e s i t h b o o k , o r d o i n g a d d i t i o n a lw o r k .

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

Page 25: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 25/290

S u b r o u t i n e M a g i c

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

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

N o t e t h a t n o e v e r y s u b r o u t i n e t a k e s c a r e o e v e r y p o s s i b l ee v e n t u a l i t y t h r o u g h e r r o r t r a p s . W e ' v e t r i e d t t a k e c a r e o f t h m o s t o b v i o u s u s e r e r r o r s . H o w e v e r , c h e c k i n g f o e v e r y n o n s e n s ic a i n p u t ( s u c h a t h u s e r ' s s u p p l y i n g n e g a t i v e v a l u e s f o i n t e re s r a t e s , p r i n c i p a l a m o u n t s , o l o a n p a y m e n t s i t h f i n a n c i a ls u b r o u t i n e s ) w o u l d h a v e t w n e g a t i v e i m p a c t s . F i r s t , t h s u b r o ut i n e s w o u l d b s l o n g a n u n w i e l d y t h a t t h e r e a d e r w o u l d h e s i t a t et t y p e t h e m i n A l s o , t h e x t r a n e o u s e r r o r t r a p s w o u l d m a k e t h r o u t i n e s m o r e d i f f i c u l t t u n d e r s t a n d .

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

R E S U L T i s h o r t s u m m a r y o u t l i n i n g w h a t h a p p e n s a f t e rt h r o u t i n e h a r u n .

S A M P L E V A L U E S , t h r e s u l t s o b t a i n e d w h e n y o u s t h v a r i a b l e s a s s h o w n i t h s u b r o u t i n e , a r e s u p p l i e d f o u s e r s w h w i s h t m a k e s u r e t h e y h a v e t y p e d i t h s u b r o u t i n e p r o p e r l y .W h i l e n o s u r e - f i r e , c o m p a r i n g r e s u l t s w i l l s h o w i y o a r o t h r i g h t t r a c k .

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

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

Page 26: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 26/290

T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

A l o n g t h s a m e l i n e s , f o r c o n s i s t e n c y ' s s a k e , e a c h s u b r o u t i n ei p r e s e n t e d i m o r e o l e s s t h s a m e f o r m a t . S o m e s u b r o u t i n e sa n t h e i r d e s c r i p t i o n s l e n d t h e m s e l v e s t t h f o r m a t m o r e t h a no t h e r s . T h e r e f o r e , y o m a f i n d s o m e S U G G E S T E D E N H A N C EM E N T S t h a t a r e b r i e f , a n S A M P L E V A L U E S l i s t e d a n o a p p l i c a b l e . I f e c a s e s t h m o d u l e s t h e m s e l v e s a r s t a n d a l o n ep r o g r a m s r a t h e r t h a n s u b r o u t i n e s a n a r n o a r r a n g e d i t h t r a d i t i o n a l G O S U B / R E T U R N f a s h i o n .

A C C E S S I N G T H S U B R O U T I N E L I B R A R YT h o n l y r e m a i n i n g p o i n t t c o v e r i h o t a c c e s s y o u r

s u b r o u t i n e l i b r a r y . O n o t h b e s t t h i n g s a b o u t s u b r o u t i n e s i t h a t t h e y c a b e r e u s e d m a n y t i m e s w i t h i n a e x i s t i n g p r o g r a m ,a n p u t w o r k i m a n y d i f f e r e n t p i e c e s o f s o f t w a r e a w e l l . O n c ey o h a v e t y p e d i n s a y , j o y s t i c k r o u t i n e f r o m t h i s b o o k , y o w i l ln o n e e d t r e t y p e i e v e r y t i m e y o w r i t e n e p r o g r a m r e q u i ri n j o y s t i c k h a n d l i n g . B e c a u s e t h e s u b r o u t i n e s i t h i s b o o k h a v eb e e n d e s i g n e d a s t a n d a l o n e m o d u l e s , w i t h b o t h t h i n p u t a n o u t p u t c l e a r l y d e f i n e d , t h e y c a b r e c y c l e d q u i t e e a s i l y . Y o w i l lw a n t t s t o r e y o u r s u b r o u t i n e " l i b r a r y " o d i s k o t a p e a n u s t h e m i y o u r p r o g r a m s a n e e d e d .

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

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

W h e n y o s t a r t t w r i t e p r o g r a m , l o a d y o u r l i b r a r y f i r s ta n t h e n w r i t e a l t h p r o g r a m l i n e s u s i n g l i n e n u m b e r s l o w e rt h a n 1 0 0 0 0 . L o o k u p s u b r o u t i n e ' s s t a r t i n g l i n e n u m b e r a n

Page 27: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 27/290

S u b r o u t i n e M a g i c

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

Y o c o u l d a l s o k e e p s u b r o u t i n e s a s e p a r a t e f i l e s o g r o u p sa n m e r g e t h e m u s i n g o n o t h c o m m e r c i a l l y a v a i l a b l e m e r g i n gr o u t i n e s . A n o t h e r t e c h n i q u e , u s e f u l f o s h o r t r o u t i n e s , i t l o a dt h m o d u l e a n d L I S T i t t h s c r e e n , t h e n l o a d t h m a i n p r g r a m . Y o c a m o v e t h c u r s o r u t t h l i s t i n g a n h i R E T U R Nw h i l e t h c u r s o r i o e a c h l i n e . T h s u b r o u t i n e , w h i l e g o n e f r o mp r o g r a m m e m o r y , i s t i l l i s c r e e n m e m o r y a n c a b m e r g e db a c k i n t o y o u r B A S I C p r o g r a m i t h i s w a y . T h i s t e c h n i q u e w o r k so n l y f o s u b r o u t i n e s t h a t c a b l i s t e d w i t h s i n g l e s c r e e n f u l , b u t h a t r e q u i r e m e n t h a p p e n s t e n c o m p a s s m o s t o t h r o u t i n e s i t h i s b o o k .

G o o d l u c k . Y o s h o u l d f i n d t h i s b o o k s h o r t c u t t p r o g r a mm i n g p r o f i c i e n c y . T p a r a p h r a s e c o m m o n s a y i n g , i y o u s e as u b r o u t i n e c o r r e c t l y t h r e e t i m e s , i w i l l b e p e r m a n e n t p a r t o y o u r v o c a b u l a r y . G i v e n b i o p r a c t i c e , y o c a s o o n h a v e a l y o u r f r i e n d s d r o o l i n g o v e r y o u r p r o g r a m s a n a s k i n g y o f o y o u rf a v o r i t e s u b r o u t i n e r e c i p e s .

Page 28: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 28/290

Page 29: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 29/290

B U S I N E S SA N F I N A N C I A L

B u s i n e s s a n p e r s o n a l f i n a n c i a l p r o b l e m s o l v i n g h a b e c o m e t h m o s t p r e v a l e n t a p p l i c a t i o n f o p e r s o n a l c o m p u t e r s a m o n g a d u l t s .A r e c e n t l y a s f i v e o s i y e a r s a g t h i s w a n o t t h e c a s e . T h e a r l i e s t p e r s o n a l c o m p u t e r s w e r e o w n e d b h o b b y i s t s , f r e q u e n t l yt h o s e w h m i g r a t e d f r o m h a r a d i o o r e l e c t r o n i c s a n w h w e r ep l e a s e d t g e t h e i r c o m p u t e r s t d a n y t h i n g . E v e n t h e n , a f e wh a r d y s o u l s a t t e m p t e d t c h a n n e l t h e i r n e w - f o u n d c o m p u t e r p o w e ri n t o b u s i n e s s a p p l i c a t i o n s , s u c h a p r i m i t i v e w o r d p r o c e s s i n g .

T h i n t r o d u c t i o n o f V i s i C a l c , t h f i r s t o n e g e n e r a t i o n o m i c r o c o m p u t e r - o r i e n t e d m a n a g e m e n t d e c i s i o n - s u p p o r t t o o l s , n u d g e dt h e b u s i n e s s c o m m u n i t y t o w a r d t h a c c e p t a n c e o t h e s e s m a l l ,

1

Page 30: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 30/290

1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

d e s k t o p c o m p u t i n g m a c h i n e s . I 1 9 8 1 t h a d v e n t o t h I B P h e l p e d l e g i t i m i z e p e r s o n a l c o m p u t e r s a m o n g m a j o r c o r p o r a t i o n s .

T o d a y v e r y l o w - c o s t m a c h i n e s l i k e t h C o m m o d o r e 1 2 b r i n gt h i s t o o l w i t h i n t h r e a c h o a n b u s i n e s s o r i n d i v i d u a l . F o l e s st h a n $ 9 0 0 f o c o m p u t e r / 1 5 7 1 d i s k d r i v e / 1 7 9 2 m o n i t o r p a c k a g e ,u s e r s h a v e a v a i l a b l e a e x c e l l e n t , b u s i n e s s - q u a l i t y k e y b o a r d , h i g h l yl e g i b l e 8 0 - c o l u m n v i e w i n g , a n f l o p p y d i s k s t o r a g e e q u a l t s i n g l e - d r i v e I B P c o s t i n g t w i c e a s m u c h . A m o r e b u s i n e s ss o f t w a r e b e c o m e s a v a i l a b l e f o t h C o m m o d o r e 1 2 8 , w e ' l l s e t h e s e c o m p u t e r s p u t w i d e r u s b b u d g e t - c o n s c i o u s i n d i v i d u a l s .

S o m e u s e r s w i l l a l s o b w r i t i n g t h e i r o w p r o g r a m s a n r o t i n e s i B A S I C 7 . 0 . B u s i n e s s p r o g r a m s h a v e s o m e t h i n g s i c o m m o n w i t h g a m e s a n u t i l i t i e s i B A S I C ; t h e y a l s o h a v e t h e i ro w s p e c i a l r e q u i r e m e n t s . b u s i n e s s a p p l i c a t i o n w i l l r a r e l y d e a lw i t h R N b u w i l l o f t e n h a v e t h a n d l e d o l l a r s - a n d - c e n t s . M o n e ym a t t e r s — f i g u r i n g l o a n a m o u n t s , m o n t h l y p a y m e n t s , i n t e r e s t —a n f o r m a t t i n g o t h o u t p u t a r a l i m p o r t a n t c o n s i d e r a t i o n s .B u s i n e s s a p p l i c a t i o n s a l s o i n v o l v e k e e p i n g t r a c k o t h d a t e o t i m e i o r d e r t p i n p o i n t w h e n t r a n s a c t i o n t o o k p l a c e .

T h b u s i n e s s s u b r o u t i n e s i t h i s b o o k a r e n o t l i m i t e d t t h o s ei t h i s c h a p t e r . W h e n w r i t i n g y o u r o w p r o g r a m s , y o u m i g h tw a n t t t a k e a d v a n t a g e o s p e c i a l u s e r i n p u t r o u t i n e s f o u n d i C h a p t e r 3 o s o r t s , l i k e t h o s e i C h a p t e r 4 T h F u n c t i o n K e r o u t i n e s i C h a p t e r c a m a k e y o u r p r o g r a m s f r i e n d l i e r , a n t h C u r s o r M o v e r w i l l h e l p y o d e s i g n y o u r s c r e e n d i s p l a y s .

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

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

T y p i c a l f o r m u l a s t h a t m i g h t b n e e d e d , s u c h a c o n v e r t i n gF a h r e n h e i t t C e l s i u s o r c a l c u l a t i n g a a u t o m o b i l e ' s M P G , a r i n c l u d e d . O n s u b r o u t i n e s h o w s s a m p l e m e n u t h a t y o c a a d a p t t y o u r o w p r o g r a m s b s u b s t i t u t i n g o p t i o n s o f y o u r o w d e v i s i n g . S t a t e a b b r e v i a t i o n s , a n r o u t i n e s t c a l c u l a t e t h n u m -

Page 31: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 31/290

B u s i n e s s a n F i n a n c i a l 1

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

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

I M P O R T A N T N O T E :T h c a r e t s y m b o l C i t h p r o g r a m l i s t i n g s r e p r e s e n t s t h u

a r r o w k e y o n t h C o m m o d o r e 1 2 8 , w h i c h i l o c a t e d b e t w e e n t h a s t e r i s k ( * a n t h R E S T O R E k e y . E n t e r t h s y m b o l b y t y p i n gt h u a r r o w .

L O A N A M O U N TW H A T I D O E S ; C a l c u l a t e s s i z e o l o a n , g i v e n m o n t h l y p a y m e n t ,i n t e r e s t r a t e , a n l e n g t h o l o a n .

L E V E L : I n t e r m e d i a t e

1 0 1 1 1 2 1 3 1 4 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

R E R E R E R E R E

R E R E R E R E R E R E R E R E R E R E

• * * • • • * * * * * * * • *

L O A N A M O U N T

+ V A R I A B L E S + S U P P L I E D B

R A T E :N U M B E R :P A Y M E N T :

R E S U L TL O A N :

U S E RI N T E R E S T R A T EM O N T H S O L O A NM O N T H L Y P A Y M E N TL O A N A M O U N T

* * I N I T I A L I Z E * * R A T E = 1 0P A Y M E N T = 1 0N U M B E R = 3 6

Page 32: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 32/290

1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 9 G O S U B 1 0 0 1 03 0 P R I N T " L O A N A M O U N T " ; L O A N3 1 E N 1 0 0 0 0 R E M * * S U B R O U T I N E * * 1 0 0 1 0 R A T E = R A T E / 1 2 O O1 0 0 2 0 L O A N = P A Y M E N T * ( 1 - ( 1 + R A T E ) " - N U M B E R ) / R A T E1 0 0 3 0 L O A N = I N T ( L O A N * 1 0 0 ) / 1 0 01 0 0 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

Y o m i g h t u s t h i s s u b r o u t i n e t c a l c u l a t e h o e x p e n s i v e a a u t o m o b i l e y o c a b u g i v e n , s a y , 3 6 - m o n t h r e p a y m e n t p e r i o d ,

1 5 p e r c e n t i n t e r e s t r a t e , a n t h t o m o n t h l y p a y m e n t y o c a a f f o r d , s a y , $ 2 0 0 . I n t h i s c a s e , t h e s u b r o u t i n e w o u l d d e l i v e r t h a n s w e r : $ 5 7 6 9 . S i n c e v e r y f e c a r s c a b p u r c h a s e d f o t h a tl i t t l e , y o u m i g h t w a n t t p l a y w i t h t h f i g u r e s b i t . W h a t i 4 8 - m o n t h l o a n i t a k e n o u i n s t e a d ? I n t h a t c a s e m o r e r e a s o na b l e $ 7 1 8 6 c a b b o r r o w e d .

H a v i n g t h e s e f i g u r e s a v a i l a b l e a l l o w s y o t m a k e s o m ei n t e l l i g e n t d e c i s i o n s . F o e x a m p l e , e x t e n d i n g t h l o a n b 1 m o n t h sp r o v i d e s $ 1 4 1 7 m o r e p r i n c i p a l t b o r r o w , b u a t h c o s t o $ 2 4 0 0i a d d i t i o n a l p a y m e n t s ( $ 2 0 0 1 2 ) . I t h p u r c h a s e w o r t h a a d d i t i o n a l $ 1 0 0 0 i i n t e r e s t ? O c a y o f i n a n c e t h a u t o b f i n d i n g t h e e x t r a $ 1 4 0 0 f r o m s o m e o t h e r s o u r c e , s u c h a b t r a d i n g i t h i r d c a r t h a t y o h a p l a n n e d o k e e p i n g a e x t r ay e a r ? O s h o u l d y o s h o p b i m o r e e x t e n s i v e l y f o b e t t e ri n t e r e s t r a t e ? I y o u r c r e d i t u n i o n o f f e r s b a r g a i n - b a s e m e n t 1 p e r c e n t i n t e r e s t r a t e , y o c a b o r r o w $ 7 5 9 4 a t h s a m e i n t e r e s tr a t e , m o r e t h a n $ 4 0 0 m o r e w i t h o u t i n c r e a s i n g t h m o n t h l yp a y m e n t .

O r i y o a l r e a d y h a v e t h e c a r p i c k e d o u t , t h i s r o u t i n e w i l lt e l l y o h o w m u c h d o w n p a y m e n t y o w i l l h a v e t c o m e u w i t ht m a k e u t h d i f f e r e n c e b e t w e e n t h e l o a n a m o u n t a n t h p r i c eo t h c a r .

Page 33: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 33/290

B u s i n e s s a n F i n a n c i a l 1

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : D e f i n e t h i n t e r e s t R A T E , m o n t h l y P A M E N T y o c a a f f o r d , a n t h N U M B E R o p a y m e n t s t b m a d e . Y o u r p r o g r a m c a s u b s t i t u t e I N P U T l i n e s t r e c e i v e t h e s ef i g u r e s f r o m t h u s e r .

L i n e s 2 9 0 - 3 1 0 : A c c e s s s u b r o u t i n e a n d i s p l a y t h r e s u l t .L i n e 1 0 0 1 0 : C h a n g e y e a r l y i n t e r e s t r a t e i w h o l e p e r c e n t t

d e c i m a l f i g u r e p e m o n t h , e . g . , 1 p e r c e n t e q u a l s 1 2 / 1 2 0 0 o . 0 p e m o n t h .

L i n e 1 0 0 2 0 : C a l c u l a t e l o a n A M O U N T .L i n e 1 0 0 3 0 : R o u n d o f A M O U N T . W i t h t h C o m m o d o r e 1 2

y o m a a l s o u s P R I N T U S I N G f o f o r m a t t i n g n u m b e r s , s u c h a d o l l a r s - a n d - c e n t s . H o w e v e r , t h i s r o u n d i n g m e t h o d i u s e d t s h o wy o h o t h r o u n d i n g c a n b e d o n e . N o t e t h a t i t h i s c a s e t h o d c e n t s a r m e r e l y c u o f ( t r u n c a t e d ) a t h d e c i m a l p o i n t . I t h n e x t s u b r o u t i n e P A Y M E N T A M O U N T , t h m e t h o d f o c o r r e c t l yr o u n d i n g u o d o w n i s h o w n . E i t h e r o t h e s e t e c h n i q u e s c a b u s e d w i t h t h C o m m o d o r e 6 4 w h i c h d i n o h a v e P R I N T U S I N Ga v a i l a b l e i i t B A S I C .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : P A Y M E N T ( t h e m o n t h l yp a y m e n t d e s i r e d ) , R A T E ( i n t e r e s t r a t e i n p e r c e n t , i . e . , 1 0 . 5 e q u a l s1 0 . 5 p e r c e n t ) , a n N U M B E R ( n u m b e r o m o n t h s l o a n w i l l r u n ) .T h s u b r o u t i n e w i l l r e t u r n L O A N , o t h m a x i m u m l o a n a m o u n t ,g i v e n t h o s e p a r a m e t e r s .

S U G G E S T E D E N H A N C E M E N T S : A d y o u r o w b o m b p r o o f i n p u tr o u t i n e s , b a s e d o t h o s e i C h a p t e r 3

R E S U L T

L o a n a m o u n t c a l c u l a t e d .

S A M P L E V A L U E : $ 3 0 9 . 9 1

Page 34: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 34/290

1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

P A Y M E N T A M O U N TW H A T I D O E S : C a l c u l a t e s m o n t h l y p a y m e n t , g i v e n i n t e r e s t r a t e ,n u m b e r o p a y m e n t s , a n l o a n a m o u n t .L E V E L : I n t e r m e d i a t e

1 0 R E 1 1 0 R E M1 2 R E

* * * * * * * * * * *

P A Y M E N T A M O U N T* * * * * * * * * * * * * * * * *

1 3 R E 1 4 R E 1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B Y U S E R1 8 0 R E M R A T E : I N T E R E S T R A T E1 9 R E L O A N : A M O U N T O L O A N2 0 0 R E M N U M B E R : M O N T H S O L O A N2 1 R E R E S U L T2 2 0 R E M P A Y M E N T : M O N T H L Y P A Y M E N T2 3 R E 2 4 0 R E M2 5 0 R E M * * I N I T I A L I Z E * * 2 6 L O A N = 1 0 02 7 R A T E = 1 02 8 N U M B E R = 3 62 9 G O S U B 1 0 1 1 03 0 P R I N T " A M O U N T O F P A Y M E N T " ; P A Y M E N T3 1 E N 1 0 1 0 0 R E M * * S U B R O U T I N E * * 1 0 1 1 0 R A T E = R A T E / 1 O O1 0 1 2 0 P A Y M E N T = L O A N * ( R A T E / 1 2 ) / ( 1 - ( 1 + ( R A T E / 1 2 ) ) " - N U M B E R )1 0 1 3 0 P A Y M E N T = I N T ( ( P A Y M E N T + . 0 0 5 ) * 1 0 0 ) / 1 0 01 0 1 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

Y o m i g h t u s t h i s s u b r o u t i n e t c a l c u l a t e y o u r m o n t h l ya u t o p a y m e n t g i v e n , s a y , 3 6 - m o n t h r e p a y m e n t p e r i o d , 1 p e r c e n t i n t e r e s t r a t e , a n a a m o u n t t b f i n a n c e d o f s a y ,

Page 35: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 35/290

B u s i n e s s a n F i n a n c i a l 1

$ 8 0 0 0 . I w i l l p r o d u c e t h a n s w e r , $ 2 7 7 . B s h o p p i n g a r o u n d f o d i f f e r e n t i n t e r e s t r a t e s , o b v a r y i n g t h n u m b e r o p a y m e n t s ,y o c a c a l c u l a t e t h e f f e c t o y o u r m o n t h l y p a y m e n t u n t i ls a t i s f a c t o r y a m o u n t h a s b e e n w o r k e d o u t .T h s u b r o u t i n e w o u l d a l s o b e v a l u a b l e f o t h o s e c o n s i d e r i n gc o n s o l i d a t i n g n u m b e r o f d e b t s . A d u t h c u r r e n t p a y o f f s o ft h l o a n s y o w i s h t c o m b i n e a n t h e n u s t h i s s u b r o u t i n e t c a l c u l a t e h o w m u c h y o u r n e m o n t h l y p a y m e n t w i l l b e

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : D e f i n e t h a m o u n t o t h L O A N , t h i n t e r e s tR A T E i w h o l e p e r c e n t p e r y e a r , a n t h N U M B E R o m o n t h l yp a y m e n t s . Y o u r p r o g r a m c a s u b s t i t u t e I N P U T l i n e s t o h a v e t h i si n f o r m a t i o n e n t e r e d b t h u s e r .

L i n e s 2 9 0 - 3 1 0 : A c c e s s s u b r o u t i n e a n d i s p l a y r e s u l t .L i n e 1 0 1 1 0 : C h a n g e R A T E t p e r c e n t a g e .L i n e 1 0 1 2 0 : C h a n g e m o n t h s t Y E A R S .L i n e 1 0 1 3 0 : C a l c u l a t e P A Y M E N T .L i n e 1 0 1 4 0 : R o u n d o f P A Y M E N T t t w d e c i m a l p l a c e s .

N o t e h o t h i s r o u t i n e d i f f e r s f r o m t h a t i L O A N a m o u n t . T h d e c i m a l f r a c t i o n . 0 0 5 i f i r s t a d d e d t t h P A Y M E N T b e f o r e t h i n t e g e r p o r t i o n i t a k e n , r o u n d i n g u n u m b e r s . 0 0 6 o h i g h e r .T h a t i s . 0 0 6 1 2 w o u l d b e c o m e . 0 1 0 1 2 a n w o u l d b r o u n d e d o f f t o. 0 1 . T h f i g u r e . 0 0 4 1 2 w o u l d b i n c r e a s e d t . 0 0 9 1 2 , a n d w o u l d b r o u n d e d o f t . 0 0 .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : L O A N ( t h e o r i g i n a l a m o u n tt b f i n a n c e d ) , R A T E ( i n t e r e s t r a t e i p e r c e n t , i . e . , 1 0 . 5 e q u a l s1 0 . 5 p e r c e n t ) , a n N U M B E R ( n u m b e r o m o n t h s l o a n w i l l r u n ) .T h s u b r o u t i n e w i l l r e t u r n P A Y M E N T , w h i c h i t h m o n t h l yp a y m e n t , a g a i n s t p r i n c i p a l a n i n t e r e s t .

S U G G E S T E D E N H A N C E M E N T S : A d y o u r o w b o m b p r o o f i n p u tr o u t i n e s , b a s e d o t h o s e i C h a p t e r 3

Page 36: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 36/290

1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

R E S U L T

L o a n p a y m e n t c a l c u l a t e d .

S A M P L E V A L U E : $ 3 . 2 3

N U M B E R O P A Y M E N T SW H A T I D O E S : C a l c u l a t e s n u m b e r o p a y m e n t s g i v e n i n t e r e s tr a t e , m o n t h l y p a y m e n t , a n l o a n a m o u n t .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E N U M B E R P A Y M E N T S1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 0 R E M R A T E : I N T E R E S T R A T E1 9 R E L O A N : A M O U N T O L O A N2 0 R E M P A Y M E N T : M O N T H L Y P A Y M E N T2 1 R E R E S U L T2 2 R E N U M B E R : T O T A L N U M B E R O P A Y M E N T S2 3 R E M E X T R A : F I N A L P A Y M E N T2 4 0 R E M2 5 R E 2 6 0 R E M * * I N I T I A L I Z E * * 2 7 L O A N = 1 5 0 02 8 0 R A T E = 1 22 9 P A Y M E N T = 1 0 03 0 G O S U B 1 0 2 1 03 1 P R I N T N U M B E R - 1 ; " W H O L E P A Y M E N T S O " ; : P R I N T U S I N GC A S H $ ; P A Y M E N T3 2 P R I N T " A N D O N P A Y M E N T O " : P R I N T U S I N G C A S H $ , - E X T R A3 3 E N 1 0 2 0 0 R E * * S U B R O U T I N E * * 1 0 2 1 0 C A S H $ = " $ # # # # . # # "1 0 2 2 0 R A T E = R A T E / 1 2 O O1 0 2 3 0 N U M B E R = L O G ( P A Y M E N T / ( P A Y M E N T - L O A N * R A T E ) ) / L O G ( 1 + R A T E )1 0 2 4 0 E X T R A = P A Y M E N T * ( N U M B E R - I N T ( N U M B E R ) )1 0 2 5 0 N U M B E R = I N T ( N U M B E R ) + 11 0 2 6 0 R E T U R N

Page 37: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 37/290

B u s i n e s s a n F i n a n c i a l 1

H O T U S E S U B R O U T I N E

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

Y o m i g h t u s t h i s s u b r o u t i n e t c a l c u l a t e h o l o n g y o u ra u t o l o a n w i l l r u n , g i v e n a i n t e r e s t r a t e o f s a y , 1 p e r c e n t ,l o a n a m o u n t o $ 8 0 0 0 , a n m o n t h l y p a y m e n t o $ 2 5 0 . S i n c em o s t a u t o m o b i l e l o a n s a r e f o f i x e d p e r i o d s o 1 8 2 4 3 6 o 4 m o n t h s , t h f i g u r e s w i l l b a p p r o x i m a t e . T h a t i s a n a n s w e r o 4 m o n t h s w i l l b p r o d u c e d u s i n g t h e 1 5 p e r c e n t / $ 2 5 0 / $ 8 0 0 0 e x a mp l e . S o y o w i l l k n o w t h a t y o c a b o r r o w s o m e w h a t m o r e t h a n$ 8 0 0 0 f o 4 m o n t h s , o s o m e w h a t l e s s f o r 3 m o n t h s .

M o r e c o m m o n l y , y o w i l l u s t h i s s u b r o u t i n e t f i g u r e o u h o l o n g i w i l l t a k e t p a o f d e b t , s u c h a c r e d i t c a r da c c o u n t / w i t h a o p e n - e n d e d n u m b e r o p a y m e n t s . I y o u r c h a r g ec a r d b a l a n c e i $ 3 0 0 0 a n d y o u p l a n o m a k i n g $ 1 5 0 m o n t h l yp a y m e n t s u n t i l i i p a i d o f f , g i v e n a 1 p e r c e n t m o n t h l y i n t e re s r a t e , t h p r o g r a m w i l l i n f o r m y o t h a t i w i l l t a k e 2 m o n t h st d i s p o s e o t h e b a l a n c e .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 7 0 - 2 9 0 : D e f i n e t h a m o u n t o L O A N , t h i n t e r e s tR A T E i w h o l e p e r c e n t , a n t h m o n t h l y P A Y M E N T d e s i r e d .Y o u r s u b r o u t i n e c a s u b s t i t u t e I N P U T s t a t e m e n t s t h a v e t h i si n f o r m a t i o n s u p p l i e d b t h u s e r .

L i n e s 3 0 0 - 3 3 0 : A c c e s s s u b r o u t i n e a n p r i n t r e s u l t i n w h o l ea n p a r t i a l p a y m e n t s .

L i n e 1 0 2 1 0 : S e t u C A S H $ a P R I N T U S I N G f o r m a t . T h i si u s e d a f a s t e r w a o f o r m a t t i n g d o l l a r s - a n d - c e n t s o u t p u t . Y o s h o u l d s e u y o u r P R I N T U S I N G f o r m a t t t a k e i n t o a c c o u n t t h l a r g e s t a m o u n t o m o n e y y o e x p e c t t h a n d l e i y o u r r o u t i n e .P R I N T U S I N G i d i s c u s s e d m o r e c o m p l e t e l y o n p a g e 7 o y o u rS y s t e m G u i d e .

L i n e 1 0 2 2 0 : C h a n g e R A T E t m o n t h l y d e c i m a l v a l u e , t h a t i s 1 p e r c e n t p e y e a r e q u a l s 1 2 / 1 2 0 0 o . 0 p e m o n t h .

Page 38: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 38/290

2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 1 0 2 3 0 : C a l c u l a t e n u m b e r o p a y m e n t s .L i n e 1 0 2 4 0 : C a l c u l a t e f i n a l , p a r t i a l p a y m e n t .L i n e 1 0 2 5 0 : F i g u r e n u m b e r o w h o l e p a y m e n t s .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : L O A N ( t h e o r i g i n a l a m o u n tt b f i n a n c e d ) , R A T E ( i n t e r e s t r a t e i n p e r c e n t , i . e . , 1 0 . 5 e q u a l s1 0 . 5 p e r c e n t ) , a n P A Y M E N T ( t h e a m o u n t o t h m o n t h l y p a m e n t ) . T h s u b r o u t i n e w i l l r e t u r n N U M B E R , w h i c h i t h n u m b e ro m o n t h l y p a y m e n t s t h a t w i l l b r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : Y o u r i n p u t r o u t i n e s .

R E S U L T

N u m b e r o l o a n p a y m e n t s c a l c u l a t e d .

S A M P L E V A L U E : 1 w h o l e p a y m e n t s o $ 1 0 0 . 0 0 a n o n p a y m e n to $ 3 3 . 3 0

R E M A I N I N G B A L A N C EW H A T I D O E S : C a l c u l a t e s t h e b a l a n c e r e m a i n i n g o n l o a n a f t e r

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

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E R E M A I N I N G B A L A N C E1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E R A T E : I N T E R E S T R A T E1 9 R E L O A N : A M O U N T O L O A N2 0 R E M N U M B E R : L A S T P A Y M E N T M A D E2 1 R E M P E R I O D S : P A Y M E N T S P E R Y E A R

Page 39: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 39/290

B u s i n e s s a n F i n a n c i a l 2

2 2 0 R E M P A Y M E N T : M O N T H L Y P A Y M E N T2 3 R E R E S U L T2 4 R E M B A L A N C E : C U R R E N T B A L A N C E O W E D2 5 R E 2 6 R E 2 7 R E * * I N I T I A L I Z E * * 2 8 L O A N = 5 0 0 02 9 R A T E = 1 2 . 53 0 N U M B E R = 4 63 1 P E R I O D S = 1 23 2 B A L A N C E = L O A N3 3 P A Y M E N T = 1 1 2 . 4 93 4 G O S U B 1 0 3 1 03 5 P R I N T " B A L A N C E O L O A N A F T E R " ; N U M B E R ; " P A Y M E N T S : 13 6 P R I N T U S I N G C A S H $ ; B A L A N C E3 7 E N

1 0 3 0 0 R E * * S U B R O U T I N E * * 1 0 3 1 0 R A T E = R A T E / l 0 01 0 3 2 0 C A S H $ = n $ # # # # . # # "1 0 3 3 0 F O N = T O N U M B E R1 0 3 4 0 S 1 = I N T ( ( B A L A N C E * R A T E / P E R I O D S ) * 1 0 0 + . 5 ) / l 0 01 0 3 5 0 S 2 = P A Y M E N T - S 11 0 3 6 0 B A L A N C E = B A L A N C E - S 21 0 3 7 0 N E X T1 0 3 8 0 R E T U R N

H O T U S E S U B R O U T I N E

M a n y l o a n s a r e p a i d o f b e f o r e t h e n o t h c a l c u l a t e da m o r t i z a t i o n p e r i o d . T h a t i s y o m a t r a d e i y o u r c a a f t e rt h r e e y e a r s e v e n t h o u g h t h a u t o m o b i l e l o a n w a f o 4 8 m o n t h s .A n a t i o n , w c h a n g e r e s i d e n c e s a p p r o x i m a t e l y o n c e e a c h s e v e ny e a r s p e f a m i l y ; m o r t g a g e l o a n s c o m m o n l y e x t e n d f r o m 1 t 3 y e a r s . W h e n l o a n i p a i d o f e a r l y , w d o n ' t s i m p l y m u l t i p l y t h n u m b e r o p a y m e n t s r e m a i n i n g — s u c h f i g u r e w o u l d i n c l u d eu n e a r n e d i n t e r e s t t h a t i n o o w e d . I n s t e a d , w n e e d t f i g u r e t h r e m a i n i n g b a l a n c e . W h e n s o m e i n t e r e s t i p a i d i a d v a n c e , f i n a nc i a l i n s t i t u t i o n s u s e a s p e c i a l r u l e t d e t e r m i n e h o m u c h i t b r e f u n d e d . T h i s s u b r o u t i n e a s s u m e s y o u p a y i n t e r e s t a n p o r t i o no t h p r i n c i p a l a i i d u e .

Page 40: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 40/290

2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 3 3 0 : D e f i n e L O A N v a l u e , i n t e r e s t R A T E i w h o l ep e r c e n t ( i . e . , 1 2 . 5 e q u a l s 1 2 . 5 p e r c e n t p e a n n u m ) , P E R I O D S a t h n u m b e r o p a y m e n t s m a d e e a c h y e a r , a n m o n t h l y P A M E N T . N U M B E R i t h p a y m e n t n u m b e r o t h l a s t p a y m e n t t b m a d e . I y o d n o k n o w t h P A Y M E N T a m o u n t b u d k n o wa l t h e o t h e r f a c t o r s ( p l u s t h o r i g i n a l t e r m o t h l o a n ) , y o c a f i g u r e P A Y M E N T , u s i n g t h P A Y M E N T A M O U N T s u b r o u t i n e ,a n p l u g t h v a l u e i h e r e .

L i n e s 3 4 0 - 3 7 0 : A c c e s s t h e s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 0 3 1 0 : C h a n g e i n t e r e s t R A T E t d e c i m a l f r a c t i o n .L i n e 1 0 3 2 0 : S e t u C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 3 3 0 : S t a r t F O R - N E X T l o o p f r o m t n u m b e r o p a

m e n t s a l r e a d y m a d e .L i n e 1 0 3 4 0 : C a l c u l a t e i n t e r e s t d u e a c h i n d i v i d u a l p a y m e n t

p e r i o d .L i n e 1 0 3 5 0 : S u b t r a c t i n t e r e s t d u f r o m p a y m e n t t d e t e r m i n e

a m o u n t a p p l i e d t p r i n c i p a l .L i n e 1 0 3 6 0 : R e d u c e b a l a n c e b a m o u n t a p p l i e d t p r i n c i p a l ,

r e s u l t i n g i n e r e m a i n i n g b a l a n c e .L i n e 1 0 3 7 0 : R e p e a t u n t i l l a s t p a y m e n t r e a c h e d .

Y O S U P P L Y

Y o m u s t d e f i n e v a r i a b l e s L O A N , R A T E , N U M B E R , a n P E R I O D S .

S U G G E S T E D E N H A N C E M E N T S : I n p u t r o u t i n e s .

R E S U L T

B A L A N C E , t h a m o u n t o w e d a f t e r t h p a y m e n t s s p e c i f i e d , i c a l c u l a t e d .

S A M P L E V A L U E : $ 1 4 5 8 . 3 6

Page 41: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 41/290

B u s i n e s s a n F i n a n c i a l 2 3

Y E A R S T R E A C H D E S I R E D V A L U E

W H A T I D O E S ; C a l c u l a t e s n u m b e r o y e a r s r e q u i r e d t r e a c hd e s i r e d a m o u n t , g i v e n i n t e r e s t r a t e a n o r i g i n a l a m o u n t .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E Y E A R S T R E A C H1 3 R E A D E S I R E D V A L U E1 4 R E 1 5 R E * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E + V A R I A B L E S + 1 8 R E S U P P L I E D B U S E R1 9 R E R A T E : I N T E R E S T R A T E2 0 R E M A M O U N T : A M O U N T T B C O M P O U N D E D2 1 R E M F U T U R E : F U T U R E V A L U E D E S I R E D2 2 R E M P E R I O D S : N U M B E R O C O M P O U N D I N G P E R I O D S2 3 R E M R E S U L T2 4 R E Y E A R S : W H O L E Y E A R S N E E D E D T R E A C H V A L U E2 5 R E M N T H S : A D D I T I O N A L M O N T H S N E E D E D2 6 0 R E M2 7 R E 2 8 0 R E M * * I N I T I A L I Z E * *

2 9 A M O U N T = 1 0 0 03 0 R A T E = 1 03 1 P E R I O D S = 3 6 53 2 F U T U R E = 2 0 0 03 3 G O S U B 1 0 4 1 03 4 P R I N T U S I N G C A S H $ ; A M O U N T ; : P R I N T W I L L C O M P O U N D T O 1 13 5 P R I N T U S I N G C A S H ? ; F U T U R E ; : P R I N T I " ; Y E A R S ; " Y E A R SA N D " ; M N T H S ; " M O N T H S "3 6 P R I N T " A " ; R A T E * 1 0 0 ; " P E R C E N T C O M P O U N D E D " ; P E R I O D S ; " T I M E S "3 7 P R I N T " Y E A R . "3 8 E N 1 0 4 0 0 R E * * S U B R O U T I N E * * 1 0 4 1 0 C A S H $ = " $ # # # , # # # . # # "1 0 4 2 0 R A T E = R A T E / l 0 01 0 4 3 0 Y E A R S = L O G ( F U T U R E / A M O U N T ) / ( ( L O G ( 1 + R A T E / P E R I O D S ) ) * P E R I O D S )1 0 4 4 0 M N T H S = I N T ( ( Y E A R S - I N T ( Y E A R S ) ) * 1 2 )1 0 4 5 0 Y E A R S = I N T ( Y E A R S )1 0 4 6 0 R E T U R N

Page 42: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 42/290

2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 9 0 - 3 2 0 : D e f i n e F U T U R E , d e s i r e d f u t u r e v a l u e , t h i n t e r e s t R A T E i w h o l e p e r c e n t p e y e a r , a n t h P E R I O D S , t h n u m b e r o c o m p o u n d i n g p e r i o d s p e y e a r . Y o u r s u b r o u t i n e c a s u b s t i t u t e I N P U T s t a t e m e n t s t a l l o w t h e u s e r t e n t e r t h e s ef i g u r e s .

L i n e s 3 3 0 - 3 8 0 : A c c e s s t h s u b r o u t i n e a n p r i n t t h r e s u l t s .L i n e 1 0 4 1 0 : S e t u C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 4 2 0 : C h a n g e R A T E t d e c i m a l f i g u r e .L i n e 1 0 4 3 0 : C a l c u l a t e n u m b e r o y e a r s n e e d e d t p r o d u c e t h

g o a l v a l u e .L i n e s 1 0 4 4 0 - 1 0 4 5 0 : F i g u r e n u m b e r o w h o l e m o n t h s a n d

y e a r s .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : F U T U R E ( d e s i r e d f u t u r ev a l u e ) , R A T E ( i n t e r e s t r a t e i n p e r c e n t , i . e . , 1 0 . 5 e q u a l s 1 0 . 5p e r c e n t ) , a n P E R I O D S ( n u m b e r o c o m p o u n d i n g p e r i o d s p e y e a r ) .T h s u b r o u t i n e w i l l r e t u r n Y E A R S a n M N T H S , o t h n u m b e ro y e a r s a n m o n t h s t h a t w i l l b r e q u i r e d t r e a c h t h d e s i r e dv a l u e .

S U G G E S T E D E N H A N C E M E N T S : W r i t e p r o g r a m t h a t w i l l t e s tv a r i o u s v a l u e s f o A M O U N T a n d / o r F U T U R E v a l u e a n w i l l

Page 43: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 43/290

B u s i n e s s a n F i n a n c i a l 2

p r o v i d e p r i n t o u t c o m p a r i n g h o i n c r e a s i n g t h i n i t i a l a m o u n tc a r e d u c e t h t i m e n e e d e d t a c h i e v e t h e d e s i r e d v a l u e , o r h o c h a n g i n g t h e r e q u i r e d F U T U R E a m o u n t a l t e r s t h f i g u r e r eq u i r e d a t h i n i t i a l A M O U N T .R E S U L T

Y E A R S a n M N T H S a r c a l c u l a t e d .

S A M P L E V A L U E : y e a r s , 1 m o n t h s

F U T U R E V A L U EW H A T I D O E S : C a l c u l a t e s c o m p o u n d e d a m o u n t o i n v e s t m e n t ,g i v e n o r i g i n a l v a l u e , i n t e r e s t r a t e , a n t i m e p e r i o d

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E F U T U R E V A L U E O F1 3 R E S I N G L E D E P O S I T1 4 R E * 1 5 R E * * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E + V A R I A B L E S + 1 8 R E S U P P L I E D B U S E R1 9 R E R A T E : I N T E R E S T R A T E2 0 R E A M O U N T : A M O U N T T B C O M P O U N D E D2 1 R E P E R I O D S : N U M B E R O C O M P O U N D I N G P E R I O D S2 2 R E M Y E A R S : Y E A R S C O M P O U N D E D2 3 R E M R E S U L T2 4 R E F U T U R E : F U T U R E V A L U E O T H D E P O S I T2 5 0 R E M2 6 R E

2 7 R E * * I N I T I A L I Z E * * 2 8 A M O U N T = 1 0 0 02 9 R A T E = 1 03 0 P E R I O D S = 3 6 53 1 Y E A R S = 1 03 2 M N T H S = 63 3 G O S U B 1 0 5 1 03 4 P R I N T U S I N G C A S H ? ; A M O U N T ; : P R I N T W I L L C O M P O U N D T O

Page 44: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 44/290

2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 5 P R I N T U S I N G C A S H $ ? F U T U R E ; : P R I N T I " ; Y E A R S ; " Y E A R SA N D " ; M N T H S ; " M O N T H S "3 6 P R I N T " " ; R A T E * 1 2 0 0 ; " P E R C E N T C O M P O U N D E D " ; P E R I O D S ; H T I M E S "3 7 P R I N T " Y E A R . "3 8 E N 1 0 5 0 0 R E * * S U B R O U T I N E * * 1 0 5 1 0 C A S H $ = " $ # # # , # # # • # # "1 0 5 2 0 R A T E = R A T E / 1 2 O O1 0 5 3 0 T T = Y E A R S * 1 2 + M N T H S1 0 5 4 0 F U T U R E = A M O U N T * ( 1 + R A T E / P E R I O D S ) " ( P E R I O D S * T T )1 0 5 5 0 R E T U R N

H O T U S E S U B R O U T I N E

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

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 3 2 0 : D e f i n e o r i g i n a l p r i n c i p a l A M O U N T , t h i t e r e s t R A T E i w h o l e p e r c e n t , a n t h n u m b e r o Y E A R S t b c o m p o u n d e d .

L i n e s 3 3 0 - 3 8 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 0 5 1 0 : S e u C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 5 2 0 : C h a n g e R A T E t d e c i m a l v a l u e .L i n e 1 0 5 3 0 : F i g u r e t o t a l n u m b e r o m o n t h sL i n e 1 0 5 4 0 : C a l c u l a t e f u t u r e v a l u e .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : A M O U N T ( t h e o r i g i n a la m o u n t ) , R A T E ( i n t e r e s t r a t e i n p e r c e n t , i . e . , 1 0 . 5 e q u a l s 1 0 . 5p e r c e n t ) , a n Y E A R S ( n u m b e r o y e a r s t b c o m p o u n d e d ) . T h s u b r o u t i n e w i l l r e t u r n F U T U R E , o v a l u e o t h c o m p o u n d e di n v e s t m e n t .

Page 45: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 45/290

B u s i n e s s a n F i n a n c i a l 2

S U G G E S T E D E N H A N C E M E N T S : W r i t e p r o g r a m t h a t w i l l p r i n to u c h a r t s h o w i n g h o s i n g l e d e p o s i t s o f d i f f e r i n g s i z e s w i l l g r o wa v a r i o u s i n t e r e s t r a t e s , o f o d i f f e r e n t p e r i o d s o f t i m e .

R E S U L T

C o m p o u n d i n t e r e s t c a l c u l a t e d .

S A M P L E V A L U E ; $ 2 8 5 7 . 7 0

R E G U L A R D E P O S I T SW H A T I D O E S : C a l c u l a t e s t h e v a l u e o a a c c o u n t t w h i c hr e g u l a r d e p o s i t s a r m a d e o s p e c i f i e d a m o u n t s a a g i v e n i n t e r e s tr a t e .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E R E G U L A R D E P O S I T S1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E 1 8 R E S U P P L I E D B U S E R1 9 R E M P A Y M E N T : R E G U L A R D E P O S I T A M O U N T2 0 R E R A T E : I N T E R E S T R A T E2 1 R E P E R I O D S : N U M B E R O D E P O S I T S M A D E2 2 0 R E M E A C H Y E A R2 3 R E M Y E A R S : N U M B E R O W H O L E Y E A R S2 4 R E M N T H S : N U M B E R O W H O L E M O N T H S2 5 R E R E S U L T2 6 R E A M O U N T : A M O U N T P R O D U C E D2 7 R E 2 8 0 R E M2 9 R E * * I N I T I A L I Z E * * 3 0 P A Y M E N T = 1 03 1 R A T E = 1 03 2 N U M B E R = 1 23 3 Y E A R S = 33 4 M N T H S = 6

Page 46: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 46/290

2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 5 G O S U B 1 0 6 1 03 6 P R I N T " D E P O S I T I N G " ; : P R I N T U S I N G C A S H $ ? P A Y M E N T ;3 7 P R I N T N U M B E R ; " T I M E S P E Y E A R "3 8 0 P R I N T " F O R " ; Y E A R S ; " Y E A R S W I L L Y I E L D " 3 9 P R I N T U S I N G C A S H $ ; A M O U N T4 0 E N 1 0 6 0 0 R E * * S U B R O U T I N E * * 1 0 6 1 0 C A S H $ = " $ # # # # . # # "1 0 6 2 0 Y E A R S = ( M N T H S / 1 2 ) + Y E A R S1 0 6 3 0 R A T E = ( R A T E / N U M B E R ) / 1 O O1 0 6 4 0 A M O U N T = P A Y M E N T * ( ( 1 + R A T E ) * ( N U M B E R * Y E A R S ) - 1 ) / R A T E1 0 6 5 0 R E T U R N

H O T U S S U B R O U T I N E

C h r i s t m a s C l u b s m a w e l l b t h i n g o t h p a s t i m a n yp a r t s o t h c o u n t r y , b u s o m e o u s t i l l m a n a g e t m a k e r e g u l a rb a n k d e p o s i t s o f f i x e d a m o u n t . T h g o a l m a b t b u i l d u a a n n u i t y f o c o l l e g e o r e t i r e m e n t ( s p e c i f i c a l l y a I R A , p e r h a p s ) .W h i l e f e m a h a v e t h d i s c i p l i n e t k e e p u t h r e g u l a r p a m e n t s u n l e s s w a r f o r c e d t d s b f i x e d i n s u r a n c e a n n u i t yp l a n , i i u s e f u l t c a l c u l a t e t h r e s u l t s o f s u c h p r o g r a m . Y o f u r n i s h t h a m o u n t d e p o s i t e d , i n t e r e s t r a t e , n u m b e r o f d e p o s i t sp e y e a r , a n t i m e p e r i o d . T h i s s u b r o u t i n e d o e s t h e r e s t .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 3 0 0 - 3 4 0 : D e f i n e P A Y M E N T , R A T E , N U M B E R , Y E A R S ,a n M N T H S .

L i n e s 3 5 0 - 4 0 0 : A c c e s s t h s u b r o u t i n e a n d i s p l a y r e s u l t s .L i n e 1 0 6 1 0 : S e u C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 6 2 0 : C o m b i n e Y E A R S a n M N T H S t f i g u r e t o t a l

n u m b e r o Y E A R S o t h f u n d .L i n e 1 0 6 3 0 : C h a n g e R A T E t d e c i m a l v a l u e .L i n e 1 0 6 4 0 : C a l c u l a t e t h e a m o u n t p r o d u c e d .

Y O S U P P L Y

Y o m u s t d e f i n e v a r i a b l e s P A Y M E N T , R A T E , P E R I O D S ,Y E A R S , a n M N T H S .

Page 47: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 47/290

B u s i n e s s a n F i n a n c i a l 2 9

S U G G E S T E D E N H A N C E M E N T S : W r i t e p r o g r a m t s h o w r e s u l t s o fi n c r e a s i n g t h a m o u n t o d e p o s i t s , o r o f v a r y i n g t h i n t e r e s t r a t e .

R E S U L T

A M O U N T p r o d u c e d f r o m t h d e p o s i t s i c a l c u l a t e d .

S A M P L E V A L U E : $ 5 0 0 . 4 1

D E P O S I T A M O U N TW H A T I D O E S : C a l c u l a t e s t h a m o u n t t h a t m u s t b d e p o s i t e de a c h p e r i o d t p r o d u c e d e s i r e d a m o u n t .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E D E P O S I T A M O U N T1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E 1 8 R E M S U P P L I E D B U S E R1 9 R E A M O U N T A M O U N T D E S I R E D2 0 R E R A T E : I N T E R E S T R A T E2 1 R E P E R I O D S : N U M B E R O D E P O S I T S M A D E2 2 R E M E A C H Y E A R2 3 R E M Y E A R S : N U M B E R O W H O L E Y E A R S2 4 R E M M N T H S : N U M B E R O W H O L E M O N T H S2 5 R E R E S U L T2 6 R E P A Y M E N T : A M O U N T T B D E P O S I T E D2 7 R E 2 8 R E 2 9 R E * * I N I T I A L I Z E * *

3 0 A M O U N T = 4 0 03 1 R A T E = 1 03 2 N U M B E R = 1 23 3 Y E A R S = 33 4 M N T H S = 63 5 G O S U B 1 0 7 1 03 6 P R I N T " D E P O S I T I N G n ; : P R I N T U S I N G C A S H ? ; P A Y M E N T ;3 7 P R I N T N U M B E R ; 1 1 T I M E S P E R Y E A R "3 8 P R I N T " F O R " ; Y E A R S ; " Y E A R S W I L L Y I E L D "

Page 48: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 48/290

3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 9 P R I N T U S I N G C A S H $ ; A M O U N T4 0 E N 1 0 7 0 0 R E * * S U B R O U T I N E * * 1 0 7 1 0 C A S H $ = " $ # # # # . # # "1 0 7 2 0 Y E A R S = ( M N T H S / 1 2 ) + Y E A R S1 0 7 3 0 R A T E = ( R A T E / N U M B E R ) / 1 O O1 0 7 4 0 P A Y M E N T = A M O U N T * R A T E / ( ( R A T E + 1 ) * ( N U M B E R * Y E A R S ) - 1 )1 0 7 5 0 R E T U R N

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 3 0 0 - 3 4 0 : D e f i n e A M O U N T , R A T E , N U M B E R , Y E A R S ,a n M N T H S .

L i n e s 3 5 0 - 4 0 0 : A c c e s s t h s u b r o u t i n e a n p r i n t t h r e s u l t s .L i n e 1 0 7 1 0 : D e f i n e C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 7 2 0 : C o m b i n e Y E A R S a n M N T H S t p r o d u c e t o t a lY E A R S .L i n e 1 0 7 3 0 : C h a n g e R A T E t d e c i m a l f r a c t i o n .L i n e 1 0 7 4 0 : C a l c u l a t e t h e r e g u l a r p a y m e n t .

Y O S U P P L Y

Y o u r p r o g r a m s h o u l d d e f i n e A M O U N T , R A T E , N U M B E R ,Y E A R S , a n M N T H S b e f o r e c a l l i n g t h i s s u b r o u t i n e .

S U G G E S T E D E N H A N C E M E N T S : W r i t e a p r o g r a m t s h o w t h r e s u l to i n c r e a s i n g o d e c r e a s i n g t h a m o u n t d e s i r e d .

Page 49: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 49/290

B u s i n e s s a n F i n a n c i a l 3 1

R E S U L T

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

S A M P L E V A L U E : $ 7 . 9 9

A N N U I T Y W I T H D R A WW H A T I D O E S : C a l c u l a t e s a m o u n t o m o n e y t h a t c a n b e w i t hd r a w n e a c h p e r i o d f r o m f u n d d e p o s i t e d a g i v e n i n t e r e s t r a t e .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E A N N U I T Y W I T H D R A W1 3 R E * 1 4 R E M * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E 1 8 R E S U P P L I E D B U S E R1 9 R E M A M O U N T : O R I G I N A L I N V E S T M E N T2 0 0 R E M R A T E : I N T E R E S T R A T E2 1 R E P E R I O D S : N U M B E R O W I T H D R A W A L S2 2 R E M M A D E E A C H Y E A R2 3 R E M Y E A R S : N U M B E R O W H O L E Y E A R S2 4 0 R E M M N T H S : N U M B E R O W H O L E M O N T H S2 5 R E M R E S U L T2 6 R E P A Y M E N T : A M O U N T T B W I T H D R A W N2 7 R E 2 8 0 R E M2 9 R E * * I N I T I A L I Z E * * 3 0 A M O U N T = 1 0 0 03 1 R A T E = 1 03 2 N U M B E R = 1 23 3 Y E A R S = 33 4 M N T H S = 63 5 G O S U B 1 0 8 1 03 6 P R I N T " W I T H D R A W I N G " ; : P R I N T U S I N G C A S H ? ; P A Y M E N T ;3 7 P R I N T N U M B E R ; " T I M E S P E Y E A R "3 8 P R I N T " F O R " ; Y E A R S W I L L D E P L E T E " 3 9 P R I N T U S I N G C A S H $ ; A M O U N T4 0 E N 1 0 8 0 0 R E * * S U B R O U T I N E * *

Page 50: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 50/290

3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 8 1 0 C A S H $ = " $ # # # # . # # "1 0 8 2 0 Y E A R S = ( M N T H S / 1 2 ) + Y E A R S1 0 8 3 0 R A T E = ( R A T E / N U M B E R ) / 1 0 01 0 8 4 0 P A Y M E N T = A M O U N T * ( R A T E / ( ( 1 + R A T E ) * ( N U M B E R * Y E A R S ) - 1 ) + R A T E )1 0 8 5 0 R E T U R N

H O T U S S U B R O U T I N E

U n d e r c u r r e n t l a w , w h e n r e t i r e e r e a c h e s a g 7 0 V 2 , h o s h m u s t b e g i n m a k i n g w i t h d r a w a l s f r o m a I R A . M o s t p e o p l e c h o o s et b e g i n d r a w i n g o t h e i r r e t i r e m e n t n e s t e g g s s o o n e r t h a n t h a t .O p e r h a p s r i c h u n c l e h a d i e d a n l e f t y o s m a l l f o r t u n e .M a y b e y o r e c e i v e d y o u r l o t t e r y w i n n i n g s i l u m p s u m . I a n o t h e s e c a s e s , w h i l e t h m o n e y m a s t i l l b e e a r n i n g i n t e r e s t i nt h b a n k , m a k i n g r e g u l a r w i t h d r a w a l s o a m o u n t s l a r g e r t h a nt h a t b e i n g e a r n e d i n i n t e r e s t w i l l e v e n t u a l l y d e p l e t e t h f u n d .

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

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 3 0 0 - 3 4 0 : D e f i n e t h i n i t i a l A M O U N T o t h d e p o s i t ,t h i n t e r e s t R A T E b e i n g p a i d d u r i n g t h w i t h d r a w a l p e r i o d , t h N U M B E R o w i t h d r a w a l s p e y e a r , a s w e l l a s t h Y E A R S a n M N T H S t h f u n d i e x p e c t e d t l a s t .

L i n e s 3 5 0 - 4 0 0 : A c c e s s t h s u b r o u t i n e a n s h o w r e s u l t s .L i n e 1 0 8 1 0 : D e f i n e C A S H $ a P R I N T U S I N G f o r m a t .L i n e 1 0 8 2 0 : C o m b i n e Y E A R S a n M N T H S t o n v a l u e ,

Y E A R S .L i n e 1 0 8 3 0 : C h a n g e R A T E t d e c i m a l f r a c t i o n , o p e r c e n t a g e .L i n e 1 0 8 4 0 : C a l c u l a t e a m o u n t w i t h d r a w n e a c h p e r i o d .

Page 51: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 51/290

B u s i n e s s a n F i n a n c i a l 3 3

Y O S U P P L Y

Y o m u s t d e f i n e v a r i a b l e s A M O U N T , R A T E , P E R I O D S ,Y E A R S , a n M N T H S .S U G G E S T E D E N H A N C E M E N T S : A g a i n , w r i t e p r o g r a m t h a t w i l ld e m o n s t r a t e v a r i o u s " w h a t - i f " p o s s i b i l i t i e s . A l t h r e c o m m e n d at i o n s f o e n h a n c e m e n t s s o f a r d e m o n s t r a t e t h p o w e r o a n o t h e rd e c i s i o n - s u p p o r t t o o l — t h e e l e c t r o n i c s p r e a d s h e e t . A d v a n c e d u s e r sc a n e x p e r i m e n t w i t h w r i t i n g t h e i r o w B A S I C p r o g r a m s t h a tp r o d u c e d a t a f i l e s t h a t c a n b e i m p o r t e d i n t o s p r e a d s h e e t s . I t ' s n o e a s y — y o u m u s t t h o r o u g h l y u n d e r s t a n d t h f i l e s t r u c t u r e o t h s p r e a d s h e e t y o a r u s i n g — b u t i c a b d o n e .R E S U L T

A m o u n t t h a t c a b w i t h d r a w n o v e r g i v e n p e r i o d t d e p l e t ea f u n d i c a l c u l a t e d .

S A M P L E V A L U E : $ 2 8 . 3 2

R A T E O R E T U R NW H A T I D O E S : C a l c u l a t e s i n t e r e s t r a t e , g i v e n p r e s e n t a n f u t u r ev a l u e a n t h n u m b e r o c o m p o u n d i n g p e r i o d s .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E R A T E O R E T U R N1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E A M O U N T : A M O U N T T B C O M P O U N D E D1 9 R E M P E R I O D S : N U M B E R O C O M P O U N D I N G P E R I O D S2 0 R E Y E A R S : Y E A R S C O M P O U N D E D2 1 R E M F U T U R E : F U T U R E V A L U E O F I N V E S T M E N T

Page 52: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 52/290

3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 2 R E R E S U L T2 3 R E R A T E : R A T E O R E T U R N2 4 R E 2 5 R E

2 6 0 R E M * * I N I T I A L I Z E * * 2 7 A M O U N T = 1 0 0 02 8 Y E A R S = 1 02 9 M N T H S = 63 0 P E R I O D S = 3 6 53 1 F U T U R E = 2 0 0 03 2 G O S U B 1 0 9 1 03 3 P R I N T U S I N G C A S H $ ; A M O U N T ; : P R I N T W I L L C O M P O U N D T O 3 4 P R I N T U S I N G C A S H ? ; F U T U R E ; : P R I N T I " ; Y E A R S ; " Y E A R SA N D " ; M N T H S ; " M O N T H S "3 5 0 P R I N T " A T ; R A T E ; " P E R C E N T C O M P O U N D E D " ; P E R I O D S ; " T I M E S "3 6 P R I N T " Y E A R . "3 7 E N 1 0 9 0 0 R E M * * S U B R O U T I N E * * 1 0 9 1 0 C A S H $ = " $ # # # , # # # . # # "1 0 9 2 0 R A T E = ( ( F U T U R E / A M O U N T ) " ( 1 / ( P E R I O D S * ( ( Y E A R S * 1 2 )+ M T H S ) ) ) - 1 ) * P E R I O D S1 0 9 3 0 R A T E = I N T ( R A T E * 1 2 O O O O ) / 1 O O1 0 9 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

L I N E - B Y L I N E D E S C R I P T I O N

L i n e s 2 7 0 - 3 1 0 : D e f i n e t h p r e s e n t ( o o r i g i n a l ) v a l u e o t h i n v e s t m e n t , t h e n u m b e r o Y E A R S i h a o w i l l b c o m p o u n d e d ,a n t h F U T U R E ( o c u r r e n t , i t h i n v e s t m e n t i a o l o n e )v a l u e . Y o u r s u b r o u t i n e c a s u b s t i t u t e I N P U T l i n e s t o h a v e t h u s e r e n t e r t h e s e v a l u e s .

L i n e s 3 2 0 - 3 7 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 0 9 1 0 : D e f i n e C A S H $ a P R I N T U S I N G f o r m a t .

Page 53: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 53/290

B u s i n e s s a n F i n a n c i a l 3 5

L i n e 1 0 9 2 0 : F i g u r e i n t e r e s t R A T E .L i n e 1 0 9 3 0 : C h a n g e R A T E t w h o l e p e r c e n t .

Y O S U P P L Y

Y o m u s t d e f i n e t h e s e v a r i a b l e s : A M O U N T ( p r e s e n t v a l u e ) ,F U T U R E ( f u t u r e v a l u e ) , Y E A R S ( n u m b e r o y e a r s t b c o p o u n d e d ) , a n P E R I O D S ( n u m b e r o c o m p o u n d i n g p e r i o d s ) .

S U G G E S T E D E N H A N C E M E N T S : W r i t e p r o g r a m t l e y o c o p a r e t h r a t e o r e t u r n o s e v e r a l d i f f e r e n t i n v e s t m e n t s .

R E S U L TI n t e r e s t r a t e i c a l c u l a t e d .

S A M P L E V A L U E : 6 . 9 3 p e r c e n t

D E P R E C I A T I O N R A T EW H A T I D O E S : C a l c u l a t e s s i m p l e s t r a i g h t - l i n e d e p r e c i a t i o n .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E D E P R E C I A T I O N R A T E1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 1 7 1 8 1 9 2 0 2 1 2 2

R E R E R E R E R E R E R E

+

S U P P L I E DP A I D :R E S A L E :Y E A R S :M N T H S :

V A R I A B L E S +

B U S E RO R I G I N A L P R I C ER E S A L EN U M B E RN U M B E R

V A L U EO W H O L EO W H O L E

P A I D

Y E A R SM O N T H S

2 3 R E M R E S U L T2 4 0 R E M D E P R E C I A T E : R A T E O D E P R E C I A T I O N2 5 0 R E M2 6 R E

Page 54: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 54/290

3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 7 0 R E M * * I N I T I A L I Z E * * 2 8 P A I D = 1 0 0 02 9 R E S A L E = 5 0 03 0 Y E A R S = 33 1 M N T H S = 03 2 G O S U B 1 1 0 1 03 3 P R I N T " D E P R E C I A T I O N R A T E I 3 4 P R I N T U S I N G R O U N D $ ; D E P R E C I A T E ; : P R I N T " P E R C E N T P E R Y E A R "3 5 P R I N T " O V E R " ? Y E A R S ; " Y E A R S . "3 6 E N 1 1 0 0 0 R E * * S U B R O U T I N E * * 1 1 0 1 0 R O U N D $ = " # # . # # "1 1 0 2 0 Y E A R S = ( M N T H S * 1 2 ) + Y E A R S1 1 0 3 0 D E P R E C I A T E = 1 0 0 * ( l - ( R E S A L E / P A I D ) * ( l / Y E A R S ) )1 1 0 4 0 R E T U R N

H O T U S E S U B R O U T I N E

A p r a c t i c a l m a t t e r , t h e r e a r e t w k i n d s o d e p r e c i a t i o n ,n e i t h e r o w h i c h u s u a l l y r e f l e c t s w h a t h a p p e n s i r e a l l i f e . T h f i r s t k i n d i t h s i m p l e , s t r a i g h t - l i n e d e p r e c i a t i o n c a l c u l a t e d b t h i s r o u t i n e . Y o b u c a f o $ 1 0 , 0 0 0 . T h r e e y e a r s l a t e r i i w o r t h $ 7 0 0 0 . Y o f i g u r e t h a t i h a d e p r e c i a t e d 3 p e r c e n t , o 1 p e r c e n t p e y e a r .

A c t u a l l y , t h c a m a h a v e d e p r e c i a t e d 1 5 p e r c e n t o i t v a l u e t h f i r s t f i v e m i n u t e s a f t e r y o d r o v e o u o t h s h o w r o o ma n i b e c a m e " u s e d " c a r . T h s e c o n d y e a r i m i g h t h a v e d e p r ec i a t e d a a d d i t i o n a l t 1 p e r c e n t o i t o r i g i n a l v a l u e , a n o n l y

p e r c e n t t h e t h i r d y e a r . H o w e v e r , r e a l - w o r l d d e p r e c i a t i o n i d i f f i c u l t t c a l c u l a t e . A n d , a f t e r t h f a c t , i m a k e s l i t t l e d i f f e r e n c ee x a c t l y h o t h d e p r e c i a t i o n t o o k p l a c e . T h c a i s t i l l w o r t h o n l y$ 7 0 0 0 .

H o w e v e r , i b u s i n e s s i d o e s m a k e d i f f e r e n c e j u s t w h a t t h d e p r e c i a t i o n s c h e d u l e i s I y o c a d e p r e c i a t e a a s s e t m o r e i t h e a r l y y e a r s o i t u s e , y o u s u a l l y g a i n , b e c a u s e t h v a l u e o m o n e y d e c r e a s e s o v e r t i m e , a n $ 1 0 0 0 d e d u c t i o n t h i s y e a r i m o r e v a l u a b l e t h a n $ 1 0 0 0 d e d u c t i o n n e x t y e a r , a f t e r i n f l a t i o nh a s t a k e n i t t o l l .

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

Page 55: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 55/290

B u s i n e s s a n F i n a n c i a l 3

s h i p t t h r e a l w o r l d a s t r a i g h t - l i n e d e p r e c i a t i o n , a n t h r u l e sc h a n g e o f t e n . R e a l e s t a t e , w h i c h u s u a l l y i n c r e a s e s i n v a l u e , c a n e v e r t h e l e s s b d e p r e c i a t e d . T h a l l o w a b l e t i m e s p a n h a c h a n g e df r o m 3 0 o 4 y e a r s t 1 a n b a c k t 1 o 1 i r e c e n t y e a r s .

T h e r e f o r e , t h i s s u b r o u t i n e i i n t e n d e d f o p e r s o n a l o c a s u a lb u s i n e s s u s o n l y , n o f o t a p u r p o s e s . I w i l l t e l l y o t h a p p r o xi m a t e a n n u a l r a t e o f d e p r e c i a t i o n ( c a l c u l a t e d o s t r a i g h t - l i n eb a s i s ) i i i s u p p l i e d w i t h t h o r i g i n a l p u r c h a s e p r i c e o a a s s e t ,t h e c u r r e n t v a l u e , a n t h n u m b e r o y e a r s a n m o n t h s t h a t h a v ee l a p s e d .

Y o m i g h t u s t h i s s u b r o u t i n e t c o m p a r e t h r e l a t i v e a d v a nt a g e s o f d i f f e r e n t m o d e l s o a u t o m o b i l e . S c a n t h e u s e d - c a r a d i y o u r n e w s p a p e r f o a s k i n g p r i c e s o f l a t e - m o d e l a u t o m o b i l e s . T h e nf i g u r e t h a p p r o x i m a t e d e p r e c i a t i o n a m o u n t b e s t i m a t i n g t h o r i g i n a l p r i c e o f t h e s e c a r s ( y o u n e e d n ' t b e x a c t , n o c o u l d y o b e b e c a u s e o t h e v a r i o u s o p t i o n s ) . S i n c e d i f f e r e n t c a r s w i l l c o s t m o r eo l e s s t h a n o t h e r s , c h e c k i n g t h d e p r e c i a t i o n p e r c e n t a g e s i t h e o n l yw a t c h e c k h o m u c h v a l u e i l o s t b e a c h c a o v e r g i v e n p e r i o d .

F o e x a m p l e , y o m a d i s c o v e r t h a t c e r t a i n l u x u r y c a d e p r e c i a t e s o n l y 2 p e r c e n t p e y e a r , c o m p a r e d w i t h 1 0 p e r c e n t f o a n o t h e r c a r , e v e n t h o u g h t h a m o u n t o d e p r e c i a t i o n i n d o l l a r s i e x a c t l y t h s a m e . I s u c h a c a s e t h " c o s t " t o w t h l u x u r y c a i t h s a m e a t h a t o t h l e s s e x p e n s i v e c a r , i t e r m s o w h a t y o l o s e a t t r a d e - i n t i m e .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 3 1 0 : D e f i n e P A I D , R E S A L E , Y E A R S , a n M N T H S .L i n e s 3 2 0 - 3 6 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 1 0 1 0 : D e f i n e R O U N D $ a P R I N T U S I N G f o r m a t .

N o t e t h a t h e r e P R I N T U S I N G i u s e d t r o u n d o f n u m b e r t d e s i r e d n u m b e r o d e c i m a l p l a c e s a n n o t f o r m a t d o l l a r s - a n d -c e n t s . T h d o l l a r s i g n h a b e e n l e f t o u o t h R O U N D $ d e f i n i t i o nf o t h a t r e a s o n , a n n d o l l a r s i g n w i l l a p p e a r i t h f o r m a t t e do u t p u t .

L i n e 1 1 0 2 0 : C h a n g e d e p r e c i a t i o n r a t e t p e r c e n t a g e .L i n e 1 1 0 3 0 : C a l c u l a t e d e p r e c i a t i o n r a t e .

Page 56: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 56/290

3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

Y o u r p r o g r a m s h o u l d d e f i n e t h a m o u n t P A I D , t h R E S A L Ep r i c e , a n Y E A R S a n M N T H S o v e r w h i c h t h d e c l i n e i n v a l u eo c c u r r e d .

S U G G E S T E D E N H A N C E M E N T S : Y o u r p r o g r a m c a i n c l u d e e r r o r -t r a p p i n g r o u t i n e s t m a k e s u r e t h a t t h e R E S A L E v a l u e i n o h i g h e r t h a n t h a m o u n t P A I D . I s u c h c a s e s , n d e p r e c i a t i o n b u t ,r a t h e r , a p p r e c i a t i o n h a o c c u r r e d .

R E S U L T

D e p r e c i a t i o n r a t e a p e r c e n t a g e i c a l c u l a t e d .

S A M P L E V A L U E : 2 0 . 6 3 p e r c e n t

D E P R E C I A T I O N A M O U N TW H A T I D O E S : C a l c u l a t e s t h e a m o u n t o d e p r e c i a t i o n e a c h y e a ro v e r d e s i g n a t e d p e r i o d , w i t h a g i v e n d e p r e c i a t i o n r a t e .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E D E P R E C I A T I O N A M O U N T1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * * * * * * *1 5 0 R E M1 6 R E + V A R I A B L E S + 1 7 R E 1 8 R E S U P P L I E D B U S E R1 9 R E P A I D : O R I G I N A L P R I C E P A I D2 0 0 R E M D E P R E C I A T E : D E P R E C I A T I O N R A T E2 1 R E Y E A R S : N U M B E R O W H O L E Y E A R S2 2 0 R E M M N T H S : N U M B E R O W H O L E M O N T H S2 3 0 R E M R E S U L T2 4 0 R E M A M O U N T : Y E A R L Y A M O U N T D E P R E C I A T E D2 5 0 R E M2 6 0 R E M

2 7 0 R E M * * I N I T I A L I Z E * *

Page 57: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 57/290

B u s i n e s s a n F i n a n c i a l 3

2 8 P A I D = 1 0 0 02 9 D E P R E C I A T E = 93 0 Y E A R S = 2 83 1 G O S U B 1 1 1 1 03 2 E N 1 1 1 0 0 R E * * S U B R O U T I N E * * 1 1 1 1 0 C A S H $ = " $ # # , # # # . # # "1 1 1 2 0 D E P R E C I A T E = D E P R E C I A T E / 1 O O1 1 1 3 0 F O N = T Y E A R S1 1 1 4 0 A M O U N T = P A I D * D E P R E C I A T E * ( 1 - D E P R E C I A T E ) A ( N - 1 )1 1 1 5 0 P R I N T " D E P R E C I A T I O N I Y E A R H ; N ; "1 1 1 6 0 P R I N T U S I N G C A S H ? ; A M O U N T1 1 1 7 0 I N / 2 0 O I N T ( N / 2 0 ) G O T O 1 1 2 0 01 1 1 8 0 P R I N T " H I A N K E " : G E T K E Y A 1 1 1 9 0 S C N C L R1 1 2 0 0 N E X T1 1 2 1 0 R E T U R N

H O T U S E S U B R O U T I N E

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

H o w e v e r , i y o k n o w t h a t y o u r $ m i l l i o n y a c h t w i l l b w o r t h l e s s i e i g h t y e a r s , t h i s s u b r o u t i n e w i l l s h o w y o j u s t h o m u c h i l o s t e a c h y e a r a t h a t 1 2 . 5 p e r c e n t a n n u a l d e p r e c i a t i o nr a t e .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 3 0 0 : D e f i n e a m o u n t P A I D , t h d e p r e c i a t i o n r a t e ,a n n u m b e r o Y E A R S a n M N T H S t b c a l c u l a t e d . I y o t r t f i g u r e d e p r e c i a t i o n o v e r l o n g e r t h a n t h d e p r e c i a b l e l i f e o a a s s e t , n e g a t i v e v a l u e s w i l l b p r o d u c e d .

L i n e s 3 1 0 - 3 2 0 : A c c e s s t h s u b r o u t i n e .L i n e 1 1 1 1 0 : D e f i n e C A S H $ a P R I N T U S I N G f o r m a t . N o t i c et h i n c l u s i o n o c o m m a s t f o r m a t t h d o l l a r s - a n d - c e n t s , s i n c e w e x p e c t t b w o r k i n g w i t h l a r g e r a m o u n t s o m o n e y i t h i ss u b r o u t i n e .

L i n e 1 1 1 2 0 : C h a n g e d e p r e c i a t i o n r a t e t p e r c e n t a g e .

Page 58: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 58/290

4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 1 1 1 3 0 : S t a r t F O R - N E X T l o o p f r o m t n u m b e r o Y E A R S .

L i n e 1 1 1 4 0 : C a l c u l a t e a m o u n t o d e p r e c i a t i o n f o y e a r N .L i n e s 1 1 1 5 0 - 1 1 1 6 0 : P r i n t r e s u l t f o y e a r N .L i n e 1 1 1 7 0 : C h e c k l o o p c o u n t e r t s e i i i e v e n l y d i v i s i b l e

b 2 0 T h i s i d o n e b c o m p a r i n g t h v a l u e o t h l o o p c o u n t e rd i v i d e d b 2 ( N / 2 0 ) w i t h t h i n t e g e r v a l u e o t h s a m e ( I N T ( N / 2 0 ) .O n l y w h e n t h e r e i n r e m a i n d e r w i l l t h e y b e t h s a m e , t h a t i s w h e n 2 o 4 o 6 o 8 0 A t h i s p o i n t , t h e r o u t i n e d r o p sd o w n t t h f o l l o w i n g l i n e s . O t h e r w i s e , i l o o p s b a c k f o t h n e x ty e a r .

L i n e s 1 1 1 8 0 - 1 1 1 9 0 : W h e n 2 s c r e e n l i n e s h a v e b e e n f i l l e d u p t h e r o u t i n e w a i t s f o t h e u s e r t p r e s s k e a n t h e n c l e a r s t h s c r e e n a n p r i n t s t h n e x t s e t . T h i s p r o c e d u r e k e e p s i n f o r m a t i o nf r o m s c r o l l i n g o f t h e s c r e e n f a s t e r t h a n t h u s e r c a r e a d i t

L i n e 1 1 2 0 0 : L o o p .

Y O S U P P L Y

Y o m u s t d e f i n e v a r i a b l e s P A I D , D E P R E C I A T I O N , Y E A R S ,a n M N T H S .

S U G G E S T E D E N H A N C E M E N T S : W r i t e r o u t i n e t h a t w i l l d i r e c tt h o u t p u t o t h i s m o d u l e t y o u r p r i n t e r , o a d a p t t h W r i t e t D i s k r o u t i n e a t h e n o t h i s c h a p t e r t s a v e y o u r r e s u l t s f o l a t e r s t u d y .

R E S U L T

D e p r e c i a t i o n s c h e d u l e i p r i n t e d o u t o s c r e e n .

S A M P L E V A L U E S : Y e a r o n e : $ 9 0 . 0 0 ; y e a r f i v e : $ 6 1 . 7 2 ; y e a r t e n :$ 3 8 . 5 7

Page 59: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 59/290

B u s i n e s s a n F i n a n c i a l 4 1

T E M P E R A T U R E

W H A T I D O E S : C a l c u l a t e s C e l s i u s a n F a h r e n h e i t .L E V E L : N o v i c e

1 0 R E 1 1 R E 1 2 R E 1 3 R E 1 4 R E 1 5 R E 1 6 R E 1 7 R E 1 8 R E 1 9 R E 2 0 R E 2 1 R E 2 2 R E 2 3 R E 2 4 0 R E M2 5 R E 2 6 R E

* * * * * * * * * * * * * * *

T E M P E R A T U R E

+ V A R I A B L E S + S U P P L I E D B U S E RF F A H R E N H E I T

O C C E L S I U S

R E S U L TF F A H R E N H E I T

O C C E L S I U S

2 7 0 R E M * * I N I T I A L I Z E * * 2 8 G O S U B 1 1 3 1 02 9 P R I N T P ; " F . " ; C ; " C . "3 0 E N

1 1 3 0 0 R E M * * S U B R O U T I N E * * 1 1 3 1 0 P R I N T1 1 3 2 0 P R I N T " C O N V E R T : 1 1 3 3 0 P R I N T T A B ( 4 ) " 1 . ) F A H R E N H E I T T C E L S I U S "1 1 3 4 0 P R I N T T A B ( 4 ) " 2 . ) C E L S I U S T F A H R E N H E I T "1 1 3 5 0 P R I N T " E N T E R C H O I C E : 1 1 3 6 0 G E T K E Y A 1 1 3 7 0 A = V A L ( A $ ) : I F A < O A > G O T O 1 1 3 6 01 1 3 8 0 O G O T O 1 1 4 2 0 , 1 1 3 9 01 1 3 9 0 I N P U T " E N T E R T E M P E R A T U R E I C E L S I U S : " ; C1 1 4 0 0 F = I N T ( ( 9 / 5 ) * C + 3 2 )1 1 4 1 0 R E T U R N1 1 4 2 0 I N P U T " E N T E R T E M P E R A T U R E I F A H R E N H E I T : " ; F1 1 4 3 0 C = I N T ( ( F - 3 2 ) * ( 5 / 9 ) )1 1 4 4 0 R E T U R N

Page 60: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 60/290

4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

T h i s s u b r o u t i n e w i l l c o n v e r t C e l s i u s t e m p e r a t u r e s t F a h r e nh e i t a n v i c e v e r s a . T h s a m p l e r o u t i n e h a s h o r t I N P U Ts e c t i o n t h a t a s k s f o t h t e m p e r a t u r e s t b e n t e r e d f r o m t h k e y b o a r d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 3 0 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t .L i n e s 1 1 3 1 0 - 1 1 3 5 0 : P r e s e n t m e n u o o p t i o n s .L i n e s 1 1 3 6 0 - 1 1 3 7 0 : A c c e p t v a l i d c h o i c e o n l y .L i n e 1 1 3 8 0 : A c c e s s a p p r o p r i a t e i n p u t / c a l c u l a t i o n r o u t i n e .L i n e 1 1 3 9 0 : E n t e r t e m p e r a t u r e i C e l s i u s .L i n e 1 1 4 0 0 : C o n v e r t t F a h r e n h e i t .L i n e 1 1 4 1 0 : R e t u r n .L i n e 1 1 4 2 0 : E n t e r t e m p e r a t u r e i F a h r e n h e i t .L i n e 1 1 4 3 0 : C o n v e r t t C e l s i u s .L i n e 1 1 4 4 0 : R e t u r n .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : Y o u r r o u t i n e c o u l d c h e c k i n p u t f o " C o " F a n a u t o m a t i c a l l y d e t e r m i n e t h e c o n v e r s i o n n e e d e d .

R E S U L T

T e m p e r a t u r e c o n v e r t e d t a l t e r n a t e v a l u e .S A M P L E V A L U E S : 2 1 2 F 1 0 0 C ; 3 2 0 C - 4 0 F - 4 0 C

Page 61: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 61/290

B u s i n e s s a n F i n a n c i a l 4 3

D A T E F O R M A T T E RW H A T I D O E S : F o r m a t s d a t e s t M M / D D / Y Y s t y l e .

L E V E L : I n t e r m e d i a t e

1 0 R E 1 1 R E * 1 2 R E D A T E F O R M A T T E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E M N T H $ : M O N T H S1 9 R E D A Y ? : D A 2 0 R E Y E A R $ : Y E A R2 1 R E R E S U L T2 2 R E M D A T E ? F O R M A T T E D D A T E2 3 R E 2 4 R E 2 5 R E * * I N I T I A L I Z E * * 2 6 G O S U B 1 1 5 1 02 7 P R I N T D T E ?2 8 E N 1 1 5 0 0 R E * * S U B R O U T I N E * * 1 1 5 1 0 I N P U T " E N T E R M O N T H 1 1 ; M N T H $1 1 5 2 0 M N T H = V A L ( M N T H ? )1 1 5 3 0 I M N T H < 1 O R M N T H > 1 2 G O T O 1 1 5 1 01 1 5 4 0 I M N T H < 1 0 T H E N M N T H ? = " 0 " + R I G H T ? ( M N T H ? , l )1 1 5 5 0 I N P U T " E N T E R D A " ; D A Y ?1 1 5 6 0 D A Y = V A L ( D A Y ? )1 1 5 7 0 I D A Y < 1 O D A Y > 3 1 G O T O 1 1 5 5 01 1 5 8 0 I M N T H = 4 O M N T H = 6 O M N T H = 9 O M N T H = 1 1 A N D A Y > 3 0 T H E NG O T O 1 1 5 5 01 1 5 9 0 I N P U T " E N T E R Y E A R " ; Y E A R $1 1 6 0 0 Y E A R = V A L ( Y E A R ? )1 1 6 1 0 I Y E A R / 4 O I N T ( Y E A R / 4 ) G O T O 1 1 6 4 01 1 6 2 0 I M N T H = 2 A N D A Y > 2 9 G O T O 1 1 5 5 01 1 6 3 0 G O T O 1 1 6 5 01 1 6 4 0 I M N T H = 2 A N D A Y > 2 8 G O T O 1 1 5 5 01 1 6 5 0 I D A Y < 1 0 T H E N D A Y ? " 0 l l + R I G H T ? ( D A Y ? I 1 1 6 6 0 D T E $ = M N T H $ + " / l l + D A Y $ + l 7 l l + Y E A R $1 1 6 7 0 R E T U R N

Page 62: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 62/290

4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

T h i s s u b r o u t i n e w i l l a c c e p t i n p u t o m o n t h , d a y , a n y e a ra n f o r m a t i i n t o M M / D D / Y Y s t y l e . T h a t i s D e c e m b e r 3 1 9 4 7 ,w i l l b d i s p l a y e d a s 0 3 / 1 2 / 4 7 o 0 3 / 1 2 / 1 9 4 7 . A w r i t t e n , t h m o u l p r o m p t s t h o p e r a t o r t e n t e r t h v a l u e s . I d i s a l l o w s i l l e g a lm o n t h s ( s m a l l e r t h a n o n o l a r g e r t h a n 1 2 ) . O t h e r c h e c k s a r m a d e t m a k e s u r e t h e d a o t h m o n t h i a c c e p t a b l e .

F o e x a m p l e , J u n e 3 a n F e b r u a r y 3 a r n o a l l o w e d .F e b r u a r y 2 i p e r m i t t e d o n l y d u r i n g l e a p y e a r s .

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 1 5 1 0 : E n t e r m o n t h t b f o r m a t t e d .L i n e s 1 1 5 2 0 - 1 1 5 3 0 : C h e c k t s e t h a t M N T H i a l e a s t b u

n m o r e t h a n 1 2 L i n e 1 1 5 4 0 : I M N T H i l e s s t h a n 1 t h e n M N T H $ " 0 p l u s

t h s t r i n g r e p r e s e n t a t i o n o M N T H . T h a t i s " 9 b e c o m e s " 0 9 " .W t a k e R I G H T $ ( M N T H $ , 1 ) i c a s e t h u s e r h a a l r e a d y a d d e dt h f o r u s . W d o n ' t w a n t t w o t h e m .

L i n e s 1 1 5 5 0 - 1 1 5 7 0 : E n t e r d a o m o n t h , w h i c h m u s t b a l e a s t a n l e s s t h a n 3 1

L i n e 1 1 5 8 0 : C h e c k t s e i m o n t h s h o u l d h a v e o n l y 3 d a y s ,a n f o r c e u s e r t r e e n t e r i a i l l e g a l d a t e h a s b e e n s u p p l i e d .

L i n e 1 1 5 9 0 - 1 1 6 0 0 : E n t e r y e a r .L i n e s 1 1 6 1 0 - 1 1 6 4 0 : I l e a p y e a r , t h e n F e b r u a r y m a h a v e 2

d a y s ; o t h e r w i s e , o n l y 2 a l l o w e d .L i n e 1 1 6 5 0 : I D A i l e s s t h a n 1 0 t h e n a d l e a d i n g " 0 " .L i n e 1 1 6 6 0 : C o n s t r u c t M M / D D / Y Y s t r i n g .

Y O S U P P L Y

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

Page 63: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 63/290

B u s i n e s s a n F i n a n c i a l 4

S U G G E S T E D E N H A N C E M E N T S : A w r i t t e n , s u b r o u t i n e w i l l n o w o r k f o a l d a y s o a l y e a r s . C h a n g e t h l e a p y e a r s e c t i o n s i w i l l w o r k f o m o r e y e a r s , a l e a s t u s i n g o u r c u r r e n t c a l e n d a r .H i n t : Y o m u s t c h a n g e t h d i v i s o r t s o m e o t h e r v a l u e . F i n dw a t d e t e r m i n e w h e t h e r y e a r e n t e r e d h a s t w o d i g i t s o f o u r ,a n t r u n c a t e t t w s t h a t 1 2 / 0 3 / 4 7 w i l l n o a p p e a r a 1 2 / 0 3 / 1 9 4 7 .

R E S U L T

P r o p e r l y f o r m a t t e d d a t e .

S A M P L E V A L U E : 1 2 3 1 9 4 7 c h a n g e d t 1 2 / 0 3 / 1 9 4 7

N U M B E R O D A Y SW H A T I D O E S : C a l c u l a t e s n u m b e r o d a y s b e t w e e n t w o d a t e s i s i n g l e y e a r .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E N U M B E R O F D A Y S1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E D A $ : D A T E T O B E C O M P A R E D1 9 R E M R E S U L T2 0 0 R E M D F N U M B E R O F D A Y S D I F F E R E N C E2 1 R E 2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 D A T A 3 , 0 , 3 , 2 , 3 , 2 , 3 , 3 , 2 , 3 , 2 , 32 5 D I M ( 1 2 )2 6 F O N = T 1 2 : R E A D M ( N ) : N E X T2 7 G O S U B 1 1 7 1 02 8 E N 1 1 7 0 0 R E * * S U B R O U T I N E * *

Page 64: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 64/290

4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 1 7 1 0 D A = 01 1 7 2 0 G O S U B 1 1 7 8 01 1 7 3 0 D 1 = D A1 1 7 4 0 G O S U B 1 1 7 8 01 1 7 5 0 D F = D A - D 11 1 7 6 0 P R I N T " D A Y S D I F F E R E N C E : " ; D F1 1 7 7 0 R E T U R N1 1 7 8 0 I N P U T " E N T E R D A T E ( M M / D D ) " ; D A $1 1 7 9 0 I M I D $ ( D A $ , 3 , 1 ) < > " / " T H E N P R I N T" U S E M M / D D F O R M A T 1 " : G O T O 1 1 7 8 01 1 8 0 0 M = V A L ( L E F T $ ( D A $ , 2 ) ) : D = V A L ( R I G H T ? ( D A $ , 2 ) )1 1 8 1 0 I M = O M = O M = O M = l l A N D D > 3 0 T H E N G O T O 1 1 8 5 01 1 8 2 0 I M = A N D > 2 9 T H E N G O T O 1 1 8 5 01 1 8 3 0 G O S U B 1 1 8 6 01 1 8 4 0 R E T U R N1 1 8 5 0 P R I N T " I M P R O P E R D A T E I " : P R I N T : G O T O 1 1 7 8 01 1 8 6 0 F A = 01 1 8 7 0 F O N = T M - 1 1 8 8 0 F A = F A + M ( N )1 1 8 9 0 N E X T1 1 9 0 0 D A = 2 8 * ( M - 1 ) + F A + D1 1 9 1 0 R E T U R N

H O T U S E S U B R O U T I N ES o m e t i m e s i f i g u r i n g p e n a l t y c h a r g e s , o i p r o r a t i n g

r e n t s o o t h e r a m o u n t s , w n e e d t k n o w t h n u m b e r o d a y sb e t w e e n t w o d a t e s . T h i s s u b r o u t i n e a s k s f o i n p u t f o t h s t a r ti n a n e n d a t e s a n s u p p l i e s t h n u m b e r o d a y s b e t w e e nt h e m . I w i l l n o s p a n y e a r s , b u y o c a c a l c u l a t e t h n u m b e ro d a y s f r o m t h s t a r t d a t e t D e c e m b e r 3 1 a n t h e n f r o mJ a n u a r y t t h e n d a t e , a n a d t h e m t o g e t h e r . I m o r et h a n o n e y e a r i n t e r v e n e s , a d d 3 6 5 ( 3 6 6 f o l e a p y e a r s ) f o e a c hy e a r .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 4 0 : D A T A l i n e , w i t h n u m b e r o d a y s ' d i f f e r e n c e b t w e e n t h o s e i e a c h m o n t h a n t h m i n i m u m , 2 8 T h a t i s f o J a n u a r y , w h i c h h a 3 d a y s , t h v a l u e i 3 f o S e p t e m b e r , t h v a l u e i s 2 .

L i n e s 2 5 0 - 2 6 0 : R e a d t h i s D A T A i n t o a r r a y M ( 1 2 ) .L i n e s 2 7 0 - 2 8 0 : A c c e s s t h s u b r o u t i n e .L i n e 1 1 7 1 0 : R e t u r n v a l u e o D t 0

Page 65: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 65/290

B u s i n e s s a n F i n a n c i a l 4

L i n e 1 1 7 2 0 : A c c e s s t h e r o u t i n e w h i c h a s k s f o a d a t e a n c o n v e r t s i i n t o d a y n u m b e r .

L i n e 1 1 7 3 0 : T a k e t h d a n u m b e r p r o d u c e d a n s t o r e i i D l

L i n e 1 1 7 4 0 : A c c e s s t h e r o u t i n e a g a i n f o t h s e c o n d d a t e t b c o m p a r e d .

L i n e 1 1 7 5 0 : C a l c u l a t e t h e d i f f e r e n c e b e t w e e n t h t w d a n u m b e r s .

L i n e 1 1 7 6 0 : P r i n t t h r e s u l t s .L i n e 1 1 7 7 0 : E x i t t h e s u b r o u t i n e .L i n e 1 1 7 8 0 : A s u s e r t e n t e r d a t e .L i n e 1 1 7 9 0 : C h e c k t s e i i M M / D D f o r m a t .L i n e 1 1 8 0 0 : E x t r a c t v a l u e f o m o n t h a n d a y .L i n e 1 1 8 1 0 : I u s e r e n t e r s m o r e t h a n 3 d a y s i i l l e g a l m o n t h ,

a s f o r e e n t r y .L i n e 1 1 8 2 0 : I u s e r a t t e m p t s t e n t e r m o r e t h a n 2 9 d a y s i

F e b r u a r y , r e f u s e i n p u t .L i n e 1 1 8 3 0 : A c c e s s r o u t i n e t a d u d a y s .L i n e 1 1 8 4 0 : E x i t " d a y n u m b e r s u b r o u t i n e " b a c k t m a i n

s u b r o u t i n e .L i n e 1 1 8 5 0 : P r i n t I M P R O P E R D A T E n o t i c e .L i n e 1 1 8 6 0 : I n i t i a l i z e F b a c k t 0 L i n e 1 1 8 7 0 : S t a r t l o o p f r o m t n u m b e r o m o n t h , l e s s 1 L i n e 1 1 8 8 0 : A d " e x t r a " d a y s t f a c t o r . T h e s e a r e t h e d a y s

m o r e t h a n 2 8 f o t h g i v e n m o n t h .L i n e 1 1 8 9 0 : L o o p .L i n e 1 1 9 0 0 : T a k e n u m b e r o m o n t h s t i m e s 2 a n a d t h

e x t r a d a y s c a l c u l a t e d a b o v e , p r o d u c i n g d a n u m b e r .L i n e 1 1 9 1 0 : G b a c k t p r e v i o u s s u b r o u t i n e .

Y O S U P P L Y

D a t e s s u p p l i e d f r o m k e y b o a r d i r e s p o n s e t p r o m p t s .

S U G G E S T E D E N H A N C E M E N T S : S e H O T O U S E S U B R O U T I N Ea b o v e f o h i n t s o n c h a n g i n g r o u t i n e t a l l o w d a t e s i d i f f e r e n ty e a r s . Y o u ' l l n e e d t a d a y e a r i n p u t r o u t i n e a s w e l l . T h i s

Page 66: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 66/290

4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

r o u t i n e d o e s n o t f i g u r e f o l e a p y e a r s ; y o u ' l l n e e d t c h a n g e i d u r i n g l e a p y e a r s , o r p r o v i d e y e a r i n p u t r o u t i n e t c h e c k a n a d a e x t r a d a f o d a t e s a f t e r F e b r u a r y 2 d u r i n g t h o s e y e a r s .

R E S U L T

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

S A M P L E V A L U E : B e t w e e n J a n u a r y a n D e c e m b e r 3 1 3 6

D A C O N V E R T E RW H A T I D O E S : C h a n g e s d a n u m b e r i n t o m o n t h / d a y f o r m a t .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E D A C O N V E R T E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E D A D A Y N U M B E R T B C O N V E R T E D1 9 R E R E S U L T2 0 0 R E M M $ ( M ) : M O N T H N A M E2 1 R E D D A O T H M O N T H2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 D I M $ ( 1 2 )2 6 F O N = T 1 2 7 R E A D M $ ( N )2 8 N E X T2 9 D A T A J A N U A R Y , F E B R U A R Y , M A R C H , A P R I L , M A Y3 0 D A T A J U N E , J U L Y , A U G U S T , S E P T E M B E R3 1 D A T A O C T O B E R , N O V E M B E R , D E C E M B E R3 2 G O S U B 1 2 0 1 03 3 D = D A - F 13 4 P R I N T " D A T E I " ; M $ ( M ) ? " " ; 3 5 E N 1 2 0 0 0 R E M * * S U B R O U T I N E * *

Page 67: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 67/290

B u s i n e s s a n F i n a n c i a l 4

1 2 0 1 0 I N P U T " E N T E R D A Y N U M B E R : " ; D A $1 2 0 2 0 D A = V A L ( D A $ ) : I F D A < 1 O D A > 3 6 6 G O T O 1 2 0 1 01 2 0 3 0 G O S U B 1 2 0 4 0 : R E T U R N1 2 0 4 0 I D A > 3 3 4 T H E N M = 1 2 : F l = 3 3 4 : R E T U R N1 2 0 5 0 I D A > 3 0 4 T H E N M = l l : F 1 = 3 O 4 : R E T U R N1 2 0 6 0 I D A > 2 7 3 T H E N M = 1 0 : F 1 = 2 7 3 : R E T U R N1 2 0 7 0 I D A > 2 4 3 T H E N M = 9 : F l = 2 4 3 : R E T U R N1 2 0 8 0 I D A > 2 1 2 T H E N M = 8 : F l = 2 4 3 : R E T U R N1 2 0 9 0 I D A > 1 8 1 T H E N M = 7 : F 1 = 1 3 1 : R E T U R N1 2 1 0 0 I D A > 1 5 1 T H E N M = 6 : F l = 1 5 1 : R E T U R N1 2 1 1 0 I D A > 1 2 0 T H E N M = 5 : F 1 = 1 2 O : R E T U R N1 2 1 2 0 I D A > 9 0 T H E N M = 4 : F l = 9 0 : R E T U R N1 2 1 3 0 I D A > 5 9 T H E N M = 3 : F l = 5 9 : R E T U R N1 2 1 4 0 I D A > 3 1 T H E N M = 2 : F l = 3 1 : R E T U R N1 2 1 5 0 M = 1 : F 1 = O1 2 1 6 0 R E T U R N

H O T U S S U B R O U T I N E

C o m p u t e r p r o g r a m s w o r k b e s t w i t h d a t e s t h a t a r e i a a b s o l u t e d a y - o f - t h e - y e a r n u m b e r f o r m a t . H o w e v e r , h u m a n s r e l a t eb e t t e r t m o n t h / d a y f o r m a t . T h i s s u b r o u t i n e w i l l t a k e a n d a n u m b e r a n c o n v e r t i t s t r i n g , s u c h a J a n u a r y o D e c e m b e r 3

L I N E - B Y - L I N E D E S C R I P T I O NL i n e 2 5 0 : D I M e n s i o n a r r a y t s t o r e t h n a m e s o t h m o n t h s .L i n e s 2 6 0 - 2 8 0 : R e a d t h n a m e s o t h m o n t h s i n t o t h a r r a y ,

M $ ( n ) .L i n e s 2 9 0 - 3 1 0 : D A T A l i n e s w i t h m o n t h n a m e s .L i n e s 3 2 0 : A c c e s s t h s u b r o u t i n e .L i n e 3 3 0 : C a l c u l a t e d a y - o f - m o n t h .L i n e 3 4 0 : P r i n t n a m e o m o n t h , a n d a y - o f - m o n t h .L i n e 1 2 0 1 0 : A s f o d a n u m b e r . I y o u r p r o g r a m i a l r e a d y

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

L i n e 1 2 0 2 0 : C h e c k d a n u m b e r f o v a l i d i t y .L i n e 1 2 0 3 0 : A c c e s s d a y - n u m b e r r o u t i n e . T h i s i t r e a t e d a ss e p a r a t e s u b r o u t i n e s t h a t a e x i t b R E T U R N c a b e f f e c t e dw h e n t h d e s i r e d v a l u e i d e t e r m i n e d .

L i n e s 1 2 0 4 0 - 1 2 1 4 0 : C o m p a r e D w i t h v a r i o u s v a l u e s . A s o o n a v a l u e t h a t D i g r e a t e r t h a n i f o u n d , t h e n t h e r o u t i n e

Page 68: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 68/290

5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

" k n o w s " t h a t t h d a n u m b e r f a l l s w i t h i n t h c o r r e s p o n d i n g m o n t h .V a r i a b l e i a s s i g n e d t h a t m o n t h n u m b e r , a n t h d a n u m b e ro t h e n o t h e p r e v i o u s m o n t h i a s s i g n e d t v a r i a b l e F l I l i n e3 3 0 , F i s u b t r a c t e d f r o m D A w i t h t h r e m a i n d e r e q u a l i n g t h d a y - o f - t h e - m o n t h .

L i n e 1 2 1 5 0 : I D i l e s s t h a n 3 1 t h e n c o n t r o l p a s s e s t t h i sl i n e , a n t h m o n t h i t h e r e f o r e J a n u a r y .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : P r o v i d e w a o a c c o u n t i n g f o l e a p y e a r s , s i n c e a l d a n u m b e r s a f t e r F e b r u a r y 2 a r o n h i g h e r t h a n i n o n - l e a p y e a r s .

R E S U L T

D a n u m b e r c o n v e r t e d t m o n t h / d a y f o r m a t .

S A M P L E V A L U E : D a n u m b e r 3 c o n v e r t e d t F e b r u a r y

M E N UW H A T I D O E S : S e r v e s a m e n u t e m p l a t e f o u s e r p r o g r a m s .

L E V E L : N o v i c e1 0 R E M * * * * * * * *1 1 R E 1 2 R E M E N U1 3 R E * 1 4 R E M * * * * * * * *1 5 R E 1 6 0 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 0 R E M N C N U M B E R O M E N U C H O I C E S1 9 R E R E S U L T2 0 0 R E M M E N U C H O I C E S

Page 69: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 69/290

B u s i n e s s a n F i n a n c i a l 5

2 1 R E 2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 N C = 42 5 G O S U B 1 2 2 1 02 6 E N 2 7 R E I N S E R T F I R S T R O U T I N E " H E R E2 8 R E T U R N2 9 R E I N S E R T S E C O N D R O U T I N E H E R E3 0 R E T U R N3 1 R E I N S E R T T H I R D R O U T I N E H E R E3 2 R E T U R N3 3 R E I N S E R T F O U R T H R O U T I N E H E R E3 4 R E T U R N1 2 2 0 0 R E * * S U B R O U T I N E * * 1 2 2 1 0 S C N C L R1 2 2 2 0 P R I N T T A B ( 6 ) " * * M E N U * * 1 2 2 3 0 P R I N T C H R $ ( 1 7 ) ; C H R $ ( 1 7 )1 2 2 4 0 P R I N T T A B ( 3 ) " 1 . F I R S T C H O I C E "1 2 2 5 0 P R I N T T A B ( 3 ) " 2 . S E C O N D C H O I C E "1 2 2 6 0 P R I N T T A B ( 3 ) " 3 . T H I R D C H O I C E "1 2 2 7 0 P R I N T T A B ( 3 ) " 4 . F O U R T H C H O I C E "1 2 2 8 0 P R I N T C H R $ ( 1 7 )1 2 2 9 0 P R I N T T A B ( 6 ) " E N T E R C H O I C E : 1 2 3 0 0 G E T K E Y A 1 2 3 1 0 A = V A L ( A $ )1 2 3 2 0 I A < O A > N C G O T O 1 2 3 0 01 2 3 3 0 O G O S U B 2 7 0 , 2 9 0 , 3 1 0 , 3 3 01 2 3 4 0 R E T U R N

H O T U S E S U B R O U T I N E

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

I y o d e f i n e t h n u m b e r o s e l e c t i o n s o t h m e n u a t h b e g i n n i n g o y o u r p r o g r a m , t h m e n u w i l l a u t o m a t i c a l l y r e j e c ti l l e g a l c h o i c e s , t h a t i s t h o s e t h a t a r o u o t h a l l o w e d r a n g e . U s e ri n p u t f o u t n i n e s e l e c t i o n s i a c c o m p l i s h e d b p r e s s i n gs i n g l e k e y .

O n c e t h o p e r a t o r h a s e l e c t e d m e n u i t e m , t h r o u t i n eb r a n c h e s t m o d u l e s w r i t t e n b t h u s e r t c a r r y o u t h m e n uf u n c t i o n s . T e x p a n d t h n u m b e r o m e n u i t e m s , r e d e f i n e N C I

Page 70: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 70/290

5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

m o r e t h a n n i n e c h o i c e s a r l i s t e d , y o w i l l h a v e t s a c r i f i c es i n g l e - k e y e n t r y . R e p l a c e l i n e 2 4 w i t h I N P U T A $ T h e n a n n u m b e r c a b e n t e r e d .

N o t e t h a t n m e n u f u n c t i o n s a r e p r o v i d e d a l i n e s 2 7 0 , 2 9 0 ,3 1 0 , o r 3 3 0 ; y o m u s t w r i t e t h o s e r o u t i n e s y o u r s e l f .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 4 0 : D e f i n e n u m b e r o m e n u c h o i c e s a v a i l a b l e .L i n e s 1 2 2 1 0 - 1 2 2 2 0 : C l e a r s c r e e n a n p r e s e n t m e n u t i t l e .

L i n e 1 2 2 2 0 m a b c h a n g e d b y u s e r t o l a b e l - s p e c i f i c m e n u .L i n e 1 2 2 3 0 : M o v e c u r s o r d o w n t w l i n e s .L i n e s 1 2 2 4 0 - 1 2 2 7 0 : L a b e l s f o t h m e n u c h o i c e s .L i n e 1 2 2 8 0 : M o v e c u r s o r d o w n o n m o r e l i n e .L i n e 1 2 2 9 0 : P r o m p t u s e r c h o i c e .L i n e 1 2 3 0 0 : W a i t f o u s e r i n p u t .L i n e s 1 2 3 1 0 - 1 2 3 2 0 : I e n t r y i l e s s t h a n o l a r g e r t h a n t h

n u m b e r o c h o i c e s a v a i l a b l e , g b a c k a n c o n t i n u e w a i t i n g .L i n e 1 2 3 3 0 : A c c e s s s u b r o u t i n e s p e c i f i e d b u s e r , a L i n e s

2 7 0 , 2 9 0 , 3 1 0 , o r 3 3 0 .

Y O S U P P L Y

Y o s h o u l d d e f i n e N t e q u a l t h e n u m b e r o m e n u c h o i c e s .Y o w i l l n e e d t w r i t e s u b r o u t i n e s t a c c o m p l i s h y o u r v a r i o u st a s k s , u s i n g l i n e 1 2 3 3 0 a m o d e l t d i r e c t c o n t r o l .

S U G G E S T E D E N H A N C E M E N T S : F a n c i e r i n p u t r o u t i n e ; s o u n d .

R E S U L T

O p e r a t o r c a s e l e c t f r o m l i s t o m e n u c h o i c e s .S A M P L E V A L U E : N o n e

Page 71: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 71/290

B u s i n e s s a n F i n a n c i a l 5

T I M E A D D E RW H A T I D O E S : T o t a l s s e c o n d s , m i n u t e s , a n h o u r s .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 R E T I M E A D D E R1 3 R E 1 4 R E * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E T M T O T A L M I N U T E S S F A 1 9 R E T S T O T A L S E C O N D S S F A 2 0 R E T H T O T A L H O U R S S F A 2 1 R E M I N : M I N U T E S T B A D D E D2 2 R E H O U R : H O U R S T O B A D D E D2 3 R E S E C S : S E C O N D S T O B A D D E D2 4 R E R E S U L T S2 5 R E T M N E T O T A L M I N U T E S2 6 R E T S N E W T O T A L S E C O N D S2 7 R E T H N E W T O T A L H O U R S2 8 R E 2 9 R E 3 0 R E * * I N I T I A L I Z E * * 3 1 T M = 5 43 2 T H = 4 03 3 T S = 3 03 4 M I N = 3 03 5 H O U R = 23 6 S E C S = 3 03 7 G O S U B 1 2 4 1 03 8 P R I N T " S E C O N D S : " ; T S3 9 P R I N T " M I N U T E S : " ; T M4 0 P R I N T " H O U R S : " ; T H4 1 E N 1 2 4 0 0 R E * * S U B R O U T I N E * *

1 2 4 1 0 T M = ( T M + M I N ) * 6 01 2 4 2 0 T S = T S + S E C S1 2 4 3 0 T H = ( T H + H O U R ) * 3 6 0 01 2 4 4 0 T S = T M + T S + T H1 2 4 5 0 T H = I N T ( T S / 3 6 0 0 )1 2 4 6 0 T S = T S - T H * 3 6 0 01 2 4 7 0 T M = I N T ( T S / 6 0 )1 2 4 8 0 T S = T S - T M * 6 01 2 4 9 0 R E T U R N

Page 72: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 72/290

5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

V a r i o u s p r o g r a m s , s u c h a s t i m e r s , m u s t a d m i n u t e s , s e o n d s , a n h o u r s a n c o m e u w i t h t o t a l , d e s p i t e t h c l u m s yb a s e - 6 0 / b a s e - 2 4 n u m b e r i n g s y s t e m c o m b i n a t i o n .

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 3 1 0 - 3 3 0 : D e f i n e t h c u r r e n t t o t a l m i n u t e s , h o u r s , a n s e c o n d s .L i n e s 3 4 0 - 3 6 0 : D e f i n e t h n u m b e r o h o u r s , m i n u t e s , a n s e c o n d s t b a d d e d t t h a b o v e v a r i a b l e s .

L i n e s 3 7 0 - 4 1 0 : A c c e s s t h s u b r o u t i n e a n p r i n t t h r e s u l t s .L i n e 1 2 4 1 0 : A d c u r r e n t t o t a l m i n u t e s t t h m i n u t e s t b

a d d e d , t h e n m u l t i p l y b 6 t p r o d u c e t h t o t a l n u m b e r o s e c o n d si t h o s e m i n u t e s .

L i n e 1 2 4 2 0 : A d t h e c u r r e n t t o t a l s e c o n d s t t h s e c o n d s t b a d d e d .

L i n e 1 2 4 3 0 : A d t h e c u r r e n t t o t a l h o u r s t t h h o u r s t b a d d e d , a n t h e n m u l t i p l y b 3 6 0 0 t d e t e r m i n e t h n u m b e r o s e c o n d s i t h o s e h o u r s .

L i n e 1 2 4 4 0 : C a l c u l a t e t h e o v e r a l l t o t a l n u m b e r o s e c o n d s b a d d i n g s u b t o t a l s o s e c o n d s , m i n u t e s , a n h o u r s .

L i n e 1 2 4 5 0 : T a k e t h i n t e g e r p o r t i o n o t h i s t o t a l d i v i d e d b 3 6 0 0 t d e t e r m i n e t h n u m b e r o w h o l e h o u r s .

L i n e 1 2 4 6 0 : S u b t r a c t t h h o u r s ' w o r t h o s e c o n d s f r o m t h s u b t o t a l .

L i n e 1 2 4 7 0 ; T a k e t h i n t e g e r p o r t i o n o t h n e s u b t o t a ld i v i d e d b 6 t d e t e r m i n e t h n u m b e r o w h o l e m i n u t e s .L i n e 1 2 4 8 0 : S u b t r a c t t h e m i n u t e s ' w o r t h o s e c o n d s f r o m t h s u b t o t a l ; t h r e m a i n d e r i t h s e c o n d s .

Page 73: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 73/290

B u s i n e s s a n F i n a n c i a l 5

Y O S U P P L Y

Y o m u s t s u p p l y s t a r t - u p v a l u e s f o T S T M a n d T H , o e l s et h e y w i l l d e f a u l t t t h o s e s h o w n i n l i n e s 3 1 t 3 3 0 . Y o m a c h a n g e t h e s e d e f a u l t s t z e r o s i y o w i s h . Y o u r p r o g r a m s h o u l df u r n i s h M I N , H O U R , a n S E C S v a l u e s .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

N e t o t a l t i m e c a l c u l a t e d .

S A M P L E V A L U E : 4 h o u r s , 2 m i n u t e s , 0 s e c o n d s

M P W H A T I D O E S : C a l c u l a t e s a u t o m i l e s p e g a l l o n .

L E V E L : N o v i c e

1 0 R E M * * * * * * *1 1 R E * 1 2 R E M P 1 3 R E * 1 4 R E M * * * * * * *1 5 R E 1 6 R E 1 7 R E 1 8 R E 1 9 R E 2 0 R E 2 1 R E 2 2 R E 2 3 R E 2 4 R E 2 5 R E * * I N I T I A L I Z E * * 2 6 O D O M = 3 6 4 2 02 7 B E G N = 3 6 0 0 12 8 G A L L N S = 1 3 . 82 9 G O S U B 1 2 5 1 03 0 P R I N T

+ V A R I A B L E S + S U P P L I E D B

B E G N :O D O M :G A L L N S :

R E S U L TM P G :

U S E RS T A R T I N G O D O M E T E RC U R R E N T O D O M E T E RG A L L O N S G A U S E DM I L E S P E G A L L O N

Page 74: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 74/290

5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 1 P R I N T n M P G = u ; M P G3 2 E N 1 2 5 0 0 R E * * S U B R O U T I N E * * 1 2 5 1 0 M P G = ( O D O M - B E G N ) / G A L L N S1 2 5 2 0 M P G = I N T ( M P G * 1 0 ) / 1 01 2 5 3 0 R E T U R N

H O T U S E S U B R O U T I N E

T h i s r o u t i n e w i l l f i g u r e y o u r g a c o n s u m p t i o n , g i v e n t h es t a r t i n g a n e n d i n g o d o m e t e r r e a d i n g s a n n u m b e r o g a l l o n s o fg a c o n s u m e d . T b a c c u r a t e , y o s h o u l d t o o f y o u r g a t a n kb e f o r e w r i t i n g d o w n B E G N v a l u e , a n t o i o f a g a i n w h e nr e c o r d i n g O D O M . A n g a p u i b e t w e e n t h o s e t w s h o u l d b ea d d e d t t h f i n a l f i l l u p . I n o t h e r w o r d s , t h e M P c a n b e f i g u r e df o t h a g g r e g a t e o n u m b e r o t a n k f u l s o g a s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : D e f i n e c u r r e n t O D O M e t e r r e a d i n g , t h B E G N ,o i n i t i a l o d o m e t e r r e a d i n g , a n t h n u m b e r o f g a l l o n s , G A L L N So g a u s e d . Y o u r s u b r o u t i n e c a u s I N P U T s t a t e m e n t s t a l l o wt h e u s e r t e n t e r t h e s e v a l u e s .

L i n e s 2 9 0 - 3 2 0 : A c c e s s s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 2 5 1 0 : C a l c u l a t e M P G .L i n e 1 2 5 2 0 : R o u n d o f M P G .

Y O S U P P L Y

Y o n e e d t e n t e r v a l u e s f o B E G N , O D O M , a n G A L L N S ,a s o u t l i n e d a b o v e . V a r i a b l e M P w i l l s t o r e f i n a l m i l e s p e g a l l o nf i g u r e .

S U G G E S T E D E N H A N C E M E N T S : W r i t e r o u t i n e s t h a t w i l l s t o r e e a c ho d o m e t e r r e a d i n g a n g a l l o n s u s e d a n w i l l k e e p r u n n i n g l o g o fM P G ' s f o o n o g r o u p o a u t o m o b i l e s u s e d f o b u s i n e s s o p e r s o n a l u s e .

Page 75: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 75/290

B u s i n e s s a n F i n a n c i a l 5

R E S U L T

M P c a l c u l a t e d .

S A M P L E V A L U E : 3 0 . 3

A B B R E V I A T I O N SW H A T I D O E S : T a k e s u s e r i n p u t o s t a t e n a m e , a n r e t u r n st w o - c h a r a c t e r p o s t o f f i c e a b b r e v i a t i o n .

L E V E L : N o v i c e1 0 R E * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E A B B R E V I A T I O N S1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M S T A T E $ : S T A T E N A M E T O A B B R E V I A T E1 9 R E M R E S U L T2 0 R E M S T A T E $ ( N , 1 ) : A B B R E V I A T I O N O S T A T E2 1 R E 2 2 0 R E M2 3 R E * * D A T A * * 2 4 D A T A A L , A L A B A M A , A K , A L A S K A , A Z , A R I Z O N A , A R , A R K A N S A S2 5 D A T A C A , C A L I F O R N I A , C O , C O L O R A D O , C T , C O N N E C T I C U T2 6 D A T A D E , D E L A W A R E , D C , D I S T R I C T O C O L U M B I A , , F L , F L O R I D A2 7 D A T A G A , G E O R G I A , H I , H A W A I I , I D , I D A H O , I L , I L L I N O I S2 8 D A T A I N , I N D I A N A , I A , I O W A , K S , K A N S A S , K Y , K E N T U C K Y2 9 D A T A L A , L O U I S I A N A , M E , M A I N E , M D , M A R Y L A N D , M A , M A S S A C H U S E T T S3 0 0 . D A T A M I , M I C H I G A N , M N , M I N N E S O T A , M S , M I S S I S S I P P I3 1 D A T A M O , M I S S O U R I , M T , M O N T A N A , N E , N E B R A S K A , N V , N E V A D A3 2 D A T A N H , N E W H A M P S H I R E , N J , N E W J E R S E Y , N M , N E W M E X I C O3 3 D A T A N Y , N E W Y O R K , N C , N O R T H C A R O L I N A , N D , N O R T H D A K O T A3 4 D A T A O H , O H I O , O K , O K L A H O M A , O R , O R E G O N , P A , P E N N S Y L V A N I A3 5 D A T A R I , R H O D E I S L A N D , S C , S O U T H C A R O L I N A , S D , S O U T H D A K O T A3 6 D A T A T N , T E N N E S S E E , T X , T E X A S , U T , U T A H , V T , V E R M O N T , V A , V I R G I N I A3 7 D A T A W A , W A S H I N G T O N , W V , W E S T V I R G I N I A , W I , W I S C O N S I N , W Y , W Y O M I N G3 8 R E * * I N I T I A L I Z E * * 3 9 D I M S T A T E ? ( 5 1 , 2 )4 0 F O N = T 5 4 1 F O N l = l T

Page 76: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 76/290

5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

4 2 R E A D S T A T E $ ( N , N 1 )4 3 0 N E X T N 4 4 0 N E X T4 5 I N P U T " E N T E R S T A T E N A M E : " ; S T A T E ?4 6 G O S U B 1 2 6 1 04 7 I N = 5 1 A N D S T A T E $ < > " W Y O M I N G " G O T O 4 9 4 8 P R I N T " A B B R E V I A T I O N F O " ; S T A T E $ ; " I " ; S T A T E ? ( N , 1 )4 9 0 E N D1 2 6 0 0 R E * * S U B R O U T I N E * * 1 2 6 1 0 T E M P $ = " "1 2 6 2 0 F O N = T O L E N ( S T A T E $ )1 2 6 3 0 B $ = M I D $ ( S T A T E $ , N , 1 )1 2 6 4 0 B = A S C ( B $ )1 2 6 5 0 I B > 1 9 2 A N B < 2 1 9 T H E N B = B - 1 2 81 2 6 6 0 T E M P $ = T E M P $ + C H R $ ( B )1 2 6 7 0 N E X T1 2 6 8 0 S T A T E $ = T E M P $1 2 6 9 0 I L E F T $ ( S T A T E $ , 2 ) = " S . " T H E N S T A T E $ = " S O U T H " + M I D $ ( S T A T E ? , 3 )1 2 7 0 0 I L E F T $ ( S T A T E $ / 2 ) = " N . " T H E N S T A T E ? = " N O R T H " + M I D $ ( S T A T E ? , 3 )1 2 7 1 0 I L E F T ? ( S T A T E ? , 2 ) = " W . " T H E N S T A T E ? = " W E S T V I R G I N I A "1 2 7 2 0 F O N = T 5 1 2 7 3 0 I S T A T E $ ( N , 2 ) = S T A T E $ T H E N R E T U R N1 2 7 4 0 N E X T1 2 7 5 0 P R I N T " Y O U S P E L L E D T H E S T A T E W R O N G ! "1 2 7 6 0 R E T U R N

H O T U S E S U B R O U T I N E

M a n y t i m e s b u s i n e s s p r o g r a m s h a v e f e a t u r e s t h a t m a k e t h e me a s i e r t o u s e . T h e s e f e a t u r e s i n c l u d e a l l o w i n g v a r i e t y o f u s e ri n p u t s t o s p e c i f i c q u e s t i o n s . I n s t e a d o r e q u i r i n g u s e r t m e m or i z e t h c o r r e c t a b b r e v i a t i o n s f o t h s t a t e s , p r o g r a m c o u l d a l l o we n t e r i n g t h s t a t e n a m e a n s u p p l y t h a b b r e v i a t i o n s a u t o m a t i c a l l y .

W i t h t h i s s u b r o u t i n e , u s e r s c a e n t e r t h w h o l e s t a t e n a m e ,a n t h e r o u t i n e w i l l s u p p l y p r o p e r p o s t a l a b b r e v i a t i o n s f o a n o t h 5 s t a t e s a n t h D i s t r i c t o C o l u m b i a . I w i l l a l s o a c c e p t N D a k o t a a w e l l a s N o r t h D a k o t a .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 4 0 - 3 7 0 : D A T A l i n e s w i t h t h n a m e s a n a b b r e v i at i o n s f o t h s t a t e s a n W a s h i n g t o n , D . C .

L i n e 3 9 0 : D I M e n s i o n a n a r r a y t s t o r e t h s t a t e n a m e s i o n c o l u m n a n t h e c o r r e s p o n d i n g a b b r e v i a t i o n i t h s e c o n d c o l u m n .

Page 77: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 77/290

B u s i n e s s a n F i n a n c i a l 5

L i n e s 4 0 0 - 4 4 0 : R e a d t h s t a t e n a m e s i n t o t h t w o - d i m e n s i o n a la r r a y .

L i n e 4 5 0 : R e q u e s t s t a t e n a m e .L i n e 4 6 0 : A c c e s s t h e s u b r o u t i n e .L i n e 4 7 0 : I n m a t c h w a f o u n d , s k i p n e x t l i n e .L i n e 4 8 0 : D i s p l a y r e s u l t .L i n e 1 2 6 1 0 : N u l l t h t e m p o r a r y s t r i n g , T E M P $ .L i n e 1 2 6 2 0 : B e g i n l o o p f r o m t t h l e n g t h o t h n a m e o

t h s t a t e t y p e d i n L i n e 1 2 6 3 0 : S t o r e i v a r i a b l e B t h s i n g l e c h a r a c t e r s t r i n g

t a k e n f r o m t h m i d d l e o S T A T E $ a t p o s i t i o n N L i n e 1 2 6 4 0 : F i n d A S C I I v a l u e o t h a t s t r i n g .L i n e 1 2 6 5 0 : I t h a t v a l u e i h i g h e r t h a n 1 9 a n l e s s t h a n2 1 9 , t h e n t h e c h a r a c t e r i l o w e r c a s e . C h a n g e t u p p e r c a s e b

s u b t r a c t i n g 1 2 8 . A l o t h e r c h a r a c t e r s l e f t u n c h a n g e d .L i n e 1 2 6 6 0 : A d C H R $ ( B ) t T E M P $ .L i n e 1 2 6 7 0 : L o o p t h r o u g h a l c h a r a c t e r s i S T A T E $ , c h a n g

i n a n l o w e r c a s e t u p p e r c a s e .L i n e 1 2 6 8 0 : C h a n g e S T A T E $ t e q u a l T E M P $ .L i n e 1 2 6 9 0 - 1 2 7 1 0 : L o o k f o a b b r e v i a t i o n s o N o r t h , S o u t h ,

a n W e s t . C h a n g e t f u l l w o r d i f o u n d .L i n e s 1 2 7 2 0 - 1 2 7 4 0 : C h e c k S T A T E $ a g a i n s t l i s t o s t a t e n a m e s

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

L i n e 1 2 7 5 0 : I n m a t c h f o u n d , i n f o r m u s e r t h a t s t a t e i s p e l l e d w r o n g , a n r e t u r n .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : B u i l d m o r e s o p h i s t i c a t e d e r r o rt r a p f o w h e n t h s t a t e n a m e i s p e l l e d w r o n g . S u b r o u t i n e c o u l dl o o k a o n l y t h f i r s t f o u r o r f i v e c h a r a c t e r s o t h s t a t e n a m e , t a l l o w f o m i s s p e l l i n g s . Y o w o u l d h a v e t a l l o w f o s t a t e s t h a ts t a r t w i t h t h s a m e c h a r a c t e r s , s u c h a N o r t h D a k o t a a n d N o r t h

Page 78: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 78/290

6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

C a r o l i n a . A i i w r i t t e n , w h e n n m a t c h i f o u n d , r o u t i n e r t u r n s t m a i n p r o g r a m w i t h a v a l u e f o e q u a l t 5 1 I n o t h e rw o r d s , m i s m a t c h p r o v i d e s a a b b r e v i a t i o n o W ( W y o m i n g ) .R E S U L T

S t a t e n a m e c h a n g e d t a b b r e v i a t i o n .

S A M P L E V A L U E S : O h i o , O H N C a r o l i n a , N C S o u t h D a k o t a , S

S E Q U E N T I A L D A T A F I L E Sf i l e i a n c o l l e c t i o n o i n f o r m a t i o n t h a t i s t o r e d o d i s k o r

t a p e . C o m p u t e r s o f t w a r e i t y p e o f i l e c a l l e d p r o g r a m f i l e . O y o u r d i s k , t h e s e f i l e s a r m a r k e d w i t h t h P R d e s i g n a t i o n i t h d i r e c t o r y . S u c h f i l e s c a b e l o a d e d b t h C o m m o d o r e 1 2 a n c a p r o v i d e t h e B A S I C i n t e r p r e t e r w i t h i n s t r u c t i o n s t h a t c a b u s e dt p e r f o r m t a s k .

R a i n f o r m a t i o n c a a l s o b s t o r e d a s f i l e , e v e n t h o u g h t h c o m p u t e r c a n n o t l o a d i a n a c o i d i r e c t l y . T h e s e d a t a f i l e sm u s t u s u a l l y b l o a d e d i n t o m e m o r y t h r o u g h a n o t h e r p r o g r a m o s u b r o u t i n e w h i c h c o n t a i n s t h e a c t u a l i n s t r u c t i o n s f o a c c e s s i n gt h i n f o r m a t i o n . T h e s e f i l e s a r i n e i t h e r s e r i a l , o s e q u e n t i a l ,f o r m ( a n d m a r k e d S E i t h d i s k d i r e c t o r y ) o i r a n d o m a c c e s sf o r m a t ( m a r k e d R E L ) . T h l a t t e r , r e l a t i v e f i l e s , a r b e y o n d t h s c o p e o t h i s b o o k . F o s i m p l e B A S I C p r o g r a m s , s e q u e n t i a l d a t af i l e s a r e a d e q u a t e .

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

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

s i n g l e t r a c k , t h d i s k d r i v e w i l l o f t e n c o n t i n u e o d i f f e r e n t

Page 79: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 79/290

B u s i n e s s a n F i n a n c i a l 6

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

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

T h d i s a d v a n t a g e o s e q u e n t i a l f i l e s i t h a t , s i n c e t h e y m u s ta l w a y s b r e a d f r o m b e g i n n i n g t e n d , t h e r e i n w a t a c c e s st h i n f o r m a t i o n i t h m i d d l e w i t h o u t r e a d i n g e v e r y t h i n g t h a th a c o m e f i r s t . A l t h o u g h y o u m a A P P E N D n e i n f o r m a t i o n t t h e n o s e q u e n t i a l f i l e , t m a k e c h a n g e i t h m i d d l e i i n e c e s s a r y t r e a d i t h e n t i r e f i l e , m a k e t h c h a n g e i t h m i d d l e , a n t h e n w r i t e t h e w h o l e f i l e b a c k o u t d i s k .

D a t a f i l e s a r o n o t h b a s i c t o o l s o b u s i n e s s a n p e r s o n a lp r o g r a m m i n g , a t h e y l e y o k e e p p e r m a n e n t r e c o r d s t h a t c a b a c c e s s e d , p r i n t e d o u t , m a n i p u l a t e d , a n o t h e r w i s e u s e d i p r a ct i c a l m a n n e r . D a t a f i l e s a r a k i n t p r o g r a m s i t h a t , l a c k i n gs o m e m a s s s t o r a g e f o t h d a t a ( o p r o g r a m ) , y o w o u l d h a v e t t y p e t h i n f o r m a t i o n i e v e r y t i m e y o t u r n e d o t h c o m p u t e r .I m a n y w a y s , h o w e v e r , c o m p u t e r p r o g r a m i m o r e c o m p l ic a t e d f i l e . P r o g r a m s h a v e l i n e n u m b e r s a n l i n k s t h a t t e l l t h c o m p u t e r w h e r e t h n e x t l i n e n u m b e r i s D a t a f i l e s c o n s i s t o f j u s ta A S C I I r e p r e s e n t a t i o n o t h i n f o r m a t i o n a i w a w r i t t e n t t h d i s k o t a p e ; t h e y a r w o r d s , n u m b e r s , a n p u n c t u a t i o n , a n a l m o s t n o t h i n g m o r e .

T r e a d a g i v e n d a t a f i l e , y o f i r s t O P E N c h a n n e l f o t h a ti n f o r m a t i o n t b s e n t . T h e n , y o I N P U T # ( w i t h t h b e i n gf o l l o w e d b t h n u m b e r y o u h a v e a s s i g n e d t t h i n p u t c h a n n e l ,e . g . , I N P U T # 1 ) d a t a t v a r i a b l e o y o u r c h o i c e . W r i t i n g t d i s k o t a p e f i l e i d o n e b O P E N i n g a c h a n n e l f o o u t p u t a n u s i n g t h P R I N T # s t a t e m e n t t p r i n t i n f o r m a t i o n f r o m v a r ia b l e t t h f i l e .

T h e l p y o u r C o m m o d o r e 1 2 k e e p i t s f i l e s a n t h d e v i c e s i u s e s s t r a i g h t , e a c h o t h d e v i c e s h a b e e n a s s i g n e d d e v i c en u m b e r . T h k e y b o a r d i d e v i c e n u m b e r 0 t h c a s s e t t e t a p er e c o r d e r d e v i c e n u m b e r 1 t h s c r e e n d e v i c e n u m b e r 3 a n s

Page 80: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 80/290

6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

f o r t h . s e r i a l p r i n t e r i a s s i g n e d d e v i c e n u m b e r 4 a n t h f i r s td i s k d r i v e i s y s t e m i u s u a l l y a s s i g n e d d e v i c e n u m b e r 8

S o b s i m p l y s u b s t i t u t i n g o n d e v i c e n u m b e r f o a n o t h e r ,y o c a d i r e c t f i l e s t w h e r e y o d e s i r e , w i t h i n l i m i t s . F o e x a mp l e , t S A V E p r o g r a m t o c a s s e t t e , y o c a t y p e :

S A V E " f i l e n a m e " , 1

I n d e v i c e n u m b e r i i n d i c a t e d , t h c o m p u t e r a s s u m e s y o um e a n d e v i c e n u m b e r 1 t h d e f a u l t v a l u e . T h a t i w h y o u rc a s s e t t e S A V E s d n o i n c l u d e t h n u m e r a l o n e . T S A V E t h s a m e p r o g r a m t o d i s k , d e v i c e n u m b e r 8 y o w o u l d t y p e :

S A V E " f i l e n a m e " , 8

U s i n g n u m e r a l i n s t e a d w o u l d s e n d t h f i l e t t h p r i n t e r .L o g i c a l l y , y o c o u l d e v e n l i s t p r o g r a m t t h e s c r e e n b S A V E " f i l e n a m e " , 3 , e x c e p t t h a t t h C o m m o d o r e 1 2 d e f i n e s t h s c r e e n , a s w e l l a s c e r t a i n o t h e r d e v i c e s , a " i l l o g i c a l " w h e n u s e dw i t h c e r t a i n c o m m a n d s , s u c h a S A V E . H o w e v e r , a n o t h e r c o m a n d i a v a i l a b l e i B A S I C , t h a t o " C M D " , w h i c h r e d i r e c t so u t p u t i n t e n d e d f o t h e s c r e e n t a n o t h e r d e v i c e . T y p i n g C M D 4 :L I S T w i l l c a u s e p r o g r a m t b l i s t e d o t h p r i n t e r i n s t e a d o t h s c r e e n , a s s u m i n g y o u h a v e O P E N e d t h a t d e v i c e f i r s t . A s w a sm e n t i o n e d , i i u s u a l l y n e c e s s a r y t o p e n d a t a " c h a n n e l " t s e n d i n f o r m a t i o n f r o m o n d e v i c e t a n o t h e r . T h i s i d o n e w i t ht h O P E N c o m m a n d .

I s o m e o t h i s i n f o r m a t i o n s e e m s u n f a m i l i a r t y o u , t h r e a s o n i t h a t C o m m o d o r e a d d e d n u m b e r o n e c o m m a n d s t B A S I C 7 . t h a t t a k e c a r e o m u c h o t h i s c h a n n e l - h a n d l i n g a u t om a t i c a l l y . W h i l e y o u m a t y p e S A V E " f i l e n a m e " , 8 , j u s t u s i n g t h D S A V E c o m m a n d i n s t e a d a c c o m p l i s h e s t h s a m e t h i n g . U n d e rs t a n d i n g h o t h C o m m o d o r e 1 2 s e e s t h e s e c h a n n e l s , d e v i c e s ,a n w h a t a r c a l l e d s e c o n d a r y a d d r e s s e s c a n b e u s e f u l f o a v a n c e d p r o g r a m m i n g .

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

Page 81: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 81/290

B u s i n e s s a n F i n a n c i a l 6 3

i m p o r t a n t . H o w e v e r , a g i v e n c h a n n e l c a b e u s e d o n l y t s e n di n f o r m a t i o n t o n d e v i c e a t i m e . T m a k e t h d a t a c h a n n e l se a s y t k e e p t r a c k o f , i t i o f t e n c o n v e n i e n t t g i v e t h e m t h s a m en u m b e r a t h e d e v i c e y o a r u s i n g . S o t o p e n c a s s e t t e d a t af i l e , y o u m i g h t t y p e :

O P E N 1 , 1 , 1 , " f i l e n a m e "

T h f i r s t i t h n u m b e r o t h d a t a c h a n n e l o r a i i a l s oc a l l e d , t h l o g i c a l f i l e n u m b e r . T h s e c o n d i t h d e v i c e n u m b e ro t h c a s s e t t e t a p e . T h t h i r d i r e f e r r e d t a t h s e c o n d a r ya d d r e s s , a i n s t r u c t i o n t t h c o m p u t e r o w h a t t d w i t h t h d a t a . I t h i s c a s e , " 1 m e a n s t w r i t e t h e d a t a .Y o c o u l d j u s t a e a s i l y h a v e u s e d :

O P E N 2 , 1 , 1 , " f i l e n a m e "

T h i s w o u l d m e a n t h a t l o g i c a l f i l e o d a t a c h a n n e l n u m b e rw a b e i n g u s e d w i t h d e v i c e n u m b e r 1 t p e r f o r m t a s k n u m b e r( w r i t e ) , w i t h t h f i l e n a m e w i t h i n q u o t e s . H o w e v e r , h e r e w w i l lf o l l o w t h c o n v e n t i o n o u s i n g t h s a m e l o g i c a l f i l e n u m b e r a s t h ed e v i c e n u m b e r . I C o m m o d o r e 1 2 m o d e ( b u t n o C o m m o d o r e 6 m o d e ) y o m a u s t h D O P E N c o m m a n d , w i t h i t s l i g h t l y d i f f e re n s y n t a x , a s o u t l i n e d i t h S y s t e m G u i d e .

W h a t a b o u t t h s e c o n d a r y a d d r e s s n u m b e r ? W h a t o t h e r o t i o n s a r e a v a i l a b l e ? F o t a p e u s a g e , t h e r e a r e t w m o r e . Y o m a s p e c i f y " 0 " , w h i c h s i g n i f i e s r e a d i n g f i l e f r o m t h t a p e , o " 2 " ,w h i c h w i l l o p e n t h c h a n n e l f o w r i t i n g t t h t a p e b u p l a c e ss p e c i a l " e n d - o f - t a p e " m a r k e r a t h e n o t h f i l e . I r e a d i n g t h a tf i l e , t h C o m m o d o r e 1 2 w i l l p r o g r e s s n f u r t h e r u n t i l t h E O m a r k e r i r e m o v e d .

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

Y o m a h a v e g u e s s e d t h a t S A V E a n L O A D a r m o d i f i e df o r m s o t h O P E N c o m m a n d , w h i c h c o m b i n e O P E N w i t h P R I N To I N P U T i o n s t a t e m e n t . S i n c e t h a t i t r u e , t h s e c o n d a r y

Page 82: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 82/290

6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

S A V E " f i l e n a m e " , 1 , 2

T h i s w r i t e s t h e p r o g r a m t d e v i c e n u m b e r ( t h e c a s s e t t er e c o r d e r ) a n p l a c e s a e n d - o f - t a p e m a r k e r a f t e r i t T h n u m b e r sh a v e s l i g h t l y d i f f e r e n t m e a n i n g w h e n l o a d i n g p r o g r a m f r o mt h t a p e .

T l o a d t h f i l e b a c k i n t o t h m e m o r y l o c a t i o n f r o m w h i c h i w a S A V E d , e n t e r :

L O A D " f i l e n a m e " l , l l

D i s k f i l e s u s t h s a m e f o r m a t , w i t h d e v i c e n u m b e r 8 t h d i s k d r i v e , s u b s t i t u t i n g f o t h 1 t h c a s s e t t e d r i v e . D i s k d r i v eu s e r s c a a l s o f o l l o w t h f i l e n a m e w i t h f i l e t y p e s p e c i f i e r ,g e n e r a l l y " S " ( f o r s e q u e n t i a l ) o r " P ( f o r p r o g r a m ) . Y o a l s o n e e dt t e l l t h d i s k d r i v e i w h i c h d i r e c t i o n t h i n f o r m a t i o n w i l l f l o w ,u s i n g " W f o w r i t e a n " R f o r e a d .

T h u s , a s e q u e n t i a l d i s k w r i t i n g O P E N s t a t e m e n t m i g h t b e

O P E N 8 , 8 , 8 , " O : f i l e n a m e , S , W "

T h e q u i v a l e n t r e a d s t a t e m e n t w o u l d b e

O P E N 8 , 8 , 8 , " 0 : f i l e n a m e , S , R

T h f o l l o w i n g s e q u e n t i a l d i s k w r i t e a n r e a d p r o g r a m s p r v i d e b o t h t h o l d e r s t y l e O P E N s t a t e m e n t s d e s c r i b e d a b o v e , a n t h D O P E N e q u i v a l e n t s . Y o w i l l n e e d t u n d e r s t a n d b o t h i y o w a n t t m a s t e r B A S I C 7 . 0 .

N O T E : T h C o m m o d o r e 1 2 a l s o c a u s r a n d o m a c c e s s f i l e s ,w h e n u p d a t e s t f i l e a r f r e q u e n t , a n r e l a t i v e f i l e s , w h i c h a r n o t y e t w i d e l y u s e d . B o t h t y p e s o f i l e s a l l o w a c c e s s i n g a n g i v e nr e c o r d w i t h i n f i l e , f o e i t h e r r e a d i n g o r w r i t i n g , w h i l e i g n o r i n g

Page 83: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 83/290

B u s i n e s s a n F i n a n c i a l 6

t h r e s t o t h f i l e . R a n d o m f i l e s a r m u c h f a s t e r t h a n s e q u e n t i a lf i l e s , b e c a u s e o n l y a s m a l l b i o i n f o r m a t i o n n e e d s t b r e a d i n t om e m o r y a t i m e . H o w e v e r , t h e i r u s i m u c h m o r e c o m p l e x , a n t o a m b i t i o u s f o t h i s c o l l e c t i o n o f s u b r o u t i n e s .

S E Q U E N T I A L F I L E — W R I T E T D I S KW H A T I D O E S : W r i t e s s e q u e n t i a l d a t a f i l e t d i s k .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E S E Q U E N T I A L F I L E1 3 R E W R I T E T O D I S K1 4 R E 1 5 R E * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E + V A R I A B L E S + 1 8 R E S U P P L I E D B U S E R1 9 R E D A T A I A R R A Y D T A $ ( N I )2 0 R E M A F I L E N A M E I L I N E 1 2 8 1 02 1 R E N I N U M B E R O F I T E M S I F I L E2 2 R E M R E S U L T2 3 R E M A R R A Y D T A $ ( N I ) W R I T T E N T D I S K2 4 R E 2 5 R E N O T E : E I T H E R L I N E 1 2 8 1 0 O 1 2 8 2 02 6 0 R E M M A B U S E D2 7 R E 2 8 R E * * I N I T I A L I Z E * * 2 9 N I = 1 03 0 D I M D T A $ ( N I )3 1 G O S U B 1 2 8 1 03 2 E N 1 2 8 0 0 R E M * * S U B R O U T I N E * * 1 2 8 1 0 R E M O P E N 8 , 8 , 8 , " 0 : F I L E N A M E , S , W "1 2 8 2 0 D O P E N # 8 , " F I L E N A M E , S " , D O , W1 2 8 3 0 P R I N T # 8 , N I1 2 8 4 0 F O N = T N 1 2 8 5 0 P R I N T # 8 , D T A $ ( N )1 2 8 6 0 N E X T1 2 8 7 0 D C L O S E #

Page 84: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 84/290

6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

D i s k u s e r s c a a c c e s s s e q u e n t i a l , r a n d o m a c c e s s , a n r e l a t i v ef i l e s . S e q u e n t i a l f i l e s a r e t h e m o s t p o p u l a r b e c a u s e t h e y a r e a s i e s t t u n d e r s t a n d . W i t h d i s k , s u c h f i l e s a r e v e n r e s p e c t a b l yf a s t . E x p l a i n i n g r a n d o m a c c e s s a n r e l a t i v e f i l e s i t a s k r e q u i ri n m a n y c h a n g e s a n i b e y o n d t h s c o p e o t h i s b o o k .

H o w e v e r , t h i s s u b r o u t i n e p r o v i d e s s a m p l e s e q u e n t i a l f i l e -w r i t i n g r o u t i n e t h a t w i l l t a k e d a t a t h a t h a v e b e e n l o a d e d i n t os t r i n g a r r a y , D T A $ ( n ) , a n w r i t e t h e m t o d i s k . T h s a m e r o u t i n ec a b e u s e d w i t h n u m e r i c a r r a y s , s i m p l y b y o u r r e m o v i n g t h v a r i a b l e t y p e s p e c i f i e r , " $ " , f r o m D T A $ ( n ) .

Y o u r p r o g r a m s h o u l d a l s o u p d a t e N e a c h t i m e m o r e i t e m sa r a d d e d t t h a r r a y .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 9 0 : S e n u m b e r o i t e m s i f i l e t o 1 0 .L i n e 3 0 0 : D I M e n s i o n D T A $ t N e l e m e n t s .L i n e 3 1 0 : A c c e s s t h s u b r o u t i n e .L i n e s 1 2 8 1 0 - 1 2 8 2 0 : O P E N t h d a t a f i l e , g i v e n t h f i l e n a m e

i q u o t e s . Y o c a s u b s t i t u t e y o u r o w f i l e n a m e , o v a r i a b l e ,l i k e F $ a n t h e n d e f i n e F t h r o u g h u s e r I N P U T .L i n e 1 2 8 3 0 : P r i n t , a s t h e f i r s t i t e m i t h d a t a f i l e , t h

n u m b e r o i t e m s i t h f i l e , N I L i n e s 1 2 8 4 0 - 1 2 8 6 0 : P R I N T e a c h o t h i t e m s i t h e a r r a y t

t h d a t a f i l e .L i n e 1 2 8 7 0 : C L O S E t h f i l e .

Y O S U P P L Y

Y o u r p r o g r a m m u s t f u r n i s h d a t a f o D T A $ ( n ) , e i t h e r f r o mk e y b o a r d e n t r y o l o a d e d f r o m s o m e t a p e o d i s k f i l e . T h c o u n t e rN s h o u l d b r e d e f i n e d t r e f l e c t t h n u m b e r o i t e m s i t h f i l ee a c h t i m e a u p d a t e i m a d e . Y o s h o u l d s u b s t i t u t e y o u r f i l en a m e f o " f i l e n a m e " i l i n e 1 2 8 1 0 o 1 2 8 2 0 .

Page 85: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 85/290

B u s i n e s s a n F i n a n c i a l 6

S U G G E S T E D E N H A N C E M E N T S : Y o u c a w r i t e p r o g r a m t h a t d o e sn o n e e d t p r i n t t h n u m b e r o i t e m s t t h d i s k . W o r k i c o n j u n c t i o n w i t h t h n e x t s u b r o u t i n e , R e a d f r o m D i s k .

R E S U L T

D a t a f i l e w r i t t e n t o d i s k .

S A M P L E V A L U E : N o n e

S E Q U E N T I A L F I L E — R E A D F R O M D I S KW H A T I D O E S : R e a d s s e q u e n t i a l d a t a f i l e f r o m d i s k .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E S E Q U E N T I A L F I L E1 3 R E R E A D F R O M D I S K1 4 R E 1 5 R E * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E + V A R I A B L E S + 1 8 R E S U P P L I E D B U S E R1 9 R E D A T A F I L E2 0 R E F I L E N A M E I L I N E 1 2 9 1 02 1 R E A D N U M B E R O E M P T Y S P A C E S T A D 2 2 0 R E M N I N U M B E R O F I T E M S I F I L E2 3 R E M R E S U L T2 4 0 R E M D T A $ ( N ) : A R R A Y S T O R I N G F I L E2 5 R E N I N U M B E R O F I T E M S I T H F I L E2 6 R E 2 7 R E N O T E : E I T H E R L I N E 1 2 9 1 0 O 1 2 9 2 02 8 R E M M A Y B U S E D2 9 R E 3 0 R E * * I N I T I A L I Z E * * 3 1 A D = 1 03 2 G O S U B 1 2 9 1 03 3 F O N = T N 3 4 P R I N T D T A $ ( N )3 5 N E X T3 6 E N

Page 86: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 86/290

6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 2 9 0 0 R E M * * S U B R O U T I N E * * 1 2 9 1 0 R E M O P E N 8 , 8 , 8 , " 0 : F I L E N A M E , S , R "1 2 9 2 0 D O P E N # 8 , " F I L E N A M E , S " , D O , R1 2 9 3 0 I N P U T # 8 , N I1 2 9 4 0 D I D T A $ ( N I + A D )1 2 9 5 0 F O N = T N 1 2 9 6 0 I N P U T # 8 , D T A $ ( N )1 2 9 7 0 N E X T1 2 9 8 0 D C L O S E # 1 2 9 9 0 R E T U R N

H O T U S S U B R O U T I N E

T h i s s u b r o u t i n e p r o v i d e s s a m p l e f i l e r e a d i n g r o u t i n e t h a tw i l l t a k e d a t a t h a t h a b e e n w r i t t e n t d i s k a n l o a d i i n t os t r i n g a r r a y , D T A $ ( n ) . T h e s a m e r o u t i n e c a b u s e d w i t h n m e r i c a r r a y s , s i m p l y b y o u r r e m o v i n g t h v a r i a b l e t y p e s p e c if i e r , " $ " , f r o m D T A $ ( n ) .

T h r o u t i n e w i l l f i r s t r e a d N I t h n u m b e r o i t e m s i t h f i l e ,f r o m t h d i s k . T h e n , t h a r r a y i D I M e n s i o n e d t N A D T h i sw i l l a l l o w A m o r e e l e m e n t s i t h a r r a y f o e x p a n s i o n d u r i n gt h s e s s i o n .

N O T E : Y o c a n n o t r e D I M e n s i o n t h a r r a y w i t h o u t g e n e r a t i n ga e r r o r . A s h o u l d b d e f i n e d l a r g e e n o u g h t a l l o w p l e n t y o s p a c e f o a d d i t i o n s d u r i n g a n o n s e s s i o n . Y o u r p r o g r a m s h o u l da l s o u p d a t e N t e q u a l N A b e f o r e w r i t i n g b a c k t o d i s k , i y o u s t h W r i t e R o u t i n e s u p p l i e d w i t h t h i s b o o k .

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 3 1 0 : D e f i n e t h m a x i m u m n u m b e r o i t e m s t b a d d e di a n s e s s i o n . I y o w i s h , y o c a m a k e t h i s n u m b e r v e r y l a r g et a l l o w f o l e n g t h y i n p u t s e c t i o n s . K e e p i n g i s m a l l , a n t h e nh a v i n g y o u r p r o g r a m p r o m p t t h u s e r t c l o s e t h f i l e o n c e t h l i m i t h a b e e n r e a c h e d , i w a o a u t o m a t i c a l l y p r o t e c t i n g y o u rd a t a f r o m l o s s e s d u t p o w e r o u t a g e s . W i t h s e q u e n t i a l f i l e s ,u p d a t e s a r s t o r e d i m e m o r y u n t i l w r i t t e n t o d i s k , s l e n g t h y

Page 87: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 87/290

B u s i n e s s a n F i n a n c i a l 6

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

L i n e 3 2 0 : A c c e s s t h s u b r o u t i n e .L i n e s 3 3 0 - 3 6 0 : P r i n t t h e i n f o r m a t i o n r e a d f r o m d i s k t t h

s c r e e n .L i n e s 1 2 9 1 0 - 1 2 9 2 0 : O p e n t h s e q u e n t i a l f i l e . S u b s t i t u t e y o u r

f i l e n a m e i t h e s e l i n e s , a d e s c r i b e d i t h l a s t s u b r o u t i n e .L i n e 1 2 9 3 0 : R e a d f r o m d i s k t h e c u r r e n t n u m b e r o i t e m s i

t h f i l e . Y o m a a l s o s i m p l y r e a d f r o m t h e d i s k u n t i l t h S ( s t a t u s ) v a r i a b l e i n d i c a t e s t h a t t h e e n o f i l e m a r k e r h a b e e nr e a c h e d .

A i s t h p r o g r a m w i l l r e a d t h n u m b e r o i t e m s a n t h e nb e g i n t h f o l l o w i n g F O R - N E X T l o o p .L i n e 1 2 9 4 0 : D I M e n s i o n a a r r a y l a r g e e n o u g h f o N i t e m s ,p l u s A t b a d d e d .

L i n e s 1 2 9 5 0 - 1 2 9 8 0 : R e a d a l i t e m s i t h f i l e i n t o t h a r r a y .

S U G G E S T E D E N H A N C E M E N T S : E l i m i n a t e t h n e e d f o r e a d i n g N b u r e d u c e t h c h a n c e o f l o s i n g d a t a t h r o u g h e r r o r o r p o w e r l o s s .C o n s i d e r w r i t i n g f i l e t d i s k d u r i n g a i n p u t s e s s i o n .

R E S U L T

D a t a f i l e r e a d f r o m d i s k .

S A M P L E V A L U E . N o n e

Page 88: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 88/290

Page 89: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 89/290

B O M B P R O O FD A T A I N P U T

D a t a e n t r y m a s o u n d l i k e f o r b i d d i n g c o m p u t e r t e r m , b u i r e f e r s o n l y t t h p r o c e s s o g e t t i n g n e i n f o r m a t i o n i n t o t h c o m p u t e r . Y o u r p r o g r a m s m a a s u s e r s q u e s t i o n s l i k e , " W H A TI Y O U R N A M E ? " o " W H A T I T H L O A N I N T E R E S T R A T E ? "T h i s i n f o r m a t i o n w i l l b r e q u i r e d b t h p r o g r a m i o r d e r t c o m p l e t e i t f u n c t i o n s s u c c e s s f u l l y , s o n a t u r a l l y y o w i l l w a n t t h i n f o r m a t i o n t b a s a c c u r a t e a s p o s s i b l e .

H e r e a r s o m e B A S I C r o u t i n e s t h a t w i l l s t r e a m l i n e t h s t e po e n t e r i n g d a t a a n m a k e y o u r p r o g r a m m i n g b i t e a s i e r . T h e s ea r g e n e r a l s u b r o u t i n e s t h a t c a b a p p l i e d t m a n y d i f f e r e n tp r o g r a m s . T h m o d u l e s a r " u s e r - i n t e r f a c e " r o u t i n e s t h a t t r a p

7

Page 90: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 90/290

7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

e r r o r s b p e r m i t t i n g t h e o p e r a t o r t e n t e r O N L Y t h e t y p e o i n p u t t h a t i r e q u i r e d b t h p r o g r a m . I o n l y n u m b e r s o o n l ya l p h a c h a r a c t e r s a r e d e s i r e d , t h a t i w h a t t h r o u t i n e s w i l l a c e p t . A n o t h e r r o u t i n e a c c e p t s e i t h e r l o w e r c a s e o u p p e r c a s e e t r i e s a n c o n v e r t s t h l o w e r c a s e c h a r a c t e r s t u p p e r . W i t hC o m m o d o r e c o m p u t e r s u p p e r c a s e / l o w e r c a s e i a i n t e r e s t i n g c o c e r n , b e c a u s e t h e n t i r e k e y b o a r d c a b t o g g l e d b e t w e e nu p p e r c a s e - o n l y / g r a p h i c s a n u p p e r c a s e / l o w e r c a s e b t h u s e r ' sp r e s s i n g t h S h i f t k e a n C o m m o d o r e k e s i m u l t a n e o u s l y . Y o u rr o u t i n e s m a h a v e t t a k e t h i s d u a l m o d e i n t o a c c o u n t i a c c e p ti n d a t a f r o m t h k e y b o a r d .

A n o t h e r d a t a e n t r y r o u t i n e i t h L i n e I n p u t m o d u l e . T h i sr o u t i n e , s i m u l a t i n g f u n c t i o n f o u n d i s o m e o t h e r B A S I C s , a l o w s t h e u s e r t e n t e r a n y t h i n g i n t o s t r i n g , i n c l u d i n g c o m m a sa n o t h e r s o - c a l l e d s t r i n g " d e l i m i t e r s . " N o r m a l l y , I N P U T w i l lp e r m i t t h u s e r t e n t e r a l p h a c h a r a c t e r s a n n u m b e r s b u w i l l" c h o k e " o c o m m a s , q u o t a t i o n m a r k s , a n o t h e r c h a r a c t e r s t h a tB A S I C n o r m a l l y u s e s t m a r k t h e n o s t r i n g . T h L i n e I n p u tr o u t i n e h e r e a c c e p t s c h a r a c t e r a t i m e u s i n g G E T K E Y , a n b u i l d s s t r i n g u n t i l R E T U R N i p r e s s e d .

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

L I N E I N P U TW H A T I D O E S : S i m u l a t e s L I N E I N P U T f u n c t i o n f o u n d i o t h e rB A S I C s . A l l o w s e n t e r i n g s t r i n g d e l i m i t e r s i n t o s t r i n g s .

L E V E L : N o v i c e1 0 R E * * * * * * * * * * * * * *1 1 R E * 1 2 R E L I N E I N P U T1 3 R E * 1 4 R E * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R

Page 91: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 91/290

B o m b p r o o f D a t a I n p u t 7

1 8 R E K E Y B O A R D I N P U T1 9 R E M P R O M P T ? : P R O M P T C H A R A C T E R2 0 R E R E S U L T2 1 R E A N $ : I N P U T R E T U R N E D2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 P R O M P T $ = M ? M2 5 G O S U B 1 3 0 1 02 6 P R I N T2 7 P R I N T A N 2 8 E N 1 . 3 0 0 0 R E * * S U B R O U T I N E * * 1 3 0 1 0 A N I I M : P R I N T P R O M P T ? ;1 3 0 2 0 D W H I L E A $ O C H R $ ( 1 3 )1 3 0 3 0 G E T K E Y A 1 3 0 4 0 A N $ = A N $ + A $1 3 0 5 0 P R I N T A $ 1 3 0 6 0 L O O P1 3 0 7 0 R E T U R N

H O T U S S U B R O U T I N E

I y o a s t h e u s e r o p r o g r a m t e n t e r s t r i n g a n i c o m m a o o t h e r c h a r a c t e r s u c h a q u o t a t i o n m a r k i e n t e r e d i t h b o d y o t h s t r i n g , t h e x t r a c h a r a c t e r i i g n o r e d . T h e s ec h a r a c t e r s t h a t a r e i g n o r e d d u r i n g s t r i n g I N P U T a r k n o w n a s t r i n g d e l i m i t e r s . H o w e v e r , s o m e t i m e s i i d e s i r a b l e t a l l o ws u c h i n p u t , a w h e n a e n t i r e p h r a s e o s e n t e n c e i e n t e r e d . S u c h

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

T h i s s u b r o u t i n e w i l l r e p e a t e d l y p o l l t h k e y b o a r d u s i n gG E T K E Y a n a d a n c h a r a c t e r s t A N $ . C o m m a s m a y b e t e r e d a n i n p u t c a b e n d e d o n l y b p r e s s i n g R E T U R N . T h k e y s p r e s s e d a r e p r i n t e d t t h s c r e e n , j u s t a w i t h n o r m a l I P U T , a n q u e s t i o n m a r k p r o m p t i d i s p l a y e d . T t h u s e r , t h c h a n g e i i n v i s i b l e , e x c e p t t h a t s t r i n g d e l i m i t e r s a r a c c e p t e d . I y o w i s h , y o u r p r o g r a m c a l o o k f o s t r i n g d e l i m i t e r s t h a t a r n o w a n t e d i t h e i n p u t a n e l i m i n a t e t h e m .

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

Page 92: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 92/290

7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 4 0 : D e f i n e t h p r o m p t c h a r a c t e r .L i n e 2 5 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 7 0 : P r i n t t h e r e s u l t i n g A N $ .L i n e 1 3 0 1 0 : P r i n t t h e p r o m p t s t r i n g .L i n e 1 3 0 2 0 : S t a r t l o o p w h i l e A d o e s n o e q u a l C H R $ ( 1 3 )

( R E T U R N ) .L i n e 1 3 0 3 0 : G e c h a r a c t e r f r o m k e y b o a r d .L i n e 1 3 0 4 0 : A d i t A N $ .L i n e 1 3 0 5 0 : P r i n t t h e c h a r a c t e r .L i n e 1 3 0 6 0 : L o o p a n r e p e a t .

Y O S U P P L Y

P r o m p t a s k i n g f o i n p u t , d e f i n i t i o n f o P R O M P T $ , a n k e y b o a r d i n p u t .

S U G G E S T E D E N H A N C E M E N T S : F i l t e r o u c h a r a c t e r s t h a t y o d n o w a n t . S e f o l l o w i n g r o u t i n e s f o e x a m p l e s .

R E S U L T

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

S A M P L E V A L U E : N o n e

N U M B E R I N P U TW H A T I D O E S : A l l o w s u s e r t i n p u t o n l y n u m b e r s .

L E V E L : N o v i c e

Page 93: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 93/290

B o m b p r o o f D a t a I n p u t 7

1 0 R E M * * * * * * * * * * * * * * * *1 1 R E 1 2 R E N U M B E R I N P U T1 3 R E 1 4 R E M * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E K E Y B O A R D I N P U T1 9 R E R E S U L T2 0 R E I N U M B E R E N T E R E D2 1 R E 2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 G O S U B 1 3 1 1 02 5 P R I N T " N U M B E R E N T E R E D : " ; I2 6 E N 1 3 1 0 0 R E * * S U B R O U T I N E * * 1 3 1 2 0 1 $ = " "1 3 1 2 0 G E T K E Y A $ : I F A $ = C H R $ ( 1 3 ) G O T O 1 3 2 2 01 3 1 3 0 I M I N U S F L A G = 1 G O T O 1 3 1 5 01 3 1 4 0 I A $ = " - " T H E N M I N U S F L A G = 1 : G O T O 1 3 1 8 01 3 1 5 0 I M A N T I S S A F L A G = 1 G O T O 1 3 1 7 01 3 1 6 0 I A $ = " . " T H E N M A N T I S S A F L A G = 1 : G O T O 1 3 1 8 01 3 1 7 0 I A $ < " 0 " O A $ > " 9 " G O T O 1 3 1 2 01 3 1 8 0 P R I N T A $ 1 3 1 9 0 I $ = I $ + A $ : M I N U S F L A G = 11 3 2 0 0 G O T O 1 3 1 2 01 3 2 1 0 I = V A L ( I $ )1 3 2 2 0 P R I N T : M A N T I S S A F L A G = O : M I N U S F L A G = O : I $ = " "1 3 2 3 0 R E T U R N

H O T U S E S U B R O U T I N E

W e l l - w r i t t e n p r o g r a m s i n c l u d e f e a t u r e s t h a t t r a p p o s s i b l e e r o r s b t h u s e r — o r a v o i d t h e m e n t i r e l y . W h e n n u m b e r s o n l y a r e x p e c t e d f o I N P U T , a e l e g a n t l y c o n s t r u c t e d p r o g r a m w i l l a c e p t o n l y n u m e r i c e n t r i e s a n r e j e c t e v e r y t h i n g e l s e .

T h m o s t c o m m o n p r o c e d u r e s a l h a v e d r a w b a c k s . l i n e l i k e" 1 I N P U T A w i l l l i n d e e d a c c e p t o n l y n u m b e r s . H o w e v e r , i u s e r h a p p e n s t e n t e r s t r i n g i n s t e a d , o n l y c r y p t i c " R E - D OF R O M S T A R T " m e s s a g e w i l l b d i s p l a y e d . T h a t ' s n o m u c h h e l pf o a n a i v e o p e r a t o r .

A n o t h e r l e s s - t h a n - p e r f e c t s o l u t i o n i t u s l i n e l i k e " 1 I N P U T A $ : A V A L ( A $ ) : I F A < G O T O 1 0 " . I t h u s e r e n t e r s a l p h ac h a r a c t e r s , t h p r o g r a m l o o p s b a c k a n t h e i n p u t m u s t b r e p e a t e d .

Page 94: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 94/290

7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

T h i s s u b r o u t i n e t a k e s d i f f e r e n t a p p r o a c h . I t o t a l l y i g n o r e sn o n n u m b e r s ; i t h e o p e r a t o r p r e s s e s a i l l e g a l k e y , i i s n ' t e v e ne c h o e d t t h s c r e e n . T h k e y b o a r d r e s p o n d s o n l y w h e n n u m e r i ck e y s a r p r e s s e d .T h s e c r e t i G E T K E Y l o o p . I t h e u s e r p r e s s e s n u m b e rk e y , t h a t l e t t e r i a d d e d t 1 $ W h e n A e q u a l s C H R $ ( 1 3 ) ,c a r r i a g e r e t u r n , t h e n i n p u t i o v e r . O t h e r w i s e , t h l o o p r e p e a t s ,a l l o w i n g a d d i t i o n a l n u m e r i c e n t r i e s .

W h e n t h e s u b r o u t i n e e n d s , v a r i a b l e w i l l h a v e t h e v a l u e o t h u s e r ' s e n t r y . N e g a t i v e n u m b e r s a r a c c o m m o d a t e d b t h i sm o d u l e , b u t y o c a n n o t e n t e r e q u a t i o n s o n u m b e r s e r i e s s u c ha s 4 + 3 - 4 .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 4 0 - 2 6 0 : A c c e s s t h s u b r o u t i n e a n d i s p l a y r e s u l t .L i n e 1 3 1 1 0 : W a i t f o k e t b p r e s s e d .L i n e 1 3 1 2 0 : I k e w a R E T U R N , t h e n g t e n o t h i s

s u b r o u t i n e .L i n e 1 3 1 3 0 : I M I N U S F L A G = 1 , m e a n i n g t h a t m i n u s s i g n

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

L i n e 1 3 1 4 0 : O t h e r w i s e , i A i m i n u s s i g n , t h e n s e M I N U S F L A G t 1 a n j u m p t w h e r e m i n u s w i l l b a d d e d t t h s t r i n g .

L i n e 1 3 1 5 0 : I M A N T I S S A F L A G = 1 m e a n i n g t h a t a d e c i m a lp o i n t h a a l r e a d y b e e n p r e s s e d o n c e , j u m p t p o r t i o n t h a t c h e c k sf o n o n n u m e r i c e n t r i e s . A i 1 3 1 3 0 , t h i s e n s u r e s t h a t t h e d e c im a p o i n t c a b e n t e r e d o n l y o n c e f o e a c h n u m b e r i n p u t .

L i n e 1 3 1 6 0 : I d e c i m a l p o i n t e n t e r e d , s e M A N T I S S A F L A Gt 1 O n d e c i m a l p o i n t , a n o n l y o n e , m a b e n t e r e d a n y w h e r ew i t h i n t h n u m b e r .L i n e 1 3 1 7 0 : I c h a r a c t e r i n o n u m e r i c a l , i g n o r e i a n r e t u r n f o m o r e i n p u t .

L i n e 1 3 1 8 0 : P r i n t t h e c h a r a c t e r , w h i c h e i t h e r w i l l b n u b e o r i b o t h f l a g s h a b e e n z e r o , m a b e i t h e r m i n u s s i g n o rd e c i m a l p o i n t .

Page 95: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 95/290

B o m b p r o o f D a t a I n p u t 7

L i n e 1 3 1 9 0 : A d t h c h a r a c t e r t t h s t r i n g . C h a n g e M I N U S -F L A G t 1 s t h a t a f t e r t h f i r s t c h a r a c t e r h a b e e n a d d e d t t h s t r i n g , m i n u s s i g n m a n o t e r r o n e o u s l y b p l a c e d i t h m i d d l eo t h s t r i n g .

L i n e 1 3 2 0 0 : R e t u r n f o m o r e i n p u t .L i n e 1 3 2 1 0 : D e t e r m i n e v a l u e o I n u l l v a r i a b l e s , a n r e t u r n

t t h m a i n p r o g r a m .

Y O S U P P L Y

K e y b o a r d i n p u t .

S U G G E S T E D E N H A N C E M E N T S : U s e r m a c h a n g e t h u p p e r a n l o w e r l i m i t s i n l i n e 1 6 t r e s t r i c t t h r a n g e o n u m b e r s t b e n t e r e d . T h i s m i g h t b u s e f u l w h e n g e t t i n g i n p u t f o r , s a y , m e n uw i t h o n l y f i v e c h o i c e s . A l n u m b e r s o v e r f i v e a n a l a l p h a c h a ra c t e r s w o u l d b i g n o r e d . F i l t e r o u a l n u m b e r s t o l a r g e f o t h C o m m o d o r e 1 2 ( a p p r o x i m a t e l y 1 . 9 E 1 9 ) .

R E S U L T

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

S A M P L E V A L U E S : - 1 2 2 2 . 5 4 ; 2 3 4 ; 1 2 9 7 5 5 . 1 7 1 7 1 1

L E T T E R I N P U TW H A T I D O E S : A l l o w s u s e r t i n p u t o n l y a l p h a c h a r a c t e r s .

L E V E L : N o v i c e

Page 96: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 96/290

7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E M * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E L E T T E R I N P U T1 3 R E * 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 0 R E M K E Y B O A R D I N P U T1 9 R E R E S U L T2 0 0 R E M 1 $ S T R I N G E N T E R E D2 1 R E O N L Y U P P E R A N D L O W E R C A S E2 2 R E C H A R A C T E R S A C C E P T E D2 3 R E 2 4 0 R E M N O T E : T O E X C L U D E S P A C E S , T O 2 5 R E D E L E T E L I N E 1 3 6 6 02 6 0 R E M2 7 R E 2 8 0 R E M * * I N I T I A L I Z E * * 2 9 0 G O S U B 1 3 3 1 03 0 P R I N T3 1 P R I N T 1 3 2 E N 1 3 3 0 0 R E * * S U B R O U T I N E * * 1 3 3 1 0 I I M 1 3 3 2 0 G E T K E Y A 1 3 3 3 0 A = A S C ( A $ ) : I F A = 1 3 T H E N R E T U R N1 3 3 4 0 I A > 6 4 A N A < 9 1 G O T O 1 3 3 8 01 3 3 5 0 I A > 1 9 2 A N D A < 2 1 9 G O T O 1 3 3 8 01 3 3 6 0 I A = 3 2 O R A = 1 6 0 G O T O 1 3 3 8 01 3 3 7 0 G O T O 1 3 3 2 01 3 3 8 0 P R I N T A $ 1 3 3 9 0 I $ = I $ + A $1 3 4 0 0 G O T O 1 3 3 2 0

H O T U S S U B R O U T I N E

A t i m e s y o w i l l w a n t o n l y a l p h a c h a r a c t e r s t b i n p u t i p r o g r a m , w i t h a l o t h e r e n t r i e s , s u c h a n u m b e r s o g r a p h i c sc h a r a c t e r s , t b i g n o r e d . F o e x a m p l e , w o r d g a m e s m i g h t a l l o wo n l y t h 2 l e t t e r s A - w h i l e r e j e c t i n g o t h e r k e y s e n t i r e l y .

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

T h s e c r e t i G E T K E Y l o o p . I t h u s e r p r e s s e s l e t t e r k e y ,

Page 97: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 97/290

B o m b p r o o f D a t a I n p u t 7

t h a t l e t t e r i a d d e d t 1 $ W h e n A e q u a l s C H R $ ( 1 3 ) , c a r r i a g er e t u r n , t h e n i n p u t i o v e r . O t h e r w i s e , t h e l o o p r e p e a t s , a l l o w i n ga d d i t i o n a l a l p h a b e t i c e n t r i e s .

W h e n t h e s u b r o u t i n e e n d s , v a r i a b l e 1 w i l l h a v e t h v a l u e o t h u s e r ' s e n t r y .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 9 0 - 3 2 0 ; A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t .L i n e 1 3 3 1 0 : N u l l a n p r e v i o u s v a l u e o 1 $ i c a s e s u b r o u t i n e

h a s b e e n c a l l e d b e f o r e d u r i n g t h i s p r o g r a m r u n .L i n e 1 3 3 2 0 : W a i t f o u s e r e n t r y .L i n e 1 3 3 3 0 : I k e p r e s s e d w a R E T U R N , t h e n i n p u t i f i

i s h e d . I a l s o d e t e r m i n e s A S C I I v a l u e o k e p r e s s e d .L i n e s 1 3 3 4 0 - 1 3 3 9 0 : I k e w a u p p e r c a s e o l o w e r c a s e c h a r

a c t e r o r s p a c e , a d t 1 $ O t h e r w i s e g b a c k f o m o r e e n t r i e s .

Y O S U P P L Y

K e y b o a r d i n p u t .

S U G G E S T E D E N H A N C E M E N T S : U s e r m a c h a n g e t h u p p e r a n l o w e r l i m i t s t r e s t r i c t t h r a n g e o a l p h a c h a r a c t e r s t h a t c a b e n t e r e d . T h i s m i g h t b u s e f u l w h e n g e t t i n g i n p u t f o r , s a y , g a m el i k e M a s t e r m i n d , w h e r e o n l y t h l e t t e r s A - a r w a n t e d . A l n u m b e r s , g r a p h i c s , a n a l p h a c h a r a c t e r s l a r g e r t h a n c a b i g n o r e d . Y o c a a l s o e x p a n d t h a l l o w a b l e c h a r a c t e r s t p e r m i te n t r y o c o m m a s , p e r i o d s , o o t h e r c h a r a c t e r s .

R E S U L T

O n l y u s e r a l p h a i n p u t i a l l o w e d .S A M P L E V A L U E S : T h i s i a l l o w e d ; S I T H I S

Page 98: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 98/290

8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

C A S E C O N V E R T E RW H A T I D O E S : C h a n g e s l o w e r c a s e i n p u t t u p p e r c a s e , a n d u pp e r c a s e t l o w e r .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E C A S E C O N V E R T1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E A $ S T R I N G T C O N V E R T1 9 R E R E S U L T2 0 R E 1 $ C O N V E R T E D S T R I N G2 1 0 R E M2 2 0 R E M N O T E : P R E S S S H I F T A N C 2 3 R E M ( C O M M O D O R E ) K E Y F O R2 4 R E U P P E R A N L O W E R C A S E2 5 0 R E M2 6 R E 2 7 0 R E M * * I N I T I A L I Z E * * 2 8 A $ = " N O W I T H T I M E F O R A L L G O O D M E N "2 9 G O S U B 1 3 5 1 03 0 P R I N T3 1 P R I N T 1 3 2 E N 1 3 5 0 0 R E M * * S U B R O U T I N E * * 1 3 5 1 0 1 $ = " "1 3 5 2 0 F O N = T L E N ( A $ )1 3 5 3 0 A = A S C ( M I D $ ( A $ , N , 1 ) )1 3 5 4 0 I A > 1 9 2 A N A < 2 1 9 T H E N A = A - 1 2 8 : G O T O 1 3 5 6 01 3 5 5 0 I A > 6 4 A N A < 9 1 T H E N A = A + 1 2 81 3 5 6 0 I $ = I $ + C H R $ ( A )1 3 5 7 0 N E X T1 3 5 8 0 R E T U R N

H O T U S S U B R O U T I N E

B e c a u s e t h C o m m o d o r e 1 2 d o e s n o s e " Y E S " a e q u a l t " y e s " , i i o f t e n c o n v e n i e n t t f i l t e r u s e r i n p u t t c h a n g e a l u p p e r c a s e e n t r i e s t l o w e r c a s e , o r v i c e v e r s a . w o r d p r o c e s s i n g

Page 99: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 99/290

B o m b p r o o f D a t a I n p u t 8

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

M a n y t i m e s o u e r r o r t r a p s i p r o g r a m s c h e c k t s e i a a c c e p t a b l e k e h a b e e n p r e s s e d . W m a w a n t t h u s e r t e n t e r" Y o " N a n s w e r s o n l y . O o u p r o g r a m w i l l c h e c k a n a m e o o t h e re n t r y a g a i n s t a l i s t , a w a d o n e w i t h A b b r e v i a t i o n s i t h l a s tc h a p t e r . T h C o m m o d o r e 1 2 p o w e r s u i t h u p p e r c a s e / g r a p h i c sm o d e b u c a b t o g g l e d t t h e u p p e r c a s e / l o w e r c a s e m o d e b t h u s e r ' s p r e s s i n g t h e C o m m o d o r e a n S h i f t k e y s a t h s a m e t i m e .

A w r i t t e n , t h i s p r o g r a m w i l l c h a n g e u p p e r c a s e e n t r i e s t l o w e r c a s e , a n l o w e r c a s e t u p p e r . Y o c a d e l e t e e i t h e r l i n e 1 3 5 3 0o l i n e 1 3 5 4 0 t f o r c e t h r o u t i n e t d o n b u n o t t h e o t h e r .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 0 : D e f i n e s t r i n g t b c o n v e r t e d .L i n e s 2 9 0 - 3 2 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t .L i n e 1 3 5 1 0 : S t a r t l o o p f r o m t t h l e n g t h o t h s t r i n g

b e i n g c o n v e r t e d .L i n e 1 3 5 2 0 : F i n d A S C I I v a l u e o s i n g l e c h a r a c t e r i t h

m i d d l e o t h s t r i n g , a p o s i t i o n N L i n e s 1 3 5 3 0 - 1 3 5 4 0 : I c h a r a c t e r i u p p e r c a s e o r l o w e r c a s e ,

e i t h e r a d o s u b t r a c t 1 2 t r e v e r s e i t L i n e 1 3 3 5 0 : A d C H R $ ( A ) t t h s t r i n g .L i n e 1 3 3 6 0 : L o o p u n t i l e n t i r e s t r i n g i e x a m i n e d .

Y O S U P P L Y

s t r i n g t b c o n v e r t e d .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

L o w e r c a s e a n u p p e r c a s e a r r e v e r s e d .

S A M P L E V A L U E : n o i t h t i m e f o a l g o o d m e

Page 100: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 100/290

Page 101: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 101/290

S I R I N GH A N D L I N G

W h e n c o m p a r e d w i t h t h B A S I C s s u p p l i e d w i t h o t h e r p e r s o n a lc o m p u t e r s , t h B A S I C 7 . i n c l u d e d i t h C o m m o d o r e 1 2 s t a c k su v e r y w e l l i n d e e d . I h a a p o w e r f u l s c r e e n e d i t o r t h a t a l l o w sc h a n g i n g p r o g r a m l i n e s j u s t b t y p i n g o v e r t h e m , a n i h a m o s to t h f e a t u r e s o s t a n d a r d M i c r o s o f t B A S I C . M u s i c a n g r a p h i c sc a p a b i l i t i e s , i p a r t i c u l a r , h a v e b e e n m a d e m u c h e a s i e r b t h a d d i t i o n o s p e c i a l c o m m a n d s t h a t c a r r y o u f u n c t i o n s t h a t d m a n d e d c o m p l e x P O K E s w i t h t h C o m m o d o r e 6 4

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

8

Page 102: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 102/290

8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

I y o u r o n l y f a m i l i a r i t y w i t h B A S I C i t h r o u g h u s o y o u rC o m m o d o r e 1 2 8 , s o m e o t h e s e s t a t e m e n t s a n f u n c t i o n s m a a p p e a r s t r a n g e t y o u . Y o m a e v e n w o n d e r w h a t t h e y c a n b eu s e d f o r . f e a r n o c o m m o n l y f o u n d i t h m a j o r i t y o B A S I C s . T h i s s e c t i o n w i l l s h o w y o h o t u s t h n e f u n c t i o n s , a w e l l a s p r o v i d e t i p s o w h y o m i g h t w a n t t p u t h e m i y o u r o w p r o g r a m s .

O n o t h k e f u n c t i o n s f o u n d i B A S I C 7 . t h a t y o u ' l l w a n tt f a m i l i a r i z e y o u r s e l f w i t h i I N S T R . I t i s u s e d t f i n d o u w h e t h e r g i v e n s t r i n g y o a r l o o k i n g f o i l o c a t e d w i t h i n as e c o n d s t r i n g o f c h a r a c t e r s t h a t i t h s a m e s i z e o r l o n g e r . I N S T Rr e t u r n s t h e s t a r t i n g p o s i t i o n o t h a t t a r g e t s t r i n g . Y o m i g h th a v e p r o g r a m t h a t l o o k s l i k e t h i s :

1 0 A $ = " C O M M O D O R E 1 2 8 "1 1 B $ = " V I C - 2 0 "1 2 C $ = " M Y C O M M O D O R E 1 2 I P O W E R F U L C O M P U T E R "1 3 A = I N S T R ( C $ , A $ )1 4 B = I N S T R ( C $ , B $ )1 5 C = I N S T R ( C $ , " C O M M O D O R E 1 1 , 8 )1 6 P R I N T A , B , C

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

4 , 0 , 0

I n t h e f i r s t i n s t a n c e , t h v a l u e i p r o d u c e d b e c a u s e I N S T Rh a s f o u n d A $ , " C O M M O D O R E " w i t h i n t h s t r i n g C s t a r t i n g a tt h f o u r t h c h a r a c t e r i C $ I t h s e c o n d c a s e , z e r o i r e t u r n e db e c a u s e B $ , " V I C - 2 0 " , i n o f o u n d w i t h i n C $

L i n e 1 5 0 s h o w s a n o t h e r f o r m a t f o I N S T R . I n s t e a d o u s i n g av a r i a b l e f o t h s t r i n g t b s e a r c h e d f o r , w e ' v e i n s e r t e d s t r i n gc o n s t a n t , " C O M M O D O R E " , i n s t e a d . W c o u l d h a v e a l s o u s e ds t r i n g c o n s t a n t i p l a c e o C $ N e i t h e r o p t i o n i u s u a l l y t a k e nb e c a u s e u s i n g v a r i a b l e s i m o r e f l e x i b l e . N o t e t h " , 8 " i l i n e 1 5 0 .T h i s p a r a m e t e r t e l l s I N S T R t o s t a r t i t s e a r c h a t h e i g h t h

Page 103: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 103/290

S t r i n g H a n d l i n g 8

p o s i t i o n i n t h s t r i n g , i g n o r i n g e v e r y t h i n g u t t h a t p o i n t . E v e nt h o u g h " C O M M O D O R E " d o e s a p p e a r i C $ l i n e 1 5 r e t u r n sz e r o b e c a u s e t h c o m p l e t e s t r i n g i n o f o u n d f r o m p o s i t i o no n w a r d . Y o w o u l d u s t h i s f o r m a t w h e n y o w a n t t s e a r c h o n l yp a r t o s t r i n g . F o e x a m p l e , y o u m i g h t h a v e a l r e a d y f o u n d t h t a r g e t s t r i n g , l e f t i a i s a n d e s i r e d t l o o k f o t h n e x t o c c u r r e n c e .

T h f i r s t t w s u b r o u t i n e s i t h i s c h a p t e r , R e p l a c e S t r i n g a n I n s e r t S t r i n g , w i l l t a k e s t r i n g o f y o u r c h o i c e a n e i t h e r r e p l a c et h e e q u i v a l e n t n u m b e r o c h a r a c t e r s i t h t a r g e t s t r i n g w i t h t h s e c o n d , s h o r t e r s t r i n g , o i n s e r t t h e m i n t o t h m i d d l e o t h t a r g e ts t r i n g . Y o n e e d t h a v e a u n d e r s t a n d i n g o I N S T R t u s t h e mm o s t e f f e c t i v e l y , s i n c e I N S T R w i l l l e y o e x a m i n e t h e t a r g e ts t r i n g a n d e c i d e e x a c t l y w h e r e t i n s e r t o r e p l a c e t h e s h o r t e rs t r i n g .

S T R I N G $ a d d s f e a t u r e t B A S I C 7 . t h a t a l l o w s y o e a s i l yt b u i l d s t r i n g o a n s i z e , u s i n g c h a r a c t e r o y o u r c h o i c e . S a y o n e e d s t r i n g , S P A C E $ , c o m p o s e d o 2 s p a c e s ( C H R $ ( 3 2 ) ) .T h i s s u b r o u t i n e w i l l b u i l d i f o y o a u t o m a t i c a l l y .

E x c h a n g e i h a n d y w a t e x c h a n g e t h v a l u e s o t w v a r i a b l e s a n i a v a i l a b l e i n s o m e B A S I C s u n d e r t h n a m e S W A P .C o m m o d o r e 1 2 B A S I C h a d i f f e r e n t S W A P c o m m a n d , s w c a l l t h i s o n E X C H A N G E . I i r u d i m e n t a r y f u n c t i o n i n c l u d e dt g e n o v i c e p r o g r a m m e r s t h i n k i n g a b o u t t h p r o c e s s e s n e e d e df o s o r t s . T w s o r t s a r e i n c l u d e d i t h i s c h a p t e r , a l o n g w i t h s o m er o u t i n e s t e n c o d e a n d e c o d e s t r i n g s a n f o r m a t t h e m o t h s c r e e n .

R E P L A C E S T R I N GW H A T I D O E S : S i m u l a t e s M I D $ = f u n c t i o n f o u n d i o t h e r B S I C S . R e p l a c e s m i d d l e p o r t i o n o s t r i n g w i t h a n o t h e r s t r i n g .

L E V E L : N o v i c e

Page 104: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 104/290

8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 0 R E M * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 0 R E M R E P L A C E S T R I N G1 3 R E 1 4 R E M * * * * * * * * * * * * * * * * * *1 5 R E — - - r1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 0 R E M T A R G T $ : M A I N S T R I N G1 9 R E S U B $ : S T R I N G T B R E P L A C E D2 0 R E P L A C E : P O S I T I O N T P U T S U B $2 1 R E M R E S U L T2 2 R E F I N I S H ? : C O M P L E T E D S T R I N G2 3 R E 2 4 R E 2 5 R E * * I N I T I A L I Z E * * 2 6 S U B $ = " T E S T n2 7 T A R G T $ = " R E P L A C E M E N T M A D E "2 8 P L A C E = 72 9 G O S U B 1 3 6 1 03 0 P R I N T F I N I S H ?3 1 E N 1 3 6 0 0 R E M * * S U B R O U T I N E * * 1 3 6 1 0 L $ = L E F T $ ( T A R G T $ , P L A C E )1 3 6 2 0 R $ = M I D $ ( T A R G T $ , P L A C E + L E N ( S U B $ ) + 1 )1 3 6 3 0 F I N I S H $ = L $ + S U B $ + R $1 3 6 4 0 R E T U R N

H O T U S E S U B R O U T I N ER e p l a c i n g t h m i d d l e p o r t i o n o s t r i n g w i t h a n o t h e r s t r i n g

c a b u s e f u l , e s p e c i a l l y i n w o r d p r o c e s s i n g p r o g r a m s . T h i s s u r o u t i n e w i l l a l l o w r e p l a c i n g a n n u m b e r o c h a r a c t e r s i m a i ns t r i n g , T A R G T $ , w i t h a e q u a l n u m b e r o f c h a r a c t e r s , S U B $ . I y o w a n t t i n s e r t s t r i n g t h a t i l a r g e r o s m a l l e r t h a n t h o n r e p l a c e d , y o s h o u l d u s e t h n e x t s u b r o u t i n e .

T h i s r o u t i n e w i l l r e p l a c e o n l y a e q u a l n u m b e r o f c h a r a c t e r s .F o e x a m p l e , y o m a t a k e a s t r i n g s u c h a R E T A I N a n c h a n g ei t R E P A I R b m a k i n g T A R G T $ " R E T A I N " , S U B $ « P A I R " ,a n P L A C E 3 T h s u b r o u t i n e w i l l s t a r t a t p o s i t i o n 3 i n t h t a r g e t s t r i n g a n s u b s t i t u t e t h S U B $ .

Page 105: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 105/290

S t r i n g H a n d l i n g 8

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : D e f i n e t h S U B $ , T A R G T $ , a n P L A C E .L i n e s 2 9 0 - 3 1 0 : A c c e s s t h e s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 3 6 1 0 : D e f i n e L a l e f t p o r t i o n o s t r i n g u t a n

i n c l u d i n g t h e c h a r a c t e r a t p o s i t i o n P L A C E .L i n e 1 3 6 2 0 : D e f i n e R a t h r e m a i n i n g c h a r a c t e r s i t h

t a r g e t s t r i n g , f r o m p o s i t i o n f o l l o w i n g P L A C E , p l u s t h l e n g t h o t h s t r i n g t b s u b s t i t u t e d , t t h e n d . R w i l l n o i n c l u d e a n o t h c h a r a c t e r s t h a t w i l l b r e p l a c e d b t h o s e i S U B $ .

L i n e 1 3 6 3 0 : D e f i n e F I N I S H $ a L $ , p l u s t h e s t r i n g t b s u b s t i t u t e d , p l u s R $

Y O S U P P L Y

Y o s h o u l d d e f i n e T A R G T $ , S U B $ , a n P L A C E j u s t b e f o r et h s u b r o u t i n e i c a l l e d .

S U G G E S T E D E N H A N C E M E N T S : U s I N S T R t d e t e r m i n e w h e r eP L A C E s h o u l d b e

R E S U L T

T A R G T $ w i l l b c h a n g e d t i n c l u d e S U B $ .

S A M P L E V A L U E : R E P L A C E T E S T M A D E

I N S E R T S T R I N GW H A T I D O E S : I n s e r t s s t r i n g i n t o a n o t h e r .

L E V E L : N o v i c e

Page 106: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 106/290

8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E I N S E R T S T R I N G1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 0 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M T A R G T $ : M A I N S T R I N G1 9 0 R E M S U B $ : S T R I N G T O B I N S E R T E D2 0 0 R E M P L A C E : P O S I T I O N T P U T S U B $2 1 0 R E M R E S U L T2 2 R E M F I N I S H $ : C O M P L E T E D S T R I N G2 3 R E 2 4 0 R E M2 5 R E * * I N I T I A L I Z E * * 2 6 0 S U B $ = I I T E S T "2 7 T A R G T $ " T A R G E T S T R I N G L E T T E R S 1 12 8 P L A C E = 72 9 G O S U B 1 3 7 1 03 0 P R I N T F I N I S H $3 1 E N 1 3 7 0 0 R E M * * S U B R O U T I N E * * 1 3 7 1 0 L $ = L E F T $ ( T A R G T $ , P L A C E )1 3 7 2 0 R $ = M I D $ ( T A R G T $ , P L A C E + 1 )1 3 7 3 0 F I N I S H $ = L $ + S U B $ + R $1 3 7 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

L i k e a l C o m m o d o r e 1 2 s t r i n g s , n e i t h e r T A R G T $ n o S U B $c a b l o n g e r t h a n 2 5 c h a r a c t e r s ( a n d k e e p i m i n d t h a t y o c a e n t e r s t r i n g o n l y u t 1 6 c h a r a c t e r s a t h e k e y b o a r d ) . T h r e s u l t i n g s t r i n g w i t h S U B $ i n s e r t e d m u s t b s h o r t e r t h a n 2 5 c h a r a c t e r s a s w e l l .

I n t h e s u b r o u t i n e a w r i t t e n , t h t a r g e t s t r i n g i " T A R G E TS T R I N G L E T T E R S " , w h i l e t h S U B $ i d e f i n e d a " T E S T " . S i n c et h P L A C E w h e r e w w a n t t i n s e r t i i p o s i t i o n 7 t h n e s t r i n g w i l l r e a d : " T A R G E T T E S T S T R I N G L E T T E R S " .

Page 107: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 107/290

S t r i n g H a n d l i n g 8

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 8 0 : D e f i n e t h S U B $ , t h T A R G T $ , a n P L A C Ew h e r e t h S U B $ w i l l b i n s e r t e d .

L i n e s 2 9 0 - 3 1 0 : A c c e s s t h s u b r o u t i n e a n d i s p l a y r e s u l t s .L i n e 1 3 7 1 0 : D e f i n e L a l e f t p o r t i o n o s t r i n g u t a n

i n c l u d i n g t h c h a r a c t e r a p o s i t i o n P L A C E .L i n e 1 3 7 2 0 : D e f i n e R a t h r e m a i n i n g c h a r a c t e r s i t h

t a r g e t s t r i n g , f r o m p o s i t i o n f o l l o w i n g P L A C E t t h e n d .L i n e 1 3 7 3 0 : D e f i n e F I N I S H $ a s L $ , p l u s t h s t r i n g t b

i n s e r t e d , p l u s R $ .

Y O S U P P L YV a l u e s f o t h m a i n s t r i n g , T A R G T $ , t h s t r i n g t b i

s e r t e d , S U B $ , a n t h p o s i t i o n w h e r e i w i l l b p u t , P L A C E .

S U G G E S T E D E N H A N C E M E N T S : I y o u r p r o g r a m h a v e I N S T R d t e r m i n e e x a c t l y w h e r e t h i n s e r t i o n w i l l t a k e p l a c e .

R E S U L T

T A R G T $ w i l l h a v e S U B $ i n s e r t e d i i t a t p o s i t i o n P L A C E .

S A M P L E V A L U E : T A R G E T T E S T S T R I N G L E T T E R S

C H R $ V A L U EW H A T I D O E S : R e t u r n s C o m m o d o r e C H R $ c o d e f o a n k e y .

L E V E L : N o v i c e

Page 108: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 108/290

9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 R E C H R $ V A L U E1 3 R E 1 4 0 R E M * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E K E Y B O A R D I N P U T1 9 0 R E M R E S U L T2 0 0 R E M A C H R $ V A L U E O K E 2 1 R E A $ K E Y P R E S S E D2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 G O S U B 1 3 8 1 02 5 P R I N T " C O N T I N U E ( Y / N ) u2 6 G E T K E Y A N 2 7 I A N $ = " Y " G O T O 2 4 2 8 E N 1 3 8 0 0 R E * * S U B R O U T I N E * * 1 3 8 1 0 G E T K E Y A 1 3 8 2 0 A = A S C ( A $ )1 3 8 3 0 P R I N T " C H R $ V A L U E O K E " ; A $ ; " I " ; 1 3 8 4 0 R E T U R N

H O T U S S U B R O U T I N E

I t i s o f t e n n e c e s s a r y t k n o w t h s p e c i a l C o m m o d o r e C H R $c o d e f o a g i v e n k e y . I m a n y k e y s a r u s e d , l o o k i n g t h e m a l u o t a b l e i n y o u r S y s t e m G u i d e c a n b e t i m e - c o n s u m i n g . I n s t e a d ,a d t h i s s u b r o u t i n e t t h e n o y o u r p r o g r a m a n d c a l l i a n e e d e d .

J u s t w h w o u l d y o u w a n t t h i s c a p a b i l i t y ? T h a n s w e r l i e s i t h d i f f e r e n c e s i n t h w a y s c o m p u t e r s a n h u m a n b e i n g s l i k e t op r o c e s s i n f o r m a t i o n . P e o p l e a r e c o m f o r t a b l e h a n d l i n g m i x t u r e s o a l p h a a n n u m e r i c c h a r a c t e r s ; c o m p u t e r s r e c o g n i z e j u s t b i n a r yn u m b e r s — o n e s a n z e r o s . W h e n s t r i n g d a t a a r f e t C o m m od o r e 1 2 8 , t h e y m u s t b c o n v e r t e d t s e r i e s o n u m b e r s t h a t t h p r o c e s s o r c a h a n d l e .

A S C I I , o A m e r i c a n S t a n d a r d C o d e f o I n f o r m a t i o n I n t e rc h a n g e , i o n s t a n d a r d o c o m m u n i c a t i o n t h a t h a b e e n a g r e e du p o n s t h a t c o m p u t e r s c a n e x c h a n g e a l p h a n u m e r i c i n f o r m a t i o ni f o r m t h a t i c o m m o n t p r o c e s s o r s w i t h d i f f e r e n t o p e r a t i n g

Page 109: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 109/290

S t r i n g H a n d l i n g 9

s y s t e m s a n l a n g u a g e s . C o m m o d o r e d e p a r t s s o m e w h a t f r o m t h i sc o d e f o t h C o m m o d o r e 1 2 8 , e s p e c i a l l y w h e n u s i n g t h g r a p h i c sc h a r a c t e r s . P E E K i n g a n P O K i n g c h a r a c t e r s a r d o n e u s i n g t h C o m m o d o r e c h a r a c t e r s e l i s t i n g , n o t t h e s t a n d a r d A S C I I t a b l e .H o w e v e r , t h s t a n d a r d a l p h a n u m e r i c s y m b o l s c a n b e r e p r e s e n t e db u s o t h c o r r e c t C H R $ ( n ) s t a t e m e n t . I n s o m e c a s e s , o n l yf e c h a r a c t e r s n e e d t b c o n v e r t e d , s t a b l e o c o d e s a n t h e i rs t r i n g v a l u e s w i l l d t h j o b . O t h e r t i m e s , l o n g e r m e s s a g e s m u s tb d e c i p h e r e d .

O n g o o d a p p l i c a t i o n f o A S C I I c h a r a c t e r s i p r o g r a m s i i g a m e w r i t i n g . W r i t e r s o B A S I C A d v e n t u r e - s t y l e p r o g r a m s m a w i s h t " h i d e " m e s s a g e s f r o m t h o s e c a s u a l l y L I S T i n g t h e p r og r a m . T h C H R $ ( n ) f u n c t i o n c a b u s e d t a s s i g n t h e d e s i r e ds t r i n g v a l u e s t s t r i n g v a r i a b l e s t h a t a r e c a l l e d a a p p r o p r i a t ep o i n t s i t h p r o g r a m . C H R $ ( n ) r e t u r n s o n e - c h a r a c t e r s t r i n gt h a t c o r r e s p o n d s t t h A S C I I c o d e o n F o e x a m p l e , P R I N TC H R $ ( 6 5 ) w i l l p r o d u c e a n " A " o n t h s c r e e n .

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

" L O O K I T H H O L L O W S T U M P . "

T h i s h i n t c o u l d b l a b e l e d H l $ , a n c o n c a t e n a t e d w i t h C H R $ ( n )a n t h A S C I I c o d e s :

1 0 D A T A 7 6 , 7 9 , 7 9 , 7 5 , 3 2 , 7 3 , 7 8 , 3 2 , 8 4 , 7 2 , 6 9 , 3 27 2 , 7 9 , 7 6 , 7 6 , 7 9 , 8 7 , 3 2 , 8 3 , 8 4 , 8 5 , 7 7 , 8 01 1 F O N = l t o 2 5 : R E A D1 2 H 1 $ = H 1 $ + C H R $ ( A )1 3 N E X T A

A d d i t i o n a l D A T A l i n e s a n F O R - N E X T l o o p s c o u l d b e u s e dt p u a n n u m b e r o m e s s a g e s i n t o s t r i n g v a r i a b l e s t h a t a r d i f f i c u l t t r e a d a c c i d e n t a l l y . O c o u r s e , a n k n o w l e d g e a b l e p r g r a m m e r c o u l d p i c k t h e B A S I C g a m e a p a r t , o r e n t e r P R I N T H l f r o m c o m m a n d m o d e o n c e t h p r o g r a m h a b e e n r u n p a s t t h i n i t i a l i z a t i o n p o i n t . H o w e v e r , t h i s t e c h n i q u e a s s u m e s t h a t t h e o b

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

Page 110: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 110/290

9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 4 0 : A c c e s s t h s u b r o u t i n e .L i n e s 2 5 0 - 2 8 0 : S e i u s e r w a n t s t a c c e s s a g a i n .L i n e 1 3 8 1 0 : W a i t f o u s e r t p r e s s k e y .L i n e 1 3 8 2 0 : F i n d A S C I I v a l u e o t h a t k e y .L i n e 1 3 8 3 0 : P r i n t r e s u l t .

Y O S U P P L Y

J u s t p r e s s t h k e t h a t y o w a n t t c h e c k .

S U G G E S T E D E N H A N C E M E N T S : W r i t e r o u t i n e t s t o r e t h r e s u l t si d a t a f i l e , a n c a l l t h e m i n t o y o u r p r o g r a m a n e e d e df o d i s p l a y o t h s c r e e n . S e p a r a t i n g t h p r o g r a m t h a t w r i t e st h C H R $ c o d e s f r o m t h p r o g r a m t h a t u s e s t h e m p r o v i d e se x t r a s e c u r i t y . Y o c a n c h a n g e t h m e s s a g e s a c c e s s e d b y o u rs e c o n d p r o g r a m s i m p l y b c h a n g i n g t h D A T A l i n e s i t h f i r s t .

R E S U L T

V a r i a b l e w i l l e q u a l C H R $ v a l u e o t h a t k e y .

S A M P L E V A L U E : C H R $ ( 6 5 )

E X C H A N G EW H A T I D O E S : S i m u l a t e s S W A P f u n c t i o n f o u n d i s o m e o t h e rB A S I C s .

L E V E L : N o v i c e

Page 111: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 111/290

S t r i n g H a n d l i n g 9

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

R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E

* E X C H A N G E

+ V A R I A B L E S + S U P P L I E D B U S E R

A $ F I R S T V A R I A B L EB $ S E C O N D V A R I A B L E

R E S U L TA $ S E C O N D V A R I A B L EB $ F I R S T V A R I A B L E

2 5 R E * * I N I T I A L I Z E * * 2 6 A $ = " F I R S T "2 7 B $ = " S E C O N D "2 8 P R I N T " V A L U E O A $ = " ; A $2 9 P R I N T " V A L U E O F B $ = " ; B $3 0 G O S U B 1 3 9 1 03 1 P R I N T " V A L U E O A $ = " ; A $3 2 P R I N T " V A L U E O F B $ = " ; B $3 3 E N 1 3 9 0 0 R E * * S U B R O U T I N E * * 1 3 9 1 0 D U M M Y ? = A $1 3 9 2 0 A $ = B $1 3 9 3 0 B $ = D U M M Y $1 3 9 4 0 R E T U R N

H O T U S E S U B R O U T I N E

E x c h a n g i n g t h v a l u e o o n v a r i a b l e f o t h a t o a n o t h e rc a n n o t b d o n e i o n s t e p i n C o m m o d o r e 7 . B A S I C f o u n d i t h C o m m o d o r e 1 2 8 . T h i s f e a t u r e i u s e f u l i n s o r t s a n i s o m e o t h e rt y p e s o p r o g r a m m i n g w h e r e t h v a l u e o o n v a r i a b l e n e e d s t b t r a d e d w i t h t h v a l u e o f a n o t h e r .

T h i s s u b r o u t i n e w i l l d t h a t f o y o f o a n t w s t r i n g v a r ia b l e s . T u s i w i t h n u m e r i c v a r i a b l e s , y o c a u s s e c o n di d e n t i c a l s u b r o u t i n e , w i t h t h s t r i n g i d e n t i f i e r s r e m o v e d ( i . e . ,D U M M Y A B D U M M Y ) . s e c o n d , l e s s e l e g a n t w a i t c h a n g e t h n u m e r i c v a r i a b l e s t s t r i n g s b e f o r e c a l l i n g t h r o u t i n e . T h i s c a b d o n e a f o l l o w s : A S T R $ ( A ) : B $ S T R $ ( B ) :G O S U B x x x : V A L ( A $ ) : B V A L ( B $ )

Page 112: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 112/290

9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 7 0 : D e f i n e i n i t i a l v a l u e o A a n B $ L i n e s 2 8 0 - 2 9 0 : S h o w t h e i r v a l u e s p r i o r t t h e x c h a n g e .L i n e 3 0 0 : A c c e s s t h s u b r o u t i n e .L i n e s 3 1 0 - 3 2 0 : S h o w v a l u e s a f t e r t h e x c h a n g e .L i n e 1 3 9 1 0 : T e m p o r a r i l y a s s i g n A t d u m m y v a r i a b l e ,

D U M M Y $ .L i n e 1 3 9 2 0 : m a k e A e q u a l t B $ L i n e 1 3 9 3 0 : M a k e B e q u a l t D U M M Y $ , w h i c h s t o r e s t h

o r i g i n a l v a l u e o A $

Y O S U P P L Y

V a l u e s f o A a n B $ o a n B t h t w v a r i a b l e s t h a tm u s t b e s w a p p e d .

S U G G E S T E D E N H A N C E M E N T S ; I i u s u a l l y s i m p l e r t p e r f o r mt h i s f u n c t i o n i p l a c e w i t h o u t c a l l i n g s u b r o u t i n e .

R E S U L T

V a l u e s e x c h a n g e d .

S A M P L E V A L U E S : A F I R S T ; B $ S E C O N D t A S E C O N D ;B = F I R S T

S T R I N G SW H A T I D O E S : S i m u l a t e s S T R I N G $ f u n c t i o n f o u n d i o t h e rB A S I C s .

L E V E L : N o v i c e

Page 113: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 113/290

S t r i n g H a n d l i n g 9

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

2 4 2 5 2 6 2 7 2 8 2 9

R E R E R E R E R E R E R E R E R E R E R E R E R E

R E

* • • * • • * * * * •

S T R I N G $* * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D B U S E R

L T H : D E S I R E D L E N G T HC O M P $ : C O M P O N E N T S T R I N G

R E S U L TS T R N G $ : F I N I S H E D S T R I N G

* * I N I T I A L I Z E * * C O M P $ = " A "L T H = 1 0G O S U B 1 4 0 1 0P R I N T S T R N G $E N

1 4 0 0 0 R E M * * S U B R O U T I N E * * 1 4 0 1 0 S T R N G $ = " "1 4 0 2 0 D O W H I L E L T H > 01 4 0 3 0 S T R N G $ = S T R I N G $ + C O M P $ : L T H = L T H - 11 4 0 4 0 L O O P1 4 0 5 0 R E T U R N

H O T U S E S U B R O U T I N E

Y o m a w i s h t d e f i n e s t r i n g a b e i n g c o m p o s e d o 4 o 8 s p a c e s , t c l e a r l i n e . O y o m a w a n t t b u i l d s t r i n g m a d eu o t h w o r d " H I " r e p e a t e d 1 t i m e s . B o t h c a b e a c c o m p l i s h e dw i t h t h i s s u b r o u t i n e . T h m a i n l i m i t a t i o n i t h a t t h e r e s u l t i n gs t r i n g m u s t b 2 5 c h a r a c t e r s o s h o r t e r .

L I N E - B Y L I N E D E S C R I P T I O N

L i n e s 2 5 0 - 2 6 0 : D e f i n e t h e c h a r a c t e r t b u s e d a t h c o m p on e n t s t r i n g a n t h e l e n g t h o t h d e s i r e d s t r i n g .

L i n e s 2 7 0 - 2 9 0 : A c c e s s s u b r o u t i n e a n p r i n t r e s u l t .L i n e 1 4 0 1 0 : N u l l a n p r e v i o u s v a l u e o S T R N G $ .L i n e 1 4 0 2 0 : S t a r t p r o c e d u r e t c o n t i n u e w h i l e t h l e n g t h o

S T R N G $ i l e s s t h a n L T H , t h d e s i r e d l e n g t h .

Page 114: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 114/290

9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 1 4 0 3 0 : A d C O M P $ t S T R N G $ .L i n e 1 4 0 4 0 : L o o p t r e p e a t .L i n e 2 5 0 : A s s i g n v a l u e o S T R N G $ t c h o s e n v a r i a b l e .

Y O S U P P L Y

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

Y o a l s o m u s t s u p p l y a d e f i n i t i o n f o C O M P $ , w h i c h m a b e i t h e r t h a c t u a l c h a r a c t e r s o r t h e i r C H R $ c o d e s .

S U G G E S T E D E N H A N C E M E N T S : A d d r o u t i n e t c h e c k t s e i L T H * L E N ( C O M P $ ) > 2 5 5 , a n d , i s o r e q u i r e t h a t L T b r d u c e d , o p o s t n o t i c e t t h a t e f f e c t t o t h o p e r a t o r .

R E S U L T

V a r i a b l e S T R N G $ w i l l b a s s e m b l e d u s i n g L T c o p i e s o C O M P $ .S A M P L E V A L U E : A A A A A A A A A A

S T R I N G S O R TW H A T I D O E S : A l p h a b e t i z e s l i s t .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * *1 1 R E 1 2 R E S T R I N G S O R T1 3 R E * 1 4 0 R E M * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N U M B E R N U M B E R O F I T E M S S O R T E D

Page 115: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 115/290

S t r i n g H a n d l i n g 9

1 9 R E D $ ( N ) : A R R A Y W I T H I T E M S2 0 R E R E S U L T2 1 R E D $ ( N ) S O R T E D2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 N U M B E R = 1 02 6 D I D $ ( N U M B E R )2 7 G O S U B 1 4 1 1 02 8 F O N = T O N U M B E R2 9 P R I N T D $ ( N )3 0 N E X T3 1 E N 1 4 1 0 0 R E M * * S U B R O U T I N E * * 1 4 1 1 0 F O I T E M = 1 T O N U M B E R1 4 1 2 0 P R I N T " E N T E R # " ; I T E M1 4 1 3 0 I N P U T D $ ( I T E M )1 4 1 4 0 N E X T I T E M1 4 1 5 0 F O N = T N U M B E R1 4 1 6 0 F O N l = l T O N U M B E R - N1 4 1 7 0 A $ = D $ ( N 1 )1 4 1 8 0 B $ = D $ ( N 1 + 1 )1 4 1 9 0 I A $ < B $ T H E N G O T O 1 4 2 2 01 4 2 0 0 D $ ( N 1 ) = B $1 4 2 1 0 D $ ( N 1 + 1 ) = A $1 4 2 2 0 N E X T N 1 4 2 3 0 N E X T1 4 2 4 0 R E T U R N

H O T U S E S U B R O U T I N E

S o r t i n g l i s t i s c o m m o n n e e d f o m a n y p r o g r a m s . D a t af i l e s , m a i l i n g l i s t s , a n o t h e r c o l l e c t i o n s o i n f o r m a t i o n m a b m o r e e a s i l y h a n d l e d w h e n s o r t e d . T h i s r o u t i n e i a s i m p l e b u b b l es o r t w h i c h w i l l a l p h a b e t i z e a n l i s t t h a t h a b e e n l o a d e d i n t o a a r r a y , D $ ( n ) .

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

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

Page 116: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 116/290

9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

I t h b u b b l e s o r t , e a c h e l e m e n t o t h a r r a y w i l l g r a d u a l l yr i s e u n t i l i e n c o u n t e r s a s m a l l e r i t e m . E v e n t u a l l y , e a c h m e m b e ro t h l i s t " f l o a t s " u t i t p r o p e r p l a c e i t h a r r a y . W h i l e s u c hs o r t s a r n o v e r y f a s t , f o s m a l l l i s t s o f s a y , 3 o 4 i t e m s t h s p e e d i s a t i s f a c t o r y .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e N U t h n u m b e r o u n i t s i t h a r r a y t b s o r t e d .

L i n e 2 6 0 : D I M e n s i o n t h a r r a y t p r o p e r s i z e .L i n e s 2 7 0 - 3 1 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 4 1 0 0 : B e g i n l o o p f r o m 1 t n u m b e r o i t e m s t b s o r t e d .L i n e s 1 4 1 1 0 - 1 4 1 4 0 : G e t h i t e m s f r o m u s e r k e y b o a r d i n p u t .

d i s k o t a p e f i l e r e a d r o u t i n e c o u l d b s u b s t i t u t e d f o t h e s el i n e s t o s o r t a e x i s t i n g s t r i n g f i l e .

L i n e 1 4 1 5 0 : S t a r t l o o p f r o m t t h n u m b e r o i t e m s t b s o r t e d .

L i n e 1 4 1 6 0 : S t a r t n e s t e d l o o p f r o m t l e s s t h a n t h n u m b e r o i t e m s t b s o r t e d .

L i n e 1 4 1 7 0 : M a k e A $ e q u a l t t h N l t h i t e m o t h a r r a y .L i n e 1 4 1 8 0 : M a k e B e q u a l t t h i t e m f o l l o w i n g A i t h

a r r a y .L i n e 1 4 1 9 0 : I t h e " h i g h e r " e l e m e n t , A $ i a l r e a d y s m a l l e r

t h a n B $ t h e n B r e m a i n s w h e r e i i a n t h i n n e r l o o p s t e p s o f t h n e x t v a l u e o N l L i n e s 1 4 2 0 0 - 1 4 2 1 0 : I B i s m a l l e r t h a n A $ t h e n t h t w

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

L i n e s 1 4 2 2 0 - 1 4 2 3 0 : T h i n n e r a n o u t e r l o o p s a r i n c r e m e n t e d .

Page 117: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 117/290

S t r i n g H a n d l i n g 9

Y O S U P P L Y

Y o s h o u l d d e f i n e N U M B E R , t h n u m b e r o i t e m s t b s o r t e d , a n a l s o s u p p l y t h d a t a f o t h a r r a y , D $ ( n ) .S U G G E S T E D E N H A N C E M E N T S : I n t e r f a c e t h i s r o u t i n e w i t h d a t af i l e s p r o d u c e d b y y o u r p r o g r a m .

R E S U L T

L i s t i s o r t e d a l p h a b e t i c a l l y .

S A M P L E V A L U E S : A P P L E , O R A N G E , P E A R , W A T E R M E L O N

S H E L L / M E T Z N E R S O R TW H A T I D O E S : S o r t s l i s t .

L E V E L : I n t e r m e d i a t e

1 0 R E 1 1 R E 1 2 R E S H E L L - M E T Z N E R S O R T1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M N U M B E R : N U M B E R O I T E M S O F D A T A1 9 R E F I R S T : S T A R T P O S I T I O N O F S O R T2 0 0 R E M L A S T : E N D P O S I T I O N O F S O R T2 1 R E D $ ( N ) : D A T A A R R A Y T B S O R T E D2 2 R E R E S U L T2 3 R E D $ ( N ) S O R T E D2 4 R E 2 5 R E 2 6 R E * * D A T A * * 2 7 D A T A C O M M O D O R E , V I C , A P P L E , O R A N G E2 8 D A T A M O N I T O R , K E Y B O A R D , P R I N T E R2 9 D A T A L I S T I N G , P R O G R A M , I N S E R T3 0 R E * * I N I T I A L I Z E * *

Page 118: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 118/290

1 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 1 N U M B E R = 1 03 2 F I R S T = 13 3 L A S T = 1 03 4 D I D $ ( N U M B E R )3 5 F O 1 = T N U M B E R3 6 R E A D D $ ( I )3 7 N E X T3 8 G O S U B 1 4 3 1 03 9 F O N = F I R S T T O L A S T4 0 P R I N T D $ ( N )4 1 N E X T4 2 E N 1 4 3 0 0 R E * * S U B R O U T I N E * * 1 4 3 1 0 T 1 = N U M B E R1 4 3 2 0 T l = I N T ( T l / 2 )1 4 3 3 0 I T l = 0 T H E N R E T U R N1 4 3 4 0 T 2 = l1 4 3 5 0 T 3 = N U M B E R - T 11 4 3 6 0 T 5 = T 21 4 3 7 0 T 4 = T 5 + T 11 4 3 8 0 S 1 $ = ( M I D $ ( D $ ( T 5 ) , F I R S T , ( L A S T - F I R S T ) + 1 ) )1 4 3 9 0 S 2 $ = ( M I D $ ( D $ ( T 4 ) , F I R S T , ( L A S T - F I R S T ) + 1 ) )1 4 4 0 0 I S 1 $ < S 2 $ G O T O 1 4 4 7 01 4 4 1 0 T 6 $ = D $ ( T 5 )1 4 4 2 0 D $ ( T 5 ) = D $ ( T 4 )1 4 4 3 0 D $ ( T 4 ) = T 6 $1 4 4 4 0 T 5 = T 5 - T 11 4 4 5 0 I T 5 < 1 T H E N G O T O 1 4 4 7 01 4 4 6 0 G O T O 1 4 3 7 01 4 4 7 0 T 2 = T 2 + 11 4 4 8 0 I T 2 > T 3 T H E N G O T O 1 4 3 2 01 4 4 9 0 G O T O 1 4 3 6 01 4 5 0 0 R E T U R N

H O T U S S U B R O U T I N E

T h S h e l l - M e t z n e r S o r t i c o n s i d e r e d m o r e e f f i c i e n t f o s l i g h t l yl o n g e r l i s t s t h a n t h b u b b l e s o r t . T h e r e a r m a n y o t h e r s o r t s ,s u c h a Q u i c k s o r t a n H e a p s o r t , b u t h i s s o r t i e a s y t u n d e rs t a n d w i t h o u t l e n g t h y e x p l a n a t i o n a n i e n t i r e l y a d e q u a t e f o m o s t B A S I C p r o g r a m s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 7 0 - 2 9 0 : D a t a t b s o r t e d .L i n e s 3 1 0 - 3 3 0 : D e f i n e t h N U M B E R o i t e m s t b s o r t e d ,

t h p o s i t i o n o f t h F I R S T i t e m t b s o r t e d , a n t h L A S T i t e m

Page 119: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 119/290

S t r i n g H a n d l i n g 1 0

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

L i n e 3 4 0 : D I M e n s i o n a a r r a y t h o l d t h d a t a i t e m s .L i n e s 3 5 0 - 3 7 0 : R e a d d a t a t t h a r r a y .L i n e s 3 8 0 - 4 2 0 : A c c e s s t h s u b r o u t i n e a n p r i n t t h s o r t e d

l i s t t t h s c r e e n .L i n e s 1 4 3 1 0 - 1 4 3 3 0 : D i v i d e t h e l i s t i h a l f .L i n e s 1 4 3 4 0 - 1 4 3 9 0 : E x t r a c t t w e l e m e n t s f r o m e a c h h a l f .L i n e 1 4 4 0 0 : C o m p a r e , a n i f i r s t i " s m a l l e r , " b y p a s s t h

s w a p r o u t i n e .L i n e s 1 4 4 1 0 - 1 4 4 6 0 : E x c h a n g e t h e e l e m e n t s .L i n e s 1 4 4 7 0 - 1 4 4 9 0 : I n c r e m e n t t h p o i n t e r s a n r e p e a t .

Y O S U P P L Y

E i t h e r d a t a i D A T A l i n e s , o d a t a f i l e t b s o r t e d .

S U G G E S T E D E N H A N C E M E N T S : I n t e r f a c e w i t h y o u r o w d a t af i l e s .

R E S U L T

L i s t s o r t e d a l p h a b e t i c a l l y .

S A M P L E V A L U E S : A P P L E . C O M M O D O R E . I N S E R T . K E V B O A R nL I S T I N G , M O N I T O R , O R A N G E , P R I N T E R , P R O G R A M , V I C

A R R A Y L O A D E RW H A T I D O E S : L o a d s a r r a y w i t h d a t a .

L E V E L : N o v i c e

Page 120: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 120/290

1 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 R E L O A D A R R A Y1 3 R E * 1 4 R E * * * * * * * * * * * * * *1 5 0 R E M1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M N R O W S : N U M B E R O F R O W S1 9 R E M N C O L U M N S : N U M B E R O C O L U M N S2 0 0 R E M R E S U L T2 1 R E D T A $ ( N R , N C ) L O A D E D W I T H D A T A2 2 0 R E M2 3 R E 2 4 0 R E M * * D A T A * * 2 5 D A T A D A V E , 1 P I N E S T . , 4 4 5 - 1 8 8 12 6 D A T A F R E D , 3 H I G H S T . , 2 3 2 - 4 4 4 42 7 R E * * I N I T I A L I Z E * * 2 8 N R O W S = 22 9 N C O L U M N S = 33 0 D I D T A $ ( N R , N C )3 1 G O S U B 1 4 6 1 03 2 F O R O W = 1 T O N R O W S3 3 F O C O L U M N = 1 T O N C O L U M N S3 4 P R I N T D T A $ { R O W , C O L U M N )3 5 N E X T C O L U M N3 6 N E X T R O 3 7 E N 1 4 6 0 0 R E M * * S U B R O U T I N E * * 1 4 6 1 0 F O R O W = 1 T O N R O W S1 4 6 2 0 F O C O L U M N = 1 T O N C O L U M N S1 4 6 3 0 R E A D A 1 4 6 4 0 D T A $ ( R O W , C O L U M N ) = A $1 4 6 5 0 N E X T C O L U M N1 4 6 6 0 N E X T R O 1 4 6 7 0 R E T U R N

H O T U S E S U B R O U T I N E

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

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

Page 121: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 121/290

S t r i n g H a n d l i n g 1 0

l a t e d , s o r t e d , a d d e d t o o h a v e e n t r i e s d e l e t e d . T h i s s u b r o u t i n ed o e s e x a c t l y t h a t . A l t h o u g h w r i t t e n f o s t r i n g a r r a y , i c a n b ec o n v e r t e d t n u m e r i c a r r a y s i m p l y b t h u s e r ' s d e l e t i n g t h v a r i a b l e t y p e s p e c i f i e r , " $ " . T h a t i s D T A $ ( r o w , c o l u m n ) s h o u l db e c o m e D T A ( r o w , c o l u m n ) , a n A s h o u l d b e c h a n g e d t A

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 5 0 - 2 6 0 : D a t a t b l o a d e d .L i n e 2 8 0 : D e f i n e n u m b e r o r o w s i t h a r r a y .L i n e 2 9 0 : D e f i n e n u m b e r o c o l u m n s i t h a r r a y .L i n e 3 0 0 : D I M e n s i o n a n a r r a y t h o l d t h d a t a .L i n e s 3 1 0 - 3 7 0 : A c c e s s t h s u b r o u t i n e a n t h e n p r i n t t h r

s u l t s , u s i n g n e s t e d F O R - N E X T l o o p s . ( S e e b e l o w . )L i n e 1 4 6 1 0 : B e g i n F O R - N E X T l o o p f r o m t t h n u m b e r o

r o w s .L i n e 1 4 6 2 0 : B e g i n s e c o n d F O R - N E X T l o o p n e s t e d i n s i d e

t h f i r s t o n e , f r o m t t h n u m b e r o c o l u m n s .L i n e 1 4 6 3 0 : R E A D d a t a i t e m f r o m t h D A T A l i n e s .L i n e 1 4 6 4 0 : S t o r e t h a t v a l u e i D T A $ ( r o w , c o l ) , i t h p o s i

t i o n s m a r k e d b t h v a l u e o R O W , C O L U M N . T h f i r s t t i m et h r o u g h t h l o o p , R O w i l l e q u a l a n C O L U M N w i l l e q u a l 1 T h e n c o n t r o l w i l l d r o p t L i n e 1 4 6 5 0 b e l o w , w h e r e C O L U M N w i l lb e i n c r e m e n t e d t 2 S o t h n e x t D A T A i t e m w i l l b s t o r e d i D T A $ ( 1 , 2 ) . W h e n a l t h c o l u m n s f o g i v e n r o h a v e b e e nf i l l e d , R O w i l l b i n c r e m e n t e d a n t h n e x t d a t a i t e m w i l l b s t o r e d i D T A $ ( 2 , 1 ) .

L i n e 1 4 6 5 0 : N e x t C O L U M N .L i n e 1 4 6 6 0 : N e x t R O W .

Y O S U P P L Y

T h n u m b e r o r o w s , N R O W S , a n n u m b e r o c o l u m n s ,N C O L U M N S , s h o u l d b e s p e c i f i e d . D a t a c a b s u p p l i e d f r o mD A T A l i n e s , o r b e t t e r , r e a d i f r o m d i s k o t a p e .

Page 122: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 122/290

1 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

S U G G E S T E D E N H A N C E M E N T S : A d a p t t h i s s u b r o u t i n e f o y o u r o w p r o g r a m s .

R E S U L TD a t a l i s t i l o a d e d i n t o a r r a y .

S A M P L E V A L U E : T h e D A T A w i l l b p r i n t e d i o r d e r s h o w n i l i s t i n g

D E S P A C E RW H A T I D O E S : R e m o v e s s p a c e s f r o m s t r i n g .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * *1 1 R E 1 2 R E D E S P A C E R1 3 R E * 1 4 0 R E M * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E S $ S T R I N G T D E S P A C E1 9 0 R E M R E S U L T2 0 R E M R E S U L T ? : D E S P A C E D S T R I N G2 1 0 R E M2 2 R E 2 3 0 R E M * * I N I T I A L I Z E * * 2 4 I N P U T " E N T E R S T R I N G T D E S P A C E : " ; S $2 5 G O S U B 1 4 7 1 02 6 P R I N T " N E W S T R I N G : " ; R E S U L T ?2 7 E N 1 4 7 0 0 R E * * S U B R O U T I N E * * 1 4 7 1 0 R E S U L T ? = S ?1 4 7 2 0 P = 1 4 7 3 0 B = I N S T R ( R E S U L T ? , C H R ? ( 3 2 ) , P )1 4 7 4 0 I B = T H E N R E T U R N1 4 7 5 0 R E S U L T ? = L E F T ? ( R E S U L T ? , B - l ) + M I D $ ( R E S U L T ? , B + l )1 4 7 6 0 P = 1 4 7 7 0 G O T O 1 4 7 3 0

Page 123: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 123/290

S t r i n g H a n d l i n g 1 0

H O T U S E S U B R O U T I N E

T h i s s u b r o u t i n e d e m o n s t r a t e s h o t m a n i p u l a t e s t r i n g s t a d o s u b t r a c t f r o m t h e m w h a t w w a n t . E a r l i e r i t h i s c h a p t e ry o s a h o t i n s e r t n e s t r i n g i n t h m i d d l e o s t r i n g o r t r e p l a c e p o r t i o n o s t r i n g w i t h a n o t h e r . T c o n t i n u e i t h a tv e i n , y o c a s i m p l y r e m o v e a l t h e s p a c e s f r o m s t r i n g u s i n gt h i s s u b r o u t i n e . Y o u r p r o g r a m m i n g m a h a v e t h n e e d f o r t h i st e c h n i q u e , a w h e n c o m p a c t i n g a d a t a f i l e i w h i c h s p a c e s a r e n o td e s i r e d o n e e d e d t d e l i m i t c h a r a c t e r s .

T h s u b r o u t i n e l o o k s a e a c h c h a r a c t e r i t h s t r i n g i n t u r n ,u s i n g F O R - N E X T l o o p f r o m t t h e l e n g t h o t h s t r i n g . I

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

L I N E - B Y L I N E D E S C R I P T I O N

L i n e 2 4 0 : A s u s e r f o s t r i n g t d e s p a c e . S t r i n g s e n t e r e d f r o mt h k e y b o a r d c a b o n l y 1 6 c h a r a c t e r s l o n g . S t r i n g s y o d e f i n ei p r o g r a m c a n b e c o m b i n e d u t 2 5 c h a r a c t e r s .

L i n e 2 5 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 6 0 : P r i n t r e s u l t .L i n e 1 4 7 1 0 : S t o r e v a l u e o s t r i n g i n p u t i R E S U L T S .L i n e 1 4 7 2 0 : D e f i n e s e a r c h p o s i t i o n a 1 L i n e 1 4 7 3 0 : S t o r e i v a r i a b l e t h p o s i t i o n o f t h f i r s t s p a c e

i t h s t r i n g f o l l o w i n g p o s i t i o n P L i n e 1 4 7 4 0 : I i s 0 , t h e n n m o r e s p a c e s r e m a i n : R E T U R N

t m a i n p r o g r a m .L i n e 1 4 7 5 0 : T a k e t h l e f t a n r i g h t p o r t i o n s o f t h s t r i n g ,

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

L i n e 1 4 7 6 0 : R e d e f i n e a t h p l a c e w h e r e t h e s p a c e w a f o u n d , s t h a t t h e n e x t s e a r c h w i l l s t a r t t h e r e , l o o k i n g f o a d d it i o n a l s p a c e s .

L i n e 1 4 7 7 0 : R e p e a t .

Page 124: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 124/290

1 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

S t r i n g t d e s p a c e .

S U G G E S T E D E N H A N C E M E N T S : I n t e r f a c e w i t h y o u r p r o g r a m .R E S U L T

S t r i n g h a s p a c e s r e m o v e d .S A M P L E V A L U E : T H I S S T R I N G H A S B E E N D E S P A C E D

C E N T E R S T R I N GW H A T I D O E S : C e n t e r s s t r i n g o t h s c r e e n .

L E V E L : N o v i c e1 0 0 R E M * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E C E N T E R S T R I N G1 3 R E 1 4 0 R E M * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B Y U S E R1 8 R E A $ S T R I N G T B C E N T E R E D1 9 R E W I D E : S C R E E N W I D T H2 0 R E R E S U L T2 1 R E L A M O U N T T T A B T H E S T R I N G2 2 0 R E M2 3 R E 2 4 0 R E M * * I N I T I A L I Z E * * 2 5 W I D E = 8 02 6 I N P U T " E N T E R S T R I N G T O B E C E N T E R E D : " ; A $2 7 G O S U B 1 4 8 1 02 8 I L = T H E N G O T O 2 6 2 9 P R I N T T A B ( L ) A $3 0 E N 1 4 8 0 0 R E M * * S U B R O U T I N E * * 1 4 8 1 0 L = 01 4 8 2 0 I L E N ( A $ ) > W I D E - 2 T H E N P R I N T " S T R I N G T O O L O N G 1 " : R E T U R N1 4 8 3 0 L = I N T ( ( W I D E - L E N ( A $ ) ) ) / 21 4 8 4 0 R E T U R N

Page 125: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 125/290

S t r i n g H a n d l i n g 1 0

H O T U S S U B R O U T I N E

Y o m a w a n t y o u r p r o g r a m t c e n t e r p r o m p t s o o t h e rm a t e r i a l o t h e s c r e e n f o n e a t a p p e a r a n c e . T h i s s u b r o u t i n ew o r k s w i t h e i t h e r 8 0 - o r 4 0 - c o l u m n s c r e e n s . I c a l c u l a t e s t h l e n g t h o t h s t r i n g a n s u b t r a c t s t h a t a m o u n t f r o m t h n u m b e ro s p a c e s a v a i l a b l e t d e t e r m i n e t h a m o u n t l e f t o v e r . T h i s f i g u r ei d i v i d e d b y t w o s t h i s e x t r a s p a c e i a r r a n g e d a e q u a l l y a p o s s i b l e b e f o r e a n a f t e r t h s t r i n g . I a n u n e v e n n u m b e r o s p a c e s r e m a i n s , t h s t r i n g w i l l b " c e n t e r e d " o n c h a r a c t e r t t h l e f t , w h i c h s h o u l d b e a l m o s t a u n n o t i c e a b l e d i f f e r e n c e .

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

1 0 0 0 I N P U T " E N T E R Y O U R N A M E : " ; N M E $1 0 1 0 S $ = " H E L L O T H E R E , " + N M E $1 0 2 0 W I D E = 8 01 0 3 0 G O S U B 1 4 8 1 01 0 4 0 P R I N T T A B ( L ) S $1 0 5 0 E N

L I N E - B Y L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e w h e t h e r p r o g r a m i u s i n g t h 4 0 - c o l u m n o 8 0 - c o l u m n s c r e e n .

L i n e 2 6 0 : U s e r i n p u t s l i n e t o b c e n t e r e d .L i n e 2 7 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 8 0 : I s t r i n g w a t o l o n g ( e q u a l t o g r e a t e r t h a n

W I D E - 1 ) t h e n g b a c k a n a s f o n e i n p u t .L i n e 2 9 0 : O t h e r w i s e t a a n p r i n t t h s t r i n g .L i n e 1 4 8 1 0 : S e t t a b v a l u e t 0 i c a s e t h i s s u b r o u t i n e h a

b e e n c a l l e d p r e v i o u s l y b t h p r o g r a m .L i n e 1 4 8 2 0 : S e i s t r i n g i t o l o n g .L i n e 1 4 8 3 0 : C a l c u l a t e v a l u e f o L a s h a l f o t h e x t r a s p a c e s

l e f t o t h l i n e .L i n e 1 4 8 4 0 : R e t u r n .

Page 126: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 126/290

1 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

S t r i n g t b c e n t e r e d .

S U G G E S T E D E N H A N C E M E N T S : N o n e .R E S U L T

S t r i n g i c e n t e r e d o t h s c r e e n .

S A M P L E V A L U E : N o a p p l i c a b l e

F L U S H R I G H T S T R I N GW H A T I D O E S : P r i n t s s t r i n g f l u s h r i g h t o t h s c r e e n .

L E V E L : N o v i c e1 0 R E * * * * * * * * * * * * * * *1 1 R E * 1 2 R E F L U S H R I G H T1 3 R E * 1 4 R E * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B Y U S E R1 8 0 R E M A $ S T R I N G T O B E F L U S H R I G H T1 9 R E W I D E : S C R E E N W I D T H2 0 R E R E S U L T2 1 R E R A M O U N T T O T A B T H S T R I N G2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 W I D E = 8 02 6 I N P U T " E N T E R S T R I N G : " ; A $2 7 G O S U B 1 4 9 1 02 8 I R = T H E N G O T O 2 6 2 9 P R I N T T A B ( R ) A $ ;3 0 E N 1 4 9 0 0 R E M * * S U B R O U T I N E * * 1 4 9 1 0 R = 1 4 9 2 0 I L E N ( A $ ) > W I D E T H E N P R I N T " S T R I N G T O O L O N G 1 " : R E T U R N1 4 9 3 0 R = W I D E - L E N ( A $ )1 4 9 4 0 R E T U R N

Page 127: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 127/290

S t r i n g H a n d l i n g 1 0

H O T U S E S U B R O U T I N E

U s w h e n y o w i s h t p r i n t s t r i n g f l u s h r i g h t o t h s c r e e n .T h i s m a b t h c a s e w i t h c o l u m n s o n u m b e r s o o t h e r m a t e r i a l .T h r o u t i n e w o r k s w i t h e i t h e r 4 0 - o r 8 0 - c o l u m n s c r e e n s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e W I D E a w i d t h o s c r e e n b e i n g u s e d w i t ht h s u b r o u t i n e .

L i n e 2 6 0 : E n t e r s t r i n g t b p r i n t e d f l u s h r i g h t .L i n e 2 7 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 8 0 : I s t r i n g w a t o l o n g , g b a c k a n a s f o n e s t r i n g .L i n e 2 9 0 : T A t p r i n t s t r i n g a r i g h t s i d e o s c r e e n .L i n e 1 4 9 1 0 : R e t u r n t 0 i c a s e r o u t i n e h a b e e n c a l l e d

b e f o r e d u r i n g t h i s p r o g r a m r u n .L i n e 1 4 9 2 0 : C h e c k t s e i s t r i n g i t o l o n g t d i s p l a y o

s i n g l e l i n e .L i n e 1 4 9 3 0 : C a l c u l a t e a m o u n t t T A B .L i n e 1 4 9 4 0 : R e t u r n .

Y O S U P P L Y

S t r i n g t p r i n t f l u s h r i g h t .

S U G G E S T E D E N H A N C E M E N T S : M o d i f y t h r o u t i n e s t h s t r i n gc a b p r i n t e d f l u s h r i g h t i c o l u m n o t h e r t h a n t h f a r i g h t o ft h s c r e e n . H I N T : C h a n g e t h v a l u e o W I D E .

R E S U L T

S t r i n g i p r i n t e d a t h r i g h t s i d e o t h s c r e e n .

S A M P L E V A L U E : N o t a p p l i c a b l e

Page 128: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 128/290

1 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

E N C O D E S T R I N GW H A T I D O E S : E n c o d e s s t r i n g s t p r e v e n t r e a d i n g .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E E N C O D E S T R I N G1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E S $ S T R I N G T O B E E N C O D E D1 9 R E R E S U L T2 0 R E M R E S U L T ? : E N C O D E D S T R I N G2 1 R E 2 2 0 R E M2 3 R E * * I N I T I A L I Z E * * 2 4 0 I N P U T " E N T E R S T R I N G T B E N C O D E D : " ; S $2 5 I N P U T " E N T E R C O D E N U M B E R ( T O 2 5 ) " ; C O D E2 6 G O S U B 1 5 0 1 02 7 P R I N T " E N C O D E D S T R I N G : " ; R E S U L T $2 8 E N 1 5 0 0 0 R E * * S U B R O U T I N E * *

1 5 0 1 0 T E M P $ = " "1 5 0 2 0 F O N = T L E N ( S $ )1 5 0 3 0 B $ = M I D $ ( S $ , N , 1 )1 5 0 4 0 B = A S C ( B $ )1 5 0 5 0 I B > 1 9 2 A N D B < 2 1 9 T H E N B = B - 1 2 81 5 0 6 0 I B > 6 4 A N B < 9 1 T H E N B E G I N1 5 0 7 0 C = B + C O D E1 5 0 8 0 I C > 9 0 T H E N C = C - 2 61 5 0 9 0 B E N D1 5 1 0 0 I B < 6 5 O B > 9 2 T H E N C = 1 5 1 1 0 T E M P $ = T E M P $ + C H R $ ( C )1 5 1 2 0 N E X T1 5 1 3 0 R E S U L T $ = T E M P $1 5 1 4 0 R E T U R N

H O T U S E S U B R O U T I N E

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

Page 129: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 129/290

S t r i n g H a n d l i n g 1 1

c o u l d L I S T t h a t f i l e a n r e a d i w i t h o u t h a v i n g y o u r d e c o d i n gs u b r o u t i n e ( w h i c h f o l l o w s ) . Y o m i g h t k e e p t h d e c o d i n g p r o g r a mo s e p a r a t e d i s k f o a d d e d s e c u r i t y .

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

e a s i e s t t b r e a k , s i n c e t h f r e q u e n c y o w o r d s a n l e t t e r s i E n g l i s h i w e l l - k n o w n . I f a c t , t h i s p a r t i c u l a r s c h e m e i e a s i e rt h a n m o s t , b e c a u s e i m e r e l y m o v e s t h e n t i r e a l p h a b e t o n o m o r e c h a r a c t e r s t t h r i g h t , u s i n g c o d e n u m b e r f r o m t 2 e n t e r e d b t h u s e r . I w o u l d b n e c e s s a r y o n l y t f i g u r e o u t h n u m b e r a n t h e n s u b t r a c t t h a t f r o m e a c h l e t t e r t d e c o d e t h d a t a .

H o w e v e r , t h o b j e c t o f t h i s s u b r o u t i n e i t p r o v i d e s i m p l ee n c o d i n g p r o c e d u r e t h a t c a b s l i p p e d i n t o a n y p r o g r a m a n u s e d t m a k e i m o r e d i f f i c u l t f o t h c a s u a l i n t r u d e r t r e a d t h d a t a . I y o a r s e r i o u s a b o u t s e c u r i t y , i n v e s t i g a t e s p e c i a le n c r y p t i n g p r o g r a m s , w h i c h w i l l d o u b t l e s s b e a d a p t e d t t h C o m m o d o r e 1 2 b t h t i m e t h i s b o o k i p u b l i s h e d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 4 0 - 2 5 0 : A s f o s t r i n g t e n c o d e , a n c o d e n u m b e r .L i n e s 2 6 0 - 2 8 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 1 5 0 1 0 : N u l l t h t e m p o r a r y s t r i n g , T E M P $ .L i n e 1 5 0 2 0 : B e g i n l o o p f r o m t l e n g t h o f S $ , t h s t r i n g t b

e n c o d e d .L i n e 1 5 0 3 0 : E x t r a c t m i d d l e c h a r a c t e r f r o m s t r i n g , a t p o s i

t i o n N L i n e 1 5 0 4 0 : C a l c u l a t e A S C I I v a l u e o t h a t c h a r a c t e r .L i n e s 1 5 0 5 0 - 1 5 0 6 0 : C h a n g e l o w e r c a s e t u p p e r , t h e n t e s t t o

s e i i i a a l p h a c h a r a c t e r ( o t h e r c h a r a c t e r s a r e l e f t u n c h a n g e d ) .L i n e 1 5 0 7 0 : A d t h e c o d e t t h A S C I I v a l u e o t h c h a r a c t e r .L i n e s 1 5 0 8 0 - 1 5 0 9 0 : I n e v a l u e i h i g h e r t h a n Z t h e n w r a p

a r o u n d t b e g i n n i n g o a l p h a b e t .L i n e 1 5 1 0 0 : I n o n a l p h a c h a r a c t e r f o u n d , s i m p l y p a s s i

t h r o u g h .L i n e 1 5 1 1 0 : A d c h a r a c t e r t T E M P $ .

Page 130: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 130/290

1 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 1 5 1 2 0 : L o o p t n e x t c h a r a c t e r .L i n e s 1 5 1 3 0 - 1 5 1 4 0 : A f t e r a l c h a r a c t e r s a r e e x a m i n e d , s t o r e

r e s u l t i n R E S U L T $ , a n r e t u r n .

Y O S U P P L Y

S t r i n g t e n c o d e .

S U G G E S T E D E N H A N C E M E N T S : A d d l i n e s t o e n c o d e a l c h a r a c t e r s ,i n a d d i t i o n t A - Z . M a k e t h e n c o d i n g a l g o r i t h m m o r e c o m p l e x ,s t h a t d i f f e r e n t n u m b e r m a r e p r e s e n t t h e s a m e c h a r a c t e r . F o e x a m p l e , y o u m i g h t m a k e a l t w o - d i g i t n u m b e r s h i g h e r t h a n 2 t h a t a r e m u l t i p l e s o 1 r e p r e s e n t s p a c e s : 3 3 , 4 4 , 5 5 , 6 6 , e t c . R e a du o d a t a e n c r y p t i o n t s e h o t r u l y s o p h i s t i c a t e d m e t h o d s c a b e

R E S U L T

S t r i n g e n c o d e d .

S A M P L E V A L U E : T H I S I S A M P L E Y M N X N X F R U Q Z( C o d e 5

D E C O D E S T R I N GW H A T I D O E S : D e c o d e s s t r i n g s e n c o d e d w i t h p r e v i o u s s u b r o u t i n e .

L E V E L : I n t e r m e d i a t e

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

R E R E R E R E R E R E R E R E R E R E

* D E C O D E S T R I N G

* * * * * * * * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D B U S E R

S $ S T R I N G T B D E C O D E DR E S U L T

Page 131: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 131/290

Page 132: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 132/290

1 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e s 1 5 2 5 0 - 1 5 2 6 0 : C h a n g e l o w e r c a s e t u p p e r , t h e n t e s t t os e i i t i s a a l p h a c h a r a c t e r ( o t h e r c h a r a c t e r s a r l e f t u n c h a n g e d ) .

L i n e 1 5 2 7 0 : S u b t r a c t t h e c o d e f r o m t h A S C I I v a l u e o t h c h a r a c t e r .

L i n e s 1 5 2 8 0 - 1 5 2 9 0 : I n e v a l u e i l e s s t h a n " A " , t h e n w r a pa r o u n d t e n o a l p h a b e t .

L i n e 1 5 3 0 0 : I n o n a l p h a c h a r a c t e r f o u n d , s i m p l y p a s s i t h r o u g h .

L i n e 1 5 3 1 0 : A d c h a r a c t e r t T E M P $ .L i n e 1 5 3 2 0 : L o o p t n e x t c h a r a c t e r .L i n e s 1 5 3 3 0 - 1 5 3 4 0 : A f t e r a l c h a r a c t e r s a r e e x a m i n e d , s t o r e

r e s u l t i n R E S U L T $ , a n r e t u r n .

Y O S U P P L Y

S t r i n g t d e c o d e .

S U G G E S T E D E N H A N C E M E N T S : W r i t e r o u t i n e s p r o g r a m w i l la t t e m p t t d e c o d e u s i n g s e v e r a l d i f f e r e n t c o d e n u m b e r s a u t o m a ti c a l l y , t h e l p u s e r d e c o d e s t r i n g s w h e r e c o d e n u m b e r i n o k n o w n .R E S U L T

S t r i n g d e c o d e d .

S A M P L E V A L U E : Y M N X N X F R U Q Z T H I S I S A M P L E( C o d e 5

W O R D C O U N T E RW H A T I D O E S : C o u n t s t h w o r d s i s e q u e n t i a l f i l e .

L E V E L : I n t e r m e d i a t e

Page 133: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 133/290

S t r i n g H a n d l i n g 1 1

1 0 R E * * * * * * * * * * * * * * * *1 1 R E 1 2 R E W O R D C O U N T E R1 3 R E 1 4 R E M * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E D A T A F I L E1 9 R E F I L E N A M E I L I N E 1 5 4 1 0 O 1 5 4 2 02 0 R E M R E S U L T2 1 R E C U N U M B E R W O R D S I F I L E2 2 R E C H N U M B E R C H A R A C T E R S I F I L E2 3 R E A V A V E R A G E W O R D L E N G T H2 4 R E S W N U M B E R S T A N D A R D W O R D S2 5 R E 2 6 0 R E M N O T E : E I T H E R L I N E 1 5 4 1 02 7 0 R E M N O T E : O 1 5 4 2 0 M A B U S E D2 8 R E 2 9 R E * * I N I T I A L I Z E * * 3 0 G O S U B 1 5 4 1 03 1 P R I N T " W O R D S : " 3 2 P R I N T U S I N G P L A C E ? ? C U3 3 P R I N T " A V E R A G E W O R D L E N G T H : " 3 4 P R I N T U S I N G P L A C E ? ; A V3 5 P R I N T " N U M B E R O F I V E - C H A R A C T E R W O R D S : " 3 6 P R I N T U S I N G P L A C E ? ; S W3 7 E N 1 5 4 0 0 R E M * * S U B R O U T I N E * * 1 5 4 1 0 R E M O P E N 1 , 8 , 8 , " 0 : F I L E N A M E , S , R "1 5 4 2 0 D O P E N # 1 , " F I L E N A M E , S " , D O , R1 5 4 3 0 D O1 5 4 4 0 G E T # 1 , A ?1 5 4 5 0 C H = C H + L E N ( A ? )1 5 4 6 0 F O N = T L E N ( A ? )1 5 4 7 0 C ? = M I D ? ( A ? , N , 1 )1 5 4 8 0 I C ? = C H R ? ( 3 2 ) A N L $ O C H R $ ( 3 2 ) T H E N C U = C U + 11 5 4 9 0 L ? = C ?1 5 5 0 0 N E X T1 5 5 1 0 L O O P U N T I L S 1 5 5 2 0 D C L O S E # 1 5 5 3 0 A V = C H A R / C U1 5 5 4 0 S W = C H A R / 51 5 5 5 0 P L A C E $ = " # # . # "1 5 5 6 0 R E T U R N

H O T U S E S U B R O U T I N E

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

Page 134: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 134/290

1 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

T h i s s u b r o u t i n e d e m o n s t r a t e s w h a t c a b d o n e , u s i n g w o r d c o u n ti n g a s a e x a m p l e . I w i l l r e a d i t h f i l e , c o u n t t h n u m b e r o w o r d s , a n d i s p l a y t h w o r d s c o u n t e d , t h a v e r a g e w o r d l e n g t h ,a n t h n u m b e r o " a v e r a g e " f i v e - c h a r a c t e r w o r d s i t h f i l e . T h l a t t e r m e a s u r e , w h e n c o m p a r e d w i t h a v e r a g e w o r d l e n g t h , h e l p ss h o w j u s t h o d i f f i c u l t t h t e x t i s T h s h o r t e r t h a v e r a g e w o r dl e n g t h , p r e s u m a b l y t h e a s i e r t h t e x t i t r e a d . T h i s s u b r o u t i n ec o n s i d e r s a n s p a c e t h a t i p r e c e d e d b c h a r a c t e r t h a t i n o s p a c e t m a r k t h e n o w o r d . T h i s s y s t e m w o r k s p r e t t y w e l l ;d o u b l e s p a c e s a r e n o t c o u n t e d a w o r d m a r k e r s , b u t s p a c e s a t h e n d s o s e n t e n c e s o r a t t h e n d s o w o r d s d c o u n t .

L I N E - B Y - L I N E D E S C R I P T I O NL i n e 3 1 0 : A c c e s s t h s u b r o u t i n e .L i n e 3 2 0 : P r i n t n u m b e r o w o r d s c o u n t e d .L i n e s 3 3 0 - 3 4 0 : P r i n t a v e r a g e w o r d l e n g t h .L i n e s 3 5 0 - 3 6 0 : P r i n t n u m b e r o f i v e - c h a r a c t e r w o r d s .L i n e s 1 5 4 1 0 - 1 5 4 2 0 : O p e n t h s e q u e n t i a l f i l e .L i n e 1 5 4 3 0 : W h i l e S T A T U S v a r i a b l e i n d i c a t e s t h e r e i s t i l l

i n f o r m a t i o n i t h f i l e , D t h f o l l o w i n g l o o p .L i n e 1 5 4 4 0 : G E s t r i n g f r o m t h f i l e .L i n e 1 5 4 5 0 : A s s i g n l e n g t h o t h n e s t r i n g t C H w h i c h

k e e p s t r a c k o t h t o t a l n u m b e r o c h a r a c t e r s i t h f i l e .L i n e 1 5 4 6 0 : S t a r t F O R - N E X T l o o p t l o o k a e a c h c h a r a c t e r

i t h s t r i n g .L i n e 1 5 4 7 0 : E x t r a c t s i n g l e c h a r a c t e r f r o m m i d d l e o t h s t r i n g

a p o s i t i o n N L i n e 1 5 4 8 0 : I t h e c h a r a c t e r i s p a c e a n t h l a s t c h a r a c t e r

l o o k e d a t L $ w a n o s p a c e , t h e n i n c r e m e n t t h w o r d c o u n t e r ,C U

L i n e 1 5 4 9 0 : A s s i g n v a l u e o C t L $ m a k i n g i t h n e l a s tc h a r a c t e r r e a d p r i o r t l o o p i n g a g a i n .

L i n e 1 5 5 0 0 : N e x t N L i n e 1 5 5 1 0 : L o o p w h i l e S r e m a i n s t r u e .L i n e 1 5 5 2 0 : A f t e r a l i n f o r m a t i o n i f i l e h a s b e e n p r o c e s s e d ,

c l o s e t h f i l e .

Page 135: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 135/290

S t r i n g H a n d l i n g 1 1

L i n e 1 5 5 3 0 : D i v i d e t h n u m b e r o c h a r a c t e r s i t h f i l e b t h n u m b e r o w o r d s f o u n d t f i g u r e a v e r a g e w o r d l e n g t h .

L i n e 1 5 5 4 0 : C a l c u l a t e s t a n d a r d w o r d s b y d i v i d i n g c h a r a c t e rt o t a l b 5

L i n e 1 5 5 5 0 : D e f i n e P L A C E $ a P R I N T U S I N G f o r m a t .

Y O S U P P L Y

D a t a f i l e t c o u n t .

R E S U L T

W o r d s i t h f i l e c o u n t e d .S A M P L E V A L U E : D o e s n o a p p l y

G L O B A L S E A R C HW H A T I D O E S : S e a r c h e s a f i l e f o s t r i n g a n r e p l a c e s e a c ho c c u r r e n c e w i t h a n e s t r i n g .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E G L O B A L S E A R C H1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E D A T A F I L E1 9 R E F I L E N A M E S I L I N E 1 5 6 1 0 A N 1 5 6 2 02 0 R E M R E S U L T2 1 R E S $ S T R I N G T S E A R C H F O R2 2 R E R E $ : S T R I N G T R E P L A C E W I T H2 3 R E 2 4 R E 2 5 0 R E M * * I N I T I A L I Z E * * 2 6 G O S U B 1 5 6 1 02 7 P R I N T " S E A R C H / R E P L A C E C O M P L E T E D "2 8 E N

Page 136: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 136/290

1 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 5 6 0 0 R E M * * S U B R O U T I N E * * 1 5 6 1 0 D O P E N # 1 , " F I L E N A M E "1 5 6 2 0 D O P E N # 2 , " F I L E 2 N A M E , S " , W1 5 6 3 0 I N P U T " E N T E R S T R I N G T S E A R C H F O : " ; S $1 5 6 4 0 I N P U T " E N T E R S T R I N G T R E P L A C E W I T H : " ; R E $1 5 6 5 0 D O1 5 6 6 0 I N P U T # 1 , A $1 5 6 7 0 P = 1 : R = I N S T R ( A $ , S $ , P )1 5 6 9 0 I R = G O T O 1 5 7 5 01 5 7 0 0 L $ = L E F T $ ( A $ , R - 1 )1 5 7 1 0 E = L E N ( S $ )1 5 7 2 0 R $ = M I D $ ( A $ , R + E )1 5 7 3 0 A $ = L $ + R E $ + R $1 5 7 4 0 P = I N S T R ( A $ , R E $ , P ) + L E N ( R E $ ) - 11 5 7 5 0 P R I N T # 2 , A $ ;1 5 7 6 0 L O O P U N T I L S 1 5 7 7 0 D C L O S E # 1 5 7 8 0 D C L O S E # 1 5 7 9 0 R E T U R N

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 6 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 7 0 : N o t i f y o p e r a t o r o c o m p l e t i o n o t a s k .L i n e 1 5 6 1 0 : O p e n f i l e n a m e t r e a d .L i n e 1 5 6 2 0 : O p e n f i l e n a m e f o n e f i l e w i t h c h a n g e s .L i n e 1 5 6 3 0 : A s f o s t r i n g t s e a r c h f o r .L i n e 1 5 6 4 0 : A s f o r e p l a c e m e n t s t r i n g .L i n e 1 5 6 5 0 : S t a r t D l o o p .L i n e 1 5 6 6 0 : G E s t r i n g f r o m t h f i l e .L i n e 1 5 6 7 0 : D e f i n e p o s i t i o n t b e g i n s e a r c h , P a f o s t a r t

o s e a r c h o t h i s s t r i n g .L i n e 1 5 6 9 0 : I i i n o t p r e s e n t i s t r i n g , g t t h f i l e w r i t e

r o u t i n e .L i n e 1 5 7 0 0 : T a k e l e f t p o r t i o n o t h s t r i n g , u t p o s i t i o n

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

Page 137: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 137/290

S t r i n g H a n d l i n g 1 1

L i n e 1 5 7 1 0 : D e f i n e t h p o s i t i o n o f t h s e a r c h s t r i n g a E L i n e 1 5 7 2 0 : T a k e t h r i g h t p o r t i o n o t h s t r i n g .L i n e 1 5 7 3 0 : A s s e m b l e n e s t r i n g .L i n e 1 5 7 4 0 : R e d e f i n e t p o s i t i o n f o l l o w i n g w h e r e s e a r c h

s t r i n g w a f o u n d .L i n e 1 5 7 5 0 : P r i n t n e s t r i n g t n e f i l e .L i n e 1 5 7 6 0 : L o o p u n t i l S T A T U S i n d i c a t o r s h o w s t h a t n

m o r e i n f o r m a t i o n i i t h f i l e .L i n e s 1 5 7 7 0 - 1 5 7 8 0 : C l o s e b o t h f i l e s .

Y O S U P P L Y

S e q u e n t i a l f i l e t p r o c e s s .

S U G G E S T E D E N H A N C E M E N T S : Y o u m a w r i t e t h n e s t r i n gs e g m e n t t t h f i l e i m m e d i a t e l y a n t h u s a v o i d t h e p r o b l e m o h a v i n g A p o s s i b l y l o n g e r t h a n 2 5 c h a r a c t e r s . U s o s e m i c o l o na t h e n o t h P R I N T s t a t e m e n t w i l l a l l o w y o t p u t e a c hs u c c e s s i v e p a r t o t h e c u r r e n t s t r i n g b e i n g p r o c e s s e d b a c k a c o n t i n u o u s s t r e a m o c h a r a c t e r s . O n l y t h C H R $ ( 1 3 ) ( c a r r i a g er e t u r n s ) t h a t m a r k e d t h o r i g i n a l f i l e w i l l b t r a n s p o r t e d o v e r t t h n e o n e . S t u d y s e q u e n t i a l f i l e s i t h C o m m o d o r e 1 2 8 P r og r a m m e r ' s R e f e r e n c e G u i d e f o m o r e i n f o r m a t i o n o t h i s .

R E S U L T

F i l e s e a r c h e d a n r e p l a c e m e n t m a d e .

S A M P L E V A L U E : D o e s n o a p p l y

Page 138: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 138/290

Page 139: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 139/290

G A M ER O U T I N E S

G a m e s a r p r o b a b l y a m o n g t h m o s t p o p u l a r p r o g r a m m i n g e x e rc i s e s f o r b e g i n n e r s a n a d v a n c e d u s e r s a l i k e . O y o u r f i r s t d a w i t h c o m p u t e r y o c a e a s i l y l e a r n t w r i t e " c r a p s " - p l a y i n gc o m p u t e r p r o g r a m . T h o s e C o m m o d o r e 1 2 u s e r s w h a r n o a l b u s i n e s s w i l l p r o b a b l y a s o m e t i m e w r i t e a a r c a d e - q u a l i t y j o y s t i c k -a c t i v a t e d , s h o o t - e m u p W h a t t h e y l e a r n i w r i t i n g g a m e s m a h a v e b r o a d a p p l i c a t i o n s i o t h e r a r e a s o p r o g r a m m i n g a w e l l .

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

1 2

Page 140: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 140/290

1 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

T h r e e r o u t i n e s d e a l w i t h u n i v e r s a l t o o l s o g a m e s : d e c k s o c a r d s , r o l l i n g d i c e , a n f l i p p i n g c o i n s . W e ' v e t r i e d t t a k e e v e nt h e s e b a s i c r o u t i n e s b e y o n d t h b a s i c . T h d i c e m o d u l e a l l o w s y o t s p e c i f y m o r e t h a n t w d i c e ; y o c a r o l l f i v e o s i o m o r ed u r i n g o n e r o l l . T h d i c e c a n b e r c - s i d e d a w e l l ; t h e y a r n o l i m i t e d t t h s t a n d a r d s i s i d e s . D u n g e o n a n D r a g o n s p l a y e r st a k e n o t e .

T h c o i n - f l i p ( c o i n s a r a c t u a l l y j u s t t w o - s i d e d d i c e , i y o t h i n k a b o u t i t h a b e e n s p i c e d u b a a n i m a t i o n r o u t i n e t h a tm a k e s i s e e m a i t h c o i n i a c t u a l l y b e i n g t h r o w n u i t h a i p r i o r t l a n d i n g h e a d s o t a i l s . W h i l e s i m p l e s u b r o u t i n e i s n ' ts u f f i c i e n t t o p r o v i d e f u l l - f l e d g e d g r a p h i c s i m a g e s o f r e a l p l a y i n gc a r d s , o u s u b r o u t i n e s h o w s h o t d e a l d e c k e f f i c i e n t l y a n u s e s t h e C o m m o d o r e 1 2 8 ' s g r a p h i c s c h a r a c t e r s t p o r t r a y s u i t s .

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

j o y s t i c k s t m a n i p u l a t e o b j e c t s o t h s c r e e n . S u b r o u t i n e s a r p r o v i d e d t m o v e o b j e c t s o b o t h t h 4 0 - c o l u m n a n 8 0 - c o l u m ns c r e e n s , a i k e y b o a r d - j o y s t i c k s i m u l a t i o n m o d u l e f o t h o s e w h w a n t t u s t h c u r s o r k e y s i n s t e a d o h u n t i n g u j o y s t i c k t p l u g i n S e v e r a l o t h r o u t i n e s a l l o w y o t d r a w o t h s c r e e n i c o l o r s , a i n t r o d u c t i o n t t h m o r e s o p h i s t i c a t e d g r a p h i c s w o r kt h a t f o l l o w s i n C h a p t e r 6

U S I N G J O Y S T I C K SL e t ' s s t a r t o f w i t h o n e o t h m o s t m y s t i f y i n g c a p a b i l i t i e s o

t h C o m m o d o r e 1 2 8 : j o y s t i c k m a n i p u l a t i o n o s c r e e n o b j e c t s . A l o u h a v e m a r v e l e d a a r c a d e - q u a l i t y g a m e s f o t h C o m m o d o r e1 2 t h a t l e t h e p l a y e r u s e a j o y s t i c k t m o v e s p a c e s h i p , r a c i n gc a r , o o t h e r t o k e n a r o u n d o t h s c r e e n w h i l e f i r i n g " m i s s i l e s " a to n c o m i n g a t t a c k e r s .

U n f o r t u n a t e l y , g e t t i n g o b j e c t s , s p r i t e s , o o t h e r t h i n g s t m o v ei n o j u s t a m a t t e r o j o y s t i c k a c t i o n d i r e c t l y c a u s i n g m o v e m e n t

Page 141: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 141/290

G a m e R o u t i n e s 1 2

i d e s i r e d d i r e c t i o n . T h p r o c e s s i b i m o r e c o m p l e x t h a nt h a t , a n t h i s c h a p t e r i n c l u d e s n l e s s t h a n t e j o y s t i c k s u b r o ut i n e s t e x p l o r e d i f f e r e n t a s p e c t s o i t

F r o m p r o g r a m m e r ' s s t a n d p o i n t , t h u s o t h j o y s t i c k sb r e a k s d o w n i n t o s e v e r a l n e a t m o d u l e s . W h e n d e a l i n g w i t hn o n s p r i t e o b j e c t s , w n e e d t k n o w w h e r e o t h C o m m o d o r e1 2 8 ' s s c r e e n t h e o b j e c t t b m o v e d i s W a l s o m u s t c h e c k , a o f t e n a p o s s i b l e , t h s t a t u s o f t h p l a y e r ' s j o y s t i c k t s e i i i p r e s s e d i a n d i r e c t i o n , o i t h F I R E b u t t o n h a b e e n d p r e s s e d . I s o t h p r o g r a m m e r m u s t u p d a t e t h l o c a t i o n o t h o b j e c t o t h s c r e e n . T h i s i u s u a l l y d o n e b c h a n g i n g t h v a l u eo t h l o c a t i o n w h e r e t h o b j e c t i p r i n t e d , b a d d i n g o s u b t r a c ti n g . W n e e d t p u t h o b j e c t i t h n e p o s i t i o n a n d , i w d n o w a n t t l e a v e " t r a i l " b e h i n d t h o b j e c t , w n e e d t e r a s e i t i m a g e f r o m t h o l l o c a t i o n .

T h j o y s t i c k r o u t i n e s h a v e b e e n i n c l u d e d i t h i s s e c t i o n t a l l o w s e v e r a l d i f f e r e n t t y p e s o o b j e c t m o v e m e n t i y o u r p r g r a m s . S o m e a l l o w m o v i n g a o b j e c t o n l y i n o r t h / s o u t h , e a s t /w e s t d i r e c t i o n s . O t h e r s a l l o w d i a g o n a l m o v e m e n t a s w e l l a n t e l ly o w h e n t h f i r e b u t t o n h a b e e n p r e s s e d .

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

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

j o y s t i c k .

8 0 - C O L U M N J O Y S T I C K — H O R I Z O N T A L M O V E M E N TW H A T I D O E S : M o v e s o b j e c t l e f t a n r i g h t o n l y .

L E V E L : A d v a n c e d

Page 142: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 142/290

1 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 0 R E M * * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E 8 C O L U M N J O Y S T I C K1 3 R E H O R I Z O N T A L M O V E M E N T1 4 R E * 1 5 R E * * * * * * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E + V A R I A B L E S + 1 8 R E 1 9 R E U S E R S U P P L I E S2 0 R E C U R S R ? : C U R S O R C H A R A C T E R2 1 R E R O W : R O W D E S I R E D2 2 0 R E M J O Y S T I C K M O V E M E N T2 3 R E R E S U L T2 4 0 R E M C U R S O R M O V E S A C R O S S S C R E E N2 5 R E I D E S I R E D R O W . F L A S H E S R E 2 6 R E W H E N F I R E B U T T O N I P R E S S E D .2 7 R E 2 8 0 R E M2 9 R E * * I N I T I A L I Z E * * 3 0 R O W = 2 03 1 C U R S R $ = C H R $ ( 2 0 9 )3 2 G O T O 1 7 0 1 01 7 0 0 0 R E M * * S U B R O U T I N E * * 1 7 0 1 0 P R I N T C H R $ ( 1 5 4 )1 7 0 2 0 P = 1 7 0 3 0 D A T A - 0 , - 0 , + l , 0 , 0 , 0 , - 1 , 01 7 0 4 0 F O N = T 1 7 0 5 0 R E A D P ( N )1 7 0 6 0 N E X T1 7 0 7 0 S C N C L R1 7 0 8 0 P $ ( 3 ) = C H R $ ( 2 9 )1 7 0 9 0 P $ ( 7 ) = C H R $ ( 1 5 7 )1 7 1 0 0 F O N = T R O W : P R I N T C H R $ ( 1 7 ) : N E X T1 7 1 1 0 G O T O 1 7 1 3 01 7 1 2 0 P R I N T C H R $ ( 1 5 7 ) ;1 7 1 3 0 A = J O Y ( 1 )1 7 1 4 0 P R I N T C H R $ ( 1 5 4 ) ;1 7 1 5 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 7 1 6 0 I F L A G = 1 T H E N P R I N T C H R $ ( 4 2 ) ; C H R $ ( 1 5 7 ) ; C H R $ ( 1 5 0 ) ;1 7 1 7 0 P = P + P ( A )1 7 1 8 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 7 1 9 0 I P < O P > 7 9 T H E N P = P - P ( A ) : G O T O 1 7 1 3 01 7 2 0 0 B $ = P $ ( A )1 7 2 1 0 P R I N T B $ ; C U R S R $ ;1 7 2 2 0 G O T O 1 7 1 2 0

H O T U S T H S U B R O U T I N E

W h i l e t h C o m m o d o r e 1 2 8 ' s p o r t s c a b u s e d w i t h j o y s t i c k s ,p a d d l e s , l i g h t p e n s , a n o t h e r a c c e s s o r i e s , t h j o y s t i c k s a r e p r o b a -

Page 143: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 143/290

G a m e R o u t i n e s 1 2

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

p a d d l e i l i k e a p o t e n t i o m e t e r o v o l u m e c o n t r o l t h a t r t u r n s a a n a l o g v a l u e , i . e . , s o m e n u m b e r y o s u p p l y b e t w e e na n 2 5 5 , d e p e n d i n g o n h o f a t h p a d d l e h a b e e n t u r n e d . I p r o v i d e s a a b s o l u t e i n d i c a t i o n o f w h e r e t h o b j e c t s h o u l d b o t h s c r e e n , t h h o r i z o n t a l o v e r t i c a l c o o r d i n a t e , s o t s p e a k ,r e l a t i v e t t h p a d d l e ' s p o s i t i o n . U n f o r t u n a t e l y , s m a l l m o v em e n t o t h p a d d l e c a r e s u l t i l a r g e m o v e m e n t o t h o b j e c to t h s c r e e n . T h u s o p a d d l e s f r o m B A S I C i n o r e c o mm e n d e d b C o m m o d o r e , b e c a u s e t h e y c a b u n r e l i a b l e .

S o m e g a m e s w o r k b e t t e r w h e n t h j o y s t i c k c o n t r o l i u s e d f o m o v e m e n t l e f t a n r i g h t . T h j o y s t i c k i n o a a b s o l u t e e q u i v al e n t o p a d d l e . T h n o n a n a l o g j o y s t i c k s u s e d w i t h t h C o m m od o r e 1 2 h a v e n w a o i n d i c a t i n g e x a c t l y w h e r e o t h e s c r e e na o b j e c t s h o u l d b e I n s t e a d , t h j o y s t i c k w i l l i n d i c a t e z e r o w h e nn o p r e s s e d i d i r e c t i o n a n n u m b e r w h e n t h a t s w i t c h i c l o s e d .

T h i s a p p r o a c h m a k e s g a m e p r o g r a m m i n g s i m p l e r . W h e n t h j o y s t i c k i p r e s s e d t t h r i g h t , m o v e t h o b j e c t o n p o s i t i o n t t h r i g h t . K e e p d o i n g t h a t a l o n g a t h j o y s t i c k r e m a i n s p r e s s e dr i g h t w a r d .

T h i s s u b r o u t i n e w i l l t e l l y o u w h e t h e r o n o t t h e j o y s t i c k i p r e s s e d t t h r i g h t o l e f t , p l u s r e p o r t o t h e s t a t u s o t h F I R Eb u t t o n . Y o u r p r o g r a m s h o u l d r e p e a t e d l y c h e c k t s e w h i c h d i r e ct i o n ( i a n y ) i i n d i c a t e d a n t a k e a c t i o n a c c o r d i n g l y . S a m p l em o v e m e n t i p r o v i d e d a n e x p l a i n e d b e l o w u n d e r L i n e - b y - L i n eD e s c r i p t i o n .

B e c a u s e o t h c o m p l e x i t y o t h i s t o p i c , s o m e o t h d e s c r i pt i o n s i n t h i s c h a p t e r w i l l b b i m o r e v e r b o s e t h a n t h o s e i e a r l i e r p a r t s o t h b o o k .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 3 0 0 : Y o u ' l l b m o v i n g t h o b j e c t o n l y i s i n g l e r o o t h s c r e e n , s i m u l a t i n g p a d d l e s u c h a u s e d i g a m e s l i k e B r e a ko u t . H e r e t h r o i d e f i n e d a r o 2 0

Page 144: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 144/290

1 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 3 1 0 : T h o b j e c t b e i n g m o v e d , w h i c h w e ' l l c a l l C U R S R $ ,i d e f i n e d a s C H R $ ( 2 0 9 ) , s o l i d b a l l .

L i n e 3 2 0 : T h s u b r o u t i n e i a c c e s s e d f r o m h e r e . I t h i s c a s et h e r o u t i n e i a s t a n d a l o n e p r o g r a m a n n o s u b r o u t i n e , s c a l l i n g i i n o r e a l l y n e c e s s a r y .

L i n e 1 7 0 1 0 : C h a n g e c h a r a c t e r c o l o r t l i g h t g r a y .L i n e 1 7 0 2 0 : D e f i n e i n i t i a l p o s i t i o n o f c u r s o r a 1 L i n e 1 7 0 3 0 : D A T A l i n e s s h o w i n g d i r e c t i o n c u r s o r s h o u l d

m o v e w h e n g i v e n v a l u e o J O Y ( n ) i r e t u r n e d .L i n e s 1 7 0 4 0 - 1 7 0 6 0 : R e a d t h o s e v a l u e s t t h a r r a y P ( n ) .L i n e 1 7 0 7 0 : C l e a r t h s c r e e n .L i n e s 1 7 0 8 0 - 1 7 0 9 0 : D e f i n e P $ ( 3 ) a s C H R $ ( 2 9 ) , t h C U R S O R

R I G H T c h a r a c t e r , a n P $ ( 7 ) a s t h C U R S O R L E F T c h a r a c t e r .L i n e 1 7 1 0 0 : M o v e c u r s o r d o w n R O r o w s , b p r i n t i n gC H R $ ( 1 7 ) , w h i c h i t h e c u r s o r d o w n c h a r a c t e r .

L i n e 1 7 1 1 0 : S k i p t t h e " r e a d j o y s t i c k " l i n e .L i n e 1 7 1 2 0 : M o v e t h c u r s o r t t h l e f t , u s i n g C H R $ ( 1 5 7 ) , t h

C U R S O R L E F T c h a r a c t e r . T h i s i d o n e a t h s t a r t o e a c h l o o pt h r o u g h t h j o y s t i c k r o u t i n e . T h r e a s o n w i l l b e c o m e a p p a r e n ts h o r t l y .

L i n e 1 7 1 3 0 : S t o r e i v a r i a b l e t h v a l u e r e t u r n e d b r e a di n J o y s t i c k 1 T h i s v a l u e w i l l v a r y d e p e n d i n g o h o t h j o y s t i c ki p r e s s e d . I i i s e t t o n e u t r a l p o s i t i o n , a w i l l b r e t u r n e d . I i i p r e s s e d u p v a l u e o w i l l b r e t u r n e d . A i p r o c e e d sa r o u n d t h " c o m p a s s " t n o r t h e a s t , e a s t , s o u t h e a s t , s o u t h , e t c . ,t h v a l u e w i l l r a n g e f r o m t t t 5 a n s f o r t h . I t h F I R E b u t t o n i a l s o p r e s s e d , t h e s e n u m b e r s a r i n c r e a s e d b 1 2 8 .

L i n e 1 7 1 4 0 : C h a n g e c h a r a c t e r c o l o r b a c k t l i g h t g r a y .L i n e 1 7 1 5 0 : I i g r e a t e r t h a n 1 2 7 , t h e n t h j o y s t i c k b u t t o n

i p r e s s e d t o o . I t h a t c a s e , s e t F L A G t e q u a l t s h o w t h a t t h ej o y s t i c k b u t t o n i p r e s s e d . T h e n s u b t r a c t 1 2 f r o m t r e v e a l t h a c t u a l d i r e c t i o n , 0 - 8 , t h a t t h s t i c k i o r i e n t e d t o w a r d . I i n o m o r e t h a n 1 2 7 , t h e n s e F L A G t t s h o w t h a t t h j o y s t i c kb u t t o n i n o p r e s s e d .

L i n e 1 7 1 6 0 : I F L A G e q u a l s 1 w w a n t t s h o w t h u s e r t h a tt h F I R E b u t t o n h a b e e n p r e s s e d . I y o u r p r o g r a m s y o m a h a v es o m e a c t i o n t a k e p l a c e . s o u n d w i l l m a k e n o i s e . P e r h a p s

Page 145: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 145/290

G a m e R o u t i n e s 1 2

m i s s i l e w i l l b r e l e a s e d . F o t h i s s u b r o u t i n e ' s d e m o n s t r a t i o n ,y o u ' l l o n l y m a k e t h e c u r s o r f l a s h r e d . S o p r i n t C H R $ ( 4 2 ) , a a s t e r i s k , t m a k e t h c u r s o r " g l i m m e r " l i t t l e . T h e n , b e c a u s e t h c u r s o r h a m o v e d o n s p a c e t t h r i g h t a f t e r p r i n t i n g t h a s t e ri s k , m o v e i b a c k t i t o r i g i n a l p o s i t i o n b p r i n t i n g C H R $ ( 1 5 7 ) ,t h C U R S O R L E F T s y m b o l . N e x t , p r i n t C H R $ ( 1 5 0 ) t c h a n g e t h c u r s o r t o r e d . N o t i c e t h a t s e m i c o l o n s s e p a r a t e e a c h c h a r a c t e rp r i n t e d t m a k e s u r e t h e y a r e p r i n t e d o n a f t e r a n o t h e r o t h s a m e l i n e . O c o u r s e , o n l y t h e a s t e r i s k i a a c t u a l p r i n t a b l ec h a r a c t e r , s o t h C U R S O R L E F T c h a r a c t e r i r e q u i r e d o n l y a f t e r i t

L i n e 1 7 1 7 0 : r e p r e s e n t s t h h o r i z o n t a l p o s i t i o n o t h r o w h e r e t h c u r s o r r e s i d e s . I t h j o y s t i c k i o r i e n t e d l e f t o r i g h t ,y o n e e d t c h a n g e t h v a l u e o P Y o d t h i s b t a k i n g a n a d d i n g t i t h v a l u e s t o r e d i n P ( A ) . N o t i c e f r o m t h d a t a l i n e st h a t P ( A ) h a 0 s e x c e p t i p o s i t i o n s a n 7 w h i c h c o r r e s p o n d t r i g h t a n l e f t . I J O Y ( l ) r e t u r n s 3 t h e n t h j o y s t i c k i p r e s s e dr i g h t a n t h v a l u e o P ( 3 ) , w h i c h i + 1 w i l l b a d d e d t o P . I J O Y ( l ) r e t u r n s 7 t h e n t h j o y s t i c k i p r e s s e d l e f t a n - w i l lb a d d e d t P A n o t h e r o r i e n t a t i o n a d d s a t a n l e a v e s i i t h s a m e p l a c e .

L i n e 1 7 1 8 0 : S i n c e y o d o n ' t w a n t t l e a v e t r a i l b e h i n d t h m o v i n g o b j e c t , b e f o r e p r i n t i n g a i m a g e o t h c u r s o r i t h n e l o c a t i o n , y o f i r s t n e e d t e r a s e i f r o m i t o l l o c a t i o n . T h a ti d o n e h e r e , b p r i n t i n g s p a c e , C H R $ ( 3 2 ) , f o l l o w e d b t h C H R $ ( 1 5 7 ) t h a t m o v e s i b a c k t t h n o w - e m p t y o l l o c a t i o n .

L i n e 1 7 1 9 0 : Y o d o n ' t w a n t t h e c u r s o r t m o v e b e y o n d t h l i m i t s o t h s c r e e n . H e r e y o u c h e c k t s e t h a t i n o l e s s t h a n

o m o r e t h a n 7 9 w h i c h w o u l d t a k e i t t h l i m i t s o t h 8 0 - c o l u m n s c r e e n . I i i s t h e n r e v e r s e t h e m o v e ( w h i c h h a s n ' tb e e n i m p l e m e n t e d y e t ) b s u b t r a c t i n g f r o m t h v a l u e y o h a v ej u s t a d d e d .

L i n e 1 7 2 0 0 : V a r i a b l e B t a k e s o t h v a l u e s t o r e d i n P $ ( A ) ,w h i c h , l i k e P ( A ) w i l l h a v e e i t h e r l e f t - o r i g h t - m o v i n g v a l u e .Y o P R I N T B $ w h i c h m o v e s t h c u r s o r l e f t o r r i g h t ( o l e a v e s i i p l a c e , i 0 ) f o l l o w e d b t h C U R S R $ .

L i n e 1 7 2 1 0 : T h w h o l e p r o c e s s r e p e a t s t a c c o u n t f o t h n e x tm o v e .

Page 146: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 146/290

1 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

J u s t m o v e j o y s t i c k . R O c a b d e f i n e d a s t h e s c r e e n r o o w h i c h t h o b j e c t m o v e s . C U R S R $ c a b d e f i n e d a a n c h a r a c t e ry o w i s h .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

O b j e c t w i l l m o v e o s c r e e n u n d e r j o y s t i c k c o n t r o l , l e f t o r i g h to n l y .

8 0 - C O L U M N J O Y S T I C K — V E R T I C A L M O V E M E N TW H A T I D O E S : M o v e s o b j e c t i n o r t h a n s o u t h d i r e c t i o n s o n l y .

L E V E L : I n t e r m e d i a t e1 0 0 R E M * * * * * * * * * * * * * * * * * * * * * *1 1 0 R E M1 2 0 R E M 8 C O L U M N J O Y S T I C K1 3 R E V E R T I C A L M O V E M E N T1 4 0 R E M * 1 5 R E * * * * * * * * * * * * * * * * * * * * * *1 6 0 R E M1 7 R E M + + V A R I A B L E S + 1 8 0 R E M1 9 R E U S E R S U P P L I E S2 0 0 R E M C U R S R $ : C U R S O R C H A R A C T E R2 1 R E C O L : C O L U M N D E S I R E D2 2 0 R E M J O Y S T I C K M O V E M E N T2 3 R E R E S U L T2 4 0 R E M C U R S O R M O V E S U A N D O W N2 5 0 R E M I D E S I R E D C O L U M N . F L A S H E S R E 2 6 R E W H E N F I R E B U T T O N I P R E S S E D .2 7 0 R E M2 8 R E 2 9 0 R E M * * I N I T I A L I Z E * * 3 0 C O L U M N = 53 1 C U R S R $ = C H R $ ( 2 0 9 )3 2 G O T O 1 7 3 1 01 7 3 0 0 R E M * * S U B R O U T I N E * *

Page 147: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 147/290

G a m e R o u t i n e s 1 2

1 7 3 1 0 P R I N T C H R $ ( 1 5 4 )1 7 3 2 0 P = 1 7 3 3 0 D A T A - 1 , 0 , 0 , 0 , + 1 , 0 , 0 , 01 7 3 4 0 F O N = T 1 7 3 5 0 R E A D P ( N )1 7 3 6 0 N E X T1 7 3 7 0 S C N C L R1 7 3 8 0 P $ ( 1 ) = C H R $ ( 1 4 5 )1 7 3 9 0 P $ ( 5 ) = C H R $ ( 1 7 )1 7 4 0 0 F O N = T C O L : P R I N T C H R $ ( 2 9 ) ; : N E X T1 7 4 1 0 G O T O 1 7 4 3 01 7 4 2 0 P R I N T C H R $ ( 1 5 7 ) ;1 7 4 3 0 A = J O Y ( 1 )1 7 4 4 0 P R I N T C H R $ ( 1 5 4 ) ;1 7 4 5 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 7 4 6 0 I F L A G = 1 T H E N P R I N T C H R $ ( 4 2 ) ; C H R $ ( 1 5 7 ) ; C H R $ ( 1 5 0 ) ;1 7 4 7 0 P = P + P ( A )1 7 4 8 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 7 4 9 0 I F P < 1 O P > 2 4 T H E N P = P - P ( A ) : G O T O 1 7 4 3 01 7 5 0 0 B $ = P $ ( A )1 7 5 1 0 P R I N T B $ ; C U R S R $ ;1 7 5 2 0 G O T O 1 7 4 2 0

H O T U S E S U B R O U T I N E

T h i s i t h s a m e a t h l a s t r o u t i n e , b u w i t h u p / d o w nm o v e m e n t o n l y . Y o m a d e f i n e t h c o l u m n y o w a n t t h o b j e c tt m o v e i n

L I N E - B Y - L I N E D E S C R I P T I O N

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

L i n e 3 0 0 : C O L U M N i d e f i n e d , r a t h e r t h a n R O W .L i n e 1 7 3 3 0 : D A T A e l e m e n t s a r a r r a n g e d t r e f l e c t u p a n d

d o w n m o t i o n i n s t e a d o s i d e t s i d e .L i n e s 1 7 3 8 0 - 1 7 3 9 0 : T h u p / d o w n c u r s o r m o v e m e n t c h a r a c

t e r s a r e d e f i n e d i n s t e a d o t h s i d e - t o - s i d e c h a r a c t e r s .L i n e 1 7 4 9 0 : T h l i m i t s o m o v e m e n t a r f r o m t 2 4 t h

h e i g h t o t h s c r e e n .

Page 148: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 148/290

1 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

J o y s t i c k m o v e m e n t .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

O b j e c t m o v e s u p a n d d o w n o n l y , u n d e r j o y s t i c k c o n t r o l .

8 0 - C O L U M N J O Y S T I C K — A L L D I R E C T I O N SW H A T I D O E S : M o v e s o b j e c t d i a g o n a l l y , n o r t h , s o u t h , e a s t , a n w e s t .

L E V E L : A d v a n c e d

1 0 R E * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E 8 C O L U M N J O Y S T I C K1 3 R E A L D I R E C T I O N S1 4 R E 1 5 0 R E M * * * * * * * * * * * * * * * * * * * * * * *1 6 0 R E M1 7 R E + V A R I A B L E S + 1 8 R E 1 9 R E U S E R S U P P L I E S2 0 R E C U R S R $ : C U R S O R C H A R A C T E R2 1 R E J O Y S T I C K M O V E M E N T2 2 R E R E S U L T2 3 0 R E M C U R S O R M O V E S A R O U N D S C R E E N2 4 0 R E M F L A S H E S R E W H E N F I R E B U T T O N '2 5 R E I P R E S S E D .2 6 0 R E M2 7 0 R E M1 7 6 0 0 R E M * * S U B R O U T I N E * * 1 7 6 1 0 P R I N T C H R $ ( 1 5 4 )1 7 6 2 0 C U R S R $ = C H R $ ( 2 0 9 )1 7 6 3 0 D A T A - 8 0 , - 7 9 , + 1 , + 8 1 , + 8 0 , + 7 9 , - 1 , - 8 11 7 6 4 0 F O N = T 1 7 6 5 0 R E A D P ( N )1 7 6 6 0 N E X T1 7 6 7 0 P = 1 7 6 8 0 S C N C L R

Page 149: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 149/290

G a m e R o u t i n e s 1 3

1 7 6 9 0 P $ ( 1 ) = C H R $ ( 1 4 5 )1 7 7 0 0 P $ ( 2 ) = C H R $ ( 1 4 5 ) + C H R $ ( 2 9 )1 7 7 1 0 P $ ( 3 ) = C H R $ ( 2 9 )1 7 7 2 0 P $ ( 4 ) = C H R $ ( 1 7 ) + C H R $ ( 2 9 )1 7 7 3 0 P $ ( 5 ) = C H R $ ( 1 7 )1 7 7 4 0 P $ ( 6 ) = C H R $ ( 1 7 ) + C H R $ ( 1 5 7 )1 7 7 5 0 P $ ( 7 ) = C H R $ ( 1 5 7 )1 7 7 6 0 P $ ( 8 ) = C H R $ ( 1 5 7 ) + C H R $ ( 1 4 5 )1 7 7 7 0 G O T O 1 7 7 9 01 7 7 8 0 P R I N T C H R $ ( 1 5 7 ) ;1 7 7 9 0 A = J O Y ( 1 )1 7 8 0 0 P R I N T C H R $ ( 1 5 4 ) ;1 7 8 1 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 7 8 2 0 I F L A G = 1 T H E N P R I N T C H R $ ( 4 2 ) ; C H R $ ( 1 5 7 ) ; C H R $ ( 1 5 0 ) ;1 7 8 3 0 P = P + P ( A )1 7 8 4 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 7 8 5 0 I F P < 1 O P > 1 9 2 0 T H E N P = P - P ( A ) : G O T O 1 7 7 9 01 7 8 6 0 B $ = P $ ( A )1 7 8 7 0 P R I N T B $ ; C U R S R $ ;1 7 8 8 0 G O T O 1 7 7 8 0

H O T O U S E S U B R O U T I N E

G a m e s l i k e P a c M a n ( T M ) a n m a z e c h a s e s w o r k b e s t i t h o b j e c t c a b m o v e d o n l y i n o r t h , s o u t h , e a s t , a n w e s t d i r e ct i o n . S o m e p r o g r a m s n e e d d i a g o n a l m o v e m e n t a w e l l .

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

L I N E - B Y - L I N E D E S C R I P T I O N

K e d i f f e r e n c e s b e t w e e n t h e p r e v i o u s t w r o u t i n e s w i l l b p o i n t e d o u t . m a i n d i f f e r e n c e h e r e i t h a t P i n s t e a d o r e p r es e n t i n g p o s i t i o n w i t h i n r o o c o l u m n , w i l l r e p r e s e n t a a b s ol u t e s c r e e n l o c a t i o n f r o m ( t h e u p p e r - l e f t - h a n d c o r n e r o t h s c r e e n ) t 1 9 2 0 ( i t h l o w e r r i g h t o t h n e x t - t o - l a s t r o w ) .

L i n e 1 7 6 3 0 : H e r e i t h D A T A l i n e s , v a l u e s a r s t o r e d f o a l e i g h t p o s s i b l e n o n z e r o n u m b e r s r e t u r n e d f r o m J O Y ( l ) . F o e x a m p l e ,i t h j o y s t i c k i p r e s s e d u p t h e n J O Y ( l ) w i l l e q u a l 1 a n P ( l )e q u a l s - 8 0 . S i n c e y o a r u s i n g a 8 0 - c o l u m n s c r e e n , s u b t r a c t i n g8 f r o m w i l l m o v e t h o b j e c t u p w a r d o n w h o l e r o w . A d d i n g 8

Page 150: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 150/290

1 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

t w i l l m o v e i o n w h o l e r o d o w n w a r d . A d d i n g 8 w o u l dm o v e i o n r o d o w n a n o n p l a c e t t h r i g h t , w h i l e 7 w o u l d m o v e i d o w n o n r o b u t o n e t t h l e f t 8 p l u s - e q u a l s 7 9 ) .

L i n e s 1 7 6 9 0 - 1 7 7 6 0 : H e r e v a l u e s a r p r o d u c e d f o P $ ( n ) u s i n gC H R $ c o d e s t h a t c o r r e s p o n d t t h c u r s o r m o v e m e n t y o w a n t t a c h i e v e . T h a t i s C H R $ ( 1 4 5 ) C H R $ ( 2 9 ) m o v e s t h e c u r s o r i n o r t h e a s t d i r e c t i o n . N o t e t h a t P $ ( n ) a c t u a l l y d o e s t h m o v e m e n to t h c u r s o r ; o n l y k e e p s t r a c k o w h e r e t h c u r s o r i o t h s c r e e n f o y o s y o c a k e e p i f r o m m o v i n g o f t h s c r e e na r e a .

L i n e 1 7 8 5 0 : H e r e i w h e r e y o c h e c k o t h p o s i t i o n o t h c u r s o r t m a k e s u r e i i s n ' t o u t s i d e t h e s c r e e n l i m i t s . A c t u a l l y ,t h c u r s o r w o u l d n o m o v e f r o m t h s c r e e n ; h o w e v e r y o u w o u l dl o s e t r a c k o w h e r e i r e a l l y w a i y o d i d n ' t i m p o s e t h i sl i m i t .

Y O S U P P L Y

S i m p l y m o v e j o y s t i c k s .

S U G G E S T E D E N C H A N C E M E N T S : N o n e .

R E S U L T

O b j e c t w i l l m o v e o s c r e e n .

8 0 - C O L U M N J O Y S T I C K — C O L O R D R A W I N GW H A T I D O E S : D r a w s o s c r e e n i c o l o r .

L E V E L : I n t e r m e d i a t e

Page 151: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 151/290

G a m e R o u t i n e s 1 3

1 0 R E * * * * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E 8 C O L U M N J O Y S T I C K1 3 R E C O L O R D R A W I N G1 4 R E 1 5 R E * * * * * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E M + + V A R I A B L E S + 1 8 R E 1 9 R E U S E R S U P P L I E S2 0 R E C U R S R $ : C U R S O R C H A R A C T E R2 1 R E J O Y S T I C K M O V E M E N T2 2 R E M R E S U L T2 3 R E C U R S O R M O V E S A R O U N D S C R E E N2 4 R E F I R E B U T T O N C H A N G E S C O L O R S2 5 R E 2 6 R E 1 7 9 0 0 R E * * S U B R O U T I N E * * 1 7 9 1 0 D I C ( 1 6 )1 7 9 2 0 P R I N T C H R $ ( 1 5 4 )1 7 9 3 0 C U R S R $ = C H R $ ( 2 0 9 )1 7 9 4 0 D A T A - 8 0 , - 7 9 , + 1 , + 8 1 , + 8 0 , + 7 9 , - 1 , - 8 11 7 9 5 0 D A T A 1 4 9 , 1 5 0 , 1 5 1 , 1 5 2 , 1 5 3 , 1 5 4 , 1 5 5 , 1 5 6 , 1 5 8 ,

1 5 9 , 1 4 4 , 5 , 2 8 , 3 0 , 3 11 7 9 6 0 F O N = T 1 7 9 7 0 R E A D P ( N )1 7 9 8 0 N E X T1 7 9 9 0 F O N = T 1 1 8 0 0 0 R E A D C ( N *1 8 0 1 0 N E X T1 8 0 2 0 C O L R = 11 8 0 3 0 P R I N T C H R $ ( C O L R ) ;1 8 0 4 0 P = 1 8 0 5 0 S C N C L R1 8 0 6 0 P $ ( 1 ) = C H R $ ( 1 4 5 )1 8 0 7 0 P $ ( 2 ) = C H R $ ( 1 4 5 ) + C H R $ ( 2 9 )1 8 0 8 0 P $ ( 3 ) = C H R $ ( 2 9 )1 8 0 9 0 P $ ( 4 ) = C H R $ ( 1 7 ) + C H R $ ( 2 9 )1 8 1 0 0 P $ ( 5 ) = C H R $ ( 1 7 )1 8 1 1 0 P $ ( 6 ) = C H R $ ( 1 7 ) + C H R $ ( 1 5 7 )1 8 1 2 0 P $ ( 7 ) = C H R $ ( 1 5 7 )1 8 1 3 0 P $ ( 8 ) = C H R $ ( 1 5 7 ) + C H R $ ( 1 4 5 )1 8 1 4 0 G O T O 1 8 1 6 01 8 1 5 0 P R I N T C H R $ ( 1 5 7 ) ;1 8 1 6 0 A = J O Y ( 1 )1 8 1 7 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 8 1 8 0 I F L A G = 1 T H E N B E G I N1 8 1 9 0 C O L R = C O L R + 11 8 2 0 0 I C O L R = 1 6 T H E N C O L R = 11 8 2 1 0 P R I N T C H R $ ( C ( C O L R ) ) ;1 8 2 2 0 F L A G = 01 8 2 3 0 B E N D1 8 2 4 0 P = P + P ( A )1 8 2 5 0 R E P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 8 2 6 0 I F P < 1 O P > 1 9 2 0 T H E N P = P - P ( A ) : G O T O 1 8 1 6 0

Page 152: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 152/290

1 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 8 2 7 0 I P / 8 0 = I N T ( P / 8 0 ) T H E N P = P - P ( A ) : G O T O 1 8 1 6 01 8 2 8 0 B $ = P $ ( A )1 8 2 9 0 P R I N T B $ ; C U R S R $ ;1 8 3 0 0 G O T O 1 8 1 5 0

H O T U S E S U B R O U T I N E

U s t h j o y s t i c k t m o v e t h o b j e c t a r o u n d o n t h s c r e e n .P r e s s i n g t h F I R E b u t t o n c h a n g e s t h c u r s o r c o l o r . Y o m a c y c l e t h r o u g h a l t h c o l o r s a v a i l a b l e a n r e t u r n t t h o r i g i n a l .

L I N E - B Y - L I N E D E S C R I P T I O N

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

L i n e 1 7 9 1 0 : T h i s a r r a y s t o r e s t h C H R $ c o d e s f o t h i n d i v i du a c o l o r s a v a i l a b l e .

L i n e 1 7 9 5 0 : T h C H R $ c o d e s a r e l i s t e d h e r e a n r e a d i n t o t h a r r a y b l i n e s 1 7 9 9 0 - 1 8 0 1 0 .

L i n e 1 8 0 2 0 : T h i n i t i a l c o l o r u s e d i d e f i n e d h e r e .L i n e s 1 8 1 8 0 - 1 8 2 3 0 : W h e n t h F I R E b u t t o n i p r e s s e d , C O L R

i i n c r e m e n t e d b 1 I C O L R r e a c h e s a v a l u e o 1 6 i i r e t u r n e dt 1 t h u s w r a p p i n g a r o u n d t h r o u g h a l a v a i l a b l e c o l o r s .

L i n e 1 8 2 5 0 : N o t e t h a t t h e l i n e t h a t p r i n t e d C H R $ ( 3 2 ) t e r a s e t h e c h a r a c t e r l e f t b e h i n d h a s b e e n d e a c t i v a t e d w i t h R E s t a t e m e n t . Y o m a d e l e t e i e n t i r e l y . I n s t e a d o m o v i n g t h o b j e c t o t h s c r e e n , y o a l s o l e a v e t r a i l o t h a t o b j e c t b e h i n d ,t h u s d r a w i n g o t h s c r e e n .

L i n e 1 8 2 7 0 : T h i s i n e f e a t u r e . I t h i s l i n e , t h p r o g r a mc h e c k s t s e i t h c u r s o r h a p p e n s t b a t h e x t r e m e e d g e o t h s c r e e n . I s o t h m o v e i d i s a l l o w e d . T h i s k e e p s t h c u r s o rf r o m m o v i n g o f t h e d g e a n d w r a p p i n g a r o u n d t t h n e x t l i n e ,w h i c h w a a l l o w e d w i t h t h p r e v i o u s s u b r o u t i n e s . Y o m a o m a n o w a n t t h i s f e a t u r e i y o u r o w p r o g r a m .

Y O S U P P L Y

M o v e o b j e c t u n d e r j o y s t i c k c o n t r o l , c h a n g i n g c o l o r s a n d r a wi n o s c r e e n .

Page 153: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 153/290

G a m e R o u t i n e s 1 3

S U G G E S T E D E N H A N C E M E N T S : Y o c a a d a p t t h i s o a n o t h 8 0 - c o l u m n j o y s t i c k r o u t i n e s t t h 4 0 - c o l u m n s c r e e n b a d j u s t i n g

f e v a l u e s . F o e x a m p l e , t h 8 0 ' s i l i n e 1 8 2 7 0 s h o u l d b c h a n g e d t 4 0 T h 1 9 2 0 s c r e e n p o s i t i o n s i n l i n e 1 8 2 6 0 s h o u l d b r e d u c e d t a c c o u n t f o t h f e w e r ( 4 2 o 4 2 5 d e p e n d i n g o w h e t h e r y o u w a n t t l e a v e t h l a s t l i n e o t h e s c r e e n c l e a r f o t e x t ) p r i n t i n g p o s i t i o n s o t h 4 0 - c o l u m n s c r e e n .

R E S U L T

I m a g e s d r a w n o s c r e e n .

4 0 - C O L U M N J O Y S T I C K — H O R I Z O N T A L M O V E M E N T( C o m m o d o r e 6 C o m p a t i b l e )W H A T I D O E S : M o v e s o b j e c t l e f t o r i g h t o n 4 0 - c o l u m n s c r e e n .

L E V E L : A d v a n c e d

1 0 R E * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E 4 C O L U M N J O Y S T I C K1 3 R E M O V E L E F T O R R I G H T1 4 R E ( C O M M O D O R E 6 C O M P A T I B L E )1 5 R E 1 6 R E * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 7 R E 1 8 0 R E M1 9 R E 2 0 R E 2 1 R E 2 2 R E 2 3 R E 2 4 R E 2 5 R E 2 6 R E 2 7 R E 2 8 R E 2 9 R E 3 0 R E 3 1 R E * * I N I T I A L I Z E * * 3 2 D I D ( 1 0 )3 3 D A T A 0 , 0 , 0 , - 1 , 0 , 0 , 0 , 1 , 0 , 0

+ V A R I A B L E S + R O W :B E B l C U R S R :C O M O V E :C H D F

R O T M O V E I B E G I N N I N G O T H A T R O WE N O T H A T R O WP O S I T I O N O C U R S O RC U R S O R C H A R A C T E RC U R S O R C O L O RD I R E C T I O N O M O V EC H A R A C T E R M E M O R YC S C R E E N - C H

C S C R E E N : C O L O R M E M O R Y

Page 154: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 154/290

1 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

3 4 F O X = T 1 3 5 R E A D D ( X )3 6 N E X T3 7 P R I N T C H R $ ( 1 4 7 )3 8 C S C R E E N = 5 5 2 9 63 9 C H = 1 0 2 44 0 0 R O W = 54 1 B 1 = C H + R O W * 4 04 2 E = B l + 3 94 3 0 B = B 14 4 D F = C S C R E E N - C H4 5 0 P O K E 5 3 2 8 1 , 14 6 C U R S R = 4 3 : C O = 24 7 G O T O 1 8 4 7 01 8 4 0 0 R E * * S U B R O U T I N E * * 1 8 4 1 0 J V = P E E K ( 5 6 3 2 0 )1 8 4 2 0 J 1 = J V A N D 1 61 8 4 3 0 F 1 = 1 5 - ( J V A N D 1 5 )1 8 4 4 0 M O V E = D ( F 1 )1 8 4 5 0 R E T U R N1 8 4 6 0 R E M * * M O V E C U R S O R * * 1 8 4 7 0 G O S U B 1 8 4 1 01 8 4 8 0 I M O V E O O T H E N P O K E B l , 3 21 8 4 9 0 B 1 = B 1 + M O V E1 8 5 0 0 I B K O B 1 > E T H E N B 1 = B 1 - M O V E1 8 5 1 0 P O K E B 1 , C U R S R1 8 5 2 0 P O K E B 1 + D F , C O1 8 5 3 0 G O T O 1 8 4 7 0

H O T U S E S U B R O U T I N E

P r e v i o u s s u b r o u t i n e s h a v e d e a l t w i t h t h 8 0 - c o l u m n C o m m od o r e 1 2 t e x t s c r e e n . M a n y t i m e s y o u r p r o g r a m s w i l l b w r i t t e no n l y f o t h 4 0 - c o l u m n s c r e e n . I y o w a n t t h p r o g r a m t b c o m p a t i b l e w i t h t h b r o a d e s t r a n g e o u s e r s , t h 4 0 - c o l u m n s c r e e ni y o u r b e s t b e t , s i n c e n o a l C o m m o d o r e 1 2 o w n e r s w i l l h a v et h C o m m o d o r e d u a l - m o d e m o n i t o r o a n o t h e r R G m o n i t o r n e e s s a r y f o 8 0 - c o l u m n d i s p l a y . I a d d i t i o n , y o u r p r o g r a m m a w a n t t m a n i p u l a t e o b j e c t s o t h 4 0 - c o l u m n b i t - m a p p e d s c r e e nf o h i g h - r e s o l u t i o n g r a p h i c s .

T h i s s u b r o u t i n e w a w r i t t e n f o t h 4 0 - c o l u m n t e x t s c r e e n ( b i t - m a p j o y s t i c k r o u t i n e i p r o v i d e d i t h n e x t c h a p t e r ) . I i n o b a s e d o t h t e c h n i q u e s u s e d f o t h p r e v i o u s s u b r o u t i n e s ; h i n t s

Page 155: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 155/290

G a m e R o u t i n e s 1 3

h a v e a l r e a d y b e e n p r o v i d e d t l e y o c o n v e r t t h o s e r o u t i n e s t 4 0 - c o l u m n u s e .

I n s t e a d , t h i s s u b r o u t i n e w a w r i t t e n w i t h o u t u s i n g t h C o m o d o r e 1 2 8 ' s J O Y ( n ) c o m m a n d s . W e ' v e u s e d o n l y t h e P E E K i n ga n P O K i n g t e c h n i q u e s t h a t w e r e p r e v i o u s l y n e c e s s a r y w i t h t h C o m m o d o r e 6 4 A r e s u l t , t h e s u b r o u t i n e s t h a t f o l l o w a r c o p a t i b l e w i t h t h C o m m o d o r e 1 2 ( w h i c h a c c e p t s m o s t C o m m o d o r e6 c o m m a n d s ) i n e i t h e r 1 2 m o d e o 6 4 m o d e . I i u s e f u l f o t h o s e w h a r w r i t i n g p r o g r a m s t b r u o b o t h m a c h i n e s w i t ht h 4 0 - c o l u m n s c r e e n . I y o a v o i d u s i n g o t h e r B A S I C 7 . c o m a n d s , y o u r s o f t w a r e c a b u s e d b e i t h e r m a c h i n e i n t e r c h a n g ea b l y .

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

L i n e s 3 2 0 - 3 6 0 : D I M e n s i o n a a r r a y f o t h m o v e m e n t i n f o rm a t i o n , a n l o a d i i n t o a r r a y D ( n ) .

L i n e 3 7 0 : C l e a r t h s c r e e n ( S C N C L R i n o a v a i l a b l e i C o m m o d o r e 6 m o d e ) .

L i n e 3 8 0 : D e f i n e t h p o s i t i o n o f c o l o r m e m o r y . T h i s r o u t i n ed o e s n o t u s c u r s o r m o v e m e n t c o m m a n d s t p o s i t i o n t h o b j e c t o t h s c r e e n . I n s t e a d , y o w i l l P O K E c h a r a c t e r s d i r e c t l y t c h a r a ct e m e m o r y a n s c r e e n m e m o r y . C S C R E E N i t h s t a r t o 1 0 0 0 - p o s i t i o n m e m o r y m a t h a t k e e p s t r a c k o t h c o l o r o t h c h a r a c t e r p r i n t e d a t h a t p o s i t i o n .

L i n e 3 9 0 : D e f i n e t h p o s i t i o n o f t h e c h a r a c t e r m e m o r y . T h i si a n o t h e r 1 0 0 0 - p o s i t i o n m e m o r y m a p . E a c h m e m o r y l o c a t i o ns t o r e s w h a t c h a r a c t e r i p r i n t e d t h e r e .

L i n e 4 0 0 : D e f i n e t h r o f o m o v e m e n t .L i n e 4 1 0 : B w i l l k e e p t r a c k o t h p o s i t i o n i c h a r a c t e r

m e m o r y o t h o b j e c t . H e r e i t i n i t i a l v a l u e i c a l c u l a t e d a s t h es t a r t o c h a r a c t e r m e m o r y , p l u s t h r o n u m b e r t i m e s 4 0

L i n e 4 2 0 : i t h f a r t h e s t r i g h t t h o b j e c t w i l l b e a l l o w e d t m o v e , t t h e n o R O W .

L i n e 4 3 0 : i t h f a r t h e s t l e f t t h o b j e c t w i l l b e a l l o w e d t m o v e , d e f i n e d a B h e r e , s i n c e t h v a l u e o B w i l l c h a n g e .

L i n e 4 4 0 : D i t h d i f f e r e n c e b e t w e e n t h t w m e m o r y

Page 156: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 156/290

1 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

a d d r e s s e s . Y o n e e d t h e n o n l y k e e p t r a c k o o n o t h e m , P O K Et t h a t l o c a t i o n , a n t h e n P O K E t t h a t v a l u e p l u s t h d i f f e r e n c eb e t w e e n t h e m t t a k e c a r e o t h s e c o n d m a p .

L i n e 4 5 0 : T h i s P O K E c h a n g e s t h e s c r e e n c o l o r .L i n e 4 6 0 : D e f i n e t h c u r s o r c h a r a c t e r a s c r o s s - h a i r , a n t h

i n i t i a l c o l o r a r e d .L i n e 1 8 4 1 0 : T h i s s h o r t r o u t i n e t a k e s t h e p l a c e o t h J O Y ( n )

f u n c t i o n i B A S I C 7 . 0 . J c a p t u r e s t h e i n f o r m a t i o n f o u n d i t h j o y s t i c k r e g i s t e r .

L i n e 1 8 4 2 0 : T h C o m m o d o r e c o m p u t e r u s e s s e v e r a l d i f f e r e n tb i t s w i t h i n t h a t b y t e t m e a n d i f f e r e n t t h i n g s , s y o m u s t u s B o o l e a n l o g i c ( d i s c u s s e d m o r e c o m p l e t e l y i C h a p t e r 9 t e x t r a c tt h v a l u e o t h e r e l e v a n t b i t . J s t o r e s t h v a l u e t h a t i n d i c a t e sw h e t h e r t h F I R E b u t t o n h a b e e n p r e s s e d .

L i n e 1 8 4 3 0 : F t e l l s y o t h d i r e c t i o n t h j o y s t i c k h a b e e np r e s s e d .

L i n e 1 8 4 4 0 : M O V E w i l l e q u a l o n o t h e v a l u e s i t h a r r a yD ( n ) . S i n c e y o w a n t o n l y h o r i z o n t a l m o v e m e n t , a l b u t w o t h e v a l u e s w i l l b 0 s y o c a h a v e o n l y + a n - m o v e m e n t .

L i n e 1 8 4 7 0 : H e r e t h j o y s t i c k - r e a d i n g s u b r o u t i n e i c a l l e de a c h t i m e t h r o u g h t h l o o p .

L i n e 1 8 4 8 0 : I n e M O V E i i n d i c a t e d , P O K E t h o l l o c a t i o n o f t h c u r s o r w i t h s p a c e t e r a s e i t

L i n e 1 8 4 9 0 : A d M O V E t B l L i n e 1 8 5 0 0 : I t h i s w o u l d t a k e t h c u r s o r b e y o n d t h l i m i t s s e t

u p n u l l i f y t h m o v e .L i n e 1 8 5 1 0 : P O K E B ( c h a r a c t e r m e m o r y ) w i t h t h c u r s o r

c h a r a c t e r .L i n e 1 8 5 2 0 : P O K E B D ( c o l o r m e m o r y ) w i t h t h c o l o r , C O L i n e 1 8 5 3 0 : R e p e a t .

Y O S U P P L YJ o y s t i c k m o v e m e n t a n d e f i n i t i o n f o C U R S R a n C i

y o w i s h .

R E S U L TO b j e c t m o v e s l e f t / r i g h t o s c r e e n .

Page 157: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 157/290

G a m e R o u t i n e s 1 3

4 0 - C O L U M N J O Y S T I C K — V E R T I C A L M O V E M E N TW H A T I D O E S : M o v e s o b j e c t u p a n d d o w n o s c r e e n .L E V E L ; I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E 4 C O L U M N J O Y S T I C K1 3 R E V E R T I C A L M O V E M E N T1 4 R E * 1 5 R E * * * * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E M + + V A R I A B L E S + 1 8 R E 1 9 R E U S E R S U P P L I E S2 0 R E M C U R S R $ : C U R S O R C H A R A C T E R2 1 R E C O L : C O L U M N D E S I R E D2 2 R E J O Y S T I C K M O V E M E N T2 3 R E M R E S U L T2 4 R E C U R S O R M O V E S U A N D D O W N2 5 R E I D E S I R E D C O L U M N . F L A S H E S R E 2 6 R E A N B E E P S W H E N F I R E P R E S S E D .2 8 R E 2 9 R E * * I N I T I A L I Z E * * 3 0 C O L U M N = 23 1 C U R S R $ = C H R $ ( 1 6 1 )3 2 G O T O 1 8 6 1 01 8 6 0 0 R E * * S U B R O U T I N E * * 1 8 6 1 0 P R I N T C H R $ ( 1 5 4 )1 8 6 2 0 P = l1 8 6 3 0 D A T A - 1 , 0 , 0 , 0 , + l , 0 , 0 , 01 8 6 4 0 F O N = T 1 8 6 5 0 R E A D P ( N )1 8 6 6 0 N E X T1 8 6 7 0 S C N C L R1 8 6 8 0 P $ ( 1 ) = C H R $ ( 1 4 5 ) + C H R $ ( 1 4 5 )1 8 6 9 0 P $ ( 5 ) = C H R $ ( 1 7 ) + C H R $ ( 1 7 )1 8 7 0 0 F O N = T O C O L : P R I N T C H R $ ( 2 9 ) ; : N E X T1 8 7 1 0 G O T O 1 8 7 3 01 8 7 2 0 P R I N T C H R $ ( 1 5 7 ) ;1 8 7 3 0 A = J O Y ( 1 )1 8 7 4 0 P R I N T C H R $ ( 1 5 4 ) ;1 8 7 5 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 8 7 6 0 I F L A G = 1 T H E N B E G I N1 8 7 7 0 P R I N T C H R $ ( 4 2 ) ; C H R $ ( 1 5 7 ) ; C H R $ ( 1 5 0 ) ;1 8 7 8 0 V O 1 8 7 9 0 S O U N D 1 , 4 0 9 6 , 1 01 8 8 0 0 B E N D

Page 158: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 158/290

1 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 8 8 1 0 P = P + P ( A )1 8 8 2 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 8 8 3 0 I P < O P > 2 4 T H E N P = P - P ( A ) : G O T O 1 8 7 3 01 8 8 4 0 B $ = P $ ( A )1 8 8 5 0 P R I N T B $ ; C U R S R $ ;1 8 8 6 0 G O T O 1 8 7 2 0

H O T U S E S U B R O U T I N E

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

S o r e t u r n t C o m m o d o r e 1 2 m o d e w i t h t h i s r o u t i n e f o v e r t i c a l m o v e m e n t o t h 4 0 - c o l u m n s c r e e n . I i b a s e d o n t h 8 0 - c o l u m n v e r t i c a l s u b r o u t i n e , w i t h t h e a d d i t i o n o s o u n d . b e e pi h e a r d w h e n t h j o y s t i c k b u t t o n i p r e s s e d .

L I N E - B Y - L I N E D E S C R I P T I O N

T h e r e a r e t h e f o l l o w i n g d i f f e r e n c e s :L i n e 1 8 7 8 0 : T u r n v o l u m e t l e v e l 5 L i n e 1 8 7 9 0 : U s v o i c e t m a k e s o u n d a f r e q u e n c y 4 0 9 6

f o 1 " j i f f i e s , " o a b o u t o n e - s i x t h s e c o n d .

Y O S U P P L YC o l u m n t m o v e i n c u r s o r c h a r a c t e r , j o y s t i c k m o v e m e n t .

R E S U L T

O b j e c t m o v e s u p a n d d o w n o s c r e e n i d e s i g n a t e d c o l u m n .

4 0 - C O L U M N J O Y S T I C K — M O V E A L D I R E C T I O N S( C o m m o d o r e 6 C o m p a t i b l e )W H A T I D O E S : M o v e s o b j e c t a l d i r e c t i o n s .

L E V E L : A d v a n c e d

Page 159: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 159/290

G a m e R o u t i n e s 1 4

1 0 R E * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E 4 C O L U M N J O Y S T I C K1 3 R E M O V E A L L D I R E C T I O N S1 4 R E ( C O M M O D O R E 6 C O M P A T I B L E )1 5 R E 1 6 R E * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 7 R E 1 8 R E + V A R I A B L E S + 1 9 R E C S C R E E N : C O L O R M E M O R Y2 0 R E C H C H A R A C T E R M E M O R Y2 1 R E D F C S C R E E N - C H2 2 R E B l P O S I T I O N O C U R S O R2 3 R E M O V E : D I R E C T I O N O M O V E2 4 R E C U R S R : C U R S O R C H A R A C T E R2 5 R E C O C U R S O R C O L O R2 6 R E 2 7 R E 2 8 R E * * I N I T I A L I Z E * * 2 9 D I D ( 1 0 )3 0 D A T A - 4 0 , 4 0 , 0 , - 1 , - 4 1 , 3 9 , 0 , 1 , - 3 9 , 4 13 1 F O X = T 1 3 2 R E A D D ( X )3 3 N E X T3 4 P R I N T C H R $ ( 1 4 7 )3 5 C S C R E E N = 5 5 2 9 63 6 C H = 1 0 2 43 7 E = C H + 1 0 0 03 8 B 1 = C H3 9 D F = C S C R E E N - C H4 0 P O K E 5 3 2 8 1 , 14 1 C U R S R = 4 3 : C O = 24 2 G O T O 1 8 8 7 01 8 8 0 0 R E M * * S U B R O U T I N E * * 1 8 8 1 0 J V = P E E K ( 5 6 3 2 0 )1 8 8 2 0 J 1 = J V A N D 1 61 8 8 3 0 F 1 = 1 5 - ( J V A N D 1 5 )1 8 8 4 0 M O V E = D ( F 1 )1 8 8 5 0 R E T U R N1 8 8 6 0 R E * * M O V E C U R S O R * * 1 8 8 7 0 G O S U B 1 8 8 1 01 8 8 8 0 B 1 = B 1 + M O V E1 8 8 9 0 I B K O B 1 > E T H E N B 1 = B 1 - M O V E1 8 9 0 0 P O K E B l , C U R S R1 8 9 1 0 P O K E B 1 + D F , C O1 8 9 2 0 G O T O 1 8 8 7 0

Page 160: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 160/290

1 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

T h i s i a e n h a n c e m e n t o t h 4 0 - c o l u m n C o m m o d o r e 6 4 m o d e - c o m p a t i b l e r o u t i n e p r e s e n t e d e a r l i e r . T h i s o n a l l o w s m o v i n gt h o b j e c t i v e r t i c a l , h o r i z o n t a l , a n d i a g o n a l d i r e c t i o n s .

L I N E - B Y - L I N E D E S C R I P T I O N

T h c h a n g e s a r e a s f o l l o w s :L i n e 3 0 0 : D A T A i p r o v i d e d f o o t h e r d i r e c t i o n s a w e l l a s

h o r i z o n t a l .L i n e s 3 7 0 - 3 8 0 : T h b e g i n n i n g a n d e n d o a l l o w a b l e m o v e

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

Y O S U P P L Y

J o y s t i c k m o v e m e n t .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

O b j e c t m o v e s a l d i r e c t i o n s u n d e r j o y s t i c k c o n t r o l .

4 0 - C O L U M N J O Y S T I C K — C O L O R D R A W I N GW H A T I D O E S : A l l o w s d r a w i n g o n t h e s c r e e n i c o l o r , c h a n g i n gt h c u r s o r c o l o r a n c h a r a c t e r .

L E V E L : I n t e r m e d i a t e

Page 161: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 161/290

G a m e R o u t i n e s 1 4

1 0 R E * * * * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E 4 C O L U M N J O Y S T I C K1 3 R E C O L O R D R A W I N G1 4 R E * 1 5 R E * * * * * * * * * * * * * * * * * * * * * * *1 6 R E 1 7 R E M + + V A R I A B L E S + 1 8 R E 1 9 R E U S E R S U P P L I E S2 0 R E C U R S R ? : C U R S O R C H A R A C T E R2 1 R E J O Y S T I C K M O V E M E N T2 2 R E M R E S U L T2 3 R E C U R S O R M O V E S A R O U N D S C R E E N2 4 R E F I R E B U T T O N C H A N G E S C O L O R S2 5 0 R E M A N C U R S O R C H A R A C T E R2 6 R E 2 7 R E

2 8 R E * * I N I T I A L I Z E * * 2 9 D I C ( 1 6 )3 0 P R I N T C H R $ ( 1 5 4 )3 1 C U R S R = 2 0 93 2 C U R S R $ = C H R $ ( C U R S R )3 3 D A T A - 4 0 , - 3 9 , + 1 , + 4 1 , + 4 0 , + 3 9 , - 1 , - 4 13 4 D A T A 1 4 9 , 1 5 0 , 1 5 1 , 1 5 2 , 1 5 3 , 1 5 4 , 1 5 5 , 1 5 6 , 1 5 8 , 1 5 9 , 1 4 4 , 5 , 2 8 , 3 0 , 3 13 5 F O N = T 3 6 R E A D P ( N )3 7 N E X T3 8 F O N = T 1 3 9 R E A D C ( N )4 0 N E X T4 1 C O L R = 14 2 P R I N T C H R $ ( C O L R ) ;4 3 P = 4 4 S C N C L R4 5 P $ ( 1 ) = C H R $ ( 1 4 5 )4 6 P $ ( 2 ) = C H R $ ( 1 4 5 ) + C H R $ ( 2 9 )4 7 P $ ( 3 ) = C H R $ ( 2 9 )4 8 P $ ( 4 ) = C H R $ ( 1 7 ) + C H R $ ( 2 9 )4 9 P $ ( 5 ) = C H R $ ( 1 7 )5 0 P $ ( 6 ) = C H R $ ( 1 7 ) + C H R $ ( 1 5 7 )5 1 P $ ( 7 ) = C H R $ ( 1 5 7 )5 2 P $ ( 8 ) = C H R $ ( 1 5 7 ) + C H R $ ( 1 4 5 )5 3 G O T O 1 9 3 1 01 9 2 9 0 R E * * S U B R O U T I N E * * 1 9 3 0 0 P R I N T C H R $ ( 1 5 7 ) ;1 9 3 1 0 A = J O Y ( 1 )1 9 3 2 0 I A = 1 2 9 T H E N B E G I N1 9 3 3 0 C U R S R = C U R S R + 11 9 3 4 0 I C U R S R > 2 5 5 T H E N C U R S R = 2 5 51 9 3 5 0 C U R S R $ = C H R $ ( C U R S R )1 9 3 6 0 B E N D : G O T O 1 9 3 1 01 9 3 7 0 I A = 1 3 3 T H E N B E G I N

Page 162: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 162/290

1 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 9 3 8 0 C U R S R = C U R S R - 11 9 3 9 0 I C U R S R O 2 T H E N C U R S R = 3 21 9 4 0 0 C U R S R $ = C H R $ ( C U R S R )1 9 4 1 0 B E N D : G O T O 1 9 3 1 01 9 4 2 0 I A > 1 2 7 T H E N F L A G = 1 : A = A - 1 2 8 : E L S E F L A G = 01 9 4 3 0 I F L A G = 1 T H E N B E G I N1 9 4 4 0 C O L R = C O L R + 11 9 4 5 0 I C O L R = 1 6 T H E N C O L R = 11 9 4 6 0 P R I N T C H R $ ( C ( C O L R ) ) ;1 9 4 7 0 F L A G = 01 9 4 8 0 B E N D1 9 4 9 0 P = P + P ( A )1 9 5 0 0 R E P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 9 5 1 0 I P < O P > 1 0 0 0 T H E N P = P - P ( A ) : G O T O 1 9 3 1 01 9 5 2 0 I P / 4 0 = I N T ( P / 4 0 ) T H E N P = P - P ( A ) : G O T O 1 9 3 1 01 9 5 3 0 B $ = P $ ( A )1 9 5 4 0 P R I N T B $ ; C U R S R $ ;1 9 5 5 0 S O U N D 1 , 3 0 0 0 , 21 9 5 6 0 G O T O 1 9 3 0 0

H O T U S E S U B R O U T I N E

T h i s r o u t i n e l e t s y o d r a w o t h s c r e e n i c o l o r , w i t h t h a d d e d e n h a n c e m e n t o l e t t i n g y o c h a n g e t h e c u r s o r c o l o r a n t h c u r s o r c h a r a c t e r w i t h t h F I R E b u t t o n .

T c y c l e t h r o u g h t h a v a i l a b l e c o l o r s , p r e s s t h e j o y s t i c k b u t o n w h i l e t h s t i c k i t s e l f i c e n t e r e d i t h e n e u t r a l p o s i t i o n . W h e nt h j o y s t i c k i p r e s s e d u p w a r d w h i l e t h F I R E b u t t o n i p r e s s e d ,t h c u r s o r c h a r a c t e r w i l l b c h a n g e d t t h n e x t h i g h e r A S C I Iv a l u e i n s t e a d .

L I N E - B Y L I N E D E S C R I P T I O N

T h o p e r a t i o n o t h i s d r a w i n g s u b r o u t i n e i s i m i l a r t p r e v i o u s e x a m p l e s . H o w e v e r , t h f o l l o w i n g a d d i t i o n s h a v e b e e nm a d e :

L i n e 1 9 3 7 0 : I e q u a l s 1 3 3 , t h e n t h F I R E b u t t o n w a p r e s s e d w h i l e t h j o y s t i c k w a o r i e n t e d u p w a r d . S o b e g i n t h f o l l o w i n g l o o p :

L i n e 1 9 3 8 0 : R e d u c e C U R S R c h a r a c t e r t l e s s t h a n t h c u r r e n t v a l u e .

L i n e 1 9 3 9 0 : H o w e v e r , d o n ' t l e i b e c o m e l e s s t h a n C H R $ ( 3 2 ) ,s p a c e . s p a c e w i l l c a u s e t h e c u r s o r t p r i n t b l a n k s a l o n g t h

Page 163: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 163/290

G a m e R o u t i n e s 1 4

s c r e e n . I n s t e a d c h a n g e t 1 2 7 . N o t e t h a t w i t h t h i s r o u t i n e , a w r i t t e n , o n l y c h a r a c t e r s f r o m 3 t 1 2 m a b u s e d .

L i n e 1 9 4 0 0 : C h a n g e c u r s o r c h a r a c t e r t C H R $ ( C U R S R ) .L i n e 1 9 4 1 0 : L o o p .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : C h a n g e r o u t i n e t a l l o w f o a l c h a r a c t e r g r a p h i c s , b u s t i l l b y p a s s v a l u e s t h a t c h a n g e c o l o r s a n d o t h e r t e s t s .

R E S U L T

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

4 0 - C O L U M N J O Y S T I C K S — F O R T W J O Y S T I C K S( C o m m o d o r e 6 C o m p a t i b l e )W H A T I D O E S : A l l o w s m o v i n g t w o b j e c t s o t h s c r e e n a o n c e ,w i t h t w j o y s t i c k s .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E 4 C O L U M N J O Y S T I C K S1 3 R E F O R T W O J O Y S T I C K S1 4 R E ( C O M M O D O R E 6 C O M P A T I B L E )1 5 R E 1 6 R E M * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1 7 R E + V A R I A B L E S + 1 8 R E F l S T A T U S O F I R E B U T T O N1 9 R E F 2 S T A T U S O F F I R E B U T T O N2 0 R E M l M O V E F O R J O 2 1 R E M 2 M O V E F O J O 2 2 R E B l P O S I T I O N F O R O B J E C T2 3 R E B P O S I T I O N F O R O B J E C T2 4 0 R E M C H S T A R T O C H A R A C T E R M E M O R Y2 5 R E E E N O C H A R A C T E R M E M O R Y

Page 164: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 164/290

1 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 6 0 R E M C S C R E E N : S T A R T O C O L O R M E M O R Y2 7 0 R E M2 8 0 R E M2 9 0 R E M * * I N I T I A L I Z E * * 3 0 C S C R E E N = 5 5 2 9 63 1 C H A R = 1 0 2 43 2 B 1 = C H3 3 B 2 = C H3 4 B = C H3 5 E = C H + 1 0 0 03 6 D F = C S C R E E N - C H3 7 G O T O 1 9 1 7 01 9 0 0 0 R E M * * S U B R O U T I N E * * 1 9 0 1 0 J l = P E E K ( 5 6 3 2 0 )1 9 0 2 0 J 2 = P E E K ( 5 6 3 2 1 )1 9 0 3 0 F 1 = J 1 A N 1 1 9 0 4 0 F 2 = J 2 A N 1 1 9 0 5 0 J 1 = 1 5 - ( J 1 A N 1 5 1 9 0 6 0 J 2 = 1 5 - ( J 2 A N D 1 5 1 9 0 7 0 I J l = l T H E N M 1 = - 4 0 : G O T O 1 9 1 1 01 9 0 8 0 I J l = 2 T H E N M 1 = 4 0 : G O T O 1 9 1 1 01 9 0 9 0 I J l = 4 T H E N M 1 = - 1 : G O T O 1 9 1 1 01 9 1 0 0 I J l = 8 T H E N M 1 = 1 : G O T O 1 9 1 1 01 9 1 1 0 I J 2 = l T H E N M 2 = - 4 0 : R E T U R N1 9 1 2 0 I J 2 = 2 T H E N M 2 = 4 0 : R E T U R N1 9 1 3 0 I J 2 = 4 T H E N M 2 = - l : R E T U R N1 9 1 4 0 I J 2 = 8 T H E N M 2 = l : R E T U R N1 9 1 5 0 R E T U R N1 9 1 6 0 R E * * M O V E C U R S O R * * 1 9 1 7 0 P R I N T C H R $ ( 1 4 7 )1 9 1 8 0 G O S U B 1 9 0 1 01 9 1 9 0 I F l = 0 T H E N P R I N T C H R $ ( 1 4 7 )1 9 2 0 0 I F 2 = 0 T H E N P R I N T C H R $ ( 1 4 7 )1 9 2 1 0 B 1 = B 1 + M 1 : I F B K O B 1 > E T H E N B 1 = B 1 - M 11 9 2 2 0 B 2 = B 2 + M 2 : I F B 2 < B O B 2 > E T H E N B 2 = B 2 - M 21 9 2 3 0 P O K E B l , 8 11 9 2 4 0 P O K E B 1 + D F , 31 9 2 5 0 P O K E B 2 , 8 11 9 2 6 0 P O K E B 2 + D F , 51 9 2 7 0 G O T O 1 9 1 8 0

H O T U S E S U B R O U T I N EM a n y p r o g r a m s w i t h t w p l a y e r s w i l l u s e b o t h j o y s t i c k s a t

o n c e . T h i s r o u t i n e , a a d a p t a t i o n o t h e p r e v i o u s C o m m o d o r e6 4 - m o d e - c o m p a t i b l e m o d u l e , a l l o w s m o v i n g t w o b j e c t s u n d e r i d e p e n d e n t c o n t r o l .

Page 165: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 165/290

G a m e R o u t i n e s 1 4

L I N E - B Y - L I N E D E S C R I P T I O N

T h f o l l o w i n g c h a n g e s h a v e b e e n m a d e :L i n e 1 9 0 2 0 : I n s t e a d o f j u s t P E E K i n g t h s t a t u s o f J l , a l s o

P E E K v a l u e f o J 2 a n c a l c u l a t e t h o r i e n t a t i o n o f t h s e c o n dj o y s t i c k i n t h s a m e m a n n e r .

L i n e s 1 9 1 1 0 - 1 9 1 4 0 : T h d i r e c t i o n o t h m o v e i c a l c u l a t e df o J a s w e l l a J l N o t e t h a t t h i s v a r i a t i o n a l l o w s o n l y m o v em e n t i n o r t h / s o u t h / e a s t / w e s t d i r e c t i o n s , w h i c h m a b u s e f u l f o m a z e - t y p e g a m e s w h e r e d i a g o n a l m o v e m e n t i u n d e s i r a b l e .

L i n e s 1 9 1 9 0 - 1 9 2 2 0 : I t h i s v a r i a t i o n , p r e s s i n g e i t h e r F I R Eb u t t o n c a u s e s t h e s c r e e n t b c l e a r e d .

Y O S U P P L Y

M o v e m e n t f r o m t w o j o y s t i c k s .

S U G G E S T E D E N H A N C E M E N T S ; C h a n g e t a l l o w m o v e m e n t i a n d i r e c t i o n , i d e s i r e d .

R E S U L T

O b j e c t s m o v e o s c r e e n .

K E Y B O A R D J O Y S T I C KW H A T I D O E S ; A l l o w s m o v i n g o b j e c t o s c r e e n u s i n g k e y b o a r dc u r s o r k e y s , w i t h o u t j o y s t i c k .

L E V E L ; I n t e r m e d i a t e

Page 166: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 166/290

1 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E 1 1 R E 1 2 R E 1 3 R E

* * * * * * * * * * * * * * *

4 C O L U M NK E Y B O A R D J O Y S T I C K

* * * * * * * * * * * * * * * * * * * *1 4 R E 1 5 0 R E M1 6 R E 1 7 R E + V A R I A B L E S + 1 8 0 R E M S U P P L I E D B U S E R1 9 R E C U R S R $ : C U R S O R C H A R A C T E R2 0 0 R E M R E S U L T2 1 R E C U R S O R M O V E S A R O U N D S C R E E N2 2 0 R E M U N D E R C U R S O R K E C O N T R O L2 3 R E 2 4 0 R E M2 5 0 R E M * * I N I T I A L I Z E * * 2 6 C U R S $ = C H R $ ( 2 0 9 )2 7 S C N C L R1 9 6 0 0 R E * * S U B R O U T I N E * *

1 9 6 1 0 G E T K E Y A 1 9 6 2 0 I A $ = C H R $ ( 2 9 ) O A $ = C H R $ ( 1 7 ) O R A $ = C H R $ ( 1 5 7 ) O RA $ = C H R $ ( 1 4 5 ) G O T O 1 9 6 3 0 : E L S E G O T O 1 9 6 1 01 9 6 3 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;1 9 6 4 0 P R I N T A $ ; C U R S R $ ; C H R $ ( 1 5 7 ) ;1 9 6 5 0 G O T O 1 9 6 1 0

H O T U S E S U B R O U T I N E

P r o g r a m s c a b w r i t t e n t a l l o w m o v i n g o b j e c t s o t h s c r e e n u s i n g o n l y t h e c u r s o r k e y s . T h i s i e s p e c i a l l y p r a c t i c a l f o t h C o m m o d o r e 1 2 8 , s i n c e f o u r s e p a r a t e c u r s o r k e y s a r p r o v i d e d ,o n f o e a c h m a j o r c o m p a s s d i r e c t i o n . T h i s s u b r o u t i n e s i m u l a t e s

j o y s t i c k u s i n g t h o s e k e y s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 6 0 : D e f i n e c u r s o r c h a r a c t e r a C H R $ ( 2 0 9 ) .L i n e 2 7 0 : C l e a r s c r e e n .L i n e 1 9 6 1 0 : G e k e f r o m k e y b o a r d .L i n e 1 9 6 2 0 : I k e p r e s s e d w a c u r s o r k e y , p r o c e e d t n e x t

l i n e , o t h e r w i s e i g n o r e a n g b a c k f o m o r e k e y b o a r d i n p u t . Y o c o u l d a l s o i n c l u d e h e r e a n o t h e r v a l u e , s u c h a t h s p a c e b a r , w h i c hy o u w o u l d d e s i g n a t e a t h r e p r e s e n t a t i o n o t h F I R E b u t t o n .

Page 167: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 167/290

G a m e R o u t i n e s 1 4

L i n e 1 9 6 3 0 : E r a s e o l c h a r a c t e r a n b a c k s p a c e .L i n e 1 9 6 4 0 : P r i n t t h c u r s o r - m o v e m e n t k e p r e s s e d , f o l l o w e d

b t h c u r s o r c h a r a c t e r , a n t h e n b a c k s p a c e .L i n e 1 9 6 5 0 : L o o p a n r e p e a t .

Y O S U P P L Y

C u r s o r c h a r a c t e r d e f i n i t i o n .

S U G G E S T E D E N H A N C E M E N T S : I n c o r p o r a t e s o m e a c t i o n t b f o l o w e d w h e n t h " f i r e " b u t t o n ( s p a c e b a o w h a t e v e r y o d e s i gn a t e ) i p r e s s e d .

R E S U L T

O b j e c t w i l l m o v e o s c r e e n u n d e r c u r s o r k e c o n t r o l , i n o r t h ,s o u t h , e a s t , o w e s t d i r e c t i o n s .

K E Y B O A R D D R A W I N GW H A T I D O E S : D r a w s o s c r e e n , c h a n g i n g c u r s o r c h a r a c t e r a n c o l o r a d e s i r e d , u s i n g c u r s o r k e y s f o r c o n t r o l .L E V E L : I n t e r m e d i a t e

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

R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E

* * * * * * * * * * * * * * * * * * * *

4 : o l u m nK E Y B O A R D D R A W I N G

+ S U P P L I E D

C U R S R ?B O R D E R

V A R I A B L E S + B U S E R

C U R S O R C H A R A C T E RC O L O R

C H A R A C T E R C O L O RS C R E E N

R E S U L TC U R S O RC U R S O R

C O L O R

D R A W S O N S C R E E N .A N C O L O R C A B

C H A N G E D F R O M K E Y B O A R D

Page 168: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 168/290

1 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 9 0 R E M * * I N I T I A L I Z E * * 3 0 D A R K = O : W H I T E = 13 1 R E D = 2 : C Y A N = 33 2 P U R P L E = 4 : G R E E N = 53 3 B L U E = 6 : Y E L L O W = 73 4 P U M P K I N = 8 : B R O W N = 93 5 L R E D = 1 0 : D G R A Y = l l3 6 M G R A Y = 1 2 : L G R E E N = 1 33 7 L B L U E = 1 4 : L I G H T = 1 53 8 B A C K G R O U N D = 5 3 2 8 13 9 S U R R O U N D = 5 3 2 8 04 0 0 P O K E B A C K G R O U N D , P U M P K I N4 1 0 P O K E S U R R O U N D , M G R A Y4 2 T R A I L $ = C H R $ ( 2 0 9 )4 3 S C N C L R1 9 7 0 0 R E M * * S U B R O U T I N E * *

1 9 7 1 0 G E T K E Y A 1 9 7 2 0 A = A S C ( A $ )1 9 7 3 0 I A = 2 9 T H E N C U R S R $ = C H R § ( 1 7 1 ) : G O T O 1 9 8 5 01 9 7 4 0 I A = 1 5 7 T H E N C U R S R $ = C H R $ ( 1 7 9 ) : G O T O 1 9 8 5 01 9 7 5 0 I A = 1 7 T H E N C U R S R $ = C H R $ ( 1 7 8 ) : G O T O 1 9 8 5 01 9 7 6 0 I A = 1 4 5 T H E N C U R S R $ = C H R $ ( 1 7 7 ) : G O T O 1 9 8 5 01 9 7 7 0 I A > 1 5 4 A N A < 1 6 0 G O T O 1 9 8 4 01 9 7 8 0 I A > 1 4 8 A N D A < 1 5 6 G O T O 1 9 8 4 01 9 7 9 0 I A > 2 7 A N A < 3 2 G O T O 1 9 8 4 01 9 8 0 0 I A = 1 4 4 O A = O A = 1 2 9 G O T O 1 9 8 4 01 9 8 1 0 I A = 1 4 2 O R A = 1 4 1 O A = 1 4 6 O A = 1 3 O A = 1 8 O R A = 1 9 O A = 2 0G O T O 1 9 7 1 01 9 8 2 0 T R A I L $ = A $1 9 8 3 0 G O T O 1 9 7 1 01 9 8 4 0 P R I N T A $ 1 9 8 5 0 P R I N T T R A I L $ ; C H R $ ( 1 5 7 ) ;1 9 8 6 0 P R I N T A $ ; C U R S R $ ; C H R $ ( 1 5 7 ) ;1 9 8 7 0 G O T O 1 9 7 1 0

H O T U S S U B R O U T I N E

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

A y o u k n o w , t h n u m b e r k e y s a t h t o p o f t h k e y b o a r d c a b u s e d i c o m b i n a t i o n w i t h t h c o n t r o l k e a n t h C o m m o d o r ek e t c h a n g e t h c o l o r s o t h e c h a r a c t e r s b e i n g p r i n t e d . T h e r ea r a l s o C H R $ e q u i v a l e n t s o t h o s e k e c o m b i n a t i o n s t h a t c a b u s e d . I t h i s b o o k w h a v e n ' t y e e x p l a i n e d t h u s o a v a i l a b l eP O K E s t s p e c i f i c m e m o r y r e g i s t e r s t c h a n g e t h c o l o r o s c r e e nb a c k g r o u n d a n b o r d e r .

Page 169: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 169/290

G a m e R o u t i n e s 1 5

T h m e m o r y l o c a t i o n f o t h b a c k g r o u n d s c r e e n c o l o r i 5 3 2 8 1 ,w h i l e t h l o c a t i o n f o t h b o r d e r i 5 3 2 8 0 . Y o c a P O K E t h c o l o r n u m b e r 0 - 1 5 t t h e s e r e g i s t e r s t m a k e t h c o l o r c h a n g e sy o w a n t .

H o w e v e r , i c a b d i f f i c u l t t r e m e m b e r t h a t 0 e q u a l s b l a c ka n e q u a l s b l u e . O n e a s y w a t d e t e r m i n e t h f i r s t h a l f o t h c o l o r s p e c t r u m i t s u b t r a c t f r o m t h k e n u m b e r w h e r e t h a tc o l o r r e s i d e s . H o w e v e r , f o t h u p p e r e i g h t c o l o r s y o m u s t a d i n s t e a d . W h n o s i m p l y d e f i n e t h c o l o r v a l u e s a v a r i a b l e s t h a th a v e s o m e r e l a t i o n t t h c o l o r n a m e ?

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 3 0 0 - 3 7 0 : D e f i n e n u m b e r s t h r o u g h 1 t e q u a l c o l o rn a m e s o t h a v a i l a b l e h u e s . N o t e t h a t B L A C K a n B L U E w o u l db t h s a m e c o l o r n a m e t t h C o m m o d o r e 1 2 8 , s i n c e o n l y B w o u l d b s i g n i f i c a n t . T h e r e f o r e , u s D A R K f o b l a c k , i n s t e a d .A l o n g t h s a m e l i n e s , G R A Y a n G R E E N w o u l d b t h s a m e , s L I G H T i u s e d f o t h f o r m e r . O R A N G E c a u s e s a p r o b l e m , s i n c eO R A N G E c o n t a i n s t h e r e s e r v e d w o r d O R . U s P U M P K I N i s t e a d , f o l l o w i n g t h e p r e c e d e n t o n a m i n g t h c o l o r a f t e r a e d i b l e .L i n e s 3 8 0 - 3 9 0 : D e f i n e B A C K G R O U N D a n S U R R O U N D a t h m e m o r y l o c a t i o n s f o t h e s c r e e n a n b o r d e r c o l o r s .

L i n e s 4 0 0 - 4 1 0 : P O K E t h b a c k g r o u n d o r a n g e , a n t h e b o rd e m e d i u m g r a y .

L i n e 4 2 0 : A c h a n g e o f p a c e , m a k e t h t r a i l l e f t b t h c u r s o r b d i f f e r e n t f r o m t h c u r s o r c h a r a c t e r i t s e l f . D e f i n e T R A I L $a C H R $ ( 2 0 9 ) .

L i n e 4 3 0 : C l e a r t h s c r e e n .L i n e 1 9 7 1 0 : G e k e y f r o m k e y b o a r d .L i n e 1 9 7 2 0 : F i n d i t A S C I I v a l u e .L i n e s 1 9 7 3 0 - 1 9 7 6 0 : D e p e n d i n g o t h d i r e c t i o n o f m o v e

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

L i n e s 1 9 7 7 0 - 1 9 8 1 0 : C h e c k t s e i k e p r e s s e d w a a a l l o wa b l e o n e . I s o g p r i n t i t

Page 170: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 170/290

Page 171: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 171/290

G a m e R o u t i n e s 1 5

1 9 9 6 0 I A > 2 5 5 T H E N A F L A G = 1 : A = ( ( A / 2 5 5 ) - I N T ( A / 2 5 5 ) ) * 2 5 5: E L S E A F L A G = 01 9 9 7 0 I B > 2 5 5 T H E N B F L A G = 1 : B = ( ( B / 2 5 5 ) - I N T ( B / 2 5 5 ) ) * 2 5 5: E L S E B F L A G = 01 9 9 8 0 I O 2 5 5 T H E N C F L A G = 1 : C = ( ( C / 2 5 5 ) - I N T ( C / 2 5 5 ) ) * 2 5 5: E L S E C F L A G = 01 9 9 9 0 I D > 2 5 5 T H E N D F L A G = 1 : D = ( ( D / 2 5 5 ) - I N T ( D / 2 5 5 ) ) * 2 5 5- . E L S E D F L A G = 02 0 0 0 0 A l = ( ( l + I N T ( A / 6 . 4 ) ) - 4 0 ) * - l2 0 0 1 0 B l = ( ( l + I N T ( B / 6 . 4 ) ) - 4 0 ) * - l2 0 0 2 0 C l = ( ( l + I N T ( C / 6 . 4 ) ) - 4 0 ) * - l2 0 0 3 0 D l = ( ( l + I N T ( D / 6 . 4 ) ) - 4 0 ) * - l2 0 0 4 0 P R I N T T A B ( L D ) ; C H R $ ( 3 2 ) ; C H R $ ( 1 9 ) ;2 0 0 5 0 P R I N T T A B ( D 1 ) U D " ; C H R $ ( 1 9 ) ;2 0 0 6 0 L D = D 12 0 0 7 0 P R I N T T A B ( L A ) ; C H R $ ( 3 2 ) ; C H R $ ( 1 9 ) ;2 0 0 8 0 P R I N T T A B ( A 1 ) " A " ; C H R $ ( 1 9 ) ;2 0 0 9 0 L A = A 12 0 1 0 0 P R I N T T A B ( L B ) ? C H R $ ( 3 2 ) ; C H R $ ( 1 9 ) ;2 0 1 1 0 P R I N T T A B ( B 1 ) U B " ; C H R $ ( 1 9 ) ;2 0 1 2 0 L B = B 12 0 1 3 0 P R I N T T A B ( L C ) ; C H R $ ( 3 2 ) ; C H R $ ( 1 9 ) ;2 0 1 4 0 P R I N T T A B ( C 1 ) " C " ; C H R $ ( 1 9 ) ;2 0 1 5 0 L C = C 12 0 1 6 0 G O T O 1 9 9 2 0

H O T U S S U B R O U T I N E

P a d d l e r e a d i n g f r o m B A S I C i l e s s t h a n s a t i s f a c t o r y f o n u m b e r o r e a s o n s . C o m m o d o r e r e c o m m e n d s a g a i n s t i t c l a i m i n gt h a t t h t e c h n i q u e i u n r e l i a b l e . I a n c a s e , t h u s e f u l n e s s o t h v a l u e r e t u r n e d b y P O T ( n ) i r e d u c e d b t h f a c t t h a t t h f u l l" t r a v e l " o f t h p a d d l e i n o u s e d . D e p e n d i n g o w h a t p a d d l e y o u s e , y o m a f i n d t h a t h a l f o q u a r t e r t u r n w i l l b s u f f i c i e n tt c o v e r t h e f u l l r a n g e f r o m t 2 5 5 . T h e r e f o r e , p r e c i s e m o v em e n t s m a b d i f f i c u l t . T h i s s u b r o u t i n e i i n c l u d e d t s h o w t h a tp a d d l e r e a d i n g c a b d o n e .

P a d d l e s a r u n l i k e j o y s t i c k s i n t h a t t h e y r e t u r n a c o n t i n u o u sv a l u e t h a t c o r r e s p o n d s t h o f a t h p a d d l e h a b e e n r e t u r n e d .T h n o n a n a l o g j o y s t i c k s u s e d b t h C o m m o d o r e 1 2 8 , o t h o t h e r h a n d , m e r e l y t e l l u w h i c h w a t h j o y s t i c k i o r i e n t e d .P a d d l e s c o n t a i n a p o t e n t i o m e t e r , s i m i l a r t t h v o l u m e c o n t r o l o y o u r s t e r e o , t h a t p r o v i d e s r e a d i n g o t h e v a r i a b l e r e s i s t a n c ep r o d u c e d b y o u r t u r n i n g t h p a d d l e . W h i l e t h i s r e a d i n g i c o n t i nu o u s , t h C o m m o d o r e 1 2 t r a n s l a t e s i i n t o s e r i e s o w h o l en u m b e r s f r o m t 2 5 5 .

Page 172: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 172/290

1 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

T u s e p a d d l e s e f f e c t i v e l y i t h i s p r o g r a m , y o u n e e d t t r a n sl a t e t h a t v a l u e i n t o p o s i t i o n o t h s c r e e n . F o h o r i z o n t a lm o v e m e n t o 4 0 - c o l u m n s c r e e n , y o w o u l d w a n t t e q u a lc o l u m n 1 a n v a l u e o 2 5 t e q u a l c o l u m n 4 0 T h a t i a p p r o x i m a t e l y w h a t i d o n e w i t h t h i s s u b r o u t i n e . V a l u e s f o a l f o u r p a d d l e s a r p r o d u c e d , s y o c a m o v e f o u r o b j e c t s . N o t e t h a tm o v e m e n t i p o s s i b l e o n l y i a e a s t / w e s t o r n o r t h / s o u t h d i r e ct i o n , a l t h o u g h c l e v e r p r o g r a m m e r c o u l d w r i t e r o u t i n e t m o v et h o b j e c t b a c k a n f o r t h d i a g o n a l l y a w e l l .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 1 9 9 1 0 : C l e a r s c r e e n .L i n e s 1 9 9 2 0 - 1 9 9 5 0 : O b t a i n o r i e n t a t i o n o p a d d l e s A - D .L i n e s 1 9 9 6 0 - 1 9 9 9 0 : I p a d d l e v a l u e i g r e a t e r t h a n 2 5 5 ,

t h e n t h F I R E b u t t o n h a s b e e n p r e s s e d . T h e s e l i n e s s e t t h f i r ef l a g f o e a c h p a d d l e a n t h e n r e t u r n t h v a l u e o t a e q u i v al e n t v a l u e l e s s t h a n 2 5 5 .

L i n e s 2 0 0 0 0 - 2 0 0 3 0 : C a l c u l a t e p o s i t i o n o s c r e e n .L i n e s 2 0 0 4 0 - 2 0 1 5 0 : T A t p o s i t i o n i n d i c a t e d b p a d d l e ,

p r i n t s p a c e t e r a s e o l c h a r a c t e r , t h e n p r i n t l e t t e r c o r r e s p o n d i n gt t h p a d d l e i t h n e p o s i t i o n . L ( L A , L B L C o L D e q u a l st h l a s t p o s i t i o n o t h c h a r a c t e r , w h i l e x ( A l , B l C l o D l e q u a l s t h e c u r r e n t p o s i t i o n .

Y O S U P P L Y

P a d d l e m o v e m e n t .

S U G G E S T E D E N H A N C E M E N T S : C r e a t e s o m e a c t i o n t r e s u l t w h e nt h F I R E b u t t o n i p r e s s e d .

R E S U L T

F o u r o b j e c t s m o v e o s c r e e n u n d e r p a d d l e c o n t r o l .

Page 173: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 173/290

G a m e R o u t i n e s 1 5

R A N D O M I N T E G E R

W H A T I D O E S ; P r o v i d e s r a n d o m i n t e g e r w i t h i n n u m b e r r a n g es p e c i f i e d .

L E V E L : N o v i c e

1 0 R E * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E R A N D O M I N T E G E R1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E H I G H : T O O R A N G E1 9 R E M M I N I M U M : B O T T O M O R A N G E2 0 R E R E S U L T2 1 R E N U N U M B E R C H O S E N2 2 R E 2 3 R E 2 4 0 R E M * * I N I T I A L I Z E * * 2 5 H I G H = 1 0 02 6 M I N I M U M = 1 52 7 G O S U B 2 0 2 1 02 8 P R I N T " R A N D O M I N T E G E R : " ; N U2 9 E N 2 0 2 0 0 R E M * * S U B R O U T I N E * * 2 0 2 1 0 D F = H I G H - M I N I M U M + 12 0 2 2 0 N U = I N T ( R N D ( 0 ) * D F ) + M I N I M U M2 0 2 3 0 R E T U R N

H O T U S E S U B R O U T I N E

W h a t m a k e s g a m e g a m e a n n o t e s t ? R a n d o m n e s s i o n e l e m e n t f o u n d i m a n y , b u n o a l l , g a m e s . R a n d o m n u m b e r ss e l e c t e d b t h c o m p u t e r d e t e r m i n e t h c h a n g e s i s o m e g a m e st h a t t h e p l a y e r m u s t c o n t e n d w i t h . L a c k i n g r a n d o m n e s s , a g a m ei e i t h e r t e s t o m e m o r y o c o n t e s t o f s t r a t e g y . l i t t l e o a l t h r e e e l e m e n t s m a k e s f o g o o d g a m e , a n t h i s s u b r o u t i n e l e t sy o g e g r e a t e r c o n t r o l o v e r r a n d o m n e s s t h a n w i t h u n a d o r n e dB A S I C 7 . 0 .

Page 174: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 174/290

1 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

T h C o m m o d o r e 1 2 8 c a n c h o o s e p s e u d o r a n d o m n u m b e r s . T h a ti s a l t h o u g h t h e y a p p e a r t b r a n d o m , t h n u m b e r s a r e a c t u a l l yd r a w n f r o m l o n g l i s t . E v e n t h o u g h t h s e q u e n c e i t h s a m ee a c h t i m e , t h l i s t o n u m b e r s i v e r y l o n g a n t h s t a r t i n gp o s i t i o n i u s u a l l y d i f f e r e n t , s t h n u m b e r s a p p e a r t b r a n d o mt t h p l a y e r .

S o m e B A S I C s a l l o w c h o o s i n g a r a n d o m n u m b e r l a r g e r t h a no n b u s m a l l e r t h a n a n o t h e r i n t e g e r w i t h t h s i m p l e c o m m a n dR N D ( N ) w h e r e i t h u p p e r l i m i t . R N D ( 7 ) w o u l d p r o d u c e n u b e r s f r o m t 7 f o e x a m p l e . T h C o m m o d o r e 1 2 8 , o t h e o t h e rh a n d , g e n e r a t e s r a n d o m n u m b e r s l a r g e r t h a n a n s m a l l e r t h a n1 s w m i g h t g e . 7 4 3 2 9 o . 1 5 8 3 2 o s o m e o t h e r v a l u e . T g e t h n u m b e r s i g i v e n r a n g e t N w m u s t m u l t i p l y t h e r a n d o mn u m b e r b a n a d 1 T h a t i s I N T ( R N D ( 0 ) * 7 ) + w i l l p r o d u c en u m b e r s l a r g e r t h a n a n n l a r g e r t h a n 7

B u w h a t i s o m e o t h e r r a n g e i d e s i r e d , s u c h a t h n u m b e r sb e t w e e n 4 a n 1 9 8 . T h i s s u b r o u t i n e w i l l p l u c k t h e m o u o r a n d o m l a n d f o y o u . F r o m t h e u s e r - s u p p l i e d m i n i m u m a n d m a x im u n u m b e r s , i w i l l s e l e c t r a n d o m i n t e g e r s o n l y i t h d e s i r e dr a n g e .

L I N E - B Y L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e u p p e r l i m i t a 1 0 0 .L i n e 2 6 0 : D e f i n e l o w e r l i m i t a 1 5 L i n e s 2 7 0 - 2 9 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t s .L i n e 2 0 2 1 0 : C a l c u l a t e t h d i f f e r e n c e b e t w e e n t h u p p e r a n

l o w e r l i m i t s .L i n e 2 0 2 2 0 : G e n e r a t e r a n d o m n u m b e r i t h r a n g e t t h

d i f f e r e n c e b e t w e e n t h l i m i t s , a n t h e n a d t h M I N I M U M v a l u et t h a t t e n s u r e t h a t t h n u m b e r i a t l e a s t t h m i n i m u m b u n m o r e t h a n t h m a x i m u m .

Y O S U P P L Y

U p p e r a n d l o w e r l i m i t s .

Page 175: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 175/290

G a m e R o u t i n e s 1 5

S U G G E S T E D E N H A N C E M E N T S ; F i g u r e w a t a l l o w g e n e r a t i n gr e a l n u m b e r s — n u m b e r s w i t h b o t h a i n t e g e r a n f r a c t i o n a l p a r t .

R E S U L T

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

S A M P L E V A L U E S : 6 5 , 3 3 , 9 8 1

R A N D O M S E T S

W H A T I D O E S : C h o o s e s s e o r a n d o m n u m b e r s .L E V E L : N o v i c e

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

R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E

* • • • • * * • * • • * • **

R A N D O M S E * * * * * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D B U S E RH I G H : T O P O F R A N G E

M I N I M U M : B O T T O M O R A N G EN U M B E R : S I Z E O F S E T

R E S U L TS E T ( N U M B E R ) : R A N D O M I N T E G E R S

2 5 R E * * I N I T I A L I Z E * * 2 6 N U M B E R = 1 02 7 D I M S E T ( N U M B E R )2 8 H I G H = 1 0 02 9 M I N I M U M = 1 53 0 G O S U B 2 0 3 1 03 1 F O N = T N U M B E R3 2 P R I N T " R A N D O M I N T E G E R # " ; N ; " M ; S E T ( N )3 3 N E X T3 4 E N 2 0 3 0 0 R E M * * S U B R O U T I N E * * 2 0 3 1 0 D F = H I G H - M I N I M U M + 1

Page 176: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 176/290

Page 177: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 177/290

G a m e R o u t i n e s 1 5

R E S U L T

S e o r a n d o m i n t e g e r s g e n e r a t e d , e a c h u n i q u e .

S A M P L E V A L U E S : 4 5 9 8 , 3 2 , 1 6 8 4 , 2 1 , 9 9 , 3 3 , 4 6 7

A N I M A T E D C O I N F L I PW H A T I D O E S : P r o d u c e s i m a g e o c o i n f l i p p i n g , p l u s h e a d s o t a i l s v a l u e .

L E V E L : N o v i c e / I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * *1 1 R E * 1 2 R E C O I N F L I P1 3 R E * 1 4 R E M * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M N O N E1 9 R E M R E S U L T2 0 R E M G R A P H I C C O I N F L I P2 1 R E F L I P $ : H E A D S O T A I L S2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 G O S U B 2 0 4 1 02 6 E N 2 0 4 0 0 R E M * * S U B R O U T I N E * * 2 0 4 1 0 S C N C L R2 0 4 2 0 D A T A 1 1 9 , 1 1 3 , 9 92 0 4 3 0 F O N = T 2 0 4 4 0 R E A D C N ( N )2 0 4 5 0 N E X T2 0 4 6 0 P R I N T : P R I N T : P R I N T : P R I N T : P R I N T : P R I N T : P R I N T2 0 4 7 0 F O N 2 = l T 2 0 4 8 0 P R I N T C H R $ ( 3 2 ) ? C H R $ ( 1 5 7 ) ;2 0 4 9 0 P R I N T C H R $ ( 1 4 5 ) ;2 0 5 0 0 P R I N T T A B ( I O ) ; " " ;2 0 5 1 0 F O N = T 2 0 5 2 0 P R I N T C H R $ ( C N ( N ) ) ;2 0 5 3 0 P R I N T C H R $ ( 1 5 7 ) ;2 0 5 4 0 F O N l = l T 3 : N E X T N

Page 178: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 178/290

1 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 0 5 5 0 N E X T N2 0 5 6 0 N E X T N 2 0 5 7 0 F O N 3 = l T O2 0 5 8 0 F O N = T 2 0 5 9 0 P R I N T C H R $ ( C N ( N ) ) ;2 0 6 0 0 P R I N T C H R $ ( 1 5 7 ) ;2 0 6 1 0 F O N l = l T O 3 : N E X T N 2 0 6 2 0 N E X T N2 0 6 3 0 N E X T N 2 0 6 4 0 F O N 2 = l T O2 0 6 5 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 1 5 7 ) ;2 0 6 6 0 P R I N T C H R $ ( 1 7 ) ;2 0 6 7 0 F O N l = l T O 3 : N E X T N 2 0 6 8 0 F O N = l T O2 0 6 9 0 P R I N T C H R $ ( C N ( N ) ) ;2 0 7 0 0 P R I N T C H R $ ( 1 5 7 ) ;2 0 7 1 0 F O N l = l T O 3 : N E X T N 2 0 7 2 0 N E X T2 0 7 3 0 N E X T N 2 0 7 4 0 F L I P = I N T ( R N D ( 0 ) * 2 ) + l2 0 7 5 0 P R I N T C H R $ ( 1 7 ) ; C H R $ ( 1 5 7 ) ;2 0 7 6 0 I F L I P = 1 T H E N F L I P $ = " H E A D S " : E L S E F L I P $ = " T A I L S "2 0 7 7 0 P R I N T F L I P $2 0 7 8 0 R E T U R N

H O T U S S U B R O U T I N E

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

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 0 4 1 0 : C l e a r s c r e e n .L i n e 2 0 4 2 0 : D A T A f o g r a p h i c s c h a r a c t e r s r e p r e s e n t i n g c o i n

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

L i n e s 2 0 4 3 0 - 2 0 4 5 0 : R e a d t h e d a t a i n t o a r r a y C N ( N ) .L i n e 2 0 4 6 0 : M o v e t h c u r s o r d o w n s e v e n l i n e s . Y o c a

Page 179: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 179/290

Page 180: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 180/290

1 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

N - S I D E D D I C EW H A T I D O E S : R o l l s v a r i a b l e n u m b e r o d i c e , w i t h v a r i a b l e n u b e o s i d e s .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * *1 1 R E 1 2 R E N - S I D E D D I C E1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 0 R E M S U P P L I E D B Y U S E R1 8 R E S I D E S : N U M B E R O S I D E S1 9 R E D I C E : N U M B E R O D I C E2 0 R E R E S U L T2 1 R E G R A P H I C D I C E R O L L2 2 R E T T T O T A L O R O L L2 3 R E D ( N ) : I N D I V I D U A L D I C E2 4 0 R E M2 5 R E 2 6 R E * * I N I T I A L I Z E * * 2 7 S I D E S = 62 8 D I C E = 22 9 S C N C L R3 0 D A T A 1 0 8 , 1 1 1 , 1 1 2 , 1 8 63 1 P R I N T : P R I N T : P R I N T3 2 F O N = T 3 3 R E A D D I C E ( N )3 4 N E X T N3 5 G O S U B 2 0 8 1 03 6 E N 2 0 8 0 0 R E M * * S U B R O U T I N E * * 2 0 8 1 0 F O N 3 = l T O D I C E2 0 8 2 0 F O N 2 = l T 2 0 8 3 0 F O N = T 2 0 8 4 0 P R I N T C H R $ ( 3 2 ) ; C H R $ ( 2 9 ) ; C H R $ ( D I C E ( N ) ) ; C H R $ ( 1 5 7 ) -2 0 8 5 0 F O N l = l T O 3 : N E X T N 2 0 8 6 0 N E X T N2 0 8 7 0 N E X T N 2 0 8 8 0 P R I N T C H R $ ( 1 6 6 ) ; "2 0 8 9 0 D ( N 3 ) = I N T ( R N D ( 0 ) * S I D E S ) + l2 0 9 0 0 P R I N T D ( N 3 )2 0 9 1 0 P R I N T : P R I N T : P R I N T2 0 9 2 0 N E X T N 2 0 9 3 0 F O N 4 = l T D I C E2 0 9 4 0 T T = T T + D ( N 4 )

Page 181: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 181/290

G a m e R o u t i n e s 1 6

2 0 9 5 0 N E X T N 2 0 9 6 0 P R I N T " T O T A L : " ; T T2 0 9 7 0 R E T U R N

H O T U S S U B R O U T I N ET h i s s u b r o u t i n e w i l l r o l l a m a n y d i c e a y o s p e c i f y , w i t h

t h n u m b e r o s i d e s y o r e q u e s t . D u n g e o n s a n d D r a g o n s p l a y e r si p a r t i c u l a r c a s p e c i f y h o m a n y s i d e s e a c h d i w i l l h a v e . Y o m i g h t w a n t t a d a i n p u t r o u t i n e t h a t w i l l r e q u e s t t h e n u m b e ro s i d e s p r i o r t r o l l , a w e l l a s t h e n u m b e r o f d i c e t b r o l l e d .A l t h d i c e i n t h s e m u s t h a v e t h s a m e n u m b e r o s i d e s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 7 0 : D e f i n e n u m b e r o s i d e s .L i n e 2 8 0 : D e f i n e n u m b e r o d i c e .L i n e 2 9 0 : C l e a r s c r e e n .L i n e s 3 0 0 - 3 4 0 : R e a d i n t o d a t a C H R $ c o d e s f o c h a r a c t e r

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

L i n e 3 5 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 0 8 1 0 : B e g i n l o o p f r o m t n u m b e r o f d i c e t b r o l l e d .L i n e s 2 0 8 2 0 - 2 0 8 7 0 : P r i n t i m a g e o d i c e r o l l i n g a c r o s s s c r e e n .

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

L i n e 2 0 8 9 0 : S e l e c t t h v a l u e r o l l e d .L i n e 2 0 9 0 0 : P r i n t t h e v a l u e t t h s c r e e n .L i n e 2 0 9 1 0 : M o v e d o w n t h r e e l i n e s t o a l l o w f o n e x t d i t b

r o l l e d .L i n e 2 0 9 2 0 : R e p e a t t h n e x t d i e .L i n e s 2 0 9 3 0 - 2 0 9 6 0 : A d u t h t o t a l o t h d i c e t h r o w n .L i n e 2 0 9 7 0 : R e t u r n .

Y O S U P P L Y

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

Page 182: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 182/290

1 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

S U G G E S T E D E N H A N C E M E N T S : P r o d u c e g r a p h i c i m a g e o e a c hd i r o l l e d t h a t w i l l h a v e t h c o r r e c t n u m b e r o s p o t s . A l l o w u s e r st e n t e r h o m a n y d i c e a n h o m a n y s i d e s p r i o r t e a c h r o l l .A l l o w h a v i n g e a c h d i i n c l u d e d i f f e r e n t n u m b e r o s i d e s , s m i x e d s e o d i c e c a b r o l l e d .

R E S U L T

N - s i d e d d i c e r o l l e d .

D E A L C A R D SW H A T I D O E S : D e a l s a d e c k o c a r d s .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 0 R E M D E A L C A R D S1 3 R E 1 4 R E * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N C N U M B E R C A R D S1 9 R E R E S U L T2 0 0 R E M D E C K $ ( N ) : D E C K2 1 R E C A R D ? : C A R D D R A W N2 2 0 R E M D R A W : R A N D O M C A R D2 3 R E 2 4 0 R E M2 5 0 R E M * * I N I T I A L I Z E * * 2 6 D I M D E C K ? ( 5 2 )2 7 D A T A 1 9 3 " , 2 1 1 , 2 1 8 , 2 1 2 8 R E * * R E A D S U I T S * *

2 9 F O N = T 3 0 R E A D A3 1 S U I T $ ( N ) = C H R $ ( A )3 2 N E X T3 3 R E * * A S S E M B L E D E C K * * 3 4 F O R S U I T = 1 T O3 5 0 C U = C U + 1

Page 183: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 183/290

G a m e R o u t i n e s 1 6

3 6 D E C K ? ( C U ) = " A C E O U + S U I T $ ( S U I T )3 7 C U = C U + 13 8 D E C K $ ( C U ) = " K I N G O F " + S U I T $ ( S U I T )3 9 C U = C U + 14 0 D E C K $ ( C U ) = " Q U E E N O " + S U I T $ ( S U I T )4 1 C U = C U + 14 2 D E C K $ ( C U ) = " J A C K O F " + S U I T $ ( S U I T )4 3 F O N = T 1 4 4 C U = C U + 14 5 D E C K $ ( C U ) = S T R $ ( N ) + " O F " + S U I T $ ( S U I T )4 6 N E X T4 7 N E X T S U I T4 8 N C = 5 24 9 G O S U B 2 1 0 1 05 0 P R I N T C A R D $5 1 E N 2 1 0 0 0 R E M * * S U B R O U T I N E * * 2 1 0 1 0 I N C O O G O T O 2 1 0 5 02 1 0 2 0 C A R D $ = " "2 1 0 3 0 P R I N T " D E C K G O N E 1 I 2 1 0 4 0 R E T U R N2 1 0 5 0 D R A W = I N T ( R N D ( 1 ) * N C ) + 12 1 0 6 0 C A R D $ = D E C K $ ( D R A W )2 1 0 7 0 D E C K $ ( D R A W ) = D E C K $ ( N C )2 1 0 8 0 N C = N C - 12 1 0 9 0 R E T U R N

H O T O U S E S U B R O U T I N E

M a n y g a m e p r o g r a m s r e q u i r e d e a l i n g d e c k o c a r d s . Y o u ro w p r o g r a m s m a s i m u l a t e d r a w i n g f r o m r a n d o m l y s h u f f l e dd e c k s i m p l y b c a l l i n g t h i s s u b r o u t i n e . T h d e c k h a s a l r e a d y b e e na s s e m b l e d ( L i n e s 2 1 0 - 3 6 0 ) u s i n g t h C o m m o d o r e 1 2 g r a p h i c sc h a r a c t e r s f o s u i t s , a n t h n u m b e r s o w o r d s f o t h v a l u e o t h c a r d s .

I y o n e e d t d e t e r m i n e t h r a n k o t h c a r d f o y o u r p r g r a m , a l c a r d s t h r o u g h t h 1 m a b a s c e r t a i n e d b l i n e s u c ha s : " V V A L ( C A R D $ ) " .

I t h e n f o u r m o r e l i n e s a r e n e e d e d , s u c h a s " I L E F T $ ( C A R D $ , 1 ) " J T H E N l l o " I L E F T $ ( C A R D $ , 1 )" Q " T H E N V = 1 2 " .

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

Page 184: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 184/290

1 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 6 0 - 2 7 0 : D I M e n s i o n d e c k , w i t h r o o m f o 5 c a r d s ,a n t h D A T A l i n e s f o t h e c h a r a c t e r g r a p h i c s r e p r e s e n t i n g t h es u i t s .

L i n e s 2 9 0 - 3 2 0 : T h s u i t c h a r a c t e r s a r e r e a d i n t o t h a r r a yS U I T $ ( n ) .

L i n e 3 4 0 : S t a r t a s s e m b l i n g a u n s h u f f l e d d e c k o c a r d s , r p e a t i n g f o u r t i m e s , o n c e f o e a c h s u i t .

L i n e 3 5 0 : C o u n t e r C k e e p s t r a c k o w h i c h c a r d h a b e e na s s e m b l e d s f a r .

L i n e s 3 6 0 - 4 2 0 : A d t h f a c e c a r d s a n a c t t h d e c k .L i n e s 4 3 0 - 4 7 0 : A s s e m b l e t h o t h e r c a r d s , d e u c e t h r o u g h 1 0

a n r e p e a t .L i n e 4 8 0 : S e i n i t i a l n u m b e r o c a r d s r e m a i n i n g i t h d e c k

a 5 2 L i n e 4 9 0 : A c c e s s t h s u b r o u t i n e .L i n e 5 0 0 : P r i n t t h c a r d s e l e c t e d .L i n e 2 1 0 1 0 : C h e c k t s e i a n c a r d s a r l e f t i t h d e c k ; i

n o t , g t c a r d - d r a w i n g r o u t i n e .L i n e 2 1 0 2 0 : O t h e r w i s e , p r i n t D E C K G O N E .L i n e s 2 1 0 5 0 - 2 1 0 6 0 : T h c o m p u t e r s e l e c t s n u m b e r b e t w e e n

a n N ( 5 t h i s t i m e ) , a n t h a t e l e m e n t o D E C K $ ( n ) b e c o m e st h e c a r d d r a w n .

L i n e 2 1 0 7 0 : T h i s l e a v e s " h o l e " i n t h d e c k a p o s i t i o nD R A W . Y o f i l l i u b t a k i n g t h l a s t c a r d i t h d e c k , w h i c h i D E C K $ ( N C ) , a n p l a c i n g i i D E C K $ ( D R A W ) .

L i n e 2 1 0 8 0 : T h i s l e a v e s t h e " h o l e " a t t h e n d , b u y o t h e nc h a n g e N t e q u a l N C - 1 , s t h c o m p u t e r w i l l d r a w o n l y f r o mt h e l e m e n t s t h r o u g h 5 o t h n e x t t i m e t h r o u g h . T h i r d t i m e ,i w i l l c h o o s e t h r o u g h 5 0 a n s f o r t h . I d o e s n o m a t t e r t h a ty o u h a v e m i x e d u p t h e o r d e r o t h d e c k , s i n c e y o w a n t t h e c a r d ss h u f f l e d i t h f i r s t p l a c e .

E a c h e l e m e n t o D E C K $ ( n ) c o n s i s t s o f n u m b e r , o f a c ec a r d n a m e , p l u s t h e C o m m o d o r e 1 2 C H R $ v a l u e f o t h s u i t( e i t h e r 1 9 3 , 2 1 1 , 2 1 8 , o 2 1 6 ) . T h i s p r o d u c e s f u l l d e c k o 5 c a r d s .

Page 185: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 185/290

G a m e R o u t i n e s 1 6

Y O S U P P L Y

D r a w c a r d s a n e e d e d .

S U G G E S T E D E N H A N C E M E N T S ; D r a w a c t u a l i m a g e s o t h e c a r d s a se a c h i d r a w n .

R E S U L T

S h u f f l e d d e c k o c a r d s i d e a l t .

D E L A Y L O O PW H A T I D O E S ; P r o v i d e s d e l a y l o o p t h a t c h a n g e s i n l e n g t h .

L E V E L ; N o v i c e

1 0 R E * * * * * * * * *1 1 R E * 1 2 R E D E L A Y1 3 R E 1 4 R E M * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E D E L A Y : I N I T I A L D E L A Y1 9 R E M R E P E A T S : T I M E S T O R E P E A T2 0 R E M C H A N G E : A M O U N T O C H A N G E2 1 R E P L U S O M I N U S2 2 R E R E S U L T2 3 R E M L O O P C H A N G E S I 2 4 R E D E L A Y E A C H T I M E2 5 R E 2 6 R E 2 7 R E * * I N I T I A L I Z E * * 2 8 D E L A Y = 1 0 0 02 9 C H A N G E = . 9 O3 0 R E P E A T S = 43 1 G O S U B 2 1 2 1 03 2 P R I N T n F I N I S H E D M3 3 E N 2 1 2 0 0 R E M * * S U B R O U T I N E *

Page 186: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 186/290

1 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 1 2 1 0 F O N = T R E P E A T S2 1 2 2 0 F O N l = l T D E L A Y2 1 2 3 0 N E X T N 2 1 2 4 0 D E L A Y = D E L A Y * C H A N G E2 1 2 5 0 P R I N T " T H R O U G H L O O P " ; 2 1 2 6 0 N E X T2 1 2 7 0 R E T U R N

H O T U S S U B R O U T I N E

I g a m e s , d e l a y l o o p s a r f r e q u e n t l y u s e d t d i s p l a y m e s a g e s o t h e s c r e e n f o a g i v e n l e n g t h o f t i m e . T h C o m m o d o r e1 2 8 h a s t h S L E E P c o m m a n d t h e l p t m a k e t h i s e a s i e r . H o e v e r , a n o t h e r i m p o r t a n t u s e i t c o n t r o l t h s p e e d o m o v e m e n to s o m e o t h e r p l a y a c t i o n n o e a s i l y c o n t r o l l e d t h r o u g h S L E E P .

B h a v i n g F O R - N E X T l o o p c o u n t o f b e t w e e n e a c h m o v e ,y o c a b u i l d i s h o r t d e l a y . l o o p f r o m 1 t 1 0 m i g h t s l o wt h i n g s d o w n a p p r e c i a b l y , w h e r e a s s e t t i n g t h u p p e r l i m i t t 1 w o u l d p r o d u c e o n l y n e g l i g i b l e i m p a c t .

T h i s s u b r o u t i n e a l l o w s t h e u s e r t v a r y t h l e n g t h o t h d e l a y l o o p s t h a t a c t i o n w i l l g e f a s t e r a n f a s t e r , u n t i l t h F O R - N E X T l o o p i p e r f o r m e d o n l y o n c e e a c h t i m e a n t h e r e f o r eh a a l m o s t n e f f e c t o t h p r o g r a m .

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 0 : S e i n i t i a l d e l a y t 1 0 0 0 .L i n e 2 9 0 : S e c h a n g e f a c t o r t . 9 L i n e 3 0 0 : S e n u m b e r o r e p e a t s t 4 L i n e s 3 1 0 - 3 3 0 : A c c c e s s t h s u b r o u t i n e a n p r i n t F I N I S H E Dw h e n d o n e .L i n e 2 1 2 1 0 : S t a r t l o o p f r o m t n u m b e r o f r e p e a t s .L i n e 2 1 2 2 0 : S t a r t d e l a y .L i n e 2 1 2 3 0 : E n d e l a y .L i n e 2 1 2 4 0 : C h a n g e v a l u e o d e l a y .

Page 187: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 187/290

G a m e R o u t i n e s 1 6

L i n e 2 1 2 5 0 : S h o w i t e r a t i o n t h r o u g h l o o p , t h a t i s h o m a n yt i m e s t h l o o p h a b e e n r u n .

L i n e 2 1 2 6 0 : D t h l o o p a g a i n w i t h t h n e d e l a y f a c t o r .

Y O S U P P L Y

A i n i t i a l v a l u e i n e e d e d f o D E L A Y . h i g h n u m b e r w i l ls t a r t t h p r o g r a m o f v e r y s l o w l y . l o w e r n u m b e r w i l l p r o d u c em o r e m o d e r a t e b e g i n n i n g s p e e d . Y o a l s o m u s t d e f i n e t h a m o u n to C H A N G E . F r a c t i o n a l n u m b e r s w i l l c a u s e D E L A Y t g e s m a l l e re a c h t i m e . T h a t i s i D E L A Y i 1 0 0 0 a f i r s t , a n C H A N G E i . 9 0 , t h e n D E L A Y w i l l b s e t t o 9 0 o t h s e c o n d t i m e t h r o u g ht h l o o p , 8 1 t h t h i r d t i m e , a n 7 2 t h t h i r d t i m e .A d e c i m a l f r a c t i o n s a p p r o a c h 1 . 0 , t h a m o u n t o s p e e d u pe a c h t i m e w i l l b s m a l l e r , p r o d u c i n g a s l o w e r a c c e l e r a t i o n . S m a l l e rf r a c t i o n s , s u c h a . 7 o e v e n . 5 0 , w i l l r e u t h s p e e d q u i t eq u i c k l y .

C H A N G E c a a l s o b d e f i n e d a n u m b e r l a r g e r t h a n 1 S e t t i n g i t 1 . w i l l s l o w l y i n c r e a s e t h d e l a y e a c h t i m e . A n n u m b e r l a r g e r t h a n 1 . ( s u c h a s 2 o 3 w i l l p r o b a b l y s l o w d o w nt h p r o g r a m m o r e t h a n y o d e s i r e .

S U G G E S T E D E N H A N C E M E N T S : U s s o u n d t s h o w h o t h d e l a yl o o p i b e i n g c o u n t e d o f f .

R E S U L T

P r o g r a m s p e e d s u o s l o w s d o w n g r a d u a l l y , a r a t e s l e c t e d b u s e r .

Page 188: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 188/290

Page 189: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 189/290

I N T R O D U C T I O NT G R A P H I C S

G r a p h i c s h a v e b r o a d a p p l i c a t i o n s i p r o g r a m m i n g , a n d s o m e u s e r sc h o o s e t h e i r h a r d w a r e a l e a s t p a r t l y o t h b a s i s o f t h e g r a p h i c sc a p a b i l i t i e s o f t h m a c h i n e . C o m p l e x a r r a y s o n u m b e r s a n d f i u r e s c a b m o r e e a s i l y u n d e r s t o o d i t h e y a r p o r t r a y e d i c h a r to g r a p h f o r m . D e s i g n w o r k t h a t w a d o n e m a n u a l l y c a b p e r f o r m e d m o r e r a p i d l y w i t h c o m p u t e r g r a p h i c s . G a m e s , o c o u r s e ,d e p e n d h e a v i l y o g r a p h i c i m a g e s f o t h e i r s p a c e s h i p s , r a c e c a r s ,a n o t h e r s c r e e n o b j e c t s .

T h C o m m o d o r e 1 2 8 h a s a l t h i m p r e s s i v e g r a p h i c s a b i l i t i e so t h C o m m o d o r e 6 4 p l u s h o s t o n e f e a t u r e s . L e a d i n g t h w a a r 1 n e s p e c i a l i z e d g r a p h i c s c o m m a n d s t h a t a l l o w t h e

1 7

Page 190: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 190/290

Page 191: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 191/290

I n t r o d u c t i o n t G r a p h i c s 1 7

a n 8 0 - c o l u m n m o d e s , t h c o m p u t e r c o u l d b t r e a t e d a f i v ed i f f e r e n t P C s .

W h e n i c o m e s t g r a p h i c s , e v e n i C o m m o d o r e 1 2 m o d e y o m u s t t r e a t t h c o m p u t e r a i i w e r e t w o d i f f e r e n t m a c h i n e s .E a c h s c r e e n f o r m a t i c o n t r o l l e d b s e p a r a t e s p e c i a l i z e d m i c r op r o c e s s o r c h i p . T h 8 0 - c o l u m n c h i p , t h 8 5 6 3 , o f f e r s 1 c o l o r s a n d ,a l e a s t f o t h p u r p o s e s o t h i s b o o k , c a b e u s e d o n l y f o t e x ta n c h a r a c t e r g r a p h i c s . I 8 0 - c o l u m n m o d e t h C o m m o d o r e 1 2 t r e a t s t h s c r e e n a s 2 0 0 0 s e p a r a t e l o c a t i o n s ( 8 0 c o l u m n s 2 l i n e s ) a n c a p l a c e a n o t h c h a r a c t e r s i i t c h a r a c t e r s e w i t h i n e a c h o t h o s e 2 0 0 0 l o c a t i o n s .

I o n s e n s e , b i t - m a p p e d m o d e i l e s s f l e x i b l e . I n s t e a d o p r i n t i n g c h a r a c t e r s i i t s c r e e n l o c a t i o n s , b i t - m a p m o d e c a o n l ys w i t c h e a c h o t h e m o o o f f . H o w e v e r , y o h a v e g r e a t m a n ym o r e l o c a t i o n s t w o r k w i t h — 6 4 , 0 0 0 i n s t e a d o 2 0 0 0 . S o i p r a ct i c e , b i t - m a p p e d g r a p h i c s i m o r e f l e x i b l e b e c a u s e y o c a p r i n t

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

T h 4 0 - c o l u m n C o m m o d o r e 1 2 i c o n t r o l l e d b t h V i d e oI n t e r f a c e C o n t r o l l e r , o V I c h i p . T h e s a m e 1 c o l o r s a v a i l a b l ef r o m 8 0 - c o l u m n m o d e a r p o s s i b l e , p l u s b i t - m a p p e d g r a p h i c s , s p r i t e s ,a n h o s t o n e g r a p h i c s c o m m a n d s .

T h k e t u s i n g g r a p h i c s i t s e l e c t t h p r o p e r g r a p h i c sm o d e . S i x a r e a v a i l a b l e :

G r a p h i c s 0 T h i s i s t a n d a r d 4 0 - c o l u m n t e x t . O n l y a l p h a -n u m e r i c s a n s p e c i a l s y m b o l s i t h C o m m o d o r e 1 2 c h a r a c t e r s e a r a l l o w e d . T h i s i t h m o d e t h c o m p u t e r b o o t s u i w h e n y o h a v e s e l e c t e d t h 4 0 - c o l u m n d i s p l a y .

G r a p h i c s 1 T h i s i t h f u l l - s c r e e n b i t - m a p p e d d i s p l a y a l l o wi n y o t d r a w o s c r e e n t h a t i 3 2 d o t s o p i c t u r e e l e m e n t sw i d e b 2 0 d o t s t a l l . T h e s e p i c t u r e e l e m e n t s a r u s u a l l y c a l l e dp i x e l s f o r s h o r t .

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

Page 192: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 192/290

1 7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

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

G r a p h i c s 4 T h i s i t h s p l i t - s c r e e n v e r s i o n o m u l t i c o l o rb i t - m a p p e d g r a p h i c s .

G r a p h i c s 5 T h i s i t h 8 0 - c o l u m n t e x t a n c h a r a c t e r - g r a p h i c sm o d e — t h e d e f a u l t m o d e w h e n t h C o m m o d o r e 1 2 i b o o t e d u w i t h t h 8 0 - c o l u m n R G d i s p l a y .

G r a p h i c s m o d e s a r e n t e r e d t h r o u g h t h G R A P H I C c o m m a n d :G R A P H I C < m o d e n u m b e r > , < 0 t l e a v e t h e e x i s t i n g g r a p h

i c s c r e e n o t c l e a r i t > , < 0 - 2 5 , t i n d i c a t e t h l i n e o w h i c hy o w a n t t h t e x t t s t a r t . T h i s o p t i o n i v a l i d o n l y f o s p l i t -s c r e e n m o d e s a n 4 .

T h o t h e r b a s i c g r a p h i c s c o m m a n d i C O L O R , w h i c h a l l o w sy o t o s e t v a r i o u s c o l o r c o m b i n a t i o n s o t h s c r e e n . T h i s c o m a n d h a t w a r g u m e n t s , t h e s o u r c e o r s e c t i o n o f t h e s c r e e n t b c o l o r e d , a n t h c o l o r c o d e . T h s o u r c e s a v a i l a b l e a r e :

S o u r c e 0 T h i s c o n t r o l s t h 4 0 - c o l u m n b a c k g r o u n d c o l o r .S o u r c e 1 T h i s c o n t r o l s t h f o r e g r o u n d c o l o r f o t h g r a p h i c s

s c r e e n . T h i s i t h c o l o r o t h o b j e c t s y o m i g h t b d r a w i n g w i t ho t h e r g r a p h i c s c o m m a n d s .

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

S o u r c e 3 T h i s c o n t r o l s t h s e c o n d f o r e g r o u n d c o l o r i m u l t ic o l o r m o d e .

S o u r c e 4 T h i s c o n t r o l s t h b o r d e r s u r r o u n d i n g t h 4 0 - c o l u m ns c r e e n , w h e t h e r i n t e x t o g r a p h i c s m o d e . P r e v i o u s s u b r o u t i n e s i t h i s b o o k h a v e u s e d P O K E s t m a k e t h i s c h a n g e . T h P O K E sw i l l w o r k i n e i t h e r C o m m o d o r e 1 2 o C o m m o d o r e 6 m o d e .C O L O R 4 , x , w h e r e i c o l o r n u m b e r 1 - 1 6 , w i l l w o r k o n l y i C o m m o d o r e 1 2 m o d e .

Page 193: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 193/290

I n t r o d u c t i o n t G r a p h i c s 1 7

S o u r c e 5 T h i s c h a n g e s t h c h a r a c t e r c o l o r f o r e i t h e r t h 4 0 o 8 0 - c o l u m n t e x t s c r e e n . A g a i n , a P O K E o p r i n t i n g t h c o l o r ' sC H R $ v a l u e w a u s e d p r e v i o u s l y , w h e r e C O L O R 5 , m a b u s e d i n s t e a d .

S o u r c e 6 T h i s i u s e d t c h a n g e t h 8 0 - c o l u m n b a c k g r o u n dc o l o r .

N o t e t h a t t h c o l o r s p r o d u c e d b t h e 1 6 c o l o r n u m b e r s d i f f e rs l i g h t l y b e t w e e n 4 0 a n 8 0 - c o l u m n m o d e . P a g e s 9 a n 9 o y o u r C o m m o d o r e 1 2 8 S y s t e m G u i d e p r o v i d e l i s t s o t h t w c o l o rs e t s .

T h e r e a r s i o t h e r n o n s p r i t e g r a p h i c s c o m m a n d s . B O a l o w s d r a w i n g r e c t a n g l e s , i n c l u d i n g s q u a r e s , w i t h a s i n g l e s t a t em e n t a t h l o c a t i o n o y o u r c h o i c e . C I R C L E p e r m i t s q u i c k d r a w i n go o v a l s , i n c l u d i n g c i r c l e s , a n o t h e r p o l y g o n s a t h c o o r d i n a t e sy o s e l e c t . F i g u r e s d r a w n w i t h e i t h e r c a b f i l l e d i w i t h P A I N T .D R A W i u s e d t p l o t f r o m s p e c i f i c p o i n t ( o t h l a s t l o c a t i o n o t h p i x e l c u r s o r ) t t h p o i n t s y o d e s i g n a t e . A l l t h e s e c o m m a n d sh a v e n u m b e r o o p t i o n s ; c o n s u l t y o u r S y s t e m G u i d e o t h P r o g r a m m e r ' s R e f e r e n c e G u i d e f o m o r e c o m p l e t e d i s c u s s i o n o ft h e s e , a s w e l l a S C A L E , w h i c h s e t s t h r e l a t i v e s i z e o t h b i t sw h i l e m a i n t a i n i n g t h e i r p r o p o r t i o n s t o n a n o t h e r .

B I T - M A P D R A W I N GW H A T I D O E S : D r a w s o b i t - m a p p e d s c r e e n i h i g h r e s o l u t i o n .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E B I T M A P D R A W I N G1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E S C R E E N A N D L I N E C O L O R C A 1 9 R E B C H O S E N B U S E R F R O M2 0 R E C O L O R L I S T2 1 R E R E S U L T

Page 194: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 194/290

1 7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 2 R E D R A W I N G O N B I T M A P P E D2 3 R E S C R E E N U S I N G J O Y S T I C K2 4 0 R E M2 5 R E

2 6 R E * * I N I T I A L I Z E * * 2 7 D A R K = 1 : W H I T E = 22 8 R E D = 3 : C Y A N = 42 9 P U R P L E = 5 : G R E E N = 63 0 0 B L U E = 7 : Y E L L O W = 83 1 P U M P K I N = 9 : B R O W N = 1 03 2 L R E D = 1 1 : D G R A Y = 1 23 3 M G R A Y = 1 3 : L G R E E N = 1 43 4 L B L U E = 1 5 : G R A Y = 1 63 5 C O L O R 0 , W H I T E3 6 C O L O R 1 , R E D3 7 G R A P H I C 1 , 3 8 S O U R C E = 13 9 X 1 = 1 : Y 1 = 12 2 0 0 0 R E * * S U B R O U T I N E * * 2 2 0 1 0 A = J O Y ( 1 )2 2 0 2 0 O G O S U B 2 2 0 5 0 , 2 2 0 7 0 , 2 2 1 2 0 , 2 2 1 5 0 , 2 2 2 0 0 , 2 2 2 3 0 , 2 2 2 8 0 , 2 2 3 1 02 2 0 3 0 D R A W S O U R C E , X I , Y l2 2 0 4 0 G O T O 2 2 0 1 02 2 0 5 0 Y 1 = Y 1 - 1 : I F Y K T H E N Y 1 = O2 2 0 6 0 R E T U R N2 2 0 7 0 Y 1 = Y 1 - 12 2 0 8 0 X 1 = X 1 + 12 2 0 9 0 I X l > 3 1 9 T H E N X l = 3 1 92 2 1 0 0 I Y K T H E N Y l = O2 2 1 1 0 R E T U R N2 2 1 2 0 X 1 = X 1 + 12 2 1 3 0 I X l > 3 1 9 T H E N X l = 3 1 92 2 1 4 0 R E T U R N2 2 1 5 0 Y 1 = Y 1 + 12 2 1 6 0 X 1 = X 1 + 12 2 1 7 0 I Y l > 1 9 9 T H E N Y l = 1 9 92 2 1 8 0 I X l > 3 1 9 T H E N X l = 3 1 92 2 1 9 0 R E T U R N2 2 2 0 0 Y 1 = Y 1 + 12 2 2 1 0 I Y l > 1 9 9 T H E N Y l = 1 9 92 2 2 2 0 R E T U R N2 2 2 3 0 Y 1 = Y 1 + 12 2 2 4 0 X 1 = X 1 - 12 2 2 5 0 I Y l > 1 9 9 T H E N Y l = 1 9 92 2 2 6 0 I X K T H E N X l = O2 2 2 7 0 R E T U R N2 2 2 8 0 X 1 = X 1 - 12 2 2 9 0 I X K T H E N X l = O2 2 3 0 0 R E T U R N2 2 3 1 0 X 1 = X 1 - 12 2 3 2 0 Y 1 = Y 1 - 12 2 3 3 0 I X K T H E N X l = O2 2 3 4 0 I Y K T H E N Y l = O2 2 3 5 0 R E T U R N

Page 195: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 195/290

I n t r o d u c t i o n t G r a p h i c s 1 7

H O T O U S E S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 7 0 - 3 4 0 : D e f i n e s e o v a r i a b l e n a m e s w i t h t h 1 c o l o r n u m b e r s .

L i n e 3 5 0 : S e t h b a c k g r o u n d c o l o r t w h i t e .L i n e 3 6 0 : S e t h f o r e g r o u n d c o l o r t o r e d .L i n e 3 8 0 : D e f i n e t h s o u r c e t b d r a w n o a t h e f o r e g r o u n d .

Y o m a a l s o d r a w o t h b a c k g r o u n d b y c h a n g i n g S O U R C E t e q u a l 0

L i n e 3 9 0 : D e f i n e t h i n i t i a l c o o r d i n a t e s o t h p i x e l c u r s o r ,X a n Y a 1 , 1 — t h e u p p e r l e f t - h a n d c o r n e r o t h s c r e e n . I y o w i s h t h d r a w i n g t b e g i n s o m e w h e r e e l s e o t h s c r e e n , y o m a r e d e f i n e t h e s e v a l u e s .

L i n e 2 2 0 1 0 : R e a d J o y s t i c k 1 L i n e 2 2 0 2 0 : D e p e n d i n g o t h v a l u e r e t u r n e d b J o y s t i c k 1

a c c e s s o n o f e i g h t m o v e m e n t r o u t i n e s .L i n e 2 2 0 3 0 : D r a w s i n g l e p i x e l a t h e c u r r e n t v a l u e s o X

a n Y l L i n e 2 2 0 4 0 : R e t u r n f o m o r e j o y s t i c k i n p u t .L i n e s 2 2 0 5 0 - 2 2 3 5 0 : A l t h e s e l i n e s a r b a s i c a l l y t h s a m e

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

I t h j o y s t i c k w a p r e s s e d i s o u t h , s o u t h e a s t , o r s o u t h w e s td i r e c t i o n , t h e n Y i i n c r e m e n t e d a n k e p t f r o m b e c o m i n g m o r et h a n 1 9 9 , w h i c h w o u l d t a k e i o f t h b o t t o m o t h s c r e e n .

s i m i l a r r o u t i n e t a k e s p l a c e f o n o r t h e a s t , e a s t , a n s o u t h -

Page 196: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 196/290

1 7 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

e a s t d i r e c t i o n s ( X i i n c r e m e n t e d ) , a w e l l a s n o r t h w e s t , w e s t ,a n s o u t h w e s t i n d i c a t i o n s ( X i d e c r e m e n t e d ) . I n c a s e i X p e r m i t t e d t d e c r e a s e t l e s s t h a n 0 o t m o r e t h a n 3 1 9 .

Y O S U P P L Y

C o l o r c h o i c e s a n j o y s t i c k m o v e m e n t .

S U G G E S T E D E N H A N C E M E N T S : A d d w a t e r a s e t h e s c r e e n o t c h a n g e c o l o r s d u r i n g d r a w i n g . H i n t s m a b e f o u n d i d r a w i n gr o u t i n e s i C h a p t e r 5

R E S U L TD r a w i n g o h i g h - r e s o l u t i o n b i t - m a p p e d s c r e e n .

G R A P H I C S P L O T T I N GW H A T I D O E S : D r a w s f i g u r e s o s c r e e n f r o m u s e r i n p u t .

L E V E L : I n t e r m e d i a t e1 0 R E * * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E G R A P H I C S P L O T T I N G1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E S C R E E N A N D L I N E C O L O R C A 1 9 R E B C H O S E N B U S E R F R O M2 0 0 R E M C O L O R L I S T2 1 R E R E S U L T2 2 0 R E M P L O T T I N G O N B I M A P P E D2 3 R E M S C R E E N U S I N G C O O R D I N A T E S2 4 0 R E M2 5 R E 2 6 R E * * I N I T I A L I Z E * * 2 7 D A R K = 1 : W H I T E = 22 8 R E D = 3 : C Y A N = 42 9 P U R P L E = 5 : G R E E N = 6

Page 197: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 197/290

I n t r o d u c t i o n t G r a p h i c s 1 7

3 0 B L U E = 7 : Y E L L O W = 83 1 P U M P K I N = 9 : B R O W N = 1 03 2 L R E D = 1 1 : D G R A Y = 1 23 3 M G R A Y = 1 3 : L G R E E N = 1 43 4 L B L U E = 1 5 : G R A Y = 1 63 5 C O L O R 0 , W H I T E3 6 C O L O R 1 , R E D3 7 G R A P H I C 2 , 2 2 4 0 0 R E * * S U B R O U T I N E * * 2 2 4 1 0 S C N C L R2 2 4 2 0 P R I N T : P R I N T : P R I N T : P R I N T2 2 4 3 0 P R I N T " 1 D R A W C I R C L E O P O L Y G O N "2 2 4 4 0 P R I N T " 2 D R A W B O 3 C H A N G E C O L O R "2 2 4 5 0 P R I N T T A B ( 4 ) " E N T E R C H O I C E : 2 2 4 6 0 G E T K E Y A 2 2 4 7 0 A = V A L ( A $ )2 2 4 8 0 I A < O A > G O T O 2 2 4 6 02 2 4 9 0 O G O T O 2 2 5 0 0 , 2 2 8 5 0 , 2 3 0 3 02 2 5 0 0 P R I N T " C E N T E R C O O R D I N A T E S O S H A P E ( X , Y ) '2 2 5 1 0 I N P U T X $ , Y $2 2 5 2 0 X = V A L ( X $ ) : Y = V A L ( Y $ )2 2 5 3 0 P R I N T " R A D I U S ? "2 2 5 4 0 I N P U T X R 2 2 5 5 0 X R = V A L ( X R $ )2 2 5 6 0 P R I N T " R A D I U S : 2 2 5 7 0 I N P U T Y R 2 2 5 8 0 Y R = V A L ( Y R $ )2 2 5 9 0 I Y R = 0 T H E N Y R = X R2 2 6 0 0 P R I N T " S T A R T I N G A R C A N G L E ? "2 2 6 1 0 P R I N T " ( D E F A U L T I 0 ) 2 2 6 2 0 I N P U T S A 2 2 6 3 0 S A = V A L ( S A $ )2 2 6 4 0 P R I N T " E N D I N G A R A N G L E ? "2 2 6 5 0 P R I N T " D E F A U L T I 3 6 0 "2 2 6 6 0 I N P U T E A 2 2 6 7 0 E A = V A L ( E A $ )2 2 6 8 0 I E A = 0 T H E N E A = 3 6 02 2 6 9 0 P R I N T " R O T A T I O N ( D E F A U L T 0 ) 2 2 7 0 0 I N P U T A N 2 2 7 1 0 A N = V A L ( A N $ )2 2 7 2 0 P R I N T " D E G R E E S B E T W E E N S E G M E N T S "2 2 7 3 0 P R I N T " ( D E F A U L T I D E G R E E S ) "2 2 7 4 0 I N P U T I C 2 2 7 5 0 I C = V A L ( I C $ )2 2 7 6 0 I I C = 0 T H E N I C = 22 2 7 7 0 P R I N T " P A I N T I T ( Y / N ) "2 2 7 8 0 G E T K E Y A 2 2 7 9 0 I A $ = " Y " T H E N P N = 1 : G O T O 2 2 8 2 02 2 8 0 0 I A $ = " N " T H E N P N = 0 : G O T O 2 2 8 2 02 2 8 1 0 G O T O 2 2 7 8 02 2 8 2 0 C I R C L E 1 , X , Y , X R , Y R , S A , E A , A N , I C2 2 8 3 0 I P N = 1 T H E N P A I N T l , X , Y , 02 2 8 4 0 G O T O 2 2 4 2 02 2 8 5 0 P R I N T " E N T E R T O L E F T C O R N E R "2 2 8 6 0 P R I N T " C O O R D I N A T E S ( X , Y ) : 2 2 8 7 0 I N P U T X 1 $ , Y 1 $

Page 198: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 198/290

1 8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 2 8 8 0 X 1 = V A L ( X 1 $ ) : Y 1 = V A L ( Y 1 $ )2 2 8 9 0 P R I N T " E N T E R B O T T O M R I G H T C O R N E R "2 2 9 0 0 P R I N T " C O O R D I N A T E S ( X , Y ) : 2 2 9 1 0 I N P U T X 2 $ , Y 2 $2 2 9 2 0 X 2 = V A L ( X 2 $ ) : Y 2 = V A L ( Y 2 $ )2 2 9 3 0 P R I N T " E N T E R A N G L E O R O T A T I O N : 2 2 9 4 0 I N P U T A N 2 2 9 5 0 A N = V A L ( A N $ )2 2 9 6 0 P R I N T " P A I N T T H E B O X ? ( Y / N ) "2 2 9 7 0 G E T K E Y A 2 2 9 8 0 I A $ = " Y " T H E N P N = 1 : G O T O 2 3 0 1 02 2 9 9 0 I A $ = " N " T H E N P N = 0 : G O T O 2 3 0 1 02 3 0 0 0 G O T O 2 2 9 7 02 3 0 1 0 B O X 1 , X 1 , Y 1 , X 2 , Y 2 , A N , P N2 3 0 2 0 G O T O 2 2 4 2 02 3 0 3 0 P R I N T : P R I N T - . P R I N T2 3 0 4 0 P R I N T " C H A N G E : 2 3 0 5 0 P R I N T " 1 F O R E G R O U N D C O L O R "2 3 0 6 0 P R I N T " 2 B A C K G R O U N D C O L O R "2 3 0 7 0 G E T K E Y A 2 3 0 8 0 A = V A L ( A $ )2 3 0 9 0 I A < O A > G O T O 2 3 0 7 02 3 1 0 0 O N A G O T O 2 3 1 1 0 , 2 3 1 6 02 3 1 1 0 P R I N T : P R I N T : P R I N T2 3 1 2 0 P R I N T " E N T E R F O R E G R O U N D C O L O R N U M B E R : " ;2 3 1 3 0 I N P U T F G2 3 1 4 0 C O L O R 1 , F G2 3 1 5 0 G O T O 2 2 4 2 02 3 1 6 0 P R I N T : P R I N T : P R I N T2 3 1 7 0 P R I N T " E N T E R B A C K G R O U N D C O L O R N U M B E R : 2 3 1 8 0 I N P U T B G2 3 1 9 0 C O L O R 0 , B G2 3 2 0 0 G O T O 2 2 4 2 0

H O T U S S U B R O U T I N E

T h i s r o u t i n e i m i n i p r o g r a m i i t o w r i g h t t h a t a l l o w su s i n g t h C I R C L E a n B O c o m m a n d s t p l o t v a r i o u s - s i z e d o j e c t s o t h s c r e e n . Y o c a f i l l t h e m w i t h c o l o r . T h r o u t i n ed e m o n s t r a t e s t h s p l i t - s c r e e n b i t - m a p m o d e a n a l l o w s e x p e r im e n t i n g t s e w h a t d i f f e r e n t r a d i i , a r c a n g l e s , a n s o f o r t h d t c h a n g e t h s h a p e o f i g u r e o t h s c r e e n .

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

R e v i e w y o u r S y s t e m G u i d e f o m o r e c o m p l e t e d i s c u s s i o n o w h a t e a c h o t h p a r a m e t e r s o t h C I R C L E a n B O c o m m a n d d o e s .

Page 199: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 199/290

I n t r o d u c t i o n t G r a p h i c s 1 8

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 7 0 - 3 4 0 : D e f i n e a s e o v a r i a b l e n a m e s a t h 1 c o l o rn u m b e r s .

L i n e s 3 5 0 - 3 6 0 : S e f o r e g r o u n d a n b a c k g r o u n d c o l o r s .L i n e 3 7 0 : E n t e r s p l i t s c r e e n b i t - m a p m o d e a n c l e a r t h

s c r e e n .L i n e s 2 2 4 1 0 - 2 2 4 2 0 : C l e a r t h t e x t s c r e e n a n s c r o l l d o w n

f o u r l i n e s .L i n e s 2 2 4 3 0 - 2 2 4 8 0 : P r e s e n t m e n u o c h o i c e s , g e u s e r c h o i c e .L i n e 2 2 4 9 0 : B r a n c h t c h o i c e s e l e c t e d b u s e r .L i n e s 2 2 5 0 0 - 2 2 5 2 0 : A s f o c o o r d i n a t e s o t h c e n t e r o t h

o v a l o p o l y g o n .L i n e s 2 2 5 3 0 - 2 2 5 9 0 : A s f o x a n d r a d i i o t h s h a p e . I b o t h

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

L i n e s 2 2 6 0 0 - 2 2 6 8 0 : A s f o b e g i n n i n g a n e n d i n g a r a n g l e s .L i n e s 2 2 6 9 0 - 2 2 7 1 0 : A s f o r o t a t i o n o f t h f i g u r e . T h i s w i l l

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

L i n e s 2 2 7 2 0 - 2 2 7 6 0 : A s f o d e g r e e s b e t w e e n s e g m e n t s . S p e ci f y i n g l a r g e r i n c r e m e n t s t u r n s t h e o b j e c t f r o m c i r c l e o o v a l i n t op o l y g o n , s i n c e c i r c l e i p o l y g o n w i t h a i n f i n i t e n u m b e r o

s i d e s . ( A c t u a l l y , w i t h t h C o m m o d o r e 1 2 o a n p e r s o n a l c o p u t e r , t h n u m b e r o f " s i d e s " i n a a r o t h s c r e e n i f i n i t e . T h h i g h e r t h r e s o l u t i o n , t h s m a l l e r t h e y a r a n t h m o r e a r c l i k et h c u r v e l o o k s . )

L i n e s 2 2 7 7 0 - 2 2 8 1 0 : A s i f i g u r e s h o u l d b p a i n t e d w i t hc o l o r . I f s o s e t h e p a i n t f l a g , P N t 1

L i n e 2 2 8 2 0 : D r a w t h f i g u r e u s i n g t h p a r a m e t e r s e n t e r e d .L i n e 2 2 8 3 0 : I P s e t t o 1 t h e n a l s o p a i n t t h e f i g u r e .L i n e 2 2 8 4 0 : R e t u r n t t h m e n u .L i n e s 2 2 8 5 0 - 2 2 9 2 0 : E n t e r t o l e f t c o r n e r o t h b o t b

d r a w n , a n t h b o t t o m l e f t c o r n e r .L i n e s 2 2 9 3 0 - 2 2 9 5 0 : G e t h a n g l e o r o t a t i o n d e s i r e d .L i n e s 2 2 9 6 0 - 2 3 0 0 0 : A s i b o s h o u l d b e p a i n t e d .

Page 200: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 200/290

1 8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L i n e 2 3 0 1 0 : D r a w t h b o u s i n g t h p a r a m e t e r s s p e c i f i e d .L i n e 2 3 0 2 0 : R e t u r n t t h m e n u .L i n e s 2 3 0 3 0 - 2 3 1 9 0 : A s i f o r e g r o u n d o b a c k g r o u n d c o l o r i

t b e c h a n g e d , a n g e t h c o l o r n u m b e r . T h e n , c h a n g e t h c o l o ra n r e t u r n .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : C h a n g e t p r o v i d e b e t t e r e r r o r t r a p sf o r i l l e g a l v a l u e s d u r i n g t h i n p u t . W a r n t h e u s e r w h e n f i g u r ew i l l b o b s c u r e d b t h t e x t l i n e s . L e t h u s e r e n t e r c o l o r n a m e sa s d e f i n e d e a r l i e r i n t h p r o g r a m i n s t e a d o c o l o r n u m b e r s .

R E S U L T

C o l o r p l o t t i n g o s c r e e n .

P R O G R A M M I N G C H A R A C T E R SW H A T I D O E S : R e d e f i n e s f i v e c h a r a c t e r s t u s e r - s p e c i f i e d s e t .

L E V E L : I n t e r m e d i a t e

1 0 0 R E M * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E P R O G R A M C H A R A C T E R S1 3 R E 1 4 0 R E M * * * * * * * * * * * * * * * * * * * * * *1 5 0 R E M1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E D A T A L I N E S F O R D E S I R E D1 9 R E C H A R A C T E R S E 2 0 R E M R E S U L T2 1 R E C H A R A C T E R S R E D E F I N E D2 2 R E 2 3 R E 2 4 0 R E M * * D A T A * *

Page 201: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 201/290

I n t r o d u c t i o n t G r a p h i c s 1 8

2 5 D A T A 2 2 6 , 1 6 4 , 2 7 , 4 0 , 1 0 8 , 1 7 6 , 1 7 5 , 1 3 22 6 D A T A 1 9 5 , 1 9 5 , 6 8 , 6 0 , 2 4 , 2 4 , 6 0 , 2 42 7 D A T A 2 5 5 , 1 2 9 , 1 8 9 , 1 6 5 , 1 6 5 , 1 8 9 , 1 2 9 , 2 5 52 8 D A T A 1 9 5 , 1 9 5 , 6 8 , 6 0 , 2 4 , 2 4 , 6 0 , 2 42 9 D A T A 2 5 5 , 1 2 9 , 1 8 9 , 1 6 5 , 1 6 5 , 1 8 9 , 1 2 9 , 2 5 53 0 R E * * I N I T I A L I Z E * * 3 1 P R I N T C H R $ ( 1 4 2 )3 2 G O S U B 2 3 3 1 03 3 S C N C L R3 4 P R I N T " l = > < @ "3 5 E N 2 3 3 0 0 R E * * S U B R O U T I N E * * 2 3 3 1 0 P O K E 5 4 , 4 82 3 3 2 0 P O K E 5 8 , 4 82 3 3 3 0 C L 2 3 3 4 0 B A N K 1 2 3 3 5 0 F O N = T 5 1 2 3 3 6 0 P O K E N + 1 2 2 8 8 , P E E K ( N + 5 3 2 4 8 )2 3 3 7 0 N E X T2 3 3 8 0 B A N K 1 2 3 3 9 0 P O K E 2 6 0 4 , ( P E E K ( 2 6 0 4 ) A N D 2 4 0 ) + 1 22 3 4 0 0 F O N = 1 2 2 8 8 T 1 2 2 9 52 3 4 1 0 R E A D2 3 4 2 0 P O K E N , 2 3 4 3 0 N E X T2 3 4 4 0 F O N = 1 2 5 5 2 T O 1 2 5 5 92 3 4 5 0 R E A D2 3 4 6 0 P O K E N , 2 3 4 7 0 N E X T2 3 4 8 0 F O N = 1 2 7 8 4 T O 1 2 7 9 12 3 4 9 0 R E A D2 3 5 0 0 P O K E N , H2 3 5 1 0 N E X T2 3 5 2 0 F O N = 1 2 7 6 8 T 1 2 7 7 52 3 5 3 0 R E A D2 3 5 4 0 P O K E N , 2 3 5 5 0 N E X T2 3 5 6 0 F O N = 1 2 7 7 6 T 1 2 7 8 32 3 5 7 0 R E A D2 3 5 8 0 P O K E N , 2 3 5 9 0 N E X T2 3 6 0 0 R E T U R N

H O T U S E S U B R O U T I N E

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

Page 202: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 202/290

1 8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

a n t h n e x t . L o o k a h o l e t t e r " A i p u t o g e t h e r . E a c h " 0 i c o n s i d e r e d b l a n k s p a c e , a n e a c h " 1 d o t h a t i f i l l e d i n

0 0 0 1 1 0 0 00 0 1 0 0 1 0 00 1 0 0 0 0 1 00 1 1 1 1 1 1 00 1 0 0 0 0 1 00 1 0 0 0 0 1 00 1 0 0 0 0 1 00 0 0 0 0 0 0 0

S e t h l e t t e r " A i t h a t p a t t e r n ? S i n c e e a c h r o i e i g h tc h a r a c t e r s a c r o s s , a n e a c h c h a r a c t e r i e i t h e r o 1 i i c o n v e n i e n t t t h i n k o e a c h r o a b y t e a n t s t o r e i t h a t w a i m e m o r y . E i g h t c o n s e c u t i v e b y t e s w i l l s t o r e t h e i g h t r o w sn e e d e d t d e s c r i b e g i v e n c h a r a c t e r .

T h i s i e x a c t l y w h a t t h C o m m o d o r e 1 2 d o e s . T h i n f o r m at i o n o t h l e t t e r " A b e g i n s a m e m o r y l o c a t i o n 5 3 2 5 6 a n c o n t i n u e s f o e i g h t b y t e s . T h f i r s t l i n e a b o v e , 0 0 0 1 1 0 0 0 , i b n a r y , i 2 i d e c i m a l . S i m i l a r e i g h t - b y t e g r o u p s a r f o u n d i m e m o r y t t e l l t h c o m p u t e r h o t f o r m a l t h a l p h a a n g r a p h i c sc h a r a c t e r s , i n c l u d i n g r e v e r s e d c h a r a c t e r s .

U n f o r t u n a t e l y , c h a r a c t e r s a r a c t u a l l y s t o r e d i n R O M . W c a R E A D t h e i n f o r m a t i o n b u n o c h a n g e i t H o w e v e r , w h e n t h C o m m o d o r e 1 2 w a n t s t f i n d o u h o t b u i l d a g i v e n c h a r a c t e r ,i d o e s n o t g d i r e c t l y t t h p r o p e r R O l o c a t i o n . I n s t e a d , i c h e c k s a R A l o c a t i o n , w h i c h t e l l s i w h e r e t f i n d t h b e g i nn i n g o t h e c h a r a c t e r m e m o r y .

I y o c h a n g e t h i s , y o m u s t a r r a n g e t h a v e a l t h c h a r a ct e r s y o w a n t t u s m o v e d t t h n e l o c a t i o n . T h C o m m o d o r e1 2 w i l l n o g b a c k a n f o r t h , l o o k i n g i R O f o s o m e c h a r a c t e r sa n R A f o o t h e r s . N o r m a l l y , t h i s i a c c o m p l i s h e d b c o p y i n gf r o m R O t h e i n f o r m a t i o n a b o u t a l t h e c h a r a c t e r s y o w a n t t u s a n t h e n m o d i f y i n g o n l y t h o s e y o w a n t c h a n g e d .

T h a t i w h a t i d o n e i t h i s s u b r o u t i n e . T h f i r s t s t e p i t t e l lt h C o m m o d o r e 1 2 n o t l o o k a t h n o r m a l l o c a t i o n f o i t c h a r a c t e r i n f o r m a t i o n b u t o s t a r t a 1 2 2 8 8 d e c i m a l i n s t e a d . B c a u s e t h i s l o c a t i o n i B A S I C R A M , y o u h a v e t p r o t e c t i b

Page 203: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 203/290

I n t r o d u c t i o n t G r a p h i c s 1 8

l o w e r i n g t h t o p o f R A m e m o r y . Y o a c c o m p l i s h t h a t b P O K -i n 4 i n t o 5 a n 5 d e c i m a l , w h i c h a r e t h e r e g i s t e r s t h a t k e e pt r a c k o h o w m u c h R A i a v a i l a b l e f o p r o g r a m s . O n c e t h o s ep o i n t e r s h a v e b e e n c h a n g e d , y o u r p r o g r a m w i l l n o t u s e a n o t h m e m o r y s e a s i d e f o c h a r a c t e r s . T h n e c h a r a c t e r s e w i l lb s a f e .

N e x t , y o w i l l c o p y 6 c h a r a c t e r s f r o m R O i n t o t h p r t e c t e d R A l o c a t i o n s . T h i s i d o n e w i t h F O R - N E X T l o o p , w h i c hP E E K s i t h R O M , e x t r a c t s b y t e , a n P O K E s i i t h n e x tl o c a t i o n o f t h p r o t e c t e d a r e a .

I t h p r o g r a m d i n o t h i n g m o r e t h a n t h a t , t h e n t h c h a r a ct e s e w o u l d l o o k e x a c t l y t h e s a m e , e x c e p t t h a t t h C o m m o d o r e1 2 w o u l d b o b t a i n i n g t h i n f o r m a t i o n f r o m d i f f e r e n t p l a c e .I n s t e a d , y o w i l l P O K E s o m e n e d a t a i n t o t h l o c a t i o n s f o s o m e s e l e c t e d c h a r a c t e r s t h a t a r e n o t n e e d e d b y o u r p r o g r a m .T h e s e c h a r a c t e r s a r e t h " a t " s i g n ( @ ) , t h e x c l a m a t i o n p o i n t ( ! ) ,t h g r e a t e r t h a n s y m b o l ( > ) , t h l e s s t h a n s y m b o l ( < ) , a n t h e q u a l s s i g n ( = ) . T h c h a r a c t e r s c h o s e n n o a r d e f i n e d b e g i n n i n ga 1 2 2 8 8 , 1 2 5 5 2 , 1 2 7 8 4 , 1 2 7 6 8 , a n 1 2 7 7 6 , r e s p e c t i v e l y .

Y o P O K E t h o s e n e v a l u e s , d e t e r m i n e d b l a y i n g o u a b 8 d o t g r i d . S o m e s a m p l e c h a r a c t e r s a r e s u p p l i e d a D A T Al i n e s . T f o r m y o u r o w n , c h a n g e t h b i n a r y v a l u e s o b t a i n e d t t h d e c i m a l e q u i v a l e n t , a n s u b s t i t u t e i t h D A T A l i n e s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 5 0 - 2 9 0 : D A T A t f o r m n e c h a r a c t e r s .L i n e s 3 1 0 - 3 5 0 : A c c e s s s u b r o u t i n e a n p r i n t n e c h a r a c t e r s .L i n e s 2 3 3 1 0 - 2 3 3 2 0 : P r o t e c t m e m o r y , a n d r e d e f i n e w h e r e c o

p u t e r c o l l e c t s i t c h a r a c t e r s e f r o m .L i n e 2 3 3 3 0 : C l e a r t h m e m o r yL i n e 2 3 3 4 0 : S e l e c t B a n k 1 t r e a d R O M .L i n e s 2 3 3 5 0 - 2 3 3 7 0 : C o p y o l c h a r a c t e r s f r o m R O M , a r r a n g e

f o n e s e t .L i n e 2 3 3 8 0 : S e l e c t B a n k 1 t P O K E n e c h a r a t e r s .L i n e s 2 3 3 9 0 - 2 3 6 0 0 : P O K E d a t a f o n e c h a r a c t e r s , ! , > , < ,

a n @

Page 204: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 204/290

1 8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

Y o u r o w D A T A l i n e s f o c h a r a c t e r s o y o u r c h o i c e . C o s t r u c t t h e s e n e D A T A l i n e s c o r r e s p o n d i n g t y o u r r e d e s i g n e dc h a r a c t e r s a f o l l o w s : L a o u y o u r c h a r a c t e r s i a g r i d ,a s h o w n a b o v e , a n c o n v e r t e a c h b y t e t b i n a r y . T h i s c a n b ed o n e b t a k i n g e a c h o t h e i g h t b i t s , f r o m r i g h t t l e f t , a n m u l t i p l y i n g b t t h p o w e r , w h e r e i t h p o s i t i o n , f r o m t h r i g h t , o t h a t b i t .

F o e x a m p l e , 1 0 0 1 0 1 1 1 w o u l d b e

t i m e s t t h z e r o t h p o w e r ( 1 t i m e s t t h f i r s t p o w e r ( 2 t i m e s t t h s e c o n d p o w e r ( 4

0 t i m e s t t h t h i r d p o w e r ( 0 t i m e s t t h f o u r t h p o w e r ( 1 6 )t i m e s t t h f i f t h p o w e r ( 0

0 t i m e s t t h s i x t h p o w e r ( 0 t i m e s t t h s e v e n t h p o w e r ( 1 2 8 )

T o t a l : 1 5 1 d e c i m a l

R e p e a t f o e a c h b y t e , t t h t o t a l o e i g h t i t h e m a t r i x . Y o m a a l s o u s t h B i n a r y t D e c i m a l s u b r o u t i n e i C h a p t e r 9

S U G G E S T E D E N H A N C E M E N T S : W r i t e p r o g r a m t l e y o d r a wo t h e s c r e e n i a m a t r i x , a n t h e n t r a n s l a t e t h b i n a r yv a l u e s t d e c i m a l a u t o m a t i c a l l y .

R E S U L T

P r e s s i n g " @ " , « ! " , « < " , " a n " > k e y s o u s i n g t h e m i p r o g r a m w i l l p r o d u c e n e w , r e d e f i n e d c h a r a c t e r s .

Page 205: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 205/290

I n t r o d u c t i o n t G r a p h i c s 1 8

S H A P E M O V E RW H A T I D O E S : A l l o w s c a p t u r i n g a s h a p e y o d r a w o t h s c r e e ni s t r i n g v a r i a b l e .

L E V E L : I n t e r m e d i a t e

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

R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E R E

* * * * * * * * * * * * * * **

S H A P E M O V E R* * * * * * * * * * * * * * * *

+ V A R I A B L E S + U S E R S U P P L I E DD R A W S H A P E W I T H C U R S O R K E Y S

P R E S S E S C A P E W H E N D O N EX I C O O R D I N A T E T A P P E A RY l C O O R D I N A T E T A P P E A R

R E S U L TS H A P E A P P E A R S A S P E C I F I E DL O C A T I O N O B I T - M A P S C R E E N

2 7 0 R E M * * I N I T I A L I Z E * * 2 8 C O L O R 0 , 2 9 G R A P H I C 1 , 3 0 X l = 1 0 : Y l = 1 03 1 X = 1 1 0 : Y = 1 0 03 2 C O L O R 1 , 3 3 B O 1 , 1 0 8 , 9 8 , 1 5 7 , 1 4 22 3 7 0 0 R E M * * S U B R O U T I N E * * 2 3 7 1 0 G E T K E Y A 2 3 7 2 0 I A $ = C H R $ ( 2 7 ) G O T O 2 3 9 6 02 3 7 3 0 I A $ = C H R $ ( 2 9 ) T H E N B E G I N2 3 7 4 0 X = X + 12 3 7 5 0 I X > 1 5 5 T H E N X = 1 5 52 3 7 6 0 G O T O 2 3 9 4 02 3 7 7 0 B E N D2 3 7 8 0 I A $ = C H R $ ( 1 5 7 ) T H E N B E G I N2 3 7 9 0 X = X - 12 3 8 0 0 I X < 1 1 0 T H E N X = 1 1 02 3 8 1 0 G O T O 2 3 9 4 02 3 8 2 0 B E N D2 3 8 3 0 I A $ = C H R $ ( 1 4 5 ) T H E N B E G I N2 3 8 4 0 Y = Y - 12 3 8 5 0 I Y < 1 0 0 T H E N Y = 1 0 02 3 8 6 0 G O T O 2 3 9 4 02 3 8 7 0 B E N D

Page 206: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 206/290

1 8 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 3 8 8 0 I A $ = C H R $ ( 1 7 ) T H E N B E G I N2 3 8 9 0 Y = Y + 12 3 9 0 0 I Y > 1 4 0 T H E N Y = 1 4 02 3 9 1 0 G O T O 2 3 9 4 02 3 9 2 0 B E N D2 3 9 3 0 G O T O 2 3 7 1 02 3 9 4 0 D R A W 1 , X , Y2 3 9 5 0 G O T O 2 3 7 1 02 3 9 6 0 S S H A P E C $ , 1 1 0 , 1 0 0 , 1 5 5 , 1 4 02 3 9 7 0 G R A P H I C 1 , 2 3 9 8 0 G E T K E Y B 2 3 9 9 0 G S H A P E C $ , X 1 , Y 1 , O

H O T U S S U B R O U T I N E

S p r i t e s a r o b j e c t s d r a w n o t h e s c r e e n w i t h i n m a t r i x 2 p i x e l s w i d e a n 2 p i x e l s t a l l . O n c e t h e y a r d e f i n e d , y o c a m o v e s p r i t e s w i t h p o w e r f u l C o m m o d o r e 1 2 s p r i t e c o m m a n d s a i t h e y w e r e d i s c r e t e o b j e c t s . B A S I C 7 . h a s p r i t e d e f i n i t i o n m o d e( S P R D E F ) t h a t l e t s y o d e f i n e s p r i t e s , s t o r e t h a t s h a p e i s t r i n g v a r i a b l e , a n t h e n d e f i n e t h s h a p e i t h a t v a r i a b l e a o n o e i g h t s p r i t e s .

T h i s r o u t i n e s e r v e s a s a i n t r o d u c t i o n t h o s p r i t e s h a p e sa r c a p t u r e d a n m o v e d . H o w e v e r , t s h o w t h a t t h e t e c h n i q u e su s e d a r e n o t l i m i t e d t o s p r i t e s , w e ' l l l e y o d e f i n e a n m o v es h a p e l a r g e r t h a n t h a t p e r m i t t e d f o r s p r i t e s . Y o m a u s t h c u r s o r k e y s t d r a w o t h s c r e e n . P r e s s E S C A P E w h e n d o n e .T h s h a p e w i l l b s t o r e d i n s t r i n g v a r i a b l e C a n m o v e d t t h c o o r d i n a t e s s p e c i f i e d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 8 0 - 2 9 0 : S e t g r a p h i c m o d e a n c o l o r s .L i n e s 3 0 0 - 3 1 0 : D e f i n e t h l i m i t s o t h a r e a t b e d r a w n .L i n e 3 3 0 : D r a w b o t s h o w d r a w i n g a r e a .L i n e 2 3 7 1 0 : G e k e y .L i n e 2 3 7 2 0 : I E S C A P E i p r e s s e d , g t c a p t u r e r o u t i n e .L i n e s 2 3 7 3 0 - 2 3 9 3 0 : I k e i c u r s o r m o v e m e n t k e y , m o v e

c u r s o r , k e e p i n g w i t h i n l i m i t s o f d r a w i n g b o x .L i n e 2 3 9 4 0 : P l o t p o i n t a c u r r e n t p i x e l c u r s o r l o c a t i o n .L i n e 2 3 9 5 0 : R e t u r n f o m o r e i n p u t .

Page 207: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 207/290

I n t r o d u c t i o n t G r a p h i c s 1 8

L i n e 2 3 9 6 0 : S t o r e t h e s h a p e w i t h i n t h c o o r d i n a t e s i C $ L i n e 2 3 9 7 0 : C l e a r t h g r a p h i c s s c r e e n .L i n e 2 3 9 8 0 : W a i t f o u s e r t p r e s s k e y .L i n e 2 3 9 9 0 : P r i n t t h e s h a p e s t o r e d a t h s p e c i f i e d c o o r d i n a t e s .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : T h i s i a d e m o n s t r a t i o n p r o g r a m .Y o u r p r o g r a m w o u l d s u p p l y c o o r d i n a t e s t p r i n t t h s h a p e . O y o u m i g h t a s t h u s e r w h e r e t p u i t S u c h p r o g r a m w o u l da l l o w d r a w i n g s h a p e s i o n l o c a t i o n , a s s i g n i n g t h e m t s e r i e so v a r i a b l e s ( C $ ( l ) , C $ ( 2 ) , e t c . ) , a n m o v i n g t h e m a r o u n d t h s c r e e n a w i l l . N o t e t h a t t h e s e s h a p e s a r l a r g e r t h a n s p r i t e s b u m u s t b m o v e d b y o u r p r o g r a m l i n e s , r a t h e r t h a n a u t o m a t ic a l l y a a r s p r i t e s . I a d d i t i o n , s p r i t e s a l l o w a s s i g n i n g p r i o r i t i e ss t h a t o n s p r i t e w i l l a p p e a r t m o v e i f r o n t o o b e h i n d o t h e ro b j e c t s o t h s c r e e n .

R E S U L T

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

Page 208: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 208/290

Page 209: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 209/290

U S I N GS O U N D

T h C o m m o d o r e 1 2 8 h a s s o m e o t h b e s t s o u n d c a p a b i l i t i e s o a n p e r s o n a l c o m p u t e r . W h e n t h m a c h i n e i c o n n e c t e d t g o o d - q u a l i t y s t e r e o s y s t e m , t h e s o u n d s d u p l i c a t e t h a t o m u s i cs y n t h e s i z e r s c o s t i n g m a n y t i m e s w h a t t h e n t i r e c o m p u t e r s e l l sf o r .

T h s e c r e t , o c o u r s e , i t h m u s i c s y n t h e s i z e r c h i p b u i l t i n t ot h C o m m o d o r e 1 2 8 . E a r l i e r c o m p u t e r s w i t h o u t t h e c h i p h a m u c h m o r e p r i m i t i v e s o u n d - g e n e r a t i o n c a p a b i l i t i e s . S o m e c o u l dp r o d u c e s o u n d s t h r o u g h o n l y s i n g l e v o i c e . T h V T C - 2 0 h a t h r e e m u s i c a l v o i c e s a n o n " n o i s e " g e n e r a t o r w i t h o v e r l a p p i n go c t a v e s . B c o m p a r i s o n , t h V I C - 2 0 ' s m u s i c a l c a p a b i l i t i e s d o n ' t

1 9

Page 210: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 210/290

1 9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

h o l d c a n d l e t t h m a n y a r e a s o c o n t r o l t h a t t h e C o m m o d o r e1 2 8 ' s s y n t h e s i z e r c h i p p r o v i d e s .

T h C o m m o d o r e 1 2 a l s o h a t h r e e v o i c e s , b u i a d d i t i o n t p i t c h a n d u r a t i o n , t h u s e r c a s p e c i f y t h w a v e f o r m o e a c hv o i c e , v a r y i n g i f r o m " s a w t o o t h " t " p u l s e " t " t r i a n g l e " t o " n o i s e . "T h e s e t e r m s m a n o m e a n m u c h t y o u . H o w e v e r , i i t h w a v e f o r m o e a c h m u s i c a l n o t e t h a t h e l p s g i v e v a r i o u s m u s i c a li n s t r u m e n t s t h e i r d i s t i n c t i v e " t i m b r e , " o s o u n d q u a l i t y . Y o u rC o m m o d o r e 1 2 8 c a n p l a y n o t e w i t h f o u r d i f f e r e n t w a v e f o r m s a n c a a l s o " f i l t e r " t h w a v e f o r m t h r o u g h s e l e c t i o n o " m o d u l a t o r s . "

A l s o i m p o r t a n t i t h s o u n d e n v e l o p e . T h i s i c o n t r o l l e d b t h a t t a c k / d e c a y a n s u s t a i n / r e l e a s e p a r a m e t e r s . W h e n n o t e i f i r s t p l a y e d , i r i s e s f r o m z e r o v o l u m e t i t p e a k v o l u m e , t h e nf a l l s b a c k t s o m e m i d d l e r a n g e . T h r a t e o r i s e i c a l l e d a t t a c k ,a n t h s p e e d o d e c l i n e t t h m i d d l e r a n g e i c a l l e d d e c a y . T h a tm i d d l e v o l u m e , c a l l e d s u s t a i n , c a a l s o b c o n t r o l l e d b t h C o m o d o r e 1 2 8 . W h e n t h e n o t e f i n a l l y s t o p s p l a y i n g , i t r a t e o fd e c l i n e t z e r o v o l u m e i c a l l e d r e l e a s e . T h a t t a c k / d e c a y a n s u s t a i n / r e l e a s e p r o p e r t i e s o f t r u m p e t n o t e d i f f e r f r o m t h o s ep r o d u c e d b p i a n o . I w e k n o w e a c h , w c a d u p l i c a t e t h s o u n df a i r l y c l o s e l y w i t h t h C o m m o d o r e 1 2 8 .

U n l i k e t h C o m m o d o r e 6 4 w h i c h r e q u i r e d c o m p l e x P O K E st m u l t i t u d e o f r e g i s t e r s t p r o d u c e s o u n d s , t h C o m m o d o r e 1 2 h a n e s o u n d a n m u s i c c o m m a n d s t h a t t a k e c a r e o f m o s t o t h w o r k f o y o u . T h e s e i n c l u d e S O U N D , E N V E L O P E , V O L , T E M P O ,P L A Y , a n F I L T E R . C o n s u l t y o u r S y s t e m G u i d e o t h P r o g r a mm e r ' s R e f e r e n c e G u i d e f o a i n - d e p t h d i s c u s s i o n o e a c h . I t h i sc h a p t e r w h a v e s o m e p l u g - i n p r o g r a m s a n d e m o n s t r a t i o n s t h a tu s t h r e e o t h e s e s i c o m m a n d s :

S O U N D : A l l o w s y o t p r o d u c e s o u n d u s i n g o n o t h r e ev o i c e s , a f r e q u e n c y y o s p e c i f y , f o r d u r a t i o n y o r e q u e s t , a n u s i n g t h w a v e f o r m a n p u l s e w i d t h y o e n t e r . T h s o u n d c a a l s o b s w e p t t h r o u g h r a n g e o f r e q u e n c i e s w i t h o t h e r p a r a m e t e r s .

V O L : S e t s t h v o l u m e l e v e l f r o m t 1 5 P L A Y : W i l l a l l o w y o t e n t e r a c t u a l n o t e n a m e s , s u c h a

o C # , a n d w i l l p l a y t h e m .

Page 211: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 211/290

U s i n g S o u n d 1 9

T h i n t e n t i t p r o v i d e y o w i t h " p l u g - i n " s u b r o u t i n e s t h a ty o c a u s i y o u r o w p r o g r a m s i m m e d i a t e l y , e v e n i y o c a n ' tt e l l s y n t h e s i z e r f r o m p h o t o s y n t h e s i s . T h i s s e c t i o n c o n t a i n s r o t i n e s t h a t h a v e b r o a d a p p l i c a t i o n i m a n y g a m e s p r o g r a m s ; t h e yc a a l s o b u s e d t s p i c e u y o u r g e n e r a l p r o g r a m m i n g e f f o r t s .

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

Y o m a w a n t t e x p e r i m e n t w i t h e a c h o t h e s e , u s i n g s o m eo t h e s u g g e s t i o n s p r o v i d e d o i d e a s o y o u r o w n . C h a n g e t h v a l u e s o F O R - N E X T l o o p s . U s d i f f e r e n t v o i c e s , a s u g g e s t e d . Y o s h o u l d b a b l e t d e v e l o p n e s o u n d s o y o u r o w n , u n t i l w h o l el i b r a r y o f s o u n d e f f e c t s i a v a i l a b l e .

C O M M O D O R E 1 2 O R G A NW H A T I D O E S : U s e s k e y b o a r d t g e n e r a t e v a r i o u s m u s i c a l n o t e s .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E C O M M O D O R E 1 2 O R G A N1 3 R E 1 4 R E * * * * * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 0 R E M V O I C E : V O I C E U S E D1 9 R E L E $ : L E N G T H O N O T E2 0 R E L V O L U M E2 1 R E O T H E R P A R A M E T E R S C H A N G E D2 2 R E M F R O M K E Y B O A R D2 3 R E M R E S U L T2 4 0 R E M2 5 0 R E M M U S I C P L A Y E D2 6 R E 2 7 G O T O 2 4 0 6 02 4 0 0 0 R E M * * P O S I T I O N C U R S O R * * 2 4 0 1 0 P R I N T H M E $ ;2 4 0 2 0 P R I N T L E F T $ ( R $ , C O L ) ;

Page 212: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 212/290

1 9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 4 0 3 0 P R I N T L E F T $ ( D $ , R O W ) ;2 4 0 4 0 R E T U R N2 4 0 5 0 R E M * * I N I T I A L I Z E * * 2 4 0 6 0 P O K E 5 3 2 8 1 , 12 4 0 7 0 K E Y 1 , C H R $ ( 1 3 3 )2 4 0 8 0 K E Y 3 , C H R $ ( 1 3 4 )2 4 0 9 0 K E 5 , C H R $ ( 1 3 5 )2 4 1 0 0 K E Y 7 , C H R $ ( 1 3 6 )2 4 1 1 0 D W N $ = C H R $ ( 1 7 )2 4 1 2 0 U P $ = C H R $ ( 1 4 5 )2 4 1 3 0 R V $ = C H R $ ( 1 8 )2 4 1 4 0 F F $ = C H R $ ( 1 4 6 )2 4 1 5 0 R E D $ = C H R $ ( 2 8 )2 4 1 6 0 G R E E N $ = C H R $ ( 3 0 )2 4 1 7 0 Y E L L O W $ = C H R $ ( 1 5 8 )2 4 1 8 0 B L U E $ = C H R $ ( 3 1 )2 4 1 9 0 H M E $ = C H R $ ( 1 9 )2 4 2 0 0 V O I C E = 12 4 2 1 0 0 = 2 4 2 2 0 T = 62 4 2 3 0 L = 1 52 4 2 4 0 R E M * * R E A D D A T A * * 2 4 2 5 0 L E $ = " Q "2 4 2 6 0 D I M N M E $ ( 2 0 ) , N T $ ( 2 0 ) , P ( 2 0 )2 4 2 7 0 F O N = l T O 2 2 4 2 8 0 R E A D N M E $ ( N )2 4 2 9 0 N E X T2 4 3 0 0 F O N = T 2 2 4 3 1 0 R E A D N T $ ( N )2 4 3 2 0 N E X T2 4 3 3 0 F O N = T 2 4 3 4 0 R E A D T U N E $ ( N )2 4 3 5 0 N E X T2 4 3 6 0 R E * * B U I L D C U R S O R S T R I N G * * 2 4 3 7 0 F O N = T 4 2 4 3 8 0 R $ = R $ + C H R $ ( 2 9 )2 4 3 9 0 D $ = D $ + C H R $ ( 1 7 )2 4 4 0 0 S P A C E $ = S P A C E $ + C H R $ ( 3 2 )2 4 4 1 0 N E X T N2 4 4 2 0 R E M * * S E T U P S C R E E N * * 2 4 4 3 0 S C N C L R2 4 4 4 0 C O L = 1 : R O W = 2 0 : G O S U B 2 4 0 1 02 4 4 5 0 P R I N T T A B ( 2 ) ; R V $ ; B L U E $ ; " F l " ; F F $ ; " O C T A V E U P " ;2 4 4 6 0 P R I N T T A B ( 2 0 ) ; R V $ ; Y E L L O W $ ; " F 3 " ; F F $ " O C T A V E D O W N "2 4 4 7 0 P R I N T T A B ( 2 ) ; R V $ ; R E D $ " F " ; F F $ ; " I N S T R U M E N T U P " ;2 4 4 8 0 P R I N T T A B ( 2 0 ) ; R V $ ; G R E E N $ ; " F 7 " ; F F $ " I N S T R U M E N T D O W N "2 4 4 9 0 R O W = 4 : C O L = 1 02 4 5 0 0 G O S U B 2 4 0 1 02 4 5 1 0 P R I N T R V $ ; R E D $ ; " C O M M O D O R E 1 2 O R G A N " ; F F $

Page 213: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 213/290

U s i n g S o u n d 1 9

2 4 5 2 0 R E M * * D A T A * * 2 4 5 3 0 D A T A C , # C , D , # D , E , F , # F , G , # G , A , # A , B , C , # C , D , # D , E , F , # F , G2 4 5 4 0 D A T A A , W , S , E , D , F , T , G , Y , H , U , J , K , O , L , P , " : " , " ; " , " * • • , " = "2 4 5 5 0 D A T A P I A N O , A C C O R D I O N , C A L L I O P E , D R U M2 4 5 6 0 D A T A F L U T E , G U I T A R , H A R P S I C H O R D , O R G A N2 4 5 7 0 D A T A T R U M P E T , X Y L O P H O N E2 4 5 8 0 R E * * S U B R O U T I N E * * 2 4 5 9 0 C O L = 1 3 : R O W = 1 0 : G O S U B 2 4 0 1 02 4 6 0 0 P R I N T S P A C E ? ;2 4 6 1 0 C O L = 1 3 : R O W = 1 0 : G O S U B 2 4 0 1 02 4 6 2 0 F = I N T ( ( l l - L E N ( T U N E $ ( T ) ) ) / 2 )2 4 6 3 0 P R I N T L E F T $ ( R $ , F ) ;2 4 6 4 0 P R I N T T U N E $ ( T ) ;2 4 6 5 0 G E T K E Y A 2 4 6 6 0 I A $ = C H R $ ( 1 3 ) T H E N E N 2 4 6 7 0 I A $ = C H R $ ( 1 3 3 ) T H E N 0 = 0 + 1 : I F O > T H E N 0 = 6 : G O T O 2 4 5 9 02 4 6 8 0 I A $ = C H R $ ( 1 3 4 ) T H E N 0 = 0 - 1 : I O < T H E N 0 = 0 - . G O T O 2 4 5 9 02 4 6 9 0 I A $ = C H R $ ( 1 3 5 ) T H E N T = T + 1 : I F T > T H E N T = 9 : G O T O 2 4 5 9 02 4 7 0 0 I A $ = C H R $ ( 1 3 6 ) T H E N T = T - 1 : I F T < T H E N T = 0 : G O T O 2 4 5 9 02 4 7 1 0 F O N = T 2 2 4 7 2 0 I A $ = N T $ ( N ) G O T O 2 4 7 5 02 4 7 3 0 N E X T2 4 7 4 0 G O T O 2 4 5 9 02 4 7 5 0 R O W = 1 5 : C O L = 1 8 : G O S U B 2 4 0 1 02 4 7 6 0 N $ = N M E $ ( N )2 4 7 7 0 I L E F T $ ( N $ , 1 ) " # 1 1 T H E N N $ = R I G H T $ ( N $ , 1 ) + L E F T $ ( N $ , 1 )2 4 7 8 0 P R I N T N $ ; C H R $ ( 3 2 ) ;2 4 7 9 0 I N > 1 2 T H E N B E G I N2 4 8 0 0 0 = 0 + 12 4 8 1 0 I O > T H E N 0 = 6 : G O T O 2 4 8 4 02 4 8 2 0 F L A G = 12 4 8 3 0 B E N D2 4 8 4 0 P $ = " V " + M I D $ ( S T R $ ( V O I C E ) , 2 ) + " O " + M I D $ ( S T R $ ( O ) , 2 )

H T l t + M I D $ ( S T R $ ( T ) , 2 ) + " U " + M I D $ ( S T R $ ( L ) , 2 ) + L E $ + N M E $ ( N )2 4 8 5 0 P L A Y P 2 4 8 6 0 I F L A G = 1 T H E N 0 = 0 - 1 : I F O < T H E N 0 = 2 4 8 7 0 F L A G = 02 4 8 8 0 G O T O 2 4 5 9 0

H O T U S S U B R O U T I N E

T h i s i a n o t h e r s u b r o u t i n e t h a t g o o u o h a n d a n e n d e d u a 1 0 0 - l i n e p r o g r a m i i t o w r i g h t . A l t h o u g h p a c k e d w i t hf e a t u r e s , t h i s p r o g r a m o n l y b e g i n s t t a p t h e p o w e r o t h C o m o d o r e 1 2 8 ' s m u s i c s y n t h e s i z e r c a p a b i l i t i e s .

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

Page 214: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 214/290

1 9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y L I N E D E S C R I P T I O N

L i n e s 2 4 0 1 0 - 2 4 0 4 0 : T h i s i c u r s o r - p o s i t i o n i n g r o u t i n e u s e dh e r e f o t h f i r s t t i m e i t h e b o o k . I i d e s c r i b e d c o m p l e t e l y i C h a p t e r u n d e r C u r s o r M o v e r .

L i n e 2 4 0 6 0 : C h a n g e c o l o r o t h s c r e e n ; C O L O R c o u l d a l s o b u s e d h e r e .

L i n e s 2 4 0 7 0 - 2 4 1 0 0 : C h a n g e t h d e f i n i t i o n s o f t h F u n c t i o nK e y s 1 3 5 a n ( t h e u n s h i f t e d k e y s ) s t h e y r e t u r n t h e C H R $v a l u e s a s s i g n e d t t h e m i C o m m o d o r e 6 4 m o d e .

L i n e s 2 4 1 1 0 - 2 4 1 4 0 : D e f i n e s t r i n g v a r i a b l e s w i t h t h c h a r a ct e r s t h a t p r i n t c u r s o r d o w n , c u r s o r u p r e v e r s e o n a n r e v e r s e o f c h a r a c t e r s .L i n e s 2 4 1 5 0 - 2 4 1 8 0 : A s s i g n o t h e r v a r i a b l e n a m e s w i t h c o l o rc h a r a c t e r s .

L i n e 2 4 1 9 0 : D e f i n e H M E $ a H O M E .L i n e 2 4 2 0 0 : S e V O I C E t 1 L i n e 2 4 2 1 0 : S e i n i t i a l o c t a v e t 1 L i n e 2 4 2 2 0 : S e i n i t i a l i n s t r u m e n t t 6 L i n e 2 4 2 3 0 : S e l o u d n e s s t o 1 5 .L i n e 2 4 2 5 0 : D e f i n e t h l e n g t h o t h e n o t e s p l a y e d t q u a r t e r

n o t e .L i n e 2 4 2 6 0 : D I M e n s i o n t w a r r a y s , N M E $ ( n ) f o t h n a m e s

o t h n o t e s , N T $ ( n ) f o t h c o r r e s p o n d i n g k e y b o a r d k e y s .L i n e s 2 4 2 7 0 - 2 4 3 2 0 : R e a d t h o s e v a l u e s i n t o t h a r r a y s .L i n e s 2 4 3 3 0 - 2 4 3 5 0 : R e a d t h n a m e s o t h i n s t r u m e n t s i n t o

T U N E $ ( n ) .L i n e s 2 4 3 7 0 - 2 4 4 1 0 : B u i l d t h c u r s o r m o v e m e n t s t r i n g s , a

d i s c u s s e d i C u r s o r M o v e r i C h a p t e r 8 L i n e s 2 4 4 3 0 - 2 4 5 1 0 : P r i n t s c r e e n i n s t r u c t i o n s .L i n e s 2 4 5 3 0 - 2 4 5 7 0 : T h D A T A .L i n e s 2 4 5 9 0 - 2 4 6 4 0 : E r a s e o l i n s t r u m e n t p r i n t e d t t h

s c r e e n a n p r i n t t h n e d a t a c u r r e n t l y i e f f e c t .L i n e s 2 4 6 5 0 : G e k e f r o m t h k e y b o a r d .L i n e 2 4 6 6 0 : I R E T U R N w a p r e s s e d , E N D . Y o m a d e l e t e

t h i s i y o u w o u l d r a t h e r e x i t t h p r o g r a m b y h i t t i n g R U N / S T O Pa n R E S T O R E .

Page 215: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 215/290

U s i n g S o u n d 1 9

L i n e s 2 4 6 7 0 - 2 4 6 8 0 : I F i p r e s s e d , r a i s e o c t a v e b o n e . I F i p r e s s e d , d e c r e a s e b o n e . I n c a s e a l l o w o c t a v e t b l e s st h a n o h i g h e r t h a n 6

L i n e s 2 4 6 9 0 - 2 4 7 0 0 : I F i p r e s s e d , r a i s e i n s t r u m e n t v a l u et n e x t h i g h e r i n s t r u m e n t . I F i p r e s s e d , l o w e r . I n c a s ea l l o w i n s t r u m e n t t b l e s s t h a n o h i g h e r t h a n 9

L i n e s 2 4 7 1 0 - 2 4 7 3 0 : C o m p a r e k e p r e s s e d w i t h a l l o w a b l e k e y st s e i l e g a l n o t e h a s b e e n p r e s s e d .

L i n e 2 4 7 4 0 : I n o t , g b a c k f o m o r e i n p u t .L i n e s 2 4 7 5 0 - 2 4 7 8 0 : P r i n t t h e n a m e o t h n o t e p r e s s e d t t h

s c r e e n .L i n e s 2 4 7 9 0 - 2 4 8 3 0 : I n o t e i i t h n e x t h i g h e s t o c t a v e ,

i n c r e a s e o c t a v e . H o w e v e r , i t h e h i g h e s t o c t a v e i a l r e a d y b e i n ga c c e s s e d , d n o i n c r e a s e . T h i s a l l o w s p l a y i n g m o r e t h a n o n o c t a v e o t h e k e y b o a r d , e x c e p t w h e n w e h a v e a l r e a d y c h a n g e dt h l o w e r e n o t h k e y b o a r d t p l a y t h e h i g h e s t a v a i l a b l eo c t a v e .

L i n e 2 4 8 4 0 : A s s e m b l e P L A Y s t r i n g f r o m t h c u r r e n tp a r a m e t e r s .

L i n e 2 4 8 5 0 : P l a y t h s t r i n g .L i n e s 2 4 8 6 0 - 2 4 8 7 0 : I n o t e w a a u p p e r e n o k e y b o a r d ,

r e d u c e o c t a v e t n e x t l o w e s t t r e t u r n t n o r m a l .L i n e 2 4 8 8 0 : R e t u r n f o m o r e i n p u t .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : W r i t e a r o u t i n e t h a t w i l l d i s p l a yk e y b o a r d o n t h s c r e e n , a n i n d i c a t e w h i c h k e i b e i n g p r e s s e d .A l l o w c h a n g i n g v o i c e s . S t o r e t h e n o t e s p r e s s e d f o p l a y b a c k . T h i si r e l a t i v e l y s i m p l e , s i n c e t h P L A Y s t r i n g s m a b s t o r e d i s t r i n g a r r a y . A l l o w c h a n g i n g t h e l e n g t h o n o t e s .

R E S U L T

M u s i c p l a y e d f r o m C o m m o d o r e 1 2 s y n t h e s i z e r .

Page 216: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 216/290

1 9 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

S I R E NW H A T I D O E S : P r o d u c e s s i r e n s o u n d .

L E V E L : N o v i c e1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2

R E R E R E R E R E R E R E R E R E R E R E R E R E

* * * * * * * * *

S I R E N

+ V A R I A B L E S + S U P P L I E D B U S E R

R E P E A T S : R E P E T I T I O N SR E S U L T

S I R E N S O U N D

2 4 9 9 0 * * S U B R O U T I N E * * 2 5 0 0 0 R E P E A T S = 42 5 0 1 0 F O N = T R E P E A T S2 5 0 2 0 F O 1 = 1 0 0 T O 2 0 0 0 0 S T E P 1 0 2 5 0 3 0 S O U N D 1 , 1 , 1 , 1 , 1 , 1 , 1 , 02 5 0 4 0 N E X T2 5 0 5 0 F O 1 = 2 0 0 0 0 T 1 0 S T E P - 1 0 02 5 0 6 0 S O U N D 1 , 1 , 1 , 0 , 0 , 0 , 1 , 02 5 0 7 0 N E X T2 5 0 8 0 N E X T2 5 0 9 0 E N D

H O T U S S U B R O U T I N E

C a l l t h r o u t i n e w h e n s i r e n s o u n d i d e s i r e d f o g a m e s o o t h e ra p p l i c a t i o n s . T h r e m a i n i n g r o u t i n e s i t h i s c h a p t e r a r e w r i t t e n a sp r o g r a m s s t o p p i n g w i t h E N r a t h e r t h a n R E T U R N , s i n c e t h e r e i n i n i t i a l i z a t i o n r e q u i r e d . Y o w i l l w a n t t a d R E T U R N s t a t em e n t s i y o u s t h e m a s u b r o u t i n e s i y o u r o w p r o g r a m s . T h e ya r s h o r t e n o u g h t b u s e d a s t a n d a l o n e l i n e s w i t h i n p r o g r a m s .L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 0 0 : D e f i n e n u m b e r o R E P E A T S .L i n e 2 5 0 1 0 : S t a r t l o o p t r e p e a t t h e s o u n d .

Page 217: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 217/290

U s i n g S o u n d 1 9

L i n e s 2 5 0 2 0 - 2 5 0 4 0 : P r o d u c e r i s i n g s o u n d .L i n e s 2 5 0 5 0 - 2 5 0 7 0 : P r o d u c e f a l l i n g s o u n d .L i n e 2 5 0 8 0 : R e p e a t .

Y O S U P P L Y

N u m b e r o r e p e a t s .

S U G G E S T E D E N H A N C E M E N T S : E x p e r i m e n t t c h a n g e t h e s o u n d .

R E S U L T

S i r e n s o u n d f o g a m e s o o t h e r p r o g r a m s .

F L Y I N G S A U C E RW H A T I D O E S : P r o d u c e s e e r i e f l y i n g s a u c e r s o u n d .

L E V E L : N o v i c e1 0 R E * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E F L Y I N G S A U C E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E M R E S U L T2 0 R E M F L Y I N G S A U C E R S O U N D2 1 R E 2 2 R E 2 5 1 0 0 R E * * S U B R O U T I N E * * 2 5 1 1 0 F O 1 = T 6 5 0 0 0 S T E P 1 0 2 5 1 2 0 S O U N D 1 , 1 , 1 , 0 , 0 , 3 , 02 5 1 3 0 N E X T - I

H O T U S S U B R O U T I N E

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

Page 218: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 218/290

2 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 5 1 1 0 - 2 5 1 3 0 : P r o d u c e s a u c e r s o u n d .

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : E x p e r i m e n t t p r o d u c e d i f f e r e n ts a u c e r e f f e c t s . C h a n g e t h s t e p v a l u e a n o t h e r p a r a m e t e r s .

R E S U L T

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

B U R G L A R A L A R MW H A T I D O E S : P r o d u c e s b u r g l a r a l a r m s o u n d .

L E V E L : N o v i c e

1 0 0 R E M * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E B U R G L A R A L A R M1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E M R E S U L T2 0 R E B U R G L A R A L A R M S O U N D2 1 R E 2 2 R E 2 5 2 0 0 R E M * * S U B R O U T I N E * * 2 5 2 1 0 F O 1 = T 1 2 5 2 2 0 S O U N D 1 , 4 9 0 0 0 , 3 0 0 , 2 , 3 2 0 0 0 , 3 0 0 0 , 12 5 2 3 0 N E X T

Page 219: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 219/290

U s i n g S o u n d 2 0

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 5 2 1 0 - 2 5 2 3 0 : P r o d u c e b u r g l a r a l a r m s o u n d .

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : P l a y w i t h i t

R E S U L T

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

A L A R M S O U N DW H A T I D O E S : P r o d u c e s d i f f e r e n t a l a r m s o u n d .

L E V E L : N o v i c e

1 0 R E * * * * * * * * * * * * * * *1 1 R E 1 2 R E A L A R M S O U N D1 3 R E * 1 4 R E * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E R E P E A T S : N U M B E R R E P E A T S1 9 R E R E S U L T2 0 R E A L A R M S O U N D2 1 R E 2 2 R E 2 3 R E P E A T S = 52 4 G O S U B 2 5 3 0 02 5 E N

Page 220: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 220/290

2 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 5 3 0 0 R E M * * S U B R O U T I N E * * 2 5 3 1 0 F O 1 = T O R E P E A T S2 5 3 2 0 S O U N D 1 , 6 5 0 0 0 , 3 0 0 , 0 , 3 2 0 0 0 , 3 0 0 0 , 2 , 2 6 0 02 5 3 3 0 N E X T2 5 3 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 3 0 : N u m b e r o R E P E A T S d e f i n e d .L i n e s 2 5 3 1 0 - 2 5 3 3 0 : P r o d u c e a l a r m s o u n d .

Y O S U P P L Y

N u m b e r o R E P E A T S .S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

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

P L A N E E N G I N EW H A T I D O E S : P r o d u c e s s o u n d o p l a n e e n g i n e s t a r t i n g a n l e e l i n g o f f .

L E V E L : N o v i c e

Page 221: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 221/290

U s i n g S o u n d 2 0

1 0 R E * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E P L A N E E N G I N E1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E

+ V A R I A B L E S + S U P P L I E D B U S E R

V V O I C E U S E DR E S U L T

S O U N D O P L A N E E N G I N E

1 6 R E 1 7 R E 1 8 R E 1 9 R E 2 0 R E 2 1 R E 2 2 R E 2 3 V = 2 4 G O S U B 2 5 4 1 02 5 E N 2 5 4 0 0 R E M * * S U B R O U T I N E * * 2 5 4 1 0 D = 1 2 0 02 5 4 2 0 F = 1 2 0 0 02 5 4 3 0 D I R = 02 5 4 4 0 S = 2 5 4 5 0 W = l2 5 4 6 0 P = 1 0 0 02 5 4 7 0 S O U N D V , F , D , D I R , M , S , W , P2 5 4 8 0 R E T U R N

H O T U S E S U B R O U T I N E

Y o m i g h t w a n t t u s t h i s s u b r o u t i n e a t h b e g i n n i n g o p r o g r a m s d e a l i n g w i t h a i r p l a n e f l i g h t o t r a v e l . T h i s p r o g r a md e m o n s t r a t e s t h u s o t h s w e e p e f f e c t w i t h t h C o m m o d o r e 1 2 8 .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 3 0 : D e f i n e v o i c e a 1 L i n e s 2 5 4 1 0 - 2 5 4 6 0 : D e f i n e o t h e r S O U N D p a r a m e t e r s .L i n e 2 5 4 7 0 : P r o d u c e t h e s o u n d , s w e e p i n g t h r o u g h r a n g e o

f r e q u e n c i e s .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : T r d i f f e r e n t s w e e p e f f e c t s .

Page 222: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 222/290

2 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

R E S U L T

S o u n d o a i r p l a n e e n g i n e s t a r t i n g u p a n d l e v e l i n g o f f .

B O M B D R O P P I N GW H A T I D O E S : P r o d u c e s s o u n d o b o m b d r o p p i n g .

L E V E L : N o v i c e1 0 R E * * * * * * * * * * * * *1 1 R E 1 2 R E B O M B D R O P1 3 R E 1 4 R E * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E M R E S U L T2 0 R E M S O U N D O F B O M B D R O P P I N G2 1 0 R E M2 2 R E 2 3 G O S U B 2 5 5 1 02 4 E N

2 5 5 0 0 R E M * * B O M B D R O P P I N G * * 2 5 5 1 0 V O 1 2 5 5 2 0 S O U N D 1 , 4 9 0 0 0 , 4 8 0 , 1 , 0 , 1 0 0 , 1 , 02 5 5 3 0 R E T U R N

H O T U S E S U B R O U T I N E

C a l l d u r i n g b o m b s d r o p p i n g i y o u r g a m e s p r o g r a m .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 5 1 0 : S e v o l u m e t m a x i m u m .L i n e 2 5 5 2 0 : S w e e p t h r o u g h r a n g e o f r e q u e n c i e s t p r o d u c e

e f f e c t o b o m b d r o p p i n g .

Page 223: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 223/290

U s i n g S o u n d 2 0

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S ; C h a n g e t h e s p e e d o t h b o m b d r o pp i n g . A d a e x p l o s i o n a t h e n d .

R E S U L T

S o u n d o b o m b d r o p p i n g p r o d u c e d .

H E L I C O P T E RW H A T I D O E S ; P r o d u c e s s o u n d o h e l i c o p t e r .

L E V E L ; N o v i c e

1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 R E H E L I C O P T E R1 3 R E 1 4 R E * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E M N O N E1 9 R E R E S U L T2 0 R E H E L I C O P T E R S O U N D2 1 R E 2 2 R E 2 5 6 0 0 R E * * S U B R O U T I N E * * 2 5 6 1 0 V O 1 2 5 6 2 0 C U = 1 0 0 02 5 6 3 0 F O N = 1 0 0 T O 1 0 0 02 5 6 4 0 S O U N D 1 , N , 12 5 6 5 0 S = N - C U : I F S < 3 8 T H E N S = C U - N2 5 6 6 0 S O U N D 1 , S , 12 5 6 7 0 C U = C U - 12 5 6 8 0 N E X T

Page 224: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 224/290

2 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 6 1 0 : S e v o l u m e t m a x i m u m .L i n e 2 5 6 2 0 : S e c o u n t e r t i n i t i a l v a l u e o 1 0 0 0 .L i n e 2 5 6 3 0 : L o o p f r o m 1 0 t 1 0 0 0 .L i n e 2 5 6 4 0 : P r o d u c e s o u n d u s i n g f r e q u e n c y N .L i n e 2 5 6 5 0 : C h a n g e v a l u e o S L i n e 2 5 6 6 0 : P r o d u c e s o u n d u s i n g f r e q u e n c y S L i n e 2 5 6 7 0 : C h a n g e v a l u e o f c o u n t e r .L i n e 2 5 6 8 0 : L o o p a n r e p e a t .

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

S o u n d o f h e l i c o p t e r r o t o r p r o d u c e d .

C O M P U T E R S O U N DW H A T I D O E S : P r o d u c e s r a n d o m , c o m p u t e r l i k e s o u n d .

L E V E L : N o v i c e

Page 225: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 225/290

U s i n g S o u n d 2 0

1 0 R E * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E C O M P U T E R S O U N D1 3 R E * 1 4 R E M * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E R E S U L T2 0 0 R E M C O M P U T E R S O U N D2 1 R E 2 2 0 R E M2 5 7 0 0 R E M * S U B R O U T I N E * * 2 5 7 1 0 F O N = T 1 2 5 7 2 0 R = R N D ( 0 ) * 6 0 0 0 02 5 7 3 0 L = R N D ( 0 ) * 1 02 5 7 4 0 S O U N D 1 , R , L , 0 , 0 , 0 , 22 5 7 5 0 R = R N D ( 0 ) * 6 0 0 0 02 5 7 6 0 L = R N D ( 0 ) * 2 02 5 7 7 0 S O U N D 2 , R , L , 0 , 0 , 0 , 12 5 7 8 0 R = R N D ( 0 ) * 1 0 0 0 02 5 7 9 0 L = R N D ( 0 ) * 1 02 5 8 0 0 S O U N D 3 , R , L , 0 , 0 , 0 , 02 5 8 1 0 N E X T

H O T U S E S U B R O U T I N E

C o m p u t e r s d o n ' t r e a l l y s o u n d l i k e t h i s , o c o u r s e , b u w h a v ec o m e t c o n n e c t t h r a n d o m p r o d u c t i o n o b e e p i n g s o u n d s w i t hc o m p u t e r s . Y o c a p r o b a b l y b l a m e t h i s o b a s c i e n c e f i c t i o nm o v i e s , b u t h s o u n d e f f e c t m a c o m e i u s e f u l n e v e r t h e l e s s . L e t h i s s o u n d e m i t c o n t i n u o u s l y f r o m y o u r C o m m o d o r e 1 2 w h e nf r i e n d s v i s i t , a n s e i t h e y a r e i m p r e s s e d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 7 1 0 : R e p e a t 1 t i m e s .L i n e s 2 5 7 2 0 - 2 5 8 0 0 : C h o o s e r a n d o m f r e q u e n c y a n l e n g t h s ,

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

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

Page 226: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 226/290

2 0 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

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

D I S A S T E R S O U N DW H A T I D O E S : P r o d u c e s v a g u e , t h r e a t e n i n g d i s a s t e r s o u n d .

L E V E L : N o v i c e

1 0 0 R E M * * * * * * * * * * * *1 1 R E 1 2 R E D I S A S T E R1 3 R E * 1 4 R E * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E R E S U L T2 0 0 R E M E L A B O R A T E E X P L O S I O N2 1 0 R E M2 2 0 R E M2 5 9 0 0 R E M * * S U B R O U T I N E * * 2 5 9 1 0 V O 2 5 9 2 0 S O U N D 1 , 1 0 0 , 1 0 , 0 , 0 , 0 , 32 5 9 3 0 S O U N D 1 , 4 0 , 1 , 0 , 0 , 0 , 32 5 9 4 0 F O N = 6 5 0 0 0 T 1 0 0 0 S T E P - 5 0 0 02 5 9 5 0 V = V + 1 : V O L2 5 9 6 0 S O U N D 1 , N , 6 0 , 0 , 0 , 0 , 32 5 9 7 0 N E X T2 5 9 8 0 V = 1 5 : V O L2 5 9 9 0 S O U N D 1 , 8 0 0 0 , 1 5 0 0 , 1 , 0 , 1 0 , 32 6 0 0 0 S O U N D 2 , 2 0 0 0 , 7 5 0 , 1 , 0 , 1 0 , 32 6 0 1 0 S O U N D 3 , 2 0 0 , 3 7 5 , 1 , 0 , 1 0 , 32 6 0 2 0 E N

H O T U S S U B R O U T I N E

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

Page 227: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 227/290

U s i n g S o u n d 2 0

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 9 1 0 : S e v o l u m e l o w , t 1 L i n e s 2 5 9 2 0 - 2 5 9 3 0 : P l a y s o u n d s .L i n e 2 5 9 4 0 : S t a r t d e c r e a s i n g F O R - N E X T l o o p .L i n e 2 5 9 5 0 : F i r s t 1 t i m e s t h r o u g h t h l o o p , i n c r e a s e v o l u m e .L i n e 2 5 9 6 0 : P r o d u c e s o u n d , b a s e d o f r e q u e n c y N L i n e s 2 5 9 7 0 - 2 6 0 1 0 : P r o d u c e " e x p l o s i o n . "

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S ; F i t h e x p l o s i o n t s o u n d b e t t e ra n m o r e e x p l o s i v e .

R E S U L T

D i s a s t e r s o u n d p r o d u c e d .

R O U L E T T E W H E E LW H A T I D O E S ; P r o d u c e s r o u l e t t e w h e e l s o u n d t h a t g r a d u a l l ys l o w s d o w n .

L E V E L ; N o v i c e

1 0 R E M * * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E R O U L E T T E W H E E L1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M N O N E1 9 R E M R E S U L T2 0 R E R O U L E T T E W H E E L S O U N D2 1 R E 2 2 R E

Page 228: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 228/290

2 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 6 1 0 0 R E M * * R O U L E T T E W H E E L * * 2 6 1 1 0 D E L A Y » 2 02 6 1 2 0 F = 1 . 0 0 12 6 1 3 0 F l = . 0 0 0 52 6 1 4 0 F O N = T 1 0 2 6 1 5 0 D E L A Y = D E L A Y * F2 6 1 6 0 F O D = T O D E L A Y : N E X T2 6 1 7 0 S O U N D 1 , 1 0 0 0 , 12 6 1 8 0 F = F + F 12 6 1 9 0 N E X T2 6 2 0 0 S O U N D 1 , 1 0 0 0 , 1

H O T U S E S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 6 1 1 0 : S e t i n i t i a l d e l a y t o 2 0 .L i n e 2 6 1 2 0 : S e f a c t o r t 1 . 0 0 1 .L i n e 2 6 1 3 0 : S e s e c o n d f a c t o r t . 0 0 0 5 .L i n e 2 6 1 4 0 : S t a r t l o o p f r o m t 1 0 0 .L i n e 2 6 1 5 0 : I n c r e a s e d e l a y s l i g h t l y .L i n e 2 6 1 6 0 : C o u n t o f t h d e l a y .L i n e 2 6 1 7 0 : M a k e c l i c k s o u n d .L i n e 2 6 1 8 0 : I n c r e a s e t h f a c t o r .L i n e 2 6 1 9 0 : R e p e a t .L i n e 2 6 2 0 0 : M a k e f i n a l c l i c k .

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

R o u l e t t e w h e e l s l o w s d o w n a n s t o p s .

Page 229: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 229/290

U s i n g S o u n d 2 1

C L O C K T I C K I N G

W H A T I D O E S : P r o d u c e s c l o c k t i c k i n g s o u n d .L E V E L : N o v i c e

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

R E R E R E R E R E R E R E R E R E R E R E R E R E

C L O C K T I C K* * * * * * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D B U S E R

N O N ER E S U L TC L O C K T I C K I N G S O U N D

2 6 3 0 0 R E M * * C L O C K T I C K * * 2 6 3 1 0 V O 1 2 6 3 2 0 F O N l = l T 1 0 2 6 3 3 0 S O U N D 1 , 2 0 0 0 0 , 12 6 3 4 0 F O N = T O 3 0 0 : N E X T2 6 3 5 0 S O U N D 1 , 4 0 0 0 0 , 12 6 3 6 0 F O N = T 3 0 0 - . N E X T2 6 3 7 0 N E X T N

H O T U S E S U B R O U T I N E

I n s e r t i n y o u r p r o g r a m s w h e r e c l o c k t i c k i n g n e e d e d . Y o m i g h tu s t h i s s u b r o u t i n e t r e p r e s e n t t h e p a s s a g e o t i m e , o d u r i n g" t h i n k i n g " p e r i o d s i g a m e s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 6 3 1 0 : S e v o l u m e t m a x i m u m .L i n e 2 6 3 2 0 : R e p e a t 1 0 t i m e s .L i n e 2 6 3 3 0 : M a k e t i c k s o u n d .L i n e 2 6 3 4 0 : D e l a y s l i g h t l y .L i n e 2 6 3 5 0 : M a k e t o c k s o u n d .L i n e 2 6 3 6 0 : D e l a y a g a i n b e t w e e n t i c k s .L i n e 2 6 3 7 0 : R e p e a t .

Page 230: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 230/290

2 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

N u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S : M o d i f y t a l l o w u s e r t v a r y n u b e o t i c k s .

R E S U L T

C l o c k t i c k i n g p r o d u c e d .

Page 231: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 231/290

S O F T W A R ET H I C K S

H e r e i a g r o u p o r o u t i n e s t h a t w i l l l e y o p e r f o r m s o m e t a s k ss p e c i f i c t o t h C o m m o d o r e 1 2 c o m p u t e r . I n c l u d e d i s i m p l er o u t i n e t d i s p l a y c o l o r b a r s o t h s c r e e n , i c a s e y o w a n t t a d j u s t t h c o l o r b a l a n c e o y o u r m o n i t o r o r t e l e v i s i o n s e t . A n o t h e ri p r o v i d e d t h e l p y o s e t h C o m m o d o r e 1 2 8 ' s b u i l t - i n r e a lt i m e c l o c k . T h n e x t m e a s u r e s e l a p s e d t i m e u s i n g t h a t c l o c k , a n

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

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

2 1

Page 232: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 232/290

2 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

h a v e F p a u s e t h g a m e , w h e r e a s F q u i t s t h g a m e e n t i r e l y . F c o u l d c l e a r t h s c r e e n , a n F w o u l d e x c h a n g e s i d e s . F u n c t i o nk e y s w e r e u s e d t c h a n g e t h e o c t a v e a n i n s t r u m e n t v o i c e i nC o m m o d o r e 1 2 O r g a n i C h a p t e r 7 I o t h e r a p p l i c a t i o n s , f u n c t i o nk e y s c o u l d d i s p l a y t h s c o r e o r d s o m e o t h e r f u n c t i o n . T h F u n ct i o n K e y s r o u t i n e i t h i s c h a p t e r s h o w s y o h o t h a v e y o u ro w p r o g r a m s b r a n c h t s p e c i f i c s u b r o u t i n e s w h e n f u n c t i o n k e i p r e s s e d . P r o g r a m K e y s a u t o m a t e s a s s i g n i n g s t r i n g o f c h a r a ct e r s t f u n c t i o n k e y . U t i l i t y K e y s d e m o n s t r a t e s o n s e o u s e sf o t h k e y s .

T h C u r s o r M o v e r r o u t i n e u s e d s e v e r a l t i m e s i t h i s b o o k i e x p l a i n e d i t h i s c h a p t e r . W w i n d u p w i t h p a i r o r o u t i n e st h a t u s t h C o m m o d o r e 1 2 8 ' s R S - 2 3 2 p o r t . P r o g r a m T r a n s f e r i s i m p l e o n e - l i n e t r a n s f e r p r o g r a m t h a t w i l l s e n d p r o g r a m l i s t i n go u t h s e r i a l p o r t t a n o t h e r c o m p u t e r . T e r m i n a l i d u m bt e r m i n a l p r o g r a m t h a t l e t s y o c o m m u n i c a t e t w w a y s .

T H R E A L - T I M E C L O C KT h C o m m o d o r e 1 2 8 h a s a b u i l t - i n t i m i n g m e c h a n i s m t h a t

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

T h c l o c k m e a s u r e s t i m e i l / 6 0 t h - s e c o n d i n t e r v a l s . E a c h o t h e s e t i n y t i m e i n c r e m e n t s i p o p u l a r l y c a l l e d a i j i f f i e . T w c o u n te r s , T a n T I $ , k e e p t r a c k o e l a s p e d t i m e s i n c e t h c o m p u t e rw a t u r n e d o o s i n c e t h c l o c k w a l a s t r e s e t b t h u s e r . T h a ti s w h e n t h c o m p u t e r i f i r s t t u r n e d o n T a n T I e q u a l 0 0 0 0 0 0a n s t a r t c o u n t i n g f r o m t h a t p o i n t . Y o m a a c c e s s b o t h T I a n T I a y o d a n o t h e r v a r i a b l e . T n u m b e r s t h j i f f i e s , w h i l eT I $ k e e p s t h a c t u a l s e c o n d s .

T f i n d o u h o m a n y j i f f i e s h a v e e l a p s e d s i n c e t h j i f f i ec o u n t e r w a l a s t r e s e t , a s s i g n t h e v a l u e o T t s o m e o t h e rv a r i a b l e , a s " C T I . " S i m i l a r l y , y o c a t a k e t h p r e s e n t t i m e

Page 233: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 233/290

S o f t w a r e T r i c k s 2 1

a n u s i f o p r o g r a m m i n g p u r p o s e s b a s s i g n i n g i t v a l u e t v a r i a b l e , a s " C U $ T I $ . " Y o c a a l s o s e t h p r o p e r t i m e ( t h eC o m m o d o r e 1 2 u s e s 2 4 - h o u r , m i l i t a r y - s t y l e t i m e ) b t h e r e v e r s em e t h o d : " T I $ " 1 2 0 0 0 0 . "

B e c a u s e t h C o m m o d o r e 1 2 r e a l - t i m e c l o c k i a c c u r a t e u d e m o s t c i r c u m s t a n c e s , T c a b u s e d t t i m e e v e n t s f a i r l yp r e c i s e l y ( o n e e x c e p t i o n i n o t e d b e l o w ) w i t h a p p r o x i m a t e l y l / 6 0 t h -s e c o n d a c c u r a c y . T h i s f e a t u r e m i g h t b u s e f u l i c o m p e t i t i v eg a m e s , t y p i n g t u t o r s , a n o t h e r p r o g r a m s t h a t m e a s u r e e l a p s e dt i m e a c c u r a t e l y . T I $ , w h i c h c a b s e t t h e c u r r e n t t i m e , k e e p st r a c k o h o u r s , m i n u t e s , a n s e c o n d s .

N e i t h e r T n o T I a l l o w s f o t i m e l o s t d u r i n g i n p u t - o u t p u tf u n c t i o n s , s u c h a l o a d i n g p r o g r a m s f r o m t a p e o d i s k , o w r i t i n gd a t a t t a p e o d i s k . T h e r e f o r e , i y o u r p r o g r a m w r i t e s d a t a f i l e s ,i s h o u l d n o d e p e n d o n T o T I t b 1 0 p e r c e n t a c c u r a t e . A l s o ,d o n ' t e x p e c t e i t h e r t b c o r r e c t a f t e r y o h a v e l o a d e d o s a v e ds e v e r a l p r o g r a m s .

T h f i r s t s u b r o u t i n e o t h i s g r o u p s e t s t h r e a l - t i m e c l o c k t t h e c u r r e n t t i m e , g i v e n i 2 4 - h o u r m i l i t a r y s t y l e . Y o c a e m b e dt h i s r o u t i n e i y o u r p r o g r a m s w h e n y o n e e d t a c c e s s t h t i m ef o y o u r p r o g r a m . T h n e x t r o u t i n e m e a s u r e s a c t u a l e l a p s e d t i m e .T h i s i a c c u r a t e t t h s e c o n d ( w i t h t h e x c e p t i o n s n o t e d a b o v e )a n c a b u s e d t m e a s u r e t i m e t t h a t d e g r e e o p r e c i s i o n .

T h f i n a l r o u t i n e u s e s t h c o m p u t e r a t i m e r . Y o m a s e t h e c u r r e n t t i m e a n t h t i m e y o w a n t t b a l e r t e d . T h r o u t i n ew i l l m e a s u r e t h a t i n t e r v a l a n a l e r t y o u . I u s e s t h e S L E E Pc o m m a n d t p u t h C o m m o d o r e 1 2 o s t a n d b y d u r i n g t h r q u i r e d i n t e r v a l . H i n t s a r p r o v i d e d f o w r i t i n g y o u r o w s u b r o ut i n e t h a t c a b c a l l e d f r o m t i m e t t i m e w h i l e y o u r p r o g r a m s d o t h e r t a s k s .

C L O C K S E T T E RW H A T I D O E S ; S e t s C o m m o d o r e 1 2 r e a l - t i m e c l o c k .

L E V E L ; N o v i c e

Page 234: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 234/290

2 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E C L O C K S E T T E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 0 R E M1 6 R E + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 0 R E M N O N E1 9 R E M R E S U L T2 0 R E I N T E R N A L C L O C K S E 2 1 R E 2 2 0 R E M2 3 G O S U B 2 7 2 1 02 4 E N 2 7 2 0 0 R E M * * S U B R O U T I N E * *

2 7 2 1 0 P R I N T " E N T E R H O U R : 2 7 2 2 0 I N P U T H R 2 7 2 3 0 H R = V A L ( H R $ )2 7 2 4 0 I H R > 2 3 T H E N P R I N T " L E S S T H A N 2 H O U R S , P L E A S E l " : G O T O 2 3 2 7 2 5 0 I H R > 1 2 G O T O 2 7 3 1 02 7 2 6 0 P R I N T " A . M . O P . M . ? 2 7 2 7 0 G E T K E Y A 2 7 2 8 0 I A $ = " P " T H E N H R = H R + 1 2 : H R $ = M I D $ ( S T R $ ( H R ) , 2 ) : G O T O 2 7 3 1 02 7 2 9 0 I A $ = " A " G O T O 2 7 3 1 02 7 3 0 0 G O T O 2 7 2 7 02 7 3 1 0 P R I N T " E N T E R M I N U T E S : 2 7 3 2 0 I N P U T M I N U T E $2 7 3 3 0 M I N U T E = V A L ( M I N U T E $ )2 7 3 4 0 I M I N U T E > 5 9 T H E N P R I N T " L E S S T H A N 6 M I N U T E S ,P L E A S E I " : G O T O 2 7 3 1 02 7 3 5 0 I H R < 1 0 T H E N H R $ = " 0 " + H R $ : I F H R < 1 T H E N H R $ = " 0 0 "2 7 3 6 0 I M I N U T E < 1 0 T H E N M I N U T E $ = " O " + M I N U T E $ : I F M I N U T E < 1 T H E NM I N U T E $ = " 0 0 "2 7 3 7 0 T I $ = H R $ + M I N U T E $ + " 0 0 "2 7 3 8 0 R E T U R N

H O T U S E S U B R O U T I N E

M a n y p r o g r a m s c a u s t h b u i l t - i n r e a l - t i m e c l o c k o t h C o m m o d o r e 1 2 t m e a s u r e e l a p s e d t i m e , c o n t r o l e v e n t s , o r s i p l k e e p t h o p e r a t o r i n f o r m e d a t w h a t t i m e i i s

T h C o m m o d o r e 1 2 c l o c k k e e p s 2 4 - h o u r m i l i t a r y t i m e a n s t o r e s i i v a r i a b l e , T I $ , w h i c h c a b c a l l e d f r o m p r o g r a m a a n t i m e . O n e - t h i r t y P . M . w o u l d b s t o r e d a " 1 3 3 0 0 0 . " T h i s s u br o u t i n e p r o m p t s t h e u s e r f o t h e c u r r e n t h o u r s a n m i n u t e s . I f e w e r t h a n 1 h o u r s a r e n t e r e d , t h e r o u t i n e a s k s i t h t i m e i A . M . o P . M . I l l e g a l t i m e e n t r i e s , s u c h a 2 5 6 3 0 0 , a r n o a l l o w e d .

Page 235: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 235/290

S o f t w a r e T r i c k s 2 1 7

M i n u t e s a n h o u r s l e s s t h a n 1 m u s t b e n t e r e d w i t h s i n g l ed i g i t ; t h a d d e d i a p p e n d e d a u t o m a t i c a l l y t p r o d u c e , s a y ,0 9 0 9 0 0 .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 7 2 1 0 - 2 7 2 3 0 : U s e r e n t e r s h o u r .L i n e 2 7 2 4 0 : C h e c k t s e i l e s s t h a n 2 h o u r s .L i n e 2 7 2 5 0 : I h o u r i l a t e r t h a n 1 2 s k i p c h e c k t s e i i i

A . M . o P . M .L i n e s 2 7 2 6 0 - 2 7 3 0 0 : A s i A . M . o P . M . a n c h a n g e h o u r t

m i l i t a r y t i m e i a n s w e r i P . M .L i n e s 2 7 3 1 0 - 2 7 3 3 0 : G e c u r r e n t m i n u t e s .L i n e 2 7 3 4 0 : M a k e s u r e l e s s t h a n 6 m i n u t e s e n t e r e d .L i n e 2 7 3 5 0 : I h o u r l e s s t h a n 1 0 a d l e a d i n g 0 L i n e 2 7 3 6 0 : I m i n u t e s l e s s t h a n 1 0 a d l e a d i n g 0 L i n e 2 7 3 7 0 : D e f i n e T I a s h o u r s , p l u s m i n u t e s , p l u s 0 s e c o n d s .

Y O S U P P L Y

S u b r o u t i n e a s k s f o h o u r s a n m i n u t e s .

S U G G E S T E D E N H A N C E M E N T S ; N o n e .

R E S U L T

I n t e r n a l c l o c k s e t t o c o r r e c t t i m e .

E L A P S E D T I M EW H A T I D O E S : M e a s u r e s d i f f e r e n c e b e t w e e n t w t i m e s .

L E V E L : N o v i c e

Page 236: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 236/290

2 1 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E E L A P S E D T I M E1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 0 R E M + + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E N O N E1 9 R E M R E S U L T2 0 R E E L A P S E D T I M E M E A S U R E D2 1 0 R E M2 2 R E 2 3 0 R E M * * I N I T I A L I Z E * * 2 4 G O S U B 2 7 4 1 02 5 E N 2 7 4 0 0 R E M * * S U B R O U T I N E * * 2 * 7 4 1 0 T S $ = T I $2 7 4 2 0 G E T K E Y A 2 7 4 3 0 T F $ = T I $2 7 4 4 0 T S = V A L ( T S $ )2 7 4 5 0 T F = V A L ( T F $ )2 7 4 6 0 E T = T F - T S2 7 4 7 0 E M = I N T ( E T / 6 0 )2 7 4 8 0 E S = E T - ( E M * 6 0 )2 7 4 9 0 P R I N T " E L A P S E D T I M E : 2 7 5 0 0 P R I N T M I N U T E S : " ; E M2 7 5 1 0 P R I N T S E C O N D S : M ; E S

H O T U S E S U B R O U T I N E

T h i s s u b r o u t i n e t a k e s t h n u m b e r o s e c o n d s a t h s t a r t o a o p e r a t i o n a n c o m p a r e s t h a t w i t h t h n u m b e r a t h f i n i s h , i o r d e r t d e t e r m i n e t h e e l a p s e d m i n u t e s a n s e c o n d s . I i n o n e c e s s a r y t o s e t t h r e a l - t i m e c l o c k t t h c o r r e c t t i m e t r u t h i sr o u t i n e . I y o w a n t t m e a s u r e a n e v e n t t h a t l a s t s l e s s t h a ns e c o n d , y o c o u l d m o d i f y t h i s s u b r o u t i n e t u s j i f f i e s i n s t e a d f o l / 6 0 t h - s e c o n d a c c u r a c y .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 7 4 1 0 : G e t i m e a s t a r t o f o p e r a t i o n .L i n e 2 7 4 2 0 : W a i t f o u s e r t p r e s s k e y . T h i s l i n e s i m u l a t e s

t h e o p e r a t i o n t h a t y o w a n t t t i m e . I y o u r o w p r o g r a m , y o

Page 237: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 237/290

S o f t w a r e T r i c k s 2 1

s h o u l d h a v e l i n e 2 7 4 1 0 l o c a t e d a t h s t a r t o y o u r o p e r a t i o n a n t h e n p r o c e e d t t h e f o l l o w i n g l i n e , 2 7 4 3 0 , a t h e p o i n t w h e r e y o uw i s h t m e a s u r e t h t i m e t h a t h a e l a p s e d .

L i n e 2 7 4 3 0 : T a k e t h e c u r r e n t t i m e .L i n e 2 7 4 4 0 : G e v a l u e o t h t i m e a s t a r t .L i n e 2 7 4 5 0 : G e v a l u e o t h t i m e a f i n i s h .L i n e 2 7 4 6 0 : F i g u r e e l a p s e d s e c o n d s b s u b t r a c t i n g t i m e a

s t a r t f r o m t i m e a f i n i s h .L i n e 2 7 4 7 0 : F i g u r e e l a p s e d m i n u t e s b d i v i d i n g t h e e l a p s e d

s e c o n d s b 6 0 L i n e 2 7 4 8 0 : F i g u r e e l a p s e d s e c o n d s b t a k i n g t h s e c o n d s

t h a t r e m a i n a f t e r t h e e l a p s e d m i n u t e s a r e s u b t r a c t e d f r o m t h t o t a l s e c o n d s e l a p s e d .L i n e s 2 7 4 9 0 - 2 7 5 1 0 : P r i n t r e s u l t s .

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : N o t i c e t h a t t h e s u b r o u t i n e w i l l r p o r t o n l y e l a p s e d m i n u t e s a n s e c o n d s . U s i n g t h r o u t i n e s f r o mC h a p t e r 2 y o s h o u l d b a b l e t m o d i f y t h i s o n t m e a s u r eh o u r s a w e l l . B u i l d i w a t h a n d l e t i m e t h a t s p a n s a d a y .

R E S U L T

E l a p s e d t i m e i m e a s u r e d .

T I M E RW H A T I D O E S : S e t s c o m p u t e r a t i m e r .

L E V E L : I n t e r m e d i a t e

Page 238: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 238/290

Page 239: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 239/290

S o f t w a r e T r i c k s 2 2 1

L i n e 2 7 7 1 0 : I o u o S L E E P r a n g e , e n r o u t i n e .L i n e 2 7 7 2 0 : C l e a r s c r e e n .L i n e 2 7 7 3 0 : S L E E P f o s e c o n d s .L i n e 2 7 7 4 0 : B e e p w h e n t i m e i u p L i n e 2 7 7 5 0 : P r i n t m e s s a g e .

Y O S U P P L Y

A n s w e r t h e r e q u e s t s f r o m t h p r o m p t s . Y o a l s o m i g h t w a n tt c a l l m o r e " a l a r m i n g " s o u n d s u b r o u t i n e o y o u r c h o i c e a L i n e2 7 7 4 0 t p r o v i d e a a u d i b l e a l a r m . S e v e r a l s u c h s o u n d r o u t i n e sa r p r o v i d e d i C h a p t e r 7

S U G G E S T E D E N H A N C E M E N T S : N o t e t h a t t h e c o m p u t e r c a n ' t d a n o t h e r f u n c t i o n s w h i l e t h i s s u b r o u t i n e i r u n n i n g , s i n c e S L E E Pi u s e d . Y o m i g h t w a n t t c h a n g e i s t h a t f i n i s h h o u r ( s a y ,F H $ ) i c o n s t r u c t e d a n t h e n c o n s t a n t l y c o m p a r e d a g a i n s t t h ec u r r e n t t i m e . Y o u r l i n e m i g h t b s o m e t h i n g l i k e , I V A L ( T I $ )> V A L ( F T $ ) G O T O . . i y o u r m a i n p r o g r a m . M a k e t h i s c o m p a r is o b e f o r e b r a n c h i n g t e a c h n e f u n c t i o n . O r y o c o u l d w r i t eG O S U B l i n e t h a t g o e s t t h a t l i n e r e p e a t e d l y d u r i n g F O R - N E X To G E l o o p s ( u s e G E A i n s t e a d o G E T K E Y A $ ) .

R E S U L T

C o m m o d o r e 1 2 s i g n a l s a e n o r e q u e s t e d t i m e i n t e r v a l .

C O L O R C H E C K E RW H A T I D O E S : D i s p l a y s c o l o r b a r s , t c h e c k o u t v i d e o d i s p l a y .

L E V E L : N o v i c e

Page 240: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 240/290

2 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

* * * * * * * * * * * * * * * *

C O L O R C H E C K E R1 0 R E 1 1 R E 1 2 R E 1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 0 R E M1 6 R E + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E N O N E1 9 R E R E S U L T2 0 0 R E M C O L O R B A R S D I S P L A Y E D2 1 R E 2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 G O S U B 2 7 1 1 02 5 E N

2 7 1 0 0 R E M * * S U B R O U T I N E * * 2 7 1 1 0 S C N C L R2 7 1 2 0 F O N l = l T O 1 2 7 1 3 0 C O L O R 5 , N 12 7 1 4 0 P R I N T C H R $ ( 1 8 ) ;2 7 1 5 0 F O N = T 4 2 7 1 6 0 P R I N T C H R $ ( 3 2 ) ;2 7 1 7 0 N E X T2 7 1 8 0 P R I N T2 7 1 9 0 N E X T N 2 7 2 0 0 R E T U R N

H O T U S E S U B R O U T I N E

T h i s s u b r o u t i n e w i l l p r o v i d e q u i c k c h e c k o t h C o m m o d o r e1 2 v i d e o m o n i t o r o y o u r c o l o r t e l e v i s i o n . S o m e m i s a d j u s t m e n t sm a p r o d u c e b e n d i n g h o r i z o n t a l o r v e r t i c a l l i n e s o p o o r c o l o rr e p r o d u c t i o n .

R u n n i n g t h e s u b r o u t i n e w i l l p r o d u c e p a r a l l e l , h o r i z o n t a l c o l o rb a r s t c h e c k y o u r e n t i r e s c r e e n . Y o c a n t h e n a d j u s t y o u r s e o m o n i t o r f o b e s t c o l o r a n c o n t r a s t .

T h i s s u b r o u t i n e d e m o n s t r a t e s t h u s o t h C O L O R c o m a n d t c h a n g e c o l o r s o t h s c r e e n . W h a v e u s e d t h C H R $c o l o r c o d e s i s o m e p r e v i o u s s u b r o u t i n e s . C H R $ i c o n v e n i e n tw h e r e y o w a n t t u s k e y s t h a t t h e o p e r a t o r p r e s s e s t c o n t r o lc o l o r , s i n c e y o c a n a s k t h e u s e r t p r e s s t h k e h o s h w a n t s .F o o t h e r a p p l i c a t i o n s u s i n g C O L O R m a b e b e t t e r c h o i c e , s i n c ei i n o n e c e s s a r y t b u i l d d a t a l i n e s w i t h t h C H R $ c o l o r c o d e s .T h e n u m b e r s 1 - 1 6 c a n b e u s e d i n s t e a d .

Page 241: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 241/290

S o f t w a r e T r i c k s 2 2 3

L I N E B Y - L I N E D E S C R I P T I O N

L i n e 2 7 1 1 0 : C l e a r s c r e e n .L i n e 2 7 1 2 0 : S t a r t l o o p f r o m t 1 c o l o r s .L i n e 2 7 1 3 0 : C h a n g e c h a r a c t e r c o l o r t t h v a l u e o N l L i n e 2 7 1 4 0 : P r i n t t h R E V E R S E O s y m b o l .L i n e 2 7 1 5 0 : S t a r t l o o p f r o m t 4 c h a r a c t e r s , t h w i d t h o

t h 4 0 - c o l u m n s c r e e n .L i n e 2 7 1 6 0 : P r i n t s p a c e . S i n c e r e v e r s e i o n , t h i s w i l l

a p p e a r a s o l i d b l o c k o t h e c u r r e n t c o l o r .L i n e 2 7 1 7 0 : R e p e a t f o n e x t c o l u m n .L i n e 2 7 1 8 0 : M o v e c u r s o r d o w n t n e x t l i n e .L i n e 2 7 1 9 0 : N e x t c o l o r .

Y O S U P P L Y

S e t a d j u s t m e n t s .

S U G G E S T E D E N H A N C E M E N T S : C h a n g e t p r o v i d e v e r t i c a l c o l o rb a r s a w e l l .

R E S U L TB e t t e r d i s p l a y q u a l i t y , o r o u g h d i a g n o s i s o a p r o b l e m .

P R O G R A M K E Y SW H A T I D O E S : R e d e f i n e s f u n c t i o n k e y s .

L E V E L ; N o v i c e1 0 R E M * * * * * * * * * * * * * * * *1 1 R E 1 2 R E P R O G R A M K E Y S1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E N O N E1 9 R E M R E S U L T

Page 242: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 242/290

2 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 0 R E F U N C T I O N K E Y S P R O G R A M M E D2 1 R E 2 2 R E 2 3 R E * * I N I T I A L I Z E * * 2 4 G O S U B 2 7 8 1 02 5 E N 2 7 8 0 0 R E M * * S U B R O U T I N E * * 2 7 8 1 0 P R I N T " E N T E R K E T O D E F I N E ( 1 - 8 ) : 2 7 8 2 0 G E T K E Y K 2 7 8 3 0 K = V A L ( K $ ) : I F K < O K > G O T O 2 7 8 2 02 7 8 4 0 P R I N T " E N T E R S T R I N G F O R T H E K E : 2 7 8 5 0 G E T K E Y A 2 7 8 6 0 I A $ = C H R $ ( 1 3 ) T H E N G O T O 2 7 9 0 02 7 8 7 0 I $ = I $ + A $2 7 8 8 0 P R I N T A $ 2 7 8 9 0 G O T O 2 7 8 5 02 7 9 0 0 P R I N T2 7 9 1 0 P R I N T " E N D W I T H C / R ? ( Y / N ) u2 7 9 2 0 G E T K E Y A N 2 7 9 3 0 I F A N $ " Y T H E N I I $ + C H R $ ( 1 3 ) . - G O T O 2 7 9 5 02 7 9 4 0 I A N ^ V N " G O T O 2 7 9 2 02 7 9 5 0 K E K , I $2 7 9 6 0 1 $ = " "2 7 9 7 0 R E T U R N

H O T U S E S U B R O U T I N E

T h C o m m o d o r e 1 2 8 h a s m u c h m o r e p o w e r f u l f u n c t i o n k e c a p a b i l i t y t h a n t h C o m m o d o r e 6 4 W i t h t h 6 i w a n o p o s s ib l f o B A S I C 2 . t a s s i g n s t r i n g o f c h a r a c t e r s t k e y .I n s t e a d , t h e f u n c t i o n k e y s s e r v e d a a n o t h e r k e y : w h e n p r e s s e d ,t h e y r e t u r n e d C H R $ c o d e ( 1 3 3 - 1 4 0 ) . Y o u r p r o g r a m c o u l d c h e c kf o a n o t h o s e k e y s ( a w i t h G E l o o p ) a n b r a n c h t s u b r o u t i n e o y o u r c h o i c e t h a t w o u l d c a r r y o u t h a c t u a l " f u n ct i o n " o t h f u n c t i o n k e y .

B A S I C 7 . a l l o w s y o t a s s i g n a c t u a l s t r i n g s t t h k e y sa n d , i f a c t , p r o v i d e s s e l e c t i o n o f d e f a u l t s t r i n g s , s u c h a D L O A D "a n L I S T .

W h i l e y o m a t y p e " K E Y , s t r i n g " f r o m B A S I C c o m m a n dm o d e a n a s s i g n k e d e f i n i t i o n s , t h i s s u b r o u t i n e m a b e a s i e rf o n o v i c e s . I y o a r e w r i t i n g p r o g r a m w i t h y o u r s u b r o u t i n el i b r a r y l o a d e d i n t o m e m o r y , y o n e e d o n l y t y p e G O S U B 2 7 8 1 0 t a c c e s s t h i s m o d u l e f o i n s t a n t k e r e d e f i n i t i o n . T h r o u t i n e m i g h t

Page 243: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 243/290

S o f t w a r e T r i c k s 2 2 5

a l s o s u p p l y y o w i t h i d e a s f o r e d e f i n i n g k e y s f r o m w i t h i n y o u ro w p r o g r a m . S e t h U t i l i t y K e y s s u b r o u t i n e f o a e x a m p l e o

k e r e d e f i n i t i o n p r o g r a m .N O T E : T h t o t a l l e n g t h o a l t h k e d e f i n i t i o n s i n f o r c e a o n e t i m e c a n n o t b e m o r e t h a n 2 4 6 c h a r a c t e r s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 7 8 1 0 : A s f o k e t b r e d e f i n e d .L i n e s 2 7 8 2 0 - 2 7 8 3 0 : G e r e s p o n s e , a n c h e c k t m a k e s u r e i

i l e g a l k e y .L i n e s 2 7 8 4 0 - 2 7 8 6 0 : G e s t r i n g f o t h k e y , s t o p p i n g w h e n

R E T U R N ( C H R $ ( 1 3 ) ) i p r e s s e d .L i n e s 2 7 8 7 0 - 2 7 8 9 0 : P r i n t c h a r a c t e r s a t h e y a r e n t e r e d ,

a n a d t h e m t 1 $ w h i c h s t o r e s t h k e d e f i n i t i o n .L i n e s 2 7 9 0 0 - 2 7 9 2 0 : A s i t h f u n c t i o n k e d e f i n i t i o n s h o u l d

b e n d e d w i t h C H R $ ( 1 3 ) ( R E T U R N ) w h e n i i s e n t .L i n e 2 7 9 3 0 : I y e s , a d R E T U R N t t h s t r i n g .L i n e 2 7 9 5 0 : R e d e f i n e t h k e y .L i n e 2 7 9 6 0 : N u l l 1 $ i c a s e r o u t i n e i c a l l e d a g a i n l a t e r .

Y O S U P P L Y

K e d e f i n i t i o n .

S U G G E S T E D E N H A N C E M E N T S ; I n c o r p o r a t e s u b r o u t i n e i y o u r o w p r o g r a m s s t h k e d e f i n i t i o n s y o w a n t w i l l b m a d e w h e n t h p r o g r a m i r u n .

R E S U L T

K e y s r e d e f i n e d .

F U N C T I O N K E Y SW H A T I D O E S : C h a n g e s f u n c t i o n k e y s t C o m m o d o r e 6 m o d e .

L E V E L : N o v i c e

Page 244: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 244/290

2 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E F U N C T I O N K E Y S1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * *1 5 0 R E M1 6 0 R E M + + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E N O N E1 9 R E R E S U L T2 0 0 R E M F U N C T I O N K E Y S B E H A V E L I K E2 1 0 R E M C O M M O D O R E 6 4 ' S2 2 0 R E M2 3 0 R E M2 4 0 R E M * * I N I T I A L I Z E * * 2 5 0 G O S U B 2 8 0 1 02 8 E N 2 8 0 0 0 R E M * * S U B R O U T I N E * * 2 8 0 1 0 C U = 02 8 0 2 0 F O N = T S T E P2 8 0 3 0 C U = C U + 12 8 0 4 0 K E N , C H R $ ( 1 3 2 + C U )2 8 0 5 0 K E Y N + 1 , C H R $ ( 1 3 6 + C U )2 8 0 6 0 N E X T2 8 0 7 0 R E T U R N

H O T U S E S U B R O U T I N E

W h e n y o w a n t m o r e c o m p l e x f u n c t i o n s t h a n c a n b s t o r e d i nt h f u n c t i o n k e y s a s t r i n g s , i i c o n v e n i e n t t u s e a k e y - p r e s s t t r i g g e r s u b r o u t i n e . A w a d e s c r i b e d i t h e p r e v i o u s s u b r o u t i n e ,w i t h t h C o m m o d o r e 6 4 w h e n a n o t h e i g h t f u n c t i o n k e y s a r p r e s s e d , s i n g l e - c h a r a c t e r s t r i n g r a n g i n g f r o m C H R $ ( 1 3 3 ) t C H R $ ( 1 4 0 ) i r e t u r n e d . Y o u r p r o g r a m s c a c h e c k f o t h e s e k e y sa n t h e n b r a n c h t s u b r o u t i n e s o y o u r c h o i c e :

1 0 G E T K E Y A 1 1 A = A S C ( A $ )1 2 I A < 1 3 3 o A > 1 4 0 G O T O 1 0 1 3 O N A - 1 3 2 G O T O 5 0 0 , 6 0 0 , 7 0 0 , 8 0 0 , 9 0 0 , 1 0 0 0 , 1 1 0 0 , 1 2 0 0

T h i s s u b r o u t i n e r e t u r n s t h C o m m o d o r e 1 2 f u n c t i o n k e y s t t h s i n g l e - c h a r a c t e r s t r i n g s o t h C o m m o d o r e 6 4 N o t e t h a t t h ee i g h t C H R $ c o d e s c h o s e n w e r e s e l e c t e d b e c a u s e t h e y a r e o t h e rw i s e u n a s s i g n e d . I y o w a n t e d t a s s i g n t h e c h a r a c t e r s A - t t h

Page 245: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 245/290

S o f t w a r e T r i c k s 2 2

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 0 1 0 : I n i t i a l i z e c o u n t t 0 L i n e 2 8 0 2 0 : S t a r t l o o p f r o m 1 t 8 s t e p p i n g b t w o s .L i n e 2 8 0 3 0 : I n c r e m e n t c o u n t e r .L i n e 2 8 0 4 0 : R e d e f i n e K e a C H R $ ( 1 3 2 C U ) .L i n e 2 8 0 5 0 : R e d e f i n e K e a C H R $ ( 1 3 6 C U ) .L i n e 2 8 0 6 0 : R e p e a t .

Y O S U P P L YN u s e r i n p u t r e q u i r e d .

S U G G E S T E D E N H A N C E M E N T S ; A d d p r o g r a m s t p e r f o r m f u n c t i o n sw h e n k e y s a r p r e s s e d .

R E S U L T

C o m m o d o r e 1 2 f u n c t i o n k e y s r e d e f i n e d t C o m m o d o r e 6 m o d e .

U T I L I T Y K E Y SW H A T I D O E S : E x a m p l e s o k e r e d e f i n i t i o n f i l e s .

L E V E L : N o v i c e

1 0 R E M * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E U T I L I T Y K E Y S1 3 R E * 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E

Page 246: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 246/290

2 2 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 9 R E R E S U L T2 0 R E E X A M P L E P R O G R A M M I N G A I D2 1 R E 2 2 R E

2 8 1 0 0 R E M * * S U B R O U T I N E * * 2 8 1 1 0 K E Y 1 , " R E N U M B E R 1 0 0 , 1 0 , 1 " + C H R $ ( 1 3 )2 8 1 2 0 K E Y 6 , C H R $ ( 1 4 5 ) + C H R $ ( 1 4 5 ) + C H R $ ( 1 4 5 ) + C H R $ ( 1 4 5 ) + C H R $ ( 1 3 )2 8 1 3 0 K E Y 7 , C H R $ ( 1 4 7 ) + n L I S T " + C H R $ ( 1 3 )

H O T U S S U B R O U T I N E

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

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 1 1 0 : A s u b r o u t i n e s w e r e w r i t t e n , i w a s o m e t i m e sn e c e s s a r y t m a k e s o m e a d d i t i o n a l s p a c e b e t w e e n l i n e n u m b e r s .T h i s d e f i n i t i o n c a u s e d t h C o m m o d o r e 1 2 t r e n u m b e r a l t h p r o g r a m l i n e s , w i t h s t a r t i n g l i n e n u m b e r o 1 0 a n a i n c r e m e n to 1 0 s t a r t i n g w i t h t h f i r s t p r o g r a m l i n e . T h C H R $ ( 1 3 ) t a c k e d o t h e n i n v o k e d t h r e n u m b e r i n g a s o o n a t h F k e w a p r e s s e d .

L i n e 2 8 1 2 0 : A e a c h f i n i s h e d s u b r o u t i n e w a s a v e d t o d i s k ,t h D S A V E s t e p w a r e p e a t e d t w t i m e s t p r o v i d e b a c k u p c o p i e so t h r o u t i n e s . I n s t e a d o t h a u t h o r ' s r e t y p i n g t h e D S A V Ec o m m a n d a n t h f i l e n a m e , t h i s k e w a p r e s s e d . I m o v e s t h c u r s o r u f o u r l i n e s ( b a c k t w h e r e t h o r i g i n a l D S A V E c o m m a n dw a s ) a n a d d s C H R $ ( 1 3 ) t r e i n v o k e t h c o m m a n d o t h l i n et w h e r e t h c u r s o r h a b e e n m o v e d . T h i s w o r k s o n l y i y o u h a v en o m o v e d t h c u r s o r s i n c e t h l a s t S A V E a n i n e r r o r w a g e n e r a t e d b t h S A V E .

L i n e 2 8 1 3 0 : T v i e w e a c h s u b r o u t i n e , i w a o f t e n n e c e s s a r yt m o v e t h e c u r s o r d o w n t c l e a r a r e a o t h e s c r e e n a n t h e np r e s s t h F 7 L I S T f u n c t i o n k e y . I n s t e a d , t h i s k e w a d e f i n e d .I c l e a r s t h s c r e e n f i r s t ( s t h c u r s o r d o e s n o t h a v e t b m o v e d )a n t h e n L I S T S t h e n t i r e p r o g r a m .

Page 247: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 247/290

S o f t w a r e T r i c k s 2 2

Y O S U P P L Y

S u b s t i t u t e y o u r o w k e d e f i n i t i o n s .

S U G G E S T E D E N H A N C E M E N T S ; C o m e u w i t h p r o g r a m m i n g s h o r tc u t s o y o u r o w n .

R E S U L T

K e y s r e d e f i n e d t s e o u t i l i t y f u n c t i o n s .

C U R S O R M O V E RW H A T I D O E S ; D u p l i c a t e s t h e L O C A T E f u n c t i o n o I B B A S I C .

L E V E L ; I n t e r m e d i a t e

1 0 R E M * * * * * * * * * * * * * * * *1 1 R E 1 2 R E C U R S O R M O V E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E U S E R S U P P L I E D1 8 R E R O W : R O F O R C U R S O R1 9 R E C O L : C O L F O R C U R S O R2 0 R E R E S U L T2 1 R E C U R S O R M O V E D T R O W , C O 2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 F O N = T 8 2 6 R $ = R $ + C H R $ ( 2 9 )2 7 I N < 2 6 T H E N D $ = D $ + C H R $ ( 1 7 )2 8 N E X T2 9 W I D E = 4 03 0 C O L = 3 : R O W = 1 03 1 S C N C L R3 2 G O S U B 2 8 2 1 03 3 P R I N T " H E R E A I R O " ; R O W ? " C O L U M N " . - C O L ; " ! 1 13 4 E N 2 8 2 0 0 R E * * S U B R O U T I N E * *

Page 248: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 248/290

2 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

2 8 2 1 0 P R I N T C H R $ ( 1 9 ) ;2 8 2 2 0 P R I N T L E F T ? ( R $ , C O L ) ;2 8 2 3 0 P R I N T L E F T $ ( D $ , R O W ) ;2 8 2 4 0 R E T U R N

H O T U S S U B R O U T I N E

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

L O C A T E ( r o w , c o l ) c o m m a n d .T h i s s u b r o u t i n e d u p l i c a t e s t h a t f u n c t i o n f o t h 4 0 - o r

8 0 - c o l u m n s c r e e n . P r i o r t c a l l i n g i t y o s h o u l d d e f i n e R O a n C O L . Y o u r p r o g r a m s h o u l d d e f i n e W I D E a t h w i d t h o y o u rs c r e e n , e i t h e r 4 o 8 c o l u m n s . I y o e x c e e d a l l o w a b l e v a l u e s o t h 8 0 - c o l u m n s c r e e n , t h e c u r s o r m o v e s t i t l i m i t s a n n f a t h e r . W i t h 4 0 - c o l u m n s c r e e n t h e c u r s o r w i l l w r a p a r o u n d t t h n e x t l i n e , u t t h l a s t c o l u m n i t h a t s e c o n d r o w . R O a n C O c a b c o m p u t e d v a l u e s , i y o w i s h , b u s e t h a t t h e y d o n ' tf a l l o u t s i d e t h l i m i t s .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 5 0 - 2 8 0 : D e f i n e R a 8 C U R S O R R I G H T c h a r a c t e r s .D e f i n e D a 2 C U R S O R D O W N c h a r a c t e r s .

L i n e s 2 9 0 - 3 0 0 : D e f i n e R O W , C O L , a n s c r e e n w i d t h , W I D E .Y o u r p r o g r a m w i l l d e f i n e W I D E o n c e b u t r e d e f i n e R O a n C O a y o m o v e t h e c u r s o r a r o u n d o n t h s c r e e n .

L i n e 3 1 0 : C l e a r s c r e e n .L i n e 3 2 0 : A c c e s s t h s u b r o u t i n e .L i n e 3 3 0 : S h o w r e s u l t .L i n e 2 8 2 1 0 : M o v e c u r s o r t H O M E p o s i t i o n .L i n e 2 8 2 2 0 : M o v e c u r s o r r i g h t t h n u m b e r o c o l u m n s i

C O b t a k i n g t h L E F T $ p o r t i o n o R u t C O L .L i n e 2 8 2 3 0 : M o v e c u r s o r d o w n t h n u m b e r o l i n e s i R O

b t a k i n g t h L E F T $ p o r t i o n o D u t R O W .L i n e 2 8 2 4 0 : R e t u r n .

Page 249: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 249/290

S o f t w a r e T r i c k s 2 3

Y O S U P P L Y

D e f i n i t i o n f o s c r e e n w i d t h , R O a n C O L .S U G G E S T E D E N H A N C E M E N T S ; A d l i n e s t k e e p c u r s o r f r o m m o i n b e y o n d t h 4 0 - c o l u m n p o i n t w i t h a 4 0 - c o l u m n s c r e e n . E x a m p l e :

2 8 2 1 5 I C O L > 4 0 A N W I D E = 4 0 T H E N C O L = 4 0

R E S U L T

C u r s o r m o v e d t R O a n C O s p e c i f i e d b u s e r .

P R O G R A M T R A N S F E RW H A T I D O E S ; A l l o w s s e n d i n g p r o g r a m l i s t i n g o u t h R S - 2 3 2i n t e r f a c e , i o n i i n s t a l l e d .

L E V E L ; I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E P R O G R A M T R A N S F E R1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N O N E1 9 R E R E S U L T2 0 R E L I S T I N G D I R E C T E D T 2 1 R E R S - 2 3 2 P O R T2 2 R E 2 3 R E 2 8 3 0 0 R E * * S U B R O U T I N E * * 2 8 3 1 0 O P E N 2 , 2 , 3 , C H R $ ( 3 8 ) + C H R $ ( 1 6 0 )2 8 3 2 0 C M D 22 8 3 3 0 L I S T2 8 3 4 0 P R I N T # 22 8 3 5 0 C L O S E2 8 3 6 0 P R I N T " T R A N S F E R C O M P L E T E "

Page 250: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 250/290

2 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

H O T U S E S U B R O U T I N E

B e c a u s e t h C o m m o d o r e 1 2 8 ' s B A S I C i f a i r l y c o m p a t i b l e w i t ht h a t o o t h e r c o m p u t e r s , i m a b d e s i r a b l e t s e n d a p r o g r a ml i s t i n g t o a n o t h e r m a c h i n e , e v e n t h o u g h t h t w o h a v e i n c o m p a t i b l ed i s k f o r m a t s . I t h C o m m o d o r e 1 2 i e q u i p p e d w i t h a i n e x p e n s i v eR S - 2 3 2 i n t e r f a c e a n t h o t h e r c o m p u t e r h a t h s a m e , t h e nc a b l e , n u l l m o d e m a d a p t e r , a n t h i s s u b r o u t i n e a r e n e a r l y a l t h a ta r e n e e d e d . T h o t h e r c o m p u t e r s h o u l d h a v e t e r m i n a l p r o g r a mt h a t w i l l a l l o w d u m p i n g t h t r a n s m i t t e d f i l e t d i s k o t a p e .

B c e r t a i n t i n c l u d e t h n u l l m o d e m a d a p t e r , a v a i l a b l e f r o mm o s t c o m p u t e r s t o r e s , w h e n c o m m u n i c a t i o n i d i r e c t l y b e t w e e nt w c o m p u t e r s w i t h n m o d e m i b e t w e e n . O t h e r w i s e , e a c h w i l lb e s e n d i n g t t h o t h e r ' s S E N D l i n e a n t r y i n g t r e c e i v e f r o mt h c o n n e c t e d c o m p u t e r ' s R E C E I V E l i n e .

S i m p l y l o a d t h e p r o g r a m y o w a n t t t r a n s m i t , a n t y p e i t h l i n e s i t h i s s u b r o u t i n e a o n l o n g l i n e b e f o r e h i t t i n g r e t u r n .Y o u r b a u d r a t e w i l l b s e f o 3 0 0 , e v e n p a r i t y , a n 7 - b i t w o r d .

T h i s r o u t i n e w a a c t u a l l y u s e d i t h p r e p a r a t i o n o t h i s b o o k .T h p r o g r a m l i s t i n g s w e r e s e n t f r o m t h a u t h o r ' s C o m m o d o r e 1 2 t a n o t h e r c o m p u t e r u s e d f o w o r d p r o c e s s i n g . H o w e v e r , k e w a r e d e f i n e d t p r o v i d e t h e p r o g r a m l i n e s l i s t e d h e r e . A f t e rg i v e n r o u t i n e w a l o a d e d , p r e s s i n g t h e f u n c t i o n k e i n i t i a t e d t h t r a n s m i s s i o n .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 3 1 0 : O P E N t h R S - 2 3 2 l i n e a n s e f o 3 0 b a u d ,e v e n p a r i t y , 7 - b i t w o r d .

L i n e 2 8 3 2 0 : R e d i r e c t s c r e e n o u t p u t t t h R S - 2 3 2 l i n e .L i n e 2 8 3 3 0 : L I S T t h p r o g r a m . T h l i s t i n g g o e s o u t t h e R S - 2 3 2

i n s t e a d o t t h s c r e e n .L i n e s 2 8 3 4 0 - 2 8 3 5 0 : R e t u r n s t a t u s t n o r m a l .L i n e 2 8 3 6 0 : N o t i f y t h a t t r a n s m i s s i o n i c o m p l e t e .

Y O S U P P L Y

P r o g r a m t t r a n s m i t .

Page 251: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 251/290

S o f t w a r e T r i c k s 2 3

S U G G E S T E D E N H A N C E M E N T S ; I n c o r p o r a t e f e a t u r e s f r o m t h n e x ts u b r o u t i n e , T e r m i n a l , t a l l o w f o t w o - w a y t r a n s m i s s i o n s .R E S U L T

P r o g r a m l i s t i n g s e n t o u R S - 2 3 2 p o r t .

T E R M I N A LW H A T I D O E S ; B A S I C d u m b t e r m i n a l p r o g r a m .L E V E L ; I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * *1 1 1 2 1 3 1 4

^ X D \ J1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4

R E R E R E R E R F * MX v C i i r lR E R E R E R E R E R E R E R E R E

T E R M I N A L* * * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D B U S E R

K E Y B O A R D I N P U TR E S U L T

C O M M U N I C A T E W I T H O T H E RC O M P U T E R A 3 0 B A U D ,E V E N P A R I T Y , 7 - B I T W O R D

2 8 5 0 0 R E M * * S U B R O U T I N E * * 2 8 5 1 0 O P E N 2 , 2 , 3 , C H R $ ( 3 8 ) + C H R $ ( 1 6 0 )2 8 5 2 0 G E # 2 , A $2 8 5 3 0 G E B 2 8 5 4 0 I B $ < > " " T H E N P R I N T # 2 , B $ ;2 8 5 5 0 I B $ = C H R $ ( 9 5 ) T H E N G O T O 2 8 6 1 02 8 5 6 0 G E # 2 , C $2 8 5 7 0 A = A S C ( C $ )2 8 5 8 0 I A > 9 0 T H E N C $ = C H R $ ( A - 3 2 )2 8 5 9 0 P R I N T B $ ; C $ ;2 8 6 0 0 G O T O 2 8 5 3 02 8 6 1 0 C L O S E

H O T U S S U B R O U T I N E

B A S I C i j u s t a b o u t f a s t e n o u g h f o t h C o m m o d o r e 1 2 t c o m m u n i c a t e a 3 0 b a u d i n o t h i n g f a n c y i a t t e m p t e d . T h i s

Page 252: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 252/290

2 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

s u b r o u t i n e w i l l f e t c h c h a r a c t e r s f r o m t h R S - 2 3 2 l i n e a n s e n dk e y b o a r d c h a r a c t e r s o u t h a t i n t e r f a c e . A n y t h i n g s e n t o r e c e i v e di e c h o e d t t h s c r e e n . L o w e r c a s e f r o m t h o t h e r c o m p u t e r i t r a n s l a t e d t u p p e r c a s e .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 8 5 1 0 : O P E N R S - 2 3 2 c h a n n e l f o 3 0 b a u d c o m m u n i c at i o n s .

L i n e 2 8 5 2 0 : G e t f r o m c h a n n e l n u m b e r 2 c h a r a c t e r , i a v a i l a b l e .

L i n e 2 8 5 3 0 : G E c h a r a c t e r f r o m t h k e y b o a r d , i k e i d e p r e s s e d .

L i n e 2 8 5 4 0 : I k e w a d e p r e s s e d , p r i n t t h a t c h a r a c t e r t t h s c r e e n .

L i n e 2 8 5 5 0 : I u s e r e n t e r s C H R $ ( 9 5 ) ( b a c k a r r o w ) , c e a s ec o m m u n i c a t i o n s .

L i n e 2 8 5 6 0 : G e c h a r a c t e r f r o m R S - 2 3 2 , i a v a i l a b l e .L i n e 2 8 5 7 0 : D e t e r m i n e A S C I I v a l u e o k e r e c e i v e d .L i n e 2 8 5 8 0 : I k e w a l o w e r c a s e , r e d u c e t u p p e r c a s e .L i n e 2 8 5 9 0 : P r i n t k e y b o a r d o c h a r a c t e r f r o m R S - 2 3 2 t o s c r e e n .L i n e 2 8 6 0 0 : G b a c k a n g e m o r e c h a r a c t e r s .L i n e 2 8 6 1 0 : C L O S E t h R S - 2 3 2 c h a n n e l .

Y O S U P P L Y

N u s e r c h a n g e s n e e d e d .

S U G G E S T E D E N H A N C E M E N T S ; A d d r o u t i n e t u p l o a d a f i l e .

R E S U L T

D u m b t e r m i n a l c o m m u n i c a t i o n s i B A S I C .

Page 253: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 253/290

B I T S A N B Y T E S

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

A y o k n o w , e a c h m e m o r y l o c a t i o n s t o r e s s i n g l e , 8 - b i tb y t e . T h b i n a r y n u m b e r s l o o k l i k e t h i s :

1 0 1 1 0 1 1 1

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

2 3

Page 254: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 254/290

2 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

( 8 d e c i m a l ) , y o k n o w t h a t a u p p e r c a s e " Q h a b e e n p r i n t e dt h e r e . U s i n g f u l l b y t e a l l o w s y o t h a v e t o t a l o 2 5 c o m b i n at i o n s i n t h a t l o c a t i o n a n t h e r e f o r e 2 5 d i f f e r e n t c h a r a c t e r s .

H o w e v e r , s o m e f u n c t i o n s d n o h a v e t h a t m a n y p o s s i b i l i t i e s .f e a t u r e m a b o o o f f , f o e x a m p l e . Y o c o u l d s t o r e " 1 " i n

t h a t l o c a t i o n ( 0 0 0 0 0 0 0 1 i b i n a r y ) i t h e f e a t u r e i o n a n " 0 ( 0 0 0 0 0 0 0 0 i b i n a r y ) i i i o f f . Y o c a s e e , t h o u g h , t h a t t h eo t h e r s e v e n b i t s w i l l n e v e r b u s e d .

T h C o m m o d o r e c o m p u t e r m a k e s m u l t i p l e u s o m a n y m e o r l o c a t i o n s b u s i n g i n d i v i d u a l b i t s t o r e p r e s e n t d i f f e r e n tc o n d i t i o n s . I i n e c e s s a r y , t h e n , t l o o k a o n b i w i t h i n b y t e t s e w h e t h e r f e a t u r e i o o o f f . S i m i l a r l y , w h e n y o w a n t t c h a n g e t h a t c o n d i t i o n , y o m a n e e d t P O K E O N L Y t h a t b i a n l e a v e t h o t h e r s , w h i c h p e r t a i n t o t h e r f e a t u r e s , u n c h a n g e d .

T h P e e k B i s u b r o u t i n e f i l t e r s o u t t h e u n d e s i r e d b i t s b u s i n g a t e c h n i q u e k n o w n a B o o l e a n l o g i c . B o o l e a n m a t h c o mp a r e s e a c h b i o o n b y t e w i t h t h c o r r e s p o n d i n g b i o a n o t h e rb y t e . T h r e s u l t d e p e n d s o w h a t t y p e o o p e r a t o r i u s e d , t h m o s t c o m m o n b e i n g A N D , O R , a n d N O T . W i t h t h A N o p e r at i o n , i b o t h b i t s a r 1 t h r e s u l t i 1 a l o t h e r c o m p a r i s o n sp r o d u c e v a l u e o 0 T h O o p e r a t i o n p r o d u c e s i e i t h e r b i i 1 N O c o m p l e m e n t s e a c h b i t .

B o o l e a n m a t h i d i s c u s s e d i m o r e d e t a i l s h o r t l y . F i r s t y o n e e d t k n o w m o r e o h o A N w o r k s . T h p a r t i c u l a r b i o b i t sl o o k e d a d e p e n d s o n t h n u m b e r y o c h o o s e t A N w i t h . Y o w i l l r e m e m b e r i t h C o m m o d o r e 6 4 - c o m p a t i b l e j o y s t i c k r o u t i n e si C h a p t e r v a r i o u s n u m b e r s w e r e A N D e d w i t h P E E K t d e t e rm i n e t h s t a t u s o f a g i v e n j o y s t i c k s w i t c h b i t . I s o m e c a s e s , y o m a w a n t t k n o w a b o u t a l o t h f i r s t f o u r b i t s ( r e a d i n g f r o mr i g h t t l e f t , a i t h c o n v e n t i o n w i t h n u m b e r s ) o b y t e , s y o A N w i t h 1 5 w h i c h i 0 0 0 0 1 1 1 1 i b i n a r y , t " m a s k " t h l a s tf o u r b i t s . H e r e a r f e e x a m p l e s :

M E M O R Y B Y T E : 1 1 0 1 0 0 0 1A N w i t h 1 5 0 0 0 0 1 1 1 1R E S U L T 0 0 0 0 0 0 0 1

M E M O R Y B Y T E : 0 1 1 0 0 0 0 1A N D w i t h 1 5 0 0 0 0 1 1 1 1R E S U L T 0 0 0 0 0 0 0 1

Page 255: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 255/290

B i t s a n B y t e s 2 3

Y o u ' l l s e b f o l l o w i n g a l o n g t h c o l u m n s t h a t t h r e s u l te q u a l s o n l y w h e n t h c o r r e s p o n d i n g b i i b o t h t h c o l o r m e o r y b y t e a n 1 e q u a l 1 S i n c e t h s e c o n d ( l e f t - h a n d ) f o u r b i t s o t h b i n a r y e q u i v a l e n t o 1 d e c i m a l a r a l w a y s 0 t h r e s u l t w i l la l w a y s b 0 S i n c e t h e f i r s t ( r i g h t - h a n d ) f o u r b i t s o 1 a r a l l ' s ,t h r e s u l t w i l l b o n l y i t h e r e i a l s o i t h m e m o r y b y t e .

T h O a n N O o p e r a t o r s a r e t w o t h o t h e r m o r e f r q u e n t l y u s e d B o o l e a n t o o l s . W h e r e a s A N p r o d u c e s a a f t e re a c h b i t - t o - b i t c o m p a r i s o n o n l y w h e n b o t h b i t s a r 1 O p r o d u c e s

i e i t h e r b i i 1 F o e x a m p l e :

O r i g i n a l b y t e : 1 0 1 1 0 1 1 0 O C o m p a r i s o n b y t e : 0 1 1 0 0 0 1 1R e s u l t : 1 1 1 1 0 1 1 1

N O p r o d u c e s t h o p p o s i t e o t h v a l u e u s e d : I N O A w i l l p r o d u c e ( f a l s e ) v a l u e i d o e s e q u a l 1

T h e r e a r n u m b e r o o t h e r B o o l e a n o p e r a t o r s , i n c l u d i n ge x c l u s i v e O ( X O R ) , b u t n o n e o t h e s e i u s e d i n t h i s b o o k . W h a tt h e s e s u b r o u t i n e s l e y o d i m a n i p u l a t e i n d i v i d u a l b i t s i o r d e r t s e c e r t a i n r e g i s t e r s t h a t m a n o r e q u i r e a e n t i r e b y t e .R a t h e r t h a n P O K i n g n u m b e r i n t o m e m o r y l o c a t i o n a n d c h a n gi n t h c o n t e n t s o b i t s t h a t d n o c o n c e r n y o u , u s t h " s o f t "P O K i n g r o u t i n e s p r e s e n t e d h e r e t a l t e r o n l y t h d e s i r e d b i t .

O n o t h e s u b r o u t i n e s i t h i s s e c t i o n w i l l a l l o w P E E K i n g a a n g i v e n b i w i t h i n a b y t e . A n o t h e r w i l l s e a n c h o s e n b i t 1 t u r n i n g f e a t u r e " o n . " t h i r d w i l l s e t a n b i t t o 0 t u r n i n g t h a tf e a t u r e " o f f . " W h a t i y o d o n ' t c a r e w h e t h e r t h b i i o o o f b u w o u l d l i k e t o s e i t t h e r e v e r s e c o n d i t i o n ? I c o m p u t e r p r g r a m m i n g t h i s i k n o w n a t o g g l e . H i t t i n g t h s w i t c h o n t i m et u r n s t h f e a t u r e o o o f f , d e p e n d i n g o i t p r e v i o u s c o n d i t i o n .H i t t i n g i a g a i n d o e s t h e r e v e r s e . T h R e v e r s e B i s u b r o u t i n e w i l lt o g g l e a n b i y o l i k e . A n o t h e r r o u t i n e , B i D i s p l a y e r , w i l l s h o wt h s t a t u s o a l t h b i t s i b y t e . I e f f e c t , i t r a n s l a t e s t h e b y t ei n t o b i n a r y .

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

Page 256: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 256/290

2 3 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

P E E K B I

W H A T I D O E S : L o o k s a s t a t u s , o 1 o a n s e l e c t e d b i i g i v e n b y t e .

L E V E L : A d v a n c e d1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3

R E R E R E R E R E R E R E R E R E R E R E R E R E R E

* * * * * * * * * * * *

P E E K B I * * * * * * * * * * * *

+ V A R I A B L E S + S U P P L I E D

A D D R E S S :B I T :

R E S U L TV

B U S E RL O C A T I O N T O P E E KB I T T O E X A M I N EV A L U E O F B I T

2 4 0 R E M * * I N I T I A L I Z E * * 2 5 A D D R E S S = 3 6 8 7 92 6 0 B I T = 52 7 0 G O S U B 2 9 0 1 02 8 P R I N T " V A L U E I B I " ; B I T ; " = " ; V2 9 E N 2 9 0 0 0 R E M * * S U B R O U T I N E * * 2 9 0 1 0 B I T = 8 - B I T2 9 0 2 0 P = B I T - 12 , 9 0 3 0 V = ( P E E K ( A D D R E S S ) A N D ( 2 ~ P ) ) / ( 2 ~ P )2 9 0 4 0 B I T = 8 - B I T2 9 0 5 0 R E T U R N

H O T U S S U B R O U T I N E

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

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

Page 257: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 257/290

B i t s a n B y t e s 2 3

s e i t s t a t u s . Y o u r p r o g r a m m a t a k e s o m e a c t i o n b a s e d o w h a ti f o u n d , t h a t i s " I T H E N P R I N T " T H E F E A T U R E I O F F . "

N O T E : T h c a r e t s y m b o l C i n d i c a t e s t h u p - a r r o w k e y , l o c a t e db e t w e e n R E S T O R E a n " * o y o u r C o m m o d o r e 1 2 k e y b o a r d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e A D D R E S S t P E E K .L i n e 2 6 0 : D e f i n e B I t l o o k a t L i n e s 2 7 0 - 2 9 0 : A c c e s s t h s u b r o u t i n e a n p r i n t o u r e s u l t s .L i n e 2 9 0 1 0 : C h a n g e B I T n u m b e r . A l t h o u g h w c o u n t b i t s

f r o m r i g h t t l e f t , t h i s r o u t i n e p r o c e s s e s t h e m f r o m l e f t t o r i g h t .L i n e 2 9 0 2 0 : D e t e r m i n e n u m b e r t A N w i t h b y t e .L i n e 2 9 0 3 0 : A N b y t e w i t h t d e t e r m i n e s t a t u s o t h b i t .L i n e 2 9 0 4 0 : C h a n g e B I T v a l u e b a c k .

Y O S U P P L Y

D e f i n e B I a t h b i t , 1 - c o u n t i n g f r o m t h r i g h t , t h a t y o w a n t t e x a m i n e , a n A D D R E S S a t h m e m o r y l o c a t i o n t b P E E K e d . w i l l i n d i c a t e w h e t h e r t h b i i o o o f f , b e q u a l i n ge i t h e r o 0

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

S t a t u s o b i d i s p l a y e d .

B I D I S P L A Y E RW H A T I D O E S : S h o w s p a t t e r n o a l e i g h t b i t s w i t h i n b y t e .C o n v e r t s t h d e c i m a l v a l u e t b i n a r y .

L E V E L : A d v a n c e d

Page 258: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 258/290

2 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * * * *1 1 R E * 1 2 R E B I D I S P L A Y E R1 3 R E 1 4 R E * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M A D D R E S S : M E M O R Y B Y T E1 9 R E M T O D I S P L A Y2 0 R E M R E S U L T2 1 0 R E M B Y T E $ : B I P A T T E R N2 2 R E 2 3 R E 2 4 0 R E M * * I N I T I A L I Z E * * 2 5 A D D R E S S = 3 6 8 7 92 6 P R I N T2 7 G O S U B 2 9 1 1 02 8 P R I N T " A D D R E S S : " ; A D D R E S S2 9 0 P R I N T T A B ( 4 ) B Y T E $3 0 E N 2 9 1 0 0 R E M * * S U B R O U T I N E * * 2 9 1 1 0 B Y T E $ » I M I2 9 1 2 0 P R I N T T A B ( 4 ) I I M ;2 9 1 3 0 F O N = T S T E P - 12 9 1 4 0 V = ( P E E K ( A D D R E S S ) A N D ( 2 A N ) ) / ( 2 " N )2 9 1 5 0 G $ = M I D $ ( S T R $ ( V ) , 2 )2 9 1 6 0 B Y T E $ = B Y T E $ + G $2 9 1 7 0 N E X T2 9 1 8 0 R E T U R N

H O T U S S U B R O U T I N E

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

Y o c o u l d a l s o u s t h i s s u b r o u t i n e t p r o v i d e a q u i c kw a o c o n v e r t i n g n u m b e r f r o m d e c i m a l ( i t h r a n g et 2 5 o n l y ) t b i n a r y . S i m p l y P O K E t h n u m b e r t a u n u s e dm e m o r y l o c a t i o n a n t h e n i m m e d i a t e l y c a l l t h i s s u b r o u t i n e t P E E K t h a t a d d r e s s . Q u i t e r o u n d a b o u t w a o p e r f o r m i n g t h t a s k , b u u s e f u l i y o a r e w r i t i n g s o f t w a r e t h a t y o d e l i b e ra t e l y w a n t t b d i f f i c u l t t c h a n g e , s u c h a f o p r o t e c t i o np u r p o s e s .

T h i s s u b r o u t i n e w i l l a l s o s e r v e a m e a n s o c o n v e r t i n gd e c i m a l n u m b e r s m a l l e r t h a n 2 5 5 t b i n a r y . S i m p l y s u b s t i t u t e

Page 259: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 259/290

B i t s a n B y t e s 2 4

y o u r v a r i a b l e f o P E E K ( A D D R E S S ) a n d e f i n e t h v a r i a b l e a s t h d e c i m a l n u m b e r y o w a n t t c o n v e r t .

N O T E : T h c a r e t s y m b o l C i n d i c a t e s t h u p - a r r o w k e y , l o c a t e db e t w e e n R E S T O R E a n " * o y o u r C o m m o d o r e 1 2 k e y b o a r d .

L I N E - B Y L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e a d d r e s s t b P E E K e d .L i n e s 2 6 0 - 3 0 0 : A c c e s s t h s u b r o u t i n e a n p r i n t r e s u l t .L i n e 2 9 1 1 0 : N u l l a n p r e v i o u s v a l u e o B Y T E $ .L i n e 2 9 1 2 0 : P r o v i d e T A t p r i n t r e s u l t .L i n e s 2 9 1 4 0 - 2 9 1 5 0 : R e p e a t t h r o u g h e a c h b i o b y t e , A N

e a c h b i w i t h t h n e x t h i g h e s t p o w e r o 2 a n s t o r e t h r e s u l t i G $ w h i c h w i l l s t o r e t h o n / o f f s t a t u s o f e a c h b i t . T h e n a d G t B Y T E $ .

Y O S U P P L Y

Y o m u s t d e f i n e A D D R E S S a t h m e m o r y l o c a t i o n , i n d e c im a l , t h a t y o w a n t t P E E K . T h s u b r o u t i n e r e t u r n s B I T $ , w h i c hi r e p r e s e n t a t i o n o a l t h b i t s w i t h i n t h a t b y t e .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

A l b i t s w i t h i n b y t e a r d i s p l a y e d .

B I T O N W H A T I D O E S : S o f t P O K E s a n d e s i r e d b i w i t h i n b y t e s t h a ti n o h a t h v a l u e o 1 w i t h o u t c h a n g i n g a n o t h e r b i t s .

L E V E L : A d v a n c e d

Page 260: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 260/290

2 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * *1 1 R E 1 2 R E B I T T O O N E1 3 R E 1 4 R E * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E M A D D R E S S : L O C A T I O N T P O K E1 9 R E B I T : B I T O C H A N G E T O O N 2 0 R E M R E S U L T2 1 R E M B I T C H A N G E D T 2 3 R E 2 4 0 R E M2 5 0 R E M * * I N I T I A L I Z E * * 2 6 A D D R E S S = 3 6 8 7 82 7 B I T = 32 8 G O S U B 2 9 2 1 02 9 E N 2 9 2 0 0 R E M * * S U B R O U T I N E * * 2 9 2 1 0 B I T = 8 - B I T2 9 2 2 0 P O K E A D D R E S S , P E E K ( A D D R E S S ) O R ( 2 " B I T )2 9 2 3 0 B I T = 8 - B I T2 9 2 4 0 R E T U R N

H O T U S S U B R O U T I N E

T h i s s u b r o u t i n e w i l l t a k e a n b i w i t h i n b y t e a n c h a n g ei t v a l u e t 1 r e g a r d l e s s o w h a t i w a b e f o r e . N o n e o t h o t h e r b i t s w i t h i n t h b y t e w i l l b a l t e r e d . T h i s a b i l i t y i u s e f u lf o t o g g l i n g c e r t a i n f e a t u r e s w i t h i n a m u l t i p u r p o s e b y t e t h a t m a a l s o b e u s e d t c o n t r o l o t h e r p a r a m e t e r s o t h C o m m o d o r e 1 2 8 .

N O T E : T h c a r e t s y m b o l ( A i n d i c a t e s t h u p - a r r o w k e y ,l o c a t e d b e t w e e n R E S T O R E a n " * o y o u r C o m m o d o r e 1 2 k e y b o a r d .

L I N E - B Y - L I N E D E S C R I P T I O NL i n e 2 6 0 : D e f i n e A D D R E S S t P E E K a n P O K E .L i n e 2 7 0 : D e f i n e B I t c h a n g e t v a l u e o 1 L i n e 2 9 2 2 0 : P O K E B I t 1

Page 261: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 261/290

B i t s a n B y t e s 2 4

Y O S U P P L Y

Y o m u s t d e f i n e A D D R E S S a t h m e m o r y l o c a t i o n , i d e c im a l , t h a t y o w a n t t P O K E . B I s h o u l d b e g i v e n t h v a l u e o t h b i t , 1 - 8 , t h a t y o w a n t c h a n g e d t v a l u e o 1

S U G G E S T E D E N H A N C E M E N T S : N o n e .R E S U L T

B i w i t h i n b y t e i c h a n g e d t 1

B I T Z E R OW H A T I D O E S : S o f t P O K E s a n d e s i r e d b i w i t h i n b y t e s t h a ti n o h a t h v a l u e o 0 w i t h o u t c h a n g i n g a n o t h e r b i t s .

L E V E L : A d v a n c e d1 0 R E * * * * * * * * * * * * * * *1 1 0 R E M1 2 R E B I T T O Z E R O1 3 R E 1 4 R E M * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E A D t o R E S S : L O C A T I O N T O P O K E1 9 R E B I T : B I T O C H A N G E T O Z E R O2 0 R E M R E S U L T2 1 R E M B I T C H A N G E D T O Z E R O2 2 0 R E M2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 A D D R E S S = 3 6 8 7 92 6 B I T = 32 7 G O S U B 2 9 3 1 02 8 E N 2 9 3 0 0 R E * * S U B R O U T I N E * * 2 9 3 1 0 B I T = 8 - B I T2 9 3 2 0 P O K E A D D R E S S , P E E K ( A D D R E S S ) A N D ( 2 5 5 - ( 2 " B I T ) )2 9 3 3 0 B I T = 8 - B I T2 9 3 4 0 R E T U R N

Page 262: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 262/290

Page 263: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 263/290

B i t s a n B y t e s 2 4

1 0 R E * * * * * * * * * * * * * * *1 1 R E 1 2 R E R E V E R S E B I 1 3 R E 1 4 R E M * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 0 R E M A D D R E S S : L O C A T I O N T O P O K E1 9 R E B I T : B I T T O R E V E R S E2 0 R E M R E S U L T2 1 0 R E M B I T C H A N G E D T O P P O S I T E2 2 R E 2 3 R E 2 4 R E * * I N I T I A L I Z E * * 2 5 A D D R E S S = 3 6 8 7 82 6 B I T = 32 7 G O S U B 2 9 4 1 02 8 E N 2 9 4 0 0 R E M * * S U B R O U T I N E * * 2 9 4 1 0 B I T = 8 - B I T2 9 4 2 0 M = 1 - ( P E E K ( A D D R E S S ) A N D ( 2 * B I T ) ) / ( 2 " B I T )2 9 4 3 0 P O K E A D D R E S S , P E E K ( A D D R E S S ) A N D ( 2 5 5 - ( 2 " B I T ) ) O R ( M * ( 2 ~ B I T ) )2 9 4 4 0 B I T = 8 - B I T2 9 4 5 0 R E T U R N

H O T U S E S U B R O U T I N E

T h i s s u b r o u t i n e w i l l t a k e a n b i w i t h i n b y t e a n c h a n g et h a t v a l u e t t h o p p o s i t e o w h a t i w a b e f o r e . I t h b i w a 1 i w i l l b c h a n g e d t 0 b i w i l l b g i v e n a v a l u e o 1 N o n e o t h e o t h e r b i t s w i t h i n t h b y t e w i l l b a l t e r e d . T h i s a b i l i t y i u s e f u l f o t o g g l i n g c e r t a i n f e a t u r e s w i t h i n m u l t i p u r p o s e b y t et h a t m a a l s o b u s e d t c o n t r o l o t h e r p a r a m e t e r s o t h C o m m od o r e 1 2 8 . U s i n g t h i s s u b r o u t i n e , i i n o n e c e s s a r y t k n o ww h e t h e r t h f e a t u r e i o o o f f . T h r o u t i n e w i l l c h a n g e i t t h o t h e r s t a t u s a u t o m a t i c a l l y .

N O T E : T h c a r e t s y m b o l C i n d i c a t e s t h u p - a r r o w k e y , l o c a t e db e t w e e n R E S T O R E a n " * o y o u r C o m m o d o r e 1 2 k e y b o a r d .

Page 264: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 264/290

2 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e A D D R E S S t P E E K a n P O K E .L i n e 2 6 0 : D e f i n e B I t r e v e r s e .L i n e s 2 9 4 2 0 - 2 9 4 3 0 : F i n d o u v a l u e o t h b i t , t h e n r e v e r s e

t h a t , u s i n g O R

Y O S U P P L Y

Y o m u s t d e f i n e A D D R E S S a t h m e m o r y l o c a t i o n , i d e c im a l , t h a t y o w a n t t P O K E . B I s h o u l d b g i v e n t h e v a l u e o t h b i t , 1 - 8 , t h a t y o w a n t c h a n g e d t r e v e r s e i n v a l u e .

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

B i w i t h i n a b y t e i r e v e r s e d .

B I N A R Y T D E C I M A LW H A T I D O E S : C h a n g e s b i n a r y n u m b e r t d e c i m a l e q u i v a l e n t .

L E V E L : A d v a n c e d1 0 R E * * * * * * * * * * * * * * * * * *1 1 0 R E M * 1 2 R E B I N A R Y / D E C I M A L1 3 R E * 1 4 R E * * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E A $ B I N A R Y N U M B E R A S T R I N G1 9 R E R E S U L T2 0 R E A D E C I M A L E Q U I V A L E N T2 1 R E 2 2 R E 2 3 S C N C L R2 4 P R I N T " E N T E R B I N A R Y N U M B E R T C O N V E R T " : I N P U T A 2 5 F O N = T L E N ( A $ )2 6 T $ = M I D $ ( A $ , N , 1 )

Page 265: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 265/290

B i t s a n B y t e s 2 4

2 7 I T $ = " 0 " O T $ = " l " G O T O 3 1 2 8 P R I N T N O B I N A R Y N U M B E R 1 "2 9 P R I N T3 0 G O T O 2 4 3 1 G O S U B 2 9 5 1 03 2 P R I N T A $ ; " = " ; A3 3 E N 3 4 A = 2 9 5 0 0 R E * * S U B R O U T I N E * * 2 9 5 1 0 F O N = T L E N ( A $ )2 9 5 2 0 P = L E N < A $ ) - N2 9 5 3 0 A = A + 2 " P * V A L ( M I D $ ( A $ , N , 1 ) )2 9 5 4 0 N E X T2 9 5 5 0 R E T U R N

H O T U S S U B R O U T I N E

S e v e r a l o t h e s u b r o u t i n e s i t h i s b o o k , a n m a n y m o r e t h a ty o w i l l p r e p a r e , r e q u i r e s u p p l y i n g d e c i m a l e q u i v a l e n t s o b i n a r yn u m b e r s . F o r e x a m p l e , p r o d u c i n g p r o g r a m m e d c h a r a c t e r s e t s i v o l v e s s e t t i n g e a c h b i o b y t e e i t h e r o o o f d e p e n d i n g o t h d e s i r e d s t a t u s o t h e e q u i v a l e n t p i c t u r e e l e m e n t . O n c e t h b i n a r y n u m b e r h a s b e e n " d e s i g n e d , " t h e u s e r n e e d s t h d e c i m a le q u i v a l e n t f o t h a p p r o p r i a t e P O K E s t a t e m e n t .

T h i s r o u t i n e w i l l c a l c u l a t e t h d e c i m a l n u m b e r s f o y o u . J u s te n t e r t h e b i n a r y n u m b e r w h e n a s k e d . T h r o u t i n e w i l l c h e c k t s e e t h a t O N L Y l ' a n O ' h a v e b e e n e n t e r e d , t h e n f i g u r e t h r e s u l t .

N O T E : T h c a r e t s y m b o l C i n d i c a t e s t h u p - a r r o w k e y , l o c a t e db e t w e e n R E S T O R E a n * * o y o u r C o m m o d o r e 1 2 k e y b o a r d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e s 2 3 0 - 2 4 0 : A s u s e r f o b i n a r y n u m b e r t c o n v e r t .L i n e s 2 5 0 - 3 0 0 : C h e c k f o p r e s e n c e o i l l e g a l c h a r a c t e r s .L i n e 3 1 0 : A c c e s s s u b r o u t i n e .L i n e 3 2 0 : P r i n t r e s u l t .L i n e s 2 9 5 1 0 - 2 9 5 4 0 : L o o k a e a c h b i n a r y c h a r a c t e r , a n r a i s e

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

Page 266: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 266/290

2 4 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

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

S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

B i n a r y n u m b e r c o n v e r t e d t d e c i m a l .

R O U N D E RW H A T I D O E S : R o u n d s p o s i t i v e n u m b e r , a n c u t s o f a f t e r d e s i r e dn u m b e r o d e c i m a l p l a c e s .

L E V E L : I n t e r m e d i a t e

1 0 R E M * * * * * * * * * * *1 1 R E * 1 2 R E R O U N D E R1 3 R E 1 4 R E * * * * * * * * * * *1 5 R E 1 6 R E M + + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E A N U M B E R T B R O U N D E D1 9 R E P D I G I T S D E S I R E D T 2 0 R E R I G H T O D E C I M A L P O I N T2 1 0 R E M R E S U L T2 2 R E B R O U N D E D V A L U E2 3 0 R E M2 4 0 R E M2 5 0 R E M * * I N I T I A L I Z E * * 2 6 A = 5 5 . 5 3 42 7 P = 2 8 G O S U B 2 9 6 2 02 9 P R I N T3 0 E N 2 9 6 1 0 R E M * * S U B R O U T I N E * * 2 9 6 2 0 C = A + 5 . 5 * 1 0 " - ( P + l )2 9 6 3 0 B = I N T ( C * 1 0 A P ) / l 0 " P2 9 6 4 0 R E T U R N

Page 267: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 267/290

B i t s a n B y t e s 2 4

H O T U S S U B R O U T I N E

T h C o m m o d o r e 1 2 i s o m e t i m e s g r e a t d e a l m o r e a c c u r a t et h a n y o n e e d . F o e x a m p l e , y o u r c a m a g e 2 4 . 3 4 5 9 1 2 1 m i l e sp e g a l l o n , b u y o u w o u l d b h a p p y t k n o w t h a t i i c l o s e t 2 4 . 3 . T h i s s u b r o u t i n e c a b u s e d t p r o d u c e t h d e s i r e d d e g r e e o p r e c i s i o n w h i l e s t i l l r o u n d i n g t h n u m b e r s s t h a t t h f i g u r e i a a c c u r a t e a t h s i g n i f i c a n t d i g i t s r e f l e c t .

N O T E : T h c a r e t s y m b o l C i t h p r o g r a m l i s t i n g s t a n d s f o t h u p - a r r o w k e y , l o c a t e d b e t w e e n R E S T O R E a n " * o y o u rC o m m o d o r e 1 2 k e y b o a r d .

L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 6 0 : D e f i n e n u m b e r t b r o u n d e d .L i n e 2 7 0 : D e f i n e n u m b e r o d i g i t s t o r i g h t o d e c i m a l d e s i r e d .L i n e 2 8 0 : A c c e s s t h s u b r o u t i n e .L i n e 2 9 0 : P r i n t r e s u l t s .L i n e 2 9 6 2 0 : A d r o u n d i n g f a c t o r .L i n e 2 9 6 3 0 : T a k e i n t e g e r p o r t i o n o n u m b e r m u l t i p l i e d b 1

r a i s e d t p o w e r , a n d i v i d e t h a t b 1 r a i s e d t p o w e r .

Y O S U P P L Y

Y o s h o u l d d e f i n e t b t h n u m b e r t b r o u n d e d . w i l le q u a l t h n u m b e r o d i g i t s t t h r i g h t o f t h d e c i m a l p o i n t t h a ty o w a n t . T h s u b r o u t i n e w i l l r e t u r n B t h r o u n d e d v a l u e . I h a f r a c t i o n a l d e c i m a l p a r t t h a t e n d s i 0 t h w i l l n o b p r i n t e d , e v e n t h o u g h t h a t m a n y d e c i m a l p l a c e s h a v e b e e n r q u e s t e d . F o e x a m p l e , i t w d e c i m a l p l a c e s a r d e s i r e d , 5 5 . 3 4 4a n 5 5 . 3 9 9 w i l l b r e t u r n e d a s 5 5 . 3 4 a n 5 5 . 4 r e s p e c t i v e l y .S U G G E S T E D E N H A N C E M E N T S : N o n e .

R E S U L T

N u m b e r r o u n d e d a s p e c i f i e d .

Page 268: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 268/290

2 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

P R I M E N U M B E R SW H A T I D O E S ; F i n d s p r i m e n u m b e r s .

L E V E L : I n t e r m e d i a t e

1 0 R E * * * * * * * * * * * * * * * * *1 1 R E 1 2 R E P R I M E N U M B E R S1 3 R E * 1 4 0 R E M * * * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E M S U P P L I E D B U S E R1 8 R E U M A X T O S E A R C H1 9 R E R E S U L T2 0 R E L A S T : L A S T P R I M E F O U N D2 1 R E P N E X T T O C H E C K2 2 0 R E M2 3 R E * * I N I T I A L I Z E * * 2 4 0 I N P U T " H O W H I G H T O S E A R C H " ; U2 5 G O S U B 2 9 7 1 02 6 E N 2 9 7 0 0 R E * * S U B R O U T I N E * * 2 9 7 1 0 D I P R ( 5 0 0 0 )2 9 7 2 0 P R ( 1 ) = 32 9 7 3 0 P R ( 2 ) = 52 9 7 4 0 L A S T = 22 9 7 5 0 P = 2 9 7 6 0 N U = 02 9 7 7 0 I P R ( T ) < S Q R ( P ) T H E N T = T + 1 : G O T O 2 9 7 7 02 9 7 8 0 F O N = T 2 9 7 9 0 G = P / P R ( N ) - I N T ( P / P R ( N ) ) : I F G = T H E N N U = 12 9 8 0 0 N E X T2 9 8 1 0 I N U = 1 T H E N G O T O 2 9 8 5 02 9 8 2 0 L A S T = L A S T + 12 9 8 3 0 P R ( L A S T ) = P2 9 8 4 0 P R I N T2 9 8 5 0 P = P + 22 9 8 6 0 I P = > U T H E N R E T U R N2 9 8 7 0 G O T O 2 9 7 6 0

H O T U S S U B R O U T I N E

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

Page 269: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 269/290

B i t s a n B y t e s 2 5

l i s t o p r i m e n u m b e r s s m a l l e r t h a n t h n u m b e r y o s p e c i f y . I y o u h a v e t h e p a t i e n c e t w a i t f o m o r e t h a n 5 0 0 , e n l a r g e t h ea r r a y t m a k e r o o m .L I N E - B Y - L I N E D E S C R I P T I O N

L i n e 2 4 0 : A s h o h i g h t s e a r c h .L i n e 2 5 0 : A c c e s s t h e s u b r o u t i n e .L i n e 2 9 7 1 0 : D I M e n s i o n a n a r r a y t h o l d t h f i r s t 5 0 0 0 p r i m e

n u m b e r s .L i n e s 2 9 7 2 0 - 2 9 7 3 0 : T e l l t h e s u b r o u t i n e t h e f i r s t t w o p r i m e

n u m b e r s .L i n e 2 9 7 4 0 : D e f i n e l a s t n u m b e r c h e c k e d a 2 L i n e 2 9 7 7 0 : S e i t h l a s t p r i m e f o u n d i l e s s t h a n t h

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

L i n e s 2 9 7 8 0 - 2 9 8 0 0 : S e i n u m b e r i e v e n l y d i v i s i b l e .L i n e 2 9 8 1 0 : I e v e n d i v i s o r w a f o u n d , t r n e x t n u m b e r .L i n e 2 9 8 2 0 : I n o e v e n d i v i s o r i f o u n d , t h e n n u m b e r i

p r i m e .L i n e s 2 9 8 3 0 - 2 9 8 4 0 : S t o r e n e p r i m e i a r r a y a n p r i n t r

s u l t s t o s c r e e n .L i n e 2 9 8 5 0 : I n c r e m e n t t l o o k f o n e x t p r i m e .L i n e 2 9 8 6 0 : C h e c k t s e i u p p e r d e s i r e d l i m i t r e a c h e d .L i n e 2 9 8 7 0 : O t h e r w i s e , r e p e a t .

N U M B E R S O R TW H A T I D O E S : S o r t s g r o u p o n u m b e r s b s i z e .

L E V E L : I n t e r m e d i a t e

Page 270: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 270/290

2 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

1 0 R E * * * * * * * * * * * * * * *1 1 R E 1 2 R E N U M B E R S O R T1 3 R E 1 4 R E * * * * * * * * * * * * * * *1 5 R E 1 6 R E + V A R I A B L E S + 1 7 R E S U P P L I E D B U S E R1 8 R E N U N U M B E R O F I T E M S S O R T E D1 9 R E U S ( N ) : A R R A Y W I T H I T E M S2 0 0 R E M R E S U L T2 1 0 R E M S O R T E D A R R A Y2 2 0 R E M2 3 R E 2 4 0 R E M * * I N I T I A L I Z E * * 2 5 N U = 1 02 6 D I U S ( N U ) : G O S U B 2 9 6 1 02 7 F O N = T N 2 8 P R I N T U S ( N )2 9 N E X T3 0 E N 2 9 6 0 0 R E M * * S U B R O U T I N E * * 2 9 6 1 0 F O I T E M = 1 T N 2 9 6 2 0 P R I N T " E N T E R # " ; I T E M2 9 6 3 0 I N P U T U S ( I T E M )2 9 6 4 0 N E X T I T E M2 9 6 5 0 F O N = T N 2 9 6 6 0 F O N l = l T O N U - N2 9 6 7 0 A = U S ( N 1 )2 9 6 8 0 B = U S ( N 1 + 1 )2 9 6 9 0 I A < T H E N G O T O 2 9 7 2 02 9 7 0 0 U S ( N 1 ) = B2 9 7 1 0 U S ( N 1 + 1 ) = A2 9 7 2 0 N E X T N 2 9 7 3 0 N E X T2 9 7 4 0 R E T U R N

H O T U S S U B R O U T I N E

S o r t i n g l i s t o n u m b e r s i c o m m o n n e e d f o m a n y p r g r a m s . C h e c k i n g a c c o u n t f i l e s a n o t h e r g r o u p s o n u m b e r s o f t e nh a v e t b s o r t e d t b m o s t u s e f u l . T h i s r o u t i n e i a s i m p l eb u b b l e s o r t , w h i c h w i l l s o r t a n g r o u p o n u m b e r s t h a t h a v e b e e nl o a d e d i n t o a a r r a y , U S ( n ) .

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

Page 271: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 271/290

B i t s a n B y t e s 2 5

u s i n g t h b u b b l e s o r t r o u t i n e s p r e s e n t e d i t h i s b o o k . T h b u b b l es o r t i s c a l l e d b e c a u s e e a c h e n t r y i t h a r r a y i e x a m i n e d a n t h e n a l l o w e d t o r i s e u p a s t t h e o n e b e l o w u n t i l i e n c o u n t e r s" s m a l l e r " i t e m . N u m e r i c s o r t s a r e a s i e r t u n d e r s t a n d t h a ns t r i n g s o r t s , b e c a u s e s i m p l e n u m b e r c o m p a r i s o n s a r u s e d . T h a ti s 1 2 3 7 i a l w a y s l a r g e r t h a n 3 2 . 6 a n s m a l l e r t h a n 7 8 4 4 . G r a du a l l y , e a c h m e m b e r o t h l i s t " f l o a t s " u t i t p r o p e r p l a c e i t h a r r a y .

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

L I N E - B Y L I N E D E S C R I P T I O N

L i n e 2 5 0 : D e f i n e N U t h n u m b e r o u n i t s i t h a r r a y t b s o r t e d .

L i n e 2 6 0 : D I M e n s i o n t h a r r a y t p r o p e r s i z e .L i n e s 2 7 0 - 2 9 0 : P r i n t r e s u l t s .L i n e s 2 9 6 1 0 - 2 9 6 4 0 : U s e r e n t e r s e a c h a r r a y i t e m i r a n d o m

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

L i n e 2 9 6 5 0 : S t a r t l o o p f r o m t t h n u m b e r o i t e m s t b s o r t e d .

L i n e 2 9 6 6 0 : S t a r t a n e s t e d l o o p f r o m t l e s s t h a n t h n u m b e r o i t e m s t b s o r t e d .

L i n e 2 9 6 7 0 : M a k e e q u a l t t h N l t h i t e m o t h a r r a y .L i n e 2 9 6 8 0 : M a k e e q u a l t t h i t e m f o l l o w i n g i t h

a r r a y .L i n e 2 9 6 9 0 : I t h " h i g h e r " e l e m e n t , A i a l r e a d y s m a l l e r

t h a n B t h e n r e m a i n s w h e r e i i s a n t h i n n e r l o o p s t e p s o f t h n e x t v a l u e o N l L i n e s 2 9 7 0 0 - 2 9 7 1 0 : I i s m a l l e r t h a n A t h e n t h t w n u m b e r s a r s w a p p e d , w i t h m o v i n g a h e a d o n e l e m e n t a n A b e i n g p u s h e d d o w n o n e .

L i n e s 2 9 7 2 0 - 2 9 7 3 0 : T h i n n e r a n o u t e r l o o p s a r i n c r e m e n t e d .

Page 272: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 272/290

2 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

Y O S U P P L Y

Y o s h o u l d d e f i n e N U t h n u m b e r o i t e m s t b s o r t e d , a w e l l a s s u p p l y t h d a t a f o t h a r r a y , U S ( n ) .

S U G G E S T E D E N H A N C E M E N T S : N o n e

R E S U L T

L i s t o f n u m b e r s i s o r t e d b s i z e .

Page 273: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 273/290

G L O S S A R Y

A l g o r i t h m : f o r m u l a o m e t h o d f o p e r f o r m i n g a g i v e nt a s k , s u c h a M P = M I L E S / G A L L N S .

A l p h a n u m e r i c : C h a r a c t e r s t h a t a r e l e t t e r s , n u m b e r s , p u n ct u a t i o n m a r k s , o o t h e r s y m b o l s , a o p p o s e d t g r a p h i c s o r c o n t r o lc h a r a c t e r s . A l p h a n u m e r i c s i n c l u d e t h e u p p e r - a n l o w e r c a s e a l p h ab e t , a s w e l l a t h d i g i t s t a n c o m m o n p u n c t u a t i o n s y m b o l s .

A N D : B o o l e a n o p e r a t o r t h a t c o m p a r e s e a c h b i o b y t e w i t ht h c o r r e s p o n d i n g b i i a n o t h e r b y t e a n p r o d u c e s i b o t h a r e q u a l t 1

A p p e n d : T a d t t h e n o f a t a p p e n d o n f i l e o n t oa n o t h e r .

2 5

Page 274: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 274/290

2 5 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

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

I n c r e m e n t : T i n c r e a s e t h v a l u e o v a r i a b l e b 1 T h i s i a l s o c o m m o n l y u s e d a a v e r b t d e n o t e i n c r e a s i n g v a r i a b l e b a n a m o u n t , s u c h a " t i n c r e m e n t b 4 .

I n i t i a l i z e : T s e v a r i a b l e s t d e s i r e d b e g i n n i n g v a l u e a t h s t a r t o p r o g r a m o a t h b e g i n n i n g o s u b r o u t i n e . F o e x a m p l e :

1 B = 2 I N P U T3 B = B + A4 P R I N T5 G O T O 2

Y o w o u l d w a n t t i n i t i a l i z e B , a s i l i n e 1 0 , e a c h t i m e t h s u b t o t a l s h o u l d b e l i m i n a t e d a n t h a d d i t i o n s t a r t e d f r o ma g a i n .

J i f f i e : l / 6 0 t h - s e c o n d i n t e r v a l u s e d b t h C o m m o d o r e 1 2 t k e e p t r a c k o e l a p s e d t i m e .

M o d e m : M o d u l a t o r - d e m o d u l a t o r . d e v i c e t h a t c o n v e r t s t h C o m m o d o r e 1 2 8 ' s s i g n a l s t s o u n d s t h a t c a n b e t r a n s m i t t e d o v e rt e l e p h o n e l i n e s . T h m o d e m a l s o r e c e i v e s s o u n d s a n c o n v e r t st h e m b a c k f o t h C o m m o d o r e 1 2 t o u s e .M o n i t o r : T h t e l e v i s i o n - l i k e d e v i c e u s e d t d i s p l a y v i d e oi n f o r m a t i o n .

N u l l m o d e m : A a d a p t e r p l u g o c a b l e t h a t r e v e r s e s t h S E N D a n R E C E I V E l i n e s o t w R S - 2 3 2 s e r i a l i n t e r f a c e d e v i c e s .I e n a b l e s t w c o m p u t e r s t b e w i r e d d i r e c t l y t o g e t h e r t c o m m un i c a t e w i t h o u t o n e c o m p u t e r ' s S E N D s i g n a l s b e i n g s e n t t t h S E N D l i n e s o t h o t h e r a n R E C E I V E t r y i n g t R E C E I V E f r o mt h o t h e r .

N y b b l e : F o u r b i t s ; h a l f b y t e . O f t e n u s e d w h e n f e a t u r eh a o n l y 1 6 p o s s i b l e c o n d i t i o n s a n t h e r e f o r e c a b e e x p r e s s e d i f o u r b i t s i n s t e a d o t h f u l l e i g h t i b y t e . T h r e s t o t h b y t e( t h e o t h e r n y b b l e ) c a b u s e d b t h c o m p u t e r f o o t h e r d a t ar e g i s t e r s o r l e f t a r a n d o m g a r b a g e .

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

Page 275: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 275/290

G l o s s a r y 2 5 9

m e m o r y b l o c k i l o c a t e d b e t w e e n 3 0 0 0 0 a n 3 1 0 0 0 , w c a P O K Et h f i r s t l o c a t i o n i n t h a t b l o c k b e i t h e r o f t h t w o m e t h o d sf o l l o w i n g :

1 P O K E 3 0 0 0 1 , X1 O F F S E T = 3 0 0 0 02 P O K E O F F S E T + 1 , X

T h s e c o n d m e t h o d i o f t e n c l e a r e r a n c a a l s o b u s e d w h e n t h m e m o r y l o c a t i o n d e f i n e d b O F F S E T c a v a r y .

O R B o o l e a n o p e r a t o r t h a t i u s e d t c o m p a r e o n b y t ew i t h a n o t h e r o b i t - f o r - b i t l e v e l . I e i t h e r b i o t h c o r r e sp o n d i n g b i i t h e o t h e r b y t e i 1 O w i l l p r o d u c e a s t h e r e s u l t .

O s c i l l a t o r : A e l e c t r o n i c d e v i c e t h a t , i n t h C o m m o d o r e 1 2 8 ,p r o d u c e s s o u n d w h e n t h p r o p e r P O K E s a r p e r f o r m e d t t h v o l u m e a n d s o u n d r e g i s t e r s .

P a r a l l e l : m e t h o d o t r a n s f e r r i n g d a t a a e n t i r e b i a t i m e b s e n d i n g e a c h o t h e e i g h t b i t s a l o n g a s e p a r a t e p a r a l l e la d d r e s s l i n e s i m u l t a n e o u s l y . S e r i a l t r a n s f e r , o t h o t h e r h a n d ,t r a n s m i t s e a c h o t h e i g h t b i t s o n a t i m e .

P o r t : O n o t h " w i n d o w s " u s e d b t h C o m m o d o r e 1 2 t t a l k t t h o u t s i d e w o r l d . T h j o y s t i c k s s e n d i n f o r m a t i o n t t h c o m p u t e r t h r o u g h p o r t .

P r o m p t : m e s s a g e t t h c o m p u t e r u s e r a s k i n g f o i n f o r m at i o n . T h f o l l o w i n g I N P U T s t a t e m e n t i n c l u d e s a p r o m p t .

1 I N P U T " E N T E R Y O U R N A M E " ? A $

P s e u d o - r a n d o m : N u m b e r s t h a t a p p e a r t b r a n d o m b u t h a t a r e a c t u a l l y t a k e n f r o m v e r y l o n g l i s t o n u m b e r s . T h l i s ti s l o n g t h a t i t a k e s g r e a t d e a l o t i m e b e f o r e i r e p e a t s , a n s i n c e t h c o m p u t e r u s u a l l y s t a r t s a d i f f e r e n t p o s i t i o n i n t h l i s t e a c h t i m e , t h s e r i e s s e e m s t b d i f f e r e n t .

R a n d o m a c c e s s : m e t h o d o g e t t i n g d a t a , e i t h e r f r o m m e o r o f r o m d i s k , t h a t a l l o w s g o i n g d i r e c t l y t t h i n f o r m a t i o nr e q u i r e d a n u s i n g i t w i t h o u t a c c e s s i n g a n o t h e o t h e r i n f o r m at i o n i t h f i l e o m e m o r y .

Page 276: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 276/290

2 6 T H C O M M O D O R E 1 2 S U B R O U T I N E L I B R A R Y

R e a l - t i m e c l o c k : T h b u i l t - i n c l o c k i t h C o m m o d o r e 1 2 t h a t k e e p s t r a c k o e l a p s e d t i m e s i n c e t h c o m p u t e r w a t u r n e do o r s i n c e t h c l o c k w a l a s t r e s e t b t h u s e r .

R e g i s t e r : l o c a t i o n s t o r i n g s t a t u s o f s o m e t y p e . S o m et y p e s o f r e g i s t e r s a r l o c a t e d i t h C o m m o d o r e 1 2 8 ' s m i c r o p r oc e s s o r a n c a b a c c e s s e d o n l y t h r o u g h m a c h i n e l a n g u a g e . S o m em e m o r y l o c a t i o n s i t h C o m m o d o r e 1 2 p e r f o r m r e g i s t e r l i k ef u n c t i o n , t e l l i n g t h c o m p u t e r w h e t h e r c e r t a i n f e a t u r e i o o o f f , o t e l l i n g t h v o l u m e o s o u n d o s c i l l a t o r , o s o m e o t h e rs t a t u s .

R S - 2 3 2 : s e r i a l i n t e r f a c e d e v i c e t h a t a l l o w s t h e C o m m o d o r e1 2 t c o m m u n i c a t e w i t h d e v i c e s l i k e p r i n t e r s o r m o d e m s o n b i a t i m e .

S e q u e n t i a l : s e r i a l f i l e a c c e s s m e t h o d i w h i c h e a c h p i e c eo i n f o r m a t i o n i s t o r e d a f t e r a n o t h e r a n m u s t b w r i t t e n o a c c e s s e d i t h a t f a s h i o n .

S e r i a l : S e q u e n t i a l d a t a s t o r a g e o t r a n s f e r .S t r i n g d e l i m i t e r : c h a r a c t e r t h a t t h e c o m p u t e r r e c o g n i z e s

a t h " e n d " o g i v e n s t r i n g i n p u t . T h m o s t c o m m o n a r c o m m a s a n q u o t a t i o n m a r k s .

S t r i n g v a r i a b l e : v a r i a b l e t h a t c a s t o r e a l p h a i n f o r m a t i o no n l y . S t r i n g s c a i n c l u d e n u m b e r s , p u n c t u a t i o n m a r k s , a n g r a p hi c s , b u t h c o m p u t e r r e c o g n i z e s t h e m o n l y a c h a r a c t e r s , n o a v a l u e s .

S u b r o u t i n e : p r o g r a m m o d u l e t h a t p e r f o r m s s p e c i f i c t a s k ,c a l l e d t h r o u g h t h G O S U B s t a t e m e n t a n e n d i n g w i t h R E T U R N ,w h i c h d i r e c t s p r o g r a m c o n t r o l b a c k t t h i n s t r u c t i o n f o l l o w i n gt h G O S U B .

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

U p l o a d : T o s t o r e f i l e f r o m d i s k o t a p e i t h C o m m o d o r e1 2 8 ' s m e m o r y b u f f e r a n t h e n s e n d i t h r o u g h t e l e c o m m u n i c at i o n s t a n o t h e r c o m p u t e r , w h i c h c a t h e n w r i t e i t t a p e o d i s kf o p e r m a n e n t s t o r a g e ( d o w n l o a d i n g ) .

V o i c e : O n o t h r e e o s c i l l a t o r s i t h C o m m o d o r e 1 2 t h a tp r o d u c e s o u n d s .

Page 277: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 277/290

I N D E X

A b b r e v i a t i o n s , 5 7 - 6 0 f i l e s , 6 A c c e l e r a t e d d e p r e c i a t i o n , 3 6 - 3 7 g a m e w r i t i n g , 9 A c c e s s i n g t h l i b r a r y , 8 - P E E K i n g / P O K i n g C o m m o d o r eA l a r m s r e p l a c e m e n t s , 9

s o u n d o f 2 0 1 - 2 0 2 A u t o m o b i l e s , M P c a l c u l a t i o n ,b u r g l a r a l a r m , 2 0 0 - 2 0 1 5 5 - 5 7

A l d i r e c t i o n s j o y s t i c k r o u t i n e s4 0 - c o l u m n , 1 4 0 - 1 4 28 0 - c o l u m n , 1 3 0 - 1 3 2

A l p h a b e t i z i n gs h e l l - M e t z n e r s o r t , 9 9 - 1 0 1s t r i n g s o r t , 9 6 - 9 9

A N D , B o o l e a n o p e r a t o r s , 2 3 6 - 2 3 7 B A S I C , 7 . 0 , 1 A n n u i t y w i t h d r a w , 3 1 - 3 3 a d v a n t a g e s o f 8 A r r a y l o a d e r , 1 0 1 - 1 0 4 E X C H A N G E , 8 A S C I I , 9 0 - 9 1 I N S T R , 8 4 - 8 5

2 6

Page 278: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 278/290

2 6 I N D E X

B A S I C ( c o n t i n u e d )S P A C E $ , 8 S T R I N G $ , 8

B i n a r y t d e c i m a l , 2 4 6 - 2 4 8B i d i s p l a y e r , 2 3 9 - 2 4 1B i t - m a p d r a w i n g , 1 7 5 - 1 7 8B i t - m a p p e d m o d e , 1 7 B i t o n e , 2 4 1 - 2 4 4B i t s / b y t e s , 2 3 5 - 2 5 4

b i n a r y t d e c i m a l 2 4 6 - 2 4 8b i d i s p l a y e r , 2 3 9 - 2 4 1b i t t o o n e , 2 4 1 - 2 4 4b i t t o z e r o , 2 4 3 - 2 4 4B o o l e a n o p e r a t o r s , 2 3 6 - 2 3 7n u m b e r s o r t , 2 5 1 - 2 5 4p e e k b i t , 2 3 8 - 2 3 9p r i m e n u m b e r s , 2 5 0 - 2 5 1r e v e r s e b i t , 2 4 4 - 2 4 6r o u n d e r , 2 4 8 - 2 4 9

B o m b d r o p p i n g , s o u n d o f 2 0 4 - 2 0 5B o o l e a n o p e r a t o r s , 2 3 6 - 2 3 7

A N D , 2 3 6 - 2 3 7N Q T , 2 3 6 - 2 3 7O R 2 3 6 , 2 3 O ( X O R ) , 2 3

B O X , g r a p h i c s , 1 7 5 , 1 8 B u b b l e s o r t , 9 7 - 9 8 , 2 5 B u s i n e s s / f i n a n c i a l s u b r o u t i n e s , 1 1 - 6 9

a b b r e v i a t i o n s , 5 7 - 6 0a n n u i t y w i t h d r a w , 3 1 - 3 3d a t e s

d a t e f o r m a t t e r , 4 3 - 4 5d a c o v e r t e r , 4 8 - 5 0n u m b e r o f d a y s , 4 5 - 4 8

d e p o s i t sd e p o s i t a m o u n t , 2 9 - 3 1f u t u r e v a l u e o s i n g l e d e p o s i t ,

2 5 - 2 7r e g u l a r , 2 7 - 2 9y e a r s t r e a c h d e s i r e d v a l u e ,

2 3 - 2 5d e p r e c i a t i o n

a m o u n t o f 3 8 - 4 0r a t e o f 3 5 - 3 8

l o a n a m o u n t , 1 3 - 1 5m e n u t e m p l a t e , 5 0 - 5 2M P ( m i l e s p e g a l l o n ) , 5 5 - 5 7n u m b e r o p a y m e n t s , 1 8 - 2 0

p a y m e n t a m o u n t , 1 6 - 1 8r a t e o r e t u r n , 3 3 - 3 5r e m a i n i n g b a l a n c e , 2 0 - 2 2s e q u e n t i a l f i l e s , 6 0 - 6 9r e a d f r o m d i s k , 6 7 - 6 9

w r i t e t o d i s k , 6 5 - 6 7t e m p e r a t u r e c a l c u l a t i o n , 4 1 - 4 2t i m e a d d e r , 5 3 - 5 5

B y t e s . S e B i t s / b y t e s .

C a r d s , d e a l c a r d s , 1 6 4 - 1 6 7C a r e t s y m b o l D 1 3 2 4 4 , 2 4 C a s e c o n v e r t e r , 8 0 - 8 1C e l s i u s , t e m p e r a t u r e c a l c u l a t i o n ,

4 1 - 4 2C e n t e r s t r i n g , 1 0 6 - 1 0 8C h a r a c t e r s

p r o g r a m m i n g c h a r a c t e r s , 1 8 2 - 1 8 6R O s t o r a g e , 1 8 4 - 1 8 5C H R $ v a l u e , 8 9 - 9 2C I R C L E , g r a p h i c s , 1 7 5 , 1 8 C l o c k t i c k i n g , s o u n d o f 2 1 1 - 2 1 2C M D , d a t a f i l e s , 6 C o i n f l i p p i n g , a n i m a t e d , 1 1 5 9 - 1 6 1C o l o r c h e c k e r , 2 2 1 - 2 2 3 (C o l o r d r a w i n g j o y s t i c k r o u t i n e s

4 0 - c o l u m n , 1 4 2 - 1 4 58 0 - c o l u m n , 1 3 2 - 1 3 5C O L O R s o u r c e s , g r a p h i c s , 1 7 4 - 1 7 5C o m m o d o r e 1 2 o r g a n , 1 9 3 - 1 9 8" C O M M O D O R E " s t r i n g s , 8 4 - 8 5C o m p u t e r s o u n d , 2 0 6 - 2 0 8C u r s o r m o v e r , 2 2 9 - 2 3 1

D a t a f i l e s , C M D , 6 d e v i c e n u m b e r s , 6 1 - 6 4d i s k f i l e s , 6 D O P E N , 6 3 6 D S A V E , 6 L O A D , 6 3 - 6 4

Page 279: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 279/290

I n d e x 2 6

l o g i c a l f i l e n u m b e r , 6 O P E N , 6 1 6 3 6 r a n d o m a c c e s s f i l e s , 6 0 6 4 - 6 5S A V E , 6 s e c o n d a r y a d d r e s s e s , 6 2 6 s e q u e n t i a l f i l e s , 6 0 - 6 9S e a l s o S e q u e n t i a l f i l e s .

D a t a i n p u t , 7 1 - 8 1c a s e c o n v e r t e r , 8 0 - 8 1l e t t e r i n p u t , 7 7 - 7 9l i n e i n p u t , 7 2 - 7 4n u m b e r i n p u t , 7 4 ^ 7 7s t r i n g d e l i m i t e r s , 7 2 7

D a t e sd a t a f o r m a t t e r , 4 3 - 4 5d a c o n v e r t e r , 4 8 - 5 0n u m b e r o f d a y s , 4 5 - 4 8

D e a l c a r d s , 1 6 4 - 1 6 7D e c o d e s t r i n g , 1 1 2 - 1 1 4D e l a y l o o p , 1 6 7 - 1 6 9D e p o s i t s

d e p o s i t a m o u n t , 2 9 - 3 1f u t u r e v a l u e o s i n g l e d e p o s i t ,

2 5 - 2 7r e g u l a r , 2 7 - 2 9y e a r s t r e a c h d e s i r e d v a l u e ,

2 3 - 2 5D e p r e c i a t i o n

a m o u n t o f 3 8 - 4 0r a t e o f 3 5 - 3 8s t r a i g h t l i n e , 3 5 - 3 8

D e s p a c e r , 1 0 4 - 1 0 6D e v i c e n u m b e r s , d a t a f i l e s ,

6 1 - 6 4D i c e r o l l i n g , n - s i d e d d i c e ,

1 6 2 - 1 6 4D i s a s t e r s o u n d , 2 0 8 - 2 0 9D O P E N , d a t a f i l e s , 6 3 6 D R A W , g r a p h i c s , 1 7 D r a w i n g

c o l o r d r a w i n g4 0 - c o l u m n j o y s t i c k , 1 4 2 - 1 4 58 0 - c o l u m n j o y s t i c k , 1 3 2 - 1 3 5

k e y b o a r d d r a w i n g , 1 4 9 - 1 5 2S e a l s o G r a p h i c s .

D S A V E , d a t a f i l e s , 6

E n c o d e , s t r i n g , 1 1 0 - 1 1 2E n c r y p t i n g d a t ad e c o d e s t r i n g , 1 1 2 - 1 1 4e n c o d e s t r i n g , 1 1 0 - 1 1 2s u b s t i t u t i o n c i p h e r , 1 1

E X C H A N G E , 8 s t r i n g s , 8 5 , 9 2 - 9 4

E x t e n t , 6

F a h r e n h e i t , t e m p e r a t u r e c a l c u l a t i o n ,4 1 - 4 2

F l u s h r i g h t s t r i n g , 1 0 8 - 1 0 9F l y i n g s a u c e r , s o u n d o f 1 9 9 - 2 0 0F u n c t i o n k e y s

c h a n g e t C o m m o d o r e 6 m o d e ,2 2 5 — 2 2 7

r e d e f i n i n g , 2 2 3 - 2 2 5u t i l i t y k e y s , 2 2 7 - 2 2 9

F u t u r e v a l u e , o f s i n g l e d e p o s i t ,2 5 - 2 7

G a m e r o u t i n e sc o i n f l i p p i n g , a n i m a t e d , 1 5 9 - 1 6 1d e a l c a r d s , 1 6 4 - 1 6 7d e l a y l o o p , 1 6 7 - 1 6 9d i c e r o l l i n g , n - s i d e d , d i c e ,

1 6 2 - 1 6 4j o y s t i c k r o u t i n e s , 1 2 3 - 1 4 7k e y b o a r d d r a w i n g s u b r o u t i n e ,

1 4 9 - 1 5 2k e y b o a r d j o y s t i c k , 1 4 7 - 1 4 9p a d d l e s , 1 5 2 - 1 5 4r a n d o m i n t e g e r , 1 5 5 - 1 5 7r a n d o m s e t s , 1 5 7 - 1 5 9S e a l s o J o y s t i c k r o u t i n e s .

G a m e w r i t i n g , A S C I I , 9 G l o b a l s e a r c h , 1 1 7 - 1 1 9

Page 280: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 280/290

2 6 I N D E X

G R A P H I C c o m m a n d , g r a p h i c s , 1 7 G r a p h i c s , 1 7 1 - 1 8 9

b i t - m a p d r a w i n g , 1 7 5 - 1 7 8b i t - m a p p e d m o d e , 1 7 B O X , 1 7 5 , 1 8 C O L O R s o u r c e s , 1 7 4 - 1 7 5D R A W , 1 7 G R A P H I C c o m m a n d , 1 7 g r a p h i c s m o d e s , 1 7 3 - 1 7 4g r a p h i c s p l o t t i n g , 1 7 8 - 1 8 2C I R C L E , 1 7 5 , 1 8 P A I N T , 1 7 p r o g r a m m i n g c h a r a c t e r s , 1 8 2 - 1 8 6S C A L E , 1 7 s h a p e m o v e r , 1 7 8 - 1 8 9

v e r t i c a l m o v e m e n t , 1 3 9 - 1 4 08 0 - c o l u m n , 1 2 3 - 1 2 5

a l d i r e c t i o n s , 1 3 0 - 1 3 2c o l o r d r a w i n g , 1 3 2 - 1 3 5h o r i z o n t a l m o v e m e n t , 1 2 3 - 1 2 8v e r t i c a l m o v e m e n t , 1 2 8 - 1 3 0

K e y b o a r d d r a w i n g s u b r o u t i n e s ,1 4 9 - 1 5 2

K e y b o a r d j o y s t i c k , 1 4 7 - 1 4 9

H e l i c o p t e r , s o u n d o f 2 0 5 - 2 0 6H o r i z o n t a l m o v e m e n t j o y s t i c k

r o u t i n e s4 0 - c o l u m n , 1 3 5 - 1 3 88 0 - c o l u m n , 1 2 3 - 1 2 8H O T U S I T s u b r o u t i n e t e x t ,

I n i t i a l i z a t i o n s e c t i o n ,I n p u t . S e D a t a i n p u t .I n s e r t s t r i n g , 8 7 - 8 9I N S T R , 8 4 - 8 5

J i f f i e , 2 1 J o y s t i c k r o u t i n e s

4 0 - c o l u m n , 1 3 5 - 1 4 7a l d i r e c t i o n s , 1 4 0 - 1 4 2c o l o r d r a w i n g , 1 4 2 - 1 4 5h o r i z o n t a l m o v e m e n t , 1 3 5 - 1 3 8t w j o y s t i c k s , 1 4 5 - 1 4 7

L e t t e r sc a s e c o n v e r t e r , 8 0 - 8 1l e t t e r i n p u t , 7 7 - 7 9

L E V E L , s u b r o u t i n e t e x t ,L I N E - B Y - L I N E D E S C R I P T I O N ,

s u b r o u t i n e t e x t ,L i n e i n p u t , 7 2 - 7 4L O A D , d a t a f i l e s , 6 3 - 6 4L o a n s

l o a n a m o u n t , 1 3 - 1 5n u m b e r o p a y m e n t s , 1 8 - 2 0p a y m e n t a m o u n t 1 6 - 1 8r e m a i n i n g b a l a n c e , 2 0 - 2 2

L o g i c a l f i l e n u m b e r , d a t a f i l e s , 6

M e n u t e m p l a t e , 5 0 - 5 2M e r g i n g ,M o v e m e n t

j o y s t i c k r o u t i n e s , 1 2 3 - 1 3 2 ,1 3 5 - 1 4 2 , 1 4 5 - 1 4 7

k e y b o a r d j o y s t i c k , 1 4 7 - 1 4 9p a d d l e s , 1 5 2 - 1 5 4M P ( m i l e s p e g a l l o n ) , 5 5 - 5 7

M u s i c , 1 9 1 - 1 9 2C o m m o d o r e 1 2 o r g a n , 1 9 3 - 1 9 8

Page 281: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 281/290

I n d e x 2 6

M u s i c s y n t h e s i z e r c h i p , 1 9 1 - 1 9 2P L A Y , 1 9 S O U N D , 1 9 s o u n d e n v e l o p e , 1 9 V O L , 1 9 w a v e f o r m s p e c i f i c a t i o n s f o

v o i c e s , 1 9 S e a l s o S o u n d s .

P r o g r a m k e y s , r e d e f i n i n g f u n c t i o nk e y s , 2 2 3 - 2 2 5

P r o g r a m t r a n s f e r , 2 3 1 - 2 3 3P r o g r a m m i n g c h a r a c t e r s , 1 8 2 -1 8

N O T , B o o l e a n o p e r a t o r s , 2 3 6 , 2 3 N - s i d e d d i c e , 1 6 2 - 1 6 4N u m b e r i n p u t , 7 4 - 7 7N u m b e r o p a y m e n t s , 1 8 - 2 0N u m b e r s

b i n a r y t d e c i m a l , 2 4 6 - 2 4 8p r i m e n u m b e r s , 2 5 0 - 2 5 1r a n d o m i n t e g e r , 1 5 5 - 1 5 7r a n d o m s e t s , 1 5 7 - 1 5 9r o u n d e r , 2 4 8 - 2 4 9

O P E N , d a t a f i l e s , 6 1 , 6 3 , 6 O R B o o l e a n o p e r a t o r s , 2 3 6 , 2 3 O ( X O R ) , B o o l e a n o p e r a t o r s ,

2 3

R a n d o m a c c e s s f i l e s , 6 0 6 4 - 6 5

R a n d o m i n t e g e r , 1 5 5 - 1 5 7R a n d o m s e t s , 1 5 7 - 1 5 9R a t e o f r e t u r n , 3 3 - 3 5R e a l - t i m e c l o c k , 2 1 4 ^ 2 2 1c l o c k s e t t e r , 2 1 5 - 2 1 7

e l a p s e d t i m e , 2 1 7 - 2 1 9t i m e r , 2 1 9 - 2 2 1

R e g u l a r d e p o s i t s , 2 7 - 2 9R e m a i n i n g b a l a n c e , 2 0 - 2 2R E M a r k s e c t i o n ,R e p l a c e s t r i n g , 8 5 - 8 7R E S U L T ,

s u b r o u t i n e t e x t ,R e t u r n , r a t e o f 3 3 - 3 5R e v e r s e b i t , 2 4 4 - 2 4 6R O s t o r a g e , c h a r a c t e r s , 1 8 4 - 1 8 5R o u l e t t e w h e e l , s o u n d o f 2 0 9 -

2 1 R o u n d e r , 2 4 8 - 2 4 9R S - 2 3 2 p o r t , p r o g r a m t r a n s f e r ,

2 3 1 - 2 3 3

P a d d l e s , 1 5 2 - 1 5 4P A I N T , g r a p h i c s , 1 7 P a y m e n t a m o u n t , 1 6 - 1 8P e e k b i t , 2 3 8 - 2 3 9P E E K i n g , 9 1 1 3 7 - 1 3 8P i x e l s , 1 7 P l a n e e n g i n e s , s o u n d o f 2 0 2 - 2 0 4P L A Y , m u s i c , 1 9 P O K i n g , 9 1 1 3 7 - 1 3 8P r i m e n u m b e r s , 2 5 0 - 2 5 1P r o g r a m f i l e , d e f i n i t i o n o f 6

S A M P L E V A L U E S , s u b r o u t i n et e x t ,

S A V E , d a t a f i l e s , 6 S C A L E , g r a p h i c s , 1 7 S e c o n d a r y a d d r e s s e s , d a t a f i l e s , 6 2

6 S e q u e n t i a l f i l e s , 6 0 - 6 9

d i s a d v a n t a g e o f 6 r e a d f r o m d i s k , 6 7 - 6 9w r i t e t o d i s k , 6 5 - 6 7

Page 282: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 282/290

2 6 I N D E X

S h a p e m o v e r , 1 8 7 - 1 8 9S h e l l - M e t z n e r s o r t , 9 9 - 1 0 1S i r e n , s o u n d o f 1 9 8 - 1 9 9S o r tb u b b l e s o r t , 9 7 - 9 8

n u m b e r s o r t , 2 5 1 - 2 5 4s h e l l s o r t , 9 9 - 1 0 1s t r i n g s o r t , 9 6 - 9 9

S O U N D , m u s i c , 1 9 S o u n d s

a l a r m s , b u r g l a r a l a r m , 2 0 0 -2 0

b o m b d r o p p i n g , 2 0 4 - 2 0 5c l o c k t i c k i n g , 2 1 1 - 2 1 2C o m m o d o r e 1 2 o r g a n , 1 9 3 -

1 9 c o m p u t e r s o u n d , 2 0 6 - 2 0 8d i s a s t e r s o u n d , 2 0 8 - 2 0 9f l y i n g s a u c e r , 1 9 9 - 2 0 0h e l i c o p t e r , 2 0 5 - 2 0 6p l a n e e n g i n e s , 2 0 2 - 2 0 4P L A Y , 1 9 r o u l e t t e w h e e l , 2 0 9 - 2 1 0s i r e n , 1 9 8 - 1 9 9S O U N D , 1 9 V O L , 1 9

S P A C E $ , 8 S p a c e s , d e s p a c e r , 1 0 4 - 1 0 6S p r i t e s , 1 8 S t r a i g h t - l i n e d e p r e c i a t i o n , 3 5

3 S T R I N G $ , 8 S t r i n g s , 8 3 - 1 1 9

a r r a y l o a d e r , 1 0 1 - 1 0 4c e n t e r s t r i n g , 1 0 6 - 1 0 8C H R $ v a l u e , 8 9 - 9 2" C O M M O D O R E , " 8 4 - 8 5d e c o d e s t r i n g , 1 1 2 - 1 1 4d e l i m i t e r s , 7 2 7 d e s p a c e r , 1 0 4 - 1 0 6e n c o d e s t r i n g , 1 1 0 - 1 1 2e x c h a n g e , 8 5 9 2 - 9 4f l u s h r i g h t s t r i n g , 1 0 8 -

1 0 g l o b a l s e a r c h , 1 1 7 - 1 1 9i n s e r t s t r i n g , 8 7 - 8 9I N S T R , 8 4 - 8 5r e p l a c e s t r i n g , 8 5 - 8 7

s o r ts h e l l - M e t z n e r s o r t , 9 9 - 1 0 1s t r i n g s o r t , 9 6 - 9 9

S T R I N G $ , 8 5 9 5 - 9 6w o r d c o u n t e r , 1 1 4 - 1 1 7S u b r o u t i n e t e x tH O T O U S E I T

L E V E L ,L I N E - B Y - L I N E D E S C R I P T I O N ,R E S U L T ,S A M P L E V A L U E S ,S U G G E S T E D E N H A N C E M E N T S ,u s o f 5 - W H A T I D O E S ,

S u b r o u t i n e sa c c e s s i n g t h l i b r a r y , 8 - i n i t i a l i z a t i o n s e c t i o n ,m e r g i n g ,R E M a r k s e c t i o n ,R E S U L T ,S U P P L I E D B U S E R ,v a r i a b l e n a m e s ,

S u b s t i t u t i o n c i p h e r , e n c r y p t i n gd a t a , 1 1

S U G G E S T E D E N H A N C E M E N T S ,s u b r o u t i n e t e x t ,

S U P P L I E D B U S E R ,S W A P , E X C H A N G E r e p l a c e m e n t s ,

8 5 9 2 - 9 4

T e m p e r a t u r e c a l c u l a t i o n , 4 1 - 4 2T e r m i n a l , B A S I C d u m b t e r m i n a l

p r o g r a m , 2 3 3 - 2 3 4T i m e

j i f f i e , 2 1 r e a l - t i m e c l o c k , 2 1 4 - 2 2 1

T i m e a d d e r , 5 3 - 5 5T o g g l e , 2 3 T w j o y s t i c k s , j o y s t i c k r o u t i n e s ,

4 0 - c o l u m n , 1 4 5 - 1 4 7

Page 283: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 283/290

Page 284: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 284/290

Page 285: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 285/290

A B O U T T H A U T H O Rf o r m e r a s s o c i a t e e d i t o r o R U N , l e a d i n g p u b l i c a t i o n f o

C o m m o d o r e 1 2 u s e r s , D a v i d D B u s c h h a w r i t t e n s e v e n b o o k sa b o u t t h C o m m o d o r e l i n e o c o m p u t e r s . H h a a l s o p u b l i s h e dm o r e t h a n 3 0 0 a r t i c l e s o c o m p u t e r - o r i e n t e d t o p i c s f o P e r s o n a lC o m p u t i n g , C r e a t i v e C o m p u t i n g , I n t e r f a c e A g e , a n a d o z e n o t h e rp u b l i c a t i o n s . B u s c h i a l s o c o n t r i b u t i n g e d i t o r a n m o n t h l yc o l u m n i s t f o r f i v e o t h o s e m a g a z i n e s , a n T h C o m m o d o r e 1 2 S u b r o u t i n e L i b r a r y i h i e i g h t e e n t h b o o k . S o r r y A b o u t t h E x p l os i o n : H u m o r o u s G u i d e t C o m p u t e r s , a b o o k o c o m p u t e r h u m o rb B u s c h , w a n o m i n e e f o b e s t c o m p u t e r - o r i e n t e d f i c t i o n o 1 9 8 5 i t h C o m p u t e r P r e s s A s s o c i a t i o n c o m p e t i t i o n .

f u l l - t i m e w r i t e r s i n c e 1 9 6 5 , B u s c h ' s c a r e e r h a i n c l u d e d w o r ka n e w s p a p e r r e p o r t e r - p h o t o g r a p h e r , c o l l e g e s p o r t s i n f o r m at i o n d i r e c t o r , p h o t o - p o s i n g i n s t r u c t o r f o B a r b i z o n - a f f i l i a t e dm o d e l i n g a g e n c y , a n d a n a c c o u n t e x e c u t i v e f o N e Y o r k - b a s e dp u b l i c r e l a t i o n s f i r m . H i a r t i c l e s h a v e a p p e a r e d i p u b l i c a t i o n sa d i v e r s e a A d a m , P e t e r s e n ' s P h o t o G r a p h i c , I n c o m e O p p o r t u n i t i e s ,a n W r i t e r ' s Y e a r b o o k .

Page 286: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 286/290

Page 287: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 287/290

A V A I L A B L E N O F O Y O U R C O M M O D O R E 1 2

A w a r d - W i n n i n g S o f t w a r e f r o mB a n t a m E l e c t r o n i c P u b l i s h i n g

B a n t a m ' s s o p h i s t i c a t e d ,s t a t e - o f - t h e - a r t i n t e r a c t i v ef i c t i o n w i l l i n t r i g u e a n c h a l l e n g e y o u . T r y :

T H F O U R T HP R O T O C O L

a n S H E R L O C K

H O L M E SI

" A N O T H E R B O W "

Y o c a e x p l o r e t h u n c h a r t e d t e r r i t o r i e s o y o u r o w m i n d w i t h t h i sf a s c i n a t i n g , i n n o v a t i v ep a i r o p r o g r a m s ( o o n d i s k ) :

K N O W Y O U RO W I . Q . /K N O W Y O U RO W P E R S O N A L I T Y

Y o u n g e r c o m p u t e r e n t h us i a s t s w i l l s p e n d h o u r sw i t h B a n t a m ' s a b s o r b i n gM i c r o W o r k s h o p S e r i e sa n C h o o s e Y o u r O w A d v e n t u r e ® S e r i e s -p r o g r a m s t h a t m a k el e a r n i n g f u n :

R O A D R A L L YU . S . A

( A g e s 1 a n u p C R E A T I V E

C O N T R A P T I O N S( A g e s a n u p

F A N T A S T I CA N I M A L S

( A g e s t 9 E S C A P E ( C Y O A )

( A g e s 1 a n u p a n

T H C A V E O T I M E( C Y O A )

( A g e s 1 a n u p

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

C o m m o d o r e s o f t w a r e i s o l d , o c a l l B a n t a md i r e c t a 8 0 0 - 2 2 3 - 6 8 3 4 e x t . 4 7 a n o r d e r t h e m .( N . Y . N J r e s i d e n t s c a l l 2 1 2 - 7 6 5 - 6 5 0 0 e x t . 4 7 9 . )

C o m m o d o r e S o f t w a r e f r o m B a n t a m .

B N T A MS O F T W A R E

Page 288: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 288/290

Page 289: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 289/290

Page 290: The Commodore 128 Subroutine Library

8/6/2019 The Commodore 128 Subroutine Library

http://slidepdf.com/reader/full/the-commodore-128-subroutine-library 290/290