Please Note:  If Upgrading from an earlier version of EightyOne, you may have
to delete the file EightyOne.ini for the new version to operate correctly.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ok, I admit it.  90% of this program was produced while under the influence of
either Vodka, Brandy or Whisky - and it shows ;)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Requests in Progress

Joystick support
Save/Load to Printer Port

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Known Bugs

AY-8910 emulation appears faulty/incomplete
Skip Int/NMI options in debugger crashes emulator
EightyOne currently does not work in 8 bit colour mode (256 colours) or less

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Version 0.43b - 11/11/06
Added support for Piters 16 bit IDE interface. Added Disciple & +D Floppy interface.
Fixed a bug in +2A/+3 paging. Preliminary support for QL emulation (Does nothing
useful at the moment). If EightyOne finds FDC765.DLL available, it uses that
instead of lib765 (more compatible for protected +3 disks).

Version 0.43a - 01/11/06
Added support for Piters 8 bit IDE interface.  Added ability to select ROM files
from other than the ROM directory.


Version 0.43
Added ZX81/ASCII character view in TZX file viewer
Added ability to save screenshots as .bmp files
Readded feature to convert a block from wave->TZX, though this only works for
zx81 style blocks (atm).
Added ACE 96k Ram Pack
Fixed bug in Memotech Hi-Res emulation and added Memotech magic button
Fixed a couple of bugs in Timex graphics modex
Piters CF interface now appears working :)
Added Write Protect to Windows formatted drives. Changed default CHS for USB
connected drives.
Added ability to write to real hard drives/flash cards under divIDE/ZXCF/etc.
Rearranged the Hardware dialogue.  Added Jupiter ACE CF interface.
GDI is back!  You can now select which render method looks/works best for your
system.  Reduced the size of the border slightly in "small border".  The new
size fits a PC screen better in Fullscreen mode. Fixed a bug where you couldn't
load files from ZXCF on a 48k machine.  Added Multiface and Spectrum SE emulation.
Fixed 1Mbyte only config on ZXCF interface.

Version 0.42Z
Fixed a bug in the DirectX library I was using where the program would
crash on certain versions of Windows combined with certain versions
of DirectX (It worked fine with Win98 DX7 & 8 but not Win98 DX9, whereas
it worked fine on XP using DX9).  The application has now been tested
by myself using:

Windows 98SE, DirectX 7.0
Windows ME, DirectX 7.1
Windows ME, DirectX 9.0C
Windows XP, Direct 9.0B
Debian Linux, Wine 0.9.11 (using 'nosound' option).

Version 0.42Y
Rewritten MicroDrive code so FORMAT now works.  Modified custom controls so
EightyOne should be fully skinnable under XP. Fixed a polarity bug in ZX81
emulation when saving to a wav file.  Rewritten display code using directX
giving a huge speed boost.  Added another Jupiter ACE sound board.

Version 0.42X
Fixed Window resizing problems.  Fixed Drag 'n drop of Spectrum snapshot files.
Moved Reset/NMI/Pause controls to separate menu.  Added ability to save/load
multiple configuration files.  Added Interface 1 RS232 & Microdrive support.

Version 0.42W
Kempston Mouse, Plus3E, ZXCF and divIDE support added. Battery backed RAM 
images moved from the ROM folder to NVRAM.

Version 0.42V
Added Spectrum +3 disk drive emulation (Thanks to John Elliot for his excelent
lib765 & libdsk).  The emulator now saves the state of the status bar on exit.

Version 0.42U
Fixed FLASH attribute not working.  Fixed Wave AutoStart/Stop in ACE emulation.
Renamed "Options->Tape->Source/Destination->TZX Manager" to "Tape Manager".
Fixed several bugs preventing EightyOne running smoothly under Windows 98.
Implemented loading/Saving of SNA/Z80 snapshot files.  Fixed timing error in
TC2048 emulation.  Saving memory blocks now works on Spectrum based machines
(Including spectrum .scr files).  Implemented support for Timex .dck files.

