Additions to the emulator, from the first version that was released.  x = only
available to registered users.  Names between brackets are games that first
indicated the presence of the corresponding bug in the emulator, or the person
that spotted the bug.


Version 0.2pl0
--------------
First public release.


Version 0.2pl1 (Thu Feb 10 1994)
--------------
 
 o Added support for compilation on AIX and HP/UX.
   Thanks to Stephan Lindstrom and Jarkko Lavinen for the information.

 o Got XZX working with Monochrome displays.  Made colour allocation
   somewhat less antisocial, too.

 o Added support to emulate a 16K spectrum.  (Useful, huh? :-)

 o Fixed a problem which caused XZX to hang occasionally with slow displays.

 o Fixed a bug where the ROM could only be read from the current directory.

 o Fixed a problem where the symbol MIN was redefined on some platforms.


Version 0.3pl0 (Thu Feb 24 1994)
--------------

 o Added support for FLASHing attributes.  Not very efficient, though.
   Can be disabled with the -flashing option, in which case FLASH is
   implemented as INVERSE.

 o XZX can now read (but not write) Z80 format snapshots.  Thanks to
   Gerton Lunter for his Z80 format description in Z80.DOC.

 o Added setitimer-style interrupt generation to (hopefully) guarantee
   50 interrupts/sec.

 o Fixed monochrome X server support, hopefully.  Monochrome colours
   now contrast properly, too.

 o Added -private and -mono colormap handling options.  Useful if you
   run out of colors on a PseudoColor display.

 o Made image transfer a bit friendlier in that images are only
   sent if the screen has recently changed.  Thanks to Stephen Usher
   and Jonathan Brazier for pointing this out to me.

 o Added support for Kempston joystick emulation using an analogue PC 
   joystick on Linux.  Requires the joystick kernel patches.

 o A couple of other minor bugfixes/optimisations.


Version 0.4pl0 (Thu Mar 10 1994)
--------------

 o Local X server detection now works better - thanks to Ronald Hartwig.

 o XZX no longer crashes if snapshot names do not contain a dot.

 o Basic sound support for Sparc Stations only - music sounds pretty
   awful, but simple sound effects work reasonably well.  Must be on
   the console, since it uses /dev/audio.  Thanks to "Purple Tentacle"

 o Fixed display for monochrome displays (finally, I hope :-).  Also added
   halftoning colour simulation for SCALING > 1.  Thanks to Ian Collier.

 o Fixed some bugs with PushValue/PopValue - a few more snapshots now
   appear to work.

 o LOAD and SAVE will dump CODE and programs to a file.  Not well tested,
   and I had problems with loading BASIC, but give it a go and tell me how
   it works.  Thanks to Russell Marks & Ronald Hartwig.

 o It's now possible to read and write single characters to & from
   stdin, stdout and stderr, using I/O ports.  Read the man page for
   more details.  Thanks to Ronald Hartwig again, who's obviously 
   been busy lately :-)

 o Some more minor bugfixes/optimisations.


Version 0.5 (Tue Mar 29 1994)
-----------

 o Added Interface 1 Shadow ROM and Microdrive support!  RS232 
   emulation also possible via the Shadow ROM, which makes the
   PSEUDO_IO code a bit superfluous.  Both mechanisms can co-exist,
   though.  Thanks to Martin Smith. 

 o Fixed LOAD_SAVE support - BASIC programs now work correctly, and
   'SAVE "prog" LINE x' also works.  Thanks to Russell Marks.

 o An alternative LOAD/SAVE mechanism, thanks to Ian Collier.  Both
   methods write compatible dumps, but at most one method may be 
   selected at compile-time.  LOAD_SAVE flag changed to a choice of
   LOAD_SAVE_1 or LOAD_SAVE_2.  See the Imakefile for details.

 o F8 now generates an NMI.  Thanks to Ian Collier.

 o Made /dev/audio sound support work on Linux.  Sounds pretty crap,
   but recognisable.  Also works on the NEC EWS 4800/330, very well.

 o Added PC Speaker style audio support for Linux.  Sounds much better
   than /dev/audio support - recommended.  Must run suid root, though.
   Thanks again to Russell Marks.

 o Added resource-configurable keyboard emulation for a kempston joystick.

 o Made XZX more environmentally friendly; tells the window manager
   everything it needs to know, and tries to appear under the mouse
   pointer (though your window manager has the final say).

 o The default PSEUDO_IO ports have been moved to 48896 (stdin),
   48897 (stdout), and 48898 (stderr).  That's BF00, BF01 and BF02 hex.
   I did this to avoid a clash with the Shadow ROM and Microdrive routines.

 o Improved the Linux joystick calibration mechanism somewhat.

 o Yet more minor bugfixes.


