File: ChangeLog

package info (click to toggle)
xzx 2.9.0-1
  • links: PTS
  • area: non-free
  • in suites: potato
  • size: 1,644 kB
  • ctags: 2,195
  • sloc: ansic: 25,375; sh: 1,937; yacc: 714; makefile: 197; lex: 107
file content (1621 lines) | stat: -rw-r--r-- 58,070 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
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
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
--------------
 o 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 a 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 a 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 a 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 s 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 a 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 Improved debugger's error recovering after a syntax error (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 a 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. Many thanks to Martijn 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 a 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.


Version 2.5.0 (Sat May 2 1998)
-------------

 o Added formatted disk images (180/360/720kB) to the contrib archive.

 x Added menu item to load screen dumps (.SCR files) back into the emulator.
   Usefull for utilties that reside in the screen memory (utility3.scr).

 o Got explicit permission of Derik van Zuetphen
   <derik.vanzuetphen@koeln.netsurf.de> to distribute his program CPCFS
   together with XZX.

 x Save memory if neither LOW_BANDWIDTH nor LOWLOW_BANDWITDTH is defined.

 x Profiler: checks libc's memset() and memcpy() against XZX's implementation
   and uses the faster.

 x Added some hidden defines for performance tests and improvement.

 o Fixed a bug in the handling of 'Direct recording' blocks (1943.tzx).

 o More accurate emulation of the AY register 14. Keypad and RS232 are not
   emulated.

 o Changed LD_BYTES trap from #556 to #562. Tape files created with Z802TAP
   call #562 to load a tape block into memory (Mathematics.tap).

 o Fixed a bug in the Z80 core emulation (Chase H.Q. and other tapes).

 o Updated FAQ und man page files.

 o Some TAP files contain illegal values for blocktype in tape headers
   (Wild Street).

 o Removed several core dump problems.

 o Fixed a bug when writing into Spectrum's screen memory (Miguel Barrio).

 x Additional support for VOC block type 9 (used by Creative Lab's WaveStudio).
   XZX now supports block types 0 - 5 and 9.

 o Rewritten audio emulation. Speaker and AY are emulated via /dev/audio or
   /dev/dsp simultaneous. Speaker emulation is synchronized with Z80 T-states.
   AY emulation allows digital samples (speech). XZX's audio emulation has
   drawn level with X128.

 o Added audio support for IRIX 5.x and 6.x.


Version 2.6.0 (Wed Jul 15 1998)
-------------

 o Modularized Spectrum hardware detection and emulation for future extension.
   XZX will emulate various Spectrum models and clones (Scorpion and Pentagon).

 o Replaced screen emulation with the one from the registered version. It is
   sooo much faster. Removed support for X11 pixmaps (option '-pixmaps').
   Users of the shareware version, are you happy now?

 x Fixed minor bugs in the X11 part of the video emulation.

 o Fixed installation problem in src/Imakefile (Stephen Thomas).

 x Added emulation of the BetaDisk 128 interface by Technology Research Ltd.
   Thanks to Potapov Vsevolod Viktorovich <random@cybermail.net> for his help
   and the wrong informations in the Russian FAQ - it took me some time to
   find out how the BetaDisk works in practice!

 x The demo version uses the flag MAP_PRIVATE to map cartridge/disk images.
   This allows write access to the image in the memory, but does not update
   the image on the harddisk.

 o Removed unused tables from tables.c.

 o Moved Spectrum's keyboard handling from screen.c to keyboard.c.

 x Some smaller optimizations in the uPD765-A emulation.

 o XZX did not restore the blocking mode of stdin and stdout, what caused
   problems with the parent shell (Borne and C Shell).

 x Debugger's hardware panel does show the memory pages now. The contents of
   the AY registers can be altered through the hardware panel now.

 o Fixed R-register increment on Z80 interrupts (Alvin Albrecht).

 o Added sound support for Linux/AXP, Solaris/SPARC and SunOS/SPARC. Thanks
   to Andras Petri for testing the Solaris and SunOS versions.

 x Added a set of tools to deal with Hobeta and .TRD files. The tools have
   been verified to compile and run on Linux, SINIX, IRIX and SunOS.

 o Removed SIGSEGV problem when accessing Spectrum's memory (Andras Petri).

 o Even better AY emulation - improved envelope handling and playback of
   digital samples.

 o Changed from Imake to GNU autoconf/automake.


Version 2.6.1 (Fri Sep 11 1998)
-------------

 o Spectrum BEEP emulation on X terminals can be turned on and off.

 o XZX did print the wrong endianess of the host CPU when called with option
   '-version'.

 x Non GNU make programs do not understand the macros '$@' and '$<' when used
   in standard rules.

 o Save emulator settings to $HOME/.xzxrc on exit. See file README chapter
   'Configuration file' for details (Des Herriott).

 o Added an usage description of the Multiface 128 to the README file.

 o Added sound support for the Network Audio System by NCD.

 o Due to an erroneous Makefile the files for the analogue joystick emulation
   were not distributed.

 o The built-in debugger wrote into the OSD screenbuffer rather than into
   Spectrum's memory.

 o Removed option '-slowdown'.

 o Rewritten local/remote display detection when using MIT-SHM.

 o Rewritten large parts of the Z80 core emulation. Improved emulation of the
   ULA contended memory. The emulation is still not perfect but a good
   compromise on compatibility and speed (Flashpoint.tzx and others).

 o The audio emulation wrote behind the audio buffer, what randomly resulted
   in core dumps. Block only SIGALRM while writing to the audio device.

 o Autoconf did not find the include file 'X11/Intrinsic.h' on Solaris (Uros
   Bizjak).

 o The screen was not updated when loading from TAP files.

 o Standard TZX blocks (ID 0x10) will be 'fast' loaded if the LD_BYTES routine
   in the ROM is used.

 o Fixed cartridge formatting when using the Interface I v2 ROM (Andrew
   Petry). Many thanks to Ian Collier for investigating the problem.

 x XZX did dump a core when opening the assembler panel.

 o Rewritten TAP loading to be more robust.

 o Fixed X11 resource handling on Solaris (Uros Bizjak).


Version 2.7.0 (Fri Dec 11 1998)
-------------

 o XZX failed to compile the shareware version with debug code.

 o Added support for TZX specification 1.12.

 o Fixed screen emulation for 16bpp x 1 display mode (Julie Brandon).

 o Fast TZX loading (introduced with version 2.6.1) can now be turned off,
   because some loaders do not like it. A pause of 0ms resulted in a pause
   of 2^16ms.

 o Added generic support for the Open Sound System (OSS). We now have audio
   support via OSS for Linux (x86, Alpha, PowerPC), SCO Open Server,
   SCO UnixWare, Solaris (x86, Sparc), IBM AIX, FreeBSD, BSD/OS, OpenBSD and
   NetBSD.

 x Made the +3 FDC emulation more robust. CP/M Plus from Locomotive Software
   runs fine on the emulator.

 o Added support for disks in 'CPC system format' to the +3 emulation. Fixed
   problem with disk images in PCW SD/DS format (Alien_Storm.dsk).

 o Corrected Z80 core emulation according to the latest version of the c.s.s.
   FAQ. P/V flag on block IN and OUT operations is not emulated yet!

 o Added emulation of the Multiface 3. XZX is the very first Spectrum emulator
   with Multiface 3 support!

 x Update VTP if output filename has been changed from the SA_BYTES trap.

 o Disable emulation of a particular additional hardware if its ROM could not
   be loaded.

 x Added support for disk images in .FDI format to the BetaDisk emulation.

 x Patch TR-DOS ROM to speed-up disk operations (Mac Buster).

 o Display the type of tape blocks in TZX browser.

 o Corrected emulation of ULA's memory contention and the idle port in +3
   mode (c.s.s. FAQ).

 o Shareware version now draws screen and border line by line. Emulator window
   can be scaled during runtime. Removed options '-border' and '-flashing'.

 o The audio code supports IRIX 6.5's new al functions (Tristram Scott).

 o Added support for X11 visuals. XZX can utilize a different visual than the
   default one. PseudoColor, TrueColor and StaticGray with either 8, 15, 16,
   24 or 32 bpp are supported. More will follow.

 o Fixed installation of XZX's app-defaults file on Solaris/OpenWindows (Uros
   Bizjak).

 o Paul Hill <paul@lagernet.clara.co.uk> managed to compile and run XZX under
   Linux/68k:

    Hi Erik, just in case you wanted to know:

    I tried compiling XZX versions 2.6.1 & 2.7.0b1 under Linux/68k (running
    on my Amiga) and they both work fine.  Using RedHat 5.1 dist.

    It's a little slow, but usable.  The X server for my graphics card
    doesn't help (no h/w acceleration).

 o Added option '-xysnc', which selects between XSync() and XFlush() to update
   the Spectrum screen. Updated manual page.

 x The current emulator settings are no longer saved automatically on exit. It
   now depends on the value of a variable, which can be changed by a new menu
   item.

 x Registered version does no longer share the documantation and manual page
   with the shareware version. These reflect the additional options and
   features.

 x Added new menu items to the help menu to show the emulator documentation.

 x Betadisk emulation could access tracks behind the disk image boundary
   (7th_Reality.trd).


