Has the author downloaded the tech docs from here?
http://www.atari8.co.uk/myide/The relevant passages are:
// offsets in partition table
enum {
ePartitionOffset = 0x10, // start of partition entry #1
eImageSpaceOffset = 0xf0 // partition entry #15
};
// offsets within global header block
enum {
eOfsTotalLBASize = 0, // 4 bytes LO..HI
eOfsLBAIdentificationr = 4, // must be $10
eOfsPartitions = 5, // must be set to # partitions
eOfsBootNo = 6, // boot drive number
eOfsOptionByte = 7 // option flags (see below)
};
// option bits
enum {
eOptionsPartCopy = 0x40, // Last LBA sector is copy of table
eOptionsCFCard = 0x80 // Media is CF card
}
// partition block size
enum {
ePartitionBlockSize = 0x10
};
SDX IDE Driver Technical Reference Manual
3
// offsets within partition information block
enum {
eOfsPartitionStart = 0, // 4 bytes LO..HI
eOfsPartitionSize = 4, // 4 bytes LO..HI
eOfsPartitionType = 8, // see below
eOfsPartitionFlags = 9, // see below
eOfsPartitionDrive = 10 // drive number (1..15)
};
// partition types
enum {
ePartTypeNone = 0,
ePartTypeSD = 0x01, // 128 bytes/sector
ePartTypeDD = 0x02, // 256 bytes/sector
ePartTypeQD = 0x03, // 512 bytes/sector
ePartTypeImageSpace = 0x80 // (Not yet implemented)
};
// partition flags
enum {
ePartFlagActive = 0x01,
ePartFlagWritable = 0x02,
ePartFlagBootable = 0x04
};
They look better in the PDF.
The changes Hias spoke of before simply involve provision for additional partition table sectors (each containing up to a further 16 partitions), mainly to support the dynamic (un)mounting of named partitions. I guess we'll need a flag somewhere to describe how many sectors the partition table uses. I assume they'd be contiguous (i.e. you allocate n partitions on a blank disk and you'd have to stick the that amount), rather than in a linked list. It's - AFAIK - the only change we're considering making to what you see here.