
                                A.I.B.B.
                    Amiga Intuition Based Benchmarks
                       Program Release Version 6.1
                    Copyright 1991-1993 LaMonte Koop

                       Version Change Information


    Version series' 4.x-6.x of AIBB is a complete re-write from the original
code used for the previous versions 1-3.  Being that this is the case, it
is quite important that the documentation be read thoroughly in order
to completely understand all aspects of the program performance.  The
changes to this version series are detailed below.

Changes to version 6.1:

    --     Some modifications were made to the way AIBB does MMU table
        translations (such as looking up the ROM image location) on 68040
        machines to correct a few problems and wrong results which occured
        with this.

    --     General code clean up and reduction has resulted in an
        approximate 10K of size reduction in AIBB's executable.

    --     A few more boards were added to AIBB's internal expansion board
        database.

Changes to version 6.0:

     --    AIBB has had its graphics-based tests completely re-written.
        The user is now allowed to select the screen mode to be used by
        AIBB when performing such tests via the "Set Gfx Test Mode" option
        under the "Test Options" menu.  This is done via the ASL.LIBRARY
        screenmode requester, and thus this option is not available unless
        the host system is using V38 of ASL or greater (V38 is found with
        the AmigaOS 2.1 enhancement).
           The default screen mode AIBB uses for its graphics tests is
        a high-resolution ( 640x200 ) 3 bitplane ( 8 color ) setup.  When
        a new screen mode is selected for the tests, AIBB will check this
        against the modes used in the comparison systems and will warn the
        user if the new mode differs in equivalence, as it is necessary to
        be aware of this so that the comparisons can then be weighted
        accordingly. ( eg, if you run a test in a low-res 1 bitplane mode,
        it will almost assuredly perform faster than in a high-res 4
        bitplane mode, so this has to be taken into account when looking at
        the results ).
           This new option was provided for allowing the comparison of
        different graphics modes on the systems used.  It can also be used
        to examine the performance of some of the new graphics boards being
        introduced for the Amiga. ( for example, one can see at which mode
        the board ends up being slower for a given test than the default
        mode used for the comparison systems ).
           AIBB does save the screen mode data within its load module, so
        that this information is available when a new module is loaded.
        Again, when a module is loaded, checks are made against the screen
        modes in use by the other loaded systems, and the host system, to
        warn the user if differing graphics modes were used.
           In addition to these changes, another item under the "Test
        Options" menu allows the user to browse through the graphics modes
        used by the comparison systems, as well as that in use by the host
        system.
           Please note: All of these changes have meant that AIBB's load
        module and preferences file format have changed.

     --    The ability to change AIBB's primary screen colors has been
        added via the use of a color requester.  Color selections are
        saved to AIBB's preferences file when the "Save Configuration"
        menu item is selected in AIBB's "General" menu area.  This was
        added upon complaints from monochrome monitor users who were
        having trouble seeing parts of AIBB's display because two or
        more colors would map to the same grey shades.

     --    AIBB's help mode requesters have been removed to make room for
        the changes to its graphics tests.  They were giving problems due
        to a compiler bug (bad code generation) in any case, and the entire
        system needs to be re-worked before being implemented again
        (space allowing).  This also freed up a good deal of space for
        other functions within AIBB, and unless it becomes a real problem
        this may not be re-implemented...at least not in the form it has
        taken thus far.

     --    AIBB will no longer show 2 gadgets on a requester when only one
        option is available.  This has been changed as it was reported to
        be confusing to some users when two gadgets would appear, though
        they had the same text/action associated with them.

     --    Under 1.3 or earlier of AmigaOS, AIBB would sometimes call up
        an Alert indicating a lack of CHIP memory for a particular
        operation when in fact there was no problem.  This was due to a bug
        in the AmigaOS Request() function under 1.3 and below.  This
        function would not always give the proper return value, and would
        make AIBB believe an error occured when it in fact hadn't.  A
        workaround is in effect now for 1.3 and below within AIBB, by
        looking at window->FirstRequest instead of relying on the return
        value from Request() to indicate success.

     --    AIBB's TGTest has been changed again to one which carries its
        measure in terms of characters/second output to the screen.  The
        previous use of variously sized windows to hold the output has been
        removed due to various testing which showed it to have a minimal
        value in the test itself.

     --    A new entry in AIBB's memory node information reporting has
        been added.  AIBB will now report the a relative "Bus latency
        factor" for all FAST RAM nodes.  This figure represents the latency
        between a memory cycle, and when another cycle can be performed.
        Lower ratings indicate better response times for a particular
        memory node, with the unattainable goal of 0.0 indicating that no
        latency occured at all.  Basically, this gives information as to
        the relative efficiency of various memory nodes.  (eg, one with a
        rating of 5.0 would be more efficient, and hence faster than one
        with a rating of 7.0.).  Note that this can only be used as a
        valid comparison across systems if other factors such as processor
        type, clockspeed, and bus width are also taken into account.  This
        figure is most useful in comparing two different memory regions on
        similar systems, such as two memory boards on a 68030 based system
        against each other for relative efficiency.

     --    Two new tests have been added to AIBB's lineup.  The first,
        "EllipseTest" is a simple test of one of the Amiga's more complex
        drawing functions, DrawEllipse().  A series of elliptical shapes
        is drawn, with the function timed for speed comparisons.  The
        second test, known as LineTest, tests the Amiga's speed at various
        line drawing jobs.  This test reports its results in terms of
        Lines Drawn per Second.

     --    File requester capability has been added to the Load Module
        Preferences requester as per recommendation by various people.
        The gadgets marked "FR" next to each string input gadget will
        bring up a file requester for that particular entry.  This
        alleviates the need to type in path/file names for selecting
        default modules to load up when AIBB is initialized.

     --   A bug with AIBB's low memory situation handling has been fixed.
        Previously, it was possible for AIBB to crash in a low memory
        situation when it couldn't open a screen or window.  This has been
        corrected in this version and AIBB should now properly handle these
        events.

     --    Changes have been made to AIBB's FPU clock rate evaluation.
        Under previous versions, low results could be reported for the FPU
        clock rate when the host system was running a high-clocked FPU
        (~50 MHz) with a moderate to low-clocked CPU (~16 MHz).  This
        showed up on the A1200 operating with external expansion boards
        equipped with high-speed FPUs.  The changes made here attempt to
        smooth out this difference and give more accurate results for FPU
        clock rate on these systems.

    __     AIBB now uses gadgets rather than menu items for CPU cache
        control.  The gadgets are located on AIBB's main screen in the
        cache status indicator area.

    --     Moving from AIBB's main screen to its system information
        display is now accomplished by clicking on the appropriate
        gadget near the comparison information area corresponding to the
        machine information is desired on.  Previously, AIBB used a
        menu arrangement under the "Systems" menu to move to this
        display, and this was complained about as being "clumsy" to
        operate.  The new gadgets are located under the "System Comparison
        Information" section of the main screen, and are set up as the
        row headers for that area.

    --     AIBB now encorporates gadgets rather than menu items for
        changing code types used in tests and evaluations.  Previously,
        menu items under the menu "Test Options" were used to change the
        test code types for both the host system and comparison machines.
        This turned out to be more work for the user than necessary, and
        hence the gadget approach was adopted.  The gadgets are located
        next to the evaluation results on the main screen, and allow for
        cycling through the various CPU/FPU code types available for a
        given system.

    --      A bug with AIBB's MMU table parsing mechanism has been fixed.
        AIBB normally will parse any active MMU tables in order to find the
        physical location of various system objects.  However, a bug was
        discovered in how AIBB parses tables utilizing long (64 bit) table
        descriptors.  This was originally thought to be fixed some time
        ago, but recently it became obvious this was still in error.  This
        is now fixed and should properly find physical memory locations
        under these MMU setups as well as others.

    --     AIBB was inadvertantly making a 2.0+ only OS call within its
        procedures to close a log file being written to.  This could lead to
        a failure and crash on systems runing 1.3 or earlier versions of
        AmigaOS.  This has been corrected as of this version.