Version 0.5pl1 (Thu Apr 28 1994)
--------------

 o Fixed a problem where files could not be read from the XZX library
   directory.


Version 0.5pl2 (Wed May 11 1994)
--------------

 o Another fix to monochrome server support.  Apparently images come up
   mirrored on some monochrome X servers - it's all down to byte and bit
   order incompatibilities.  Hopefully it all works now.  Thanks to
   Dougie McLaggan for this one.

 o Optimised the screen refresh algorithm a bit - XZX now only sends the
   portion of the screen which has changed since the last update.  Still
   not perfect, but non-MITSHM refresh is now a little bit smoother.
   MITSHM transfer will not be much affected.

 o Fixed .z80 snapshot support.  I can't remember who sent me this fix, but
   whoever you are, send me some mail, and I'll include your name next time
   round :-)

 o auxfuncs.c is now #include'd, since I can take advantage of gcc's
   inlining.  This won't have any effect for compilers which don't provide
   inlining, but should run a tad faster for compilers which do.

 o Fixed a problem where 'make depend' didn't work.

 o Screen refresh frequencies are now run-time configurable through two
   new options, rrShm and rrNoshm.  Check out the manual page for more
   details.

 o The libDir resource can now be a colon-separated pathname.  Its new
   default is '.:<LIBDIR>', (usually '.:/usr/local/lib/xzx') so that
   default behaviour is unchanged.

 o A new feature, LEVEL_LOADER, has been added, to make multi-load games a
   bit more usable.  This does require modified snapshots, however, which will
   be available sometime soon.  Observance of the usual copyright laws is at
   the user's discretion.  Thanks to Russell Marks.

 o Another new feature - SLOWDOWN.  This allows you to reduce XZX's speed
   when running on very fast machines e.g. DEC Alpha, Sparc 10... 
   Also now possible to adjust XZX's speed while it's running.  See the
   manual page for more details.


Version 0.5pl3 (Wed May 11 1994)
--------------

 o Fixed a problem where rrShm and rrNoshm were swapped.


Version 0.5pl4 (Thu May 12 1994)
--------------
 
 o Fixed a problem with the definition of NUMKEYMAPPINGS being wrong
   when SLOWDOWN is not defined.


(lots of internal versions followed)


