938 lines
37 KiB
Plaintext
938 lines
37 KiB
Plaintext
ZMAGAZINE WEEKLY ONLINE MAGAZINE
|
|
Issue #118
|
|
Wednesday, August 10, 1988
|
|
|
|
PUBLISHER: Ron Kovacs
|
|
American Publishing Enterprises, Inc.
|
|
Post Office Box 74
|
|
Middlesex, New Jersey 08846
|
|
|
|
MANAGING EDITOR: R. F. Mariano
|
|
ZMAG EDITOR: John Deegan
|
|
|
|
REGIONAL HEADQUARTERS
|
|
---------------------
|
|
NORTH SOUTH MIDWEST WEST
|
|
(201) 343-1426 (904) 786-4176 (216) 784-0574 (916) 962-2566
|
|
=========================================================================
|
|
AVAILABLE EXCLUSIVELY ON: * COMPUSERVE * GENIE * DELPHI * THE SOURCE *
|
|
=========================================================================
|
|
|TABLE OF CONTENTS|
|
|
<*> Publishers Desk <*> Editors Desk
|
|
<*> Whats New For Express! Pro <*> Basic Programming FINAL CHAPTER
|
|
<*> Goin' South <*> ZMAG Extra
|
|
<*> Rumors Revisited
|
|
|
|
======================================
|
|
PUBLISHERS DESK Ron Kovacs
|
|
======================================
|
|
|
|
I have been receiving Email lately requesting information on the return of
|
|
the Syndicate BBS. I am presently retired from SysOp status until the
|
|
fall. At that time I will leave details in ZMag and ST-Report on the re-
|
|
opening of the BBS. We will NOT be running Carina II. (Just had to put
|
|
that in) opppsss.
|
|
|
|
The DOG DAYS are here and the community at-large is quiet. Except for the
|
|
continued ramblings generated by past issues of ZMag, all seems quiet. On
|
|
the ST front though, there is much rumbling going on. For the latest news
|
|
and reviews on the ST side, read ST-Report Magazine.
|
|
|
|
John Deegan, the new editor of this publication, has been doing a fine job
|
|
and I hope you all find the continued support of John interesting.
|
|
|
|
Next week in ZMagazine: The debut of our Official User Group Listing.
|
|
Stay tuned for more details next week.
|
|
|
|
======================================
|
|
EDITORS DESK John Deegan
|
|
======================================
|
|
|
|
I have included another Carina II response. It was sent to Ron Kovacs via
|
|
the Launch Pad BBS. (Zmag Hdqts North)... He has commented on parts of
|
|
the commentary and I have also added my 2 cents after reading it. I want
|
|
to stress here that we are closing this matter with this issue. If you
|
|
have further commentary on the Carina II review/commentary, Please refrain
|
|
from sending them in.
|
|
|
|
On the ConmpuServe Pay Service, the following was captured and added
|
|
shortly before publication:
|
|
|
|
SPECIAL SUPRA MODEM OFFER!!!
|
|
|
|
CompuServe's Atari Forums have made arrangements with Paramount Products
|
|
Inc. to offer the members of our forums the chance to upgrade your system
|
|
to 2400 baud service at a very special price. For a limited time,
|
|
CompuServe subscribers may purchase the SUPRA CORP. 2400 baud Hayes-
|
|
compatible modem for the very **LOW** price. These are brand new, not
|
|
reconditioned units, with the full SUPRA CORP. warranty.
|
|
|
|
The SUPRA MODEM uses the Hayes Smartmodem 'AT' command set and operates at
|
|
300-1200-2400 baud. It's an outboard unit (not an internal plug-in card)
|
|
allowing ease of transfer to other computers. Connection is thru the
|
|
standard RS-232 interface. (Just plug it into the back of your ATARI ST).
|
|
To take advantage of this special offer, call CompuServes Atari 8/16 Forum
|
|
and read the file in the News and Reviews sections.
|
|
|
|
If you've been accessing CompuServe at 1200 baud, this is a great way to
|
|
lower your total online bill since CIS does *NOT* charge a premium for
|
|
2400 baud access. (You can get the same amount of information or download
|
|
the same amount of programs in approximately 1/2 the time as 1200 baud
|
|
users!) This modem will PAY FOR ITSELF in just a few sessions.
|
|
|
|
This is a worthwhile deal to jump on! So call CIS today!!
|
|
|
|
Now, the Carina II Reader Response: by George Stevens
|
|
|
|
I have read with interest the articles in Zmag 112, 114, 115, 116;
|
|
regarding Carina II software, and some of the name calling that has taken
|
|
place.
|
|
|
|
Let me interrupt here by saying I have yet to purchase a BBS, or associate
|
|
with one other than as a typical caller. I have more or less considered
|
|
the idea, usually bagging the whole idea because of the expense and trouble
|
|
involved.
|
|
|
|
In any event, I was very interested in Ron Kovacs editorial in Zmag 112,
|
|
since I call two Carina II BBS systems in my area. What concerned me the
|
|
most was the troubles he related about the software, and figured -Hey ...
|
|
he must know what he is talking about ... -.
|
|
|
|
In retrospect, I find it was not the case. Ron admitted in Zmag 115 that
|
|
he did nothing to rememdy his problems, and stated it cannot be the
|
|
equipment, it MUST be the software. In ZMAG 112, he asked any others with
|
|
the same problems to step forward and let the world know; we are still
|
|
waiting for just one!
|
|
|
|
Above all this, it seems Ron and the Zmag staff have taken to personal
|
|
battles with those that did voice an opinion opposite the one Ron presented.
|
|
|
|
Frankly I don't see how you deserve a reply, you still have not proven your
|
|
point, and reflect not only unethical behavior, but quite a bit of
|
|
immaturity.
|
|
|
|
Well now you can attack me if you like, I expect you will since you have
|
|
everyone else who has replied on this topic.
|
|
|
|
From the user side, Carina II is a unique and highly functional Bulletin
|
|
Board System, not only is it reliable, but fun to use. I can't see why
|
|
Ron had the problems he had, and it is a shame he had them, but I disagree
|
|
STRONGLY with his motives.
|
|
|
|
George Stevens 1241 Palatine Rd, Arlington Heights IL.
|
|
|
|
Reply from Ron Kovacs
|
|
|
|
I want to thank you for taking the time in replying. I can see that we
|
|
have another person from the Carina Defense Team at large.
|
|
|
|
Please RE-READ the statements made by myself and those of the gentlemen
|
|
you noted in your commentary. I removed the names to save another attack
|
|
from them. I do have the right to respond to the critics just as much as
|
|
they do. You are obviously in agreement with the views presented by them.
|
|
You are entitled to do so.
|
|
|
|
You do state you DO NOT run a BBS system. You are wise in your comments
|
|
and we have atleast shed a little light on the matter. There are
|
|
countless dollars invested in BBS Systems. The equipment, and software
|
|
and the many hours add up to much! I have atleast discussed the problems
|
|
that I encountered and reported. Though not a popular discussion with
|
|
some readers, I have stood by it and will not change my original comments
|
|
until proven otherwise.
|
|
|
|
You are the user and have presented your facts. True or false they are
|
|
here for all to read. Is this what you wanted?
|
|
|
|
Editors Note:
|
|
We have received 7 replies to the Jim Stiles article printed two weeks
|
|
ago. We have been asked NOT to use the source name in the article and
|
|
until we have the permission to use the names, we will NOT publish these
|
|
comments. I also feel that we have discussed the issue at great length
|
|
and will close the subject effective with this issue. Unless Mr. Kovacs
|
|
decides otherwise, Carina II's future is in the public's hands. Pro or
|
|
con, the argument will never reach a conclusive finding.
|
|
|
|
And finally, to Mr. Stevens, I made the remarks in the most recent
|
|
releases of ZMagazine. Ron Kovacs DID NOT edit or make the editorial
|
|
commentary. Thank you again for submitting your comments.
|
|
|
|
There you have it. Now lets discuss something else???
|
|
|
|
======================================
|
|
Whats New For EXPRESS! Professional
|
|
======================================
|
|
by John Deegan
|
|
|
|
In traveling through all of the Online Services, I noticed a few files
|
|
that might be of interest to Express Professional SysOps. Just incase you
|
|
may not have heard.
|
|
|
|
In the Atari8 SIG on CIS, and GEnie's download section, there are NEW
|
|
files uploaded for Express SysOps. I have them listed below. Please note
|
|
that I have used the CompuServe filenames.
|
|
|
|
CHESS.CMD A BBS game.
|
|
ATARI.CMD File converter. Atascii->Ascii Ascii->Atascii
|
|
DUMP.CMD Similiar to SpartaDos DUMP command
|
|
FORMAT.CMD Formatter utility
|
|
HAPPY.CMD Happy users initializer.
|
|
PRTLOG.CMD Utility
|
|
QSCAN.CMD Utility
|
|
TOP10.CMD Utility
|
|
VERSN.CMD Utility
|
|
======================================
|
|
LEARNING TO PROGRAM IN ATARI BASIC -FINAL INSTALLMENT-
|
|
======================================
|
|
LESSON 10 Version 1.06
|
|
(C) COPYRIGHT 1988 by Jackson Beebe
|
|
|
|
[ED. This is the final installment of the Basic Programming series. All
|
|
of the installments presented in past issues of ZMagazine were written and
|
|
edited by Jackson Beebe. Your are encouraged to send your comments to
|
|
Jackson at the address at the bottom of this column. Next week a contents
|
|
page will be included. This will list all the topics covered in this
|
|
series. Zmag presented all the articles between Jan 1988 and this issue.
|
|
|
|
DIRECTORY from BASIC:
|
|
|
|
Have you ever been working in BASIC, and wished you could see a directory
|
|
of files on your disk without exiting BASIC to DOS, getting a directory,
|
|
and re-entering BASIC? (Did I really need to ask?) Often I work in
|
|
TurboBASIC (PD), just for this feature.
|
|
|
|
Well, today I want to share a great -one line hack- from Kenny Ksajikian
|
|
of Van Nuys, CA. I saw this in ANTIC magazine Volume 3 Number 7, November
|
|
1984, in the letters section, and hope that by giving credit to author
|
|
and source, I may pass it along your way.
|
|
|
|
This is a little program you put on disk under the name DIR. The program
|
|
has no line numbers, and is used in Immediate mode in BASIC by ENTERing
|
|
it into RAM with the command ENTER -D:DIR-. It will give you a directory,
|
|
but will not stick around, nor graft onto your program source code
|
|
already in RAM. When it's done listing files, it gives an Error 136,
|
|
End-of-file (ignore this error) and returns you to BASIC.
|
|
|
|
You may write this file onto disk in two ways. You may copy it using DOS,
|
|
from the screen editor to disk, by:
|
|
|
|
1) Issuing a command to copy from the screen editor E:,to D:DIR and
|
|
<RETURN>. This opens a file.
|
|
|
|
2) Type in the program.
|
|
|
|
3) Press CONTROL+3 which closes the file, and writes it to disk.
|
|
|
|
A second method is to write the file in a text editor/word processor and
|
|
use an ASCII save under the name D:DIR. The editor TEDIT normally does an
|
|
ASCII save, but with AtariWriter Plus, you must go to the main menu and
|
|
push CONTROL+S for an ASCII save. (An ASCII save eliminates the header of
|
|
format and punctuation codes in a word processor file, and writes only
|
|
the text.) Here's the program:
|
|
|
|
CLR:DIM N$(15):CLOSE #5:OPEN #5,6,0,-D:*.*-:FOR I=1 TO 128:INPUT #5,N$:?
|
|
N$:NEXT I:CLOSE #5 <RETURN>
|
|
|
|
I added the CLR command at the beginning of Kenny's program, to avoid an
|
|
Error 9 when using it over and over, caused by re-dimensioning N$. The
|
|
CLR command undimensions all strings.
|
|
|
|
Using DOS, put a copy of this on all your BASIC disks. Use this by issuing
|
|
the command: ENTER -D:DIR- in Immediate mode in BASIC. Very handy. A
|
|
big THANK YOU to Kenny for this tip!
|
|
|
|
SOUND Statement:
|
|
|
|
Okay, on to sound from your Atari. Atari 8 bit machines are rich in sound,
|
|
having 4 built-in voices, numbered 0-3. Each of these may be turned on or
|
|
off independently, or in combination with any others. Once a voice is
|
|
turned on, it remains on until you turn it off manually, or the program
|
|
encounters an END statement.
|
|
|
|
The syntax of the SOUND statement is as follows:
|
|
|
|
10 SOUND N,F,D,V N = voice Number (0-3)
|
|
F = Frequency (0-255)
|
|
D = Distortion (0-14) even #'s
|
|
V = Volume (0-15)total < 33
|
|
|
|
Voice Number may be an integer from 0 to 3.
|
|
|
|
Frequency may be an integer between 0 and 255. Zero sounds a high note
|
|
and 255, a low note. The formula is: Actual Frequency = 31960 divided by
|
|
(our number (0-255) plus one.)
|
|
|
|
Distortion works with even numbers only. 10 and 14 sound 'pure' tones.
|
|
Experiment until you get a sound you like.
|
|
|
|
Volume may be 0 to 15. 15 = maximum volume, and 0 = Off. You should keep
|
|
the total volume of all voices added together, under 33, to avoid speaker
|
|
distortion.
|
|
|
|
If you wish to turn on two voices, it requires two SOUND statements (or
|
|
a multi-statement line) as:
|
|
|
|
10 REM ** SOUND DEMO **
|
|
20 REM
|
|
30 SOUND 0,126,10,10
|
|
40 SOUND 1,81,14,10
|
|
50 FOR X = 1 to 150:NEXT X
|
|
60 END
|
|
|
|
This program turns on two voices, counts from 1 to 150, then turns both
|
|
voices off.
|
|
|
|
Here's what happens without an END statement in your program: Type this
|
|
and RUN it.
|
|
|
|
10 SOUND 1,100,4,10
|
|
|
|
Note this continues to sound. How do you turn off a voice within a
|
|
program? Well, like this:
|
|
|
|
20 SOUND 1,0,0,0
|
|
|
|
Issuing the SOUND statement with the correct voice #, and a zero for
|
|
Volume, turns that voice off. It's standard practice to put zeros for all
|
|
parameters, freq, distortion and volume, for quick recognition of an OFF
|
|
statement. RUN, NEW and END will also shut SOUND off.
|
|
|
|
Okay, let's do a few things. Let's play Yankee Doodle. We'll use one
|
|
voice, and mess around a bit. We will need a little delay loop to slow
|
|
BASIC down a little, and we may as well put the loop in a subroutine, and
|
|
call it throughout the program.
|
|
|
|
To facilitate hacking around with this without having to type each line
|
|
over and over again, let's put the Distortion, Volume, and even the
|
|
Frequency into variables in the SOUND statements,and initialize them up
|
|
front in the program. We can easily alter them when experimenting, by
|
|
changing these initialization statements.
|
|
|
|
10 REM *** SOUND DEMO ***
|
|
20 REM
|
|
30 REM ** Initialize **
|
|
40 DIST=14:VOL=14:DELAY=100
|
|
50 FREQ1=63:FREQ2=57:FREQ3=50
|
|
60 REM
|
|
70 REM ** SOUND **
|
|
80 SOUND 1,FREQ1,DIST,VOL
|
|
90 GOSUB 1000
|
|
100 SOUND 1,FREQ1,DIST,VOL
|
|
110 GOSUB 1000
|
|
120 SOUND 1,FREQ2,DIST,VOL
|
|
130 GOSUB 1000
|
|
140 SOUND 1,FREQ3,DIST,VOL
|
|
150 GOSUB 1000
|
|
160 SOUND 1,FREQ1,DIST,VOL
|
|
170 GOSUB 1000
|
|
180 SOUND 1,FREQ3,DIST,VOL
|
|
190 GOSUB 1000
|
|
200 SOUND 1,FREQ2,DIST,VOL
|
|
210 GOSUB 1000
|
|
220 END
|
|
230 REM
|
|
990 REM *** DELAY SUB ***
|
|
1000 FOR X=1 TO DELAY:NEXT X
|
|
1010 SOUND 1,0,0,0
|
|
1020 RETURN
|
|
|
|
Experiment by changing the values of Distortion, Volume, Delay and
|
|
Frequency in lines 40 and 50. Take out line 1010, and see the effect of
|
|
NOT shutting off the sound between steps.
|
|
|
|
======== Sound Effects ========
|
|
|
|
We can make some neat sounds, by turning on a voice, then changing it's
|
|
pitch, distortion, and/or frequency, up or down etc. FOR-NEXT loops are
|
|
dandy for this.
|
|
|
|
Here's a short demo of a lazer gun type sound:
|
|
|
|
10 REM ** EFFECT1.BAS **
|
|
20 REM ** LAZER **
|
|
30 FOR X=20 TO 200 STEP 4
|
|
40 SOUND 1,X,10,12
|
|
50 NEXT X
|
|
60 END
|
|
|
|
Here's a demo of how the Distortions sound:
|
|
|
|
10 REM ** EFFECT2.BAS **
|
|
20 REM ** Distortion Demo **
|
|
30 REM
|
|
40 FOR DIST=0 TO 14 STEP 2
|
|
50 SOUND 1,100,DIST,10
|
|
60 ? -DISTORTION -;DIST
|
|
70 FOR X=1 TO 300:NEXT X
|
|
80 NEXT DIST
|
|
90 END
|
|
|
|
Here's one I call a Plink:
|
|
|
|
10 FOR PLINK =16 TO 0 STEP -1
|
|
20 SOUND 0,30,10,PLINK
|
|
30 NEXT PLINK
|
|
40 END
|
|
|
|
Or a tone:
|
|
|
|
10 FOR TONE = 20 TO 0 STEP -1
|
|
20 SOUND 0,53,14,TONE
|
|
30 NEXT TONE
|
|
40 END
|
|
|
|
Finally here's a rising and falling siren:
|
|
|
|
10 REM ** EFFECT3.BAS **
|
|
20 REM ** SIREN **
|
|
30 FOR REPEAT=1 TO 2
|
|
40 REM ** RISE **
|
|
60 FOR FREQ=255 TO 5 STEP -1
|
|
70 SOUND 1,FREQ,14,10
|
|
80 NEXT FREQ
|
|
90 REM ** FALL **
|
|
100 FOR FREQ=5 TO 255 STEP 1
|
|
110 SOUND 1,FREQ,14,10
|
|
120 NEXT FREQ
|
|
130 NEXT REPEAT
|
|
140 END
|
|
|
|
Poking Sounds:
|
|
|
|
If you have been using your Memory Map very much, you have probably
|
|
wondered by now, if you can POKE sound values directly into memory. Yes
|
|
you can. Here are the locations (for you to read up on.)
|
|
|
|
53760 = Voice 0 Frequency
|
|
53761 - Dist / Volume
|
|
53762 = Voice 1 Frequency
|
|
53763 - Dist /Volume
|
|
53764 = Voice 2 Frequency
|
|
53766 = Voice 3 Frequency
|
|
53767 - Dist / Volume
|
|
|
|
The formula for the value to POKE in the odd numbered location (Distortion
|
|
and Volume) is:
|
|
|
|
(Distortion * 16) + Volume
|
|
|
|
For example:
|
|
|
|
SOUND 2,121,10,10 is equal to: POKE 53762,121:POKE 53763,170
|
|
|
|
Well, this is the general idea. Try turning on more than one voice at
|
|
once. Try one voice rising while one falls. Try different effects at
|
|
different times with different voices going different directions. Save
|
|
your favorite sounds for use in programs. There are many good sound demo
|
|
programs available on Public Domain disks, from magazines by Type-In, or
|
|
available for D/L on Bulletin Boards Systems (BBS.) Study these to see
|
|
what makes them tick.
|
|
|
|
Unfortunately, SOUND statements will slow down a program quite a bit.
|
|
POKEs are faster, but will still have an effect on the speed of a program.
|
|
|
|
SETCOLOR Statement:
|
|
|
|
BASIC has good color control built right in. Options and colors vary with
|
|
different graphics modes, but we will just cover Graphics Mode 0, BASIC's
|
|
default mode. The familiar blue screen with white letters.
|
|
|
|
The syntax for the SETCOLOR statement is:
|
|
|
|
10 SETCOLOR R,H,I R = Register (1,2,4)
|
|
H = Hue (0-15)
|
|
L = Intensity (0-14) even #'s
|
|
|
|
These three parameters (in Graphics 0) control the color and intensity of
|
|
1 the Letters, Background and Border. The Letters are always the same
|
|
color as the Background (screen), but may be varied in intensity from
|
|
black to white. When they are the same intensity as the Background, they
|
|
disappear.
|
|
|
|
====== REGISTER ======
|
|
|
|
This parameter of the SETCOLOR statement determines whether we alter:
|
|
|
|
LETTERS 1
|
|
BACKGROUND 2
|
|
BORDER 4
|
|
|
|
======== HUE ========
|
|
|
|
This sets the color of the Background or Border. Colors possible are:
|
|
|
|
0 = Gray 8 = Blue
|
|
1 = Gold 9 = Light Blue
|
|
2 = Orange 10 = Turquoise
|
|
3 = Red-Orange 11 = Green-Blue
|
|
4 = Pink 12 = Green
|
|
5 = Pink-Purple 13 = Yellow-Green
|
|
6 = Purple-Blue 14 = Orange-Green
|
|
7 = Dark Blue 15 = Light Orange
|
|
|
|
Note that you can't change the hue in a SETCOLOR 1 statement. Letter
|
|
color follows Background color. I usually put a zero in the HUE location
|
|
of a SETCOLOR 1 statement.
|
|
|
|
====== INTENSITY =======
|
|
|
|
Intensities are roughly:
|
|
|
|
Dark (0-2)
|
|
Medium (4-8)
|
|
Bright (10-14)
|
|
|
|
Only the even numbers have an effect. Let's try some examples.
|
|
|
|
Here's code to produce bright white letters on a black screen with a dark blue border.
|
|
|
|
10 REM ** White on Blk/Blu **
|
|
20 SETCOLOR 1,0,14
|
|
30 SETCOLOR 2,0,0
|
|
40 SETCOLOR 4,7,4
|
|
50 END
|
|
|
|
|
|
Here's white letters on a red-orange background, with a dark blue border.
|
|
Isn't this fun?
|
|
|
|
10 REM ** Wht on Red-Or/Dk Bl **
|
|
20 SETCOLOR 1,0,14
|
|
30 SETCOLOR 2,3,4
|
|
40 SETCOLOR 4,7,2
|
|
50 END
|
|
|
|
Poking Color:
|
|
|
|
Once again, you should realize that many of the functions you can
|
|
accomplish with language statements, as SOUND or SETCOLOR, can be done by
|
|
directly POKEing memory locations. There are three memory locations that
|
|
correspond to the SETCOLOR statements. These are:
|
|
|
|
POKE 709 LETTERS (0-14)
|
|
POKE 710 BACKGROUND (0-238)
|
|
POKE 712 BORDER (0-238)
|
|
|
|
The relationship to the setcolor statements are:
|
|
|
|
SETCOLOR's POKE
|
|
first digit
|
|
|
|
1 709
|
|
2 710
|
|
4 712
|
|
|
|
The value to poke into RAM is determined by the formula:
|
|
|
|
(HUE * 16) + INTENSITY
|
|
|
|
For Example:
|
|
|
|
SETCOLOR 1,0,0 = POKE 709,0
|
|
SETCOLOR 2,5,6 = POKE 710,86
|
|
SETCOLOR 4,12,8 = POKE 712,200
|
|
|
|
In the last example, 4 stands for Border, so we use POKE 712. Color times
|
|
16 plus intensity is (12 * 16) + 8 or 200. Hence POKE 712,200.
|
|
|
|
I prefer using the POKE statements to control color in BASIC. You can
|
|
always use SETCOLOR to develop a screen, then use a POKE statement in the
|
|
finished program. SETCOLOR and POKE produce the same result.
|
|
|
|
Of course, you can vary, flash and alter these colors by using a FOR-NEXT
|
|
loop to alter the values of the SETCOLOR statement during program
|
|
execution. This is especially nice on title screens. It's easy to change
|
|
colors in different parts of your program, or from title screen to program,
|
|
etc. You only need to put a few statements in, and it's done. It allows
|
|
you to use colors you enjoy.
|
|
|
|
As always, experiment with this, and see what you like. Keep a notebook,
|
|
as you occasionally find good screen -recipes- by accident. Write them
|
|
down for future use.
|
|
|
|
JOYSTICK and TRIGGER:
|
|
|
|
We can directly read the joysticks in BASIC, by checking STICK(0),
|
|
STICK(1), 2, or 3, to determine the direction the stick is being pushed.
|
|
See chart below. If the stick is resting in the middle, that's a 15. If
|
|
it's pushed UP for example, it's now a 14. We can have our program fall
|
|
through a pile of IF-THEN statements, testing for all these possible
|
|
readings.
|
|
|
|
14
|
|
10 6
|
|
\ | /
|
|
\ | /
|
|
\ | /
|
|
\ | /
|
|
\ /
|
|
11 ------- 15 ------- 7
|
|
/ \
|
|
/ | \
|
|
/ | \
|
|
/ | \
|
|
/ | \
|
|
9 5
|
|
13
|
|
|
|
|
|
The trigger is read by the STRIG(0), or STRIG(1), 2, or 3 etc. If STRIG()
|
|
is ZERO, the trigger is pressed. If it's 1, it isn't. (That always seemed
|
|
a bit backwards to me but that's how it works.)
|
|
|
|
* KIDSDRAW.BAS (an ENTER-IN Program)
|
|
|
|
Okay. let's put some of this to work in a BASIC program that demonstrates
|
|
these concepts. KIDSDRAW.BAS is a goodie I wrote for my own education, as
|
|
well as to orient my 3 year old daughter to eye-hand coordination on the
|
|
computer. Let's take a look.
|
|
|
|
Lines 60 and 230, clear the screen, and set screen colors. The next
|
|
section drew screen boxes using CONT+Q, CONT+E, Z,C,W, in my ORIGINAL
|
|
program, but here,for ASCII printer purposes, I used dashes. Those control
|
|
characters won't print out right, and may feed endless sheets of paper,
|
|
or any number of odd things. You should by all means, be making up screens
|
|
using these CONTROL characters. Look them up, and try them. One screen
|
|
will addict you forever! You print BASIC listings then, with G:. All the
|
|
control characters will print out correctly, and you get condensed print
|
|
with 137 characters per line, making BASIC listings much more readable.
|
|
|
|
We dimension a string variable, two characters in length at line 70, and
|
|
bring in a string in line 160. Line 190 tests for a null input, which has
|
|
a length of zero (less than 1.). If TRUE, it must have been a plain
|
|
RETURN, so we -default- to a speed of 75, with the SPEED$=-75- statement.
|
|
Note 75 is in quotes, as it's still a two character string at this point.
|
|
Line 200 converts any string in SPEED$ to a number. Note that no error
|
|
checking is done in this program. You could add error checking for the
|
|
practice.
|
|
|
|
The cursor is positioned in the middle of the screen, and the program
|
|
falls through a pile of IF-THEN statements, and a SOUND statement, then
|
|
prints on the screen (that's supposed to be an INVERSE SPACE between the
|
|
quotes in line 500.) It loops back up to 290 to fall through the stack
|
|
again. I used line 290 to save some typing at lines 310-380 by only having
|
|
to type the letters ST for a variable. Try putting STICK(0) in lines 310-
|
|
380 and remove line 290. Change line 600 to read GOTO 310. Does it run
|
|
faster?
|
|
|
|
If the stick is not pushed (15), the program loops, awaiting a stick
|
|
deflection. When that occurs, X or Y are incremented or decremented,
|
|
depending on which way the stick was pushed. Note that we specified at
|
|
line 310, that when STICK(0) = 7 (stick pushed to the right) it adds 1 to
|
|
X. If it's pushed up and to the left (10), it adds 1 to Y, and subtracts
|
|
1 from X. These are directions referenced from the middle of the screen,
|
|
as specified in line 260.
|
|
|
|
UP (14), adds 1 to Y, DOWN (13), subtracts 1 from Y. LEFT (11), subtracts
|
|
1 from X, RIGHT (7), adds 1 to X etc. That's the plain vanilla joystick control.
|
|
|
|
Pushing the trigger is checked for at line 500. If it is not being pressed
|
|
(1), an inverse blank is printed (black on a white screen), and there's a
|
|
jump around the -regular blank- print statement of line 510. If the
|
|
trigger is pushed (0), line 500 is not executed, and the -regular blank-
|
|
overprints whatever may have been on the screen. Line 540 creates a delay
|
|
for low numbers, while a 75 gives maximum speed. Try removing line 570
|
|
(insert a REM at it's beginning) and see if it runs faster without the
|
|
zero FOR-NEXT loop.
|
|
|
|
Line 570 reads the memory location 53279 for a 6, which would mean that
|
|
START is being pressed. (Got that location scope out in your Memory
|
|
Map?). Line 600 zooms it back up to the top.
|
|
|
|
10 REM ** KIDSDRAW.BAS **
|
|
20 REM Ver 1.07 6/88
|
|
30 REM Jackson Beebe
|
|
40 REM
|
|
50 REM ** Clear screen /Set color **
|
|
60 ? CHR$(125):POKE 709,14:POKE 710,52:POKE 712,114
|
|
70 DIM SPEED$(2)
|
|
80 REM
|
|
90 REM ** Draw Opening Screen **
|
|
100 ? :? --------------------------------------
|
|
110 ? - KIDSDRAW by Jackson Beebe -
|
|
120 ? --------------------------------------
|
|
130 ? - 1 Joystick * FIRE button erases -
|
|
140 ? --------------------------------------
|
|
150 POSITION 4,20:? -Press START to erase screen-
|
|
160 POSITION 11,12:? -Set SPEED (1-75)-:POSITION 11,13:? -or push RETURN -;:INPUT SPEED$
|
|
170 REM
|
|
180 REM ** Default to 75 **
|
|
190 IF LEN(SPEED$)<1 THEN SPEED$=-75-
|
|
200 SPEED=VAL(SPEED$)
|
|
210 REM
|
|
220 REM ** Clear screen/Set color **
|
|
230 ? CHR$(125):POKE 709,0:POKE 710,14:POKE 712,116
|
|
240 REM
|
|
250 REM ** Middle of Screen **
|
|
260 X=19:Y=11
|
|
270 REM
|
|
280 REM ** READ STICK(0) assign to ST
|
|
290 ST=STICK(0)
|
|
300 REM ** Fall thru pile of tests **
|
|
310 IF ST=7 THEN X=X+1
|
|
320 IF ST=14 THEN Y=Y-1
|
|
330 IF ST=13 THEN Y=Y+1
|
|
340 IF ST=6 THEN X=X+1:Y=Y-1
|
|
350 IF ST=10 THEN X=X-1:Y=Y-1
|
|
360 IF ST=11 THEN X=X-1
|
|
370 IF ST=9 THEN X=X-1:Y=Y+1
|
|
380 IF ST=5 THEN X=X+1:Y=Y+1
|
|
390 IF X>38 THEN X=38
|
|
400 IF Y>22 THEN Y=22
|
|
410 REM
|
|
420 REM ** Handle negative number **
|
|
430 IF X<1 THEN X=1
|
|
440 IF Y<1 THEN Y=1
|
|
450 REM
|
|
460 REM ** Calc SOUND (Trigger-Off)**
|
|
470 SOUND 0,(ABS(X-Y)+2)*5,10,12:IF STRIG(0)=0 THEN SOUND 0,0,0,0
|
|
480 REM
|
|
490 REM ** Draw or Erase **
|
|
500 POKE 752,1:POSITION X,Y:IF STRIG(0)=1 THEN ? - -:GOTO 540
|
|
510 ? - -
|
|
520 REM
|
|
530 REM ** Speed (Delay) Loop **
|
|
540 FOR ZZ=1 TO 75-SPEED:NEXT ZZ:REM SLOWS
|
|
550 REM
|
|
560 REM ** Check for 'START' **
|
|
570 IF PEEK(53279)=6 THEN 230
|
|
580 REM
|
|
590 REM ** Loop Back
|
|
600 GOTO 290
|
|
|
|
** NOTE ** If you D/L'ed this file from CompuServe, it will be modified
|
|
to contain CR/LF at the end of each line, rather than the Atari EOL
|
|
character. (Copy the file to the screen using DOS, and see if it breaks
|
|
correctly by line, or if it has inverse rectangles and triangles at the
|
|
end of each line.) Before using a word processor as described below,
|
|
convert the CR/LF back to Atari EOL characters using FILEFIX.COM by Glenn
|
|
K. Smith, or a similar program.)
|
|
|
|
Conclusion:
|
|
|
|
I hope you have enjoyed LEARNING TO PROGRAM IN ATARI BASIC. This series
|
|
was intended to -turn you on- to BASIC programming, get you over any
|
|
program phobia you may have had, and hook your curiosity.
|
|
|
|
There are many opinions about BASIC, programming, and learning. Some folks
|
|
say you will be ruined forever if you learn BASIC as your initial
|
|
language. They feel you will learn a mish-mash approach, and never again
|
|
be able to train your brain to think in -structured- language approaches.
|
|
I believe you may teach yourself to write structured BASIC code if you
|
|
choose.
|
|
|
|
I am aware that most do-it-yourself self-taught programmers will quit
|
|
before they struggle months with a complex language, before producing
|
|
meaningful output.
|
|
|
|
I'm not kidding about struggling a long time. It takes dedication for
|
|
instance, to teach yourself -C- at home from a book. BASIC will get you
|
|
up and running with immediate feedback, and meaningful error messages
|
|
right away. I believe immediate feedback while learning is of prime
|
|
importance. BASIC will allow you to write and use a program you need,
|
|
right away. It will make you feel like a programmer. It will build your
|
|
confidence. It is important to note that you can find help with BASIC
|
|
problems almost anywhere around you. Try asking those around you for help
|
|
with ASSEMBLER, or C language problems, and note the blank stares on their
|
|
faces.
|
|
|
|
If a true hacker begins with BASIC, I believe that person will find their
|
|
way to other languages as needed. When learning a second or third
|
|
language, you will know enough to ask -How do I bring in a string?-, or
|
|
-How do I test for 'null' input?- or similar questions. You're not
|
|
starting from scratch.
|
|
|
|
Many beginners feel that it is a hardship to have to use more than one
|
|
kind of computer at once, or to learn more than one language. Their brain
|
|
fixates on the DIFFERENCE between machines or languages, and they tell
|
|
themselves it is too confusing and too hard. I believe this is a fatal
|
|
thinking trap that you can easily overcome. If you stop and think for a
|
|
moment, you will note that a person may encounter as many as 3 or 4 types
|
|
of computer between home, school, work and friends. It is futile to demand
|
|
the world standardize. This is never going to happen, and why be left
|
|
behind in the dust? I have used a mainframe while teaching college, a mini
|
|
at work, and an Atari 8 bit and a PC-AT clone at home. I lived to tell
|
|
about it! You can too.
|
|
|
|
It is important to focus on the SAMENESS of all the computers or software
|
|
you use. This is the secret. Realize the importance of knowing you may
|
|
BLOCK text in a word processor, and asking -How do you BLOCK and MOVE in
|
|
WordPerfect, or PC-Write, or Atariwriter Plus- etc. Apply this thinking to
|
|
programming. Believe that more rather than fewer machines and programs
|
|
will crop up in the future. Let your mind catch on to the basic feel and
|
|
style of -how computers think.- Develop a hacker approach. Be brave enough
|
|
to learn, but also be smart enough to develop a feel for what will damage
|
|
or delete your files. Back up frequently !
|
|
|
|
This series of ten lessons does not cover all of BASIC's possibilities.
|
|
It will get you up and running, and expose you to a core of programming
|
|
ideas and techniques. It's a firm foundation to build on. Read magazines.
|
|
Borrow books. Join a user group. Subscribe to ANALOG and ANTIC magazine.
|
|
Buy a modem and call Bulletin Board Systems. Download programs. Write
|
|
programs and Upload them to a BBS. Keep trying. Drink cokes (beer), eat
|
|
cold french fries, and stay up until all hours hacking on your computer.
|
|
Tell your wife -I'll be done here in just a minute honey.- Upgrade your
|
|
memory. Invent a clever hack. Become a computer nerd and write articles,
|
|
or even a series of lessons.
|
|
|
|
Above all, enjoy yourself, and give your computer a hug today! Hang in
|
|
there. Thanks for listening.
|
|
|
|
This concludes LEARNING TO PROGRAM IN ATARI BASIC. I hope you have enjoyed
|
|
this series, and have found some useful information here. Write me.
|
|
|
|
Contact me at:
|
|
|
|
Jackson Beebe
|
|
Prairie Data Fields
|
|
807 West Hill Street
|
|
Urbana, IL 61801
|
|
CompuServe 72550,317
|
|
|
|
======================================
|
|
Goin' South by John Lewis Orr
|
|
======================================
|
|
|
|
[ED. The following article was captured from the online services and is
|
|
seemingly presented as a regular release. The subject matter detailed
|
|
here is in no way reflective of the staff of Zmagazine or APEinc. This
|
|
article has NOT been re-edited.]
|
|
|
|
Volume I Preview August ,1988
|
|
|
|
NOW IS THE TIME FOR ALL GOOD MEN TO COME TO THE AID OF THEIR COUNTRY
|
|
|
|
That line from my high school typing days keeps ringing in the back of my
|
|
head lately. When I saw it appear on the screen as I gave a demonstration
|
|
of a computer program to someone, I realized I had never stopped to give
|
|
the sentence and its implications a first thought, that is until lately.
|
|
But, in light of the general political/moral drift of the country, -Now is
|
|
the time for all good men to come to the aid of their country.- has taken
|
|
on an entirely different meaning. My -silent minority- behavior must
|
|
change, and I have chosen to start with a series of personal/political
|
|
editorials and observations. As editor-in-chief-, publisher, writer, et
|
|
al of -Goin' South-, I need the readers' comments and involvement in order
|
|
not to lose sight of the purpose of this publication. I even hope to
|
|
enlist the overt aid of some of you by adding your input to the content
|
|
of future issues. I've chosen to keep this first issue as a simple text
|
|
file in order to make it universally available. Again, user input will
|
|
determine its format as time goes by; that's assuming this draws any
|
|
attention.
|
|
|
|
What is -Goin' South-? It is a personal political awareness effort. It
|
|
is hoped that it will become a public political awareness publication.
|
|
There are no enticements offered other than the one about personal growth.
|
|
There are no special interests served other than those of the person(s)
|
|
who contribute(s) to its content.
|
|
|
|
Ever since I became involved in using a personal computer (1979), I've
|
|
been drawn by the idea that it is a tool meant for the enhancement of
|
|
human freedom. I've also been very frightened by its potential for
|
|
infesting our lives through governmental abuses. But I had never
|
|
considered using the process myself to help encourage the first and hinder
|
|
the second. A line from the movie -Inherit the Wind- comes to mind; 'The
|
|
purpose of the press is to comfort the afflicted and afflict the
|
|
comfortable'. I see -Goin' South- as a member of a free press. Be it
|
|
know, that on the 8th of August, 1988 (8-8-88) -Goin' South- was born to:
|
|
|
|
A. Comfort the afflicted
|
|
B. Afflict the comfortable
|
|
C. Provide a forum for the proliferation of minority ideas
|
|
D. Defend the Constitution of the United States of America against all
|
|
enemies foreign and domestic by exposing those who would erase any
|
|
portion of its ideas from the American scene.
|
|
|
|
And who am I?
|
|
|
|
My name is John Lewis Orr. I am 39 years old and live on the Big Island
|
|
of Hawaii. I am married and have one child with another on the way. I am
|
|
a teacher by trade who has been running his own business for the past
|
|
three years. I am a veteran, having voluntarily served in Vietnam. I lean
|
|
toward the liberal persuasion politically and toward the conservative
|
|
persuasion economically. Based on the general directions this country has
|
|
taken in the last few years, I am evidently in the minority. I don't feel
|
|
comfortable about many things I see happening in this country today.
|
|
|
|
The following biography is made available to those who would label my
|
|
effort as communist or subversive...
|
|
|
|
I perceive myself to be intensely loyal to the most noble document ever
|
|
written by man, the Constitution of the United States and its Bill of
|
|
Rights. Remember, the Bible was written by God, or so many would believe.
|
|
My family history winds backward through American history to Meriwether
|
|
Lewis and George Washington. I am NOT a white supremist and have NO
|
|
tolerance for such attitutdes, but I am at the same time very proud of my
|
|
family history. From what I know of my family, someone has served in
|
|
every conflict bought by the United States.
|
|
|
|
Okay, so what?
|
|
|
|
This work is an effort at political awareness and responsibilty. I hope
|
|
that others will join in this effort. There are political realities today
|
|
that scare me; and I am frightened for my children. If you share that
|
|
concern and feel a bit powerless, join me in creating a vehicle which can
|
|
become a voice against the storm. Drop me a note at ED.SOFT. Let's see
|
|
what we can create.
|
|
|
|
======================================
|
|
ZMAG EXTRA
|
|
======================================
|
|
Captured text...
|
|
|
|
ACTION'S LAW
|
|
Power tends to corrupt; absolute power corrupts absolutely.
|
|
|
|
ALBRECHT'S LAW
|
|
Social innovations tend to the level of minimum tolerable well-being.
|
|
|
|
ALLEN'S (or CANN'S) AXIOM
|
|
When all else fails, read the instructions.
|
|
|
|
BOREN'S FIRST LAW
|
|
When in doubt, mumble.
|
|
|
|
BOVE'S THEOREM
|
|
The remaining work to finish in order to reach your goal increases as the
|
|
deadline approaches.
|
|
|
|
BOWIE'S THEOREM
|
|
If an experiment works, you must be using the wrong equipment.
|
|
|
|
BROOK'S LAW
|
|
Adding manpower to a late software project makes it later.
|
|
|
|
CANADA BILL JONES' MOTTO
|
|
It's morally wrong to allow naive end users to keep their money.
|
|
|
|
CANN'S (or ALLEN'S) AXIOM
|
|
When all else fails, read the instructions.
|
|
|
|
CARLSON'S CONSOLATION
|
|
Nothing is ever a complete failure; it can always serve as a bad example.
|
|
|
|
CLARKE'S THIRD LAW
|
|
Any sufficiently advanced technology is indistinguishable from magic.
|
|
|
|
++++++++++++++++++++++++++++++++++++++
|
|
Rumors Revisited
|
|
++++++++++++++++++++++++++++++++++++++
|
|
From ST-REPORT Magazine
|
|
|
|
ED. Just in case you might have missed past rumors around the community,
|
|
here are a few to keep you up to date.]
|
|
|
|
@ SUNNYVALE: A 68000 -GAME MACHINE- is in the works...Atari will -try- to
|
|
make sure it is not associated with the ST line...
|
|
|
|
@ 60md Hards: By year's end, most ST hard drives will be looking to
|
|
upgrade or will already have 60md hard drives...
|
|
|
|
@ HOUSTON: It looks like this will be the area ATARI's -NEW- factory will
|
|
appear...
|
|
|
|
_________________________________________________________________________
|
|
ZMAGAZINE ISSUE #118 AUGUST 10, 1988 Copyright (C) 1988 APEInc.
|
|
All Rights Reserved.
|
|
_________________________________________________________________________
|
|
|
|
|