Disk Express
(→Structure) |
|||
| Line 5: | Line 5: | ||
|released=1991 | |released=1991 | ||
}} | }} | ||
| − | + | '''Disk Express''' (stylized as '''Disk eXPress''' (v2.x); short name: '''DSKEXP''' (v1.x) or '''DXP''' (v2.x)) is a floppy disk imaging utility for DOS and OS/2 by Albert J. Shan. It was released mainly as shareware. A disk image can be saved either as a data file (supported by v1.96+), or as an executable that when run writes its contents back to diskette (supported by all versions). | |
| − | '''Disk Express''' (stylized as '''Disk eXPress''') is a | + | |
== Identification == | == Identification == | ||
| Line 68: | Line 67: | ||
|} | |} | ||
|- | |- | ||
| − | |0x006 || 4 bytes || [[CRC-32]] of disk data. ''[But what algorithm? It's either not the usual one, or it's not used in the obvious way.]'' | + | |0x006 || 4 bytes || [[CRC-32]] of disk data (before compression if compressed). ''[But what algorithm? It's either not the usual one, or it's not used in the obvious way.]'' |
|- | |- | ||
|0x00A || 1 byte || Compression type: | |0x00A || 1 byte || Compression type: | ||
Revision as of 16:35, 2 January 2026
Disk Express (stylized as Disk eXPress (v2.x); short name: DSKEXP (v1.x) or DXP (v2.x)) is a floppy disk imaging utility for DOS and OS/2 by Albert J. Shan. It was released mainly as shareware. A disk image can be saved either as a data file (supported by v1.96+), or as an executable that when run writes its contents back to diskette (supported by all versions).
Contents |
Identification
If the file is not executable, it begins with a 512-byte header. The first two bytes will be 'AS' and the third will be a version number, 0-2.
If the file is executable, it starts with an MS-DOS EXE header. Bytes 2-5 of the header give the length of the executable portion, as normal. The disk image header starting with 'AS' is found four bytes after the executable portion.
Executable files use the .EXE extension.
Structure
Executable loader
Depending on the version, and the options selected when the disk was imaged, the executable loader (if present) will be:
- MS-DOS EXE format, for v1.01-1.96 (default format), or v2.10-2.34 with "/DOS" option
- OS/2 New Executable format, for v1.01-1.96 with "/OS2" option
- Hybrid of MS-DOS and OS/2 formats, for v2.00-2.34 (default format)
The MS-DOS EXE loader is compressed with LZEXE for v1.01-1.02, or DIET (maybe with some hacks) for v1.96+. This is true even for the MS-DOS part of hybrid files. The OS/2 loader never uses executable compression.
The loader is followed by a 4-byte checksum and then the disk image data.
Disk image header
The disk image has a 512-byte header:
| Offset | Size | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x000 | 2 bytes | Magic number, AS
| ||||||||||||||||||
| 0x002 | 1 byte | [Major version, minor version] of Disk Express required to write this file. Usually [1,1] in files generated by v1.01-1.02. Usually [2,0] in files made by v1.96+, or [2,30] if the 'encrypted' or 'bad sectors' flags are set. | ||||||||||||||||||
| 0x003 | 1 byte | |||||||||||||||||||
| 0x004 | 1 byte | Release of Disk Express that created this file (single ASCII character) | ||||||||||||||||||
| 0x005 | 1 byte | Disk capacity:
| ||||||||||||||||||
| 0x006 | 4 bytes | CRC-32 of disk data (before compression if compressed). [But what algorithm? It's either not the usual one, or it's not used in the obvious way.] | ||||||||||||||||||
| 0x00A | 1 byte | Compression type:
| ||||||||||||||||||
| 0x00B | 1 byte | Last cylinder imaged | ||||||||||||||||||
| 0x00C | 1 byte | Last head imaged | ||||||||||||||||||
| 0x00D | 1 byte | Always 0 | ||||||||||||||||||
| 0x00E | 1 byte | Bitwise flags:
| ||||||||||||||||||
| 0x00F | 1 byte | Always 0 | ||||||||||||||||||
| 0x010 | 4 bytes | Passphrase hash (if encrypted) | ||||||||||||||||||
| 0x014 | 284 bytes | Always 0 | ||||||||||||||||||
| 0x130 | 4 bytes | CRC-32 of file header | ||||||||||||||||||
| 0x134 | 200 bytes | File description: 5 lines each of 40 characters, CP437 character set | ||||||||||||||||||
| 0x1FC | 4 bytes | CRC-32 of description |
Sector data
The imaged sectors follow the header with no further header or trailer information. The default behaviour of Disk Express is to record up to the last allocated block on the disk, so the amount of data stored may be less than the media type in the header block.
If the file is compressed, then each track is compressed separately. Each track in this case is preceded by a little-endian word, giving the length of the compressed data. There are special cases if the length is 1 (in which case all bytes in the track are the same) or if it is the same as the uncompressed length (in which case the track is not compressed).
Software
- Disk eXPress v1.01
- Disk eXPress v1.02
- Disk eXPress v1.96 (beta)
- Disk eXPress v2.00
- Disk eXPress v2.03
- Disk eXPress v2.10
- Disk eXPress v2.10a
- Disk eXPress v2.20
- Disk eXPress v2.30
- Disk eXPress v2.31
- Disk eXPress v2.32
- Disk eXPress v2.33
- Disk eXPress v2.34
Sample files
Self-extracting images created by regular shareware and licensed versions
- https://dl.dell.com/chipset/Kniea001.exe → DD0377p1.EXE, DD0377p2.EXE
- https://ftpmirror.infania.net/sites/ct_treiber_service/treiber/toshiba/dos_driv/tcm30.exe → TCM3DISK.EXE - Encrypted image
Self-extracting images created by special versions licensed for IBM
- http://cd.textfiles.com/pier/pier03/035/vp162fix.zip → VP162FIX.EXE
- http://phoenix.bnbbbs.net/files/os2swbbs/ndrivers/164adap2.exe
Self-extracting images
Standalone disk images
- 2015.02.old-dos.ru → 2015.02.maxxx.tar → maxxx/DOS/System/DRdos/Drdos50/4dxp/DRD50-*.DXP - Uncompressed, version 2.x
- dexvert samples — archive/diskExpress