Version 1.0
-----------
 
 o Added 128K and +3 emulation.  Possible to select between 48K, 128K
   and +3 emulations at startup time and on the fly.  Includes (incomplete)
   floppy disk emulation on the +3 and working Interface 1 in 128K mode.
   Does not includes sound chip emulation (yet).  Thanks to Thomas Kjaer
   for much of the work on this.

 o XZX now reads and writes new format .Z80 snapshots.  This includes
   128K snaps.

 o XZX now uses a segmented memory model, mainly to allow 128K support. 
   This also speeds up the IF1 emulation somewhat.

 o Instruction emulation now implemented as a switch statement - avoids
   function call overheads, somewhat more efficient.

 o Significant code rewrite and tidy-up.  Still a bit of a mess though...

 o Added a popup dialog box which is used whenever XZX requires text from
   the user (e.g snapshot names...).  No more messing about on the xterm
   command line.

 o Fixed a couple of bugs with the snapshot reading/writing code - almost
   all of the snapshots I've tried now work.  Thanks to Tim Bevan.

 o Standardised on the LOAD_SAVE_1 mechanism, which is now just called
   LOAD_SAVE again.  LOAD_SAVE now implemented using trap pseudo-ops, 
   which is a little faster.

 o The default PSEUDO_IO ports have been moved to 191 (stdin),
   447 (stdout), and 703 (stderr).  That's 00BF, 01BF and 02BF hex.
   This is more correct since the low byte selects the operation
   and the high byte modifies the operation's behaviour.

 o The XZX window no longer appears under the mouse pointer, since I
   and others found it annoying.  Added a -geometry option to specify
   XZX's position.  If not specified, it's up to the window manager.

 o If XZX fails to get the 16 colours it needs on a PseudoColor display,
   it now uses a private colormap by default, rather than going mono.

 o Fixed emulation of undocumented behaviour of the BIT instruction,
   which means that the hippo now behaves himself in Sabre Wulf :-)
   Thanks to Tim Bevan.

 o Improved IF1 RS232 emulation.  RS232 input is nonblocking, so 
   INKEY$#n works better.

 o It was Ian Collier who fixed .z80 snapshot support in 0.5.2.  Thanks!

 o Other minor changes too numerous to mention.


Version 1.0.1
-------------
 
 o Several bugfixes.

 o A couple of minor optimisations to the emulation code.

 o Added a trap to the ROM to catch the BEEP routine and ring the 
   X server bell.

 o Provided a makefile.std for those without imake.


Version 1.0.2 (Mon 12 Sep 1994)
-------------------------------

  o Just a couple of minor bugfixes/optimisations.


**************************************************************************

      Following versions by Erik Kunze (Erik.Kunze@fantasy.muc.de)

**************************************************************************

Version 2.0.0beta (Sat Jun 15 1996)
-----------------

  o Several bugfixes.

  o Input and output operations now handled in io.c.

  o Emulate more undocumented ED-prefixed instructions.

  o Added undocumented instructions to the disassembler.

  o Bugfixes in LDIR/LDDR/CPIR/CPDR/OTIR/OTDR so Zynaps will run.

  o Multiface 128 support (very primitve at the moment).

  o AY sound emulation under LINUX

  o Added support for reading Z80 V3.x snapshots.

  o Heavy optimizations in X11 display routines.

  o Pixmap routines now working with all scaling factors.

  o Added T-state counting (for speed calculaton).

  o Other minor changes too numerous to mention.

  o Source is now managed with RCS.


Version 2.0.1 (Sun Aug 25 1996)
-------------

  o AY emulation improved

  o Automatic recognition of Spectrum type when loading snapshot


Version 2.0.2 (Sun Sep 15 1996)
-------------

  o Removed counter style interrupt handling, T-states are mandatory from now
    on.

  o Added a kludge for people who run out of memory when compiling z80.c.
    Look at the README file for a description!

  o Added patches from Lars Koeller <Lars_Koeller@odie.physik2.Uni-Rostock.DE>
    - FreeBSD joystick support

  o Added patches from Anders Hallstrm <andersh@elixir.e.kth.se>
    - Fixed R-register emulation (makes Daley128 working)
    - Fixed 'Unexpected X11 event 33'
    - Added switch '-ms' to control interrupts
    - Show warning in case the emulator wasn't compiled with IF1 support
      and snapshot uses IF1 (snapshot.c).

      NOTE: This may result in strange errors. You ought to compile in
            IF1 support or re-snap the snapshot without IF1.

    - Check for interrupt mode (IM) on SNA snapshots. Some snapshots contain
      strange values.
    
  o Added patches from Razvan Surdulescu <surdules@fas.harvard.edu>
    - Magnification between Spectrum and X11 pixel is now selectable on startup
      of the emulator (-scale).
    - Support for 8/16/32bpp X server
    - Changed WR_BYTE to only write a byte in video memory if different from
      what's already there (speed improvement with JetSetWilly).

  o Added patches from M Pikula <pikula@dec3.dcs.elf.stuba.sk>
    - Placed 'signal(SIG_XCPU, SIGIGN)' in main() for Ultrix machines. The cpp
      macro might be wrong.
    - Added a kludge to avoid problems with '#define DEC' in z80.c on DEC
      machines.

  o Changed command line options and X11 resource names to be similar to the
    names used by version 3.X (Motif) of the emulator. Be sure to install the
    new application defaults file.

    NOTE: Version 3.X has not been released yet!

  o Fixed a bug in loadsave.c which caused a segmentation fault

  o Fixed a bug with Z80's interrupt handling

  o Fixed bugs in fdc.c

  o Fixed INning from Multiface 128 ports. Bit 7 represents bit 3 of the byte
    last written to port 7FFDh.

  o All AY registers are reseted on Z80 reset. This might be wrong.

  o Added issue 2 emulation on 48K Spectrums

  o Other minor changes too numerous to mention.

  o Some cosmetic changes


