3.9a -- Sun Nov 28 14:17:49 PST 1999  Tim Mann <mann@pa.dec.com>

* Fixed a bug in the GENIE support and added one more GENIE feature:
printer interface at port 0xFD.

3.9 -- Fri Nov 26 11:07:24 PST 1999  Tim Mann <mann@pa.dec.com>

* Fixed a problem in the sound support which (for reasons I don't
fully understand) was making xtrs hang when playing sound on Linux
kernel 2.2.12.  Thanks to Roland Gerlach for the bug report.  Version
3.8 of xtrs worked on kernel 2.2.5, but not 2.2.12.  Also fixed a bug
where too many samples could be generated if the Z-80 program
repeatedly wrote the same value to the sound/cassette port; this makes
the CP/M bell sound much better, and also seems to fix the remaining
problem with the Talking Adventure 1 title screen.

* Corrected a small error in emulating Model I floppy disk controller
interrupts (a feature that's unused by any known software anyway!).

* Installed a pile of changes from Branden Robinson, which he says are
"mostly to satisfy the vagaries of Debian's packaging policy."  They
are as follows:

  * main.c: canonicalize program_name here, not in trs_xinterface.c, so
    that error messages are consistent
  * Makefile:
    - clean rule deletes compile_rom binary, and keeps deroffed manpages
    - veryclean rule deletes deroffed manpages
    - use Debian-canonical file modes when installing
    - install cmddump, hex2cmd, and mkdisk
  * Makefile.local:
    - compile-in expected paths for ROM files
    - build using readline and ncurses (for zbx internal debugger)
    - Debian-canonical flags to cc
    - LDFLAGS and IFLAGS that make sense with our X directories
    - create a PREFIX variable that gets prepended to BINDIR and MANDIR
  * trs_xinterface.c:
    - remove canonicalization of program_name, this is now in main.c
    - change logic for finding romfiles; check command line options, X
      resources, compiled-in path to rom files, then finally fall back on a
      built-in ROM image
  * cassette.sh: rewrote csh cassette script in Bourne
	
I undid or modified a few of Branden's changes: I left the old
cassette script as the default since I'm not confident that every Unix
system has a new enough version of /bin/sh to support cassette.sh.  I
left -Wall out of the C flags, since I see no reason to worry users
with the small number of harmless warnings I've left in the code.  I
put the default installation locations back to places that are
appropriate for add-on code in most non-Debian systems: /usr/local/bin
and /usr/local/man.

* Merged in support for the GENIE, a German Model I clone, from Jenz
Guenther.  I simplified it a bit along the way; I hope I haven't left
out anything essential.

* Fetched updated cpmutil.dsk from Roland Gerlach's Web page,
http://www.rkga.com.au/~roland/trs-80/cpm-xtrs/.

3.8 -- Sat Jul 17 19:25:57 PDT 1999  Tim Mann <mann@pa.dec.com>

* Made several tweaks to the sound support.  The title screen of
"Talking Adventure 1: Forbidden Planet" for Model III now works
somewhat better, at least at -samplerate 44100, but there still seems
to be a problem.  Also, it still looks like the speed boost when a
sound begins (trs_suspend_delay) may be making games run too fast when
a sound plays.

* Lost Data is now set if a read or write is not completed in 500ms.
This is not an exact emulation, but is enough to make DOSPLUS 3.3 and
Floppy Doctor work.
	
* Seeking and stepping slowed down a little to make Floppy Doctor
notice that the Busy bit does get set.

* Head Engaged bit emulated correctly now.  Was needed for Talking
Adventure loader (!).

* DMK writing emulation more accurate, handles case of writing to a
sector that was formatted with no DAM.  Thanks to David Keil.

* zbx "dump" command prints T-state counter and delay value.
"diskdump" prints T-states to next motor timeout, not T-state counter
value at timeout.

3.7 -- Sat Jul  3 15:57:04 PDT 1999  Tim Mann <mann@pa.dec.com>

* Completely rewrote the cassette support.  Instead of trapping the
Model I ROM routines, it now observes I/O requests to the cassette
port and uses xtrs's T-state counter to measure (or generate) the
correct signal timing.  Real cassettes can even be read/written using
the OSS sound driver or .wav files, though this could use some work.

* Completely rewrote the sound support to use the OSS sound driver.
Most code is shared with the cassette support.  The old code is still
there too, but #if'ed out.
	
* Modified import/cmd and export/cmd to work on Model III TRSDOS 1.3.
Tested and verified that setdate/cmd works there too.

* Recompiled cd/ccc, mount/ccc, pwd/ccc, truedam/ccc, umount/ccc, and
unix/ccc with the LDOS I/O redirection option turned off.  This makes
them work on Model I/III TRSDOS and NEWDOS too.

* Added -l (force lowercase) to cd/cmd, mount/cmd, and unix/cmd.
Useful with Model I/III TRSDOS and NEWDOS.

* Fixed a bug in printing exit status from unix/cmd.

* Added -p/-u flags to mkdisk for turning write protection on/off.

* Added display of IFF1, IFF2, IM, and undocumented F register bits to
the zbx dump command.

* Fixed a 1-byte memory smash in emt_opendisk.

* Fixed a bug that could crash xtrs when accessing an empty real
floppy drive.
	
* Made error() and fatal() more capable and cleaned up some stray
places where fprintf(stderr, ...) was being used instead.

3.6 -- Sun Jun 20 16:13:05 PDT 1999  Tim Mann <mann@pa.dec.com>

* Implemented the DMK emulated floppy format.  This format supports
essentially everything the original hardware could do, including
"protected" disk formats, non-IBM sectors on the Model I, partially
reformatting a track to achieve mixed density, Read Track, and more.
It is compatible with David Keil's Model 4 emulator; thanks to David
for designing and documenting it.

* Added support for the Motor Off NMI on Model III/4.

* Added emulated CRCs on Read Address.

* Added diskdump command to zbx; dumps the state of the emulated
floppy disk controller and drives.

3.5 -- Sun May 16 21:55:38 PDT 1999  Tim Mann <mann@pa.dec.com>

* Changed physical disk handling to report the correct WD17xx error
bits upon reading (or writing) a sector with a CRC error in the ID
field.  In this case both CRC and RNF bits should be set.  Fixing this
lets us boot physical Scott Adams Adventure disks that use the Kim
Watt loader.  Unfortunately, the WD17xx behavior with "read address"
on such a sector cannot be emulated, because a 765-style FDC's "read
id" command ignores IDs with CRC errors rather than returning an error
when it sees one.  Also, of course, .DSK format has no way to
represent a sector with a CRC error in the ID field.
	
* Always use a recalibrate if seeking a real disk to track 0.  This
should help us recover from confusion about what track the disk is
really on.  Such confusion should not arise unless two copies of xtrs
are both seeking the disk, or the disk is mapped twice to the same
xtrs and both virtual drives seek -- but there are sometimes reasons
for doing that.
	
* Updated xtrsrom4p.README file with material inadvertently left out
in 3.4 release.
	
3.4 -- Sun Apr  4 22:27:46 PDT 1999  Tim Mann <mann@pa.dec.com>

* Corrected the Model 4 reset switch to send RESET instead of NMI.
Thanks to Lamar Owen for pointing out the error.
	
* Corrected the default charset for Model III to be katakana.  Thanks
to Gary Shanafelt and others for pointing out the error.

* Fixed minor bugs in cassette support.  F10 (Reset button) now gets
you out of cloading something that isn't there, even if you aren't
using the SIGIO support.  Also, autodelay measurement is turned off
while cloading.

* Added a free minimal Model 4P ROM, written by Pete Cervasio (with a
few hacks of my own).  Thanks, Pete!  The free ROM can boot only Model
4 mode operating systems; it doesn't know how to load MODELA/III.
	
3.3 -- Sat Jan 23 15:42:36 PST 1999  Tim Mann <mann@pa.dec.com>

* Added an emt_misc code to query/set the -truedam flag, and added a
Misosys C program to invoke it.  Made -truedam more rigorous for real
floppies, and clarified (I hope) DAM documentation in the man page.

* Much improved behavior when accessing a real floppy drive with no
disk in it.  Previously this would generate a raft of error messages
to stderr, subsequent accessses to the drive would not work until the
user pressed F7 to reset the error condition, and the TRS-80 program
would always see the problem as a sector not found or a write fault
instead of an empty drive.  Now we check whether a disk is present
whenever the drive is selected, unless we have already checked in the
last T seconds (including the implicit check that occurs when you read
or write to the drive).  If the drive is empty, the TRS-80 program
sees this correctly, there are no stderr messages, and F7 is not
needed.  F7 will still force a check before the timeout T.  T is
currently set to 3 seconds.

* Drive motor timeout is now emulated.  Formerly drive motors were
emulated as never timing out; now they time out after two seconds
(measured in T-states).  This is useful for a few programs that fail
to handle error cases properly unless the motor eventually times out
and causes Not Ready to be asserted.  Model I SuperUtility has been
observed to do this, at least in some unusual cases.  Minor bug: the
T-state counter doesn't run during HALT instructions or when the
emulator has detected that the TRS-80 program is blocked waiting for
keyboard input (but it does run while the TRS-80 program is handling
timer interrupts out of those states).  

* Fixed bugs in maintaining the track position on real floppies.  Part
of the fix causes a restore (recalibrate) on each real floppy drive
when xtrs is first started, and when an emulated drive is changed from
a .dsk file to a real drive and F7 is pressed.  The other part avoids
forgetting the head positions when F7 is pressed.

* Detect attempts to format a track with a sector ID that is not
followed by any sector data (i.e., no data address mark).  We can't
represent this on either a .dsk file or a real floppy, so we print an
error message.  In the JV3 .dsk file case, we record it as an
intentional CRC error instead, even though that is not the same thing.

* Made -truedam affect reading real floppies.  Without -truedam,
single density F8 is translated to FA upon reading; with it, F8 reads
as F8.  On writing to real floppies, it is still the case that all
non-FB DAMs are written as F8, but with -truedam you now get an
non-fatal error message for F9 and FA.

* Changed delayed event scheduler to work in terms of T-states, not
instructions.

* Used delayed events to emulate semi-correct timing for the Read
Address command on emulated floppies.  Unfortunately, there were so
many problems making this work with real floppies that I had to give
up.  The timing emulation does make the HyperZap "A" command produce
reasonable-looking results on emulated floppies, for what that's worth.

* Tweaked the FDC emulation so that the method for formatting mixed
density tracks that Model III and 4 Super Utility uses will work on
emulated floppies (but not real floppies) -- they toggle the MFM input
to the FDC during formatting.  I had no idea that would work on real
hardware, but evidently it does.  The method that Model I SU and
HyperZap use still does not work -- they format the track first in one
density with a very large gap at the beginning, then reformat over the
gap in the other density, aborting the format in the middle using the
Force Interrupt command to avoid overwriting the first set of sectors.
It's hard to see how to do this reliably with a .DSK file, which
carries no information about gaps; how do you decide which sectors (if
any) from the old track should remain valid?  It also would be a pain
to implement.  Neither method works on real floppies; it does not seem
feasible to implement mixed density formatting on a PC-style FDC,
especially not working at arm's length through the Linux driver.

* Fixed a few small problems with FDC emulation that were revealed by
HyperZap.  I still can't really say that xtrs supports HyperZap well
enough to be useful.

3.2 -- Sat Jan  2 20:43:42 PST 1999  Tim Mann <mann@pa.dec.com>

* Reworked JV3 DAM support to be more accurate by default, or fully
accurate with the new -truedam flag.

3.1 -- Tue Dec 15 19:37:30 PST 1998  Tim Mann <mann@pa.dec.com>

* Added cd/cmd, pwd/cmd, unix/cmd, mount/cmd, and umount/cmd.  They
are compiled with Misosys C and therefore probably work only on LDOS
and LS-DOS.  (They definitely don't work on Model I TRSDOS 2.3 or
Model I Newdos/80.)

* Changed import/cmd and export/cmd to default the destination
filename.

* Added emt_getddir and emt_setddir.  Changed MC names of some emts in
xtrsemt.h because MC's linker requires names to be unique in the first
seven characters.  Fixed several bugs in xtrsemt.h and xtrsemt.ccc.

3.0 -- Sat Dec 12 11:19:58 PST 1998  Tim Mann <mann@pa.dec.com>

* Fixed a bug in the retry loop that's used to read real floppies with
sector sizes other than 256.  It would screw up if the sector could
not be read at all.

* Fixed a bug in reflecting CRC errors on real floppies to the
emulated controller.  Formerly this was done in an incorrect way that
would typically hang the floppy driver in the Z-80 DOS.

* Minor portability changes.

2.9 -- Fri Nov  6 23:14:20 PST 1998  Tim Mann <mann@pa.dec.com>

* Fixed a nasty bug in formatting emulated floppies with sector sizes
other than 256 bytes.  Sector data would be written to the wrong
offset in the file during the format and during any subsequent writes,
until the next F7 disk change or the next time the emulator was run.

* New version of cpmutil.dsk from Roland Gerlach with a bug fix.
IMPORT.COM would crash if the CP/M filename you specified already
existed and you gave a different name in response to the error
message.

2.8 -- Sat Oct 31 15:00:52 PST 1998  Tim Mann <mann@pa.dec.com>

* The default XFree86 keymap reports the shifted F1-F10 keys as
keysyms F11-F20, so I changed xtrs's mapping from keysym to TRS-80 key
to compensate.  Shift+F6 now works as TRS-80 Shift+0, as documented.
The remapping entailed some small user-visible changes to seldom used
keys: (1) F11-F14 no longer have distinct functions of their own. (2)
Home is no longer a synonym for Clear; instead it takes over the
obscure duty of letting you activate the Model III/4 RightShift
position even if you're in Model I mode.

* Replaced the incorrect DAA implementation with a correct one, fixed
a few obscure bugs in documented Z-80 flag settings, and implemented
all the undocumented flag settings.  I used a test program included
with the yaze CP/M emulator to check for errors, and I read the yaze
code for guidance on fixing them.  Thanks to the author of yaze for
checking his implementation so carefully and making his code available
to others under the GPL.
	
* Bug fix: due to a race condition between the main thread and the
SIGALRM handler, autodelay could cause xtrs to hang when the delay
changed from nonzero to zero.

* Bug fix: trying to do a Write Track on an emulated drive with no
disk in it could crash xtrs. Some other operations also failed to
check for an empty drive, but with less dire consequences.

* We now compute a reasonable gap3 size on real floppies instead of
using a small constant value (0x0c). The small gap3 seemed to cause
problems at times. The formulas might still need tweaking.

* Added code to measure the gap sizes that Z-80 software is trying to
format. These are not actually used for anything, but can be printed
if debugging is turned on. It's not possible to feed them directly to
a PC FDC due to interface differences.

* Formatting a real floppy now tries to use the fill data byte given
by the Z-80 program. Since the WD17xx let you fill with (almost) any
data, but PC FDCs let you choose only one byte, we can't fully emulate
this. We just pick the last fill byte given in the last sector and use
that throughout. This is needed for CP/M, which looks for its E5 fill
byte to find free directory space!

* Changed the real floppy sector-not-found error handling heuristic
for reads to try each possible sector size once internally before
returning an error to the Z-80 program.  Of necessity, however, a
sector-not-found error on write is still returned immediately to the
Z-80 program; on the retry with a different sector size, we will
need to run around the Z-80 program's loop more or fewer times to pick
up the number of bytes we are trying with.

* Fixed a bug in reading/writing 1024-byte sectors on real floppies:
the error handling heuristic was not trying that size.
	
* Minor bug fix: executing a HALT instruction would pause the emulator
even if a disk interrupt was scheduled to happen a few cycles
later. We now check the event schedule before pausing.

* Fixed a bug in doing inverse video with -usefont.

* Changed the default font for -usefont to have fewer *'s, to eliminate
problems where the wide version didn't scale the intended font.

2.7 -- Sat Oct 24 16:21:17 PDT 1998  Tim Mann <mann@pa.dec.com>

* Fixed a bug that would have prevented the Z-80 emulation from working
on machines where char is unsigned by default.

* Implemented the alternate characters for Model III/4, corrected all the
character generator fonts and added several options.  Decommissioned the
.bdf fonts; they are inaccurate and (for unknown reasons) they don't work
with the font scaler in XFree86.  Decommissioned the -trsfont feature;
now graphics blocks are always generated at runtime, not taken from the
font. Thanks to Todd Cromwell III for supplying real Model III character
generator ROM data obtained using a ROM reader.

* Added a fake boot ROM to use as a default. It just prints a message that
you don't have a ROM installed for this TRS-80 model. Maybe in the future
it could be beefed up to do more: the Model 4 (when not in Model III mode)
and the Model 4P don't require a great deal from the ROM.

* Updated xtrsemt.h and xtrsemt.ccc.

* Added a bunch more functions to emt_misc. 

* Cleaned up code to remove most warnings.

* Added -sizemap and -stepmap.

* Added signal blocking around calls to readline in debug.c, allowing it
to work again.  See Makefile for details.

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.
