DOS下如何用INT13检测移动硬盘是否准备好?
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
/***********************************************************/
void IoSector(BYTE act,BYTE driver,BYTE *buffer)
{
REGS regs;
SREGS sregs;
regs.h.ah=act;
regs.h.al=1;
regs.h.ch=0;
regs.h.cl=1;
regs.h.dh=0;
regs.h.dl=driver;
regs.x.bx=FP_OFF(buffer);
sregs.es=FP_SEG(buffer);
int86x(0x13,®s,®s,&sregs);
}
/**************************************************************/
int CheckSector(BYTE driver)
{
REGS regs;
SREGS sregs;
int i;
unsigned char temp;
for(i=0;i<3;i++)
IoSector (0x02,driver,temp);
for (i=0;i<3;i++)
{
regs.h.ah=3;
regs.h.al=1;
regs.x.bx=FP_OFF(temp);
sregs.es=FP_SEG(temp);
regs.h.ch=0;
regs.h.cl=1;
regs.h.dh=0;
regs.h.dl=driver;
int86x(0x13,®s,®s,&sregs);
}
if (regs.x.cflag)
return regs.h.ah;
return 0;
}