I assume that if you know where to read and the meaning of data you are reading it's possible to read sectors using int13h without any special codes,
here is part of int13h ref., I added a small code clarify ..
data segment
buff db 512 dup(?)
code segment
assume cs:code,ds:data,es:data
main proc far
; Function Table
; 00h Reset Disk Drives
; 01h Check Drive Status
; 02h Read Sectors From Drive
; 03h Write Sectors To Drive
; 04h Verify Sectors
; 05h Format Track
; 08h Read Drive Parameters
; 09h Initialize Disk Controller
; 0Ah Read Long Sectors From Drive
; 0Bh Write Long Sectors To Drive
; 0Ch Move Drive Head To Cylinder
; 0Dh Reset Disk Drives
; 10h Test Whether Drive Is Ready
; 11h Recalibrate Drive
; 14h Controller Diagnostic
; 15h Read Drive Type
; 41h EXT Test Whether Extensions Are Available
; 42h EXT Read Sectors From Drive
; 43h EXT Write Sectors To Drive
; 44h EXT Verify Sectors
; 45h EXT Lock/Unlock Drive
; 46h EXT Eject Drive
; 47h EXT Move Drive Head To Sector
; 48h EXT Read Drive Parameters
; 49h EXT Detect Media Change
start:
;+ ES:BX .boot sector info (Buffer Address Pointer)
mov es,ax
mov bx,offset buff
mov ah,2 ;Read Sectors
mov al,1 ;Sectors To Read Count
mov ch,0 ;Track
mov cl,0 ;Sector
mov dh,0 ;Head
mov dl,80h ;1st hard disk
int 13h ;call
the above is to read sector 0,0,0 into buffer
mov bx,offset buff
mov ah,3 ;Write Sector
mov al,1
mov ch,0
mov cl,3 ; sector3
mov dh,0
mov dl,080h ; 1st hard disk
int 13h ;call
This is to write it somewhere else like 3,0,0
this is good, for example, if you want to put password check before letting the system the boot (how ever not for real world application since it can be easily restored )my information about hdd is very limited, but I think it should be easily possible to use an interrupt sniffer
likehttp://www.perisoft.net/bushound/(please share if you know of some free or cheaper alternative )to check the registers before the call(which tries to write smart log whatever ..) revealing the TSH, even if they use negative sector (an expert here told me they might use negative sector not using 0 ) however since they build the translator themselves. Theysure call the interrupt with some out of bound secret positive value which then might be translated to somewhere before 0 the ata might offer simple and great functions however since it very likely use bios facilities I can't get why you think Int13h is stone age.
I havent tried to scan invalid sectors nore the interupt since by having hot summer days here the very stupid seagate smart log overflow happened to my main coding pc and some others. when i setup to test again after recovery.
Thank you every some of the hints helped alot