diff --git a/src/config.c b/src/config.c index 43555a704..23b78f117 100644 --- a/src/config.c +++ b/src/config.c @@ -792,9 +792,9 @@ load_storage_controllers(void) p = ini_section_get_string(cat, "fdc", NULL); #if 1 if (p != NULL) - fdc_type = fdc_card_get_from_internal_name(p); + fdc_current[0] = fdc_card_get_from_internal_name(p); else - fdc_type = FDC_INTERNAL; + fdc_current[0] = FDC_INTERNAL; #else if (p == NULL) { if (machine_has_flags(machine, MACHINE_FDC)) { @@ -807,7 +807,7 @@ load_storage_controllers(void) free_p = 1; } - fdc_type = fdc_card_get_from_internal_name(p); + fdc_current[0] = fdc_card_get_from_internal_name(p); if (free_p) { free(p); @@ -829,15 +829,15 @@ load_storage_controllers(void) } /* Migrate renamed and merged cards. */ if (!strcmp(p, "xtide_plus")) { - hdc_current = hdc_get_from_internal_name("xtide"); + hdc_current[0] = hdc_get_from_internal_name("xtide"); migration_cat = ini_find_or_create_section(config, "PC/XT XTIDE"); ini_section_set_string(migration_cat, "bios", "xt_plus"); } else if (!strcmp(p, "xtide_at_386")) { - hdc_current = hdc_get_from_internal_name("xtide_at"); + hdc_current[0] = hdc_get_from_internal_name("xtide_at"); migration_cat = ini_find_or_create_section(config, "PC/AT XTIDE"); ini_section_set_string(migration_cat, "bios", "at_386"); } else - hdc_current = hdc_get_from_internal_name(p); + hdc_current[0] = hdc_get_from_internal_name(p); if (free_p) { free(p); @@ -1631,7 +1631,7 @@ config_load(void) video_fullscreen_first = 1; video_fullscreen_scale = 1; time_sync = TIME_SYNC_ENABLED; - hdc_current = hdc_get_from_internal_name("none"); + hdc_current[0] = hdc_get_from_internal_name("none"); com_ports[0].enabled = 1; com_ports[1].enabled = 1; @@ -2296,14 +2296,14 @@ save_storage_controllers(void) scsi_card_get_internal_name(scsi_card_current[c])); } - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) ini_section_delete_var(cat, "fdc"); else ini_section_set_string(cat, "fdc", - fdc_card_get_internal_name(fdc_type)); + fdc_card_get_internal_name(fdc_current[0])); ini_section_set_string(cat, "hdc", - hdc_get_internal_name(hdc_current)); + hdc_get_internal_name(hdc_current[0])); if (cdrom_interface_current == 0) ini_section_delete_var(cat, "cdrom_interface"); diff --git a/src/disk/hdc.c b/src/disk/hdc.c index ee25e8574..908cbce07 100644 --- a/src/disk/hdc.c +++ b/src/disk/hdc.c @@ -30,7 +30,7 @@ #include <86box/hdc_ide.h> #include <86box/hdd.h> -int hdc_current; +int hdc_current[HDC_MAX] = { 0, 0 }; #ifdef ENABLE_HDC_LOG int hdc_do_log = ENABLE_HDC_LOG; @@ -101,11 +101,11 @@ void hdc_reset(void) { hdc_log("HDC: reset(current=%d, internal=%d)\n", - hdc_current, (machines[machine].flags & MACHINE_HDC) ? 1 : 0); + hdc_current[0], (machines[machine].flags & MACHINE_HDC) ? 1 : 0); /* If we have a valid controller, add its device. */ - if (hdc_current > HDC_INTERNAL) - device_add(controllers[hdc_current].device); + if (hdc_current[0] > HDC_INTERNAL) + device_add(controllers[hdc_current[0]].device); /* Now, add the tertiary and/or quaternary IDE controllers. */ if (ide_ter_enabled) diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c index 7c7549ed7..bce34e327 100644 --- a/src/floppy/fdc.c +++ b/src/floppy/fdc.c @@ -77,7 +77,7 @@ int lastbyte = 0; int floppymodified[4]; int floppyrate[4]; -int fdc_type = 0; +int fdc_current[FDC_MAX] = { 0, 0 }; #ifdef ENABLE_FDC_LOG int fdc_do_log = ENABLE_FDC_LOG; @@ -162,8 +162,8 @@ fdc_card_get_from_internal_name(char *s) void fdc_card_init(void) { - if ((fdc_type > FDC_INTERNAL) && fdc_cards[fdc_type].device) - device_add_inst(fdc_cards[fdc_type].device, 0); + if ((fdc_current[0] > FDC_INTERNAL) && fdc_cards[fdc_current[0]].device) + device_add_inst(fdc_cards[fdc_current[0]].device, 0); } uint8_t diff --git a/src/include/86box/config.h b/src/include/86box/config.h index 8ce6f4cfe..a043fb22a 100644 --- a/src/include/86box/config.h +++ b/src/include/86box/config.h @@ -113,8 +113,8 @@ typedef struct config_t { # endif /* Other peripherals category */ - int fdc_type; /* Floppy disk controller type */ - int hdc_current; /* Hard disk controller type */ + int fdc_current[FDC_MAX]; /* Floppy disk controller type */ + int hdc_current[HDC_MAX]; /* Hard disk controller type */ int hdc; /* Hard disk controller */ int scsi_card; /* SCSI controller */ int ide_ter_enabled; /* Tertiary IDE controller enabled */ diff --git a/src/include/86box/fdc.h b/src/include/86box/fdc.h index cee1fed62..e03785df6 100644 --- a/src/include/86box/fdc.h +++ b/src/include/86box/fdc.h @@ -22,8 +22,6 @@ #ifndef EMU_FDC_H #define EMU_FDC_H -extern int fdc_type; - #define FDC_PRIMARY_ADDR 0x03f0 #define FDC_PRIMARY_IRQ 6 #define FDC_PRIMARY_DMA 2 diff --git a/src/include/86box/fdc_ext.h b/src/include/86box/fdc_ext.h index 2c46d0704..4b33ed7a1 100644 --- a/src/include/86box/fdc_ext.h +++ b/src/include/86box/fdc_ext.h @@ -22,7 +22,9 @@ #ifndef EMU_FDC_EXT_H #define EMU_FDC_EXT_H -extern int fdc_type; +#define FDC_MAX 2 + +extern int fdc_current[FDC_MAX]; /* Controller types. */ #define FDC_NONE 0 @@ -42,4 +44,4 @@ extern const device_t *fdc_card_getdevice(int card); extern int fdc_card_has_config(int card); extern int fdc_card_available(int card); -#endif /*EMU_FDC_H*/ +#endif /*EMU_FDC_EXT_H*/ diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index 38c0a6e9a..48235bb1e 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -32,7 +32,9 @@ #define HDC_NONE 0 #define HDC_INTERNAL 1 -extern int hdc_current; +#define HDC_MAX 2 + +extern int hdc_current[HDC_MAX]; extern const device_t st506_xt_xebec_device; /* st506_xt_xebec */ extern const device_t st506_xt_wdxt_gen_device; /* st506_xt_wdxt_gen */ diff --git a/src/machine/m_at.c b/src/machine/m_at.c index 9fc53ebcd..7b133a822 100644 --- a/src/machine/m_at.c +++ b/src/machine/m_at.c @@ -105,7 +105,7 @@ machine_at_ibm_common_init(const machine_t *model) mem_remap_top(384); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); } @@ -252,7 +252,7 @@ machine_at_siemens_init(const machine_t *model) mem_remap_top(384); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; diff --git a/src/machine/m_at_286_386sx.c b/src/machine/m_at_286_386sx.c index a1c3d7772..9e9186040 100644 --- a/src/machine/m_at_286_386sx.c +++ b/src/machine/m_at_286_386sx.c @@ -59,7 +59,7 @@ machine_at_mr286_init(const machine_t *model) machine_at_common_ide_init(model); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -70,7 +70,7 @@ machine_at_headland_common_init(int type) { device_add(&keyboard_at_ami_device); - if ((type != 2) && (fdc_type == FDC_INTERNAL)) + if ((type != 2) && (fdc_current[0] == FDC_INTERNAL)) device_add(&fdc_at_device); if (type == 2) @@ -137,7 +137,7 @@ machine_at_quadt286_init(const machine_t *model) machine_at_common_init(model); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&headland_gc10x_device); @@ -160,7 +160,7 @@ machine_at_quadt386sx_init(const machine_t *model) machine_at_common_init(model); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&headland_gc10x_device); @@ -183,7 +183,7 @@ machine_at_neat_init(const machine_t *model) device_add(&neat_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -204,7 +204,7 @@ machine_at_neat_ami_init(const machine_t *model) device_add(&neat_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&keyboard_at_ami_device); @@ -226,7 +226,7 @@ machine_at_px286_init(const machine_t *model) machine_at_common_init(model); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&neat_device); @@ -248,7 +248,7 @@ machine_at_micronics386_init(const machine_t *model) machine_at_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -284,7 +284,7 @@ machine_at_scatsx_init(const machine_t *model) device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&scat_sx_device); @@ -303,7 +303,7 @@ machine_at_award286_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ide_isa_device); @@ -324,7 +324,7 @@ machine_at_gdc212m_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ide_isa_device); @@ -365,7 +365,7 @@ machine_at_senor_scat286_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -386,7 +386,7 @@ machine_at_super286c_init(const machine_t *model) device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&neat_device); @@ -407,7 +407,7 @@ machine_at_super286tr_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -426,7 +426,7 @@ machine_at_spc4200p_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ide_isa_device); @@ -448,7 +448,7 @@ machine_at_spc4216p_init(const machine_t *model) machine_at_scat_init(model, 1, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -471,7 +471,7 @@ machine_at_spc4620p_init(const machine_t *model) machine_at_scat_init(model, 1, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ide_isa_device); @@ -508,7 +508,7 @@ machine_at_deskmaster286_init(const machine_t *model) machine_at_scat_init(model, 0, 1); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ide_isa_device); @@ -533,7 +533,7 @@ machine_at_shuttle386sx_init(const machine_t *model) device_add(&intel_82335_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -557,7 +557,7 @@ machine_at_adi386sx_init(const machine_t *model) device_add(&intel_82335_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -603,7 +603,7 @@ machine_at_cmdsl386sx16_init(const machine_t *model) device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&neat_device); @@ -624,7 +624,7 @@ machine_at_scamp_common_init(const machine_t *model, int is_ps2) else device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&vlsi_scamp_device); @@ -699,7 +699,7 @@ machine_at_awardsx_init(const machine_t *model) device_add(&opti291_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -718,7 +718,7 @@ machine_at_acer100t_init(const machine_t *model) machine_at_ps2_ide_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&ali1409_device); @@ -896,7 +896,7 @@ machine_at_pc8_init(const machine_t *model) machine_at_common_init(model); device_add(&keyboard_at_ncr_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -921,7 +921,7 @@ machine_at_3302_init(const machine_t *model) machine_at_common_ide_init(model); device_add(&neat_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); if (gfxcard[0] == VID_INTERNAL) @@ -953,7 +953,7 @@ machine_at_pc916sx_init(const machine_t *model) device_add(&keyboard_at_ncr_device); mem_remap_top(384); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -975,7 +975,7 @@ machine_at_m290_init(const machine_t *model) device_add(&keyboard_at_olivetti_device); device_add(&port_6x_olivetti_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&olivetti_eva_device); diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c index 1a6a6db67..07ed218ff 100644 --- a/src/machine/m_at_386dx_486.c +++ b/src/machine/m_at_386dx_486.c @@ -63,7 +63,7 @@ machine_at_acc386_init(const machine_t *model) device_add(&acc2168_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -84,7 +84,7 @@ machine_at_asus386_init(const machine_t *model) device_add(&rabbit_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -104,7 +104,7 @@ machine_at_tandy4000_init(const machine_t *model) machine_at_common_init(model); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -117,7 +117,7 @@ machine_at_sis401_common_init(const machine_t *model) device_add(&sis_85c401_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); } @@ -168,7 +168,7 @@ machine_at_av4_init(const machine_t *model) device_add(&sis_85c460_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -192,7 +192,7 @@ machine_at_valuepoint433_init(const machine_t *model) // hangs without the PS/2 device_add(&keyboard_ps2_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -213,7 +213,7 @@ machine_at_ecs386_init(const machine_t *model) machine_at_common_init(model); device_add(&cs8230_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&keyboard_at_ami_device); @@ -236,7 +236,7 @@ machine_at_spc6000a_init(const machine_t *model) machine_at_common_init_ex(model, 1); device_add(&cs8230_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&keyboard_at_ami_device); @@ -259,7 +259,7 @@ machine_at_ecs386v_init(const machine_t *model) device_add(&ali1429_device); device_add(&keyboard_ps2_intel_ami_pci_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -281,7 +281,7 @@ machine_at_rycleopardlx_init(const machine_t *model) device_add(&opti283_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -303,7 +303,7 @@ machine_at_486vchd_init(const machine_t *model) device_add(&via_vt82c49x_device); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -324,7 +324,7 @@ machine_at_cs4031_init(const machine_t *model) device_add(&cs4031_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -448,7 +448,7 @@ machine_at_acerv10_init(const machine_t *model) device_add(&keyboard_ps2_acer_pci_device); device_add(&ide_isa_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -492,7 +492,7 @@ machine_at_ali1429_common_init(const machine_t *model, int is_green) device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); } @@ -545,7 +545,7 @@ machine_at_opti495_init(const machine_t *model) device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -560,7 +560,7 @@ machine_at_opti495_ami_common_init(const machine_t *model) device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); } @@ -612,7 +612,7 @@ machine_at_exp4349_init(const machine_t *model) device_add(&ali1429g_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; } @@ -630,7 +630,7 @@ machine_at_403tg_common_init(const machine_t *model, int nvr_hack) device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); } @@ -801,7 +801,7 @@ machine_at_sis_85c471_common_init(const machine_t *model) { machine_at_common_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&sis_85c471_device); @@ -920,7 +920,7 @@ machine_at_pci400ca_init(const machine_t *model) device_add(&i420tx_device); device_add(&ncr53c810_onboard_pci_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -956,7 +956,7 @@ machine_at_greenb_init(const machine_t *model) machine_at_common_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&contaq_82c597_device); @@ -979,7 +979,7 @@ machine_at_4gpv5_init(const machine_t *model) machine_at_common_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&contaq_82c596a_device); @@ -1417,7 +1417,7 @@ machine_at_pci400cb_init(const machine_t *model) device_add(&ims8848_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -1446,7 +1446,7 @@ machine_at_g486ip_init(const machine_t *model) device_add(&ims8848_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -1506,7 +1506,7 @@ machine_at_486ap4_init(const machine_t *model) pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 0c = Slot 4 */ device_add(&keyboard_ps2_ami_pci_device); /* Uses the AMIKEY KBC */ - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&i420ex_device); @@ -1986,7 +1986,7 @@ machine_at_atc1415_init(const machine_t *model) device_add(&intel_flash_bxt_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -2247,7 +2247,7 @@ machine_at_ecsal486_init(const machine_t *model) device_add(&ali1429g_device); device_add(&keyboard_ps2_ami_pci_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -2290,9 +2290,8 @@ machine_at_atc1762_init(const machine_t *model) device_add(&ali1429g_device); device_add(&keyboard_ps2_ami_pci_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - return ret; } diff --git a/src/machine/m_at_commodore.c b/src/machine/m_at_commodore.c index a0b522371..0b45fe60c 100644 --- a/src/machine/m_at_commodore.c +++ b/src/machine/m_at_commodore.c @@ -112,7 +112,7 @@ machine_at_cmdpc_init(const machine_t *model) mem_remap_top(384); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); cmd_uart = device_add(&ns8250_device); diff --git a/src/machine/m_at_compaq.c b/src/machine/m_at_compaq.c index b628ea095..0ac541e90 100644 --- a/src/machine/m_at_compaq.c +++ b/src/machine/m_at_compaq.c @@ -779,7 +779,7 @@ machine_at_compaq_init(const machine_t *model, int type) { compaq_machine_type = type; - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); if (type < COMPAQ_PORTABLEIII386) { @@ -798,7 +798,7 @@ machine_at_compaq_init(const machine_t *model, int type) break; case COMPAQ_PORTABLEIII: - if (hdc_current == HDC_INTERNAL) + if (hdc_current[0] == HDC_INTERNAL) device_add(&ide_isa_device); if (gfxcard[0] == VID_INTERNAL) device_add(&compaq_plasma_device); @@ -806,7 +806,7 @@ machine_at_compaq_init(const machine_t *model, int type) break; case COMPAQ_PORTABLEIII386: - if (hdc_current == HDC_INTERNAL) + if (hdc_current[0] == HDC_INTERNAL) device_add(&ide_isa_device); if (gfxcard[0] == VID_INTERNAL) device_add(&compaq_plasma_device); diff --git a/src/machine/m_at_socket4.c b/src/machine/m_at_socket4.c index f7aad92ec..e39ab87be 100644 --- a/src/machine/m_at_socket4.c +++ b/src/machine/m_at_socket4.c @@ -293,7 +293,7 @@ machine_at_award_common_init(const machine_t *model) pci_register_slot(0x07, PCI_CARD_SCSI, 1, 2, 3, 4); /* 07 = SCSI */ pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&keyboard_ps2_ami_pci_device); @@ -402,7 +402,7 @@ machine_at_p5vl_init(const machine_t *model) device_add(&sst_flash_29ee010_device); device_add(&keyboard_at_ami_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; diff --git a/src/machine/m_at_socket5.c b/src/machine/m_at_socket5.c index ff59ec65f..3afd96ca7 100644 --- a/src/machine/m_at_socket5.c +++ b/src/machine/m_at_socket5.c @@ -370,7 +370,7 @@ machine_at_pat54pv_init(const machine_t *model) device_add(&opti5x7_device); device_add(&keyboard_ps2_intel_ami_pci_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; @@ -400,7 +400,7 @@ machine_at_hot543_init(const machine_t *model) device_add(&sst_flash_29ee010_device); device_add(&keyboard_at_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); return ret; diff --git a/src/machine/m_at_t3100e.c b/src/machine/m_at_t3100e.c index e3e24cf2c..357f012f2 100644 --- a/src/machine/m_at_t3100e.c +++ b/src/machine/m_at_t3100e.c @@ -815,7 +815,7 @@ machine_at_t3100e_init(const machine_t *model) device_add(&keyboard_at_toshiba_device); - if (fdc_type == FDC_INTERNAL) { + if (fdc_current[0] == FDC_INTERNAL) { device_add(&fdc_at_device); } diff --git a/src/machine/m_elt.c b/src/machine/m_elt.c index a69b62184..812755898 100644 --- a/src/machine/m_elt.c +++ b/src/machine/m_elt.c @@ -178,7 +178,7 @@ machine_elt_init(const machine_t *model) pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); if (gfxcard[0] == VID_INTERNAL) { diff --git a/src/machine/m_europc.c b/src/machine/m_europc.c index c53061c4e..42034e2f6 100644 --- a/src/machine/m_europc.c +++ b/src/machine/m_europc.c @@ -660,7 +660,7 @@ europc_boot(UNUSED(const device_t *info)) * * We only do this if we have not configured another one. */ - if (hdc_current == HDC_INTERNAL) + if (hdc_current[0] == HDC_INTERNAL) (void) device_add(&xta_hd20_device); return sys; diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index 25d21cfb9..a6a16d65c 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -353,7 +353,7 @@ ps1_setup(int model) device_add(&fdc_at_ps1_device); /* Enable the builtin HDC. */ - if (hdc_current == HDC_INTERNAL) { + if (hdc_current[0] == HDC_INTERNAL) { priv = device_add(&ps1_hdc_device); ps1_hdc_inform(priv, &ps->ps1_91); diff --git a/src/machine/m_ps2_isa.c b/src/machine/m_ps2_isa.c index 4f6d9bc2b..2887cca20 100644 --- a/src/machine/m_ps2_isa.c +++ b/src/machine/m_ps2_isa.c @@ -179,7 +179,7 @@ ps2_isa_setup(int model, int cpu_type) device_add(&fdc_at_ps1_device); /* Enable the builtin HDC. */ - if (hdc_current == HDC_INTERNAL) { + if (hdc_current[0] == HDC_INTERNAL) { priv = device_add(&ps1_hdc_device); ps1_hdc_inform(priv, &ps2->ps2_91); } diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index 8ad69e314..cb83d9be7 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -1395,7 +1395,7 @@ machine_ps2_common_init(const machine_t *model) { machine_common_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); dma16_init(); diff --git a/src/machine/m_tandy.c b/src/machine/m_tandy.c index 437ac7d54..e677ff8b4 100644 --- a/src/machine/m_tandy.c +++ b/src/machine/m_tandy.c @@ -1738,7 +1738,7 @@ machine_tandy1k_init(const machine_t *model, int type) device_add(&keyboard_tandy_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_tandy_device); video_reset(gfxcard[0]); diff --git a/src/machine/m_v86p.c b/src/machine/m_v86p.c index 5d132a839..f152383d1 100644 --- a/src/machine/m_v86p.c +++ b/src/machine/m_v86p.c @@ -88,13 +88,13 @@ machine_v86p_init(const machine_t *model) device_add(&keyboard_xt_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); if (gfxcard[0] == VID_INTERNAL) device_add(&f82c425_video_device); - if (hdc_current <= HDC_INTERNAL) + if (hdc_current[0] <= HDC_INTERNAL) device_add(&st506_xt_victor_v86p_device); return ret; diff --git a/src/machine/m_xt.c b/src/machine/m_xt.c index adca9f4de..355f45b23 100644 --- a/src/machine/m_xt.c +++ b/src/machine/m_xt.c @@ -25,7 +25,7 @@ extern const device_t vendex_xt_rtc_onboard_device; static void machine_xt_common_init(const machine_t *model, int fixed_floppy) { - if ((fdc_type == FDC_INTERNAL) || fixed_floppy) + if ((fdc_current[0] == FDC_INTERNAL) || fixed_floppy) device_add(&fdc_xt_device); machine_common_init(model); diff --git a/src/machine/m_xt_compaq.c b/src/machine/m_xt_compaq.c index f5dca48a7..ed1b3e26c 100644 --- a/src/machine/m_xt_compaq.c +++ b/src/machine/m_xt_compaq.c @@ -53,7 +53,7 @@ machine_xt_compaq_deskpro_init(const machine_t *model) pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); device_add(&keyboard_xt_compaq_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); nmi_init(); standalone_gameport_type = &gameport_device; @@ -80,7 +80,7 @@ machine_xt_compaq_portable_init(const machine_t *model) pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); device_add(&keyboard_xt_compaq_device); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); nmi_init(); if (joystick_type) diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c index 87c2fe362..877d26ff5 100644 --- a/src/machine/m_xt_laserxt.c +++ b/src/machine/m_xt_laserxt.c @@ -147,7 +147,7 @@ machine_xt_laserxt_common_init(const machine_t *model,int is_lxt3) pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); nmi_init(); diff --git a/src/machine/m_xt_olivetti.c b/src/machine/m_xt_olivetti.c index 172880361..b13db6bf9 100644 --- a/src/machine/m_xt_olivetti.c +++ b/src/machine/m_xt_olivetti.c @@ -591,7 +591,7 @@ m24_kbd_write(uint16_t port, uint8_t val, void *priv) * bit 7 - use BIOS HD on mainboard (on) / on controller (off) * bit 6 - use OCG/CGA display adapter (on) / other display adapter (off) */ - ret = (hdc_current == HDC_INTERNAL) ? 0x00 : 0x80; + ret = (hdc_current[0] == HDC_INTERNAL) ? 0x00 : 0x80; ret |= video_is_cga() ? 0x40 : 0x00; m24_kbd_adddata(ret); @@ -2219,7 +2219,7 @@ m24_read(uint16_t port, UNUSED(void *priv)) "Reserved for HDU", same as for Switch 3 */ /* Switch 3 - Disable internal BIOS HD */ - if (hdc_current != HDC_INTERNAL) + if (hdc_current[0] != HDC_INTERNAL) ret |= 0x4; /* Switch 2 - Set fast startup */ @@ -2317,7 +2317,7 @@ machine_xt_m24_init(const machine_t *model) machine_common_init(model); /* On-board FDC can be disabled only on M24SP */ - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); /* Address 66-67 = mainboard dip-switch settings */ @@ -2349,7 +2349,7 @@ machine_xt_m24_init(const machine_t *model) m24_kbd_init(m24_kbd); device_add_ex(&m24_kbd_device, m24_kbd); - if (hdc_current == HDC_INTERNAL) + if (hdc_current[0] == HDC_INTERNAL) device_add(&st506_xt_wd1002a_wx1_nobios_device); return ret; @@ -2393,7 +2393,7 @@ machine_xt_m240_init(const machine_t *model) m24_kbd_init(m24_kbd); device_add_ex(&m24_kbd_device, m24_kbd); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); /* io.c logs clearly show it using port 3F7 */ if (joystick_type) @@ -2409,7 +2409,7 @@ machine_xt_m240_init(const machine_t *model) mm58274_init(nvr, model->nvrmask + 1); - if (hdc_current == HDC_INTERNAL) + if (hdc_current[0] == HDC_INTERNAL) device_add(&st506_xt_wd1002a_wx1_nobios_device); return ret; diff --git a/src/machine/m_xt_t1000.c b/src/machine/m_xt_t1000.c index 88fc6ada2..5a787292f 100644 --- a/src/machine/m_xt_t1000.c +++ b/src/machine/m_xt_t1000.c @@ -969,7 +969,7 @@ machine_xt_t1200_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(&t1200_video_device); - if (hdc_current <= HDC_INTERNAL) + if (hdc_current[0] <= HDC_INTERNAL) device_add(&st506_xt_toshiba_t1200_device); return ret; diff --git a/src/machine/m_xt_xi8088.c b/src/machine/m_xt_xi8088.c index 3f07e6a4e..8515ea27a 100644 --- a/src/machine/m_xt_xi8088.c +++ b/src/machine/m_xt_xi8088.c @@ -201,7 +201,7 @@ machine_xt_xi8088_init(const machine_t *model) machine_common_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); device_add(&keyboard_ps2_xi8088_device); diff --git a/src/machine/m_xt_zenith.c b/src/machine/m_xt_zenith.c index 0da091917..f5e231772 100644 --- a/src/machine/m_xt_zenith.c +++ b/src/machine/m_xt_zenith.c @@ -140,7 +140,7 @@ machine_xt_z184_init(const machine_t *model) machine_zenith_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_device); lpt1_remove(); /* only one parallel port */ @@ -170,7 +170,7 @@ machine_xt_z151_init(const machine_t *model) machine_zenith_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_tandy_device); return ret; @@ -193,7 +193,7 @@ machine_xt_z159_init(const machine_t *model) machine_zenith_init(model); - if (fdc_type == FDC_INTERNAL) + if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_xt_tandy_device); /* parallel port is on the memory board */ diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index d6f84ea71..64f3b0e43 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -294,7 +294,7 @@ MachineStatus::iterateFDD(const std::function &cb) void MachineStatus::iterateCDROM(const std::function &cb) { - auto hdc_name = QString(hdc_get_internal_name(hdc_current)); + auto hdc_name = QString(hdc_get_internal_name(hdc_current[0])); for (size_t i = 0; i < CDROM_NUM; i++) { /* Could be Internal or External IDE.. */ if ((cdrom[i].bus_type == CDROM_BUS_ATAPI) && !hasIDE() && @@ -317,7 +317,7 @@ MachineStatus::iterateCDROM(const std::function &cb) void MachineStatus::iterateZIP(const std::function &cb) { - auto hdc_name = QString(hdc_get_internal_name(hdc_current)); + auto hdc_name = QString(hdc_get_internal_name(hdc_current[0])); for (size_t i = 0; i < ZIP_NUM; i++) { /* Could be Internal or External IDE.. */ if ((zip_drives[i].bus_type == ZIP_BUS_ATAPI) && !hasIDE() && @@ -338,7 +338,7 @@ MachineStatus::iterateZIP(const std::function &cb) void MachineStatus::iterateMO(const std::function &cb) { - auto hdc_name = QString(hdc_get_internal_name(hdc_current)); + auto hdc_name = QString(hdc_get_internal_name(hdc_current[0])); for (size_t i = 0; i < MO_NUM; i++) { /* Could be Internal or External IDE.. */ if ((mo_drives[i].bus_type == MO_BUS_ATAPI) && !hasIDE() && @@ -602,7 +602,7 @@ MachineStatus::refresh(QStatusBar *sbar) sbar->addWidget(d->net[i].label.get()); }); - auto hdc_name = QString(hdc_get_internal_name(hdc_current)); + auto hdc_name = QString(hdc_get_internal_name(hdc_current[0])); if ((has_mfm || (hdc_name.left(5) == QStringLiteral("st506"))) && (c_mfm > 0)) { d->hdds[HDD_BUS_MFM].label = std::make_unique(); d->hdds[HDD_BUS_MFM].setActive(false); diff --git a/src/qt/qt_settingsstoragecontrollers.cpp b/src/qt/qt_settingsstoragecontrollers.cpp index fa02ce613..a86362909 100644 --- a/src/qt/qt_settingsstoragecontrollers.cpp +++ b/src/qt/qt_settingsstoragecontrollers.cpp @@ -56,8 +56,8 @@ SettingsStorageControllers::save() auto *cbox = findChild(QString("comboBoxSCSI%1").arg(i + 1)); scsi_card_current[i] = cbox->currentData().toInt(); } - hdc_current = ui->comboBoxHD->currentData().toInt(); - fdc_type = ui->comboBoxFD->currentData().toInt(); + hdc_current[0] = ui->comboBoxHD->currentData().toInt(); + fdc_current[0] = ui->comboBoxFD->currentData().toInt(); cdrom_interface_current = ui->comboBoxCDInterface->currentData().toInt(); ide_ter_enabled = ui->checkBoxTertiaryIDE->isChecked() ? 1 : 0; ide_qua_enabled = ui->checkBoxQuaternaryIDE->isChecked() ? 1 : 0; @@ -92,7 +92,7 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId) if (device_is_valid(hdc_dev, machineId)) { int row = Models::AddEntry(model, name, c); - if (c == hdc_current) { + if (c == hdc_current[0]) { selectedRow = row - removeRows; } } @@ -128,7 +128,7 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId) if (device_is_valid(fdc_dev, machineId)) { int row = Models::AddEntry(model, name, c); - if (c == fdc_type) { + if (c == fdc_current[0]) { selectedRow = row - removeRows; } } diff --git a/src/sound/sound.c b/src/sound/sound.c index 4820c45f9..254e529ca 100644 --- a/src/sound/sound.c +++ b/src/sound/sound.c @@ -221,14 +221,9 @@ sound_card_get_from_internal_name(const char *s) void sound_card_init(void) { - if ((sound_card_current[0] > SOUND_INTERNAL) && (sound_cards[sound_card_current[0]].device)) - device_add_inst(sound_cards[sound_card_current[0]].device, 1); - if ((sound_card_current[1] > SOUND_INTERNAL) && (sound_cards[sound_card_current[1]].device)) - device_add_inst(sound_cards[sound_card_current[1]].device, 2); - if ((sound_card_current[2] > SOUND_INTERNAL) && (sound_cards[sound_card_current[2]].device)) - device_add_inst(sound_cards[sound_card_current[2]].device, 3); - if ((sound_card_current[3] > SOUND_INTERNAL) && (sound_cards[sound_card_current[3]].device)) - device_add_inst(sound_cards[sound_card_current[3]].device, 4); + for (uint8_t i = 0; i < SOUND_CARD_MAX; i++) + if ((sound_card_current[i] > SOUND_INTERNAL) && (sound_cards[sound_card_current[i]].device)) + device_add_inst(sound_cards[sound_card_current[i]].device, i + 1); } void