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.
