|  | 
| 
 Defines | 
| #define | DRIVE0   0 | 
| #define | STANDBY   0 | 
| #define | SLEEP   1 | 
| #define | IDLE   2 | 
| #define | ATA_SR_BSY   0x80 | 
| #define | ATA_SR_DRDY   0x40 | 
| #define | ATA_SR_DF   0x20 | 
| #define | ATA_SR_DSC   0x10 | 
| #define | ATA_SR_DRQ   0x08 | 
| #define | ATA_SR_CORR   0x04 | 
| #define | ATA_SR_IDX   0x02 | 
| #define | ATA_SR_ERR   0x01 | 
| #define | ATA_ER_UNC   0x40 | 
| #define | ATA_ER_MC   0x20 | 
| #define | ATA_ER_IDNF   0x10 | 
| #define | ATA_ER_MCR   0x08 | 
| #define | ATA_ER_ABRT   0x04 | 
| #define | ATA_ER_TK0NF   0x02 | 
| #define | ATA_ER_AMNF   0x01 | 
| #define | ATA_HEAD_USE_LBA   0x40 | 
| #define | ATA_CMD_READ   0x20 | 
| #define | ATA_CMD_READNR   0x21 | 
| #define | ATA_CMD_WRITE   0x30 | 
| #define | ATA_CMD_WRITENR   0x31 | 
| #define | ATA_CMD_IDENTIFY   0xEC | 
| #define | ATA_CMD_RECALIBRATE   0x10 | 
| #define | ATA_CMD_SPINDOWN   0xE0 | 
| #define | ATA_CMD_SPINUP   0xE1 | 
| #define | ATA_CMD_STANDBY_5SU   0xE2 | 
| #define | ATA_CMD_IDLE_5SU   0xE3 | 
| #define | ATA_CMD_SLEEP   0xE6 | 
| #define | ATA_CMD_STANDBY_01SU   0xF2 | 
| #define | ATA_CMD_IDLE_01SU   0xF3 | 
| #define | ATA_DISKPARM_CLYS   0x03A6 | 
| #define | ATA_DISKPARM_HEADS   0x10 | 
| #define | ATA_DISKPARM_SECTORS   0x11 | 
| #define | ATA_IDENT_DEVICETYPE   0 | 
| #define | ATA_IDENT_CYLINDERS   1 | 
| #define | ATA_IDENT_HEADS   3 | 
| #define | ATA_IDENT_SECTORS   6 | 
| #define | ATA_IDENT_SERIAL   10 | 
| #define | ATA_IDENT_MODEL   27 | 
| #define | ATA_IDENT_FIELDVALID   53 | 
| #define | ATA_IDENT_LBASECTORS   60 | 
| #define | ATA_DISKMODE_SPINDOWN   0 | 
| #define | ATA_DISKMODE_SPINUP   1 | 
| #define | ATA_DISKMODE_SETTIMEOUT   2 | 
| #define | ATA_DISKMODE_SLEEP   3 | 
| 
 Functions | 
| void | ataInit (void) | 
| void | ataDriveInit (void) | 
| void | ataDriveSelect (u08 DriveNo) | 
| void | ataSetDrivePowerMode (u08 DriveNo, u08 mode, u08 timeout) | 
| u08 | ataReadByte (u08 reg) | 
| void | ataWriteByte (u08 reg, u08 data) | 
| void | ataShowRegisters (unsigned char DriveNo) | 
| u08 | ataSWReset (void) | 
| void | ataDiskErr (void) | 
| void | ataPrintSector (u08 *Buffer) | 
| void | ataReadDataBuffer (u08 *Buffer, u16 numBytes) | 
| void | ataWriteDataBuffer (u08 *Buffer, u16 numBytes) | 
| u08 | ataStatusWait (u08 mask, u08 waitStatus) | 
| unsigned char | ataReadSectorsCHS (unsigned char Drive, unsigned char Head, unsigned int Track, unsigned char Sector, unsigned int numsectors, unsigned char *Buffer) | 
| unsigned char | ataWriteSectorsCHS (unsigned char Drive, unsigned char Head, unsigned int Track, unsigned char Sector, unsigned int numsectors, unsigned char *Buffer) | 
| unsigned char | ataReadSectorsLBA (unsigned char Drive, unsigned long lba, unsigned int numsectors, unsigned char *Buffer) | 
| unsigned char | ataWriteSectorsLBA (unsigned char Drive, unsigned long lba, unsigned int numsectors, unsigned char *Buffer) | 
| unsigned char | ataReadSectors (unsigned char Drive, unsigned long lba, unsigned int numsectors, unsigned char *Buffer) | 
| unsigned char | ataWriteSectors (unsigned char Drive, unsigned long lba, unsigned int numsectors, unsigned char *Buffer) |