#include <bios.h>
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define byte unsigned char
#define word unsigned int
#define fdaddr struct FDADDR
unsigned char drive = 0x80;
int head=0, track=0, sect=1;
char buff[512]; //временный буффер
char test[512];
/*------------------------------------*/
void read_int13 (void *mem)
{
/* mem - адрес в ОП */
union REGS rr;
struct SREGS sr;
rr.h.ah=2;
rr.h.al=1;
rr.h.dl=drive;
rr.h.dh=0;
rr.x.cx=1;
sr.es=FP_SEG(mem);
rr.x.bx=FP_OFF(mem);
int86x(0x13,&rr,&rr,&sr);
}
void readsector(int hdd,int head,int track,int sect, void *buf)
{
int error_count = 0,//счетчик ошибок
res; //код ошибок
while(error_count < 3)
{
res = biosdisk(2,hdd, head, track,sect,1, buf); //чтение сектора
if (!res) //если ошибки нет - выход
return;
error_count++; //подсчет числа ошибок
biosdisk(0,hdd, head, track,sect,1, buf); //сброс контроллера диска
}
printf("Ошибка обращения к диску\n");
exit(1);
}
int main ()
{
clrscr();
readsector ( drive, head, track, sect, test) ;
read_int13(buff);
return 0;
}
Помогите разобраться с MBR
Начал разбираться с МБР и прочим. Надо по универу. Пишу в борланд си 3,5 тот который старенький под дос. Вобщем пока разбираюсь с основами. Есть у меня две функции, которые считывают первый сектор нулевой дорожки. А как дальше из этого буффера разобрать мбр и все разделы на жестком диске?
Код:
буду благодарен линкам (хотелось бы на русском) по данной тематике.