
================================================================
============ Changes from 4.0.1 to 4.0.2 (Jun 2002) ============
================================================================

   Many clarifications in the docs.

   Sven Sandberg improved accuracy and fixed bugs in do_arc().

   Matthew Leverton added missing header files to be installed by the
   Windows binary distribution.

   Grzegorz Adam Hankiewicz fixed a problem with the TOC of the FAQ.

   Eric Botcazou fixed a bug with stretch_blit() under Windows XP.

   Peter Wang fixed various configure machinery problems under Unix.

   Sven Sandberg updated the Swedish translation file.

   Sven Sandberg fixed a crash in the exswitch example when compiled
   by Watcom C/C++ and also made if faster.

   Maxime Carey added a Canada (French) keyboard mapping file.

   Henrik Stokseth updated instructions and fixed installation for Cygwin.

   Eric Botcazou added an option to disable direct updating in color
   conversion mode under Windows.

   Eric Botcazou (presumably) fixed the bug in the emergency exit mechanism
   under Windows when called from the DLL.

   Angelo Mottola made it so that the sound doesn't block the main thread
   anymore under BeOS.

   Deepak T and Eric Botcazou fixed clipping in three C sprite drawing
   routines.

   Peter Wang fixed a deadlock that occurred under Unix when Allegro
   received an X11 close event.

   Eric Botcazou added a --cppflags option to allegro-config and fixed
   C++ compilation under QNX.

   Vincent Penquerc'h added a --version= option to allegro-config.

   Robert J. Ohannessian made the 32->24 color convertors more robust and
   improved the MMX one in the process.

   Robert J. Ohannessian, Eric Botcazou and Sven Sandberg fixed a bug in
   the hue blender and the hsv_to_rgb() routine.

   Matthew Leverton fixed another problem with al_find*() and NTFS
   partitions under Windows.

   Peter Wang fixed a bug in ALSA device detection.

   Peter Wang fixed a bug in al_find* under Unix when running as root.

   Matthew Leverton and Eric Botcazou fixed a bug with mouse mickeys in
   windowed mode under Windows.


================================================================
============ Changes from 4.0.0 to 4.0.1 (Mar 2002) ============
================================================================

   Many minor changes, many clarifications in the docs.

   Peter Wang fixed the installation of shared libs under FreeBSD.

   Peter Wang and Eric Botcazou fixed autodetection glitches for VGA and
   SVGAlib.

   Eric Botcazou fixed a problem under X11 when the MIT X-SHM extension is
   used.

   Eric Botcazou fixed a deadlock on exit when an user window is used in
   conjunction with timers under Windows.

   Eric Botcazou disabled useless backbuffers for the DirectX safe driver.

   Peter Wang made the Alsa sound driver use non-blocking mode when
   detecting if ALSA PCM available.

   Sven Sandberg added support for long long integers to usprintf() and al.

   Robert J. Ohannessian fixed the difference blender.

   Peter Wang fixed a race condition when closing the X display.

   Elias Pschernig made all active dialogs redraw themselves after a switch.

   Peter Wang made fbcon a priority driver, so that it can appear above VGA.

   Javier Gonzalez fixed a glitch in the DirectSound input code.

   Eric Botcazou fixed the SIGSEGV on exit with the three-finger salute
   under QNX.

   Eric Botcazou fixed the C-to-asm calling problem for Borland C++ compiled
   programs.

   Eric Botcazou cleaned up the messy (and somewhat incorrect) DirectDraw
   bitmap management code.

   Sven Sandberg improved the video bitmap subdivision algorithm.

   Sven Sandberg fixed problems in the Windows makefiles (especially
   Borland) when building Allegro under Win98.

   Peter Wang removed the hack which switched off fix aliases under IRIX.

   Vincent Penquerc'h fixed a problem with the SIGARLM timer and
   SWITCH_PAUSE.

   Javier Gonzalez fixed a latency problem with audiostreams.

   Laurence Withers made the font exporter use the current palette for the
   output.

   Elias Pschernig made some changes to grabber: added a close hook; keeps
   track if anything has been modified; when you exit the grabber and the
   file was modified, the popup now has a 3rd option for save+exit; window
   title displays the current filename, and if the file has been modified;
   fixed multicolour font exports.

   Sven Sandberg optimized again the create_light_table() function.

   Attila Szilagyi fixed SVGAlib horizontal scrolling.

   Eric Botcazou fixed synchronization problems under QNX.

   Grzegorz Adam Hankiewicz made the TOC at the top of sections
   alphabetically sorted.

   Eric Botcazou fixed the screen not restored after a wake-up in the
   Windows windowed and overlay drivers.

   Richard Reeve fixed a silly mistake with gcc 3.0.x detection.

   Angelo Mottola fixed static keyconf compilation problem on BeOS due to
   pckeys keyboard driver.

   Eric Botcazou fixed the not-returning-focus-on-exit bug under Windows.

   Michael Bukin fixed a bug with C-version textprintf on 24-bpp bitmaps,
   reported by Bertrand Coconnier.

   Eric Botcazou fixed a bug in the 32->15 MMX color conversion routine.

   Eric Botcazou fixed the DLL linking problem with Borland C++Builder 4.

   Sven Sandberg made exaccel more responsive.

   Sven Sandberg fixed a glitch with short filenames under DOS.



=================================================================
============ Changes from 3.9.40 to 4.0.0 (Dec 2001) ============
=================================================================

   Many minor changes.

   Eric Botcazou modularised the VGA/Mode-X drivers under Linux.

   Peter Wang fixed the segfault bug in Mode-X under Linux with threads.

   Peter Wang made the X11 port use SIGTERM signal instead of exit() when
   invoking the three finger salute. This solves a problem where programs
   with sound hang when they are killed.

   Eric Botcazou added os_version and os_revision support to the QNX port and
   added a QNX specific section to the docs.

   Peter Wang added a deadzone for digital readings of joystick axes under
   Linux, as suggested by George Foot and made the driver look for
   /dev/input/js# before /dev/js#.

   Peter Wang renamed fixed point functions to be prefixed with "fix" instead
   of "f", to avoid clashes with some libcs. Backwards compatibility is
   provided using static inline functions.

   Peter Wang fixed two problems with emergency exits under Linux/Unix.

   Eric Botcazou changed the updating logic of the QNX Photon graphics
   driver.

   Eric Botcazou added a doc for the wfixicon utility, with the help of
   Laurence Withers.

   Angelo Mottola unicodified allegro_message on BeOS and wrote a new BeOS
   keyboard driver (using the shared pckeys system).

   Eric Botcazou fixed a problem with David Capello's d_menu_proc
   steal/return mouse focus patch.

   Peter Wang made passing NULL to install_allegro() as the atexit_ptr
   parameter mean allegro_exit() won't be installed as an atexit()
   callback, as suggested by Javier Gonzalez.

   Lorenzo Petrone added a gfxinfo utility.

   Eric Botcazou added fetch_mode_list() to the QNX Photon Direct driver.

   Peter Wang made X desktop_color_depth() able to return 15 bpp.

   Grzegorz Adam Hankiewicz updated Spanish translation strings.

   Peter Wang fixed a problem with X shutdown sequence.

   Eric Botcazou repaired the QNX build process, revamped the layout of the
   QNX port sources and made some fixes.

   Peter Wang disabled the SVGAlib mode fetching code as it was causing
   problems with other drivers.

   Angelo Mottola added BeOS notes to the ABI compatibility doc.

   Eric Botcazou fixed a bug in the Windows locking code that caused the
   grabber to crash on switch out.

   Eric Botcazou fixed a bug in the handling of recursive sub-bitmaps under
   Windows.

   Eric Botcazou fixed a bug preventing old style password-protected
   packfiles from loading in the grabber.

   Lorenzo Petrone added two FAQ entries on DGA2 problems.

   Grzegorz Adam Hankiewicz revamped the structure of the docs directory.

   Stepan Roh updated the Czech translation.

   Javier Gonzalez fixed a bug in the DirectSound driver related to the loop
   playing modes.

   David Capello fixed a problem with submenus which overlapped their
   parents, where focus would pop back to the parent instead of the child.