Version 2.7.1 (Tue Dec 22 1998)
-------------

 o Fixed handling of TAP blocks with a length of 2 bytes and less
   (World_Cup_Football.tap)

 o Added experimental audio support for AIX and HP-UX.

 o Interrupt mode 0 increased the R-register by two (c.s.s. FAQ).

 o Fixed emulation of the EAR bit on issue 2/3 Spectrums. Use the small BASIC
   program listed in the FAQ to verify the correct response of the emulator
   (Tranz_AM.tap).

 o Minor adjustments to the Spectrum timings so Flashpoint and Joe Blade 3 will
   load.

 x The filename of the tapefile for SAVE operations was displayed in the LOAD
   window.

 o The emulator can load from TAP files which use a custom loader, because
   internally they are converted into TZX format.

 o The menu item 'Select microdrive' should be active even when Interface I
   emulation is turned off.

 o Fixed (hopefully) the X11 keyrepeat problem.

 o Key releases are delayed if neccessary, so the emulated Spectrum program
   will not lose any key presses.

 o X11 can sometimes give the KeyPress event with the shifted KeySym, and the
   KeyRelease one with the same KeySym unshifted, so the emulator loses
   control of what has been pressed and what has been released (Andrew Petry).

 o Fixed wrong handling of Z80 snapshots, caused by a wrong c.s.s. FAQ (Philip
   Kendall).

 o Replaced the options '-rrShm', '-rrNoShm' and '-rr' by the option
   '-refresh'. Added new option '-cache', that enables a video cache that can
   speed up the emulation when little graphics activity is going on.
   The option '-xsync' can now be changed on startup of the emulator and while
   running.

 x Added new menu item to pause Spectrum emulation. Operations like loading
   or saving a snapshot file are possible in paused mode too.

 o Replaced the option '-ms' by the option '-speed', which controls the speed
   of the emulated Spectrum. Speed can be selected from 10% to 200% in steps of
   10%. Unlimited speed is also possible.

 o Option '-fast' enables special speed mode. If this mode is enabled, it will
   cause the emulator to disable any speed limit, turn sound emulation off and
   use a 1/10 refresh rate, so that it will run at the maximum possible speed.


