Fixed panic when using multiple CD-ROM drives (now using name cdrom1, cdrom2,...)
This commit is contained in:
parent
776cabf4fe
commit
3d93ca1b64
@ -163,6 +163,7 @@ void bx_hard_drive_c::init(void)
|
|||||||
char string[5];
|
char string[5];
|
||||||
char sbtext[8];
|
char sbtext[8];
|
||||||
char ata_name[20];
|
char ata_name[20];
|
||||||
|
char pname[8];
|
||||||
bx_list_c *base;
|
bx_list_c *base;
|
||||||
|
|
||||||
BX_DEBUG(("Init $Id$"));
|
BX_DEBUG(("Init $Id$"));
|
||||||
@ -186,8 +187,7 @@ void bx_hard_drive_c::init(void)
|
|||||||
BX_HD_THIS channels[channel].ioaddr2,
|
BX_HD_THIS channels[channel].ioaddr2,
|
||||||
BX_HD_THIS channels[channel].irq));
|
BX_HD_THIS channels[channel].irq));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
BX_HD_THIS channels[channel].ioaddr1 = 0;
|
BX_HD_THIS channels[channel].ioaddr1 = 0;
|
||||||
BX_HD_THIS channels[channel].ioaddr2 = 0;
|
BX_HD_THIS channels[channel].ioaddr2 = 0;
|
||||||
BX_HD_THIS channels[channel].irq = 0;
|
BX_HD_THIS channels[channel].irq = 0;
|
||||||
@ -343,13 +343,14 @@ void bx_hard_drive_c::init(void)
|
|||||||
}
|
}
|
||||||
} else if (SIM->get_param_enum("type", base)->get() == BX_ATA_DEVICE_CDROM) {
|
} else if (SIM->get_param_enum("type", base)->get() == BX_ATA_DEVICE_CDROM) {
|
||||||
bx_list_c *cdrom_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_CDROM);
|
bx_list_c *cdrom_rt = (bx_list_c*)SIM->get_param(BXPN_MENU_RUNTIME_CDROM);
|
||||||
bx_list_c *menu = new bx_list_c(cdrom_rt, base->get_name(), base->get_title());
|
sprintf(pname, "cdrom%d", BX_HD_THIS cdrom_count + 1);
|
||||||
|
bx_list_c *menu = new bx_list_c(cdrom_rt, pname, base->get_title());
|
||||||
menu->set_options(menu->SERIES_ASK | menu->USE_BOX_TITLE);
|
menu->set_options(menu->SERIES_ASK | menu->USE_BOX_TITLE);
|
||||||
menu->add(SIM->get_param("path", base));
|
menu->add(SIM->get_param("path", base));
|
||||||
menu->add(SIM->get_param("status", base));
|
menu->add(SIM->get_param("status", base));
|
||||||
SIM->get_param_string("path", base)->set_handler(cdrom_path_handler);
|
SIM->get_param_string("path", base)->set_handler(cdrom_path_handler);
|
||||||
SIM->get_param_enum("status", base)->set_handler(cdrom_status_handler);
|
SIM->get_param_enum("status", base)->set_handler(cdrom_status_handler);
|
||||||
BX_DEBUG(("CDROM on target %d/%d",channel,device));
|
BX_DEBUG(("CDROM on target %d/%d", channel, device));
|
||||||
BX_HD_THIS channels[channel].drives[device].device_type = IDE_CDROM;
|
BX_HD_THIS channels[channel].drives[device].device_type = IDE_CDROM;
|
||||||
BX_HD_THIS channels[channel].drives[device].cdrom.locked = 0;
|
BX_HD_THIS channels[channel].drives[device].cdrom.locked = 0;
|
||||||
BX_HD_THIS channels[channel].drives[device].sense.sense_key = SENSE_NONE;
|
BX_HD_THIS channels[channel].drives[device].sense.sense_key = SENSE_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user