ST REPORT WEEKLY ONLINE MAGAZINE Monday, SEPT. 26, 1988 Vol II No. 54 =========== APEInc., P.O. BOX 74, Middlesex, N.J. 08846-0074 PUBLISHER GENERAL MANAGER Ron Kovacs R.F.Mariano ======================================================= ST REPORT EDITOR: Thomas Rex Reade PO Box 6672 Jacksonville, Florida. 32236-6672 Headquarters Bulletin Boards ST Report North ST Report South 201-343-1426 904-786-4176 ------------------------------------ ST Report Central ST Report West 216-784-0574 916-962-2566 CONTENTS ======== > From the Editor's Desk..............> The Presidential Conference....... > Heros of the Lance..................> ST REPORT CONFIDENTIAL............ > ST REPORT AWARDS....................> INSIGHT part II................... > ST XFORMER Interface............... > Circuit Maker..................... > Pro GEM Windows #5..................> The Beat Goes On.................. ========================================================================= COMP-U-SERVE ~ GENIE ~ DELPHI ~ THE SOURCE ========================================================================= From the Editor's Desk, In more ways than one we can agree that in the Atari Community strange things are happening and that Atari is trying to make it seem normal. It gets to such a point that I, speaking very frankly, wonder where it will all lead us. We have now lost one of the people who has been a part of the Atari scene for quite some time. Neil Harris, (I don't want this to sound like a eulogy), has, at times, caused all of us to raise an eyebrow or two but believe me,.... "you ain't seen nuthin' yet!" As an individual who has a certain amount of responsibility to the folks who work diligently in different parts of the country for ST REPORT, it is safe to say that if one of them were to hand in a resignation with a terminating date we WOULD honor that date. I have always found that the abrupt method and abuse of power by company execs usually offends more folks who are observers of these sort of things than you could imagine. The entire Atari Userbase is, in fact, observers in this matter....... I know that when you see a high official in any company say, "Ah,...your two week notice eh? Well, you have two hours to clear out your desk and get gone!" This will irk even the calmest of individuals. From all outward signs Neil tried to do the very best he could for Atari. For that reason and perhaps that reason alone the parting of company for both entities should have been more amicable. It is easy to say now .. "You got your rewards for all the days you worked damn near around the clock for those guys..." The sad truth is, most of us have said the same thing to ourselves at one time or another! We all have read humorous stories and heard dark tales about how the head honchos at Atari like to stalk the halls "upstairs" puffing out their chests in temper tantrums and such, well, it's situations like these when you see folks like Neil Harris get the "out the door" treatment to an otherwise calm, normal 2 week notice of resignation that you begin to believe the stories and rumors are TRUE! ST REPORT feels Atari owes the ENTIRE USERBASE an explaination. - You can't tell us Neil had a "45 day contract". - You can't tell us he was abusive to the people he dealt with. - You CAN tell us exactly why NEIL HARRIS is no longer with you. - Why, in the last 18 months has the turnover INCREASED. The Revolving Door at Atari has indeed become a NATIONAL JOKE! (Disgrace). In fact, Atari's entire attitude toward the U.S. Marketplace is sad and quite confused. The situation demands an information release detailing: "THE US GOALS AND IMPROVEMENTS BY ATARI U.S." This is a very much needed prescription. (a word to the wise) We have "heard" that Neil has very strong personal reasons for wanting to be on the east coast of the nation and had asked for a "leave of absence" only to find that the "Federated" assignment was far too critical to be without Neil's attention and therefore... the resulting resignation. (Federated is getting VERY costly) A final thought..to you Neil, we have thoroghly enjoyed your comments, even though at times it seemed otherwise, you have displayed a unique way to "keep the juices flowing". Good Luck to you at GEnie and above all else we at ST REPORT do include your Mom in our prayers and hope everyone will. Rex........... ************************************************************************** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE FOR A LIMITED TIME ONLY COMPUSERVE WILL PRESENT $15.00 WORTH OF COMPLIMENTARY ONLINE TIME to the Readers ST REPORT ONLINE ELECTRONIC MAGAZINE NEW USERS SIGN UP TODAY! Call any of the St Report Official BBS numbers (Listed at the top of ST REPORT) or Leave E-mail to St Report, Ron Kovacs or Rex Reade Be sure to include your full mailing address so your Compuserve kit can be immediately mailed to you! Expires 09-30-88 NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE ************************************************************************** SPECIAL SUPRA MODEM OFFER!!! ============================ CompuServe's Atari Forums have made very special 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 of just $139.95 !!!!! 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, Phone the 800 number listed below or write to: Paramount Products Inc. 1405 S.E. Pacific Blvd. Albany, Oregon 97321 ***** Phone orders: (800)444-4061 ***** Price: $139.95 + shipping UPS ground: add $4.00 UPS Blue label: add $8.00 C.O.D.: add $2.25 MasterCard or VISA accepted Orders will be shipped the next business day 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. -------------------------------------------------------------------------- THE PRESIDENTIAL CONFERENCE =========================== ATARI TOP EXECS TO ATTEND PUBLIC FORUM -------------------------------------- The Atari Forums on CompuServe will be sponsoring a world-wide electronic Teleconference with Sam Tramiel, President and Chief Operating Officer, Sig Hartmann, Executive Vice President and Software President of Atari Corporation and Neil Harris at the keyboards on Monday, September 26 at 9:00pm EDT. Your participation in this conference is welcomed and encouraged! Due to recent events the presence of Neil Harris as an intermediate for Sam Tramiel is doubtful, but we are fully confident that Sam Tramiel, in keeping with the Atari Tradition, will, by all means possible, be present for this landmark conference along with other (TBA) Atari Execs. -------------------------------------------------------------------------- Heroes of the Lance =================== Loaned from I.B. Computers by Nabil Pike(PAC) Ok! Tired of the same old games? Haven't seen any really good adventures out lately? Want something new? Then Heroes of the Lance is the game for you. Based on one of the many plots in the bestselling Dragonlance Chronicles, this game takes you the player into the world of Krynn, where mortals have forsaken the gods and the dark goddess Takhisis plots to take over the land with her hordes of evil dragons. You control the eight companions (you're not heroes unitl you succeed in your quest) and venture into the shattered ruins of Xak Tsaroth to recover the Golden Disks of Mishkal and restore belief in the old gods. You have eight characters in your party, but only one may be active at any one time. Tanis, the half-elven fighter. Caramon Majere, warrior and brother to Raistlin. Raistlin, mage and brother to Caramon. Sturm Brigthblade, the aspiring Knight of Solamnia. Goldmoon, the chieftain's daugther, who ran away with Riverwind. Riverwind, the outcast member of a tribe of plainsmen, who fled from his tribe with Goldmoon. Tasslehoff Burrfoot, the member of a race of short thieves. And last but not least Flint Fireforge, the continually grumpy but good natured dwarven fighter. With these eight adventurers you must venture into the depths of the ruined city in hopes of recovering the Disks of Mishkal and restoring belief in the old gods. The game is based on the Advanced Dungeons and Dragons Role Playing System, but it is designed so that the computer takes care of all the mechanics, "behind the scenes." To allow you play the game without the extra work of continually stopping to roll dice, subtract hit points, ect. Each character is given full stats and Raistlin and Goldmoon have the ability to cast spells. Maneuvering is done with the joystick as is combat. Pushing the joystick in the various directions gives you the option of walking or running either left or right. You may also enter into or out of doorways by pressing up or down on the joystick. Pressing the fire button does one of two things, if you are standing still when you press the button you enter into either close or ranged combat mode, remaining there until you release the button. If you are running when you press the button it allows you to jump, which is neccesary in overcoming certain obstacles. Combat is of two types either ranged combat, involving the use of a missle weapon like a bow, or close combat which uses the character's sword, staff, ect.. Combat is entered into by pressing down on and holding the fire button. When you enter this mode the word "combat" will appear in red letters in the lower left hand corner of the screen. Combat gives you the option of shooting/hitting(depending on whether you are in close or ranged combat) either high, center, or low. Along with these options you can also dodge by pulling down on the joystick, this makes the active player duck until you release the stick again. Any other actions are done from the main menu which you get to by pressing the space bar. On this menu you can change the active character(the one that shows on the screen), cast mage or cleric spells, take, use, give, or drop items, plus the option of saving the game. Now that you know a little about the game you're ready to go. But don't be too eager because after you fight your way past dragonmen, mercenaries, trolls, wraiths, spiders, spectres, and young black dragons you must attack and defeat Khisanth the ancient black dragon who guards the disks. To aid you on your way, you will find various scrolls and potions in the ruins. Remember, success doesn't come easy, if you don't succeed the first time, play again! After all, the fate of Krynn is now your sole responsibility. -------------------------------------------------------------------------- ST REPORT CONFIDENTIAL ====================== Sunnyvale, California Sept. 23, 1988 (c) APEInc. ST REPORT (RReade) --------------------- Neil Harris, known to the majority of users in the Atari Community has resigned from His position at ATARI CORP. Rockville, Maryland Neil Harris, formerly of Atari, will assume new ------------------- responsibilities in the employ of GEnie Information Services. Sunnyvale, California Jim Eisenburg, one of two who created the artwork --------------------- for the desktop we enjoy using is no longer with Atari. Houston, Texas The story from here is the folks at the C of C are -------------- rather "tired" of waltzing Matilda, and are about to drop the entire issue like a HOT ROCK! Las Vegas, Nevada Insiders say the "cheap" accomodations are booked ----------------- for the Comdex Dates. There are plenty of medium to expensive rooms available though. Miami, Florida Seems there are real problems in the SE US for -------------- Atari. Florida, long known for it's large Atari userbase is starving for HONEST LEGIT DEALERS. The few good ones left are on the verge of dumping Atari because they can't get a REP to call on them or get product. -------------------------------------------------------------------------- GOLDEN GOUGE AWARD ================== Jacksonville, Florida --------------------- A rather enterprising Atari Dealer has taken the term, FREE ENTERPRISE, a stretched step further. Seems this dealer offers the Early Atari RGB Color Monitor for 499.00 (used)! He accepts trade-ins against the new stylish (mega) monitor and then resells the old used monitor for almost $500.00! This same guy gets 2.00 per page to run off docs on "his" SLM804. A PERFECT EXAMPLE OF REAL ETHICS! ED. NOTE....the Golden Gouge Award is a new feature of ST REPORT, if you have a dealer in your area that is exploiting the fact that Atari dealers have little or no competition, or, is just plain ripping people off..let us know by nominating that dealer for the Golden Gouge Award. ------------------------------------------------------------------------- TRUE ATARIAN AWARD ================== Orlando, Florida ---------------- Our very FIRST nominee and Winner of the coveted ST REPORT True Atarian award goes to: McDONALD'S COMPUTER CENTER 4921 East Colonial Drive Orlando, Florida 32803-4309 Bob McDonald, by his efforts has nurtured and guided the Atari Userbase in his area in many ways..one of which is allowing the user groups to meet at his dealership after business hours. That means long days and short rest periods for him. Your ongoing efforts to display the true characteristics of good business practices and the example you set by your own actions are a tribute to Atari and are excellent guidelines for all to follow. ED. NOTE... You may nominate a dealer for the "TRUE ATARIAN AWARD" which, as the name denotes, goes to the real good guys, those dealers you are proud of, who take care of the userbase, who respond to the needs of the community and are ethical and upstanding in every way. Nominate your favorite dealer today...if he deserves it. ------------------------------------------------------------------------- #: 111449 S7/ST News/Reviews 24-Sep-88 15:06:53 Sb: Farewell Fm: Neil 70007,1135 To: All Since the word is already spreading, let me make it official: I tendered my resignation to Atari on Friday. As is customary, they made it official at the end of that day. Within the next 2 weeks I will be joining GEnie in the DC area. I am very much looking forward to the position and to moving my family back to the East Coast. Thanks to everyone for making my 4+ years with Atari Corp. interesting. --->Neil -------------------------------------------------------------------------- INSIGHT into the ST'S FUTURE ============================ Part II-Hardware by Micheal Arthur One developer who has already had a great effect on the ST market is Dave Small, bringing Macintosh compatibility with the Magic Sac. For reasons too lengthy to discuss here, he left Data Pacific, the maker of the Magic Sac, starting his own company, Gadgets by Small Inc. The Magic Sac WAS good, but it only used the 64K Mac ROMs, not being able to run some old Macintosh programs, and not beign able to run most of the new ones, such as Hypercard or Multifinder. To remedy this, he has made another Mac Emulator, called Spectre 128, that uses the 128K Mac ROMs. This means it can run virtually ALL Macintosh software (except MIDI programs), including Hypercard. Using 128K ROMs also results in screen operations being four times faster than with 64K ROMs, and that the serial (modem) drivers WORK, so most to all Macintosh modem programs (like Red Ryder) work with Spectre. Besides the benefits brought with the 128K ROMs, Spectre 128 also has an INCREDIBLE increase in Disk I/O, having floppy disk operations up to three times faster than the Magic Sac, and hard disk operations up to TEN times faster than before. Alas, in its first release it does NOT fully support Multifinder, however, Version 2.00 will support Macintosh sound, the Atari Laser Printer, and will FULLY support Multifinder. This will mean many things to the ST market, as it will now fully emulate the Macintosh, and with a price that will definitely be preferable. Especially to Mac Users, who, as a result, will see the ST as a Mac Clone, buying it mostly to use a cheap Mac to do work at home, or to have an extra Mac for the office, in addition to the "real" ones there. This will cause a LARGE, sophisticated group of computer users to become ST users, as familiarity with the ST will breed enthusiasm for it, instead of contempt, bringing Macintosh developers to the ST market, and more software, in the process. Special Note: As this is a small company (no pun intended), they cannot advertise that well, but WILL provide good support. You owe it to yourself to find out about Spectre, from Gadgets by Small, Inc. Megabyte Inc. ------------- One company, that in the coming months, will come to be a household name in the ST world, and which will definitely have an effect on the future of the ST. Megabyte Inc. will be releasing a product shortly called Turbo ST, that will use a 16 MHZ 68000 to speed the ST to 16 MHZ, with a switch to go from 8 MHZ to 16 MHZ instantly, even within an application, so as to be able to use that speed when you want. This will make the ST even faster than Amigas with 16 MHZ 68020's, which only go at 14.32 MHZ. It will require a motherboard modification, though. A major modification. This board uses 18+ chips to perform its job, and installing it in an ST will take 2 HOURS for an experienced technician, making it more like a quadruple bypass operation than anything else. It DOES fit completely into an ST, having sort of an odd shape as a result. There will have to be a piece cut out of your ST, though. In the back, where the 8 MHZ/16 MHZ switch will go. This is the ONLY ST Accelerator board that is coming out any time soon, costing about $250.00, including the 16 MHZ 68000. It is also guaranteed. This will certainly have a great effect on the ST market, and although a certain few doubted it could be done, Turbo ST will be coming out within a few weeks. But it's the *OTHER* product that Kenneth George (maker of Turbo ST) is developing that will REALLY be interesting. Ever since the beginning of the ST, one of its worst handicaps was that there were no expansion slots in any model, hampering attempts to expand its capabilities. The Mega ST solved this problem in part, by having one expansion slot, but anyone who has ever used an IBM knows that even four slots aren't usually enough, so only having one decreased its value. The Amiga 2000 has 8 expansion slots, resulting in that there is a growing market for Amiga expansion cards, causing some people to think that the Amiga is a more viable option than the ST. But now, that is ALL going to change. Megabyte Inc. is planning to come out with an Expansion Slot Box called the ST Expander), that will give 520/1040/Mega ST's eight Expansion Slots, for around 200 dollars. It will be out in December. This will also require a motherboard modification, but this will be MUCH less drastic than the Turbo ST's, and will be SIMPLE if you have the Turbo ST, as there will be a socket built into it so you can just plug in the ST Expander, but even if you don't have Turbo ST, your dealer can make the necessary modifications with little trouble. The ST Expander also solves one other thing that the Amiga has over ST's. As we all know, the Mega ST's have more built in memory than ANY other computer. But that memory could not be expanded beyond 4 Megabytes. This has been because the "MMU" chip inside the ST only lets it address that much memory. Although the 68000 itself can address 16 Megabytes of memory, and ALL models of the Amiga support 9 Megabytes of memory with the 68000 chip, and 16 Megabytes of memory when a 68020 chip is used. Noticing this, Megabyte Inc. decided to put an improved version of the MMU chip inside the ST Expander at NO additional cost that supports the ENTIRE memory addressing range of the 68000, 16 Megabytes of memory, when you buy one. Compared to the Mac II, which only supports 8 Megs with a 68020. Two of the slots in the ST Expander will be dedicated RAM slots,to support memory expansion cards. These will be easy to obtain, as ST users will be able to get them from one of the many companies that will be making expansion cards for the ST. CREATING an entirely NEW market for the ST, and having MANY implications. Some products that will probably come out at first are: 1) A LAN System that would be compatible with IBM, SUN, and DEC Networks. 2) A GLUT of Memory Expansion Cards for the ST. 3) A 1280*960 Monochrome Monitor with an expansion card to make it work. 4) An Expansion Card with the 68881 chip for a floating point coprocessor. And MANY more developments, including...... A "Bridgeboard" for the ST, having the 286 or 386 chip.... This product has the potential of causing an upsurge in ST hardware AND software development. It also will make Megabyte Inc one of the biggest companies in the ST market, and possibly in the microcomputer market, as it (and Turbo ST) might help make the ST a standard among microcomputers, and definitely help MANY ST's to sell, making their products have even greater demand. In fact, I would say THAT after the next 10 months, 1 out of every 10 new ST's sold by dealers will either contain Turbo ST, ST Expander, or BOTH, and that within a YEAR, 1 out of every 10-15 STs currently out in the US will have at least one of these products. These predictions might seem incredibly bold, but it might turn out that they will have been very conservative, and that Megabyte Inc. will have a quicker effect on the ST market than ever thought of. And most ST hardware made next year will probably be designed for the ST Expander. ------------------------------------------------------------------------- ST XFORMER Interface Announcement ================================= by Darek Mihocka Always wished there was an easier way to transfer files from your 8 bit floppies to the ST? Are null modem cables just not your style? Finally! Move all your Atariwriter and other word processing files to the ST. Graphics screens and icons. Database files and spreadsheets. It's ready! About a month ago I first announced the development of an interface to allow STs to communicate with 8 bit disk drives, like the 810, 1050, and XF551 drives. I will start shipping them on Oct. 3. The interface consists of a cable that connects between the ST and the disk drive, and allows for two way disk and file transfers, with the proper software. This software is in several forms, for different users. Because the cable does not necessarily require that it be used with the ST XFORMER emulator, it is going to be sold separately from any software. To be fair to current registered users of the ST XFORMER Atari 8 bit emulator, they will have first crack at the cables. To qualify, you must have already registered your copy of Xformer 2.1 ($20). (I have your names on file, so don't cheat!) The cable will then cost you $20 US (or $25 Canadian). In conjunction with the release of the cable, a new version of the ST XFORMER will be made available on Oct. 1, and as usual, will be made available on Compuserve, Genie, and Delphi. XFORMER 2.2 will have all of the features of version 2.1x with the added capability of using the cable to boot the Atari emulator directly from an 8 bit drive. (Even from copy protected disks, although not all of them) The few users who have just registered recently for version 2.1 are being kept on file until October and will receive version 2.2, since other enhancements have been added to the program. This leaves tens of thousand of ST and 8 bit users who do not qualify. For you folks, the cable is $25 US (or $30 Canadian), and of course, you will have access to ST XFORMER by modem or by registering. Registration for the XFORMER is $20, but since I am eager to get more users, you can get the cable, XFORMER 2.2 and the printed manual for $40 US (or $45 Canadian). For those people who want the cable to transfer files, but are not interested in the emulator, I have a utility for you! The XFORMER Quick Transfer Utility allows you to grab files of entire disks and transfer them quickly. Those of you who saw the several megabytes of 8 bit ANALOG files that I recently uploaded to Compuserve and Genie may be interested to know that each floppy disk took under two minutes to transfer to the ST (the same time it takes to read the disk into a sector copier on an 8 bit). Imagine how quickly you can transfer your entire 8 bit library to the ST (where, one day, you will decide to run it on the emulator). The current limitation is that the disks must be in DOS 2.0 format to allow the files to be extracted, although if you plan to use the emulator, the disks can be formatted by most DOSes, and even be boot disks. I am still working on several other major utilities, including one that allows most other ST programs to read and write directly from the 8 bit disk drives, and more. When it is ready, I will let everyone know. Also in the works is a 520ST version of the emulator that supports the interface (an enhanced ST XFORMER JUNIOR). To order, send a MONEY ORDER or (no personal checks from the US!!! because Canadian banks are not too swift at processing them) to me: Darek Mihocka 310-D Bluevale St. N. Waterloo, Ontario N2J 4G3 CANADA Thank the almost 100 registered users of ST XFORMER who motivated me (and demanded!) that this interface be created. Pricing is as follows. Registered users: ----------------- US $ Canadian $ ST XFORMER Interface Cable 20 25 ST XFORMER 2.2 update (with Quick Transfer Utility) 10 10 (note, users who just registered in the last couple of weeks will get the update free in October) Non-registered users: --------------------- US $ Canadian $ ST XFORMER Interface Cable 25 30 Quick Transfer Utility 10 12 ST XFORMER 2.2 registration 20 20 (shareware) All 3 of the above 40 45 Please add $3 per order for my postage and shipping costs. I would like to get users groups involved in this. I have visited about half a dozen local user groups and found a lot of interest in the emulator and interface. The problem was that many of the users, both 8 bit and ST, do not have access to Compuserve or Genie, or even a modem, and so, were unaware of the existense of the emulator. Therefore, I would like to give discounts to large orders placed through user groups, because it helps me. Call me by voice for details. Oops, did I mention the BBS yet? As mentioned last month, I am going to put up a support BBS shortly. I am writing it from scratch, but it is coming along. It will provide additional support for all Atari users, by providing information about the emulator and interface, and files for downloading, ST XFORMER BBS / voice support (519)-747-0386 BBS: 12am-6am EST (sometime soon) voice: other times During other hours, I will answer by voice and provide support for the products. Thanks again for your support. -------------------------------------------------------------------------- CIRCUIT MAKER ============= by Bill Pike (PAC) review copy loaned by IB Computers My field of endeavour, that which I do when not using a computer, involves a lot of logic circuit design. Well anyhow I was going thru the local software store and happened to see a program on the shelf that immediately caught my eye. The name of the program is CircuitMaker and it was written by Ozzie Boeshans. The cost is $69.95, why not make it a even $70?. The program is published by ILLIAD Software. For those who havn't used this type of program in the past, this includes until now me, this is the cats meow. No more breadboarding of circuits. No more burning out chips. No more tangles of wire, piles of parts, and general mess laying all over the place. Also, for those who are married, no spouse telling you to clean up your mess. Version 1.2 of the program allows you to design various logic circuits on screen and TEST AND DEBUG THE CIRCUITS ON SCREEN. The program then will print the circuit on your Epson compatible printer. You can also go back to the last saved version of the circuit if you have made a mistake. The next version, 2.0, is said to allow you to specify and make a library of your own favorite IC's. Didn't I say that the program comes with 1 library of various logic gates and IC's? Well if I didn't, it does. Here is what is in the library: All of the various types of gates including, a inverter, 2-4 input AND & NAND, 2 input ORs, 2 input NORs, and 2 input exclusive ORs, LED's, seven segment displays including the BCD to 7-Segment decoder, switches, two types of quad latches, 7474, 74138, 74151, 74168, 74169, 74109, and 74194 IC's. There is a snap-to-grid feature so everything looks neat. The various logic devices can be rotated in 90 degree increments, you can label either vertically or horizontally. When you are wiring the circuit the curser is accompanied, once you move out of the device area, by a set of full screen cross-hairs that show you where the wire will end up both vertically and horizontally if you extend it the full screen. This allows you to be much neater in the layout of wiring. There is also a dot placed where wires join so that you are sure of the connection. You can also move devices around or delete them if you decide that the location is bad. You are working in a window of the design, the window is approximately 15% of the working area. You can wire outside of the screen area. I find that you should make a printout of just the device placement so you are able to easily find the devices not on screen when you start to wire. A zoom command would have been nice. There are programmable pulse generators for signal inputs, each generator is independently programmable as to waveform and start time as well as well as when it starts. The speed is variable in common. There is a four input oscilloscope that can be used to check any four points in the circuit simultaneously.. You are able to either use a continous run or set for 5 or 10 cycles. The various wires show you the logic level on that wire by either being solid black (logic 1), dark dotted (logic 0), or light dotted (not active) as the test is running. If you are using a color monitor the colors of the lines change to indicate the same conditions. You are able to move around the screen during the run so you can see the functioning of the entire circuit. There is a tutorial on fundamental logic circuit design included in the small 50+ page manual. The tutorial doesn't go into much depth and those who are unfamiliar with logic design should pick up a book on the subject as well as a TTL Device handbook so you can figure out just what the various chips are and what they require to work. The program doesn't go into microprocessor logic and if it did it should/would probably cost about 10 times as much, if not more. This program is designed for the average designer and builder not for someone who does this for a living, he/she would probably have the $700 to $7000 version of this type of program and a main frame to run it on. This is a MUST HAVE program for anyone who designs logic circuits including those in college level logic design courses. It is also a must have for anyone who just does logic design at home for their computer interfaces or anything else, this is most logical (sorry about that it slipped out). So dig into your pocket and BUY THIS ONE. ------------------------------------------------------------------------- ANTIC PUBLISHING INC. COPYRIGHT 1988 REPRINTED BY PERMISSION. Professional GEM by Tim Oren Column #5 - Resource Tree Structures This is the fifth issue of ST PROFESSIONAL GEM, concluding our trek through GEM dialogs and resources with a look at the internal structure of object trees. Also, I'll answer a number of questions of general interest which have been received via the ANTIC ONLINE FEEDBACK. As always, there is a download file associated with this column: GEMCL5.C, which you will find in DL3 of the new Atari 16-bit SIG (type GO PCS-58 or GO ATARI16). Even if you have no immediate use for this issue's code, be sure to take the download anyway; some of the routines will be used in later articles. In the last installment, we established that resources trees are pointed to by the tree index, and that they are composed of objects which contain pointers onward to other structures. However, we passed over the issue of linkage among the objects within a tree. It is now time to go back and cure this omission. The technical term for the linkage scheme of an object tree is a "right-threaded binary tree". If you already know what this is, you can skim over the next few paragraphs. If you happen to have access to a copy of the book "FUNDAMENTAL ALGORITHMS", which is part of the series THE ART OF COMPUTER PROGRAMMING by Donald E. Knuth, you might want to read his excellent discussion of binary trees beginning on page 332. For the following discussion, you should have a listing of the C image of a resource tree in front of you. For those who do not have the listing from the last column, I have included a fragment at the beginning of the download. Before we begin, I should warn you of one peculiarity of "computer trees": They grow upside-down! That is, when they are diagrammed or described, their root is at the top, and the "leaves" grow downward. You will see this both in the listing, and in the way the following discussion talks about moving through trees. Each GEM object tree begins at its ROOT object, numbered zero, which is the object pointed at by the tree index. There are three link fields at the beginning of each object. They are called OB_NEXT, OB_HEAD, and OB_TAIL, which is the order in which they appear. Each of the links is shown as an index relative to the root of the current tree. This means that the link '0' would refer to the root of the tree, while '2' would indicate the object two lines below it. The special link -1 is called NIL, and means that there is no link in the given direction. Each object, or node, in a tree may have "offspring" or nodes which are nested below it. If it does, then its OB_HEAD will point to its first (or "leftmost") "child", while the OB_TAIL will point to the last ("rightmost") of its offspring. The OB_NEXT pointer links the children together, with the OB_NEXT of the first pointing to the second, and so on, until the OB_NEXT of the last finally points back to its parent, the object at which we started. Remember that each of these children may in turn have offspring of their own, so that the original "parent" may have a large and complex collection of "descendents". Let's look at the first tree in the download to see an example of this structure. The very first object is the ROOT. Note that its OB_NEXT is NIL, meaning that there are no more objects in the tree: the ROOT is both the beginning and the end of the tree. In this case, the OB_HEAD is 1 and the OB_TAIL is 3, showing that there are at least two different children. Following OB_HEAD down to the next line, we can trace through the OB_NEXT links (2, 3, 0) as they lead through a total of three children and back to the ROOT. You will notice that the first two children have NIL for the OB_HEAD and OB_TAILs, indicating that they have no further offspring. However, node three, the last child of the ROOT, does have the value 4 for both its OB_HEAD and OB_TAIL. By this we can tell that it has one, and only one, offspring. Sure enough, when we look at node four, we see that its OB_NEXT leads immediately back to node three. Additionally, it has no further offspring because its OB_HEAD and OB_TAIL are NIL. You will find that object trees are always written out by the Resource Construction Set in "pre-order". (Again, see Knuth if you have a copy.) This means that the ROOT is always written first, then its offspring left to right. This rule is applied recursively, that is, we go down to the next level and write out each of these nodes, then THEIR children left to right, and so on. For a further example, look at the next tree in rs_object in the download. You will see that the ROOT has an OB_HEAD of 1 and an OB_TAIL of 6, but that it actually has only three offspring (nodes 1, 2 and 6). We see that node 2 itself had children, and applying the rule given above, they were written out before continuing with the next child of the ROOT. Why was this seemingly complex structure chosen for GEM? The reason has do with the tasks of drawing objects in their proper locations on the screen, and determining which object was "hit" when a mouse click is detected. To find out how this works, we must look at four more fields found in each object: OB_X, OB_Y, OB_WIDTH, and OB_HEIGHT. These fields are the last four on each line in the sample trees. Each object in a tree "owns" a rectangle on the screen. These fields define that rectangle. When a resource is stored "outside" the program the fields are in character units, so that an object with OB_WIDTH of 10 and OB_HEIGHT of 2 (for instance) would define a screen area 10 characters wide and 2 high. When the resource is read into memory with an rsrc_load call, GEM multiplies the appropriate character dimension in pixels into each of these fields. In this way portability is achieved: the same resource file works for any of the ST's three resolutions. Knowing how rsrc_load works, your code should treat these fields as pixel coordinates. (I have committed one oversimplification above. If an object is not created on a character boundary in the RCS, then the external storage method described will not work. In this case, the lower byte of each rectangle field is used to store the nearest character position, while the upper byte stores the pixel remainder to be added after the character size is multiplied in.) Non-character-boundary objects may only be created in the "FREE" tree mode of the Resource Construction Set (also called "PANEL" in RCS 2.0). You should use them only in programs which will run in a single ST screen mode, because pixel coordinates are not portable between resolutions.) The first real secret of object rectangles is that each OB_X and OB_Y is specified RELATIVE to the X and Y coordinate of its parent object within the tree. This is the first property we have seen that is actually "inherited" from level to level within the tree. The second secret is more subtle: Every object's rectangle must be entirely contained within the rectangle of its parent. This principle goes by the names "bounding rectangles" or "visual hierarchy". We'll see in a moment how useful it is when detecting mouse/object collisions. HOW GEM DOES IT Knowing these secrets, and the linkage structure of object trees, we can deduce how a number of the GEM operations must work. For instance, consider objc_offset, which returns the actual screen X and Y of an object. We can see now that simply loading the OB_X and OB_Y fields of the object does not suffice: they only give the offset relative to the parent object. So, objc_offset must BEGIN with these values, and then work its way back up to the ROOT of the tree, adding in the offsets found at each level. This can be done by following the OB_NEXT links from the chosen object. Whenever OB_NEXT points to an object whose OB_TAIL points right back to the same location, then the new node is another level, or "parent" in the tree, and objc_offset adds its OB_X and OB_Y into the running totals. When OB_NEXT becomes NIL, then the ROOT has been reached and the totals are the values to return. (By the way, remember that the OB_X and OB_Y of the ROOT are undefined until form_center has been called for the tree. They are shown as zeroes in the sample trees.) We can also figure out objc_draw. It works its way DOWN the tree, drawing each object as it comes to it. It, too, must keep a running X and Y variable, adding in object offsets as it descends tree levels (using OB_HEAD), and subtracting them again as it returns from each level. Since the larger objects are nearer the ROOT, we can now see why they are drawn first, with smaller objects drawn later or "on top of" them. (If you write an application which needs to move portions of a dialog or screen with respect to each other, you can take advantage of inheritance of screen position in objc_draw. Simply by changing the OB_X and/or OB_Y of an object, you can move it and its entire sub-tree to a new location in the dialog. For instance, changing the coordinates of the parent box of a set of radio buttons will cause all of the buttons to move along with it.) Objc_draw also gives us an example of the uses of visual hierarchy. Recall that a clipping rectangle is specified when calling objc_draw. At each level of the tree we know that all objects below are contained in the screen rectangle of the current object. If the current rectangle falls completely outside the specified clipping rectangle, we know immediately that we need not draw the object, or any of its descendents! This ability to ignore an entire subtree is called "trivial rejection". Now it's rather easy to figure out objc_find. It starts out by setting its "object found" variable to NIL. It begins a "walk" through the entire object tree, following OB_HEAD and OB_NEXT links, and keeping a current X and Y, just like objc_draw. At each node visited, it simply checks to see if the "mouse" X,Y specified in the call are inside the current object's rectangle. If they are, that object becomes the found object, and the tree walk continues with the object's offspring, and then siblings. Notice how this checking of offspring makes sure that a smaller object nested within, i.e., below, a larger object is found correctly. If the mouse X,Y position is not within the object being checked, then by visual hierarchy it cannot be within any of its offspring, either. Trivial rejection wins again, and the entire sub-tree is skipped! Objc_find moves on to the OB_NEXT of the rejected object. THOUGHT EXPERIMENTS Thinking about the objc_find algorithm reveals some information about its performance, and a few tricks we may use in improving the appearance of dialogs and other object trees. First consider the problem of a dialog which contains many objects. If we lay them all out "side-by-side", then they will all be immediate offspring of the ROOT object. In this situation, the trivial rejection method will gain nothing. The time objc_find takes to complete will vary linearly with the total number of objects. This is called an "Order N" process. Suppose that instead we broke up the dialog into two areas with invisible boxes, then broke up each of these areas in a like fashion, and so on until we got down to the size of the individual selectable objects. The number of bottom level objects in this scheme is a power of two equal to the depth of the tree. Trivial rejection is used to its fullest in this case. It is called an "Order Log N" process, and is much more efficient for large numbers of objects. In practice, the speed of the ST will allow you to ignore this distinction for most dialogs and other trees. But if you get into a situation when speed is critical in searching a large tree, remember that nesting objects can improve performance dramatically. If you have been following closely, you may have also noticed a hole in the visual hierarchy rule. It says that all of a node's children must lie within its rectangle, but it does NOT guarantee that the children's rectangles will be disjoint, that is, not overlap one another. This peculiarity is the basis of several useful tricks. First, remember that objc_find always tries to scan the entire tree. That is, it doesn't quit when it finds the first object on the given coordinates. As mentioned above, this normally guarantees that nested objects will be found. Consider, however, what happens when the mouse coordinates are on a point where two or more objects AT THE SAME LEVEL overlap: they will replace one another as the "found object" until objc_find returns with the one which is "last", that is, rightmost in the tree. This quirk can be used to advantage in a number of cases. Suppose that you have in a dialog an image and a string which you would like to be selected together when either is clicked. Nesting within a common parent achieves nothing in this case. Instead, knowing that form_do must use objc_find, you could use our trick. You have to know that the Resource Construction Set normally adds objects in a tree left to right, in the order in which you inserted them. You proceed to build the dialog in the following order: insert the image first, the string next, then carefully add an invisible box which is not nested within either, and size it to cover them both. Set the SELECTABLE attribute for the box, and the dialog manager will find it, and invert the whole area, when either the image or string is clicked. By the way, remember that the SORT option in the RCS will change the order of an object's offspring. If you are going to try this trick, don't use SORT! It will undo all of your careful work. A TREEWALKER OF OUR OWN Since the GEM system gets so much mileage out of walking object trees, it seems reasonable that the same method should be useful in application programs. In the download you will find map_tree(). As many LISP veterans might guess from the name, this code will traverse all or part of an object tree, applying a function to each node. It also allows the function to return a true/false value specifying whether the sub-tree below a particular node should be ignored. Let's examine map_tree() in more detail as a final review of object tree structure. First, look at the parameters. "tree" is the long address of the object tree of interest, as retrieved by rsrc_gaddr. "this" is the node at which to begin the traverse, and "last" is the node at which to terminate. In most cases, the beginning node will be ROOT, and the final value will be NIL. This will result in the entire tree being traversed. You may use other values, but be sure that you CAN get to "last" from "this" by following tree links! Although map_tree() includes a safety check to prevent "running off" the tree, you could get some very strange results from incorrect parameters. The declaration for the final parameter, "routine", makes use of C construct which may be new to some. It is a pointer to a subroutine which returns a WORD as a result. Map_tree() begins by initializing a temporary variable, tmp1, which is used to store the number of the last node visited. Since no node will follow itself, setting tmp1 to the starting node is safe. The main loop of the routine simply repeats visiting a new node until the last value is reached, or the safety check for end of tree is satisfied. At any node visited, we can be in one of two conditions. Either we are at a node which is "new", that is, not previously visited, or else we are returning to a parent node which has already been processed. We can detect the latter condition by comparing the last node visited (tmp1) with the OB_TAIL pointer of the current node. If the node is "old", it is not processed a second time, we simply update tmp1 and continue. If the node is new, we call "routine" to process it, sending the tree address and object number as parameters. If a FALSE is returned, we will ignore any subtree below this node. On a TRUE return, we load up the OB_HEAD pointer and follow it if a subtree exists. (If you don't care about rejecting subtrees, simply remove the if condition.) Finally, if the new node had no subtree, or was rejected by "routine", we follow along its OB_NEXT link to the next node. A simple application of our new tool shows its power. From a previous column you may recall the tedium of deselecting every button inside a dialog after it was completed. Using map_tree(), you can deselect EVERY OBJECT in the tree by using map_tree(tree, ROOT, NIL, desel_obj); You must use a slightly modified version of desel_obj() (included in the download) which always returns TRUE. Be sure to define or declare desel_obj() in your code BEFORE making the map_tree call! In future columns, I will return to map_tree() and show how it can be used for advanced techniques such as animated dialogs. In the meantime, experiment and enjoy! >>>>>>>>>>>>>>>>>>>>>>>>>>> Sample object trees <<<<<<<<<<<<<<<<<<<<<<<< OBJECT rs_object[] = { -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 18,12, /* Tree # 1 */ 2, -1, -1, G_STRING, NONE, NORMAL, 0x0L, 3,1, 12,1, 3, -1, -1, G_BUTTON, 0x7, NORMAL, 0x1L, 5,9, 8,1, 0, 4, 4, G_BOX, NONE, NORMAL, 0xFF1172L, 3,3, 12,5, 3, -1, -1, G_IMAGE, LASTOB, NORMAL, 0x0L, 3,1, 6,3, -1, 1, 6, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 23,12, /* Tree # 2 */ 2, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 0,1, 23,1, 6, 3, 5, G_IBOX, NONE, NORMAL, 0x1100L, 6,3, 11,5, 4, -1, -1, G_BUTTON, 0x11, NORMAL, 0x5L, 0,0, 11,1, 5, -1, -1, G_BUTTON, 0x11, NORMAL, 0x6L, 0,2, 11,1, 2, -1, -1, G_BOXCHAR, 0x11, NORMAL, 0x43FF1400L, 0,4, 11,1, 0, -1, -1, G_BOXTEXT, 0x27, NORMAL, 0x1L, 5,9, 13,1, -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 32,11, /* Tree # 3 */ 2, -1, -1, G_ICON, NONE, NORMAL, 0x0L, 4,1, 6,4, 3, -1, -1, G_FTEXT, EDITABLE, NORMAL, 0x2L, 12,2, 14,1, 0, 4, 4, G_FBOXTEXT, 0xE, NORMAL, 0x3L, 3,5, 25,4, 3, -1, -1, G_ICON, LASTOB, NORMAL, 0x1L, 1,0, 6,4}; >>>>>>>>>>>>>>>>>>>>>>>>>> Object tree walk utility <<<<<<<<<<<<<<<<<<<<<< VOID map_tree(tree, this, last, routine) LONG tree; WORD this, last; WORD (*routine)(); { WORD tmp1; tmp1 = this; /* Initialize to impossible value: */ /* TAIL won't point to self! */ /* Look until final node, or off */ /* the end of tree */ while (this != last && this != NIL) /* Did we 'pop' into this node */ /* for the second time? */ if (LWGET(OB_TAIL(this)) != tmp1) { tmp1 = this; /* This is a new node */ this = NIL; /* Apply operation, testing */ /* for rejection of sub-tree */ if ((*routine)(tree, tmp1)) this = LWGET(OB_HEAD(tmp1)); /* Subtree path not taken, */ /* so traverse right */ if (this == NIL) this = LWGET(OB_NEXT(tmp1)); } else /* Revisiting parent: */ /* No operation, move right */ { tmp1 = this; this = LWGET(OB_NEXT(tmp1)); } } >>>>>>>>>>>>>>>>>> Sample routine to use with map_tree() <<<<<<<<<<<<<<< VOID undo_obj(tree, which, bit) /* clear specified bit in object state */ LONG tree; WORD which, bit; { WORD state; state = LWGET(OB_STATE(which)); LWSET(OB_STATE(which), state & ~bit); } VOID desel_obj(tree, which) /* turn off selected bit of spcfd object*/ LONG tree; WORD which; { undo_obj(tree, which, SELECTED); return (TRUE); } >>>>>>>>>>>>>>>>>>>>>>>>>> Sample .ICN Files <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>> Save everything between >>><<< lines as CLOCK.ICN <<<<<<<<<<<<<< /* GEM Icon Definition: */ #define ICON_W 0x0030 #define ICON_H 0x0018 #define DATASIZE 0x0048 UWORD clock[DATASIZE] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFC, 0x0000, 0x000F, 0xC003, 0xF000, 0x0078, 0x0180, 0x1E00, 0x0180, 0x0180, 0x0180, 0x0603, 0x0180, 0xC060, 0x1C00, 0x0006, 0x0038, 0x3000, 0x018C, 0x000C, 0x60C0, 0x0198, 0x0306, 0x6000, 0x01B0, 0x0006, 0x4000, 0x01E0, 0x0002, 0xC000, 0x01C0, 0x0003, 0xCFC0, 0x0180, 0x03F3, 0xC000, 0x0000, 0x0003, 0x4000, 0x0000, 0x0002, 0x6000, 0x0000, 0x0006, 0x60C0, 0x0000, 0x0306, 0x3000, 0x0000, 0x000C, 0x1C00, 0x0000, 0x0038, 0x0603, 0x0180, 0xC060, 0x0180, 0x0180, 0x0180, 0x0078, 0x0180, 0x1E00, 0x000F, 0xC003, 0xF000, 0x0000, 0x3FFC, 0x0000 }; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCK.ICN <<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>> Save everything between >>>><<<<< lines as CLOCKM.ICN <<<<<<<<<< /* GEM Icon Definition: */ #define ICON_W 0x0030 #define ICON_H 0x0018 #define DATASIZE 0x0048 UWORD clockm[DATASIZE] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x7FFE, 0x0000, 0x001F, 0xFFFF, 0xFC00, 0x00FF, 0xFFFF, 0xFF00, 0x03FF, 0xFFFF, 0xFFC0, 0x0FFF, 0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 0xFFFC, 0x0FFF, 0xFFFF, 0xFFF0, 0x03FF, 0xFFFF, 0xFFC0, 0x00FF, 0xFFFF, 0xFF00, 0x001F, 0xFFFF, 0xF800, 0x0000, 0x7FFE, 0x0000 }; >>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCKM.ICN <<<<<<<<<<<<<<<<<<<<<<<<<<<<< -------------------------------------------------------------------------- The BEAT Goes On ================ by T."Rex" Reade Who are Alan Pratt, Roy Good and Shiraz Shivji? What do they all have in common and how do they effect us? We have all seen these names in print at one time or another but have we ever really known who or what these guys do? Alan Pratt works for Atari . ---------- He programs for them and is largely responsible for working on Tos. Roy Good (who just loves Unix) works for Atari. -------- He is the "main man" in software programming, "The Boss". Shiraz Shivji (The Father of The ST) ------------- works for Atari and is a hardware WIZARD. Shiraz relies on Roy Good for the software goodies for the ST. I made a different lead in to give you an opportunity to have an idea about why there is another bruhaha brewing at Atari..... We all know the 68000 chip is really not designed for multi tasking and on this matter we should all agree...but by this time we have all heard about the "new" cousins to the 68000 chip. 68020 - 68030 - 68050 Did you know that TOS was rewritten for the 68030? Did you also know the 68030 was designed especially for multi-tasking. The facts are.... from a VERY reliable source, that Roy Good, has seen to it that this "new version" of TOS does not support multi-tasking either! How incredibly lame can they get. We know he simply loves Unix and would be overjoyed if TOS died a slow and horrible death by attrition. Consider this ....there are many folks who enjoy using TOS and want to continue using TOS. These people are PAYING customers and deserve to have ALL the features TOS is capable of delivering. THAT INCLUDES MULTI-TASKING and contemporary accessing of ALL peripherals. 16mb per partition is from the ICE AGE! Perhaps the next candidate for the revolving door is already headed that way.....to have Mr. Shivji rely upon Roy Good for sound software advice and then see that the new TOS for the 68030 has NO MULTI-TASKING is, without a doubt, another point blank foot shot! It would appear that Mr. Good (yes, the guy who has been making all the fancy releases about TOS 1.4), has dropped the ball on this one. Rex...... ------------------------------------------------------------------------- THIS WEEK'S QUOTABLE QUOTE ========================== In any collection of data, the figures that are obviously correct and beyond all need of verification... contain all the errors! ------------------------------------------------------------------------- ST-REPORT Issue #54 SEPT. 26, 1988 (c)'88 APEInc. All Rights Reserved. Reprint permission granted except where noted in the article. Any reprint must include ST-Report and the author in the credits. Views Presented herein are not necessarily those of ST-Report or of the Staff. All items and articles appearing in ST-REPORT are copywrite (c)APEInc. -------------------------------------------------------------------------