diff --git a/src/Makefile.mingw b/src/Makefile.mingw index 6344cc8fc..b61d985fe 100644 --- a/src/Makefile.mingw +++ b/src/Makefile.mingw @@ -68,8 +68,8 @@ endif ifndef CIRRUS CIRRUS := n endif -ifndef NCR_SCSI -NCR_SCSI := n +ifndef NE1000 +NE1000 := n endif ifndef NV_RIVA NV_RIVA := n @@ -90,7 +90,7 @@ endif ifeq ($(DEV_BUILD), y) DEV_BRANCH := y CIRRUS := y -NCR_SCSI := y +NE1000 := y NV_RIVA := y PAS16 := y endif @@ -205,9 +205,8 @@ CFLAGS += -DUSE_CIRRUS DEVBROBJ += vid_cl_gd.o vid_cl_gd_blit.o vid_cl_ramdac.o endif -ifeq ($(NCR_SCSI), y) -CFLAGS += -DUSE_NCR -DEVBROBJ += scsi_bus.o scsi_ncr5380.o +ifeq ($(NE1000), y) +CFLAGS += -DUSE_NE1000 endif ifeq ($(NV_RIVA), y) @@ -296,8 +295,9 @@ USBOBJ := usb.o endif SCSIOBJ := scsi.o \ - scsi_bios_command.o scsi_device.o scsi_disk.o \ - scsi_buslogic.o scsi_aha154x.o + scsi_bios_command.o scsi_bus.o scsi_device.o scsi_disk.o \ + scsi_buslogic.o scsi_aha154x.o \ + scsi_ncr5380.o NETOBJ := network.o \ net_pcap.o \ diff --git a/src/device.c b/src/device.c index 5340594ac..ef2904f1a 100644 --- a/src/device.c +++ b/src/device.c @@ -329,6 +329,54 @@ device_set_config_mac(char *s, int val) } +int +device_is_valid(device_t *device, int machine_flags) +{ + if (!device) + { + return 1; + } + + if ((device->flags & DEVICE_AT) && !(machine_flags & MACHINE_AT)) { + return 0; + } + + if ((device->flags & DEVICE_CBUS) && !(machine_flags & MACHINE_CBUS)) { + return 0; + } + + if ((device->flags & DEVICE_ISA) && !(machine_flags & MACHINE_ISA)) { + return 0; + } + + if ((device->flags & DEVICE_MCA) && !(machine_flags & MACHINE_MCA)) { + return 0; + } + + if ((device->flags & DEVICE_EISA) && !(machine_flags & MACHINE_EISA)) { + return 0; + } + + if ((device->flags & DEVICE_VLB) && !(machine_flags & MACHINE_VLB)) { + return 0; + } + + if ((device->flags & DEVICE_PCI) && !(machine_flags & MACHINE_PCI)) { + return 0; + } + + if ((device->flags & DEVICE_PS2) && !(machine_flags & MACHINE_PS2_HDD)) { + return 0; + } + + if ((device->flags & DEVICE_AGP) && !(machine_flags & MACHINE_AGP)) { + return 0; + } + + return 1; +} + + int machine_get_config_int(char *s) { diff --git a/src/device.h b/src/device.h index 0ad0a54e1..d3460555a 100644 --- a/src/device.h +++ b/src/device.h @@ -112,6 +112,7 @@ extern void device_set_config_hex16(char *s, int val); extern void device_set_config_hex20(char *s, int val); extern void device_set_config_mac(char *s, int val); extern char *device_get_config_string(char *name); +extern int device_is_valid(device_t *device, int machine_flags); extern int machine_get_config_int(char *s); extern char *machine_get_config_string(char *s); diff --git a/src/disk/hdc.c b/src/disk/hdc.c index 5704ca3f5..39b180599 100644 --- a/src/disk/hdc.c +++ b/src/disk/hdc.c @@ -82,41 +82,41 @@ static struct { { "Internal Controller", "internal", &inthdc_device, 0 }, - { "[MFM] IBM PC Fixed Disk Adapter", "mfm_xebec", + { "[ISA] [MFM] IBM PC Fixed Disk Adapter", "mfm_xebec", &mfm_xt_xebec_device, 1 }, - { "[MFM] DTC-5150X Fixed Disk Adapter", "mfm_dtc5150x", + { "[ISA] [MFM] DTC-5150X Fixed Disk Adapter", "mfm_dtc5150x", &mfm_xt_dtc5150x_device, 1 }, - { "[MFM] IBM PC/AT Fixed Disk Adapter", "mfm_at", + { "[ISA] [MFM] IBM PC/AT Fixed Disk Adapter", "mfm_at", &mfm_at_wd1003_device, 1 }, - { "[ESDI] PC/AT ESDI Fixed Disk Adapter", "esdi_wd1007vse1", + { "[ISA] [ESDI] PC/AT ESDI Fixed Disk Adapter", "esdi_wd1007vse1", &esdi_at_wd1007vse1_device, 0 }, - { "[ESDI] IBM PS/2 ESDI Fixed Disk Adapter","esdi_mca", - &esdi_ps2_device, 1 }, - #if 0 - { "[IDE] PC/AT IDE Adapter", "ide_isa", + { "[ISA] [IDE] PC/AT IDE Adapter", "ide_isa", &ide_isa_device, 0 }, - { "[IDE] PCI IDE Adapter", "ide_pci", + { "[PCI] [IDE] PCI IDE Adapter", "ide_pci", &ide_pci_device, 0 }, #endif - { "[IDE] PC/XT XTIDE", "xtide", + { "[ISA] [IDE] PC/XT XTIDE", "xtide", &xtide_device , 0 }, - { "[IDE] PC/AT XTIDE", "xtide_at", + { "[ISA] [IDE] PC/AT XTIDE", "xtide_at", &xtide_at_device, 0 }, - { "[IDE] PS/2 XTIDE (Acculogic)", "xtide_ps2", + { "[ISA] [IDE] PS/2 XTIDE (Acculogic)", "xtide_ps2", &xtide_ps2_device, 0 }, - { "[IDE] PS/2 AT XTIDE (1.1.5)", "xtide_at_ps2", + { "[ISA] [IDE] PS/2 AT XTIDE (1.1.5)", "xtide_at_ps2", &xtide_at_ps2_device, 0 }, + { "[MCA] [ESDI] IBM PS/2 ESDI Fixed Disk Adapter","esdi_mca", + &esdi_ps2_device, 1 }, + { "", "", NULL, 0 } }; @@ -165,6 +165,13 @@ hdc_get_internal_name(int hdc) } +device_t * +hdc_get_device(int hdc) +{ + return(controllers[hdc].device); +} + + int hdc_get_flags(int hdc) { diff --git a/src/disk/hdc.h b/src/disk/hdc.h index 4949f0fb4..5d0e93657 100644 --- a/src/disk/hdc.h +++ b/src/disk/hdc.h @@ -49,6 +49,7 @@ extern void hdc_reset(void); extern char *hdc_get_name(int hdc); extern char *hdc_get_internal_name(int hdc); +extern device_t *hdc_get_device(int hdc); extern int hdc_get_flags(int hdc); extern int hdc_available(int hdc); extern int hdc_current_is_mfm(void); diff --git a/src/disk/hdc_esdi_at.c b/src/disk/hdc_esdi_at.c index ce5dc3e69..d7afe1660 100644 --- a/src/disk/hdc_esdi_at.c +++ b/src/disk/hdc_esdi_at.c @@ -842,7 +842,7 @@ wd1007vse1_available(void) device_t esdi_at_wd1007vse1_device = { "Western Digital WD1007V-SE1 (ESDI)", - DEVICE_AT, + DEVICE_ISA | DEVICE_AT, 0, wd1007vse1_init, wd1007vse1_close, diff --git a/src/disk/hdc_mfm_at.c b/src/disk/hdc_mfm_at.c index e75b2b451..273badd3a 100644 --- a/src/disk/hdc_mfm_at.c +++ b/src/disk/hdc_mfm_at.c @@ -760,7 +760,7 @@ mfm_close(void *priv) device_t mfm_at_wd1003_device = { "WD1003 AT MFM/RLL Controller", - DEVICE_AT, 0, + DEVICE_ISA | DEVICE_AT, 0, mfm_init, mfm_close, NULL, NULL, NULL, NULL, NULL, NULL }; diff --git a/src/disk/hdc_mfm_xt.c b/src/disk/hdc_mfm_xt.c index 9d524c92d..1a6f091e6 100644 --- a/src/disk/hdc_mfm_xt.c +++ b/src/disk/hdc_mfm_xt.c @@ -908,7 +908,7 @@ dtc5150x_available(void) device_t mfm_xt_dtc5150x_device = { "DTC 5150X", - 0, 0, + DEVICE_ISA, 0, dtc5150x_init, mfm_close, NULL, dtc5150x_available, NULL, NULL, NULL, NULL diff --git a/src/disk/hdc_xtide.c b/src/disk/hdc_xtide.c index 51b412de7..2c8e110dc 100644 --- a/src/disk/hdc_xtide.c +++ b/src/disk/hdc_xtide.c @@ -236,7 +236,7 @@ xtide_close(void *priv) device_t xtide_device = { "XTIDE", - 0, + DEVICE_ISA, 0, xtide_init, xtide_close, NULL, xtide_available, NULL, NULL, NULL, @@ -245,7 +245,7 @@ device_t xtide_device = { device_t xtide_at_device = { "XTIDE (AT)", - DEVICE_AT, + DEVICE_ISA | DEVICE_AT, 0, xtide_at_init, xtide_close, NULL, xtide_at_available, NULL, NULL, NULL, @@ -254,7 +254,7 @@ device_t xtide_at_device = { device_t xtide_ps2_device = { "XTIDE (Acculogic)", - 0, + DEVICE_ISA, 0, xtide_ps2_init, xtide_close, NULL, xtide_ps2_available, NULL, NULL, NULL, @@ -263,7 +263,7 @@ device_t xtide_ps2_device = { device_t xtide_at_ps2_device = { "XTIDE (AT) (1.1.5)", - DEVICE_PS2, + DEVICE_ISA | DEVICE_PS2, 0, xtide_at_ps2_init, xtide_close, NULL, xtide_at_ps2_available, NULL, NULL, NULL, diff --git a/src/ibm.h b/src/ibm.h index 099db3494..a9d8a74c8 100644 --- a/src/ibm.h +++ b/src/ibm.h @@ -392,50 +392,63 @@ enum GFX_CGA = 0, GFX_MDA, GFX_HERCULES, - GFX_EGA, /*Using IBM EGA BIOS*/ - GFX_TVGA, /*Using Trident TVGA8900D BIOS*/ - GFX_ET4000, /*Tseng ET4000*/ - GFX_ET4000W32, /*Tseng ET4000/W32p (Diamond Stealth 32)*/ - GFX_BAHAMAS64, /*S3 Vision864 (Paradise Bahamas 64)*/ - GFX_N9_9FX, /*S3 764/Trio64 (Number Nine 9FX)*/ - GFX_VIRGE, /*S3 Virge*/ - GFX_TGUI9440, /*Trident TGUI9440*/ - GFX_VGA, /*IBM VGA*/ - GFX_VGAEDGE16, /*ATI VGA Edge-16 (18800-1)*/ - GFX_VGACHARGER, /*ATI VGA Charger (28800-5)*/ - GFX_OTI067, /*Oak OTI-067*/ - GFX_MACH64GX, /*ATI Graphics Pro Turbo (Mach64)*/ - GFX_CL_GD5429, /*Cirrus Logic CL-GD5429*/ - GFX_VIRGEDX, /*S3 Virge/DX*/ - GFX_PHOENIX_TRIO32, /*S3 732/Trio32 (Phoenix)*/ - GFX_PHOENIX_TRIO64, /*S3 764/Trio64 (Phoenix)*/ - GFX_INCOLOR, /* Hercules InColor */ - GFX_COLORPLUS, /* Plantronics ColorPlus */ - GFX_WY700, /* Wyse 700 */ - GFX_GENIUS, /* MDSI Genius */ - GFX_MACH64VT2, /*ATI Mach64 VT2*/ + GFX_EGA, /*Using IBM EGA BIOS*/ + GFX_TVGA, /*Using Trident TVGA8900D BIOS*/ + GFX_ET4000, /*Tseng ET4000*/ + GFX_ET4000W32_VLB, /*Tseng ET4000/W32p (Diamond Stealth 32) VLB*/ + GFX_ET4000W32_PCI, /*Tseng ET4000/W32p (Diamond Stealth 32) PCI*/ + GFX_BAHAMAS64_VLB, /*S3 Vision864 (Paradise Bahamas 64) VLB*/ + GFX_BAHAMAS64_PCI, /*S3 Vision864 (Paradise Bahamas 64) PCI*/ + GFX_N9_9FX_VLB, /*S3 764/Trio64 (Number Nine 9FX) VLB*/ + GFX_N9_9FX_PCI, /*S3 764/Trio64 (Number Nine 9FX) PCI*/ + GFX_VIRGE_VLB, /*S3 Virge VLB*/ + GFX_VIRGE_PCI, /*S3 Virge PCI*/ + GFX_TGUI9440_VLB, /*Trident TGUI9440 VLB*/ + GFX_TGUI9440_PCI, /*Trident TGUI9440 PCI*/ + GFX_VGA, /*IBM VGA*/ + GFX_VGAEDGE16, /*ATI VGA Edge-16 (18800-1)*/ + GFX_VGACHARGER, /*ATI VGA Charger (28800-5)*/ + GFX_OTI067, /*Oak OTI-067*/ + GFX_MACH64GX_VLB, /*ATI Graphics Pro Turbo (Mach64) VLB*/ + GFX_MACH64GX_PCI, /*ATI Graphics Pro Turbo (Mach64) PCI*/ + GFX_CL_GD5429, /*Cirrus Logic CL-GD5429*/ + GFX_VIRGEDX_VLB, /*S3 Virge/DX VLB*/ + GFX_VIRGEDX_PCI, /*S3 Virge/DX PCI*/ + GFX_PHOENIX_TRIO32_VLB, /*S3 732/Trio32 (Phoenix) VLB*/ + GFX_PHOENIX_TRIO32_PCI, /*S3 732/Trio32 (Phoenix) PCI*/ + GFX_PHOENIX_TRIO64_VLB, /*S3 764/Trio64 (Phoenix) VLB*/ + GFX_PHOENIX_TRIO64_PCI, /*S3 764/Trio64 (Phoenix) PCI*/ + GFX_INCOLOR, /*Hercules InColor*/ + GFX_COLORPLUS, /*Plantronics ColorPlus*/ + GFX_WY700, /*Wyse 700*/ + GFX_GENIUS, /*MDSI Genius*/ + GFX_MACH64VT2, /*ATI Mach64 VT2*/ - GFX_COMPAQ_EGA, /*Compaq EGA*/ - GFX_SUPER_EGA, /*Using Chips & Technologies SuperEGA BIOS*/ - GFX_COMPAQ_VGA, /*Compaq/Paradise VGA*/ - GFX_MIRO_VISION964, /*S3 Vision964 (Miro Crystal)*/ - GFX_CL_GD5446, /*Cirrus Logic CL-GD5446*/ - GFX_VGAWONDERXL, /*Compaq ATI VGA Wonder XL (28800-5)*/ - GFX_WD90C11, /*Paradise WD90C11 Standalone*/ - GFX_OTI077, /*Oak OTI-077*/ - GFX_VGAWONDERXL24, /*Compaq ATI VGA Wonder XL24 (28800-6)*/ - GFX_STEALTH64, /*S3 Vision864 (Diamond Stealth 64)*/ - GFX_PHOENIX_VISION864, /*S3 Vision864 (Phoenix)*/ - GFX_RIVATNT, - GFX_RIVA128, + GFX_COMPAQ_EGA, /*Compaq EGA*/ + GFX_SUPER_EGA, /*Using Chips & Technologies SuperEGA BIOS*/ + GFX_COMPAQ_VGA, /*Compaq/Paradise VGA*/ + GFX_CL_GD5446, /*Cirrus Logic CL-GD5446*/ + GFX_VGAWONDERXL, /*Compaq ATI VGA Wonder XL (28800-5)*/ + GFX_WD90C11, /*Paradise WD90C11 Standalone*/ + GFX_OTI077, /*Oak OTI-077*/ + GFX_VGAWONDERXL24, /*Compaq ATI VGA Wonder XL24 (28800-6)*/ + GFX_STEALTH64_VLB, /*S3 Vision864 (Diamond Stealth 64) VLB*/ + GFX_STEALTH64_PCI, /*S3 Vision864 (Diamond Stealth 64) PCI*/ + GFX_PHOENIX_VISION864_VLB, /*S3 Vision864 (Phoenix) VLB*/ + GFX_PHOENIX_VISION864_PCI, /*S3 Vision864 (Phoenix) PCI*/ + GFX_RIVATNT, /*nVidia Riva TNT*/ + GFX_RIVATNT2, /*nVidia Riva TNT2*/ + GFX_RIVA128, /*nVidia Riva 128*/ GFX_HERCULESPLUS, - GFX_RIVATNT2, + GFX_VIRGEVX_VLB, /*S3 Virge/VX VLB*/ + GFX_VIRGEVX_PCI, /*S3 Virge/VX PCI*/ + GFX_VIRGEDX4_VLB, /*S3 Virge/DX (VBE 2.0) VLB*/ + GFX_VIRGEDX4_PCI, /*S3 Virge/DX (VBE 2.0) PCI*/ - GFX_TRIGEM_UNK, - GFX_OTI037, /*Oak OTI-037*/ + GFX_OTI037, /*Oak OTI-037*/ - GFX_VIRGEVX, /*S3 Virge/VX*/ - GFX_VIRGEDX4, /*S3 Virge/DX (VBE 2.0)*/ + GFX_TRIGEM_UNK, /*Unknown TriGem graphics card with Hangeul ROM*/ + GFX_MIRO_VISION964, /*S3 Vision964 (Miro Crystal)*/ GFX_MAX }; diff --git a/src/io.c b/src/io.c index db9b05f68..6983b47ad 100644 --- a/src/io.c +++ b/src/io.c @@ -73,6 +73,44 @@ void io_sethandler(uint16_t base, int size, } } +void io_sethandler_interleaved(uint16_t base, int size, + uint8_t (*inb)(uint16_t addr, void *priv), + uint16_t (*inw)(uint16_t addr, void *priv), + uint32_t (*inl)(uint16_t addr, void *priv), + void (*outb)(uint16_t addr, uint8_t val, void *priv), + void (*outw)(uint16_t addr, uint16_t val, void *priv), + void (*outl)(uint16_t addr, uint32_t val, void *priv), + void *priv) +{ + int c; + size <<= 2; + for (c = 0; c < size; c += 2) + { + if (!port_inb[ base + c][0] && !port_inw[ base + c][0] && !port_inl[ base + c][0] && + !port_outb[base + c][0] && !port_outw[base + c][0] && !port_outl[base + c][0]) + { + port_inb[ base + c][0] = inb; + port_inw[ base + c][0] = inw; + port_inl[ base + c][0] = inl; + port_outb[base + c][0] = outb; + port_outw[base + c][0] = outw; + port_outl[base + c][0] = outl; + port_priv[base + c][0] = priv; + } + else if (!port_inb[ base + c][1] && !port_inw[ base + c][1] && !port_inl[ base + c][1] && + !port_outb[base + c][1] && !port_outw[base + c][1] && !port_outl[base + c][1]) + { + port_inb[ base + c][1] = inb; + port_inw[ base + c][1] = inw; + port_inl[ base + c][1] = inl; + port_outb[base + c][1] = outb; + port_outw[base + c][1] = outw; + port_outl[base + c][1] = outl; + port_priv[base + c][1] = priv; + } + } +} + void io_removehandler(uint16_t base, int size, uint8_t (*inb)(uint16_t addr, void *priv), uint16_t (*inw)(uint16_t addr, void *priv), @@ -120,6 +158,54 @@ void io_removehandler(uint16_t base, int size, } } +void io_removehandler_interleaved(uint16_t base, int size, + uint8_t (*inb)(uint16_t addr, void *priv), + uint16_t (*inw)(uint16_t addr, void *priv), + uint32_t (*inl)(uint16_t addr, void *priv), + void (*outb)(uint16_t addr, uint8_t val, void *priv), + void (*outw)(uint16_t addr, uint16_t val, void *priv), + void (*outl)(uint16_t addr, uint32_t val, void *priv), + void *priv) +{ + int c; + size <<= 2; + for (c = 0; c < size; c += 2) + { + if (port_priv[base + c][0] == priv) + { + if (port_inb[ base + c][0] == inb) + port_inb[ base + c][0] = NULL; + if (port_inw[ base + c][0] == inw) + port_inw[ base + c][0] = NULL; + if (port_inl[ base + c][0] == inl) + port_inl[ base + c][0] = NULL; + if (port_outb[ base + c][0] == outb) + port_outb[ base + c][0] = NULL; + if (port_outw[ base + c][0] == outw) + port_outw[ base + c][0] = NULL; + if (port_outl[ base + c][0] == outl) + port_outl[ base + c][0] = NULL; + port_priv[base + c][0] = NULL; + } + if (port_priv[base + c][1] == priv) + { + if (port_inb[ base + c][1] == inb) + port_inb[ base + c][1] = NULL; + if (port_inw[ base + c][1] == inw) + port_inw[ base + c][1] = NULL; + if (port_inl[ base + c][1] == inl) + port_inl[ base + c][1] = NULL; + if (port_outb[ base + c][1] == outb) + port_outb[ base + c][1] = NULL; + if (port_outw[ base + c][1] == outw) + port_outw[ base + c][1] = NULL; + if (port_outl[ base + c][1] == outl) + port_outl[ base + c][1] = NULL; + port_priv[base + c][1] = NULL; + } + } +} + #if 0 uint8_t cgamode,cgastat=0,cgacol; int hsync; diff --git a/src/io.h b/src/io.h index 384ca4662..1ff610788 100644 --- a/src/io.h +++ b/src/io.h @@ -11,7 +11,16 @@ extern void io_sethandler(uint16_t base, int size, void (*outw)(uint16_t addr, uint16_t val, void *priv), void (*outl)(uint16_t addr, uint32_t val, void *priv), void *priv); - + +extern void io_sethandler_interleaved(uint16_t base, int size, + uint8_t (*inb)(uint16_t addr, void *priv), + uint16_t (*inw)(uint16_t addr, void *priv), + uint32_t (*inl)(uint16_t addr, void *priv), + void (*outb)(uint16_t addr, uint8_t val, void *priv), + void (*outw)(uint16_t addr, uint16_t val, void *priv), + void (*outl)(uint16_t addr, uint32_t val, void *priv), + void *priv); + extern void io_removehandler(uint16_t base, int size, uint8_t (*inb)(uint16_t addr, void *priv), uint16_t (*inw)(uint16_t addr, void *priv), @@ -20,3 +29,12 @@ extern void io_removehandler(uint16_t base, int size, void (*outw)(uint16_t addr, uint16_t val, void *priv), void (*outl)(uint16_t addr, uint32_t val, void *priv), void *priv); + +extern void io_removehandler_interleaved(uint16_t base, int size, + uint8_t (*inb)(uint16_t addr, void *priv), + uint16_t (*inw)(uint16_t addr, void *priv), + uint32_t (*inl)(uint16_t addr, void *priv), + void (*outb)(uint16_t addr, uint8_t val, void *priv), + void (*outw)(uint16_t addr, uint16_t val, void *priv), + void (*outl)(uint16_t addr, uint32_t val, void *priv), + void *priv); diff --git a/src/machine/machine.c b/src/machine/machine.c index a51d3c579..208f328aa 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -46,92 +46,92 @@ int romset; machine_t machines[] = { - {"[8088] AMI XT clone", ROM_AMIXT, "amixt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] Compaq Portable", ROM_PORTABLE, "portable", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 128, 640, 128, 0, machine_xt_init, NULL }, - {"[8088] DTK XT clone", ROM_DTKXT, "dtk", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] IBM PC", ROM_IBMPC, "ibmpc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 32, 0, machine_xt_init, NULL }, - {"[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", {{"", cpus_pcjr}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, 0, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device }, - {"[8088] IBM XT", ROM_IBMXT, "ibmxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] Generic XT clone", ROM_GENXT, "genxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] Juko XT clone", ROM_JUKOPC, "jukopc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] Phoenix XT clone", ROM_PXXT, "pxxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 640, 64, 0, machine_xt_init, NULL }, - {"[8088] Schneider EuroPC", ROM_EUROPC, "europc", {{"Siemens",cpus_europc}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_HAS_HDC, 512, 640, 128, 0, machine_europc_init, NULL }, - {"[8088] Tandy 1000", ROM_TANDY, "tandy", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, 0, 128, 640, 128, 0, machine_tandy1k_init, tandy1000_get_device }, - {"[8088] Tandy 1000 HX", ROM_TANDY1000HX, "tandy1000hx", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, 0, 256, 640, 128, 0, machine_tandy1k_init, tandy1000hx_get_device }, - {"[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 1152, 64, 0, machine_xt_laserxt_init, NULL }, - {"[8088] VTech Laser XT3", ROM_LXT3, "lxt3", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, 0, 64, 1152, 64, 0, machine_xt_laserxt_init, NULL }, + {"[8088] AMI XT clone", ROM_AMIXT, "amixt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] Compaq Portable", ROM_PORTABLE, "portable", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 128, 640, 128, 0, machine_xt_init, NULL }, + {"[8088] DTK XT clone", ROM_DTKXT, "dtk", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] IBM PC", ROM_IBMPC, "ibmpc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 32, 0, machine_xt_init, NULL }, + {"[8088] IBM PCjr", ROM_IBMPCJR, "ibmpcjr", {{"", cpus_pcjr}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device }, + {"[8088] IBM XT", ROM_IBMXT, "ibmxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] Generic XT clone", ROM_GENXT, "genxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] Juko XT clone", ROM_JUKOPC, "jukopc", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] Phoenix XT clone", ROM_PXXT, "pxxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 640, 64, 0, machine_xt_init, NULL }, + {"[8088] Schneider EuroPC", ROM_EUROPC, "europc", {{"Siemens",cpus_europc}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_HAS_HDC, 512, 640, 128, 0, machine_europc_init, NULL }, + {"[8088] Tandy 1000", ROM_TANDY, "tandy", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 128, 640, 128, 0, machine_tandy1k_init, tandy1000_get_device }, + {"[8088] Tandy 1000 HX", ROM_TANDY1000HX, "tandy1000hx", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 256, 640, 128, 0, machine_tandy1k_init, tandy1000hx_get_device }, + {"[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 1152, 64, 0, machine_xt_laserxt_init, NULL }, + {"[8088] VTech Laser XT3", ROM_LXT3, "lxt3", {{"", cpus_8088}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA, 64, 1152, 64, 0, machine_xt_laserxt_init, NULL }, - {"[8086] Amstrad PC1512", ROM_PC1512, "pc1512", {{"", cpus_pc1512}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AMSTRAD, 512, 640, 128, 63, machine_amstrad_init, NULL }, - {"[8086] Amstrad PC1640", ROM_PC1640, "pc1640", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, - {"[8086] Amstrad PC2086", ROM_PC2086, "pc2086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, - {"[8086] Amstrad PC3086", ROM_PC3086, "pc3086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, - {"[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_OLIM24, 128, 640, 128, 0, machine_olim24_init, NULL }, - {"[8086] Sinclair PC200", ROM_PC200, "pc200", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AMSTRAD, 512, 640, 128, 63, machine_amstrad_init, NULL }, - {"[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, 0, 512, 768, 128, 0, machine_tandy1ksl2_init, NULL }, + {"[8086] Amstrad PC1512", ROM_PC1512, "pc1512", {{"", cpus_pc1512}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AMSTRAD, 512, 640, 128, 63, machine_amstrad_init, NULL }, + {"[8086] Amstrad PC1640", ROM_PC1640, "pc1640", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, + {"[8086] Amstrad PC2086", ROM_PC2086, "pc2086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, + {"[8086] Amstrad PC3086", ROM_PC3086, "pc3086", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AMSTRAD, 640, 640, 0, 63, machine_amstrad_init, NULL }, + {"[8086] Olivetti M24", ROM_OLIM24, "olivetti_m24", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_OLIM24, 128, 640, 128, 0, machine_olim24_init, NULL }, + {"[8086] Sinclair PC200", ROM_PC200, "pc200", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AMSTRAD, 512, 640, 128, 63, machine_amstrad_init, NULL }, + {"[8086] Tandy 1000 SL/2", ROM_TANDY1000SL2, "tandy1000sl2", {{"", cpus_8086}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA, 512, 768, 128, 0, machine_tandy1ksl2_init, NULL }, - {"[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT, 512,16384, 128, 127, machine_at_neat_init, NULL }, - {"[286 ISA] Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL }, - {"[286 ISA] Commodore PC 30 III", ROM_CMDPC30, "cmdpc30", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT, 640,16384, 128, 127, machine_at_cmdpc_init, NULL }, - {"[286 ISA] Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL }, - {"[286 ISA] IBM AT", ROM_IBMAT, "ibmat", {{"", cpus_ibmat}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT, 256,15872, 128, 63, machine_at_top_remap_init, NULL }, - {"[286 ISA] IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 512,16384, 512, 127, machine_ps1_m2011_init, NULL }, - {"[286 ISA] IBM PS/2 model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL }, - {"[286 ISA] Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2, 512,16384, 128, 127, machine_at_scat_init, NULL }, + {"[286 ISA] AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_neat_init, NULL }, + {"[286 ISA] Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL }, + {"[286 ISA] Commodore PC 30 III", ROM_CMDPC30, "cmdpc30", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 640,16384, 128, 127, machine_at_cmdpc_init, NULL }, + {"[286 ISA] Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 512,16384, 128, 127, machine_at_scat_init, NULL }, + {"[286 ISA] IBM AT", ROM_IBMAT, "ibmat", {{"", cpus_ibmat}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 63, machine_at_top_remap_init, NULL }, + {"[286 ISA] IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 512,16384, 512, 127, machine_ps1_m2011_init, NULL }, + {"[286 ISA] IBM PS/2 model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 16, 1, 127, machine_ps2_m30_286_init, NULL }, + {"[286 ISA] Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2, 512,16384, 128, 127, machine_at_scat_init, NULL }, - {"[286 MCA] IBM PS/2 model 50", ROM_IBMPS2_M50, "ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD | MACHINE_MCA, 1, 16, 1, 63, machine_ps2_model_50_init, NULL }, + {"[286 MCA] IBM PS/2 model 50", ROM_IBMPS2_M50, "ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 16, 1, 63, machine_ps2_model_50_init, NULL }, - {"[386SX ISA] AMI 386SX clone", ROM_AMI386SX, "ami386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 512,16384, 128, 127, machine_at_headland_init, NULL }, - {"[386SX ISA] Amstrad MegaPC", ROM_MEGAPC, "megapc", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL }, - {"[386SX ISA] Award 386SX clone", ROM_AWARD386SX_OPTI495, "award386sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, - {"[386SX ISA] DTK 386SX clone", ROM_DTK386, "dtk386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 512,16384, 128, 127, machine_at_neat_init, NULL }, - {"[386SX ISA] IBM PS/1 model 2121", ROM_IBMPS1_2121, "ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_ps1_m2121_init, NULL }, - {"[386SX ISA] IBM PS/1 m.2121+ISA", ROM_IBMPS1_2121_ISA, "ibmps1_2121_isa", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_ps1_m2121_init, NULL }, + {"[386SX ISA] AMI 386SX clone", ROM_AMI386SX, "ami386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 512,16384, 128, 127, machine_at_headland_init, NULL }, + {"[386SX ISA] Amstrad MegaPC", ROM_MEGAPC, "megapc", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL }, + {"[386SX ISA] Award 386SX clone", ROM_AWARD386SX_OPTI495, "award386sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, + {"[386SX ISA] DTK 386SX clone", ROM_DTK386, "dtk386", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 512,16384, 128, 127, machine_at_neat_init, NULL }, + {"[386SX ISA] IBM PS/1 model 2121", ROM_IBMPS1_2121, "ibmps1_2121", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_ps1_m2121_init, NULL }, + {"[386SX ISA] IBM PS/1 m.2121+ISA", ROM_IBMPS1_2121_ISA, "ibmps1_2121_isa", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_ps1_m2121_init, NULL }, - {"[386SX MCA] IBM PS/2 model 55SX", ROM_IBMPS2_M55SX, "ibmps2_m55sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD | MACHINE_MCA, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL }, + {"[386SX MCA] IBM PS/2 model 55SX", ROM_IBMPS2_M55SX, "ibmps2_m55sx", {{"Intel", cpus_i386SX}, {"AMD", cpus_Am386SX}, {"Cyrix", cpus_486SLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 8, 1, 63, machine_ps2_model_55sx_init, NULL }, - {"[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, - {"[386DX ISA] Amstrad MegaPC 386DX", ROM_MEGAPCDX, "megapcdx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL }, - {"[386DX ISA] Award 386DX clone", ROM_AWARD386DX_OPTI495, "award386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, - {"[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, + {"[386DX ISA] AMI 386DX clone", ROM_AMI386DX_OPTI495, "ami386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, + {"[386DX ISA] Amstrad MegaPC 386DX", ROM_MEGAPCDX, "megapcdx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 16, 1, 127, machine_at_wd76c10_init, NULL }, + {"[386DX ISA] Award 386DX clone", ROM_AWARD386DX_OPTI495, "award386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, + {"[386DX ISA] MR 386DX clone", ROM_MR386DX_OPTI495, "mr386dx", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, - {"[386DX MCA] IBM PS/2 model 80", ROM_IBMPS2_M80, "ibmps2_m80", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD | MACHINE_MCA, 1, 12, 1, 63, machine_ps2_model_80_init, NULL }, + {"[386DX MCA] IBM PS/2 model 80", ROM_IBMPS2_M80, "ibmps2_m80", {{"Intel", cpus_i386DX}, {"AMD", cpus_Am386DX}, {"Cyrix", cpus_486DLC}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 12, 1, 63, machine_ps2_model_80_init, NULL }, - {"[486 ISA] AMI 486 clone", ROM_AMI486, "ami486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL }, - {"[486 ISA] AMI WinBIOS 486", ROM_WIN486, "win486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL }, - {"[486 ISA] Award 486 clone", ROM_AWARD486_OPTI495, "award486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, - {"[486 ISA] DTK PKM-0038S E-2", ROM_DTK486, "dtk486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC, 1, 128, 1, 127, machine_at_dtk486_init, NULL }, - {"[486 ISA] IBM PS/1 machine 2133", ROM_IBMPS1_2133, "ibmps1_2133", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_ps1_m2133_init, NULL }, + {"[486 ISA] AMI 486 clone", ROM_AMI486, "ami486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL }, + {"[486 ISA] AMI WinBIOS 486", ROM_WIN486, "win486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_ali1429_init, NULL }, + {"[486 ISA] Award 486 clone", ROM_AWARD486_OPTI495, "award486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_at_opti495_init, NULL }, + {"[486 ISA] DTK PKM-0038S E-2", ROM_DTK486, "dtk486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_HAS_HDC, 1, 128, 1, 127, machine_at_dtk486_init, NULL }, + {"[486 ISA] IBM PS/1 machine 2133", ROM_IBMPS1_2133, "ibmps1_2133", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 1, 64, 1, 127, machine_ps1_m2133_init, NULL }, - {"[486 MCA] IBM PS/2 model 80-486", ROM_IBMPS2_M80_486, "ibmps2_m80-486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 1, MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD | MACHINE_MCA, 1, 32, 1, 63, machine_ps2_model_80_486_init, NULL }, + {"[486 MCA] IBM PS/2 model 80-486", ROM_IBMPS2_M80_486, "ibmps2_m80-486", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 1, MACHINE_MCA | MACHINE_AT | MACHINE_PS2 | MACHINE_PS2_HDD, 1, 32, 1, 63, machine_ps2_model_80_486_init, NULL }, - {"[486 PCI] Rise Computer R418", ROM_R418, "r418", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC | MACHINE_PCI, 1, 255, 1, 127, machine_at_r418_init, NULL }, + {"[486 PCI] Rise Computer R418", ROM_R418, "r418", {{"Intel", cpus_i486}, {"AMD", cpus_Am486}, {"Cyrix", cpus_Cx486}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HAS_HDC, 1, 255, 1, 127, machine_at_r418_init, NULL }, - {"[Socket 4 LX] Intel Premiere/PCI", ROM_REVENGE, "revenge", {{"Intel", cpus_Pentium5V}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 2, 128, 2, 127, machine_at_batman_init, NULL }, + {"[Socket 4 LX] Intel Premiere/PCI", ROM_REVENGE, "revenge", {{"Intel", cpus_Pentium5V}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 2, 128, 2, 127, machine_at_batman_init, NULL }, - {"[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 2, 128, 2, 127, machine_at_plato_init, NULL }, + {"[Socket 5 NX] Intel Premiere/PCI II", ROM_PLATO, "plato", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 2, 128, 2, 127, machine_at_plato_init, NULL }, - {"[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL }, - {"[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_endeavor_init, NULL }, - {"[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_zappa_init, NULL }, - {"[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_mb500n_init, NULL }, - {"[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_president_init, NULL }, + {"[Socket 5 FX] ASUS P/I-P54TP4XE", ROM_P54TP4XE, "p54tp4xe", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_p54tp4xe_init, NULL }, + {"[Socket 5 FX] Intel Advanced/EV", ROM_ENDEAVOR, "endeavor", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_endeavor_init, NULL }, + {"[Socket 5 FX] Intel Advanced/ZP", ROM_ZAPPA, "zappa", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_zappa_init, NULL }, + {"[Socket 5 FX] PC Partner MB500N", ROM_MB500N, "mb500n", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_mb500n_init, NULL }, + {"[Socket 5 FX] President Award 430FX PCI",ROM_PRESIDENT, "president", {{ "Intel", cpus_PentiumS5}, {"IDT", cpus_WinChip}, {"AMD", cpus_K5}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_president_init, NULL }, - {"[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_thor_init, NULL }, - {"[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_thor_init, NULL }, + {"[Socket 7 FX] Intel Advanced/ATX", ROM_THOR, "thor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL }, + {"[Socket 7 FX] MR Intel Advanced/ATX", ROM_MRTHOR, "mrthor", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_thor_init, NULL }, - {"[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 192, 8, 127, machine_at_acerm3a_init, NULL }, - {"[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 192, 8, 127, machine_at_acerv35n_init, NULL }, - {"[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 512, 8, 127, machine_at_ap53_init, NULL }, - {"[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL }, - {"[Socket 7 HX] SuperMicro Super P55T2S",ROM_P55T2S, "p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 768, 8, 127, machine_at_p55t2s_init, NULL }, + {"[Socket 7 HX] Acer M3a", ROM_ACERM3A, "acerm3a", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 192, 8, 127, machine_at_acerm3a_init, NULL }, + {"[Socket 7 HX] Acer V35n", ROM_ACERV35N, "acerv35n", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 192, 8, 127, machine_at_acerv35n_init, NULL }, + {"[Socket 7 HX] AOpen AP53", ROM_AP53, "ap53", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 512, 8, 127, machine_at_ap53_init, NULL }, + {"[Socket 7 HX] ASUS P/I-P55T2P4", ROM_P55T2P4, "p55t2p4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 512, 8, 127, machine_at_p55t2p4_init, NULL }, + {"[Socket 7 HX] SuperMicro Super P55T2S",ROM_P55T2S, "p55t2s", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 768, 8, 127, machine_at_p55t2s_init, NULL }, - {"[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL }, - {"[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_i430vx_init, NULL }, - {"[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 128, 8, 127, machine_at_p55va_init, NULL }, + {"[Socket 7 VX] ASUS P/I-P55TVP4", ROM_P55TVP4, "p55tvp4", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_p55tvp4_init, NULL }, + {"[Socket 7 VX] Award 430VX PCI", ROM_430VX, "430vx", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_i430vx_init, NULL }, + {"[Socket 7 VX] Epox P55-VA", ROM_P55VA, "p55va", {{"Intel", cpus_Pentium}, {"IDT", cpus_WinChip}, {"AMD", cpus_K56}, {"Cyrix", cpus_6x86},{"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_VLB | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 128, 8, 127, machine_at_p55va_init, NULL }, - {"[Socket 8 FX] Tyan Titan-Pro AT", ROM_440FX, "440fx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 1024, 8, 127, machine_at_i440fx_init, NULL }, - {"[Socket 8 FX] Tyan Titan-Pro ATX", ROM_S1668, "tpatx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC | MACHINE_PCI, 8, 1024, 8, 127, machine_at_s1668_init, NULL }, - {"", -1, "", {{"", 0}, {"", 0}, {"", 0}}, 0,0,0,0, 0 } + {"[Socket 8 FX] Tyan Titan-Pro AT", ROM_440FX, "440fx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 1024, 8, 127, machine_at_i440fx_init, NULL }, + {"[Socket 8 FX] Tyan Titan-Pro ATX", ROM_S1668, "tpatx", {{"Intel", cpus_PentiumPro}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_PCI | MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HAS_HDC, 8, 1024, 8, 127, machine_at_s1668_init, NULL }, + {"", -1, "", {{"", 0}, {"", 0}, {"", 0}}, 0,0,0,0, 0 } }; diff --git a/src/network/net_ne2000.c b/src/network/net_ne2000.c index 5485262db..ae26a5d36 100644 --- a/src/network/net_ne2000.c +++ b/src/network/net_ne2000.c @@ -42,7 +42,11 @@ /* ROM BIOS file paths. */ +#ifdef DEV_BRANCH +#ifdef USE_NE1000 #define ROM_PATH_NE1000 L"roms/network/ne1000/ne1000.rom" +#endif +#endif #define ROM_PATH_NE2000 L"roms/network/ne2000/ne2000.rom" #define ROM_PATH_RTL8029 L"roms/network/rtl8029as/rtl8029as.rom" @@ -1890,6 +1894,8 @@ nic_init(device_t *info) dev->board = info->local; rom = NULL; switch(dev->board) { +#ifdef DEV_BRANCH +#ifdef USE_NE1000 case NE2K_NE1000: strcpy(dev->name, "NE1000"); dev->maclocal[0] = 0x00; /* 00:00:D8 (NE1000 ISA OID) */ @@ -1897,6 +1903,8 @@ nic_init(device_t *info) dev->maclocal[2] = 0xD8; rom = ROM_PATH_NE1000; break; +#endif +#endif case NE2K_NE2000: strcpy(dev->name, "NE2000"); @@ -2063,6 +2071,8 @@ nic_close(void *priv) } +#ifdef DEV_BRANCH +#ifdef USE_NE1000 static device_config_t ne1000_config[] = { { @@ -2135,6 +2145,8 @@ static device_config_t ne1000_config[] = "", "", -1 } }; +#endif +#endif static device_config_t ne2000_config[] = { @@ -2229,19 +2241,22 @@ static device_config_t rtl8029as_config[] = }; - +#ifdef DEV_BRANCH +#ifdef USE_NE1000 device_t ne1000_device = { "Novell NE1000", - 0, + DEVICE_ISA, NE2K_NE1000, nic_init, nic_close, NULL, NULL, NULL, NULL, NULL, ne1000_config }; +#endif +#endif device_t ne2000_device = { "Novell NE2000", - DEVICE_AT, + DEVICE_ISA | DEVICE_AT, NE2K_NE2000, nic_init, nic_close, NULL, NULL, NULL, NULL, NULL, diff --git a/src/network/network.c b/src/network/network.c index c213529e9..87f7a7f38 100644 --- a/src/network/network.c +++ b/src/network/network.c @@ -31,11 +31,15 @@ static netcard_t net_cards[] = { { "None", "none", NULL, NULL, NULL }, - { "Novell NE1000", "ne1k", &ne1000_device, +#ifdef DEV_BRANCH +#ifdef USE_NE1000 + { "[ISA] Novell NE1000", "ne1k", &ne1000_device, NULL, NULL }, - { "Novell NE2000", "ne2k", &ne2000_device, +#endif +#endif + { "[ISA] Novell NE2000", "ne2k", &ne2000_device, NULL, NULL }, - { "Realtek RTL8029AS", "ne2kpci", &rtl8029as_device, + { "[PCI] Realtek RTL8029AS","ne2kpci", &rtl8029as_device, NULL, NULL }, { "", "", NULL, NULL, NULL } diff --git a/src/scsi/scsi.c b/src/scsi/scsi.c index 413313f54..b3b4d7e59 100644 --- a/src/scsi/scsi.c +++ b/src/scsi/scsi.c @@ -8,7 +8,7 @@ * * Handling of the SCSI controllers. * - * Version: @(#)scsi.c 1.0.8 2017/10/07 + * Version: @(#)scsi.c 1.0.9 2017/10/10 * * Authors: TheCollector1995, * Miran Grca, @@ -30,11 +30,7 @@ #include "scsi.h" #include "scsi_aha154x.h" #include "scsi_buslogic.h" -#ifdef DEV_BRANCH -#ifdef USE_NCR #include "scsi_ncr5380.h" -#endif -#endif scsi_device_t SCSIDevices[SCSI_ID_MAX][SCSI_LUN_MAX]; @@ -60,19 +56,15 @@ typedef struct { static SCSI_CARD scsi_cards[] = { { "None", "none", NULL, NULL }, - { "Adaptec AHA-1540B", "aha1540b", &aha1540b_device, aha_device_reset }, - { "Adaptec AHA-1542C", "aha1542c", &aha1542c_device, aha_device_reset }, - { "Adaptec AHA-1542CF", "aha1542cf", &aha1542cf_device, aha_device_reset }, - { "Adaptec AHA-1640", "aha1640", &aha1640_device, aha_device_reset }, - { "BusLogic BT-545C", "bt545c", &buslogic_device, BuslogicDeviceReset }, - { "BusLogic BT-958D PCI", "bt958d", &buslogic_pci_device, BuslogicDeviceReset }, -#ifdef DEV_BRANCH -#ifdef USE_NCR - { "Longshine LCS-6821N", "lcs6821n", &scsi_lcs6821n_device,NULL }, - { "Ranco RT1000B", "rt1000b", &scsi_rt1000b_device, NULL }, - { "Trantor T130B", "t130b", &scsi_t130b_device, NULL }, -#endif -#endif + { "[ISA] Adaptec AHA-1540B","aha1540b", &aha1540b_device, aha_device_reset }, + { "[ISA] Adaptec AHA-1542C","aha1542c", &aha1542c_device, aha_device_reset }, + { "[ISA] Adaptec AHA-1542CF","aha1542cf", &aha1542cf_device, aha_device_reset }, + { "[ISA] Longshine LCS-6821N","lcs6821n", &scsi_lcs6821n_device,NULL }, + { "[ISA] Ranco RT1000B", "rt1000b", &scsi_rt1000b_device, NULL }, + { "[ISA] Trantor T130B", "t130b", &scsi_t130b_device, NULL }, + { "[MCA] Adaptec AHA-1640", "aha1640", &aha1640_device, aha_device_reset }, + { "[PCI] BusLogic BT-545C", "bt545c", &buslogic_device, BuslogicDeviceReset }, + { "[PCI] BusLogic BT-958D", "bt958d", &buslogic_pci_device, BuslogicDeviceReset }, { "", "", NULL, NULL }, }; diff --git a/src/scsi/scsi_aha154x.c b/src/scsi/scsi_aha154x.c index d9356eabc..9b2b669cb 100644 --- a/src/scsi/scsi_aha154x.c +++ b/src/scsi/scsi_aha154x.c @@ -2294,7 +2294,7 @@ static device_config_t aha_154x_config[] = { device_t aha1540b_device = { "Adaptec AHA-1540B", - 0, + DEVICE_ISA | DEVICE_AT, AHA_154xB, aha_init, aha_close, @@ -2308,7 +2308,7 @@ device_t aha1540b_device = { device_t aha1542c_device = { "Adaptec AHA-1542C", - 0, + DEVICE_ISA | DEVICE_AT, AHA_154xC, aha_init, aha_close, @@ -2322,7 +2322,7 @@ device_t aha1542c_device = { device_t aha1542cf_device = { "Adaptec AHA-1542CF", - 0, + DEVICE_ISA | DEVICE_AT, AHA_154xCF, aha_init, aha_close, diff --git a/src/scsi/scsi_buslogic.c b/src/scsi/scsi_buslogic.c index 828f2a82e..5506bf1b5 100644 --- a/src/scsi/scsi_buslogic.c +++ b/src/scsi/scsi_buslogic.c @@ -3157,7 +3157,7 @@ static device_config_t BT958D_Config[] = { device_t buslogic_device = { "Buslogic BT-545C ISA", - 0, + DEVICE_ISA | DEVICE_AT, CHIP_BUSLOGIC_ISA, Buslogic_Init, BuslogicClose, diff --git a/src/scsi/scsi_ncr5380.c b/src/scsi/scsi_ncr5380.c index f57f53806..d0c897677 100644 --- a/src/scsi/scsi_ncr5380.c +++ b/src/scsi/scsi_ncr5380.c @@ -837,7 +837,7 @@ t130b_available(void) device_t scsi_lcs6821n_device = { "Longshine LCS-6821N (SCSI)", - 0, + DEVICE_ISA, 0, ncr_init, ncr_close, NULL, lcs6821n_available, @@ -848,7 +848,7 @@ device_t scsi_lcs6821n_device = device_t scsi_rt1000b_device = { "Ranco RT1000B (SCSI)", - 0, + DEVICE_ISA, 1, ncr_init, ncr_close, NULL, rt1000b_available, @@ -859,7 +859,7 @@ device_t scsi_rt1000b_device = device_t scsi_t130b_device = { "Trantor T130B (SCSI)", - 0, + DEVICE_ISA, 2, ncr_init, ncr_close, NULL, t130b_available, diff --git a/src/sound/snd_adlib.c b/src/sound/snd_adlib.c index c02d8c1b6..964d6e475 100644 --- a/src/sound/snd_adlib.c +++ b/src/sound/snd_adlib.c @@ -97,7 +97,7 @@ void adlib_close(void *p) device_t adlib_device = { "AdLib", - 0, + DEVICE_ISA, 0, adlib_init, adlib_close, NULL, NULL, NULL, NULL, NULL, diff --git a/src/sound/snd_adlibgold.c b/src/sound/snd_adlibgold.c index aa13ef792..3c8a76c19 100644 --- a/src/sound/snd_adlibgold.c +++ b/src/sound/snd_adlibgold.c @@ -840,7 +840,7 @@ static device_config_t adgold_config[] = device_t adgold_device = { "AdLib Gold", - 0, 0, + DEVICE_ISA, 0, adgold_init, adgold_close, NULL, diff --git a/src/sound/snd_pas16.c b/src/sound/snd_pas16.c index 3d44435a8..bb7ab98cc 100644 --- a/src/sound/snd_pas16.c +++ b/src/sound/snd_pas16.c @@ -746,7 +746,7 @@ static void pas16_close(void *p) device_t pas16_device = { "Pro Audio Spectrum 16", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, pas16_init, pas16_close, NULL, NULL, NULL, NULL, NULL, diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index 7f46828b1..9fdd87be9 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -1211,7 +1211,7 @@ static device_config_t sb_awe32_config[] = device_t sb_1_device = { "Sound Blaster v1.0", - 0, + DEVICE_ISA, 0, sb_1_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1222,7 +1222,7 @@ device_t sb_1_device = device_t sb_15_device = { "Sound Blaster v1.5", - 0, + DEVICE_ISA, 0, sb_15_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1244,7 +1244,7 @@ device_t sb_mcv_device = device_t sb_2_device = { "Sound Blaster v2.0", - 0, + DEVICE_ISA, 0, sb_2_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1255,7 +1255,7 @@ device_t sb_2_device = device_t sb_pro_v1_device = { "Sound Blaster Pro v1", - 0, + DEVICE_ISA, 0, sb_pro_v1_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1266,7 +1266,7 @@ device_t sb_pro_v1_device = device_t sb_pro_v2_device = { "Sound Blaster Pro v2", - 0, + DEVICE_ISA, 0, sb_pro_v2_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1288,7 +1288,7 @@ device_t sb_pro_mcv_device = device_t sb_16_device = { "Sound Blaster 16", - 0, + DEVICE_ISA, 0, sb_16_init, sb_close, NULL, NULL, sb_speed_changed, @@ -1299,7 +1299,7 @@ device_t sb_16_device = device_t sb_awe32_device = { "Sound Blaster AWE32", - 0, + DEVICE_ISA, 0, sb_awe32_init, sb_close, NULL, sb_awe32_available, diff --git a/src/sound/snd_wss.c b/src/sound/snd_wss.c index a063fa790..7c47f38e4 100644 --- a/src/sound/snd_wss.c +++ b/src/sound/snd_wss.c @@ -115,7 +115,7 @@ void wss_speed_changed(void *p) device_t wss_device = { "Windows Sound System", - 0, 0, + DEVICE_ISA, 0, wss_init, wss_close, NULL, NULL, wss_speed_changed, diff --git a/src/sound/sound.c b/src/sound/sound.c index 0333cf3aa..83a1f18d8 100644 --- a/src/sound/sound.c +++ b/src/sound/sound.c @@ -54,25 +54,25 @@ typedef struct static SOUND_CARD sound_cards[] = { - { "None", "none", NULL }, - { "Adlib", "adlib", &adlib_device }, - { "Adlib MCA", "adlib_mca", &adlib_mca_device }, - { "Sound Blaster 1.0", "sb", &sb_1_device }, - { "Sound Blaster 1.5", "sb1.5", &sb_15_device }, - { "Sound Blaster MCV", "sbmcv", &sb_mcv_device }, - { "Sound Blaster 2.0", "sb2.0", &sb_2_device }, - { "Sound Blaster Pro v1", "sbprov1", &sb_pro_v1_device }, - { "Sound Blaster Pro v2", "sbprov2", &sb_pro_v2_device }, - { "Sound Blaster Pro MCV", "sbpromcv", &sb_pro_mcv_device }, - { "Sound Blaster 16", "sb16", &sb_16_device }, - { "Sound Blaster AWE32", "sbawe32", &sb_awe32_device }, - { "Adlib Gold", "adlibgold", &adgold_device }, - { "Windows Sound System", "wss", &wss_device }, + { "None", "none", NULL }, + { "[ISA] Adlib", "adlib", &adlib_device }, + { "[ISA] Adlib Gold", "adlibgold",&adgold_device }, + { "[ISA] Sound Blaster 1.0", "sb", &sb_1_device }, + { "[ISA] Sound Blaster 1.5", "sb1.5", &sb_15_device }, + { "[ISA] Sound Blaster 2.0", "sb2.0", &sb_2_device }, + { "[ISA] Sound Blaster Pro v1", "sbprov1", &sb_pro_v1_device }, + { "[ISA] Sound Blaster Pro v2", "sbprov2", &sb_pro_v2_device }, + { "[ISA] Sound Blaster 16", "sb16", &sb_16_device }, + { "[ISA] Sound Blaster AWE32", "sbawe32", &sb_awe32_device }, #ifdef DEV_BRANCH #ifdef USE_PAS16 - { "Pro Audio Spectrum 16", "pas16", &pas16_device }, + { "[ISA] Pro Audio Spectrum 16","pas16", &pas16_device }, #endif #endif + { "[ISA] Windows Sound System", "wss", &wss_device }, + { "[MCA] Adlib", "adlib_mca", &adlib_mca_device }, + { "[MCA] Sound Blaster MCV","sbmcv", &sb_mcv_device }, + { "[MCA] Sound Blaster Pro MCV","sbpromcv", &sb_pro_mcv_device }, { "", "", NULL } }; diff --git a/src/video/vid_ati18800.c b/src/video/vid_ati18800.c index b734cc4ca..cb69788cb 100644 --- a/src/video/vid_ati18800.c +++ b/src/video/vid_ati18800.c @@ -223,7 +223,7 @@ void ati18800_add_status_info(char *s, int max_len, void *p) device_t ati18800_device = { "ATI-18800", - 0, 0, + DEVICE_ISA, 0, ati18800_init, ati18800_close, NULL, diff --git a/src/video/vid_ati28800.c b/src/video/vid_ati28800.c index 3428f0d25..a1a015ae4 100644 --- a/src/video/vid_ati28800.c +++ b/src/video/vid_ati28800.c @@ -489,7 +489,7 @@ static device_config_t ati28800_wonderxl_config[] = device_t ati28800_device = { "ATI-28800", - 0, + DEVICE_ISA, 0, ati28800_init, ati28800_close, @@ -504,7 +504,7 @@ device_t ati28800_device = device_t compaq_ati28800_device = { "Compaq ATI-28800", - 0, + DEVICE_ISA, 0, ati28800_init, ati28800_close, @@ -519,7 +519,7 @@ device_t compaq_ati28800_device = device_t ati28800_wonderxl24_device = { "ATI-28800 (VGA Wonder XL24)", - 0, + DEVICE_ISA, 0, ati28800_init, ati28800_close, diff --git a/src/video/vid_ati_mach64.c b/src/video/vid_ati_mach64.c index 506812d8a..00fbc96a6 100644 --- a/src/video/vid_ati_mach64.c +++ b/src/video/vid_ati_mach64.c @@ -85,7 +85,7 @@ typedef struct mach64_t uint8_t regs[256]; int index; - + int type; uint8_t pci_regs[256]; @@ -3294,7 +3294,7 @@ void mach64_pci_write(int func, int addr, uint8_t val, void *p) } } -static void *mach64_common_init(void) +static void *mach64_common_init(device_t *info) { mach64_t *mach64 = malloc(sizeof(mach64_t)); memset(mach64, 0, sizeof(mach64_t)); @@ -3308,7 +3308,7 @@ static void *mach64_common_init(void) mach64_hwcursor_draw, mach64_overlay_draw); - if (PCI) + if (info->flags & DEVICE_PCI) mem_mapping_disable(&mach64->bios_rom.mapping); mem_mapping_add(&mach64->linear_mapping, 0, 0, svga_read_linear, svga_readw_linear, svga_readl_linear, svga_write_linear, svga_writew_linear, svga_writel_linear, NULL, 0, &mach64->svga); @@ -3319,12 +3319,15 @@ static void *mach64_common_init(void) mach64_io_set(mach64); - mach64->card = pci_add_card(PCI_ADD_VIDEO, mach64_pci_read, mach64_pci_write, mach64); + if (info->flags & DEVICE_PCI) + { + mach64->card = pci_add_card(PCI_ADD_VIDEO, mach64_pci_read, mach64_pci_write, mach64); - mach64->pci_regs[PCI_REG_COMMAND] = 3; - mach64->pci_regs[0x30] = 0x00; - mach64->pci_regs[0x32] = 0x0c; - mach64->pci_regs[0x33] = 0x00; + mach64->pci_regs[PCI_REG_COMMAND] = 3; + mach64->pci_regs[0x30] = 0x00; + mach64->pci_regs[0x32] = 0x0c; + mach64->pci_regs[0x33] = 0x00; + } ati68860_ramdac_init(&mach64->ramdac); @@ -3339,14 +3342,14 @@ static void *mach64_common_init(void) static void *mach64gx_init(device_t *info) { - mach64_t *mach64 = mach64_common_init(); + mach64_t *mach64 = mach64_common_init(info); mach64->type = MACH64_GX; mach64->pci_id = (int)'X' | ((int)'G' << 8); mach64->config_chip_id = 0x020000d7; mach64->dac_cntl = 5 << 16; /*ATI 68860 RAMDAC*/ mach64->config_stat0 = (5 << 9) | (3 << 3); /*ATI-68860, 256Kx16 DRAM*/ - if (PCI) + if (info->flags & DEVICE_PCI) mach64->config_stat0 |= 0; /*PCI, 256Kx16 DRAM*/ else mach64->config_stat0 |= 1; /*VLB, 256Kx16 DRAM*/ @@ -3359,7 +3362,7 @@ static void *mach64gx_init(device_t *info) } static void *mach64vt2_init(device_t *info) { - mach64_t *mach64 = mach64_common_init(); + mach64_t *mach64 = mach64_common_init(info); svga_t *svga = &mach64->svga; mach64->type = MACH64_VT2; @@ -3507,10 +3510,10 @@ static device_config_t mach64vt2_config[] = } }; -device_t mach64gx_device = +device_t mach64gx_vlb_device = { - "ATI Mach64GX", - 0, + "ATI Mach64GX VLB", + DEVICE_VLB, 0, mach64gx_init, mach64_close, @@ -3521,6 +3524,22 @@ device_t mach64gx_device = mach64_add_status_info, mach64gx_config }; + +device_t mach64gx_pci_device = +{ + "ATI Mach64GX PCI", + DEVICE_PCI, + 0, + mach64gx_init, + mach64_close, + NULL, + mach64gx_available, + mach64_speed_changed, + mach64_force_redraw, + mach64_add_status_info, + mach64gx_config +}; + device_t mach64vt2_device = { "ATI Mach64VT2", diff --git a/src/video/vid_ati_mach64.h b/src/video/vid_ati_mach64.h index c159a6b57..755619050 100644 --- a/src/video/vid_ati_mach64.h +++ b/src/video/vid_ati_mach64.h @@ -16,5 +16,6 @@ * Copyright 2016-2017 Miran Grca. */ -extern device_t mach64gx_device; +extern device_t mach64gx_vlb_device; +extern device_t mach64gx_pci_device; extern device_t mach64vt2_device; diff --git a/src/video/vid_cga.c b/src/video/vid_cga.c index 34d7b721f..54825fb77 100644 --- a/src/video/vid_cga.c +++ b/src/video/vid_cga.c @@ -578,7 +578,7 @@ static device_config_t cga_config[] = device_t cga_device = { "CGA", - 0, 0, + DEVICE_ISA, 0, cga_standalone_init, cga_close, NULL, diff --git a/src/video/vid_cl_gd.c b/src/video/vid_cl_gd.c index 838d57875..61339f2b3 100644 --- a/src/video/vid_cl_gd.c +++ b/src/video/vid_cl_gd.c @@ -1006,7 +1006,7 @@ void clgd_add_status_info(char *s, int max_len, void *p) device_t gd5422_device = { "Cirrus Logic GD5422", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5422_init, clgd_close, @@ -1021,7 +1021,7 @@ device_t gd5422_device = device_t gd5429_device = { "Cirrus Logic GD5429", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5429_init, clgd_close, @@ -1036,7 +1036,7 @@ device_t gd5429_device = device_t gd5430_device = { "Cirrus Logic GD5430", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5430_init, clgd_close, @@ -1051,7 +1051,7 @@ device_t gd5430_device = device_t dia5430_device = { "Diamond CL-GD5430", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, dia5430_init, clgd_close, @@ -1066,7 +1066,7 @@ device_t dia5430_device = device_t gd5434_device = { "Cirrus Logic GD5434", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5434_init, clgd_close, @@ -1081,7 +1081,7 @@ device_t gd5434_device = device_t gd5436_device = { "Cirrus Logic GD5436", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5436_init, clgd_close, @@ -1096,7 +1096,7 @@ device_t gd5436_device = device_t gd5440_device = { "Cirrus Logic GD5440", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5440_init, clgd_close, @@ -1111,7 +1111,7 @@ device_t gd5440_device = device_t gd5446_device = { "Cirrus Logic GD5446", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd5446_init, clgd_close, @@ -1126,7 +1126,7 @@ device_t gd5446_device = device_t gd6235_device = { "Cirrus Logic GD6235", - DEVICE_NOT_WORKING, + DEVICE_ISA | DEVICE_NOT_WORKING, 0, gd6235_init, clgd_close, diff --git a/src/video/vid_colorplus.c b/src/video/vid_colorplus.c index efa4d9975..d5faea076 100644 --- a/src/video/vid_colorplus.c +++ b/src/video/vid_colorplus.c @@ -445,7 +445,7 @@ static device_config_t colorplus_config[] = device_t colorplus_device = { "Colorplus", - 0, 0, + DEVICE_ISA, 0, colorplus_standalone_init, colorplus_close, NULL, NULL, diff --git a/src/video/vid_ega.c b/src/video/vid_ega.c index 440843e7c..0ce61656b 100644 --- a/src/video/vid_ega.c +++ b/src/video/vid_ega.c @@ -1325,7 +1325,7 @@ static device_config_t ega_config[] = device_t ega_device = { "EGA", - 0, + DEVICE_ISA, 0, ega_standalone_init, ega_close, @@ -1340,7 +1340,7 @@ device_t ega_device = device_t cpqega_device = { "Compaq EGA", - 0, + DEVICE_ISA, 0, cpqega_standalone_init, ega_close, @@ -1355,7 +1355,7 @@ device_t cpqega_device = device_t sega_device = { "SuperEGA", - 0, + DEVICE_ISA, 0, sega_standalone_init, ega_close, @@ -1371,7 +1371,7 @@ device_t sega_device = device_t jega_device = { "AX JEGA", - 0, + DEVICE_ISA, 0, jega_standalone_init, ega_close, diff --git a/src/video/vid_et4000.c b/src/video/vid_et4000.c index 12aeb8f27..6fc099cb4 100644 --- a/src/video/vid_et4000.c +++ b/src/video/vid_et4000.c @@ -199,7 +199,7 @@ void et4000_add_status_info(char *s, int max_len, void *p) device_t et4000_device = { "Tseng Labs ET4000AX", - 0, + DEVICE_ISA, 0, et4000_init, et4000_close, diff --git a/src/video/vid_et4000w32.c b/src/video/vid_et4000w32.c index e5942c614..21b5fb933 100644 --- a/src/video/vid_et4000w32.c +++ b/src/video/vid_et4000w32.c @@ -57,6 +57,7 @@ typedef struct et4000w32p_t icd2061_t icd2061; int index; + int pci; uint8_t regs[256]; uint32_t linearbase, linearbase_old; @@ -177,7 +178,7 @@ void et4000w32p_out(uint16_t addr, uint8_t val, void *p) } if (svga->crtcreg == 0x30) { - if (PCI) + if (et4000->pci) { et4000->linearbase &= 0xc0000000; et4000->linearbase = (val & 0xfc) << 22; @@ -248,8 +249,8 @@ uint8_t et4000w32p_in(uint16_t addr, void *p) return (et4000->regs[0xec] & 0xf) | 0x60; /*ET4000/W32p rev D*/ if (et4000->index == 0xef) { - if (PCI) return et4000->regs[0xef] | 0xe0; /*PCI*/ - else return et4000->regs[0xef] | 0x60; /*VESA local bus*/ + if (et4000->pci) return et4000->regs[0xef] | 0xe0; /*PCI*/ + else return et4000->regs[0xef] | 0x60; /*VESA local bus*/ } return et4000->regs[et4000->index]; } @@ -1157,7 +1158,8 @@ void *et4000w32p_init(device_t *info) NULL); rom_init(&et4000->bios_rom, L"roms/video/et4000w32/et4000w32.bin", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); - if (PCI) + et4000->pci = !!(info->flags & DEVICE_PCI); + if (info->flags & DEVICE_PCI) mem_mapping_disable(&et4000->bios_rom.mapping); mem_mapping_add(&et4000->linear_mapping, 0, 0, svga_read_linear, svga_readw_linear, svga_readl_linear, svga_write_linear, svga_writew_linear, svga_writel_linear, NULL, 0, &et4000->svga); @@ -1165,7 +1167,8 @@ void *et4000w32p_init(device_t *info) et4000w32p_io_set(et4000); - pci_add_card(PCI_ADD_VIDEO, et4000w32p_pci_read, et4000w32p_pci_write, et4000); + if (info->flags & DEVICE_PCI) + pci_add_card(PCI_ADD_VIDEO, et4000w32p_pci_read, et4000w32p_pci_write, et4000); /* Hardwired bits: 00000000 1xx0x0xx */ /* R/W bits: xx xxxx */ @@ -1258,10 +1261,25 @@ static device_config_t et4000w32p_config[] = } }; -device_t et4000w32p_device = +device_t et4000w32p_vlb_device = { - "Tseng Labs ET4000/w32p", - 0, + "Tseng Labs ET4000/w32p VLB", + DEVICE_VLB, + 0, + et4000w32p_init, + et4000w32p_close, + NULL, + et4000w32p_available, + et4000w32p_speed_changed, + et4000w32p_force_redraw, + et4000w32p_add_status_info, + et4000w32p_config +}; + +device_t et4000w32p_pci_device = +{ + "Tseng Labs ET4000/w32p PCI", + DEVICE_PCI, 0, et4000w32p_init, et4000w32p_close, diff --git a/src/video/vid_et4000w32.h b/src/video/vid_et4000w32.h index 32a344259..4f62b98cb 100644 --- a/src/video/vid_et4000w32.h +++ b/src/video/vid_et4000w32.h @@ -1 +1,2 @@ -extern device_t et4000w32p_device; +extern device_t et4000w32p_vlb_device; +extern device_t et4000w32p_pci_device; diff --git a/src/video/vid_genius.c b/src/video/vid_genius.c index fb88bb382..523b4a906 100644 --- a/src/video/vid_genius.c +++ b/src/video/vid_genius.c @@ -624,7 +624,7 @@ void genius_speed_changed(void *p) device_t genius_device = { "Genius VHR", - 0, 0, + DEVICE_ISA, 0, genius_init, genius_close, NULL, diff --git a/src/video/vid_hercules.c b/src/video/vid_hercules.c index 99a3a9aa5..23f5c7134 100644 --- a/src/video/vid_hercules.c +++ b/src/video/vid_hercules.c @@ -410,7 +410,7 @@ static device_config_t hercules_config[] = device_t hercules_device = { "Hercules", - 0, 0, + DEVICE_ISA, 0, hercules_init, hercules_close, NULL, diff --git a/src/video/vid_herculesplus.c b/src/video/vid_herculesplus.c index 3bd261cf7..fda0e1568 100644 --- a/src/video/vid_herculesplus.c +++ b/src/video/vid_herculesplus.c @@ -715,7 +715,7 @@ void herculesplus_speed_changed(void *p) device_t herculesplus_device = { "Hercules Plus", - 0, 0, + DEVICE_ISA, 0, herculesplus_init, herculesplus_close, NULL, diff --git a/src/video/vid_incolor.c b/src/video/vid_incolor.c index 85a37dd52..7b32e2020 100644 --- a/src/video/vid_incolor.c +++ b/src/video/vid_incolor.c @@ -1062,7 +1062,7 @@ void incolor_speed_changed(void *p) device_t incolor_device = { "Hercules InColor", - 0, 0, + DEVICE_ISA, 0, incolor_init, incolor_close, NULL, diff --git a/src/video/vid_mda.c b/src/video/vid_mda.c index cdc8e1f0c..d3eec8553 100644 --- a/src/video/vid_mda.c +++ b/src/video/vid_mda.c @@ -359,7 +359,7 @@ static device_config_t mda_config[] = device_t mda_device = { "MDA", - 0, 0, + DEVICE_ISA, 0, mda_init, mda_close, NULL, diff --git a/src/video/vid_nv_riva128.c b/src/video/vid_nv_riva128.c index bc7b4a486..b79a50807 100644 --- a/src/video/vid_nv_riva128.c +++ b/src/video/vid_nv_riva128.c @@ -3065,7 +3065,7 @@ device_config_t riva128zx_config[] = device_t riva128_device = { "nVidia RIVA 128", - 0, + DEVICE_PCI, 0, riva128_init, riva128_close, @@ -3259,7 +3259,7 @@ device_config_t rivatnt_config[] = device_t rivatnt_device = { "nVidia RIVA TNT", - 0, + DEVICE_PCI, 0, rivatnt_init, rivatnt_close, @@ -3482,7 +3482,7 @@ device_config_t rivatnt2_config[] = device_t rivatnt2_device = { "nVidia RIVA TNT2", - 0, + DEVICE_PCI, 0, rivatnt2_init, rivatnt2_close, diff --git a/src/video/vid_oti067.c b/src/video/vid_oti067.c index f4d16c40b..a6b45f743 100644 --- a/src/video/vid_oti067.c +++ b/src/video/vid_oti067.c @@ -287,7 +287,7 @@ static device_config_t oti077_config[] = device_t oti067_device = { "Oak OTI-067", - 0, + DEVICE_ISA, 0, oti067_init, oti067_close, @@ -301,7 +301,7 @@ device_t oti067_device = device_t oti077_device = { "Oak OTI-077", - 0, + DEVICE_ISA, 0, oti077_init, oti067_close, diff --git a/src/video/vid_paradise.c b/src/video/vid_paradise.c index 62fa14d47..649d31735 100644 --- a/src/video/vid_paradise.c +++ b/src/video/vid_paradise.c @@ -433,7 +433,7 @@ device_t paradise_wd90c11_megapc_device = device_t paradise_wd90c11_device = { "Paradise WD90C11", - 0, + DEVICE_ISA, 0, paradise_wd90c11_megapc_init, paradise_close, diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index a726b901c..0d381c22d 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -2143,7 +2143,7 @@ static int vram_sizes[] = 3 /*8 MB*/ }; -static void *s3_init(wchar_t *bios_fn, int chip) +static void *s3_init(device_t *info, wchar_t *bios_fn, int chip) { s3_t *s3 = malloc(sizeof(s3_t)); svga_t *svga = &s3->svga; @@ -2160,7 +2160,7 @@ static void *s3_init(wchar_t *bios_fn, int chip) s3->vram_mask = vram_size - 1; rom_init(&s3->bios_rom, bios_fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); - if (PCI) + if (info->flags & DEVICE_PCI) mem_mapping_disable(&s3->bios_rom.mapping); mem_mapping_add(&s3->linear_mapping, 0, 0, svga_read_linear, svga_readw_linear, svga_readl_linear, svga_write_linear, svga_writew_linear, svga_writel_linear, NULL, MEM_MAPPING_EXTERNAL, &s3->svga); @@ -2173,7 +2173,7 @@ static void *s3_init(wchar_t *bios_fn, int chip) s3_hwcursor_draw, NULL); - if (PCI) + if (info->flags & DEVICE_PCI) svga->crtc[0x36] = 2 | (3 << 2) | (1 << 4) | (vram_sizes[vram] << 5); else svga->crtc[0x36] = 1 | (3 << 2) | (1 << 4) | (vram_sizes[vram] << 5); @@ -2183,13 +2183,16 @@ static void *s3_init(wchar_t *bios_fn, int chip) s3_io_set(s3); - s3->card = pci_add_card(PCI_ADD_VIDEO, s3_pci_read, s3_pci_write, s3); + if (info->flags & DEVICE_PCI) + { + s3->card = pci_add_card(PCI_ADD_VIDEO, s3_pci_read, s3_pci_write, s3); - s3->pci_regs[0x04] = 7; + s3->pci_regs[0x04] = 7; - s3->pci_regs[0x30] = 0x00; - s3->pci_regs[0x32] = 0x0c; - s3->pci_regs[0x33] = 0x00; + s3->pci_regs[0x30] = 0x00; + s3->pci_regs[0x32] = 0x0c; + s3->pci_regs[0x33] = 0x00; + } s3->chip = chip; @@ -2202,9 +2205,9 @@ static void *s3_init(wchar_t *bios_fn, int chip) return s3; } -void *s3_vision864_init(wchar_t *bios_fn) +void *s3_vision864_init(device_t *info, wchar_t *bios_fn) { - s3_t *s3 = s3_init(bios_fn, S3_VISION864); + s3_t *s3 = s3_init(info, bios_fn, S3_VISION864); s3->id = 0xc1; /*Vision864P*/ s3->id_ext = s3->id_ext_pci = 0xc1; @@ -2219,13 +2222,13 @@ void *s3_vision864_init(wchar_t *bios_fn) static void *s3_bahamas64_init(device_t *info) { - s3_t *s3 = s3_vision864_init(L"roms/video/s3/bahamas64.BIN"); + s3_t *s3 = s3_vision864_init(info, L"roms/video/s3/bahamas64.BIN"); return s3; } static void *s3_phoenix_vision864_init(device_t *info) { - s3_t *s3 = s3_vision864_init(L"roms/video/s3/86c864p.bin"); + s3_t *s3 = s3_vision864_init(info, L"roms/video/s3/86c864p.bin"); return s3; } @@ -2241,7 +2244,7 @@ static int s3_phoenix_vision864_available(void) static void *s3_phoenix_trio32_init(device_t *info) { - s3_t *s3 = s3_init(L"roms/video/s3/86C732P.bin", S3_TRIO32); + s3_t *s3 = s3_init(info, L"roms/video/s3/86C732P.bin", S3_TRIO32); s3->id = 0xe1; /*Trio32*/ s3->id_ext = 0x10; @@ -2259,9 +2262,9 @@ static int s3_phoenix_trio32_available(void) return rom_present(L"roms/video/s3/86C732P.bin"); } -static void *s3_trio64_init(wchar_t *bios_fn) +static void *s3_trio64_init(device_t *info, wchar_t *bios_fn) { - s3_t *s3 = s3_init(bios_fn, S3_TRIO64); + s3_t *s3 = s3_init(info, bios_fn, S3_TRIO64); s3->id = 0xe1; /*Trio64*/ s3->id_ext = s3->id_ext_pci = 0x11; @@ -2275,19 +2278,19 @@ static void *s3_trio64_init(wchar_t *bios_fn) static void *s3_9fx_init(device_t *info) { - s3_t *s3 = s3_trio64_init(L"roms/video/s3/s3_764.bin"); + s3_t *s3 = s3_trio64_init(info, L"roms/video/s3/s3_764.bin"); return s3; } static void *s3_phoenix_trio64_init(device_t *info) { - s3_t *s3 = s3_trio64_init(L"roms/video/s3/86C764X1.bin"); + s3_t *s3 = s3_trio64_init(info, L"roms/video/s3/86C764X1.bin"); return s3; } static void *s3_diamond_stealth64_init(device_t *info) { - s3_t *s3 = s3_trio64_init(L"roms/video/s3/STEALT64.BIN"); + s3_t *s3 = s3_trio64_init(info, L"roms/video/s3/STEALT64.BIN"); return s3; } @@ -2463,10 +2466,10 @@ static device_config_t s3_phoenix_trio64_config[] = } }; -device_t s3_bahamas64_device = +device_t s3_bahamas64_vlb_device = { - "Paradise Bahamas 64 (S3 Vision864)", - 0, + "Paradise Bahamas 64 (S3 Vision864) VLB", + DEVICE_VLB, 0, s3_bahamas64_init, s3_close, @@ -2478,10 +2481,25 @@ device_t s3_bahamas64_device = s3_bahamas64_config }; -device_t s3_9fx_device = +device_t s3_bahamas64_pci_device = { - "Number 9 9FX (S3 Trio64)", - 0, + "Paradise Bahamas 64 (S3 Vision864) PCI", + DEVICE_PCI, + 0, + s3_bahamas64_init, + s3_close, + NULL, + s3_bahamas64_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_bahamas64_config +}; + +device_t s3_9fx_vlb_device = +{ + "Number 9 9FX (S3 Trio64) VLB", + DEVICE_VLB, 0, s3_9fx_init, s3_close, @@ -2493,10 +2511,25 @@ device_t s3_9fx_device = s3_9fx_config }; -device_t s3_phoenix_trio32_device = +device_t s3_9fx_pci_device = { - "Phoenix S3 Trio32", - 0, + "Number 9 9FX (S3 Trio64) PCI", + DEVICE_PCI, + 0, + s3_9fx_init, + s3_close, + NULL, + s3_9fx_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_9fx_config +}; + +device_t s3_phoenix_trio32_vlb_device = +{ + "Phoenix S3 Trio32 VLB", + DEVICE_VLB, 0, s3_phoenix_trio32_init, s3_close, @@ -2508,10 +2541,25 @@ device_t s3_phoenix_trio32_device = s3_phoenix_trio32_config }; -device_t s3_phoenix_trio64_device = +device_t s3_phoenix_trio32_pci_device = { - "Phoenix S3 Trio64", - 0, + "Phoenix S3 Trio32 PCI", + DEVICE_PCI, + 0, + s3_phoenix_trio32_init, + s3_close, + NULL, + s3_phoenix_trio32_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_phoenix_trio32_config +}; + +device_t s3_phoenix_trio64_vlb_device = +{ + "Phoenix S3 Trio64 VLB", + DEVICE_VLB, 0, s3_phoenix_trio64_init, s3_close, @@ -2523,10 +2571,25 @@ device_t s3_phoenix_trio64_device = s3_phoenix_trio64_config }; -device_t s3_phoenix_vision864_device = +device_t s3_phoenix_trio64_pci_device = { - "Phoenix S3 Vision864", - 0, + "Phoenix S3 Trio64 PCI", + DEVICE_PCI, + 0, + s3_phoenix_trio64_init, + s3_close, + NULL, + s3_phoenix_trio64_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_phoenix_trio64_config +}; + +device_t s3_phoenix_vision864_vlb_device = +{ + "Phoenix S3 Vision864 VLB", + DEVICE_VLB, 0, s3_phoenix_vision864_init, s3_close, @@ -2538,10 +2601,40 @@ device_t s3_phoenix_vision864_device = s3_bahamas64_config }; -device_t s3_diamond_stealth64_device = +device_t s3_phoenix_vision864_pci_device = { - "S3 Trio64 (Diamond Stealth64 DRAM)", - 0, + "Phoenix S3 Vision864 PCI", + DEVICE_PCI, + 0, + s3_phoenix_vision864_init, + s3_close, + NULL, + s3_phoenix_vision864_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_bahamas64_config +}; + +device_t s3_diamond_stealth64_vlb_device = +{ + "S3 Trio64 (Diamond Stealth64 DRAM) VLB", + DEVICE_PCI, + 0, + s3_diamond_stealth64_init, + s3_close, + NULL, + s3_diamond_stealth64_available, + s3_speed_changed, + s3_force_redraw, + s3_add_status_info, + s3_phoenix_trio64_config +}; + +device_t s3_diamond_stealth64_pci_device = +{ + "S3 Trio64 (Diamond Stealth64 DRAM) PCI", + DEVICE_PCI, 0, s3_diamond_stealth64_init, s3_close, diff --git a/src/video/vid_s3.h b/src/video/vid_s3.h index 8ace7397d..096288ff4 100644 --- a/src/video/vid_s3.h +++ b/src/video/vid_s3.h @@ -17,10 +17,16 @@ * Copyright 2016-2017 Miran Grca. */ -device_t s3_bahamas64_device; -device_t s3_9fx_device; -device_t s3_phoenix_trio32_device; -device_t s3_phoenix_trio64_device; -device_t s3_phoenix_vision864_device; -device_t s3_diamond_stealth64_device; +device_t s3_bahamas64_vlb_device; +device_t s3_bahamas64_pci_device; +device_t s3_9fx_vlb_device; +device_t s3_9fx_pci_device; +device_t s3_phoenix_trio32_vlb_device; +device_t s3_phoenix_trio32_pci_device; +device_t s3_phoenix_trio64_vlb_device; +device_t s3_phoenix_trio64_pci_device; +device_t s3_phoenix_vision864_pci_device; +device_t s3_phoenix_vision864_vlb_device; +device_t s3_diamond_stealth64_pci_device; +device_t s3_diamond_stealth64_vlb_device; /* device_t s3_miro_vision964_device; */ diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index 3707f677b..e7f3d2e75 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -127,6 +127,7 @@ typedef struct virge_t uint8_t pci_regs[256]; int card; + int pci; int is_375; int bilinear_enabled; @@ -308,7 +309,7 @@ enum static void s3_virge_update_irqs(virge_t *virge) { - if (!PCI) + if (!virge->pci) { return; } @@ -442,7 +443,7 @@ static void s3_virge_out(uint16_t addr, uint8_t val, void *p) case 2: case 3: svga->bpp = 15; break; case 4: case 5: svga->bpp = 16; break; case 7: svga->bpp = 24; break; - case 13: svga->bpp = (gfxcard == GFX_VIRGEVX) ? 24 : 32; break; + case 13: svga->bpp = ((gfxcard == GFX_VIRGEVX_VLB) || (gfxcard == GFX_VIRGEVX_PCI)) ? 24 : 32; break; default: svga->bpp = 8; break; } break; @@ -557,7 +558,7 @@ static void s3_virge_recalctimings(svga_t *svga) } } - if (gfxcard != GFX_VIRGEVX) + if ((gfxcard != GFX_VIRGEVX_VLB) && (gfxcard != GFX_VIRGEVX_PCI)) { if ((svga->bpp == 15) || (svga->bpp == 16)) { @@ -621,7 +622,7 @@ static void s3_virge_recalctimings(svga_t *svga) if (((svga->miscout >> 2) & 3) == 3) { int n = svga->seqregs[0x12] & 0x1f; - int r = (svga->seqregs[0x12] >> 5) & ((virge->is_375 || (gfxcard == GFX_VIRGEVX)) ? 7 : 3); + int r = (svga->seqregs[0x12] >> 5) & ((virge->is_375 || ((gfxcard == GFX_VIRGEVX_VLB) || (gfxcard == GFX_VIRGEVX_PCI))) ? 7 : 3); int m = svga->seqregs[0x13] & 0x7f; double freq = (((double)m + 2) / (((double)n + 2) * (double)(1 << r))) * 14318184.0; @@ -3767,8 +3768,10 @@ static void *s3_virge_init(device_t *info) s3_virge_overlay_draw); virge->svga.vblank_start = s3_virge_vblank_start; + virge->pci = !!(info->flags & DEVICE_PCI); + rom_init(&virge->bios_rom, L"roms/video/s3virge/s3virge.bin", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); - if (PCI) + if (info->flags & DEVICE_PCI) mem_mapping_disable(&virge->bios_rom.mapping); mem_mapping_add(&virge->mmio_mapping, 0, 0, s3_virge_mmio_read, @@ -3801,14 +3804,17 @@ static void *s3_virge_init(device_t *info) io_sethandler(0x03c0, 0x0020, s3_virge_in, NULL, NULL, s3_virge_out, NULL, NULL, virge); - virge->pci_regs[4] = 3; - virge->pci_regs[5] = 0; - virge->pci_regs[6] = 0; - virge->pci_regs[7] = 2; - virge->pci_regs[0x32] = 0x0c; - virge->pci_regs[0x3d] = 1; - virge->pci_regs[0x3e] = 4; - virge->pci_regs[0x3f] = 0xff; + if (info->flags & DEVICE_PCI) + { + virge->pci_regs[4] = 3; + virge->pci_regs[5] = 0; + virge->pci_regs[6] = 0; + virge->pci_regs[7] = 2; + virge->pci_regs[0x32] = 0x0c; + virge->pci_regs[0x3d] = 1; + virge->pci_regs[0x3e] = 4; + virge->pci_regs[0x3f] = 0xff; + } virge->virge_id_high = 0x56; virge->virge_id_low = 0x31; @@ -3832,7 +3838,10 @@ static void *s3_virge_init(device_t *info) virge->is_375 = 0; - virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + if (info->flags & DEVICE_PCI) + { + virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + } virge->wake_render_thread = thread_create_event(); virge->wake_main_thread = thread_create_event(); @@ -3861,8 +3870,10 @@ static void *s3_virge_988_init(device_t *info) s3_virge_hwcursor_draw, s3_virge_overlay_draw); + virge->pci = !!(info->flags & DEVICE_PCI); + rom_init(&virge->bios_rom, L"roms/video/s3virge/diamondstealth3000.VBI", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); - if (PCI) + if (info->flags & DEVICE_PCI) mem_mapping_disable(&virge->bios_rom.mapping); mem_mapping_add(&virge->mmio_mapping, 0, 0, s3_virge_mmio_read, @@ -3895,14 +3906,17 @@ static void *s3_virge_988_init(device_t *info) io_sethandler(0x03c0, 0x0020, s3_virge_in, NULL, NULL, s3_virge_out, NULL, NULL, virge); - virge->pci_regs[4] = 3; - virge->pci_regs[5] = 0; - virge->pci_regs[6] = 0; - virge->pci_regs[7] = 2; - virge->pci_regs[0x32] = 0x0c; - virge->pci_regs[0x3d] = 1; - virge->pci_regs[0x3e] = 4; - virge->pci_regs[0x3f] = 0xff; + if (info->flags & DEVICE_PCI) + { + virge->pci_regs[4] = 3; + virge->pci_regs[5] = 0; + virge->pci_regs[6] = 0; + virge->pci_regs[7] = 2; + virge->pci_regs[0x32] = 0x0c; + virge->pci_regs[0x3d] = 1; + virge->pci_regs[0x3e] = 4; + virge->pci_regs[0x3f] = 0xff; + } virge->virge_id_high = 0x88; virge->virge_id_low = 0x3d; @@ -3926,7 +3940,10 @@ static void *s3_virge_988_init(device_t *info) virge->is_375 = 0; - virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + if (info->flags & DEVICE_PCI) + { + virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + } virge->wake_render_thread = thread_create_event(); virge->wake_main_thread = thread_create_event(); @@ -3940,7 +3957,7 @@ static void *s3_virge_988_init(device_t *info) return virge; } -static void *s3_virge_375_init(wchar_t *romfn) +static void *s3_virge_375_init(device_t *info, wchar_t *romfn) { virge_t *virge = malloc(sizeof(virge_t)); memset(virge, 0, sizeof(virge_t)); @@ -3955,8 +3972,10 @@ static void *s3_virge_375_init(wchar_t *romfn) s3_virge_hwcursor_draw, s3_virge_overlay_draw); + virge->pci = !!(info->flags & DEVICE_PCI); + rom_init(&virge->bios_rom, romfn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); - if (PCI) + if (info->flags & DEVICE_PCI) mem_mapping_disable(&virge->bios_rom.mapping); mem_mapping_add(&virge->mmio_mapping, 0, 0, s3_virge_mmio_read, @@ -3989,14 +4008,17 @@ static void *s3_virge_375_init(wchar_t *romfn) io_sethandler(0x03c0, 0x0020, s3_virge_in, NULL, NULL, s3_virge_out, NULL, NULL, virge); - virge->pci_regs[4] = 3; - virge->pci_regs[5] = 0; - virge->pci_regs[6] = 0; - virge->pci_regs[7] = 2; - virge->pci_regs[0x32] = 0x0c; - virge->pci_regs[0x3d] = 1; - virge->pci_regs[0x3e] = 4; - virge->pci_regs[0x3f] = 0xff; + if (info->flags & DEVICE_PCI) + { + virge->pci_regs[4] = 3; + virge->pci_regs[5] = 0; + virge->pci_regs[6] = 0; + virge->pci_regs[7] = 2; + virge->pci_regs[0x32] = 0x0c; + virge->pci_regs[0x3d] = 1; + virge->pci_regs[0x3e] = 4; + virge->pci_regs[0x3f] = 0xff; + } virge->virge_id_high = 0x8a; virge->virge_id_low = 0x01; @@ -4021,7 +4043,10 @@ static void *s3_virge_375_init(wchar_t *romfn) virge->is_375 = 1; - virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + if (info->flags & DEVICE_PCI) + { + virge->card = pci_add_card(PCI_ADD_VIDEO, s3_virge_pci_read, s3_virge_pci_write, virge); + } virge->wake_render_thread = thread_create_event(); virge->wake_main_thread = thread_create_event(); @@ -4037,12 +4062,12 @@ static void *s3_virge_375_init(wchar_t *romfn) static void *s3_virge_375_1_init(device_t *info) { - return s3_virge_375_init(L"roms/video/s3virge/86c375_1.bin"); + return s3_virge_375_init(info, L"roms/video/s3virge/86c375_1.bin"); } static void *s3_virge_375_4_init(device_t *info) { - return s3_virge_375_init(L"roms/video/s3virge/86c375_4.bin"); + return s3_virge_375_init(info, L"roms/video/s3virge/86c375_4.bin"); } static void s3_virge_close(void *p) @@ -4150,10 +4175,10 @@ static device_config_t s3_virge_config[] = } }; -device_t s3_virge_device = +device_t s3_virge_vlb_device = { - "Diamond Stealth 3D 2000 (S3 ViRGE)", - 0, + "Diamond Stealth 3D 2000 (S3 ViRGE) VLB", + DEVICE_VLB, 0, s3_virge_init, s3_virge_close, @@ -4165,10 +4190,25 @@ device_t s3_virge_device = s3_virge_config }; -device_t s3_virge_988_device = +device_t s3_virge_pci_device = { - "Diamond Stealth 3D 3000 (S3 ViRGE/VX)", + "Diamond Stealth 3D 2000 (S3 ViRGE) PCI", + DEVICE_PCI, 0, + s3_virge_init, + s3_virge_close, + NULL, + s3_virge_available, + s3_virge_speed_changed, + s3_virge_force_redraw, + s3_virge_add_status_info, + s3_virge_config +}; + +device_t s3_virge_988_vlb_device = +{ + "Diamond Stealth 3D 3000 (S3 ViRGE/VX) VLB", + DEVICE_VLB, 0, s3_virge_988_init, s3_virge_close, @@ -4180,10 +4220,25 @@ device_t s3_virge_988_device = s3_virge_config }; -device_t s3_virge_375_device = +device_t s3_virge_988_pci_device = { - "S3 ViRGE/DX", + "Diamond Stealth 3D 3000 (S3 ViRGE/VX) PCI", + DEVICE_PCI, 0, + s3_virge_988_init, + s3_virge_close, + NULL, + s3_virge_988_available, + s3_virge_speed_changed, + s3_virge_force_redraw, + s3_virge_add_status_info, + s3_virge_config +}; + +device_t s3_virge_375_vlb_device = +{ + "S3 ViRGE/DX VLB", + DEVICE_VLB, 0, s3_virge_375_1_init, s3_virge_close, @@ -4195,10 +4250,40 @@ device_t s3_virge_375_device = s3_virge_config }; -device_t s3_virge_375_4_device = +device_t s3_virge_375_pci_device = { - "S3 ViRGE/DX (VBE 2.0)", + "S3 ViRGE/DX PCI", + DEVICE_PCI, 0, + s3_virge_375_1_init, + s3_virge_close, + NULL, + s3_virge_375_1_available, + s3_virge_speed_changed, + s3_virge_force_redraw, + s3_virge_add_status_info, + s3_virge_config +}; + +device_t s3_virge_375_4_vlb_device = +{ + "S3 ViRGE/DX (VBE 2.0) VLB", + DEVICE_VLB, + 0, + s3_virge_375_4_init, + s3_virge_close, + NULL, + s3_virge_375_4_available, + s3_virge_speed_changed, + s3_virge_force_redraw, + s3_virge_add_status_info, + s3_virge_config +}; + +device_t s3_virge_375_4_pci_device = +{ + "S3 ViRGE/DX (VBE 2.0) PCI", + DEVICE_PCI, 0, s3_virge_375_4_init, s3_virge_close, diff --git a/src/video/vid_s3_virge.h b/src/video/vid_s3_virge.h index 74ee6454b..85389eb40 100644 --- a/src/video/vid_s3_virge.h +++ b/src/video/vid_s3_virge.h @@ -1,7 +1,11 @@ /* Copyright holders: Sarah Walker see COPYING for more details */ -extern device_t s3_virge_device; -extern device_t s3_virge_988_device; -extern device_t s3_virge_375_device; -extern device_t s3_virge_375_4_device; +extern device_t s3_virge_vlb_device; +extern device_t s3_virge_pci_device; +extern device_t s3_virge_988_vlb_device; +extern device_t s3_virge_988_pci_device; +extern device_t s3_virge_375_vlb_device; +extern device_t s3_virge_375_pci_device; +extern device_t s3_virge_375_4_vlb_device; +extern device_t s3_virge_375_4_pci_device; diff --git a/src/video/vid_tgui9440.c b/src/video/vid_tgui9440.c index 2fc800f1b..61edd08c3 100644 --- a/src/video/vid_tgui9440.c +++ b/src/video/vid_tgui9440.c @@ -55,6 +55,7 @@ typedef struct tgui_t rom_t bios_rom; svga_t svga; + int pci; struct { @@ -229,7 +230,7 @@ void tgui_out(uint16_t addr, uint8_t val, void *p) case 0x21: if (old != val) { - if (!PCI) + if (!tgui->pci) { tgui->linear_base = ((val & 0xf) | ((val >> 2) & 0x30)) << 20; tgui->linear_size = (val & 0x10) ? 0x200000 : 0x100000; @@ -515,6 +516,8 @@ void *tgui9440_init(device_t *info) tgui->vram_size = device_get_config_int("memory") << 20; tgui->vram_mask = tgui->vram_size - 1; + tgui->pci = !!(info->flags & DEVICE_PCI); + rom_init(&tgui->bios_rom, L"roms/video/tgui9440/9440.vbi", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); svga_init(&tgui->svga, tgui, tgui->vram_size, @@ -530,7 +533,10 @@ void *tgui9440_init(device_t *info) io_sethandler(0x03c0, 0x0020, tgui_in, NULL, NULL, tgui_out, NULL, NULL, tgui); io_sethandler(0x43c8, 0x0002, tgui_in, NULL, NULL, tgui_out, NULL, NULL, tgui); - pci_add_card(PCI_ADD_VIDEO, tgui_pci_read, tgui_pci_write, tgui); + if (info->flags & DEVICE_PCI) + { + pci_add_card(PCI_ADD_VIDEO, tgui_pci_read, tgui_pci_write, tgui); + } tgui->wake_fifo_thread = thread_create_event(); tgui->fifo_not_full_event = thread_create_event(); @@ -1271,10 +1277,25 @@ static device_config_t tgui9440_config[] = } }; -device_t tgui9440_device = +device_t tgui9440_vlb_device = { - "Trident TGUI 9440", - 0, + "Trident TGUI 9440 VLB", + DEVICE_VLB, + 0, + tgui9440_init, + tgui_close, + NULL, + tgui9440_available, + tgui_speed_changed, + tgui_force_redraw, + tgui_add_status_info, + tgui9440_config +}; + +device_t tgui9440_pci_device = +{ + "Trident TGUI 9440 PCI", + DEVICE_PCI, 0, tgui9440_init, tgui_close, diff --git a/src/video/vid_tgui9440.h b/src/video/vid_tgui9440.h index 066580f4b..257e7974b 100644 --- a/src/video/vid_tgui9440.h +++ b/src/video/vid_tgui9440.h @@ -1,4 +1,5 @@ /* Copyright holders: Sarah Walker see COPYING for more details */ -extern device_t tgui9440_device; +extern device_t tgui9440_vlb_device; +extern device_t tgui9440_pci_device; diff --git a/src/video/vid_tvga.c b/src/video/vid_tvga.c index 536437f82..6ae361969 100644 --- a/src/video/vid_tvga.c +++ b/src/video/vid_tvga.c @@ -367,7 +367,7 @@ static device_config_t tvga_config[] = device_t tvga8900d_device = { "Trident TVGA 8900D", - 0, + DEVICE_ISA, 0, tvga8900d_init, tvga_close, diff --git a/src/video/vid_vga.c b/src/video/vid_vga.c index 99f27b60b..76f7e6358 100644 --- a/src/video/vid_vga.c +++ b/src/video/vid_vga.c @@ -192,7 +192,7 @@ void vga_add_status_info(char *s, int max_len, void *p) device_t vga_device = { "VGA", - 0, + DEVICE_ISA, 0, vga_init, vga_close, @@ -206,7 +206,7 @@ device_t vga_device = device_t trigem_unk_device = { "VGA", - 0, + DEVICE_ISA, 0, trigem_unk_init, vga_close, diff --git a/src/video/vid_wy700.c b/src/video/vid_wy700.c index 93624c222..dcd432fd6 100644 --- a/src/video/vid_wy700.c +++ b/src/video/vid_wy700.c @@ -987,7 +987,7 @@ void wy700_speed_changed(void *p) device_t wy700_device = { "Wyse 700", - 0, 0, + DEVICE_ISA, 0, wy700_init, wy700_close, NULL, diff --git a/src/video/video.c b/src/video/video.c index c8eb8a404..9d8ec3a88 100644 --- a/src/video/video.c +++ b/src/video/video.c @@ -80,49 +80,62 @@ typedef struct static VIDEO_CARD video_cards[] = { - {"ATI Graphics Pro Turbo (Mach64 GX)", "mach64x", &mach64gx_device, GFX_MACH64GX}, - {"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2}, - {"ATI VGA Charger (ATI-28800-5)", "ati28800", &ati28800_device, GFX_VGACHARGER}, - {"ATI VGA Wonder XL24 (ATI-28800-6)", "ati28800w", &ati28800_wonderxl24_device, GFX_VGAWONDERXL24}, - {"ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16}, - {"CGA", "cga", &cga_device, GFX_CGA}, - {"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32}, - {"Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d", &s3_diamond_stealth64_device,GFX_STEALTH64}, - {"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE}, - {"Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000", &s3_virge_988_device, GFX_VIRGEVX}, - {"EGA", "ega", &ega_device, GFX_EGA}, - {"Chips & Technologies SuperEGA", "superega", &sega_device, GFX_SUPER_EGA}, - {"Compaq ATI VGA Wonder XL (ATI-28800-5)", "compaq_ati28800", &compaq_ati28800_device, GFX_VGAWONDERXL}, - {"Compaq EGA", "compaq_ega", &cpqega_device, GFX_COMPAQ_EGA}, - {"Hercules", "hercules", &hercules_device, GFX_HERCULES}, - {"Hercules Plus", "hercules_plus", &herculesplus_device, GFX_HERCULESPLUS}, - {"Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR}, - {"MDA", "mda", &mda_device, GFX_MDA}, - {"MDSI Genius", "genius", &genius_device, GFX_GENIUS}, - {"Number Nine 9FX (S3 Trio64)", "n9_9fx", &s3_9fx_device, GFX_N9_9FX}, + {"[ISA] ATI VGA Charger (ATI-28800-5)", "ati28800", &ati28800_device, GFX_VGACHARGER}, + {"[ISA] ATI VGA Wonder XL24 (ATI-28800-6)", "ati28800w", &ati28800_wonderxl24_device, GFX_VGAWONDERXL24}, + {"[ISA] ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16}, + {"[ISA] CGA", "cga", &cga_device, GFX_CGA}, + {"[ISA] Chips & Technologies SuperEGA", "superega", &sega_device, GFX_SUPER_EGA}, + {"[ISA] Compaq ATI VGA Wonder XL (ATI-28800-5)","compaq_ati28800", &compaq_ati28800_device, GFX_VGAWONDERXL}, + {"[ISA] Compaq EGA", "compaq_ega", &cpqega_device, GFX_COMPAQ_EGA}, + {"[ISA] EGA", "ega", &ega_device, GFX_EGA}, + {"[ISA] Hercules", "hercules", &hercules_device, GFX_HERCULES}, + {"[ISA] Hercules Plus", "hercules_plus", &herculesplus_device, GFX_HERCULESPLUS}, + {"[ISA] Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR}, + {"[ISA] MDA", "mda", &mda_device, GFX_MDA}, + {"[ISA] MDSI Genius", "genius", &genius_device, GFX_GENIUS}, + {"[ISA] OAK OTI-067", "oti067", &oti067_device, GFX_OTI067}, + {"[ISA] OAK OTI-077", "oti077", &oti077_device, GFX_OTI077}, + {"[ISA] Paradise WD90C11", "wd90c11", ¶dise_wd90c11_device, GFX_WD90C11}, + {"[ISA] Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS}, + {"[ISA] Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA}, + {"[ISA] Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000}, + {"[ISA] VGA", "vga", &vga_device, GFX_VGA}, + {"[ISA] Wyse 700", "wy700", &wy700_device, GFX_WY700}, + {"[VLB] ATI Graphics Pro Turbo (Mach64 GX)", "mach64x_vlb", &mach64gx_vlb_device, GFX_MACH64GX_VLB}, + {"[VLB] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_vlb", &et4000w32p_vlb_device, GFX_ET4000W32_VLB}, + {"[VLB] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_vlb", &s3_virge_vlb_device, GFX_VIRGE_VLB}, + {"[VLB] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_vlb", &s3_virge_988_vlb_device, GFX_VIRGEVX_VLB}, + {"[VLB] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_vlb", &s3_diamond_stealth64_vlb_device, GFX_STEALTH64_VLB}, + {"[VLB] Number Nine 9FX (S3 Trio64)", "n9_9fx_vlb", &s3_9fx_vlb_device, GFX_N9_9FX_VLB}, + {"[VLB] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_vlb", &s3_bahamas64_vlb_device, GFX_BAHAMAS64_VLB}, + {"[VLB] Phoenix S3 Vision864", "px_vision864_vlb", &s3_phoenix_vision864_vlb_device, GFX_PHOENIX_VISION864_VLB}, + {"[VLB] Phoenix S3 Trio32", "px_trio32_vlb", &s3_phoenix_trio32_vlb_device, GFX_PHOENIX_TRIO32_VLB}, + {"[VLB] Phoenix S3 Trio64", "px_trio64_vlb", &s3_phoenix_trio64_vlb_device, GFX_PHOENIX_TRIO64_VLB}, + {"[VLB] S3 ViRGE/DX", "virge375_vlb", &s3_virge_375_vlb_device, GFX_VIRGEDX_VLB}, + {"[VLB] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_vlb", &s3_virge_375_4_vlb_device, GFX_VIRGEDX4_VLB}, + {"[VLB] Trident TGUI9440", "tgui9440_vlb", &tgui9440_vlb_device, GFX_TGUI9440_VLB}, + {"[PCI] ATI Graphics Pro Turbo (Mach64 GX)", "mach64x_pci", &mach64gx_pci_device, GFX_MACH64GX_PCI}, + {"[PCI] ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2}, + {"[PCI] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_pci", &et4000w32p_pci_device, GFX_ET4000W32_PCI}, + {"[PCI] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_pci", &s3_virge_pci_device, GFX_VIRGE_PCI}, + {"[PCI] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_pci", &s3_virge_988_pci_device, GFX_VIRGEVX_PCI}, + {"[PCI] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_pci", &s3_diamond_stealth64_pci_device, GFX_STEALTH64_PCI}, #ifdef DEV_BRANCH #ifdef USE_RIVA - {"nVidia RIVA 128", "riva128", &riva128_device, GFX_RIVA128}, - {"nVidia RIVA TNT", "rivatnt", &rivatnt_device, GFX_RIVATNT}, - {"nVidia RIVA TNT2", "rivatnt2", &rivatnt2_device, GFX_RIVATNT2}, + {"[PCI] nVidia RIVA 128", "riva128", &riva128_device, GFX_RIVA128}, + {"[PCI] nVidia RIVA TNT", "rivatnt", &rivatnt_device, GFX_RIVATNT}, + {"[PCI] nVidia RIVA TNT2", "rivatnt2", &rivatnt2_device, GFX_RIVATNT2}, #endif #endif - {"OAK OTI-067", "oti067", &oti067_device, GFX_OTI067}, - {"OAK OTI-077", "oti077", &oti077_device, GFX_OTI077}, - {"Paradise Bahamas 64 (S3 Vision864)", "bahamas64", &s3_bahamas64_device, GFX_BAHAMAS64}, - {"Paradise WD90C11", "wd90c11", ¶dise_wd90c11_device, GFX_WD90C11}, - {"Phoenix S3 Vision864", "px_vision864", &s3_phoenix_vision864_device,GFX_PHOENIX_VISION864}, - {"Phoenix S3 Trio32", "px_trio32", &s3_phoenix_trio32_device, GFX_PHOENIX_TRIO32}, - {"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64}, - {"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS}, - {"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX}, - {"S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20", &s3_virge_375_4_device, GFX_VIRGEDX4}, - {"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440}, - {"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA}, - {"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000}, - {"VGA", "vga", &vga_device, GFX_VGA}, - {"Wyse 700", "wy700", &wy700_device, GFX_WY700}, - {"", "", NULL, 0} + {"[PCI] Number Nine 9FX (S3 Trio64)", "n9_9fx_pci", &s3_9fx_pci_device, GFX_N9_9FX_PCI}, + {"[PCI] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_pci", &s3_bahamas64_pci_device, GFX_BAHAMAS64_PCI}, + {"[PCI] Phoenix S3 Vision864", "px_vision864_pci", &s3_phoenix_vision864_pci_device, GFX_PHOENIX_VISION864_PCI}, + {"[PCI] Phoenix S3 Trio32", "px_trio32_pci", &s3_phoenix_trio32_pci_device, GFX_PHOENIX_TRIO32_PCI}, + {"[PCI] Phoenix S3 Trio64", "px_trio64_pci", &s3_phoenix_trio64_pci_device, GFX_PHOENIX_TRIO64_PCI}, + {"[PCI] S3 ViRGE/DX", "virge375_pci", &s3_virge_375_pci_device, GFX_VIRGEDX_PCI}, + {"[PCI] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_pci", &s3_virge_375_4_pci_device, GFX_VIRGEDX4_PCI}, + {"[PCI] Trident TGUI9440", "tgui9440_pci", &tgui9440_pci_device, GFX_TGUI9440_PCI}, + {"", "", NULL, 0} }; int video_card_available(int card) diff --git a/src/win/win_settings.c b/src/win/win_settings.c index 23146592d..af8775852 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -701,7 +701,7 @@ static void recalc_vid_list(HWND hdlg) break; if (video_card_available(c) && gfx_present[video_new_to_old(c)] && - ((machines[temp_machine].flags & MACHINE_PCI) || !(video_card_getdevice(c)->flags & DEVICE_PCI))) + device_is_valid(video_card_getdevice(c), machines[temp_machine].flags)) { mbstowcs(szText, s, strlen(s) + 1); SendMessage(h, CB_ADDSTRING, 0, (LPARAM) szText); @@ -1057,7 +1057,7 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa { sound_dev = sound_card_getdevice(c); - if (!sound_dev || (sound_dev->flags & DEVICE_MCA) == (machines[temp_machine].flags & MACHINE_MCA) || (sound_dev->flags & DEVICE_PCI) == (machines[temp_machine].flags & MACHINE_PCI)) + if (device_is_valid(sound_dev, machines[temp_machine].flags)) { if (c == 0) { @@ -1077,6 +1077,8 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa } SendMessage(h, CB_SETCURSEL, settings_sound_to_list[temp_sound_card], 0); + EnableWindow(h, d ? TRUE : FALSE); + h = GetDlgItem(hdlg, IDC_CONFIGURE_SND); if (sound_card_has_config(temp_sound_card)) { @@ -1104,7 +1106,7 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa { midi_dev = midi_device_getdevice(c); - if (!midi_dev || (midi_dev->flags & DEVICE_MCA) == (machines[temp_machine].flags & MACHINE_MCA)) + if (!midi_dev) { if (c == 0) { @@ -1394,32 +1396,7 @@ static void recalc_hdc_list(HWND hdlg, int machine, int use_selected_hdc) c++; continue; } - if ((hdc_get_flags(c) & DEVICE_AT) && !(machines[machine].flags & MACHINE_AT)) - { - c++; - continue; - } - if ((hdc_get_flags(c) & DEVICE_PS2) && !(machines[machine].flags & MACHINE_PS2_HDD)) - { - c++; - continue; - } - if ((hdc_get_flags(c) & DEVICE_MCA) && !(machines[machine].flags & MACHINE_MCA)) - { - c++; - continue; - } - if ((hdc_get_flags(c) & DEVICE_VLB) && !(machines[machine].flags & MACHINE_VLB)) - { - c++; - continue; - } - if ((hdc_get_flags(c) & DEVICE_PCI) && !(machines[machine].flags & MACHINE_PCI)) - { - c++; - continue; - } - if (!hdc_available(c)) + if (!hdc_available(c) || !device_is_valid(hdc_get_device(c), machines[temp_machine].flags)) { c++; continue; @@ -1442,7 +1419,7 @@ static void recalc_hdc_list(HWND hdlg, int machine, int use_selected_hdc) SendMessage(h, CB_SETCURSEL, 0, 0); } - EnableWindow(h, TRUE); + EnableWindow(h, d ? TRUE : FALSE); free(lptsTemp); } @@ -1497,10 +1474,8 @@ static BOOL CALLBACK win_settings_peripherals_proc(HWND hdlg, UINT message, WPAR if (scsi_card_available(c)) { scsi_dev = scsi_card_getdevice(c); - - if (!scsi_dev || ((scsi_dev->flags & DEVICE_MCA) == (machines[temp_machine].flags & MACHINE_MCA)) || - ((scsi_dev->flags & DEVICE_VLB) == (machines[temp_machine].flags & MACHINE_VLB)) || - ((scsi_dev->flags & DEVICE_PCI) == (machines[temp_machine].flags & MACHINE_PCI))) + + if (device_is_valid(scsi_dev, machines[temp_machine].flags)) { if (c == 0) { @@ -1520,6 +1495,8 @@ static BOOL CALLBACK win_settings_peripherals_proc(HWND hdlg, UINT message, WPAR } SendMessage(h, CB_SETCURSEL, settings_scsi_to_list[temp_scsi_card], 0); + EnableWindow(h, d ? TRUE : FALSE); + h = GetDlgItem(hdlg, IDC_CONFIGURE_SCSI); if (scsi_card_has_config(temp_scsi_card)) { @@ -1746,8 +1723,7 @@ static BOOL CALLBACK win_settings_network_proc(HWND hdlg, UINT message, WPARAM w settings_network_to_list[c] = d; - if (network_card_available(c) || ((network_card_getdevice(c)->flags & DEVICE_MCA) == (machines[temp_machine].flags & MACHINE_MCA)) || - ((network_card_getdevice(c)->flags & DEVICE_PCI) == (machines[temp_machine].flags & MACHINE_PCI))) + if (network_card_available(c) && device_is_valid(network_card_getdevice(c), machines[temp_machine].flags)) { if (c == 0) { @@ -1766,6 +1742,8 @@ static BOOL CALLBACK win_settings_network_proc(HWND hdlg, UINT message, WPARAM w } SendMessage(h, CB_SETCURSEL, settings_network_to_list[temp_net_card], 0); + EnableWindow(h, d ? TRUE : FALSE); + network_recalc_combos(hdlg); free(lptsTemp);