Version 0.42T
Fixed Ace up/down keys being reversed. Added ability for the Spectrum to save to
TZX.  Implemented Tap/TXZ support for the Jupiter Ace. Added support for Timex
TC2048/TS2068 machines.  Tightening up of the TV emulation timing stopped Manic
Miner from displaying properly - now fixed. Fixed Lambda Display problems on a
32 bit desktop.  Fixed bug where EightyOne would not start up correctly if the
last time it was closed the debugger was left open.

Version 0.42S
Fixed a bug with Inverse Video Selection  Converted the Wave Loader form to match 
the style of the TZX form (Fixing several bugs in the process).  The Wav Loader 
is now resizable too. Slight improved (though not perfect) 48k memory contention.
Redesigned the Hardware dialogue with icons and everything!

Version 0.42R
Added more colour options to the Artifacts box. Improved TZX handling.  Removed 
the Tape Manager, since all functionality now exists in TZX.  Lambda now has 
sound support (Thanks to Burnttoy for working it out). Preliminary support for 
Lambda .a83 files (read only at the moment).  Expect lots of bugs in this release
(Especialy the load/save code) but please, don't let that stop you reporting them.

Version 0.42Q
Added Spectrum TZX with preliminary acceleration.  Fixed bug where window
contents were not being updated on the ZX81 if in FAST mode. Fixed Sound output
in ACE mode. Changed ghosting for Spectrum so that it accomodates the brightness
attribute.

Version 0.42P 25/02/06
Fixed DDCBxxxx and FDCBxxxx opcodes being displayed incorrectly in the debugger.


Version 0.42O 24/02/06
Fixed a bug where scanlines on ZX81/Ace in non-advanced display mode were always
very dark. Made a start on contention, though it isn't correct yet.

Version 0.42N 24/02/06
Added proper Interlaced video support and improper dot crawl emulation for
spectrum emulation.  Fixed upper and lower border Spectrum border emulation.
Loading wave and csw now works on the Spectrum.  Added 16k, 128k, +2 and
+2A support.

Version 0.42M 18/02/06
Fixed Jupiter ACE screen corruption, and rewrote the core to allow the nice
video actifacts to work on the ACE. Added the ability to select the display mode 
when switching to Full Screen. Also, I think I've gone completely insane and
added something I really shouldn't have.  Welcome to ZX Spectrum emulation ;)
Just don't expect LOAD/SAVE/Sound/Anything at all work, there isn't a proper
keymap (yet) but it's something else to play with.

Version 0.42L 16/02/06
Started commenting the source :-)
More control over the picture in the Artifacts dialogue.
Replaced Play/record/etc. text buttons in TZX/Wave dialogue with icons.  Fixed
several bugs which were causing the TZX manager to crash. Fixed the 
File->Open/Save/New in the main window so you can open any tape format 
(T81/p/o/tzx/wav) without having to open the relevant window. Tidied up the Memory 
block save/load dialog. Added context menu to the tape manager.

Version 0.42K 12/02/06
Fixed the loss of Window size on exit/restart of EightyOne and also when changing
between PAL/NTSC mode. Added Scanlines/Brightness controls to the Display Artifacts
Dialog.

Version 0.42J 11/02/06
You can now click on any value in the Debug window and modify its contents.
Fixed ZX80 loading .o files (again).
Added the facility for the emulated ZX81 to detect the environment it is running in.
See detect.p for an example and the help file for the complete details (eventually).
It appears that the COM port enumeration is also causing some trouble.  To disable 
COM port detection, create a file called "nocomport" in the same directory as 
EightyOne.exe (The contents of this file are irrelevent, merely its existance).
Likewise, you can disable sound by creating the fine nosound in the same directory
as eightyone.exe

Version 0.42I 05/02/06
I thought there would be stuff that got broken with the new core and I was right.  It
appeared that almost every pseudo-Hires game stopped displaying correctly - oops. Fixed
now.

Version 0.42H 02/02/06
More improvements to the Core, plus a new option in the View menu.  You can now select the
amount of border that is displayed around the display.

Version 0.42G 01/02/06
Major changes to the core emulation so that the Calodox Rezurrection demo will work (Great
demo guys!).  It basicly involved removing all the hacks and rewriting the core how it
should have been written in the first place.  No doubt this will introduce piles of new
bugs, but hey...

