Z*Magazine: 1-Feb-88 #91

From: Atari SIG (xx004@cleveland.Freenet.Edu)
Date: 07/24/93-09:19:08 AM Z

From: xx004@cleveland.Freenet.Edu (Atari SIG)
Subject: Z*Magazine:  1-Feb-88 #91
Date: Sat Jul 24 09:19:08 1993

SYNDICATE ZMAGAZINE   February 1, 1988
Issue #91   Atari News and Information
Editor: Ron Kovacs
Assistant Publishers: Ken Kirchner
                      Tony Santos
   Regional Zmagazine Headquarters
   National:>XBN BBS  617-770-0026
             Stairway 216-784-0574
   NJ Area> StarbaseI 201-938-6906
            JACG BBS  201-298-0161
            E.B. BBS  201-247-8252
   Hawaii> W.W.of OZ  808-423-3140
   Midwest> Lions Den 312-690-3724
            Mouse     219-674-9288
            Balloon   419-289-8392
   East>    Ratcom    301-437-9813
            NY City   718-604-3323
   Others>  FACTS BBS 313-736-3920

Please note that there are over 250
BBS systems carrying ZMagazine each
week.  During the next few weeks, the
above systems will be supplied a list
of ZMag BBS system in their area. If
your system carries ZMag and your
system has not appeared in any ZMag
BBS list. Please let me know.
Xx Contacting ZMagazine
I can be reached at any of the
following places:

