http://poli.cs.vsb.cz/misc/rbint/text/1300.htmlCode:1302 Category: BIOS INT 13 - DISK - READ SECTOR(S) INTO MEMORY AH = 02h AL = number of sectors to read (must be nonzero) CH = low eight bits of cylinder number CL = sector number 1-63 (bits 0-5) high two bits of cylinder (bits 6-7, hard disk only) DH = head number DL = drive number (bit 7 set for hard disk) ES:BX -> data buffer Return: CF set on error if AH = 11h (corrected ECC error), AL = burst length CF clear if successful AH = status (see #00234) AL = number of sectors transferred (only valid if CF set for some BIOSes) Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the read should be retried at least three times, resetting the disk with AH=00h between attempts most BIOSes support "multitrack" reads, where the value in AL exceeds the number of sectors remaining on the track, in which case any additional sectors are read beginning at sector 1 on the following head in the same cylinder; the MSDOS CONFIG.SYS command MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to split disk accesses which would wrap across a track boundary into two separate calls the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh) in order to perform direct accesses such as INT 13h reads and writes all versions of MS-DOS (including v7 [Win95]) have a bug which prevents booting on hard disks with 256 heads, so many modern BIOSes provide mappings with at most 255 heads SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM" SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
In 16 bit real mode (like dos), you could use this stuff to get low level access
to drives, reading and writing sectors, or even messing with the bytes between
sectors, changing sector IDs, do a true low level format etc.
Running a modern OS, only the disk driver (deep inside the OS) has
actual intimate knowledge of the disk, so you can access the disk from a
high level programming language.
http://www.dummies.com/WileyCDA/Dumm...e/id-1060.htmlCode:#include <stdio.h> #include <stdlib.h> void main() { FILE *myfile; myfile = fopen("alive.txt","w"); if(!myfile) { puts("Some kind of file error!"); exit(0); } fprintf(myfile,"I created a file! It's alive!"); fclose(myfile); }
![]()




Reply With Quote