Changes to version 5.5

    --     The default A3000 internal comparison machine is one using
        AmigaOS 2.x now instead of 3.0 as in the previous 5.0 release
        of AIBB.  This is to reflect the fact that AmigaOS 3.0 is not
        openly available for the A500/A2000/A3000 series machines
        presently.

    --     AIBB no longer checks for, nor has problems with Enforcer
        running on the system.   Therefore, the option to avoid testing
        for it has been removed from the CLI/Icon Tooltypes checking.
        Note that although AIBB coexists fine with Enforcer now, such
        should not really be used when testing as the MMU table lookups
        which Enforcer causes can affect peformance to some degree.

    --     A bug with AIBB's cache selection menu items has been corrected.
        In version 5.0, AIBB would not disallow selection of the data
        cache enable/disable menu item on a stock 68000 based machine.
        Selection of this could cause a system failure on a 68000 system
        (which has no caches), and has been fixed in this version.

    --     Several test result indicators have changed.  The Writepixel
        test no longer gives data in terms of execution time, but rather
        a rating of pixels output per second by the routine.  The MemTest
        routine gives its results in megabytes of data transferred per
        second.  This change was made to make the results more context
        readable.

    --     The TGTest test has been updated.  The new version reflects
        effects occuring in a windowed environment for more accurate
        representation of the Amiga under such circumstances.  As such,
        AIBB's load file format has -CHANGED- again.  Unfortunately, test
        updates do require this action, though I am actively seeking
        a remedy for these inconvieniences.

    --     A new test called "EmuTest" has been added in the area of
        "special: tests for AIBB.  This test is basically a small
        CPU emulator core running an instruction set simulation
        (basically a small program).  The Amiga seems to have gained
        a bit of a precedence in CPU emulation, and I put together this
        test for the purpose of showing various systems' ability to
        perform such emulation efficiently and speedily.  The simulated
        CPU is a standard 68000, though the results from this can be
        taken as indicative of other CPU emulators as the basic
        principle is the same.  All instructions and internal operations
        are completely software emulated.  The results for this test are
        given in Simulated MegaHertz, basically a rating showing how
        fast the emulation is towards an equivalent hardware-based
        CPU.

    --     A change was made in how AIBB stores its test timing data.
        Previously, this data was kept (both internally and in the
        load files) in longword (32 bit) integer format.  However, due
        to some internal changes, this data is now kept in IEEE double
        precision floating-point format (64 bits).  This was done to
        help avoid rounding errors and make internal calculations simpler.

    --     By request, standard keyboard shortcuts have been added to
        selected portions of AIBB's menus.

    --     Fixed a problem with Parse_MMU_Table().  This function was
        not correctly parsing long-format (double longword) sized
        descriptor tables.  This has been corrected and these tables
        and the addresses AIBB attempts to correlate when looking at
        functioning MMU setups should be checked correctly.  The bug
        did not show up under any currently used MMU setups on the
        Amiga, but could possibly have shown up in the future.  This
        correction assures AIBB will be able to locate physical memory
        addresses from logical ones when reporting the location of
        certain items given in its display.

    --     Added some checks in AIBB's System Information Display to
        prevent unnecessary redrawing of parts of the display.  This
        enhancement should speed things up a bit for slower machines.

    --     AIBB's 68030/68EC030 detection code has been revised again.
        The new method used should provide a somewhat safer determination
        method than the previous way.
           The old method relied to write protecting a page in a
        translation table setup, then writing to the page and checking for
        a bus error situation.  Unfortunatly, as it turns out some strange
        interactions can occur in the way this was set up if the
        translation table was located in a 16-bit ported RAM resource.
           The method used now is much safer.  Instead of write protecting
        a page, nothing is done whatsoever except for a straight-through
        early-termination one-level setup.  Once the MMU is activated,
        a single read is done from a given page, and then the "U" bit
        in the corresponding page descriptor is examined.  With an active,
        functional MMU, this bit should be set upon the first access to
        a given descriptor, and will be set in the test case above.  On
        68EC030 based machines, which have no functional MMU, this bit will
        be unaffected.
           An added side-effect of these changes is that AIBB no longer
        needs as large of a translation table as it did with the earlier
        method.  A 16 byte table (first level only - upper 2 bits of the
        logical address are used for indexing) is all that is required now,
        as opposed to the 16K byte table used before.  As a result, AIBB
        will almost always be able to allocate memory for a table and will
        not be forced to abort the test due to memory constraints.

    --     Fixed a minor memory loss situation.  AIBB was losing about
        40 bytes of memory per incarnation due to a port not being deleted
        upon exit.  This has been corrected as of this revision.

    --     A bug with the internal function Scale_Graph() has been
        corrected.  In previous versions, certain odd input circumstances
        could create a worst-case scenario in this function resulting in a
        scaling to infinity.  The result of this was usually a garbled
        screen full of strange display artifacts, and assorted memory
        trashing as AIBB overwrote its RastPort boundaries.  Additional
        checks have been added to avoid this problem.

    --     A bug with AIBB's code type selection for comparison systems
        has been fixed.  Earlier, if a module was using 68040 Math code
        and was then replaced by loading a new module incapable of
        using FPU math at all, 68040 Math code would remain selected.
        Normally, AIBB should have stepped the selected type down to
        Standard Math Code.  This bug could have caused problems ranging
        from strange results to system failures under these circumstances.

    --     An addition was made to AIBB's System Information Display.
        As well as showing memory nodes and expansion devices, AIBB will
        also show information pertaining to various pertinent system
        libraries (location, version/revision, etc...).  The only libraries
        included in this are those which may have an effect on performance
        issues where AIBB is concerned.  Note that for the memory addresses
        given for each library, the actual node location and memory
        node characteristics can be determined by looking at the various
        system memory nodes and finding the proper one.

    --     AIBB now dynamically looks at the system display type in use
        whereas before it only did this on a static at-startup basis.
        This was done to more accurately reflect a systems current true
        state.

    --     AIBB's preferences file format has been changed, and thus
        requires the replacement of old preferences files.  This was done
        to add an ID field to the file so that invalid preferences could
        not accidentally be loaded.  This had occured in several incidents,
        so this action was taken as a preventative measure.

    --     Some minor cosmetic changes were made to various areas of the
        program, including requesters and general display characteristics.

