Example #1
0
 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);
 }
Example #2
0
        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;
        }