FDF Image
From Just Solve the File Format Problem
(Difference between revisions)
Arnoudmulder (Talk | contribs) (→Specifications) |
(→Sample File) |
||
| Line 108: | Line 108: | ||
* [https://archive.org/details/EZDKP40_ZIP Software download and Emulation] | * [https://archive.org/details/EZDKP40_ZIP Software download and Emulation] | ||
| − | ==Sample | + | ==Sample Files== |
* [https://archive.org/download/UtilitiesRom2/BB_94%20%28G%29.zip/BB_94%20%28G%29%2F1234%2F1234.FDF DOS Mouse Driver Image file] | * [https://archive.org/download/UtilitiesRom2/BB_94%20%28G%29.zip/BB_94%20%28G%29%2F1234%2F1234.FDF DOS Mouse Driver Image file] | ||
| + | * {{DexvertSamples|archive/floppyDiskFile}} | ||
==Links== | ==Links== | ||
* [http://www.ez-forms.com/ezdkp.htm EZX's EZ-DisKlone™ Plus for DOS] | * [http://www.ez-forms.com/ezdkp.htm EZX's EZ-DisKlone™ Plus for DOS] | ||
* SSW/EZX's Super DiskCopy | * SSW/EZX's Super DiskCopy | ||
Revision as of 14:24, 22 September 2026
Contents |
Overview
Floppy Disk File (FDF) are disk images used by the DOS software EZ-DisKlone Plus. Introduced in 1991, the format is a compressed disk image validated by a 16bit CRC.
File Identification
FDF files have the header "1A 46 44 46".
Specifications
The FDF file format is reverse engineered in 86Box, the source code can be found at:
86Box-master\src\floppy\fdd_img.c
Basically FDF used RLE compression.
Integers are stored as little-endian.
EZ disklone truncates the image, the unused sectors filled with 0xF6 at end of the disk are not stored.
//------------------------------------------------------------------------------
// File header
//------------------------------------------------------------------------------
// file signature
#define FDFFILE_SIGNATURE MAKE_FOURCC(0x1A, 'F', 'D', 'F')
// file header
// - 128 bytes
typedef struct
{
// equal to FDFFILE_SIGNATURE
UINT32 Signature;
// unknown (0x0600)
UINT16 Unknown1;
// description
CHAR Descr[FDFFILE_LEN_DESCR];
// all zero
BYTE Reserved1[8];
// unknown (0x0100)
UINT16 Unknown2;
// unknown (0x0034)
UINT16 Unknown3;
// all zero
BYTE Reserved2[46];
//
} TFdfFile_FileHdr;
//------------------------------------------------------------------------------
// Block header
//------------------------------------------------------------------------------
// block compression method
#define FDFFILE_METHOD_STORED 0x00
#define FDFFILE_METHOD_RLE 0x01
#define FDFFILE_METHOD_EOD 0xFF /* end of data */
// default block size is 9216 bytes
#define FDFFILE_DEFAULT_BLKSIZE (9*SIZE_KB)
// block header
// - 5 bytes
// - followed by RLE compressed data
typedef struct
{
// one of FDFFILE_METHOD_xxx
UINT8 Method;
// CRC16L checksum (LHA)
UINT16 CRC;
// number of compressed bytes
UINT16 Size;
//
} TFdfFile_BlkHdr;
//------------------------------------------------------------------------------
// RLE compression
//------------------------------------------------------------------------------
// - if FDFFILE_METHOD_EOD then end of file
// - if FDFFILE_METHOD_STORED then block is stored uncompressed
// - if FDFFILE_METHOD_RLE then:
// * if b7 is set then the lower 7 bits are the repeat count and the next
// byte is the byte to repeat
// * If b7 is zero then its a store count, followed by the stored bytes
//------------------------------------------------------------------------------
// - decompressed blocks do not need to be the same size as stored blocks
// (stored blocks are FDFFILE_DEFAULT_BLKSIZE in size)
//------------------------------------------------------------------------------
Software
Sample Files
Links
- EZX's EZ-DisKlone™ Plus for DOS
- SSW/EZX's Super DiskCopy