diff --git a/constants/ATA.inc b/constants/ATA.inc new file mode 100644 index 0000000..09fa7f2 --- /dev/null +++ b/constants/ATA.inc @@ -0,0 +1,116 @@ +; 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 +; \ No newline at end of file