2.6 -- Wed Oct 14 23:05:01 PDT 1998  Tim Mann <mann@pa.dec.com>

* Sector sizes other than 256 are now supported! 128, 256, 512, and
1024 all work, on both JV3 floppy images and real floppies. This
feature uses a backward compatible extension to the JV3 format; xtrs
JV3 floppy images that use only 256-byte sectors will still work with
other emulators. I could find very little TRS-80 software to test this
feature with. Super Utility crashes when reading sectors larger than
256 bytes. Trakcess works well, though.

* Fixed a bug in delivering FDC completion INTRQs. Previously an
interrupt could be lost if Z-80 software read the status register just
at the moment the interrupt was to be delivered.

* Fixed bugs in the FDC "read address" command on real floppy drives.
	
* Added the -doubler option, and added a more accurate emulation of
having two separate FDC chips in Model I mode.  Super Utility now
works properly with double density if -doubler is set to either
"percom" or "radioshack" (not the default value "both").

* Bug fix: The floppy controller's BUSY bit was not set while the FDC
completion INTRQ was being delayed.  That was the real reason why
increasing the delay caused problems (as noted under 2.5 below).

2.5 -- Mon Oct 12 14:59:14 PDT 1998  Tim Mann <mann@pa.dec.com>

* Fixed a bug in graphics-only mode. When there is no text overlay,
graphics should always be 640x240. Graphics should be 512x192 only
when 64x16 text is actually overlayed. Thanks to Mark McDougall for
the bug report.

* In the fix for CP/M described under 2.3 below, I increased the delay
for disk INTRQ in too many cases. The increased delay for seek
commands was causing Model III NEWDOS/80 to fail to boot. For now, I
reduced the delay on seek (and related commands) back to the pre-2.3
level, while leaving the increased delay for reads on a blank track
(and related commands) in place. Thanks to Mark McDougall for the bug
report.

2.4 -- Sun Oct 11 08:14:36 PDT 1998  Tim Mann <mann@pa.dec.com>

* Oops. The fixes for Montezuma CP/M mentioned below were inadvertently
left out. They are included in this version.

2.3 -- Sun Oct 11 01:05:17 PDT 1998  Tim Mann <mann@pa.dec.com>

* Added import and export utilities for Montezuma CP/M, written by Roland
Gerlach. Thanks!

* Fixed bugs in 512x192 graphics mode, reported by Mark McDougall.

* Fixed a problem that prevented Montezuma CP/M from formatting
diskettes.  The number of instructions of delay between trying to read
a sector on a blank track and getting a disk INTRQ interrupt was too
short.  Also, reading the disk status register would cancel a pending
interrupt even if it was still being delayed (i.e., had not yet
actually happened).

* Fixed bug in Model 4 @ICNFG chaining in xtrshard/dct. If you have
the old version of xtrshard sysgened, you should remove your
config.sys and re-sysgen with the new version.  The bug could prevent
other sysgened drivers from initializing at boot time, and could even
cause crashes while booting due to an address being executed as
instructions.

* Fixed Expose event support to do fewer redraws. This reduces the
problem of xtrs hanging for a long time (doing repeated redraws) after
the window is moved, which shows up on window managers that display
the coordinates on top of the window while it's moving.

* Fixed bugs in -borderwidth, and changed default to 2.

* Added emulation of the Radio Shack hi-res graphics card, including
undocumented ports. This card is similar to the Micro Labs card but
not identical.

* Added mouse support and a mouse driver.

2.2 -- Sun Sep 27 19:59:00 PDT 1998  Tim Mann <mann@pa.dec.com>

* Added hints on configuring for games to the man page.

* Improved the -autodelay algorithm.  It now finds the correct speed
much faster.

2.1 -- Sat Sep 26 14:06:49 PDT 1998  Tim Mann <mann@pa.dec.com>

* Added emulation of the Micro Labs Grafyx Solution Model 4 hi-res
graphics card. Thanks to Mark McDougall for typing up a summary of the
documentation for me!  I checked the behavior on doubtful points
against Matthew Reed's emulator -- thanks to Matthew for pioneering
here.

* Added -autodelay. This dynamically adjusts the -delay setting to try
to make programs run at about the speed they would have on a real
machine.  It works by monitoring how many T-states are executed during
each heartbeat clock period and adjusting the delay value up or down
by one on each tick.  It doesn't track very precisely, but is good
enough to make realtime games a lot more playable.

* Deleted the -spinfast option, which is no longer needed.

* Disk index holes are now emulated in virtual time, locked to the
rate at which T-states would be executed by a real TRS-80. Thus
programs that measure the disk rotational speed with timing loops will
get the answers they expect. In particular, this will correct problems
with the FORMAT programs in TRSDOS 2.3, VTOS 3.0, and at least some
NEWDOS versions.

