1013 lines
29 KiB
Plaintext
1013 lines
29 KiB
Plaintext
______________________________________
|
|
|////////////////////////////////////|
|
|
|////////////////////////////////////|
|
|
|/SYNDICATE ZMAGAZINE 94 ONLINE NEWS/|
|
|
|/----------------------------------/|
|
|
|/PUBLISHER/EDITOR|February 22, 1988/|
|
|
|/ RON KOVACS | Issue #94 /|
|
|
|////////////////////////////////////|
|
|
|////////////////////////////////////|
|
|
|____________________________________|
|
|
|Syndicate Publications |
|
|
|Post Office Box 74 |
|
|
|Middlesex, New Jersey 08846-0074 |
|
|
|____________________________________|
|
|
|Syndicate-ZMAG (201) 968-8148 3/12 |
|
|
|XBN-ZMAG (617) 770-0197 3/12+|
|
|
|Stairway-ZMAG (216) 784-0574 3/12 |
|
|
|____________________________________|
|
|
|///////////[-CONTENTS-]\\\\\\\\\\\\\|
|
|
|____________________________________|
|
|
|*|ZMag Newswire [Atari News Update]|
|
|
|*|ZMag Technique [Mr. Goodprobe] |
|
|
|*|Quick Mod [1200XL Keyboard] |
|
|
|*|ST KeyLock [Lock up Mod] |
|
|
|*|AtariWriter Plus and SpartaDos |
|
|
|*|ZMag Archives [From GEnie Atari8]|
|
|
|*|Basic Programming Part 7 |
|
|
|_|__________________________________|
|
|
______________________________________
|
|
|*|Editors Desk
|
|
______________________________________
|
|
by Ron Kovacs
|
|
|
|
Well, another week has slipped by and
|
|
still no due date on the continuing
|
|
saga of Kovacs Baby #2. Doctor said
|
|
this past Saturday that he MIGHT have
|
|
made a mistake and reset the day two
|
|
weeks ahead! Details as they become
|
|
available.
|
|
|
|
In last weeks ZMag, (#93) I listed the
|
|
Stariway to Heaven BBS number very
|
|
wrong!! It turned out to be a voice
|
|
line!! I corrected it above. My
|
|
apologies to the party...
|
|
|
|
The Syndicate BBS has returned to
|
|
service. Returning this past weekend,
|
|
with FoReM XE and a bare bones system.
|
|
I will be updating it in the next few
|
|
days. If you get a chance, Please call
|
|
and atleast get your access back so
|
|
when we are all together, you can get
|
|
right into things. The number is:
|
|
(201) 968-8148 300/1200 Ascii/Atascii.
|
|
|
|
I want to thank Terry at Gateway City
|
|
BBS for his assistance with the
|
|
software. Give him a call at (314)
|
|
647-3290.
|
|
|
|
Mike Shoenbach of the CompuServe
|
|
Atari SIGS mentioned in the CO Sunday
|
|
night that there will be a new area
|
|
debuting on the SIG this week. Give
|
|
it a call this week for details. I
|
|
will update you on this next week.
|
|
|
|
Interesting reading... John Nagy has
|
|
alot to say this month in Computer
|
|
Shopper. Please buy it or subscribe
|
|
if you dont get it!!
|
|
|
|
Newsletter info begins next week.
|
|
|
|
Thanks for reading and hope to see
|
|
on the Syndicate BBS!
|
|
______________________________________
|
|
|*|ZMag Newswire
|
|
______________________________________
|
|
Atari Update
|
|
============
|
|
|
|
Kyodo reported late last week that
|
|
Atari has aquired court injunctions
|
|
against six companies for infringing
|
|
it's copyrights and patents.
|
|
|
|
In the court injunction, agents of
|
|
Atari seizd over $64,000 worth of
|
|
pirated goods.
|
|
|
|
Kyodo, a Japanese News Service
|
|
reported -The six companies were
|
|
alleged to have brought in Taiwanese
|
|
copies of the Atari 200 video games
|
|
and software game cartridges.-
|
|
|
|
Apple Computer took the same legal
|
|
action earlier in conjunction with a
|
|
new copyright law in Singapore.
|
|
|
|
Kyodo is part of NewsNet which can be
|
|
accessed through Compuserve and the
|
|
IQuest area. IQuest reviewed in 1986
|
|
in ZMagazine.
|
|
______________________________________
|
|
ZMag Technique
|
|
______________________________________
|
|
A Review of...
|
|
-Your Atari 8 Bit Comes Alive-
|
|
|
|
by Mr. Goodprobe
|
|
|
|
Your faithful hardware addict had the
|
|
privilege of hearing the following
|
|
short story recently:
|
|
|
|
The fruit pickers down in good ole
|
|
Florida decided to employ the services
|
|
of some newfangled computerized robots
|
|
to help them in the often tedious
|
|
chore of picking scrumptious Florida
|
|
oranges from the tress in which they
|
|
are perched. But...an unforseen
|
|
problem caused the project to grind to
|
|
a screeching halt! It seems that in a
|
|
cost cutting measure these
|
|
-programmable pea-pickers- as I call
|
|
em, were equipped with black and white
|
|
video scanners. Needless to say, to a
|
|
robot with a black and white scanner
|
|
for video purposes, somehow a bright
|
|
shiny orange ready for the pickin' and
|
|
fluffy clouds bear a remarkable
|
|
similarity! Thus on numerous occasions
|
|
the robots were found -locked up-
|
|
with their robotic arms waving towards
|
|
the heavens in a futile attempt to
|
|
pluck -cumulus- oranges from the sky!
|
|
My oh my, what a sight that must have
|
|
been.
|
|
|
|
Anyone even remotely involved in the
|
|
computer industry today cannot help
|
|
but be excited and enthralled with the
|
|
advent of so many new and exciting
|
|
advancements in hardware design and
|
|
development, and software versatility.
|
|
Faster and more powerful are the
|
|
keywords of today's computer
|
|
revolution. But it is this very same
|
|
computer revolution that is causing
|
|
consternation in the hearts of many
|
|
computer owners as they begin to feel
|
|
left out by all the progress that is
|
|
going on round about them. The very
|
|
same computers which they hold near to
|
|
their hearts (and had placed a severe
|
|
load on their wallets in the past),
|
|
are now -slow ancestors- to the
|
|
-miracle micro's- of today. The news
|
|
we see today is that these computers,
|
|
like the Atari 8 bit series, will soon
|
|
be a forgotten, but pleasant memory.
|
|
Atari has made it known, that with the
|
|
exception of the XE game system, this
|
|
is the last year for their support of
|
|
the 8 bit line. And Commodore too
|
|
expects to sell its 8 bit line of
|
|
computers only 2 more years, and hopes
|
|
to push its Amiga into the forefront,
|
|
and indeed it already accounts for 40%
|
|
of its sales in the last few months.
|
|
But, I wish to go on record by firmly
|
|
stating that I do not feel these
|
|
computer manufacturers are in tune
|
|
with the facts as the presently exist.
|
|
As in the case of the Atari 8 bit
|
|
series, this user base contains some
|
|
of the most knowledgable programmers,
|
|
hardware enthusiasts, and general
|
|
computer addicts known on this fine
|
|
planet of ours.
|
|
|
|
New applications, hardware, and ideas
|
|
will continue to flow forth that will
|
|
continue to keep these computers alive
|
|
and well for all computerdom to see.
|
|
One such item is a new disk/book
|
|
combination called your -Your Atari 8
|
|
Bit Comes Alive-, written by Richard
|
|
Leinekecker, and edited by David
|
|
Leinecker. These are the same fine
|
|
folk that previously released -Your St
|
|
Comes Alive- and -The Scientific ST-.
|
|
These previous 2 volumes were reviewed
|
|
by me in earlier issues of Zmag, and
|
|
all are available from Midtown Tv (see
|
|
bottom of this article) and from
|
|
selected software stores across this
|
|
fine land of ours.
|
|
|
|
Like its predecessors, it is chock-
|
|
full of hardware projects that the
|
|
user can build and run from his own
|
|
computer. An accompanying disk is
|
|
filled to the brim with programs that
|
|
are used to run the projects you
|
|
build. The programs are admittedly
|
|
bare-bones as described by the author,
|
|
and this is to encourage enhancement
|
|
by the users themselves. Although they
|
|
are in this fashion, they do the job
|
|
well, and are the proud product of
|
|
careful planning and many hours of
|
|
debugging and enhancing.
|
|
|
|
The first 3 chapters of this volume
|
|
break the necessary ground you need to
|
|
cover in order to understand these
|
|
pertinent topics:
|
|
|
|
1.> The use of breadboards, and the
|
|
etching of PC-boards to be used in
|
|
the construction of these and
|
|
other hardware projects.
|
|
|
|
2.> Construction of a 1.2 to 37 volt
|
|
power supply for use with these
|
|
projects and others you care to
|
|
build in the future.
|
|
|
|
3.> The basics behind resistors,
|
|
capacitors, diodes, transistors,
|
|
IC's, and voltage regulators.
|
|
|
|
4.> A quick run-through of the binary
|
|
number system, and hexidecimal
|
|
operations.
|
|
|
|
5.> Programming tips that touch on:
|
|
|
|
a.] Hardware specific peeks and
|
|
pokes...
|
|
|
|
b.] Graphics modes...
|
|
|
|
c.] Useful memory locations...
|
|
|
|
d.] Machine language routines from
|
|
Basic...
|
|
|
|
e.] Display lists...
|
|
|
|
f.] Overlays...
|
|
|
|
g.] Display list interrupts...
|
|
|
|
h.] Vertical Blank interrupts...
|
|
|
|
After breaking you in gently by
|
|
guiding the user through the
|
|
construction of 2 relatively simple
|
|
projects using the joystick ports
|
|
(reading data from them), and switch
|
|
projects (like a computerized
|
|
stopwatch), he then proceeds to
|
|
unleash a barrage of fantastic
|
|
hardware based goodies!
|
|
|
|
Feast your eyes on these!:
|
|
|
|
1.> Door alarms (could even have 255
|
|
of them operational at the same
|
|
time!)
|
|
|
|
2.> Visible light detectors
|
|
|
|
3.> Infrared light detectors
|
|
|
|
4.> Touch switches
|
|
|
|
5.> Speed detectors
|
|
|
|
6.> Frequency detectors
|
|
|
|
7.> Data encoders (as in encoded
|
|
keypads)
|
|
|
|
8.> Light pens
|
|
|
|
9.> External device control
|
|
|
|
A.> Data decoders
|
|
|
|
B.> Serial data (teaches you how to
|
|
build an infrared system capable
|
|
of sending serial data via
|
|
infrared light!!!). This project
|
|
alone was worth the price of the
|
|
book.
|
|
|
|
C.> Data selectors
|
|
|
|
D.> Analog data devices
|
|
|
|
E.> Audio synthesizers
|
|
|
|
F.> Tone decoders
|
|
|
|
G.> Networking devices
|
|
|
|
H.> Display lighting
|
|
|
|
With the facts you will pick up from
|
|
this fine volume, and the fun you will
|
|
have building the projects contained
|
|
within, you may finally be able to
|
|
convince your wife that this computer
|
|
you bought really was for
|
|
-educational- purposes.....Nah!!!!
|
|
|
|
-Your Atari 8 Bit Comes Alive-
|
|
-Your ST Comes Alive-
|
|
-The Scientific ST- are all written by
|
|
and the exclusive property of Richard
|
|
Leinecker.
|
|
|
|
Keep those Atari's hummin!
|
|
Mr.Goodprobe
|
|
|
|
(on lend from)
|
|
Midtown TV 27 Midway Plaza Tallmadge,
|
|
Oh 44278 Atari 8/16 Repair/Sales
|
|
Also:Commodore 8/16 Repair
|
|
|
|
Many items have flat repair rate, call
|
|
for prices!
|
|
Zmag Midwest Headquaters bbs is:
|
|
Stairway To Heaven 216-784-0574
|
|
300/1200 24 hours
|
|
Featuring Zmag, 25 on-line games and
|
|
Public Domain downloads for Atari 8
|
|
bit, ST, and Amiga computers!
|
|
______________________________________
|
|
Quick Mod
|
|
______________________________________
|
|
Captured from CompuServe Atari 8
|
|
|
|
To modify a 1200XL keyboard to work on
|
|
other models of Atari computers remove
|
|
the 15 conductor cable, ic chips,
|
|
capacitors and resistors from the
|
|
board and connect wires from the 22pin
|
|
keyboard connector in the computer to
|
|
the locations shown in the following
|
|
diagram.
|
|
|
|
I have done this modification to a 400
|
|
and think it will work with all
|
|
models. I believe that the
|
|
programmable function keys should
|
|
operate properly on XL/XE computers
|
|
but the OS in the 400/800 does not
|
|
recognise them.
|
|
|
|
2 8 10 14
|
|
1+ + + + + + + +8 1+ + + + + + + +8
|
|
3 5 11 13
|
|
|
|
1 7 15 17
|
|
16+ + + + + + + 16+ + + + + + + +
|
|
4 6 12 16
|
|
19 21
|
|
15+ + + + + + + + + + + + + + +1
|
|
22 20 18 9
|
|
|
|
15 pin connector/left ic pad/right ic pad
|
|
______________________________________
|
|
Lock and Key for the ST
|
|
______________________________________
|
|
By R. Flashman [the Flash]
|
|
Reprinted from Nybbles & Bytes, 9/87
|
|
|
|
I was walking by Radio Shack today,
|
|
and in I went. Under the alarm
|
|
section, I saw they sell a round key
|
|
lock like the ones used on an IBM AT.
|
|
Since it is for an alarm, it has the
|
|
contact on one side, all read for an
|
|
electrical wire. Hmmm, I thought. I
|
|
am always getting annoyed by people
|
|
who play with my ST at a show or
|
|
meeting when I am busy doing something
|
|
else...
|
|
|
|
I bought it... And I found space right
|
|
over my joystick ports (520) on top of
|
|
the RF shielding, and now I have an AT
|
|
style lock and key on my ST! Looks
|
|
very good, was dead cheap, and in the
|
|
off position, you cannot turn on the
|
|
ST!
|
|
|
|
Actually, so simple it is disgusting.
|
|
(Lock cost $9.99) I haven't tried a
|
|
1040 yet, so not sure about location.
|
|
I found two locations on the 520; on
|
|
top of the unit, t othe back and left,
|
|
directly above the cartridge port.
|
|
Turn your 520 upside down and you will
|
|
see how much space there is. I am
|
|
hoping that the 1040 has the same
|
|
space.
|
|
|
|
The other, which is the one I used, is
|
|
right above the second joystick port.
|
|
(The one you DON'T plug the mouse
|
|
into.) There is enought space, and it
|
|
lies right above the RF shielding, it
|
|
is also next to the power supply, so
|
|
not much cable is needed.
|
|
|
|
The switch has two connectors on its
|
|
end. I connected two wires to it, and
|
|
then opened up the RF shielding. You
|
|
will notice that the power switch has
|
|
three legs coming out of it. The one
|
|
you want to get is the smallest one.
|
|
(This is the one closest to the back
|
|
of the ST.) I cut it right where it
|
|
meets the main board. (Now that took
|
|
guts!) Then I soldered one of my
|
|
wires to it. I then connected the
|
|
other wire to one of the wires that
|
|
comes up from the board to that funny
|
|
round magnet that is to the left of
|
|
the power switch (and about an inch
|
|
into the board). The wire that it
|
|
gets wired to is the one closest to
|
|
the mouse port. If you don't believe
|
|
me, look under the board and you will
|
|
see that originally that wire was
|
|
connected to the leg that we just cut
|
|
off the power switch. You NOW have a
|
|
switch to the power switch. Turn the
|
|
key off and the power switch becomes
|
|
useless.
|
|
|
|
This will void your warranty. But it
|
|
works like a beauty. WE are now
|
|
offering it as an option for our STs
|
|
at the store!
|
|
______________________________________
|
|
Atariwriter + and SpartaDos
|
|
______________________________________
|
|
by Glenn K. Smith (70357,1136)
|
|
|
|
This documentation covers how to make
|
|
ATARIWRITER+ use the ramdisk of a 256k
|
|
computer. You must have a Newell,
|
|
Rambo or some other memory upgrade
|
|
that gives you at least 256k.
|
|
|
|
First, make a copy of the original
|
|
disk, then put the original away, you
|
|
won't need it. Next, you have to
|
|
rename a couple of files. Rename
|
|
AUTORUN.SYS to AWXE.COM, and AP.OBJ
|
|
to A.OBJ.
|
|
|
|
Now comes the fun part. Boot some
|
|
sort of disk editor. I prefer using
|
|
Disk Master found in DL 3 for making
|
|
quick changes. The following
|
|
procedure is for my version of the
|
|
program. There may be other version
|
|
that Atari has put out, so you might
|
|
have to search the disk for these
|
|
values. Also, these changes may work
|
|
for the non-XE version of ATARIWRITER,
|
|
but you'll have to find the correct
|
|
sectors for the changes.
|
|
|
|
Patchs:
|
|
|
|
First change all the instances of
|
|
D:AP.OBJ to Dn:A.OBJ (n is your drive
|
|
number, I prefer 2). These are found
|
|
on sectors 84, 315, 525, and 526.
|
|
|
|
Next change the two instances of
|
|
D1:AP.OBJ to Dn:A.OBJ (this will make
|
|
the filename read Dn:A.OBJJ. Replace
|
|
the second J with a $9B(EOL)). You'll
|
|
find this on sectors 467. On sector
|
|
469 you'll see D1:AP.OBJ and on sector
|
|
204 you'll see AP.OBJ. Change the
|
|
AP.OBJ to some other letters. Invalid
|
|
DOS characters such as the double
|
|
quote, dollar sign work well. These
|
|
are the two checks the program makes
|
|
to see you are trying to get a
|
|
directory of the original ATARTIWRITER
|
|
disk. They don't affect the SpartaDOS
|
|
copy because you have to rename the
|
|
AP.OBJ file to A.OBJ.
|
|
|
|
To allow ATARTWRITER+ to use both the
|
|
PROOFREADER and MAIL MERGE programs
|
|
from the ramdisk, change the D1:MM.OBJ
|
|
on sector 188 to Dn:MM.OBJ. Change
|
|
D1:PROOF on sector 181 to Dn:PROOF.
|
|
|
|
You must also make a few program
|
|
changes to complete the process. First
|
|
find the start of the AUTORUN.SYS file
|
|
(now called AWXE.COM). Locate the
|
|
bytes $AD $1F $D0 $C9 $05 $D0 $03 $4C
|
|
$35 $22 and replace them ALL with $EA.
|
|
These should be on the first or second
|
|
line of your editors display. This
|
|
change will disable the -RUN PD-
|
|
option. Since you'll need a batch
|
|
file to copy all the stuff over to the
|
|
ramdisk, this option wouldn't work.
|
|
|
|
To enable all the programs to use the
|
|
ramdisk, you must disable the -CHECK
|
|
DISK- routine. This routine checks to
|
|
see if you have the correct disk in
|
|
the drive. Since you are using a
|
|
ramdisk, this option will cause
|
|
problems. To fix this, find all the
|
|
occurences of $C9 $C6. On my disk
|
|
these are found on sectors 428, 448,
|
|
and 516. A few bytes before those
|
|
two, you should see $20 $53 $E4. You
|
|
want to change the $20 $53 $E4 to $EA
|
|
$EA $EA. On sector 516, you'll need
|
|
to make one additional change. Find
|
|
the bytes $4C $77 $E4 and change them
|
|
to $F0 $03 $EA.
|
|
|
|
There, now all you have to do is copy
|
|
the files to a SpartaDOS disk. The
|
|
batch file you'll want use will look
|
|
similar to this:
|
|
|
|
BASIC OFF <--No BASIC
|
|
RD D2: /E <--Ramdisk with 64k reserved
|
|
COPY A.OBJ D2: <--Copy Program
|
|
COPY PROOF. D2:<--Copy PROOFREADER
|
|
COPY MM.OBJ D2:<--Copy Mail Merge
|
|
COPY GEMINI. D2:<--Copy a printer drvr
|
|
COPY *.DCT D2:<--Copy supplimental
|
|
dictionaries
|
|
AWXE <--Run the program
|
|
|
|
If you have problems or questions,
|
|
please leave me a message and I'll try
|
|
and answer them as soon as possible.
|
|
If anyone is interested, I have also
|
|
gotten Visicalc and other programs to
|
|
work with SpartaDOS.
|
|
______________________________________
|
|
ZMagazine Archives
|
|
______________________________________
|
|
by Ron Kovacs
|
|
|
|
Many people ask me each week about
|
|
reading the older issues of ZMagazine.
|
|
I decided the best way was to show you
|
|
what is available is by capturing the
|
|
listings from GEnie and CompuServe.
|
|
|
|
This week GEnie is spotlighted and
|
|
next week we will update you on CIS.
|
|
|
|
Not every issue is available, but if
|
|
you are missing a few issues and want
|
|
them, you might find them here.
|
|
|
|
Zmag Issues numbers were changed at
|
|
the end of the 1986 calender year.
|
|
We originally published the date as
|
|
part of the filename. (Ex:ZMAG0527)
|
|
|
|
This example would mean it was from
|
|
May 27th, 1986. Since the change to
|
|
a new year, a conflict might appear
|
|
in filename. So, started the popular
|
|
issue number as the filename.
|
|
(Ex:ZMAG93)
|
|
|
|
This example tells you it is Issue #93
|
|
of a regular edition. Special issues
|
|
and feature releases may not have a
|
|
issue number attached.
|
|
|
|
If an issue contains (ZMAG59A) a
|
|
letter after the issue number, this
|
|
means it was updated or re-editted
|
|
after the release of the original.
|
|
A document or header in the issue
|
|
should explain the reason for a
|
|
change.
|
|
|
|
I hope this fills you in on the
|
|
filenames. Now the GEnie ZMag File
|
|
Directory.
|
|
|
|
No. File Name Address YYMMDD Bytes
|
|
======================================
|
|
2873 FIX1050.TXT R.KOVACS 880130 6300
|
|
2875 REVIEWS.TXT R.KOVACS 880130 23940
|
|
2874 SPARTADOS.TXT KOVACS 880130 18900
|
|
2886 ZINDEX87.ARC KHK 880205 10080
|
|
1126 ZMAGJULY 15,JEFFWILL 860727 27720
|
|
1125 ZMAGJULY 22,JEFFWILL 860727 30240
|
|
2224 ZMAG#001.TXT KOVACS 870713 2520
|
|
1137 ZMAG0708.TXTJEFFWILL 860728 17640
|
|
1321 ZMAG0920.TXT KHK 860924 34020
|
|
1363 ZMAG1003 KHK 861005 22680
|
|
1377 ZMAG1011 KHK 861011 23940
|
|
1407 ZMAG1018.TXT KHK 861018 23940
|
|
1422 ZMAG1025 KHK 861025 28980
|
|
1431 ZMAG1101.TXT KHK 861101 30240
|
|
1442 ZMAG1108.TXT KHK 861109 30240
|
|
1459 ZMAG1115.TXT KHK 861116 31500
|
|
1483 ZMAG1122.TXT KHK 861123 28980
|
|
1499 ZMAG1129.TXT KHK 861130 31500
|
|
1505 ZMAG1206.TXT KHK 861206 37800
|
|
1532 ZMAG1215.TXT KHK 861214 18900
|
|
1610 ZMAG33.TXT KHK 870110 28980
|
|
1614 ZMAG34.TXT KHK 870113 25200
|
|
1651 ZMAG35.TXT KHK 870119 26460
|
|
1693 ZMAG36.TXT KHK 870127 26460
|
|
1714 ZMAG37.TXT KHK 870203 26460
|
|
1735 ZMAG38.TXT KHK 870209 27720
|
|
1756 ZMAG39.TXT KHK 870216 25200
|
|
1792 ZMAG40.TXT KHK 870225 31500
|
|
1802 ZMAG41.TXT KHK 870303 23940
|
|
1819 ZMAG42.TXT KHK 870311 25200
|
|
1829 ZMAG43.TXT KHK 870316 34020
|
|
1852 ZMAG44.TXT KHK 870323 37800
|
|
1922 ZMAG45.TXT KHK 870330 23940
|
|
1949 ZMAG46.TXT KHK 870406 22680
|
|
1964 ZMAG47.TXT KHK 870413 22680
|
|
1970 ZMAG48.TXT KHK 870420 21420
|
|
2003 ZMAG49.TXT KHK 870428 23940
|
|
2029 ZMAG50.TXT KHK 870504 22680
|
|
2059 ZMAG51.TXT KHK 870511 21420
|
|
2077 ZMAG52.TXT KHK 870518 32760
|
|
2085 ZMAG53.TXT KOVACS 870524 23940
|
|
2114 ZMAG54.TXT KHK 870601 35280
|
|
2120 ZMAG55.TXT SLOW-K 870605 31500
|
|
2129 ZMAG56.TXT KHK 870608 23940
|
|
2154 ZMAG57.TXT KHK 870616 30240
|
|
2175 ZMAG58.TXT KHK 870622 23940
|
|
2225 ZMAG59A.TXT KOVACS 870713 28980
|
|
2207 ZMAG60.ARC KHK 870706 17640
|
|
2212 ZMAG61.TXT KHK 870710 23940
|
|
2234 ZMAG62.TXT KHK 870717 23940
|
|
2251 ZMAG63.TXT KHK 870725 22680
|
|
2270 ZMAG64.ARC KHK 870731 20160
|
|
2297 ZMAG65.ARC KHK 870807 17640
|
|
2308 ZMAG66.ARC KHK 870814 22680
|
|
2322 ZMAG67.ARC KHK 870821 18900
|
|
2343 ZMAG68.ARC KHK 870829 15120
|
|
2377 ZMAG69.ARC KHK 870905 20160
|
|
2399 ZMAG70.ARC KHK 870911 16380
|
|
2426 ZMAG71.ARC KHK 870919 13860
|
|
2450 ZMAG72.ARC KHK 870925 16380
|
|
2501 ZMAG74.ARC KHK 871009 16380
|
|
2511 ZMAG75.ARC KHK 871017 18900
|
|
2535 ZMAG76.ARC KHK 871023 17640
|
|
2568 ZMAG77.ARC KHK 871030 17640
|
|
2604 ZMAG78.ARC KHK 871106 20160
|
|
2634 ZMAG79.ARC KHK 871113 22680
|
|
2667 ZMAG80.ARC KHK 871120 16380
|
|
2695 ZMAG81.ARC KHK 871128 12600
|
|
2724 ZMAG82.ARC KHK 871205 11340
|
|
2731 ZMAG83.ARC KHK 871211 20160
|
|
2770 ZMAG84.ARC KHK 871223 16380
|
|
2797 ZMAG86.ARC KHK 871230 30240
|
|
2808 ZMAG87.ARC KHK 880104 17640
|
|
2837 ZMAG88.ARC KHK 880111 21420
|
|
2857 ZMAG90.TXT KOVACS 880124 32760
|
|
2884 ZMAG91.TXT KOVACS 880131 36540
|
|
2896 ZMAG92.ARC KHK 880208 20160
|
|
1349 ZMAG927.TXT KHK 860928 20160
|
|
2926 ZMAG93.ARC KOVACS 880217 25200
|
|
2848 ZMAG89.TXT KOVACS 880119 42840
|
|
2002 ZPRINT.ARC SCHWARTZ 870427 13860
|
|
2323 ZPRINT23.BAS KOVACS 870822 6300
|
|
2407 ZPRINT24.BAS KOVACS 870913 6300
|
|
1870 ZPRINT4.OBJ KOVACS 870325 7560
|
|
1869 ZPRINT7.BAS KOVACS 870325 3780
|
|
1892 ZREAD31.XLB KOVACS 870328 8820
|
|
______________________________________
|
|
Programming in Atari Basic
|
|
Part 7 of a series
|
|
______________________________________
|
|
Part 7 LESSON 4 Version 1.07
|
|
|
|
Testing, Branching and Counters
|
|
|
|
(C) COPYRIGHT 1987 by Jackson Beebe
|
|
|
|
------------------------------------
|
|
More on LOOPING:
|
|
------------------------------------
|
|
In the Part 6 we learned the powerful
|
|
technique of sending program control
|
|
back through previous lines of code,
|
|
called LOOPING. As we said in Lesson
|
|
3, this is a prime feature that
|
|
separates computers from calculators.
|
|
The program can be sent back through a
|
|
pile of source code lines, by using a
|
|
FOR-NEXT or a simple GOTO statement,
|
|
as:
|
|
|
|
10 DIM NAME$(15)
|
|
20 PRINT -Hello. Who are you? -;
|
|
30 INPUT NAME$
|
|
40 PRINT:PRINT:PRINT
|
|
50 PRINT -Hi there -;NAME$
|
|
60 PRINT:PRINT:PRINT
|
|
70 GOTO 20
|
|
|
|
-----------------------------------
|
|
TESTING:
|
|
-----------------------------------
|
|
The process that unleashes the power
|
|
of looping is TESTING. This gives us
|
|
the ability to make decisions each
|
|
time we fall through the code, as
|
|
-should we continue?-; -should we
|
|
quit?-; -is the input numerical?-; -is
|
|
X > 42?-; etc. We can write lines of
|
|
code that accomplish some purpose as
|
|
guessing the Lotto number, and loop
|
|
through multiple times. If we do
|
|
that, we need to test on each pass for
|
|
things like, -should we quit?-;
|
|
-should output go to screen and/or
|
|
printer?-; etc. This is accomplished
|
|
by placing lines in the routine's
|
|
code, usually at the beginning or the
|
|
end, that test before or after
|
|
execution.
|
|
|
|
A test at the beginning of a loop is
|
|
called a Top Test, and usually tests
|
|
whether to go through the loop or not.
|
|
A test at the end is called a Bottom
|
|
Test, done after the loop is
|
|
completed. This usually tests whether
|
|
to loop back or not. For example:
|
|
|
|
* * TOP TEST * *
|
|
|
|
10 X = 0
|
|
20 IF X > 10 THEN END
|
|
30 X = X + 1
|
|
40 PRINT X
|
|
50 GOTO 20
|
|
|
|
or
|
|
|
|
10 X = 0
|
|
20 X = X + 1
|
|
30 PRINT X
|
|
40 IF X < 10 THEN 20
|
|
50 END
|
|
|
|
* * BOTTOM TEST * *
|
|
|
|
Tests for various conditions and
|
|
instructions may be grouped together
|
|
in one location in a program, into
|
|
-piles- of IF-THEN statements. I
|
|
prefer this approach, as a pile of
|
|
lines makes it easy to find and debug
|
|
tests. IF-THEN statements execute
|
|
pretty fast, but you'll notice some
|
|
slowing when using a large number.
|
|
|
|
------------------------------------
|
|
BRANCHING:
|
|
------------------------------------
|
|
Testing, coupled with looping, gives
|
|
us the ability to make decisions as we
|
|
loop. An additional ability we have
|
|
in programming, is BRANCHING.
|
|
Branching is simply WHERE we send
|
|
control from one of our tests. If our
|
|
test asked -should I quit?-, and got a
|
|
YES response, we would probably send
|
|
control to the line that had the END
|
|
statement, ending the program.
|
|
|
|
Possibilities begin to unfold like
|
|
petals of a flower, as you -grok- the
|
|
concept of lines of code with multiple
|
|
tests for multiple things, sending
|
|
control to multiple possible places,
|
|
where multiple things may happen, and
|
|
on and on and on. Wow! Now THAT'S
|
|
programming. That's what you've been
|
|
waiting for, right? Now, how do we
|
|
code these tests? These CONDITIONAL
|
|
TRANSFER OF CONTROL statements? They
|
|
are the IF-THEN statements.
|
|
|
|
------------------------------------
|
|
IF-THEN statement:
|
|
------------------------------------
|
|
This statement takes the basic form
|
|
of:
|
|
|
|
line# IF (some test) THEN (some
|
|
statement)
|
|
------------------------------------
|
|
RELATIONAL Operators:
|
|
------------------------------------
|
|
We can test for standard mathematical
|
|
relationships with the RELATIONAL
|
|
Operators which are:
|
|
|
|
= equal to
|
|
< less than
|
|
> greater than
|
|
<= less than or equal to
|
|
>= greater than or equal to
|
|
<> not equal to
|
|
|
|
Some examples:
|
|
|
|
15 IF X > 89 THEN GRADE$ = -A-
|
|
95 IF A <> B THEN C = A + B
|
|
135 IF NUM = 99 THEN ? -Bye-:END
|
|
|
|
20 IF X > 14 THEN 1200
|
|
|
|
10 IF NAME$ = -JACKSON- THEN 135
|
|
|
|
Characters may be tested for
|
|
alphabetical order, equal to, greater
|
|
than etc.
|
|
------------------------------------
|
|
LOGICAL Operators:
|
|
------------------------------------
|
|
Tests may be combined, or substituted
|
|
using the LOGICAL Operators:
|
|
|
|
AND and OR
|
|
|
|
For example:
|
|
|
|
110 IF X >14 AND DAY$ = -M- THEN 1200
|
|
|
|
We can test for a range of numbers as:
|
|
|
|
15 IF X > 0 AND X < 100 THEN 100
|
|
|
|
25 IF X < 0 OR X > 100 THEN END
|
|
|
|
Line 15 above, accepts numerical input
|
|
to the variable X, that is between 0
|
|
and 99.999+. Line 25 rejects input
|
|
OUTSIDE the range of 0 to 100 (same
|
|
thing.)
|
|
|
|
Although it looks easy, knowing when
|
|
to use AND and when to use OR in your
|
|
tests, will be very confusing. As you
|
|
reason out the logic of multiple
|
|
tests, you will make the wrong choice
|
|
many, many times. Be mistrustful of
|
|
your tests, until they are proven
|
|
correct by trying good and bad data
|
|
for input. Always check the use of OR
|
|
and AND when debugging programs that
|
|
don't work right. Try numbers on each
|
|
side of the limits, to make absolutely
|
|
sure you've got it coded right.
|
|
|
|
These really get confusing when we
|
|
string tests together as:
|
|
|
|
70 IF (X> 0 AND X< 10 AND FLAG = 1)
|
|
THEN FLAG = 0
|
|
|
|
This line tests for three conditions,
|
|
and if True, sets FLAG = 0. Note
|
|
parenthesis used between the IF and
|
|
THEN portion of the statement. These
|
|
are often required to keep things
|
|
straight, and always allowable. Note
|
|
the code following the THEN in this
|
|
case, is not a GOTO, but simply an
|
|
instruction. Here's a test to Quit:
|
|
|
|
80 etc
|
|
90 DIM KEYIN$ (1)
|
|
100 ? -QUIT (Y/N) ? -;
|
|
110 INPUT KEYIN$
|
|
120 IF KEYIN$=-Y- or KEYIN$=-y- THEN ?
|
|
CHR$(125):END
|
|
130 etc
|
|
|
|
This code dimensions a one character
|
|
string variable KEYIN$ for input. It
|
|
tests for both an upper and lower case
|
|
y, clears the screen and ends the
|
|
program if found. Testing for both
|
|
upper and lower case is the best idea,
|
|
as the program will work, regardless
|
|
of how the user has the upper/lower
|
|
case toggled. This is an example of
|
|
error checking the input, a process
|
|
that bulletproofs a program against
|
|
incorrect input causing a crash. This
|
|
is often a factor that separates
|
|
smooth professional programs from
|
|
rough hacks. We will expand on this
|
|
process as we learn.
|
|
|
|
Note the quotes around alphabetic
|
|
characters being tested for, and that
|
|
Atari BASIC is forgiving about whether
|
|
you use spaces before and after the
|
|
relational operators, and variables,
|
|
etc. Also note we MUST restate the
|
|
variable when using AND and OR. Here's
|
|
WRONG code that WON'T work:
|
|
|
|
(wrong) 10 IF A<6 AND >10 THEN END
|
|
|
|
(right) 10 IF A<6 AND A>10 THEN END
|
|
|
|
The syntax checker in the built-in
|
|
BASIC editor will catch this error.
|
|
|
|
Multiple statements may be hung on the
|
|
end of an IF-THEN, separated by
|
|
colons. The code following the THEN
|
|
will be executed when the IF-THEN
|
|
statement tests TRUE. All code past
|
|
the THEN will be executed up to the
|
|
permissible maximum line length of
|
|
three screen lines. The code following
|
|
the THEN is never executed if the
|
|
statement tests False. For example:
|
|
|
|
10 FOR X = 1 TO 25
|
|
20 IF X>=6 AND X<=10 THEN ? X
|
|
30 NEXT X
|
|
40 END
|
|
|
|
This program prints:
|
|
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
|
|
The equal sign tests for EXACTLY equal
|
|
to, and 5.9999 is NOT equal to 6. This
|
|
can be tricky. It is common practice
|
|
to use < and > to test for numbers, or
|
|
<= and >= when possible, to avoid
|
|
numeric errors resulting from
|
|
multiplication or division causing
|
|
slight inequality. Strings may be
|
|
tested, and < and > will test for
|
|
alphabetical order of the first
|
|
letters of strings.
|
|
|
|
Again, don't trust your eyes and brain
|
|
to know whether you've arranged your
|
|
AND's and OR's, parentheses and logic
|
|
correctly. It always LOOKS right. Use
|
|
correct and incorrect input, and make
|
|
sure by trial and error that
|
|
everything is correct.
|
|
|
|
Some BASIC's support an ELSE addition
|
|
to the IF-THEN statement, but Atari
|
|
BASIC does not. Don't worry, we don't
|
|
really need it. You can always arrange
|
|
code to achieve the effect you want.
|
|
When an IF-THEN statement is False,
|
|
execution resumes at the very next
|
|
line, and the IF-THEN is NOT executed.
|
|
|
|
The opportunities, and combinations
|
|
are endless, and knowing a few good
|
|
-hacks- is what separates new from
|
|
experienced programmers. We will
|
|
continue to learn about IF-THEN
|
|
statements for a long time.
|
|
______________________________________
|
|
ZMagazine Issue #94 February 22, 1988
|
|
(c)1988 SPC/Ron Kovacs
|
|
______________________________________
|