______________________________________ ZMAGAZINE 84 December 18, 1987 Best of Series Part 2 of 3 Best of Technical Assistance Columns ______________________________________ Published/Edited/Compiled by: Ron Kovacs Zmag BBS (201) 968-8148 300/1200 ______________________________________ Xx A Few Notes ______________________________________ Congrats to Rat White and family on arrival of Elizabeth. Best wishes from us to you!! I just received the NEW Michigan Atari Magazine and have a few comments! I was rather shocked to see that MAM has gone to a new format in their newsletter!! I was used to getting the small edition which fit nicely in it's shelf, (which I personally made) to file each edition. I miss the talents of John Nagy and sorry to see the originality gone!! What happen to CHAOS!!! The proposed mailing of the promised special Zmag plans has been delayed. Since I am in the middle of classes (LaMaz) and time has been short, I put the plans on hold until after the first of the year. Work, Zmag, child- care and a few other things around here have put my present schedule into a state of array. Stay tuned via the Zmag BBS for the latest updates. I have been calling around the nation during the past week and will continue to do so as time permits. I have not received very many BBS information files for the end of year issue. There is still time to get you BBS on the list. Please upload your title screen and comments asap for publication in the special issue in two weeks. The next special issue will be released 12/23/87. This issue is Part 2 of a 3 part series on the best of the technical help columns. We conclude the series next week. I hope you find this series of reprints interesting. Thanks for reading and supporting ZMag in 1987. ______________________________________ Xx Index 84 ______________________________________ <*> A Few Notes <*> Customizing DOS <*> Commodore Controller for Atarians <*> More Ram fr your XL <*> SuperCart Switching <*> TurboBasic Compiler <*> How To Use ARC <*> Wedge 130 Documentation <*> The X Device <*> Tech Help from Antic ______________________________________ Xx CUSTOMIZING DOS ______________________________________ The following article appeared in the May 27, 1986 edition of Zmagazine. Submitted By:Marlene Kovacs From May 1986 Family Computing THERE ARE A FEW POKE COMMANDS TO CUSTOMIZE DOS 2.0S OR DOS 2.5. NORMALLY, ATARI DOS LETS YOU OPEN ONLY THREE DISK FILES AT A TIME, IF YOU POKE 1801 WITH A NUMBER FROM 1 TO 7, YOU CAN DECREASE OR INCREASE THE MAXIMUM NUMBER OF FILES YOU CAN OPEN CONCURRENTLY. HERE'S A RELATED TIP: 128 BYTES OF RAM IS AUTOMATICALLY RESERVED FOR EACH FILE. TO SAVE MEMORY, SET THIS MAXIMUM TO REFLECT ONLY THE NUMBER OF CONCURRENT FILES YOUR PROGRAM WILL ACTUALLY USE. DOS VERIFIES (READS BACK AND CHECKS) EACH BYTE OFDATA IT WRITES TO DISK. THIS SLOWS DOWN SAVES ENORMOUSLY. TO ALMOST DOUBLE THE SPEED OF SAVES, TURN OFF THE -WRITE-WITH-VERIFY- FEATURE BY POKEING 1913 WITH VALUE 80. THOUGH THERE MAY BE A FEW PROBLEMS USING DOS WITHOUT VERIFY, NOTE THAT THIS MODIFICATION WILL MAKE DISK WRITES LESS RELIABLE THAN THEY WERE BEFORE. ONCE YOU'VE CHANGED DOS FEATURES, BE SURE TO WRITE A COPY OF YOUR MODIFIED DOS TO A NEW DISK BY TYPING DOS AND CHOOSING OPTION H (WRITE DOS FILES) FROM THE DOS MENU. LABEL THE NEW DOS DISK CAREFULLY. IF YOU'RE A DOS 3 USER, YOU CAN MAKE THE ABOVE DOS MODIFICATIONS BY TYPING DOS, SELECTING MENU OPTION I (INITIALIZE DISK), AND INITIALIZING A BOOTABLE DISK LIKE THIS: ENTER A Y AT THE MODIFY FMS PARAMETERS? PROMPT. THREE FURTHER PROMPTS WILL FOLLOW, PERMITTING YOU TO ENTER INFORMATION ABOUT HOW YOU WISH TO MODIFY DOS BEFORE WRITING IT TO YOUR DISK. DON'T CHANGE THE ADDRESS OF THE FMS (FILE MANAGEMENT SYSTEM) BUFFERS. CHANGE THE MAXIMUM NUMBER OF CONCURRENTLY OPEN FILES BY ADDING THE NEW MAXIMUM(FROM 1 TO 7) TO THE NUMBER OF DISK DRIVES AND ENTERING THIS SUM AT THE SECOND PROMPT. TURN OFF (WRITE WITH VERIFY) BY ENTERING N AT THE THIRD PROMPT. ______________________________________ Xx Commodore 1350 Controller ______________________________________ THE COMMODORE 1350 CONTROLLER FOR YOUR ATARI! (Or The Mouse That Jack Built) by Jay Pierstorff There has been much talk of mice and mouse controllers lately. The new Atari ST's come equipped with their own mouse...(mice?)..meeces?. Anyway, those of us who have an Atari of the 8-bit persuasion have watched with great envy, wishing we too, could have mice. Even if we could buy an ST mouse for our 8-bitters (which we can't) it wouldn't work with our existing joystuck (sic) programs. Sure, we'd all love to have an Atari ST, but my 130XE's library is bigger than the ST's and more important, it's paid for. Atari is rumored to be introducing an 8-bit mouse, but it is not confirmed at the time this article is being written. Mouse envy persists. I found myself wandering the aisles of the computer stores. Suddenly, I noticed a Commodore product beaming through the glass. -The Commodore 1350 Mouse for the C128- was printed on the package. The price was less than $50. Those lucky 128 owners! Too bad Atari hasn't made one for their computers. The C128 Commodore is an upwardly compatible to the C64 computer. That means that any software that worked on the 64 will also run on the 128. The C64 and the Atari's have always been real friendly about using the same joystick varieties. Would this...could this... might this mouse work with a trackball or mouse driver program? The plug looked very much like a standard joystick connector. I bought it and took it home. I could tell my Atari 130XE was nervous about the whole works, but undaunted, I loaded a trackball program, plugged in the mouse...but wait, the plug would not stay in! Upon close examination of the connector, I discovered that it was about 1/8 of an inch too short to reach the connector pins, (Commodore computers don't recess their joystick ports quite as much as Atari). I was Puzzled for a moment and then I thought about using a joystick extension cable! Ha! I quickly found my extension cable and plugged one end into port 1 and the other end plugged perfectly to the mouse! With trembling fingers I slid the mouse across the desk, and then... nothing. The cursor was on the screen but the mouse yawned. It would not control the cursor, not even a little. Now what... I tried to think, maybe it would work with a Koala or Touch Tablet program! I booted and failed. Maybe it was a -joystick emulator!- A Joystick in mouse clothing! I loaded the graphics editor of The Print Shop, IT WORKED IT WAS A JOYSTICK EMULATOR ALL ALONG! Suddenly, it occurred to me I should probably calm down. I got down off the computer table and tried a few more programs. Everything that would normally run with a joystick, was working with this imitation mouse. A comparison of the mouse and the Atari port shows the connections are mostly compatible with Atari and Commodore joysticks. Interesting that the brief, mouse instructions made no mention of Joystick emulation or even compatibility with the C64! Strange thing to keep a secret! Especially for companies in business to make money (right Jack?). The only non-workable feature of the 1350 Mouse is the right button. The left button is the standard -fire- button on a Joystick. The right button is connected to pin 9. The Atari looks to pin 9 for a potentiometer reading like a paddle controller would produce. But since their is no paddle emulation in the mouse, the right button is invisible to the Atari's OS. Oh well, one doesn't miss what one has never had. If Joysticks were meant to have two buttons....well you know what I mean. The Commodore Mouse is very usable. Even though your computer thinks it's a joystick, you will think it's a mouse! It really does an amazing job of convincing you! It feels good in your hand and moves smoothly across any flat surface. A clean desk or a -mouse pad- will give best results. A mouse pad is a rubber backed thin cushion that gives more control over mouse movements. For mouse maintenance, the rubber-coated, steel ball can be easily removed for cleaning. The 1350 Mouse is different from a true optical driven mouse. A true mouse has proportional control. The faster you move the mouse, the faster the cursor will move. The 1350 mimics this action but it can't move the cursor any faster than a joystick would. Slower cursor movements are imitated by the mouse delivering short, stop and go pulses to the computer. A true mouse will always take the same desktop travel to move the cursor from one screen edge to the other. The 1350 will move the cursor at maximum speed as long as the 1350 is in any motion at any speed. That means a fast, long push may not move the cursor as far as a short, slow push! That's not really a problem though, it's just a difference that can be worked with. It can even be an advantage for limited desktop space. The Commodore 1350 Mouse worked with all games and programs that require a joystick. Some are improved by the mouse and some are more suited to joystick control. The type of programs that are best suited to the mouse are those that require precision movements of cursor or gunsight centering on the screen. The least suited are the programs requiring continuous scrolling movements. They often require picking the mouse up and starting again if you run out of counter space. Drawing and doodling programs worked fabulous, Koronis Rift scores improved markedly, Rescue on Fractalus was confusing! Donkey Kong was ...different! It just depends on the type of movement involved. Many games took on a whole new feel when played with the mouse. Many were even more fun with a mouse than with a joystick! Do you really need a mouse? Yes you do! If you own and use a joystick, you will definitely enjoy owning a 1350 mouse. I wouldn't part with mine. Don't throw your joystick away yet, but mine is seeing less use since I let the mouse in the house! The Commodore mouse is not just for the C128 anymore! It's one of the best darn joysticks since the old Atari licorice stick! ______________________________________ Xx Hardware Modification ______________________________________ MORERAM ------ This hardware modification should be attempted only by those who have had some experience working with electronic boards and integrated circuits. If you are not confident of your abilities, ask for assistance from your User Group or a good TV/VCR technician. The object of this change is to enable the RAM at location $D600 thru $D7FF that cannot normally be accessed. The RAM chips are -on- the buss during each machine cycle unless the -CI line from pin 16 of U3 [MMU] is low. This added circuit forces this line -on- during access to $D600 thru $D7FF addresses, which is all that's required to use the existing memory at that location. Dis-assemble your 800XL by removing the six Phillips-head screws from the bottom of the case. Carefully lift the right side upwards (with it still lying on its keyboard) as if you were opening a book. Disconnect the keyboard cable and set the top section aside. Remove all the screws from the main board and work it loose from the base. Take note of the location and sequence of the shielding while you are pulling it apart. Now to the fun part.... Find the trace that connects pin 16 of U3 to pin 10 of U18. At a suitable location, completely cut thru this line. Then, use a small piece of double-sided foam tape to secure a 74HC20 IC to a clear area of the main board near U2 [74LS138]. Mount the chip on its back so that the pins point upward. (make sure you know which is pin #1!!) Using 30 gauge wire-wrapping wire, connect pin 7 to the nearest ground (pin 8 of U2 will do) and pin 14 to a nearby +5v point.(pin 16 of U2...) Wire pins 1,2,4, and 5 of the HC20 to pin 16 of U3 [MMU]. Solder a wire from pin 6 (of HC20) to pins 9 and 10 (of HC20). Add a wire from pin 12 (of HC20) to pin 9 of U2 [LS138] and from pin 13 (HC20) to pin 7 of U2 [LS138]. Last wire goes from pin 8 (HC20) to pin 10 of U18 [LS08]. ALL DONE!! Try the board now, before you put it back together. Just plug in the power and monitor plugs and boot Basic. If it shows -READY-, it is OK. Now, you can put everything back together. ______________________________________ Xx OSS UPDATE ...from the OSS BBS (408-446-3451)... ______________________________________ The Official Procedure: To Turn a SuperCart OFF: 1> Close I/O Channel 0 2> Wait for the LSB of RTCLOK ($14) to change value. 3> Do an SEI 4> Save $AFFF ... this is the 'cart status' register ... you'll need it if you wish to restore the cart 5> STA $D508. This turns the cart OFF. 6> Poke $3FA(GINTLK), 0 to tell the OS that there is no cart installed. 7> Poke $6A(RAMTOP),$C0 to tell OS that full RAM is available. 8> Do a CLI 9> Open #0,12,0,-E:- To Turn a Supercartridge back ON: 1> Perform steps 1-3 from above. 2> LDX with 'cart status' value saved in step 4 above. 3> STA $D500,X. This turns cart ON 4> Poke $3FA,1 to tell OS that there is a cart. 5> Poke $6A,$A0 to tell OS that less RAM is available. 6> Perform steps 8-9 from above. Notes: These should be obvious, but if you're a space case like me... The ON/OFF code MUST be 'safe'. That is, if RAM resident, it should not be overwritten by any application you may be running, whether under Cart control or not. (Especially the $AFFF value if you'll want to turn the cart back on!) Disk .COM files are a viable alternative. Once the cart is off, there MUST be a program IN PLACE to take over control of the computer! That may be DOS or it might be your own code. Depending on exactly what you're doing, some sort of RESET handler might prove useful. Again depending on application, XL/XE users may want to add PORTB manipulations. _____________________________________ Xx TURBO BASIC COMPILER DOCUMENTATION ____________________________________ Reprint from ZMAG61 The Turbo Basic Compiler can be used to compile programs in both TurboBasic and regular Atari Basic. Doing so will yield a sometimes startling (and sometimes not so startling) increase in speed. Like Turbo Basic itself, the compiler (and compiled programs) can only be run on an XL/XE. Also like TB, it is NOT compatible with Spartados. REQUIRED! You need 2 files to use the compiler. Both are in the Utilities section of CompuServes' Atari8 SIG or on your local BBS system. COMPIL.OBJ is the actual compiler (and a BIG thanks to Warren Lieuallen for the translation job!!!) RNTIME.OBJ is the companion 'runtime' package. COMPILING PROGRAMS Load COMPIL.OBJ from the DOS menu, with an binary load command. On the first screen, type the number of the drive containing your target program. (I usually have that on D8 for speed.) You'll then see a directory of the files on that disk. Use your cursor keys to highlight the 'target' file, then hit RETURN. As the compilation proceeds, you'll see the line numbers at the top of the screen. If no errors occur (see below), the program will then ask you for a filename for the new compiled program. An extender of .CTB (for Compiled Turbo Basic) is mandatory (see AUTORUN.CTB, below), as is a SAVE to D1:. Put the disk that'll hold your program in D1, type the name, then Hit RETURN. That's all there is to it! COMPILE ERRORS Like most Atari compilers, this one can be fussy. It will NOT compile an END statement (odd, huh?) Use STOP instead. It will also balk at compiling a FOR that has more than one NEXT attached, like so: 10 FOR X=1 TO 12:GET #1,BYTE 20 IF BYTE<32 THEN NEXT X 30 ? CHR$(BYTE) 40 NEXT X If you get an error message, you'll need to go back to your original Basic program and try to fix the offending code. In the above example, you would change line 20 to: 20 IF BYTE<32 THEN 40 RUNNING PROGRAMS Your new .CTB program is true machine language; it's 'pseudo code'. THAT means you must have a 'runtime' program to handle the final translation. This is RNTIME.OBJ. Compiled programs won't run without it. You can use it in either of 2 ways. FROM DOS: Use the command to LOAD RNTIME.OBJ FROM DISK: Copy RNTIME.OBJ to a disk containing DOS files and rename it AUTORUN.SYS, which allows it to boot automatically. AUTORUN.CTB RNTIME has an 'autorun' feature. When it runs, it will look for 'AUTORUN.CTB' on D1. If found, this file will automatically load and run. If NOT found, an error message will be displayed (FEHLER 9), along with a short menu. [Dos Run Load]. At this prompt, press L, then type in the name of your compiled program. So, to construct a complete 'boot' disk, you should have on the same disk: Dos files (DOS.SYS, DUP.SYS) AUTORUN.SYS (RNTIME.OBJ) AUTORUN.CTB (compiled program) Hint: here's the TB '1 liner' that I use (compiled) as AUTORUN.CTB on my 'compiled programs' disk. 10 CLS:DIR -D1:*.CTB-:STOP >>don lebow 70717,720 _____________________________________ HOW TO USE ARC _____________________________________ Reprint from ZMAG62 ANTIC PUBLISHING, COPYRIGHT 1987 ARC (For the 8-bit Atari) An ARC (pronounced -Ark-) file contains one or more files which have been compressed into a single file. Use ARCX.COM to extract the files from the .ARC file. ARCX is a machine- language program which requires at least 48K. ARCX.COM may be downloaded from the Utilities section of the Atari 8-bit SIG (type GO ATARI8). HOW TO USE ARCX.COM Before running ARCX be sure you have removed all cartridges and BASIC is off. Now load ARCX.COM from DOS (use DOS menu choice -L-), or type ARCX if you are using Sparta or an OSS DOS. ARCX will ask you for the name of the ARC file to extract files from. (If you don't remember the filename, you can get a directory by pressing the [+] key.) After typing-in the name of the ARC file, ARCX will ask you for the drive to send the extracted files to. ARCX will extract all files from the ARC file and write them to the destination drive. Next, ARCX will ask you if you want the screen turned off. If you press 'Y', then the screen will be turned off during the extraction process. This will speed up the process about 10%-20%. ABOUT ARC The expansion algorithms used to extract ARC files are quite complex, and therefore rather slow. (About one minute for each 5K of source file.) ARCX uses all available memory and buffers the input and output so your disk drives won't be running all the time. Keep in mind that the extracted files can be more then twice the size of the original ARC file. Be sure you have enough room before you start! ARC was originally written in C by Tom Henderson of System Enhancement Associates. The source code was placed in the public domain allowing for ARC and ARCX to be ported to a wide variety of computers. For complete instructions, refer to the documentation files in the Utilities library of the Atari 8-Bit SIG. ______________________________________ Xx WEDGE 130 ______________________________________ Reprinted from June 26, 1986 Zmag. The Basic wedge adds a 1k block of RAM that is used just like Page Six. BIGBLOCK The default block is from $2000 to $23FF (8192-9215). The pointers are altered to keep this area protected against RESET, NEW, LOAD, and other nasties. Uses? Since it is on an even page boundary, it can be used for a character set, or PM graphics. No more PEEK (106) complications. It can be used for all of those ML utilities that you haven't been able to squeeze into 255 bytes, or managed to make relocateable for strings (First we get it to work, THEN we massage, right?) Since you have BLOAD for loading object files, you can shuttle things into Bigblock as they are needed, a real boon when you're developing ML subroutines for Basic programs. You can even use this RAM to Bload what would otherwise require AUTORUN.SYS files (device handlers etc.), eliminating some of those Low Memory conflicts that drive us all crazy. Reassemble the source listings and make your life simpler. LOMEM RESET For maximum flexibility, you can change the size of Bigblock with a couple of POKEs. The procedure is outlined on the title screen. The numbers you POKE are the lo and hi byte of the address you want to be the new LOMEM, the bottom of Basic memory. (The RAM below this address is protected.) The simplest approach is to keep the low byte at 0, and use Page Numbers for the high. A couple of examples: TO ELIMINATE BIGBLOCK freeing up that extra 1k. POKE 7432,0: POKE 7434,32. TO EXPAND BIGBLOCK to a full 2k to accomodate single line PM. POKE 7432,0: POKE 7434,40. NEVER EVER POKE 7434 WITH A NUMBER LESS THAN 32. UNLESS, OF COURSE, YOU'RE INTO DEAD COMPUTERS. After you've POKEd the values, hit RESET. Then type NEW, to properly initialize the Basic pointers. It's not quite like a direct LOMEM command for Basic (the thought has crossed my mind, but the crude approach saves memory.) Close though. RESET DEFAULTS The text and background colors displayed on RESET can be altered by POKEs to 7442 (text) and 7444 (background) There is also a RESET shadow for a custom character set (a personal weakness.) POKE the page number to 7452. 1 MINOR HASSLE The Write DOS function in DUP.SYS (H) doesn't work if you call it with D8:MEM.SAV active. No MEM.SAV, it's OK. Don't ask me, I just work here. Remember that you can write DOS.SYS from Basic with OPEN #1,8,0, -D:DOS. SYS-:CLOSE #1 and copy DUP.SYS separately. ______________________________________ Xx THE -X- Device ______________________________________ by Alex Stevens CHANGE NOTES: fixes and mods 01/01/85 Calls to ATARI FP ROM replaced with integer math code 11/13/84 1. now supports BASIC PRINT statement 2. supports SYSTEM RESET key properly 3. some memory use bugs fixed - now can CLOSE/OPEN repeatedly without using more memory The 'X' device driver is an 80-column display device driver for all ATARI computers. When loaded into memory it installs itself between addresses $2B00 and $35D0. Since it is not yet relocatable this places it high enough to allow room for normal DOS users (DOS/XL, OS/A+, DOS2.0s) and leaves space for the 'R' handler if the 850 Interface Module is used. A relocatable version is planned for the future. The 'X' device driver loads an 'X' device entry in the Handler Address Table and provides standard CIO interfacing to the driver, with some caveats. When opened for OUTPUT it performs like the 'E' device; all usual cursor and editing controls are followed and inverse video is provided. When opened for UPDATE it does not edit out cursor control characters like the 'E' device, but passes them back to the caller like the 'S' device. The 'X' device driver provides some editing features that are not offered by the 'E' or 'S' devices. ERASE Line and Screen to and from the current CURSOR position are provided via XIO commands. Absolute Cursor Positioning is also provided via an XIO command. COMMANDS OPEN #n,4,0,-X:- - open #n using'X' CLOSE, GET, PUT - as usual XIO cmdno,#n,0,0,'X:' -special cmds cmdno = $10 - position aux1,aux2 cmdno = $20 - erase line to CURSOR cmdno = $21 - erase line fm CURSOR cmdno = $22 - erase screen to CURSOR cmdno = $23 - erase screen fm CURSOR USAGE ATARI DOS users should name the XDSPLY file AUTORUN.SYS on their boot disk. It can be concatenated to an existing AUTORUN.SYS file, such as the RS232 handler. OSS DOS/XL or OS/A+ users can leave the file as a .COM file and install it by running it like any other Extrinsic command. CAVEATS XDSPLY does not replace the 'E:' device. It can be used like it in certain circumstances and you can modify the OS's Handler Address Table to substitute 'X:' for 'E:'; but not all of the 'E:' features such as full screen editing are supported. BUGS Please report any bugs to me via EMAIL on Compuserve at 70545,507 and I'll try to address them in the next release. ______________________________________ Xx Technical Notes from Antic Magazine ______________________________________ Q:EPROM ERRORS I really enjoyed the article on building your own eprom burner in the December 1985 Antic. After constructing the circuit board, I found that I can successfully program an eprom, but the read function returns many random errors which change every time a read is done. I have double-checked the circuit completely. Have any readers experienced the same problem? What might cause it? Allen Hurst A:We talked to Charles Cherry, who built and tested the eprom burner for Antic on his 800XL. Cherry says one reader successfully built an eprom that worked on his Atari 800, but the eprom would NOT work on his 130XE. Cherry says slight differences in the manufacture of different 800XLs could be the cause of some 800XL incompatiblities. And as far as Cherry knows, the do-it-yourself eprom burner will not work with the 130XE. Q:NOT YET Does the new Atari XM801 printer work with Print Shop? Gary Vimr A:We don't have a sample of this new printer in house, nor does Broderbund Software's Customer Service department. Broderbund says it's -too soon to tell- if the XM801 will work with Print Shop. In the past, printers manufactured by Atari only did character graphics and so were incompatible with Print Shop. Broderbund suggests giving their tech support department a call at (415) 479-1170 in a few weeks for more information. Q:ASSEMBLY LANGUAGE -- AT LAST I would love to see a serious series on ST Assembly Language programming in Antic. Trying to learn 68000 programming on the ST using generic A/L text books is frustrating to say the least. ST user Our series on ST assembly language programming starts in the August, 1986 issue of Antic. Q: TANDY PRINTER CONVERSION After reading Stan and Susie Subeck's review of the Tandy CGP220 printer (Antic, February 1986) I decided to buy one. It is a marvelous piece of equipment. However, the screen dump program for MicroPainter works fine, but I would like to use Micro Illustrator withit instead. (By the way, readers might want to know that Radio Shack has closed out the CGP220 and are selling the last of them at $299.) Use Charlie Jackson's Rapid Graphics Converter, (a type-in program in November, 1985 Antic) to convert your Micro Illustrator files to Micro Painter format first. --ANTIC. AMDEK SHOPPING To answer John Hawkin's question in the June issue of Antic, Amdek hardware and software may be purchased at The Computer Corner, 7101 Broadway, Merrillville, IN 46410. (219)738-3282. ______________________________________ ZMAGAZINE 84 December 18, 1987 (c)1987 Syndicate Services/Rovac ______________________________________