* Added a T-state counter.

* Keyboard repeat is automatically turned off when focus enters the
window and restored to the previous state when it leaves.  Thanks to
Marcelo Fernandes Vianna for the idea and an initial version of the
code.

* Partial support for 16-byte non-IBM sectors in the 1771 FDC
emulation, just enough to support VTOS 3.0's copy protection
scheme. Bit position 0x04 in the JV3 sector flags field is now used to
indicate a non-IBM sector.  Thanks to D. J. Dubay for inspiration.
	
* Parameters to the keystretch algorithm can now be controlled from
the command line. Tweaking them might be of help in getting games or
other software that polls the keyboard in unusual ways to work well.
	
* Bugfix: in Model 4 mode, we could try to access the SoundBlaster
hardware even when the -sb switch was not given, typically resulting
in a crash.  Thanks to Roland Gerlach for the bug report.
	
2.0 -- Sun May 24 18:14:52 PDT 1998  Tim Mann <mann@pa.dec.com>

* Added -delay flag, a crude speed control.

* Added Model 4P emulation.  Please don't pirate Model 4P ROMs.  Frank
Durda IV has expressed interest in creating a freely redistributable,
simplified 4P ROM for use in emulators, but it is not yet available.

* Added a somewhat more general mechanism for scheduling events to happen
several instructions in the future.  This supports software that sometimes
starts an I/O operation that will trigger a completion interrupt in the
near future, but relies on the fact that the real I/O device could not
interrupt until the CPU had had time to execute a few more instructions.
Previously I had a more kludgey case-by-case solution for this problem,
but that method didn't work for the Model 4P ROM.

* The cmddump program (a TRS-80 DOS load module analyzer) is now included
in the release, but there is no man page.  See the top of cmddump.c for
brief documentation.

* Added ability to use a TRS-80 load module file directly as the ROM.
In particular, the MODELA/III file is in this format.

* mkdisk now puts the original filename in the header of a .hdv file.

* Added missing code to initialize the SoundBlaster DSP and turn on the
DAC speaker.  This was required to make sound work properly on my machine,
which has the ESS1688 AudioDrive sound chip, a SoundBlaster clone.  It's
probably needed for older true SoundBlaster models too.

* Changed sound resource to have same name ("sb") as command line option.

* Moved sound init code to fix bug I introduced in 1.10.

* Older Linux kernels don't have <sys/io.h>; 2.0.29 does not, 2.0.32 does.
Added comment saying to delete the include if it causes an error.

* Fixed bugs in assembly version of settime: it did not work on an
emulated Model III/4/4P in Model III mode using MODELA/III as its ROM, and
it caused JCLs to abort on Model 4 LDOS. 

* Fixed bug in emulating the SLA instruction: the Z flag was not getting
set when 0x80 was shifted left to yield zero.  The bug was affecting the
MultiDOS 4 keyboard driver, causing problems with key repeat.

1.10 -- Thu Apr 16 19:20:30 PDT 1998  Tim Mann <mann@pa.dec.com>

* Fixed bug in setting data rate for real floppy drives that spin at 300
RPM (3.5-inch and 360KB 5-inch).  This bug caused disks written by xtrs in
such drives to be unreadable on a real TRS-80 (and vice versa).  Disks
written by old xtrs versions in 1.2MB 5-inch drives (which spin at 360
RPM) are OK.

* Finished implementing emulation of 8-inch floppy drives.  Added
xtrs8/dct, an LDOS/LS-DOS driver for the emulated 8-inch floppy hardware.
Corrected index hole emulation for 8-inch drives to run at 360 RPM.  Added
support for real 8-inch drives (untested) and emulation of 8-inch drives
by real 5.25-inch and 3.5-inch drives (tested and working).

* Added emt_system.  Updated xtrsemt.ccc.

* Added sound emulation based on code from Fabio Ferrari.  Linux with
SoundBlaster only.

* Fixed bug in returning error (or success) code from emt_strerror.
Reported by Roland Gerlach.

* Give an error message and don't crash if diskM-U is linked to a floppy
device that we don't have read/write permission for.

* Undocumented equivalents for documented instructions are now commented
in disassemblies.

* import.z and export.z modified to also work with Newdos/80.  settime.ccc
rewritten in assembly language and made to also work on Newdos/80.  Thanks
to Ulrich Mueller for this code!

* Corrected disassembly of ld a,r.  Added borderwidth resource.  Minor fix
to import.bas for Newdos/80.  Thanks to Ulrich Mueller for this code!

1.9 -- Thu Feb 12 20:44:02 PST 1998  Tim Mann <mann@pa.dec.com>

