ST REPORT WEEKLY ONLINE MAGAZINE -------------------------------- Monday, NOV. 31, 1988 Vol. II No. 60 ========================================================================== ST Report Online Magazine Inc. ------------------------------ Post Office Box 6672 Jacksonville, Florida 32236 6672 R.F. Mariano Publisher - Editor ====================['The Original Online ST Magazine']=================== Headquarters Bulletin Boards ---------------------------- North South 201-343-1426 904-786-4176 Central West 216-784-0574 916-962-2566 ======================================================================= CONTENTS ======== ~ From the Editor's Desk.............~ The Melting Pot Runneth Over.. ~ DC Atari FEST......................~ Pro GEM Windows #11........... ~ The Archival Bit...................~ A New Blivitt!................ ~ ST REPORT CONFIDENTIAL ............~ PC Pursuit Help............... ======================================================================== AVAILABLE ON: COMP-U-SERVE ~ DELPHI ~ GENIE ~ THE SOURCE ======================================================================== From the Editor's Desk; Some folks said, "you have too much editorial content in ST Report" and I tended to agree with them. However, after reviewing the situation a number of times, this conclusion has been reached. ST Report is looked to for hard hitting information. Being up to date, as accurate as humanly possible and timely. We are concerned mainly with the Atari ST market and just about everything that occurs in that market. Sure, we ARE critical of Atari when they obviously need it. On the other hand, we are the first to pass out compliments when deserved. We will not "sugar coat" any situation or soft peddle any issue. ST Report pledges to bring you, the Atari user, the most up to date, accurate, information possible. In another development, we at ST Report have heard that the userbase in general is an easily confused group of users. We discovered that this is one of the totally inane reasons given by Atari, when asked, why they didn't incorporate more of the fine features seen in the UIS file selector in the new TOS 1.4. After having stated this, they then come along with this as the second reason "There is absolutely no room"....they really do think we are idiots and boobs out here! That is not an excuse, it is an admission of incredible "tunnel vision"! If one were to "look" at two locations in the TOS 1.4 code, one can find "room", ($FCF716 and $FD2404). To selfishly consume valuable space to "hide" love notes in TOS is the same to me as carving your initials in your desktop at 4th grade school. Also, TOS could be converted to Machine Language (ML) it would then become (A) much faster, (B) much smaller in size, thus allowing for further first class enhancements it so desperately needs. Some have called UIS a kludge, I say that if Atari were to incorporate it's DELUXE and needed features into TOS 1.4, it would be called a STROKE OF GENIUS. Ralph..... As we approach another Christmas Holiday, Atari is prepared to miss the boat again. No real quantities of ST product for sale in the USA. What fantastic corporate leadership and planning! And you thought that the Katzenjammer Kids were only cartoon characters. ************************************************************************** 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 11-30-88 NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE ************************************************************************** So, you'd like to tell that guy Rex Reade a thing or two Eh? ------------- Spend an evening with ST Report, ask the questions you would like answered, find out what motivates ST Report, become informed. YOU WILL HAVE YOUR CHANCE! -------------------------- NOVEMBER 09, 1988 WEDNESDAY, 8 P.M. EST COMP-U-SERVE CONVENTION CENTER All are invited to Attend -------------------------------------------------------------------------- THE MELTING POT RUNNETH OVER ============================ by Rex Reade This is the time of the year when speculation runs high and facts seem to become obscure amid the dreams and hopes for the future. That is the limbo of the days prior to Fall Comdex every year. Obvious by their absence in the Comdex Preview is Atari, Why? easy....they registered too late to make it into the preview, not even into the maps and directions on how to find an exhibitor. Great planning at the corporate level, (outstanding guys). You do know Atari had no plans to attend the Fall Comdex earlier this year. It seems some voice in the distance said "Hey Atari, wake up the whole country is WATCHING you and what you do this year". Developers, Distributors, Dealers, Usergroups and Users have long been known to be the life blood of any company doing business directly with the consumer. Every major, well organized, corporation will readily admit that each is a vital component in the formula for success. Does Atari? Apparently not.. Consider these latest moves: ---------------------------- A) Atari routes a huge percentage of it's ST product to Europe thus justifying Developer "dropout" in the USA. B) Atari drops the "Houston Project" thus indirectly confirming the often percieved, "Lack of true corporate leadership and direction in the USA." I feel sorry for all the Houston Dealers who, in the past few months were "busy" singing the praises of Atari. This could go on and on, but that is not the point here, the point is this; Atari needs: A) A Professional Marketing Department. B) A full National Sales Department. C) A REAL National Service Organization. D) Corporate Leaders, not the Katzenjammer Kids who appear to SEE the company like its a HOBBY! E) TO DEVELOP THE US MARKET PROPERLY F) TO Recognize the signs, look at Atari in Europe and Canada, they ARE successful WHY??.. the handwriting is on the wall guys.. GET PROFESSIONAL LEADERSHIP. Nota Bene: --------- The "get even" attitude or the "suit" happy attitude is going to be the ruination of a good thing. Any time a "for profit" venture falls in the hands of the barristers, serious problems are afoot or in store for the future. Atari DRAM supply is about to go down the tubes, remember when everybody was gloating about the alledged upper hand had with Micron? Remember the boasting about how the ST in Europe was kicking the a** of a certain computer in it's own backyard? Read on Bunky, this is what hard nosed legal beagle bargaining can get you......Amstrad has bought into Micron Technologies on a rather heavy scale, guess who supplies DRAM to our favorite company. What's that about; "Turn about is fair play???" ....When will Katzenjammer be controlled and real leadership LEAD? as the Fuji turns...will continue -------------------------------------------------------------------------- D.C. ATARIFEST ============== by Bruce Hansford Editor, MVACE The Washington (DC) Area Atari Computer Enthusiasts, a cooperative of several DC-area Atari user groups, sponsored their fourth annual Atarifest on the 1st and 2nd of October... and WE WERE THERE. The MVACE caravan consisted of myself, Doug Hodson, Ken Lare, Dan Steffen, Boyd Bradford, Ashish Ranpura, George Baker, Michael McHale, and Ray Hendrix, traveling in two vehicles connected by walkie-talkies. Whew! What a trip! The Fest itself was not all that impressive. I really expected more; I think the Detroit Atarifest last year was better. After talking to the show's organizer, I began to realize why it wasn't so great. One reason was that they used a school and had to follow special rules established by the city of Fairfax. They also didn't allow enough time for notification of dealers and developers. The best part of the show for me was the fact that David Small had his newest product, SPECTRE 128, available for sale there, (I got mine!) and the 128K Mac ROMs were available also (I got mine!). Another aspect that stands out was meeting Brian Sarrazin, Vice President of SoftLogik, who was showing the "final release" version of Publishing Partner Professional. He said that they were just waiting for the documentation to get back from the printers before sending out the upgrades and releasing the package to distributors. -------------------------------------------------------------------------- ANTIC PUBLISHING INC. COPYRIGHT 1988 REPRINTED BY PERMISSION. PROFESSIONAL GEM by Tim Oren Column #11 - GEM Hooks and Hacks, An Insider's AES Tricks Welcome to the eleventh episode of ST PRO GEM, which is devoted to exploring some of the little documented, but powerful, features of GEM. Like the authors of most complex systems, the GEM programmers left behind a set of "hooks", powerful features which would aid them in enhancing the system later. I am going to lay out a number of these methods which have served me well in making creative use of the AES. You will find that most of them concern the object and form libraries, since I was most involved in those parts of GEM. There are probably many more useful tricks waiting to be found in other parts of GEM, so if you happen onto one, please let me know in the Feedback! POWERFUL OBJECTS. The first four tricks all involve augmenting standard AES objects. This is a powerful technique for two reasons. First, you can take advantage of the regular AES object and form libraries to draw and handle most of your objects, so that your program need only process the exceptions. Second, you can use the RCS to copy the special objects into multiple dialogs or resources. These four tricks are Extended Object Types, User-defined Objects, TOUCHEXIT, and INDIRECT. Let's look at each of them in turn. EXTENDED OBJECT TYPES. If you look at the AES Object Library documentation, you will notice that the values for the OB_TYPE field in an object are all 32 or less. This means that a number of bits are unused in this field. In fact, the AES completely ignores the top byte of the OB_TYPE field. In addition, the RCS ignores the top byte, but it also preserves its value when an object is read, written, or copied. This gives you one byte per object to use as you see fit. Since the processing of an object or dialog is (so far) in the hands of the AES, the best uses of Extended Types are in flagging methods for initializing an object or handling its value when the dialog completes. For example, you might have several dialogs containing editable numeric fields. The Extended Type of each numeric field could be set to the index of the corresponding value in an array. Then your application's dialog initialization code could scan the object tree for such objects, pick up the appropriate value from the array and convert it to ASCII, storing the result in the resource's string area. When the dialog was finished, another pass could be made to reconvert the ASCII to binary and store away the results in the array. (Note that the map_tree() utility from column #5 will scan an entire resource tree.) Another application is to assign uniform codes to exit buttons in dialogs. If you give every "OK" button an Extended Type of one, and every "Cancel" button an Extended Type of two, then you needn't worry about naming every exit object. Just examine the Extended Type of the object returned by form_do, and proceed accordingly. The catch, of course, is that you have to find a way to enter the Extended Type code in the first place. Version 1.0 of the RCS, as shipped with the Atari developer's kit, makes no provision for this. So you have your choice of two methods for creating the first object with each Extended Type code. First, you can dump out a C source of a resource, insert the new type code by hand, and regenerate the resource with STCREATE. Alternately, you could carefully modify the binary resource using SID. You will probably want to reread the AES object manual, ST PRO GEM #4 and #5, and use the C source as a guide when doing so. In both cases, you should make things easy on yourself by creating a one dialog resource with only a single object other than the root. Version 2.0 of the RCS will let you directly enter an Extended Type, but it has not yet been released for the ST by DRI. Once you have created a prototype extended object by either method, you can use the RCS to propogate it. The safest way is to use the MERGE option to add the modified tree to the resource you are building. Then copy the prototype object via the clipboard to your dialog(s), deleting the extra tree when you are done. If you are using several different extended objects, you can use MERGE and clipboard copies to get them all into one tree which will then become your own object library. The second way of using RCS is easier, but more dangerous. If you want to try the following technique, BACK UP YOUR RCS DISK FIRST! Put simply, the RCS does not care what is in its dialog partbox. It will make copies of anything that it finds there! This gives you the option of using the RCS on ITS OWN RESOURCE in order to add your customized objects to the partbox. To do this, open RCS.RSC from the RCS. Since there is no DEF file, you will get a collection of question mark icons. Use the NAME option to make TREE5 into a DIALOG. Open it, and you will see the dialog partbox. Now you can use the MERGE technique described above to insert your customized objects. Then SAVE the modified resource, and rerun the RCS. Your new objects should now appear in the partbox. If you added several, you may have to stretch the partbox to see them all. You can now make copies of the new objects just like any other part. (Note: DO NOT modify the alert or menu partboxes, you will probably crash the RCS.) USER-DEFINED OBJECTS. The one type of object which was not discussed in the earlier articles on AES objects was G_USERDEF, the programmer defined object. This is the hook for creating objects with other appearances beyond those provided by the standard AES. By the way, you should note that the G_PROGDEF and APPLBLK mnemonics used in the AES documents are incorrect; the actual names as used defined OBDEFS.H are G_USERDEF and USERBLK. The RCS does not support the creation of G_USERDEF objects, since it has no idea how they will be drawn by your program. Instead, you must insert a dummy object into your resource where you want the G_USERDEF to appear, and patch it after your application performs its resource load. You must replace the object's existing OB_TYPE with G_USERDEF, though you may still use the upper byte as an Extended Type. You must also change the OB_SPEC field to be a 32-bit pointer to a USERBLK structure. An USERBLK is simply two LONG (32-bit) fields. The first is the address of the drawing code associated with the user defined object. The second is an arbitrary 32-bit value assigned to the object by your application. You can designate objects for conversion to G_USERDEFs in the normal fashion by assigning them names which are referenced one by one in your initialization code. You can also combine two tricks by using the Extended Type field as a designator for objects to be converted to G_USERDEF. Each tree can then be scanned for objects to be converted. There is a short code segment in the download which demonstrates this technique. My usual convention is to define new drawing objects as variants of existing objects, using the Extended Type field to designate the particular variation. Thus an Extended Type of one might designate a G_BUTTON with rounded corners, while a value of two could flag a G_STRING of boldface text. When using this technique, the RCS can be used to build a rough facsimile of the dialog by inserting the basic object type as placeholders. The existing OB_SPEC information can then be copied to the second position in the USERBLK when the object is initialized. One final note before moving on: There is no reason that the USERBLK cannot be extended beyond two fields. You might want to add extra words to store more information related to drawing the object, such as its original type. The AES will call your drawing code whenever the G_USERDEF needs to be drawn. This occurs when you make an objc_draw call for its tree, or when an objc_change occurs for that object. If your user-defined object is in a menu drop-drop, then your drawing code will be called any time the user exposes that menu. Before getting into the details of the AES to application calling sequence, some warnings are in order. First, remember that your drawing code will execute in the AES' context, using its stack. Therefore, be careful not to overuse the stack with deep recursion, long parameter lists, or large dynamic arrays. Second, the AES is NOT re-entrant, so you may not make ANY calls to it from within a G_USERDEF procedure. You may, of course, call the VDI. Finally, realize that drawing code associated with a menu object may be called by the AES at any time. Exercise great care in sharing data space between such code and the rest of the application! When your drawing code is called by the AES, the stack is set up as if a normal procedure call had occured. There will be one parameter on the stack: a 32-bit pointer to a PARMBLK structure. This structure lies in the AES' data space, so do not write beyond its end! The PARMBLK contains 15 words. The first two are the long address of the object tree being drawn, and the third word is the number of the G_USERDEF object. You may need these values if the same drawing code is used for more than one object at a time. Words four and five contain the previous and current OB_STATE values of the object. If these values are different, your drawing code is being called in response to an objc_change request. Otherwise, the active AES call is an objc_draw. Words six through nine contain the object's rectangle on the screen. Remember that you cannot call objc_offset within the drawing code, so you will need these values! The next four words contain the clipping rectangle specified in the active objc_change or objc_draw call. You should set the VDI clip rectangle to this value before doing any output to the screen. The last two words in the PARMBLK contain a copy of the extra 32-bit parameter from the object's USERBLK. If you have followed the method of copying an OB_SPEC into this location, these words will be your pointer to a string, or BITBLK, or whatever. When your drawing routine is done, it should return a zero value to the AES. This is a "magic" value; anything else will stop the drawing operation. The download contains a sample drawing routine which defines one extended drawing object, a rounded rectangle button. You can use this procedure as a starting point for your own User Defined objects. PUT ANYTHING YOU WANT ON THE DESKTOP! In ST PRO GEM #2, I described the use of the WF_NEWDESK wind_set call to substitute your own object tree for the normal green desktop background. If the tree you supply contains User Defined objects, you can draw whatever you want on the desktop! Some of the things you might try are free hand drawings imported in metafile format from EasyDraw, or whole screen bit images generated by Degas. If you do the latter, you will have to store the entire image off screen and blit parts of it to the display as requested. In any case, remember that your desktop drawing code can be called any time that a window is moved, so exercise the same care as with a menu drawer. Also, be aware that making the WF_NEWDESK call does not force an immediate redraw of the desktop. To do that, do a form_dial(3) call for the entire desktop rectangle. THE TOUCHEXIT FLAG. The TOUCHEXIT attribute is an alternative to the more usual EXIT. When the TOUCHEXIT bit is set in an object's OB_FLAG word, the form_do routine will exit immediately when the mouse button is pressed with the cursor over the object. Your code can immediately take control of the mouse and display, without waiting for the release of the button. This method is used for generating effects such as slider bars within otherwise normal dialogs. The easiest way to code a TOUCHEXIT handler is to place a loop around the form_do call. If the object number returned is TOUCHEXIT, then the animation procedure is called, followed by a resumption of the form_do (WITHOUT recalling form_dial or objc_draw!). If the object returned is a normal EXIT, the dialog is complete and control flows to the cleanup code. There is one idiosyncrasy of TOUCHEXIT which should be noted. When the AES "notices" that the mouse button has been pressed over a TOUCHEXIT, it immediately retests the button state. If it has already been released, it waits to see if a double click is performed. If so, the object number returned by form_do will have its high bit set. If you don't care about double clicks, your code should mask off this flag. However, you may want to use the double click to denote some enhanced action. For example, the GEM file selector uses a double click on one of the file name objects to indicate a selection plus immediate exit. THE INDIRECT FLAG. If the INDIRECT bit is set in an object's OB_STATE word, the AES interprets the 32-bit OB_SPEC field as a pointer to the memory location in which the ACTUAL OB_SPEC is to be found. Like User Defined objects, this capability is not supported by the RCS, so you have to set up the INDIRECT bit and alter the OB_SPEC at run time. The value of INDIRECT is that you can use it to associate an AES object with other data or code. The general technique is to set up a table with a spare 32-bit location at its beginning. Then, when initializing the application's resource, you move the true OB_SPEC into this location, set the INDIRECT flag, and replace the OB_SPEC field with a pointer to the table. The object behaves normally during drawing and form handling. However, if you receive its number from form_do or objc_find, you have an immediate pointer to the associated table, without having to go through a lookup procedure. This technique works well in programs like the GEM Desktop. Each G_ICON object is set up with INDIRECT. Its OB_SPEC goes to the beginning of a data area defining the associated file. The blank location at the beginning of file table is filled up with the former OB_SPEC, which points to a ICONBLK. You can also combine INDIRECT with TOUCHEXIT when creating objects that must change when they are clicked by a user. For instance, a color selection box might be linked to a table containing the various OB_SPEC values through which the program will cycle. Each time the user clicked on the box, the TOUCHEXIT routine would advance the table pointer, copy the next value into the dummy OB_SPEC location at the front of the table, and redraw the object in its new appearance. A programmer who wanted to follow a truly object-oriented "Smalltalkish" approach could use the INDIRECT method to bind AES drawing object to tables of associated procedures or "methods". For instance, one procedure could be flagged for use when the user clicked on the object, one when the object was dragged, one for double-click, and so on. If the table structure was capable of indicating that the true method was stored in another table, a rudimentary form of class inheritance could be obtained. INSTANT CO-ROUTINES. We turn to the AES event and message system for this trick. While some languages like Modula 2 provide a method for implementing co-routines, there is no such capability in C. However, we can effectively fake it by using the AES event library. As already seen in an earlier column, an application can write a message to its own event queue using the appl_write call. Usually, this is a redraw message, but there is nothing to prevent you from using this facility to send messages from one routine in your program to another. To set up co-routines using this method, they would be coded as separate procedures called from the application's main event loop. When one of the co-routines wanted to call the other, it would post a message containing the request and any associated parameters into the application's queue and then return. The main loop would find the message and make the appropriate call to the second co-routine. If it was necessary to then re-enter the first co-routine at the calling point, the original message could contain an imbedded reply message to be sent back when the request was complete. A simple switch structure could then be used to resume at the appropriate point. There are two potential problems in using this method. The first is the limited capacity of the application event queue. The queue contains eight entries. While the AES economizes this space by merging redraws and multiple events, it cannot merge messages. Because of this limit, you must be extremely careful when one message received has the potential to generate two or more messages sent. Unless this situation is carefully managed, you can get a sort of "cancer" which will overflow the queue and probably crash your application. The second danger involves race conditions. Message sent by the application are posted to the end of the queue. If other events have occurred, such as mouse clicks or keyboard presses, they will be seen and processed ahead of the application generated message. This implies that you cannot use this method if the program must complete its action before a new user generated event can be processed. THAT'S ALL FOR NOW. Hopefully these hints will keep you profitably occupied for a while. ST PRO GEM number twelve will return to the topic of user interfaces. Reaction to the first article on this subject was mostly positive, but a lot of folks wanted to see real code as well. In response to your feedback, there will also be code for implemented your own "mouse sensitive" objects which highlight when the cursor touches them. This will be presented as part of an alternate form manager. UPDATE: ATARI ST. I have recently gotten more information on some topics mentioned in earlier articles. These notes will bring you up to date: A number of developers reported that they were unable to get the self-redraw technique described in ST PRO GEM #2 to work. This is usually due to a bug in the appl_init binding in Alcyon C. The value returned from the function, which would normally be assigned to gl_apid, is coming back as garbage. To work around the problem, declare EXTERN WORD gl_apid; in your program and DO NOT assign the value from appl_init. The binding WILL make the assignment. A tip of the hat to Russ Wetmore for this report. The last column mentioned that turning off the clip rectangle while drawing graphics text will speed things up. It turns out that the VDI will also run at the non-clipped speed if the ENTIRE string to be written is within the current clip rectangle. To compound the problem, there is a one-off bug in the detection algorithm for the right edge. That is, the clip rectangle has to be one pixel BEYOND the right edge of the text for the fast write to work. The Feedback in ST PRO GEM #10 mentioned that there are known bugs in the Alcyon C floating point library. In fact, this library has been replaced with a new, debugged version in recent shipments of the Toolkit. If you need to use floating point and have run into this bug, you should be able to get an update from Atari. Also, check the Atari Developer's SIG (PCS-57) for a possible download. In addition, it turns out there is an undocumented feature in Alcyon C which allows you to imbed assembly code in-line. Try using: asm("....."); where the dots are replaced with an assembly instruction. You get one instruction per asm(), one asm() per line. Thanks to Leonard Tramiel for both of the above tidbits. >>>>>>>>>>>>>>> Sample code for initializing User Objects <<<<<<<<<<<<<<<< GLOBAL USERBLK extobjs[MAX_OBJS]; /* APPLBLK defined in OBDEFS.H */ GLOBAL WORD n_extobjs; /* Set MAX_OBJS to total user */ /* objects in resource */ VOID obj_init() /* Scan whole resource for user */ { /* objects. Uses map_tree() */ LONG tree, obspec; /* from GEMCL5.C */ WORD itree, i, obj; n_extobjs = 0; /* Replace TREE0 with your first */ /* tree, TREEN with the last */ for (itree = TREE0; itree <= TREEN; itree++) { rsrc_gaddr(R_TREE, itree, &tree); map_tree(tree, ROOT, NIL, fix_obj); } } WORD fix_obj(tree, obj) /* COde to check and fix up */ LONG tree; /* a user defined object */ WORD obj; { WORD hibyte; hibyte = LWGET(OB_TYPE(obj)) & 0xff00; /* check extended */ if (!hibyte) /* type - if none */ return (TRUE); /* ignore object */ extobjs[n_extobjs].ub_code = dr_code; /* set drawcode */ extobjs[n_extobjs].ub_parm = LLGET(OB_SPEC(obj)); /* copy obspec */ LLSET(OB_SPEC(obj), ADDR(&extobjs[n_extobjs])); /* point obspec */ LWSET(OB_TYPE(obj), G_USERDEF | hibyte); /* to userblk & */ n_extobjs++; /* patch type */ return (TRUE); } >>>>>>>>>>>>>>>>>>>>>> Sample User Object Drawing Code <<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> Implements Rounded Box based <<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> on G_BOX type <<<<<<<<<<<<<<<<<< WORD dr_code(pb) /* Sample user object drawing */ PARMBLK *pb; /* code. Caution: NOT portable */ { /* to Intel small data models */ LONG tree, obspec; WORD slct, flip, type, ext_type, flags; WORD pxy[4]; WORD bgc, interior, style, bdc, width, chc; tree = pb->pb_tree; obspec = LLGET(pb->pb_parm); /* original obspec from USERBLK */ ext_type = LHIBT(LWGET(OB_TYPE(pb->pb_obj))); slct = SELECTED & pb->pb_currstate; flip = SELECTED & (pb->pb_currstate ^ pb->pb_prevstate); set_clip(TRUE, &pb->pb_xc); /* These two routines in GEMCL9.C */ grect_to_array(&pb->pb_x, pxy); switch (ext_type) { case 1: /* Rounded box */ /* Crack color word */ get_colrwd(obspec, &bgc, &style, &interior, &bdc, &width, &chc); /* For select effect, use char color */ if (slct) /* In place of background */ bgc = chc; /* Fill in background */ rr_fill(MD_REPLACE, (width? 0: 1), bgc, interior, style, pxy); /* Do perimeter if needed */ /* rr_perim is in GEMCL9.C */ if (width && !flip) { pxy[0] -= width; pxy[2] += width; rr_perim(MD_REPLACE,bdc,FIS_SOLID,width,pxy); } break; default: /* Add more types here */ break; } return (0); } VOID /* Cracks the obspec color word */ get_colrwd(obspec, bgc, style, interior, bdc, width, chc) LONG obspec; WORD *bgc, *style, *interior, *bdc, *width, *chc, *chmode; { WORD colorwd; colorwd = LLOWD(obspec); *bgc = colorwd & 0xf; *style = (colorwd & 0x70) >> 4; if ( !(*style) ) *interior = 0; else if (*style == 7) *interior = 1; else if (colorwd & 0x80) /* HACK: Uses character writing mode */ *interior = 3; /* bit to select alternate interior */ else /* styles! */ *interior = 2; *bdc = (colorwd & 0xf000) >> 12; *width = LHIWD(obspec) & 0xff; if (*width > 127) *width = 256 - *width; if (*width && !(*width & 0x1)) /* VDI only renders odd */ (*width)--; /* widths! */ *chc = (colorwd & 0x0f00) >> 8; /* used for select effect */ } VOID /* Fill a rounded rectangle */ rr_fill(mode, perim, color, interior, style, pxy) WORD mode, perim, color, style, interior, *pxy; { vswr_mode(vdi_handle, mode); vsf_color(vdi_handle, color); vsf_style(vdi_handle, style); vsf_interior(vdi_handle, interior); vsf_perimeter(vdi_handle, perim); v_rfbox(vdi_handle, pxy); } -------------------------------------------------------------------------- ___________________________ | SUPPORT YOUR LOCAL BBS | --------------------------- THE BUMPER STICKER FOR ALL BBS USERS! 3 1/2" X 11" Blue Letters on White Vinyl --------------------------- $3.75ea. - 2 for $7.00 postage and handling Incl. Linda Woodworth 4604 East 16th Street Cheyenne, WY. 82001 -------------------------------------------------------------------------- THE ARCHIVAL BIT ================ As a service to our readers we include here a grouping of statements made by the President of Atari Sam Tramiel, at the CIS Presidential Conference a few weeks ago.... We present these as a "record" for all to use as reference to see if in fact, these things come to pass or just pass on. Also, we took the liberty to comment where we felt it appropriate. "At present I think that we are shipping all the models (shown at the fall COMDEX last year) in Europe, even the Abaq, to developers. We will start shipping in earnest to the US market in early 1989, including the ST and the line of PC compatibles and our new members of the ST family. The Abaq is now called the ATW (ATari Work station)." STR NOTE: You "THINK", aren't you SURE? "We just signed a major deal with a big Dram supplier and the situation will get better I hope in early 1989." "We have already published the details of new TOS (ver 1.4) to developers and will do so for the rest of the users when it is released. We are working on the TT (the 68030 system), and hope to show it in early '89. Until then, no further comments on the TT... but it will knock your socks off! :-) " "We feel that advertising without product availability is helpful in selling our competitors' machines and therefore, will just waste money. As far as a national computer chain is concerned, we are already diverting machines to the US and ship them to our few but loyal ST dealers." STR NOTE: Advertise the software available and display the machines at the same time, thus keeping the interest level high. Show support to the developers of software for the ST..thats the kind of advertising you could be doing at this time. Stop suffering from the CHEAPS! "We agree that the Atari 8-bit line is the best available. However, the US market seems to want more powerful machines. We are selling many tens of thousands of the XE/XL line in Europe, and in the middle east, and in Latin America. We are trying to push the XE Game System in the US as a computer and a game for the same price as the Nintendo with an exercise mat. (i.e. $149)" "By the way, there is now a fifty dollar rebate on the XE Game machine." {Portable ST - Fact or Fiction} "Fact. We are working on it, and will ship it as soon as it is ready." "...we plan for Atari to be number two or number three in the world personal computer market and we hope to make the ST one of the standard machines in the US during 1989. I would prefer not to comment on details of future ST or TT machines at present." "I appreciate the support of all of you, and I really hope that in 1989, you will not be such a minority in the US personal computer world. It is a pleasure to see Atari so successful in Europe and I'm sure that with more DRAM as we expect in '89, we will be able to be successful in the US as well. Good night." NOTE: Then we all woke up and saw the real questions go unanswered! We purposely left out the part where Sam told the US Developers to go sell their products in Europe. That "GEM" was just too revolting to bring up again. Better he should get product on the US Dealer shelves instead of trying to sway the developers to turn to Europe. Hey Sam, read YOUR address at least once a day, it SEZ: "U.S.A.!" ------ ------------------------------------------------------------------------- ABCO COMPUTER ELECTRONICS INC. P.O. Box 6672 Jacksonville, Florida 32236-6672 904-783-3319 HARD DISK SYSTEMS TO FIT EVERY BUDGET ------------------------------------- 20mb #SG20510 519.00 30mb #SG32610 649.00 40mb #SG44710 789.00 65mb #SG60101 949.00 80mb #SG840110 1019.00 130mb #SG3A1210 1449.00 larger units are available - (special order only) *** Available for ST - Amiga - Mac - IBM *** 6 month Guarantee followed by 6 month Parts & Labor Warranty (under normal usage) -------------- ------------------------------------------------------------------------- A NEW BLIVITT! ============== From "Computer & Software News" Dated: Oct. 1988 "It looks like ATARI may bring out a 68030-based computer at COMDEX. The base unit of the system, aimed at getting the company into the workstation business, will have a price tag of about $2,000, and will be targeted at the education, scientific and engineering markets, a la Steve Jobs' Next. The ATARI machine reportedly will feature a 1280-by-960 pixel screen with 8-bit gray-scale, a Motorola 56000 digital processor for up to eight channels of 16-bit sound, and a 1.44-Mbyte, 3.5-in. floppy disk drive. It will also have four VME expansion slots which will allow it to accomodate add-in boards that fit in Apollo and Sun workstations, sources explained." -------------------------------------------------------------------------- ST REPORT CONFIDENTIAL ====================== Sunnyvale, CA The real hope for Atari lies in the first and second ------------- quarters of 1989, with the real push on for the second quarter. NYC, NY Amstrad has bought into MICRON which means after the ------- initial committment to Atari is fullfilled, there will be NO MORE Dram chips for Atari from them. Phoenix, AZ Atari is once again BACK ORDERED ON SC1224 and you ----------- can forget getting ANY 1040 STs! It is suggested that you use the Magnovox monitor as it is the closest to SC1224 performance. Dealers are being forced to upgrade 520stfm units to 1mb in the field. Las Vegas, NV Will Comdex be the shot that's heard 'round the ------------- world? According to some informed sources if Poppa Jack holds the KATZENJAMMER KIDS in check, Atari could quite possibly do well in the Public Relations Dep't. Sunnyvale, CA "Rumor" has it, that the centerpiece of Atari's ------------- Comdex show will be the Laptop, also an elaborate Desktop Publishing Display will be in action. NYC, NY Insiders at the "market" are very skeptical of the ------- remark: "Watch Atari in the first 2 quarters of 1989". We have heard all that before. they said. St. Louis, MO Page Stream, the "new" name for Publishing Partner ------------- Professional has been released. As always, with "new" programs, it is experiencing some slight problems. According to one reviewer, the 20 some odd "listed" quirks (bugs) are soon to be hit with raid and "all" will be ok. This is a DTP program that, if it's problems are ironed out, will be the top US DTP program. Los Angeles, CA FEDERATED, the ATARI owned and operated chain of --------------- stores west of the Mississippi, has more Commodore AMIGA 500s is their stores than they do of Atari computers is this another "coup" for ATARI? ------------------------------------------------------------------------- Atari ST GFA-BASIC 3.1 ====================== The original version of GFA BASIC was released in June of 1986 to rave reviews in all the major computer publications. Even the often cynical programmers were impressed by the speed of this new language, the command vocabulary and the structured programming. At last a way for every owner to unleash the powerof their ST! Early in 1987: The GFA BASIC Compiler became available. The already fast programs became even faster. The compiled source code made professional software development a possibility, and several products, ranging from game programs to productivity utilities were introduced by professional programmers. Version 2.0 of GFA BASIC implemented compiler commands, and was delivered in October of 1986. During the past two years, over 50,000 copies of the GFA BASIC Interpreter, and 20,000 copies of the GFA BASIC Compiler have been purchased world wide. A New Standard GFA BASIC, Version 3.0 was first shown to the general public at CeBIT the world's largest consumer computer show, in West Germany. Again, GFA BASIC has astounded the computer world. With over three hundred new commands and an enormous increase in speed. Tests have indicated speed increases ranging between 40 and 60 percent over the previous version of GFA BASIC. Once again GFA BASIC is setting new standards! Compatibility Even more important to the many present user's of GFA BASIC, Version 3.0 remains compatible. You can still use all of the existing GFA- BASIC programs and books. The huge library of public domain GFA BASIC programs has just been improved! ALL programs will benefit from the improvements in the latest version of GFA BASIC. New Editor The editor in the previous version of GFA BASIC has been highly praised. Automatic syntax checking, and the interactive programming environment made program development a snap. But, even something this good can be improved. One of the more impressive features is the ability to "hide" procedures. Once a procedure has been debugged, the programmercan "hide" it. Only the procedure name is shown in the listing. This makes your visible code more readable. No longer will it be necessary page through screen after screen of procedures. Just view the names, expanding them as needed to review the contents. There's also more help in editing your programs. Now with just a key stroke, characters above the normal ASCII-Code can be input into your program. The new GFA-BASIC Editor also includes a larger number of keyboard implemented commands. Other useful new features include: a clock in the menu field, up to 10 editor-marks may be placed in your program, and a line counter is included. More Power! There isn't enough room here to list all the possibilities of GFA BASIC 3.0, but here are a few of the new functions: -- All AES functions have been implemented -- Additional functions for management and handling of objects -- Structures -- Line-A commands are now supported -- Joystick commands -- Case distinction (SELECT-CASE and ELSE-IF) -- Multiple line functions in addition to assigned parameters -- Variable parameters are also possible- -- Many bit operations have been implemented (move, rotate, bit test, erase, set, change) -- Fast Integer operations -- And much more! Atari ST GFA-BASIC 3.1 For ALL Atari ST Computers By Frank Ostrowski MICHTRON, Inc. 576 S. Telegraph Pontiac, Mi. 48053 Phone (313) 334-5700 ------------------------------------------------------------------------- INTERLINK PC Pursuit Help By: Randy Mears Until INTERLINK ST is upgraded to contain a script language (and it will be so upgraded) you can get around quite well in PC Pursuit without one. The first thing you need to do is create a special Phone File for your PC Pursuit dialing. The primary difference between this file and a normal Phone File is that the Modem Parameters are changed to disable the Hang-Up and increase the timeout values. This will allow you to use the standard dialer buttons to dial numbers within a given area. You can even use the group dialing capability to check multiple numbers within that area. In addition, function key definitions that will allow you to disconnect from your current area and connect to a new area need to be defined so that you can easily move from one area to another. And, finally, a recording that will allow you to continuously retry area dialing until you get a CONNECT rather than those all too familiar BUSY's. Enclosed in this archive is a sample PC Pursuit Dial File (PCDIAL.DAT). You can load it into INTERLINK as a Phone File and create your own function keys using the model contained in the Control/F10 Function. Just insert the desired area code and your userid and password. If you desire automatic retry keys add this string to the end of your area call function ````^nn where nn is the function number (1-20) of the key being defined. This will cause the key to be repeated after a 12 second pause. When you get connected you can break out of this loop by pressing a function key that has nothing defined (I use ALT/F2). You can break out of this loop manually or, you can use the enclosed recording to do it automatically. In versions of INTERLINK below 1.74 you must start the recording after you initiate function key processing (sorry about that bug), in later versions you can start the recording and then press the function key you desire or change to another function key mid-stream. Don't forget to save this new Phone File with some other name than your normal one! The recording is called PCCOD.REC. It waits forever for a CONNECT from PC Pursuit and, upon getting one, breaks the Function Key loop by pressing ALT/F2 (important that you leave it blank) and sending ATZ to PC Pursuit. It plays the completion tone to let you know that you have connected. I use this technique constantly on PC Pursuit and find that I can move around quickly and find lots of Boards to connect to. It is convenient to add the required Area Code for a given board to its NAME description in the dialer window. This way you know what area is needed for a given board. You may just want to make a different Phone File for each area but I tend to put about 4 areas per Phone File and have about 6 such files descriptively named. Hope the enclosed files and information have been of help in your PC Pursuits. If you would like further information or clarification please feel free to call our BBS at (813)924-4590. It will be a long distance call for most of you so we try to answer your questions within 24 hrs. -------------------------------------------------------------------------- THIS WEEK'S QUOTABLE QUOTE ========================== BUG-A-BOO --------- In any collection of data, the figures that are obviously correct beyond all need of checking, contain all the errors! ------------------------------------------------------------------------ ST-REPORT Issue #60 November 07, 1988 ALL RIGHTS RESERVED (c)copywrite STR Inc. ------------------------------------------------------------------------ Any reprint must include ST-Report and the author in the credits. Views Presented herein are not necessarily those of STR Inc. or APEInc. COMMERCIAL ONLINE SERVICES MUST HAVE WRITTEN PERMISSION to offer ANY APEInc. REPORT and/or ZMAG in any form. -------------------------------------------------------------------------