Version 2.0.3 (Thu Oct 3 1996)
-------------

  o Changed the mapping of the function keys F1-F12. See manpage for more
    details.

  o Changed source to include Spectrum +3 emulation only when XZX_PLUS3 is
    defined. Little speed improvement without +3 emulation.

  o Changed command line options and resource names again. Sorry...

  o Rewritten io.[ch] to decode hardware on specific address lines and not on
    complete addresses. This makes a bunch of games working with XZX. Rewritten
    the 128/+3 banking function for more speed. Prepared support for ZX printer,
    Centronics and FDC port on +3.

  o If you read from a port that activates both the keyboard and a joystick
    port (e.g. Kempston), the joystick takes priority.

    To Damien: Please exclude XZX from the list of emulators which do not
               have this feature corrected !!!

  o New source tree introduced and updated Imakefile. Imakefile finds out most
    of the defines (endianess, strcasecmp, uname). Please control the result of
    imake. The produced Makefile might be wrong. If you find that the defines
    are wrong, please mail me a desription of your system.

  o When loading SNA snaphot, the screen wasn't updated.

  o Added a function to dump the entire Spectrum screen to a file in .SCR
    format.

  o Added support for INing from nonexisting (idle) port. The CPU would read a
    mixture of FF's and ATTR.

  o Added a check for endianess to main(). Just to be sure, imake won't joke us.

  o Rewritten color handling in screen-writing functions to improve the speed
    of the emulator. This makes most of the games running with more then 100%
    speed on my Linux box (Pentium 100, 48MB RAM, 8bpp) even with a scale of 3.

  o Inspirated by xz80 I added a new screen writing algorithm to avoid consuming
    CPU time by those 'rainbowing' programs. The old one can be selected on
    compile time by defining OLD_VIDEO. Try Zynaps with and without OLD_VIDEO
    defined. Thanks to Ian Collier for the inspiration.

  o Renamed xspec.[ch] to screen.[ch]. Sorry...

  o Fixed problems with '-ansi' in makefiles (Razvan Surdulescu).

  o Cleanup in audio.c. I have still problems with signal handling under Linux
    (see TODO).

  o According to Z80 specs, interrupts are not enabled until AFTER the
    instruction following the EI. Thanks to A.J.Skillman <ajs@hep.ucl.ac.uk>.

  o Print out snapshot format and hardware type on snapshot loading.

  o Introduced a new debugging feature. By defining XDEBUG XZX prints out all
    XZX specific X resources.

  o Support for both versions of IFI ROMs from Sinclair. Thanks again to Ian
    Collier.

  o Fixed a bug with the X event mask on the main window (Razvan Surdulescu).

  o Fixed a bug with magnification by 3.

  o Fixed a bug in calcWinPosition().

  o Updated the documentation files. Well, some '#ifdef's are intentional
    undocumented.

  o Back againg: emul.[ch] :-) Shifted Z80 emulation to a subdirectory. This
    will become a generic (standalone) emulation kernel.

  o Shifted audio emulation to a subdirectory. From now on each audio emulation
    type is held in a separate file. Prepared for Sun AY emulation and NAS
    support.

  o Fixed some typos


Version 2.0.4 (Thu Oct 3 1996)
-------------

  o Fixes the bugs with audio emulation.


