Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!sdd.hp.com!cs.utexas.edu!helps!wixer!reaper From: reaper@wixer.helps.cs.utexas.edu (Keath Milligan) Newsgroups: comp.os.msdos.programmer Subject: Re: HD park Message-ID: <1991May22.170907.2417@wixer.helps.cs.utexas.edu> Date: 22 May 91 17:09:07 GMT References: <29586@hydra.gatech.EDU> Organization: Real/Time Communications Lines: 49 As far as I know, there is no standard sub-function 19 (or 19h) to the BIOS diskette services interrupt 13h. My version of PARK.COM parks the hard-drive heads by first using interrupt 13h, sub-function 08h (with the fixed-disk drve number in DL, 80h for the first fixed-disk, 81h for the second and so forth) to return the parameters for the drive: mov ah,08h mov dl,80h int 13h jc error ;your error-handler, error code in ah cmp dl,0 ;dl=0 == no fixed disks attached je error_nod ;another error-handler you should write Int 13h, function 08h will return the number of tracks per side in CH, the number of sectores per track in CL, number of sides (heads) in DH, number of consecutive drives attached in DL, a pointer to a parameter-table in ES:DI, and, finally, if the drive is a floppy, a drive type value in BL. For the most part, you only need to be concerned about the number of sides (DH) and the number of tracks per side (CH) in order to park the heads. Next, function 11h (recallibrate fixed disk) of Int 13h is used: mov ah,11h mov dl,80h int 13h jc error I can't seem to find much documentation on this function, so I'm afraid I don't know exactly what it does... Finally, function 0Ch (seek cylinder) is used once to seek track 0 and then again to seek the maximum track# for a side: mov ah,0Ch mov cx,0 ;seeking track 0, sector 0 mov dl,80h ;fixed-disk # mov dh,0 ;head number int 13h ;seek track 0 mov ah,8 ;get drive parameters mov dl,80h ;fixed-disk # int 13h ;get max tracks per side in ch mov ah,0Ch mov dl,80h mov dh,0 ;head# int 13h ;seek track in ch