2019-08-23 John Elliott * libdsk-1.5.12 released. * LDBS driver: Fixed geometry probe when dealing with non-power-of-2 sector sizes. 2019-07-27 John Elliott * libdsk-1.5.11 released. 2019-07-20 John Elliott * New driver: dc42 (for Apple DiskCopy 4.2 disk images. This required an update to LDBS to support GCR encoding, so the LDBS format now stands at version 0.4. This should be forward- and backward-compatible with existing files in LDBS 0.3 format. 2019-07-06 John Elliott * QRST: Added transparent decompression for QRST v5 disk images. * Gotek driver: Added support for 720k disk image collections (as written by the SFRM72-TU100K firmware) 2019-02-17 John Elliott * dsk_getgeom(): Added rudimentary support for detecting Apple HFS 1.4Mb format. This allows dsklabel and lsgotek to display the labels of Apple-format disc images. Support for 400k and 800k formats is going to have to wait until I can work out how to represent them in a DSK_GEOMETRY structure! * Gotek driver: Added the ability to select which drive image is current without closing and reopening (using the driver-specific option GOTEK:PARTITION). This should improve performance of lsgotek under Windows. 2019-01-17 John Elliott * libdsk-1.5.10 released. 2019-01-01 John Elliott * dsktrans, dskform, dskdump: Output filetype always defaulted to 'dsk'. Attempt to come up with a reasonable default based on the filename (which can be overridden if required) * The compression type 'none' can be used to disable auto-expansion of compressed disc images (necessary if you are writing compressed data such as the Slackware installer without decompression). * Geometry probe: Rewrite the DFS boot block check so that LibDsk has a sporting chance of detecting DFS-format media. * New utility: dsklabel (get / set label on DOS, CP/M or DFS media) * New utility: lsgotek (list the drive images on a Gotek-format USB drive) * New driver: gotek (allows access to Gotek-format drive emulation disc images stored on a USB key) * More bug fixes from Mark Ogden: Incorrect results returned by the geometry probe in LDBS-based formats, and accessing sectors with dsk_lread() on disc images with 'extended surface' layout. * dskutil: Swapped "sectors / track" and "sectors / cylinder" captions (Mark Ogden). * Fixed some memory corruption issues detected by VS2017 analysis (Mark Ogden). * dskform: Widened total_sectors32 to 32 bits (Mark Ogden). * apridisk: Fixed a crash writing to Apridisk files. 2018-09-18 John Elliott * libdsk-1.5.9 released. * Fixed compilation issue on recent glibc (Steven Fosdick). * dskform: Added -pcdos and -apricot options to create FAT12 filesystems. 2018-04-09 John Elliott * SAP: New disk image format implemented (Thanks to Emulix75). 2018-02-06 John Elliott * libdsk-1.5.8 released. * Teledisk driver: Drive type guesser had types 1 and 2 (5.25" 48tpi and 96tpi) round the wrong way. 2018-01-31 John Elliott * libdsk-1.5.7 released. * Teledisk driver: Improved drive type guesser to cope with FM recording, sector sizes other than 512, extended-surface format discs. 2018-01-26 John Elliott * libdsk-1.5.6 released. * Teledisk driver: Make a stab at guessing the drive type when converting a disk image to Teledisk format. 2018-01-10 John Elliott * Geometry probe: Change the behaviour so that dsk_getgeometry() on a raw-format disc image of a DOS 1.4M disc comes up with the correct data rate. 2017-10-29 John Elliott * libsk-1.5.5 released. * POSIX: Integer underflow when formatting a track, causing a file of infinite size to be written. * POSIX: Sanity-check sector numbers passed to the driver, for another integer underflow. 2017-03-14 John Elliott * DSK: Rewritten to support Simon Owen's 'Offset-Info' extension. DSK files using Offset-Info cannot be readily rewritten in-place, so the DSK driver now uses LDBS as an intermediate format. * LDBS: In order to support the 'Offset-Info' extension properly, the LDBS file format has changed and the reference implementation updated accordingly. LDBS files generated by previous versions of LibDsk are still supported for now. 2017-03-03 John Elliott * New backend: Compaq QRST (Quick Release Sector Transfer). * New utility: dskconv -- convert a disc image file from one format to another using LDBS as an intermediate format. * ApriDisk, CFI, IMD, JV3, CopyQM and TeleDisk: All these drivers have been rewritten to use LDBS for intermediate storage, rather than each one using its own internal storage system. * All drivers: Driver names now allow aliases (eg, 'td0' as a synonym for 'teledisk'). * Win16 port no longer supports TeleDisk or CopyQM drivers (Win16 DLLs have not access to sscanf() ) 2016-11-01 John Elliott * libdsk-1.5.2 released. Changes from libdsk 1.4.2 merged: * Geometry probe: Make the Apricot BPB check more discerning. * IMD: Support IMD files with no comment (header line is followed immediately by 0x1A). * IMD: Fixed segfault when writing IMD file if number of tracks is not 20,40,80 or 160. 2016-03-18 John Elliott * libdsk-1.5.0 released. * New driver: LDBS ('LibDsk Block Store'), a new disc image format under development. 2015-12-28 John Elliott * libdsk-1.4.1 released. * General: Added a 'complement' flag to the recording mode, allowing support of disk images where all bytes are stored complemented. 2015-12-15 John Elliott * OK, let's call it stable: libdsk-1.4.0 released. 2015-05-01 John Elliott * libdsk-1.3.9 released. * New backend: JV3 (for TRS-80 'JV3' disc images). These have no magic number, so must be specified manually. 2015-04-24 John Elliott * libdsk-1.3.8 released. * IMD bugfix: Geometry probe was returning an incorrect data rate for HD disks. 2015-04-21 John Elliott * libdsk-1.3.7 released. * New geometry type added: "extsurface", for discs where the sector numbers increase across both sides (eg: 1-9 on side 0, 10-18 on side 1). * New backend: IMD (for files created by ImageDisk). Read/write support. Also has a built-in extra geometry probe, which may be worth pushing to other drivers (eg: DSK, TD0) that carry a similar amount of detail. 2015-01-06 John Elliott * Configure script: winioctl.h was not being detected. Also updated to autoconf 2.69 * dsk_getgeom: Fixed C89 compilation issue. 2014-03-02 John Elliott * libdsk-1.3.5 released. * Teledisk: Added read-only support for 'advanced' compression. Based on wteledsk decompression code by Will Kranz (relicensed under LGPLv2, with permission). * Teledisk: Check CRC of header before opening disk image. * dg_stdgeom(): Built-in geometry specifications were out of step with the corresponding dsk_format_t numbers. This wouldn't have affected setting formats by name, but some of the automatic geometry probes could have returned an incorrect geometry. * dsk_getgeom(): Added four Ampro formats: ampro200, ampro400d, ampro400s and ampro800. These correspond to formats AMP1-AMP4 under 22DISK. The double-sided ones can be autodetected by dsk_getgeom(); sadly, the single-sided ones can't. * dsk_typedesc_enum(): New function to enumerate driver descriptions without needing to open a disk image in each format in turn. * Utilities: All utilities now take options '-types' and '-formats' to list supported drivers and disk formats. * dsktest: New -libdskrc argument to dump all known disk formats in .libdskrc format. 2014-03-01 John Elliott * libdsk-1.3.4 released. * Documentation fix: 'teledisk' -> 'tele' * Included an example .libdskrc file. * Set the dirty flag when a drive comment is changed. 2011-04-20 John Elliott (based on patches from Ralf-Peter Nerlich) * Replacement CopyQM driver * All utilities now use basename() (if available) to trim paths from argv[0] 2011-03-29 John Elliott * dsk_creat: Check that this method is implemented before calling it. * dskutil: Correct the description of the 'W' command (Ralf-Peter Nerlich) 2011-01-10 John Elliott * rcpmfs: Added support for the ISX variant of the CP/M 2 format. 2010-09-27 John Elliott * libdsk-1.3.3 released. * rcpmfs: Buffer overflow when renaming a file with a full 8.3 name and a nonzero user number. [Thanks to Jurgen Sievers] 2010-06-28 John Elliott * Updated to latest autotools, various compiler warnings fixed. 2009-11-07 John Elliott * libdsk-1.3.2 released. 2009-11-07 Jacob Nevins * CFI format: Ensure that status messages are correctly removed. 2009-05-14 John Elliott * Geometry probe: Support Opus Discovery disks. 2008-12-26 John Elliott * Linux floppy driver: Do an FDCLRPRM when opening the floppy drive. This seems to be necessary to force a seek on the first read. [Thanks to Stewart Kay] 2008-08-24 John Elliott * CPCEMU format: Corrected a problem with signed/unsigned integer comparison. 2008-08-16 John Elliott * Fixed some compiler warnings under 16-bit DOS. * Added a -comment option to dsktrans, allowing the comment to be set when disks are imaged. 2008-06-07 John Elliott * libdsk-1.3.0 released. * Added support for SIMH disc image format. 2008-06-01 John Elliott * Added support for YAZE ydsk format. * Added skeletal support for IBM dskf format (not yet functional). * Added knowledge of filesystem parameters, since both the above formats require these as part of their metadata. 2008-04-02 Alistair John Bush * Patched Makefile.am to pass JAVACFLAGS to Java compiler. 2008-01-23 John Elliott * libdsk-1.2.1 released. 2008-01-19 Sven Klose * Corrected a compilation problem on FreeBSD. 2008-01-12 John Elliott * Corrected a bug which caused rcpmfs to give 'overrun' errors when emulating a CP/M 2 filesystem. 2007-12-17 John Elliott * libdsk-1.2.0 released. 2007-12-10 John Elliott * Removed O_CREAT from attempts to open serial ports. * For some reason I commented out the ibm320 format between libdsk-1.1.2 and libdsk-1.1.3. Can't think why. Uncommented it. * Removed a couple of C99 style comments (//) which prevented compilation on really old gcc versions. 2007-07-27 John Elliott * libdsk-1.1.14 released. 2007-06-11 Stuart Brady * Added a new geometry (FMT_TRDOS640). 2007-06-10 John Elliott * Updated the DOS and Windows projects with the new drivers (the Teledisk one didn't compile under Win16). 2007-06-09 John Elliott * libdsk-1.1.13 released. * New driver: Logical. This is a raw disc image as generated by 'dsktrans -logical'; that is, it is arranged in logical sector order rather than SIDES_ALT order. Useful for dealing with raw disc images that were dumped in logical order. * dsktrans: The -logical option has accordingly been deprecated, since '-otype logical' should have the same effect. 2007-06-02 John Elliott * New driver: Teledisk, based on the file format documentation at <http://www.fpns.net/willy/wteledsk.htm>. This driver is read-only. No code from WTELEDSK has been used, because it's GPLed rather than LGPLed. 2006-11-18 John Elliott * libdsk-1.1.12 released. 2006-08-02 John Elliott * cpcemu driver: Bug fix when a sector is not found and it has to start searching again at the beginning of the track. 2006-07-23 John Elliott * libdsk-1.1.11 released. 2006-07-02 Ramlaid <www.ramlaid.com> * cpcemu driver: Modified so that the dsk_trkids() function more accurately reflects the result from a real disk. Also exposed the ST0-ST3 registers. * SQ compression: Doesn't leak file handles if file not compressed. * NTWDM driver: Uses the passed sector size in dsk_xread / dsk_xwrite rather than the sector size in the geometry structure. 2006-04-18 John Elliott * libdsk-1.1.10 released. 2006-04-11 John Elliott * Extended the Apricot -> PCDOS boot sector conversion code to save a copy of the original boot sector. * Created a reverse conversion, PCDOS -> Apricot * dsktrans: The -apricot option now converts *to* Apricot format, not *from*. A -pcdos option has been added to convert from Apricot to PCDOS format. * A new utility, apriboot, just rewrites the boot sector in place. 2006-04-07 John Elliott * Made a start on a driver for Apricot MS-DOS. 2006-04-01 John Elliott * Corrected a problem in the Linux floppy driver that caused 'no data' errors reading 70-track Apricot discs if the geometry was probed automatically. 2006-01-21 John Elliott * libdsk-1.1.9 released. 2006-01-18 John Elliott * Expanded dskutil with the ability to read and write data. 2005-12-26 John Elliott * Bugfix: The rcpmfs driver was conflating User 1 and User 0. 2005-12-17 John Elliott * libdsk-1.1.8 released. * Added the myz80 geometry as one of the standard geometries, so that rcpmfs can present drives in the myz80 format. 2005-12-07 John Elliott * Updated the ApriDisk driver to support an extra block type, which I hypothesize to be the name of the utility that created the disk image. 2005-12-05 John Elliott * Modified the rcpmfs driver to accept SysTracks=0 as a valid parameter, rather than ignoring it silently. 2005-11-18 John Elliott * libdsk-1.1.7 released. 2005-11-13 John Elliott * Added support for reading DSK files created with Simon Owen's 'weak/random data' extension. * Created dskutil, a simple interactive program allowing arbitrary sectors to be read. Used to test the weak/random data extension above. * Added code to rcpmfs to deal with file truncation. 2005-09-03 John Elliott * libdsk-1.1.6 released. * Bug fix: Don't leak file handles in drvcpcem.c. 2005-07-21 John Elliott * Fixed the '-logical' option in dsktrans so it doesn't fall over with "bad parameter" errors. * libdskrc parser now understands 'sides' and 'sidedness' for the how-to-treat-sidedness parameter. 2005-07-03 John Elliott * libdsk-1.1.5 released. 2005-06-28 Daniel Black * Corrected an install bug in Makefile.am 2005-06-14 John Elliott * Added guard code against a buffer overrun in the DSK driver (if an attempt is made to format a track with more than 29 sectors) * Serial remote drivers and standalone serslave written for Linux, Win32, DOS16, DOS32 (DOS32 untested). 2005-06-14 John Elliott * Corrected a bug in the Linux and NTWDM drivers - dsk_xread was failing when the sector size passed in did not match the sector size in the geometry structure. * Added dskdump and dskscan to the list of utilities that get installed. * dskid(1) allows multiple arguments. 2005-05-10 John Elliott * Started expanding the internal 'RPC' system to support operation over serial lines. 2005-03-14 John Elliott * libdsk-1.1.4 released. * Added dsk_{p,l}trkids() and dsk_rtread() functions. * Added COM bindings (Windows version). 2005-02-28 Simon Owen * Added ntwdm driver. 2005-02-19 Philip Kendall * Added dsk_dirty() function. 2005-01-26 John Elliott * libdsk-1.1.3 released. 2005-01-25 John Elliott * Merged CopyQM format documentation from Per Ola Ingvarsson. 2005-01-21 John Elliott * dsk_getgeom refactored so that drivers can call the default guesser and then override individual fields. * dsk_getgeom also supports detection of BBC Master 512 DOS Plus format, which is like acorn800 but has 1-based sector numbers. * CPCEMU read and write now use the passed sector size, not the size in the geometry structure. * Merged a read-only CopyQM driver from Per Ola Ingvarsson. 2005-01-18 John Elliott * Updated ApriDisk driver and apridisk.html with the official ApriDisk format definitions. * Continued knocking rcpmfs into shape. * Added -apricot, -noformat, -first and -last options to dsktrans. Fixed the -retry option in dsktrans so the default is 1 and not MAXINT. 2005-01-16 John Elliott * Updated dg_aprigeom() to use sector size in the Apricot superblock. 2005-01-03 John Elliott * LibDsk now loads format definitions from a libdskrc file, allowing user-defined formats. * Created an experimental rcpmfs driver which presents a filesystem directory as a CP/M disk image. 2004-03-27 John Elliott * v1.1.2 release. 2003-01-11 John Elliott * Added support for density and recording mode to the DSK and extended DSK file formats. See appendix C of the documentation for the details of this. 2003-08-13 John Elliott * v1.1.1 release. 2003-08-13 John Elliott * Added dsk_set_retry() and dsk_get_retry() so that LibDsk can automatically retry reads/writes. * Added double-stepping support to the Linux floppy driver, thus allowing 360k floppies to be imaged in 1.2Mb drives. 2003-02-13 John Elliott * Added a driver for the 'apridisk' disc image format. * Added support for comments in disc images. * Added functions for LibDsk to display messages during lengthy operations. 2003-01-13 John Elliott * v1.1.0 release. * Added a mini-RPC system to allow 32-bit Windows applications to use the more capable 16-bit floppy API. * The 16-bit DLL is now called LIBDSK16.DLL, so it can be installed in the same directory as the 32-bit DLL. * Added a driver for the 'nanowasp' disc image format. * Removed constraints on the parameter order of the example utilities. 2002-12-16 John Elliott * v1.0.0 release. * Minor portability fixes. * DOS16 and Win16 drivers retry three times; this avoids "Disc changed" errors on drives that are slow to spin up. 2002-12-01 John Elliott * v0.9.9 release. * Projects provided to build LibDsk under 16-bit Windows and DOS; bug fixes in the .DSK driver to work correctly on a 16-bit compiler (CFI won't work on 16-bit DOS, except for very small images). * Drivers added for the Win16, DOS16 and DOS32 architectures. There may be a case for combining the source files for Win16 and DOS16 as they are quite similar. * Previous MYZ80 bugfix was faulty. Corrected. 2002-11-18 John Elliott * v0.9.5 release. * MicroDesign serial numbers can be read or altered by md3serial * Bug fix in the posix driver; when sectors are written beyond the end of the file, the gap is filled with 0xE5 rather than leaving the OS to decide what goes there. * Similar bug fix in the myz80 driver. 2002-04-27 John Elliott * v0.9.1 release. * Squeeze compression rewritten from scratch to avoid a possible licence conflict. 2002-04-10 John Elliott * v0.9.0 release. * IMPORTANT CHANGES: This release breaks backward compatibility in a number of ways. Most importantly, you must replace "DSK_DRIVER *" with "DSK_PDRIVER " throughout your programs. * Support for reading/writing deleted data (DSK and Linux floppy only; other formats do not support marking data as deleted). * DSK files in the extended CPCEMU format now have their own file type - "edsk". This means that extended DSK files can be created using LibDsk. * Bug fixes in the extended DSK format handler (Thierry Jouin). * Transparent compression layer added, supporting Squeeze, GZip and BZip2 (read only). * Special-case DQK driver removed; the standard CPCEMU driver + the compression layer can now handle this case. * BBC Micro DFS formats added to the list of built-in formats, and to the geometry probe. * Bugfix in the Linux floppy driver so that discs with FM encoding can be read (requires a suitable floppy controller and drive). 2002-04-06 John Elliott * v0.8.2 release. * New driver added: .DQK (.DSK compressed using Squeeze compression). * XCF2 200k format added to the list of built-in formats. * Darren Salt's manual pages added to the distribution. 2002-02-25 John Elliott * v0.8.0 release. * Support added for Java Native Interface bindings (requires JDK v1.1 or later). Use ./configure --with-jni to build them. * Java versions of dskid, dskform and dsktrans added. 2002-02-07 John Elliott * v0.7.0 release. * Support added for .CFI format (a strange format used by Cliff Lawson to distribute Amstrad PC boot floppies). * Bug fixes in the example utilities (Darren Salt). * dsktrans includes a -format option to use a built-in geometry rather than trying to probe it from the disc. * PCW 800k format added to list of builtin formats. 2002-01-15 John Elliott * v0.6.0 release. * Acorn ADFS formats added to the list of formats, and to the geometry probe. These don't work on Windows because of the limitations of the underlying floppy driver. * dsk_xread() and dsk_xwrite() altered so that only part of a sector can be read or written. * Make libdsk compile in Microsoft Visual C++ (Kevin Thacker) * dskform supports all built-in disc geometries. * dg_stdformat() can be used to enumerate the built-in geometries. * dsktrans includes a "-logical" option to rearrange the tracks of a disc, so that they come out in logical order in a "raw" file. This option is only effective for ADFS and 144FEAT formats.