Version 2.1.0 (Wed Nov 13 1996)
-------------

  o DAA optimized

  o When reading from Port 31 (Kempston) bit 5-7 are allways 0 (from the FAQ).
    Is that really true???

  o On-screen-menus (Razvan Surdulescu)

  o Reset the Z80 before loading a snapshot.

  o Fixed a bug in readZ80Format() when loading a Z80 V1.0 format (Razvan
    Surdulescu).

  o Fixed a bug where the CARRY flag wasn't preserved on CP[ID](R) operations.

  o Fixed all known bugs in the Z80 emulation. I hope there's no one left.
    All my 128K snaps run fine and Arkanoid (idle port!) too.

  o Renamed the variable HAS_UNAME to NEED_UNAME (the name is misleading
    since it sez 'Uncomment this if your machine needs the functions get_uname
    etc). 

  o Fixed bug in SelectModel() where the Z80 never gets reseted.

  o Added check for 128K SNA snapshots to readSnaFormat(). XZX does not and
    will not support 128K SNA snapshots. Please use a snapshot converter
    utility to load those snapshots.

  o Ignore SamRam and M.G.T. when loading Z80 V3.X snapshots rather then
    aborting the loading process (Razvan Surdulescu).

  o Changed makefile.std.

  o Added TAP support (loading/saving). Loading from and saving to UNIX files
    (the old implementation) is no longer supported. Defining LOAD_SAVE is now
    absolete, because the TAP support is mandatory.

  o Made the border emulation switchable. This is necessary for programms
    which try to do fancy border drawing. That makes the program EXTREMELY slow
    since it updates/flushes the display a lot (Razvan Surdulescu).

  o Turn off IF1 and MF128 emulation in SelectModel() when entering +3 mode.

  o Check for ROM type before setting the BEEP (XBELL_AUDIO) trap.

  o Print out an additional information in version() if XZX was compiled with
    debugging enabled (Anders Hallstrm).

  o Multiface 128 works now in 48K and 128K mode. Thanks to Gerton Lunter for
    the help.

  o XZX can display a picture of the way the keyboard is laid out on the real
    Speccy (ZX Spectrum 48). Useful if you can't remember that one key
    combination for getting "CHR$" :-) Thanks to Gerton Lunter for giving
    me the permission to use layout.scr from Z80, his Spectrum emulator.

  o Shading on monochrome X servers works again (Anders Hallstrm).

  o The control keys (XK_CTRL_L/XK_CTRL_R) switch now to EXTENDED MODE.

  o Fixed a bug in the Level-Loader (.LLT).

  o Added support for Super-Level-Trap (.SLT) files. The level loader is now
    mandatory (Razvan Surdulescu).

  o Fixed a bug in ADD_HL macro with access above array boundary (Razvan
    Surdulescu).

  o Fixed a bug in Imakefile with endianess on Alpha machines (Anders
    Hallstrm).

  o Fixed a problem with AY daemon when starting with '-sound off' on machines
    running Linux.

  o Fixed a lot of memory leaks and access errors. Thanks to Pure Software
    Inc. for making Purify. Purify still claims an memory leak in XPutImage(),
    but I think it's a bug in the X11 lib here on my Sparc-2 running SunOS
    4.1.2.


Version 2.1.1 (Tue Dec 3 1996)
-------------

  o Changed lincense conditions (see the COPYRIGHT file). THE CODE MAY NOT BE
    MODIFIED OR REUSED WITHOUT PERMISSION!

  o Some values in the Z80 v3.0+ snapshot header were not correctly
    interpreted. Added more debug prints in the snaphot code.

  o LINTified source code.

  o Changed XDEBUG into D_X11 debug level.

  o Fixed a bug in SBC_HL macro where the P/V flag got wrong values. Cauldron
    depends on it.

  o Moved all configuration variables from Imakefile to xzx.config (Des
    Herriot).

  o Register DE didn't get loaded from SNA snapshots.

  o Save keyboard issue settings to Z80 snapshot.

  o The Z80 operations LD H,n and DAA were broken in v2.1.0.

  o Changed the possible lowest time interval (ms/frame) that is selectable
    in the Generics Menu from 10 to 1. Note that PC based machines allow
    only steps of 10ms.

  o You must confirm overwriting an existing file when saving the Spectrum
    screen.

  o Support for Z80 v3.05+ format snapshots.

  o TAP browser