Changes to version 5.0

    --     AIBB has been recompiled using SAS/C 6.0, resulting in both
        space savings and a general speed up in code.

    --     Note that AIBB's load file format has changed.  Previous load
        files will NOT work with this version.  As of this release, I
        am attempting to freeze the load file format so that further
        inconvieniences do not occur.

    --     A bug with AIBB's cache control menu items has been fixed.
        In previous releases, AIBB would request the system CPU type if
        it was not able to determine such by individual means.  This
        occured for checks between the 68EC030 and 68030, and also for
        determining the existance of the 68EC040 or 68LC040, if
        warranted.  However, AIBB would also erroneously disable the
        cache switching menu items if such a request for CPU identification
        was made.  This problem should no longer occur.

    --     An expansion board indentification lookup table has been added
        internally to AIBB, allowing various system expansion boards to
        be identified by name.  This table is by no means complete, and
        will be added to in the future (unlisted boards are given a
        "No Information Available" entry when referenced).  This
        information is found under AIBB's System Information Display when
        viewing system expansion devices.

    --     A change has been made in the comparison systems AIBB uses.
        The current default systems AIBB contains are now the A4000,
        A3000, A2000 (with FAST RAM), and A500 (stock, no FAST RAM).
        These systems represent a spread of Amiga models currently
        available.

    --     Some of AIBB's CLI/Shell arguments have been changed to
        reflect internal changes to the program.  Please note the new
        assignments for CPU/FPU/MMU types (if used) in the main
        documentation file.  This is important - using the incorrect
        assignment if these options are necessary may result in
        unexpected program behavior.