Version 0.42F 15/01/06
Added Wilfs CHR$16 extended character set and QuickSilva graphics board (Also included is 
a couple of QS games that make use of the board - Asteroids and Scramble). Fixed a bug
where 1 extra byte was saved at the end of a .p file (Thanks to Simon Holdsworth)

Version 0.42E 05/01/06
Preliminary TZX tape format support, still very buggy though.  Fun feature - emulated RAM 
Pack wobble (Press Ctrl-F12 for chuntey on demand). New hardware, DK'Tronics Graphics ROM 
(Thanks to Simon Holdsworth for dumping this).

Version 0.42a 11/09/05
Added TS2050 Serial port. Preliminary support for ACE AY circuit (Clock frequency is
probably very wrong at the moment though).

Version 0.42 09/09/05
Fixed several bugs introduced with the new ROM Handling.  Preliminary support for ZX97/Lite.
Added ACE colour board from ETI magazine. Fixed another bug in the keyboard handler.

Version 0.41 02/09/05
Preliminary Lambda Colour support.  Rom intercepts added to Lambda emulation to support the 
Tape Manager. Fixed Loading/Saving of Zx80 files (Zx80 files are awkward because the Zx80 
doesn't use filenames).  Added keyboard maps for Zx80/Lambda (Maybe these should be ROM
dependant instead of machine dependant?). ACE now supports loading and saving to .t81 files
(seemless conversion between .tap next on the todo list). Added support for M1NOT. Fixed a 
bug where if non-standard video was being produced (Primarily during load/save), the number 
of T-states being executed per 20/16ms timer tick was incorrect.  This was the cause of the
counter in the wavloader appearing to run slow.  WavLoader autostart/stop works again for 
everything except the Ace.  You can now Select TapeManager/WavLoader for Tape source and 
TapeManager/WavLoader/AudioOut for Destination (Audio In comming soon).
Tape loading/Saving interception is now done on a per ROM basis instead of per machine.  This
means if you fire up a ZX81 with the Lambda ROM, it'll use the Lambda intercepts instead of
the ZX81.  If you load an unknown ROM, tape manager will be disabled.  Fixed RAM Shadows so 
that Tree4th & H4th work (again).  Added the ability to load/save blocks of memory to file.

Version 0.40 28/8/05
AY emulation now appears to work, though it does sound a little off-key?

Version 0.39 27/8/05
Fixed two errors in the keyboard scaning code relating to the Shift key [Note - how does 
this affect Symbol shift in ACE emulation?].  Rewritten Display code to speed emulator 
up on slower machines.  Work in progress helpfile added [Note - it's BIG, maybe a 
separate download?]. Removed some unneeded options from the Hardware dialogue. Fixed 
memory accesses to non-existant RAM. Ram pack selection for the Jupiter ACE should work 
now.  Rearranged the Menus.  Redesigned the Wave loader dialogue.

Version 0.38 23/8/05
Memotech & G007 HRG are now fully working.  Frameskipping supported for slower systems.  
I've rearranged the Hardware dialogue to fit the extra options in.  I'm currently working 
on AY emulation and the help file (at last!).  PLEASE NOTE: The roms have been moved into 
a separate ROM subdirectory so they're not cluttering the place up.  If you normally just 
extract the new exe from the archive, please move your roms manually, else EightyOne 
won't work!

Version 0.37 17/8/05
Preliminary release.  Menus rearranged. Support for AY emulation and Beeper/loading noise 
though it sounds pretty rough.  Preliminary support for Memotech/G007 Hi-res cards.  G007 
doesn't work at all at the moment.  Memotech emulation works for the demo:

LET V=19000
RAND USR 8619

But that's about all...

Version 0.36c 14/8/05
Improved timing. Lambda emulation now appears correct-ish.  Support for .ace snapshots.

Version 0.36 7/8/05
Whoooaaa! 9 Months without a release.  Sorry about that - Been stuck without a desktop PC 
for quite a while and the laptop isn't really up to dev work.  Changes?  Erm, some... It 
looks like I fiddled around with the Tape dialog sometime around November last year.  I 
think I changed the Wav->Tap conversion routime to something a little more reliable.  
Snapshot loading/saving should work again.  There's a few changes to the display timing as 
well.

