/**
*.Name      getboot
*
*.Title     Считать загрузочную запись
*
*.Descr     Функция считывает загрузочную запись
*           для указанного НМД.
*
*.Proto     int getboot(BOOT _far *boot, int drive);
*
*.Params    boot        - указатель на буфер, в который
*                         будет считана загрузочная
*                         запись
*
*           drive       - номер физического НМД
*                         (0 - первый НМД, 1 - второй,...)
*
*.Return    0 - если загрузочная запись считана
*               успешно;
*           1 - произошла ошибка
*
*.Sample    bootshow.c
**/

#include <stdio.h>
#include <dos.h>
#include "sysp.h"

int getboot(BOOT *boot, int drive) {

	 union REGS reg;
	 struct SREGS segreg;

// Заполняем регистровые структуры для вызова
// прерывания DOS INT 25h

	 reg.x.ax = drive;
	 reg.x.bx = FP_OFF(boot);
	 segreg.ds = FP_SEG(boot);
	 reg.x.cx = 1;
	 reg.x.dx = 0;
	 int86x(0x25, &reg, &reg, &segreg);

// Извлекаем из стека оставшееся там после
// вызова прерывания слово

	 _asm pop ax

	 return(reg.x.cflag);
}
