The Symbiface 2 operates the ATA/IDE device in 16-bit data transfer mode. 16-bits of data is buffered at a time within the Symbiface 2 and read/written via the Data port I/O address 8 bits at a time. The device was designed when devices didn't support ATA CFA command set and 8-bit PIO data transfer so this is why it buffers 16-bit of data. (16-bits is the "native" data transfer of an ATA device).
The I/O ports operate in a "pass-through" like mode where the registers directly reflect those of the connected ATA device.
The X-Mass is a more modern ATA/IDE device which is compatible with the Symbiface 2 IDE registers and uses the same I/O ports.
This is the documentation about the IDE registers of the SYMBiFACE II expansion card.
Port | Read | Write |
#FD06 | Alternate Status | Digital Output |
#FD07 | Drive Address | (Not Used) |
#FD08 | Data Register | Data Register |
#FD09 | Error Register | Features Register/(Write Precomp Reg.) |
#FD0A | Sector Count (0=256) | Sector Count (0=256) |
#FD0B | Sector Number for CHS or LBA bits 0-7 | Sector Number for CHS or LBA bits 0-7 |
#FD0C | Cylinder Low for CHS or LBA bits 8-15 | Cylinder Low for CHS or LBA bits 8-15 |
#FD0D | Cylinder High for CHS or LBA bits 16-23 | Cylinder High for CHS or LBA bits 16-23 |
#FD0E | Device/Head Register (Bit 6=0 CHS, Bit 6=1 LBA) (Bit 4 = 0 Master, Bit 4 = 1 Slave) (Bits 3..0 Head for CHS or LBA bits 24-27) | Device/Head Register (Bit 6=0 CHS, Bit 6=1 LBA) (Bit 4 = 0 Master, Bit 4 = 1 Slave) (Bits 3..0 Head for CHS or LBA bits 24-27) |
#FD0F | Status Register | Command Register |
Command | Code | FR | SC | SN | CY | DH |
---|---|---|---|---|---|---|
Execute drive diagnostic | 90h | D* | ||||
Format track | 50h | * | y | y | y | |
Initialize drive parameters | 91h | y | y | |||
Read long (w/retry) | 22h | y | y | y | y | |
Read long (w/o retry) | 23h | y | y | y | y | |
Read sector(s) (w/retry) | 20h | y | y | y | y | |
Read sector(s) (w/o retry) | 21h | y | y | y | y | |
Read verify sector(s) (w/retry) | 40h | y | y | y | y | |
Read verify sector(s) (w/o retry) | 41h | y | y | y | y | |
Recalibrate | 1xh | D | ||||
Seek | 7xh | y | y | y | ||
Write long (w/retry) | 32h | * | y | y | y | y |
Write long (w/o retry) | 33h | * | y | y | y | y |
Write sector(s) (w/retry) | 30h | * | y | y | y | y |
Write sector(s) (w/o retry) | 31h | * | y | y | y | y |
Legend:
- FR: Features register used
- SC: Sector count register used
- SN: Sector number register used
- CY: Cylinder registers used
- DH: Drive/head register used
- y: The register contains a valid parameter for this command. For DH, 'y' means both drive and head parameters are used.
- D: Only the drive parameter is valid (head parameter ignored).
- D*: Addressed to drive 0 but both drives execute it.
- *: Maintained for compatibility.