Changes to version 4.65

    --     AIBB will now request the user to identify whether a 68EC030
        or standard 68030 exists on such systems, or between a 68LC040
        and 68EC040 if conditions warrant.  Previous releases simply
        made a processor assumption if situations did not allow for a
        full internal test for the processor type.  As of this version,
        the user will be prompted for the correct processor type if this
        situation arises.  This was added for accuracy, and some
        safety considerations.

    --     The memory port width testing code AIBB uses has been changed.
        The new code used is more accurate, and better able to handle
        a wide variety of memory response configurations.

    --     Proper identification of the new custom chips is not done
        within AIBB.  Both the new Alice and Lisa devices will be detected
        and shown on the System Information Display portion of AIBB.

    --     Under V39 (3.0) of AmigaOS and above, certain CHIP RAM
        characteristics will be recorded and displayed in the System
        Information Display in the memory node information area.  These
        include CAS characteristics of CHIP memory, and other related
        bandwidth information.

    --     Several "safety measure" improvements have been made internally
        to AIBB to close several holes which could cause user problems.

    --     AIBB will now copy the paths of load file modules to the
        load file preferences when they are first called up.  This allows
        user selection of available modules from the standard requester
        used when gathering such modules.

Changes to version 4.58-4.61

    --     Some display bugs were discovered and corrected in these
        interim releases.  Also, some additional work was done on AIBB's
        68030/68EC030 detection.  Version 4.61 corrected a problem with
        4.60's erroneous display of the system's graphics and display
        chips.