Version 2.8.0 (Wed Jan  6 1999)
-------------

 o Save memory by allocating variables dynamically in snapshot.c.

 o Added emulation of the Pentagon, a Russian Spectrum clone. This computer
   has a built-in BetaDisk interface, which is not emulated in the shareware
   version, therefore no disk support.

 o Fixed compile problems when XZX_MF is defined and XZX_PLUS3 is not.

 o Must call XSync() after XShmAttach(), otherwise Sun's XWin server will
   respond with a 'BadAccess' error (Uros Bizjak).

 o Merged ROM image files of emulated machines into a single file per machine.
   Remove any installed Spectrum ROM and execute 'make install' to install the
   new ROMs.

 o Reject +3 snapshots if XZX has not been compiled with +3 emulation.

 o Fixed reading from AY register 15 (various articles from DejaNews).

 o All Pentagons equiped with YM2149F and they return a different value when
   reading from a non-existent chip register (Mac Buster, Enlight_96/
   Action.trd).

 o AY register were stored wrong in .Z80 snapshot.

 x BetaDisk emulation disabled all (!) other ports as long as TR-DOS ROM was
   active.

 o Added emulation of the Scorpion, a Russian Spectrum clone. This computer
   has a built-in BetaDisk interface, which is not emulated in the shareware
   version, therefore no disk support.

 o Resizing the emulator window sometimes caused a core dump. Screen was not
   redrawn correctly if video cache is enabled.

 o If a Spectrum 48K is emulated, changing the issue type from the OSDs must
   change emulated Spectrum type.

 o No snapshot format can hold Pentagon or Scorpion informations at the moment
   so XZX cannot dump snapshots in these modes.

 o The resource 'sound' was not saved correctly on exit.

 o Updated documentation and manual page.

 x Fixed geometry bug in the debugger gui.

 x Added a statusbar below the emulator window. It shows the current emulator
   speed (%) and frame rate (fps). The shareware version shows this information
   in the window title.

 o Fixed wrong screen addressation in mode 32bpp x 3.

 x Hide items for disk and cartridge operations from the pulldown menus if they
   are unavailable.

 o Function SetBorderColor() used wrong colour array.

 o Fixed minor bugs in the On-Screen-Dialogs.

 o Added emulation of the Kempston Mouse. The emulation is limited to Pentagon
   and Scorpion mode at the moment. Be warned: X pointer motion events consume
   lots of CPU power,

 o Fixed bug in the emulation of AY's noise channel and evelope generator.


