
================================================================================
(C) 1991 by Atari Corporation, GEnie, and the Atari Roundtables.  May
be reprinted only with this notice intact.  The Atari Roundtables on GEnie
are *official* information services of Atari Corporation.

To sign up for GEnie service, call (with modem) 800-638-8369.  Upon
connection type HHH (RETURN after that).  Wait for the U#= prompt.
Type XJM11877,GEnie and hit RETURN.  The system will prompt you for your
information.
================================================================================

 ************
Category 3,  Topic 8         Mon Feb 06, 1989
DARLAH [RT~SYSOP]            (Forwarded) 
Sub: GFA Basic 3.0-                         

Questions and answers for GFA Basic.
 ************
 ------------
Category 3,  Topic 8
Message 1         Fri Jan 04, 1991
RHFACTOR                     at 04:08 EST
 
R.WATSON15,
   The database program is one that I've written called 'FONE BOOK'.  I use
the STORE command to save the various arrays. It is written in GFA 3.5E .
   Granted, the program has not been released, as yet. Still adding a few
extra features and some fine tuning, but it is near complete.
   The 'FONE BOOK' is a high speed  phone,address,comments  database that will
handle 1000 entries (min)  on a 1040ST, mono/color compatiable. And also
includes a special 'comparing' program that will analysis 2 different
databases (say, one at home and one at work) and allow updating both the
databases, so that both locations can monitor additions, changes, or deleted
records in a clear,fast process.   It also uses a simple form of 'data-
compression' for the stored files to minimize disk space.  Printing is also
handle for hardcopy or envelope printing.

    As for DCSHOWIT, it was a definite drag that it chewed into the files when
saved. I have not had the nerve to 'test' it with other programs, but
everything went back to normal after I removed DCSHOWIT from the AUTO fldr.

  Until later,          Ron Hollins
 ------------
Category 3,  Topic 8
Message 2         Fri Jan 04, 1991
D.MACE [Dave]                at 04:10 PST
 
    Well, I'll be here if you have any questions about GLEE.

    GLEE also accepts CYBER and DELUXE Paint animations, converting them over
to a format that is SIMPLE to use in your own programs.
 ------------
Category 3,  Topic 8
Message 3         Fri Jan 04, 1991
ANTIC                        at 14:27 EST
 
to A>STUDER & D.HOLMES14

A while ago I uploaded a GFA 3.0 program that used Trio's Spectrum
uncompressing and viewing ML programs in INLINE statements to view spectrum
pics.  Download file 12982 and check it out
             Jim Burton
           tech editor, START BTW, the filename is GFA51230.LZH
 ------------
Category 3,  Topic 8
Message 4         Sat Jan 05, 1991
MAS2743 [mas2743]            at 00:53 CST
 
Does anyone know how to write a routine (in GFA, of course) that will allow me
to put "thumbnail" picture in the dialog box??  Saw it on the Mac IIsi and
wondering if any GFA programmers could write one...looks cool!

You don't have to tell me the whole technical answer but it is just my way of
bringing up the topic here.  That's all.
 ------------
Category 3,  Topic 8
Message 5         Sat Jan 05, 1991
A.STUDER [Pandamonium]       at 00:45 PST
 
Is there any way to load non-GDOS fonts for GFA programs?  Maybe the fonts
that NeoDesk can use?  If so, any code around here?
 ------------
Category 3,  Topic 8
Message 6         Sat Jan 05, 1991
G.YOUNG [Greg]               at 05:23 PST
 
Rob,

   To clear up a few things regarding Degas:

        DEGAS does not use GDOS fonts.  It came out just before GDOS.

        DEGAS ELITE does use GDOS fonts.
 ------------
Category 3,  Topic 8
Message 7         Sat Jan 05, 1991
D.HOLMES14 [David]           at 09:57 PST
 
    You can put any picture you want into a dialog box.  Of course, it is not
easy.  You have to use things like G_ICON and BITBLK (I think).  I,
personally, do not use any GEM dialog boxes in my programs.  I wrote my own
code which can create everything I need in dialog boxes (including exit
buttons, flag buttons, radio buttons, text fields, optional shadows). All I
have to do is add some DATA statements to create each box. Plus, it is in two
steps. One to draw it, and one to control it, so I can add extra things like
pictures between the two procedures.
    Well, I guess that doesn't help you, so just ignore this message if you
want.
 ------------
Category 3,  Topic 8
Message 8         Sat Jan 05, 1991
A.FRIESEN                    at 17:32 MST
 
