______________________________________ |////////////////////////////////////| |////////////////////////////////////| |//SYNDICATE ZMAGAZINE ISSUE #95//| |//--------------------------------//~ ~//PUBLISHGR/EDITOR| March 7, 9988 //| |// RON KOVACS | //| |////////////////////////////////////| |////////////////////////////////////| |____________________________________| |Syndicate Publishing Company | |ZMagazine and ST-Report Magazines | |Post Office Box 74 | |Middlesex, New Jersey 08846-0074 | |____________________________________| |Syndicate BBS (201)968-8148 300/1200| |Enter ZMAG, then 1988 for ZMAG and | |ST-Report downloading. | |____________________________________| |Issue #96 INDEX | |____________________________________| |*|Editors Desk | |*|Programming in Basic Part 9 | |*|ZMag Technique (Mr. Goodprobe) | |*|The Programmers Pal (Review) | |*|Whats Wrong With Atari Part 2 | |*|SPC Newswire (Atari News) | |*|BBS Watch | |_|__________________________________| ______________________________________ Editors Desk ______________________________________ by Ron Kovacs It is getting more and more difficult to gather 8 bit news, reviews and modification information. As an Atari publisher, I can understand why there is an apparent disregarl for the Atari 8 Bit computer. ZMag WILL NOT die!! Even if we have to go to a bi-weekly format or even a monthly report, we will do so, But we will continue providing the best news and information we can find. If you are a GEnie subscriber, you can gev to us |hrough the ST Roundtable. We are part of the RT in the Bulletin Board section, Catagory #22. Look for more GEnie news in future editions of ZMag. Check out ST-Report Issue #25 for a confrence transcript with Sam Tramiel of Atari. It should open your eyes a bit! We hope for the better. We are will be publishing another newsletter later this month. The BBS Report will debut March 21, 1988. This publication will contain news and information about BBS systems, BBS software, sysop interviews, and BBS advertising. All advertising will be free of charge to all ZMAG carriers! Stay tuned for details. Thi{ weeks issue is brought to you by Midtown Television, Atari 8/16 bit sales and repair. Give them a call at (216-622-0997) and mention you read this ad in ZMagazine. Please call these fine BBS Systems! Phantasmal Alchemy (203) 443-5200 EXTE (616) 245-8259 CoaSTline (201) 929-9351 Lions Den BBs (312) 690-3724 Thanks for reading ZMAG! ______________________________________ LEARNING TO PROGRAM IN ATARI BASIC ..Part 9 of a continuing smries.. ______________________________________ (c)1987,1988 Jackson Beebe Subroutines CONTENTS: --------- Subroutines GOSUB Statement RETURN Statement POP Statement Error Checking ON_GOSUB Statement Structure: ---------- As we have discussed before, BASIC gets a 'bad rap' in the programming community, owing mainly to: 1. It's slow execution speed, as it's an INTERPRETED language. 2. It's lack of 'structure.' Execution speed is not really as big a problem lately with the advent of compilers that can compile a BASIC program into object code and run it rapidly, but 8 bit Atari's are not receiving up-to-the-minute new compilers, as are PC's. We do have TurboBASIC, the fine PD BASIC for XL's and XE's from Germany that includes a compiler, but for now we're learning about plain vanilla Atari BASIC. 'Structured Programming' is the new darling catch-phrase of the computer world. Structured languages like PASCAL and perhaps -C-, have rigid requirements for how we can code and arrange code, to accomplish a job. BASIC on the other hand is very, very loose. It will let us just about write anything any old way, and it will probably work. The drawback to BASIC's lack of structure is that we can write such a mish-mash of jumping around kludged up code, that without REMs, no one will ever be able to trouble-shoot, decipher, or maintain our code. There are ways we can introduce some structure into BASIC, that will allow us to program in more modern 'modules.' One of these techniques is to use subroutines. Subroutines are modules of code that we transfer control to, within a program, execute the code in the module, then return. Subroutines: ------------ The most popular use for subroutines, is to hold code that we use more than once in a program. Instead of coding it out three, or four or more times throughout the program, we can code it once, put it in a subroutine, and call that subroutine whenever we need to use that code. Isn't that clever? These subroutines may be placed anywhere in a program, at the beginning, in the middle, or at the end of a program. I think it's best to pick either the beginning, or end of a program. By convention, we often expect to find them there. Putting them in their own location, further contributes to 'structure' which is desirable, at least in 1987. More on placement later. Subroutines are smaller 'packets' of code, that usually perform some clearly defined function when called. They are equivalent to 'blocks of statements' or 'functions' in other languages. GOSUB and RETURN Statements: ---------------------------- We send the program to a subroutine using the command GOSUB followed by the line number of the beginning of the subroutine. The subroutine will be made up of one or more lines of BASIC code, with the last statement being RETURN. Control returns to the next executable statement after the GOSUB that called the subroutine. We'll restate this again later. It's important. For example, let's follow this printing program through: 10 REM *** GOSUB DEMO *** 20 ? -I'm at line 20- 30 GOSUB 80 40 GOSUB 110 50 ? -Back at line 50 to END- 60 END 70 REM * * SUBROUTINE * * 80 ? -I'm at line 80- 90 RETURN 100 REM * * Subroutine * * 110 ? -I'm at line 110- 120 RETURN This program produces the output: I'm at line 20 I'm at line 80 I'm at line 110 Back at line 50 to END It always prints at 20, then goes directly to line 80's subroutine, and prints there. Line 90 causes a return to line 40, the line following the line it went gosub at (line 30.) It then goes directly to line 110, the second subroutine, prints, and line 120 causes a return to line 50, where it prints, and falls into line 60 to end. You should be able to follow these comings and goings. Again, it always returns to the next executable statement following the one it went GOSUB at. This could be in the MIDDLE of a line like this: 90 REM ** Another Demo ** 100 GOSUB 200:? -end of line 100- 120 ? -At line 120- 130 END 200 ? -At line 200- 210 RETURN OUTPUT: At line 200 end of line 100 At line 120 This leaves at the beginning of line 100, prints at 200, returns back to the remaining statement on line 100, to print -end of line 100-. It prints at 120 and quits. You should study this until it makes sense. Here's a longer example. Let's say we have a program that brings in names from the keyboard, and checks them each to make sure only upper or lower case letters were entered. (We wouldn't necessarily go about things this way in a formal program, but this is just a subroutine example.) 10 REM *** Input Names Program *** 20 REM Dimension variables 30 DIM FNAME$(15), MNAME$(15), LNAME$(15),IN$(15) 40 PRINT:PRINT:PRINT:PRINT 50 REM 60 PRINT -Input First Name -; 70 INPUT IN$ 80 GOSUB 1000 90 FNAME$=IN$ 100 REM 110 PRINT -Input Middle Name -; 120 INPUT IN$ 130 GOSUB 1000 140 MNAME$=IN$ 150 REM 160 PRINT -Input Last Name -; 170 INPUT IN$ 180 GOSUB 1000 190 LNAME$=IN$ 200 PRINT:PRINT:PRINT 210 REM 220 PRINT FNAME;- -;MNAME;- -;LNAME 230 END 240 REM 990 REM * * CHECK SUBROUTINE * * 1000 FOR X = 1 TO LEN(IN$) 1010 IF ASC(IN$(X)) < 64 OR ASC(IN$(X)) > 123 OR (ASC(IN$(X)) > 90 AND ASC(IN$(X)) < 97) THEN 1050 1020 NEXT X 1030 RETURN:REM okay letters - return 1040 REM 1050 PRINT -Non-alphabetical input- 1060 FOR WAIT = 1 TO 350:NEXT WAIT 1070 POP:GOTO 40:REM error-pop stack Okay, let's look at what we have here. This program dimensions variables at line 30. It brings in a string from the keyboard at 70, in a variable called IN$. Line 80 calls a subroutine at line 1000, that checks each letter in the string, from 1 to the length of the string. It checks to see that each character is either upper case (ASC between 65 and 90) or lower case (ASC between 97 and 122.) If the input is good, line 1030 sends control back to line 90. At this time, the input in IN$ is assigned to FNAME$, and held there. Next the program brings in the middle name, as IN$ again, and sends it to line 1000's subroutine for checking. If good, it returns, loads it into MNAME$, and inputs and checks the last name. The reason I choose IN$ as the variable in all the INPUT statements was so I could use the same subroutine to error check all three strings. To do that, I had to pick a variable name in line 1000 and use it for each test performed. The easiest way is to bring each input in as IN$, and assign input to another variable after checking. At line 200, it prints out the total name and END's. If a subroutine test fails (is 'bad' input), it jumps to line 1050, prints an error message, waits a moment, and starts itself over again. We were able to save a lot of code here by putting the test in a subroutine, and recycling it. If this were a 'real' program, I would move the INPUT IN$ statements to the first statement in the subroutine. I didn't, for clarity of sections and function in this lesson. Moving the INPUT to the subroutine would save three lines. Error Checking: --------------- One thing that separates the real programmers, from the wing and a prayer kludgers, is the inclusion of excellent error checking. This usually involves checking for possible errors in input, etc. that would crash the program, and supplying user informative messages. It is my opinion, that programs should always include error checking, as it isn't fair to a new user for a program to repeatedly crash, when trying to learn to operate it. It's a lousy way to learn, and only a few of us will persevere through too many crashes. There are many ways to accomplish error checking. This program includes a string character test. Using IF-THEN statements, we can test whether a 'good' character is within a stated range, in which case the IF-THEN statement tests true and executes the end of the statement, or we can test whether a 'good' character is outside a stated range, in which case the statement tests false for a good character. A statement set up like that would only execute the end of the IF-THEN statement if it is a bad character. (This is the test I used.) Many, many tests are possible with AND, OR, <, >, =, and others in all combinations. Note the order of stating the ASC of the string IN$, and the X'th character of the string. ASC(IN$(X)). Also note the way we must arrange the parenthesis around the X. The FOR-NEXT loop increments to check each place in the string. This string error checking routine is a genuine Handy Household Hack for your collection. You can include number checking, or other punctuation commands easily, such as a hyphen, colon, etc. POP Statement: -------------- Atari BASIC includes a POP command to pop the stack if we jump out of a subroutine, or leave it other than by the RETURN statement. Atari 8 bit computers use page one of memory, locations 256-511 for the 'stack'. At bootup time, the computer 'points to' location 511. Each time we call a subroutine, it puts new information 'on the stack' which grows downward toward 256 to keep track of where it left from, and where to RETURN to. After it accomplishes a RETURN, it clears those addresses back off the stack. When we jump out of a subroutine, rather than RETURNing, we need to (should) POP the old, no longer needed addresses off the stack. Here's a couple examples, and a new topic, Nesting. Nested Subroutines: ------------------- We can go from one subroutine level to another, to another, etc, going very 'deep.' Stack POPing, relates to coming back correctly to a desired place from nested levels, for example: 10 REM ** Nested Demo ** 20 ? -I'm starting at 20- 30 GOSUB 1000 40 ? -I'm back at 40 to END- 50 END 60 REM 1000 ? -I'm gosub at 1000- 1010 GOSUB 2000 1020 ? -I've returned to 1020- 1030 RETURN 1030 REM 2000 -I'm gosub at 2000- 2010 GOSUB 3000 2020 ? -I've returned to 2020- 2030 RETURN 2040 REM 3000 ?-I'm gosub at 3000- 3010 RETURN OUTPUT: I'm starting at 20 I'm gosub at 1000 I'm gosub at 2000 I'm gosub at 3000 I've returned to 2020 I've returned to 1020 I'm back at 40 to END Note that it goes one level at a time, and returns one level at a time. Step by step. Now let's try POP: 10 REM ** POP Demo ** 20 ? -I'm starting at 20- 30 GOSUB 1000 40 ? -I'm back at 40 to END- 50 END 60 REM 1000 ? I'm gosub at 1000- 1010 GOSUB 2000 1020 ? -I've returned to 1020- 1030 RETURN 1040 REM 2000 ? -I'm gosub at 2000- 2010 GOSUB 3000 2020 ? -I've returned to 2020- 2030 RETURN 2040 REM 3000 ? -I'm gosub at 3000 3010 POP: POP: RETURN OUTPUT: I'm starting at 20 I'm gosub at 1000 I'm gosub at 2000 I'm gosub at 3000 I'm back at 40 to END The thing to notice is that each time we issued a POP command, it 'forgot' it's last gosub address. Often necessary to keep your returns straight, but in small programs, not necessary for single level subroutines etc. Fast/Slow Subroutines: ---------------------- BASIC is pretty straight forward about finding a subroutine when called. It goes to the very beginning of a program, and looks at each line one at a time, to see if it's the desired line. Naturally if your subroutine is at the bottom of a lengthy program, there will be some delay before it executes. This is an example of a slow subroutine. The best applications for slow subroutines may be introductory screen messages, menus, etc. If speed is very necessary, then put the subroutine as near the beginning of the program as possible. Usually we jump around fast subroutines with GOTO's like this: 10 REM ** Fast Subroutine Demo ** 20 REM 30 GOTO 200:REM Jump around SR 40 REM 100 REM * * * Fast Subroutine * * 110 FOR X = 1 to LEN(IN$(X)) 120 IF IN$(X) = 65 THEN PRINT -A- 130 NEXT X 140 RETURN 150 REM 200 PRINT -WELCOME to EZ-LIST- 210 REM DIM IN$(15) 220 etc - rest of program To use the fast subroutine in the program, we would say: 335 GOSUB 110 The program would find it, execute it and return at 140 deeper into the body of the program to calling place. Kind of fun to experiment with. Try this for yourself. Gosub to REMs: -------------- I would caution you never to send a program to a REM at the beginning of a subroutine. It will work, but many programmers don't believe in REMs. Not only don't they write REMs in their programs, but they'll remove REMs from our programs to gain space, add a hack, or just on principle. If you've used a REM for an address, it will crash. Granted people perhaps shouldn't do that, but believe me they will, so always send to a good line, and precede it with a REM. ON_GOSUB Statement: ------------------- This statement works like ON_GOTO (Lesson 3.) The syntax is: 10 ON VALUE GOSUB 111,222,333,444 When the variable stated, in this case VALUE has the value of 1, control goes sub to the first line number specified, in this case 111. If the variable is 2, it goes sub to the second listed line number, etc. Of course the big difference between this and ON_GOTO, is that this one always returns to the following line number, and ON_GOTO does not return. 10 ON NUM GOSUB 935,25,250,190 This is a valid statement. Line numbers need not be in any particular order. There is more we could say about subroutines, but this should get you started, and on your way. Many programmers keep libraries of subroutines for BASIC hacks, and use them in future programs. This is an excellent idea. By now you should be able to write quite a bit of straight down code to do math, printing, etc. You should be able to puzzle out much of what you read in ANTIC and ANALOG magazines' BASIC listings. For reference you should have a booklet or book or guide of some kind next to you with ATASCII codes, and perhaps Atari BASIC commands and examples. Again I recommend -The ANALOG Computing POCKET REFERENCE CARD- for $7.95. I initially worried that I'd wear it out at the seams, but it's still going strong after almost two years! If you plan to continue on with Atari BASIC, or any other language for your Atari 8 bit, I suggest you go out and purchase a -Memory Map.- Actually this is a book, filled with each memory location, and exactly what it does, and what values will make it do which things. Don't get intimidated at it's size, or initial complexity, just buy it, and read it for pleasure. Keep it by the john, or carry it to your doctor's appointment, or read 1/2 hour before bedtime. Keep a list in the back of your discoveries, for instance that: 621 controls the key click 752 - cursor on/off 622 - scroll speed 580 - coldstart 82 - left margin etc. Check for -The Master Memory Map for the Atari- by Craig Patchett & Robin Sherer or -Mapping The Atari- by Ian Chadwick. After you buy a disk drive and a printer, one of your next needs is for a handy bookshelf. (Right after you buy a modem !) Sample Problems: ---------------- Problem 6 Write a program that displays a menu on the screen at startup, that allows you to choose Addition, Subtraction, Multiplication or Division, then prompts you correctly to input two numbers, and add, subtracts, multiples or divides them and displays the numbers and the answer. Use subroutines to accomplish each math function. Use error checking to check for numerical input, also in a subroutine. Problem 6A ---------- Write a program that brings in a sentence from the keyboard, and counts how many digits, spaces, upper case letters and lower case letters the sentence contains. It should print out all this info plus the length of the sentence. Contact me at: Jackson Beebe Prairie Data Fields 807 West Hill Street Urbana, IL 61801 or 72550,317 on CompuServe ______________________________________ ZMAG TECHNIQUE ______________________________________ Save a printers life..it may be yours! by Mr. Goodprobe One of the qualities I would yearn to have is the ability to forsee problems before they happen. But since we will never possess this ability, let me share from the experience of some printer owners, and hopefully spare your printer some grief in the near future. I have seen the chip we will speak of in Star, Panasonic and Epson printers, and may possibly be in others. I have no idea which printers do and do not have it, so would be best to check. You will find a socketed chip on the PC board, usually of the 20 pin + variety, and this is the critter of which I wish to bring to your attention. The feature of this chip that makes it easy to spot is that the legs are off-set, one is bent long, and the next bent short...needless to say easy to spot. According to my experience, and that of others who service printers on a regular basis, the fact that the board expands and contracts from heating and cooling, the leads tend to break free and develop intermittent connections. Normally if the chip were soldered in you would merely resolder the connections and most likely all will be well. But due to the presence of sockets the end result is often fatal. When one of these leads opens, the accompanying printhead pin driver transistor is driven to saturation, causing it to fail, and also ruining the print head. The resulting repair bill is oftimes at or near the cost of purchasing a new replacement printer. Thus the advisability of preforming this simple fix before tragedy strikes. The fix is simple, but will take probably an hour to complete. Note the direction that the desired IC is facing and write it down. Then using a jewelers screwdriver, gently pry the IC out of its socket, and set it aside. Using your favorite desoldering apparatus, remove the socket from the printer motherboard. Now solder the IC directly to the motherboard, taking great care to make sure the connections look good, and there are no traces inadvertently jumped together by stray solder. Keep those Ataris (and printers) 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! ______________________________________ Programmers Pal Information ______________________________________ S A M P L E R Concept, and Programming by: Chuck Steinman Marketed by: Dataque Software The Programmers Pal, was originally derived from the concept, that every time you needed a computer...the thing you needed it for...ended up being the computer... and unless you keep two computers powered up all of the time.. it is just too much ofa hassle to power-up one just to get a simple address, or calculation. FLASH!, IDEA.... what if I there was a small program, that would allow me to do some of these often needed and difficult to remember tasks?? Well the Programmer's Pal was designed to fit that bill! Not only is PAL (for short) small...it is undetectable by most any BASIC & Machine Language programs normally encountered. If the program follows normal guidelines .. the PAL will work with it. NOTE: ===== The included file PROPAL.COM, is just a SAMPLE of the REAL program. This will allow many people to look at the program & see if it is of any use to them and then decide if they feel it is worth the requested amount. If not, they are only out the time and cost to d/l it. IF they like what they see... and feel they would like to have a copy... then they can order it using the information, at the end of this file. Section 1: Requirements First, The PAL must be booted into an XL, or XE series machine...... which must have a minimum of 64K bytes of RAM. Any additional RAM can be used for any other applications (ramdisks or whatever). Second, The PAL was designed around DOS 2.5...so using the PAL with a different version or brand of DOS is not guarenteed, or supported at this time. (I would be interested in your trials and tribulations here). Third, The PAL uses about 25% of the stack space for its own routines. A problem would only exist if there is a program that uses an abnormally large amount of stack space. I have never observed any program with this problem, but anything is possible. Most of the 8-bit programs only will run the stack down to around $01C0, $01B0 at the lowest. PAL will work. as long as the stack never is pushed below $0160. Also, any other utility that uses the extended banks of >64k machines must not use the RAM under the BASIC cartridge. This is where the PAL is hidden.... and beware.... if you get too close, and uncover the PAL...... Lastly, if you exit BASIC to DOS, you MUST! ONLY! return to BASIC using the DOS [M] command. This command exits DOS by jumping to an Absolute address in memory. You will want to -run- at an address of A000. This will start BASIC as normal. Using the DOS [B] command will remove the PAL.... as it re-initializes the interrupts. Section 2: Commands There are 7 different screens for the PAL. Depending on specific keys you press, you will call up one of these screens. I will cover each screen in detail. Remember this is a sampler, so the screens are not functional, they are just to give you a sample of what can be done. To EXIT any screen back to BASIC, or DOS..... just hold down CONTROL, and press the zero (0) key. To perminantly REMOVE the PAL, just hold down CONTROL, and then press the ESCape key. (from BASIC or DOS) SCREEN 1: KEYPRESS: Hold CONTROL & press 4 FUNCTION: TRANSLATOR This is the conversion table, it will show you the ATASCII character, the internal character that has the same value, the 6502 Mnemonic, and the HEX and decimal value for that character. You can slide up, and down throught all the 256 possible codes, just by using the OPTION, and SELECT keys. If you press the START key you will add 128 to all the character values on the screen. SCREEN 2: KEYPRESS: Hold CONTROL & press 5 FUNCTION: BASIC Pointers This screen will show you all of the current values for many important BASIC pointers, and locations. It is displayed in both HEX, and decimal. SCREEN 3: KEYPRESS: Hold Control & press 6 FUNCTION: 16-bit Calculator/ALU This was a fun one to code.... It is a 16-bit calculator, with many logic functions too! It has: 2 16-bit operands, displayed in HEX and decimal. The arrow keys will move the cursor...the OPTION key will increase, while the SELECT key will decrease the particular digit under the cursor. START is a clear for BOTH operands. ADDITION, SUBTRACTION, MULTIPLICATION DIVISION, AND, OR, XOR are all done at the SAME time.... and all results are displayed in seperate windows!!! in BOTH HEX, and Decimal!! SCREEN 4: KEYPRESS: Hold CONTROL & press 7 FUNCTION: Disk Sector Display This screen will show the contents of any of the 1040 possible sectors of a 1050 ED disk. (720 of a SD). You can press OPTION, to increase the sector number, or SELECT for a lower. START will load that sector onto the screen and display it in HEX, and ATASCII. Pressing all three SELECT, OPTION and START... will load the sector counter with $0169 (+/- 1 sector, depending on if you release them all 3 at once) which is the Directory area of the disk. SCREEN 5: KEYPRESS: Hold CONTROL & press 8 FUNCTION: Memory Peek/DisAssemble This screen will show the contents of any of the 65536 memory addresses on the screen. It will show you both the address, its contents, and an in-line disassembly of all bytes on the screen currently. Since there is no way of specifying an origin here... I just start at the first valid opcode at the top of the screen. ALL of the phases (or interpretations) of ALL of the bytes on the screen are indicated This as the translator screen uses OPTION to increase the address, and SELECT to deccrease it... but now the START will select an increase of one byte, or one PAGE (256 bytes) and is indicated in the lower corner of the screen. SCREEN 6: KEYPRESS: Hold CONTROL & press 9 FUNCTION: O.S. Equate listing This is a reference page, which lists many of the hardware registers, and other locations used by many BASIC/ML routines. They are displayed in HEX, and Decimal. PROGRAM SETUP: All that needs to be done to get up & running with the PAL, is to copy the PROPAL.COM (or PROSAM.COM) file to a DOS 2.5 disk with DOS. Rename the PROPAL.COM file to AUTORUN.SYS To start the fun, just boot the Atari with the BASIC enabled. That is it! You can even use the PAL when in the DOS.DUP menu area! If you have other AUTORUN files you wish to use... you may have to experiment to see which must come first. I would suggest the PAL first.... but it may vary... just append the files together using the DOS copy command, with the /A option. The Programmer's Pal.. is marketed by DATAQUE Software (pronounced Duh-Tack and the emphisis is on the Tee) This project seemed to drag on forever I would code for what seemed DAYS and a few times there were a few over 48 hour marathons..It was started on 10/1/86... and completed on 2/1/88 to give you an idea....It was the ONLY 8-bit program I worked on during that period. Compare this to DISKFILE... which was published in Analog #47... which took a little over a week working only 2-5 hours maximum after my full-time job. The main influence, and drive for the PAL, was that I had several people in the public eye.... connected with the Atari crowd say -it can't be done.... not on an 8-bit-....... to them I can now say HA! A FULL copy of the BASIC Programmer's PAL, is available for $20.00 by writing the following address, and requesting -The PAL-. DATAQUE Software 3308 Park Avenue West P.O. Box 134 Ontario, Ohio 44862 If you have not tried the MTOS files (Multi-Tasking OS) for the 8-bit..... well.... what's your hold-up? This little gem will allow you to run 5 tasks (3 on XE) at the same time (BASIC or ML). Each task can be up to 16k in size. DATAQUE has REAL solutions for REAL problems! With your PAL disk, you will recieve a password on the 24 hour HOT-LINE for Atari trouble... aka MASTER-800 BBS... this will allow you to recieve all upgrades to the PAL.... FREE for one full year from date of purchase (except any phone tolls). also..... a QUICK response to any of your problems and questions... As new DATAQUE program samplers are released they will be at the Master-800 BBS FIRST. If you do not have a modem.... well I will try to answer letters.... but it may take a bit longer. Upgrades that must be mailed have a $5.00 charge to cover postage, handling, and media. I can also be contacted via: DELPHI: MASTER800 CSERVE: 71777,3223 GEnie: C.Steinman Chuck Steinman/SysOp Master-800 BBS (419) 529-5197 24hrs 300/1200 baud ______________________________________ Whats Wrong With Atari Part 2 ______________________________________ A Follow Up by Robert E. Handley Last month I wrote an article on What's Wrong With Atari? Boy, did I get feedback. Some thought I was out to destroy Atari. Others thought I said what was long over due. The sysop on GEnie did not want to post my article because it was negative Atari and might cause others not to upgrade or buy. Well folks, if no one ever tells a company like Atari what is wrong, they think everything is OK and keep right on making mistake after mistake-never knowing why things are not selling the way they should. If you recall, I also made suggestions on how to correct the mistakes and make a better product. After all, we are the users. We should know what we like or do not like, right? I am told that Atari is trying and that they are listening. Well, time will tell. In a few months I would expect to see 520FM/ST's with double-sided drives and double-sided upgrade kits for the ones already sold (with a trade-in or return credit for single-sided drives). Mega ST's will have an on/off switch on the front panel and a reset switch on the keyboard. Oh yes, Atari will also annouce that they have redone GEM and a full boat bug free version is available to all registered owners for under $50.00 in appreciation for buying Atari and keeping the company alive. They also will announce new products and they will be available the same day at many Atari dealers in your area. Yes, time will tell, won't it? Oh yes, I almost forgot that this old anti-Atari person just took the big step this --yes, I went out and popped for the big one. I now have a Mega/ST4 with both color and monochrome monitors. I wish to thank Practical Solutions for sending my Monitor Master overnight. It works great. If you have both monitors, get one. You will not be sorry. I found ways to work around the on/off and reset buttons for now but they are still a pain in the behind, so close and yet so far. ______________________________________ SPC Newswire ______________________________________ ATARI'S EARNINGS UP Atari Corp. says its fourth quarter earnings were up 57 percent to $18.7 million. That represents 32 cents a share on revenue of $277 million, compared with earnings of $11.9 million, or 22 cents per share, on revenue of $92.6 million in the same period of the previous year. The fourth quarter showed boosts the profits for all of 1987 up 76% to $44.1 million, or 76 cents per share, from $25 million, or 53 cents in 1986. At the same time, sales rose 91 percent, increasing to $493 million in 1987 compared with $258 million the previous year. Atari spokesman Greg Pratt told The Associated Press that contributing the healthier financial picture -- besides the buyout of Federated, which now accounts for 25 percent of Atari -- were strengthened computer sales in Europe and booming video game sales in the US. -Video games were obviously a hot category- in 1987, he said. -There were no teddy bears or laser guns to take those dollars away. People went back to more traditional stuff and bought video games.- Atari's 4th quarter Earnings Report _Atari Corp_ _4th Quarter_ LATEST PERIOD YEAR EARLIER --------------------------------------- $276,956,000 $92,667,000 $18,702,000 (.32) a-$22,997,000 (.43) a-Includes an extraordinary credit of $11,047,000. ______________________________________ BBS Watch ______________________________________ News and Information captured from BBS Systems. This text captured from the StarBase I BBS (201) 938-6906 [ Msg # ]0073 [Sent To]All 03/04/88 [Sent By]SYSOP! [Subject]Trenton show The upcoming Trenton ComputerFest will be held, rain or shine, on April 23rd and 24th. On Saturday, the show is open from 9am to 6pm, and on Sunday it's open from 10am to 4pm. Admission is $7.00 for both days, unless you are a senior or student, in which case the admission is $3.00 (I believe that figure is correct, but I am not completely sure.) For more information, call the Trenton State College at 1-609-771-1855 and ask to speak to the Electronic Department. They handle the arrangment of the show. ______________________________________ ZMAGAZINE Issue #96 March 7, 1988 (c)1988 SPC/Ron Kovacs ______________________________________