public override void BusConnect() { if (m_rtcFileName != null) m_rtc.Load(m_rtcFileName); if (m_nvramFileName != null) m_nvram.Load(m_nvramFileName); IdeDiskDescriptor cfg0 = new IdeDiskDescriptor(); IdeDiskDescriptor cfg1 = new IdeDiskDescriptor(); if (m_rtcFileName != null) { string folderName = Path.GetDirectoryName(m_rtcFileName); string fileName = Path.ChangeExtension(m_rtcFileName, ".vmide"); if (File.Exists(fileName)) cfg0.Load(fileName); else cfg0.Save(fileName); } m_ata.dev[0].configure(cfg0); m_ata.dev[1].configure(cfg1); }
public void configure(IdeDiskDescriptor cfg) { ata_p.close(); c = cfg.c; h = cfg.h; s = cfg.s; lba = cfg.lba; readOnly = cfg.readOnly; for (int i = 0; i < regs.Length; i++) // clear registers regs[i] = 0; command_ok(); // reset state and transfer position phys_dev = -1; if (String.IsNullOrEmpty(cfg.image)) return; PHYS_DEVICE filedev = new PHYS_DEVICE(); filedev.filename = cfg.image; filedev.type = cfg.cd ? DEVTYPE.ATA_FILECD : DEVTYPE.ATA_FILEHDD; bool success = false; if (filedev.type == DEVTYPE.ATA_FILEHDD) { filedev.usage = DEVUSAGE.ATA_OP_USE; success = ata_p.open(filedev); atapi = false; } //if (filedev.type == DEVTYPE.ATA_FILECD) //{ // filedev.usage = DEVUSAGE.ATA_OP_USE; // errCode = atapi_p.open(filedev); // atapi = 1; //} if (success) return; cfg.image = string.Empty; }