File: ChangeLog

package info (click to toggle)
xzx 2.4.4-1
  • links: PTS
  • area: non-free
  • in suites: slink
  • size: 1,976 kB
  • ctags: 1,632
  • sloc: ansic: 20,171; yacc: 458; lex: 132; makefile: 43; sh: 13
file content (1095 lines) | stat: -rw-r--r-- 38,737 bytes parent folder | download
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.