Revision History
----------------

V0.60
  * What was lost is found, I appear to have found a backup of Handy source
    code that is dated after the release codebase I used when I restarted
    Handy. I had thought that this was lost in a hard disk crash !!! This has
    support for headerless cartridges as per the Handy development system and
    also some fixes to the sprite engine. (Needs HOWARD.O)  I've now merged
    the two releases.
    (Note Handy981102.zip contains last valid Handy codebase before merge)
  * Implemented a new CGraphicsWindow class to the debugger to display raw
    screen data from the Lynx memory.
  * Implemented some additional sprite code to use the collision memory, I
    dont know if it is correct as the docs are a little sketchy in this area.
    Bastians invaders now works OK.
  * Modified some of the debug window code structure so that LynxWin is not
    required by any of the debug windows.
  * Fixed a couple of bugs in the 6502 BRK & Interrupt implementation.
  * Re-wrote the C65C02 class to use INT type as oppsed to BYTE/WORD types.
    This has given a 5%-7% speed increase over 0.52.
  * Fixed bug in Dev version where KEYUP messages were not being passed back
    to the main window causing lynx buttons to get stuck when debugging.
  * Added code to stop full screen switch during a debug session.
  * Bugfix for string length overrun in mikie.cpp causing crash if Lynx went
    into auto powerdown mode.
  * Fixed a bug with TSB & TRB instructions that was stopping many games
    from working with the new CPU core.
  * Added multiple breakpoint support to debugger and display of breakpoints
    into the trace window.
  * Added LSS (LynxSnapShot) support...Handy can now load/save game snapshots.
  * Reworked LFSR sound code to remove the big (8MB) lookup table, Handy
    is now be much more memory frugal and easier on your cache. LFSR values
    are now recalculated on the fly.
  * Removed the "waiting" dialog box from initialisation as with the above
    change the init of the lynx object is almost instant.
  * Fixed a new bug introduced with the collision memory fix.
  * Fixed CPU bug with indexed pointers, they now wrap correctly.
  * Changed Mikie so that Lynx thinks its plugged onto an AC Adaptor, stops
    the annoying timeout your used to get.
  * Rewrote the memory handlers, speed increase only 1-2%, a little
    dissapointing. Should also reduce memory requirements by about 4MB.
  * Fixed bug with spurious TX Uart interrupts.
  * Fixed timer bug, TIMER_DONE is always set regardless of timer type. Gates
    of Zendocon no longer hangs.
  * Fixed some more UART bugs, specifically, mUART_RX_READY was only getting
    set as pulse due to a bug in the timer code. Finally, finally Bastians
    T_TRIS.O now WORKS, yeeeeeha.

V0.52
  * Created the new CDirectSoundPlayer class and linked into CLynxWindow.
  * Removed system linkage to CSoundPlayer class
  * Small optimisation to CMikie::Update() sound catchup code was
    calculating the sample each time thru the loop, even though the value
    is always static.
  * Modify Mikie code to use a single buffer for sound and fit in with the
    new sound player class.
  * Fixed a bug where X4 would give a blank screen under full-screen mode.
  * Fixed a bug in CDirectSoundPlayer causing crash if another app had the
    directSound primary buffer locked.
  * Created new error handling dialog class so that full screeen is auto
    cleared on error. Stops a problem with machine lockout in full screen.
  * Removed some of the global variables back into CLynxWindow as they
    were no longer accessed outside of this class.

V0.51 24th October 1998
  * Moved history into whatsnew.txt
  * Tidied the documents a little.
  * Fixed joystick initialisation problem, forgot to set dwSize
  * Designed a new homepage

V0.50 20th October 1998
  * Implemented DirectDraw full screen support
  * Fixed some memory leaks

