public void reset(RESET_TYPE mode) { reg.control = 0; // clear SRST intrq = false; command_ok(); reset_signature(mode); }
public void reset_signature(RESET_TYPE mode = RESET_TYPE.RESET_SOFT) { reg.count = reg.sec = 1; reg.err = HD_ERROR.ERR_AMNF; // = 1 reg.cyl = atapi ? (ushort)0xEB14 : (ushort)0; reg.devhead &= (atapi && mode == RESET_TYPE.RESET_SOFT) ? (byte)0x10 : (byte)0; reg.status = (mode == RESET_TYPE.RESET_SOFT || !atapi) ? (HD_STATUS.STATUS_DRDY | HD_STATUS.STATUS_DSC) : HD_STATUS.STATUS_NONE; }