Version 2.1.2 (Sat Mar 15 1997)
-------------

  o Fixed bug with Z80 interrupt handling (N.E.X.O.R., Defcon).

  o Removed delayed EI handling, because this breaks some games. Tank 128k
    is one of them.

  o New option '-rr' overwrites both 'rrShm' and 'rrNoShm' values (Anders
    Hallstrm).

  o Made the key for escaping the OSD's selectable. See xzx.config (Anders
    Hallstrm).

  o New style OSD's (128/+3 look-alike) with pointer wraparound on first<->last
    item.

  o PrintLetter() increments cursor position.

  o Fixed syntax errors under Linux in joystick.c

  o Store border color even when border emulation is turned off. Important if
    you turn the border emulation on again.

  o The distributed source code is now striped from comments.

  o If the emulator fails to load a level data block (.DAT), it complements
    the carry flag.

  o Fixed speaker emulation under SunOS and Solaris (Des Herriot).

  o Fixed bug with zero-length tape blocks in .TAP files (Alan Moore).

  o Fixed recognition of Z80 v3.05 format snapshots.

  o XZX writes Z80 v3.05 format snapshots now.

  o Turn Interface I emulation off when loading SNA snapshots.

  o ZX printer is selected with bit A2 and not A1.

  o The FileSelector accepts directories in the input field, too (Anders
    Hallstrm, George Lebl).

  o Changed all static character arrays in the Conf structure into dynamic
    allocated strings. Reduces memory used by XZX.

  o Better keyboard emulation of Spectrum keys. See xzx.man for more
    information how it works (Anders Hallstrm).

  o Fixed extended RAM paging on the +3 (Thomas Ahn Kolbeck).

  o Fixed memory leaks and several bugs in the microdrive emulation. Added
    sanity check to SetupCartridgeFile() to avoid insertation of one cartridge
    file into two drives simultaneous.

  o Added missed functions to the 'Interface I/+3 Options' menu. Removed menu
    item for cartridge write protection, because this is controlled by the
    UNIX file permissions.

  o Made the +3 disk handling more user friendly. XZX pops up a file requester
    if the +3 DOS tries to access a disk in a drive and there is no disk in that
    drive.

  o Some strange tape files contain many zero length blocks. Suppress displaying
    them in the tape browser.	

  o Don't unlink the destination snapshot file in case of an error! In the past
    it could happen that an allready existing file was deleted.

  o Ignore SIG_XCPU not only on machines running ULTRIX but on all systems
    where it's defined.

  o Moved classifyDescripor()/setBlocking() to util.c for later use with the
    printer emulation.

  o XZX works now slightly different for X terminals so it doesn't lose key
    events anymore. Don't forget to adjust xzx.config for this extra
    functionality (Allan Skillman).

  o AY emulation for SPARC machines (Des Herriot).

  o Fixed Imakefile for ddtrans and mkcart (Nils Philippsen).

  o Fixed bug in FileSelector() which was introduced by the changes made
    earlier. FileSelector now accepts filenames of nonexistent files if it's
    called for save operations.

  o Fast mode implemented. XZX can now either run at true Spectrum speed or
    as fast as possible.

  o XZX allways saves the contents of the AY registers to Z80 snapshots.
    Gerton Lunter and I decided to use bit 2 of byte 37 for that purpose. See
    TECHINFO.DOC (comes with Z80) for more information (Gerton Lunter).

  o XZX as distributed won't work when 'make install' is done: the default
    libDir is set to '/usr/local/lib/xzx:.', and the ROM images are set to
    'roms/xxx.rom'. But since the ROM images are put in /usr/local/lib/xzx,
    XZX doesn't find them. Fixed in Xzx.ad (Des Herriot).

  o 'make install' will fail if the Multiface 128 ROM is not present in the
    roms/ subdirectory, which it isn't as distributed. Fixed by puting an
    empty mf128.rom in there, which can be copied over if the user has the
    image (Des Herriot).


