1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095
|
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.
Version 2.3.0 (Tue Dec 30 1997)
-------------
o Rewritten loadsave.c. Moved all tape format specific code into separate
files. Fixed some memory leaks.
o Added support for the ZX Tape format (aka TZX). Uses mmap() for faster
file access. If you don't have mmap() on your system you won't ever have
TZX support with XZX! Switch to a real UNIX. May thanks to Martjin van der
Heide for helping me a lot.
o Changed all TAP and VOC functions to use memory mapped file access - no more
fgetc(). Speed increased.
o Cleaned up ROM image handling. Removed ReadROMs().
o Preserve 'Tstates per frame' setting when changing the Spectrum model.
o Fixed bugs with 32bpp displays on 64bit Alpha machines (Razvan Surdulescu).
x Additional support for VOC block types 4 and 5. XZX now supports block types
0 - 5.
x VOC browser
x Don't enable 'Playback inputfile' in the tape options if TS_ERRIN is set.
o Display the type of tape blocks in TAP browser.
o Do not call munmap() in InsertTape() if mmap() failed.
x Fixed some minor bugs in +3 FDC emulation and implemented 'READ/WRITE
DELETED DATA' commands.
x Added Spectrum +3 parallel printer support.
x The emulator lets you select the scaling factor by resizing the emulator
window with the mouse.
x Fixed bug in sound options menu.
o Hold all Spectrum model dependent stuff (BasicRom, TVLINES, etc.) in a
config array, what makes the emulation of different models more exactly and
simplifies future extensions.
o Removed '-cycles' option. Will be replaced by an option that lets you choose
emulator speed (like Z80 and X128).
o Sometimes .SLT files didn't get closed. This was wrong since XZX started
supporting the .SLT file format. Curiously nobody ever noticed it.
x Activate/deactivate SA_BYTES trap as well as LD_BYTES trap from the tape
options.
o Menu 'Interface I/+3 Options' doesn't disable items anymore if they are at
least compiled in. No need to turn on IF1 or switch to +3 mode for drive
operations (inserting/removing cartridge or disk).
o Tape player state wasn't redrawn after it has been altered.
x GetResources() did overwrite its own stack - core dump.
x Exchanged default settings for slowdown keys (KP_Add/KP_Subtract).
o Removed '-pause' option. Reorganized menu 'Tape Options'.
x New GUI based tape manager (VTP). Combines tape loading and saving with a
real-time tape browser.
o Two different variables had the same name (PSG in io.c and ay8912.c).
Version 2.4.0 (Tue Dec 31 1997)
-------------
o New directory structure.
Version 2.4.1 (Mon Jan 5 1998)
-------------
o Fixed syntax error in screen.c when XZX is compiled for monocrome displays.
o Moved all memory mapped operations to util.c.
x Cleaned up the debugger and don't compile in debug.c anymore. Should be
slightly faster and smaller.
o Added TZX support to the tape browser.
x Added TZX support to the VTP. Tape blocks are also selectable with the mouse
now. Added autorepeat functionality to the REW and FF button.
o Block numbers were calculated wrong for Jump, Loop and Call blocks.
x Update the state of 'Additional settings' in the hardware options if the
emulated Spectrum model has been changed to Spectrum +3.
o Loading noise: tries to give you an approximation of the sound that a real
Spectrum produces while loading from tape.
o Fixed syntax error in mem.c when XZX is compiled without Spectrum +3 support.
o Completly rewritten Interface I emulation to use memory mapped files. Saves
a lot of memory (over 200 lines of source code!) and is faster in execution.
x Fixed bugs in 'WRITE (DELETED) DATA' command: wrong setting of the FDC main
status register and missing check for write protection.
o Better error handling in the management of tape files.
o Updated to TZX specification v1.11.
o Check file permissions before open the file in Mmap().
o Delay incrementing the block counter on 'Stop the tape' blocks until tape
playback gets started again.
o SELECT blocks in TZX files are now supported.
x Spectrum +3 printer support needs of course support for the basic machine.
Therefore XZX_PLUS3 has be defined!
Version 2.4.2 (Tue Jan 6 1998)
-------------
x Added some limitations and additional README file in order to produce demo
versions.
Version 2.4.3 (Tue Jan 6 1998)
-------------
o XZX now provides two compile-time configuration files:
- xzx.config configures the Imakefiles and the compilation process,
- config.h defines whould features should be compiled in.
Updated INSTALL documentation and Imakefiles.
o Changed the way the sound emulation source is handled. Now has its own
library (libaudio.a) and completely resides in a separate directory.
Prepared for future rewriting (see TODO).
o Defining XZX_PLUS3 but not XZX_IF1 caused a syntax error in menu.c.
x Using less than 8 microdives caused a syntax error in resource.c.
Version 2.4.4 (Sun Feb 8 1998)
-------------
o Implemented undocumented flag settings to block operations (ED A0-BB).
o Map memory shared (MAP_SHARED) and not private (MAP_PRIVATE)!
x Save default button labels of standard message dialog and use them if no
alternate label is given to function Dialog().
o A couple of minor bugfixes in the TZX part of the emulator.
x Spectrum +3 printer emulation does compile without Interface I emulation
now.
x Adjusted Imakefile.
o Use checksum to identify ROM images. Necessary for the correct patching of
the LD_BYTES and SA_BYTES routines.
o XZX now recognizes Ian Collier's Interface I ROM and sets the RS232 traps.
o Added Interface I v2 ROM image (if1-v2.rom).
o If a tape file (TAP/TZX/VOC) contains invalid data XZX may access memory
behind the end of the file. Must save process environment and catch SIGSEGV.
This is very UNIX'ish. I'd like to see how anyone will port this to another
operating system :-)
x Fixed multi-sector 'READ/WRITE (DELETED) DATA' commands.
o Fixed a bug in the Z80 core emulation (Speedlock 1/2 tapes).
o Changed signal handling to be POSSIX compliant. Catch SIGSEGV for clean
shutdown.
o Improved handling of the idle port and the ULA contended memory.
o Added support for Spetrum +2 ROMs.
o A couple of other minor bugfixes/optimisations in various parts of the
emulator.
|