mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 17:45:31 -07:00
Merge branch '86Box:master' into master
This commit is contained in:
@@ -372,7 +372,7 @@ cpu_is_eligible(const cpu_family_t *cpu_family, int cpu, int machine)
|
||||
if (packages & CPU_PKG_SOCKET3)
|
||||
packages |= CPU_PKG_SOCKET1;
|
||||
else if (packages & CPU_PKG_SLOT1)
|
||||
packages |= CPU_PKG_SOCKET370 | CPU_PKG_SOCKET8;
|
||||
packages |= CPU_PKG_SOCKET370;
|
||||
|
||||
/* Package type. */
|
||||
if (!(cpu_family->package & packages))
|
||||
|
||||
@@ -170,6 +170,7 @@ extern const device_t sb_awe64_gold_device;
|
||||
/* Crystal CS423x */
|
||||
extern const device_t cs4235_device;
|
||||
extern const device_t cs4235_onboard_device;
|
||||
extern const device_t cs4236_onboard_device;
|
||||
extern const device_t cs4236b_device;
|
||||
extern const device_t cs4237b_device;
|
||||
extern const device_t cs4238b_device;
|
||||
|
||||
@@ -256,6 +256,9 @@ machine_at_vs440fx_init(const machine_t *model)
|
||||
|
||||
device_add(&intel_flash_bxt_ami_device);
|
||||
|
||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||
device_add(machine_get_snd_device(machine));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -290,6 +293,9 @@ machine_at_gw2kvenus_init(const machine_t *model)
|
||||
|
||||
device_add(&intel_flash_bxt_ami_device);
|
||||
|
||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||
device_add(machine_get_snd_device(machine));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -11121,9 +11121,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 196608,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -11156,14 +11156,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 3450,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 2.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11201,9 +11201,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11246,7 +11246,7 @@ const machine_t machines[] = {
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -11470,7 +11470,7 @@ const machine_t machines[] = {
|
||||
/* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix
|
||||
MultiKey/42 (version 1.38) KBC firmware. */
|
||||
{
|
||||
.name = "[i430HX] Acer M3A",
|
||||
.name = "[i430HX] Acer AcerPower Ultima",
|
||||
.internal_name = "acerm3a",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430HX,
|
||||
@@ -11492,9 +11492,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal SCSI */
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 196608,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -11523,18 +11523,18 @@ const machine_t machines[] = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 83333333,
|
||||
.max_bus = 75000000,
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 4.0
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11567,14 +11567,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11603,7 +11603,7 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 60000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
@@ -11613,9 +11613,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -11633,7 +11633,7 @@ const machine_t machines[] = {
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
{
|
||||
.name = "[i430HX] Intel TC430HX",
|
||||
.name = "[i430HX] Intel TC430HX (Tucson)",
|
||||
.internal_name = "tc430hx",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430HX,
|
||||
@@ -11650,14 +11650,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11673,7 +11673,7 @@ const machine_t machines[] = {
|
||||
},
|
||||
/* OEM version of Intel TC430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */
|
||||
{
|
||||
.name = "[i430HX] Toshiba Infinia 7200",
|
||||
.name = "[i430HX] Toshiba Infinia 7201",
|
||||
.internal_name = "infinia7200",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430HX,
|
||||
@@ -11690,14 +11690,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Has internal sound: Yamaha YMF701-S */
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11713,7 +11713,7 @@ const machine_t machines[] = {
|
||||
},
|
||||
/* OEM-only Intel CU430HX, has AMI MegaKey KBC firmware on the PC87306 Super I/O chip. */
|
||||
{
|
||||
.name = "[i430HX] Intel CU430HX",
|
||||
.name = "[i430HX] Intel CU430HX (Cumberland)",
|
||||
.internal_name = "cu430hx",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430HX,
|
||||
@@ -11730,14 +11730,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 196608,
|
||||
.step = 8192
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11770,14 +11770,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 196608,
|
||||
.step = 8192
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11806,18 +11806,18 @@ const machine_t machines[] = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 83333333,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11859,8 +11859,8 @@ const machine_t machines[] = {
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 196608,
|
||||
.step = 8192
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11899,9 +11899,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 786432,
|
||||
.step = 8192
|
||||
.min = 4096,
|
||||
.max = 524288,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -11941,9 +11941,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SCSI | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -11976,14 +11976,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Machine has AMB */
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12017,14 +12017,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12062,9 +12062,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12081,7 +12081,7 @@ const machine_t machines[] = {
|
||||
/* Has a SM(S)C FDC37C932QF Super I/O chip with on-chip KBC with AMI
|
||||
MegaKey (revision '5') KBC firmware. */
|
||||
{
|
||||
.name = "[i430VX] Compaq Presario 2240",
|
||||
.name = "[i430VX] Compaq Presario 224x",
|
||||
.internal_name = "presario2240",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430VX,
|
||||
@@ -12093,19 +12093,19 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 66666667,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.min = 16384,
|
||||
.max = 49152,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12122,7 +12122,7 @@ const machine_t machines[] = {
|
||||
/* Has a SM(S)C FDC37C931APM Super I/O chip with on-chip KBC with Compaq
|
||||
KBC firmware. */
|
||||
{
|
||||
.name = "[i430VX] Compaq Presario 4500",
|
||||
.name = "[i430VX] Compaq Presario 45xx",
|
||||
.internal_name = "presario4500",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430VX,
|
||||
@@ -12134,19 +12134,19 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 66666667,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM | MACHINE_ACPI,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.min = 16384,
|
||||
.max = 49152,
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12163,7 +12163,7 @@ const machine_t machines[] = {
|
||||
/* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI
|
||||
MegaKey (revision '5') KBC firmware. */
|
||||
{
|
||||
.name = "[i430VX] Dell Hannibal+",
|
||||
.name = "[i430VX] Dell Dimension XPS Pxxxa/Mxxxa",
|
||||
.internal_name = "dellhannibalp",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430VX,
|
||||
@@ -12180,14 +12180,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12225,9 +12225,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12257,7 +12257,7 @@ const machine_t machines[] = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 66666667,
|
||||
.max_bus = 75000000,
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
@@ -12266,9 +12266,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12309,7 +12309,7 @@ const machine_t machines[] = {
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12343,14 +12343,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2200,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 16384,
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12368,7 +12368,7 @@ const machine_t machines[] = {
|
||||
PC87306 Super I/O chip, command 0xA1 returns '5'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
{
|
||||
.name = "[i430VX] Packard Bell PB680",
|
||||
.name = "[i430VX] Packard Bell Multimedia C110",
|
||||
.internal_name = "pb680",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430VX,
|
||||
@@ -12392,7 +12392,7 @@ const machine_t machines[] = {
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -12409,7 +12409,7 @@ const machine_t machines[] = {
|
||||
/* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix
|
||||
MultiKey/42 (version 1.38) KBC firmware. */
|
||||
{
|
||||
.name = "[i430VX] Packard Bell PB810",
|
||||
.name = "[i430VX] Packard Bell Multimedia M415",
|
||||
.internal_name = "pb810",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430VX,
|
||||
@@ -12426,14 +12426,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 4.0
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 511,
|
||||
.kbc_device = NULL,
|
||||
@@ -12467,14 +12467,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2600,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12513,9 +12513,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_GAMEPORT | MACHINE_APM | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc_device = NULL,
|
||||
@@ -12590,7 +12590,7 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
@@ -12613,7 +12613,7 @@ const machine_t machines[] = {
|
||||
},
|
||||
/* [TEST] Has AMI Megakey '5' KBC firmware on the SM(S)C FDC37C67x Super I/O chip. */
|
||||
{
|
||||
.name = "[i430TX] Gateway Tomahawk",
|
||||
.name = "[i430TX] Gateway E-1000",
|
||||
.internal_name = "tomahawk",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430TX,
|
||||
@@ -12625,12 +12625,12 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 60000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2100,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 5.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_VIDEO | MACHINE_SOUND | MACHINE_NIC | MACHINE_USB,
|
||||
@@ -12654,7 +12654,7 @@ const machine_t machines[] = {
|
||||
#ifdef USE_AN430TX
|
||||
/* This has the Phoenix MultiKey KBC firmware. */
|
||||
{
|
||||
.name = "[i430TX] Intel AN430TX",
|
||||
.name = "[i430TX] Intel AN430TX (Anchorage)",
|
||||
.internal_name = "an430tx",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430TX,
|
||||
@@ -12671,7 +12671,7 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI,
|
||||
@@ -12695,7 +12695,7 @@ const machine_t machines[] = {
|
||||
#endif /* USE_AN430TX */
|
||||
/* This has the AMIKey KBC firmware, which is an updated 'F' type. */
|
||||
{
|
||||
.name = "[i430TX] Intel YM430TX",
|
||||
.name = "[i430TX] Intel YM430TX (Yamamoto)",
|
||||
.internal_name = "ym430tx",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430TX,
|
||||
@@ -12712,14 +12712,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -12733,7 +12733,7 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* PhoenixBIOS 4.0 Rel 6.0 for 430TX, most likely has AMI KBC of some sort. Also has onboard Yamaha YMF701 which can't be emulated yet. */
|
||||
/* PhoenixBIOS 4.0 Rel 6.0 for 430TX, has onboard Yamaha YMF701 which is not emulated yet. */
|
||||
/* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix
|
||||
MultiKey/42 (version 1.38) KBC firmware. */
|
||||
{
|
||||
@@ -12749,12 +12749,12 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2),
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 60000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2500,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal sound: Yamaha YMF701-S */
|
||||
@@ -12795,13 +12795,13 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2700,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 786432,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 255,
|
||||
@@ -12836,14 +12836,14 @@ const machine_t machines[] = {
|
||||
.min_voltage = 2700,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -12871,8 +12871,8 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 55000000,
|
||||
.max_bus = 75000000,
|
||||
.min_bus = 60000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2800,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
@@ -12881,9 +12881,9 @@ const machine_t machines[] = {
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -12912,18 +12912,18 @@ const machine_t machines[] = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 66666667,
|
||||
.max_bus = 75000000,
|
||||
.min_voltage = 2100,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.min = 4096,
|
||||
.max = 262144,
|
||||
.step = 8192
|
||||
.step = 4096
|
||||
},
|
||||
.nvrmask = 255,
|
||||
.kbc_device = NULL,
|
||||
@@ -12939,7 +12939,7 @@ const machine_t machines[] = {
|
||||
},
|
||||
/* [TEST] Has AMIKey 'H' KBC firmware. */
|
||||
{
|
||||
.name = "[i430TX] TriGem Richmond",
|
||||
.name = "[i430TX] TriGem RD535 (Richmond)",
|
||||
.internal_name = "richmond",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430TX,
|
||||
@@ -12951,12 +12951,12 @@ const machine_t machines[] = {
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
.block = CPU_BLOCK_NONE,
|
||||
.min_bus = 50000000,
|
||||
.min_bus = 60000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 2100,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 3.0
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB,
|
||||
@@ -13108,7 +13108,7 @@ const machine_t machines[] = {
|
||||
/* SiS 5571 */
|
||||
/* Has the SiS 5571 chipset with on-chip KBC. */
|
||||
{
|
||||
.name = "[SiS 5571] Daewoo CB52X-SI",
|
||||
.name = "[SiS 5571] Daewoo CD520",
|
||||
.internal_name = "cb52xsi",
|
||||
.type = MACHINE_TYPE_SOCKET7,
|
||||
.chipset = MACHINE_CHIPSET_SIS_5571,
|
||||
@@ -14072,7 +14072,7 @@ const machine_t machines[] = {
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 524288,
|
||||
@@ -14087,7 +14087,7 @@ const machine_t machines[] = {
|
||||
.fdc_device = NULL,
|
||||
.sio_device = NULL,
|
||||
.vid_device = NULL,
|
||||
.snd_device = NULL,
|
||||
.snd_device = &cs4236_onboard_device,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has the AMIKey-2 (updated 'H') KBC firmware. */
|
||||
@@ -14196,7 +14196,7 @@ const machine_t machines[] = {
|
||||
.max_multi = 3.5
|
||||
},
|
||||
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB,
|
||||
.flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 524288,
|
||||
@@ -14211,7 +14211,7 @@ const machine_t machines[] = {
|
||||
.fdc_device = NULL,
|
||||
.sio_device = NULL,
|
||||
.vid_device = NULL,
|
||||
.snd_device = NULL,
|
||||
.snd_device = &cs4236_onboard_device,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has the AMIKey-2 (updated 'H') KBC firmware. */
|
||||
|
||||
@@ -200,10 +200,22 @@ ad1848_read(uint16_t addr, void *priv)
|
||||
|
||||
case 23:
|
||||
if ((ad1848->type >= AD1848_TYPE_CS4236B) && (ad1848->regs[23] & 0x08)) {
|
||||
if ((ad1848->xindex & 0xfe) == 0x00) /* remapped line volume */
|
||||
ret = ad1848->regs[18 + ad1848->xindex];
|
||||
else
|
||||
ret = ad1848->xregs[ad1848->xindex];
|
||||
ret = ad1848->xregs[ad1848->xindex];
|
||||
switch (ad1848->xindex) {
|
||||
case 0 ... 1:
|
||||
/* Remapped line volume. */
|
||||
ret = ad1848->regs[18 + ad1848->xindex];
|
||||
break;
|
||||
|
||||
case 26:
|
||||
/* Backdoor to the Joystick Control register on CS4235+. */
|
||||
if (ad1848->type >= AD1848_TYPE_CS4235)
|
||||
ret = ad1848->cram_read(0, ad1848->cram_priv);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -353,8 +365,8 @@ ad1848_write(uint16_t addr, uint8_t val, void *priv)
|
||||
}
|
||||
|
||||
switch (ad1848->xindex) {
|
||||
case 0:
|
||||
case 1: /* remapped line volume */
|
||||
case 0 ... 1:
|
||||
/* Remapped line volume. */
|
||||
ad1848->regs[18 + ad1848->xindex] = val;
|
||||
return;
|
||||
|
||||
@@ -380,6 +392,12 @@ ad1848_write(uint16_t addr, uint8_t val, void *priv)
|
||||
case 25:
|
||||
return;
|
||||
|
||||
case 26:
|
||||
/* Backdoor to the Joystick Control register on CS4235+. */
|
||||
if (ad1848->type >= AD1848_TYPE_CS4235)
|
||||
ad1848->cram_write(0, val, ad1848->cram_priv);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -90,13 +90,13 @@ static const uint8_t slam_init_key[32] = { 0x96, 0x35, 0x9A, 0xCD, 0xE6, 0xF3, 0
|
||||
0x5E, 0xAF, 0x57, 0x2B, 0x15, 0x8A, 0xC5, 0xE2,
|
||||
0xF1, 0xF8, 0x7C, 0x3E, 0x9F, 0x4F, 0x27, 0x13,
|
||||
0x09, 0x84, 0x42, 0xA1, 0xD0, 0x68, 0x34, 0x1A };
|
||||
static const uint8_t cs4236b_default[] = {
|
||||
static const uint8_t cs4236_default[] = {
|
||||
// clang-format off
|
||||
/* Chip configuration */
|
||||
0x00, 0x03, /* CD-ROM and modem decode */
|
||||
0x80, /* misc. config */
|
||||
0x80, /* global config */
|
||||
0x0b, /* chip ID */
|
||||
0x0b, /* [code base byte (CS4236B+)] / reserved (CS4236) */
|
||||
0x20, 0x04, 0x08, 0x10, 0x80, 0x00, 0x00, /* reserved */
|
||||
0x00, /* external decode length */
|
||||
0x48, /* reserved */
|
||||
@@ -104,7 +104,7 @@ static const uint8_t cs4236b_default[] = {
|
||||
0x10, 0x03, /* DMA routing */
|
||||
|
||||
/* Default PnP data */
|
||||
0x0e, 0x63, 0x42, 0x35, 0xff, 0xff, 0xff, 0xff, 0x00 /* hinted by documentation to be just the header */
|
||||
0x0e, 0x63, 0x42, 0x36, 0xff, 0xff, 0xff, 0xff, 0x00 /* hinted by documentation to be just the header */
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
@@ -144,6 +144,7 @@ typedef struct cs423x_t {
|
||||
} cs423x_t;
|
||||
|
||||
static void cs423x_slam_enable(cs423x_t *dev, uint8_t enable);
|
||||
static void cs423x_ctxswitch_write(uint16_t addr, UNUSED(uint8_t val), void *priv);
|
||||
static void cs423x_pnp_enable(cs423x_t *dev, uint8_t update_rom, uint8_t update_hwconfig);
|
||||
static void cs423x_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv);
|
||||
static void cs423x_reset(void *priv);
|
||||
@@ -237,6 +238,12 @@ cs423x_write(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0: /* Joystick and Power Control */
|
||||
if (dev->type <= CRYSTAL_CS4232)
|
||||
val &= 0xeb;
|
||||
if ((dev->type >= CRYSTAL_CS4235) && (addr == 0) && (val & 0x08)) {
|
||||
/* CS4235+ through X26 backdoor only (hence the addr check): WSS off (one-way trip?) */
|
||||
io_removehandler(dev->wss_base, 4, ad1848_read, NULL, NULL, ad1848_write, NULL, NULL, &dev->ad1848);
|
||||
io_removehandler(dev->wss_base, 4, NULL, NULL, NULL, cs423x_ctxswitch_write, NULL, NULL, dev);
|
||||
dev->wss_base = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: /* EEPROM Interface */
|
||||
@@ -252,7 +259,7 @@ cs423x_write(uint16_t addr, uint8_t val, void *priv)
|
||||
break;
|
||||
|
||||
case 3: /* Control Indirect Access Register (CS4236B+) */
|
||||
if (dev->type < CRYSTAL_CS4236B)
|
||||
if (dev->type < CRYSTAL_CS4236) /* must be writable on CS4236 for the aforementioned VS440FX BIOS check */
|
||||
return;
|
||||
val &= 0x0f;
|
||||
break;
|
||||
@@ -793,6 +800,47 @@ cs423x_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
cs423x_load_defaults(cs423x_t *dev, uint8_t *dest)
|
||||
{
|
||||
switch (dev->type) {
|
||||
case CRYSTAL_CS4236:
|
||||
case CRYSTAL_CS4236B:
|
||||
case CRYSTAL_CS4237B:
|
||||
case CRYSTAL_CS4238B:
|
||||
case CRYSTAL_CS4235:
|
||||
case CRYSTAL_CS4239:
|
||||
memcpy(dest, cs4236_default, sizeof(cs4236_default));
|
||||
dev->pnp_size = 9; /* header-only PnP ROM size */
|
||||
|
||||
switch (dev->type) {
|
||||
case CRYSTAL_CS4236:
|
||||
dest[4] = 0x43; /* code base byte */
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4236B:
|
||||
dest[22] = 0x35; /* default PnP ID */
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4237B:
|
||||
dest[22] = 0x37; /* default PnP ID */
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4238B:
|
||||
dest[22] = 0x38; /* default PnP ID */
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4235:
|
||||
case CRYSTAL_CS4239:
|
||||
dest[4] = 0x05; /* code base byte */
|
||||
dest[12] = 0x08; /* external decode length */
|
||||
dest[22] = 0x36; /* default PnP ID - explicitly stated to be the CS4236 non-B one */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
cs423x_reset(void *priv)
|
||||
{
|
||||
@@ -802,8 +850,7 @@ cs423x_reset(void *priv)
|
||||
memset(dev->ram_data, 0, sizeof(dev->ram_data));
|
||||
|
||||
/* Load default configuration data to RAM. */
|
||||
memcpy(&dev->ram_data[0x4000], cs4236b_default, sizeof(cs4236b_default));
|
||||
dev->pnp_size = 9;
|
||||
cs423x_load_defaults(dev, &dev->ram_data[0x4000]);
|
||||
|
||||
if (dev->eeprom) {
|
||||
/* Load EEPROM data to RAM if the magic bytes are present. */
|
||||
@@ -851,21 +898,22 @@ cs423x_init(const device_t *info)
|
||||
dev->type = info->local & 0xff;
|
||||
cs423x_log("CS423x: init(%02X)\n", dev->type);
|
||||
switch (dev->type) {
|
||||
case CRYSTAL_CS4236:
|
||||
case CRYSTAL_CS4236B:
|
||||
case CRYSTAL_CS4237B:
|
||||
case CRYSTAL_CS4238B:
|
||||
case CRYSTAL_CS4235:
|
||||
case CRYSTAL_CS4239:
|
||||
/* Same WSS codec and EEPROM structure. */
|
||||
dev->ad1848_type = (dev->type >= CRYSTAL_CS4235) ? AD1848_TYPE_CS4235 : AD1848_TYPE_CS4236B;
|
||||
dev->ad1848_type = (dev->type >= CRYSTAL_CS4235) ? AD1848_TYPE_CS4235 : ((dev->type >= CRYSTAL_CS4236B) ? AD1848_TYPE_CS4236B : AD1848_TYPE_CS4236);
|
||||
dev->pnp_offset = 0x4013;
|
||||
|
||||
/* Different Chip Version and ID registers, which shouldn't be reset by ad1848_init. */
|
||||
/* Different Chip Version and ID registers (N/A on CS4236), which shouldn't be reset by ad1848_init. */
|
||||
dev->ad1848.xregs[25] = dev->type;
|
||||
|
||||
if (!(info->local & CRYSTAL_NOEEPROM)) {
|
||||
/* Copy default configuration data. */
|
||||
memcpy(&dev->eeprom_data[4], cs4236b_default, sizeof(cs4236b_default));
|
||||
/* Start a new EEPROM with the default configuration data. */
|
||||
cs423x_load_defaults(dev, &dev->eeprom_data[4]);
|
||||
|
||||
/* Load PnP resource data ROM. */
|
||||
FILE *fp = rom_fopen(PNP_ROM_CS4236B, "rb");
|
||||
@@ -876,6 +924,8 @@ cs423x_init(const device_t *info)
|
||||
with pretending the whole ROM is PnP data, at least until we can get full EEPROM dumps. */
|
||||
dev->pnp_size = fread(&dev->eeprom_data[eeprom_pnp_offset], 1, sizeof(dev->eeprom_data) - eeprom_pnp_offset, fp);
|
||||
fclose(fp);
|
||||
} else {
|
||||
dev->pnp_size = 0;
|
||||
}
|
||||
|
||||
/* Populate EEPROM header if the PnP ROM was loaded. */
|
||||
@@ -888,14 +938,12 @@ cs423x_init(const device_t *info)
|
||||
|
||||
/* Patch PnP ROM and set EEPROM file name. */
|
||||
switch (dev->type) {
|
||||
case CRYSTAL_CS4235:
|
||||
case CRYSTAL_CS4236:
|
||||
if (dev->pnp_size) {
|
||||
dev->eeprom_data[8] = 0x05;
|
||||
dev->eeprom_data[16] = 0x08;
|
||||
dev->eeprom_data[26] = 0x25;
|
||||
dev->eeprom_data[44] = '5';
|
||||
dev->eeprom_data[26] = 0x36;
|
||||
dev->eeprom_data[45] = ' ';
|
||||
}
|
||||
dev->nvr_path = "cs4235.nvr";
|
||||
dev->nvr_path = "cs4236.nvr";
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4236B:
|
||||
@@ -907,7 +955,7 @@ cs423x_init(const device_t *info)
|
||||
dev->eeprom_data[26] = 0x37;
|
||||
dev->eeprom_data[44] = '7';
|
||||
}
|
||||
dev->nvr_path = "cs4237b.nvr";
|
||||
dev->nvr_path = "cs4237b.nvr";
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4238B:
|
||||
@@ -915,7 +963,25 @@ cs423x_init(const device_t *info)
|
||||
dev->eeprom_data[26] = 0x38;
|
||||
dev->eeprom_data[44] = '8';
|
||||
}
|
||||
dev->nvr_path = "cs4238b.nvr";
|
||||
dev->nvr_path = "cs4238b.nvr";
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4235:
|
||||
if (dev->pnp_size) {
|
||||
dev->eeprom_data[26] = 0x25;
|
||||
dev->eeprom_data[44] = '5';
|
||||
dev->eeprom_data[45] = ' ';
|
||||
}
|
||||
dev->nvr_path = "cs4235.nvr";
|
||||
break;
|
||||
|
||||
case CRYSTAL_CS4239:
|
||||
if (dev->pnp_size) {
|
||||
dev->eeprom_data[26] = 0x29;
|
||||
dev->eeprom_data[44] = '9';
|
||||
dev->eeprom_data[45] = ' ';
|
||||
}
|
||||
dev->nvr_path = "cs4239.nvr";
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -928,7 +994,7 @@ cs423x_init(const device_t *info)
|
||||
|
||||
/* Initialize game port. The game port on all B chips only
|
||||
responds to 6 I/O ports; the remaining 2 are reserved. */
|
||||
dev->gameport = gameport_add((dev->type == CRYSTAL_CS4235) ? &gameport_pnp_device : &gameport_pnp_6io_device);
|
||||
dev->gameport = gameport_add((dev->ad1848_type == CRYSTAL_CS4236B) ? &gameport_pnp_6io_device : &gameport_pnp_device);
|
||||
|
||||
break;
|
||||
|
||||
@@ -1023,6 +1089,20 @@ const device_t cs4235_onboard_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t cs4236_onboard_device = {
|
||||
.name = "Crystal CS4236 (On-Board)",
|
||||
.internal_name = "cs4236_onboard",
|
||||
.flags = DEVICE_ISA | DEVICE_AT,
|
||||
.local = CRYSTAL_CS4236 | CRYSTAL_NOEEPROM,
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t cs4236b_device = {
|
||||
.name = "Crystal CS4236B",
|
||||
.internal_name = "cs4236b",
|
||||
|
||||
Reference in New Issue
Block a user