================================================================
============ Changes from 3.11 to 3.9.40 (Nov 2001) ============
================================================================

   3.9.40: Eric Botcazou enabled SSE support under Linux. Also reduced the
   delay in the DOS Sidewinder init code. Made the definition of _AL_DLL
   for MinGW32 consistent with other Windows ports.

   3.9.40: Henrik Stokseth improved make install to install only the needed
   headers from the include/allegro/platform directory.

   3.9.40: Vincent Penquerc'h updated 7 makefiles after his header splitting
   patch.

   3.9.40: Robert J. Ohannessian added two new entries to the GFX_VTABLE
   structure.

   3.9.40: Eric Botcazou replaced sprintf() by snprintf() in the Linux/Unix
   code. Increased the delay in the Windows switch handling code.
   Unicodified the GFX mode selector and fixed some glitches. Added a new
   test dubbed filetest. Fixed more unicode string problems. Unified the
   handling of system directory variables in the Windows makefiles. Made
   two strings translatable in the GFX mode selector.

   3.9.40: Ben Davis added support for timers with parameters under Windows.

   3.9.40: Eric Botcazou fixed the bug in the asm sprite functions when
   used with sub-bitmaps. Fixed a problem of the new header layout for
   platforms not supporting asm.

   3.9.40: George Foot and Eric Botcazou fixed the C fceil() function and
   added the ffloor() function.

   3.9.40: Chris Graham suggested to add a new flag for Windows NTFS
   compressed files.

   3.9.40: Henrik Schmidt and Eric Botcazou found a workaround for the
   switching problem under Windows.

   3.9.40: Eric Botcazou revamped the Borland C++ build process. Now it
   targets BC++ 5.5. Made pack_fdopen() an exported internal function.
   Reverted to the 3.9.38 code for 16-bit audio streaming with DirectSound.

   3.9.40: Vincent Penquerc'h contributed a rather large split-up/
   reorganization of the Allegro header files. Henrik and Eric did some
   related clean-up and fixing.

   3.9.40: Peter Wang updated put_backslash() docs.

   3.9.40: Eric Botcazou modified the way DirectDraw surfaces are
   enumerated. Fixed compilation errors/warnings with BC++. Made
   generate_optimized_palette_ex() a static function. Worked around the
   DOS limitations for al_findfirst() and for_each_file(). Moved
   platform-dependent stuff out of src/fsel.c.

   3.9.40: Peter Wang updated timer docs for non-DOS. Added ABI
   compatibility readme.

   3.9.40: Javier Gonzalez removed all references to the RSXNT build.

   3.9.40: Vincent Penquerc'h made it so that users can provide their own
   ustrdup().

   3.9.40: Robin Burrows fixed two glitches in the DirectDraw code.

   3.9.40: Peter Wang fixed a problem where XUnlockDisplay was called after
   XCloseDisplay.

   3.9.40: Eric Botcazou removed old Sidewinder asm driver. Cleaned up
   buffer usage in DIGMID. Fixed unicode support in the DIGMID driver.
   Replaced all occurrences of SEND_MESSAGE() by object_message().

   3.9.40: Annie Testes caught a misordering in the X system shutdown.

   3.9.40: Eric Botcazou increased the size of filename buffers to 1024
   bytes.

   3.9.40: Sven Sandberg improved fix.bat script.

   3.9.40: David Capello fixed a problem with lost GUI mouse clicks.

   3.9.40: Vincent Penquerc'h removed two hard-coded list sizes in grabber.

   3.9.40: Peter Wang added a little clarification regarding
   mouse_accel_factor.

   3.9.40: Eric Botcazou made debugging functions revert to ASCII strings.
   Added some defines for backwards compatibility with former cpu_* flags.
   Fixed a compilation problem under DJGPP.

   3.9.40: Henrik Stokseth added VBE/AF fetch_mode_list().

   3.9.40: Robert J. Ohannessian revamped the retrieval mechanism of CPU
   capabilities and added some new flags.

   3.9.40: Eric Botcazou fixed various mouse cursor problems under Windows.
   Updated docs about the DIGI_DIRECTX drivers.

   3.9.40: Javier Gonzalez fixed audio streams in Windows.

   3.9.40: Peter Wang improved the XDGA2 driver by removing unneccessary
   scrolling, which also resulted in speed-ups due to less
   locking/unlocking. The original fix was by Michael Bukin.

   3.9.40: Eric Botcazou and Javier Gonzalez added some documentation on
   static linking with MSVC/MinGW32.

   3.9.40: Peter Wang fixed sonames for debug and profile libs. Also added
   a 'configure' check that ld supports -export-modules before enabling
   modules.

   3.9.40: Annie Testes found ASCII strings that needed to be converted.
   Also added a pack_fdopen() function.

   3.9.40: Robert J. Ohannessian clarified some Dev-C++ instructions.
   Fixed fix.bat script under MinGW32/Win2k.

   3.9.40: Marcel Smit corrected a bug that caused errors when drawing
   perspective-correct polygons facing the screen. (dz=0)

   3.9.40: Peter Wang made install_timer_int static. Also moved
   allegro_404_char into public API.

   3.9.40: Laurence Withers added docs for allegro_404_char.

   3.9.40: Eric Botcazou fixed a little glitch with menu auto-opening. Also
   fixed a color glitch in the Windows windowed driver on 8-bit desktops.

   3.9.40: Salvador Eduardos Tropea fixed inline friend declarations with
   bodies. (gcc 3.0.x problem)

   3.9.40: Peter Wang improved behaviour between mouse auto-opening menus
   and navigating with keyboard. Also unspartanised the ustrtok_r() docs.

   3.9.40: Henrik Stokseth replaced the mmxtest with a more advanced
   assembler capabilities testing.

   3.9.40: Eric Botcazou re-enabled full pairing on Pentium for five color
   conversion routines. Applied xor vs. mov instruction-length optimization
   to the  non-MMX code. Applied %ecx vs. %edx instruction-length
   optimization to the non-MMX code. Updated the mouse_accel_factor docs.

   3.9.40: Peter Wang eliminated use of static buffers by uconvert() in
   several places.

   3.9.40: David A. Capello made d_menu_proc steal/return focus when
   activated/deactivated.

   3.9.40: Henrik Stokseth added Out of Environment space detection on the
   fix.bat script.

   3.9.40: Eric Botcazou fixed a non ANSI C compliant behaviour in
   usprintf().

   3.9.40: Seunghwan Ji made makedoc output correct html and rtf files for
   Korean.

   3.9.39: Robert J. Ohannessian added -? and --help options to dat.

   3.9.39: Sven Sandberg and Grzegorz Adam Hankiewicz fixed some errors in
   the documentation.

   3.9.39: Annie Testes fixed several glitches related to unicode support.

   3.9.39: Henrik Stokseth added an internal _al_sane_realloc() function
   with guaranteed behaviour. Used this to fix a memory leak and updated
   the FAQ.

   3.9.39: Eric Botcazou and Peter Wang updated the documentation on:
   file attribute flags, request_scroll and request_video_bitmap.

   3.9.39: Eric Botcazou unified the use of internal timers in Windows
   drivers. Also let digitest use max volume of Allegro mixer.

   3.9.39: Paul Hampson improved again the DOS SNESpad joystick driver.

   3.9.39: Eric Botcazou revamped the locking mechanism of the DGA2 driver.
   Also fixed some memory leaks.

   3.9.39: Peter Wang added mode fetching for X11 fullscreen and DGA
   fullscreen drivers.

   3.9.39: Robert J. Ohannessian fixed 16bit masked blit SSE code and
   removed unused instruction in the other blitters.

   3.9.39: Salvador Eduardos Tropea added some GCC 3.x fixes.

   3.9.39: Peter Wang added a check if a module listed in modules.lst exist
   before trying to load it.

   3.9.39: Charles Wardlaw made alert/alert3 use transparent background for
   text label.

   3.9.39: Eric Botcazou added a flush_config_file() API function. Also added
   a hfill() method to the GFX_VTABLE structure.

   3.9.39: Peter Wang fixed some memory leaks.

   3.9.39: Eric Botcazou fixed two compilation warnings with gcc > 2.95.

   3.9.39: Johan Peitz contributed 'Alex the Allegator' icon.

   3.9.39: Angelo Mottola fixed safe fullscreen bug and fetch_mode_list()
   for BeOS.

   3.9.39: Peter Wang updated XDGA2 and SVGAlib driver's fetch_mode_list()
   function.

   3.9.39: Henrik Stokseth rewrote the mode-list API, updated the code and
   updated the documentation.

   3.9.39: Grzegorz Adam Hankiewicz updated all URLs in the Allegro sources
   and documentation.

   3.9.39: Eric Botcazou fixed cmplog script for perl 5.6.1.

   3.9.39: Peter Wang added a FAQ entry.

   3.9.39: Peter Wang fixed up the sound subsystem which he accidentally
   broke when he introduced the dynamic modules.

   3.9.39: Eric Botcazou fixed a compilation warning. Also added support
   for 8-bit desktops to the windows windowed driver. Fixed color shifts in
   the color convertors from 8-bit. Fixed a bug in the 8->8 color conversion
   routine.

   3.9.39: Javier Gonzalez contributed bidirectional looping support for the
   directsound driver.

   3.9.39: Robert J. Ohannessian and Henrik Stokseth did a large update on
   the installation instructions for Mingw32.

   3.9.39: Eric Botcazou cleaned up windows dll version info sheet and let
   the windows makefiles use implicit rules on some file targets. Fixed a
   compilation glitch with MSVC.

   3.9.39: Henrik Stokseth added support for building RPMs with SuSE Linux.

   3.9.39: Peter Wang fixed some off-by-one errors. Fixed unix makefile.
   Fixed disabling of dynamic modules.

   3.9.39: Eric Botcazou and Grzegorz Adam Hankiewicz finished translation
   of the allegro.spec file.

   3.9.39: Eric Botcazou re-added a faq entry on DirectX version problem.

   3.9.39: Grzegorz made fbcon a module.

   3.9.39: Peter Wang removed allegro-enduser.spec as it is no longer needed.
   Also contributed a rewrite of the allegro.spec file, and updated the
   scripts to make the rpm. The new allegro.spec file was based on one
   contributed by Osvaldo Santana Neto. Peter also allowed configure to give
   linker flags to allegro-config (for modules). Also let _unix_find_resource
   search in /usr/[local/]share/allegro for .dat files.

   3.9.39: Javier Gonzalez contributed backward playing support for the
   directsound driver.

   3.9.39: Eric Botcazou fixed a glitch with backward playing in the digitest
   test.

   3.9.39: Salvador Eduardos Tropea made a small update on the cygwin section
   of readme.mgw.

   3.9.39: Peter Wang fixed a problem with BSD make and Mac directory
   separators ':'. Documented gfx_cardw variable.

   3.9.39: Sven Sandberg fixed a nasty side-effect of clear() inlining on
   Watcom.

   3.9.39: Laurence Withers fixed a crash bug in the mode-selector.

   3.9.39: Peter Wang removed SIGIO asynch stuff since it's not needed when
   we have pthreads. Updated documentation to mention dynamic modules.
   Added configure option to disable threads.

   3.9.39: Burton Radons fixed a bug in his dissolve blender.

   3.9.39: Eric Botcazou fixed a bug in the menus caused by auto-opening.

   3.9.39: Henrik Stokseth updated the makefiles to use -mcpu=pentium instead
   of the depreciated -mpentium gcc option. Also let the packaging scripts
   run autoconf and remove hidden or leftover files.

   3.9.39: Eric Botcazou cleaned up the windows sound code. Also clarified
   the code in the core menu function. Corrected a unicode glitch.
   Removed remaining references to ALLEGRO_NO_FINDFIRST. Added a unified
   al_find*() interface. Made the Portuguese translation file of the former
   Portuguese (Br) file. Fixed a few keyboard configuration files. Changed
   pl.cfg EOLN delimiter to \r\n.

   3.9.39: Grzegorz Godlewski contributed a Polish localization patch.
   Also added support for lower and upper altgr tables.

   3.9.39: Eric Botcazou fixed a bug in the keyconf utility caused by the
   sectionification.

   3.9.38: Robert J. Ohannessian added the following to the color convertor:
   color copy routines needed by the BeOS port, support for cross-conversion
   between 15-bit and 16-bit colors, support for conversion to 8-bit color,
   support for rectangles of any width and added two new MMX routines.

   3.9.38: Henrik Stokseth rewrote get_gfx_mode_list() likewise rewrote the
   mode-selector to use get_gfx_mode_list(). Also added fetch_mode_list()
   functions on the DirectX, VGA, Mode-X and Xtended GFX drivers.

   3.9.38: Angelo Mottola fixed problems with SMP on the BeOS port.

   3.9.38: Eric Botcazou fixed some problems with the non-MMX code in the
   color convertor.

   3.9.38: Sven Sandberg improved spline() for DRAW_MODE_TRANS

   3.9.38: Peter Wang renamed clear() to clear_bitmap(). clear() is still
   provided for backwards compatibility.

   3.9.38: Stephan Roh made fractal generator work under non-Intel
   processors.

   3.9.38: Eric Botcazou made a valid display switch mode of SWITCH_NONE
   under DOS.

   3.9.38: Angelo Mottola made the BeOS port use the new unified color
   conversion routines.

   3.9.38: Peter Wang added check to see if display is local under X11.

   3.9.38: Eric Botcazou and Sven Sandberg fixed compilation under
   Watcom 10.6.

   3.9.38: Elias Pschernig contributed an icon resource fixer for the
   Windows port and added support for shared library under BeOS.

   3.9.38: Angelo Mottola added a bfixicon utility.

   3.9.38: Stephan Roh made the native Allegro time format of ANSI time_t.

   3.9.38: Peter Wang added an ustrtok_r() function.

   3.9.38: Robert J. Ohannessian optimized some masked_blits with SSE
   instructions.

   3.9.38: Angelo Mottola did a sound fix for audiostream output and SMP
   machines and added triple buffering support on the BeOS port.

   3.9.38: Angelo Mottola added fetch_mode_list() support to the BeOS
   fullscreen driver.

   3.9.38: Eric Botcazou changed the acceleration scheme for the mouse under
   Windows.

   3.9.38: Peter Wang added fetch_mode_list() support to the svgalib driver.

   3.9.38: Peter Wang added pthread timer and removed dependancy to SIGALRM.

   3.9.38: Henrik Stokseth added Windows XP detection.

   3.9.38: Andreas Kluge fixed a bug with volume setting in the DOS
   Soundscape driver.

   3.9.38: Angelo Mottola rewrote the BeOS sound driver to use the
   BSoundPlayer class.

   3.9.38: Robert J. Ohannessian added SSE and SSE2 detection.

   3.9.38: Connelly Barnes fixed a bug with the DirectSound pan.

   3.9.38: Eric Botcazou added support of switch modes to the test program.

   3.9.38: Eric Botcazou modified the Windows switch mechanism.

   3.9.38: Angelo Mottola added fullscreen display switching support and did
   many fixes and cleanups on the BeOS port.

   3.9.38: Henrik Stokseth added code to get more os info under unix.

   3.9.38: Nimrod Abing fixed a bug in the config routines related to the
   NULL section.

   3.9.38: Eric Botcazou fixed a crash in the Windows windowed driver on fast
   machines.

   3.9.38: Ronaldo Hideki Yamada did a large update on the PowerMac port and
   added a midi driver.

   3.9.38: Henrik Stokseth generalised the support for processor specific
   optimisations in some makefiles.

   3.9.38: Evert Glebbeek put set_gfx_mode on a diet and added config entry
   for specifying the card to use for GFX_AUTODETECT_WINDOWED.

   3.9.38: Robert J. Ohannessian made blit not convert between colordepths
   for video bitmaps. (for AllegroGL)

   3.9.38: Peter Wang made fix_filename_slashes() handle both types of
   slashes.

   3.9.38: Grzegorz Adam Hankiewicz implemented a switch in makedoc to check
   for long (>77) doc lines.

   3.9.38: Owen Rudge contributed a DLL version resource script.

   3.9.38: Sven Sandberg made the rotation functions faster, more accurate
   and working with any type of bitmap. Also removed
   rotate_scaled_sprite_flip().

   3.9.38: Angelo Mottola added fetch_mode_list() support to DGA2.

   3.9.38: David A. Capello made test program use transparent polygon types.

   3.9.38: Owen Rudge contributed a mkdata.bat script.

   3.9.38: Grzegorz Adam Hankiewicz added reload_config_texts().

   3.9.38: Eric Botcazou added an enhanced building mechanism for DLL
   export definition files.

   3.9.38: Eric Botcazou added a new unicode example program and did a ton of
   small fixes.

   3.9.37: Johan Peitz fixed and enhanced the Win32 joystick driver.

   3.9.37: Sven Sandberg added Ctrl + arrow keys to d_edit_proc().

   3.9.37: Eric Botcazou changed the color key for the Windows overlay
   driver to bright pink.

   3.9.37: Eric Botcazou reverted some changes he made to the timer core
   last release which were causing problems with the MIDI player, and
   removed the Windows multithreaded timer driver.

   3.9.37: Henrik Stokseth made some updates to the OS detection code, and
   added a os_multitasking variable.

   3.9.37: Eric Botcazou fixed a problem in the config routines, where
   entries in the NULL section were hiding duplicate entries in other
   sections.

   3.9.37: Eric Botcazou made the setup program use Unicode functions.

   3.9.37: Henrik Stokseth unified the fix* scripts, and gave them new
   options.

   3.9.37: Peter Wang added support for dynamically loaded modules under
   Unix. The SVGAlib, ALSA digital, ALSA MIDI, ESD and DGA2 drivers will
   be built as modules when possible. This removes external dependencies
   on the main library and improves binary transportability under Linux.

   3.9.37: Eric Botcazou made many changes and bug fixes to the Unicode
   string functions, and their use in the library.  The old functions now
   behave exactly like the libc equivalents, while the new functions (the
   'z' functions) behave more sanely. This change affects most code which
   uses the Unicode functions.

   3.9.37: Bertrand Coconnier changed the recently merged scene rendering
   API, fixed a bug, and provided a new example program. The API change
   will affect all code which uses the scene functions.

   3.9.37: Laurence Withers wrapped registration of the bitmap file types
   in a constructor. Where constructors are supported, this should reduce
   the executable size when statically linking (unless you use the bitmap
   loaders, of course).

   3.9.37: Ben Davis modified the set_volume_per_voice scale. Please see
   the docs for this function if you have used it in the past.

   3.9.37: Eric Botcazou worked around a DOS mouse bug under Win2k.

   3.9.37: Eric Botcazou added VGA Mode 13h support under DirectX 5 or
   greater.

   3.9.37: Henrik Stokseth added a get_gfx_mode_list() function, and the
   implementation of it for the VESA driver.

   3.9.37: Eric Botcazou and Annie Testes toiled hard to avoid buffer
   overflows (particularly with regards to the Unicode functions).

   3.9.37: Eric Botcazou fixed a mouse mickeys bug and cleaned up the
   input subsystem under Windows.

   3.9.37: Eric Botcazou made two minor changes in the handling of index 0
   in paletted modes.

   3.9.37: Eric Botcazou added a transparency preserving feature to the
   grabber and dat utility.

   3.9.37: Eric Botcazou fixed a crash when alt-tabbing in page flipping
   under Windows.

   3.9.37: Peter Wang added gui_menu_draw_menu and gui_menu_draw_menu_item
   to allow customising the look of the GUI menus (to a certain extent).

   3.9.37: Angelo Mottola added support for the new
   GFX_AUTODETECT_FULLSCREEN and GFX_AUTODETECT_WINDOWED constants, which
   we _all_ wholeheartedly agreed upon :-)

   3.9.37: Eduard Bloch made config vars which exist but are empty return
   defaults.

   3.9.37: Elias Pschernig added a COLORCONV_KEEP_TRANS mode.

   3.9.37: Henrik Stokseth added support for compiling with Cygwin. It
   works in Mingw compatibility mode.

   3.9.37: Angelo Mottola made GUI submenus automatically open when the
   mouse hovers for long enough. (This was an old patch that finally got
   merged.) Eric made some related modifications to it later.

   3.9.37: Eric Botcazou made clear_keybuf() not clear the key[] array.

   3.9.37: Sven Sandberg added a --quick option to fix scripts.

   3.9.37: Angelo Mottola did _loads_ of work on the QNX port (much too
   much to document here).

   3.9.37: Eric Botcazou made the Win32 asm color conversion code for
   windowed drivers available for other ports, and added a few other
   converters. Isaac Cruz added one too.

   3.9.37: Eric Botcazou restructured the config file format.  Some
   previously unsectioned variables are now in sections.

   3.9.37: George Foot added a threading system to handle asynchronous
   events, instead of using SIGALRM (under Unix).

   3.9.37: George Foot fixed some problems with pack_fgets().

   3.9.36: Eric Botcazou made it so that set_keyboard_rate(0, 0) will
   disable keyboard repeat, as in the documentation.

   3.9.36: Annie Testes added font_height, render_char, char_length hooks
   to FONT_VTABLE.

   3.9.36: Eric Botcazou made some minor changes related to AllegroGL in
   the window management code, and fixed two little mouse bugs Javier
   Gonzalez had found (both under Windows).

   3.9.36: Eric Botcazou added a get_desktop_resolution() function for
   Windows and X. Joshua Haberman added a BeOS version.

   3.9.36: Angelo Mottola comprehensively started a QNX port.

   3.9.36: Robert Ohannessian corrected src/dest ordering in additive
   blenders.

   3.9.36: Eric Botcazou improved support of external windows in Windows.

   3.9.36: Peter Wang updated the SVGAlib driver for version 2.

   3.9.36: Peter Wang added a fullscreen version of the X-Windows graphics
   driver. The original was by Benjamin Joel Stover.

   3.9.36: Peter Wang made grabber use file_select_ex(). This is just here
   so you don't get a shock :-)

   3.9.36: Eric Botcazou fixed some small bugs in the DirectSound input code.

   3.9.36: Eric Botcazou fixed the NumLock state in X not matching
   keyboard LEDs.

   3.9.36: Eric Botcazou reenabled the multi-threaded timer under Windows.

   3.9.36: Eric Botcazou and Javier Gonzalez made the keyboard repeat
   system more efficient.

   3.9.36: Eric Botcazou fixed some asm blitters, and also a bug with
   changing timer speeds.

   3.9.36: Peter Wang made the keypad return / * - + ASCII values even if
   NumLock is off, under Linux console.

   3.9.36: Ronaldo Hideki Yamada made a big update of the Mac port,
   including some new PPC files.

   3.9.36: The GGI driver was removed, due to its inability to actually
   work. It is no longer supported, unless someone rewrites it.

   3.9.36: Eric Botcazou fixed a problem with the GDI driver when compiled
   with MSVC.

   3.9.36: Some MIDI fixes by Javier Gonzalez and Eric Botcazou.

   3.9.36: Grzegorz Adam Hankiewicz improved the fb.modes line parsing
   function in the fbcon driver.

   3.9.36: Grzegorz Adam Hankiewicz changed the behaviour of GFX_SAFE.
   This means that "set_gfx_mode(GFX_SAFE, ...)" now returns an error if
   it is unable to set a video mode, just like any other video driver.

   3.9.36: Eric Botcazou fixed volume setting in Windows.

   3.9.36: Eric Botcazou added DirectX 3 compatibility.

   3.9.36: Nick Kochakian added input routines to the DirectSound driver.
   It was also modified by Javier Gonzalez.

   3.9.35: Eric Botcazou made Windows restore the original sound volume
   after an Allegro program quits.

   3.9.35: Eric Botcazou fixed sample looping in DirectSound driver.

   3.9.35: Grzegorz Adam Hankiewicz solved some color problems in the
   demo game.

   3.9.35: Angelo Mottola implemented a close button hook for X11.

   3.9.35: Eric Botcazou fixed _the_ Windows 2000 keyboard bug.

   3.9.35: Eric Botcazou made some changes to the locking/unlocking
   mechanism in the Windows port.

   3.9.35: Laurence Withers made some modules avoid linking
   dependencies.

   3.9.35: Javier Gonzalez added close button support for Windows.
    
   3.9.35: Eric Botcazou improved mouse handling in the GFX_GDI driver
   and fixed some other mouse glitches.

   3.9.35: Peter Wang made set_mouse_sprite(NULL) regenerate the
   default arrow bitmap (using the current palette).

   3.9.35: Eric Botcazou made hardware accelerated primitives stop
   when the user switches out in Windows.

   3.9.35: Tom St Denis fixed clipping of transparent objects.

   3.9.35: Eric Botcazou and Javier Gonzalez improved switching in
   Windows and other things.

   3.9.35: Peter Wang made the Linux joystick driver use standard
   constants.

   3.9.35: Sven Sandberg changed the Z-buffer API.

   3.9.35: Peter Wang made the default mouse sprite independent of the
   palette in 8 bpp modes.

   3.9.35: Bertrand Coconnier added documentation for the P3D merge.

   3.9.35: Angelo Mottola fixed desktop_color_depth() and added window
   close button support for the BeOS port.

   3.9.35: Ben Davis added the set_window_close_button() and
   set_window_close_hook() framework.

   3.9.35: Peter Wang exposed the mouse_sprite, mouse_x_focus and
   mouse_y_focus variables.

   3.9.35: Robert Ohannessian and Javier Gonzalez fixed bad clearing
   of subbitmaps.

   3.9.35: Peter Wang renamed GFX_XDFS to GFX_XDGA_FULLSCREEN.

   3.9.35: Henrik Stokseth updated the cross-compilation system.

   3.9.35: Tomohiko Sugiura added some keys and renamed some JP keys.

   3.9.35: Eric Botcazou added a DirectDraw2 interface, with support
   for refresh rates.

   3.9.35: Bertrand Coconnier merged in Calin Andrian's P3D library.

   3.9.35: Javier Gonzalez made allegro_message() use the title from
   set_window_title() in Windows.

   3.9.35: Andreas Kluge fixed division bugs in the fix class.

   3.9.35: Stepan Roh documented the FA_* flags.

   3.9.35: Peter Wang added hooks to allow overriding the look of
   standard dialogs.

   3.9.35: Peter Wang changed X window placement and mapping behaviour.

   3.9.35: David A. Capello made dotted_rect() avoid bank switches.

   3.9.35: Eric Botcazou fixed a freezing problem under Window with
   locking/unlocking bitmaps under heavy load. He received help
   tracking down the bug from Javier Gonzalez.

   3.9.35: Stepan Roh fixed a bug with FA_RDONLY constant under Unix.

   3.9.35: Eric Botcazou cleaned up the Windows graphics subsystem.

   3.9.35: "Sask Allegro" added support for more than two joysticks in
   the Windows port.

   3.9.34: Ben Davis made close button in Windows windowed modes not
   simulate Escape key, in preparation for new behaviour (in next WIP).

   3.9.34: Laurence Withers fixed a problem with accents in keyconf.

   3.9.34: Javier Gonzalez added DIGMID to the Windows MIDI drivers list.

   3.9.34: Eric Botcazou cleaned up the DirectDraw subsystem.

   3.9.34: Eric Botcazou made the DirectDraw overlay driver comply with
   page flipping and triple buffering code, amongst other things.

   3.9.34: Bertrand Coconnier improved subtexel accuracy for texture
   mapping.

   3.9.34: Javier Gonzalez corrected mouse movement speed in Windows.

   3.9.34: Ben Davis adapted polygon functions to handle two coincident
   vertices, and changed and clarified texture coordinate alignment in
   code and documentation.

   3.9.34: Grzegorz Adam Hankiewicz fleshed out the docs for Unicode
   functions, adapting from djgpp and gcc docs.

   3.9.34: Eric Botcazou fixed a triple buffering problem in the
   DirectDraw accelerated driver.

   3.9.34: Henrik Stokseth added support for cross-compilation in the
   mingw32 build.

   3.9.34: Grzegorz Adam Hankiewicz updated more examples for GFX_SAFE.

   3.9.34: Ben Davis added set_volume_per_voice(), made silent voices
   continue playing and fixed other minor bugs. 

   3.9.34: Ben Davis fixed a bug in create_rgb_table().

   3.9.34: Angelo Mottola added display switching routines for BeOS and
   fixed some bugs.

   3.9.34: Laurence Withers updated documentation about `const'.

   3.9.34: Ronaldo Hideki Yamada contributed a macintosh port of Allegro.

   3.9.34: Grzegorz Adam Hankiewicz changed and documented new GFX_SAFE
   behaviour (that color depth is undefined), updated the fbcon driver to
   take advantage of this and updated example programs.

   3.9.34: Peter Pavlovic fixed a bug caused by file selector stretching.

   3.9.34: Bertrand Coconnier fixed bugs related to poly3d(); removed
   never-called C versions of scanline functions for POLYTYPE_FLAT and
   non-8bpp POLYTYPE_GCOL; and made clip3d() and clip3d_f() functions
   compliant with Z-buffered polygons.

   3.9.34: Stepan Roh added C version of masked_stretch_blit().

   3.9.34: Angelo Mottola did more work on BeOS: hardware acceleration
   (rect, hline, vline, clear_to_color, blit); mouse fix in windowed mode;
   desktop_color_depth(); yield_timeslice();

   3.9.34: Peter Wang retroactively updated CHANGES and AUTHORS from
   late 3.9.33 to present using CVS logs and email archives, and
   possibly messed up.

   3.9.34: Angelo Mottola added a BeOS windowed driver (originally by
   Peter Wang), a BeOS MIDI driver, mouse wheel support under BeOS and
   made many bug fixes and changes to other BeOS code and documentation.

   3.9.34: Laurence Withers fixed dat2s output of fonts for new font
   subsystem.

   3.9.34: Peter Wang made the SVGAlib driver more robust.

   3.9.34: Peter Wang changed the way Intellimouse protocols are selected
   under Linux console.

   3.9.34: Eric Botcazou added file_select_ex and reverted file_select to
   old behaviour.

   3.9.34: Laurence Withers added ugetcx() function.

   3.9.34: Laurence Withers designed and implemented a new FONT structure,
   which should provide many advantages over the old one.

   3.9.34: Eric Botcazou made more fixes to Windows code.

   3.9.34: Bertrand Coconnier added a z-buffer rendering mode for 3D
   polygons (derived from Calin Andrian's P3D library) and an example
   program for it.

   3.9.34: Michael Bukin added customization for keycode to scancode
   mapping in X.

   3.9.34: Peter Wang added mouse wheel support to d_textbox_proc and
   d_slider_proc, and made file selector dialog stretch.

   3.9.34: Tom Fjellstrom added an ALSA MIDI driver.

   3.9.34: Eric Botcazou made some changes to the Windows windowed driver.

   3.9.34: Grzegorz Adam Hankiewicz updated the documentation and the
   makedoc program to produce better .texi output. The new version works
   very well with the texi2dvi program, which produces fine ready to print
   device independent output. Also documented the new unix makefile targets.

   3.9.34: George Foot added --env option to allegro-config script.

   3.9.34: Benjamin Stover made some vararg fixes in unicode.c and added a
   workaround for missing defines in fbcon.c.

   3.9.34: Robin Burrows added a Windows waveOut sound driver.

   3.9.34: Eric Botcazou changed desktop_color_depth() for Windows.

   3.9.34: Angelo Mottola added line switching and refresh rate support to
   DGA2 driver.

   3.9.34: Bertrand Coconnier added scanline subdivisions and fixed 3D
   polygon drawing.

   3.9.34: Angelo Mottola added BeOS joystick driver.

   3.9.34: Angelo Mottola added DGA2 driver.

   3.9.34: Robin Burrows added Windows sound driver using Allegro mixer.

   3.9.34: Stepan Roh added workaround for fceil defined in Irix headers.

   3.9.34: Michael Bukin changed DGA screen clearing.

   3.9.34: Tomohiko Sugiura added a more aggressive Sidewinder driver.

   3.9.34: Tomohiko Sugiura added three Japanese keys.

   3.9.34: Stepan Roh made C functions const-correct.

   3.9.34: Bertrand Coconnier fixed blending in atex_lit scanline
   functions.

   3.9.34: Michael Bukin modified text_mode to return previous mode.

   3.9.34: Peter Pavlovic fixed scrollbar display in grabber and improved
   scrolling in GUI objects.

   3.9.34: anarko made GUI objects restore textmode.

   3.9.34: Laurence Withers added font destroy hook.

   3.9.34: Vincent Penquerc'h modified the mouse button press/release events
   so they have higher priority than double-click events.

   3.9.34: Eric Botcazou improved colormap handling in XDGA.

   3.9.34: Robin Burrows provided a new page flipping code for the DirectDraw
   subsytem, which now works on every graphic card. 

   3.9.33: Henrik Stokseth updated the mingw32 makefile, the documentation
   and sent in some other related fixes and updates. You will never again
   need MSVC to compile the Allegro DLLs. ;o)

   3.9.33: Peter Puck contributed some updates to Allegro's win32 code
   which got the native mingw32 build fully working.

   3.9.33: Michael Bukin changed the auto-repeat handling in X,
   sched_yield handling for Unix, fixed _add_exit_func, and added list of
   active dialogs to the GUI.

   3.9.33: Vincent Penquerc'h sped up the C versions of the RLE sprite
   drawing routines by quite a bit.

   3.9.33: Peter Wang improved TGA palette loading.

   3.9.33: Laurence Withers made more functions const-correct.

   3.9.33: Isaac Cruz moved Windows bitmap locking to a separate .S file,
   changed the update logic for the windowed driver, and added an accelerated
   vline implementation.

   3.9.33: Stephen Kittelson fixed a bug in pckeys.c, and changed the ASCII 
   values returned for a few weird key combinations.

   3.9.33: Peter Wang made various functions const-correct.

   3.9.33: Peter Pavlovic made aesthetic modifications to the GUI menu
   system.

   3.9.33: Javier Gonzalez suggested that the file and mode selector dialogs 
   should use popup_dialog.

   3.9.33: Vincent Penquerc'h added the install-gzipped-man makefile target,
   patched some of the EINTR handling, and made the OSS driver detect whether
   the device is 16 bit or not.

   3.9.33: Peter Pavlovic modified the Slovak keyboard mapping and made the
   file selector detect available drives in Windows.

   3.9.33: Peter Wang added a sound (output only) driver for BeOS.

   3.9.33: Sven Sandberg fixed a typo in the definition of ustrdup, added
   the uwidth_max function, provided the d_yield_proc function, and made
   various dialogs use it.

   3.9.33: Michael Bukin made the DGA driver clear video memory and centre
   the screen, if it's not fullscreen.

   3.9.33: Eduard Bloch suggested better ways to find the executable in
   Unix.

   3.9.33: Andrew Geers added flipped rotated sprites.

   3.9.33: George Foot made the Unix makefile work for non-root users.

   3.9.33: Grzegorz Adam Hankiewicz made language config files be forced
   to lower case.

   3.9.33: Grzegorz Adam Hankiewicz added documentation for findfirst(), 
   findnext(), and findclose(), and corrected the documentation for 
   get_executable_name().

   3.9.33: Stephan Roh made patches to allow compilation on IRIX.

   3.9.33: John Harger made a change to improve the stability of AllegroGL
   in Windows.

   3.9.33: Sven Sandberg fixed a bug in the plain C 16bpp stretched blitter.

   3.9.33: George Foot fixed a bug in the i386 8bpp masked blit routines, 
   reported by Damian Yerrick.

   3.9.33: Eduard Bloch fixed a freeze caused by the ESD detection code.

   3.9.33: Vincent Penquerc'h added mouse button press/release events to 
   the GUI system.

   3.9.33: Peter Wang solved a conflict with SVGAlib.

   3.9.33: Vincent Penquerc'h added the XCRP and YCRP properties to bitmap 
   objects in datafiles.

   3.9.33: Vincent Penquerc'h made the GUI system not send MSG_DRAW to
   hidden objects.

   3.9.33: Chris La Mantia pointed out that his code for textprintf_right
   had mutated somehow.

   3.9.33: Peter Wang added a workaround for a mouse motion reporting bug 
   in some X servers.

   3.9.33: Eric Botcazou altered the DGA code to work better in 32bpp modes.

   3.9.33: Daniel Nilsson tweaked exstars and exlights

   3.9.33: Isaac Cruz fixed a nasty bug with subbitmap locking, and added
   desktop_color_depth and yield_timeslice support to the Windows version.

   3.9.33: Peter Cech made uisspace() recognise non-ASCII space characters.

   3.9.32: S.Sakamaki added a function for controlling the refresh rate when 
   using the DOS VESA 3.0 driver (this could also be supported by some other 
   drivers if anyone wants to implement that).

   3.9.32: S.Suzuki added DOS drivers for the IF-SEGA /PCI, /PCI2, and /ISA 
   joystick interface cards.

   3.9.32: Fabrizio Gennari added DOS drivers for multisystem joysticks with 
   9-pin connectors (Atari, Commodore 64, MSX).

   3.9.32: Peter Pavlovic improved the support for accented character maps 
   in the keyboard driver.

   3.9.32: Sven Sandberg optimised the GUI listbox scrolling to skip redraws 
   if it can't keep up with the update speed.

   3.9.32: Olly Betts did some work to make cross-compiling the djgpp 
   version work on Linux.

   3.9.32: Isaac Cruz improved the windowed mode ddraw driver, adding 
   support for many different color depth conversions.

   3.9.32: Vincent Penquerc'h added an update selection function to the 
   grabber.

   3.9.32: many bugfixes from various people.

   3.9.32: zipup.sh now generates dependencies entirely using standard Unix 
   tools and gcc, so it can setup all the supported platforms without 
   needing those compilers to be available (ie. I can create Watcom, BeOS, 
   and Mingw32 dependencies all from my Linux machine). This does require a 
   bit of cooperation from the different targets, though: they have to set 
   up their "make depend" target to override the standard gcc defines, and 
   wrap any non-standard header includes with "#ifndef SCAN_DEPEND".

   3.9.32: fixed (I hope :-) bug with non-GMT timezones in the datafile 
   update code.

   3.9.32: rewrote the Unicode usprintf() to piggyback on libc when 
   converting floating point data (too hard to get this right ourselves :-)

   3.9.31: Henrik Stokseth did some work on a native Mingw32 build. This is 
   currently incomplete, and unlikely to work right now since there have 
   been other changes in the Windows code since the version he started from. 
   At the moment this version is statically linked, using makefile.mgs, and 
   makefile.mgw still exists for the MSVC-piggyback version. The ultimate 
   goal is to get this native version building as a DLL in addition to 
   statically linked, at which point we can merge both makefiles into 
   makefile.mgw and remove makefile.mgs. Oh yeah, and there are currently no 
   docs for the native version.

   3.9.31: Greg Hackmann contributed a Borland C++ Builder port. Like the 
   RSXNT and Mingw32 versions, this is a client for the MSVC DLL, and not 
   able to compile Allegro directly itself, but allows you to build Allegro 
   programs using the Borland compiler.

   3.9.31: Robert Ohannessian added MMX optimisation for the 8 and 16 bit 
   clear() functions, and Jose Antonio Luque optimised the 16 bit blit() and 
   masked_blit() routines.

   3.9.31: Vincent Penquerc'h added a yield_timeslice() function (currently 
   implemented in DOS and Unix).

   3.9.31: added a desktop_color_depth() function (currently only 
   implemented in X: a Windows version will follow).

   3.9.31: Isaac Cruz added support for windowed modes in color depths other 
   than the current Windows desktop, and hardware accelerated system bitmaps.

   3.9.31: Jose Antonio Luque improved the Windows joystick driver.

   3.9.31: James Hyman added support for dithering truecolor down to 
   paletted images.

   3.9.31: Chris La Mantia added textout_right(), textprintf_right(), and 
   textprintf_justify() functions.

   3.9.31: Sven Sandberg added a ustrrchr() function, and improved the 
   usprintf() handling of large floating point values.

   3.9.31: Peter Pavlovic added a Slovak keyboard mapping and message 
   translation.

   3.9.31: Manni Heumann fixed some problems with the German keyboard 
   mapping.

   3.9.31: Michael Bukin improved the X keyboard and mouse handling, and 
   fixed some problems with building on non-GNU Unix systems.

   3.9.31: many bugfixes and tweaks from various people (sorry, my typing 
   patience has run out so you don't get a full list :-)

   3.9.31: Peter Wang added input support to the Linux OSS sound driver.

   3.9.31: David Kuhling optimised the i386/gcc fsqrt() code, and added an 
   fhypot() routine.

   3.9.30: fixed the double XOR that was making datafile passwords so easy 
   to reverse. The new code can still read old-style encrypted files, but 
   data written by this version can't be accessed by older copies of Allegro.

   3.9.30: made load_datafile(), load_datafile_object(), and the 
   file.dat#object syntax work correctly in all possible combinations.

   3.9.30: Vincent Penquerc'h added a scare_mouse_area() function.

   3.9.30: changed the DirectX surface locking mechanism, to improve the 
   performance of hardware accelerated drawing.

   3.9.30: George Foot improved the Linux LED code, and made the internal X 
   driver state visible via xalleg.h.

   3.9.30: added EINTR retry handling to read/write calls. I hope I got this 
   right: if anyone who properly groks this stuff could check over file.c, 
   that would be cool.

   3.9.30: made the Windows mouse driver work correctly in windowed mode.

   3.9.30: fixed various problems with Windows foreground/background 
   switching (keys were getting stuck down, timers weren't being paused, and 
   not all the right switching modes were being reported to the caller).

   3.9.30: made the X keyboard handler release all keys when it loses the 
   input focus, to avoid stuck buttons when you alt+tab between windows.

   3.9.30: made the allegro-lib script arguments compatible with the 
   standard used by GTK, ESD, etc, and renamed it to allegro-config. This 
   changes the syntax for linking Allegro programs on Unix: see readme.uni 
   for details of the new method.

   3.9.30: George Foot improved the Unix shared library system.

   3.9.30: Joerg Rueppel added a find_datafile_object() function.

   3.9.30: Peter Wang improved the SVGAlib driver.

   3.9.30: Peter Wang improved the Linux joystick driver.

   3.9.29: made the Windows code agree with other platforms about how video 
   bitmaps are supposed to behave.

   3.9.29: fixed some problems with the Windows mouse wheel support.

   3.9.29: added set_write_alpha_blender(), set_add_blender() and 
   create_blender_table() functions, and made the 32 bit version of 
   draw_trans_sprite() able to use 8 bit source images in conjunction with 
   set_write_alpha_blender(). In addition to being generally useful, using
   these routines makes the sources for my SpeedHack entry much smaller :-)

   3.9.29: added uninstall targets to the Linux makefile.

   3.9.29: made the X windowed mouse driver hide the Allegro cursor when the 
   mouse moves out of our window.

   3.9.29: added a simple timer delay emulation of vsync() to the X code, so 
   that eg. the demo worms game runs sensibly.

   3.9.29: Isaac Cruz added a GFX_DIRECTX_WIN driver.

   3.9.29: Keith Gerdes made some more improvements to the DirectX overlay 
   driver.

   3.9.29: Andrew Geers added scrolling support to the grabber image viewer.

   3.9.29: Peter Wang added an alternative X DGA driver, that includes mode 
   switching support to run in fullscreen mode.

   3.9.29: Peter Wang added a MSG_WHEEL event to the GUI, and made 
   d_list_proc() use it.

   3.9.29: Lucas Vignoli Reis added a Portuguese (Brazil) message 
   translation and keyboard mapping.

   3.9.29: Peter Wang added a Linux OSS MIDI driver for FM synth devices, 
   and mixer support for the OSS digital driver.

   3.9.29: George Foot added scripts for building various Linux distribution 
   formats.

   3.9.29: Michael Bukin fixed the portability problems in quantize.c.

   3.9.29: added a zipwin.sh script for making Windows binary distributions, 
   including a batch file that can compile the MSVC support programs without 
   having any GNU tools installed.

   3.9.29: fixed bug with color font rendering in the Windows version.

   3.9.29: added hardware accelerated rectfill() and hline() to the Windows 
   version, and fixed a couple of accel related bugs (clears were being 
   clipped wrongly, and it was claiming to support XOR drawing even though 
   that isn't supported).

   3.9.29: Michael Bukin fixed bug with X drawing onto screen sub-bitmaps.

   3.9.28: various documentation updates.

   3.9.28: added parameter autodetection to the Unix OSS sound driver.

   3.9.28: made it possible to nest calls to the Unix for_each_file() 
   routine.

   3.9.28: added a load_datafile_callback() function.

   3.9.28: rationalised the sound config variables, so they can be shared 
   between drivers more easily. For instance sb_freq has been renamed to 
   sound_freq.

   3.9.28: Antti Koskipaa added a DOS driver for WSS (Windows Sound System) 
   cards.

   3.9.28: the audiosteam code is now able to merge multiple buffers into a 
   single larger one, so it will still work correctly even if the user 
   supplies a buffer smaller than the current soundcard transfer size. You 
   can even play streams with single byte buffers now, as long as you refill 
   them often enough!

   3.9.28: made the Windows timer code more robust, so it will no longer 
   lock up when you install extremely high frequency callbacks.

   3.9.28: Teijo Hakala added wheel support to the Windows mouse driver.

   3.9.28: Peter Wang added wheel support to the X mouse driver.

   3.9.28: Andrew Geers added -ppassword and -nosound options to the grabber.

   3.9.28: Keith Gerdes fixed the DirectDraw overlay mode driver.

   3.9.28: Isaac Cruz fixed the bug with accelerated drawing onto sub 
   bitmaps of DirectDraw surfaces.

   3.9.28: Peter Wang added banked mode support to the SVGAlib driver.

   3.9.28: Peter Wang fixed some problems with the ESD sound driver, and 
   added an ALSA driver.

   3.9.28: palette fading speed is now timer regulated, to avoid problems 
   with some systems (eg. DGA with non-matching color depth) where it can be 
   excessively slow.

   3.9.28: fixed a couple of different overflow bugs that were causing 
   timers to run slow on heavily loaded Unix systems.

   3.9.28: added a display of author credits to the demo game.

   3.9.28: changed the info page installation system. It now creates a dir 
   file in the same directory as the info page, rather than messing around 
   with symlinks, and autoconf is used to locate the install-info program.

   3.9.28: added an allegro-lib script to the Unix installation, which can 
   be run by makefiles to find the right linker commandline for building 
   Allegro programs.

   3.9.28: added a manpage output format to the makedoc utility. It doesn't 
   work terribly well with apropos due to the lack of a one-line summary for 
   each function, but the basic formatting seems to be ok: please let me 
   know if you see any problems.

   3.9.28: patches from George Foot for Linux console handing, keyboard, and 
   filename manipulations.

   3.9.28: many improvements by Michael Bukin, in particular enhanced 
   performance in X, better X mouse behaviour, and DGA graphics support.

   3.9.27: Robert J. Ragno made some improvements to the Wingman, PSX, and 
   throttle joystick input code.

   3.9.27: Peter Wang added wheel input support to the Linux mouse code 
   (this shows up as a new mouse_z state variable).

   3.9.27: Patrick Hogan made Windows audiostreams work properly.

   3.9.27: Sven Sandberg optimised the spline routines.

   3.9.27: Tomohiko Sugiura added KEY_YEN and KEY_YEN2 Japanese keys to the 
   input handler.

   3.9.27: Chris Robinson wrote a fixed point version of clip3d_f(), called 
   (surprise!) clip3d().

   3.9.27: Sven Sandberg improved the file selector sorting algorithm.

   3.9.27: Henrik Stokseth improved the OS detection in the Windows lib.

   3.9.27: Sven Sandberg made more accurately rounded lookup tables for the 
   fixed point trig routines.

   3.9.27: George Foot made the fbcon driver reset the palette on exit.

   3.9.27: much new X code from Michael Bukin: this stuff is working 
   brilliantly now!

   3.9.27: added the X library path to the Linux liballeg.a wrapper. I think 
   I prefer Michael's idea of having a script to return this info, though, 
   so perhaps we should change across to doing it that way.

   3.9.27: fixed various bugs in both the C and i386 RLE sprite code (mostly 
   relating to lit modes and hicolor formats).

   3.9.27: front-ported various fixes from the 3.12 release, to make 
   WARNMODE=1 compile cleanly with gcc 2.95.

   3.9.27: Knut Pape improved the Mingw32 readme file.

   3.9.26: rewrote the DOS Sidewinder driver, after powerjaw sent me a pad 
   to test it with. It still doesn't work for me in DOS mode, but it is ok 
   under Windows, which is better than before, and as good as any of the 
   other Sidewinder code that I've been able to locate. If anyone has or 
   knows of code that works better than this, please let me know!

   3.9.26: more flexible mode flags for set_color_conversion().

   3.9.26: Robert J. Ragno added a driver for Gravis GrIP devices.

   3.9.26: Gorka Olaizola added a Redhat RPM .spec file.

   3.9.26: Stepan Roh updated the Czech translation and added multiple 
   codepage support to the textconv utility, and a Unicode-aware ustrtod() 
   function.

   3.9.26: added ustrdup() to the Unicode support functions.

   3.9.26: Sven Sandberg optimised the gcc fixed point math routines to 
   collapse constant expressions at compile time.

   3.9.26: Stefan T. Boettner added a proper Linux SVGAlib driver.

   3.9.26: several tweaks from Vincent Penquerc'h (added a datafile merge 
   function to the grabber, GUI bugfixes, optimised spline calculation, fix 
   for 24 bit version of the C drawing code).

   3.9.26: Linux patches from Michael Bukin improve the OSS sound driver, 
   SIGALRM handling, and X keyboard driver.

   3.9.26: many Linux patches from George Foot (fixes to the mouse driver, 
   shared library and configure script, and assorted other stuff).

   3.9.25: fixed pckeys.c to leave sensible data in the key[] array when 
   doing numeral vs. arrow key numlock fakery.

   3.9.25: fixed a bunch of problems with the SWITCH_BACKGROUND mode (I'd 
   stupidly forgotten to disable a lot of graphics driver functions that 
   could do bad things if called when the Allegro console isn't active).

   3.9.25: added pivot_sprite() and pivot_scaled_sprite() functions (thanks 
   to Matt Jallo for the suggestion).

   3.9.25: added ustrerror() to the standard Unicode support functions.

   3.9.25: fixed the d_edit_proc() GUI object to handle shift+tab focus 
   movement properly.

   3.9.25: lots of Linux patches from George Foot (proper fbcon mode 
   setting, different mouse types and setup program support for configuring 
   them, fixes to the shared library support, exedat no longer destroys the 
   file permissions, and probably some other stuff that I forgot about).

   3.9.24: assorted bugfixes to the Linux fbcon and sound code (this is 
   mostly an emergency release because these were broken in 3.9.23).

   3.9.24: James Arthur wrote some docs for the Photoshop-style truecolor 
   blender routines.

   3.9.23: Michael Bukin added an OSS sound driver to the Linux code, and 
   the beginnings of an ESD driver.

   3.9.23: many Linux patches from George Foot, including shared library 
   support.

   3.9.23: Ole Laursen made the Unicode utolower() and utoupper() functions 
   understand the entire 16 bit character set.

   3.9.23: Pavlos Touboulidis made file_select() able to include or exclude 
   files based on their attributes.

   3.9.23: the d_check_proc() GUI object can now print the text to the right 
   of the check, selected by having a non-zero d1 field.

   3.9.23: changed my mind about how GFX_SAFE should work, and removed the 
   color depth emulation bodges. Now, the GFX_SAFE driver may simply change 
   the color depth if it doesn't like what you are requesting, and it is up 
   to the caller to deal with this.

   3.9.23: fixed problems with MMX polygon rendering code in the MSVC 
   version.

   3.9.23: added a strictwarn option to the configure script, and fixed 
   everything that it moaned about. The warnings still aren't all that 
   strict: at some point I want to sit down and make it build cleanly with 
   -W, as well as -Wall -Werror.

   3.9.22: fixed some potential race conditions introduced by my previous 
   fixes to the Windows timer code.

   3.9.22: made set_display_switch_callback() able to install multiple hook 
   functions, added a remove_display_switch_callback() routine, and wrote an 
   exswitch example program.

   3.9.22: adjusted MSVC inline asm syntax in an attempt to work around 
   compiler version conflicts.

   3.9.22: more flexible GFX_SAFE system. As well as defining fixed safe 
   values for each platform, you can now leave out those definitions to get 
   zeros passed through to the actual hardware drivers, and if your driver 
   sets a color depth other than the requested one, graphics.c will hook up 
   some emulation routines so that everything still works in a sensible way.

   3.9.22: George Foot added a scancode to ASCII conversion function to the 
   keyboard driver (implemented for DOS, Windows, Linux, and X). This is 
   needed to handle alt+key input sensibly when using unusual mappings like 
   the Dvorak layout.

   3.9.22: Linux patches from George add better console switching, shared 
   library support, and various other nice things.

   3.9.22: Windows patch from Stefan adds much cool new stuff, including 
   windowed mode support.

   3.9.22: Peter Wang made the Linux GGI driver work properly.

   3.9.22: Johan Venter made some more improvements to the RSXNT and Mingw32 
   makefiles.

   3.9.22: updated the Watcom makefile to allow manual override of the 10.6 
   vs. 11.0 version detection, in case it guesses wrong.

   3.9.21: Windows patch from Stefan adds support for the new screen mode 
   switching system.

   3.9.21: more BeOS patches from Jason Wilkins.

   3.9.21: Johan Venter fixed some problems with the RSXNT and Mingw32 
   makefiles.

   3.9.21: ran "configure --enable-asm=no", and fixed all the reasons why 
   this didn't work. In particular there was a bug in patterned drawing 
   modes, RLE sprites were broken, and I'd forgotten to add C versions of 
   the RGBA sprite functions. Those of you who are interested in such things 
   will be interested to know that the test program thinks the C drawing 
   code is 20% slower at hline(), 10% slower at rectfill(), 50% slower at 
   blitting, and 40% slower at draw_sprite(), which is not at all bad going. 
   It's actually a bit faster at drawing translucent and lit sprites, so we 
   need to have a look at that!

   3.9.21: many new Linux patches from George Foot.

   3.9.21: added VBE/AF support to the Linux code. 

   3.9.21: finished the Linux fbcon driver.

   3.9.21: made Linux console switching work in a more complete manner, with 
   a set of helper functions in dispsw.c. The background mode should work 
   now, but is untested.

   3.9.21: added Linux GGI driver by Carsten Schmidt (this is somewhat out 
   of date, and doesn't work yet, but a good start if anyone wants to hack 
   on it).

   3.9.21: improved the Unix configure and build system. Moved more things 
   into makefile.lst, so there are no file lists anywhere else now. Made it 
   understand how to build the datafile tools, and convert the documentation 
   (this may cause problems for systems without makeinfo: it would be good 
   if someone who groks autoconf could try to do this better). Made the 
   Linux VGA drivers (vga and modex) configurable.

   3.9.21: added ctrl+alt+end abort sequence to the Linux keyboard driver.

   3.9.21: directory structure changes: moved ufile.c into the misc 
   directory, so BeOS can share it. Moved various helper scripts into the 
   misc directory, including a cmplog.pl that compares two test.exe profile 
   logs.

   3.9.21: made the Linux PS2 mouse driver understand the middle button. 
   Added a scaling factor to make it go at a more sensible speed in SVGA 
   modes.

   3.9.20: started working on a driver for the Linux fbcon device. It works, 
   but can't change video mode yet.

   3.9.20: Windows patch from Stefan adds joystick input, and the beginnings 
   of a windowed mode driver.

   3.9.20: moved all filename lists (even the platform specific ones) into 
   makefile.lst, to avoid any duplication and give us a nice centralised 
   place that mentions every single source file we use.

   3.9.20: removed the install_lost_bitmap_callback() function, in favour of 
   the more generic set_display_switch_mode(). Updated the Windows code to 
   use these new routines.

   3.9.20: merged X patch from Michael Bukin (adds mouse support).

   3.9.20: Vincent Penquerc'h optimised the 256 to truecolor graphics 
   blitting code to avoid repeated conversions of the palette table.

   3.9.20: James Hyman added quoting support to get_config_argv().

   3.9.20: Peter Cech optimised the alpha sprite blending routines. Shawn 
   optimised them a bit more by expanding out specialised versions for 
   common pixel formats.

   3.9.20: Richard Davies made some improvements to the PSX joypad driver.

   3.9.20: added a system driver parameter to allegro.cfg, and hooks to make 
   the Unix version look for config data in /etc/ and ~/.

   3.9.20: moved the Posix findfirst() emulation into libc.c, removing it 
   from the autoconf and BeOS specific builds.
 
   3.9.20: more BeOS patches from Jason Wilkins. The graphics stuff be 
   working there now!

   3.9.20: improved the VBE/AF driver to know that vertical lines can be 
   implemented as a rectfill. This enables hardware acceleration for 
   patterned vertical lines, and with drivers that don't have hardware 
   support for the VBE/AF line draw routine.

   3.9.20: George Foot did some major work on the Linux console version, 
   getting it up and running in a fairly convincing way.

   3.9.20: the Windows sound driver lists are now dynamically generated 
   based on the available devices, so you can select which ones to use.

   3.9.19: wrote the first part of an Allegro Hacker's Guide, which is my 
   (probably futile :-) attempt to document at least a few of the more gory 
   parts of the Allegro code.

   3.9.19: finally got around to documenting the Unicode functions.

   3.9.19: more BeOS patches from Jason Wilkins.

   3.9.19: Michael Bukin made some more patches to the X code (timers are 
   implemented now), and added a complete (?) C implementation of all the 
   drawing code. Non-Intel machines, here we come! If you define 
   ALLEGRO_USE_C before building the djgpp library, you can actually test 
   out a pure C version of test.exe, the demo game, etc.

   3.9.19: added a findtext.sh script, which scans the source code and 
   creates a list of all the strings that are available for translation. It 
   can also compare this list against an existing translation file, to see 
   if any new messages need to be added.

   3.9.19: Stepan Roh updated the Czech keyboard mapping for Unicode 
   support, added support for keyconf to use a non-standard font, and added 
   the Latin Extended-A characters (U+0100 to U+017F) to the default font.

   3.9.19: Grzegorz Adam Hankiewicz updated the Spanish translation with
   UTF-8 format (ie. properly accented) strings. Converted the setup program
   font into Latin-1 ordering so that this will display correctly. Fixed bug
   with dat2s not correctly converting the resulting multiple-range font.

   3.9.19: Chris La Mantia made some cosmetic fixes to the d_slider_proc() 
   GUI object.

   3.9.19: Richard Davies added support for N64 joypads.

   3.9.19: added keyboard_ucallback() (I missed this one when I first added 
   the Unicode support).

   3.9.19: made some changes to setup.c so that it can easily be embedded 
   into other programs (thanks to Grzegorz Adam Hankiewicz for the
   suggestion).

   3.9.18: added support for 32 bit RGBA images. You can now read TGA files 
   with an alpha channel into the grabber, or you can import a normal image 
   and then overlay alpha data from any greyscale bitmap. You can save these 
   alpha channels as part of a datafile, call the makeacol(r, g, b, a) 
   function, and most importantly, call set_alpha_blender() and then 
   draw_trans_sprite() to display them. Check out exalpha.c. There is much 
   room to optimise the 15, 16, and 24 bit versions of _blender_alpha*(), if 
   anyone wants to have a go at this. I think it would be profitable to 
   write specific versions for common pixel orderings, and only keep the 
   current generic implementation around as an emergency fallback.

   3.9.18: more Unix patches from Michael Bukin. It builds flawlessly now, 
   even if it doesn't do anything very interesting yet.

   3.9.18: Jason Wilkins contributed the beginnings of a BeOS port (not yet 
   functional, but it does compile).

   3.9.18: Revin Guillen added a position_dialog() function.

   3.9.18: portability improvements: changed makefile to be a generated 
   stub, which normally just includes makefile.all, but can be completely 
   replaced when using autoconf, and moved the emulation for missing libc 
   functions into the shared sources.

   3.9.18: numerous bugfixes.

   3.9.17: Burton Radons changed the truecolor pixel blending functions to 
   use a single callback function rather than the previous table. This may 
   break some old code, but should remain largely backward compatible, and 
   the new way is much more flexible. He also added a more complete set of 
   blender functions, including Photoshop modes like burn, difference, 
   lumincance, etc.

   3.9.17: Richard Davies added support for PSX joypads.

   3.9.17: fixed bug in dat2s handling of truecolor images.

   3.9.17: Jason Wilkins improved the quaternion math routines, and added 
   some documentation for them.

   3.9.17: Neil Townsend added callback parameters to the timer handlers.

   3.9.17: Gunter Ladwig added three-button mouse emulation, which can be 
   enabled using the config file (it defaults to on if you have a two button 
   mouse).

   3.9.16: applied some patches from Michael Bukin, which add the basics of 
   a Unix build system. It doesn't actually work yet, though :-)

   3.9.16: merged new code from Stefan. Lots more cool things are working in 
   the Windows version now, eg. hardware acceleration, triple buffering, 
   sound...

   3.9.16: added an example of how to write a Windows screensaver using 
   Allegro. If anyone knows how to get a proper name to show up in the 
   Windows selection dialog, please let me know! (I've made the stringtable 
   entry that MSDN says you need, but it doesn't work).

   3.9.16: Andy Goth added a d_text_list_proc() dialog object, that lets you 
   alter the selection by typing the first few characters of a list entry.

   3.9.16: Ole Laursen updated the Danish message translation.

   3.9.16: Calvin French added a -w (always update) switch to dat.exe.

   3.9.16: Joerg Rueppel added more flexible wildcard matching for object 
   names in dat.exe.

   3.9.16: added GFX_HW_SYS_TO_VRAM_BLIT and GFX_HW_SYS_TO_VRAM_BLIT_MASKED 
   capabilities flags, and more flexible blitting functions in the vtable.

   3.9.16: added lock_voice() and unlock_voice() methods to the digital 
   sound driver, for implementing audiostreams under Windows.

   3.9.16: _handle_timer_tick() now returns the desired gap until the next 
   interrupt.

   3.9.15: Michael Rickmann added a Mingw32 port. This currently works the 
   same way as the RSXNT version, using MSVC to build the DLL, but will 
   become a full gcc port after the core Windows code stabilises a bit.

   3.9.15: Vincent Penquerc'h added a D_DIRTY flag for GUI objects, and I 
   extended this with a new D_REDRAWME return code for the handlers.

   3.9.15: changed the syntax of the create_color_table() callback. This 
   breaks the API, but is the only way to make it work reliably with 
   different compiler calling conventions.

   3.9.15: added a sub bitmap creation hooks to the vtable structure (so the 
   parent bitmap can be told when it is being cloned).

   3.9.15: "make install" is now a separate target, not run automatically. 
   This means that you now have to run "make" and "make install" as two 
   separate operations, or if you want all three versions of the library, 
   "make all" and then "make installall".

   3.9.15: added an END_OF_MAIN() macro, which makes the WinMain() magic 
   work correctly in any combination of C and C++ code.

   3.9.15: Olly Betts modified the djgpp makefile to support cross-compiling 
   on a Linux machine.

   3.9.15: Andy Goth added a 256x256 tweaked VGA mode.

   3.9.15: major documentation update (from now on I'll be adding a version 
   number to each changelog comment).

   Merged new code from Stefan. Windows version is getting much closer to 
   completion, including mouse support and video bitmaps, although the mouse 
   code isn't working quite right for me at the moment.

   Rewrote fix_filename_path() to avoid calling _fixpath(). The new version 
   is much more portable, although things like reading the current directory 
   across multiple drives need some tweaking to work with different 
   compilers.

   Fixed oodles of things that were stopping the Watcom version from 
   working. It now runs everything without any trouble at all, including 
   such gems as exdodgy and the grabber shell edit! According to test.exe, 
   gcc 2.8.1 is about 10% faster than Watcom 10.6 for most things, although 
   for some reason textout() is about twice as fast in the Watcom version.

   Fixed a bunch of stuff to make the RSXNT version work. All the tests and 
   examples now build with RSXNT, and work identically to the MSVC originals.

   Added quaternion math routines by Jason Wilkins.

   Added more flexible gfx_card config support by Andy Goth.

   Added a masked_stretch_blit() function (trivial change, the code could do 
   it, but the API entry point was missing).

   Added Windows GDI routines by Marian Dvorsky.

   Added a DMA poll to the Soundscape driver, to make sure it can never get 
   out of sync with the transfer.

   Merged various bits and pieces that have been sitting around my hard 
   drive for ages (Swedish and Norwegian translations, various patches from 
   Michael Bukin, new palette generation code by Michal Mertl, Soundscape 
   driver fixes by Andreas Kluge).

   Grabber now knows about and can manipulate Unicode fonts.

   Now passing atexit() as a parameter to install_allegro(), to avoid 
   problems with DLL shutdown.

   Made FLIC player set the dirty variables when clearing the bitmap at the 
   start/loop point (this was sometimes causing the screen not to be cleared 
   from previous contents).

   Fixed several bugs in the grabber.

   Changed the datafile utilities to link the datedit and plugin routines as 
   a proper library. This will make life easier for third parties that want 
   to use those routines (duplicating the plugin linkage isn't much fun).

   Replaced errno references with allegro_errno pointer, to avoid problems 
   with multiple runtimes when linking as a DLL. The MSVC version of dat now 
   works perfectly!

   Added a system_none driver for commandline utilities and other platform 
   neutral situations.

   Made new demo intro animation. My first ever Max rendering!

   Merged Windows patches from Stefan. Whoah! This thing is cool. It works 
   (sort of :-) on two platforms. Now I can die happy....

   The file selector now adjusts for platforms without any directory list 
   (eg. Unix).

   Added a global default_palette (the normal IBM BIOS one), and made 
   set_gfx_mode() select it.

   Modified DIGMID driver to avoid using 64 bit ints or floating point in 
   the interrupt handler.

   Added ASSERT() and TRACE() debugging routines, and lots of asserts 
   throughout the library code.

   The default truecolor pixel format before setting a video mode is now BGR 
   rather than RGB. This should help to shake out bugs in BGR support, and 
   catch any errors where people load graphics before setting a video mode.

   Fixed fmul() overflow detection bug.

   Rewrote gpro.c and sw.c to avoid using inline asm. The SW code is 
   currently very ugly (literal translation of the asm routine), but I'm 
   keen to improve it given some testing feedback. If you have a Gamepad Pro 
   or Sidewinder, and were able to use it with the Allegro 3.11 driver, I 
   would _really_ like to hear whether this current code works for you or 
   not...

   Numerous changes to make the support programs more portable.

   Added a get_executable_name() function.

   The sound.cfg file is no longer supported. Use allegro.cfg instead.

   Added versions of the inline _putpixel() and _getpixel() for all color 
   depths.

   The check_cpu() function is now called automatically by allegro_init().

   Added system bitmap objects, which exist in system memory but are 
   accessed in a similar way to video memory surfaces (this can enable 
   better hardware acceleration on some platforms).

   Added enable_triple_buffer(), timer_can_simulate_retrace(), and 
   timer_is_using_retrace() functions. This enables programs to correctly 
   handle the interrelationship between mode-X triple buffering, the retrace 
   sync mode, and the current OS, without having to include any DOS specific 
   code.

   GUI routines now call the input polling functions and acquire/release the 
   screen as appropriate.

   Fixed a real show-stopping error that was causing VBE/AF crashes on some 
   machines (calling driver functions with non-flat memory selector in %es).

   Added an allegro_message() function.

   Added dummy bank switch routines that can emulate linear access to a 
   mode-X screen, albeit rather slowly. The only practical result from this 
   is that polygon routines work in mode-X now, but it helps to make things 
   more robust in general (if a routine doesn't know about mode-X, now it 
   will just run more slowly than usual, rather than not working at all).

   The SB, Adlib, and standard joystick drivers now properly have a separate 
   instance for each variant of the hardware, rather than a single driver 
   pretending to exist under multiple different ID codes.

   Rewrote joystick polling to avoid inline asm.

   Converted translation files into UTF-8 format. These can now use any 
   Unicode characters they like, so accented vowels etc. can safely be used.

   Keyboard scancodes have changed from the hardware format to an abstract, 
   Allegro-specific encoding. This simplifies the code a great deal, and 
   avoids hassles with two different keys generating the same scancode.

   Added generic find_allegro_resource() function, which removes a lot of 
   duplicated code from config.c, digmid.c, and pckeys.c.

   Timer module now autoinstalls whenever someone tries to use it.

   Keyboard functions can now alter the repeat rate.

   Watcom port.

   Added a special GFX_SAFE driver ID.

   Now using VDS to detect win95 even when in stealth mode.

   Added fixver.sh for patching version numbers and dates when releasing a 
   new version (requires bash, fileutils, shutils, etc, to run on DOS).

   Added zipup.sh for building a distribution zip and diffs, which 
   automatically cleans up the tree ready for this (eg. pregenerating the 
   dependency files for all supported compilers).

   Added input polling functions.

   Major code restucturing, added system drivers, new framework for input 
   handling, timers, keyboard scancode conversion, file access, etc.

   Added full support for Unicode text, including string manipulation 
   functions, a new font format, the textconv utility, a new GUI MSG_UCHAR, 
   and a ureadkey() function.

   Added variable sized monochrome fonts, replacing the the old 8x8 fixed 
   size format. As a result, the GFX_HW_TEXTOUT_FIXED capabilities flag has 
   been renamed to GFX_HW_GLYPH.

   New system for accessing video memory, using bmp_select(), bmp_write*(), 
   and bmp_unwrite_line(). This is equivalent to the djgpp farptr functions, 
   but portable to different platforms.

   Drastic reorganisation of directory structure, makefile system, etc.

   Enhanced the makedoc utility to simplify adding links and email addresses 
   to the docs.

   Added a bodge to make the VESA code work with broken S3 Trio64 drivers.

   Removed the 386DX vs. 386SX processor detection code (it was sometimes 
   crashing).



==============================================================
============ Changes from 3.11 to 3.12 (Aug 1999) ============
==============================================================

   Fixed a few incompatibilities with gcc 2.95. This release is otherwise 
   identical to 3.11.



=============================================================
============ Changes from 3.1 to 3.11 (Feb 1999) ============
=============================================================

   Cleaned up a few places where memory wasn't getting freed during the 
   system shutdown. A cosmetic detail since the OS will free it for us, but 
   it is nice to get these things right.

   Alessandro Monopoli added an Italian translation of the system messages.

   Henrik Stokseth added code to distinguish between win95 and win98.

   Creative Labs have been removed from the THANKS file, because of their 
   refusal to release any specs on the SB Live soundcard.

   Changed the name of the library. After years of thinking that Allegro was 
   a word with no particular meaning, I realised that it is in fact a 
   recursive acronym for "Allegro Low Level Game Routines".

   Established a new mailing list (conductors@canvaslink.com) for use by the 
   people currently working on Allegro. Please send code contributions to 
   this list rather than directly to me (Shawn Hargreaves), because this 
   will allow Allegro development to continue even if I'm not around or am 
   busy with something else at the moment.

   Andreas Kluge wrote a driver for Ensoniq Soundscape cards.

   More localisation: Swedish message translation by Sven Sandberg, Anton 
   Ragnarsson, and Erik Sandberg, Finnish message translation by Antti 
   Haapala, and Russian message translation and keyboard mapping by Dmitriy 
   Kazimirow.

   The midi_out() function now correctly updates the pan/volume/bend 
   controller status.

   Kester Maddock added a Wingman Warrior joystick driver.

   Fixed some problems with the Sidewinder, Gamepad Pro, and SNES joypad 
   drivers.

   Changed the SB16 driver to use signed 16 bit output mode, rather than the 
   previous unsigned format. Hopefully this will improve compatibility with 
   crappy clone hardware.

   Added a new WARNMODE environment switch to the makefile. Allegro 
   developers should all set this to get strict warnings, but it will be 
   left off by default so that the distributed version will be more 
   forgiving about different compiler/libc versions.

   Fixed problem with reading the top and left positions on digital joystick 
   devices.

   Fixed (I think, still waiting accurate confirmation on this one :-) 
   problem with timers running too fast on some motherboards.

   Fixed stupid bug where get_align_matrix() wasn't bothering to zero the 
   translation vector.

   Fixed stupid bug where rotated sprites were coming out upside down in 
   mode-X and hi/truecolor modes.

   Fixed bug where dat utility was truncating long filenames to 8.3 format.

   Renamed the ChangeLog file to CHANGES, to avoid problems on 8.3 systems.

   Various other minor bugfixes.



============================================================
============ Changes from 3.0 to 3.1 (Jan 1999) ============
============================================================

   Changes between the 3.1 beta and final releases: assorted bugfixes, 
   Antoine Mathys added a Swiss keyboard mapping, Thomas Wolf added a German 
   translation of the system messages.

   Changes between the 3.1 alpha and beta releases: assorted bugfixes, FLIC 
   routines can now read from datafiles, included rotation optimisations by 
   Ivan Baldo.

   Peter Cech added support for hot-swapping between a custom keyboard 
   layout and the standard US mapping.

   Neil Townsend improved the accuracy of the timer routines.

   Added exlights.c example program, showing one way to do colored lighting
   effects in a hicolor mode (and also because it makes the total number of 
   examples a nice round number :-)

   Added an afinfo test program, which does the same thing as vesainfo but 
   for VBE/AF drivers.

   Michael Bukin made a lot more portability patches and some bug fixes, 
   including some improvements to the FLIC player and a much more rational 
   filename handling system.

   Removed the chipset-specific SVGA hardware drivers from the main library 
   distribution. Instead, these will now be available both as an optional 
   addon package, and reformatted as part of the FreeBE/AF project.

   Added FreeBE/AF extensions support to the Allegro VBE/AF driver (farptr 
   access to video memory, and the libc and pmode exports needed for future 
   compatibility with the SciTech Nucleus drivers).

   Fixed a bug with the patterned and translucent vline() function in 15 bit 
   color depths.

   Fixed a NULL pointer dereference bug in the config routines.

   Fixed an order of processing bug that was causing data to be lost when 
   calling set_config_file() with the same filename as the current config.

   Stepan Roh added a Czech translation of the system messages.

   Ole Laursen added a Danish translation of the system messages.

   Grzegorz Ludorowski made a new demo game intro animation.

   Calin Andrian added 3d polygon timing routines to test.exe.

   Peter Cech added grabber support for the 8x8 BIOS font format.

   Stepan Roh added a Czech keyboard mapping.

   Renamed the Spanish language translation file from SP to ES.

   Calin Andrian added a complete set of truecolor polygon rendering 
   routines, with support for MMX and 3DNow! optimisations and a new masked 
   lit drawing mode, along with a new polygon clipping function. One minor 
   change is that POLYTYPE_FLAT mode is now implemented by calling hline(), 
   so it will respond to the current drawing_mode() settings.

   Changed the graphics/sound/joystick driver ID numbers from a zero based 
   list to a descriptive 4-character string, to make them more readable and 
   flexible. Added config functions to read/write data in this format. The 
   sound config data is backwardly compatible, but you will need to manually 
   update any graphics or joystick driver numbers that are stored in your 
   config files.

   Michael Bukin contributed a _lot_ of patches to improve the portability 
   and robustness of pretty much the entire library. The only externally 
   visible change is that the macros used for declaring hardware driver 
   lists have been redesigned to use a more portable syntax, although the 
   old syntax is still available as a compatibility macro.

   Burton Radons did some more optimisation of the truecolor pixel blending 
   functions.

   Martijn Versteegh added a hook mechanism for extending the config file 
   system, which can be used to provide extended system status information 
   or customisation routines for addon packages.

   Redesigned the grabber and dat utilities to support source-code "plugin" 
   modules, which can be used to extend the system with additional object 
   types, import/export routines, and menu commands.

   Ivan Baldo added a dithering option to the 15/16 bit color conversion 
   routines.

   Kerry High added a SNES joypad driver.

   Added a font override to the d_text_proc() and d_ctext_proc() GUI 
   objects, using the dp2 field to specify a custom font.

   Michael Tanczos fixed some bugs in the FLIC player.

   Cloud Wu optimised the truecolor pixel blending functions.

   Paul Pinault added a French translation of the system error messages.

   Grzegorz Adam Hankiewicz added a Spanish translation of the system error 
   messages, and added a new (but undocumented :-) command line option to 
   the demo game.

   Fixed clicks in the interpolated sample mixing.

   Fixed a bug with position_mouse() not updating the mouse_pos variable.

   Fixed a bug in mode-X horizontal scrolling while the timer retrace 
   simulator is active.

   Added a language.dat file, which can be used to provide translated 
   versions of system strings (eg. error messages), in a similar way to the 
   existing keyboard.dat. If you want to use this mechanism from your own 
   code, replace all your constant strings with calls to 
   get_config_text("string"). This allows them to be translated by including 
   a line of the form "string=foreignstring" in the relevant section of 
   language.dat.

   Added an ASCII name field to the keyboard mapping files, in order to make 
   the setup program a bit more friendly.

   Increased the maximum number of sound channels from 32 to 64.

   Modified the DIGMID patch loader to support 16 bit samples, rather than 
   just reducing everything to 8 bit.

   Added an interpolation option to the sample mixer (quality=2).

   Salvador Eduardo Tropea added support for proper 16 bit sample mixing 
   (quality=1).

   Lee Killough added a lower level hook routine to the keyboard handler.

   Removed floating point code from the DIGMID driver, to avoid potential 
   FPU stack overflows.

   Jim Flynn removed floating point calculations from the AWE32 MIDI driver 
   (these could sometimes cause stack overflows).

   Salvador Eduardo Tropea improved the datafile system to avoid linking of 
   unused code.

   Romano Signorelli contributed a Bresenham arc plotting function.

   Thomas Wolf corrected some errors in the German keyboard mapping file.

   Grzegorz Adam Hankiewicz improved the excolmap example program.

   Sven Sandberg optimised the fixed point trig routines.

   Fixed some silly crash bugs in the joystick code.

   Added a "compress" target to the makefile, based on a suggestion 
   by Grzegorz Adam Hankiewicz.

   Added dummy bitmap acquire/release functions to allegro.h, for 
   compatibility with the Windows version.

   Added a cross-reference facility to the Info format documentation.

   Martin Fuller fixed an obscure bug in the reading of compressed .bmp 
   files.

   The emergency exit signal handler now correctly restores the previous 
   handler, rather than resetting to the default action.

   Sven Sandberg optimised the create_light_table() function.

   George Foot fixed a bug when the get_mouse_mickeys() routine was called 
   with both parameters pointing to the same value.

   Changed the licensing terms from "swapware" to "giftware". See the 
   Allegro website for an explanation of the reasons for this change.

   Added yet more overloaded operators (this time for long and double types) 
   to the fix class.

   Marius Fodor added support for the Sidewinder and Gravis GamePad Pro. 
   Many apologies for my taking so long to merge in this code!

   Stefan Schimanski optimised the reverse blitting routine (for overlapping 
   images).

   Added a shift+tab reverse focus movement key to the GUI routines.

   Grzegorz Adam Hankiewicz added a new example showing how to create and
   use a custom color mapping table.

   Totally revamped the joystick system (better API and new driver 
   structure).

   Modified the fix class to work properly with gcc 2.8.0.

   Added a help.txt "how to get tech support" file.

   The midi_pos variable is now negated, rather than cleared to -1, at the 
   end of a MIDI file. This can be used for measuring the length of a file.

   Added a rendering hook to the font structure, for use by text addon 
   packages.

   Improved the VBE/AF text output routine.

   Corrected an error in the way the VBE/AF driver interprets hardware 
   cursor colors.

   Pedro Cardoso contributed a tweaked 80x80 VGA mode.

   The VBE/AF driver now supports dumb framebuffer drivers as well as 
   accelerated ones.

   Added more accelerator support to the VBE/AF driver (hardware cursors, 
   lines, vertical lines, triangles, fixed width text output, and 
   opaque/masked blitting from system memory to the screen).

   Added a scare_mouse() function, based on ideas by Martijn Versteegh.

   The grabber now stores the "grab from grid" dialog state in allegro.cfg.

   Sven Sandberg fixed a problem with save_bitmap() widths being rounded 
   upwards.

   Made the _timer_installed flag globally visible.

   Ove Kaaven added linear framebuffer support to the native mach64 driver.

   Erik Sandberg optimised the 8 bit draw_sprite() and draw_trans_sprite() 
   functions.

   Michal Mertl fixed a memory leak in the generate_optimized_palette() 
   function.

   Added an ALLEGRO_DATE version define to allegro.h.

   Michael Bukin optimised the line drawing routine and fixed problem with 
   the inline asm constraints for fadd()/fsub().

   Fixed potential problems caused by a lag between the mouse state 
   variables changing and the pointer being redrawn.

   Michal Mertl optimised the clipping code for lines, rectangles, and 
   circles.

   Maiolino Carmelo contributed an Italian keyboard mapping.

   Fixed lockup problems caused by the keyboard LED functions on some 
   platforms/hardware.

   Added new create_video_bitmap() and show_video_bitmap() functions.

   Added a profile option to the test program.

   The keyboard handler now correctly updates the BIOS state for the right 
   control and alt keys when it shuts down.

   Fixed a problem that was preventing the DIGMID driver from reading patch 
   sets stored in executable appended datafiles.

   Changed the default sample priority from 255 to 128.

   Fixed some problems with virtual screen sizes in the VBE/AF driver.

   Added two new example programs.

   The VBE/AF driver now has full support for hardware accelerated drawing.

   Added VBE 3.0 support, including new triple buffering routines.

   Wrote a routine to select the sound input source (microphone, line input 
   or CD audio).

   Added proper support for stereo samples. This requires an extra parameter 
   to the play_audio_stream() function, so you will need to change any 
   programs that use this. I'm very sorry for breaking your old code!

   Fixed bugs with the SB16 autodetection and 16 bit sample recording.

   Added input support to the raw SB MIDI interface driver.

   Wrote a new test program to demonstrate the audio input features.

   Ove Kaaven added support for MIDI and audio (sampled sound) input.

   The pack_fopen() function now understands nested datafiles as directory 
   structures, using filenames like "graphics.dat#level1/sprites/zdurgle".

   Charles Mac Donald showed me how to set a 160x120 VGA mode, and more 
   reliable 400x* mode-X resolutions.

   Guilherme Silveira and Theuzifan Sumachingun both independently modified 
   the file selector to only list valid drive letters.

   Carsten Sorensen added a driver for the ESS AudioDrive soundcard.

   Przemek Podsiadly added hicolor versions of the 3d polygon routines.

   Ove Kaaven added truecolor support to the native ATI mach64 driver.

   Patrick Hogan added a draw_gouraud_sprite() function.

   Ben Chauveau added a driver for Tseng ET6000 cards.

   Marco Campinoti added truecolor support to the native Tseng ET4000 driver.

   Marco Marmulla added 16 bit support to the load_voc() routine.

   Added Danish, Swedish, and Norwegian keyboard mappings.

   Added GUI hook functions for scaling or offsetting the mouse position.

   Fixed bug which was causing a lockup when calling set_leds(-1).

   Michael Bevin optimised the create_trans_table() function.

   It is now possible to display a mouse pointer without the mouse handler 
   needing to be installed.

   Added a create_sample() function.

   Made the _blender_map pixel blending functions and the _mouse_installed, 
   _keyboard_installed, and _sound_installed flags globally visible.

   Added an 8-button joystick mode.

   Chris La Mantia fixed a minor visual problem with the d_icon_proc().

   Added a Rich Text Format (.rtf) version of the documentation.

   Added postfix increment and decrement operators to the C++ fix class, and 
   the unary negation operator is now const-correct.



=====================================================================
============ Changes from 3.0 beta to release (Dec 1997) ============
=====================================================================

   The pat2dat utility can now import instruments from AWE32 SoundFont files.

   Optimised the DIGMID patch loader and fixed a couple of bugs.

   Ove Kaaven fixed the ATI mach64 driver.

   The config file can now mention several possible video drivers, using 
   lines in the form gfx_driver=x, gfx_driver2=x, etc.

   Improved the native SVGA driver helper functions, making it easier to add 
   truecolor support to the register level drivers.

   Double-clicking on a font object in the grabber now allows you to view 
   the extended characters as well as normal ASCII.

   Markus Oberhumer corrected a potential problem with the Video-7 
   initialisation code.

   Markus Oberhumer, Bitland, and Sormuras all sent me mapping tables for 
   the German keyboard layout. Coordination of effort: who needs it? :-)

   Mathieu Lafon improved the French keyboard mapping.

   Fixed some bugs in the MIDI voice allocation system.

   Added a -k (keep names) option to the dat utility.

   The setup program now uses the ALLEGRO environment variable to locate the 
   keyboard.dat file.

   Fixed a problem with < and > characters in the HTML documentation.



=================================================================
============ Changes from 2.2 to 3.0 beta (Nov 1997) ============
=================================================================

   Merged in George's improved instrument parameters for the AWE32 driver.

   The pat2dat utility can now reduce sample data from 16 to 8 bits (saves 
   space, and the DIGMID driver only uses 8 bits in any case).

   Added yet another version of the mouse handler, this time in an attempt 
   to make it work more reliably under Windows NT.

   Frodo Baggins added a mapping table for Portuguese keyboards.

   Added an external tool "shell" function to the grabber.

   Added a "box grab" function to the grabber, which uses a color #255 
   bounding box to determine the extent of the sprite to grab.

   Santeri Saarimaa added a Finnish keyboard mapping.

   Finished writing the pat2dat utility, and the DIGMID driver is working a 
   lot better now.

   Mathieu Lafon added support for the Pause and PrtScr keys, and changed 
   the key[] array to a bitfield indicating whether either or both of the 
   normal and extended versions of the key are pressed. This remains 
   compatible with the "if (key[KEY_*])" syntax, but also allows you to 
   distinguish between, for example, the Enter key on the numeric pad and 
   the one next to the right shift key.

   Fixed a bug in the handling of config variables that don't belong to any 
   section.

   The makefile now tries to detect and warn people about some of the more 
   common installation errors.

   The HTML version of the documentation now uses a short .htm file 
   extension if it is built on a system with LFN disabled.

   Keyboard mapping files now only bother saving the entries that differ 
   from the default US mapping. This makes the maps a great deal smaller!

   Changed the default font and keyboard mapping tables from DOS codepage 
   437 to the standard ISO charset (first part of Unicode). If you have made 
   a keyboard config using the old codepage it will need to be updated, but 
   don't worry, I have a script that can do this very easily.

   Fixed a bug in the detection of font formats (fixed or proportional) when 
   grabbing from a bitmap font.

   Added an editable loop point to the MIDI player (thanks to George for 
   sorting out how to do this...)

   Rewrote the mouse handler to track the position itself, using only the 
   mickey counters from the int 0x33 driver. Hopefully this will fix the 
   problem with buggy Logitech drivers...

   Added a mouse_pos variable containing both the X and Y values in one 32 
   bit location, to allow a single instruction read during tight polling 
   loops.

   The grabber now supports multiple selection, and has a new "ungrab" 
   command that copies from a bitmap object into the scratch buffer (you can 
   use this to generate palettes from truecolor images, or to re-grab a 
   smaller area from the image).

   Added multiple selection abilities to the GUI listbox object.

   Theuzifan improved the cpu detection for Cyrix chips.

   Mathieu Lafon added a French keyboard mapping.

   Richard Mitton wrote an example program demonstrating how to fake a 12 
   bit truecolor display on an 8 bit card.

   Michal Mertl added a routine for generating optimised palettes for a 
   specific truecolor image.

   Optimised the getr/g/b() functions. Converting between different color 
   depths should be much faster now...

   Scott Harrison added code to detect OpenDOS, and use the i_love_bill mode 
   if their version of EMM386 is in use.

   Added some new example programs.

   The makedoc utility now converts between the DOS and Windows extended 
   character sets when producing HTML output files.

   Ettore Perazzoli made a spectacular optimisation to the linear -> 
   mode-X blitting function.

   Added a grid option to the dat utility, to specify which region of a 
   bitmap you want to grab.

   Fixed a bug in blitting truecolor bitmaps onto mode-X destinations.

   Fixed a bug that was preventing the Adlib volume from being changed when 
   only MIDI sound drivers were installed.

   The grabber can now be run in video modes other than 640x480 (it doesn't 
   look very nice in lower resolutions, though :-)

   Added a new fake scancode for the extended / key (the one on the numeric 
   keypad) so that the two keys can be distinguished from each other.

   Joaquin Hierro Diaz made a mapping table for Spanish keyboards.

   The setup utility can now be used to select a keyboard layout and to 
   calibrate the joystick, as well as for the sound hardware.

   Moved some of the documentation to different locations, so hopefully 
   people will now be less likely to miss the faq.txt, and to bring it 
   closer in line with the standard GNU distribution format.

   Better keyboard configuration system. There is now a proper utility for 
   setting up the mapping tables, the tables can be read from external 
   files, and it properly supports the alt-gr and accent escape keys.

   Menu items can now be disabled, have check marks next to them, and 
   support right aligned text eg. for displaying keyboard shortcuts, there 
   is a new "void *dp" field in the menu structure, and the click callback 
   routines can now use the global pointer "active_menu" to determine which 
   option they were called by, if a single routine is shared by several menu 
   items.

   Peter Palotas added an input callback to the keyboard routines, and event 
   flags to the mouse callback.

   Added a -pal option to the dat utility.

   Grzegorz Ludorowski made some new graphics for the demo game.

   Moved some code to new files and added a bunch of macros so you can 
   remove unused graphics and sound drivers at link time.

   Fabian Nunez added support for the Logitech Wingman Extreme joystick.

   Chris La Mantia contributed a d_slider_proc() dialog object.

   Sean Gugler added a routine for changing the keyboard LED state.

   George Foot added pause and seek functions to the MIDI player.

   Added the ability to append datafiles (in fact any files at all) onto the 
   end of your program executable.

   Merged in the AWE32 driver. Long live George!

   Can now read RLE compressed TGA files.

   Added a mouse movement callback function (useful for detecting double 
   click events).

   Stefan Eilert added support for dual joysticks.

   Seymour Shlien contributed a routine for drawing justified text.

   Krzysztof Krzyzaniak contributed a loader for .VOC sample files.

   Added a rotate_scaled_sprite() function.

   Now supports the Dvorak keyboard layout.

   Salvador Eduardo Tropea added a 320x100 VGA mode.

   Implemented translucent and lit sprite and RLE sprite drawing functions 
   for the truecolor modes.

   Updated the sound setup utility.

   The dat utility can now output makefile dependencies for automatically 
   rebuilding the file when any of the source data changes.

   Fixed some problems with the RGB <-> HSV conversion functions.

   Truecolor image loading and grabber support.

   Phil Frisbie provided some code to detect the CPU type.

   Michal Mertl added 24 bit graphics modes. Hurrah!

   Added functions for playing streams of digital audio data.

   Chris La Mantia contributed a bitmap icon GUI object.

   Doug Eleveld added a text box GUI object, plus an improved help system 
   for the grabber.

   Added support for UK and AZERTY keyboard layouts. More can easily be 
   added if you send me the appropriate scancode -> ASCII mapping tables...

   Added get_align_matrix(), qtranslate_matrix(), and qscale_matrix() 
   functions.

   Added a draw_character() function for using sprites as monochrome pixel 
   masks.

   It is now safe to pass the same matrix as both input and output to the 
   matrix_mul() function.

   Paul Bartrum contributed some ellipse drawing functions.

   Added some callbacks to the MIDI driver, allowing you to hook your own 
   code into MIDI notes or marker events.

   Added a function to measure mouse movement in terms of mickeys 
   (difference since the last call) as well as in absolute screen 
   coordinates.

   VolkerOth made the d_edit_proc objects able to scroll, if the string is 
   larger than the available space.

   Added the ability to distinguish between the left and right Control and 
   Alt keys.

   Fabian Nunez added support for the extra keys on a Microsoft keyboard.

   Added void *dp2 and void *dp3 fields to the dialog structure. This 
   ought not to break any existing code, but will let you store a lot more 
   data when creating custom objects.

   The packfile functions can now directly open and read from datafile 
   member objects, using fake filenames in the form "filename.dat#obj_name". 
   This means that all the Allegro file access routines (eg. load_pcx() and 
   set_config_file()) can now read from datafile objects as well as separate 
   files.

   Added miditest and digitest programs to allow more rigorous testing of 
   the sound routines and patch sets, and a vesainfo program to check which 
   video modes are available on any given card.

   Jan Hubicka wrote a faster version of create_rgb_table().

   The grabber now scales the bitmap preview if the image is too large to 
   fit onto the screen.

   Jorrit Rouwe provided a new and much cooler set of FM instrument 
   definitions for the Adlib MIDI driver.

   Added a function to load .IBK patch sets for use by the Adlib driver.

   Added a wrapper allegro/ directory around the contents of the zip file, 
   so it can now be safely unzipped into the main djgpp directory.

   Richard Mitton added support for 6-button joysticks.

   Truecolor (15, 16, and 32 bit) graphics modes.

   Vastly improved sound routines (more flexible API, now supports up to 32 
   simultaneous voices on the SB, sample-based MIDI playback driver, can 
   reverse samples, volume/pan/pitch sweep effects, MIDI commands can be 
   output on the fly as well as played from MIDI files, and lots of other 
   goodies).

   It is now possible to update the status of GUI dialogs incrementally from 
   your own control loops, with an update_dialog() function, rather than 
   completely transferring control to do_dialog().

   Compressed files (including grabber datafiles) can now be encypted with a 
   password.

   Added a masked_blit() function, that skips zero pixels.

   Added code to detect being run under Linux DOSEMU, and use the less 
   demanding version of the timer code if this is the case.

   Added a standardised configuration mechanism. The format for saved 
   joystick calibration information has changed, so existing joystick files 
   are no longer valid.

   Added a textprintf() routine, which uses a printf() style format string.

   Added a TexInfo version of the documentation (thanks for the help, 
   Francois!)

   Jonas Petersen added a save_bmp() function, and support for the OS/2 BMP 
   format.



=============================================================
============ Changes from 2.11 to 2.2 (Feb 1997) ============
=============================================================

   TBD/FeR added tweaked 320x600 and 360x600 resolutions to the mode-X 
   driver.

   Matthew Bowie added support for 4-button joysticks.

   Dave Thomson added RGB <-> HSV conversion functions.

   Added a 'freeze_mouse_flag' variable, that can be used to lock the 
   pointer to a specific position.

   Added a 'key_led_flag' variable, that can be used to prevent the keyboard 
   LED's updating in response to the capslock, numlock, and scroll-lock keys.

   The midi player now resets midi_pos to -1 when the music finishes playing.

   Adrian Oboroc wrote an LBM loader.

   Fonts can now contain characters above ASCII 127.

   Chris Wigman made a better intro animation for the demo game.

   Added translucency, color blending, and lighting routines (based on code 
   by Owen Embury and ideas by Nathan Albury).

   Added 3d math and matrix manipulation functions.

   Added texture mapped and gouraud shaded polygon drawers.

   Tim Gunn contributed code for reading and writing TGA files.

   Fixed clamping problems with rotating non-circular sprites.

   Added scrollbars to the GUI listbox object.

   Seymour Shlien wrote a bezier spline drawing function.

   Added fixed point fadd() and fsub() functions, which check for overflow.

   Added pack_fseek() and chunk manipulation functions to the file routines.

   Improved datafile structure and grabber program.

   Wrote a utility to convert grabber datafiles into linkable asm code.

   Salvador Eduardo Tropea improved the keyboard routines (better handling 
   of extended scancodes, keyboard LED support, capslock and numlock, and 
   alt+numpad input).

   Fixed the packfile functions and file selector to work with long 
   filenames under win95.

   Seymour Shlien contributed a BMP reader.

   Added a hook function to the keyboard code, allowing you to use the GUI 
   code without installing the keyboard handler.

   Fixed a lockup caused by trying to access non-existent floppy drives.

   Francois Charton wrote a driver for Paradise graphics cards.

   Chris La Mantia contributed a radio button GUI dialog object and added a 
   D_DISABLED object flag.

   Markus F.X.J. Oberhumer fixed the Video-7 scrolling function.

   Converted the docs into HTML format.

   Added code to detect Windows NT.

   Mark Habersack added support for newer Trident chipsets.

   Did some more work on the VBE/AF driver (it now works, but still doesn't 
   support accelerated hardware features).

   Fixed bugs in the WAV sample reader and FLIC player.

   Added special 'windows friendly' mode to the timer code. You can now even 
   run demo.exe under Windows 3.1!

   Reorganised directory structure, to allow for a Linux version. The output 
   liballeg.a is now found in lib/djgpp.

   Added support for 8x16 BIOS format fonts.

   Fixed a problem with overflow when rotating large sprites.

   Fixed a problem with restoring the text mode screen height after running 
   Allegro programs.



=============================================================
============ Changes from 2.1 to 2.11 (Nov 1996) ============
=============================================================

   Fixed bug in bank.S.

   install_mouse() now sets the range to (0,0,SCREEN_W,SCREEN_H).

   install_sound() does not automatically set the volume to maximum.

   Added ++ and -- operators to class fix.

   Makefile now copies liballeg.a to lib, and allegro.h to include.

   Made a few changes to work under LFN=y (if you use unzip or winzip
   instead of pkunzip).

   Added manifest.

   Clarified installation instructions.



=============================================================
============ Changes from 2.0 to 2.1 (June 1996) ============
=============================================================

   Mode-X support (thanks to Jonathan Tarbox and Dominique Biesmans for 
   suggesting and then helping to implement this).

   Compiled sprites.

   Jonathan Tarbox contributed an FLI/FLC player.

   Added patterned drawing modes.

   Added a vertical retrace interrupt simulator.

   polygon() can now handle concave and self-intersecting shapes. I also 
   changed the parameters a bit. Sorry if this breaks your old code, but 
   it's more efficient the new way...

   Added stretch_sprite().

   Wrote a floodfill() routine.

   More flexible palette fade routines.

   Added set_volume() to the sound code.

   David Calvin wrote a sound setup utility.

   Improved the GUI. Added popup/dropdown menus, joystick input, three 
   button alert boxes, better handling of arrow key focus movement, a new 
   keyboard shortcut object (d_keyboard_proc()), and '&' markers in strings 
   to display keyboard shortcuts. The GUI can also now be used with fonts 
   other than the standard 8x8 default, by altering the global 'font' 
   pointer.

   Fabian Nunez added support for the CH Flightstick Pro joystick (looks 
   cool: I want one :-) and 3-button mice.

   The keyboard handler now responds to the state of the ctrl and alt keys, 
   and there is a new simulate_keypress() function.

   Mark Wodrich added sub-bitmaps, which share their memory with a parent 
   bitmap but can be positioned anywhere within it, and have their own 
   clipping rectangles.

   Mark also modified the mouse driver to double-buffer the pointer (so it 
   doesn't flicker any more), and added a set_mouse_sprite_focus() function.

   Added set_mouse_range() and set_mouse_speed() functions.

   Thanks (again) to Mark Wodrich, the grabber can now import GRX .FNT files.

   The grabber can now make backups when saving datafiles, and it only 
   writes the datafile headers if their contents have changed, to prevent 
   unnecessary recompilation.

   Added a text_height() function.

   The fixed point inverse sin and inverse cos functions now use lookup 
   tables, which makes them a lot faster.

   Reorganised the directory structure, added some example programs, and 
   improved the documentation.



=======================================================================
============ Changes from 2.0 beta to release (March 1996) ============
=======================================================================

   Marcel de Kogel fixed some problems with the MPU-401 driver. It now 
   actually works :-)

   Marcel also provided some better drum sounds for the Adlib driver.

   Inlined the fmul() and fdiv() functions.

   Much faster fsqrt(), taken from Arne Steinarson's fix-float library.

   Added inline bmp_write_line(), bmp_read_line(), and _putpixel() functions.

   The keyboard routines now support the emergency abort sequence 
   ctrl+alt+del, and there are signal handlers to make sure Allegro will 
   shut down cleanly if your program crashes.

   Wrote new irq wrappers that can deal with reentrant interrupts.

   Added joystick routines (based on code provided by Jonathan Tarbox and 
   Marcel de Kogel).

   Moved some functions to different files and juggled things about so the 
   linker can do a better job. If you don't use the sound stuff, or don't 
   use any graphics functions, now they won't be linked into your executable.

   Marcel de Kogel manged to locate my (embarrassingly stupid :-) mistake 
   which was preventing the VESA 2.0 linear framebuffer driver from working.

   Various other performance enhancements and bug fixes.



=====================================================================
============ Changes from 1.x to 2.0 beta (Jan/Feb 1996) ============
=====================================================================

   Dropped all the Borland code. A couple of months ago I ran out of disk 
   space, and it was with great satisfaction the I executed the command 
   'deltree /y c:\bc4'. It was a horrible compiler, and I'm glad it's dead.

   Added SVGA support. As a result it no longer makes sense for 
   allegro_init() to put the system into mode 13h, so you will be in text 
   mode until you call set_gfx_mode().

   Added sound code (background MIDI music and sample mixing).

   Added support for proportional fonts (of any size) as well as the old 8x8 
   fixed size ones.

   XOR drawing mode.

   There is no longer such a thing as a SPRITE structure. The sprite drawing 
   code now draws bitmaps onto other bitmaps, which is a much more flexible 
   way of doing things. The datafile reader will convert all your old 
   sprites to bitmaps as it loads them in, so the only practical difference 
   this is likely to make is that the sprite drawing routines can't draw 
   opaque sprites any more (but you can use a blit instead).

   show() and get_sprite() no longer exist: use blit() instead.

   Added flipped and rotated sprite draw routines.

   Added bitmap scaling.

   Added RLE sprites.

   drawsprite() has been renamed to draw_sprite().

   textmode() has been renamed to text_mode(), to avoid conflicts with 
   definitions in conio.h.

   All the file access functions have been renamed from the stdio syntax to 
   pack_fopen(), pack_getc(), etc, so they can now be mixed with stdio code.

   Added pack_fgets() and pack_fputs().

   The port_callback pointer no longer exists.

   Removed polyline() (who ever used it?), and added a polygon(), which 
   draws a filled convex polygon with an arbitrary number of vertices.

   Added do_line() and do_circle() functions, which call a user-supplied 
   function for each pixel that needs to be drawn.

   Added a default keyboard interface to the GUI routines, allowing the 
   selection of objects with the arrow keys and <enter>.

   Added several new GUI messages and flags. In particular there are now 
   messages for tracking mouse cursor movement, an idle message, a special 
   return value for the MSG_CHAR message which allows an object to override 
   the default keyboard handling, and a flag which hides the object.

   There are new GUI routines to centre a dialog on the screen and to alter 
   the colors used by the standard alert and file selector dialogs.

   The file selector now takes a third parameter specifying which file 
   extensions to display.

   The timer routines now have better than millisecond accuracy, and it is 
   possible to alter the speed of a user timer callback in realtime (by 
   reinstalling it with a different speed value).

   Removed the _RGB struct and paltorgb() functions. RGB's are now stored 
   directly in the hardware format, with each value in the range 0-63.

   Added functions to get and set single palette entries as well as entire 
   palettes.

   Added DPMI memory locking code.

   Wrote a C++ 'fix' class which overloads a lot of operators, providing an 
   easy way to use the fixed point routines.

   There are probably lots of other things that I have forgotten about.