Version 0.35 29/11/04
Fixed a bug in the ROM selection box.  Added Preliminary support for the Lambda ZX81 clone.

Version 0.34 19/11/04
Complete support for the TS1500 ROM.  Note, the TS1500 only supports 16k of RAM.  EightyOne 
will not stop you from selecting a TS1500 with less RAM, however it defaults to 16k and the 
ROM will crash with less memory. The TS1500 also defaults to NTSC mode.

Version 0.33 15/11/04
Moved the display artifacts to it's own dialog with finer control.  Hopefully fixed a bug 
which caused EightyOne to crash sometimes when exiting.

Version 0.32 14/11/04
Fixed the NTSC display. The window shrinks vertically now so it doesn't display the 
vertical retrace.  Added a new feature (at the request of Andre), Display Artifacts.

Version 0.31 11/11/04
Tidied up the Tape Manager (it's now resizable!). Fixed a bug in the interupt generation code.  
This solves a problem where the display would get shifted left or right depending on the code 
used to create it.  H-Forth and TreeForth ROMs now work correctly (They need to be configured 
in a certain way - ROM patches off, 16k of RAM and Shadow RAM on).

Version 0.30 26/10/04
Few more changes.  You can now convert both ways, wav<>(t81,p).

Version 0.29 20/09/04
Lots of changes.  Converting wave files now preserves the silence between files.  EightyOne 
now loads/saves ZX80 .O files.  Lots of small changes throughout the code to tidy a few things 
up.

Version 0.28 19/09/04
Whahey! Two releases in one day (Is that good or bad?).  Tidied the code up a bit.  Fixed a 
few bugs here and there... nothing substantial.  A few things I should have done months ago.  
EightyOne now compiles with only 4 warnings.

Version 0.27 19/09/04
Interim Release.  Preliminary support for converting .wav files to .p/.81.  Should work for 
fairly clean samples but no guarantees for poor quality files.  Conversion the other way 
comming soon.

Version 0.26 23/08/04
Fixed a couple of bugs in the Wav loader.  The sample display was upside down.  EightyOne 
should now load more wav files now too.

Version 0.25 4/1/04
Nothing exciting I'm afraid.  I finally got my lazy ass busy and wrote the code to save/load 
all the setting... It should hopefully remember things like window positions, default 
directories now.

Version 0.24 - 1/1/04
Happy New Year!
OK, I finally got round to fixing the full screen code - mostly. A bit of tidying here and 
there, nothing much.  Still, we're back developing it again.

Version 0.23 - 29/12/03
Wow! Been a couple of months since the last update (Been bust starting my own company and such).
Not many changes, the printer has one or two fixes.  You can now save files on a >32k machine and 
there's a new option for Inverse Video.  Also changes the timers so it should work more smoothly.

Version 0.22 - 10/10/03

Proper support for 16k ROMs as well as <=8k. The Snap file has more information in it now, 
though remains compatible with the version used in 0.21.  You can now drag not only .p/.t81 
but also .wav and .z81 files onto EightyOne.  The Tape Manager and Wav Loader also display 
the current filename in the window title.  There's also more granular control over the 
emulation speed (It's still a logarithmic scale though).

Version 0.21 - 6/10/03

The Snap file format has changed to something a bit more robust, portable and extensible.  Also, 
it's now possible to hack the snap files in notepad or whatever if you so wish. You can now drag 
tape files onto the emulator window and they'll automaticly be inserted.

Version 0.20 - 4/10/03

Removed the Memotech option from the Hardware dialog until I can figure it out.  Instead, there's 
an option to select or deselect True-hires mode.  Enabled, WRX true hires mode works whereas 
disabled, you can use alternate character sets defined in the 8192-16383 memory range.


Version 0.19 - 4/10/03
Tidied up the Hardware dialog box.  Also the Maxdemo now works :)   - The timing was fine, 
however I'd forgotten to treat the second memory fetch of an EDxx instruction as an M1 cycle.  
oops.

Version 0.18 - 2/10/03

1/2 the time, switching between machines wouldn't work properly - fixed this time (hopefully). 
EightyOne finally has its own icon (Thanks to Paul Collins). I renamed the sliders on the 
Printer Control.  Added some functionality to the Fast 'n Dirty Mode so that a lot of true 
hi-res games now work as well as in Accurate mode.  Nothing much today...

Version 0.17 - 1/10/03

Small change to the timing again.  HR-Chess display the left-hand quote around the input now.  
Not many more features I want to do now... maybe saving to wav files. Oh, and I've still to 
code saving its config (Still putting it off).
Other changed include the NMI/INT skip in the debugger now kind of working (There appears to be 
a bug if you try and turn on/off the continuous display while it's executing code).  Another 
small change is the little blue blob that scans across the screen when continuous display is 
enabled - it represents the position of the TVs electron beam.  Oh, and the debugger doesn't 
work well with interlace display turned on because of the way the display is generated.


Version 0.16 - 30/9/03

OK, the debugger seemed to break a lot of other things too. It now has breakpoints though. 
Jupiter Ace emulation is working again, as is the ZX Printer.  There's few setting you can 
choose from for the printer too - they select the horizontal and vertical speed of the 
"carriage".  In fact, moving these about while the ZX81 is printing can produce very realistic 
looking ZX Printer output ;-)  There's a small change in the IM2 timing - ZX-tricator displays 
better now.

Version 0.15 - 30/9/03

It appears that ZX80 emulation got broken somewhere - fixed now.  Also a small change to the 
way ports are handled.  The game "intruder", a space invaders clone (Actually an interesting 
little program.  It was written for the ZX80 and is the only "interactive" flicker free zx80 
game I know of) now works properly.

Version 0.14 - 28/9/03

Todays new feature? - A Debug window.  It's not much use yet until I add something like 
breakpoints or skipping the NMI.  At the moment you end up "debugging" the screen generation 
50% of the time.  Still, it's a start.

Version 0.13 - 27/9/03

Whoops, looks like I left some debug code enabled in last nights release. Whenever you loaded 
a file, it'd stop with a D/0 error afterwards.  Anyway, I've finished off the Wav Loader - it 
doesn't seem quite as prone to the chuntey now and should handle 8/16 bit/mono/stereo samples.  
There was a fairly hefty memory leak too where it would forget to release the sample buffer 
when you loaded a new wav file.  

Version 0.12 - 27/9/03

Added Wav Player.
You can now load a program directly from a wav recording. I've also split the load/save rom 
patch into two separate options, so if you just enable the save patch, you can load a wav file 
then save it out to a .p or .T81.

To load a wav file, do the following:

	1. Go to "Hardware" and ensure the LOAD patch is disabled.
	2. Open up the Wav Loader Window
	3. In the Wav Loader, Click on "Open" and select your wav file.
	   At the moment, only 8bit mono files are supported (Any sample rate
	   though).
	4. You can move about the wav file with the slider.  Position the red bar
	   before the start of the program.
	5. On the ZX81, enter LOAD ""
	6. Press "Play" in the Wav Loader.
	7. If the wind is right and you've crossed all the right fingers,
	   the program will now load into EightyOne.

If you're having problems with noise, try adjusting the Threshold - That's the green
bar.  Anything below it is ignored as noise.

A sample wav file to play with can be found at

http://www.chuntey.com/eightyone/byter.zip

I've also hopefully fixed the problem where EightyOne would sometimes not boot the machine 
properly after a hardware change.



Version 0.11 - 25/9/03

Minor Changes.
Changed Rendering engine slightly.  The first line of Pseudo Hi-res games no longer appears 
corrupt. ZX80 screen appears too far to the right now though... Another look and a lot of things 
appear too far right. grrrr.

Added fps counter.

Added a ROM file selector to the hardware 
Dialog, however it will only let you select rom files in the same directory as the emulator.  I 
really do need to add the code that loads/saves the current config on startup/shutdown.

Fixed small bug where keys like , . ; ' # etc wouldn't work until after shift had been pressed 
and released.


Version 0.1 - 24/9/03

First Public Release.