Changes to version 4.57

    --     A rather nasty bug cropped up in version 4.56 pertaining to
        the way AIBB tested for an MMU on the system.  This led to AIBB
        hanging on startup with certain system configurations.  The
        bug is now corrected in this version.

Changes to version 4.56

    --     Minor changes made to AIBB's 68EC030 testing to improve
        memory usage.  A number of small changes were also made elsewhere
        to this effect as well.

    --     Specific time-dependent routines within the interface have been
        downcoded to assembly for speed purposes.

Changes to version 4.55

    --     AIBB's system information display has been changed.  No longer
        is a simple area used to display memory nodes existing on the
        system.  In its place, a similar area exists, which can be used
        to show either memory nodes, or expansion boards contained
        in the system AutoConfig board lists.  Selection of one of these
        displays is done dynamically by means of gadgets.  Please see
        the main documentation for full information.

    --     A new menu item on the main screen, "Show Aggregate Results"
        exists under the "Special" group.  This item will allow the
        viewing of aggregate system results after an initial system load
        module is performed on the host.  The main documentation includes
        full details on this item's use.

    --     AIBB now uses the graphics.library DisplayInfo database under
        V36 and above of the OS (2.0 or higher) rather than other means
        to determine the system display characteristics.  This avoids
        unecessary hardware peeking and enhances future compatibility.

    --     An annoyance bug with AIBB's startup has been corrected.  In
        certain circumstances (especially on single-floppy systems) when
        AIBB is in its initial startup phases, the program may seem to
        suddenly stop on a blank screen.  This is because the system
        was requesting a different volume (usually the main system disk)
        to be inserted.  However, AIBB's screen was made home to such
        requesters, but too soon - The screen colors were all still black,
        thus rendering the system requester invisible.  Now, AIBB waits
        until it is up and running before transfering the system requester
        location to its own screen so that these requesters will be
        visible should the appear (note that in terms of
        "system requesters", this referrs to requesters related to AIBB's
        process only).

    --     A bug with the detection of the 68EC030 CPU has been corrected.
        The method used to detect the EC030 is a fairly straightforward one.
        If the MMU ENABLED bit is set in the translation control register
        ( TC ), AIBB assumes that a working MMU exists, and that the CPU
        is a standard 68030.  If this bit is not set, a more thorough test
        is performed.  This test involves setting up a simple translation
        table, marking a page as 'write protected', and attempting a
        write to that page.  If a bus error occurs, this will have been
        caused by the MMU, and thus it must be functional - implying a
        standard 68030.  If no bus error is forthcoming, the CPU is thus
        marked as a 68EC030.
          The bug was detected only as a fluke, but could show up in other
        systems in an odd circumstance.  Earlier versions of AIBB write
        protected the page in question, turned the MMU on, then installed
        a bus error handler.  This order was incorrect...the circumstance
        in question came up when the system exception vector table was
        moved by use of the Vector Base Register ( VBR ).  If that table
        happened to reside in the page AIBB write protected, the
        installation of the bus error handler pointer in that table would
        cause a bus error itself -- this would hang the system as the
        proper error handler would not be installed (the write to do so
        would be suspended).  This has been corrected.  Thus far, it has
        not shown up on other systems, but this will make it more
        bullet-proof in that respect.

    --     A rather obscurely discovered Enforcer hit with AIBB has been
        corrected.  Under strange circumstances, AIBB could cause a READ
        Enforcer hit during its file-requester procedures.  This was
        benign, but nevertheless has been corrected.

