I've been toying around with various drive geometries using the classic HDToolbox from 2.x/3.1 on my Amiga. What I've discovered is the total size calculated is always 1 cylinder short of my own calculations.
for example, consider the following as reported by HDToolbox
Cylinders: 3855
Heads: 1
Blocks per Track: 1088
Blocks per Cylinder: 1088
Size: 2096576K (2047Meg)
Note: Blocks per Track is really just Sectors, and Blocks per Cylinder is really just Sectors times Heads.
Assuming TotalNumberOfBlocks = (Cylinders x Heads x Sectors) and TotalSize = (TotalNumberOfBlocks x 512 bytes per block) then
TotalNumberOfBlocks = 3855 x 1 x 1088 = 4,194,240
TotalSize = 4,194,240 x 512 = 2,147,450,880 bytes (or 2,097,120Kb)
If I calculate the size as shown above I get 2,097,120Kb but HDToolbox reports 2,096,576Kb, which is a discrepancy of 544Kb (or 557,056 bytes).
That looks weird, until you realize it is exactly 1 cylinder.
1088 Blocks per Cylinder * 512 bytes = 557,056 bytes
I've tried this multiple times with multiple geometries, and its always 1 cylinder short of a full deck disk.
My working hypothesis is that HDToolbox subtracts 1 cylinder from the drive size to account for parking the read/write heads. Can anyone confirm this theory?