Version 2.1.3 (Sat Apr 19 1997)
-------------

  o Renamed XzxMesg() to Msg() and changed some message levels and strings.

  o Fixed keyboard handling (Anders Hallstrm).

  o New OSD interface function GetKey().

  o New OSD menu for selecting the keys used for Kempston emulation (Anders
    Hallstrm).

  o Print out the messages for joystick calibration on the OSDs. You must
    calibrate your joystick before you can use it. This is no longer done
    in JoyInit() during startup of the emulator. Use the 'Joystick Options'
    menu from the OSDs (George Lebl).

  o Yet another optimisation for speed in the video emulation. This affects
    both monochrome and color displays.

  o Some programs (Fairlight 128) rely on the fact that the 128K memory paging
    port is addressed with A15. Naturally this won't work on a +2A or +3, but
    they didn't exist when the games were written (James McKay).

  o Improved KeyPress and KeyRelase event handling for X terminals (Anders
    Hallstrm).

  o Changed level loader to search at first for .dat and then for .DAT files.
    If this all fails then popup the FileSelector so the user can choose a
    file to load.

  o Leave the OSD's after an action only if not invoked by the F1 key. This
    allows to alter the settings right after loading a snapshot and then save
    it with the same CPU state as loaded. Usefull for converting between
    snapshot formats.

  o The FileSelector didn't handle filenames with path correctly.

  o Stopping and restarting the AY daemon very fast causes problems with nested
    signals. Even when the signals are blocked while the signal handler is
    active, it's not guaranteed that further signals are not out of order.
    Replaced the communication by signals with communication through the pipe
    (Alexander Eggerer).

  o If allocation of colors fails for the default colormap then give the
    allocatetd colors back to the X server.	

  o Reset Spectrum keys if the mouse pointer leaves the emulator window.

  o If the FileSelector() has been called for a write operation it calls
    ConfirmBox() directly. If FileSelector() returns a non NULL-pointer the
    user confirmed the overwriting of an existing file.

  o Build-in debugger!

  o Added port address of the Fuller box. Maybe XZX will support it in the
    future.

  o Fixed bug in Z80 snapshot loading with enabling/disabling Interface I
    emulation (Gladwell G D <gladgd@essex.ac.uk>).

  o XZX now handles the WM_DELETE protocol, i.e. it exits cleanly if closed by
    the window manager (e.g. the little "X" button in Fvwm95 and AfterStep).
    Previously, it left shared memory segments lying around, and confused the
    AY subprocess (Des Herriott).

  o New option '-quiet' suppresses all non-error messages. You will see neither
    warnings nor informations. Use at your own risk!


Version 2.1.4 (Tue Apr 22 1997)
-------------

 o Optional OffiX drag'n'drop support.  OffiX is a free implementation of
   drag'n'drop for X which is gaining popularity on Linux at least. This lets
   you drag a file from other Offix-enabled programs and drop it on XZX,
   whereupon XZX will try to load it as a snapshot (Des Herriott).
   See http://leb.net/OffiX for more details.

 o Added port address of the ZX LPRINT III interface. Maybe XZX will support
   it in the future.

 o Optional pause after each loaded tape block.

 o Moved getBaseName() to util.c for common use.

 o Changed the OSD menus to repaint only things that have changed. Saves some
   memory too.	

 o Splitted dialog.c into dialog.c (OSD main code) and menu.c (menus).