Changes to version 4.5

    --     PLEASE NOTE THAT AIBB'S LOAD FILE FORMAT HAS CHANGED AS OF THIS
       VERSION!  Previous load file formats will no longer be loaded.  I
       have frozen the load file format as of this version, so no future
       changes will cause this incompatibility, or some form of conversion
       ability will be given.

    --     New routines have been added for 68040 floating point math
       support.  The 68040 does not have transcendental function support
       within its built-in FPU, and thus must rely on software emulation
       for such routines.  Unfortunately, the method of such emulation
       requires that the FPU jump to a trap routine after encountering such
       a transcendenal function instruction, such as FSIN.<fmt>.  The
       68040 FPU reacts to such instructions by causing an unimplemented
       instruction exception, and fetching the appropriate exception
       routine vector from the system exception vector table.  Once jumping
       to the appropriate routine, it is said routine's responsibility
       to determine the instruction which caused the exception, and
       react accordingly.  In the case of the FPU instructions not
       implemented, the routine must emulate these instructions and set up
       the return result before returning the CPU/FPU to normal processing.
           The unfortunate part to all this is that although the supported
       instructions in the 68040 FPU are highly optmized, and much faster
       than earlier coprocessor equivalents, the overhead involved with
       the trap routine method of emulation is so much so that it negates
       the gain made by the optimizations.  This is where in-line code
       support comes to an advantage with the 68040 FPU, and AIBB attempts
       to do this by making function calls to optimized equivalent math
       routines, rather than allow the trap handling technique to handle
       unimplemented FPU instructions.  Hopefully this will show somewhat
       of a performance improvement on transcendenal-intensive routines
       such as the Savage benchmark.

    --     AIBB now accepts certain command-line/icon tooltype options.
       Please refer to the documentation for a description of these
       options.

    --     A new comparison is now made upon completion of a load module
       or all-tests run.  AIBB will open a small requester-like window
       after all tests are completed giving a rundown average comparison
       in both integer/graphic and floating-point categories.  The index
       values given represent overall average figures taking into account
       all tests in a given category.

    --     The WritePixel test has been updated.  It is now longer and
       performs more graphics operations.

    -- A new test has been incorporated - InstTest.  This test is an
       instruction execution timing setup, and will give results in
       Instructions/Second.  It is a special test, and is not affected by
       the individual system code type settings.  Please read the
       appropriate section in the documentation for more information.

    --     AIBB's primary screen has been reduced from a 4-bitplane
       ( 16 color ) setup to a 3-bitplane ( 8 color ) one.  This should
       speed up refresh time and responsiveness of the program to some
       extent.

    --     A number of internal routine optimizations have been made to
       increase overall program efficiency.

