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 . 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 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. _________________________________________________________________________