home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d571 / gwin.lha / Gwin / Changes < prev    next >
Text File  |  1991-12-22  |  12KB  |  192 lines

  1. This is a change history of GWIN
  2.  
  3. Release 1.0  - Initial Version
  4.  
  5. Release 1.1  - Maintenance Version
  6.  
  7.    1.  New Aztec Manx 5.0 compiler/linker is incompatible with earlier
  8.    versions of object code.  Everything must be recompiled including
  9.    my GWIN object files gwin.ff.o, gwin.ffCD.o, and gwin.fiCD.o.  You
  10.    need these new release 5.0 versions if you are using the 5.0 compiler
  11.    because the old object files will not link with object files created
  12.    using the new version of the compiler.   Many thanks to Adam Benjamin
  13.    of Michigan for bringing this to my attention.  I had not realized that
  14.    there was a problem until he called.  I had been dragging my feet with
  15.    respect to getting the new compiler since I always try to avoid early
  16.    versions of software - Particularly compilers and operating systems.
  17.    So now I have version 5.0b.  (Or is it c?  My disks came with the "b"
  18.    scratched out and a "c" printed by hand.)  I recompiled GWIN and that
  19.    is the primary reason for redistributing the software.
  20.  
  21.    2.  Due to a book-keeping error on my part, the LATTICE-related
  22.    object codes included on fish disk 322 (gwinl.ff.o, gwinl.ffCD.o,
  23.    and gwinl.fiCD.o) were not the versions I intended to include.
  24.    They represent a slightly earlier version.  Glen Fullmer did a lot
  25.    of work creating the Lattice versions of the GWIN object files and
  26.    I blew it by not including the correct and most current version.
  27.    My apologies to Glen and to all you other Lattice users.  The version
  28.    on 322 was functional unless you tried to use the global variables
  29.    in gwin.user.h.  At least one of my examples used the globals.
  30.    The examples compiled and linked correctly for Glen back in Feb 89.
  31.    He checked them out again for me today. Everything works if you use
  32.    the versions on this disk.  Thanks to Stephen L. Ferrell of Pittsburgh,
  33.    Pa. for bringing this problem to my attention.
  34.  
  35.    3.  Modified the uprint and uprnt1 text handling routines to handle
  36.    complement modes so that you can handle text like rubber-band lines
  37.    are handled.  (Essentially sets the XOR mode within the INTUITEXT
  38.    structure if uset("comp") is in effect.)
  39.  
  40.    4.  Modified umove routine to handle the uset("ncli") operation more
  41.    logically.  The rubberbandbox demo had a problem when the border was
  42.    included.  The problem was that the umove routine was in effect applying
  43.    clipping when it should not have been.  This has been corrected.
  44.  
  45.  
  46.  
  47. Release 2.0 - Amiga shared library version.
  48.  
  49.    1.  GWIN was converted from a collection of object routines that you
  50.    linked in with your program to an AMIGA shared library.  AMIGA libraries
  51.    reside in sys:libs and are automatically loaded into system space when
  52.    they are opened by a call to OpenLibrary.  (In GWIN, the USTART macro
  53.    performs the OpenLibrary calls for GWIN-required libraries so you
  54.    don't have to worry about it.  The macro UEND closes the libraries so
  55.    you also don't have to worry about THAT.)  The advantages of GWIN being
  56.    an AMIGA shared library are these:
  57.  
  58.       a.  Your object code modules are much smaller.  GWIN is not linked in
  59.       with your program.
  60.  
  61.       b.  Since GWIN does not have to link in with your program, we no
  62.       longer have to worry about vendor changes to the object module
  63.       formats.  We kept having a problem with incompatibility of new object
  64.       module formats produced by new versions of the MANX and LATTICE
  65.       compilers.  The new object modules would not link with the old
  66.       object modules distributed on the Fred Fish disks.  It was
  67.       impossible to keep up.  An AMIGA shared library does not care which
  68.       version of whose compiler you are using. This means that LATTICE and
  69.       MANX users should now be on an equal footing with respect to GWIN.
  70.       GWIN should now work for everyone.  My good friend and associate,
  71.       Glen Fullmer checked out the LATTICE interface.  He provided the
  72.       LATTICE-specific makefile in the examples directory that shows how
  73.       compiling and linking works using the LATTICE compiler.  Note that
  74.       there is also a LATTICE specific include file in that directory whose
  75.       name should be changed if you are a LATTICE user.  See gwin.doc for
  76.       documentation regarding that.  Dave Kinser also helped check out the
  77.       LATTICE interface.  Thanks Dave and Glen.
  78.  
  79.    The disadvantages of GWIN being an AMIGA shared library are these:
  80.  
  81.       a.  Creating AMIGA shared libraries is no fun.  They are difficult to
  82.       create - or they were.  The answer for me was in the "Premiere issue"
  83.       (April/May 1991) of "The AmigaWorld Tech Journal" in the article by
  84.       Jim Fiore entitled "Shared Libraries for the Lazy" which discusses
  85.       LibTool.  LibTool came on the disk with the magazine.  Still took a
  86.       fair amount of effort but cut the time required by a factor of 10 in
  87.       my opinion.
  88.  
  89.       b.  The complexity level of the GWIN routine calls was increased
  90.       slightly.  I don't like this because the whole point of GWIN is to
  91.       make things easier to use.  I have tried to minimize the complexity:
  92.       the USTART and UEND macros hide the opening and closing of AMIGA
  93.       libraries since I feel that you shouldn't have to worry about them.
  94.       You do have to worry about USING the macros however.  If you use
  95.       capital letters for USTART and UEND, you will get the macros.  I also
  96.       had to include a structure pointer called "G" as the first parameter
  97.       of each GWIN procedure call.  "G" points to a structure whose storage
  98.       is created with a malloc within the GWIN routines.  This structure
  99.       contains all of the GWIN graphics system values such as current
  100.       color, uset and upset settings, etc.  In the gwin.user.h include
  101.       file, I have given you access to a subset of the actual structure.
  102.       (The actual structure is larger.)  The G structure is necessary
  103.       because shared libraries are "reentrant" code, i.e., you can have
  104.       several GWIN applications running simultaneously, each sharing the
  105.       library. For this to occur, ALL of the volatile global program data
  106.       and parameters for each user program must be kept separate.  G
  107.       contains this data.  Please look at the examples in the examples
  108.       directory to see how things should be used.
  109.  
  110.       c.  Since you no longer link GWIN in with your code, my ABORT routine
  111.       is no longer active in your program.  This means that YOU will have
  112.       to handle your own user-aborts.  Be sure to call UEND if you do your
  113.       own abort handling after USTART has been issued.
  114.  
  115.       d.  I cannot, from within an AMIGA library, fully process the
  116.       WINDOWCLOSE event.  The ugrin routines now return a zero if no
  117.       WINDOWCLOSE event occurred and a "4" if a WINDOWCLOSE event did
  118.       occur.  If you see the "4", it means you should issue UEND and assume
  119.       that the graphics session was ended by the user.  (I can't do it
  120.       because GWIN is no longer linked in with your program.  I have no
  121.       direct control over your program, i.e., I cannot make your program
  122.       exit.)
  123.  
  124.  
  125.    2.  Color registers 15 and 31 are no longer restored to their default
  126.    color of red when the uset(G,"ncom") command is executed. The active
  127.    register (15 or 31 depending on the number of colors allowed by the
  128.    screen type you are using) is now left with the value of whatever color
  129.    was last drawn using complement mode (see uset(G,"comp") command).  This
  130.    allows rubberband and xor text to continue to be the color you selected
  131.    and were drawing in prior to execution of a uset(G,"ncom") command.
  132.    Before this change, the uset(G,"ncom") command would snap items being
  133.    drawn using complement mode back to red.
  134.  
  135.    3.  Jerome Santini of France wrote to say that he was unhappy that we
  136.    did not consider the PAL users in Europe.  He said that if I would look
  137.    on page 19 of my "Amiga ROM Kernal Manual:  Libraries and Devices", that
  138.    I would see a discussion of PAL and, in particular, the variable
  139.    GfxBase->NormalDisplayRows.  I looked on page 19 of my copy (Addison
  140.    Wesley, 1986, and found nothing about PAL.  Apparently the manuals
  141.    printed in Europe contain different information than the manuals printed
  142.    in the USA.  I checked all my manuals for references to PAL and found no
  143.    references except in the "Amiga System Programmer's Guide", Data Becker,
  144.    1988, and found a tiny bit of information about PAL on page 78 but
  145.    nothing about GfxBase->NormalDisplayRows.  I have to conclude that
  146.    the text of manuals sold in europe and the text of manuals sold in the
  147.    USA are different.  I drove to my local dealer and he had no new manuals
  148.    and no further information regarding PAL.  So to our European friends I
  149.    would like to say that we would have accomodated you in the first
  150.    release of GWIN but manuals printed in this country are apparently
  151.    different from manuals printed in Europe.  It is difficult to design to
  152.    accomodate the PAL standard if our manuals do not mention it.  Anyway,
  153.    I think I have managed to include PAL support in this release.  See the
  154.    GWIN documentation under "ustart" to see how I attempted to do this.  I
  155.    have been unable to test it however so please write if there is a
  156.    problem.  If there is a problem, you might consider sending me a page or
  157.    two of your manual describing GfxBase->NormalDisplayRows because I still
  158.    do not know precisely what value it contains on PAL machines or what the
  159.    maximum normal high-res limits are on PAL machines (512 or 625???)...
  160.    Thank you Jerome Santini for writing to mention this problem.
  161.  
  162.    4.  Uend now, as one of its last tasks, attempts to allocate 10
  163.    Megabytes of memory.  It cannot of course but the system doesn't know
  164.    that up front and releases all sorts of memory that it has tied up but is
  165.    not using.  In particular the memory associated with disk fonts.  I
  166.    found it annoying that memory checks after running a GWIN application
  167.    seemed to indicate that all memory was not restored to its original
  168.    state.  Now it is.  This is essentially a cosmetic change but I couldn't
  169.    stand it like it was.  I also free the 10 megabyte block IF the system
  170.    WAS somehow able to allocate it so there are no loose ends...
  171.  
  172.    5.  In order to have compatibility with the LATTICE compiler, I had to
  173.    make ugrinl, ugrinc, ugrina, and uigrina a little more complicated.
  174.    The LATTICE compiler uses index register a4 as the base address register
  175.    of procedures.  When I use a function pointer to call back one of your
  176.    user-selected menu functions, the ugrinl, ugrinc, ugrina, or uigrina
  177.    pragma sequence has not completed so the index registers have not been
  178.    restored.  If I use register a4 while in the pragma, chaos results when
  179.    the user-selected menu procedure attempts to execute.  I restricted
  180.    usage of the registers to a0 through a3 and passed the event type and
  181.    the keystroke via a structure.  See the documentation regarding ugrinc
  182.    to see how to handle this.  All examples have been updated to reflect
  183.    this change.  Glen Fullmer discovered the incompatibility and made it
  184.    possible for me to isolate the source of the problem and develop the
  185.    work-around.  Thanks again Glen.
  186.  
  187.    6.  The current compiler versions that the library was tested with were
  188.    MANX AZTEC C Version 5.0e and SAS/Lattice C Version 5.10b.  You probably
  189.    need to have a compiler that is at least as recent as these versions to
  190.    be sure that the pragma support is available.
  191.  
  192.