* Added a hard disk emulation driver, xtrshard/dct.  It basically uses the
plain file I/O emts, but I added minor variants of open and close to allow
the names to be relative to -diskdir and keep rebooting from causing file
descriptor leaks.  Renamed mkfloppy to mkdisk and added support for making
an empty hard disk.  Hard disk format is compatible with Matthew Reed's
emulators; thanks to Matthew for supplying documentation on his format.

* Distinguished between fatal and nonfatal errors.  Now an unimplemented
opcode is a nonfatal error.  It's treated as a no-op.

* Added the raw code bytes to disassembler printout. Fixed bugs in
disassembling ld (ix+dd),nn and ld (iy+dd),nn.  Corrected disassembly
of rlca and rrca.

* Fixed a fatal bug in emt_lseek.  Added emt_ftruncate.  Fixed portability
bug in emt_open that affected import/cmd and export/cmd.  Added disk
change count on emt_misc.

* "next" in debugger now will step over RSTs.  Note this won't work
right with the funny RST 8 calling convention in the Model I/III Basic 
ROM, which puts a 1-byte argument after the instruction.

* Added import, export, and settime for Model 4 TRSDOS/LDOS 6.

* Fixed problems compiling trs_disk.c on some Linux versions.

1.8 -- Mon Dec  1 16:00:52 PST 1997  Tim Mann <mann@pa.dec.com>

* Moved queueing of keys to after the translation from X keysyms to
TRS-80 keyboard transitions.  This lets shift transitions that are
forced by other keystrokes (where X and TRS-80 keyboards have opposite
shift states to get the same character) be queued separately and thus
separated in time from the basic key transitions.  This separation is
required by the Montezuma CP/M keyboard driver, which sometimes misses
a shift transition if another transition occurs at exactly the same instant.

* Bug fix: an FDC restore command was erroneously zeroing the sector
register instead of just the track register.  Montezuma CP/M tickled this
bug.

* Bug fix to mem_bank from Roland Gerlach.  Switching banks in the
low-order half of the address space was switching in the wrong memory.
Montezuma CP/M tickled this bug and crashed.

* Removed use of pre-POSIX signal code; thanks to Al Petrofsky.

* Added the delayed_intrq_kludge in more cases in trs_disk.c.  This fixes
additional problems with SuperUtility and Trakcess that I didn't notice
earlier.  Also fixed some problems with error handling on real floppies.

1.0.tpm1 to 1.7 -- Tim Mann <mann@pa.dec.com>

* Added floppy disk emulation, timer interrupt emulation, a kludge to
import and export data to the host system, Model III mode, Model 4 mode, a
rewrite of the keyboard handling, support for most of the undocumented
Z-80 instructions, and a bunch of bug fixes and minor improvements.

* Fixed bugs in the instructions rrc, inc ix, inc iy, sra, and neg.  I
didn't notice the sra bug until I tried to get Model III mode working;
the Model III LDOS disk driver uses it.  The neg bug was keeping the
break key from working right under LDOS in xtrs-1.3 and earlier.

* Got the emulator running both Linux and Digital Unix.  Now it might
have minor problems elsewhere, on less ANSI- and POSIX-compliant
systems.

* Fixed two bugs in the disassembler.  The ld (bc),a instruction was
erroneously disassembled as ld bc,a, and instructions that start "dd
cb" or "fd cb" were not disassembled; for example: bit 7,(iy+03h).

* Fixed some bugs in emulated cassettes.  Formerly if you tried to
append more stuff to an emulated cassette, it would smash whatever was
already there.  If you tried to read from a cassette with nothing on
it, it would lock up so hard that even the emulated boot button
wouldn't work.  Now at least the boot button works.

* SIGIO is now used in a much safer way than before, and the emulator
will work without it if needed.

* Reworked the keyboard support substantially.  A full state vector is
now kept, including all 64 possible TRS-80 keys.  Key queueing is now
always used, and a "stretching" feature prevents the emulated keyboard
state from changing too often, to avoid losing keystrokes.  Keyboard
response is quite snappy and reliable now.  I added enough key
mappings that it should be possible to do about everything you could
do with a real TRS-80 keyboard (and more than on a Model I, because
modern keyboards have N-key rollover).  More key mappings are easily
added by changing tables; there is very little special-case code.

* Did some work on the KBWAIT feature, which tries to avoid burning
host CPU cycles when the emulated program is sitting in a loop polling
the keyboard.  It now works in a lot more cases.

* More accurate character bitmaps are now used, contributed by Al
Petrofsky.  The Model I bitmaps are still not the real ones, which
used a 5x7 matrix, not 7x8.

* The halt instruction is now emulated correctly.  Formerly it caused xtrs
to exit.

1.0 -- David Gingold and Alec Wolman

* Initial release.  Emulated a TRS-80 Model I with 48K of RAM, cassette
drive, and uppercase-only screen.  See README.