I saw someone who put a digitized picture of themselves on a button in a GEM
alert box.  It was pretty interesting.  More interesting was that they did it
all in GFA Basic (maybe with some assembly).  I don't know where the person
lives anymore, so don't even ask for me to get info., I just thought you might
be interestead in hearing what I had seen someone do.  I also saw (again in
GFA Basic I don't know if they used any assembly codes) someone who used GEM
drop down menus and changes (oops that should be changed) the font sizes and
styles in the drop down menus.  It was pretty nifty (but a little slow).

       Aric Friesen
 ------------
Category 3,  Topic 8
Message 9         Sat Jan 05, 1991
OUTRIDER [Terry May]         at 17:49 PST
 
  Ah, I see Mike the Pirate (MAS2743) is back.  Too bad people continue to
give him advice on how to program his pirate copy of GFA.  :^(

                                  - Terry -
 ------------
Category 3,  Topic 8
Message 10        Sun Jan 06, 1991
RHFACTOR                     at 01:36 EST
 
COMPILER OPTION questions.
  I have the 3.07 manual with the upgrade to 3.5E insert, however no new info
was provided regarding the compiler.
   For myself, the options that are available for the compiler are given
rather sketchy details as to implementing them, or when to choose one option
over another.
  Specifically, options like P> and P< .  The 3.5 MENU prg, defaults to (I
guess) P< (as it is not shown on the command line). In the manual it says that
this compiles procedures and functions WITHOUT parameters, and that RESUME is
NOT allowed.
   This might sound pretty nieve, on my part,  but, I constantly use parameter
passing to procedures, and at times use RESUME LABEL when it is neccesary to
break out of a routine with a 'forced' error. (as concept that was published
in a START mag, refering to a program 'GOTO WHIMSEY',  the basis being using
ON ERROR GOSUB procedure, then using RESUME LABEL to enter back into the
program.  I know that this 'bends the rules' regarding clean structure
programming, yet, this sometimes seems the only way.
   On this topic, is there any books or articles that deal with this GFA
topic, that could explain out some of these finer details.
   The experienced programmers... please shed some light on this.
                     Thanks,  Ron Hollins
 ------------
Category 3,  Topic 8
Message 11        Sun Jan 06, 1991
R.LEBLANC7                   at 02:56 EST
 
Hagop, Greg, Dave: Thanks for the input and clarifications. As for the
undocumented DEFTEXT commands, I'll have to find an obscure bookshop that has
or can order the GFA BASIC BOOK (is that still in print btw?). Dave, as it
happens I DO have a question about GLEE.  From my understanding of your
message and a brief perusal of the program it seems to me you're advising me
to type the alphabet in the font of my choice in DEGAS, then load the image
into GLEE and box each letter as an individual object.  I sure hope I'm
overlooking something, because that's an awful lot of work! I did try
something interesting, though.  I've been using a font-loading ACC from Antic
as a crutch and watching certain memory locations for changes, in an attempt
to find the spot it lobotomizes.  I've figured this much out:  The ACC
apparently reserves a block of memory into which it effectively BLOADs the
font file, then redirects the operating system to this new font address.  I
can find that new address using the now-taboo {L~A-22}, but I don't know how
else to find it.  I also don't know how it supplies the new address to the OS.
There has to be a relatively simple way to do this...a DPOKE here, an LPOKE
there...anyone???

Rob the Brain-Dead
 ------------
Category 3,  Topic 8
Message 12        Sun Jan 06, 1991
R.WATSON15 [Wayne Watson]    at 09:51 EST
 
Ok, who can tell me how to change the Default date of European to American. I
have 3.5E, but most of the patches I have that came with 3.07 also work on
3.5E. I have seen it somewhere but cannot find it now. I cannot find it in any
of the manuals. Thanks.
 ------------
Category 3,  Topic 8
Message 13        Sun Jan 06, 1991
T.ROEDER1                    at 13:34 MST
 
Hi, all!

This is my first attempt at posting here, so please forgive any mistakes I
might make.  Anyhow, on with the questions.

I'm slowly (but surely) working on a GEM-based text editor (accessory someday,
I hope).  As of right now I have the program up and running and am able to
open a GEM window (w/ all available gadgets) and view a text file (kinda like
a GEM-file viewer, I guess).  Before I go on to pursue other things, I was
wondering if:

Anyone knows of, has, or knows how to write a ML routine to speed up the
display of text in the GEM window.  Alternatively, are there any other tricks
that might be used to speed up the display?

If anyone knows how to set up a compiled GFA GEM-based program so that it
accepts parameters passed to it (like TEMPUS does under Neodesk 3) so  that I
can drag a text file to the icon, have the program run and load the file all
at once.

Thanks in advance for any info/help you can give me.

Regards,

Timothy Roeder (Oops.  I should mention that I'm using the 3.5E version of GFA-
Basic/ Compiler...it's a NEAT upgrade.  That reminds me, I have the old
'Michtron version of the manual...how would I go about getting a newer
version?)
 ------------
Category 3,  Topic 8
Message 14        Sun Jan 06, 1991
D.A.BRUMLEVE [kidprgs]       at 16:24 CST
 
D.CHARTER is advertising his copy of the GFA BASIC book for sale in Cat 27. 
Might want to check it out.
 ------------
Category 3,  Topic 8
Message 15        Sun Jan 06, 1991
H.WOOTAN [Harry]             at 16:50 CST
 
Rob (R.LEBLANC7) --

You would be able to order the GFA BASIC BOOK from a software dealer instead
of a bookstore. It comes with a diskette and is categorized as software
instead of a book.

I don't know whether it's still being distributed. But surely you can find
some one somewhere that still has one to sell.

Harry
 ------------
Category 3,  Topic 8
Message 16        Sun Jan 06, 1991
J.EIDSVOOG1 [CodeHead]       at 17:51 PST
 
MAS,

I just purchased a _second_ copy of GFA BASIC 3.  My first one has the spiral-
bound manual from Michtron but I wanted the latest one from GFA Data Media UK
so I could give you the correct page numbers for technical help.

Guess what?  You're in luck.  Starting on page 497 is a section describing how
to put "thumbnail" pictures into a dialog box!  Check it out.  Please don't
tell me that you haven't got the GFA manual...I don't think my patience can be
stretched that thin.  Anyway, if you look on page 497, I'm sure you'll have a
response for me.

John
 ------------
Category 3,  Topic 8
Message 17        Sun Jan 06, 1991
H.JANOYAN3 [JANOYAN]         at 17:54 PST
 
Rob,

    Unfortunately, I can't think of anyone who would still publish the GFA
BASIC BOOK. It was originally published by MichTron. It was also made for GFA
2.0, and probably half of the book's contents now is unnecessary because of
the new features added in GFA 3.0.

    Also, I also had a need to load in a new Degas font into the ST, and
quickly gave up on trying to figure out how to do it. However, here is what I
later did: I used Charles Johnson's FONT TRICKS (I think it was originally
published in ST-Log, but a new version is available as part of the CodeHeads
Utilities; am I correct, Charles?) to load the Degas font, then used GFA's GET
command to capture the characters I needed. I later saved this as an INLINE
information, and use the PUT command whenenver I need to display a certain
character. This works, except that lo/med res and hi res fonts would have to
be seperately, it is pretty slow, and you can't display them in different
colors (unless you capture them in different colors).

-Hagop Janoyan
 ------------
Category 3,  Topic 8
Message 18        Sun Jan 06, 1991
D.HOLMES14 [David]           at 19:45 PST
 
Timothy,

    As to the GEM window, I try and avoid it as much as possible, and when I
do use it, I avoid using GEM to scroll it, because it is too slow.  (I usually
directly move the screen memory around to scroll text, although I don't think
that should be used for a DA.  My latest version of the TX2 File Viewer prints
a page of text in less than 1/20th of a second, and scrolls way to fast to
read, and I tend to think that's becuase I don't let GEM do anything.)
    As to a program which accepts parameters passed to it, I use this code:

peek|=PEEK(BASEPAGE+128) IF peek|>0
  x$=SPACE$(peek|)
  BMOVE BASEPAGE+129,VARPTR(x$),peek| ENDIF

    Now, the other programmers around here may tell you that it's messy or
inefficient, and they may be right, but it works for me.

- David
 ------------
Category 3,  Topic 8
Message 19        Mon Jan 07, 1991
RHFACTOR                     at 02:59 EST
 
Hi WAYNE,   I believe you want the MODE command to adjust the DATE display
  It took me writing a special string manipulate routine before I found it
MODE in the manual.  Try MODE 1  or MODE 3  at the start of your prg.

     Ron Hollins
 ------------
Category 3,  Topic 8
Message 20        Mon Jan 07, 1991
T.ROEDER1                    at 18:10 MST
 
David,

Thanks for the (quick) response and the example code.  I've managed to get the
program to accept parameters already by playing around with another piece of
example code posted here earlier (about passing param's to a .TTP GFA
program.)

I can appreciate the problem of using GEM to scroll the window...that's why
I'm trying to find out how to speed it up, if possible.

Thanks again.

Timothy A. Roeder
 ------------
Category 3,  Topic 8
Message 21        Mon Jan 07, 1991
R.WATSON15 [Wayne Watson]    at 23:22 EST
 
RHFACTOR,
  Thanks for the reply. I looked MODE up in the manual and MODE 1 or MODE 3 is
exactly what I was looking for. Thanks. I knew I had seen it somewhere. Thanks
again.
 ------------
Category 3,  Topic 8
Message 22        Mon Jan 07, 1991
D.MACE [Dave]                at 21:39 PST
 
Guess what?

    I just decided to go ahead and perform my little experiment. I typed A-Z,
0-9, punctuation and math charcters in inch high (on my 19" SONY monitor)
letters on a screen in CyberPaint, antialiased them so they'd look nice,
loaded the pic into GLEE and had it totally drawn, defined and aligned in
fifteen minutes. The end product, with all of the definitions on a four bit-
plane (ST/STE low rez or TT 640x480 rez (where they would be about half size))
memory form took up 11K. It might have been a half hour had I decided to put
in lower-case letters and added the rest of the puctuation, and probably would
have eaten all of 16K.

    The antialias function, for those who don't have CyberPaint, smoothes
jagged edges like those found on diagonally drawn lines or circles by adding
similar, slightly less brilliant colors in the gaps. This makes the font look
like it has been drawn on a higher resolution screen. Full color fonts (say,
gothic with red lines in the center, or gleaming metallic characters) can be
created with little difficulty.

    Copy them up with vro_copyfm and you have used the VDI, just like Atari
says you're supposed to. Generate a masking plane from GLEE and use vrt_copyfm
to scoop out the background, use vro_copyfm in OR mode to draw your character,
and you have characters that are transparent.

    If you want to use 'object oriented' programming, you would construct one
function to blit characters the way you want them, and one of function to
emulate the 'print' command. The first function would be useful in video
games, the two could be reuseable in other apps.

    The dump option GLEE provides is not inviolate. Feel free to dump in C
mode if you want additional information about the memory form not directly
supplied by the GFA BASIC dump. Just remember that if you decide to edit the
GLEE dump, any changes in the GLEE file that you wish to add in the future
must be similarly edited.
 ------------
Category 3,  Topic 8
Message 23        Tue Jan 08, 1991
E.SLICK [Eric]               at 22:14 PST
 
MAC

About the sticking scroll bar, I suggest you play around with the last
parameter of On Menu which is a number. It helps avoid the sticking problem.
Also, when your scroll bar gets stuck, the only way to unstick it is to call
up an alert box. I had the same problem and the alert box cleared it up. A
pain in the neck though. 3.5 clears up this problem. By the way, I'm not a
window wiz.


Did I stump everyone? I really would like to see some code that will allow me
to do the following:


Get 0,0,100,100,a$ change the pointer of matrix!(100,100) to a$ delete every
odd line of matrix(100,100) Put 0,0,a$

This would (in theory) make it easy to do cause the effect of squishing the
display. Or what if matrix!(100,100) were pointed to the screen and you then
deleted lines or used the neat matrix math in 3.5? Does this make sense or is
this just a kludge of an idea?

Eric
 ------------
Category 3,  Topic 8
Message 24        Wed Jan 09, 1991
RHFACTOR                     at 03:14 EST
 
Gosh, Eric , I wish I knew what the heck your talkin' about... it sounds like
an intense idea.
  I got GFA3.5, and read the docs on MATRIX, and I haven't a clue as to what
purpose they serve.
  Are there any 'threads' that discuss the use MATRICES, for GFA or
whatever???

RH
 ------------
Category 3,  Topic 8
Message 25        Wed Jan 09, 1991
D.MACE [Dave]                at 01:09 PST
 
Eric,

    Instead of using the 'Get' command, try using vro_copyfm(). Define the
source memory form as bein twice as wide as it really is (wdw*2 and w*2) and
set the rest of the parameters normally. When you call vro_copyfm(), the
effect you describe will have been accomplished.

    The function, vro_copyfm, is a VDI raster copy function. It performs the
same job as 'Get' and 'Put' in GFA BASIC in a slightly more flexible manner.
It is likely the function that 'Get' and 'Put' call to do their work. It's
only a little bit more complicated.

    Download GLEEDEMOS or GLEE (just search the library for 'GLEE') for more
information on these functions. I also recommend the BITBLIT command in GFA
BASIC, which is NOT line-A, (before John Towns jumps on me for even mentioning
it) but an easier way of calling vro_copyfm without using the 'VDISYS'
directive. The related function, vrt_copyfm is very useful for masking.
 ------------
Category 3,  Topic 8
Message 26        Wed Jan 09, 1991
DAEDWARDS                    at 21:02 PST
 
T.Roeder1:

For speeding the display of text, I STRONGLY recommend either Turbo ST or
Quick ST.  The latter is cheaper, but I have developed a vague impression (I
don't give it any more weight than that) from reading others' messages that it
is slower, less compatible, and less stable.  Since I had Turbo ST before
Quick ST came out, I have never bothered to check it - I have yet to see a
report that Quick ST is sufficiently better than Turbo ST to justify the
additional expense and hassle of changing.

Both of these, by the way, become part of the system, NOT part of the
individual program.
 ------------
Category 3,  Topic 8
Message 27        Thu Jan 10, 1991
RHFACTOR                     at 04:31 EST
 
As far as displaying TEXT for speed, you could suppliment GFA with a spot of
machine code (an example is in Engels book, 'Programming with GFA Basic 3.0').
They provide ML code for MONO monitors, and they say that it can be modified
for color systems.   I tested it on my mono system, and it basically SLAPS the
text on the screen.  If I knew how to modify it for color, I'd include it in
all my programming.
   Any ML guys care to take a crack at it. It's not much in size at all !

until later,    Ron Hollins
 ------------
Category 3,  Topic 8
Message 28        Thu Jan 10, 1991
D.HOLMES14 [David]           at 19:25 PST
 
DAEDWARDS,

    Actually, I have the impression that Quick ST is faster.  One thing Quick
ST does which Turbo ST does not is speed up text printed in bold, itallics,
etc.  This is escpecially useful for my program, the TX2 File Viewer, since
one of it's main features is its ability to display those special effects. 
Quick ST also speeds up GDOS fonts.

Ron,
    Wow, I could use some ML code like that.  My program runs incredibly fast
with Quick ST, but it would be great if I could create that speed with normal
systems, too.
 ------------
Category 3,  Topic 8
Message 29        Fri Jan 11, 1991
RHFACTOR                     at 02:06 EST
 
Hi DAEDWARDS,
                The ML code for TEXT output that I have is very fast, BUT it
ONLY handles MONOCHROME monitor display. This is not my own code. But if
someone could EXPAND it to handle at least MED REZ also, I think it would be a
handy sub-routine for programmers.
  Just for note,  the ML routine is already set-up to handle TEMPUS and DEGAS
character set fonts.

   I don't own the copyright on the code (from a book I purchased), but, with
all the directioning and examples laid out, I don't believe the author would
object. I'll open the 'can-of-worms' and ask for feedback on this.   If it's a
major hassel, I'm sure you could look over my shoulder as I read that page.
  Anyways,  it would be great if one of the ML wizards would take up the init,
and expand the code to handle the color monitor (at least MED REZ).

Until I hear from you,
     Ron.
 ------------
Category 3,  Topic 8
Message 30        Fri Jan 11, 1991
MAS2743 [mas2743]            at 02:31 CST
 
To John Eidsvoog,   What!?  GFA BASIC 3.0?  Where to get it?  What happened to
3.5 I have seen around here or elsewhere?  'xcuse me John, users here might be
mad at me because I am back again _just_ to show you that I have response for
you.   ANyway, John, glad that you share your info about "thumbnails" in the
dialog box.   Is there any applications for it?   (I have seen them on the Mac
IIcx running 3D Swivel software.)

Ultimately, will _any_ graphics file format (ie. NEO,Degas,IMG,Parsec) _WORK_
within the dialog box?  Problem is that medium rez will look ugly unless
someone has to dither it out or use monochrome for it. The point I am trying
to get around is that I WOULD use thumbnails on 80-character dialog box (it
makes sense! Not 40-char!) with 8-bit plane graphic display.  That will help
me write professional application.

John, to C or not to C?  Back in college, lots of my friend kept telling me to
USE (as the rule implies) and LEARN C programming language - NOT GFA BASIC
simply because it fails to use the standard graphics implementation of the
real world.   IF that is so, then is it true GFA BASIC is just a "toy" for the
ST world??   Should I go for GFA 3.x or C?

Thats all for now.  Mike
 ------------
Category 3,  Topic 8
Message 31        Fri Jan 11, 1991
J.JACOBI                     at 01:05 PST
 
 Boy am I glad to see someone talking about GFA.  For all those who have left
messages about where you can get GFA stuff, on the west coast Pacific Software
carries most everything available.  I dont have their address or number but I
will get it and leave it here.
 Now, has anyone managed to get Xbios 31 to work with timer A?  What I am
trying at the moment is basically this;

inline asm%,20 containing
    addi.l #1,(I {} the varptr to ticks here)
    bclr.b #5,$fffa0f  clear the mfp
    rte then call
    ~Xbios(31,0,7,0,l:asm%)

  
 Nothing bombs but nothing happens either.  I am declaring a variable Ticks%
and trying to increment it.  I need a higher resolution timer going for a midi
driver.  Any help would be appreciated.


      Jon Jacobi
 ------------
Category 3,  Topic 8
Message 32        Fri Jan 11, 1991
BOYDR [BOYDR]                at 03:23 CST
 
Re: Converting Engels mono ml text routine to color...

As long as you're writing an assembler routine, and assuming you're just
wanting 80x25 (or some set size) text (like IBM text mode)...

An assembler routine that simply copies, rather than the ST's way of
'drawing', a character block to the screen would be FAST...

I've never got VT-52 working (give up to easily), but... FAST... ZOOM...
 ------------
Category 3,  Topic 8
Message 33        Fri Jan 11, 1991
J.JACOBI                     at 03:07 PST
 
 Ignore my last message.  My only problem was that I didn't specify the
timer/control and data as words. It works fine now (that is with the rest of
the code included).

       JJ P.S.  Anyone else using interupt routines within GFA?
 ------------
Category 3,  Topic 8
Message 34        Fri Jan 11, 1991
J.EIDSVOOG1 [CodeHead]       at 20:18 PST
 
I'm speechless.
 ------------
Category 3,  Topic 8
Message 35        Sat Jan 12, 1991
R.WATSON15 [Wayne Watson]    at 07:34 EST
 
RHFACTOR,
  What page number is the ML routines on?

  Anyone, How do you access the A0 register from within GFA 3.x?
 ------------
Category 3,  Topic 8
Message 36        Sat Jan 12, 1991
T2.LTD [Rick Taylor]         at 08:32 PST
 
Mike,

  Go to C, please!  Alcyon C needs someone like you.  Or you could even get
Sozobon C.  There's a language that you can _legally_ have and not pay for! 
Appealing, no?

--Rick

(Sheesh, and I said I'd never reply to this crackpot again.)
 ------------
Category 3,  Topic 8
Message 37        Sat Jan 12, 1991
A.FRIESEN                    at 12:52 MST
 
Hi all, just got my GFA Basic 3.5.  I decided to order the whole thing (not
just the upgrade kit) so I got the new manual.  It also included the page
inserts that they send you with the upgrade kit.  I just want to make sure
that they gave me the correct page inserts, because mine say Amiga on the
bottom of the pages.  Do yours say that too?

       Aric Friesen

BTW the manual appears to be pretty good.  It has a fair amount of examples
 ------------
Category 3,  Topic 8
Message 38        Sat Jan 12, 1991
D.A.BRUMLEVE [kidprgs]       at 13:56 CST
 
 Aric, I'm considering doing the same thing -- buying the entire 3.5
 package rather than upgrading.  My last manual is the MichTron 3.0KvC
 manual.  Please give us a mini-review describing the manual's layout
 and assistance in implementing commands, XBIOS stuff, etc.  That
 should help me decide, and I need to upgrade my tools quickly.  Thanks.
 ------------
Category 3,  Topic 8
Message 39        Sat Jan 12, 1991
J.BOCKLAGE [Joe Bocklage]    at 16:23 EST
 
Sorry if this is a much repeated question but I've been out of  the
programming circle for quite a while and have the original GFA 3.0. (I bought
the old version as soon as it came out)  My question is: what company now
takes care of GFA and how can I get an upgrade to the newest version?  Please
EMAIL me as I  get little chance to read this cat very much.  (Just one more
cost of higher education...)

       Thanks for the help,
                        Joe
                    J. Bocklage
 ------------
Category 3,  Topic 8
Message 40        Sat Jan 12, 1991
TOWNS [John@Atari]           at 17:47 EST
 
You know... there should be a law! <sigh>

 ------------
Category 3,  Topic 8
Message 41        Sat Jan 12, 1991
A.FRIESEN                    at 17:42 MST
 
A mini review eh?

Ok kiddies...I ordered the complete GFA Basic 3.5 package (i.e. not just the
upgrade) and it appears that at least one of you wants to know about the
manual supplied.  

Firstly, with the compiler pages and the extra pages for the newer version,
the manual is well over 500 pages.  It is written similar to the 3.0xversion
in that it is organized by different types of commands, and not simply by
alphabeticle order.  The index seems to be very good and page numbers  are
correct (amazing!!).  The commands are explained fairly well, and have many
examples.  Basically I like it better than any other manual for this basic.

It shows a couple quick examples to explain how GEMDOS,BIOS,and XBIOS calls
are made.  From pages 330-344 give LineA routines (which as we all know boys
and girls are now off limits  :-)  pages 345-358 cover VDI commands, and
although I have never gotten into VDI calls much nor have I read this section,
it looks as though it gives enough information for someone with little
experience to handle the loading and usage of different fonts.  It gives a
large amount (for a manual on GFA Basic) of information on AES stuff.  Pages
369-442 cover different AES calls, it gives a brief description of what they
do and gives examples of the GFA syntax used to call them (pretty good eh?). 
It also lists a bunch of GEMDOS commands and what they do along with their
basic GFA syntax. It does the same for BIOS and XBIOS routines.  It also lists
Line-A variables,
 so you can change such things as the cursor blink rate.  It also lists a few
other things such as VT52, scan codes, and a couple of other routines. It also
has tables of all of the fill paterns and linestyles/types.

Hope that answeres some questions.  I won't try to decide whether the  price
of the whole package is worth it to you, but I am pretty happy that I got it.

           Aric Friesen
 ------------
Category 3,  Topic 8
Message 42        Sat Jan 12, 1991
D.A.BRUMLEVE [kidprgs]       at 20:50 CST
 
 I think I'd be happier with that solution too.  Thanks, Aric.
 ------------
Category 3,  Topic 8
Message 43        Sat Jan 12, 1991
D.SEBERG [Ice Berg]          at 23:02 PST
 
RHFACTOR & D.HOLMES

Here! Here!  I second the motion about getting the mono ML text accelerator
routine recoded to be able to use medium resolution also. I've benchmarked the
ML routine against Turbo ST and it was almost as fast In addition, with the ML
routine you can use all the text effects that you have to forfeit when using
the PRINT command to display text.


BOYDR

I have used the VT-52 commands alot in some of my programs but it isn't as
fast as the mono ML text accelerator routine.


     And I thought we were all going to get a great christ(MAS) present and
not have to deal with MAS2743 anymore.  Not only is he a pirate, he can't hold
to his word.  I guess I'll make my New Year's resolution be to completely
ignore any and all MAS2743 messages and UL's.

                   Ta Ta,

                   Dave
 ------------
Category 3,  Topic 8
Message 44        Sun Jan 13, 1991
D.MACE [Dave]                at 02:19 PST
 
 
    GLEE has finally recieved SOME input about GFA BASIC. (No cash, but some
input.) Since GLEE 3.1 is still pretty much vapor-ware, GLEE 3.05 will leap
into being with some added 'merge and forget' definitions for GFA BASIC and a
couple of more demos on using pictures and CYBER or Deluxe Paint animation in
your GFA BASIC programs/games. It will also automatically generate a 'VDI
compatible' palette definition (with the original GFA BASIC palette intact)
for GEM compatibility.

    Included in the package will be functions (and initialization to include
reading the memory form into RAM) to draw the objects to the screen and detect
collisions.

    GLEE provides essentially an unlimited number of sprites of unlimited size
with unlimited complexity in animation. Just be creative; GLEE really does do
all of the hard work.

    draw(ob,x,y,t) will render an object to the screen. If a masking plane was
generated, this procedure will also mask your object so that it is not
transparent or surrounded by a 'black box'. All centering offsets will be
used. draw will perform all necessary clipping to prevent wrap-around and
unwelcome processor exceptions.

    collision(ob1,ob2) will determine whether two objects overlap (collided).

    An example of using 'get' and 'put' to truly emulate sprites.

    An example of using GLEE as a full-image resource editor. Use fish-heads
or whatever as dialog buttons. Use ancient parchment as drop-down menus. Avoid
AES's strife. TAKE TOTAL CONTROL.

    The initialization functions will call a function 'main' which will be a
dummy subroutine by default to page through all of the images on the screen.

    C equivalents for all of the above will also be provided. The C dumper
actually produces two #include files for C; filename.h (just like the old one)
and filename.inc (for modules external to the central graphic module that call
the functions in the graphic module).

    I suppose I COULD add a little step-by-step game writing tutorial of some
kind...

    The source code GLEE generates WILL be modifiable. A simple ASCII file
containing an 'image' of the source and guidlines for conversion to other
languages will be included (thus removing all of that text from my object,
making GLEE even smaller (and more flexible) and leaving more room for your
memory forms). Editing this may be a bit hazardous since it will mess with the
'printf' function call parameters DIRECTLY.
 ------------
Category 3,  Topic 8
Message 45        Sun Jan 13, 1991
RHFACTOR                     at 06:04 EST
 
Hi WayneWatson,    
    The page # for the ML routine for TEXT display is on page 130, of the
'Programming w/ GFA BASIC 3.0',  author: Engels & Gorgens, publ: Michtron.
   It is in the chapter (7.2) FAST TEXT OUTPUT.    They describe the basic
operation and the utilizing of the 'RCALL' command.  The ML code is approx 20
commands.
   I'll pull out my color emulator and see what it does.  They said that a
slight mod was needed for color,  and re-looking at the ML code, it might be
the character width that only needs to be changed.   ML is still foreign to
me, as I'm trying to pick up the basics,  but, the documented ML code actually
makes a bit of sense to me, and actually may not be hard to modify.  Of
course, if one of the pros would do the mod and show us the code, I'd be able
to compare my understanding of it.
   Let me know what you think. RH
 ------------
Category 3,  Topic 8
Message 46        Sun Jan 13, 1991
R.WATSON15 [Wayne Watson]    at 07:07 EST
 
RH,
  Thanks. I found it and will play with it some. I do not understand much
about ML but, I do know some of the very basics.
 ------------
Category 3,  Topic 8
Message 47        Mon Jan 14, 1991
MAS2743 [Pixar]              at 04:28 CST
 
People who started to ignore me (like S.DEBERG said) are making terrible
mistake or misundestanding.  I am SUPPORTING the ST world and still am!   If
you continue to do it, you might make a MAJOR BLOW to lose me.  My pirate
attitude was the thing of the PAST!  Period! Nonsense to some of you with no
understanding whatosever in the back of their mind!  You SHOULD and we all
SHOULD fight  "hard core" pirate who copies MORE THAN 1 software.  That makes
sense!

Sorry, I brought it up here, I wanted to make myself clear or lose further
user.  Remember, programmers means more users!
 ------------
Category 3,  Topic 8
Message 48        Mon Jan 14, 1991
T2.LTD [Rick Taylor]         at 18:29 PST
 
  Good grief.  If it weren't for the fact that this topic were so active
already, I would wonder if Mike was paid to keep the messages rolling in! I
have a torrent of snappy comebacks for his ignorant post, yet one must
logically reason that Mike could care less WHAT is said about him, as long as
something is said.  The sad thing is that *I'm* posting, and I know others
will too.  Ugh.

  Oh well, Mike, your attention getting scheme has paid off again.  Now maybe
you can go down to a crowded movie house and yell "FIRE!", or logon to a Brand
X BBS and start a "Mine is better than yours" debate.

--Rick
 ------------
Category 3,  Topic 8
Message 49        Mon Jan 14, 1991
D.HOLMES14 [David]           at 18:46 PST
 
Pixar,

    If your pirate attitude was the thing of the past, buy a legitimate copy
of GFA BASIC.
    Also, that does NOT make sense.  We should fight ALL pirate who copy more
than one piece of software OR just one.
 ------------
Category 3,  Topic 8
Message 50        Mon Jan 14, 1991
OUTRIDER [Terry May]         at 21:28 PST
 
Mike ("Pixar"),

  So it's okay to pirate...as long as you only do it with one piece of
software, huh?  I guess car theft is okay...as long as you only steal one car!

  Regarding our "need" for you, you cannot even construct a simple sentence; I
hardly think your programs will of any great value.

                                 - Terry -
 ------------
Category 3,  Topic 8
Message 51        Tue Jan 15, 1991
DOUG.W                       at 00:37 EST
 
Mike,
   What's the difference between 1 person pirating 10,000 programs or 10,000
people pirating 1 program?!?

--Doug
 ------------
Category 3,  Topic 8
Message 52        Mon Jan 14, 1991
E.SLICK [Eric]               at 23:38 PST
 
RH,

I guess I didn't stump anyone, I just confused them. I haven't come up with
any solid applications for my idea, but I have this gutt feeling it could be a
neat trick.

Each variable holds a place in memory. Each variable also has an internal
pointer to the first byte of that memory. a%=ARRPTR(logo_pic$) points to
logo_pic$'s descriptor which holds the start address of logo_pic$ and its
length. LPEEK(arrptr(logo_pic$)) will give the starting address of the data
that is contained by logo_pic$. In theory, I should be able to change the
starting address of logo_pic$ with LPOKE to anywhere else in memory I choose.
That might be outside the boundaries of the current program, or in the screen
memory or to protected memory created with INLINE or MALLOC. I should also be
able to change the starting address of Logo_pic_array!(x,y) so that it points
to the same memory as logo_pic$. At this point I could manipulate logo_pic$ by
changing the data in Logo_pic_array!(x,y).

If this is possible and reliable, then I could see this as a way of
manipulating picture data, wordprocessor data and database data in a new and
unique way. Imagine overlaying a byte type array over a word processing
section of memory that is just a long string of bytes but using the array, it
is a series of 80 byte lines (or 60, or 120, or  . . .).

I guess I'm just thinking outloud more than anything. Does this make it
clearer? Anyone have any thougts or has tried this successfully? My one
attempt (long ago) failed but I have kept the idea on the back burner hoping
I'd learn enough to make it work or find someone who has done it successfully.
I remember doing something like this back in my 8 bit days.

I have found one use for the Matrix math in dungeon style adventuring. The
rotating function by itself would have saved me many hours of headaches. I too
would like to see more info on the new features of 3.5 and how to apply them.
Can the 3.5 book be bought separately by registered owners?


Dave, thanks for the tip. I've avoided BITBLT because I nearly killed myself
trying to figure it out originally (remember the 2.0 book's example of BITBLT
had reversed the bitplanes numbers for hi and lo rez? I still shudder at the
agravation it caused me.) vro_copyfm() is a command I never considered but
I'll check it out. It doesn't quite answer my question, though (see above),
which is at this point a bit esoteric. Does GLEE handle 16 color sprites?

Aric, My suplemental pages start at 497 and end with 534 and Amiga does not
appear anywhere.

MAS, did you buy a copy of GFA BASIC?

Eric
 ------------
Category 3,  Topic 8
Message 54        Tue Jan 15, 1991
D.MACE [Dave]                at 04:02 PST
 
Eric,

    The VDI function, vro_copyfm is virtually identical to BITBLT. I use
vro_copyfm since that is what I have a C binding for, and that is what Atari
says is the preferred method for compatibility. Whether BITBLIT is the VDI
call or the 'ALINE' (A00E) call, only a REAL GFA GURU could tell you; I'm just
a C programmer who's supporting GFA BASIC. vrt_copyfm is a really good
function to get a hold of. It takes the masking plane GLEE generates and
scoops out a piece of video RAM in the shape of your object. You simply
logically 'OR' your color picture data into the hole you made with vrt_copyfm,
and you have a perfect, non-transparent, un-bordered image on the screen.

    GLEE does not handle sprites in the LineA (A00C,A00D) manner. Essentially,
that which you draw in your favorite art program (in a 16 color resolution)
will be 16 color when imported into GLEE, 16 colors when you dump the memory
form to disk, and 16 colors when you read it into your program. You are NOT
limited to 16x16 sprites. As I said, objects can be ANY size.

    What you describe involving pointers makes me shudder. To switch an
allocated pointer from one array to another is bad. To address video RAM
directly in this fashion is worse. To access protected RAM with that pointer
is just begging for cherry bombs. It's hard to say whether the internal
structure of GFA BASIC variables will change. For manipulating data constructs
which you created, the use of the built in array handling stuff, like dim
wp(100,80) and accessing it with the normal indexes (wp(row,column)) is
usually faster than calculating this information out under most BASIC
interpreters.

    Directly manipulating color image data using the method you appear to be
thinking of is just plain madness: trust me.

    You're on the right track for manipulating the home-brewed data. C was
created with pointers to arrays in mind; and the newer GFA BASIC may indeed
have something in it to make that reliable. I don't have a clue.

    I'll be uploading some more graphics stuff, and I'll include some HIGHLY
documented code with explanations on what's going on. (Not everyone spends
years in front of a keyboard filling up bit buckets; most people have a life).
 ------------
Category 3,  Topic 8
Message 55        Tue Jan 15, 1991
SANDY.W [RT SysOp]           at 17:56 EST
 
Folks...I understand the provocation, but please lets try to keep this topic
for GFA Basic. Thanks.
 ------------
Category 3,  Topic 8
Message 56        Tue Jan 15, 1991
R.OLSEN5 [Blackhawk]         at 19:22 CST
 
Terry,

You truly have a way with the English language, :^).  Mike can't help being a
pain.  He obviously doesn't see anything wrong with what he's doing.  So just
ignore him and he'll eventually go away (at least that's what he threatened).

Blackhawk
 ------------
Category 3,  Topic 8
Message 57        Tue Jan 15, 1991
R.WATSON15 [Wayne Watson]    at 21:14 EST
 
Eric,
  You could use the SWAP command for the arrays and just get the new array's
location. As far as the string variable goes, I do not know off hand if you
can do a SWAP on them or not.
 ------------
Category 3,  Topic 8
Message 58        Tue Jan 15, 1991
D.SEBERG [Ice Berg]          at 23:07 PST
 
     Howdy,

     I was wondering if anyone can help me with a problem I'm having using the
command EVERY xxx GOSUB xxx.  All my code as well as the examples in the
manual work just fine in the interpreter but after I compile the program it
doesn't want to work.  Is there a compiler option that needs to be set to
enable this command or am I over looking something or what?

     Any insight would be greatly appreciated.

     Dave Seberg
 ------------
Category 3,  Topic 8
Message 59        Wed Jan 16, 1991
D.HOLMES14 [David]           at 20:23 PST
 
Dave Severg,

    Be sure to use the $I+ and $U+ command to turn on interrupt checking. Also
use some $U's after non-code generaing instructions where you still want to
check.
 ------------
Category 3,  Topic 8
Message 60        Wed Jan 16, 1991
D.SEBERG [Ice Berg]          at 22:37 PST
 
David Holmes,

     Thanks for the speedy response.  I'll give it a try.  Is it me, or does
there seem to be an abundance of Dave's and or David's around here?


     Thanks again,
     Dave Seberg
 ------------
Category 3,  Topic 8
Message 61        Thu Jan 17, 1991
ANTIC                        at 11:44 EST
 
Hmmm, does anyone here have experience setting up a dialog box from within a
program?  In other words, without using the  resource construction program?
I've come up with the following code, trying to set up a simple dialog that
inputs a filename.  It works, unless the user hits the down-arrow key.  This
causes the cursor to disappear (like it's trying to move to another field?)
and the program bombs. I must be missing something.  Please take a look at it.
and let me know what I'm screwing up, Thanks!
                                 Jim Burton, START tech editor DIM obj|(48)   
!declare memory for 2 objects DIM tedinfo|(28) !declare memory for 1 TEDINFO 
obj%=V:obj|(0)   !get address of object tedinfo%=V:tedinfo|(0) !get address of
TEDINFO OB_TYPE(obj%,0)=20  !set up root object OB_SPEC(obj%,0)=0
OB_STATE(obj%,0)=0 OB_FLAGS(obj%,0)=0 OB_NEXT(obj%,0)=-1 OB_HEAD(obj%,0)=1
OB_TAIL(obj%,0)=1 OB_W(obj%,0)=400 OB_H(obj%,0)=20 OB_TYPE(obj%,1)=30  !set up
child object OB_SPEC(obj%,1)=tedinfo% OB_STATE(obj%,1)=16 OB_FLAGS(obj%,1)=15
OB_NEXT(obj%,1)=0 OB_HEAD(obj%,1)=-1 OB_TAIL(obj%,1)=-1 OB_W(obj%,1)=400
OB_H(obj%,1)=20 text$="@@@@@@@@@@@"+CHR$(0) !text for TEDINFO tmpl$="Enter
volume name: ________.___"+CHR$(0)  !template for TEDINFO
vald$="PPPPPPPPPPP"+CHR$(0) !validation string for TEDINFO text%=V:text$ !get
adresses for strings tmpl%=V:tmpl$ vald%=V:vald$ {tedinfo%}=text% !set up
TEDINFO {tedinfo%+4}=tmpl% {tedinfo%+8}=vald% INT{tedinfo%+12}=3
INT{tedinfo%+14}=6 INT{tedinfo%+16}=2 INT{tedinfo%+18}=4480 INT{tedinfo%+20}=0
INT{tedinfo%+22}=1 INT{tedinfo%+24}=LEN(text$) INT{tedinfo%+26}=LEN(tmpl$)
~FORM_CENTER(obj%,x&,y&,w&,h&)    !center the dialog
~FORM_DIAL(0,0,0,0,0,x&,y&,w&,h&) !reserve screen section
~OBJC_DRAW(obj%,0,1,0,0,0,0)      !draw the object ~FORM_DO(obj%,1)           
!pass control to GEM ~FORM_DIAL(3,0,0,0,0,x&,y&,w&,h&) !release screen section
PRINT text$                       !print the new string END
 ------------
Category 3,  Topic 8
Message 62        Thu Jan 17, 1991
ANTIC                        at 12:07 EST
 
 Oops, let me try that program listing again. . .

 DIM obj|(48)     !declare memory for 2 objects
 DIM tedinfo|(28) !declare memory for 1 TEDINFO
 obj%=V:obj|(0)   !get address of object
 tedinfo%=V:tedinfo|(0) !get address of TEDINFO
 OB_TYPE(obj%,0)=20  !set up root object
 OB_SPEC(obj%,0)=0
 OB_STATE(obj%,0)=0
 OB_FLAGS(obj%,0)=0
 OB_NEXT(obj%,0)=-1
 OB_HEAD(obj%,0)=1
 OB_TAIL(obj%,0)=1
 OB_W(obj%,0)=400
 OB_H(obj%,0)=20
 OB_TYPE(obj%,1)=30  !set up child object
 OB_SPEC(obj%,1)=tedinfo%
 OB_STATE(obj%,1)=16
 OB_FLAGS(obj%,1)=15
 OB_NEXT(obj%,1)=0
 OB_HEAD(obj%,1)=-1
 OB_TAIL(obj%,1)=-1
 OB_W(obj%,1)=400
 OB_H(obj%,1)=20
 text$="@@@@@@@@@@@"+CHR$(0) !text for TEDINFO
 tmpl$="Enter volume name: ________.___"+CHR$(0)  !template for TEDINFO
 vald$="PPPPPPPPPPP"+CHR$(0) !validation string for TEDINFO
 text%=V:text$ !get adresses for strings
 tmpl%=V:tmpl$
 vald%=V:vald$
 {tedinfo%}=text% !set up TEDINFO
 {tedinfo%+4}=tmpl%
 {tedinfo%+8}=vald%
 INT{tedinfo%+12}=3
 INT{tedinfo%+14}=6
 INT{tedinfo%+16}=2
 INT{tedinfo%+18}=4480
 INT{tedinfo%+20}=0
 INT{tedinfo%+22}=1
 INT{tedinfo%+24}=LEN(text$)
 INT{tedinfo%+26}=LEN(tmpl$)
 ~FORM_CENTER(obj%,x&,y&,w&,h&)    !center the dialog
 ~FORM_DIAL(0,0,0,0,0,x&,y&,w&,h&) !reserve screen section
 ~OBJC_DRAW(obj%,0,1,0,0,0,0)      !draw the object
 ~FORM_DO(obj%,1)                  !pass control to GEM
 ~FORM_DIAL(3,0,0,0,0,x&,y&,w&,h&) !release screen section
 PRINT text$                       !print the new string
 END

 That looks better.
 ------------
Category 3,  Topic 8
Message 64        Thu Jan 17, 1991
D.HOLMES14 [David]           at 18:17 PST
 
    Gee, that's why I hate using GEM dialog boxes.  My DBU could do that a lot
easier.  (Of course, since DBU replaces GEM dialog boxes, it takes up quite a
bit of memory.  15K, I think.  Okay, that's not _too_ much.  It also doesn't
handle everything.  For example, using "________.___" in DBU would not skip
over the period.)
 ------------
Category 3,  Topic 8
Message 65        Fri Jan 18, 1991
BOYDR [BOYDR]                at 02:53 CST
 
I didn't say anything about using vt-52 to speed up text... Not into making as
little sense as THAT..(grin)

If your prog, that you want the speeder-upper for is 80x25 text only, just
copying char-data directly to the screen, rather than trying to replace the
char-drawing routines, is a LOT faster......
 ------------
Category 3,  Topic 8
Message 66        Fri Jan 18, 1991
D.MACE [Dave]                at 22:58 PST
 
Naaahh. It's just you, Dave.

    -Dave
 ------------
Category 3,  Topic 8
Message 67        Sat Jan 19, 1991
J.MEEHAN3 [>> Joe M << ]     at 10:31 EST
 
Aric Friesen,

        I have not read messages for a few days so I just got you request for
information about the "Amiga" GFA 3.5 addendum pages.  I checked mine and I
have NO "Amiga"  I have pages 497 - 534 Chapter 13 "New features in GFA Basic
3.2."  The top of each page list the page number and "GFA Basic 3.5 Addendum."
I hope this helps.

Joe hopes if mike ever has a commercial program 10,000 people make it the one
program they pirate ...

        >> Joe M <<
 ------------
Category 3,  Topic 8
Message 68        Sat Jan 19, 1991
J.MEEHAN3 [>> Joe M << ]     at 15:53 EST
 
     In responce to the question about the Addendum that came with the GFA 3.5
Update:

        Mine does not say anything about Amiga.  It starts with page 497 and ends at
534.  At the top of each page "GFA Basic 3.5 Addendum" appears.  It is titled
"Chapter 13, New features in GFA Basic 3.5"


Joe hopes mike finally gets a commercial program and 10,000 people use it, one
buys it and the rest make it their only pirarit pirated program...

>> Joe M <<
 ------------
Category 3,  Topic 8
Message 69        Sat Jan 19, 1991
J.BOCKLAGE [Joe Bocklage]    at 19:13 EST
 
From a person who BOUGHT the original GFA Basic...would someone please tell me
where to call/write to get an upgrade to the newest GFA Basic 3.? I really
would appreciate and although I will not send you any currency, I will speak
highly of you in future conversations...Thank you in advance for your reply...

          Joe

P.S. I really did ask this before last week and I am a nice guy so be nice and
let me know if you know...
 ------------
Category 3,  Topic 8
Message 70        Sat Jan 19, 1991
R.OLSEN5 [Blackhawk]         at 20:28 CST
 
>> Joe M <<

ROFLOL!  That would definitely be poetic justice!

Blackhawk
 ------------
Category 3,  Topic 8
Message 71        Sun Jan 20, 1991
CCHRISTENSEN [CHARLES]       at 11:35 PST
 
   Trim$.... Anyone know how to get it to work? I type it in exactly as it is
in the manual (page 160, Antic) as:

Trim$(a$)

but the interpreter comes back with a syntax error.
  Incidentally, I just got my 3.5 upgrade and it isn't mentioned there, either
as a bug or an error in the manual.
 ------------
Category 3,  Topic 8
Message 72        Mon Jan 21, 1991
RHFACTOR                     at 04:01 EST
 
CHARLES,    For the TRIM$ syntax,   try using    a$=TRIM$(a$)  .  Make sure
that the original  a$  has some spaces in front and back so that you see that
it does indeed work.
   Hope that helped.     RH
 ------------
Category 3,  Topic 8
Message 73        Mon Jan 21, 1991
F-D-PERCIVAL [Fred P.]       at 07:32 EST
 
Joe: Joppa Computers (800 876-6040) sold me the GFA 3.5 upgrade.
 ------------
Category 3,  Topic 8
Message 74        Sat Jan 26, 1991
J.BOCKLAGE [Joe Bocklage]    at 06:43 EST
 
  Fred, you are a wonderful person.  Thank you.  (To all the others: look at
the wonderful Fred's message...did it look like it was hard to write??)  Yes,
I am kind of bitter because it's like pulling teeth to get info sometimes. 
Anyway, thank you again wonderful Fred...

    Joe

P.S. Yes it is early...
 ------------
Category 3,  Topic 8
Message 75        Sat Jan 26, 1991
A.WRIGHT7 [Andy Wright]      at 07:30 EST
 
John, I guess you have a different version of the GfA Basic 3.0 manual (I have
the version from Antic, (c) August 1988) - on page 497 in my manual is
OBJC_DELETE(tree,del_obj), *not* a reference to thumbnail pictures in GEM
windows!

 ------------
Category 3,  Topic 8
Message 76        Mon Jan 28, 1991
R.STOLCPART [RAS]            at 23:54 CST
 
 
   I have typed that text speedup into GFA 3.5 twice now and it gives me two
bombs. I have gone over the code at least one hundred times and it is the same
as it is in the book. Is it possible that the fact that I have TOS 1.4 be
creating a problem? Once I can get it to work I would also love to see a
version of this same code for medium res.

   I would also like to know if anyone out there gets a "magazine", newsletter
called "GFA USER", and if so are there any US distributors, or is it only
availible from europe????


                                   Thanks,
                                     R.STOLCPART

 ------------
Category 3,  Topic 8
Message 77        Mon Jan 28, 1991
TOPNOTCH [Rick]              at 22:29 PST
 
Whats the easiest way to determine which drive and path a program was run
from?

                                     Rick

 ------------
Category 3,  Topic 8
Message 78        Tue Jan 29, 1991
D.A.BRUMLEVE [kidprgs]       at 00:44 CST
 
 Well, if you only need to know the drive, this is the easiest I know:
 a%=GEMDOS(&H19)
 PRINT a%
 ------------
Category 3,  Topic 8
Message 79        Tue Jan 29, 1991
D.A.BRUMLEVE [kidprgs]       at 00:48 CST
 
 Oh, I guess I should save you some experimentation and tell you how
 to interpret the value of a% which is returned: Drive A=0, Drive B=1,
 etc.
 ------------
Category 3,  Topic 8
Message 80        Tue Jan 29, 1991
J.EIDSVOOG1 [CodeHead]       at 00:12 PST
 
Andy,

Pssst....don't tell Mike, but I was fibbing about the thumbnail pictures on
page 497.  It was a test to see if he had yet become a legitimate owner of
GFA.  Shhhh...he might be listening.

John <who would want pictures of thumbnails, anyway?>

 ------------
Category 3,  Topic 8
Message 81        Tue Jan 29, 1991
ANTIC                        at 11:38 EST
 
OK, I figured out what was wrong with my "build a dialog from scratch" code, I
just had to set the LAST_OB bit on my last object, now it works great. 
(Thanks to a suggestion from someone over in the  developers conference)  The
code is in BUILDIAL.ARC, # 18089. Check it out if you want to see how to build
a dialog box in GFA 3.0 without using the resource construction program.
                      Jim Burton
                      tech editor, START
 ------------
Category 3,  Topic 8
Message 82        Tue Jan 29, 1991
D.HOLMES14 [David]           at 19:42 PST
 
Does anyone here know anything about the "new" version of GFA BASIC? (after
3.5E)  I think it was announced at the Vancouver show.  (It was some Atari
show within the last month.)
 ------------
Category 3,  Topic 8
Message 83        Tue Jan 29, 1991
D.SEBERG [Ice Berg]          at 23:42 PST
 
     TOPNOTCH [Rick],

     I don't know if this is the EASIEST way, but this seems to work for me: 
program_path$=CHR$(GEMDOS(&H19)+65)+":"+DIR$(0)+"\"

     Ya know Rick, it's considered a character builder to do things the HARD
way.


     R.STOLCPART [RAS],

     Hmmmmm..., [RAS], that's awfully close to [MAS].  You wouldn't be
telecomputing under an alias now would you?   Ooooopppsss, I forgot, I'm not
supposed to mention the [MAS] word.

     I've emailed a working version of the text acceleration routine that you
mentioned earlier.  It's modified a bit but it's basically the same thing. 
I've got the "vintage" TOS 1.0 in my set-up so if this routine doesn't work
then it probably is a TOS 1.4 compatability problem.  I toy'd around with the
code a few years back and failed miserably at trying to  convert it into med
rez.  Guess that's why I'm still programming with GFA Basic, huh?  In case you
care TURBO ST + the standard ole PRINT command is faster than this accelerator
routine.

     I haven't heard of "GFA USER" however there is a user group called "GFA
Basic Users Group" aka GBUG that publishes a bi-monthly "Disk-a-zine" GBUG
however is not from Europe, it is from that other foreign place known as
"California".

                       Hope the routine works on your computer,

                       Dave Seberg
 ------------
Category 3,  Topic 8
Message 84        Wed Jan 30, 1991
R.OLSEN5 [Blackhawk]         at 20:16 CST
 
John,

     As I read that last message, I couldn't help but fall out of my chair. 
As a result, I broke my hip and collar bone.  You'll be hearing from my lawyer
:^).

     Only kidding, but I did almost fall out of my chair! ROFLOL!

Blackhawk
 ------------
Category 3,  Topic 8
Message 85        Fri Feb 01, 1991
J.EIDSVOOG1 [CodeHead]       at 11:13 PST
 
Blackhawk,

[Please put cushions on the floor before reading this message.]

You need my new soon-to-be-released LAUGHSAC.PRG.  It's a memory-resident
chuckle-absorber...a guard against ROFLOL, guaranteed to keep you in your
chair, ready for the next joke.  My lawyer advised me to create such a program
and release it as freeware to absolve me from any blame for my messages.  I
also feel that any GEnie reader should work in a joke-proof environment if at
all possible.

LAUGHSAC is in beta-test right now.  I want to make sure to test this one
thoroughly because SADAMFIX.PRG was a complete failure (SADDAMFIX is 9
letters, maybe _that_ was the problem).

John <please apply grins freely to the above message>

 ------------
Category 3,  Topic 8
Message 86        Fri Feb 01, 1991
D.A.BRUMLEVE [kidprgs]       at 18:08 CST
 
 John, Blackie would make an excellent Beta for this promising product.
 As a member of his user group and longtime associate, I can vouch for
 his qualifications in this area. -- D.A.
 ------------
Category 3,  Topic 8
Message 87        Fri Feb 01, 1991
R.OLSEN5 [Blackhawk]         at 18:55 CST
 
John,

::GRIN::

::GRIN::

::GRIN::

LOL!  I haven't had a chuckle this good all week!  Thank you, John!

::wiping tear from my eye::

HAHAHAHAHAHAHAHAHA

Blackhawk
 ------------
Category 3,  Topic 8
Message 88        Fri Feb 01, 1991
R.OLSEN5 [Blackhawk]         at 19:12 CST
 
Dot,

:^PbPbPbPb

hehe, thanks for that outstanding recommendation!  :^)

Blackhawk
 ------------
Category 3,  Topic 8
Message 89        Fri Feb 01, 1991
D.STEWART9 [John Doe]        at 18:18 PST
 
I would like to know if anyone has got the QSORT WITH to work as described on
page 73 of GFA 3.0.

I want to sort several String Arrays at one time keeping all data in its
proper position.

Any help or patches to program will be of great help


Dennis


 ------------
Category 3,  Topic 8
Message 90        Fri Feb 01, 1991
D.HOLMES14 [David]           at 18:59 PST
 
I need help with something.  I am trying to use GEMDOS(75) to load a program
without starting it, then starting it later.  I am unsure what all the
variables should be when trying to start it, and all I end up doing is
crashing my system.  Suggestions?

 ------------
Category 3,  Topic 8
Message 91        Fri Feb 01, 1991
R.HANNA1                     at 19:57 PST
 
 David,
 This is not my code, but it should do what you want, plus leave the 
 program in memory for repeated execution.

 ' This bit of code does the following: (FOR GFA VER 3 ONLY)

 ' - loads an executable file under gemdos, but doesn't execute
 ' - copies the loaded image of the file to a buffer
 ' - executes the program under gemdos
 ' - can then copy file image back to original address and re-execute

 ' It works great, doesn't gobble memory or nutin!

 ' Note: I was worried about how the program would handle its own memory
 ' management after the first execution, since reserved memory, when executed
 ' under gemdos is released on termination.  I thought I would have to do a
 ' malloc or something before re-execing the file image.  Before I did the
 ' mfree I was loosing memory chunks in the interpeter.  Since mfree returns
 ' a Zero it shows that memory IS being released properly through gemdos.
 ' SAF_COMP uses this method of execution reliably, I have found no problems
 ' with this slightly unorthodox but still legal routine.


 ' WARNING!: Do not break out of this routine before doing the mfree in the
 '          interpeter or terrible things happen.
 '**************************************************************************
 '
 '*** Resident Execution Routine, by Bill Miller, _Club_Rat_, node #18 ****
 '
 null$=CHR$(0)
 file$="lharc.prg"+null$     !better null term these for gemdos stuff
 comline$=" vh saf_comp"+null$
 BYTE{V:comline$}=LEN(comline$) !first char contains number of chars passed
 '
 IF GEMDOS(78,L:V:file$,0)<0    !fsfirst
   PRINT "File not found..."
 ELSE
   lof%={GEMDOS(47)+26}    !just get LOF from DTA
   DIM buf(INT(lof%/8)+10) !buffer, (/6 for GFA ver2)
   RESERVE 10000           !release mem to gemdos (whatever you can afford)
   '
   ' ---load file under gemdos, return basepage addr, don't execute---
   base%=GEMDOS(75,3,L:V:file$,L:V:comline$,L:V:null$)
   '
   IF base%<0              !error?
     PRINT "Load Error ";base%
   ELSE
   '   ------------------------
     BMOVE base%,V:buf(0),lof%   !save loaded file
   '   ------------------------
     FOR n%=1 TO 10                                 !do it 10 times for show
       r%=GEMDOS(75,4,L:V:null$,L:base%,L:V:null$)  !execute
       BMOVE V:buf(0),base%,lof%                    !"RELOAD"
       CHAR{base%+128}=comline$          !move command line to image basepage
     NEXT n%
     '
   ENDIF
   PRINT GEMDOS(73,L:base%);"   (0=no error)"       !<=== MFREE (must do!)
   ' * do this before loading another file, unreserving any memory or ending *
 ENDIF
 END

 Hope it helps.
 ralph.
 ------------
Category 3,  Topic 8
Message 92        Fri Feb 01, 1991
TOPNOTCH [Rick]              at 20:11 PST
 
Thanks for the suggestions. I'll use them. I have not programed in GFA for a
while and this is my first serious try at 3.0 so things are coming back to me
slowly.

        On another note, where can I find some info on using the resource
contruction set? The stuff I have assumes a level of knowledge that I don't
have! <g> What I need is "An Idiot's Guide to RCS". Do I have to make separate
resources for medium and high res?


 ------------
Category 3,  Topic 8
Message 93        Sat Feb 02, 1991
SHAFFER                      at 12:04 EST
 
John Doe,
   I ran into the sort problem you're having several releases back.  I never
found a correction for it, but since I do a great deal of sorting of related
arrays I was forced to code a workaround.  I hope this will help you: Assume
you have primary array a$ and related arrays b$, c% and d! When you build a$,
add the index number to each element:
         a$(x&)=a$(x&)+MKI$(x&) Then eventually issue your QSORT or SSORT. Any
time you want to reference an element in a related array, use the saved index
(in this case I am accessing element y&):
         myvariable$=LEFT$(a$(y&),LEN(a$(y&))-2)
         index&=CVI(RIGHT$(a$(y&),2))
         myvariable2$=b$(index&)
         myvariable3%=c%(index&)
         myvariable4!=d%(index!) Normally, you will only have to assign the
index& value one time in some loop, depending on your usage of the arrays, so
this really isn't as bad as it may seem. Good Luck.
           John Shaffer
 ------------
Category 3,  Topic 8
Message 94        Sat Feb 02, 1991
R.WATSON15 [Wayne Watson]    at 13:33 EST
 
RAS,
  I typed in the text speedup program with ver. 3.5 and TOS 1.4 and it ran
fine. Maybe you have an Auto program or ACC interfering.

  Rick,
  Try this. It will give you the Drive and pathname where a file was run from.

  p$=CHR$(GEMDOS(25)+65)+":"+DIR$(0)+"\"

 ------------
Category 3,  Topic 8
Message 95        Sat Feb 02, 1991
D.HOLMES14 [David]           at 11:29 PST
 
Ralph, thanks a LOT.  It looks a little more difficult that I thought it was,
so I probably wouldn't have been able to figure it out myself.  Thanks again.

 ------------
Category 3,  Topic 8
Message 96        Sat Feb 02, 1991
A.WRIGHT7 [Andy Wright]      at 15:18 EST
 
<Sigh> (blushes, kicks self for gullibility...) Trouble is that I still
haven't gotten around to getting GfA 3.5 - who knows but that the manual has
been reformatted!

Cheers, Andy

 ------------
Category 3,  Topic 8
Message 97        Sun Feb 03, 1991
RHFACTOR                     at 00:28 EST
 
Have any of the assembly programmers have any luck converting the TEXT speed-
up routine to include MED REZ ? RHFactor
 ------------
Category 3,  Topic 8
Message 98        Wed Feb 06, 1991
E.DAWLEY1                    at 20:45 CST
 
Greetings GFA'ers,

Can anyone tell me how much memory is required for a QSORT? Is there a formula
I can apply to the size of my array? For instance, I am sorting a long word
array of 5120 items (or 20484 bytes w/option base 0). Any info would be
greatly appreciated. While the Antic manual is fairly good, they seemed to
skim over the sort commands very quickly. For instance what is the difference
between the QSORT and the SSORT specifficaly. I can see the the QSORT is
somewhat faster.

Eric D.
 ------------
Category 3,  Topic 8
Message 99        Wed Feb 06, 1991
DAEDWARDS                    at 21:54 PST
 
Eric: (#98)

 > ...how much memory is required for a QSORT?

Not knowing the details of this precise implementation, I can't say for sure,
but I know how QuickSort works and can thus estimate how much it SHOULD take. 
I will not include the space to store one copy of the data to be sorted, since
the sort space is independent of the size of a data item.

The space requirement for a maximally efficient variation would be 8 bytes *
the binary log of the number of elements, plus a small constant amount
(probably < 1K).  The binary log is the minimum number of BITS necessary to
store the number of items, which with your example (5120 items) is 13 bits. 
Thus, the total storage requirement SHOULD be around 1K.

Some reductions of efficiency would decrease storage requirements (for
example, I was assuming that pointers, containing absolute addresses, were
being stored; if subscripts were being stored instead, storage requirements
would be halved but those subscripts would have to be converted into pointers
at every use); others would increase storage requirements (for example, a
"rule" for people writing QuickSort procedures is "process the smaller segment
first!" because NOT doing so pushes the worst-case memory requirement through
the roof, up to maybe 8 bytes per ELEMENT, or around 40K).

I believe ShellSort has similar memory requirements, but I don't keep track of
it as much.  If I remember correctly, a well-written ShellSort has the
advantage that two records with identical sort keys will keep their relative
order - but I am not certain on that.  (I don't really care - if that is
necessary, I have not provided an appropriate sort key.)

Incidentally, you will NOT find a sort algorithm which is faster than a well-
written QuickSort.  Guaranteed.

 ------------
Category 3,  Topic 8
Message 100       Fri Feb 08, 1991
CBARRON                      at 00:15 EST
 
The worst cases for quicksort are NEARLY sorted data then the sort is O(n*n)
instead of the ussually quoted O(n*log(n)).  Shell sorts do not suffer this
problem.  In general a shell short is slower, but may not be signifigantly
slower for a particular application and does nnt suffer as badly from worst
cases as does quicksort. NEITHER quicksort nor shellsort are stable.  (Two
identical keys may be interchanged in the process).  Use shell sort if your
data is NEARLY SORTED. >> ...NOT find a sort algorithm which is faster...
 Only if you are talking exchange methods and only if you do not have worst
case data for your variation of the pivot selection process. See Knuth,"Art of
Computer Programming" vol. 3 for details.
 ------------
Category 3,  Topic 8
Message 101       Fri Feb 08, 1991
RHFACTOR                     at 01:34 EST
 
Regarding QSORT or SSORT, I've found that QSORT required more available
memory.   I also had the situation in which many of my programs are designed
to handle large amounts of data, like the max available on a 1 meg machine.  I
had to write my own sorting routine (beg, borrowed and steal), so as to avoid
GFA's sorts from crashing my program.
  In that process, I found that a hybrid 'SHELL-METZER' sort routine in GFA
was as fast, and usually MUCH faster than QSORT (if the data was already in
some kind of order).  The 'problem' with QSORT was that it sorted the entire
array, top to bottom, everytime,    while the Shell-Metzer routine only needed
to touch-up that which was out of order, and was therefore significantly
faster.
                                  RHFactor
 ------------
Category 3,  Topic 8
Message 102       Thu Feb 07, 1991
DAEDWARDS                    at 23:37 PST
 
Cbarron:

 > The worst cases for quicksort are NEARLY sorted data, then the sort
 > is O(n*n) instead of the usually quoted O(n*log2(n)).

<note I corrected the latter order>

The worst case really is that bad, but it depends on CONSISTENTLY selecting
the WORST available breakpoint.  Primitive means of selecting the breakpoint
will indeed do so on nearly-sorted (or inverse-sorted) data, but I can fix
that with one line of code in any high-level language; which line will be
executed log2(n) times.  With that change, the worst-case becomes an extremely
improbable event.

The line would look something like:

 break:=(val(low)+val(high)+val((high+low)/2))/3

BTW, I figured this out in high school; in a freshman programming class in
college the instructor was surprised NOT by the trick, but by the fact that I
knew and used it.  (One of his test samples for our sort programs, WAS already
sorted.  It was supposed to point out this weakness.)
 ------------
Category 3,  Topic 8
Message 103       Fri Feb 08, 1991
SHAFFER                      at 16:47 EST
 
If you are really interested in sort performance in GFA, you must consider (as
with most other statement types) whether you will be running the interpretive
or compiled version.  I did some testing of QSORT and SSORT on arrays of 5000
randomly ordered strings.  The interpreter ran QSORT MUCH faster, while SSORT
ran slightly faster in the compiled version. It doesn't take much effort to
run accurate tests of your own:
    x%=TIMER
    SSORT... (or whatever)
    x1%=timer
    PRINT x1%-x%    (or divide by 200 to get time in seconds)
       John
 ------------
Category 3,  Topic 8
Message 104       Fri Feb 08, 1991
E.DAWLEY1                    at 22:40 CST
 
Thanks all for the QSORT/SSORT info, its all very intriguing. I must go buy a
book on sorting theories.

I tried to 'test' how much memory was being used by claiming all but a small
portion of free memory. The interpreter didnt like that and froze up.

By and By, I am very impressed with GFA.

Eric D.
 ------------
Category 3,  Topic 8
Message 105       Sat Feb 09, 1991
CBARRON                      at 01:13 EST
 
DAEWARDS you can fix the worst case to be something not likely if and only if
you have the source to the sorting procedure QSORT is hard-wired into GFA 3.0
and this is one reason to use SSORT instead as its worst cases are different. 
Quicksort seems to enter the programming 'rags' frequently in one form or
another.  Thanks for the tip on a selection of a break point of the sort.

 ------------
Category 3,  Topic 8
Message 106       Sat Feb 09, 1991
SANDY.W [RT SysOp]           at 11:20 EST
 
Does anyone know the current route for GFA Basic upgrades?
 ------------
Category 3,  Topic 8
Message 107       Sat Feb 09, 1991
R.STOLCPART [RAS]            at 16:58 CST
 
 

RHFACTOR:

        Is there any chance that you would, give us your hybrid 'SHELL-METZER'
sort so we could use it as well??????

                                        Thanks,
                                        R.STOLCPART

 ------------
Category 3,  Topic 8
Message 108       Sat Feb 09, 1991
H.JANOYAN3 [JANOYAN]         at 17:28 PST
 
Can anyone tell me if the long-time promised GFA United States office is now
open?  If so, does anyone know how to get in contact with them?

Excuse me if this has already been answered...I haven't read this base for a
while.


-Hagop Janoyan

 ------------
Category 3,  Topic 8
Message 109       Sat Feb 09, 1991
H.JANOYAN3 [JANOYAN]         at 18:45 PST
 
 I went back and re-read all the new messages, and have a few replies:

TO ALL: -------

   I've been using that FAST-TEXT routine in both hi-rez and med-res for a
long time!  Someone else modified it to work in med-rez a long time ago (I
have no knowledge of machine language).  It works _very_ nicely.  He also
modified it to display different colored text out of the same image.  I've
been using this on HagTerm for as long as I can remember, and it seems to be
very compatible with all systems.

   However, I have yet to succeed in using the routine with any of the large-
screen monitors or with any new screen resoloutions.  Also, since it can only
display the images that it has captured, it can't display different attributes
of the same character unless you capture each combination of attributes that
you will be using!

   I have uploaded the FAST TEXT med-rez routine on the files section.  I
would post it up here, but it contains an INLINE statement.  You can do a
search for FAST TEXT to get it.

   Hope this works for you guys!




Hi RICK! --------

   No, you don't have to make seperate resources for med and hi res, unless
you will be using bit-mapped images.  One great thing about GEM resources is
that it can adapt to _any_ resoloution automatically, including future
resoloutions that haven't been created yet!

   I had a hard time understanding the RCS also, especially with that skimpy
documentation they provide.  However, best way to learn it is to look at
sample source code.  Also, you might want to refer to some of the GFA manuals
and reference books.  "Programming w/ GFA 3.0" has a real nice section on
creating and using resources, and so does the "GFA Basic Book," though that
concentrates on more technical aspects. Plus, the GFA 3.0 manual has some
examples of using resources in your programs.

   If all else fails, ask questions!  That's worked for me a lot of times...


-Hagop Janoyan

 ------------
Category 3,  Topic 8
Message 110       Sat Feb 09, 1991
D.RINGO1                     at 23:51 EST
 
Does anyone know where the light pen port on an STe is? I have just gotten the
GFA 3.5 upgrade and it has the commands to read the light pen po port but
doesn't say where it is. It is supposedly in the new side ports but it is not
on the pinouts and all but one pin is used for either the joysticks or
paddles.

Thanks! Duane
 ------------
Category 3,  Topic 8
Message 111       Sun Feb 10, 1991
DAEDWARDS                    at 19:45 PST
 
Cbarron:

 >...if and only if you have the source to the sorting procedure.

Right.  That's a big piece of the reason why I said a "well-written"
QuickSort, and why I disclaimed knowledge of how this particular
implementation works.
 ------------
Category 3,  Topic 8
Message 112       Mon Feb 11, 1991
RHFACTOR                     at 01:33 EST
 
Hi Gang!   I'll dig up the source for the SHELL-METZER sort.  I'll check it
for comments to describe the important parts.  
   It's probably short enough to list it here, but until I get the chance to
work with Aladin,  it's probably best if I just upload it to the file section.

   Also,  thanks for uploading the ML routine for TEXT in MED/HI rez.  I'll be
looking forward to downloading it.

                                                RHFactor
 ------------
Category 3,  Topic 8
Message 113       Mon Feb 11, 1991
R.STOLCPART [RAS]            at 22:46 CST
 
  RHFACTOR:
        That source would be great, you did say it was faster than either of
the sorts built into GFA 3.5 right??
        For my purposes the QSORT and the SSORT are both to slow...

        I have a question about random files. Is there any way to delete an
item from a random file, short of reading the entire file, taking out the
element to be gotten rid of, and then resaving it???
        Seem like a really dumb question to me, but I thought I would ask.....

                                                R.Stolcpart




 ------------
Category 3,  Topic 8
Message 114       Tue Feb 12, 1991
RHFACTOR                     at 01:42 EST
 
Hi RAS,   Regarding the speed of the SHELL-METZER sort compared to the  QSORT
or the SSORT, the sorting situation has something to do with that.
  Briefly, If your data is somewhat sorted to begin with, or your adding new
info into a previously sorted array,   the Shell-Metzer sort will be faster
than the Q or S sort.   The main reason being that both Q/S sort perform their
operation regardless of the order that the data is in, where as the shell-
metzer takes a more efficient approach.  ALSO, Q and S sorts require EXTRA
memory (usually at least 1 array DIM to the size of the total data , plus some
extra overhead). The Shell-Metzer routine uses a few single, temporary
variables to perform it's operation.  That was the main, preliminary reason I
wrote my own routine, due to the heavy demands I had for efficient memory use
in my database design.
    I be in the recording studio for the next week or so, so it might be a bit
later before I can get the code sent up.  I'll try to remember to do it, but
you might want to knudge me on it.
                                                  RHFactor
 ------------
Category 3,  Topic 8
Message 115       Tue Feb 12, 1991
G.E.M. [Gary]                at 19:00 PST
 
Actually, the QSORT only requires a very few extra variables, and is classed
as an in-place sorting algorithm because it does not require that an extra
array be dimensioned.  You can get a very good explanation and excellent
examples in the book "Algorithms" by Robert Sedgewick (IBSN 0-201-06673-4).

                           L8r Daze
                           <<Gary>>

 ------------
Category 3,  Topic 8
Message 116       Tue Feb 12, 1991
DAEDWARDS                    at 22:13 PST
 
I also have a question about random-access files, and it's a rather simple
one:

Is there a record 0?

As for deleting a record: No, there isn't.  However, if record deletion is
likely, then it makes sense to establish some sort of marking scheme for
deleted records - and if re-using deleted records is a good idea, then
establishing a "chain" of them starting at record 0 (or maybe record 1, see
previous paragraph...) would be a good idea as well.
 ------------
Category 3,  Topic 8
Message 117       Sat Feb 16, 1991
R.NOAK                       at 13:46 EST
 
VIRUS WARNING!!!!

I received my GBUG Diskzine today and, much to my dismay, find that it is
infected with a KEY VIRUS. VKILLER recognizes it, but says that the disk is
unreadable, so it won't kill it. I still do not know if my hard drive has
gotten infected (do Key viruses infect HDs?). If you have received the latest
GBUG diskzine, watch out.


Randy


 ------------
Category 3,  Topic 8
Message 118       Sat Feb 16, 1991
D.A.BRUMLEVE [kidprgs]       at 15:33 CST
 
 Randy, as far as I know, there are no ST viruses yet that will attach
 themselves to hard disks, but such animals do exist in the IBM/Mac worlds.

 I think you can relax if you turn off your computer before inserting
 another disk; that way you won't infect your entire floppy collection.
 ------------
Category 3,  Topic 8
Message 119       Sat Feb 16, 1991
R.WATSON15 [Wayne Watson]    at 18:00 EST
 
Sandy.W,
  At the moment, GFA Basic upgrades and such are being handled through
dealers.

 ------------
Category 3,  Topic 8
Message 120       Sat Feb 16, 1991
C.BORGES [C.BORGES]          at 16:32 PST
 
  Is there a way to keep accessories from blanking the screen if they are
called from within a GFA Basic 3.0 program?  Sorry if this has already been
answered, but I can't seem to find it if it has.

 ------------
Category 3,  Topic 8
Message 121       Sat Feb 16, 1991
R.NOAK                       at 19:52 EST
 
Whew! Thanks Dorothy. I didn't boot up with the GBUG disk, but I was still
worried.

If anyone knows how to get in touch with R.A.Smith, please let him know about
the virus. I shudder to think of all the disks that may have been
inadvertently affected.

Randy


 ------------
Category 3,  Topic 8
Message 122       Sun Feb 17, 1991
O.STEELE                     at 21:34 PST
 
Randy or anyone else:

Do you have the address to GBUG?  Thanks.
 ------------
Category 3,  Topic 8
Message 123       Sun Feb 17, 1991
ESMITH [Ed Smith]            at 21:55 PST
 
Folks,
 what is a quick and easy command to determine the resolution mode which the
machine is running in?
 ie how can one tell if one is running in ST low, ST med, ST high, and the TT
modes? -------esmith
 ------------
Category 3,  Topic 8
Message 124       Mon Feb 18, 1991
RHFACTOR                     at 01:12 EST
 
GBUG address:
                        RASCOM
                     22128 Newkirk Ave.
                     Carson, Calf.,  90745
 ------------
Category 3,  Topic 8
Message 125       Mon Feb 18, 1991
D.A.BRUMLEVE [kidprgs]       at 00:37 CST
 
 Well, I dunno how to do it for the TT, and I suppose that what I do
 is now taboo, but I get the resolution very simply by:
    rez%=XBIOS(4)
 If the resolution is low, rez% comes back 0.  If it's high resolution,
 rez% is 2.  I'll bet you can guess what it returns if it's medium.
 ------------
Category 3,  Topic 8
Message 126       Mon Feb 18, 1991
E.SLICK [Eric]               at 21:41 PST
 
 I had something wierd happen to my menu bar while in the Interpreter of
version 3.5. While programming for a while (several breaks and checks on
variables) I CONTinued the program and suddenly my menu bar and the sub-
headings were garbled. When I chose an item, the right thing happened and when
I stopped and re-ran the program, the problem cleared up. Anyone else ever
have this problem? Could it be a -- gulp -- bug?

I have these accessories loaded (in this order)

Atari's latest mouse accelerator Pinhead UIS III

Eric
 ------------
Category 3,  Topic 8
Message 127       Tue Feb 19, 1991
ANTIC                        at 13:09 EST
 
No, I don't think it's a bug, neccesarily. GEM is very picky about the way
thigs are set up, as it does not do any error checking to make sure it's
receiving valid information.  Make sure you have empty strings at the end of
each menu ("") if you're using the MENU n$ command.  Also, if you're dealing
with GEM directly, try attaching a null to the end of any strings you feed to
GEM, such as: title$=title$+CHR$(0) I won't gaurantee that this will solve
anythi, but try it and see. GEM has the nasty habit of not crashing
immediately, often it takes a while for an error to blow up.  I have had
problems when programming with certain TSR programs (unfortunately, I can't
remember which ones) so when I program, I do it on a clean machine.  The
compiled version usually runs fine in a TSR enviroment, it seems that it's
just the interpreter that has problems.

regarding the question about detectin the resolution on the TT, XBIOS (4)
returns the following: ST low -- 0 ST med -- 1 ST hi  -- 2 TT low -- 7 (huh?)
TT med -- 4 TT hi  -- I dunno, don't have the big monitor. The result for TT
low is strange.  This being the case, the safest way to check the screen
resolution is to do this: screen_handle%=V_OPNVWK(1) max_x_coord%=INTOUT(0)
max_y_coord%=INTOUT(1) this calls the open virtual workstation VDI function,
which returns a lot of valuable information in the INTOUT array.  In keeping
with Atari's notice that we should avoid the line-A variables, this is the
preffered way of checking the parameters of the machine your program is
running on.  Other info returned with this call: number of colors available,
current fill pattern etc. See the manual for more info.  (Don't get this call
confused with V_OPNWK, which will crash your system if GDOS isn't installed) 
Don't forget to call V_CLSVWK() when the program ends.
 ------------
Category 3,  Topic 8
Message 128       Tue Feb 19, 1991
R.WILSON36                   at 19:50 EST
 
ANTIC, if you have a TT and GFA BASIC 3.5E can you find out if the compiler
shell menu screws up the drop downs in the menu. It does on the high res
screen ( no I don't own one just have access) unfortunately I do not have
access to a color TT.

 ------------
Category 3,  Topic 8
Message 129       Wed Feb 20, 1991
ANTIC                        at 11:40 EST
 
Yes, the compiler shell menu does screw up in the TT resolutions. I tested a
program I recently compiled that uses GFA's MENU  commands, and it too screws
up in the TT screens.  This is obviosly a GFA problem, perhaps the AES menu
commands will work fine (MENU_BAR, MENU_ICHECK, etc.) I will check and see. 
If this is the case, say byebye to GFA's MENU commands!
 ------------
Category 3,  Topic 8
Message 130       Thu Feb 21, 1991
ANTIC                        at 14:22 EST
 
I've just finished a program that coverts a resource file into GFA 3.0 source
code.  The file is GFAMAKER.ARC, I'm uploading it to the library today.  This
is a program- in-progress (it doesn't support icons or bit images yet) so
please check it out and send me any bug reports/ suggestions.
                         Thanks, Jim Burton, START
 ------------
Category 3,  Topic 8
Message 131       Fri Feb 22, 1991
ANTIC                        at 17:25 EST
 
Never mind, don't download GFAMAKER.ARC, download GFAMAK06.ARC instead.  Its
an updated version that produces much smaller code.
                                 Jim
 ------------
Category 3,  Topic 8
Message 132       Fri Feb 22, 1991
E.DAWLEY1                    at 19:04 CST
 
Sounds like a real good idea, I am going to download it now. I had thought of
writing such a program some time ago, however I never got around to it. Does
the program allocate memory for the resource file automatically? For instance
if the file is over 16k, you currently must release some free memory.

Eric
 ------------
Category 3,  Topic 8
Message 133       Sat Feb 23, 1991
R.STOLCPART [RAS]            at 11:08 CST
 
 
        I have another "dumb" question, but I do not have all that much
experience with resource files or the resource construction program.

        What do you use to create bit-image or icon files for merging into rsc
files????????


HELP?!?!?

                                                RAS

 ------------
Category 3,  Topic 8
Message 134       Sat Feb 23, 1991
ANTIC                        at 14:12 EST
 
E.DAWLEY, the code sets up the resource in some arrays declared by BASIC RAS,
good question.  Does anyone know where to find a good ICON/ BITIMAGE editor
that works with the RCS?
 ------------
Category 3,  Topic 8
Message 135       Sat Feb 23, 1991
E.DAWLEY1                    at 16:15 CST
 
I have written a Icon creator that creates .ICN files for use with the RCS. I
will ARC the files and upload it today. Its a GEM based drawing porgram with a
few editing features. The olny limitation is the size of the Icon or bitimage,
for color its 32X32 pixels and for monochrome the max is 64x64.

ANTIC, I tested out the resource converter and at first I had problems but
finnaly got it to work. Initially I was branching to the set up procedure
first thing and then to my initial varible set up routines. Evidently the
address of the resource strings were changing after I set up  all of my
program strings and arrays. When I called the resource set up routine just
before I went into my main event loop, everything worked out great. I have
noticed this problem before with GEM strings, such as window titles. The only
way I could figure out to keep the variable's address from changing was to use
the ABSOLUTE command.

If you are interested in feedback concerning improvements, I have a short
list. 1) allow the user to choose the output file name. The reason I ask for
this is that the 'Names' file created by the RCS already has the extention
.LST and I would prefer not to overwrite this file.

2) allow the user to convert more than one file at a time, maybe a menu bar
could be added and the program could be continued until quit is selected.

Last of all I have a queastion, the ANTIC manual for 3.0 doesnt mention an OB
TYPE 20, I believe this is a G_BOX and the OB_SPECis the Boxinfo, is this
correct?

By the way, superb program!

Eric
 ------------
Category 3,  Topic 8
Message 136       Sat Feb 23, 1991
C.F.JOHNSON [CodeHead]       at 15:25 PST
 
  DEGAS Elite has an option to save blocks in .ICN format, which can be loaded
directly into the RCS.  Very handy; that's what I use for all icons and bit
blocks.

- Charles

 ------------
Category 3,  Topic 8
Message 137       Mon Feb 25, 1991
ANTIC                        at 11:28 EST
 
GRMEYER,  Thanks for the input about the GFAMAKER, I will incorporate your
suggestions into the next version.  Yes, OB_TYPE 20 is a G_BOX,' and the
OB_SPEC is a boxinfo. (who knows why that isn't in the manual)

               Jim Burton
 ------------
Category 3,  Topic 8
Message 138       Mon Feb 25, 1991
E.DAWLEY1                    at 18:22 CST
 
ANTIC,  the converter is still unstable if new strings are defined later in
the program. The address change problem may only be a result of the
interpreter and may not be present in compiled versions, but it makes testing
under the interpreter dangerous. The Computes ST series says that GEM strings
(such as window titles) should be put in the 'static data area'. What and
where this is, I have no idea. Additionally, there needs to be a resolution
factor adjusment in the object procedure (you must be working on a monochrome
monitor).

File 18389 is now ready for downloading. This is the .ICN file creator
(creates ICONS or BITBLKS for the resource construction set).

Eric
 ------------
Category 3,  Topic 8
Message 139       Tue Feb 26, 1991
CBARRON                      at 02:50 EST
 
Place all really static data in an inline area as this is all that I could
figure that was really static and not subject to garbage collection.  Is there
another way to gaurantee that garbage collection will not move a varible or
variables?

 ------------
Category 3,  Topic 8
Message 140       Tue Feb 26, 1991
ANTIC                        at 11:20 EST
 
Thanks for the input about GFAMAKER.  It looks like I'll have to change the
object procedure so that it "converts" any inputed strings into an array of
bytes, hopefully that will defeat GFA's tendency to move strings.  I want to
avoid using INLINE because that would defeat my wish to make the source code
easy to  change.  I'm working on code to include bit images and icons, it
looks like they will have to be represented as DATA statements. If that proves
to be too unwieldy, I guess I'll have to put all string and image data into an
INLINE.  
                                 Thanks,
                               Jim Burton
 ------------
Category 3,  Topic 8
Message 141       Tue Feb 26, 1991
E.DAWLEY1                    at 18:16 CST
 
I think using an array for the strings and DATA statements for the Icons would
work out very well.

The ability to change the resource's attributes is an excellent feature. Its
such a bummer to reoload and save a .RSC file just to fix a misspelling or
forgetting to make an object 'touch exit'.

 ------------
Category 3,  Topic 8
Message 142       Tue Feb 26, 1991
K.KRESSIN [Ken]              at 21:01 CST
 
 My experience is that GFA will also garbage collect arrays (makes
 sense since you can ERASE them). The only safe place I've found
 is MALLOC (though I often use arrays in development cause you
 always have to MFREE each time you run the program).

  ~ Ken ~
 ------------
Category 3,  Topic 8
Message 143       Tue Feb 26, 1991
D.HOLMES14 [David]           at 20:06 PST
 
Does anyone know about the MS-DOS versions of GFA BASIC?  Is there any new
news about them?  (I don't know why I'm asking; I doubt I could affor them.) 
Does GFA have a North American office?

 ------------
Category 3,  Topic 8
Message 144       Wed Feb 27, 1991
R.STOLCPART [RAS]            at 00:19 CST
 
  E.DAWLEY1:

        The Icon drawing program is a lot of help to me, I will use it from
now on.  The only thing I noticed is in the programs own loading of the RSC
file it does not check what directory the program was run from. The RSC file
must be on the root level of the dir. Otherwise the program is great.

Charles:

        Thanks for the info, but I haven't bought Degas Elite yet.  I have
never had the need for a drawing program. You should try the icon editor that
has been uploaded, it does work quite well.

RHFACTOR:

        Just wanted to knudge you about the shell sort routine....

JANOYAN:

        Just wondering what happened with that fast text routine, I was never
able to find it in the file listing.


RAS..



 ------------
Category 3,  Topic 8
Message 145       Wed Feb 27, 1991
ANTIC                        at 11:28 EST
 
Ken, You're right that MALLOC seem to be the only safe area to put strings and
arrays if you don't want em to be moved.  The next version of GFAMAKER will
use RESERVE and MALLOC to set up some proteced memory, then place strings and
image data there. (in fact, anyone who's using the current version should be
able to re-write the code that's produced to do that, if you don't wanna
wait.)

On another subject, this GFA topic is one of the busiest around! keep up the
interest and the input.
                  Jim Burton
 ------------
Category 3,  Topic 8
Message 146       Wed Feb 27, 1991
C.F.JOHNSON [CodeHead]       at 14:45 PST
 
  Why not just use an INLINE statement?  INLINE creates a static block of
memory inside the program, to which you assign a label. Easy.  On the other
hand, if you use MALLOC, GFA Basic makes you go through contortions with
FRE(0) and RESERVE.

- Charles F. Johnson
  Wednesday, February 27, 1991  9:03:18 am

 ------------
Category 3,  Topic 8
Message 147       Thu Feb 28, 1991
G.THERREAULT [HACKER]        at 00:18 EST
 
Help!!

     I'm working on my new version of Aladdin's Magic Browser file #18060
written in GFA Basic 3.07, which is a utility that converts the Aladdin .dat
files into a usable format by word processors or databases. It also includes
search and print routines along with the possibility of creating subfiles of a
main .dat file.

     The new version I'm  writing, enables sorting on 1 or multiple fields,
indexing on all fields with the use of one index field at a time. These
routines greatly accelerate the searching of the data in the file.

     The problem I have is that when I display a Dialog box and the user
initiates a task like searching or printing, I would like to enable the user
to cancel the task in progress if a problem occurred without having to reboot
the system. An example of this is if you selected the Fast Forward button to
search the whole file but actually wanted to select the Play Forward button
which searches to the next record you would not be able to exit until the Fast
Forward routine had completed searching the file.

     If anyone knows how to do this PLEASEEEEEEEE HELPPPPPPPP ME!

P.S. I Would appreciate if anyone has used ALADDIN'S MAGIC BROWSER to forward
any suggestions on improving the program.

Gilles Therreault

E-MAIL (G.THERREAULT)
 ------------
Category 3,  Topic 8
Message 148       Wed Feb 27, 1991
D.A.BRUMLEVE [kidprgs]       at 23:53 CST
 
Gilles, maybe I'm missing something because my answer is very simple, but...
It'll slow your routine down slightly, but in the loop, put a command to exit
if there's user input, like maybe pressing any key.

Am I missing something or what?  I've never had trouble stopping something
unless the program has given control over to the machine, as in the HARDCOPY
command.
 ------------
Category 3,  Topic 8
Message 149       Thu Feb 28, 1991
RHFACTOR                     at 02:16 EST
 
Thanks for the knudge...... I've uploaded my SHELL-METZNER SORT sub- routine
to the library (Lib 3).  It's an ARC'd  .LST file with a descrip- tion of the
routine.  I tried to comment on the major sections.  If I can help with any
questions or suggestion, just ask.   
   Also, should someone improve this code, please send up the code for the
rest of us to study.    Thanks!
                                          RHFactor
 ------------
Category 3,  Topic 8
Message 150       Thu Feb 28, 1991
G.THERREAULT [HACKER]        at 02:38 EST
 
D.A.brumleve, You see the problem I have is when displaying a dialog box I use
several exit objects. You can select any of these objects as you please but
once you select the actual exit object that starts the routine it stays in the
routine until complete. I know there is a way of exiting if the user presses a
key from the keyboard but I don't Know what it is. An example of this is
Memfile 3.0 by Gribnif Software. It has an option that scans memory and when
you select the exit object and it starts to scan you can hold down both shift
keys and it will stop scanning. I'm sure it's simple but just don't know how
to do it.

Thanks for your reply

Gilles
 ------------
Category 3,  Topic 8
Message 151       Thu Feb 28, 1991
ANTIC                        at 11:27 EST
 
Charles Johnson, I wanted to avoid using the INLINE because I wanted  the
programmer to be able to make little changes to the resource without having to
go back to the RSC program, changing the file,  saving it, run BASIC, then
reload the resource back into the INLINE. However, I think you've hit upon
something here.  If I set up an INLINE large enough to hold the strings and
image data, then move the  strings and data to it, GFA should leave it alone.
                              Jim
 ------------
Category 3,  Topic 8
Message 152       Thu Feb 28, 1991
ANTIC                        at 11:32 EST
 
Well, on second thought, I don't like that idea.  Declaring memory with an
INLINE means that those bytes would be part of the program file.  Seems silly
to waste disk space, so I'll use MALLOC instead.
 ------------
Category 3,  Topic 8
Message 153       Thu Feb 28, 1991
ANTIC                        at 11:56 EST
 
Gilles, chances are your routines use a loop.  To break out of the loop, put
something like the following code in your loop: DO '  D D   ' Do some stuff
break$=INKEY$ IF break$="Q" OR break$="q"
   abort&=TRUE ENDIF LOOP UNTIL con%=done% OR abort&=TRUE

The con%=done% line above could be the normal means of ending the loop.  The
abort&=TRUE breaks the loop if the user presses the Q key (I check for upper
and lower case) Breaing out of a FOR NEXT loop is a little less clear, here's
one way to do it:

FOR k%=1 TO 1000
   break$=INKEY$
   IF break$="Q" OR break$="q"
      abort&=TRUE
   ENDIF
   IF abort&=FALSE
      ' Do some stuff
   ENDIF NEXT k%

As long as the user doesn't press the Q key, abort& stays FALSE and whatever
code you have where it says Do some stuff will be  executed.  If the Q key is
pressed, abort& becomes TRUE and the loop finishes without executing the Do
some stuff code.
                           Jim
 ------------
Category 3,  Topic 8
Message 154       Thu Feb 28, 1991
D.A.BRUMLEVE [kidprgs]       at 17:47 CST
 
Gilles, now I see what I was missing...Unfortunately, I don't know how to
help.  Jim's routine is essentially what I was suggesting.  There was a STart
program, XREF, that does this kind of interrupt in the middle of sorting, but
I don't have the source code.  It might have been on the disk though.  This
was published in Oct 1989 I think.
 ------------
Category 3,  Topic 8
Message 155       Thu Feb 28, 1991
E.SLICK [Eric]               at 22:48 PST
 
Gilles,
 Are you using GFA's built in sort routine?

 Besides using inkey$, you might try an interupt (which version of GFA do you
have?), such as

AFTER 50 GOSUB CHECK_KEYBOARD 'GFA's sort command here

PROCEDURE check_keyboard break$=inkey$
 etc
 etc
 etc AFTER 50 GOSUB CHECK_KEYBOARD RETURN


Eric S
 ------------
Category 3,  Topic 8
Message 156       Sat Mar 02, 1991
J.H.CARROLL [Jon]            at 14:24 EST
 
Here's something that I hope somebody can help me with.

A year ago I uploaded AGGENDA to the Libraries-- a GFA program that performed
as a Scheduler/Phone Diary and more and could import/export  data to the
Portfolio.  

Anyways, I'd now like to update the program-- but I've since lost the  source
code here (hard disk crash) and the version on GEnie is PSAVED-- does anybody
know how to unprotect GFA files?  I know there's something in the libraries
that lets me compile a PSAVED file, but I  need to edit/update the source as
well.... Any suggestions?

Jon
 ------------
Category 3,  Topic 8
Message 157       Sat Mar 02, 1991
ANTIC                        at 22:46 EST
 
Hmmm, I think I'll write a one-line program, save it is a normal file and
again as a PSAVE file, then load them into a sector editor and see what the
difference is.  I'm not sure if we should let such info out into the public,
though, since that would defeat the purpose of the PSAVE command.  Some people
without compilers might still be using it for protection.
                            Jim
 ------------
Category 3,  Topic 8
Message 158       Sat Mar 02, 1991
H.PARSONS4 [MEGABYTE]        at 22:08 CST
 
Jon,

  Which version of GFA did you use? I ask because the 2.x series was fairly
simple to "unpsave."

  Herb

 ------------
Category 3,  Topic 8
Message 159       Sun Mar 03, 1991
R.WATSON15 [Wayne Watson]    at 20:31 EST
 
From what I have been able to figure out with a sector editor is that GFA
Basic 3.x saves a PSAVED file without the variables listed. If anyone figures
out how to unpsave a 3.x file, send the info to me in E-mail. I have a 145K
file that I wrote that I lost the source code to during a HD backup/restore. I
would be in your debt for a long time. Thanks.

 ------------
Category 3,  Topic 8
Message 160       Mon Mar 04, 1991
RHFACTOR                     at 02:36 EST
 
Regarding the upload of the FAST TEXT, which was modified to work in MED rez, 
would their be ANY possibility to obtain the source code of the ML that was
used in the INLINE command ??
    That would be really helpful !!        Thanks,         RHFactor
 ------------
Category 3,  Topic 8
Message 161       Mon Mar 04, 1991
R.STOLCPART [RAS]            at 18:40 CST
 
 Is there a quick way to make a copy of a file. Like a copy command, that I
don't know about. I have read the manual at least a dozen times looking for
it, the only thing I found is a r%=gemdos(69,h%), but I don't know how to use
it, or if it will even do what I want it to..       Help?.?


        {RAS}


 ------------
Category 3,  Topic 8
Message 162       Mon Mar 04, 1991
R.STOLCPART [RAS]            at 18:46 CST
 
RHFACTOR:

  The sort seems to work quite well, but I have not figured out how I am going
to work it into my program. I have not really look toooooo deeply into your
source yet.


 ------------
Category 3,  Topic 8
Message 163       Mon Mar 04, 1991
D.HOLMES14 [David]           at 19:15 PST
 
This may seem like a strange request, but since I do not have "Programming
w/GFA BASIC 3.0," can someone tell me how to use FAST TEXT in high rez now? 
(or just upload it here?)

While quite a bit slower than screen accelerators, I would like to add the
FAST TEXT option to my file viewer for those poor souls living without Quick
ST or Turbo ST.
 ------------
Category 3,  Topic 8
Message 164       Mon Mar 04, 1991
H.JANOYAN3 [JANOYAN]         at 19:24 PST
 
 

RHFACTOR,

Like I stated, I did not create the med rez version, so I wouldn't know much
about the original code.  However, can't you disassemble it?

-Hagop Janoyan (Glad it's finally working!  I think this was my third upload
of that file...I had tried uploading using plain GFA and ARC'ing it, but both
times it couldn't be loaded into GFA Basic.  I guess LZH'ing it did the
trick.)



RAS,

There is no command I know of in GFA basic to copy files.  However, use this
short program listed in the GFA Basic Book:

PROCEDURE filecopy(old$,new$)
  OPEN "I",#1,old$
  OPEN "O",#2,new$
  L%=LOF(#1)
  WHILE L%>32000
    PRINT #2,INPUT$(32000,#1);
    SUB L%,32000
  WEND
  PRINT #2,INPUT$(L%,#1);
  CLOSE #1
  CLOSE #2 RETURN
 ------------
Category 3,  Topic 8
Message 165       Tue Mar 05, 1991
K.SIMANTOB                   at 00:23 PST
 
Is there a way to redim an array in GFA Basic without losing any of the info
already stored in the array? Also, I'm trying to write a capture for a chat
terminal I am working on. That is bascially where my question about the array
comes in. I want to take advantage of all of the memory that is available for
my capture. But all I can do is DIM the array taking into consideration the
max length of each line in the capture (for me, it will be 80 characters). But
usually a line coming in from the modem is less than 80 characters. Any ideas?
 ------------
Category 3,  Topic 8
Message 166       Wed Mar 06, 1991
DAEDWARDS                    at 01:38 PST
 
K.Simantob:

1>  DIM a second array to the desired size 2>  SWAP the two arrays 3>  copy
the contents 4>  ERASE the second array

It's been a long time since I did this... I put it into a subroutine, and
passed the array to be re-dimensioned as a parameter, but don't remember why.
 ------------
Category 3,  Topic 8
Message 167       Wed Mar 06, 1991
K.SIMANTOB                   at 19:12 PST
 
I know how to do that... only problem is wouldn't you need twice the memory
for the switch alone?
 ------------
Category 3,  Topic 8
Message 168       Fri Mar 08, 1991
DAEDWARDS                    at 01:12 PST
 
K.Simantob:

Depends on the array.

If you are moving numerics around, you need enough memory for the ENTIRE
source and the ENTIRE destination.

If you are moving strings, you can copy and clear one string at a time, then
erase the source of the copy to free up overhead space.

If you have a hard drive, there may be other options that don't eat so much
memory.  They'll just eat disk space instead, and be slower.  (Of course, if
the array is too big and you don't have enough memory to do the necessary
swapping, there's no such thing as "slower".)

 ------------
Category 3,  Topic 8
Message 169       Sun Mar 10, 1991
E.DAWLEY1                    at 10:15 CST
 
K.Simantob:

If I understand what you are trying to do (ie. capture lines of text, giving
each line a seperate index in your array), you mighttry this:

Dimention your array to the largest number of lines to be stored, then each
time you read in a character build the string, when you have reached 80
charachters or a CHR$(13), increment the index. DIM capture$(5000) index%=1
length%=0 line$="" REPEAT
  a$=INKEY$
  IF a$=CHR$(13)
    capture$(index%)=line$
    INC index%
    line$=""
  ELSE
    line$=line$+a$
  ENDIF UNTIL index%=5000 OR (whatever...)

Obviously there is more than one way to skin a cat... This will use the least
amount of memory.

To whoever asked about copying files...  If you are trying to copy a file from
outside the Desktop, try something like this: (Lets say the file length is
5120 bytes) RESERVE -5120 address%=MALLOC(5120) BLOAD "a:\test.prg",address%
BSAVE "c:\test.prg",address%,5120 ~MFREE(address%) RESERVE 5120

Of course if there is insufficient memory, address% will equal 0 or some
negative number, so check it first before continuing. Again, there is more
than one way to skin a cat.

Eric.
 ------------
Category 3,  Topic 8
Message 170       Sun Mar 10, 1991
A.FRIESEN                    at 19:18 MST
 
Someone was asking a while back about exiting a loop? What about the EXIT IF
command?

DO
 TEMP$=INKEY$
 EXIT IF TEMP$<>"" LOOP actually the following would probably work also, I am
just not used to NOT setting inkey$ equal to something:

DO
 EXIT IF INKEY$<>"" LOOP

Both of these loops will exit if any key is pressed (aside from shift,alt,
cntl)

I think (but am not sure) that EXIT IF works with all types of loops.

 Hope this helps...Aric Friesen
 ------------
Category 3,  Topic 8
Message 171       Mon Mar 11, 1991
E.DAWLEY1                    at 19:56 CST
 
I think Gilles's problem was more complicated, although he never explained
exactly what kind of function he was trying to exit from. The EXIT IF function
is very handy and does work from within any type of loop.

Does anyone know of any documented bugs the the GFA complier v3.01? I just
spent a frustrating evening trying to compile a new program I wrote. The first
problem was that it didnt like my word sized array. As soon as I tried to fill
it with something I got an 'Illegal instruction in machine code' error. (Of
course it worked fine under the interpreter.) Well, I changed it to a long
word array and it worked fine. (I think this was the first program I have
written that used a word sized array.)

After that, one of the several boolean arrays was doing just the opposite of
what it should have been doing. After reading the manual, I see that GFA uses
a single bit for each index of a boolean array. I suppose (but it doesnt say)
that if the bit is set then it is TRUE. I can imagine the difficulty for the
68000 to find the right byte and then the right bit for a specific index (my
array had 3 dimentions). Its a nice idea, and really conserves memory, but the
compiler code is not correct. It seems to find the appropriate byte and bit
ok, but then the code to test it is backwards from what it should be. I ended
up changing all the boolean arrays to byte arrays and using a 1 to indicate
TRUE and 0 to indicate FALSE. After that, it worked like a charm.

Boolean arrays are out for me...

Eric
 ------------
Category 3,  Topic 8
Message 172       Mon Mar 11, 1991
H.SARBER [RANGERST]          at 21:52 EST
 
     Download file BTLOAD2.ARC.  It loads a ramdisk on bootup. Source code is
provided and it shows another way to copy a file from one drive to another.

Harry

 ------------
Category 3,  Topic 8
Message 174       Tue Mar 12, 1991
R.WILSON36                   at 18:13 EST
 
E.DAWLEY1 There are more bugs in ver 3.01 of the compiler than one can count.
The first version of the compiler which was remotely stable was 3.03D. Even it
has a few bugs. Unfortunately ANTIC never sold 3.03D. I got mine from Germany.
The new compiler with  version 3.5 seems reasonably stable.

 ------------
Category 3,  Topic 8
Message 175       Tue Mar 12, 1991
E.DAWLEY1                    at 19:46 CST
 
I guess I'll have to drive to the *one* store here in Houston that might have
the 3.5 upgrades by now.

Megabyte are you the Houston store?

Eric
 ------------
Category 3,  Topic 8
Message 176       Wed Mar 13, 1991
G.T.GRAY [Gary Gray]         at 18:31 CST
 
Eric,

We have stocked the GFA 3.5 upgrade kit for along ime now. Since the end of
summer at least.

Thenks Gary Gray Megabyte Plus
 ------------
Category 3,  Topic 8
Message 177       Wed Mar 13, 1991
E.DAWLEY1                    at 19:34 CST
 
Fantastic! I remember you telling me they were comming, but Ive been so busy.

Ill be by soon... Eric
 ------------
Category 3,  Topic 8
Message 178       Wed Mar 13, 1991
J.H.CARROLL [Jon]            at 22:41 EST
 
  Eric - I own GFA Basic 3.02 and the compiler has been so frustrating, I
learned C and bought Laser C with Debugger.  I had bought the GFA interpreter
over two years ago from Michtron and didn't get the compiler until recently so
I had a stack of stuff I'd written that I wanted to compile.

My compiler problems seem to stem from addressing problems and the like.  I've
got a terminal program that uses GDOS fonts and lots of RSC stuff-- When you
exit from the program... Bomb City.  This and other frustrations make the
compiler iffy.... However some things compile beautifully and compare very
well to C compilers in terms of speed in any cases.

Jon

 ------------
Category 3,  Topic 8
Message 180       Wed Mar 13, 1991
MIKE-FULTON [Mike @ Atari]   at 23:41 EST
 
Duane, in response to your question about the Light Pen port, I think you're
asking how to physically connect a light pen?  That is, what wires of the
light pen go to which wires of the port on the STE, right?  I'll check it out
and get back to you.

For anyone who may be interested in how to determine what resolution you in,
determining the number of pixels onscreen by using Getrez() (or XBIOS(4) in
GFA) has *always* been the incorrect way of doing it. This is not something
that has recently been made taboo.

Getrez() returns the video shifter mode, not the resolution.  While a certain
video shifter mode may usually mean a certain resolution and number of colors,
this is not necessarily the case.

The proper way to determine resolution is to open a VDI workstation and look
at the values returned in the first two members of the INTOUT array.

Mike Fulton


 ------------
Category 3,  Topic 8
Message 181       Thu Mar 14, 1991
A.FRIESEN                    at 00:37 MST
 
Hi all.  I just uploaded a compiled version of a Check Book program that I
wrote.  As long as the SysOps approve it, it should soon be in the library as
file# 18634.  Check it out and tell me what you think.  Personally I think it
is very good!  ;-)

  Aric Friesen
 ------------
