PROGRAMS
FOR THE
BY TIMOTHY ORR KNIOHT, PROORAMS BY DARREN LqBATT
No. 1726 $14.95
BASIC PROGRAMS
FOR THE
ATARI
600XL & 800XL
BY TIMOTHY ORR KNIGHT, PROGRAMS BY DARREN LoBATT
TAB
TAB BOOKS Inc.
BLUE RIDGE SUMMIT PA 17214
To my grandparents, Wiltiam T. and Willie Lee Rucker and Detos L. and Ruth V. Knight, whose heritage, strength, and wisdom have enriched my life.
ATARI® is a registered trademark, and 600XL/" 800XU™ and AtariWriter™ are trademarks of Atari, Inc.
FIRST EDITION
FIRST PRINTING
Copyright © 1984 by TAB BOOKS Inc.
Printed in the United States of America
Reproduction or publication of the content in any manner, without express permission of the publisher, is prohibited. No liability is assumed with respect to the use of the information herein.
Library of Congress Cataloging in Publication Data
Knight, Timothy Orr.
BASIC programs for the ATARI 600XL and 800XL.
Includes index.
1. Atari 600XL (Computer)— Programming. 2. Atari 800XL (Computer) — Programming. 3. Basic (Computer program language) I. LaBatt, Darren. II. Title. III. Title: B.A.S.I.C. programs for the Atah six hundred XL and eight hundred XL. QA76.8.A82K65 1984 001.64'25 83-24243 ISBN 0-8306-0726-9 ISBN 0-8306-1726-4 (pbk.)
Cover photograph courtesy of Atari, Inc.
Contents
Introduction v
1 Programming with Your ATARI Computer 1
The Format of This Book— The Programs— Using This Book
2 Sound and Music Programs 7
Song Library — Sound Maker— Sound Effects Library- Music Creator- Using Sounds and Music
3 Educational Software 27
History Quiz— Spelling Tester— French Tutor— States and Capitals — Learning the Easy Way
4 Math and Your Computer 49
Calculator — Basic Skills Check-Up— Geometry — Length Converter
5 Graphics Programs for the ATARI 69
Terms You Need to Know— Colorbar— Shapes— Drawer- Graph
6 Games 85
Guess My Number— Simon Says — Blackjack
7 Creating Your Own Programs 101
The Useful Computer— Getting and Developing the Idea— Programming— Debugging— Making Programs and Money with Your ATARI— The Future of Computers
Glossary 116
Index 119
other TAB Books by the Authors
No. 1706 Using and Programming tlie ADAM'", including Ready-to-Run Programs (by Timothy Orr Knight) No. 1 71 6 Basic BASIC Programs for the ADAM™
Introduction
This book is designed to help you learn more about your ATARI 600XL or 800LX home computer, provide you with a number of programs that will be useful to you now or in the near future, and demonstrate to you how a program evolves from start to finish. The "method of teaching" in this book, however, is not a descrip- tion of the BASIC language, nor is it a summary of how BASIC works and how you may use it. This book is a collection of programs for your ATARI home computer. By using these pro- grams, you will learn the things mentioned above.
When you are reading this book, you "participate" by typing in the program lines as they are shown to you. Before you type a new program into your ATARI, type NEW followed by (as al- ways) a press of the <RETURN> key. This will prepare the computer for your program. Then you can begin reading about the program, how it was made, and what the lines mean as you enter them into the machine. When you have finished typing in the program , you will have a ready-to-run piece of software.You will also know how that program works.
By the time you reach the end of this book, I hope you will have accomplished three things:
■ You will have finished typing in all 20 programs contained in this book, so that you can use them later and perhaps modify them for your own purposes.
■ You will understand how each of the programs works and how it was developed into a working piece of software.
■ You will comprehend the method by which a program is made, from idea to completion.
As you read this book, keep in mind that this should be a learning experience as well as an entertaining one. You'll soon discover that these two elements combine to Increase your experience and your knowledge of the ATARI home computers.
Chapter 1
Programming with Your ATARI Computer
This is a book designed to help you in a number of ways. First of all, it is a book full of useful, educational, and entertaining pro- grams which will be in ready-to-run form once you have pur- ased this book. In fact, with this book you are also getting a large numt^er of programs which would normally cost you quite a bit of money at a software store. Second, this is a book which will help teach you how to use your ATARI home computer effectively, since you are the person who will be typing in the programs, learning about the programs as you type them into the computer, and running these programs to see the result of your efforts. And, last, this book is intended to teach you a method of program- ming and explain how you can make your own programs— and perhaps even sell them for a profit.
To begin, let's take a look at the setup or format of the programs and instructions within it. This format is easy to under- stand and was designed to help programmers at any level, beginning or more advanced, to understand the contents of this book.
THE FORMAT OF THIS BOOK
This book centers around the 20 programs it contains. Each is thoroughly explained; you will find three types of explanations for each program. First of all, I will explain the purpose of pro- gram lines as I introduce them to you. Then you should type
1
them into the computer. Don't use the program until you have completely finished typing It into the computer, and understand how it works. Another explanation provided Is the explanation of the important lines within the program. I will tell you the main sets of program lines and will briefly describe the purpose of that group of lines. Finally, I will describe the purpose of each of the variables in the program.
To illustrate this more clearly, let's assume that I have made a very simple program for the book, as shown below:
1 0 REM THIS PROGRAM SAYS HELLO TO A PERSON
20 PRINT'HI THERE. WHAT IS YOUR NAME"-
30 INPUT NAMES
40 PRINT'HELLO, ";NAME$
50 GOTO 20
This is an extremely simple program, but it will serve our purposes for this illustration. Now that I have created this pro- gram, I would describe it to you in the book in a format that might look like this:
This is a simple program which you may use to let people become familiar and feel more at ease with the ATARI home computer. To begin the program, type in the REMark statement to state the purpose of the program:
10 REM THIS PROGRAM SAYS HELLO TO A PERSON
Next, the computer will print its greeting and accept input from a person to find out their name.
20 PRINT HI THERE. WHAT IS YOUR NAME"- 30 INPUT NAMES
Then the computer will greet that person by name and repeat the whole "welcoming process" by going back to line 20:
40 PRINT HELLO, ";NAME$ 50 GOTO 20
You might want to expand on this program by program- ming the computer to get more information about the person, or
make comments such as "YOU HAVE A NICE NAME" or 'YOUR BIRTHDAY IS LATE IN THE YEAR, ISN'T IT?" based on the input from the user.
Important Line Numbers in HELLO
10 Tells the purpose of the program
20-30 Greets the person and gets name
40 Greets the person by name
50 Goes back to line 20
Important Variables in HELLO NAMES Receives the name of the person
From the above example, you can get a good idea as to how the book is set up. You wili learn how the program was made, what purpose each of the lines serves, and what purpose the variables serve. As you might guess, this not only provides you with a good program, which you can easily understand and modify for your own purposes, but it is also an excellent and enjoyable way to learn programming.
THE PROGRAMS
To give you an idea of what you have to look forward to in this book, here are the 19 other programs, with a brief descrip- tion of each.
Sounds and Music
Song Library. This is a collection of four songs for your ATARI to play, including "The Caisson Song," "Frere Jacques," "My Bonnie," and Chopin's fanfas/e impromptu.
Sound Maker. Using your ATARI'S four voices, you can create your own sounds with this program.
Sound Effects Library. This program provides a collection of effects for your ATARI to play, including lasers, alarms, gun- shots, and spaceship blast-off.
Music Creator. Writing music on your ATARI Is easier with this program, which allows you to input notes and their lengths.
Education French Tutor. This is a tutorial program which teaches you
and tests you on a vocabulary of simple French words.
States and Capitals, Learn states and capitals by matching them in this program, which also finds information for you.
History Quiz. Who was Herodotus? Find out with this pro- gram, which tests you on various events and people in history.
Spelling Tester. Pick the incorrect spelling of a word from the possibilities presented by this useful program.
Mathematics
Geometry. Find the answer to 16 kinds of geometry prob- lems, such as areas of figures and volumes of solids, with this handy program.
Calculator. Find answers to basic math, trigonometric, and square root problems using this program, the "computer cal- culator."
Basic Skills Checkup. Test yourself on addition, subtraction, and multiplication.
Length Converter. Use this program to convert from metric to "standard," or from any metric or standard unit to any other metric or standard unit.
Graphics
Drawer. Use the computer screen as a drawing easel for your visual creations.
Graph. The computer makes a line graph of data you supply to the program.
Shapes. This program shows you some of the shapes the ATARI can make and describes how they were made.
Colorbar. Learn the effects of luminance (brightness) and hue (color) as you create a wide assortment of colors on the screen.
Games
Blackjack. Play this classic against the computer.
Guess My Number. This is a simple game which teaches you a lot about how the computer's random number generator oper- ates.
Simon Says. Memorize as many colors and sounds as you can to repeat to the computer.
These programs will get you off to a good start on making your own programs, and will also provide you with a nice selec- tion of software to use and enjoy later.
USING THIS BOOK
Using this book by simply typing in the programs and run- ning them is simple enough (and perfectly all right), since that is the main point. An extension of this concept, however, is to learn how to create program ideas and programs yourself. By ex- amining these programs and discovering how they were created, you can develop your own system for creating an idea for a program, developing it into a program, and fixing any problems ("bugs") in it, so that it can be a useful addition to a computer system.
While you are studying and typing in these programs, write down any ideas you might have for your own programs and begin working on them whenever you feel you are ready. Your experience with your programs will be a far better teacher than this book, since an individual is his or her own best teacher. Nevertheless, I hope this book will get you off to a good start, so you can begin using your own creativity and logic to make your computer an extension of your mind.
The ATARI 600XL computer system (courtesy Atari, Inc.)
Chapter 2
Sound and Music Programs
The ATARI 600XL and 800XL home computers (Figs. 2-1 and 2-2) come equipped with four separate voices with which you can create music and sounds. To do this, you specify in your programs which voice (sound channel) you want to use, what sound frequency that channel should produce, and what the volume of that sound should be. In this chapter we'll examine and create four different programs which produce sounds and music, and which let you program different songs and sounds into your ATARI.
SONG LIBRARY
To help stir your interest in the ATARI'S power to create sounds and music, here is a program which will play any one of four different available songs for you. Simply select the song you want to hear and let it play.
In the program, the ATARI first clears the screen then displays the different songs which can be played. You are then allowed to give the computer your choice.
100 GRAPHICS O
105 RESTORE
110 POSITION 9,6
120 PRINT" 1. CAISSON SONG"
130 POSITION 9,7
140 PRINT"2, FRERE JACQUES"
150 POSITION 9,8
160 PRINT"3. FANTASIE IMPROMPTU"
170 POSITION 9,9
180 PRINT"4. MY BONNIE"
190 POSITION 9,10
2U0 PRINT"5. END"
210 PRINT: PRINT: PRINT: INPUT CHOICE
Next, the screen is cleared again and the ATARI goes to the song you wish to be played or, if you selected the fifth option, the computer ends the program by going to line 6000.
220 GRAPHICS O
230 ON CHOICE GOTO 1000,2000,3000,4000,6000
At this point in the program, the computer will access one of the four routines below to play a particular song. Note that the number of frequency/length combinations (note data) varies, since the lengths of the songs vary.
1000 FOR L00P1=1 TO 83
1020 READ A,B
1030 SOUND 1, A, 14,15
1040 FOR LN=1 TO B*1.5:NEXT LN
1050 SOUND 1,0,0,0
1060 NEXT LOOPl
1U70 GOTO 100
2000 FOR L00P2=1 TO 83
2Oi0 READ A,B
202O NEXT L00P2
2O30 FOR LOOPl=l TO 64
2040 READ A,B
8
2U50 SOUND 1, A, 14, 15
2060 FOR LN=1 TO B* 1,7: NEXT LN
2070 SOUND 1,0,0,0
2080 NEXT LOOPl
2n90 GOTO 100
3000 FOR L00P2-1 TO 147
3010 READ A,B
3020 NEXT L00P2
3O30 FOR L00P1=1 TO 61
3040 READ A,B
3050 SOUND 1, A, 14, 15
3060 FOR LN=1 TO B*1.3:NEXT LN
3O70 SOUND 1,0, 0,0
3080 NEXT LOOPl
3U90 GOTO 100
4000 TIMES=0
4010 FOR L00P2=1 TO 208
4020 READ A,B
4O30 NEXT LOOP2
4040 FOR LOOPl =1 TO 60
4045 IF LOOP 1=35 THEN BOSUB 4200
4050 READ A,B
4060 SOUND 1, A, 14, 15
4070 FOR LN=1 TO B* 1.2: NEXT LN
4OS0 SOUND 1,0,0,0
4090 NEXT LOOPl
4100 TIME=TIMES+1
4110 IF TIMES=1 THEN RESTORE: GOTO 4010
4120 GOTO 100
4200 FOR REST=1 TO 70: NEXT REST
4210 RETURN
The data below contains the frequencies and the lengths of the notes in all of the songs:
5000 DATA 81,50,96,50,81,100,81,50,96,50,81,100 5010 DATA 81,50,96,50,81,75,72,25,81,50,96,50 5020 DATA 81,100,96,50,91,50,81,50,91,100,108,50 5030 DATA 81,50,91,100,108,50,125,300,81,50,96,50 5040 DATA 81,100,81,50,96,50,81,100,81,50,96,50 5050 DATA 81,75,72,25,81,50,96,50,81,100,96,50 5060 DATA 91,50,81,50,91,100,108,50,81,50,91,100 5070 DATA 108,50,125,300,81,50,81,50,63,100,63,100 5080 DATA 81,100,81,50,81,50,72,50,64,50 5090 DATA 63,50,72,50,81,100,63,50,63,100,64,50 5100 DATA 72,50,64,50,63,50,72,50,53,300,81,50 5110 DATA 81,50,63,100,63,100,64,100,72,50,64,50 5120 DATA 63,50,72,50,81,100,96,50,91,50,81,50 5130 DATA 91,100,108,50,81,50,91,100,108,50,125,300 5200 DATA 125,50,108,50,96,50,125,50,126,50,108,50 5210 DATA 96,50,125,50,96,50,91,50,81,100,96,50 5220 DATA 91,50,81,100,81,27,72,27,81,27,91,27 5230 DATA 96,50,125,50,81,27,72,27,81,27,91,27 5240 DATA 96,50,125,50,125,50,162,50,126,100,126,50 5250 DATA 162,50,125,100,91,50,81,50,72,50,91,50 5260 DATA 91,50,81,50,72,50,91,50,72,50,68,50 5270 DATA 62,100,72,50,68,50,62,100,62,27,53,27 5280 DATA 62,27,68,27,72,50,91,50,62,27,53,27 5290 DATA 62,27,68,27,72,50,91,50,91,50,125,50 5300 DATA 91,100,91,50,125,50,91,100 5400 DATA 81,200,72,50,81,50,63,50,53,50,47,200 5410 DATA 40,200,45,100,47,100,53,100,47,50,63,50 5420 DATA 81,400,72,200,68,50,72,50,53,50,47,50
10
5430 DATA 45 , 1 00 ,47,1 00 , 53 , 1 00 , 47 , 1 00 , 63 , 1 00 , 64 , 27 5440 DATA 63,27,53,27,63,27,47,150,53,50,53,400 5450 DATA 81,200,72,50,81,50,63,50,53,50,47,200 5460 DATA 40,200,45,100,47,100,53,100,47,50,63,50 5470 DATA 8 1 , 400 , 72 , 200 , 68 , 50 , 72 , 50 , 53 , 50 , 47 , 50 5480 DATA 45,100,47,100,53,100,47,100,63,100,64,27 5490 DATA 63,27,53,27,63,27,47,150,53,50,53,200,63,200 5500 DATA 108,50,64,75,72,25,81,50,72,50,81,20 5510 DATA 96,50,108,50,128,200,108,50,64,75,72,25 5520 DATA 81,50,81,50,85,50,^1,50,72,250,108,50 5530 DATA 64,75,72,25,81,50,72,50,81,50,96,50 5540 DATA 108,50,128,200,108,50,96,50,72,50,81,50 5550 DATA 85,50,96,50,85,50,81,250,108,150,81,150 5560 DATA 96,150,72,100,81,50,85,50,85,50,85,50 5570 DATA 85,50,96,50,85,50,81,100,72,50,64,150 5580 DATA 108,150,81,150,96,150,72,100,81,50,85,50 5590 DATA 85,50,85,50,85,50,96,50,85,50,81,200
Finally, line 6000 clears the screen and lets the program end.
6000 GRAPHICS O
In order to add your own songs to this program, add a new option to the menu, compensate for your addition in line 230 (the ON . . . GOTO statement), put in new program lines to read and play the song, and add the DATA statements for the frequencies and the lengths of the notes in your song.
Important Variables in Song Library
CHOICE Input for choice of song
LOOP1 Reads notes for songs
L00P2 Reads unneeded notes
LN Delay loop for note length
11
A Note value (period)
B Note length
TIMES Used to play "My Bonnie" twice
REST Rest in music
Important Lines in Song Library
100-200 Sets up menu
21 0-230 Gets choice of song
1000-1070 Plays Xaisson Song"
2000-2090 Plays "Frere Jacques"
3000-3090 Plays fantasie impromptu
4000-4210 Plays '"My Bonnie"
5000-5590 Data
6000 Ends program
SOUND MAKER
You have the ability to create unique notes and sounds on your ATARI; this program will make that task much easier for you. This program allows you to change the volume and the frequency of any of the four voices on the ATARI, and you will hear all of them playing simultaneously. In addition, you will see a graphic representation of the frequencies on your screen, along with the volumes and the frequencies printed at the bottom of the screen.
In order to use this program, use the following commands:
q.w,e,r Increase the frequency of voice 1,2.3, or 4
(respectively) by one relative unit In a range
from 0 to 255. Q,W.E.R Decrease the frequency of voice 1 ,2,3, or 4
by one unit. a,s,d.f Increase the frequency of voice 1,2,3, or 4
by ten units. A,S,D,F Decrease the frequency of voice 1 ,2,3, or 4
by ten units. z,x,c,v Increase the volume by one relative unit.
Z,X,C,V Decrease the volume by one relative unit.
The first part of the program is used to establish the vari- 12
ables of Sound Maker and to clear the value at location 764 in memory, the byte at which information from the keyboard is registered.
lOU GRAPHICS 14
no PI =255: P2=255: P3=255: P4=255
1 20 V 1 =0 : V2=0 : V3=0 : V4=0
t?f) FRKF 764,?Srj
The computer begins monitoring the keyboard. Below are the IF-THEN statements for increasing or decreasing the fre- quency of a voice by one.
130 KEY=PEEK(764)
140 IF KEY^47 THEN P1=P1+1:G0T0 1000
150 IF KEY=46 THEN P2=P2+1:G0T0 1000
160 IF KEY=12 THEN P3=P3+1:GGT0 1000
170 IF KEY=4U THEN P4=P4+1:G0T0 1000
ISO IF KEY=111 THEN P1=P1-1:G0T0 1000
190 IF K:EY=110 THEN P2=P2-1:G0T0 1000
200 IF KEY=106 THEN P3=P3-l:GaT0 lOOO
210 IF KEY=104 THEN P4=P4-l:GaT0 1000
Here are the lines which increase or decrease the fre- quency of a voice by ten.
220 IF KEY=63 THEN PI =P1 +10: GOTO 1000
230 IF KEY=62 THEN P2=P2+10: GOTO 1000
240 IF KEY=58 THEN P3=P3+10: GOTO lOOO
250 IF KEY=56 THEN P4=P4+10: GOTO 1000
260 IF KEY=127 THEN P1=P1-10: GOTO lOOO
2/0 IF KEY=126 THEN P2=P2-10: GOTO 1000
280 IF KEY=122 THEN P3=P3-10: GOTO lOOO
290 IF KEY=120 THEN P4=P4-10: GOTO lOOO
Finally, here are the lines (in addition to line 400) which are
13
used to increase or decrease the volume of a voice. These make the computer go back to line 130 to repeat the "keyboard scan- ning" process.
300 IF KEY=23 THEN V1=V1+1:G0T0 1000
310 IF KEY-22 THEN V2=V2+1:G0T0 1000
320 IF KEY=18 THEN V3=V3+1:G0T0 1000
330 IF KEY=16 THEN V4=V4+1:G0T0 1000
340 IF KEY=87 THEN Vl=Vl-l;GOTO 1000
350 IF KEY=86 THEN V2=V2-l:GOTO 1000
3^0 IF KEY=82 THEN V3=V3-1:G0T0 1000
370 IF KEY=80 THEN V4=V4-1:G0T0 1000
4n0 GOTO 130
I then programmed the computerto check the values for the frequencies and volumes of all of the voices to see if any were ^'out of range." If so, the computer would make the proper correction.
1000 IF Pl>255 THEN PI =255: GOTO 130
1010 IF P2>255 THEN P2=255:G0T0 130
1020 IF P3>255 THEN P3=255:G0T0 130
1030 IF P4>255 THEN P4=255:G0T0 130
iO40 IF Pl<2 THEN P1=2:G0T0 130
1050 IF P2<2 THEN P2-2:G0T0 130
lOhO IF P3<2 THEN P3=2:GOTa 130
1070 IF P4<2 THEN P4=2:G0T0 130
1U80 IF Vl>15 THEN V1=15:60T0 130
1090 IF V2>15 THEN V2=15:G0T0 130
1100 IF V3>15 THEN V3=15:G0T0 130
lUO IF V4>15 THEN V4=15:GOT0 130
1120 IF VKO THEN V 1=0: GOTO 130
1130 IF V2<0 THEN V2=0:60T0 130
1140 IF V3<0 THEN V3=0:GOTO 130 1150 IF V4<0 THEN V4=0:GOTO 130
14
The ATARI then plays the sounds through all four of its voices:
2000 SOUND 0,255-Pl,14,Vl 2100 SOUND 1,255-P2,14,V2 2200 SOUND 2,255-P3, 14,V3 2300 SOUND 3,255-P4, 14,V4
Immediately after playing the sounds, the ATARI displays the graphics representing the frequencies of the sounds.
2500 COLOR O
2510 PLOT 25,0
2520 DRAWTO 25 , (255-Pl > /2
3000 COLOR 1
3010 PLOT 25,159
3020 DRAWTO 25,(255-Pl)/2
3100 COLOR O
3110 PLOT 30,0
3120 DRAWTO 30 , 160- (VI ^ 10)
3200 COLOR 3
3210 PLOT 30,159
3220 DRAWTO 30, 160- (VI * 10)
3300 COLOR O
3310 PLOT 50, O
3320 DRAWTO 50, (255-P2) /2
3400 COLOR 1
3410 PLOT 50,159
3420 DRAWTO 50, (255-P2) /2
3500 COLOR O
35 lO PLOT 55,0
3520 DRAWTO 55 , 1 60- ( V2> 10)
15
3600 COLOR 3
3610 PLOT 55,159
3620 DRAWTO 55 , 160- ( V2^ 10)
3/0O COLOR 0
37 lO PLOT 85,0
3720 DRAWTO 85 , (255-P3) /2
3800 COLOR 1
3810 PLOT 85, 159
3820 DRAWTO 85 , (255-P3) /2
390O COLOR O
3910 PLOT 90,0
3920 DRAWTO 90 , 160- < V3>10)
4000 COLOR 3
4O10 PLOT 90,159
4020 DRAWTO 90 , 1 60- ( V3 * 1 0 )
410O COLOR O
4110 PLOT 115,0
4120 DRAWTO 1 15, (255-P4) /2
4200 COLOR 1
4210 PLOT 115,159
4220 DRAWTO 1 15, (255-P4> /2
430O COLOR O
4310 PLOT 120,0
4320 DRAWTO 120 , 160- ( V4* lO)
4400 COLOR 3
4410 PLOT 120, 159
4420 DRAWTO 120 , 160- ( V4*10)
Last, the computer shows the values of the frequencies and the volumes:
4500 PRINT
5000 PRINT 255-Pl,255-P2,255-P3,255-P4
16
5010 PRINT V1,V2,V3,V4 6000 GOTO 125
Working with this program will produce some interesting effects. See if you can create certain tones and special sound effects for your programs by using this utility.
Important Variables in Sound Maker
P1 ,P2,P3,P4 Period values for voices one to four V1 ,V2,V3,V4 Volumes for voices one to four KEY Keyboard input
Important Lines in Sound Maker
100-130 Initialization
1 40-400 Sees which key is pressed and adds or
subtracts from voice or period 1 000-1 1 50 Makes sure new values are not out of
range 2000-2300 Plays four sounds
2500-4420 Makes graphs for period and volume of all
four voices 5000-5010 Prints period value and volume value
6000 Goes back to get more keyboard input
SOUND EFFECTS LIBRARY
For some "prepackaged" sounds, here is a selection of several sound effects. Simply select the one you would like to hear, and press S when you want to stop listening to the sound.
First, the screen is cleared, the menu is displayed, and your ATARI lets you Input your choice.
50 GRAPHICS O
100 POSITION 9,6
110 PRINT"SOUND EFFECTS"
120 POSITION 6,9
130 PRINT" 1. LASER FIRE"
140 POSITION 6,10
150 PRINT"2. ALARM"
17
160 POSITION 6, 11
170 PRINT"3, SPACESHIP THRUST"
180 POSITION 6, 12
190 PR INT "4. REBOUND NOISE"
200 POSITION 6,13
210 PRINT"5. GUN SHOT"
220 POSITION 6,14
230 PRINT"6. RANDOM NOISE"
240 POSITION 6, 15
250 PRINT"/. END"
260 PRINT:PRINT:PRINT"HIT 'S' TO END SOUND"
280 PRINT: PRINT: INPUT CHOICE
Next, the computer goes to the proper line number for your choice and plays the sound you want to hear.
290 ON CHOICEl GOTO 300,400,500,600,700,800,900
3nO FOR LOaPl=l TO 50
310 SOUND l,L00Pl+5, 14,15
320 NEXT LOOPl
330 SOUND 1,0,0,0
340 FOR WAIT=1 TO 150:NEXT WAIT
350 GOSUB 3000
360 GOTO 300
400 PERI0D=255
410 FOR LOOPl =1 TO 50
420 SOUND 1, PERIOD, 14, 15
425 PER I OD==PER I OD-5
430 NEXT LOOPl
440 SOUND 1 ,0,0,0
450 FOR WAIT^l TO 150: NEXT WAIT
460 GOSUB 3000
18
470 GOTO 400
500 FOR L00P1=1 TO 100
510 SOUND 1,120,8,15
520 NEXT LOOPl
530 SOUND 1,0,0,0
540 GOSUB 3000
550 GOTO 500
600 V0L=15
610 FOR L00P1=1 TO 15
620 SOUND 1,155, 14, VOL
630 V0L=V0L-1
640 NEXT LOOPl
650 SOUND 1,0,0,0
660 FOR WAIT=1 TO 150:NEXT WAIT
670 GOSUB 3000
680 GOTO 600
700 V0L=15
710 FOR L00P1=1 TO 3
720 SOUND 1,1 50, 8, VOL
730 NEXT LOOPl
735 VOL=7
750 SOUND 1,255,6,V0L-L00P2
760 NEXT L00P2
770 SOUND 1,0,0,0
775 FOR WAIT=1 TO 150:NEXT WAIT
780 GOSUB 3000
790 GOTO 700
800 RN1 = INT (255*RND < 1) +1 )
810 RN2=INT( (28*RND<l)+l)/2)
820 RN3=INT ( 15*RND < 1 ) +1)
19
830 SOUND 1,RN1,RN2,RN3
840 GOSUB 300O
850 GOTO 800
900 GRAPHICS 0:END
The last part of the program monitors the keyboard for the "S" key. If it is pressed, the computer stops playing the sound and returns to the menu. If not, the ATARI keeps on playing.
3000 IF PEEK < 764 )=ib2 THEN POKE 764 ,255: SOUND i, 0,0,0: GOTO 100 3010 RETURN
Important Variables in Sound Effects Library
CHOICE User's choice of sound
LOOP1 Used to make sounds
WAIT Delay loop
PERIOD The frequency value
VOL Volume
L00P2 Makes sound for second part of gunfire
RN1 Random value for period
RN2 Random value for distortion
RN3 Random value for volume
Important Lines in Sound Effects Library
50-260 Set up menu
280-290 Get choice, go to sound
300-360 Creates laser fire sound
400-470 Creates alarm sound
500-550 Spaceship thrust
600-680 Rebound noise
700-790 Gunshot noise
800-850 Random noise
900 Ends program
3000-3010 Turns off sound and resets the keyboard
MUSIC CREATOR
Not only may you want to create certain sounds on your computer, you might also want to write music with your ATARI.
20
|
fi /=V r- |
|||||
|
u |
1 |
E |
|||
|
/Iv |
n |
C |
|||
|
(( ) |
A |
||||
|
cr |
r |
F |
|||
|
^ c |
D |
||||
|
SYMBOL |
NOTE |
VALUE |
|||
|
o |
Whole |
4 beats |
|||
|
c |
Half |
2 beats |
|||
|
m |
Quarter |
1 beat |
|||
|
\ d |
Eighth |
V2 beat |
|||
|
} |
Sixteenth |
V'4 beat |
F-ig. 2-1 . Musical notes.
The following program will allow you to enter notes and their lengths, and then chain the notes together to make a song.
Music creator first establishes the variables it is going to use, shows Its title, and lets you begin inputting your song. To input a note, type in a four-character code consisting of:
1) A note name from the set A,B,C,D,E,F,G.
2) A blank character if the note is natural, or a sharp sign ( * ) if it is sharp.
3) The octave level, a number from 1 to 3 representing how ■'high" the octave is.
4) The length of the note, which can be S (sixteenth note), E (eighth), Q (quarter), H (half), or W (whole note).
The notes available, as well as acomparison of theirtime values, are shown in Fig. 2-1.
50 DIM INP*(5):DIM A* (3) ^0 DIM P<90):DIM L(90)
21
70 DIM L*(3)
100 GRAPHICS O
110 POSITION 10,4
120 PR I NT "MUSIC CREATOR"
130 NM=1
135 PRINT: PRINT
140 INPUT INP*
This section of the program lets your ATARI accept two other commands— PLAY, which will play your song, and END, which will stop the program completely.
150 IF INP*="PLAY" THEN NM=NM-1:G0T0 lOOO 160 IF INP*="END" THEN GRAPHICS OrEND
At this point, the computer will compare your note with the notes in the DATA statements at the end of the program to find out the frequency of the note you selected.
170 READ A*,B,C
200 IF A*=INP*(1,2) THEN 300
210 GOTO 150
300 D=VAL(INP*(3,3) )
310 IF BOD THEN GOTO 150
^O P(NM)=C
500 L*=INP*(4,4)
Then your ATARI determines the length of the note you selected:
510 IF LS="S" THEN L=25
520 IF L^="E" THEN L=50
530 IF LS="Q" THEN L=100
540 IF LS="H" THEN L==200
550 IF L*="W" THEN L=400
560 L(NM)=L
22
To let you know what you have just entered, the connputer will play the note. It will then go back to the INPUT routine so you can continue supplying notes until you are ready to PLAY the song.
600 SOUND 1,P(NM) ,14, 15
610 FOR L00P1 = 1 TO L<NM)!NEXT LC30P1
620 SOUND 1,0,0,0
700 NM=NM+1
710 RESTORE
720 GOTO 140
When you are ready to play the song, this routine will do just that.
1000 FOR L00P2=1 TO NM
1010 SOUND 1,P<L00P2) ,14,15
1020 FOR L00P3=1 TO L (L00P2) : NEXT L00P3
1030 NEXT L00P2
2000 BOUND 1 ,0,0,0
2010 NM=NM+1
2020 GOTO 140
Here, at last, is the data for the notes you might use in the program:
5000 DATA C , 1 ,251 ,C# , 1 , 230,D ,1,217 5010 DATA D#,1,204,E ,1,193,F ,1,182 5020 DATA F#, 1,173,6 , 1 , 162,G#, 1 , 153 5030 DATA A , 1 , 144, A#, 1 , 136,B ,1,128 5040 DATA C , 2, 126 ,C#,2, 1 14,D, 2, IDS 5050 DATA D#,2,102,E ,2,96,F ,2,91 5060 DATA F#,2,85,G , 2,81 ,G#,2, 76 5070 DATA A , 2, 72, A#, 2,68,B ,2,64 5080 DATA C ,3,63,C#,3,57,D ,3,53
23
5090 DATA D#,3,50,E ,3,47,F ,3,45 5100 DATA F#,3,42,G ,3,40,G#,3,37 5110 DATA A ,3,35,A#,3,33,B ,3,31
See if you can construct a routine to save your songs to the disk. If you would like to add more songs to the "Song Library" program earlier in this chapter, add the songs you create with this program.
Important Variables in Music Creator
INP$ input a note of music
A$ The note frequency
P(X) The period for each note
L(X) The length of each note
L$ The input for the note length
NM Number of the note
B Data for octave number
C Data for frequency value
D Numeric value of octave number
L00P1 Delay loop for making note length
LOOP2 Used for playing song
LOOPS Another delay loop
Important Lines in Music Creator
50-135 initialization
140 Gets input
1 50-1 60 Checks to see if user wants to play song or end
program 170-310 Finds appropriate data
400 Gets period
500-560 Gets note length
600-620 Plays note just input
700-720 Goes to get next note from user
1000-2020 Plays song 5000-5110 Data for notes, octave, and period value
USING SOUNDS AND MUSIC
With four voices available on the ATARI, this computer certainly is capable of producing complex pieces of music and interesting, unusual sounds for your programs. Add as many sounds as you can to your games and utilize songs and sounds
24
in educational programs. You'll probably find that creating these is one of the most entertaining aspects of programming your ATARI computer.
7^76 ATARI 800XL computer system (courtesy Atari, Inc.)
25
Chapter 3
Educational Software
Computers are often said to be one of the best tools available for education. This may well be true, because computers are the most patient teachers you could ever find. They can remember large amounts of data, recite it accurately, and accept input from any number of students as many times as needed. Computers don't have some of the "human" qualities that real teachers do, but they are excellent at the kinds of work which are repetitive and probably bonng for people. Moreover, the student can con- tinue to work with a program until he or she memorizes the information presented by the computer.
In this chapter we'll be looking at four different programs which focus on education. You can easily expand and modify these programs for your own use and for the academic level for the people using the programs. However, these programs are fully functional as they now exist; you are sure to learn some- thing from using these programs-not only about history or French or geography or spelling, but also about programming your ATARI home computer.
HISTORY QUIZ
This program utilizes a large quantity of data by randomly selecting several pieces of information which relate to history. Then it asks you which one particular part of history is usually ^elated to another part. With this program, the computer can
27
teach you more about history by quizzing you on a variety of subjects and letting you learn by trial and error.
The first part of the progrann sets up the variables and clears the screen.
10 DIM A* (30): DIM Ei*(30)
20 DIM C^ (30): DIM D*<30)
30 DIM E*<n :DIM Ft^ ( 1 )
40 DIM ANSWER* (30)
50 SC=0:TIMES=0
100 GRAPHICS 0
The ATARI waits until you are ready to begin and then clears the screen once nnore:
no POSITION 12,4
120 FRINT"HISTORY QUIZ"
130 POSITION 7,8
140 PRINT"HIT ANY KEY TO CONTINUE"
150 INPUT E*
200 GRAPHICS 0
At this point the conriputer reads the data from the end of the progrann and selects a random number from 1 to 6. This random number will determine the order in which the aspects of history will be printed— so you'll never know which person or event is associated with another person or event until you are familiar with the facts in this program.
205 TIMES=TIMES+1
210 READ A:t,B*,C:$,D*
220 POSITION 7,4
230 PRINT AS
240 POSITION 7,6
250 PRINT" IS MOST ASSOCIATED WITHs"
300 RAN=INT (6*RND ( 1 ) +1 )
305 POSITION 2, 10
28
The computer then prints out the data and goes to the routine at line 700, which will accept your input.
310 IF RAN==1 THEN 400
320 IF RAN=2 THEN 450
330 IF RAN=3 THEN 500
340 IF RAN=4 THEN 550
350 IF RAN=5 THEN 600
360 IF RAN=6 THEN 650
400 PRINT B*
410 PRINT C*
420 PRINT D*
430 GOTO 700
450 PRINT C*
460 PRINT B*
470 PRINT D*
480 GOTO 700
SOO PRINT D*
510 PRINT C»
520 PRINT B*
530 GOTO 700
550 PRINT B*
560 PRINT D*
570 PRINT C*
580 GOTO 780
600 PRINT C*
610 PRINT D*
620 PRINT B*
630 GOTO 700
650 PRINT D*
660 PRINT B*
29
670 PRINT C* 680 GOTO 700
Here the computer accepts your input and checks to see if it is correct or not. Then the ATARI asks if you would like to continue with another question.
700 POSITION 7,15
710 INPUT ANSWER*
720 IF ANSWER^OBt THEN 800
730 PRINT: PRINT"CORRECT"
740 SC-SC+1
750 GOTO 900
800 PRINT: PRINT" INCORRECT - THE RIGHT ANSWER IS " ; B*
810 GOTO 900
900 IF TIMES=22 THEN 2000
910 PRINT"DO YOU WANT TO CONTINUE-^"
920 INPUT F*
930 IF F:|:="Y" THEN 200
Finally, here are the data for the program. Remember not to put any extra spaces in the data, since that might make the program malfunction.
1000 DATA HERODOTUS, FATHER OF HISTORY , TROJAN WAR, ATTACK
ON ROME
1010 DATA WATERLOO, NAPOLEON, LORD NELSON, DUKE OF WELLINGTON
1020 DATA ANTIETAM, CIVIL WAR , GREECE , WORLD WAR II
1030 DATA HOMER, POETRY, SUBMARINE, JET PLANE
1040 DATA HENRY FORD , INDUSTRIAL 1ST , PRESIDENT , FAMOUS HISTORIAN
1050 DATA HANNIBAL, ELEPHANTS, BABYLON, PEOPLE EATERS 1060 DATA HAMMURABI, BABYLON, ELEPHANTS, HARDWARE 1070 DATA KING JOHN, MAGNA CARTA , ENGLISH CIVIL WAR, FOUGHT DUKE OF NORMANDY
30
1080 DATA KIT CARSON, WEST , NORTH , SOUTH
1090 DATA SHERMAN, NORTH, WEST, SOUTH
1100 DATA JEB STUART, SOUTH, NORTH, WEST
lUO DATA SAMUEL ADAMS, AMERICAN REVOLUTION, FAMOUS
ECONOMIST, SECOND PRESIDENT
1120 DATA GIBRALTAR, LORD NELSON, DUKE OF WELLINGTON, NAPOLEON
1130 DATA U.S. SENATE, TRUMAN, JACKSON, EISENHOWER 1140 DATA THOMAS EDISON , MOTION PICTURES , TYPEWRITER, AIRPLANES
1150 DATA PRINTING, GUTENBERG, LINDERBERG, HEGEL
1160 DATA WILLIAM THE CONQUERER, 1066 , ROME , 1512
1170 DATA KARL MARX , HEGEL , ADAM SMITH, DARWIN
1180 DATA CARTHAGE, ROME, TURKEY, ENGLAND
1190 DATA RENOIR, PAINTER, PHILOSOPHER, INDUSTRIALIST
1200 DATA SHAKESPEARE, ELIZABETH I, KING JOHN, HENRY VIII
1210 DATA JOHN PAUL JONES , AMERICAN REVOLUTION , WAR OF
1812, POET
2000 PR I NT: PR I NT "YOUR SCORE IS " ; INT ( (SC/TIMES) *100) ; " PERCENT. "
Line 2000, shown above, is the final line In the program. It computes your score by dividing the number of your correct answers by the total number of questions asked, and then multi- plying that fraction by 100 to get the percentage.
Important Variables in History Quiz
A$ First word
B$,C$,D$ Words with which to associate the first word
E$, F$ Input needed to continue
ANSWERS Player's response for quiz
SC Score
TIMES Number of questions asked
RAN Random number
31
Important Lines in History Quiz
10-50 Initialization
100-150 Introduction
200-250 Beginning of quiz
300-680 Sets up three words in random order
700-810 Gets responses and sees if it's correct
900-930 Sees if player wants to continue
1000-1210 Data
2000 Computes player's score
SPELLING TESTER
If you have trouble with your spelling, as most of us do, or you know someone who could use help, here is a program which will display incorrect and correct spellings of words as shown in Fig. 3-1. You decide which is correct.
The program begins by DIMensioning the variables and clearing the screen:
10 DIM A.r (15) :DIM B*(15) 20 DIM I NPS( 15): DIM YN:f ( 1 )
30 SC=0
EDITER EDITOR
WHICH IS SPELLED CORRECTLy^ ? EDITOR
CORRECT
DO YOU WANT TO CONTINUE ?
7
Fig. 3-1. Sample screen for Spelling Checker. 32
Your ATARI then begins reading the words, displaying the incorrectly and correctly spelled versions in a random order, asking you which one is spelled correctly.
100 FOR LaOPl=l TO 37
110 GRAPHICS 0
120 READ A^,B-^
130 RAN=INT(2>-RND(1)+1)
140 IF RAN=1 THEN 200
150 PR I NT: PR I NT: PR I NT A*
160 PRINT BS-
170 GOTO 300
200 PR I NT: PR I NT: PR I NT B*
210 PRINT (^S-
300 PR I NT: PR I NT "WHICH IS SPELLED CORRECTLY"
310 INPUT INP:$:
Once you give an answer, the computer checks to see if you are right or wrong, and also asks if you would like to continue using the program. If not, it will tell you what your score is.
320 IF INPit-A* THEN SC^SC+1 : PRINT: PRINT"CORRECT. " :
GOTO 500
330 PRINT: PRINT"WRONG- "
500 PRINT; PR I NT "DO YOU WANT TO CONTINUE?"
510 INPUT YN:|:
520 IF YN:t="N" THEN 600
530 NEXT LOOP!
600 PRINT: PR I NT "YOUR SCORE IS " ; INT ( (SC/LOOPl ) *100) ; "
PERCENT. "
Here, at the end of the program, are the data:
2000 DATA IMPERIL, I nPER ILL, SHAPELY, SHAPLY, SENSORY, SENSERY
33
2010 DATA HARASS,HARRASS,iriMINENCE,EMMINENCE,II1PALPABLE,
IMPALPIBLE
2020 DATA IMPELLING , IMPELING , PERSISTENT , PERSISTANT ,
PROFESSOR, PROFESOR
2030 DATA SUCCEED , SUCCEDE , TOMOROW, TOMMOROW , DISTILL , DISTIL
2040 DATA BLURRED, BLURED , BOGUS , BOGOS , AROUSE , ARROUSE 2050 DATA HIJACKER , HIGH- J ACKER , HARD-CORE ,HARDCORE , HALFBACK , HALF-BACK
2060 DATA GRITTY , GR I TY , GUARANTEE , GUARRANTEE , GROVEL , GROVELL
2070 DATA ENSUE , INSUE , HIGHLIGHT , HIGH-LIGHT , FOSSIL , FOSSLE
2080 DATA MISSILE , MISSLE , FULFILL , FULLFIL , ELECTORATE ,
ELLECTORATE
2090 DATA EDITOR , ED ITER , ELUDE ,ELLUDE , DEFER , DEFFER
2100 DATA CONTROL, CONTROLL, CONTROLLED, CONTROLED,
STOPPIWC, ST0PIN6
2110 DATA MARSHMALLOW,MARSHMELLOW, HYGIENE, HUGENE 2120 DATA FLOTSAM, FLOTSOM, ADVANTAGEOUS, ADVANTAGOUS
You might want to try adding words of your own to the program. Simply put in new DATA statements and adjust the FOR/NEXT loop near the beginning of the program so it can accommodate any extra words.
Important Variables in Spelling Tester
A$ Data for the correct spelling
B$ Data for incorrect spelling
SC Score correct
L00P1 Quiz
RAN Random number (1 or 2)
INP$ User's answer
34
Important Lines in Spelling Tester
10-30 Initialization
100 Beginning of quiz
120 Reads two words from data
130-210 Prints the words in random order
300-330 Asks for answer, sees If it is correct
500-530 Sees if player wants to continue
600 Computers player's score
2000-2120 Data
FRENCH TUTOR
If you are interested in the French language, or if you'd just like to learn a few words to use at your favorite international restaurant, this program will not only teach you French words but also test you on them. Again, you can add more words to the DATA statements, but you should also alter the program to account for the added words.
As usual, the first part of the program sets up the variables and clears the screen:
10 DIM E*:(15) :DIM F*(15)
20 DIM INP*:C15) :DIM YN«: ( 1 >
30 SC-0
100 GRAPHICS 0
Then a "menu" is displayed from which you may select an option. The "parts" are the lessons from which you may learn certain words, and the "test" will quiz you on those words.
110 POSITION 10,5
120 PRINT"FRENCH LESSON"
130 POSITION 7, 10
140 PRINT"!, PART ONE"
150 POSITION 7, 11
160 PRINT"2. PART TWO"
170 POSITION 7, 12
180 PR INT" 3. PART THREE"
190 POSITION 7,13
35
200 PRINT"4, PART FOUR"
210 POSITION 7,14
220 PRINT"5, PART FIVE"
230 POSITION 7,15
240 PRINT"6. PART SIX"
250 POSITION 7, 16
260 PRINT"7, TEST"
270 INPUT CH
280 ON CH GOTO 500,300,320,340,360,300,1000
Once you have selected an option, the computer will go to a different part of the program so it may either teach you or quiz you on the words:
300 CLEAR=13
310 GOTO 400
320 CLEAR=26
330 GOTO 400
340 CLEAR«=39
350 GOTO 400
360 CLEAR=52
370 GOTO 400
380 CLEAR»=65
400 FOR L00P1=1 TO CLEAR
410 READ F*,E*
420 NEXT LOOPl
500 GRAPHICS 0
510 FOR L00P2=i TO 13
520 READ F*,E:*
530 PRINT FS
540 PRINT" ";E*
550 NEXT L00P2
36
600 PRINT:PRINT:PRINT'*HIT ANY KEY TO CONTINUE"
610 INPUT lNP-$-
620 RESTORE
630 GOTO 100
If you do "take the test" you will have to put in the French word for each English word, using the dialogue shown in Fig. 3-2. The ATARI will keep track of your score as you go.
1000 FOR L00P3=1 TO 78
1010 GRAPHICS 0
1020 READ FS,E$
1030 PRINTS PRINT E*
1040 PRINT: PRINT"WHAT IS THE FRENCH WORD?"
1050 PRINT" (INCLUDE THE ARTICLE)"
1060 INPUT INP:^
1070 IF INP*<>F* THEN 1100
1080 GOTO 1200
GOOD EVENING
WHAT IS THE FRENCH WORD '?
(INCLUDE THE ARTICLE) ? BONSOIR
CORRECT
Fig. 3-2. Taking the French test.
37
1100 PRINTtPRINT"WRONG" 1120 GOTO 1500 1200 PRINT: PRINT*'CORRECT" 1210 SC=SC+1
If you want to continue the program, you may do so when the computer asks you:
1500 PRINT: PR I NT "DO YOU WANT TO CONTINUE?"
1510 INPUT YN«
1520 IF YN«<>"Y" THEN 1600
1530 NEXT L0OP3
Finally, the computer tells you your score based on how well you did on the test.
1600 PRINT: PRINT" YOUR SCORE IS " ; INT < (SC/L00P3) *100) j "
PERCENT, "
The data are located at the end of the program.
2000 DATA L ' ADDI T ION, B ILL, L'AGNEAU, LAMB
2010 DATA L' AIDE, ASS I STANCE, L'APRES-MIDI, AFTERNOON
2020 DATA L ' AUTOBUS , BUS , LE BAIN, BATH
2030 DATA LE BETE , BEAST , LA BL ANCH I SSER IE, LAUNDRY
2040 DATA LE BONBON , CANDY , BONJOUR , HELLO
2050 DATA BONSOIR,GOOD EVENING, LA BOUL ANGER IE, BAKERY
2060 DATA LA BOUTIQUE , SHOP, LA CAB I NE, CAB IN
2070 DATA LE CAMION , TRUCK ,LE CHASSEUR , BELLBOY
2080 DATA LE CHAUSSURE , SHOE , LE CHEQUE, CHECK
2090 DATA LE CHIEN,DOG,LE COMPLET,SUIT
2100 DATA LA CRAVATE , NECKTIE , LE CUIT, LEATHER
2110 DATA DE,FROM,DEMAIN,TOMMOROW
2120 DATA LA DOUANE , CUSTOMS , LE DRAPE AU, FLAG
2130 DATA L' ESSENCE, GASOLINE, LA FEMME, WOMAN
38
2140 DATA LE GARCON , WAITER , LA GARE, STATION
2150 DATA LE GENDARME , POLICEMAN , LA GLACE, ICE CREAM
2160 DATA GR ATU IT, FREE, L' MORA I RE, SCHEDULE
2170 DATA L'HOROLOGE,CLOCK,L 'HOTELIER, INNKEEPER
2180 DATA L'IMPOT, TAX, INTERDIT, FORBIDDEN
2190 DATA LUND I, MONDAY,MARD I, TUESDAY
2200 DATA MERCREDI , WEDNESDAY, JEUDI , THURSDAY
2210 DATA VENDREDI, FRIDAY, SAMEDI, SATURDAY
2220 DATA DIMANCHE , SUNDAY , LE JOUET,TQY
2230 DATA LE JOUR, DAY, LE JOURNAL , NEWSPAPER
2240 DATA LE LIBRAIRIE , BOOKSTORE ,LA MAIRIE,TOWN HALL
2250 DATA LE MATIN, MORNING , LE MEDEC IN , DOCTOR
2260 DATA MERCI, THANK YOU , LE METRO , SUBWAY
2270 DATA LE MIDI, NOON, LE MINUIT , MIDNIGHT
2280 DATA LE MOIS, MONTH ,L ' OEUF , EGG
2290 DATA LE PAIN , BREAD , PERDU , LOST
2300 DATA LE PERE , FATHER , LE PLAN, CITY MAP
2310 DATA LE POISSON , FISH , LE PORTEUR , PORTER
2320 DATA LE POULET , CHICKEN , LE QUART I ER , NEIGHBORHOOD
2330 DATA LE REVEIL,ALARM CLOCK , LA ROBE, DRESS
2340 DATA LE SAC, BAG, LA SALLE, ROOM
2350 DATA LA SEMAINE, WEEK, LA SERVEUSE, WAITRESS
2360 DATA LE STYLO, PEN, LA TAILLE,SIZE
2370 DATA LE TAILLEUR, TAILOR, LA VAL I SE , SUITCASE
2380 DATA LA VI ANDE , MEAT , LA VOITURE,CAR
If you would like to learn a language other than French, you can use the same technique in this program. Simply include the data for the English and the foreign-language words.
Important Variables in French Tutor
E$ English word in data
39
F$ French word in data
fNP$ Player's response to test
YN$ Used to ask if player wants to continue
SC Score in quiz
CH Choice from menu (input)
CLEAR Number of words and definitions in data to skip
over
LOOP1 Used to do the above
LOOP2 Used to read data and print information on
screen
L00P3 Used to ask questions for test
Important Lines in French Tutor
10-30 Initialization
100-260 Sets up menu
270-280 Goes to selected item
300-380 Sets number of pairs of data to skip over
400-420 Does the above
500-550 Reads desired data, prints it out
600-630 Goes back to menu
1000 Beginning of test
1010-1050 Asks question
1 060-1 080 Gets response
1 100-1210 Tells player if he's right or wrong
1500-1530 Asks player if he wants to continue
1 600 Computes player's score
STATES AND CAPITALS
At some time in every American's life he or she must learn the states and capitals. As terrible as this task may be, the computer can make it more bearable for you, as you will discover with this program.
First the computer sets up the program and gives you the option of taking a quiz on the states and their capitals, or simply finding information about which state has what capital, or vice versa.
5 DIM A*<50):DIM B*(50)
6 DIM INP*(20):DIM USED (50)
7 DIM RESP0NSE«:C2O) sDIN YN* ( 1 ) 10 GRAPHICS 0
40
20 POSITION 9,4
30 PR I NT "STATES AND CAPITALS MENU"
40 POSITION 7,7
50 PR I NT " 1 . I NFQRMAT I ON "
60 POSITION 7,9
70 PRINT"2, QUIZ"
80 POSITION 7,14
90 PR I NT "PLEASE CHOOSE ONE."
95 POSITION 7,16
100 INPUT CH
110 IF CH>2 THEN SO
130 IF CH=1 THEN 150
140 IF CH=2 THEN 1000
If you want information, you simply tell the computer that you want to find out which state belongs to what capital or which capital belongs to what state. (See Fig. 3-3.) Once you have done this, the computer will find the information.
150 GRAPHICS 0 160 POSITION 7,7
1 YOU NAME THE STATE AND THE COMPUTER WILL FIND THE CAPITAL
2. YOU NAME THE CAPITAL AND THE COMPUTER WILL FIND THE STATE
^ 1
WHAT IS THE STATE^
^ LOUISIANA
THE CAPITAL OF LOUISIANA IS BATON ROUGE
Fig. 3-3. Getting information from States and Capitals.
41
170 PRINT"! . YOU NAME THE STATE AND THE COMPUTER WILL
FIND THE CAPITAL. "
180 POSITION 7,10
190 PRINT'*2, YOU NAME THE CAPITAL AND THE COMPUTER WILL
FIND THE STATE. "
200 POSITION 7,15
205 PRINT"PLEASE INPUT YOUR CHOICE";
210 INPUT CH2
220 ON CH2 GOTO 240,400
230 GOTO 200
240 GRAPHICS 0
250 POSITION 7,7
260 PRINT"WHAT IS THE STATE?"
270 INPUT INP*
280 FOR Li=l TO 50
290 READ A*,B*
300 IF A#«INP* THEN 320
310 NEXT LI
315 IF Ll=51 THEN PRINT" INVALID INPUT": SOTO 260
320 POSITION 7, 11
330 PRINT"THE CAPITAL OF "jiA*;" IS " j B*
340 FOR DELAY"! TO 750iNEXT DELAY
345 RESTORE
350 GOTO 10
400 GRAPHICS O
410 POSITION 7,7
420 PR I NT "WHAT IS THE CAPITAL?
430 INPUT INP*
440 FOR Ll=l TO 50
450 READ A*,B*
42
460 IF B*=INP* THEN 480
470 NEXT LI
475 IF LI =51 THEN PRINT" INVALID INPUT": GOTO 420
480 POSITION 7,11
490 PRINT B*|" IS THE CAPITAL OF " ; A*
500 GOTO 340
Here are the data of the states and their capitals required by
this program:
800 DATA ALABAMA, MONTGOMERY, ALASKA, JUNEAU
810 DATA ARIZONA, PHOENIX, ARKANSAS, LITTLE ROCK
820 DATA CALIFORNIA, SACRAMENTO, COLORADO, DENVER
830 DATA CONNECTICUT, HARTFORD, DELAWARE, DOVER
840 DATA FLORIDA, TALLAHASEE, GEORGIA, ATLANTA
850 DATA HAWAI I , HONOLULU, IDAHO, BOISE
860 DATA ILLINOIS, SPRINGFIELD, INDIANA, INDIANAPOLIS
870 DATA IOWA,DES MO I NES , KANSAS , TOPEKA
880 DATA KENTUCKY, FRANKFORT, LOU I SI ANA, BATON ROUGE
890 DATA MAINE, AUGUSTA, MARYLAND, ANNAPOLIS
900 DATA MASSACHUSETTS, BOSTON, MICHIGAN, LANSING
910 DATA MINNESOTA, ST. PAUL , M I SS I SS I PP I , J ACKSON
920 DATA MISSOURI , JEFFERSON C I TY , MONTANA , HELENA
930 DATA NEBRASKA, LINCOLN, NEVADA, CARSON CITY
940 DATA NEW HAMPSH I RE , CONCORD , NEW JERSEY , TRENTON
950 DATA NEW MEXICO, SANTA FE , NEW YORK, ALBANY
960 DATA NORTH CAROL I NA , RALE I GH , NORTH DAKOTA , BI SMARK
970 DATA OHIO, COLUMBUS, OKLAHOMA, OKLAHOMA CITY
980 DATA OREGON, SALEM, PENNSYLVANIA, PHILADELPHIA
990 DATA RHODE I SLAND , PROVI DENCE , SOUTH CAROLINDA,
COLUMBIA
992 DATA SOUTH DAKOTA , PIERRE , TENNESSEE , NASHVILLE
993 DATA TEXAS , AUSTIN , UTAH , SALT LAKE CITY
43
995 DATA VERMONT , MONTPELIER , VIRGINIA, RICHMOND
997 DATA WASHINGTON ,OLYMPIA , WEST VIRGINIA, CHARLESTON
998 DATA WISCONSIN , MADISON, WYOMINS, CHEYENNE
And, finally, if you want to be tested by the computer, this part of the program will require you to name either the state of a capital or the capital of a state, whichever you prefer.
1000 GRAPHICS 0
1003 FOR L5=l TO 50
1005 USED(L5)=0
1007 NEXT L5
1010 POSITION 7,7
1020 PRINT" 1- 'WHAT IS THE CAPITAL?'"
1030 POSITION 7,9
1040 PRINT"2, 'WHAT IS THE STATE?'"
1050 POSITION 7, 12
1060 INPUT CH3
1070 IF CH3=1 THEN 1100
lOaO IF CH3=2 THEN 1100
1090 GOTO 1060
1100 GRAPHICS 0
1105 FOR L2«l TO 50
1110 RAN= ( 50*RND <!)+!)
1120 FOR L3-1 TO 50
1130 IF RAN=USED(L3) THEN 1110
1140 NEXT L3
1150 USED(L2)='RAN
1160 FOR L4=l TO RAN
1170 READ A*,B*
1180 NEXT L4
1190 RESTORE
44
1200 IF CH3=1 THEN 1300
1210 IF CH3=2 THEN 1400
1300 PRINT-WHAT IS THE CAPITAL OF "jA*;"?"
1310 INPUT RESPONSE*
1320 IF RESPONSE*=B* THEN PRINT"CORRECT" : SC=SC+1 :
GOTO 1500
1330 PRINT"WRONG"
1340 PRINT"THE CAPITAL OF ";A*;" IS " ; B*
1350 GOTO 1500
1400 PRINT B*;" IS THE CAPITAL OF WHAT STATE?"
1410 INPUT RESPONSE*
1420 IF RESPONSE*=A* THEN PRINT"CORRECT" a SC=SC+1 :
GOTO 1500
1430 PRINT"WRONG"
1440 PRINT B*; " IS THE CAPITAL OF " ; A*
1450 GOTO 1500
You can keep answering questions until you are satisfied that you know the material. Then the computer will give you your score.
ISOO PRINT"DO YOU WANT TO TRY ANOTHER?*'
1510 INPUT YN*
1520 IF YN*="Y" THEN 1600
1525 GRAPHICS 0
1530 NEXT L2
1600 PRINT" YOUR SCORE IS " 5 INTC <SC/L2) *1003 " PERCENT."
You could use this same program concept to match any two things, such as International capitals with their respective coun- tries, of scientific achievements with people who made them possible, and so on. There are many possibilities in educational software, and you can probably come up with an excellent subject that a person could learn with the help of the ATARI.
45
Important Variables in States and Capitals
A$ Data for the state
B$ Data for capital
'NP$ Input for finding information
USED(X) Makes sure that states in quiz are not used
twice RESPONSES Player's answer in quiz ^^$ Sees if player wants to continue
CH Player's choice from menu
CH2 Choice of information wanted
CH3 Choice of type of quiz wanted
Lf Loop for finding Information
DELAY Delay loop
L2 Loop to ask quiz questions
L3 Loop used to make sure that same state
has not been used twice in quiz L4 Used to read remaining data
L5 Sets all USED(X)=:0
Important Lines in States and Capitals
5-7 Initialization
10-95 Sets up menu
100-140 Gets user's choice
150-230 Gets choice of information wanted
240-350 Finds capital of a state
400-500 Finds the state
800-998 Data
1003-1007 Sets all USED(X) to zero
1 01 0-1 090 Gets choice of quiz
1100 Beginning of quiz
1 1 20-1 1 40 Makes sure that random number has not been
used twice 1 1 60-1 1 80 Reads data to get to the data needed in the quiz 1300-1450 Asks questions, gets responses, sees if they
are correct 1500-1520 Sees if user wants to continue the quiz 1600 Computes the user's score
LEARNING THE EASY WAY
As you can tell from using these programs, computers can make learning more enjoyable and less frightening for younger
46
people, who might be afraid of being scorned for their mistakes. Computers can teach individuals at their own pace, and will provide endless encouragement and congratulations for people learning with the computer. See if you can make a program to teach a subject in which you have an interest, and find out if people using the program can learn as much or more than they would with a teacher. You might be surprised at the results.
47
Chapter 4
Math and Your Computer
Since computers are basically ^^math machines" (they work only with numbers and translate words into numbers before using them), your ATARI 600XL or 800XL is very proficient at math. It can handle addition, subtraction, multiplication, division, trigonometric functions, exponents, and just about any other mathematical formula you can give it.
Because of the ATARI'S prowess at mathematics, your computer can be an excellent tool for solving your math prob- lems, as well as testing you on your math abilities. In this chapter we'll take a look at four programs that serve these purposes and will prove how quickly and accurately the ATARI home comput- ers can handle numbers.
CALCULATOR
This first program will serve the functions of an advanced calculator. It will perform the four basic functions (add, subtract, multiply, divide), trigonometric functions (like sine, cosine, tan- gent), and find the square root of a number. This program takes advantage of most of the ATARI'S math commands and can help you by being a powerful "computer calculator," as shown in Fin 4-1. ^'
The first part of the program clears the screen and displays the "menu" of options. The computer then allows you to choose a function and input the number you wish to use with it.
49
|
SUPER CALCULATOR |
|||
|
FUNCTIONS |
|||
|
1, 2. 3, 4. 5. |
ADD SUBTRACT MULTIPLY DIVIDE SQUARE |
7. 8. 9. 10. |
SINE COSINE TANGENT LOG 50 |
6. SQUARE ROOT
?10
PLEASE INPUT THE FUNCTION YOU WANT'? 3
AT THE PROMPT, PLEASE INPUT
THE APPROPRIATE NUMBERS? 5
Fig. 4-1. Computer Calculator.
10 GRAPHICS O
20 DEG
100 POSITION V,l
110 PRINT'-SUPER CALCULATOR"
120 PRINT
130 PRINT"FUNCTIONS: "
140 PRINT
1~0 PRINT"!. ADD 7. SINE"
160 PRINT"2. SUBTRACT 8. COSINE"
170 PRINT"3, MULTIPLY 9. TANGENT'
180 PRINT"4, DIVIDE 10. LOG"
190 PR I NT "5. SQUARE"
195 PRINT"6. SQUARE ROOT"
210 POSITION 5,15
220 PRINT NM; "
225 PRINT:PRINT
50
230 INPUT NM
240 PR I NT "PLEASE INPUT THE FUNCTION YOU WANT";
250 INPUT FUNC:PRINT"AT the PROMPT sign, PLEASE INPUT"
251 PRINT"THE APPROPRIATE NUMBERS"
The computer then goes to a predetermined line number based on the value of your function. If the function number you selected does not exist, the computer will go back to line 21 0 to ask for your input once again.
300 ON FUNC GOTO 500,600,700,800,900,1000,1100,1200, 1300, 1400 310 GOTO 210
For some of these functions (like square root), only one number (variable NM) will be necessary. Other functions require a second number (variable NM2). In the lines below, you will see that some of the functions INPUT to the variable NM2, while others immediately work with the variable NM and return to the functions menu. The result is displayed and the computer waits for more input.
500 INPUT NM2
510 NM=NM+NM2
520 GOTO 210
600 INPUT NM2
610 NM=NM-NM2
620 GOTO 210
700 INPUT NM2
710 NM=NM*NM2
720 GOTO 210
300 INPUT NM2
310 NM-NM/NM2
820 GOTO 210
700 NM=NM*NM
'?10 GOTO 210
LOOO NM=SQR(NM)
51
1010 GOTO 210
1 1 00 NM=S I N ( NM )
1110 GOTO 210
12O0 NM=COS(NM)
1210 GOTO 210
1300 NM^'SINCNfD/COSCNM)
1310 GOTO 210
1400 NM=CLOG(NM)
1410 GOTO 210
1500 NM=INT(NM>
1510 GOTO 210
In all of the functions above, the computer returns to line 210 to display the result of the function and await input for another problenn. You might want to add more functions to this program using your own special equations. If you wish to do this, simply add lines to the end of the program (your first added function might be on lines 1 600 and 1610) and add the line number(s) to the ON . . . GOTO statement in line 300.
Important Variables in Calculator
NM The number that is calculated
FUNG The function that is chosen
NM2 Second number for adding, subtracting,
or whatever
Important Lines in Calculator
20 Sets trigonometric functions to degrees
100-200 Sets up list of functions
220 Displays number
225-250 Gets number and function by which to calculate
300 Goes to chosen function
BASIC SKILLS CHECK-UP
!f you think that calculators and computers have "spoiled" you into complete reliance on machines for simple mathematical functions, you might want to try this program. Or you could let a younger person use it to try out his or her skills at addition, subtraction, and multiplication. The challenge of this program is
52
not only getting the problems correct, but also doing so in as little time as possible.
The program begins by setting up the string arrays. It then waits for you to hit a key and press < RETURN> so it can begin.
50 DIM A*(l>
60 DIM YN*(1)
100 GRAPHICS O
HO POSITION 7,8
120 PR I NT "BASIC SKILLS CHECK-UP"
130 POSITION 4,12
140 PRINT-HIT ANY KEY TO CONTINUE"
150 INPUT A*
The ATARI now clears the screen and shows you the three options from which you may choose. Select one of these, and press <RETURN>.
160 GRAPHICS O
170 POSITION 5,8
180 PRINT" 1. ADDITION"
185 POSITION 5,9
190 PRINT "2- SUBTRACTION"
195 POSITION 5,10
200 PRINT"3- MULTIPLICATION"
210 PRINT: INPUT CH
Because the computer has to set a certain limit how high the ^andom numbers can be used to test you, the ATARI takes into consideration the function you have chosen. If you are going to be doing addition or subtraction, the limit of the random numbers will be from one to fifteen, since these are not too high for a person adding or subtracting. On the other hand, since multipli- cation is more difficult, the limit is set to nine. Also, the timer in the ATARI (in bytes 19 and 20 in the computer's memory) is set to zero. The computer then begins the FOR/NEXT loop to select ten random numbers for your problems.
53
215 GRAPHICS 0
220 LIMIT=15
230 IF CH=3 THEN LIMIT=9
240 POKE 19,0: POKE 20,0
250 FOR TIMES=1 TO 10
270 NUMl = INT<LiriIT#RND<l)+l)
280 NUM2=INT (LIMIT*RND (1 ) +1 )
Based on your selection, the computer will present a problem to you and accept an answer.
290 ON CH SOTO 300,320,340
300 PRINT NUM1;»+";NUM2; "=";
310 INPUT ANSWER: GOTO 500
320 PRINT NUt11;"-";NUM2; " = ";
330 INPUT ANSWER: GOTO 500
340 PRINT NUMl; "*";NUM2; "=";
350 INPUT ANSWER: GOTO 500
Once you have selected an answer the computer will check to see if you are right or wrong; if you are correct, it will go to the next question or repeat the question if you answered incorrectly.
This program is an excellent tool for sharpening up basic math skills since you have to work against the clock to answer the questions. To make it more difficult for the person using the program (even if that happens to be you), try to limit the amount of time in which questions can be answered. You could also increase the high limit on the random numbers that can be selected.
Important Variables in Basic Skills Check-Up
A$ Input to see if user is ready to continue
YN$ Input to see if user wants to use the program
again CH User's choice of function
LIMIT Sets limit of random numbers to 15 when doing
addition or subtraction and to 9 when doing
multiplication
54
NUM1 First random number
NUM2 Second random number
A The time the user takes to complete the problems
ANSWER The user's answer
TIMES The loop which asks for the answers to ten
problems
SECONDS User's time (variable A) converted to seconds
Important Lines in Basic Skills Check-Up
50-210 Initialization to set up menu
220-230 Sets upper limit of random numbers
240 Sets time to zero
250-280 Gets two random numbers
290-350 Prints selected random operation on screen and
gets answer from user 500-560 Checks if answer is right or wrong
"^00 Tells user he is wrong, goes to ask question
once again 800 Tells user he's right
900-920 Gets time, converts it to seconds
930-940 Tells user his time 950-980 Asks if the user wants to try again
4+2=^6
CORRECT
6 + 9 = '? 14
WRONG
6 + 9 = '^ 15
CORRECT
3 + 8 = ';'
Fig. 4-2. Skills Check-Up.
55
ENTER THE LENGTH OF THE RADIUS.
?10
THE AREA IS 314.59
HIT ANY KEY TO CONTINUE.
Fig. 4-3. Geometry program finding the area of a circle.
GEOMETRY
This next program is basically a tool, since it will solve geometry problems for you. With this tool you can find areas and volumes; you can also discover how the computer finds the answer to these problems. Figure 4-3 shows a sample problem. To use Geometry, you simply select a particular function and then give the computer the necessary data to solve the problem.
500 ON CH GOTO 510,530,550
510 IF ANSWER<>(NUM1+NUM2) THEN GOTO 700
520 GOTO 800
530 IF ANSWER<>(NU«1-NU«2) THEN GOTO 700
540 GOTO 800
550 IF ANSWER<>(NUM1*NUM2) THEN GOTO 700
560 GOTO 800
700 PRINT"WRaNG":GOTO 290
800 PRINT"CORRECT":NEXT TIMES
Once the ten math questions have been asked, the ATARI will inform you of the time it took you to answer the problems, and
56
then ask if you would like to use the program again. If so, you can select another function to practice. If not, the program will end.
900 A=PEEK<19)
9 1 0 SECDNDS=4 , 27* A
920 SECONDS=INT (SECONDS)
930 PRINT: PRINT
940 PRINT"YOUR TIME IS "; SECONDS;" SECONDS,"
950 PRINT: PRINT
960 PRINT"DO YOU WANT TO PLAY AGAIN";
970 INPUT YN*
980 IF YN*="Y" THEN RUN
First, the computer shows you the 16 different functions available to you and lets you tell it which function you wish to use.
50 DIM ANYSd)
100 GRAPHICS O
110 PR I NT : PR I NT : PR I NT
120 PRINT" 1. AREA OF A RECTANGLE"
130 PR INT "2. AREA OF A SQUARE"
140 PRINT "3. AREA OF A PARALLELOGRAM"
150 PRINT"4. AREA OF A TRIANGLE"
160 PRINT"5. AREA OF A TRAPEZOID"
170 PRINT"6. AREA OF A CIRCLE"
180 PRINT" 7, AREA OF A SPHERE"
190 PRINT"B, AREA OF A CUBE"
200 PR I NT "9, AREA OF A CYLINDER"
210 PRINT" 10- AREA OF A SPHERE"
220 PRINT" 11. VOLUME OF A RECTANGULAR SOLID"
230 PRINT" 12. VOLUME OF A CUBE"
240 PRINT" 13- VOLUME OF A CYLINDER"
250 PRINT" 14. VOLUME OF A SPHERE"
260 PRINT" 15- VOLUME OF A CONE"
57
270 PRINT" 16, VOLUME OF A PYRAMID"
280 PRINT: PRINT: PRINT"PLEASe CHOOSE ONE."
290 INPUT CHOICE
Your ATARI will now go to the line number that performs the function selected.
295 6RAPHICS O
300 ON CHOICE GOTO 350,400,500,600,700,800,900,1000,
1100,1200,1300,1400,1500,1600,1700,1800
Each Of the formulae below has to know certain facts to calculate the answer to your problem. For instance, to find the area of a square, the computer needs only the length of one side. To find the volume of a cone, however, the computer needs to find the radius of the base and the height of the cone. It finds out this data by accessing certain subroutines found near the end of the program. These subroutines will let you input the necessary data. Because the computer can use them over and over again, this program is shorter and more efficient than it would be if, for each of the problems, the computer had INPUT statements exclusively for that type of function. In the lines below, the computer will access the subroutines needed to get the neces- sary data, and then perform the function, go to the appropriate line number, and displays the result.
350 GOSUB 2000
360 GOSUB 2100
370 AREA-LN*WD
380 GOTO 6000
400 GOSUB 2000
410 AREA=LN*LN
420 GOTO 6000
5O0 GOSUB 2200
510 GOSUB 2300
520 AREA=BA*HT
530 GOTO 6000
58
600 GOSUB 2200
610 GOSUB 2300
620 AftEA=<BA*HT)/2
630 GOTO 6000
700 GOSUB 2200
710 GOSUB 2400
720 GOSUB 2300
730 AREA=< (BA+BA2)/2)*HT
740 GOTO 6000
800 GOSUB 2500
810 AREA=(RD*RD>*3_ 14159
B20 GOTO 60OO
900 GOSUB 2000
910 GOSUB 2100
920 GOSUB 2300
930 AREA=<2*LN*WD)+(4*LN*HT)
940 GOTO 6000
1000 GOSUB 2000
1010 AREA=6*LN*LN
1020 GOTO 6000 LI 00 GOSUB 2500
:ill0 GOSUB 2300
:. 120 AREA=2*RD*HT*3- 14159
1 130 GOTO 6000
J 200 GOSUB 2500
3 210 AREA=4*RD*RD*3. 14159
] 220 GOTO 6000
1300 GOSUB 2000
1310 GOSUB 2100
1320 GOSUB 2300
1330 VOL=LN*WD*HT
59
1.340 GOTO 6500
1400 GOSUB 2000
1410 VOL=LN*LN*LN
1420 GOTO 650O
1500 GOSUB 2300
1510 GOSUB 2500
1520 V0L=3. 14159*RD*RD*HT
1530 GOTO 6500
1600 GOSUB 2500
1610 V0L=(4*3. 14159*RD*RD*RD)/3
1620 GOTO 6500
1700 GOSUB 2300
1710 GOSUB 2500
1720 V0L=(3. 14159*RD*RD*HT)/3
1730 GOTO 65O0
1800 GOSUB 2200
1810 GOSUB 2300
1820 V0L=(BA*BA*HT)/3
1830 GOTO 6500
The lines below are the subroutines mentioned earlier. They allow you to enter the width, height, radius, or whatever else is needed to calculate an accurate answer about a geomet- ric shape or object.
2000 PRINT: PR I NT "ENTER THE LENGTH."
2010 INPUT LN
2020 RETURN
2100 PRINT: PRINT"ENTER THE WIDTH."
2110 INPUT WD
2120 RETURN
2200 PRINT; PR I NT "ENTER THE LENGTH OF THE BASE,"
60
2210 INPUT BA
2220 RETURN
2300 PR I NT: PR I NT "ENTER THE HEIGHT."
2310 INPUT HT
2320 RETURN
2400 PRINT: PR I NT "ENTER THE LENGTH OF THE SECOND BASE."
2410 INPUT BA2
2420 RETURN
2500 PRINT: PR I NT "ENTER THE LENGTH OF THE RADIUS,"
2510 INPUT RD
2520 RETURN
Once the ATARI has found the answer to your problem, it will display the area or the volume, whichever is appropriate.
6000 PRINTrPRINT
6010 PR I NT "THE AREA IS *' ; AREA
6020 GOTO 7000
6500 PRINTrPRINT
6510 PR I NT "THE VOLUME IS " ; VOL
The ATARI will then wait for you to press a key followed by the <RETURN> key to try another problem.
7000 PRINTrPRINT
7010 PRINT "HIT ANY KEY TO CONTINUE."
7020 INPUT ANYS
7030 GOTO 100
Again, you can put other formulae into this program, but you will have to compensate for the additions in the other parts of your program (such as the ON . . . GOTO statement). Inciden- tally, not only is this an excellent tool for calculating the answers to problems, but it could also be used (by a high school teacher, for example) to check geometry tests.
61
Important Variables in Geometry
CHOICE Input for the figure chosen by the user
AREA Area of a figure
VOL Volume of a figure
LN Length
WD Width
HT Height
BA Base length
BA2 Second base length
RD Radius
ANY$ Used to see if user wants to continue
Important Line Numbers in Geometry
50-290 Sets up menu
300 Goes to selected figure
350-1 830 Calculates areas or volume
2000-2520 Gets necessary input from user
6000-6020 Tells user the area
6500-6510 Tells user the volume
7000-7030 Waits until user is ready to continue
LENGTH CONVERTER
This last program is also a tool. It can convert linear units of one type, specifically measurements of length in either metric or "standard" units— as nonstandard as the American system is with respect to the rest of the world— into linear units of another type. For example, you could change a number of kilometers into miles, a number of centimeters into inches, or a number of kilometers into meters. You can change from any unit to any other unit, even metric to metric or standard to standard. A sample screen can be found in Fig. 4-4.
As usual, the first part of this program shows a menu of the different selections. You can chose from this menu the number of the unit you will give the computer and the unit to which you want to change. After the computer shows you the menu, it goes to the subroutine at line 4000, which will let you select both units and the quantity involved.
50 DIM INP*(1) 100 GRAPHICS O 200 POSITION 10,3
62
LENGTH CONVERTER
1. INCHES
2. FEET
3. YARDS
4. MILES
5. CENTIMETERS
6. METERS
7. KILOMETERS
WHICH IS THE UNIT THAT YOU WANT TO CHANGE FROM?
Fig. 4-4. Length Converter.
250 PRINT"LEN6TH CONVERTER"
260 PRINT: PRINT
300 PRINT" 1. INCHES"
310 PRINT"2. FEET"
320 PR I NT " 3 , YARDS "
330 PRINT"4. MILES"
340 PRINT"5. CENTIMETERS"
350 PRINT"6, METERS"
360 PR I NT " 7 . K I LOMETERS "
370 GOSUB 4000
The ATARI will then go to a line number based on the value of the variable UNIT1. At that line number will be another ON . . . GOTO statement which will, based on the value of UNIT2, find the line which will convert your number from the first unit to the second unit amount. At that point, the ATARI will go to line 5000 to give you the answer to the question.
63
380 ON UNITl GOTO 400,500,600,700,800,900,1000
400 ON UNIT2 GOTO 410,420,430,440,450,460,470
410 AM0UNT2=AM0UNT1:G0T0 5000
420 AMOUNT2=AMOUNT1/12:GOTO 5000
430 AM0UNT2=AM0UNT 1/36: GOTO 5000
440 AM0UNT2=(AM0UNTl/12)/5280:GOTO 5000
450 Ah0UNT2=AM0UNTl*2.54:G0T0 5000
460 Ari0UNT2=AM0L)NT 1 * . 0254 : GOTO 5000
470 AM0UNT2=( ( AMOUNT 1 / 12) /5280) #. 62: GOTO 5000
500 ON UNIT2 GOTO 510,520,530,540,550,560,570
510 AM0UNT2=AM0UNT 1*12: GOTO 5000
520 AMOUNT2=AMOUNTl:GOTO 5000
530 AM0UNT2=AMOUNTl/3:GOT0 5000
540 AMOUNT2=AMOUNTl/5280:6aTO 5000
550 AMOUNT2=(AMOUNTl*12)*2. 54s GOTO 5O00
560 AM0UNT2=Af10UNT 1*0. 3048: GOTO 5000
570 AM0UNT2=(AM0UNT1/5280)*1.61:G0T0 5000
600 ON UNIT2 GOTO 610,620,630,640,650,660,670
610 AM0UNT2=AM0UNT1*24:G0T0 5000
620 AM0UNT2=AM0UNT1*3:G0T0 5000
630 AM0UNT2=AM0UNT1:G0T0 5000
640 AM0UNT2= ( AMOUNT 1 *3 ) /5280: GOTO 5000
650 AMOUNT2=(AM0UNTl*24)*2.54:GOT0 5000
660 AMOUNT2=AM0UNTl*0.91:G0T0 5000
670 AM0UNT2= (AMOUNTl/ 1760) « 1.61: GOTO 5000
700 ON UNIT2 GOTO 710,720,730,740,750,760,770
710 AMOUNT2=(AM0UNTl*528O)*12:G0T0 5000
720 AMOUNT2=AMOUNT 1*5280: GOTO 5000
730 AM0UNT2=AM0UNT 1 * 1 760: GOTO 5000
740 AM0UNT2=AM0UNT1:G0T0 5000
64
750 AMaUNT2= (AMOUNT! *&3360) #2, 54: GOTO 5000
760 AMOUNT2=< AMOUNT 1*1. 61)* 1000: GOTO 5000
770 AM0UNT2=AM0UNT1*1-61:G0T0 5000
800 ON UNIT2 GOTO 810,820,830,840,850,860,870
810 AM0UNT2=AM0UNT1*0.39:G0T0 5000
820 AMOUNT2= ( AMOUNT 1 *0 . 39 ) / 1 2 : GOTO 5000
830 AM0UNT2=( (AM0UNT1*0. 39) /12) /3: GOTO 5000
840 AMOUNT2=< (AMOUNT 1*0. 39/1 2) >*5280: GOTO 5000
850 AMOUNT2=AMOUNTl:GOTO 5000
860 AM0UNT2=AM0UNT 1/100: GOTO 5000
870 AM0UNT2=AM0UNT1/ 1000: GOTO 5000
900 ON UNIT2 GOTO 910,920,930,940,950,960,970
910 AM0UNT2=AM0UNTl/0, 254: GOTO 5000
920 AMOUNT2=(AMOUNT1/0- 0254) /12r GOTO 5000
930 AMOUNT2=AMOUNTl*l-O9:G0T0 5OO0
940 AM0UNT2=( (AM0UNTl/.025 4)/12)*5280)*12:G0T0 5000
950 AM0UNT2=AM0UNT1* 100: GOTO 5000
960 AMOUNT2=AMOUNT 1 : GOTO 5000
970 AM0UNT2=AM0UNT1/ 1000: GOTO 5O0O
1000 ON UNIT2 GOTO 1010,1020,1030,1040,1050,1060,1070
1010 AM0UNT2=( (AMOUNT 1*. 62) *5280)* 12: GOTO 5000
1020 AM0UNT2=(AM0UNT1*0.62)*5280:G0T0 5000
1030 AM0UNT2=(AMaUNTl*0. 62)* 1760: GOTO 5000
1040 AMOUNT2=AMOUNTl*0-62:GOTO 5000
1050 AMOUNT2=AMOUNT1*100000:GOTO 5000
1060 AM0UNT2=AM0UNT1* 1000: GOTO 5000
1070 AMOUNT2=AMOUNTl:GOTO 5000
The subroutine below will let you Input the unit from which you want to change, the amount of the unit, and the unit to which you want to change.
65
4000 PRINT: PRINT"WHICH IS THE UNIT THAT YOU WANT TO CHANGE FROM?" 4010 INPUT UNITl
4020 PRINT: PR I NT "WHAT IS THE AMOUNT OF THIS UNIT?"
4030 INPUT AMOUNT 1
4040 PRINT: PR I NT "WHAT UNIT DO YOU WISH TO CHANGE TO?"
4050 INPUT UNIT2
4060 RETURN
Finally, the ATARI will tell you the answer in the new unit, and then wait for you to press a key plus <RETURN> to do another conversion.
5000 PRINT! PR I NT "THE AMOUNT OF THE NEW UNIT IS " ; AM0UNT2 5010 PRINT:PRINT"HIT ANY KEY TO CONTINUE." 5020 INPUT INP* 5030 GOTO 100
This completes this program, which will serve as a helpful conversion tool. You may also want to utilize this program as a testing machine, having a person figure out conversion prob- lems and then testing his or her answers against the computer's.
Important Variables in Length Converter
INP$ Input to see if user wants to continue
'JNITI The unit of measure that the user wants to
convert AM0UNT1 The amount of this unit
UNIT2 The unit that to which the user wants to
change AMOUNT2 The amount of the above
Important Lines in Length Converter
50-370 Initialization/Prints Menu
380 Goes to selected unit
400-1070 Converts to selected unit
4000-4060 Gets necessary input
5000 Gives user the answer
5010-5030 Waits until the user wants to continue
66
This completes our exploration of how the computer can work with math. After using these programs, you will discover that your ATARI is an excellent tool for mathematics. You may write some programs yourself covering other areas of math, such as calculus, graphing, and geometry— accompanied by graphics to show the various geometric shapes and their for- mulae.
67
Chapter 5
Graphics Programs for the ATARI
The ATARI home computers can produce high-quality color graphics with only a few simple commands. It is certainly worth our while to take a look into the power of the graphics of the ATARI and explore some of its uses.
TERMS YOU NEED TO KNOW
Before we begin examining the BASIC programs in this chapter that work with the graphics of the ATARI, there are a few terms you need to know so you'll understand what I am talking about when I mention such things as hue, luminance, and high resolution.
Color. There are a total of 256 different colors you can utilize on the ATARI home computers, although some graphics modes don't support this many colors. In fact, in the very intricate and detailed graphics modes, as few as two colors may be available.
Graphics. These are the pictures (as opposed to the words and numbers) you see on the screen as in Fig. 5-1 . Bar graphs, line graphs, spaceships in arcade games, and any othertypes of visual images you see can be called graphics.
Low Resolution. Graphics which are rough, not well-defined, and not accurately representative of what they are supposed to be (for instance, graphics showing a ship which doesn't exactly look like a ship) are low-resolution graphics. These don't take up very much memory and are quite simple to program, but they are
69
WHAT IS THE FORMULA FOR THIS SHAPE?
ENTER ANSWER'^
Fig. 5-1. A screen showing graphics.
HERE ISA TRIANGLE
Fig. 5-2. Low-resolution graphics. 70
low in quality and aren't appropriate for things such as arcade games or line graphics, which generally require high resolution. For things such as bar graphs or simple charts, however, low resolution usually will suffice. Figure 5-2 is an example of low resolution.
High Resolution. This is the opposite of low resolution, since these graphics are sharp, very well-defined, and take up a significant amount of memory, time, and effort to complete and draw. Figure 5-3 shows high-resolution graphics.
Hue. This is a variation of a color. Its gradation along the spectrum of visible light from red to violet. With a change in hue, a color's appearance will also change.
Luminance. This is the "brightness" of a color. If you in- crease the luminance, the brightness increases.
Now that we have learned the definitions of these terms, we can take a look at the four different programs in this chapter.
COLORBAR
Using this first program is an excellent way to learn the significance of hue and luminance in affecting the way a color appears on the screen. To use this program, simply press the H
HERE ISA TRIANGLE
Fig. 5-3. High-resolution graphics.
71
key to increase the value of the hue, SHIFT-H to decrease the value of the hue, L to increase the luminance, and SHIFT-L to decrease the luminance.
The first part of the program puts the ATARI into graphics mode, makes certain that the values of hue and luminance are zero, and shows the values of both hue and luminance:
50 GRAPHICS 1
60 HUE=0
70 LUM=0
100 POSITION 1,1
110 PRINT "HUE IS ";HUE
115 PRINT "LUMINANCE IS ";LUM
At this point, color register four is set to the values of HUE and LUM; the ATARI begins monitoring the keyboard in case you press anything. If you press H, SHIFT-H, L, or SHIFT-L, the computer will go to the appropriate line number. If not, it will go back to line 130 to go through the process again.
120 SETCOLOR 4, HUE, LUM
130 A=PEEK(764)
140 IF A=57 THEN 2O0
150 IF A=0 THEN 300
160 IF A=121 THEN 400
170 IF A=64 THEN 500
180 GOTO 30
The different routines for changing hue and luminance are all basically the same. When the computer has finished making the changes in the variable specified, it goes to line 600 to "clear ouf the value in variable A. This keeps it from "thinking" that the key you just pressed is being pressed again.
200 IF HUE=15 THEN 600 210 HUE=HUE+1 220 GOTO 600
72
300 IF LUM=14 THEN 600
310 LUri=LUM+2
320 GOTO 600
400 IF HUE=0 THEN 600
410 HUE=HUE-1
420 GOTO 600
500 IF LUM=0 THEN 600
510 LUM=LUf1-2
520 GOTO 600
600 A=255
610 POKE 764,255
615 PRINT
620 GOTO 100
As you can see at line 620, the program keeps looping back to a point near the beginning so you can change the hue and luminance repeatedly. This program is helpful for finding the particular shades of color you need for your programs and also for learning about the significance of hue and luminance. You also might want to try changing the first value in the SETCOLOR statement (the register number, which is shown here as 4) to a different number to see the results.
Important Variables in Cotorbar
HUE Hue Value of SETCOLOR command
LUM Luminance value
A Value of key pressed
Important Line Numbers in Colorbar
110-115 Tells user the color values
120 Sets the color
1 30-1 80 Gets keyboard value
200-220 Adds 1 to hue value
300-320 Adds 2 to luminance value
400-420 Subtracts 1 from hue value
500-520 Subtracts 2 from luminance value
600-620 Resets keyboard value
73
SHAPES
Here is a simple program to teach you how to draw certain shapes, like three-dimensional cubes and two-dimensional triangles, on the video screen. The program will display a menu of four different shapes, plus an option to end the program. If you select a shape, it will be shown with the vertices used to draw it. If you want to end the program, simply select Option 5 and the program will stop. Figure 5-4 shows a sample rectangle.
At the beginning of the program, room is made for the C$ variable, the screen is cleared, and the menu, is displayed:
5 DIM C*<1)
10 GRAPHICS O
20 POSITION 7,7
30 PRINT "SAMPLE SHAPES LIBRARY"
40 POSITION 9, 10
50 PRINT "1. RECTANGLE"
60 POSITION 9,11
70 PRINT "2. TRIANGLE"
VERTICES AT 40, 40 AND 80, 40 AND 80, 80 AND 40, 80
Fig. 5-4. Sample screen from Shapes. 74
80 POSITION 9, 12
90 PRINT "3. BOX"
100 POSITION 9,13
110 PRINT "4, ABSTRACT"
120 POSITION 9,14
130 PRINT "5. END"
The program allows you to input your choice; it then acts on the value of your choice by going into high-resolution graphics mode, establishing a color for graphics, and going to the appro- priate line number.
140 INPUT CHOICE
145 GRAPHICS 14
147 COLOR 3
150 ON CHOICE GOTO 200,300,400,500,600
The shapes below are rectangle, triangle, box, and abstract, respectively. As you can see, the PLOT and DRAWTO statements are used to construct the shapes, while the PRINT statement displays the vertices used to draw the shape.
200 PLOT 40,40
210 DRAWTO QO, 40: DRAWTO 80,80
220 DRAWTO 40,80: DRAWTO 40,40
230 PRINT "VERTICES AT 40,40 AND 80,40"
240 PRINT "AND 80,80 AND 40,80-"
250 GOTO 700
300 PLOT 80, 20
310 DRAWTO 100,80: DRAWTO 60,80
320 DRAWTO 80,20
330 PRINT "VERTICES AT 80,20 AND 100,80"
340 PRINT "AND 60,80."
350 GOTO 700
400 PLOT 40,40
75
410 DRAWTO 80,40: DRAWTO 80,80
420 DRAWTO 40,80: DRAWTO 40,40
430 DRAWTO 60,20: DRAWTO 100,20
440 DRAWTO lOO, 60: DRAWTO 80, SO
445 PLOT 80,40
450 DRAWTO 100,20: PLOT 40,80
460 DRAWTO 60,60: DRAWTO 100, 60
470 PLOT 60,60: DRAWTO 60,20
480 PRINT "VERTICES AT 40,40 AND 80, 40 AND 80,80"
490 PRINT "AND 40,80 AND 60,20 AND 100,20 AND "
492 PRINT "100,60 AND 60,60"
495 GOTO 700
5O0 PLOT 20,20
510 FOR L00P1=1 TO 30
520 X=INT ( 160*RND ( 1 ) +1 )
530 Y=INT ( 160*RND (1 ) +1 )
540 DRAWTO X,Y
550 NEXT LOOPl
560 PRINT "30 RANDOM VERTICES"
570 GOTO 700
Option 5, '^End Program," simply clears the screen and ends the program.
600 GRAPHICS O 610 END
On the other hand, if you have selected a shape, you can draw another one by pressing C and then <RETURN> in an- swer to the question below:
700 PR I NT "INPUT C TO CONTINUE."; 710 INPUT C^ 720 GOTO 10
76
When you are drawing different shapes, you certainly don't have to use the vertices shown here, but you should examine the relationships of the vertices so you can draw similar shapes in your own programs.
Important Variables in Shapes
CHOICE Input user's choice of a shape
LOOP1 Loop used to make a random, abstract shape
X,Y Coordinates for abstract pattern
C$ Input used to play again or not
Important Line Numbers in Shapes
5-150 Initialization to get input from user and
go to chosen shape 200-250 Draws rectangle
300-350 Draws triangle
400-495 Draws a box
500-570 Draws an abstract figure
600-610 Ends program
700-720 Asks for input to continue or not
DRAWER
For sketching graphics on the screen, as in Fig. 5-5, you can use this short program that allows you to use the following keys for the following functions:
KEY FUNCTION
V Move Drawer up
B Move Drawer down
G Move Drawer left
H Move Drawer right
Q Turn color to cyan
W Turn color to orange
E Turn color to blue
R Go to "non-drawing" mode
The program begins by going into full-screen high- resolution graphics mode and assigning COLOR 2 to the graphics, while the X and Y values are set to zero:
77
Fig. 5-5. A drawing program example.
10 GRAPHICS 7+16 20 COLOR 2 30 X=0:Y=0
Then, the point in the upper left-hand corner of the screen is drawn, and the keyboard byte (764) is "cleared" by poking a value of 255 into it:
40 PLOT 0,0 100 POKE 764,255
At this point, the computer begins monitoring byte 764. Any activity in that byte will be interpreted by the computer and acted upon by the ATARI:
no K=PEEK(764) : IF K=255 THEN SOTO 110 120 IF K=47 THEN C0L=2: GOTO 400
78
130 IF K=46 THEN C0L==1:G0T0 400
140 IF K=42 THEN COL=3:GOTO 400
145 IF K=40 THEN COL=0:GOTO 400
150 IF K=43 THEN Y^Y-l:GOTO 200
160 IF K=61 THEN X=X-1:G0T0 200
170 IF K=57 THEN X=X+1:G0T0 200
180 IF K-:=21 THEN Y==Y+l:GOTO 200
190 GOTO 100
If the user happens to draw beyond the boundaries of the screen, the ATARI automatically corrects the mistake:
200 IF Y<0 THEN Y=0
210 IF Y>95 THEN Y=95
220 IF X<0 THEN X=0
230 IF X>159 THEN X=159
In addition, if the current.color of the cursor is 0 (blank), then a special routine at line 500 is accessed to blink the drawer temporarily. Otherwise the graphics are drawn on the screen and the computer goes back to the "keyboard detect" sequence.
235 IF COL=0 THEN GOSUB 500
240 DRAWTO X , Y
250 GOTO 100
400 PLOT X,Y
420 COLOR COL
430 GOTO 100
:500 COLOR 2
;510 PLOT X,Y
1520 FOR DELAY-1 TO 50: NEXT DELAY
530 COLOR O
:540 PLOT X,Y
1550 RETURN
79
When you want to nnove around the screen without drawing, go into the "non-draw" mode. Othenwise, select a color of your choice and draw with that. This program can be helpful when you are developing graphics or just experimenting with the potential of the ATARI home computer.
Important Variables in Drawer
X,Y Plot values
K Keyboard value
COL Color register value
DELAY Used for delay loop
Important Lines in Drawer
10-40 Initialization
1 00-1 90 Gets keyboard input
200-230 Sees if drawer is going off the edge
235 If drawing in erase mode, computer makes
a point blink to show where the drawer is. 240 Does actual drawing
400-430 Changes drawer to desired color
500-550 When in erase mode, makes a point
blink to show position
GRAPH
This program has a practical purpose in that you can use it for inputting data and having that data displayed in line graph form similar to Fig. 5-6. To use this program, simply type in the number of data items you will be entering (up to 1 0), then enter each value, which may range from 0 to 159. Once you have entered all of your numbers, the computer will plot it on the graph; you then have the option to draw another one.
First of all, the program sets aside room for its variables, clears the screen, and asks how many items there are to be entered:
5 DIM ITEM (10)
7 DIM Y*( 1)
lO GRAPHICS O
20 PRINT "HOW MANY ITEMS? (UP TO 10)"
30 INPUT ITEMS
80
Fig. 5-6. A line graph.
Then a loop begins so you can enter each of the items:
40 FOR L00P1=1 TO ITEMS
50 PRINT "ENTER AMOUNT OF ITEM ";LOOPX
60 PRINT " (UP TO 159) "
70 INPUT I
80 ITEM(L00P1)=I
90 NEXT LOOPl
Once you have put in all of your items, the ATARI computes how much space on the X-axis should be allocated for each item of data. It then goes into high-resolution graphics mode and draws the two axes:
1 00 ADDX=^ I NT ( 1 59/ 1 TEMS >
] 10 GRAPHICS 14
120 COLOR 1
125 PLOT 0,0
81
130 DRAWTO 0,159 140 DRAWTO 159,159
For graphing, the computer simply plots the first point and then goes to each successive data item you gave it using the DRAWTO statement. When it has finished you have your line graph. The computer asks you if you would like another graph, the answer to which question causes it to respond accordingly.
150 x=o
160 PLOT X,159-ITEM(1)
170 FOR L00P2=2 TO ITEMS
180 DRAWTO X+ADDX,159-ITEM(LOOP2)
190 X=X+ADDX
200 NEXT LaOP2
210 PRINT "WANT ANOTHER SRAPH"i INPUT Y*
220 IF Y*="Y" THEN RUN
230 GRAPHICS O
You might also try modifying this program to support bar graphs or line graphs that are "filled in" below the graph lines, so that a solid exists where there was space before.
Important Variables in Graph
ITEM (X) Data for items on X-axis ITEMS Input for number of items on X-axis
L00P1 Used to ask for input amount for above
I Input for entering data
ADDX Used when dividing up the X-axis so there
will be enough room for all pieces of data L00P2 Used to graph each amount on the ghd
X Number of positions on X-axis available
V$ Sees if you want to draw another graph or not
Important Line Numbers in Graph
20-90 Gets information for the graph
100 Gets amount to add to the value for the X-axis
each time a new point in drawn
82
120-140 Draws both axes
150-160 Graphs first item
1 70-200 Graphs other items
210-230 Checks to see if you want to draw another graph
These programs have only begun to touch upon the ATARI'S graphics capabilities, but they do give you an idea of the uses for this particular aspect of the computer. You might also want to try expehmenting with the ATARI graphics commands, working out program ideas that you could use for learning geometry, helping in business, or creating educational software for younger people. Whatever your purpose, the ATARI graphics capabilities should serve you well— as long as you use the available memory efficiently.
83
Chapter 6
Games
The ATARI home computers are probably best known for their ability to support high-quality games. These games, most of them "arcade-type/" have provided hours of entertainment for home computer owners— especially considering how much better computer games are over home video game systems.
In this chapter, we will be taking a look at three game programs. Because the BASIC language isn't as fast and effi- cient as the machine language in which most arcade games are written, these games are not "arcade-type." Nevertheless, they are still entertaining games which will teach you more about how BASIC may be used.
GUESS MY NUMBER
The first game, a very basic one at that, is called "Guess My Number/' and it involves trying to guess a random number the computer has generated and stored in its memory. The number can range from 1 to 100. Once you have guessed the number, the computer will tell you how many guesses it took your deduc- tive reasoning to find the number.
The program itself is extremely simple, since it uses primar- ily the RND and the INPUT statements. The first line creates a string, YN$, that can hold one character:
1 DIM YN^d)
85
Then the screen is cleared and the variable which records how many tries have been made is set to 1 :
2 GRAPHICS 0 5 TIMES=1
The random number is then generated by the RND state- ment, and the computer asks the user to guess the number.
1 0 NUMBER= I NT ( 1 00*RND ( 1 > + 1 ) 20 PR I NT "WHAT IS MY NUMBER? 30 INPUT GUESS
Once the guess has been input, the computer checks whether it is correct, too low, or too high. If the guess is greater than 100, It returns to the question at line 20. Otherwise, the computer will check the condition of the number and go to the appropriate line number:
40 IF GUESS > 100 THEN 20
50 IF GUESS >NUMBER THEN 80
60 IF GUESS< NUMBER THAN 110
70 IF GUESB=NUMBER THEN 140
Once it reaches the line number, the computer takes ap- propriate action for whatever the guess might be. If the guess Is too high, the computer goes to this routine:
80 PRINT "MY NUMBER IS LOWER" 90 TIMES=TIMES+1 100 GOTO 20
If the guess is too low:
110 PRINT "MY NUMBER IS HIGHER" 120 TIMES=TIMES+1 130 GOTO 20
Finally, If the guess is correct, the computer tells you how 86
many guesses it took you to find the correct number. It then asks whether you would like to play again or not, taking appropriate action on your response:
140 PRINTsPRINT
150 PRINT"YOU GOT MY NUMBER RIGHT IN "; TIMES; " GUESSES. "
160 PRINT"DO YOU WANT TO PLAY AGAIN?"
170 INPUT YN*
180 IF YN*="Y" THEN 2
This completes the program. When you are playing it, try to see how few guesses it takes you to guess the computer's number. A sample screen is. shown in Fig. 6-1.
YN$ TIMES
Important Variables in Guess My Number
Input to see if player wants to play again or not Used to count number of guesses the player needed to guess the correct number
WHAT IS MY NUMBER'?
?50
MY NUMBER IS LOWER
WHAT IS MY NUMBER'?
?
Fig. 6-1. Guess My Number.
87
NUMBER A random number between 1 and 100 GUESS The player's Guess
Important Line Numbers in Guess My Number
10 Gets random number
20-30 Gets player's guess
40-70 Checks to see what player guesses
80-130 Tells player whether number is higher
or lower than his guess
SIMON SAYS
This program is a memory game, since you must remember a sequence of colors and sounds the computer gives you. You select the difficulty level (how long the colors and sounds are shown and played) along, with the number of colors and sounds you must remember. The computer shows and plays the colors and sounds, and then you tell it what you remember. Afterwards you may play again, perhaps to try a more difficult level, or stop the game.
To set up the game, 1 programmed the computer to set up the variables RAN and RESPONSES and clear the screen:
10 DIM RAN(25)
20 DIM RESPONSE* (1)
50 GRAPHICS O
The computer then asks how many screens were wanted. The more screens there were, the harder it will be to remember all of them.
hO POSITION 4,9
70 PR I NT "HOW MANY SCREENS DO YOU WISH TO TRY?"
72 POSITION 4, 13
75 INPUT TIMES
The computer is then programmed to ask what difficulty level is desired. The difficulty level determines what period of time the color and sound will be shown and played. The higher
88
the number the longer the period, and thus the easier it is to remember the sequence.
80 POSITION 4, 15
85 PR I NT "ENTER DIFFICULTY LEVEL (1-3)"
90 POSITION 4,16
lOO PR I NT "LEVEL 1 IS THE MOST DIFFICULT"
110 INPUT LEVEL
1 20 DELAY=LEVEL* 1 00
The computer then clears the screen and begins the loop to select the random colors:
130 GRAPHICS O
140 FDR L00P1=1 TO TIMES
Once the loop is running, random numbers (between 1 and 4) are selected, the screen is cleared, and the computer access- es the appropriate combination of color and sound in accor- dance with the randomly chosen number.
200 RAN ( LOOP 1 ) = I NT ( RND ( 1 ) *4 ) + 1
210 GRAPHICS O
220 ON RAN ( LOOP 1) GOTO 300,400,500,600
The routines for the four different colors and sounds are as follows:
300 SETCOLDR 2,2,8
310 SOUND 0,100,14,15
320 GOTO 700
400 SETCOLOR 2,12,8
410 SOUND 0,50,8,15
420 GOTO 700
500 SETCOLOR 2,8,8
89
510 SOUND 0,50,14,15
520 GOTO 700
600 SETCOLOR 2,4,5
610 SOUND 0,250,14,15
The routine at line 700 delays for a short while so the color and sound will remain on. Then the computer clears the sound currently being played and checks to see if it should play another sound and show another color. If so, it continues the L00P1 . If not, it goes to line 800.
700 FOR L00P2=^l TO DELAY; NEXT L00P2
710 SOUND 0,0,0,0
720 IF LG0P1=TIMES THEN 800
730 NEXT LOOPl
At line 800, the computer begins the loop, which asks you which color was on the screen. It will continue asking you this until you have responded with the correct answer to all of the colors. Once it has finished this loop, it will move on to the rest of the program.
800 FDR L00P3=1 TO TIMES
810 GRAPHICS O
820 POSITION 6,6
830 PRINT" 1. ORANGE"
835 POSITION 6,7
840 PRINT"2. GREEN"
845 POSITION 6,8
850 PRINT"3. VIOLET"
855 POSITION 6,9
860 PRINT"4- RED"
870 POSITION 4,11
880 PR I NT "WHICH WAS COLOR SCREEN NUMBER " ; L00P3
890 INPUT ANSWER
90
900 IF ANSWER<>RAN(L00P3) THEN 1000 910 NEXT LQOP3
The remainder of the program either congratulates the player for answering all of the questions correctly or tells the player he input a wrong answer. After a win or lose has been called, the computer asks if the player would like to play the game again, so that it may take appropriate action.
?15 PRINT: PRINT"GOOD JOB ! "
920 PRINT: PRINT
930 PRINT"DO YOU WANT TO PLAY AGAIN?"
940 INPUT RESPONSE*
950 IF RESPONSE*="Y" THEN RUN
960 END
970 POSITION 6, 14
::010 PR INT "WRONG, , .YOU MISSED THAT COLOR,"
;.020 GOTO 920
This game Is good for working for memory and you should 1 ry to see just how many colors and sounds you can retain in your mind. You also might want to try increasing the difficulty level for added challenge in the game.
Important Variables in Simon Says
RAN(X) Random number (1 through 4) corresponding
to a color
RESPONSES Your response to whether you want to play
again or not l"IMES Input for number of screens to try
LEVEL Input for level of difficulty
L00P1 Loop to display the random colors
DELAY Used to delay loop in accordance with the
choice picked when "Enter difficulty level
(1-3)" is asked L00P2 Delay loop
LOOPS Asks for a certain number of answers,
equivalent to the value of the variable TIMES
91
ANSWER Input for the color the player thinks is correct
Important Line Numbers in Simon Says
70-100 Gets input from player
120 Sets length of delay used when showing each
color 140-730 Displays a certain number of colors
equivalent to the variables TIMES 200 Gets a random color (SETCOLOR value
ranging from 1 to 4) 220 Goes to randomly selected line number
700 Delay to display color on the screen for a
certain length of time 710 Turns off sound
800-910 Asks play what each color was 915 Tells player he got everything right
920-960 Asks "Do you want to play again?'" 1010 Tells player that he did not guess a color
correctly
BLACKJACK
Blackjack or "21 " is a popular card game in which you try to beat the "dealer" (the ATARI) by getting a score as close to the number of 21 as possible, without going over. You can also get a jack and an ace, which is an automatic win called "blackjack" (Fig. 6-2). Of course, the dealer could get blackjack or get closer to 21 than you after you decide not to "take another hit" (get another card). Simply try to get as close to 21 as you can, but avoid a "bust," which occurs when you go over 21. Keep in mind that the values for the cards are the same as their face value ; the jack, king, and queen have a value of 1 0, while the ace can have values of 11 or 1.
"Blackjack" begins by setting up the variables for the pro- gram and clearing the screen:
10 DIM RAN<52):DIM DEALT (52)
15 DIM CARD(52):DIM A*(2)
20 GRAPHICS O
30 M0NEY=100
92
The computer then "shuffles" the cards by assigning each card a unique value. This routine takes a while, since it must read data from lines 2000 through 2030 (also shown below) and make certain that the card it selects for variable is unique— so you won't wind up with a deck of 15 queens.
40 PR I NT "SHUFFLING"
45 NM=0
50 FOR L00P3=1 TO 52
60 DEALT (L00P3)=0
70 NEXT L00P3
100 FOR L00P1=1 TO 52
110 RAN (LOOPl ) =INT (52+RND ( 1 ) +1 )
120 FOR LaOP2=l TO 51
140 IF RAN (LOOPl )=DEALT(L00P2) THEN 110
150 NEXT L00P2
YOU HAVE 100 DOLLARS.
WHAT !S YOUR BET'^
?50
YOUR HAND TOTALS 18
WITH 0 ACES
THE DEALER HAS 10 + ';*
DO YOU WANT A HIT'?
Fig. 6-2. Blackjack.
93
160 DEALT (LOOPl ) =RAN(L00P1 )
170 FOR L00P4=1 TO RAN (LOOPl)
180 READ CARD
190 NEXT LOOP4
200 CARD (LOOPl ) =CARD
210 RESTORE
220 NEXT LOOPl
2000 DATA 11,10,10,10,10,9,8,7,6,5,4,3,2
2010 DATA 11,10,10,10,10,9,8,7,6,5,4,3,2
2020 DATA 11,10,10,10,10,9,8,7,6,5,4,3,2
2030 DATA 11,10,10,10,10,9,8,7,6,5,4,3,2
The computer clears the screen, determines that the number of aces the player an(j the dealer have is zero, and then checks to see if there are enough cards with which to play. If there are not. the computer goes to a reshuffling routine at line 1700.
300 GRAPHICS O
303 PA=0:DA=0
305 IF NM>37 THEN 1700
In order for a person to know how much money is available for betting, the computer shows the amount of money the player has. then accepts a bet from the player:
310 PR I NT "YOU HAVE "; MONEY;" DOLLARS."
320 PRINT
330 PR I NT "WHAT IS YOUR BET?"
340 INPUT BET
350 IF BET>MONEY THEN 330
360 MONEY=MONEY-BET
The computer gives the player his hand of cards, totals their value, and then tells the player the value of his cards and how many aces he has.
94
:j70 nm=nm+i
:;80 phand=card (nm) +card (nm+1 )
390 if card (nm) ^11 then pa=pa+1
400 IF CARD(NM+1)=11 tHEN PA=PA+1
405 NM=NM+2
410 IF PHAND=21 THEN 1000
420 IF PHAND>21 THEN GOSUB 1100
430 PR I NT "YOUR HAND TOTALS " ; PHAND
440 PRINT"WITH ";PA;'* ACES."
The computer then does the same for the dealer:
500 DHAND=C ARD ( NM ) +CARD ( NM+ 1 )
510 IF CARD (NM) =11 THEN DA=DA+1
520 IF CARD(NM+1)=11 THEN DA=DA+1
525 Nri+2
530 IF DHAND=21 THEN 1200
540 IF DHAND>21 THEN GOSUB 1300
550 PRINTiPRINT
560 PR I NT "THE DEALER HAS:"
570 PRINT CARD<NM);" + ?"
600 PRINTiPRINT
The player is then asked if he wants a hit. If he does, he is given another card and the value of the hand is checked again. If he does not want anothercard (i.e. "stand"), the computer will go to the routine at line 750. Figure 6-2 outlines the dialogue up to this point.
610 PRINT"DO YOU WANT A HIT?"
620 INPUT A*
630 IF A*<>"Y" THEN 750
640 PHAND=PHAND+CARD < NM )
650 NM=NM+1
95
660 IF CARD<NM-1)=11 THEN PA=PA+1
670 IF PHAND>21 THEN GOSUB llOO
680 PR I NT "YOUR HAND TOTALS "; PH AND
690 PRINT"WITH •*;PA;" ACES."
700 GOTO 600
If the player decides to stand, the computer will show the dealers hand and will compare the value of the dealer's hand with the value of the player's hand, taking appropriate action for whatever the condition might be. For example, if the dealer requires a hit. the computer will give him one. If the dealer has a good hand, the computer will go to the routine at line 1400, showing that the dealer has won.
750 PRINTsPRINT
760 PR I NT "THE DEALER'S HAND TOTALS " ; DHAND
770 PR I NT "HE HAS ";DA;" ACES."
780 IF PHAND>DHAND THEN 900
790 IF DHAND=PHAND THEN 900
800 IF DHAND >PHAND THEN 14O0
900 IF DHAND >16 THEN 1500
If the computer decides to go to line 91 0, the dealer receives a hit, checks his hand, then goes back to the previous routine to see if he requires another hit.
9 1 0 DHAND=DHAND+CARD ( NM )
920 IF CARD<NM)=11 THEN DA=DA+1
930 NM=NM+1
940 IF DHAND >21 THEN GOSUB 1300
950 GOTO 760
In the unlikely event that the player is dealt a blackjack, the computer informs that player that he has indeed acquired a 21 -point hand, allowing him to win triple his bet money— and the game.
96
1000 PR I NT: PR I NT "BLACKJACK"
1010 BET=BET^t3
1020 MONEY^MONEY+BET
1030 GOTO 1600
If the player's cards have a value over 21, the aces are reduced from 11 to 1 by the computer, as shown below:
1100 IF PA<1 THEN 1400 1110 PA=PA-1 1120 PHAND=PHAND-10 1130 RETURN
Of course, the dealer can also get a blackjack. The routine below allows for that possibility, and also includes the equivalent of the "ace routine" shown above.
1200 PR I NT: PR I NT "THE DEALER HAS 21."
1205 IF MONEY=0 THEN 1900
1210 GOTO 1600
13O0 IF DA<1 THEN 1500
1310 DA=DA-1
1320 DHAND=DHAND-10
1330 RETURN
Finally, here are the routines for winning and losing the game, along with the lines which ask the player if he would like to play the game again. The last few lines are for the purpose of "reshuffling" the deck, in case the cards remaining are too few in number:
1400 PRINT: PR I NT "YOUR HAND TOTALS " ; PHAWn 1410 PR I NT "THE DEALER HAS " ; DHAND 1415 PRINT"YOU LOSE." 1417 IF MONEY=0 THEN 1900 1420 GOTO 1600
97
1500 PR I NT: PR I NT "YOUR HAND TOTALS " ; PHAND
1510 PR I NT "THE DEALER HAS " ; DHAND
1520 PRINT"YOU WIN!"
1530 M0NEY=M0NEY+BET*2
1600 PRINT: PRINT"DO YOU WANT TO PLAY AGAIN?"
1610 INPUT A*
1620 IF A«="Y" THEN 300
1630 END
1700 PR I NT: PR I NT "SORRY, I MUST RE -SHUFFLE. "
1705 MONEY=MONEY+BET
1710 GOTO 45
RAN(X)
DEALT(X)
CARD(NM)
A$
MONEY
L00P3
L00P1
CARD
LOOP2
L00P4
PA
DA
BET
PHAND
DHAND
Important Variables in Blackjack
Random number to read off a random amount
of data
Used to make sure that the same RAN(X)
has not been used twice
Value of Xth card in shuffled deck
Input to see if player wants to play again
Amount that player has in dollars
Sets DEALT(X) values to zero
Loop for card shuffling routine
Card values read from data
Makes sure that same RAN(X) is not used twice
Used to read data
Number of aces the player has
Number of aces the dealer has
Amount that player bets
Total value of player's hand
Total value of dealers hand
Important Line Numbers in Blackjack
10-45 Initialization
50-70 Clearing DEALT(X)
100-200 Entire shuffling routine
110 Get random value
120-150 Makes sure value has not been used before
98
160 Stores random value for use in 120-150
1 70-1 90 READS random number of card values
200 Gets value of card
305 Goes to line 1700 if there are not enough
cards with which to play 31 0-340 Gets players bet 350 Makes sure the player doesn't bet more than
he has 370-440 Gives player his hand, counts number of aces,
totals its value, see if it's over 21 or 21 even 500-570 Does same for the dealer
600-630 Sees if player wants a hit
640-690 Gives player a hit, checks value of hand
700 uoes to ask if player wants a hit again
750-900 Sees if dealer needs a hit, or if he has 17or over
910-950 Gives dealer a hit, checks his hand, goes back
to see if he needs another hit 1 000-1 030 Tells player he got blackjack, asks if he wants to
play again after adding to his money 1 1 00-1 1 30 This routine checks to see if the player has any
aces since he has over 21 . Aces are
therefore changed from 1 1 to 1 1 200-1 21 0 Informs the player that the dealer dealt himself
21 , sees if player lost all of his money or not 1300-1330 Ace routine for the dealer 1400-1420 Informs the player that he has lost 1 500-1 530 Informs the player that he has won and adds
his bet to the money he already has 1600-1620 Sees if player wants to play again.
Now that we have taken a look at just about every type of program we can make on the ATARI home computer, and are knowledgeable in the BASIC language and how it can be utilized, we can complete our learning and programming experi- ence. Let's see how you can make your own ideas for your own programs and then develop them into actual, working pieces of software.
99
Chapter 7
Creating Your Own Programs
Up to now you have been entering and using the programs in this book, discovering the various keywords used in creating pro- grams, and finding out new uses for your computer. Along the way. you have probably devised some program ideas of your own. and you might have modified the programs in this book for your own purposes or experimentation. If you have, this is an excellent first step to becoming "your own programmer." If you havent. you might want to try to develop your programming skills now by reviewing some of the programs you have typed in and making some changes, no matter how insignificant.
The main point is that helping you acquire the ability to create your own programs is one of the main purposes of this book. You should learn at least some of the BASIC keywords of the ATARI and know the proper way to put the words together to make a usable program. More importantly, you should learn the technique behind creating a program. This last aspect has not yet been covered, so we will explore it in this final chapter.
THE USEFUL COMPUTER
Because one of the most important aspects of creating a program is coming up with an original program idea, we should first look at the different types of programs so you can find an idea which might fit into one of these types. Reading about these
101
various kinds of programs will probably make it easier for you to develop an idea for a program.
The first (and probably most obvious) type of program for the 600XL or 800XL computer system is entertainment software. Their high-resolution graphics, excellent sounds, and relatively large memory make them excellent machines on which to play games. There have already been a wide variety of computer games developed for the ATARI home computers, and here are some types that have already come into existence for the 600XL and 800XL.
Games of Chance. These might be called "gambling games," since they involve themes that would usually be found in Las Vegas. 'One-Armed Bandit" (a slot machine), Blackjack, and Keno are just a few. Computers are excellent for playing card games and games of chance, especially the 600XL or 800XL with color graphics (useful for displaying cards, slot machines, or dice), sounds (for indicating winning or losing), and large mem- ory (for storing a great deal of information).
Adventures. An adventure is a game in which you play the part of a person in a strange situation (such as on a deserted island, on a faraway planet, or in a haunted house) who must use skill and luck to retrieve treasures, stay alive, or (usually) both. Adventures are enjoyable because they involve strategy and wit, and they can put you in a fantasy world which only your computer and your imagination can produce.
Arcade Games. These are certainly the most popular of all kinds of games, since they combine exciting graphics, sounds, and fast action to produce a game requiring fast reflexes— but little intelligence. One look at any magazine which includes the ATARI home computers in its subject matter will show you that there are many arcade gamescurrently available forthe ATARI.
Board Games. Some games (like 'Xife" from Milton Bradley and "Monopoly" from Parker Brothers) commonly played on boards can be adapted for use on the computer. In fact, some games exist for other computers which let the computer play against you in a board game.
Logic Games. Games which require a lot of logical thinking (like ''Mastermind, ' which requires you to pick out a pattern of four colored pegs) are popular on computers, since program- mers and other people who enjoy computers are usually logical folks who enjoy using their mind to solve problems.
This covers most of the different kinds of games which are
102
available for the 600XL and 800XL computer systems. Another type of software which give the 600XL or 800XL a useful appli- cation besides entertainment is educational software.
Learning from a computer is an extremely exciting possibil- ity. Children (and adults) can discover foreign languages, ad- vanced mathematics, and excellent spelling habits by utilizing a computer able to show them rules, test them, quiz them with repetitive questions and have an infinite amount of patience and encouragement. Human teachers certainly can do a lot better teaching some subjects than computers can, but for repetitive teaching or education which doesn't require a lot of creativity or customized training by the educator, computers are excellent for instructing people in a wide variety of subjects.
There are several types of programs available today which can help many young people and adults in learning about math, science, spelling, or practically any other subject.
Computer Literacy. One of the best things that computers like the 600XL or 800XL can teach is. naturally, how to work with computers. Programs can teach how to use the BASIC lan- guage, how to use the keyboard, what the different parts of a computer are, how to use a word processor, and what program- ming is involved in producing graphics and sounds. As I have mentioned before, experience is a much better teacher than a book (including this one), or a program, but you need to learn the basic information somewhere— which is why a book and/or a program is often helpful when you are learning about your com- puter.
SAT Instruction. The infamous Scholastic Aptitude Test (SAT) is one of the most important criteha used by colleges considering high school students for admittance. Because of this, the SAT is a matter of great importance to many young people. This is why programs which assist young people with the SAT tend to be very popular. In addition, computers can teach other tests, such as the PSAT, Achievement Tests, or tests at the college level.
Drilling and Practice. The most popular kind of educational program is the "drilling and practice" program, which teaches a person something through repeated instruction and testing. The subject could be mathematics (addition, subtraction, multiplica- tion, geometry), science (formulae, science in history), or any other subject you can imagine.
Educational software is commonly used in the home, but
103
some schools are starting to purchase these types of programs as supplements to their teaching curricula. At home, another useful type of software available for the 600XL or 800XL is the home finance program. Keeping track of financial records is an excellent application for computers; the 600XL or 800XL is able to help you plan your budgets, balance your checkbook, make investments, and manage your whole "portfolio" and finances for your household. Being a computer, the 600XL or 800XL is a "whiz at math" with a significant amount of memory; the pro- grams using these qualities to keep track of home finances will be very useful indeed.
Even though the 600XL or BOOXL can be used with the popular AtariWriter word processor from Atari, Inc., there are additional word processing programs available, which you will see advertised in most general computer magazines. They may have some extra features you might find desirable that Atari- Writer doesn't have. Besides the other WP programs, there are "supplemental" programs made for AtariWriter and other word processors which check the spelling of your documents. You can then use your word processor for form letters and other business-related needs without having to worry about misspell- ings.
Finally, another application made possible through software development for the 600XL and BOOXL Is the use of other computer languages. Currently the 600XL and 800XL not only let a user work with BASIC, but also have the software to support other languages (such as machine language and LOGO). You can learn more about the languages of computers (for there are many of them) and find ways in which programs can operate faster and more efficiently.
The demand for software with the 600XL or 800XL has been very high, but there are always more programs or applications you can create (by making your own programs) that people will find useful. Here is where a great opportunity for you comes in. You can make software for the 600XL or BOOXL and sell it to other people. You could be one of the "suppliers of software" for the many who will be wanting it. On the other hand, you might want to program the software yourself and, instead of selling it yourself, find a software publisher to mass produce and sell it for you. This is exactly the subject of the next section, in which we'll explore ways to create programs with your machine — and perhaps later make money with your 600XL or 800XL computer.
104
GETTING AND DEVELOPING THE IDEA
I have written a large number of nationally marketed pro- grams myself, so people sometimes ask me, "What is the hard- est part about making a program?" I reply to their surprise, "Getting the idea.'' This might not be an absolutely true state- ment, since debugging a program is also extremely difficult, but I do find that getting and developing an Idea for a program is often one of the most difficult parts of programming.
When you are trying to think of an idea for a program, you should think of who is going to be using it. Naturally, if it is for your own use, you should make only what you need. If you are going to be making a program for other people to use, however, you'll probably want to think of an original idea. This can be very difficult indeed, since there are already a great many programs available on the market. The best way to create an original idea foraprogram. though, istothinkofaneed which someone might want "filled ' by a computer. Here are a few types of people, along with a sample program each might find useful:
POTENTIAL USER USEFUL PROGRAM IDEA
Teachers Software to keep track of grades
Church Program to keep records of
Administrators donations
Students Programs to help with SAT test
Small Businessman Inventory records program
Audiophile Program to keep track of records
Remember also, especially if you are a young person who enjoys video games, that games are not the only programs you can create for the 600XL or 800XL. Some kinds of programs you could try to Include word processors, communications programs, utility (programmer helper) programs, and almost anything else you can devise. Just keep this in mnd.the more original, useful, and needed your program is, the more popular it will be.
If you are going to create a program simply for your own purposes, then teach yourself more about computers, think of the various features your computer possesses and how to exploit them, and experiment with BASIC keywords and techniques you have not used before. You can learn how to program like a professional, since professionals build their
105
knowledge on their own experience.
The best-selling programs are attractive to large numbers of people; however, you might want to make a program for a more narrow group of people— like your family, your friends, or stu- dents who attend a nearby school.
Let's assume that we need to create a program for an introductory computer class. In order to get the idea for this program, we think about what would impress or interest a class about computers. One idea that comes to mind is a short, simple program which lets the computer introduce Itself, gets the user's name, and then greets the user by name. This is, of course, a very basic program, but for this example it will suffice.
At this point, we need to develop the program idea. De- velopment involves the expans/on of your idea, paying attention to minute details, and sometimes drawing a flowchart of your program. Not all of the specifics you write down about your program may make it into the final product. You should have some flexibility in your programming, but you should try to stick to your original ideas as much as possible.
As far as flowcharting is concerned, we aren^t going to use a flowchart in our programming example because the program is too short and simple to require one. More complex programs do require flowcharts, but you can probably get away without them until you are making programs larger than, say, forty lines long. Still, flowcharting is good logical exercise and an excellent habit to aquire.
A flowchart is basically a picture of a program's "flow"— the sequence of processes by which it works. A flowchart shows, with words and shapes, the main parts of a program and how they interact with one another. There are five main symbols, shown in Fig. 7-1, which make up most flowcharts.
START/STOP oval. This indicates the beginning and end of a program.
Rectangle. Most of a program's functions are represented within a rectangle, which represents unconditional, "process" action. Such statements as PRINT, READ, clear the screen, and variable assignments can be represented within the rectangle, along with most other statements not including INPUT END and IF-THEN.
Diamond. This figure represents conditional action, i.e., de- cisions made by the computer. IF-THEN statements are con- tained within diamonds. There are two arrows coming out of the
106
t
1
STOP/START OVAL
PROCEDURE RECTANGLE
DECISION DIAMOND
INPUT PARALLELOGRAM
FLOW ARROWS
Fig. 7-1. Flowchart symbols.
diamond rather than just one, as with other statements. One arrow represents where program execution will "flow" If a condi- tion turns out to be false, while another arrow is for a true condition.
Parallelogram. For statements involving INPUT, use this figure.
107
Arrows. The arrows in a flowchart represent the "flow" of a program. Execution can travel only in the direction of the arrow.
Another important part in developing a program is forming the essential details relating to the program. For example, some of the details relating to our simple example in this chapter include:
1) The program will have to introduce itself to the person. This will involve clearing the screen and PRINTing sev- eral lines.
2) When the computer asks the user's name, an INPUT statement will be required to get the input.
3) Once the computer knows the person's name, it will have to use the person's name (now represented by a variable) along with some PRINT statements to greet that person.
If you are making a more complex program, such as one involving business or word processing, your "details" can be far more general, such as, "The computer will have to be able to search for words within a document, so I must program it to store a 'search string' and look for it within the document," or, "In the middle of the program, the values will have to be stored on the disk to insure they are not lost." As far as our program is con- cerned, however, we have created an idea for it and we know the fundamentals parts of the program which must be coded.
PROGRAMMING
The actual programming will be a lot easier if you have a flowchart at hand when you are making a large program. What- ever the size of your project, you should have the details of the program written on paper, as well as a good idea of what keywords and techniques you'll be using In the program. If you are making a large program, try breaking it down into smaller sections, and program these one at a time. In addition, try checking each of these individual sections as you go along to save yourself time in the debugging process. Getting rid of problems now will be much easier than searching through your entire program later for the bugs. Last, be creative, innovative, and as efficient as possible when you are programming, since these three elements are essential to creating a quality program.
108
Our "simple sample" won't be hard to make. First of all, we need to construct the computer's introduction as follows:
10 REN INTRODUCTORY CLASS PROGRAM
20 PRINT"HI THERE. I AM AN ATARI COMPUTER. I AM NEW"
30 PR I NT "AROUND HERE, SO I WAS HOPING YOU COULD TELL"
The first line is a REMark to show the purpose of the program. In lines 20 and 30, the computer introduces itself. At this point, we can make the part which allows INPUT from the user so that he can identify himself.
40 INPUT "WHAT IZ YOUR NAME*';NS
Finally, the computer greets the person by name:
50 PRINT"HELL0 THERE, ":PRINT N*
Don^t be alarmed if you see a few errors in the program above. This is intentional since we need to see how we go about debugging a program in the next section.
DEBUGGING
The most grueling and boring step of making a program, as well as the most exciting and rewarding, is the debugging pro- cess. It is boring because you have to search through your program to find any problems or potential errors, and it is exciting because you will feel a surge of victory every time you conquer a bug. Looking for those elusive bugs involves testing every pos- sible input the user could give the computer, making the program do everything it is capable of doing, and trying your best to make the program fail. You will probably be somewhat cautious while testing your program, since nobody likes to find more problems to solve. Do not simply give up, however, assuming that you have conquered all the bugs. You must give your program a real workout to assure top performance. Spend all the time you can with it. since there may still be one problem which a user could discover later. This could be rather embarassing.
Our program has a few problems in it. First of all, it should do the following:
HI THERE- I AM AN ATARI COMPUTER. I AM NEW
109
AROUND HERE, SO I WAS HOPING YOU COULD TELL ME: WHAT IS YOUR NAME? TIM KNIGHT HELLO THERE, TIM KNIGHT
However, if you run the program, you will find it does this:
HI THERE. I AM AN ATARI COMPUTER, I AM NEW AROUND HERE, SO I WAS HOPING YOU COULD TELL WHAT IZ YOUR NAME? TIM KNIGHT HELLO THERE, TIM KNIGHT
As you can tell, we have a few mistakes which need cor- recting. To begin with, the third line of text is not right. Change the WHAT 12 YOUR NAME to ME: WHAT IS YOUR NAME. Also, the name is phnted on the second line rather than on the same line as HELLO THERE. To correct this, you can either put a semicolon after the end quote following HELLO THERE, or you can simply eliminate the second PRINT statement in line 50. The line would then read PRINT'HELLO THERE, "N$.
This program wasn't very difficult to debug since it was so small, but most programs are rather tedious and mind-boggling when you are debugging them. Remember these important things when you are debugging any program:
1 ) For a program that requires input, try inputting anything you can imagine. If the program wants numbers, give it letters, names, symbols, and anything else you can type. If a computer wants you to use the "6" key to move the cursor right, keep pressing it to see if an error will occurwhen the cursortriesto move off the boundariesof the screen.
2) Try every incorrect method of using a program to make sure that it is foolproof.
3) Get other people to use your program. They are much better judges of it than you are. They can also provide helpful constructive criticism and comments on the pro- gram, and can alert you to problems existing in the software.
110
Once you have finished programming and debugging a piece of software, you should write some documentation (in- structions) for it. Simply type out the basic facts a person needs to know to use your program, and mention some ways in which the program can be used. If you are doing the program for a software company, you should make the documentation itself an excellent work. Since you probably won't be doing that for a while, there's no need yet to concentrate on writing anything but the essentials.
MAKING PROGRAMS AND MONEY WITH YOUR ATARI
Many people (including a large number of young people) have made something of a business out of writing software for computers. In fact, being a professional programmer can be a very profitable job, even if you just work out of your home producing one or two programs a year. Until now the software market has been pretty well saturated for most computers, but newly introduced machines offer an excellent opportunity for programmers to write more software for a variety of applications. This opportunity exists with the 600XL or 800XL, and you could make yourself quite a lot of money with your computer through software development.
There are a number of ways to make money with computers (see Fig. 7-2). Writing software reviews for computer mag- azines, writing articles, creating computer-related books, teaching computer classes, or serving as a computer consultant to a person or a business are just a few. However, the particular way of making money with your600XLor800XLI am discussing now— making software— probably offers more rewards and ex- citementthananyothercomputer-relatedbusinessopportunity.
The profits of making software come in a vahety of forms. First of all, writing a program will inevitably put you in the position of being an ''exterminator," since you'll have to seek out and destroy all the bugs in the program you create. The profit from this, though, is the good feeling you have when you finally remove a bug from your program. Until you actually find and fix a difficult mistake in one of your own creations, you won't be able to understand the feeling of accomplishment your achievement can give you. After you have, you'll want to keep searching and stamping out those bugs, no matter how frustrating and time- consuming they might be.
111
CO
LU
> LU
CO
LU
O
cn <
^N
<D
C
o
TO
112
Another profit which comes from making programs, natur- ally, is the money you receive. If you give your program to a software publisher, which is probably the best decision, you will receive a certain royalty for every copy of your program that is sold. For instance, assume you have made a great home finance manager program that is being sold for $30 per copy. Assume again that you receive 25 percent of the wholesale price of your program (about $15), making your royalty $3.75. If 10,000 600XL or 800XL users purchase your program, this would result in a profit of $37,500 for you— which is an excellent compensa- tion for your work as a programmer. Of course, you shouldn't always expect royalties this high, but some people have made millions of dollars on their programs. (One person I know made a million with one arcade game.) Many other programmers have six-figure incomes for their work. The more popular the 600XLor 800XL becomes, and the better your program is (in addition to how good your software publisher is), the more money you are likely to receive for your program.
The method by which you create a program was discussed earlier in this book, but here are a few more pieces of advice when creating your program for the software market;
1 ) Make the documentation as complete and easy to un- derstand as possible. This will assist the novice 600XL or 800XL user in utilizing your program.
2) Test the program as thoroughly as you can before sending it to a software publisher. Have other people use your program, and get their constructive criticism of how your program can be improved, what problems exist in the program, and what can be done with the documentation to make the program easier to use as soon as a person purchases it.
3) When thinking up your original idea for the program, make it as original as possible and as attractive to a buyer as you can. Imagine yourself in the position of someone who is looking at a software package and has not tried the program, but who wants to find something that is entertaining, educational, or very useful.
The important step now is to get in contact with the software publishers who interest you, see if they like your idea for a
113
program, and then get to work on the actual software. Develop it and have the publisher market it for you,
THE FUTURE OF COMPUTERS
Since computers have changed so much over the past few years, it's difficult to say what will be happening to the ATARI 600XL, ATARI 800XL other home computers, and the field of high technology in general. However, I do have some sugges- tions as to what will probably be occurring over the next couple of years in these areas. These predictions may prove useful to you in some way.
Firstof all, computers aren'tlikely todrop inpricemuch more than they already have. When personal computers were intro- duced, they cost $2,000 or more, but a few years later the price fell to $500, $300, and then to $1 00 or less. Unfortunately, since the price fell so much, the cheapest personal computers became poorly constructed toys. The price increased, along with the quality, back to $200. At this price, personal computers were affordable and still of a quality high enough to satisfy the con- sumer. Prices stayed around $200 to $700 for home computers, but the features began to increase. The result, up to now, has been the 600XL or 800XL computer— low in price, but with a lot of fantastic features which would have cost you thousands of dollars a few years ago. This trend is likely to continue. You'll probably see more inexpensive and feature-packed computers appearing, in addition to low-cost extra peripherals and software being made available for the 600XL or 800XL.
Another important trend is that software is getting easier to use and more practical. This will result in computers being made even more useful than they already are, with programs being written in such easy to understand terms that even the novice will be able to utilize all kinds of software. A good example is Atari- Writer, which is a program made simple to use by extensive prompting from the computer.
Finally, computers will be expanding into what I like to call probots, which is short for personal robots (Fig. 7-3). Personal robots are an extension of the home computer, with all the powers of a computer like the 600XL or 800XL, but with the additional utility of motion and the power to manipulate objects. Soon your 600XL or 800XL computer may be able to control a personal robot and make it guard your house, watch for and extinguish fires, and entertain guests. The personal robotics
114
Fig. 7-3. A probot of the future.
revolution is likely to be as influential as the personal computer revolution, so it will be exciting to see what developments occur in that new field.
Your 600XL or 800XL computer is a powerful tool and a wonderful extension of yourown mind. Use it like atool, and let it entertain you, make you more efficient, and keep your records in order. The personal computer revolution has brought a lot of changes, including this inexpensive and powerful system called the 600XL or 800XL. Learn to program it well through your own experiences, and use it as often as you can for as many varied applications as you can find— to discover how useful and enjoy- able the ATARI 600XL or 800XL computer can truly be.
115
Glossary
Array— A set of variables set apart from one another by numeri- cal subscripts. Examples: A(1 ), B$(20), C(50). Before you use an array, you must set it up with the DIM statement.
ASCII— A standardized coding system which assigns corres- ponding code numbers to letters, numbers, and symbols.
Binary— The number system computers use, composed of zeros and ones.
Bit— The smallest unit of information the ATARI can hold. Bit is short for binary digit, since a bit can be either one or zero.
Bug— A problem in a program.
Byte— The basic unit of information in the computer. A byte is a unit of memory equal to eight bits.
Command— A word you give to the ATARI computer so that it will carry out some function.
Disk— A piece of Mylar plastic on which you can permanently store programs, data, and other kinds of information.
116
Disk drive— The device you use to store and retrieve programs and information. The disk drive is faster and more efficient than the tape recorder.
Display— The television set, monitor, screen, video display, or whatever you want to call the device that shows you the information of the computer on a cathode-ray tube.
Edit— To modify or change information.
Error— A mistake in a program, or in one of your commands to the computer.
Execute— To begin running (using) a program.
Graphics— Visual information in the form of pictures such as bar graphs, spaceships in a game, or a piece of "computer art" formed by the ATARI'S advanced high-resolution graphics. The ATARI can also support low-resolution graphics, which aren't as well-defined but can be displayed in a wider variety of colors.
Hardware— The electronic components of a computer system, such as the printer, the keyboard, the microprocessor, and so on. Hardware can be physically damaged if mistreated, so treat your ATARI with care.
Integer— A whole number without a decimal part. 5, 2, 6, and 2,034 are integers, while 2.53245 is not.
Joystick- The device usually used in games to move your "man" around the screen. Joysticks are attached to the keyboard and can be used to indicate direction. Because of this, they are commonly used in arcade-type games.
K— The name given to designate a certain amount of memory. One K is equal to 1,024 bytes. The ATARI 600XL has 16K, which equals 16,384 bytes of memory.
Keyboard— The part of the ATARI Computer System on which you can type information for the computer to use.
117
Machine Language— An extremely fast means by which the com- puter can carry out programs, since machine language is the actual "language of the computer"— as opposed to BASIC, which must be interpreted by the computer and translated by the ATARI into its own machine language.
Memory— The computer's information storage center.
Peripheral— An extra device for your computer, such as a printer, a modem, a disk drive, or a joystick.
Printer— The device which gives you a "hardcopy" (printed ver- sion) of information, such as a letter, a listing of a program, or an essay.
Reserved word— A word which can be used only by the ATARI. You cannot use it for variable names or uses other than giving the ATARI commands. For example, you couldn't let a vari- able named LIST equal 1 0 since the name LIST is used by the ATARI to list out programs. It is a reserved word.
Software— The programs the ATARI uses. When you turn the computer off, any software (programs) in the computer will be erased. In order to save programs for later use, store them onto a disk or a cassette tape.
String— A series of characters and/or symbols assigned to a variable called astring. String variables are represented by a dollar sign ($) following them. A$, Y1 $, and UU$ are all string variables, which can equal such things as "123," "YOU THERE," and "ATARI."
Text— Words and letters you can understand, such as this sen- tence.
118
Index
BASIC statements and functions are indexed by first usage in a pro- gram.
Adventure. 102
Assignment (implied LET) statement,
9 ATARI, voices of, 12
B
Basic Skills Check-Up program. 52 Blackjack program. 92
C
Calculator program, 49 CLOG function. 52 Colorbar program, 71 COLOR statement. 15 Computer literacy, 103 COS function, 52
D
DATA statement. 10 Debugging, 109 DEG statement, 50 DIM statement. 21 Documentation, 113 Drawer program, 77 DRAWTO statement. 15
END statement, 22
Flowchart, 106 Flowchart symbols, 107 FOR-TO-NEXT statement, 8 French Tutor program. 35
G
Games, arcade, 102 Games, board, 102 Games, logic, 102 Games of chance. 102 Geometry program, 56 GOSUB statement. 9 GOTO statement, 2 GRAPHICS statement. 7 Graph program. 80 Greater-than operator, 14 Guess My Number program, 85
H
High resolution. 71 History Quiz program. 27 Hue. 71
I
Idea development, 105 IF . . . THEN statement, 9 INPUT statement, 2 INT function, 19
119
L
Length Converter program. 62 Less-than operator, 14 LOGO. 104 Low resolution, 69 Luminance, 71
M
Machine language, 104 Making money, 1 1 1 Metric system, 62 Musical notation, 21 Music Creator program, 20
NEW command, v Notation, musical, 21
ON
GOTO statement, 8
REM statement, 2 RESTORE statement, 7 RETURN statement, 10 RND function, 19
Scholastic Aptitude Test (SAT), 103
SETCOLOR statement, 72
Shapes program, 74
Simon Says program, 88
SIN function. 52
Software, educational, 103
Software, entertainment, 102
Song Library program, 7
Sound Effects Library program, 17
Sound Maker program, 12
SOUND statement, 8
Spelling Tester program, 32
SQR function, 51
States and Capitals program, 40
PEEK function, 13 PLOT statement, 15 POKE statement, 13 POSITION statement, PRINT statement, 2 Probot. 114 Programming, 108 Publishers, software.
R
READ statement. 8
114
Tangent (computed), 52 Testing, program, 113 Time-delay loop. 18 Timer, memory location of. 53
U
Unequal-to operator, 22
V
VAL function, 22
120
Edited by Stephen Moore