Version 2.8.1 (Tue Mar 16 1999)
-------------

 o Added support for 24bit packed-pixel-mode. XFree86 uses this mode on some
   grafics cards.

 x Fixiated the size of VTP's tape contents list.

 x Show and utilize the drive led in statusbar if any disk emulation is active,
   hide it if not.

 o Fixed a typo in the SunOS audio code (Andras Petri).

 x The state of the Debugger panels was not updated if the panel is poped down.

 x Added interface for Z80 breakpoints to the Debugger GUI. Breakpoints can be
   set and removed with a mouse click. The number of breakpoints is only
   limited by Spectrum's memory (you can only set one breakpoint on each memory
   location).

 x VTP disabled the 'Close' button on tape errors. So there was no way to
   close the file.

 o XZX supports Linux/FreeBSD joystick driver either v0.8 or v1.x interface.
   A nice feature for cheating with games is available for joysticks with more
   than one fire button. Read section 'Joystick emulation' of the file README!

 x Retrieve colour of drive led from X resources.

 o Rewritten debugger's error recovery. Added human readable error messages
   (no longer the silly 'eh?'). Changed the syntax of some commands. Read
   section 'Commands' of the file README!

 o Added new commands to add, remove and show breakpoints to the built-in
   debugger.

 o Added new commands to modify and show the contents of the AY registers to
   the built-in debugger.

 o Must call function KmouseOff() if resource 'kmouseActive' is changed from 1
   to 0.

 o Added new option '-grab' to grab the X pointer when Kempston Mouse emulation
   is active.

 x WD1793 emulation handles data timeouts (Enlight Music Collection).

 x Added a new feature: Virtual Disk Images. Put Hobeta files in a directory or
   in a .SCL file and the emulator will treat it as a readonly .TRD disk image.

 o Since I upgraded from RedHat 5.0 (gcc 2.7.2) to RedHat 5.2 (egcs 1.0.3)
   the emulator does not dump a core anymore when running Zx_Land_2.tap. Must
   have been a problem with GCC.

 o Do more validation checks on TAP files.

 o Fixed X11 error with multi-visual displays (Mattias Engdegrd).

 o The OSD code did not save the position of next write to the XImage. This
   resulted in random segfaults when returning from the OSDs (Miguel Barrio).

 x Fixed a bug in the WD1793 Force Interrupt command.


