LoadDskF/SaveDskF
m (→Format details) |
|||
Line 11: | Line 11: | ||
== Format details == | == Format details == | ||
− | The LoadDskF documentation says "all diskette sectors are written [to the image file] up to and including the highest occupied data sector". So, uncompressed files can | + | The LoadDskF documentation says "all diskette sectors are written [to the image file] up to and including the highest occupied data sector". So, uncompressed files can be converted to raw [[FAT]]/[[IMA]] format by deleting the header, and appending padding if needed. |
+ | |||
+ | === File structure === | ||
+ | The following information is from a [https://www.vcfed.org/forum/forum/technical-support/vintage-computer-software/13222-savedskf-exe-meaning-of-1-sector-leader#post183877 forum post]. | ||
+ | <pre> | ||
+ | +0 DW magic [all words are in Intel little-endian order] | ||
+ | 0x5AAA => Compressed | ||
+ | 0x59AA => No compression | ||
+ | 0x58AA => Older format (no compression), with sector data | ||
+ | beginning at fixed offset 0x200 rather than immediately | ||
+ | after the comment. Created by SAVEDSKF with the | ||
+ | undocumented /C option. | ||
+ | |||
+ | (In fact, LOADDSKF accepts any magic number in the range | ||
+ | 58AAh-5AAAh, but these are the ones SAVEDSKF generates). | ||
+ | |||
+ | +2 DW media type | ||
+ | The first byte of the FAT. | ||
+ | +4 DW sector size, bytes | ||
+ | +6 DB cluster mask | ||
+ | The number of sectors per cluster, minus 1. | ||
+ | +7 DB cluster shift | ||
+ | = log2(cluster size / sector size) | ||
+ | +8 DW reserved sectors | ||
+ | As in the BIOS parameter block | ||
+ | +10 DB FAT copies | ||
+ | As in the BIOS parameter block | ||
+ | +11 DW Root directory entries | ||
+ | As in the BIOS parameter block | ||
+ | +13 DW Sector number of first cluster (ie, count of sectors used by boot | ||
+ | sector, FATs and root directory) | ||
+ | +15 DW Number of clusters in image. This is probably less than the number of | ||
+ | clusters the disc can hold, since empty clusters at the end are not | ||
+ | saved. | ||
+ | +17 DB sectors/FAT | ||
+ | As in the BIOS parameter block | ||
+ | +18 DW Sector number of root directory (ie, count of sectors used by | ||
+ | boot sector and FATs) | ||
+ | +20 DD checksum | ||
+ | Sum of all bytes in the file. | ||
+ | +24 DW cylinders | ||
+ | Number of cylinders, 40 or 80 | ||
+ | +26 DW heads | ||
+ | Number of heads, 1 or 2 | ||
+ | +28 DW sectors/track | ||
+ | Number of sectors per track | ||
+ | +30 DB 0,0,0,0 | ||
+ | Do not appear to be used. | ||
+ | +34 DW number of sectors in image | ||
+ | +36 DW offset to comment | ||
+ | +38 DW offset to the first sector. If this is 0, assume it is 0x200. | ||
+ | |||
+ | After the header, an ASCII comment may follow. | ||
+ | |||
+ | The sectors then follow, stored in cylinder/head/sector order. If the magic | ||
+ | number is 5AAAh, the data will be compressed using a 12-bit LZW scheme. | ||
+ | </pre> | ||
== Identification == | == Identification == |
Revision as of 19:55, 20 April 2021
LoadDskF and SaveDskF are floppy disk imaging utilities by IBM. They have an associated file format, sometimes called DSK or SKF. The format was notably used for OS/2 service packs.
It most likely contains an image of a FAT12 filesystem.
Some files are compressed. The compression scheme is some form of LZW.
Contents |
Format details
The LoadDskF documentation says "all diskette sectors are written [to the image file] up to and including the highest occupied data sector". So, uncompressed files can be converted to raw FAT/IMA format by deleting the header, and appending padding if needed.
File structure
The following information is from a forum post.
+0 DW magic [all words are in Intel little-endian order] 0x5AAA => Compressed 0x59AA => No compression 0x58AA => Older format (no compression), with sector data beginning at fixed offset 0x200 rather than immediately after the comment. Created by SAVEDSKF with the undocumented /C option. (In fact, LOADDSKF accepts any magic number in the range 58AAh-5AAAh, but these are the ones SAVEDSKF generates). +2 DW media type The first byte of the FAT. +4 DW sector size, bytes +6 DB cluster mask The number of sectors per cluster, minus 1. +7 DB cluster shift = log2(cluster size / sector size) +8 DW reserved sectors As in the BIOS parameter block +10 DB FAT copies As in the BIOS parameter block +11 DW Root directory entries As in the BIOS parameter block +13 DW Sector number of first cluster (ie, count of sectors used by boot sector, FATs and root directory) +15 DW Number of clusters in image. This is probably less than the number of clusters the disc can hold, since empty clusters at the end are not saved. +17 DB sectors/FAT As in the BIOS parameter block +18 DW Sector number of root directory (ie, count of sectors used by boot sector and FATs) +20 DD checksum Sum of all bytes in the file. +24 DW cylinders Number of cylinders, 40 or 80 +26 DW heads Number of heads, 1 or 2 +28 DW sectors/track Number of sectors per track +30 DB 0,0,0,0 Do not appear to be used. +34 DW number of sectors in image +36 DW offset to comment +38 DW offset to the first sector. If this is 0, assume it is 0x200. After the header, an ASCII comment may follow. The sectors then follow, stored in cylinder/head/sector order. If the magic number is 5AAAh, the data will be compressed using a 12-bit LZW scheme.
Identification
Old format files start with bytes 0xaa 0x58
.
New format uncompressed files start with 0xaa 0x59
.
New format compressed files start with 0xaa 0x5a
.
Software
- DIUNPACK Rel. 3.03 (1996-01-30) (OS/2 software)
- loaddf.zip - LoadDskF 1.16r (1993-01-14) and SaveDskF 1.14r (1992-05-26) - DOS and OS/2-compatible binaries; probably requires a floppy disk + drive.
- DSKXTRCT - Exracts files (uncompressed disk images only) (OS/2 software)
- dskdcmps - Decompresses compressed disk images (source code)
- MAKEDSKF - Utility for creating disk images (OS/2 software)
- 7-Zip can often handle uncompressed LoadDskF files, using its generic support for FAT.
Sample files
- http://cd.textfiles.com/hobbesos2/2_1/SERVPAK/ - Old format
- https://archive.org/details/IBMOS22.11XR06200EnglishDiskettes → "IBM OS2 2.11 - XR06200 - English - Diskettes.zip" → *.DSK - Examples of new format, uncompressed
- https://archive.org/details/OS2_Install_Disks → OS2_W3B-D1CD_2000-03-19.zip → DISK1.DSK - Example of compressed format