DI File Format Description

## Programs

Used by disk drive emulators on STs.

## Conventions

BEWORD - 16bit unsigned short (big endian)
BYTE - 8bit unsigned char

## Header

Type | Name | Description
--- | --- | ---
BYTE | btMagic1 | 'D'
BYTE | btMagic2 | 'I'
BYTE | btVerLo (?) | 0x20
BYTE | btVerHi (?) | 0x02
CHAR[] | szCreator | ascii string of creating program
BYTE | ? | ?
BYTE | btTracks | tracks
BEWORD | wSecPerTrack | sectors per track
BEWORD | ? | flags?
BEWORD | wSecSize | sector size
BYTE | ? | ?

## Sector table

Then there is bytes table which is long (tracks * sec per track). In every byte is stored checksum of corresponding sector.

## Body

Then there are continuous sectors. If the sector is empty, it's not stored in file. Upon reading, if the checksum byte is 0, corresponding sector is not read.
Algorithm is simple - adding the bytes together with the carry. (0xFF + 0x01 = 0x01)
First three sectors of DD disk have only 0x80 bytes stored. Back (c) 1998-2004 Jindroush Last modified: Tue Feb 27 11:20:52 2001