-------------------- AmigaOS 3.1.4.(1) project -----------------------

Changes for trackdisk.device 45.1 (14.7.2018)

- Added support for NSCMD_QUERY.

----------------------- AmigaOS 3.2 project --------------------------

Changes for trackdisk.device 45.2 (10.2.2019):

- In case sector preambles were garbled, the
  track writer could have trashed memory. It now
  tests the preamble for correctness before it
  attempts to align the track in the buffer.

- In case the sector number was garbled on reading,
  but the checksum was correct, the trackdisk.device
  overwrote memory beyond its own structure.

Changes for trackdisk.device 45.3 (26.4.2019):

- The busy-wait delay function was not CPU independent
  and only delayed depending on the CPU speed. It now
  performs a dummy-read from the chipset registers to
  synchronize with the 7Mhz clock.

Changes for trackdisk.device 46.1 (4.8.2019):

- Bumped to V46 so the module is automatically loaded on
  3.2.

Changes for trackdisk.device 47.2 (27.12.2019):

- TD_REMCHANGEINT was, despite all claims, not safe yet
  as it might have happened that the corresponding
  TD_ADDCHANGEINT was not yet processed (still pending),
  and in such a case, it would remove just some request
  from the request queue.

Changes for trackdisk.device 47.3 (11.1.2020):

- The test for out-of-bounds sector numbers was still not
  correct and could have again triggered out-of-bounds
  memory accesses. Fixed.

Changes for trackdisk.device 47.4(2.5.2020):

- some dead code/data removed

- variables TDU_BUFFER and TDU_BUFPTR unified

- functions TDLruBuffer/TDGetBuffer inlined/removed

Changes for trackdisk.device 47.5 (7.5.2020):

- A new MFM-Encoder using the CPU has been added. It will be
  used if there is a 68020 or better.

- Some general optimizations in MFM-handling.

- The check if the provided buffer IO_DATA is located in
  chip memory has been changed from exec.TypeOfMem to
  execbase.MaxLocMem as this check will be performed for each
  sector again.

- File blit.asm has been merged into mfm.asm.

Changes for trackdisk.device 47.6 (8.5.2020):

- Fixed wrong chip memory detection which caused bad data
  encoded on 68000 and IO_DATA in fast memory (regression
  from 47.5).

Changes for trackdisk.device 47.7 (17.5.2020):

- Optimized sector copy on 68000/10 when encoding MFM from
  IO_DATA located in fast memory.

- TDMfmDecode will use always the CPU if 68020+ is present.

- TDMfmDecode checks for destination buffer in chip-memory
  via exec.MaxLocMem instead exec.TypeOfMem().

- TDMfmSumBufferDecode calculates checksum via decoded data
  instead MFM-data (optimized).

- TDMfmCPUDecode inlined (was one time used).

Changes for trackdisk.device 47.8 (23.5.2020):

- MFM checksum will be calculated during TDMfmEncode.

Changes for trackdisk.device 47.9 (23.5.2020):

- Allocate TDU_CHIPBUF only when needed.

Changes for trackdisk.device 47.10 (29.5.2020):

- Minor optimizations in driver.asm.

- Autodoc for OpenDevice BUGS added. Flags are ignored if
  unit was open anytime before.

Changes for trackdisk.device 47.11 (9.6.2020):

- The buffer for MFM data is no longer allocated on unit init.
  Instead it is allocated when first needed by commands READ,
  WRITE or FORMAT. This saves the chip memory for drives without
  a disk inserted (until a disk is inserted).

- Flag TDU,UNREADABLE,7 removed. Obsoleted by dynamic MFM buffer
  handling.

- The TDB structure no longer uses chip memory.

Changes for trackdisk.device 47.12 (15.6.2020):

- Structure TDB merged into TDU.

- InitUnit uses AllocMem instead AllocEntry

- TDInitBuffer(), TDU_SEEKTRK, TDU_BUFFER, TDU_ENTRY, TD_MEMLIST,
  TDSetErrors() recycled

Changes for trackdisk.device 47.13 (16.6.2020):

- Fixed wrong initialization of TDU_FLAGS with TDF_LARGE if 
  drive/disk in on boot 150RPM which lead to MFM_BUFFER doesn't
  get allocated for HD floppies.

Changes for trackdisk.device 47.14 (9.9.2020):

- SEEK now returns a proper error if something has failed.

- On WRITE trackdisk no longer modifies the buffer if the disk is 
  write-protected.

- FORMAT now clears only the slop area the first time instead
  the whole buffer every time.

- Device expunge now fails if a dirty buffer cannot be written.

- CMD_UPDATE now returns a proper error if writing a dirty
  buffer fails.

- CMD_STOP no longer drops a modified buffer if writing fails.
  The buffer now reamins dirty.

- Routines to decode/encode tracks completely rewritten which
  brings the following benefits...

- The device now returns more descriptive errors if there are
  errors in the read track/sector structure:
  TDERR_BadSecID - format type mismatch ($FF)
  TDERR_BadSecPreamble - sector number out of bounds
  TDERR_BadSecHdr - track number mismatch
  TDERR_TooFewSecs - not enough sectors found
  TDERR_BadHdrSum - bad sector header checksum
  In previous releases for these errors always TDERR_NoSecHdr
  was returned.
  The include files are updated accordingly.

- It is now possible to write a track with one defective sector
  if the defective sector is the first to be written for this
  track.

- Performance is a bit improved on reading/writing because
  checksums are only calculated when needed and data movement is
  avoided where possible. MFM-data is tried to be long-aligned
  to take advantage of 32-bit chip-memory.
