You determine the number of a tracks of a drive by passing an ioexttd to the device with td_getnumtracks set in io_command. for quick i/o, you must set io_Flags to IOF_QUICK. DiskIO->iotd_Req.io_Flags = IOF_QUICK; DiskIO->iotd_Req.io_Command = TD_GETNUMTRACKS; BeginIO((struct IORequest *)DiskIO); td_getnumtracks returns the number of tracks on that device in io_actual. This is the number of tracks of TD_SECTOR * NUMSECS size. It is not the number of cylinders. With two heads, the number of cylinders is half of the number of tracks. The number of cylinders is equal to the number of tracks divided by the number of heads (surfaces). The standard 3.5" Amiga drive has two heads td_getgeometry is the preferred over td_getnumtracks for v36 and higher versions of the operating system especially since new drive types may have more sectors or different sector sizes, etc., than standard Amiga drives.