Changes to version 4.3

     -- AIBB can now be made to incorporate load files upon startup
        as the default comparison systems.  A new entry under the
        General menu, "Load Module Prefs" allows load modules to be
        selected by path/filename for loading into AIBB upon startup.
        This allows alternate comparison systems to be more easily
        used as manual loading of them is no longer necessary if they
        are frequently used instead of the defaults.

     -- Corrected a minor problem with AIBB's data display.  Under
        Review Mode, AIBB would not change the system base immediately
        when a new base was selected and there was no test data for
        the host system in reference to any particular test.  This
        has been changed so that AIBB handles this condition correctly.

     -- Improvement of AIBB's memory bus port width determining code has
        been added.  Some 68040 boards with 32-bit memory were being
        incorrectly noted as having 16-bit ports.  In addition, a few
        68030 accelerators without memory were having 16-bit resources
        on the system erroneously reported as 32-bit ported devices.
        This has hopefully been corrected in this release.

Changes to version 4.2

     -- The ability to display data in Review Mode, without having to
        perform a given test on the host system itself has been added.
        This allows the viewing of comparison system data without having
        to perform a given test on the host itself.  The host system
        will display "N/A" in appropriate locations if no data is
        available for a given test.

     -- 68040 systems would display Write Allocation and BURST mode
        operations for cache status incorrectly.  Write Allocation is
        not a seperate entity as with the 68030 for the data cache,
        and thus this mode is not displayed for the 68040 now.  BURST
        mode operations for both instruction and data caches are hardware
        controlled on the 68040, and always implied.  The caches do not
        have a software-controllable setting for this mode as with the
        68030, therefore this mode is always indicated as ON with a
        68040 system now.

     -- Corrected a bug with AIBB's MMU table parsing code.  AIBB would not
        have correctly handled 8-byte descriptor entries in 68851 or 68030
        MMU tables as it was.  This has been fixed so that AIBB will
        properly parse these entries as well.

     -- Bug pertaining to error output strings for the initialization abort
        routine was fixed.  A string was improperly terminated resulting in
        an output error and possible crash for certain startup abort
        conditions.

     -- Utility ModInfo was not displaying proper MMU status information for
        68040 system modules.  This has been corrected.  ModInfo now stands
        at version 1.2.

     -- Documentation improvements and update information added.

     -- General code clean up performed and further optimization of
        various routines.

Changes to version 4.1

     -- Fixed a bug with certain 68040 system configurations which caused
        AIBB to hang on startup.

Changes to version 4.01:

     -- Fixed a bug pertaining to early versions of the kd_freq.library.
        Apparently early versions of this library would crash AIBB during
        startup due to a problem with the library itself.  Later library
        versions work fine.  AIBB will therefore not open kd_freq.library
        unless the version number is 3 or greater.

     -- A bug with the the included AIBB utility ModInfo was discovered.
        Incorrect information was given pertaining to load modules under
        certain circumstances.  This has been corrected.

Primary new features to version 4.0 include:

     -- Improved CPU/FPU clock speed evaluation code.  Earlier versions
        had a great many problems in this area, primarily due to a
        misplaced NOP instruction wreaking havoc with the timings.

     -- Enhanced/additional tests.  Some tests in earlier versions were
        proven to be non-useful in any real form and were removed.
        The remaining tests were enhanced and refined, and new tests
        were added to further complete the package.

     -- Improved system information.  More pertinent information is
        given towards evaluation of AIBB's benchmark performance.

     -- Module save/load capability.  AIBB now incorporates the ability
        to create "load modules" consisting of saved test/machine
        evaluations.  These modules may be loaded into AIBB at convienience
        and used within comparisons.  This is an effort to allow
        comparisons across many machine types, rather than restricting
        them to in-built figures.  A set of internal defaults is included.

     -- AIBB has been made more "aware" of the system it is operating
        on and will attempt to keep users informed of situations which
        may prove detrimental to performance analysis.

Further description of these and other features is found in the main
documentation.

