-------------------- 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.