TF_BASE  equ  $DA0000   ;task file
CS0      equ  $0000
CS1      equ  $1000
REG_INC  equ  4
Y        equ  0

;command block registers
TF_DATA        equ     (TF_BASE+$0*REG_INC+CS0)
TF_DATA_8BIT   equ     (TF_BASE+$0*REG_INC+CS0)
TF_ERROR       equ   (Y+TF_BASE+$1*REG_INC+CS0)
TF_FEATURES    equ   (Y+TF_BASE+$1*REG_INC+CS0)
TF_SECTOR_COUNT   equ   (Y+TF_BASE+$2*REG_INC+CS0)
TF_SECTOR_NUMBER  equ   (Y+TF_BASE+$3*REG_INC+CS0)
TF_CYLINDER_LOW   equ   (Y+TF_BASE+$4*REG_INC+CS0)
TF_CYLINDER_HIGH  equ   (Y+TF_BASE+$5*REG_INC+CS0)
TF_DRIVE_HEAD     equ   (Y+TF_BASE+$6*REG_INC+CS0)
TF_STATUS         equ   (Y+TF_BASE+$7*REG_INC+CS0)
TF_COMMAND        equ   (Y+TF_BASE+$7*REG_INC+CS0)
;control block registers
TF_ALTERNATE_STATUS equ (Y+TF_BASE+$6*REG_INC+CS1)
TF_DEVICE_CONTROL   equ TF_ALTERNATE_STATUS
TF_DRIVE_ADDRESS    equ (Y+TF_BASE+$7*REG_INC+CS1)

;   Bit names for general use 
bit7  equ   $80
bit6  equ   $40
bit5  equ   $20
bit4  equ   $10
bit3  equ   $08
bit2  equ   $04
bit1  equ   $02
bit0  equ   $01

;status register
BSY  equ    bit7 ;Busy
DRDY equ    bit6 ;drive ready
DWF  equ    bit5 ;drive write fault
DF   equ    DWF
DSC  equ    bit4 ;drive seek complete
SKC  equ    DSC
DRQ  equ    bit3 ;data request
CORR equ    bit2 ;corrected data
IDX  equ    bit1 ;index
ERR  equ    bit0 ;error

;device control register
SRST  equ   bit2 ;software reset
nIEN  equ   bit1 ;interrupt enable

;error register
BBK   equ   bit7 ;bad block detected
UNC   equ   bit6 ;uncorrectable data error
MC    equ   bit5 ;media changed
IDNF  equ   bit4 ;ID Not Found
ABRT  equ   bit3 ;aborted command
MCR   equ   bit2 ;Media Change Requested
TK0NF equ   bit1 ;Track 0 Not Found
AMNF  equ   bit0 ;Address Mark Not Found

;drive / head register
           ;bit7 aina 1
L     equ   bit6 ;L=0.CHS , L=1.LBA
           ;bit 5 aina 1
DRV   equ   bit4 ;drive select 0=drive0
DRV0  equ   0+bit7+bit5
DRV1  equ   DRV+bit7+bit5
HS3   equ   bit3 ; Head select / LBA bits 24-27
HS2   equ   bit2 ;
HS1   equ   bit1
HS0   equ   bit0

;commands
ATA_IDENTIFY_DRIVE equ $EC
ATA_EXECUTE_DRIVE_DIAGNOSTIC equ $90
ATA_SLEEP  equ  $E6
ATA_SEEK equ $70
ATA_READ_SECTORS equ $20
ATA_WRITE_SECTORS equ $30
ATA_NOP  equ  0
ATA_IDLE  equ  $e3;$97
ATA_IDLE_IMMEDIATE equ $E1  equ  ;$95
ATA_STANDBY_IMMEDIATE equ $E0
ATA_INIIIALIZE_DRIVE_PARAMETERS equ $91
ATA_SET_FEATURES equ $EF
ATA_CHECK_POWER_MODE equ $E5

;features
FEATURE_8BIT_ON   equ   $01
FEATURE_8BIT_OFF  equ   $81