Version 2.9.0 (Tue May 11 1999)
-------------

 o Corrected the handling of the R-register in Z80 snapshots (see .Z80 format
   description in Z80 v4).

 x Fixed a bug in the debugger GUI that could cause a segmentation fault.

 x New GUI based poke manager. Reads poke instructions from .POK files.

 x Pop up VTP if a tape file has been opened from the LD_BYTES trap.

 x The registered versions now shows a picture of the Spectrum keyboard
   (resource 'kbdlayout') if the system has the XPM library installed. The
   picture has to be in XPM format.

 o Mmap() did not use the resource 'libDir' to detect files. It does now, but
   the bad point is that these annoying messages "xzx: error: couldn't open
   <diska.dsk> for reading" are back.

 x The dialog "Add Breakpoint" does not ask for a page number anymore if the
   emulator runs in 48K mode. It now accepts linear, non-segmented addresses.

 x Changed default settings of the menu items "Reset when changing mode" and
   "Save on exit".

 x Made some changes to the menus to match the Motif style guide.

 x Motif ungrabs the pointer if the menus are entered by a keystroke. If the
   pointer re-enters the emulator window grab it.

 x Kempston Mouse emulation now sets an invisible cursor for the emulator
   window when active.

 x Disable Kempston Mouse emulation in popup dialogs.

 x Added emulation of the +D interface by Miles Gordon Technology. +D emulation
   reads and writes disk images in .MGT and .IMG format. Thanks to Denis
   Moreaux <endor@mygale.org> for the technical informations.

 o The emulator saved the state of the Interface I when in +3 mode to
   snapshots (Philip Kendall).

 o FileSelector() now uses FT_XXX enums rather than strings to match files.

 o While in the OSDs and waiting for a key XZX consumed up to 99% of CPU time
   (Miguel Barrio Orsikowsky).

 o Due to a typo XImage routines for 24bpp mode did not work on big-endian
   machines. Fortunately nobody ever complained.

 o Calculate size and number of audio buffer fragments in dependece of sample
   rate. This should remove the problem "couldn't write all bytes to audio
   device" with Linux kernels 2.2.X (Tom Hauerland).

 o Some minor corrections in the documentation (Philip Kendall).

 x Compile demo version without any sound emulation!

 o Check for the correct sizes of char, short and int data types.

 x Emulate ACB-Stero hardware on systems with the Open-Sound-System. Support
   for other platforms follows.

 x Added profiling for 24bpp mode.

 x When the WD17XX is busy, it ignores CPU writes to the command register
   unless the new command is a FORCE INTERRUPT (Worms Demo with Intro by
   Silicon Brains)

 x Treat .TRD disk images with invalid media byte as DD/DS (Double_Xinox.trd).

 o Funtion GetFilType() accessed an array behind its boundary (Tristan 'Minty'
   Colgate).

 o Do not compile in code for IF1 RS232 emulation if ROM traps are inactive.

 o Disable the menu item "Quick loading" if ROM traps are inactive.

 o Duncan Harvey <d.harvey@hubris2.demon.co.uk> managed to compile and run XZX
   under Linux/PPC:

     Erik,

     In case you don't already know, xzx v2.8.1 runs well on LinuxPPC 4.0 --
     that's Linux (based on Red Hat 5.0) running on a PowerPC processor.
     Note that my Linux installation is cobbled together from downloads, and
     not a complete installation from a distributor's CD -- but I can't
     imagine that xzx would work on a partial installation and not on a
     complete one!

 x VTP: On right mouse button clicks pop up a window containing informations
   about the selected tape block. This feature is more powerfull than the
   command 'tzxinfo' supplied with the XZX tools set.

 o The TZX block 'Jump' calculated the right number of the destination block
   but displayed a wrong value in the tape browser.