How are the Task File and data I/O ports assigned?
The Task File registers and the data register of the primary ATA channel occupy the following I/O addresses (in hexadecimal notation): RegisterRead FunctionWrite Function 1F0Read Data (16 Bits)Write Data (16 bits) 1F1N/ASet Features Data 1F2Status of sector countWrite sector count for command setup 1F3Location of starting sectorWrite sector start for command setup 1F4Location of Cyl-lowWrite cyl-low location for command setup 1F5Location of Cyl-highWrite cyl-high location for command setup 1F6Head/device selectionWrite device selection and head selection for command setup 1F7Device StatusDevice command The secondary ATA channel usually occupies ports 170-177. There is no reason why the number of ports cannot be expanded beyond this; the de facto standard addresses for the third and fourth ports are 0F0 and 070. Potential BIOS support for arbitrary extra ports is found only in the Phoenix specification.