; ATA-2 commands ************************ ATA_EXECUTE_DEVICE_DIAGNOSTIC equ 0x90 ATA_IDENTIFY_DEVICE equ 0xec ATA_INITIALIZE_DEVICE_PARAMETERS equ 0x91 ATA_READ_SECTORS equ 0x20 ATA_READ_VERIFY_SECTORS equ 0x40 ; equ 0x70-0x7f ATA_SEEK equ 0x70 ATA_WRITE_SECTORS equ 0x30 ; ****** additional commands ************ ATA_ACKNOWLEDGE_MEDIA_CHANGE equ 0xdb ATA_POST_BOOT equ 0xdc ATA_PRE_BOOR equ 0xdd ATA_CHECK_POWER_MODE equ 0x98 ATA_CHECK_POWER_MODE2 equ 0xe5 ATA_DOOR_LOCK equ 0xde ATA_DOOR_UNLOCK equ 0xdf ATA_DOWNLOAD_MICROCODE equ 0x92 ATA_IDLE equ 0x97 ATA_IDLE2 equ 0xe3 ATA_IDLE_IMMENDIATE equ 0x95 ATA_IDLE_IMMENDIATE2 equ 0xe1 ATA_MEDIA_EJECT equ 0xed ATA_NOP equ 0x00 ATA_READ_BUFFER equ 0xe4 ATA_READ_DMA equ 0xc8 ATA_READ_LONG equ 0x22 ATA_READ_MULTIPLE equ 0xc4 ; equ 0x10-0x1f ATA_RECALIBRATE equ 0x10 ATA_SET_FEATURES equ 0xef ATA_SET_MULTIPLE_MODE equ 0xc6 ATA_SLEEP equ 0x99 ATA_SLEEP2 equ 0xe6 ATA_STANDBY equ 0x96 ATA_STANDBY2 equ 0xe2 ATA_STANDBY_IMMENDIATE equ 0x94 ATA_STANDBY2_IMMENDIATE equ 0xe0 ATA_WRITE_BUFFER equ 0xe8 ATA_WRITE_DMA equ 0xca ATA_WRITE_LONG equ 0x32 ATA_WRITE_MULTIPLE equ 0xc5 ATA_WRITE_SAME equ 0xe9 ATA_WRITE_VERIFY equ 0x3c ; **** device specific commands ************* ; TODO remap command ATA_FORMAT_TRACK equ 0x50 ; command modificators ; for ATA_READ_SECTORS, ATA_WRITE_SECTORS, ATA_VERIFY_SECTORS, ; ATA_READ_DMA, ATA_WRITE_DMA, ATA_READ_LONG, ATA_WRITE_LONG ATA_WITHOUT_RETRY equ 0x01 ; ATA registers ***************************** ; command registers ATA_DATA_REG equ 0 ATA_ERROR_REG equ 1 ATA_FEATURES_REG equ 1 ATA_SECTOR_COUNT equ 2 ATA_SECTOR_NUMBER equ 3 ATA_CYLINDER_LOW equ 4 ATA_CYLINDER_HIGH equ 5 ATA_DEVICE_HEAD equ 6 ATA_STATUS equ 7 ATA_COMMAND equ 7 ; control registers ATA_ALTERNATE_STATUS equ 0x16 ATA_DEVICE_CONTROL equ 0x16 ATA_DRIVE_ADDRESS equ 0x17 ; status register bits ATA_BUSY equ 0x80 ATA_READY equ 0x40 ATA_FAULT equ 0x20 ATA_SEEK_COMPLETE equ 0x10 ATA_DATA_REQUEST equ 0x08 ATA_CORRECTED_DATA equ 0x04 ATA_INDEX equ 0x02 ATA_ERROR equ 0x01 ; device/head register bits ATA_LBA equ 0x40 ATA_DEVICE equ 0x10 ; device control register bits ATA_SOFT_RESET equ 0x04 ATA_INTERRUPT_DISABLE equ 0x02 ; error register bits ATA_UNCORRECTABLE equ 0x40 ATA_MEDIA_CHANGED equ 0x20 ATA_ID_NOT_FOUND equ 0x10 ATA_ABORTED equ 0x08 ATA_MEDIA_CHANGE_REQUESTED equ 0x04 ATA_TRACK_0_NOT_FOUND equ 0x02 ATA_ADDERSS_MARK_NOT_FOUND equ 0x01 ;