memset(regs, 0, sizeof *regs);
probe_any(0x08, drive, regs);
- present = !(regs->eflags.l & 1);
+ present = !(regs->eflags.l & 1) && !regs->eax.b[1];
dskprobe_printf(" AH08: CF%d BL%02x DL%02x\n", regs->eflags.l & 1,
regs->ebx.b[0], regs->edx.b[0]);
return present;
memset(regs, 0, sizeof *regs);
regs->ebx.w[0] = 0x55AA; /* BX == 0x55AA */
probe_any(0x41, drive, regs);
- present = !(regs->eflags.l & 1);
+ present = !(regs->eflags.l & 1) && (regs->ebx.w[0] == 0xAA55);
dskprobe_printf(" AH41: CF%d BX%04x AH%02x DH%02x\n", regs->eflags.l & 1,
regs->ebx.w[0], regs->eax.b[1], regs->edx.b[1]);
return present;