Version 2.2.0 (Fri Oct 24 1997)
-------------

 o Starting with this version XZX is a shareware program. The program is not
   completely functional, and the parts which are left out are included when
   you register. The registered version has a better user interface (needs
   Motif) and more features.

 o Debugger's error recovering after a syntax error improved (Alexander
   Eggerer).

 o Renamed getSnapshotType() to GetFileType() and moved it to util.c for common
   use.

 o X11 event handling improved.

 o Added port address of the Grafpad by British Micro.

 o Some minor cleanups in various parts of the emulator.

 o When reading from the ULA bit 6 represents the state of the EAR socket (and
   not bit 5 as stated in the comp.sys.sinclair FAQ). More games respond to the
   keyboard now.

 x Support for sampled tapes in Creative Labs' VOC format. Not perfect but it
   works.

 o Enable interrupts before leaving the LOAD_BYTES routine. A real Spectrum
   disables interrupts at #559 and enables interrupts again at #54F.

 o Autorepeat was not turned off when you leave the OSD's (Anders Hallstrm).

 o Implemented a line-by-line type video emulation now. Define LINE_VIDEO to
   use the new scheme (see xzx.config). It kills flicker nicely (Anders
   Hallstrm).

 o Removed OLD_VIDEO compile time option.

 o Enable interrupts before leaving the SAVE_BYTES routine. A real Spectrum
   disables interrupts at #4D4 and enables interrupts again at #54F.

 o Entering the OSD's does not process the last KeyRelease event. Resetting the
   Spectrum keyboard matrix in EnterOSD() fixes the problem.

 o Store default values for joystick keys in Z80 snapshot as described in Z80
   TECHINFO.DOC rather than zeros.

 o XZX now writes true +3 snapshots (Z80 format) when in +3 mode. The Z80
   snapshot format has been expanded for this purpose. Optimised loading and
   saving of SNA snapshots. Some minor cleanups in snapshot.c.

 o Fixed typos in the documentation files (Anders Hallstrm).

 o Emulate the delay when writing to/reading from the ULA contended memory.
   Corrected timings when OUTing to the ULA. Because this slows down the
   emulation I made this a compile-time option (see xzx.config).

 x Line-by-line border and screen emulation, what makes true rainbowing and
   overscan possible. Currently available only for 8/16/32bpp displays.

 o Speeded up IF1 and MF128 paging. Overwriting the ROMs is no longer possible.
   Has this ever been used?

 o Some minor optimization for speed in various parts of the emulator. No
   Assembler - still pure 'C'!

 o Fixed bug in XImage initialization.	

 o SelectModel() resets tstates per frame (-cycles) to its default value
   (69888/70908) when the hardware type changes.

 o Options quiet/mono/private require a boolean argument (on/off/true/false).
   Man page updated.

 x Problem with stopping and re-starting the virtual tape player fixed.

 x Replaced the OSD's by Motif 1.2 widgets.

 o Fixed screen update problems when LINE_VIDEO is defined.

 o The default value for the 'pause' resource was not set correctly. Changed
   to 'false'.

 o Do not allocate space for memory pages that are not used.

 x BORDER and FLASH emulation are mandatory from now on. Since the registered
   version draws the screen line-by-line there is no need to turn off BORDER
   and FLASH emulation.

 x Fixed syntax error when XZX is compiled with XBELL_AUDIO defined.

 o Improved audio handling when in the OSD's. Does no longer allow to turn on
   a sound emulation type if that type is not active.	

 o Renamed OpenXzxFile() into Fopen().

 o NMI saves the state of IFF2 in the P/V flag (c.s.s. FAQ).

 o New menu item for turning the usage of the analogue joystick on and off.

 o Changed joystick.c to compile with the latest Linux joystick driver. If you
   are using a version prior 0.9 please upgrade to a newer kernel.

 x Reset FDC only when in +3 mode.

 x Emulate FDC at hardware level (i.e. Z80 IN/OUT commands). Formatting is not
   supported yet.


Version 2.2.1 (Sun Nov 2 1997)
-------------

 o Added emulation of bit 3 and 5 of the Z80 flag register. Fixed some wrong
   flag settings.

 x Redisplay flags frame after user alteration of the AF register.

 o Added new FTP site for distributing XZX.

 x FLASH emulation did not work.

 o Analogue joystick emulation was broken (Erling Jacobsen).

 x Mark menu item for the Debugger as selected when the Debugger is entered
   through a breakpoint.