XBN BBS, JACG BBS, StarBase I (numbers
listed above.

On CompuServe at 71777,2140
On GEnie at R.KOVACS
on Source at BDG793

Modem link up between 7pm-11pm at
201-968-8148.  ZMagazine transfers
and chats during the above times
only.  Will change over to answer
machine and voice line very soon.

Any submissions or advertising info
should be left on XBN or Starbase I or
on CompuServe or GEnie.
Editors Desk................Ron Kovacs
ZMag Newswire ICD/OSS Merge......Genie
Permanent Ram.............Russ Babylon
ZMag Reports (A New Column)........ICD
BBS Watch.....................Stairway
CO Chat Transcripts.........CompuServe
1200XL Modification.........Bob Wooley
Basic Programming Part 5.Jackson Beebe
Well, It has been 2 weeks since the
downfall of the ZMAG BBS and I have to
be honest and say that I miss it.

I have had more time to edit and plan
the issues and dont want to lose it
right now. However...

I have received 38 letters via email
requesting my return to the BBS world
and many of them have been on the
border of hate mail.  I have been
accused of letting down alot of

I could make this issue a complete
essay on the subject, but I dont want
any death threats.(hehe)  I know that
taking the BBS down wasn't a popular
decision, and I haven't left anyone
stranded. There are a number of places
around that are better run and better
organized then Zmag.

Once again however, I am going to be
returning to BBS land.  No date has
been set, but the system will return
with new software, a possible new
name, and contain Zmagazine.  I will
keep you updated on this as the weeks
roll by.

Current systems designated as Regional
systems will continue and the XBN BBS
will continue as national headquarters
for Zmagazine.

I hope this decision will ease up the
amount of negative feedback.
DATELINE: 1-27-88


ICD, Inc. and OSS, Inc. (Optimized
Systems Software) have just signed an
agreement which will "add new life to
all Atari computers". Under this
agreement, ICD will add the
manufacture, marketing, and support of
all current OSS software titles for
Atari computers to ICD's already
powerful Atari product line.

ICD's friendly, helpful staff is now
trained in all aspects of support for
the complete OSS product line

     MAC/65 Toolkit
     ACTION! Toolkit
     BASIC XL Toolkit
     Writer's Tool
     DOS XL
     Personal PASCAL for the Atari ST

Ordering and support for ICD/OSS
products are available by calling
815/968-2228 from 8AM to 5PM CST
Monday through Friday. Support is also
available 24 hours a day 7 days a week
on the following Electronic Bulletin

ICD/OSS BBS 815/968-2229
300-9600 baud, CompuServe,GEnie,
Delphi, and BIX.  ICD's 24 hour FAX is
connected to 815/968-6888.

The San Jose, CA  numbers for OSS will
no longer be providing support. Orders
for OSS products may be placed now.
All products will be shipping in
quantities soon.  For more information
call any of our product support lines
or write to:

     1220 Rock Street
     Rockford, IL  61101
January 26, 1988

Welcome to XBN BBS.  There are TWO
telephone numbers that both reach this
ONE board.  They are:

 617-770-0026  PC Pursuitable. (MABOS)
               Boston Metro call.

Later in February, XBN will split into
TWO boards.  One will support OASIS
SysOps and Christians/Religionists.
The other will support ATARI 8-Bitters
and be the Zmagazine Headquarters.
Both boards will be PC Pursuitable and
a Boston METRO free call.  At that
time this board that you are on now,
will be the ZMAG and ATARI board, and
the number will be 617-770-0197.
Please make note of it.

The SPLIT is planned for FEBRUARY
17th, 1988.  At that time the
telephone numbers will work in the
following way:

617-559-6844> forwards to 617-770-0026
617-770-0026> OASIS - CHRISTIANITY
617-770-0197> ZMAG H.Q. - ATARI 8-bit
if busy forwards to 617-770-0026.

If you call the ZMAG/ATARI board, and
the line is busy, your call will
forward to the OASIS/CHRISTIAN board.
There is no phone charges to you in
this call transfer.  You may wish to
logon the OASIS board and leave a
message to me if you have an urgent
message, and you cannot get on the
ZMAG board.

This may seem complex at first, but
whatever number you end up calling
after February 17th, will reach an XBN
BBS, and at that time you will be able
to find out which number is best for

There will be downloads for all
support areas including ATARI 8-bit,
ZMAGAZINES, OASIS support files, and
Christian/Religious reading text
files.  Both systems will run on hard
drives, to provide plenty of room for
files, and fast transfers.
Xx "Permanent" RAM Operating System
by Russ Babylon

The following article shows how to
modify a 800XL computer to allow any
RAM based operating system to remain
resident under any situation short of
turning off the power to the computer.
Not only will the RAM operating remain
active it will also be uncorruptible,
that is it can not be changed once it
is enabled.  Sound interesting?

As with any project involving internal
modification to your computer do not
attempt this unless you are familiar
with electronic circuits and

You will need one 74LS00 IC, a SPST
subminature switch, a 5K resistor and
a couple of feet of small guage hook
up wire.  At most a cost of two or
three dollars.

To start the project first disassemble
your XL and remove the metal shields
from the circuit board.

Next locate the PIA chip, it is the 40
pin chip marked U23 in the lower right
side of the circuit board when you
hold the circuit board right side up,
with the joystick ports to your right.
If you are still unsure the PIA should
be marked with 6520 somewhere in the
jumble of numbers on the top.

Now if you have socketed chips like I
did carefully remove the PIA from its
socket and locate pin 10.  Pin 10
corresponds to bit 0 of memory
location $D301.  CAREFULLY bend pin 10
slightly to the side so that it will
not be in the socket and then reinsert
the PIA into the socket.  If you have
soldered chips then the easiest way to
do the mod would be to carefully cut
pin 10 from the circuit board with
side cutters so no electrical
connection existed between pin 10 of
the PIA and the foil on the board.

Make SURE you leave enough of pin 10
to solder to. I do not like the idea
of cutting traces on the circuit board
but if you do and can trace them
carefully enough more power to you.

Now solder about a twelve inch piece
of hookup wire to pin 10 of the PIA
again making sure that there is no
electrical connection to the circuit
board.  If you have a wire wrapping
tool it makes a quick way to make this
connection and no soldering is

Now flip the board over and find where
pin 10 used to be connected and solder
another twelve inch length of hookup
wire to this point.

Now for the next step; with the board
right side up again look in the middle
of the board and locate U28.  This is
a SN74LS375N chip and is used to latch
the R/W signal from the 6502 CPU. You
need to locate pin 14 of this chip and
then flip the board over and solder
about eight inches of wire to the back
of the board where pin 14 connects.

You will notice that pin 14 has no
foil connections to it since it is
unused in a standard XL but we are
going to make good use of it.

Onward and upward!  Now you need to
secure the 74LS00 chip to the circuit
board.  If you look up at the top of
the board just to the left of the
monitor output jack there is a large
area of solid foil. I secured the chip
UPSIDE DOWN in this area using a hot
glue gun and adhesive but you can use
whatever you have but make sure the
chip is anchored before you continue
and make sure you can get the metal
shields back on the board with the
chip installed!

Now we need power for our newly
installed chip and this can be
obtained in many places on the board.
I went right to the source for mine.
Look in the upper left hand corner of
the board right next to the power
switch.  You will see a capacitor on
top, then a resistor, then a diode I
believe and then a ferrite inductor.

The right side of this inductor is the
5 volt power feed point for your
computer and I just tacked a piece of
wire to this.  Connect the other end
of this wire to pin 14 of the 74LS00.
Remember the chip is upside down so be
careful.  Connect a wire from pin 7 of
the chip to any convenient ground
point, remember that the chip is
sitting on a large piece of grounded
foil which has several very small
holes just perfect for passing a small
wire through and soldering to the

OK, you have power to the chip and now
need to hook everything together. Take
the wire you have connected to pin 10
of the PIA and solder it to pin 1 of
the 74LS00 chip.

Take the wire from the underside of
the board that was connected to where
pin 10 of the PIA used to be and
connect it to pin 8 of the 74LS00

Take the wire that you hooked to pin
14 of the SN74LS375N chip and connect
it to pin 13 of the 74LS00 chip.  On
the 74LS00 chip itself connect pin 2
to pin 4, pin 4 to pin 5, pin 6 to pin
12, pin 3 to pin 9 and pin 10 to pin

You are almost home!  Now take the 5K
resistor and trim it down and connect
one side to pin 2 of the 74LS00 chip
and the other end to pin 14.

Solder a small piece of wire to pin 4
or 5 of the 74LS00 (there hooked
together so it doesn't matter which
one). The other end of this wire is
hooked to one side or the other of the
SPST switch.

On the other switch terminal connect a
wire to any convenient ground point or
pin 7 of the 74LS00 if none are to be

That completes the electrical work!
Now you have a switch hanging in mid
air looking for a home.  If you look
at the lower cover of your computer
(the part without the keyboard) you
will notice a very nice area between
the monitor output jack and the switch
box output.

I drilled a 1/4 inch hole in this area
and mounted my switch in this area
once the circuit board was installed
in the bottom cover.

Now all you have to do is put it all
back together.  The wires from the
circuit board can be passed through
any circuit board and metal shield
openings being careful not to short
or cut any wires or insulation.

The moment of truth is at hand!  With
the SPST switch set so it is OPEN
power up your computer.  It should act
perfectly normally in any mode or
executing any program.  If your
computer will not power up try 
switching the SPST switch to the other
position and power up again.

Now for some fun load in a translator
program and after it is in and running
flip the SPST switch to close the
contacts.  The computer should not be
visibly affected.  Now push RESET and
you will find that the translator is
still there and operating.  Go into
BASIC with the translator or other RAM
operating system and try pokeing
different values into the RAM area
where your operating system resides
and you find that you can't once you
have closed the SPST switch.

This project has many possible uses.
If you are proficient at machine
language you can modify a RAM
operating system to do all sort of
nice things.

It could make an Omni-mon look sick.
You can make a copy of your ROM based
operating system except change the
RESET vector at $FFFC and $FFFD.
Install this system in RAM put the
switch back in its normal position and
boot up some picky piece of software
that checks for custom or RAM based
operating systems and wait until it
loads.  Then close the switch and hit
reset and you can go to and execute
some utility program.  I have used
this technique to get memory dumps of
loaded programs.

The things you can do with this 
modification are only limited by your
imagination.  This mod gives you
almost total control of your computer.

Any questions, comments, or
suggestions are gladly accepted.  Call
the Ratcom BBS at 437-9813 and leave a
message for Big Russ or I can be
reached on Compuserve from time to
time as 72327,404 and my name is Russ
 ...A New column of Special Reports...
[Ed. With this article, We start a
 series of reviews on the ICD MIO.
 This is the first of many.  Your
 thoughts, ideas, and commentary will
 appear here.  So send them in!!]

 Current Topic> ICD's MIO <

This review by Thomas Warren
It's tough owning a computer system,
there's always someone bringing out
something trying to tempt you to part
with your hard earned cash. The Multi-
Input/Output Interface (MIO) from ICD
is no exception. Just what can you get
for $199.95?  Unless you have been
living under a rock for the past few
months, and haven't read the articles
in both Antic and Analog magazines
praising the MIO, you'd know that it
comes with 256K or 1 MEG of internal,
refreshed, RAM, a parallel printer
port, RS-232 port, video port, and a
SASI/SCSI hard drive interface.

What the magazines don't go into
detail about is how you can use the
MIO.  Other than the obvious use of
the hard drive interface, what good is
the internal memory?  The 6502 can't
access more than 64K, so programs
won't take advantage of it. And, 1
MEG! Can you imagine loading it
everytime you want to use it?  I have
trouble loading my 256K upgraded
ramdisk on my 130XE.  But, the MIO
isn't like a normal ramdisk.  It's
more like a "soft" hard drive.  The
memory is constantly refreshed from
the external power supply, so whatever
you put into it stays there unless you
have a power failure. So, you can load
up the MIO with your terminal
software, utilities, word processors,
spreadsheet, or whatever, and call it
up instantly. Just think, no
scrounging for your word processsor.
Why, the 1 MEG version could do away
with diskettes!

All this sounds utopian, right?  Well,
there is another side. The MIO can't
be accessed by any DOS except
SpartaDOS 3.2. Oh, you can still use
2.0, 2.5, SmartDos, and TOP DOS 1.5+,
as long as you keep your 1050 as drive
1.  But SpartaDOS 2.3 won't work at
all.  And, if you configure the MIO to
boot off itself, you'll lose access to
the others. However, most programs
work with SpartaDOS 3.2, so no problem.

Now, another practical use.  Being a
sysop, I was interested in the
possibility of running the system
strictly off an MIO and a ramdisk. It
can be done on the 256K version,
although the 1 MEG would be the better
choice.  Right now, I have all my
message bases, passwords, system help
files, and some of the downloads in
the MIO.  Unless a black out occurs,
they will stay there.  Even a system
lockup won't disturb them (I know,
I've had several).  For you sysops, or
would be, the best program for the MIO
is Keith Ledbetter's Express 1030/850
(I run the 850), since you can copy
system individually. Remember to do a
KEY OFF command before running your

This is the best new product out.  Now
for 80 columns and 300/1200.

MIO supplied by:
Bookmans 1-602-325-5055 Tucson, AZ
This column returns and contains info
of interest from BBS systems called
during the previous week.

| Msg # | 119
|Left at| 01/29/88
|Sent to| ALL                 
|Sent by| MR.GOODPROBE        
|Subject| sad day...          
Today is a sad day. Star Micronics of
printer fame has cancelled their
workhorse the NX-10, now you can only
buy their replacement for this great
printer, the NX-1000, <sigh>...another
one bites the dust.

Unbelevably, I also saw several new
programs for the 8 bit Atari up at
Waldenbooks at Chapel Hill, so they
really are writing for that machine
after all! Yeah!
Holy chips!
Its Mr. Goodprobe
|[N]ext [A]gain [R]eply [D]elete |
|[E]dit [S]end ->(E-Mail) [Q]uit |

| Msg # | 818
|Left at| 01/29/88
|Sent to| ALL                 
|Sent by| ALICE AMORE         
|Subject| Ohio Software Exchge
Ohio Software Exchange

For Atari ST and IBM PC public domain
software/shareware, contact Ohio
Software Exchange at:
334-4145 (local to Wadsworth)
836-0990 (out of calling area)

114 Megs of downloads, New downloads
every day of the week

$1.00 per hour, 2400/1200/300 baud


Subscribe now!  Sign up online, or
call OSE's support BBS:

PIPELINE BBS:  336-3774
or write:

Ohio Software Exchange
P.O. Box 5001
Wadsworth, OH 44281
Xx CO Transcripts  1/30/88
(c)1988 CompuServe Atari8 SIG

(18,Ron Kovacs) Jerry:  Whats happen'n
with CII?

(18,Jerry@Carina) Ron:  Just about
ready to start on the manual.  Workin'
on text files now... it's...coming
along real good.  Here's some news
that you might want to pass along...
Carina II will be going up $10.00
starting 3/1/88.  Carina 1 owners
still get...$10.00 off, and another
$10.00 off if they sen't in their
registration card.

(18,BOB ROSENDALE) Jerry: I had better
drive on down.

(18,Jerry@Carina) Bob:  Why?

(18,Ron Kovacs) Sounds good... Why the
higher price??

(18,Wp 3.0) Jerry: Cii available NOW?

(18,Jerry@Carina) WP:  Available in

(18,Jerry@Carina) Ron:  Well, if you
saw the program, I think you would see
that it's probably a $150.00 program.
It's pretty emense (19 modules). What
it basically comes down to is... - The
price was too low. (I have to eat).

(18,Mike) Ron: Long time no talk -- how have you been?

(18,Ron Kovacs) Mike: Very well, In
anticipation of the baby...Due in
about 3 days...??

(18,BOB ROSENDALE) (he has been typing
his little Zmag fingers off)...grin

(18,Mike) Really?!  Congratulations


(18,Ron Kovacs) This is number 2...
Jerry:  I am sure you will have no
problem selling it!

(18,Mike) Be sure to drop us an
arrival notice when he/she finally

(18,Ron Kovacs) I sure will!

(18,Mike) Ah, then make that daddy-to

(18,Mike) Lemme make a quick
announcement in case any of you missed
the Bulletin....

Lee Pappas and Clay Walnum of ANALOG
will be in CO tomorrow night at 8:00
PM EST.  Hope everyone here joins us!
Xx 1200 XL Modification
by Bob Wooley

If I were allowed only one computer, I
think that I would prefer a 1200XL.
Only two features draw me toward the
800XL or the 130XE, the Parallel Buss
and the quality of the video on my
1702 Commodore. The 130XE makes the
1200XL screen look like I'm using a
television - through the tuner! Oddly
enough, the 1200XL has almost a dozen
transistors in it's video circuits,
while the XE only has 3 or 4.

Yet, the 130XE has a much, much better
output. (same transistors, same signal
source.... did the Warner engineers
get paid by the component???) Nice for
us, though. We can just duplicate the
XE circuitry in the 1200XL - which is
exactly what I will describe in this
article. The result is a picture that
is just as clear as the one from a
130XE and costs almost nothing. This
is designed for a separate CHROMA
system like the 1702. There is no
provision for output to a television
or a composite monitor.

Installation will consist of removing
certain components and either
replacing them with another part,
replacing them with a wire, or not
replacing them at all. One component
has to be added at a point in the
circuitry where no component now
exists. All others are mounted in
existing locations.

 R21   22K        1.5K
 L15   820uh      wire
 C115  10uf       wire
 C60   100pf      ----
 R187  1meg       2.2K
 CR20  1N4148     ----
 R22   4.3K       ----
 R23   180        47
 R24   180        100
 R25   130        ----
 R28   130        wire
 C62   10pf       ----
 R180  180        ----
 R181  3.3K       6.8K
 C118  100pf      wire
 R182  6.2K       ----
 R183  2.2K       ----
 R184  1K         wire
 R185  1K         180
 C119  3.9pf      ----
 CR19  1N4148     150ohm resistor
 C116  .001uf     ----

Add a 47ohm resistor between the
collector of Q11 and +5volts. You will
have to cut the foil right next to the
pad to isolate the collector.

Solder a wire from the junction of
CR19 (now a 150ohm resistor) and R180
(removed) to the unused pin on the
monitor socket. This is the new CHROMA

Pull out Q7, Q8, Q16, Q17, and Q18.

Check all of your changes very
carefully. Measure the resistance
between +5volts and ground to make
sure that you haven't got any power
supply faults. (It should read over

Power up in self-test mode and correct
the color by adjusting R48.

You are now only missing the Parallel

Bob Woolley 75126,3446
  ...Part 5 of a continuing series...
(C) COPYRIGHT 1986 by Jackson Beebe

Once we get numbers into a program
with LET statements, we can do math on
the numbers. Here's the Atari BASIC
guide to math symbols:

     +   =  addition
     -   =  subtraction
     *   =  multiplication
     /   =  division
     ^   =  raised to a power

For example:

20 REM put numbers into variableS
30 A=2:B=5
40 REM print examples
50 ? A+B
60 ? A-B
70 ? A*B
80 ? A/B
90 ? A^B
100 END

Type this program in and try it. This
should print out answers. Note line
30's use of multiple statements on the
same line, separated by colons. The
question mark (?) is Atari shorthand
for PRINT. This saves a lot of typing.
These are examples of doing math in
the PRINT statement. This is not only
allowed, but is usually the preferred
way of printing out math results, as
opposed to using one statement to do
the math, and another to print the
result.  You have to tell computers to
PRINT in order to see anything. You
could say:

10 A=1:B=3:C=4
20 ANS=A*B*C
30 END

This WILL multiply 1 times 3 times 4,
and will put the answer 12 in the
variable ANS, but you won't see it,
unless you ask to PRINT it. Adding:

25 ? ANS

would print out 12.

Math is performed in the order:

1st  Anything in parenthesis.
2nd  Exponentiation (# to a power)
3rd  Division or Multiplication
4th  Addition or subtraction

Some examples:

3+(4+6)*2 = 23     2^3 = 8
3+4+6*2   = 19     3+2^3*2 = 19
(3+4+6)*2 = 26     3+6/2+4*2 = 14

When in doubt, use parenthesis. It
never hurts to put them in there.
Always count the left and right
parens, to make sure you've used an
equal number of each.
The INPUT statement is a second way to
get data into a program (the LET
statement is the first). The INPUT
statement stops a program, prints a
question mark on the screen as a
prompt, and waits for you to input
from the keyboard and press RETURN.

For example:

10 PRINT "Please type in a number and press RETURN"
40 END

Line 10 is a PROMPT to let the user
know what to type in. Line 20 takes in
a number and puts it into a numeric
variable named NUMBER. Line 30 prints
it's value on the screen. Try this.
Type NEW then enter the program. RUN
it a few times while trying different
numbers for input.

Try entering a letter instead of a
number. The program crashes. To INPUT
letters, you need to specify a string
variable name in the INPUT statement.

For example:

10 DIM NAME$(25)
20 PRINT "Enter your name and press RETURN"
50 END

You can input ANYTHING into a string
variable, but only numbers into
numeric variables. When you press
RETURN without pressing a letter,
number or character first, that is
called a null input, and can be tested
for by checking for "" (nothing
between the quotes.)

You can take in multiple pieces of
data in the same INPUT statement, by
separating variable names with commas.

10 DIM NAME$(25)
20 PRINT "Type in name, age, weight"
70 END

Separate data items with commas, when
typing them in. Type all three items,
with commas before pressing RETURN.
Even though this is POSSIBLE, I
believe it is confusing to users, and
believe it's much clearer programming
to input one piece of data at a time.

INPUT statements should be preceded by
PRINT statements cueing the user for
what's expected. These PRINT
statements are called prompts. Some
other BASIC's allow putting a prompt
right in the INPUT statement, but...
Atari BASIC does not. No real problem.

BASIC running on microcomputers is a
good environment for applications that
are interactive with the user, and
INPUT provides an easy way to
accomplish that. INPUT statements are
needed when your program performs a
process on different data each time,
like a program that converts
Fahrenheit to Centigrade temperatures.
While the program is running, it stops
to ask for your input, then continues,
using data you've furnished.

When I want a user to read a screen of
text, then press RETURN to continue
with the program, I simply dimension a
variable B$ early in the program as
DIM B$(1), then follow the text with a
line like:

350 PRINT "        <RETURN>";:INPUT B$:PRINT CHR$(125)

This allows the user to read at
his/her own pace, then press RETURN
which clears the screen and continues
the program. B$ is just a "dummy
variable", used to bring in a null
input. Again, CHR$(125) clears the
screen. Note the trailing semi-colon
after the prompt, to keep the input
question mark out on the end of the
prompt line.
A third way to get data into a program
is to put it in a DATA statement, and
read it into the program with a READ
statement. The format of the READ
statement is READ followed by a
variable name, or names separated by

The format of the DATA statement is
DATA followed by numbers, or letters
in quotes, with individual pieces of
data separated by commas.
For example:

20 PRINT A;" ";B;" ";C;" ";D
30 DATA 1,2,3,4
40 END

This program would print  1 2 3 4.
Here's mixed input:

10 DIM NAME$(20)
40 DATA John Brown,25,165
50 END

Note that the program has to find
string data when there's a string
variable in the READ statement, and
numeric to go with numeric variable,
etc. or it crashes. No quotes are used
in DATA strings.

When the program first encounters a
READ statement, is goes to the first
DATA statement (you may have many) and
READs the first piece of data in it.
BASIC sets a pointer to this data, and
increments it one piece of data each
time a READ statement is executed.
Every time another READ is
encountered, either in the same or in
a later READ statements, it reads the
next piece of DATA it finds. If there
are multiple pieces of data in the
first DATA statement, it will read
them in order. When it runs out of
data in one statement, it continues
with the next DATA statement it finds.
For every READ command you issue, the
program must find data, or it crashes.
Also note that the command READ A,B,C
needs to find all three pieces of
data, or...it crashes.

DATA statements may be placed anywhere
in BASIC programs, but it is roughly a
standard practice to place data at the
end. If you follow this practice, a
user can examine all the data easily,
rather than having to scan the entire
listing for scattered data.
RESTORE statement:
You may use data over again, by
issuing the command RESTORE followed
by the line number of a DATA
statement. This resets the pointer to
the first data item in that line.
For example:

10 REM * RESTORE demo *
20 FOR X = 1 to 25
40 PRINT NUM;" ";
50 IF X = 15 THEN RESTORE 100
100 DATA 1,2,3,4,5
110 DATA 6,7,8,9,10
120 DATA 11,12,13,14,15
200 END

This will produce output of:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1
2 3 4 5 6 7 8 9 10

This program READs data into, and
PRINTs out a variable named NUM, 25
times. It begins reading data at the
beginning of line 100, and reads lines
110 and 120 until X = 15. Line 50 then
RESTORE's the pointer to the beginning
of line 100 and it READs the first 10
numbers over again. If desired, we
could have RESTOREd to another DATA
statement as line 120. More on FOR-
NEXT and IF-THEN in later lessons.

The ideal application of READ-DATA
statements is the program that
routinely does calculations with
different data each time, as payroll
programs, or student grade programs.
For programs that use a large amount
of data, it is easier to enter and
verify the accuracy of DATA statements
then to type in data one piece at a
time with INPUT statements. In the OLD
DAYS we read data in from punched
cards 80 columns wide. The modern day
equivalent of the punch card is the
DATA statement that has taken it's
For example:

10 REM * Student Grade Program *
20 DIM NAME$(20)
40 AVEGR=(GR1+GR2+GR3+GR4+GR5)/5
60 DATA SALLY SMART,95,91,89,98,97
70 END

The END statement is required in some
programs, and not in others. It is
worth putting it at the end of all
your programs, period. The END
statement stops computation, shuts off
any sound generators left on, and
returns control to BASIC at the READY
prompt. For now, put END on the last
line of your program. Later we may
tell the program to END if the Quit
option is selected from a menu, etc.

END is the preferred way for a program
to end, as opposed to ending from an
error statement.

SAMPLE Programs:
Okay, now let's try some programming
exercises that use these principles.
We know enough now, to solve more
complex problems.


Write a program that adds, subtracts,
multiplies, divides, and raises a
number to a power, by putting two
numbers in LET statements. Produce
output EXACTLY like the following
example. Don't use the numbers
directly in the PRINT statements, but
use variables. Be sure to allow room
for minus signs.

The sum of  5 and  1 is  6.
The difference between 5 and 1 is  4.
The product of  5 and  1 is  5.
The quotient of 5 divided by 1 is  5.
5 raised to the  1 power is  5.

Run this program using the numbers -7
and 39.


Write a program that averages a
student's grades, and prints out the
name, and average. The formula for
average is all grades added together,
divided by the number of grades.

Format output like:

The average of the 7 grades for John
Doe is  XX.XX.

Find the answer for the following
data: (include this as a DATA
statement in your program)

DATA Jane Jones,79,88,99,90,89,93,83


Write a program using INPUT statements
that converts temperatures from
Fahrenheit to Centigrade, as
temperatures are input from the
keyboard in Fahrenheit.

The formula is C = (F-32)5/9

Format output as:

77 degrees F = 25 degrees C.
59 degrees F = 15 degrees C.

Find the conversions for:

a)   14 F
b)   69.8 F
c)  260.6 F
d) 4262 F
e)  -29 F


Write a program that converts hours
into minutes using INPUT statements.

Format output as:

14.5 hours = 870 minutes

Convert the following data:

a)  3.75 hours
b)  99 hours
c) 266 hours
d) 0.3 hours
e)  24 hours


Write a program using INPUT
statements, that prints a number, it's
square, and it's cube, as follows:

Number     Square     Cube
    2           4         8

Run the program for the numbers:

a)  14
b)  -6
c)  0.033
d)  123
e)  -0.88

This concludes Part 5 and lesson 2 of
Learning to Program in Atari BASIC. Be
sure to catch Part 6 next week and the
start of Lesson 3.

Contact me at: Jackson Beebe
Prairie Data Fields
807 W. Hill Street
Urbana, IL 61801 or CompuServe
Syndicate Zmagazine          Issue #91
(c)1988 Syndicate Publishing Company

Return to message index