V0.40 20th July 1997
  * Implemented sound code
  * Implemented support for .com files
  * Implemented hidden mikie register $FD97 returns 0x42 (life'n all that)
  * Implemented snapshots for BMP & RAW format
  * Implemented registry support for persistant parameters.
  * Fixed a bug in the sprite engine on literal sprites with 3 bits/pixel
  * Bug fix for multi-quadrant sprite offset error (+1,+1 problem).
    (I'm a little unhappy with this fix, its a bodge and has caused)
    (streaking of sprites in some games (California Games, Raiden...))
  * 2 Bug fixes for absolute literal sprites.
  * Implemented cartridge detail boxes into the about box
  * Added dialog box whilst Handy object constructor is running as this
    is a little slower than 0.31 due to the sound initialisation.
  * Speeded up cartridge reloading.
  * Implemented screen rotation via LNX cart header
  * Wrote ROTATE.EXE and added to the distribution notes & readme
  * Fixed the sound problems on the early Atari/Epyx games.
  * Fixed the 0x80000000 rollback bug causing sound output to stop.
  * Commented out code for +1,+1 multiquadrant sprite fix.

V0.31 21st June 1997
  * Fixed error with cycle counting & emulation speed calculations
  * Fixed throttling code and improved accuracy
  * Implemented spin control for setting emulation max %
  * Fixed bug with CPU Stack pointer initialising to wrong value.

V0.30 17th June 1997
  * Reworked make_lnx.exe, all command line options now work.
  * Added double buffering logic into core code.
  * Added additional image modes, hooks for direct-x
  * Re-organised screen mode selection code new CLynxWindow::VideoModeSet()
  * Implemented screen rotate
  * Modified line drawing code so that image reversal is done at source and
    not with Bit/StrechBlt - Nice speed improvement.
  * Some optimisation of CSusie::PaintSprites() to improve speed.
  * Added fps & efficiency calculations plus display window.
  * Re-wrote sprite painting/cpu interleave. (Some improvement in IRQ flicker)
  * Added joystick support.

V0.20 25th May 1997
  * Fixed a few minor bugs in the cart class, no affect on Handy though!!
  * Implemented early bailout in CSusie::PaintSprites() when offscreen
  * Implemented he pause key on 'Q'
  * Restructured source code so that the CPU emulation is entirely inline.
  * Changed sprite/timer interleave back original concept - separate updates
    with no interleaving, faster, causes IRQ (HBL) stability problems.
  * Speed improvements to CSusie::PaintSprites() & CMikie::Update().
  * Small speed improvements to the CPU model.
  * Moved a number of common vars to global status.
  * Further optimised the CMikie::Update & CSystem::Update() functions, I can
    now get approx 50% performance on my P133 with 1x screen. (16 bit colour)
  * Implemented screen flipping
  * Finally fixed the superclipping algorithm, forgot to flip the quadrants
    around when hflip & vlfip are used !!
  * Split distribution into two separate archives - Dev & Std.
  * Implemented 1st attempt at hardware sprite collison, documentation is a
    little scarce.
  * Seemed nobody except me noticed that the screen was always 4 pixels too
    small.
  * Fixed nasty bug in UART emulation, caused by a misunderstanding of comlynx
    hardware implementation, Rx & Tx are looped, doh! (Homebrew:T_TRIS.O now
    works)
  * Fixed a bug in the timer implementation relating to timer done.
  * Fixed the other timer bug, that was stopping serial irq's being processed,
    even though handy doesn't support serial operations it must support UART
    emulation due to the loopback issue above.
  * Found and fixed another sprite engine bug relating to the screen origin
    being negative and the end positive, error in signed/unsigned handling.

V0.10 23rd April 1997
  * Rewrote entire CPU class to increase speed!
  * Modified CMikie::Update to stop timer slippage
  * Numerous mods to CMikie:Update to implement my new understanding of the
    way that Mikey IRQ's operate.
  * Fixed IODAT so that comlynx is NOT connected.
  * Implemented comlynx serial registers & IRQ structure (Not sure its
    correct though!!).
  * Corrected timer mode for non-reload, timers should stop after expiry.
  * Finally fixed the mother of all bugs in my my system class, not so much
    a bug but a misunderstanding of the documentation.... doh!

V0.06 16th April 1997 (Beta-Tester only release)
  * Renamed the project to Handy from LWE to make it less windows specific
  * Fixed annoying message about fake rom after every cart load/reset,
    it should only happen on the first occurance now.
  * Fixed a bugette with negative tilt values, forgot to cast to a signed word.
  * Fixed a typo bug in the superclipper h & v swapped.
  * Rewrote CSusie::UpdateSprites() due to an implementation bug. Tilt is now
    possible once more...
  * Monster bug bashing session in CSusie::UpdateSprites() tilt/stretch is now
    working correctly. Still one issue with jitter on trailing edge.
  * Implemented PBKUP counter in Mikey to be a pseudo line hold-off before
    starting line DMA, hope this is right, there is no documentation to say
    exactl what this counter does.
  * Fixed bug with CPU Zero Page references being able to to beyond the zero
    page boundary, forgot to and with 0xff, Doh! (Many things now work!!!)
  * Fixed bug where by the current video page address was being picked up
    before the pseudo VBL resulting in frame being flipped in the wrong order.
  * Unfortunatly I've had to remove one of the optimisations as it was stopping
    some games (California Games in particular) working. Handy was doing 2 CPU
    instructions for each mikey/suzy update, I've now had to reduce that back
    to 1 with a resulting speed loss 8-(
  * Rewrote CMikie::Update() to improve the speed of operation.
  * Repartitioned & removed CSusie::Update to move functions under
    system::poke() handlers to speed up the system.

V0.05 12th April 1997
  * Command line filename support added
  * Homepage added to documentation, document tidyup.
  * Fixed CSusie::UpdateSprites() unpack bugs, vague documents are
    always such fun to interpret.
  * Implemented superclipping algorithm in CSusie:UpdateSprites()
  * Fixed sign bug in signed multiply function in CSusie::UpdateMath()
    due to incorrect casting. (apfel_2a.o looks like its working
    correctly now.)
  * Found and fixed the bug in CMikie::Update() that was stopping some
    cartridges loading, it took a long time to find as I was looking
    in the wrong place...
  * Reversed joystick axis, the documents seem to be wrong ??

V0.04 10th April 1997
  * Repartitioned CLynxWindow::CLynxWindow() so that the lynx system creation
    is now outside in LynxInit() which returns a pointer to a lynx.
  * Added code to allow cartridge load from the file menu using LynxInit()
  * Added code so that LWE will remember the last cart type loaded and use
    that for the next cart to save the default to .o each time.
  * Added support for 16bit colour mode under windows. (Much prettier)
  * Optimised CMikie::Update() screen accesses.
  * Added code to pause the emulator when it loses focus to another window.
  * Implemented sprite h/v flip in CSusie:UpdateSprites()
  * Corrected quadrant initialisation error in CSusie:UpdateSprites()
  * Implemented signed maths in CSusie::UpdateMath()
  * Started implementation of sprite collision logic in CSusie::Update()

V0.03 9th April 1997
  * Repartitioned CSusie:Update() into UpdateSprites() & UpdateMath()
  * Implemented CSusie::UpdateMath(), signed arithmetic still needs doing.
  * Fixed 2 bugs in CSusue:UpdateSprites()
  * Update & implement cpu, mikey & suzy cycle counters

V0.02 8th April 1997
  * Its amazing what an evening with a source code profiler can do, LoadRunner
    is now almost playable on my P133. There's still scope for a number of
    speedups that will take a little more time than an evening.
  * Minor bugfix in CLynxWindow::OnKeyUp() left/right reversed.
  * Minor bugfix in CSusie::Update() Error in pixel calc on absolute literals
    fixed absolute literal sprites now seem to be working correctly.
  * Some cartridges now work. The boot screen of Gauntlet is recognisable !!!

V0.01 7th April 1997
  * First functional release of the emulator. All of the lynx hardware is
    now emulated except for the MATH & AUDIO functions. 

V0.00 ?? Oct 1996
  * Started writing the debugging kernel & windows


--- END OF FILE ---
