From e3a3b8f0863b02fe7bd40c18e951b8ba4992dec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=99=E6=B2=99=E5=AE=AE=E7=B4=97=E5=A4=9C?= <117635969+kzmidze@users.noreply.github.com> Date: Sun, 27 Aug 2023 13:40:57 +0800 Subject: [PATCH 01/82] Update language module --- src/win/languages/zh-CN.rc | 2 +- src/win/languages/zh-TW.rc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 93e8ca49b..a6d86b6c0 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -480,7 +480,7 @@ BEGIN IDS_2125 "关于 86Box" IDS_2126 "86Box v" EMU_VERSION - IDS_2127 "一个旧式计算机模拟器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker、leilei、JohnElliott、greatpsycho 等人。\n\n本软件依据 GNU 通用公共许可证第二版或更新版本发布。详情见 LICENSE 文件。" + IDS_2127 "一个旧式计算机模拟器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\n本软件依据 GNU 通用公共许可证第二版或更新版本发布。详情见 LICENSE 文件。" IDS_2128 "确定" IDS_2129 "硬件不可用" #ifdef _WIN32 diff --git a/src/win/languages/zh-TW.rc b/src/win/languages/zh-TW.rc index ae6e43a6f..039993e5d 100644 --- a/src/win/languages/zh-TW.rc +++ b/src/win/languages/zh-TW.rc @@ -480,7 +480,7 @@ BEGIN IDS_2125 "關於 86Box" IDS_2126 "86Box v" EMU_VERSION - IDS_2127 "一個舊式電腦模擬器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker、leilei、JohnElliott、greatpsycho 等人。\n\n本軟體依據 GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。" + IDS_2127 "一個舊式電腦模擬器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\n本軟體依據 GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。" IDS_2128 "確定" IDS_2129 "硬體不可用" #ifdef _WIN32 From f21ab681a9ec21905b7e62e9bf9f4a75c523679f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=99=E6=B2=99=E5=AE=AE=E7=B4=97=E5=A4=9C?= <117635969+kzmidze@users.noreply.github.com> Date: Sun, 27 Aug 2023 13:42:34 +0800 Subject: [PATCH 02/82] Update language module --- src/qt/languages/zh-CN.po | 2 +- src/qt/languages/zh-TW.po | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index c4e331aca..3598da0fc 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -854,7 +854,7 @@ msgid "86Box v" msgstr "86Box v" msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "一个旧式计算机模拟器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker、leilei、JohnElliott、greatpsycho 等人。\n\n本软件依据 GNU 通用公共许可证第二版或更新版本发布。详情见 LICENSE 文件。" +msgstr "一个旧式计算机模拟器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\n本软件依据 GNU 通用公共许可证第二版或更新版本发布。详情见 LICENSE 文件。" msgid "Hardware not available" msgstr "硬件不可用" diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po index 1941e7286..d10b45628 100644 --- a/src/qt/languages/zh-TW.po +++ b/src/qt/languages/zh-TW.po @@ -854,7 +854,7 @@ msgid "86Box v" msgstr "86Box v" msgid "An emulator of old computers\n\nAuthors: Miran Grča (OBattler), RichardG867, Jasmine Iwanek, TC1995, coldbrewed, Teemu Korhonen (Manaatti), Joakim L. Gilje, Adrien Moulin (elyosh), Daniel Balsom (gloriouscow), Cacodemon345, Fred N. van Kempen (waltje), Tiseno100, reenigne, and others.\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information." -msgstr "一個舊式電腦模擬器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker、leilei、JohnElliott、greatpsycho 等人。\n\n本軟體依據 GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。" +msgstr "一個舊式電腦模擬器\n\n作者: Miran Grča (OBattler)、RichardG867、Jasmine Iwanek、TC1995、coldbrewed、Teemu Korhonen (Manaatti)、Joakim L. Gilje、Adrien Moulin (elyosh)、Daniel Balsom (gloriouscow)、Cacodemon345、Fred N. van Kempen (waltje)、Tiseno100、reenigne 等人。\n\nWith previous core contributions from Sarah Walker, leilei, JohnElliott, greatpsycho, and others.\n\n本軟體依據 GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。" msgid "Hardware not available" msgstr "硬體不可用" From 68b6a58cc2694c913166ad6d8e8a43fc0318093d Mon Sep 17 00:00:00 2001 From: Davidson Francis Date: Wed, 30 Aug 2023 00:34:49 -0300 Subject: [PATCH 03/82] Bug Fix: Fix GDB stub builds due to undeclared symbol This commit fixes a build issue that occurred when compiling with GDBSTUB support (-DGDBSTUB=ON). The issue was introduced in commit 565421a, which commented out the GDB_REG_FS_BASE and GDB_REG_GS_BASE registers, but did not remove the code snippets that referenced them in gdbstub_client_write_reg(). This commit comments out those code snippets as well. Additionally, this commit removes the fs_base and gs_base registers from the XML file, to ensure the correct numbering of the registers for the GDB. --- src/gdbstub.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gdbstub.c b/src/gdbstub.c index 30785eeac..14e75b4e0 100644 --- a/src/gdbstub.c +++ b/src/gdbstub.c @@ -222,8 +222,10 @@ static char target_xml[] = /* QEMU gdb-xml/i386-32bit.xml with modificati "" "" "" +#if 0 "" "" +#endif "" "" "" @@ -548,10 +550,12 @@ gdbstub_client_write_reg(int index, uint8_t *buf) flushmmucache(); break; +#if 0 case GDB_REG_FS_BASE ... GDB_REG_GS_BASE: /* Do what qemu does and just load the base. */ segment_regs[(index - 16) + (GDB_REG_FS - GDB_REG_CS)]->base = *((uint32_t *) buf); break; +#endif case GDB_REG_CR0 ... GDB_REG_CR4: *cr_regs[index - GDB_REG_CR0] = *((uint32_t *) buf); From 036c6cb101fd2b9eeb07c841aec9698a5f6ee32b Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 30 Aug 2023 18:11:15 +0200 Subject: [PATCH 04/82] Fixed the PCI device type for the 450kx Memory Controller. --- src/machine/m_at_socket8.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/machine/m_at_socket8.c b/src/machine/m_at_socket8.c index c1c95f197..c8e507335 100644 --- a/src/machine/m_at_socket8.c +++ b/src/machine/m_at_socket8.c @@ -54,14 +54,14 @@ machine_at_p6rp4_init(const machine_t *model) device_add(&p6rp4_nvr_device); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x14, PCI_CARD_AGPBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_NORTHBRIDGE_SEC, 0, 0, 0, 0); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i450kx_device); device_add(&sio_zb_device); device_add(&ide_cmd646_device); From fd4ef5cfb4bab476ae8312dba91d9f28f8898db1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 30 Aug 2023 18:12:26 +0200 Subject: [PATCH 05/82] Fixed the PCI slot definition for the 450kx Memory Controller. --- src/machine/m_at_socket8.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/machine/m_at_socket8.c b/src/machine/m_at_socket8.c index c1c95f197..c8e507335 100644 --- a/src/machine/m_at_socket8.c +++ b/src/machine/m_at_socket8.c @@ -54,14 +54,14 @@ machine_at_p6rp4_init(const machine_t *model) device_add(&p6rp4_nvr_device); pci_init(PCI_CONFIG_TYPE_1); - pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x14, PCI_CARD_AGPBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - pci_register_slot(0x08, PCI_CARD_IDE, 0, 0, 0, 0); - pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); - pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); - pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); - pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); + pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x14, PCI_CARD_NORTHBRIDGE_SEC, 0, 0, 0, 0); + pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_IDE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_NORMAL, 1, 2, 3, 4); + pci_register_slot(0x06, PCI_CARD_NORMAL, 2, 3, 4, 1); + pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); + pci_register_slot(0x04, PCI_CARD_NORMAL, 4, 1, 2, 3); device_add(&i450kx_device); device_add(&sio_zb_device); device_add(&ide_cmd646_device); From 3039f8449f3c738dede5871e1b2fd74dfab5d96b Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 30 Aug 2023 18:46:23 +0200 Subject: [PATCH 06/82] Fixed GUS IRQ handling if normal and MIDI IRQ's are the same. --- src/sound/snd_gus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index 9e267ab7b..aa9eeca40 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -216,7 +216,7 @@ gus_update_int_status(gus_t *gus) picintclevel(1 << gus->irq, &gus->irq_state); } - if (gus->irq_midi != -1) { + if ((gus->irq_midi != -1) && (gus->irq_midi != gus->irq)) { if (midi_intr_pending) picintlevel(1 << gus->irq_midi, &gus->midi_irq_state); else From e6e8784769bef7b4e552768473fce1edb02c3188 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Thu, 31 Aug 2023 06:13:04 +0500 Subject: [PATCH 07/82] Revert the GUS to use edge-triggered IRQs Fixes #3645 --- src/sound/snd_gus.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index aa9eeca40..90f5dba7f 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -211,16 +211,16 @@ gus_update_int_status(gus_t *gus) if (gus->irq != -1) { if (intr_pending) - picintlevel(1 << gus->irq, &gus->irq_state); + picint(1 << gus->irq); else - picintclevel(1 << gus->irq, &gus->irq_state); + picintc(1 << gus->irq); } if ((gus->irq_midi != -1) && (gus->irq_midi != gus->irq)) { if (midi_intr_pending) - picintlevel(1 << gus->irq_midi, &gus->midi_irq_state); + picint(1 << gus->irq_midi); else - picintclevel(1 << gus->irq_midi, &gus->midi_irq_state); + picintc(1 << gus->irq_midi); } } From ce8b1c4c81aabfb471d57dac1a743f729c9c7715 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Thu, 31 Aug 2023 06:16:55 +0500 Subject: [PATCH 08/82] Dev branch: Fix the GUS type selector not working --- src/sound/snd_gus.c | 74 ++++++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index 90f5dba7f..ce4947e3f 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -16,7 +16,9 @@ #include <86box/pic.h> #include <86box/sound.h> #include <86box/timer.h> -#include <86box/snd_ad1848.h> +#if defined(DEV_BRANCH) && defined(USE_GUSMAX) +# include <86box/snd_ad1848.h> +#endif #include <86box/plat_fallthrough.h> #include <86box/plat_unused.h> @@ -104,6 +106,8 @@ typedef struct gus_t { pc_timer_t timer_1; pc_timer_t timer_2; + uint8_t type; + int irq; int dma; int irq_midi; @@ -139,9 +143,9 @@ typedef struct gus_t { uint8_t usrr; +#if defined(DEV_BRANCH) && defined(USE_GUSMAX) uint8_t max_ctrl; -#if defined(DEV_BRANCH) && defined(USE_GUSMAX) ad1848_t ad1848; #endif } gus_t; @@ -589,14 +593,16 @@ writegus(uint16_t addr, uint8_t val, void *priv) } else gus->irq_midi = gus_midi_irqs[(val >> 3) & 7]; #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - ad1848_setirq(&gus->ad1848, gus->irq); + if (gus->type == GUS_MAX) + ad1848_setirq(&gus->ad1848, gus->irq); #endif gus->sb_nmi = val & 0x80; } else { gus->dma = gus_dmas[val & 7]; #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - ad1848_setdma(&gus->ad1848, gus->dma); + if (gus->type == GUS_MAX) + ad1848_setdma(&gus->ad1848, gus->dma); #endif } break; @@ -655,20 +661,22 @@ writegus(uint16_t addr, uint8_t val, void *priv) break; case 0x306: case 0x706: - if (gus->dma >= 4) - val |= 0x30; - gus->max_ctrl = (val >> 6) & 1; #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - if (val & 0x40) { - if ((val & 0xF) != ((addr >> 4) & 0xF)) { - csioport = 0x30c | ((addr >> 4) & 0xf); - io_removehandler(csioport, 4, - ad1848_read, NULL, NULL, - ad1848_write, NULL, NULL, &gus->ad1848); - csioport = 0x30c | ((val & 0xf) << 4); - io_sethandler(csioport, 4, - ad1848_read, NULL, NULL, - ad1848_write, NULL, NULL, &gus->ad1848); + if (gus->type == GUS_MAX) { + if (gus->dma >= 4) + val |= 0x30; + gus->max_ctrl = (val >> 6) & 1; + if (val & 0x40) { + if ((val & 0xF) != ((addr >> 4) & 0xF)) { + csioport = 0x30c | ((addr >> 4) & 0xf); + io_removehandler(csioport, 4, + ad1848_read, NULL, NULL, + ad1848_write, NULL, NULL, &gus->ad1848); + csioport = 0x30c | ((val & 0xf) << 4); + io_sethandler(csioport, 4, + ad1848_read, NULL, NULL, + ad1848_write, NULL, NULL, &gus->ad1848); + } } } #endif @@ -723,9 +731,11 @@ readgus(uint16_t addr, void *priv) return val; case 0x20F: - if (gus->max_ctrl) +#if defined(DEV_BRANCH) && defined(USE_GUSMAX) + if (gus->type == GUS_MAX) val = 0x02; else +#endif val = 0x00; break; @@ -844,9 +854,11 @@ readgus(uint16_t addr, void *priv) break; case 0x306: case 0x706: - if (gus->max_ctrl) +#if defined(DEV_BRANCH) && defined(USE_GUSMAX) + if (gus->type == GUS_MAX) val = 0x0a; /* GUS MAX */ else +#endif val = 0xff; /*Pre 3.7 - no mixer*/ break; @@ -1128,21 +1140,21 @@ gus_get_buffer(int32_t *buffer, int len, void *priv) gus_t *gus = (gus_t *) priv; #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - if (gus->max_ctrl) + if ((gus->type == GUS_MAX) && (gus->max_ctrl)) ad1848_update(&gus->ad1848); #endif gus_update(gus); for (int c = 0; c < len * 2; c++) { #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - if (gus->max_ctrl) + if ((gus->type == GUS_MAX) && (gus->max_ctrl)) buffer[c] += (int32_t) (gus->ad1848.buffer[c] / 2); #endif buffer[c] += (int32_t) gus->buffer[c & 1][c >> 1]; } #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - if (gus->max_ctrl) + if ((gus->type == GUS_MAX) && (gus->max_ctrl)) gus->ad1848.pos = 0; #endif gus->pos = 0; @@ -1277,7 +1289,9 @@ gus_reset(void *priv) gus->usrr = 0; +#if defined(DEV_BRANCH) && defined(USE_GUSMAX) gus->max_ctrl = 0; +#endif gus->irq_state = 0; gus->midi_irq_state = 0; @@ -1317,6 +1331,8 @@ gus_init(UNUSED(const device_t *info)) gus->uart_out = 1; + gus->type = device_get_config_int("type"); + gus->base = device_get_config_hex16("base"); io_sethandler(gus->base, 0x0010, readgus, NULL, NULL, writegus, NULL, NULL, gus); @@ -1325,11 +1341,13 @@ gus_init(UNUSED(const device_t *info)) io_sethandler(0x0388, 0x0002, readgus, NULL, NULL, writegus, NULL, NULL, gus); #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - ad1848_init(&gus->ad1848, AD1848_TYPE_CS4231); - ad1848_setirq(&gus->ad1848, 5); - ad1848_setdma(&gus->ad1848, 3); - io_sethandler(0x10C + gus->base, 4, - ad1848_read, NULL, NULL, ad1848_write, NULL, NULL, &gus->ad1848); + if (gus->type == GUS_MAX) { + ad1848_init(&gus->ad1848, AD1848_TYPE_CS4231); + ad1848_setirq(&gus->ad1848, 5); + ad1848_setdma(&gus->ad1848, 3); + io_sethandler(0x10C + gus->base, 4, + ad1848_read, NULL, NULL, ad1848_write, NULL, NULL, &gus->ad1848); + } #endif timer_add(&gus->samp_timer, gus_poll_wave, gus, 1); @@ -1364,7 +1382,7 @@ gus_speed_changed(void *priv) gus->samp_latch = (uint64_t) (TIMER_USEC * (1000000.0 / gusfreqs[gus->voices - 14])); #if defined(DEV_BRANCH) && defined(USE_GUSMAX) - if (gus->max_ctrl) + if ((gus->type == GUS_MAX) && (gus->max_ctrl)) ad1848_speed_changed(&gus->ad1848); #endif } From 4bde11c290bdf9dc111b913ef95a0ef670ebe3d0 Mon Sep 17 00:00:00 2001 From: Davidson Francis Date: Thu, 31 Aug 2023 14:11:27 -0300 Subject: [PATCH 09/82] GDB stub small fixes: out-of-bounds and wrong packet reply in 'qfThreadInfo' (#3666) * Fix out-of-bounds access on gdbstub_client_respond() The issue happens when the ENABLE_GDBSTUB_LOG flag is set, more specifically within the gdbstub_client_respond() function. This is due to the fact that the string 'GDB Stub: Sending response: ' and the newline character '\n' total 29 characters. When combined with the 995 characters of client->response, the total is 1024 bytes. However, the pclog_ex() buffer size is also 1024 bytes, leaving no room for the null terminator '\0'. As a result, when attempting to print the text on the screen, a segmentation fault occurs. This commit fixes this by decreasing the response text's size by one byte. * Remove extra space in 'qfThreadInfo' packet response in gdbstub.c When GDB sends the 'qfThreadInfo' packet, one of the possible responses is 'm thread-id', as specified in [1]. However, contrary to what the documentation implies, there is no space between 'm' and the thread-id. In the current approach, GDB isn't even able to recognize that there's any active thread, as the code sends "m 1" instead of "m1". This commit addresses this by removing the space in the response. Ref: [1]: https://sourceware.org/gdb/onlinedocs/gdb/General-Query-Packets.html --- src/gdbstub.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gdbstub.c b/src/gdbstub.c index 14e75b4e0..d2bb5364b 100644 --- a/src/gdbstub.c +++ b/src/gdbstub.c @@ -631,10 +631,10 @@ gdbstub_client_respond(gdbstub_client_t *client) /* Send response packet. */ client->response[client->response_pos] = '\0'; #ifdef ENABLE_GDBSTUB_LOG - i = client->response[995]; /* pclog_ex buffer too small */ - client->response[995] = '\0'; + i = client->response[994]; /* pclog_ex buffer too small */ + client->response[994] = '\0'; gdbstub_log("GDB Stub: Sending response: %s\n", client->response); - client->response[995] = i; + client->response[994] = i; #endif send(client->socket, "$", 1, 0); send(client->socket, client->response, client->response_pos, 0); @@ -1100,7 +1100,7 @@ e00: } else if (!strcmp(client->response, "C")) { FAST_RESPONSE("QC1"); } else if (!strcmp(client->response, "fThreadInfo")) { - FAST_RESPONSE("m 1"); + FAST_RESPONSE("m1"); } else if (!strcmp(client->response, "sThreadInfo")) { FAST_RESPONSE("l"); } else if (!strcmp(client->response, "Rcmd")) { From ff56469b7632f692cae1163f825fd1970c7057f2 Mon Sep 17 00:00:00 2001 From: Robert de Rooy <17701098+rderooy@users.noreply.github.com> Date: Sat, 2 Sep 2023 10:51:40 +0200 Subject: [PATCH 10/82] Add new 4.0 dependencies to RPM spec file --- src/unix/assets/86Box.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec index ede0d5bb6..255eca87f 100644 --- a/src/unix/assets/86Box.spec +++ b/src/unix/assets/86Box.spec @@ -12,7 +12,7 @@ # After a successful build, you can install the RPMs as follows: # sudo dnf install RPMS/$(uname -m)/86Box-3* RPMS/noarch/86Box-roms* -%global romver 3.11 +%global romver 4.0 Name: 86Box Version: 4.0 @@ -27,11 +27,14 @@ Source1: https://github.com/86Box/roms/archive/refs/tags/v%{romver}.zip BuildRequires: cmake BuildRequires: desktop-file-utils BuildRequires: extra-cmake-modules +BuildRequires: fluidsynth-devel BuildRequires: freetype-devel BuildRequires: gcc-c++ BuildRequires: libFAudio-devel BuildRequires: libappstream-glib +BuildRequires: libatomic BuildRequires: libevdev-devel +BuildRequires: libslirp-devel BuildRequires: libxkbcommon-x11-devel BuildRequires: libXi-devel BuildRequires: ninja-build @@ -118,5 +121,5 @@ popd %{_datadir}/%{name}/roms %changelog -* Tue Feb 28 2023 Robert de Rooy 4.0-1 +* Sat Aug 26 2023 Robert de Rooy 4.0-1 - Bump release From 95c9c1dc951534d96fb9b94c9abe946471372afc Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 4 Sep 2023 04:55:09 +0200 Subject: [PATCH 11/82] Reverted the PIC code to basically the old code with the new way of handing level-triggered IRQ's, fixes IDE hard disk and ATAPI CD-ROM problems. --- src/pic.c | 413 ++++++++++++++++++++++-------------------------------- 1 file changed, 170 insertions(+), 243 deletions(-) diff --git a/src/pic.c b/src/pic.c index f4e1a0a60..c01053268 100644 --- a/src/pic.c +++ b/src/pic.c @@ -51,23 +51,20 @@ pic_t pic2; static pc_timer_t pic_timer; -static uint16_t smi_irq_mask = 0x0000; -static uint16_t smi_irq_status = 0x0000; - -static uint16_t enabled_latches = 0x0000; -static uint16_t latched_irqs = 0x0000; - static int shadow = 0; static int elcr_enabled = 0; static int tmr_inited = 0; +static int latched = 0; static int pic_pci = 0; +static int kbd_latch = 0; +static int mouse_latch = 0; -static void (*update_pending)(void); +static uint16_t smi_irq_mask = 0x0000; +static uint16_t smi_irq_status = 0x0000; -static void pic_update_request(pic_t *dev, int irq); -static void pic_update_irr(pic_t *dev, uint16_t num); +static uint16_t latched_irqs = 0x0000; -static void pic_cascade(int set); +static void (*update_pending)(void); #ifdef ENABLE_PIC_LOG int pic_do_log = ENABLE_PIC_LOG; @@ -226,29 +223,37 @@ find_best_interrupt(pic_t *dev) static __inline void pic_update_pending_xt(void) { - if (!(pic.flags & PIC_FREEZE)) - pic.int_pending = (find_best_interrupt(&pic) != -1); + if (find_best_interrupt(&pic) != -1) { + latched++; + if (latched == 1) + timer_on_auto(&pic_timer, 0.35); + } else if (latched == 0) + pic.int_pending = 0; } static __inline void pic_update_pending_at(void) { - if (!(pic2.flags & PIC_FREEZE)) { - pic2.int_pending = (find_best_interrupt(&pic2) != -1); + pic2.int_pending = (find_best_interrupt(&pic2) != -1); - pic_cascade(pic2.int_pending); - } + if (pic2.int_pending) + pic.irr |= (1 << pic2.icw3); + else + pic.irr &= ~(1 << pic2.icw3); - if (!(pic.flags & PIC_FREEZE)) - pic.int_pending = (find_best_interrupt(&pic) != -1); - - pic_log("pic_update_pending_at(): dev->int_pending = %i (%i)\n", pic.int_pending, !!(pic.flags & PIC_FREEZE)); + pic.int_pending = (find_best_interrupt(&pic) != -1); } static void -pic_callback(UNUSED(void *priv)) +pic_callback(void *priv) { - update_pending(); + pic_t *dev = (pic_t *) priv; + + dev->int_pending = 1; + + latched--; + if (latched > 0) + timer_on_auto(&pic_timer, 0.35); } void @@ -263,13 +268,8 @@ pic_reset(void) pic.is_master = 1; pic.interrupt = pic2.interrupt = 0x17; - pic.has_slaves = 0; - pic2.has_slaves = 0; - - if (is_at) { + if (is_at) pic.slaves[2] = &pic2; - pic.has_slaves = 1; - } if (tmr_inited) timer_on_auto(&pic_timer, 0.0); @@ -320,25 +320,14 @@ picint_is_level(int irq) } static void -pic_acknowledge(pic_t *dev, int poll) +pic_acknowledge(pic_t *dev) { int pic_int = dev->interrupt & 7; int pic_int_num = 1 << pic_int; dev->isr |= pic_int_num; - - /* Simulate the clearing of the edge pulse. */ - dev->edge_lines &= ~pic_int_num; - /* Clear the edge sense latch. */ - dev->irq_latch &= ~pic_int_num; - - if (!poll) { - dev->flags |= PIC_FREEZE; /* Freeze it so it still takes interrupts but they do not - override the one currently being processed. */ - - /* Clear the reset latch. */ - pic_update_request(dev, pic_int); - } + if (!pic_level_triggered(dev, pic_int) || (dev->lines[pic_int] == 0)) + dev->irr &= ~pic_int_num; } /* Find IRQ for non-specific EOI (either by command or automatic) by finding the highest IRQ @@ -375,7 +364,6 @@ pic_action(pic_t *dev, uint8_t irq, uint8_t eoi, uint8_t rotate) if (rotate) dev->priority = (irq + 1) & 7; - pic_update_request(dev, irq); update_pending(); } } @@ -415,10 +403,13 @@ pic_latch_read(UNUSED(uint16_t addr), UNUSED(void *priv)) { uint8_t ret = 0xff; - pic_log("pic_latch_read(%04X): %04X\n", enabled_latches, latched_irqs & 0x1002); + pic_log("pic_latch_read(%i, %i)\n", kbd_latch, mouse_latch); - if (latched_irqs & 0x1002) - picintc(latched_irqs & 0x1002); + if (kbd_latch && (latched_irqs & 0x0002)) + picintc(0x0002); + + if (mouse_latch && (latched_irqs & 0x1000)) + picintc(0x1000); /* Return FF - we just lower IRQ 1 and IRQ 12. */ return ret; @@ -447,23 +438,24 @@ pic_read(uint16_t addr, void *priv) dev->data_bus = dev->irr; #endif if (dev->ocw3 & 0x04) { + dev->interrupt &= ~0x20; /* Freeze the interrupt until the poll is over. */ if (dev->int_pending) { dev->data_bus = 0x80 | (dev->interrupt & 7); - pic_acknowledge(dev, 1); + pic_acknowledge(dev); dev->int_pending = 0; + update_pending(); } else dev->data_bus = 0x00; dev->ocw3 &= ~0x04; - dev->flags &= ~PIC_FREEZE; /* Freeze the interrupt until the poll is over. */ - pic_update_irr(dev, 0x00ff); /* Update IRR, just in case anything came while frozen. */ - update_pending(); } else if (addr & 0x0001) dev->data_bus = dev->imr; else if (dev->ocw3 & 0x02) { if (dev->ocw3 & 0x01) dev->data_bus = dev->isr; +#ifdef UNDEFINED_READ else - dev->data_bus = dev->irr; + dev->data_bus = 0x00; +#endif } /* If A0 = 0, VIA shadow is disabled, and poll mode is disabled, simply read whatever is currently on the data bus. */ @@ -502,10 +494,7 @@ pic_write(uint16_t addr, uint8_t val, void *priv) break; case STATE_NONE: dev->imr = val; - if (is286) - update_pending(); - else - timer_on_auto(&pic_timer, 1.0 * ((10000000.0 * (double) xt_cpu_multi) / (double) cpu_s->rspeed)); + update_pending(); break; default: @@ -522,13 +511,11 @@ pic_write(uint16_t addr, uint8_t val, void *priv) if (!(dev->icw1 & 1)) dev->icw4 = 0x00; dev->ocw2 = dev->ocw3 = 0x00; - dev->flags = PIC_MASTER_CLEAR; - dev->irr = 0x00; - dev->edge_lines = 0x00; - dev->irq_latch = 0x00; - for (uint8_t i = 0; i <= 7; i++) - pic_update_request(dev, i); - dev->flags &= ~PIC_MASTER_CLEAR; + dev->irr = 0x00; + for (uint8_t i = 0; i <= 7; i++) { + if (dev->lines[i] > 0) + dev->irr |= (1 << i); + } dev->imr = dev->isr = 0x00; dev->ack_bytes = dev->priority = 0x00; dev->auto_eoi_rotate = dev->special_mask_mode = 0x00; @@ -539,7 +526,7 @@ pic_write(uint16_t addr, uint8_t val, void *priv) } else if (val & 0x08) { dev->ocw3 = val; if (dev->ocw3 & 0x04) - dev->flags |= PIC_FREEZE; /* Freeze the interrupt until the poll is over. */ + dev->interrupt |= 0x20; /* Freeze the interrupt until the poll is over. */ if (dev->ocw3 & 0x40) dev->special_mask_mode = !!(dev->ocw3 & 0x20); } else { @@ -566,15 +553,12 @@ pic_set_pci(void) void pic_kbd_latch(int enable) { - uint16_t old_latches = enabled_latches; - pic_log("PIC keyboard latch now %sabled\n", enable ? "en" : "dis"); - enable = (!!enable) << 1; - enabled_latches = (enabled_latches & 0x1000) | enable; + if (!!(enable | mouse_latch) != !!(kbd_latch | mouse_latch)) + io_handler(!!(enable | mouse_latch), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL); - if (!!(enabled_latches & 0x1002) != !!(old_latches & 0x1002)) - io_handler(!!(enabled_latches & 0x1002), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL); + kbd_latch = !!enable; if (!enable) picintc(0x0002); @@ -583,15 +567,12 @@ pic_kbd_latch(int enable) void pic_mouse_latch(int enable) { - uint16_t old_latches = enabled_latches; - pic_log("PIC mouse latch now %sabled\n", enable ? "en" : "dis"); - enable = (!!enable) << 12; - enabled_latches = (enabled_latches & 0x0002) | enable; + if (!!(kbd_latch | enable) != !!(kbd_latch | mouse_latch)) + io_handler(!!(kbd_latch | enable), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL); - if (!!(enabled_latches & 0x1002) != !!(old_latches & 0x1002)) - io_handler(!!(enabled_latches & 0x1002), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL); + mouse_latch = !!enable; if (!enable) picintc(0x1000); @@ -603,11 +584,11 @@ pic_reset_hard(void) pic_reset(); /* Explicitly reset the latches. */ - enabled_latches = 0x0000; + kbd_latch = mouse_latch = 0; latched_irqs = 0x0000; /* The situation is as follows: There is a giant mess when it comes to these latches on real hardware, - to the point that there's even boards with board-level latches that get used in place of the latches + to the point that there's even boards with board-level latched that get used in place of the latches on the chipset, therefore, I'm just doing this here for the sake of simplicity. */ if (machine_has_bus(machine, MACHINE_BUS_PS2_LATCH)) { pic_kbd_latch(0x01); @@ -643,125 +624,31 @@ pic2_init(void) pic.slaves[2] = &pic2; } -void -pic_update_lines(pic_t *dev, uint16_t num, int level, int set, uint8_t *irq_state) -{ - uint8_t old_edge_lines; - uint8_t bit; - - switch (level) { - case PIC_IRQ_EDGE: - old_edge_lines = dev->edge_lines; - - dev->edge_lines &= ~num; - if (set) - dev->edge_lines |= num; - - if ((dev->isr & num) || (dev->flags & PIC_MASTER_CLEAR)) - dev->irq_latch = (dev->irq_latch & ~num) | (dev->edge_lines & num); - else if ((dev->edge_lines & num) && !(old_edge_lines & num)) - dev->irq_latch |= num; - break; - case PIC_IRQ_LEVEL: - for (uint8_t i = 0; i < 8; i++) { - bit = (1 << i); - if ((num & bit) && ((!!*irq_state) != !!set)) - dev->lines[i] += (set ? 1 : -1); - } - - if ((!!*irq_state) != !!set) - *irq_state = set; - break; - - default: - break; - } -} - -static uint8_t -pic_irq_get_request(pic_t *dev, int irq) -{ - uint8_t ret; - - ret = ((dev->edge_lines & (1 << irq)) || (dev->lines[irq] > 0)); - - return ret; -} - -static uint8_t -pic_es_latch_clear(pic_t *dev, int irq) -{ - uint8_t ret; - - ret = (dev->isr & (1 << irq)) || (dev->flags & PIC_MASTER_CLEAR); - - return ret; -} - -static uint8_t -pic_es_latch_out(pic_t *dev, int irq) -{ - uint8_t ret; - - ret = !((pic_es_latch_clear(dev, irq) && (dev->irq_latch & (1 << irq))) || !pic_irq_get_request(dev, irq)); - - return ret; -} - -static uint8_t -pic_es_latch_nor(pic_t *dev, int irq) -{ - uint8_t ret; - - ret = !(pic_es_latch_out(dev, irq) || picint_is_level(irq)); - - return ret; -} - -static uint8_t -pic_irq_request_nor(pic_t *dev, int irq) -{ - uint8_t ret; - - ret = !(pic_es_latch_nor(dev, irq) || !pic_irq_get_request(dev, irq)); - - return ret; -} - -static void -pic_update_request(pic_t *dev, int irq) -{ - dev->irr &= ~(1 << irq); - - if (!(dev->flags & PIC_FREEZE)) - dev->irr |= (pic_irq_request_nor(dev, irq) << irq); -} - -static void -pic_update_irr(pic_t *dev, uint16_t num) -{ - for (uint8_t i = 0; i < 8; i++) { - if (num & (1 << i)) - pic_update_request(dev, i); - } -} - void picint_common(uint16_t num, int level, int set, uint8_t *irq_state) { - pic_log("picint_common(%04X, %i, %i, %08X)\n", num, level, set, (uint32_t) (uintptr_t) irq_state); - - set = !!set; + int raise; + uint8_t b; + uint8_t slaves = 0; /* Make sure to ignore all slave IRQ's, and in case of AT+, translate IRQ 2 to IRQ 9. */ - if (num & pic.icw3) { - num &= ~pic.icw3; - if (pic.at) - num |= (1 << 9); + for (uint8_t i = 0; i < 8; i++) { + b = (uint8_t) (1 << i); + raise = num & b; + + if (pic.icw3 & b) { + slaves++; + + if (raise) { + num &= ~b; + if (pic.at && (i == 2)) + num |= (1 << 9); + } + } } - if (!pic.has_slaves) + if (!slaves) num &= 0x00ff; if (!num) { @@ -772,40 +659,93 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (num & 0x0100) acpi_rtc_status = !!set; - smi_irq_status &= ~num; - if (set && (smi_irq_mask & num)) { - smi_raise(); - smi_irq_status |= num; + if (set) { + if (smi_irq_mask & num) { + smi_raise(); + smi_irq_status |= num; + } + + if (num & 0xff00) { + if (level) { + for (uint8_t i = 0; i < 8; i++) { + b = (uint8_t) (1 << i); + if (((num >> 8) & b) && ((!!*irq_state) != !!set)) + pic2.lines[i]++; + } + + if ((!!*irq_state) != !!set) + *irq_state = set; + } + + /* Latch IRQ 12 if the mouse latch is enabled. */ + if ((num & 0x1000) && mouse_latch) + latched_irqs |= 0x1000; + + pic2.irr |= (num >> 8); + } + + if (num & 0x00ff) { + if (level) { + for (uint8_t i = 0; i < 8; i++) { + b = (uint8_t) (1 << i); + if ((num & b) && ((!!*irq_state) != !!set)) + pic.lines[i]++; + } + + if ((!!*irq_state) != !!set) + *irq_state = set; + } + + /* Latch IRQ 1 if the keyboard latch is enabled. */ + if (kbd_latch && (num & 0x0002)) + latched_irqs |= 0x0002; + + pic.irr |= (num & 0x00ff); + } + } else { + smi_irq_status &= ~num; + + if (num & 0xff00) { + if (level) { + for (uint8_t i = 0; i < 8; i++) { + b = (uint8_t) (1 << i); + if (((num >> 8) & b) && ((!!*irq_state) != !!set)) + pic2.lines[i]--; + } + + if ((!!*irq_state) != !!set) + *irq_state = set; + } + + /* Unlatch IRQ 12 if the mouse latch is enabled. */ + if ((num & 0x1000) && mouse_latch) + latched_irqs &= 0xefff; + + pic2.irr &= ~(num >> 8); + } + + if (num & 0x00ff) { + if (level) { + for (uint8_t i = 0; i < 8; i++) { + b = (uint8_t) (1 << i); + if ((num & b) && ((!!*irq_state) != !!set)) + pic.lines[i]--; + } + + if ((!!*irq_state) != !!set) + *irq_state = set; + } + + /* Unlatch IRQ 1 if the keyboard latch is enabled. */ + if (kbd_latch && (num & 0x0002)) + latched_irqs &= 0xfffd; + + pic.irr &= ~(num & 0x00ff); + } } - if (num & 0xff00) { - pic_update_lines(&pic2, num >> 8, level, set, irq_state); - - /* Latch IRQ 12 if the mouse latch is enabled. */ - if ((num & enabled_latches) & 0x1000) - latched_irqs = (latched_irqs & 0xefff) | (set << 12); - - pic_update_irr(&pic2, num >> 8); - } - - if (num & 0x00ff) { - pic_update_lines(&pic, num & 0x00ff, level, set, irq_state); - - /* Latch IRQ 1 if the keyboard latch is enabled. */ - if ((num & enabled_latches) & 0x0002) - latched_irqs = (latched_irqs & 0xfffd) | (set << 1); - - pic_update_irr(&pic, num & 0x00ff); - } - - update_pending(); -} - -static void -pic_cascade(int set) -{ - pic_update_lines(&pic, (1 << pic2.icw3), PIC_IRQ_EDGE, set, NULL); - pic_update_irr(&pic, (1 << pic2.icw3)); + if (!(pic.interrupt & 0x20) && !(pic2.interrupt & 0x20)) + update_pending(); } static uint8_t @@ -817,13 +757,16 @@ pic_i86_mode(pic_t *dev) static uint8_t pic_irq_ack_read(pic_t *dev, int phase) { - uint8_t intr = dev->interrupt & 0x07; - uint8_t slave = dev->flags & PIC_SLAVE_PENDING; + uint8_t intr = dev->interrupt & 0x47; + uint8_t slave = intr & 0x40; + intr &= 0x07; pic_log(" pic_irq_ack_read(%08X, %i)\n", dev, phase); if (dev != NULL) { if (phase == 0) { - pic_acknowledge(dev, 0); + dev->interrupt |= 0x20; /* Freeze it so it still takes interrupts but they do not + override the one currently being processed. */ + pic_acknowledge(dev); if (slave) dev->data_bus = pic_irq_ack_read(dev->slaves[intr], phase); else @@ -855,9 +798,6 @@ pic_irq_ack_read(pic_t *dev, int phase) return dev->data_bus; } -/* 808x: Update the requests for all interrupts since any of them - could have arrived during the freeze. */ - uint8_t pic_irq_ack(void) { @@ -871,7 +811,7 @@ pic_irq_ack(void) exit(-1); } - pic.flags |= PIC_SLAVE_PENDING; + pic.interrupt |= 0x40; /* Mark slave pending. */ } ret = pic_irq_ack_read(&pic, pic.ack_bytes); @@ -879,13 +819,8 @@ pic_irq_ack(void) if (pic.ack_bytes == 0) { /* Needed for Xi8088. */ - if (pic.flags & PIC_SLAVE_PENDING) { - pic2.flags &= ~PIC_FREEZE; - pic_update_irr(&pic2, 0x00ff); + if (pic.interrupt & 0x40) pic2.interrupt = 0x17; - } - pic.flags &= ~(PIC_SLAVE_PENDING | PIC_FREEZE); - pic_update_irr(&pic, 0x00ff); pic.interrupt = 0x17; update_pending(); } @@ -893,9 +828,6 @@ pic_irq_ack(void) return ret; } -/* 286+: Only update the request for the pending interrupt as it is - impossible that any other interrupt has arrived during the - freeze. */ int picinterrupt(void) { @@ -909,7 +841,7 @@ picinterrupt(void) exit(-1); } - pic.flags |= PIC_SLAVE_PENDING; + pic.interrupt |= 0x40; /* Mark slave pending. */ } if ((pic.interrupt == 0) && (pit_devs[1].data != NULL)) @@ -921,13 +853,8 @@ picinterrupt(void) pic.ack_bytes = (pic.ack_bytes + 1) % (pic_i86_mode(&pic) ? 2 : 3); if (pic.ack_bytes == 0) { - if (pic.flags & PIC_SLAVE_PENDING) { - pic2.flags &= ~PIC_FREEZE; - pic_update_request(&pic2, pic2.interrupt & 0x07); + if (pic.interrupt & 0x40) pic2.interrupt = 0x17; - } - pic.flags &= ~(PIC_SLAVE_PENDING | PIC_FREEZE); - pic_update_request(&pic, pic.interrupt & 0x07); pic.interrupt = 0x17; update_pending(); } From 64956506bb5c3fd06f67f51032ddfb3a4c9e7eec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 18:18:12 +0000 Subject: [PATCH 12/82] Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/c-cpp.yml | 2 +- .github/workflows/cmake.yml | 8 ++++---- .github/workflows/codeql.yml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 7b8b6eeb4..79f350f4f 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -95,7 +95,7 @@ jobs: libvncserver:p - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: make run: >- diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 8a2405ccf..361d9c8be 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -110,7 +110,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis @@ -233,7 +233,7 @@ jobs: run: dir "C:/Program Files/Microsoft Visual Studio/2022/*/VC/Tools/MSVC/*/include" -include stdatomic.h -recurse | del - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis @@ -340,7 +340,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis @@ -426,7 +426,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fcfb16341..86467d657 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -113,7 +113,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v2 @@ -199,7 +199,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v2 @@ -275,7 +275,7 @@ jobs: ${{ matrix.ui.packages }} - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v2 From 129950b5af43e66cf6fa2e326ea1910aac4cceed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Hakl?= Date: Fri, 15 Sep 2023 16:49:33 +0200 Subject: [PATCH 13/82] fix flags for serial passthrough on unix --- src/unix/unix_serial_passthrough.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/unix/unix_serial_passthrough.c b/src/unix/unix_serial_passthrough.c index 025f04a5f..de0539d8b 100644 --- a/src/unix/unix_serial_passthrough.c +++ b/src/unix/unix_serial_passthrough.c @@ -149,7 +149,7 @@ plat_serpt_set_params(void *priv) BAUDRATE_RANGE(dev->baudrate, 57600, 115200, B57600); BAUDRATE_RANGE(dev->baudrate, 115200, 0xFFFFFFFF, B115200); - term_attr.c_cflag &= CSIZE; + term_attr.c_cflag &= ~CSIZE; switch (dev->data_bits) { case 8: default: @@ -165,13 +165,13 @@ plat_serpt_set_params(void *priv) term_attr.c_cflag |= CS5; break; } - term_attr.c_cflag &= CSTOPB; + term_attr.c_cflag &= ~CSTOPB; if (dev->serial->lcr & 0x04) term_attr.c_cflag |= CSTOPB; #if !defined(__linux__) - term_attr.c_cflag &= PARENB | PARODD; + term_attr.c_cflag &= ~(PARENB | PARODD); #else - term_attr.c_cflag &= PARENB | PARODD | CMSPAR; + term_attr.c_cflag &= ~(PARENB | PARODD | CMSPAR); #endif if (dev->serial->lcr & 0x08) { term_attr.c_cflag |= PARENB; @@ -182,6 +182,7 @@ plat_serpt_set_params(void *priv) term_attr.c_cflag |= CMSPAR; #endif } + printf("c_cflag=%08x\n", term_attr.c_cflag); tcsetattr(dev->master_fd, TCSANOW, &term_attr); #undef BAUDRATE_RANGE } From 6eaf274c337741f4c3f7028ffdd2e0ca334cf79e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Hakl?= Date: Fri, 15 Sep 2023 16:55:24 +0200 Subject: [PATCH 14/82] remove debug printf() --- src/unix/unix_serial_passthrough.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/unix/unix_serial_passthrough.c b/src/unix/unix_serial_passthrough.c index de0539d8b..d80f8a1e7 100644 --- a/src/unix/unix_serial_passthrough.c +++ b/src/unix/unix_serial_passthrough.c @@ -182,7 +182,6 @@ plat_serpt_set_params(void *priv) term_attr.c_cflag |= CMSPAR; #endif } - printf("c_cflag=%08x\n", term_attr.c_cflag); tcsetattr(dev->master_fd, TCSANOW, &term_attr); #undef BAUDRATE_RANGE } From 178f1ce599f209cf8740b39477e851ed93b26d04 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Tue, 5 Sep 2023 20:55:54 +0500 Subject: [PATCH 15/82] Disable the softfloat checkbox when no FPU is selected --- src/config.c | 1 + src/qt/qt_settingsmachine.cpp | 25 ++++++++++++++++++++----- src/qt/qt_settingsmachine.hpp | 3 +++ src/win/win_settings.c | 18 +++++++++++++++--- 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/config.c b/src/config.c index 987e1a3ac..ea314997a 100644 --- a/src/config.c +++ b/src/config.c @@ -510,6 +510,7 @@ load_machine(void) cpu_use_dynarec = !!ini_section_get_int(cat, "cpu_use_dynarec", 0); fpu_softfloat = !!ini_section_get_int(cat, "fpu_softfloat", 0); + if ((fpu_type != FPU_NONE) && machine_has_flags(machine, MACHINE_SOFTFLOAT_ONLY)) if (machine_has_flags(machine, MACHINE_SOFTFLOAT_ONLY)) fpu_softfloat = 1; diff --git a/src/qt/qt_settingsmachine.cpp b/src/qt/qt_settingsmachine.cpp index 0a170ccae..6b021b288 100644 --- a/src/qt/qt_settingsmachine.cpp +++ b/src/qt/qt_settingsmachine.cpp @@ -288,7 +288,6 @@ SettingsMachine::on_comboBoxSpeed_currentIndexChanged(int index) #endif // win_settings_machine_recalc_fpu - int machineId = ui->comboBoxMachine->currentData().toInt(); auto *modelFpu = ui->comboBoxFPU->model(); int removeRows = modelFpu->rowCount(); @@ -306,11 +305,27 @@ SettingsMachine::on_comboBoxSpeed_currentIndexChanged(int index) ui->comboBoxFPU->setEnabled(modelFpu->rowCount() > 1); ui->comboBoxFPU->setCurrentIndex(-1); ui->comboBoxFPU->setCurrentIndex(selectedFpuRow); + } +} - ui->checkBoxFPUSoftfloat->setChecked(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? - true : fpu_softfloat); - ui->checkBoxFPUSoftfloat->setEnabled(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? - false : true); +void +SettingsMachine::on_comboBoxFPU_currentIndexChanged(int index) +{ + if (index >= 0) { + int cpuFamilyId = ui->comboBoxCPU->currentData().toInt(); + const auto *cpuFamily = &cpu_families[cpuFamilyId]; + int cpuId = ui->comboBoxSpeed->currentData().toInt(); + int machineId = ui->comboBoxMachine->currentData().toInt(); + + if (fpu_get_type_from_index(cpuFamily, cpuId, index) == FPU_NONE) { + ui->checkBoxFPUSoftfloat->setChecked(false); + ui->checkBoxFPUSoftfloat->setEnabled(false); + } else { + ui->checkBoxFPUSoftfloat->setChecked(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? + true : fpu_softfloat); + ui->checkBoxFPUSoftfloat->setEnabled(machine_has_flags(machineId, MACHINE_SOFTFLOAT_ONLY) ? + false : true); + } } } diff --git a/src/qt/qt_settingsmachine.hpp b/src/qt/qt_settingsmachine.hpp index abb4f3014..9d0ec62ff 100644 --- a/src/qt/qt_settingsmachine.hpp +++ b/src/qt/qt_settingsmachine.hpp @@ -21,6 +21,9 @@ signals: private slots: void on_pushButtonConfigure_clicked(); +private slots: + void on_comboBoxFPU_currentIndexChanged(int index); + private slots: void on_comboBoxSpeed_currentIndexChanged(int index); diff --git a/src/win/win_settings.c b/src/win/win_settings.c index fb0f106ce..b36a8a90b 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -688,6 +688,18 @@ win_settings_save(void) pc_reset_hard_init(); } +static void +win_settings_machine_recalc_softfloat(HWND hdlg) +{ + if (temp_fpu == FPU_NONE) { + settings_set_check(hdlg, IDC_CHECK_SOFTFLOAT, FALSE); + settings_enable_window(hdlg, IDC_CHECK_SOFTFLOAT, FALSE); + } else { + settings_set_check(hdlg, IDC_CHECK_SOFTFLOAT, (machine_has_flags(temp_machine, MACHINE_SOFTFLOAT_ONLY) ? TRUE : temp_fpu_softfloat)); + settings_enable_window(hdlg, IDC_CHECK_SOFTFLOAT, (machine_has_flags(temp_machine, MACHINE_SOFTFLOAT_ONLY) ? FALSE : TRUE)); + } +} + static void win_settings_machine_recalc_fpu(HWND hdlg) { @@ -714,12 +726,11 @@ win_settings_machine_recalc_fpu(HWND hdlg) c++; } - settings_set_check(hdlg, IDC_CHECK_SOFTFLOAT, (machine_has_flags(temp_machine, MACHINE_SOFTFLOAT_ONLY) ? TRUE : temp_fpu_softfloat)); - settings_enable_window(hdlg, IDC_CHECK_SOFTFLOAT, (machine_has_flags(temp_machine, MACHINE_SOFTFLOAT_ONLY) ? FALSE : TRUE)); - settings_enable_window(hdlg, IDC_COMBO_FPU, c > 1); temp_fpu = fpu_get_type_from_index(temp_cpu_f, temp_cpu, settings_get_cur_sel(hdlg, IDC_COMBO_FPU)); + + win_settings_machine_recalc_softfloat(hdlg); } static void @@ -1046,6 +1057,7 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, UNUSED(LPARAM temp_fpu = fpu_get_type_from_index(temp_cpu_f, temp_cpu, settings_get_cur_sel(hdlg, IDC_COMBO_FPU)); } + win_settings_machine_recalc_softfloat(hdlg); break; case IDC_CONFIGURE_MACHINE: temp_machine = listtomachine[settings_get_cur_sel(hdlg, IDC_COMBO_MACHINE)]; From f7bd0afbac3a1c956413f17bbbbdd1b766371411 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Fri, 1 Sep 2023 06:44:42 +0500 Subject: [PATCH 16/82] Dev branch: Fix the GUS MAX's CS4231 using the wrong DMA channel --- src/sound/snd_gus.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index ce4947e3f..a68435815 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -111,6 +111,7 @@ typedef struct gus_t { int irq; int dma; int irq_midi; + int dma2; uint16_t base; int latch_enable; @@ -600,9 +601,17 @@ writegus(uint16_t addr, uint8_t val, void *priv) gus->sb_nmi = val & 0x80; } else { gus->dma = gus_dmas[val & 7]; + + if (val & 0x40) { + if (gus->dma == -1) + gus->dma = gus->dma2 = gus_dmas[(val >> 3) & 7]; + else + gus->dma2 = gus->dma; + } else + gus->dma2 = gus_dmas[(val >> 3) & 7]; #if defined(DEV_BRANCH) && defined(USE_GUSMAX) if (gus->type == GUS_MAX) - ad1848_setdma(&gus->ad1848, gus->dma); + ad1848_setdma(&gus->ad1848, gus->dma2); #endif } break; @@ -664,7 +673,9 @@ writegus(uint16_t addr, uint8_t val, void *priv) #if defined(DEV_BRANCH) && defined(USE_GUSMAX) if (gus->type == GUS_MAX) { if (gus->dma >= 4) - val |= 0x30; + val |= 0x10; + if (gus->dma2 >= 4) + val |= 0x20; gus->max_ctrl = (val >> 6) & 1; if (val & 0x40) { if ((val & 0xF) != ((addr >> 4) & 0xF)) { From 363e48eaf55a24b6057b2e0056e3a15fa10ec6ac Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Thu, 14 Sep 2023 23:20:58 +0500 Subject: [PATCH 17/82] qt: Disable the Discord integration menu item if the Discord library isn't loaded --- src/qt/qt_mainwindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 1fb44f773..62a79c30d 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -333,6 +333,8 @@ MainWindow::MainWindow(QWidget *parent) #ifndef DISCORD ui->actionEnable_Discord_integration->setVisible(false); +#else + ui->actionEnable_Discord_integration->setEnabled(discord_loaded); #endif #if defined Q_OS_WINDOWS || defined Q_OS_MACOS From 5ce223e46998eeb25bcd99680a72e6779c238245 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Fri, 15 Sep 2023 00:40:57 +0500 Subject: [PATCH 18/82] Add the SOFTFLOAT_ONLY flag to the Quadtel 286 clone Closes #2274 --- src/machine/machine_table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 5ce4b0795..6df37abe9 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -3067,7 +3067,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_AT, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_SOFTFLOAT_ONLY, .ram = { .min = 512, .max = 16384, From 7c6381b2ea18750494657edb86982cde004ca962 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Wed, 20 Sep 2023 20:29:32 +0200 Subject: [PATCH 19/82] SCSI changes and fixes: 1. Added the Tribble 16-bit IBM SCSI adapter. 2. Reworked the vendor unique commands to counter audio issues as well as adding some undocumented commands (thanks to the source code of xmcd!), plus replacing the NEC CD-ROM DRIVE:75 with the :38 one. --- src/cdrom/cdrom.c | 146 +++++++++--- src/include/86box/cdrom.h | 43 ++-- src/include/86box/scsi_spock.h | 1 + src/scsi/scsi.c | 1 + src/scsi/scsi_cdrom.c | 391 +++++++++++++++++++++++---------- src/scsi/scsi_spock.c | 57 +++-- 6 files changed, 454 insertions(+), 185 deletions(-) diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index fa16dbf2c..c09bf874b 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -571,7 +571,6 @@ cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) dev->cd_end = len; dev->cd_status = CD_STATUS_PLAYING; dev->cd_buflen = 0; - return 1; } @@ -624,6 +623,52 @@ cdrom_audio_track_search(cdrom_t *dev, uint32_t pos, int type, uint8_t playbit) return 1; } +uint8_t +cdrom_audio_track_search_pioneer(cdrom_t *dev, uint32_t pos, uint8_t playbit) +{ + int m = 0; + int s = 0; + int f = 0; + + if (dev->cd_status == CD_STATUS_DATA_ONLY) + return 0; + + f = bcd2bin((pos >> 24) & 0xff); + s = bcd2bin((pos >> 16) & 0xff); + m = bcd2bin((pos >> 8) & 0xff); + if (pos == 0xffffffff) { + pos = dev->seek_pos; + } else + pos = MSFtoLBA(m, s, f) - 150; + + dev->seek_pos = pos; + + dev->cd_buflen = 0; + dev->cd_status = playbit ? CD_STATUS_PLAYING : CD_STATUS_PAUSED; + return 1; +} + +uint8_t +cdrom_audio_play_pioneer(cdrom_t *dev, uint32_t pos) +{ + int m = 0; + int s = 0; + int f = 0; + + if (dev->cd_status == CD_STATUS_DATA_ONLY) + return 0; + + f = bcd2bin((pos >> 24) & 0xff); + s = bcd2bin((pos >> 16) & 0xff); + m = bcd2bin((pos >> 8) & 0xff); + pos = MSFtoLBA(m, s, f) - 150; + dev->cd_end = pos; + + dev->cd_buflen = 0; + dev->cd_status = CD_STATUS_PLAYING; + return 1; +} + uint8_t cdrom_audio_play_toshiba(cdrom_t *dev, uint32_t pos, int type) { @@ -664,7 +709,6 @@ cdrom_audio_play_toshiba(cdrom_t *dev, uint32_t pos, int type) /* Unlike standard commands, if there's a data track on an Audio CD (mixed mode) the playback continues with the audio muted (Toshiba CD-ROM SCSI-2 manual reference). */ - dev->cd_buflen = 0; dev->cd_status = CD_STATUS_PLAYING; return 1; @@ -751,7 +795,7 @@ cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf) ret = 0x13; } - cdrom_log("CD-ROM %i: Returned subchannel at %02i:%02i.%02i, ret = %02x, seek pos = %08x, cd_end = %08x.\n", dev->id, subc.abs_m, subc.abs_s, subc.abs_f, ret, dev->seek_pos, dev->cd_end); + cdrom_log("CD-ROM %i: Returned subchannel absolute at %02i:%02i.%02i, relative at %02i:%02i.%02i, ret = %02x, seek pos = %08x, cd_end = %08x.\n", dev->id, subc.abs_m, subc.abs_s, subc.abs_f, subc.rel_m, subc.rel_s, subc.rel_f, ret, dev->seek_pos, dev->cd_end); if (b[pos] > 1) { cdrom_log("B[%i] = %02x, ret = %02x.\n", pos, b[pos], ret); @@ -820,36 +864,62 @@ void cdrom_get_current_subchannel_sony(cdrom_t *dev, uint8_t *b, int msf) { subchannel_t subc; - int pos = 0; uint32_t dat; dev->ops->get_subchannel(dev, dev->seek_pos, &subc); - cdrom_log("CD-ROM %i: Returned subchannel at %02i:%02i.%02i, seek pos = %08x, cd_end = %08x.\n", dev->id, subc.abs_m, subc.abs_s, subc.abs_f, dev->seek_pos, dev->cd_end); + cdrom_log("CD-ROM %i: Returned subchannel at %02i:%02i.%02i, seek pos = %08x, cd_end = %08x, msf = %x.\n", dev->id, subc.abs_m, subc.abs_s, subc.abs_f, dev->seek_pos, dev->cd_end, msf); - b[pos++] = subc.attr; - b[pos++] = subc.track; - b[pos++] = subc.index; + b[0] = subc.attr; + b[1] = subc.track; + b[2] = subc.index; if (msf) { - b[pos++] = subc.rel_m; - b[pos++] = subc.rel_s; - b[pos++] = subc.rel_f; - b[pos++] = subc.abs_m; - b[pos++] = subc.abs_s; - b[pos++] = subc.abs_f; + b[3] = subc.rel_m; + b[4] = subc.rel_s; + b[5] = subc.rel_f; + b[6] = subc.abs_m; + b[7] = subc.abs_s; + b[8] = subc.abs_f; } else { dat = MSFtoLBA(subc.rel_m, subc.rel_s, subc.rel_f); - b[pos++] = (dat >> 16) & 0xff; - b[pos++] = (dat >> 8) & 0xff; - b[pos++] = dat & 0xff; + b[3] = (dat >> 16) & 0xff; + b[4] = (dat >> 8) & 0xff; + b[5] = dat & 0xff; dat = MSFtoLBA(subc.abs_m, subc.abs_s, subc.abs_f) - 150; - b[pos++] = (dat >> 16) & 0xff; - b[pos++] = (dat >> 8) & 0xff; - b[pos++] = dat & 0xff; + b[6] = (dat >> 16) & 0xff; + b[7] = (dat >> 8) & 0xff; + b[8] = dat & 0xff; } } +uint8_t +cdrom_get_audio_status_pioneer(cdrom_t *dev, uint8_t *b) +{ + uint8_t ret; + subchannel_t subc; + uint32_t dat; + + dev->ops->get_subchannel(dev, dev->seek_pos, &subc); + + if (dev->cd_status == CD_STATUS_DATA_ONLY) + ret = 0x05; + else { + if (dev->cd_status == CD_STATUS_PLAYING) + ret = dev->sound_on ? 0x00 : 0x02; + else if (dev->cd_status == CD_STATUS_PAUSED) + ret = 0x01; + else + ret = 0x03; + } + + b[0] = 0; + b[1] = bin2bcd(subc.abs_m); + b[2] = bin2bcd(subc.abs_s); + b[3] = bin2bcd(subc.abs_f); + + return ret; +} uint8_t cdrom_get_audio_status_sony(cdrom_t *dev, uint8_t *b, int msf) @@ -887,17 +957,36 @@ cdrom_get_audio_status_sony(cdrom_t *dev, uint8_t *b, int msf) return ret; } -uint8_t -cdrom_get_current_subcodeq_playstatus(cdrom_t *dev, uint8_t *b) +void +cdrom_get_current_subcodeq(cdrom_t *dev, uint8_t *b) { - uint8_t ret; + uint8_t ret; subchannel_t subc; dev->ops->get_subchannel(dev, dev->seek_pos, &subc); - cdrom_log("Get Current Subcode-q Play Status = %02x, op = %02x.\n", dev->cd_status, dev->audio_op); + b[0] = subc.attr; + b[1] = bin2bcd(subc.track); + b[2] = bin2bcd(subc.index); + b[3] = bin2bcd(subc.rel_m); + b[4] = bin2bcd(subc.rel_s); + b[5] = bin2bcd(subc.rel_f); + b[6] = bin2bcd(subc.abs_m); + b[7] = bin2bcd(subc.abs_s); + b[8] = bin2bcd(subc.abs_f); +} - if ((dev->cd_status == CD_STATUS_DATA_ONLY) || (dev->cd_status == CD_STATUS_PLAYING_COMPLETED)) +uint8_t +cdrom_get_current_subcodeq_playstatus(cdrom_t *dev, uint8_t *b) +{ + uint8_t ret; + subchannel_t subc; + + dev->ops->get_subchannel(dev, dev->seek_pos, &subc); + + if ((dev->cd_status == CD_STATUS_DATA_ONLY) || + (dev->cd_status == CD_STATUS_PLAYING_COMPLETED) || + (dev->cd_status == CD_STATUS_STOPPED)) ret = 0x03; else ret = (dev->cd_status == CD_STATUS_PLAYING) ? 0x00 : dev->audio_op; @@ -957,9 +1046,7 @@ read_toc_normal(cdrom_t *dev, unsigned char *b, unsigned char start_track, int m /* No suitable starting track, return with error. */ if (first_track == -1) { -#ifdef ENABLE_CDROM_LOG cdrom_log(" [ERROR] No suitable track found\n"); -#endif return -1; } @@ -1128,9 +1215,7 @@ read_toc_sony(cdrom_t *dev, unsigned char *b, unsigned char start_track, int msf /* No suitable starting track, return with error. */ if (first_track == -1) { -#ifdef ENABLE_CDROM_LOG cdrom_log(" [ERROR] No suitable track found\n"); -#endif return -1; } @@ -1138,8 +1223,8 @@ read_toc_sony(cdrom_t *dev, unsigned char *b, unsigned char start_track, int msf cdrom_log(" tracks(%i) = %02X, %02X, %i:%02i.%02i\n", i, ti.attr, ti.number, ti.m, ti.s, ti.f); dev->ops->get_track_info(dev, i + 1, 0, &ti); - b[len++] = ti.attr; b[len++] = ti.number; /* track number */ + b[len++] = ti.attr; if (msf) { b[len++] = 0; @@ -1154,7 +1239,6 @@ read_toc_sony(cdrom_t *dev, unsigned char *b, unsigned char start_track, int msf b[len++] = temp; } } - return len; } diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index bd17449b1..5c9b9fc4f 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -60,7 +60,7 @@ enum { CDROM_BUS_USB = 8 }; -#define KNOWN_CDROM_DRIVE_TYPES 35 +#define KNOWN_CDROM_DRIVE_TYPES 41 #define BUS_TYPE_IDE CDROM_BUS_ATAPI #define BUS_TYPE_SCSI CDROM_BUS_SCSI #define BUS_TYPE_BOTH -2 @@ -99,17 +99,23 @@ static const struct { "CHINON", "CD-ROM CDS-431", "H42 ", "(SCSI) CHINON CD-ROM CDS-431 H42", "CHINON_CD-ROM_CDS-431_H42", BUS_TYPE_SCSI }, /*22*/ { "DEC", "RRD45 (C) DEC", "0436", "(SCSI) DEC RRD45 0436", "DEC_RRD45_0436", BUS_TYPE_SCSI }, /*23*/ { "MATSHITA", "CD-ROM CR-501", "1.0b", "(SCSI) MATSHITA CD-ROM CR-501 1.0b", "MATSHITA_CD-ROM_CR-501_1.0b", BUS_TYPE_SCSI }, /*24*/ - { "NEC", "CD-ROM DRIVE:75", "1.00", "(SCSI) NEC CD-ROM DRIVE:75 1.00", "NEC_CD-ROM_DRIVE75_1.00", BUS_TYPE_SCSI }, /*25*/ - { "NEC", "CD-ROM DRIVE:464", "1.05", "(SCSI) NEC CD-ROM DRIVE:464 1.05", "NEC_CD-ROM_DRIVE464_1.05", BUS_TYPE_SCSI }, /*26*/ - { "SONY", "CD-ROM CDU-541", "1.0i", "(SCSI) SONY CD-ROM CDU-541 1.0i", "SONY_CD-ROM_CDU-541_1.0i", BUS_TYPE_SCSI }, /*27*/ - { "SONY", "CD-ROM CDU-76S", "1.00", "(SCSI) SONY CD-ROM CDU-76S 1.00", "SONY_CD-ROM_CDU-76S_1.00", BUS_TYPE_SCSI }, /*28*/ - { "PHILIPS", "CDD2600", "1.07", "(SCSI) PHILIPS CDD2600 1.07", "PHILIPS_CDD2600_1.07", BUS_TYPE_SCSI }, /*29*/ - { "PIONEER", "CD-ROM DRM-604X", "2403", "(SCSI) PIONEER CD-ROM DRM-604X 2403", "PIONEER_CD-ROM_DRM-604X_2403", BUS_TYPE_SCSI }, /*30*/ - { "PLEXTOR", "CD-ROM PX-32TS", "1.03", "(SCSI) PLEXTOR CD-ROM PX-32TS 1.03", "PLEXTOR_CD-ROM_PX-32TS_1.03", BUS_TYPE_SCSI }, /*31*/ - { "TEAC", "CD-R55S", "1.0R", "(SCSI) TEAC CD-R55S 1.0R", "TEAC_CD-R55S_1.0R", BUS_TYPE_SCSI }, /*32*/ - { "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "(SCSI) TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI }, /*33*/ - { "TOSHIBA", "CD-ROM XM-3301TA", "0272", "(SCSI) TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI }, /*34*/ - { "TOSHIBA", "CD-ROM XM-5701TA", "3136", "(SCSI) TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI }, /*35*/ + { "NEC", "CD-ROM DRIVE:38", "1.03", "(SCSI) NEC CD-ROM DRIVE:38 1.03", "NEC_CD-ROM_DRIVE38_1.03", BUS_TYPE_SCSI }, /*25*/ + { "NEC", "CD-ROM DRIVE:211", "1.00", "(SCSI) NEC CD-ROM DRIVE:211 1.00", "NEC_CD-ROM_DRIVE211_1.00", BUS_TYPE_SCSI }, /*26*/ + { "NEC", "CD-ROM DRIVE:464", "1.05", "(SCSI) NEC CD-ROM DRIVE:464 1.05", "NEC_CD-ROM_DRIVE464_1.05", BUS_TYPE_SCSI }, /*27*/ + { "SONY", "CD-ROM CDU-541", "1.0i", "(SCSI) SONY CD-ROM CDU-541 1.0i", "SONY_CD-ROM_CDU-541_1.0i", BUS_TYPE_SCSI }, /*28*/ + { "SONY", "CD-ROM CDU-561", "1.8k", "(SCSI) SONY CD-ROM CDU-561 1.8k", "SONY_CD-ROM_CDU-561_1.8k", BUS_TYPE_SCSI }, /*29*/ + { "SONY", "CD-ROM CDU-76S", "1.00", "(SCSI) SONY CD-ROM CDU-76S 1.00", "SONY_CD-ROM_CDU-76S_1.00", BUS_TYPE_SCSI }, /*30*/ + { "PHILIPS", "CDD2600", "1.07", "(SCSI) PHILIPS CDD2600 1.07", "PHILIPS_CDD2600_1.07", BUS_TYPE_SCSI }, /*31*/ + { "PIONEER", "CD-ROM DRM-604X", "2403", "(SCSI) PIONEER CD-ROM DRM-604X 2403", "PIONEER_CD-ROM_DRM-604X_2403", BUS_TYPE_SCSI }, /*32*/ + { "PLEXTOR", "CD-ROM PX-32TS", "1.03", "(SCSI) PLEXTOR CD-ROM PX-32TS 1.03", "PLEXTOR_CD-ROM_PX-32TS_1.03", BUS_TYPE_SCSI }, /*33*/ + { "TEAC", "CD 50", "1.00", "(SCSI) TEAC CD 50 1.00", "TEAC_CD_50_1.00", BUS_TYPE_SCSI }, /*34*/ + { "TEAC", "CD-ROM R55S", "1.0R", "(SCSI) TEAC CD-ROM R55S 1.0R", "TEAC_CD-ROM_R55S_1.0R", BUS_TYPE_SCSI }, /*35*/ + { "TEXEL", "CD-ROM DM-XX24", "1.00", "(SCSI) TEXEL CD-ROM DM-XX24 1.00", "TEXEL_CD-ROM_DM-XX24_1.00", BUS_TYPE_SCSI }, /*36*/ + { "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "(SCSI) TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI }, /*37*/ + { "TOSHIBA", "CD-ROM XM-3201B", "3232", "(SCSI) TOSHIBA CD-ROM XM-3201B 3232", "TOSHIBA_CD-ROM_XM-3201B_3232", BUS_TYPE_SCSI }, /*38*/ + { "TOSHIBA", "CD-ROM XM-3301TA", "0272", "(SCSI) TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI }, /*39*/ + { "TOSHIBA", "CD-ROM XM-5701TA", "3136", "(SCSI) TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI }, /*40*/ + { "TOSHIBA", "DVD-ROM SD-M1401", "1008", "(SCSI) TOSHIBA DVD-ROM SD-M1401 1008", "TOSHIBA_DVD-ROM_SD-M1401_1008", BUS_TYPE_SCSI }, /*41*/ { "", "", "", "", "", BUS_TYPE_NONE }, }; @@ -186,15 +192,16 @@ typedef struct cdrom { int prev_host_drive; int cd_buflen; int audio_op; + int sony_msf; const cdrom_ops_t *ops; void *image; - void (*insert)(void *priv); - void (*close)(void *priv); - uint32_t (*get_volume)(void *priv, int channel); - uint32_t (*get_channel)(void *priv, int channel); + void (*insert)(void *p); + void (*close)(void *p); + uint32_t (*get_volume)(void *p, int channel); + uint32_t (*get_channel)(void *p, int channel); int16_t cd_buffer[BUF_SIZE]; } cdrom_t; @@ -215,12 +222,16 @@ extern int cdrom_is_pre(cdrom_t *dev, uint32_t lba); extern int cdrom_audio_callback(cdrom_t *dev, int16_t *output, int len); extern uint8_t cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf); extern uint8_t cdrom_audio_track_search(cdrom_t *dev, uint32_t pos, int type, uint8_t playbit); +extern uint8_t cdrom_audio_track_search_pioneer(cdrom_t *dev, uint32_t pos, uint8_t playbit); +extern uint8_t cdrom_audio_play_pioneer(cdrom_t *dev, uint32_t pos); extern uint8_t cdrom_audio_play_toshiba(cdrom_t *dev, uint32_t pos, int type); extern void cdrom_audio_pause_resume(cdrom_t *dev, uint8_t resume); extern uint8_t cdrom_audio_scan(cdrom_t *dev, uint32_t pos, int type); +extern uint8_t cdrom_get_audio_status_pioneer(cdrom_t *dev, uint8_t *b); extern uint8_t cdrom_get_audio_status_sony(cdrom_t *dev, uint8_t *b, int msf); extern uint8_t cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf); extern void cdrom_get_current_subchannel_sony(cdrom_t *dev, uint8_t *b, int msf); +extern void cdrom_get_current_subcodeq(cdrom_t *dev, uint8_t *b); extern uint8_t cdrom_get_current_subcodeq_playstatus(cdrom_t *dev, uint8_t *b); extern int cdrom_read_toc(cdrom_t *dev, unsigned char *b, int type, unsigned char start_track, int msf, int max_len); diff --git a/src/include/86box/scsi_spock.h b/src/include/86box/scsi_spock.h index bfa579c82..057271772 100644 --- a/src/include/86box/scsi_spock.h +++ b/src/include/86box/scsi_spock.h @@ -22,5 +22,6 @@ #define SCSI_SPOCK_H extern const device_t spock_device; +extern const device_t tribble_device; #endif /*SCSI_SPOCK_H*/ diff --git a/src/scsi/scsi.c b/src/scsi/scsi.c index 8357ba647..8f5bffbd9 100644 --- a/src/scsi/scsi.c +++ b/src/scsi/scsi.c @@ -86,6 +86,7 @@ static SCSI_CARD scsi_cards[] = { { &buslogic_640a_device, }, { &ncr53c90_mca_device, }, { &spock_device, }, + { &tribble_device, }, { &buslogic_958d_pci_device, }, { &ncr53c810_pci_device, }, { &ncr53c815_pci_device, }, diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index d9699dda7..cca446a7a 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -335,7 +335,7 @@ static const mode_sense_pages_t scsi_cdrom_mode_sense_pages_default_sony_scsi = { 0, 0 }, { 0, 0 }, { 0, 0 }, - { GPMODE_CDROM_PAGE_SONY, 2, 1, 0 }, + { GPMODE_CDROM_PAGE_SONY, 2, 0, 5 }, { GPMODE_CDROM_AUDIO_PAGE_SONY | 0x80, 0xE, 5, 0, 0, 0, 0, 0, 1, 255, 2, 255, 0, 0, 0, 0 }, { 0, 0 }, { 0, 0 }, @@ -585,7 +585,10 @@ scsi_cdrom_get_channel(void *priv, int channel) return channel + 1; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) return dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; else return dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; @@ -599,7 +602,10 @@ scsi_cdrom_get_volume(void *priv, int channel) return 255; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) return dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; else return dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; @@ -612,7 +618,10 @@ scsi_cdrom_mode_sense_load(scsi_cdrom_t *dev) char file_name[512]; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { memset(&dev->ms_pages_saved_sony, 0, sizeof(mode_sense_pages_t)); memcpy(&dev->ms_pages_saved_sony, &scsi_cdrom_mode_sense_pages_default_sony_scsi, sizeof(mode_sense_pages_t)); @@ -654,7 +663,10 @@ scsi_cdrom_mode_sense_save(scsi_cdrom_t *dev) memset(file_name, 0, 512); if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { sprintf(file_name, "scsi_cdrom_%02i_mode_sense_sony_bin", dev->id); fp = plat_fopen(nvr_path(file_name), "wb"); if (fp) { @@ -731,7 +743,10 @@ static uint8_t scsi_cdrom_mode_sense_read(scsi_cdrom_t *dev, uint8_t page_control, uint8_t page, uint8_t pos) { if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { switch (page_control) { case 0: case 3: @@ -979,45 +994,73 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) case 0xc6: case 0xc7: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) { bytes_per_second = 176.0 * 1024.0; bytes_per_second *= (double) dev->drv->cur_speed; + break; } - break; + fallthrough; + case 0xc0: + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; + } + fallthrough; case 0xc1: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { bytes_per_second = 176.0 * 1024.0; bytes_per_second *= (double) dev->drv->cur_speed; + break; } - break; + fallthrough; case 0xc2: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { dev->callback += 40.0; bytes_per_second = 176.0 * 1024.0; bytes_per_second *= (double) dev->drv->cur_speed; + break; } - break; + fallthrough; case 0xc3: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { bytes_per_second = 176.0 * 1024.0; bytes_per_second *= (double) dev->drv->cur_speed; + break; } - break; + fallthrough; + case 0xdd: case 0xde: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE75_1.00") || + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { bytes_per_second = 176.0 * 1024.0; bytes_per_second *= (double) dev->drv->cur_speed; + break; } - break; - + fallthrough; default: bytes_per_second = scsi_cdrom_bus_speed(dev); if (bytes_per_second == 0.0) { @@ -1809,7 +1852,8 @@ begin: break; case 0xDA: /*GPCMD_SPEED_ALT*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE75_1.00") || + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { /*GPCMD_STILL_NEC*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); cdrom_audio_pause_resume(dev->drv, 0x00); @@ -1904,14 +1948,16 @@ begin: dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAY_MSF_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAY_MSF_SONY*/ cdb[0] = GPCMD_PLAY_AUDIO_MSF; dev->current_cdb[0] = cdb[0]; dev->sony_vendor = 1; goto begin; } /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/ - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xDE: /*GPCMD_READ_DISC_INFORMATION_NEC*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); scsi_cdrom_buf_alloc(dev, 4); @@ -2040,11 +2086,13 @@ begin: dev->drv->seek_diff = ABS((int) (pos - dev->sector_pos)); if ((cdb[0] == GPCMD_READ_10) || (cdb[0] == GPCMD_READ_12)) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE75_1.00") || + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, cdb[9] & 0xc0); else ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, 0); @@ -2119,7 +2167,10 @@ begin: } if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << (uint64_t) (cdb[2] & 0x3f)))) { scsi_cdrom_invalid_field(dev); scsi_cdrom_buf_free(dev); @@ -2425,16 +2476,25 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, max_len, 0); break; - case 0xC0: /*GPCMD_UNKNOWN_SONY*/ + case 0xC0: /*GPCMD_SET_ADDRESS_FORMAT_SONY*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + dev->sony_vendor = 1; + dev->drv->sony_msf = cdb[8] & 1; scsi_cdrom_command_complete(dev); - dev->sony_vendor = 1; break; - } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/ - scsi_cdrom_illegal_opcode(dev); - break; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_MAGAZINE_EJECT_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + cdrom_eject(dev->id); + scsi_cdrom_command_complete(dev); + break; + } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/ + fallthrough; case 0xD8: /*GPCMD_AUDIO_TRACK_SEARCH_NEC*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -2461,15 +2521,12 @@ begin: case 0xC1: /*GPCMD_READ_TOC_SONY*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - - if (strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { - dev->sony_vendor = 0; - } else { - msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - dev->sony_vendor = 1; - } + msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; + dev->sony_vendor = 1; max_len = cdb[7]; max_len <<= 8; @@ -2482,7 +2539,7 @@ begin: return; } - len = cdrom_read_toc_sony(dev->drv, dev->buffer, cdb[5], msf, max_len); + len = cdrom_read_toc_sony(dev->drv, dev->buffer, cdb[5], msf || dev->drv->sony_msf, max_len); if (len == -1) { /* If the returned length is -1, this means cdrom_read_toc_sony() has encountered an error. */ scsi_cdrom_invalid_field(dev); @@ -2494,9 +2551,28 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, len, 0); return; - } /*GPCMD_PLAY_AUDIO_TOSHIBA*/ - scsi_cdrom_illegal_opcode(dev); - break; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_READ_TOC_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + scsi_cdrom_buf_alloc(dev, 4); + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); + len = 4; + if (!ret) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + } /*GPCMD_PLAY_AUDIO_TOSHIBA*/ + fallthrough; case 0xD9: /*GPCMD_PLAY_AUDIO_NEC*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { @@ -2529,8 +2605,6 @@ begin: len = (cdb[7] << 8) | cdb[8]; break; case GPCMD_PLAY_AUDIO_12: - /* This is apparently deprecated in the ATAPI spec, and apparently - has been since 1995 (!). Hence I'm having to guess most of it. */ msf = 0; pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; len = (cdb[6] << 24) | (cdb[7] << 16) | (cdb[8] << 8) | cdb[9]; @@ -2579,7 +2653,6 @@ begin: case GPCMD_READ_SUBCHANNEL: scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - dev->sony_vendor = 0; max_len = cdb[7]; max_len <<= 8; @@ -2658,7 +2731,10 @@ begin: case 0xC6: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); dev->sony_vendor = 1; @@ -2683,8 +2759,7 @@ begin: scsi_cdrom_illegal_mode(dev); break; } /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA and GPCMD_STOP_CHINON*/ - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xDD: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_NEC*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -2796,7 +2871,10 @@ begin: dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAYBACK_STATUS_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAYBACK_STATUS_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); dev->sony_vendor = 1; @@ -2807,14 +2885,14 @@ begin: scsi_cdrom_buf_alloc(dev, 18); - len = max_len; + len = 18; - memset(dev->buffer, 0, 10); + memset(dev->buffer, 0, 18); dev->buffer[0] = 0x00; /*Reserved*/ dev->buffer[1] = 0x00; /*Reserved*/ - dev->buffer[2] = cdb[7]; /*Audio Status data length*/ - dev->buffer[3] = cdb[8]; /*Audio Status data length*/ - dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf); /*Audio status*/ + dev->buffer[2] = 0x00; /*Audio Status data length*/ + dev->buffer[3] = 0x00; /*Audio Status data length*/ + dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf || dev->drv->sony_msf); /*Audio status*/ dev->buffer[5] = 0x00; scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[4]); @@ -2825,8 +2903,7 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; } /*GPCMD_CADDY_EJECT_TOSHIBA and GPCMD_CADDY_EJECT_NEC*/ - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xDC: scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); scsi_cdrom_stop(sc); @@ -2914,7 +2991,8 @@ begin: dev->buffer[3] = 0x02; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) { dev->buffer[2] = 0x05; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433")) { + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k")) { dev->buffer[2] = 0x02; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272")) { dev->buffer[2] = 0x02; @@ -2923,7 +3001,10 @@ begin: } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { dev->buffer[3] = 0x01; dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i")) { + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { dev->buffer[3] = 0x01; dev->buffer[2] = 0x02; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { @@ -2932,11 +3013,9 @@ begin: } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { dev->buffer[3] = 0x01; dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE75_1.00")) { + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03")) { dev->buffer[3] = 0x01; dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - dev->buffer[2] = 0x02; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { dev->buffer[2] = 0x02; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { @@ -2955,12 +3034,12 @@ begin: } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PLEXTOR_CD-ROM_PX-32TS_1.03")) { dev->buffer[6] = 0x01; /* 16-bit transfers supported */ dev->buffer[7] = 0x20; /* Wide bus supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEAC_CD-R55S_1.0R")) { + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEAC_CD-ROM_R55S_1.0R") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEAC_CD_50_1.00")) { dev->buffer[6] = 0x01; /* 16-bit transfers supported */ dev->buffer[7] = 0x20; /* Wide bus supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - dev->buffer[7] = 0x98; /* Linked Command and Relative Addressing supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433")) { + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232")) { dev->buffer[4] = 91; /* Always 91 on Toshiba SCSI-2 CD-ROM drives from 1990*/ dev->buffer[7] = 0x88; /* Linked Command and Relative Addressing supported */ } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272")) { @@ -2984,12 +3063,13 @@ begin: ide_padstr8(dev->buffer + 32, 4, cdrom_drive_types[dev->drv->type].revision); /* Revision */ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { dev->buffer[36] = 0x20; - ide_padstr8(dev->buffer + 37, 10, "1993/01/01"); /* Date */ + ide_padstr8(dev->buffer + 37, 10, "1991/01/01"); /* Date */ } } idx = 36; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) /*Toshiba only*/ idx = 96; @@ -3038,7 +3118,10 @@ atapi_out: dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_READ_HEADER_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_READ_HEADER_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); dev->sony_vendor = 1; @@ -3061,8 +3144,6 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, len, 0); return; } /*GPCMD_SET_STOP_TIME_TOSHIBA and GPCMD_SET_STOP_TIME_NEC*/ - scsi_cdrom_illegal_opcode(dev); - break; case 0xDB: scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); scsi_cdrom_command_complete(dev); @@ -3075,34 +3156,63 @@ atapi_out: goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_READ_SUBCHANNEL_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_READ_SUBCHANNEL_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - - dev->sony_vendor = !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") ? 0 : 1; + dev->sony_vendor = 1; max_len = cdb[7]; max_len <<= 8; max_len |= cdb[8]; - if (strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) - msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; + msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - scsi_cdrom_buf_alloc(dev, 32); + scsi_cdrom_log("CD-ROM %i: Getting sub-channel type (%s), code-q = %02x\n", dev->id, msf ? "MSF" : "LBA", cdb[2] & 0x40); - scsi_cdrom_log("CD-ROM %i: Getting sub-channel type (%s)\n", dev->id, msf ? "MSF" : "LBA"); + if (cdb[2] & 0x40) { + scsi_cdrom_buf_alloc(dev, 9); + memset(dev->buffer, 0, 9); + len = 9; + cdrom_get_current_subchannel_sony(dev->drv, dev->buffer, msf || dev->drv->sony_msf); + len = MIN(len, max_len); + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + } else { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Drive Status All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + } + break; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_READ_SUBCODEQ_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - if (!(cdb[2] & 0x40)) - alloc_length = 4; - else - alloc_length = 24; + alloc_length = cdb[1] & 0x1f; + len = 9; - len = alloc_length; + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } - memset(dev->buffer, 0, 24); - cdrom_get_current_subchannel_sony(dev->drv, dev->buffer, msf); + if (!alloc_length) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + break; + } - len = MIN(len, max_len); - scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_buf_alloc(dev, len); + len = MIN(len, alloc_length); + memset(dev->buffer, 0, len); + cdrom_get_current_subcodeq(dev->drv, &dev->buffer[1]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + + scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; } @@ -3130,11 +3240,13 @@ atapi_out: } dev->drv->seek_diff = ABS((int) (pos - dev->drv->seek_pos)); if (cdb[0] == GPCMD_SEEK_10) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE75_1.00") || + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) cdrom_seek(dev->drv, pos, cdb[9] & 0xc0); else cdrom_seek(dev->drv, pos, 0); @@ -3181,36 +3293,57 @@ atapi_out: dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PAUSE_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PAUSE_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); dev->sony_vendor = 1; cdrom_audio_pause_resume(dev->drv, !(cdb[1] & 0x10)); scsi_cdrom_command_complete(dev); break; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xC8: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX; dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAY_AUDIO_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAY_AUDIO_SONY*/ cdb[0] = GPCMD_PLAY_AUDIO_10; dev->current_cdb[0] = cdb[0]; dev->sony_vendor = 1; goto begin; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_AUDIO_TRACK_SEARCH_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_track_search_pioneer(dev->drv, pos, cdb[1] & 1); + dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xC9: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10; dev->current_cdb[0] = cdb[0]; goto begin; } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAYBACK_CONTROL_SONY*/ + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAYBACK_CONTROL_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_OUT); dev->sony_vendor = 1; @@ -3220,9 +3353,22 @@ atapi_out: scsi_cdrom_set_buf_len(dev, BufLen, &len); scsi_cdrom_data_command_finish(dev, len, len, len, 1); break; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PLAY_AUDIO_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_play_pioneer(dev->drv, pos); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xCA: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PAUSE_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -3230,35 +3376,33 @@ atapi_out: scsi_cdrom_command_complete(dev); break; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xCB: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PAUSE_RESUME_MATSUSHITA*/ cdb[0] = GPCMD_PAUSE_RESUME; dev->current_cdb[0] = cdb[0]; goto begin; + } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_STOP_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + break; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xCC: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PLAYBACK_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); max_len = cdb[7]; max_len <<= 8; max_len |= cdb[8]; - scsi_cdrom_buf_alloc(dev, 18); + scsi_cdrom_buf_alloc(dev, 6); - len = max_len; + len = 6; - memset(dev->buffer, 0, 10); - dev->buffer[0] = 0x00; /*Reserved*/ - dev->buffer[1] = 0x00; /*Reserved*/ - dev->buffer[2] = cdb[7]; /*Audio Status data length*/ - dev->buffer[3] = cdb[8]; /*Audio Status data length*/ - dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf); /*Audio status*/ - dev->buffer[5] = 0x00; + memset(dev->buffer, 0, 6); + dev->buffer[0] = cdrom_get_audio_status_pioneer(dev->drv, &dev->buffer[1]); /*Audio status*/ scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[4]); @@ -3268,8 +3412,7 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xE0: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_DRIVE_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); @@ -3305,24 +3448,21 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, alloc_length, 0); return; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xE5: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_12; dev->current_cdb[0] = cdb[0]; goto begin; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; case 0xE9: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12; dev->current_cdb[0] = cdb[0]; goto begin; } - scsi_cdrom_illegal_opcode(dev); - break; + fallthrough; default: scsi_cdrom_illegal_opcode(dev); break; @@ -3401,7 +3541,10 @@ scsi_cdrom_phase_data_out(scsi_common_t *sc) pos += 2; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << ((uint64_t) page)))) { scsi_cdrom_log("CD-ROM %i: Unimplemented page %02X\n", dev->id, page); error |= 1; @@ -3444,7 +3587,10 @@ scsi_cdrom_phase_data_out(scsi_common_t *sc) pos += page_len; if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) val = scsi_cdrom_mode_sense_pages_default_sony_scsi.pages[page][0] & 0x80; else if (dev->drv->bus_type == CDROM_BUS_SCSI) val = scsi_cdrom_mode_sense_pages_default_scsi.pages[page][0] & 0x80; @@ -3466,7 +3612,10 @@ scsi_cdrom_phase_data_out(scsi_common_t *sc) break; case 0xC9: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || + !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { for (i = 0; i < 18; i++) { dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY][i] = dev->buffer[i]; } diff --git a/src/scsi/scsi_spock.c b/src/scsi/scsi_spock.c index d70afca76..6ce79f097 100644 --- a/src/scsi/scsi_spock.c +++ b/src/scsi/scsi_spock.c @@ -135,7 +135,7 @@ typedef struct { int cir_status; uint8_t pacing; - + uint8_t irq_state; uint8_t buf[0x600]; struct { @@ -159,6 +159,7 @@ typedef struct { int scb_state; int in_reset; int in_invalid; + int spock_16bit; uint64_t temp_period; double media_period; @@ -247,18 +248,18 @@ spock_rethink_irqs(spock_t *scsi) if (irq_pending) { spock_log("IRQ issued\n"); scsi->irq_inactive = 0; - picint(1 << scsi->irq); + picintlevel(1 << scsi->irq, &scsi->irq_state); } else { /* No IRQs pending, clear IRQ state */ spock_log("IRQ cleared\n"); scsi->irq_status = 0; scsi->irq_inactive = 1; scsi->status &= ~STATUS_IRQ; - picintc(1 << scsi->irq); + picintclevel(1 << scsi->irq, &scsi->irq_state); } } else { spock_log("IRQ disabled\n"); - picintc(1 << scsi->irq); + picintclevel(1 << scsi->irq, &scsi->irq_state); } } @@ -674,9 +675,9 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) spock_log("Get POS Info\n"); get_pos_info_t *get_pos_info = &scsi->get_pos_info; - get_pos_info->pos = 0x8eff; + get_pos_info->pos = scsi->spock_16bit ? 0x8efe : 0x8eff; get_pos_info->pos1 = scsi->pos_regs[3] | (scsi->pos_regs[2] << 8); - get_pos_info->pos2 = 0x0e | (scsi->pos_regs[4] << 8); + get_pos_info->pos2 = scsi->irq | (scsi->pos_regs[4] << 8); get_pos_info->pos3 = 1 << 12; get_pos_info->pos4 = (7 << 8) | 8; get_pos_info->pos5 = (16 << 8) | scsi->pacing; @@ -716,7 +717,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb) case CMD_SEND_OTHER_SCSI: scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id]; dma_bm_read(scsi->scb_addr + 0x18, scsi->cdb, 12, 2); - spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id); + spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, CDB[0]=%02x, CDB_ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->cdb[0], scsi->cdb_id); scsi->cdb[1] = (scsi->cdb[1] & 0x1f) | (scsi->dev_id[scsi->scb_id].lun_id << 5); /*Patch correct LUN into command*/ scsi->cdb_len = (scb->lba_addr & 0xff) ? (scb->lba_addr & 0xff) : 6; scsi->scsi_state = SCSI_STATE_SELECT; @@ -916,7 +917,7 @@ spock_process_scsi(spock_t *scsi, scb_t *scb) scsi_device_command_phase0(sd, scsi->temp_cdb); spock_log("SCSI ID %i: Current CDB[0] = %02x, LUN = %i, data len = %i, max len = %i, phase val = %02x\n", scsi->cdb_id, scsi->temp_cdb[0], scsi->temp_cdb[1] >> 5, sd->buffer_length, spock_get_len(scsi, scb), sd->phase); - if (sd->phase != SCSI_PHASE_STATUS && sd->buffer_length > 0) { + if ((sd->phase != SCSI_PHASE_STATUS) && (sd->buffer_length > 0)) { p = scsi_device_get_callback(sd); if (p <= 0.0) spock_add_to_period(scsi, sd->buffer_length); @@ -969,9 +970,9 @@ spock_process_scsi(spock_t *scsi, scb_t *scb) scsi->scsi_state = SCSI_STATE_IDLE; spock_log("State to idle, cmd timer %d\n", scsi->cmd_timer); - if (!scsi->cmd_timer) { + if (!scsi->cmd_timer) scsi->cmd_timer = 1; - } + spock_add_to_period(scsi, 1); break; } @@ -1056,7 +1057,7 @@ spock_callback(void *priv) period = 0.2 * ((double) scsi->temp_period); timer_on_auto(&scsi->callback_timer, (scsi->media_period + period + 10.0)); - spock_log("Temporary period: %lf us (%" PRIi64 " periods)\n", scsi->callback_timer.period, scsi->temp_period); + spock_log("Temporary period: %lf us (%" PRIi64 " periods), media period = %lf\n", scsi->callback_timer.period, scsi->temp_period, scsi->media_period); } static void @@ -1081,6 +1082,7 @@ spock_mca_write(int port, uint8_t val, void *priv) mem_mapping_enable(&scsi->bios_rom.mapping); } } + spock_log("[%04X:%08X]: POS Write Port = %x, val = %02x, rom addr = %05x\n", CS, cpu_state.pc, port & 7, val, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000); } static uint8_t @@ -1088,6 +1090,8 @@ spock_mca_read(int port, void *priv) { const spock_t *scsi = (spock_t *) priv; + spock_log("[%04X:%08X]: POS Read Port = %x, val = %02x\n", CS, cpu_state.pc, + port & 7, scsi->pos_regs[port & 7]); return scsi->pos_regs[port & 7]; } @@ -1118,10 +1122,14 @@ spock_mca_reset(void *priv) scsi_device_reset(&scsi_devices[scsi->bus][i]); scsi->present[i] = 0; } + + spock_log("Reset.\n"); + mem_mapping_disable(&scsi->bios_rom.mapping); + spock_mca_write(0x102, 0, scsi); } static void * -spock_init(UNUSED(const device_t *info)) +spock_init(const device_t *info) { spock_t *scsi = malloc(sizeof(spock_t)); memset(scsi, 0x00, sizeof(spock_t)); @@ -1131,23 +1139,24 @@ spock_init(UNUSED(const device_t *info)) scsi->irq = 14; scsi->bios_ver = device_get_config_int("bios_ver"); + scsi->spock_16bit = info->local & 0xff; switch (scsi->bios_ver) { - case 1: - rom_init_interleaved(&scsi->bios_rom, SPOCK_U68_1991_ROM, SPOCK_U69_1991_ROM, - 0xc8000, 0x8000, 0x7fff, 0x4000, MEM_MAPPING_EXTERNAL); - break; case 0: rom_init_interleaved(&scsi->bios_rom, SPOCK_U68_1990_ROM, SPOCK_U69_1990_ROM, 0xc8000, 0x8000, 0x7fff, 0x4000, MEM_MAPPING_EXTERNAL); break; + case 1: + rom_init_interleaved(&scsi->bios_rom, SPOCK_U68_1991_ROM, SPOCK_U69_1991_ROM, + 0xc8000, 0x8000, 0x7fff, 0x4000, MEM_MAPPING_EXTERNAL); + break; default: break; } mem_mapping_disable(&scsi->bios_rom.mapping); - scsi->pos_regs[0] = 0xff; + scsi->pos_regs[0] = scsi->spock_16bit ? 0xfe : 0xff; scsi->pos_regs[1] = 0x8e; mca_add(spock_mca_read, spock_mca_write, spock_mca_feedb, spock_mca_reset, scsi); @@ -1218,3 +1227,17 @@ const device_t spock_device = { .force_redraw = NULL, .config = spock_rom_config }; + +const device_t tribble_device = { + .name = "IBM PS/2 SCSI Adapter (Tribble)", + .internal_name = "tribble", + .flags = DEVICE_MCA, + .local = 1, + .init = spock_init, + .close = spock_close, + .reset = NULL, + { .available = spock_available }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = spock_rom_config +}; From 45ecdf37de7228c9f96ea0875a8cf66e52d59e74 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Wed, 20 Sep 2023 23:14:00 +0200 Subject: [PATCH 20/82] SCSI corrections: 1. Changed the p's back to priv's. 2. Made the Spock/Tribble cards use picint instead of picintlevel. 3. Corrected fallthroughs and a minor change in the SCSI CD-ROM code core. --- src/include/86box/cdrom.h | 8 ++++++-- src/scsi/scsi_cdrom.c | 20 +------------------- src/scsi/scsi_spock.c | 6 +++--- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 5c9b9fc4f..761c9e13e 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -198,8 +198,8 @@ typedef struct cdrom { void *image; - void (*insert)(void *p); - void (*close)(void *p); + void (*insert)(void *priv); + void (*close)(void *priv); uint32_t (*get_volume)(void *p, int channel); uint32_t (*get_channel)(void *p, int channel); @@ -254,6 +254,10 @@ extern int cdrom_image_open(cdrom_t *dev, const char *fn); extern void cdrom_image_close(cdrom_t *dev); extern void cdrom_image_reset(cdrom_t *dev); +extern void cdrom_ioctl_eject(void); +extern void cdrom_ioctl_load(void); +extern int cdrom_ioctl_open(cdrom_t *dev, const char d); + extern void cdrom_update_cdb(uint8_t *cdb, int lba_pos, int number_of_blocks); diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index cca446a7a..142df587c 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -1002,7 +1002,6 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) bytes_per_second *= (double) dev->drv->cur_speed; break; } - fallthrough; case 0xc0: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || @@ -1013,7 +1012,6 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) bytes_per_second *= (double) dev->drv->cur_speed; break; } - fallthrough; case 0xc1: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || @@ -1025,7 +1023,6 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) bytes_per_second *= (double) dev->drv->cur_speed; break; } - fallthrough; case 0xc2: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || @@ -1038,7 +1035,6 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) bytes_per_second *= (double) dev->drv->cur_speed; break; } - fallthrough; case 0xc3: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || @@ -1050,7 +1046,6 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) bytes_per_second *= (double) dev->drv->cur_speed; break; } - fallthrough; case 0xdd: case 0xde: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03") || @@ -1861,7 +1856,6 @@ begin: scsi_cdrom_command_complete(dev); break; } - fallthrough; case GPCMD_SET_SPEED: dev->drv->cur_speed = (cdb[3] | (cdb[2] << 8)) / 176; if (dev->drv->cur_speed < 1) @@ -1957,7 +1951,6 @@ begin: dev->sony_vendor = 1; goto begin; } /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/ - fallthrough; case 0xDE: /*GPCMD_READ_DISC_INFORMATION_NEC*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); scsi_cdrom_buf_alloc(dev, 4); @@ -2494,7 +2487,6 @@ begin: scsi_cdrom_command_complete(dev); break; } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/ - fallthrough; case 0xD8: /*GPCMD_AUDIO_TRACK_SEARCH_NEC*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -2572,7 +2564,6 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, len, 0); return; } /*GPCMD_PLAY_AUDIO_TOSHIBA*/ - fallthrough; case 0xD9: /*GPCMD_PLAY_AUDIO_NEC*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { @@ -2759,7 +2750,6 @@ begin: scsi_cdrom_illegal_mode(dev); break; } /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA and GPCMD_STOP_CHINON*/ - fallthrough; case 0xDD: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_NEC*/ if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -2903,7 +2893,6 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; } /*GPCMD_CADDY_EJECT_TOSHIBA and GPCMD_CADDY_EJECT_NEC*/ - fallthrough; case 0xDC: scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); scsi_cdrom_stop(sc); @@ -3303,7 +3292,6 @@ atapi_out: scsi_cdrom_command_complete(dev); break; } - fallthrough; case 0xC8: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX; @@ -3332,8 +3320,8 @@ atapi_out: scsi_cdrom_command_complete(dev); else scsi_cdrom_illegal_mode(dev); + break; } - fallthrough; case 0xC9: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10; @@ -3368,7 +3356,6 @@ atapi_out: scsi_cdrom_illegal_mode(dev); break; } - fallthrough; case 0xCA: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PAUSE_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -3376,7 +3363,6 @@ atapi_out: scsi_cdrom_command_complete(dev); break; } - fallthrough; case 0xCB: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PAUSE_RESUME_MATSUSHITA*/ cdb[0] = GPCMD_PAUSE_RESUME; @@ -3388,7 +3374,6 @@ atapi_out: scsi_cdrom_command_complete(dev); break; } - fallthrough; case 0xCC: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PLAYBACK_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); @@ -3412,7 +3397,6 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; } - fallthrough; case 0xE0: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_DRIVE_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); @@ -3448,14 +3432,12 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, alloc_length, 0); return; } - fallthrough; case 0xE5: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_12; dev->current_cdb[0] = cdb[0]; goto begin; } - fallthrough; case 0xE9: if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12; diff --git a/src/scsi/scsi_spock.c b/src/scsi/scsi_spock.c index 6ce79f097..57a39a8d3 100644 --- a/src/scsi/scsi_spock.c +++ b/src/scsi/scsi_spock.c @@ -248,18 +248,18 @@ spock_rethink_irqs(spock_t *scsi) if (irq_pending) { spock_log("IRQ issued\n"); scsi->irq_inactive = 0; - picintlevel(1 << scsi->irq, &scsi->irq_state); + picint(1 << scsi->irq); } else { /* No IRQs pending, clear IRQ state */ spock_log("IRQ cleared\n"); scsi->irq_status = 0; scsi->irq_inactive = 1; scsi->status &= ~STATUS_IRQ; - picintclevel(1 << scsi->irq, &scsi->irq_state); + picintc(1 << scsi->irq); } } else { spock_log("IRQ disabled\n"); - picintclevel(1 << scsi->irq, &scsi->irq_state); + picintc(1 << scsi->irq); } } From a20a98c75537407f7969a851a3016dfaebd22ee6 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Thu, 21 Sep 2023 21:05:28 +0500 Subject: [PATCH 21/82] Blocklist the CPUs without an internal FPU on the IBM PS/2 Model 70 type 4 --- src/machine/machine_table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 6df37abe9..dfe5f3599 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -5518,7 +5518,7 @@ const machine_t machines[] = { .pad2 = 0, .cpu = { .package = CPU_PKG_SOCKET1, - .block = CPU_BLOCK_NONE, + .block = CPU_BLOCK(CPU_i486SX, CPU_i486SX_SLENH, CPU_Am486SX, CPU_Cx486S), .min_bus = 0, .max_bus = 0, .min_voltage = 0, From 1753d85c88110ea45e170138ecb0ac8ad8c27acf Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Thu, 21 Sep 2023 21:07:40 +0500 Subject: [PATCH 22/82] Bump minimum RAM limit for the Soyo 4SAW2 and Zida 4DP to 2 MB This prevents the BIOS hanging with 1 MB of RAM set --- src/machine/machine_table.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index dfe5f3599..aebbb70f2 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -6955,7 +6955,7 @@ const machine_t machines[] = { .bus_flags = MACHINE_PS2_PCIV, .flags = MACHINE_IDE_DUAL | MACHINE_APM, .ram = { - .min = 1024, + .min = 2048, .max = 261120, .step = 1024 }, @@ -6995,7 +6995,7 @@ const machine_t machines[] = { .bus_flags = MACHINE_PS2_PCI, .flags = MACHINE_IDE_DUAL | MACHINE_APM, .ram = { - .min = 1024, + .min = 2048, .max = 261120, .step = 1024 }, From 5c9509d51da4c1f56355ba4007b145e94e6b9c13 Mon Sep 17 00:00:00 2001 From: Yishay Vadai Date: Sat, 23 Sep 2023 20:57:33 +0300 Subject: [PATCH 23/82] Init LPT before Network to fix PLIP mode. --- src/86box.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/86box.c b/src/86box.c index 5865823c8..5637415e3 100644 --- a/src/86box.c +++ b/src/86box.c @@ -1071,11 +1071,13 @@ pc_reset_hard_init(void) /* Reset and reconfigure the Sound Card layer. */ sound_card_reset(); + /* Initialize parallel devices. */ + /* note: PLIP LPT side has to be initialized before the network side */ + lpt_devices_init(); + /* Reset and reconfigure the Network Card layer. */ network_reset(); - lpt_devices_init(); - /* Reset and reconfigure the serial ports. */ serial_standalone_init(); serial_passthrough_init(); From f30c71ed3bcd32dbaa79ac1a92d9b9700a44b38d Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sun, 24 Sep 2023 07:44:25 +0200 Subject: [PATCH 24/82] SCSI changes 2: Replaced the string comparisons with proper drive types comparisons without strings. --- src/cdrom/cdrom.c | 10 +- src/include/86box/cdrom.h | 46 + src/scsi/scsi_cdrom.c | 1911 +++++++++++++++++++++---------------- 3 files changed, 1161 insertions(+), 806 deletions(-) diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index c09bf874b..c06e47f07 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -531,7 +531,7 @@ cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) f = pos & 0xff; /* NEC CDR-260 speaks BCD. */ - if (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC*/ + if ((dev->type == CDROM_TYPE_NEC_260_100) || (dev->type == CDROM_TYPE_NEC_260_101)) /*NEC*/ msf_from_bcd(&m, &s, &f); if (pos == 0xffffff) { @@ -545,7 +545,7 @@ cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) f = len & 0xff; /* NEC CDR-260 speaks BCD. */ - if (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC*/ + if ((dev->type == CDROM_TYPE_NEC_260_100) || (dev->type == CDROM_TYPE_NEC_260_101)) /*NEC*/ msf_from_bcd(&m, &s, &f); len = MSFtoLBA(m, s, f) - 150; @@ -810,7 +810,7 @@ cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf) b[pos] = 0; /* NEC CDR-260 speaks BCD. */ - if (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC*/ { + if ((dev->type == CDROM_TYPE_NEC_260_100) || (dev->type == CDROM_TYPE_NEC_260_101)) { /*NEC*/ m = subc.abs_m; s = subc.abs_s; f = subc.abs_f; @@ -829,7 +829,7 @@ cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf) b[pos] = 0; /* NEC CDR-260 speaks BCD. */ - if (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC*/ { + if ((dev->type == CDROM_TYPE_NEC_260_100) || (dev->type == CDROM_TYPE_NEC_260_101)) { /*NEC*/ m = subc.rel_m; s = subc.rel_s; f = subc.rel_f; @@ -1063,7 +1063,7 @@ read_toc_normal(cdrom_t *dev, unsigned char *b, unsigned char start_track, int m b[len++] = 0; /* NEC CDR-260 speaks BCD. */ - if (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || (!strcmp(cdrom_drive_types[dev->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) { /*NEC*/ + if ((dev->type == CDROM_TYPE_NEC_260_100) || (dev->type == CDROM_TYPE_NEC_260_101)) { /*NEC*/ m = ti.m; s = ti.s; f = ti.f; diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 761c9e13e..ee8315d3c 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -60,6 +60,52 @@ enum { CDROM_BUS_USB = 8 }; +enum +{ + CDROM_TYPE_86BOX_100, + CDROM_TYPE_AZT_CDA46802I_115, + CDROM_TYPE_BTC_BCD36XH_U10, + CDROM_TYPE_GOLDSTAR_CRD_8160B_314, + CDROM_TYPE_HITACHI_CDR_8130_0020, + CDROM_TYPE_KENWOOD_UCR_421_208E, + CDROM_TYPE_MATSHITA_587_7S13, + CDROM_TYPE_MATSHITA_588_LS15, + CDROM_TYPE_MATSHITA_571_10e, + CDROM_TYPE_MATSHITA_572_10j, + CDROM_TYPE_MITSUMI_FX4820T_D02A, + CDROM_TYPE_NEC_260_100, + CDROM_TYPE_NEC_260_101, + CDROM_TYPE_NEC_273_420, + CDROM_TYPE_NEC_280_105, + CDROM_TYPE_NEC_280_308, + CDROM_TYPE_PHILIPS_PCA403CD_U31P, + CDROM_TYPE_SONY_CDU76_10i, + CDROM_TYPE_SONY_CDU311_30h, + CDROM_TYPE_TOSHIBA_5302TA_0305, + CDROM_TYPE_TOSHIBA_5702B_TA70, + CDROM_TYPE_CHINON_CDS431_H42, + CDROM_TYPE_DEC_RRD45_0436, + CDROM_TYPE_MATSHITA_501_10b, + CDROM_TYPE_NEC_38_103, + CDROM_TYPE_NEC_211_100, + CDROM_TYPE_NEC_464_105, + CDROM_TYPE_SONY_CDU541_10i, + CDROM_TYPE_SONY_CDU561_18k, + CDROM_TYPE_SONY_CDU76S_100, + CDROM_TYPE_PHILIPS_CDD2600_107, + CDROM_TYPE_PIONEER_DRM604X_2403, + CDROM_TYPE_PLEXTOR_PX32TS_103, + CDROM_TYPE_TEAC_CD50_100, + CDROM_TYPE_TEAC_R55S_10R, + CDROM_TYPE_TEXEL_DMXX24_100, + CDROM_TYPE_TOSHIBA_XM_3433, + CDROM_TYPE_TOSHIBA_XM3201B_3232, + CDROM_TYPE_TOSHIBA_XM3301TA_0272, + CDROM_TYPE_TOSHIBA_XM5701TA_3136, + CDROM_TYPE_TOSHIBA_SDM1401_1008, + CDROM_TYPES_NUM +}; + #define KNOWN_CDROM_DRIVE_TYPES 41 #define BUS_TYPE_IDE CDROM_BUS_ATAPI #define BUS_TYPE_SCSI CDROM_BUS_SCSI diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index 142df587c..7cc685da4 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -520,7 +520,7 @@ scsi_cdrom_init(scsi_cdrom_t *dev) dev->sense[0] = 0xf0; dev->sense[7] = 10; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00")) /*NEC only*/ + if ((dev->drv->type == CDROM_TYPE_NEC_260_100) || (dev->drv->type == CDROM_TYPE_NEC_260_101)) /*NEC only*/ dev->status = READY_STAT | DSC_STAT; else dev->status = 0; @@ -529,7 +529,7 @@ scsi_cdrom_init(scsi_cdrom_t *dev) scsi_cdrom_sense_key = scsi_cdrom_asc = scsi_cdrom_ascq = dev->unit_attention = 0; dev->drv->cur_speed = dev->drv->speed; scsi_cdrom_mode_sense_load(dev); - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) scsi_cdrom_drive_status_load(dev); } @@ -581,34 +581,50 @@ static uint32_t scsi_cdrom_get_channel(void *priv, int channel) { const scsi_cdrom_t *dev = (scsi_cdrom_t *) priv; + uint32_t ret; + if (!dev) return channel + 1; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) - return dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; - else - return dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + ret = dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; + break; + default: + ret = dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 10 : 8]; + break; + } + + return ret; } static uint32_t scsi_cdrom_get_volume(void *priv, int channel) { const scsi_cdrom_t *dev = (scsi_cdrom_t *) priv; + uint32_t ret; + if (!dev) return 255; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) - return dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; - else - return dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + ret = dev->ms_pages_saved_sony.pages[dev->sony_vendor ? GPMODE_CDROM_AUDIO_PAGE_SONY : GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; + break; + default: + ret = dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE][channel ? 11 : 9]; + break; + } + + return ret; } static void @@ -617,40 +633,43 @@ scsi_cdrom_mode_sense_load(scsi_cdrom_t *dev) FILE *fp; char file_name[512]; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - memset(&dev->ms_pages_saved_sony, 0, sizeof(mode_sense_pages_t)); - memcpy(&dev->ms_pages_saved_sony, &scsi_cdrom_mode_sense_pages_default_sony_scsi, sizeof(mode_sense_pages_t)); + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + memset(&dev->ms_pages_saved_sony, 0, sizeof(mode_sense_pages_t)); + memcpy(&dev->ms_pages_saved_sony, &scsi_cdrom_mode_sense_pages_default_sony_scsi, sizeof(mode_sense_pages_t)); - memset(file_name, 0, 512); - sprintf(file_name, "scsi_cdrom_%02i_mode_sense_sony_bin", dev->id); - fp = plat_fopen(nvr_path(file_name), "rb"); - if (fp) { - if (fread(dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1, 0x10, fp) != 0x10) - fatal("scsi_cdrom_mode_sense_load(): Error reading data\n"); - fclose(fp); - } - } else { - memset(&dev->ms_pages_saved, 0, sizeof(mode_sense_pages_t)); - if (dev->drv->bus_type == CDROM_BUS_SCSI) - memcpy(&dev->ms_pages_saved, &scsi_cdrom_mode_sense_pages_default_scsi, sizeof(mode_sense_pages_t)); - else - memcpy(&dev->ms_pages_saved, &scsi_cdrom_mode_sense_pages_default, sizeof(mode_sense_pages_t)); + memset(file_name, 0, 512); + sprintf(file_name, "scsi_cdrom_%02i_mode_sense_sony_bin", dev->id); + fp = plat_fopen(nvr_path(file_name), "rb"); + if (fp) { + if (fread(dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1, 0x10, fp) != 0x10) + fatal("scsi_cdrom_mode_sense_load(): Error reading data\n"); + fclose(fp); + } + break; + default: + memset(&dev->ms_pages_saved, 0, sizeof(mode_sense_pages_t)); + if (dev->drv->bus_type == CDROM_BUS_SCSI) + memcpy(&dev->ms_pages_saved, &scsi_cdrom_mode_sense_pages_default_scsi, sizeof(mode_sense_pages_t)); + else + memcpy(&dev->ms_pages_saved, &scsi_cdrom_mode_sense_pages_default, sizeof(mode_sense_pages_t)); - memset(file_name, 0, 512); - if (dev->drv->bus_type == CDROM_BUS_SCSI) - sprintf(file_name, "scsi_cdrom_%02i_mode_sense_bin", dev->id); - else - sprintf(file_name, "cdrom_%02i_mode_sense_bin", dev->id); - fp = plat_fopen(nvr_path(file_name), "rb"); - if (fp) { - if (fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE], 1, 0x10, fp) != 0x10) - fatal("scsi_cdrom_mode_sense_load(): Error reading data\n"); - fclose(fp); - } + memset(file_name, 0, 512); + if (dev->drv->bus_type == CDROM_BUS_SCSI) + sprintf(file_name, "scsi_cdrom_%02i_mode_sense_bin", dev->id); + else + sprintf(file_name, "cdrom_%02i_mode_sense_bin", dev->id); + fp = plat_fopen(nvr_path(file_name), "rb"); + if (fp) { + if (fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE], 1, 0x10, fp) != 0x10) + fatal("scsi_cdrom_mode_sense_load(): Error reading data\n"); + fclose(fp); + } + break; } } @@ -662,27 +681,30 @@ scsi_cdrom_mode_sense_save(scsi_cdrom_t *dev) memset(file_name, 0, 512); - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - sprintf(file_name, "scsi_cdrom_%02i_mode_sense_sony_bin", dev->id); - fp = plat_fopen(nvr_path(file_name), "wb"); - if (fp) { - fwrite(dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1, 0x10, fp); - fclose(fp); - } - } else { - if (dev->drv->bus_type == CDROM_BUS_SCSI) - sprintf(file_name, "scsi_cdrom_%02i_mode_sense_bin", dev->id); - else - sprintf(file_name, "cdrom_%02i_mode_sense_bin", dev->id); - fp = plat_fopen(nvr_path(file_name), "wb"); - if (fp) { - fwrite(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE], 1, 0x10, fp); - fclose(fp); - } + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + sprintf(file_name, "scsi_cdrom_%02i_mode_sense_sony_bin", dev->id); + fp = plat_fopen(nvr_path(file_name), "wb"); + if (fp) { + fwrite(dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1, 0x10, fp); + fclose(fp); + } + break; + default: + if (dev->drv->bus_type == CDROM_BUS_SCSI) + sprintf(file_name, "scsi_cdrom_%02i_mode_sense_bin", dev->id); + else + sprintf(file_name, "cdrom_%02i_mode_sense_bin", dev->id); + fp = plat_fopen(nvr_path(file_name), "wb"); + if (fp) { + fwrite(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE], 1, 0x10, fp); + fclose(fp); + } + break; } } @@ -742,40 +764,42 @@ scsi_cdrom_drive_status(scsi_cdrom_t *dev, uint8_t *buf, uint32_t pos, uint8_t p static uint8_t scsi_cdrom_mode_sense_read(scsi_cdrom_t *dev, uint8_t page_control, uint8_t page, uint8_t pos) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - switch (page_control) { - case 0: - case 3: - return dev->ms_pages_saved_sony.pages[page][pos]; - case 1: - return scsi_cdrom_mode_sense_pages_changeable_sony.pages[page][pos]; - case 2: - return scsi_cdrom_mode_sense_pages_default_sony_scsi.pages[page][pos]; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + switch (page_control) { + case 0: + case 3: + return dev->ms_pages_saved_sony.pages[page][pos]; + case 1: + return scsi_cdrom_mode_sense_pages_changeable_sony.pages[page][pos]; + case 2: + return scsi_cdrom_mode_sense_pages_default_sony_scsi.pages[page][pos]; - default: - break; - } - } else { - switch (page_control) { - case 0: - case 3: - return dev->ms_pages_saved.pages[page][pos]; - case 1: - return scsi_cdrom_mode_sense_pages_changeable.pages[page][pos]; - case 2: - if (dev->drv->bus_type == CDROM_BUS_SCSI) - return scsi_cdrom_mode_sense_pages_default_scsi.pages[page][pos]; - else - return scsi_cdrom_mode_sense_pages_default.pages[page][pos]; + default: + break; + } + break; + default: + switch (page_control) { + case 0: + case 3: + return dev->ms_pages_saved.pages[page][pos]; + case 1: + return scsi_cdrom_mode_sense_pages_changeable.pages[page][pos]; + case 2: + if (dev->drv->bus_type == CDROM_BUS_SCSI) + return scsi_cdrom_mode_sense_pages_default_scsi.pages[page][pos]; + else + return scsi_cdrom_mode_sense_pages_default.pages[page][pos]; - default: - break; - - } + default: + break; + } + break; } return 0; @@ -818,10 +842,10 @@ scsi_cdrom_mode_sense(scsi_cdrom_t *dev, uint8_t *buf, uint32_t pos, uint8_t pag /* The early CD-ROM drives we emulate (NEC CDR-260 for ATAPI and early vendor SCSI CD-ROM models) are caddy drives, the later ones are tray drives. */ if (dev->drv->bus_type == CDROM_BUS_SCSI) { - buf[pos++] |= ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) ? 0x20 : 0x00); + buf[pos++] |= ((dev->drv->type == CDROM_TYPE_86BOX_100) ? 0x20 : 0x00); } else { - buf[pos++] |= ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00")) ? 0x00 : 0x20); + buf[pos++] |= ((dev->drv->type == CDROM_TYPE_NEC_260_100) || + ((dev->drv->type == CDROM_TYPE_NEC_260_101)) ? 0x00 : 0x20); } } else if ((i == GPMODE_CAPABILITIES_PAGE) && (j >= 6) && (j <= 7)) { if (j & 1) @@ -829,7 +853,7 @@ scsi_cdrom_mode_sense(scsi_cdrom_t *dev, uint8_t *buf, uint32_t pos, uint8_t pag else buf[pos++] = ((dev->drv->speed * 176) >> 8); } else if ((i == GPMODE_CAPABILITIES_PAGE) && (j >= 8) && (j <= 9) && - (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403"))) { + (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403)) { if (j & 1) buf[pos++] = ((dev->drv->speed * 176) & 0xff); else @@ -993,67 +1017,63 @@ scsi_cdrom_command_common(scsi_cdrom_t *dev) break; case 0xc6: case 0xc7: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) { - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; + switch (dev->drv->type) { + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; } case 0xc0: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; } case 0xc1: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_PIONEER_DRM604X_2403: + case CDROM_TYPE_TEXEL_DMXX24_100: + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; } case 0xc2: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - dev->callback += 40.0; - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; - } case 0xc3: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_PIONEER_DRM604X_2403: + case CDROM_TYPE_TEXEL_DMXX24_100: + if (dev->current_cdb[0] == 0xc2) + dev->callback += 40.0; + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; } case 0xdd: case 0xde: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { - bytes_per_second = 176.0 * 1024.0; - bytes_per_second *= (double) dev->drv->cur_speed; - break; + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: + bytes_per_second = 176.0 * 1024.0; + bytes_per_second *= (double) dev->drv->cur_speed; + break; } fallthrough; default: @@ -1847,15 +1867,17 @@ begin: break; case 0xDA: /*GPCMD_SPEED_ALT*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { /*GPCMD_STILL_NEC*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - cdrom_audio_pause_resume(dev->drv, 0x00); - dev->drv->audio_op = 0x01; - scsi_cdrom_command_complete(dev); - break; + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_STILL_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + cdrom_audio_pause_resume(dev->drv, 0x00); + dev->drv->audio_op = 0x01; + scsi_cdrom_command_complete(dev); + break; } + fallthrough; case GPCMD_SET_SPEED: dev->drv->cur_speed = (cdb[3] | (cdb[2] << 8)) / 176; if (dev->drv->cur_speed < 1) @@ -1930,48 +1952,87 @@ begin: scsi_cdrom_buf_free(dev); return; } - scsi_cdrom_set_buf_len(dev, BufLen, &len); scsi_cdrom_data_command_finish(dev, len, len, len, 0); return; case 0xC7: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_MSF_MATSUSHITA*/ - cdb[0] = GPCMD_PLAY_AUDIO_MSF; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAY_MSF_SONY*/ - cdb[0] = GPCMD_PLAY_AUDIO_MSF; - dev->current_cdb[0] = cdb[0]; - dev->sony_vendor = 1; - goto begin; - } /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/ - case 0xDE: /*GPCMD_READ_DISC_INFORMATION_NEC*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - scsi_cdrom_buf_alloc(dev, 4); + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_PLAY_AUDIO_MSF_MATSUSHITA*/ + cdb[0] = GPCMD_PLAY_AUDIO_MSF; + dev->current_cdb[0] = cdb[0]; + goto begin; + break; + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PLAY_MSF_SONY*/ + cdb[0] = GPCMD_PLAY_AUDIO_MSF; + dev->current_cdb[0] = cdb[0]; + dev->sony_vendor = 1; + goto begin; + break; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + scsi_cdrom_buf_alloc(dev, 4); - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); + len = 4; + if (!ret) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + default: + scsi_cdrom_illegal_opcode(dev); + break; } + break; - ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); - len = 4; - if (!ret) { - scsi_cdrom_invalid_field(dev); - scsi_cdrom_buf_free(dev); - return; + case 0xDE: + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_READ_DISC_INFORMATION_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + scsi_cdrom_buf_alloc(dev, 4); + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); + len = 4; + if (!ret) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + default: + scsi_cdrom_illegal_opcode(dev); + break; } - - scsi_cdrom_set_buf_len(dev, BufLen, &len); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - return; - + break; case GPCMD_READ_CD_OLD: /* IMPORTANT: Convert the command to new read CD for pass through purposes. */ @@ -2079,16 +2140,21 @@ begin: dev->drv->seek_diff = ABS((int) (pos - dev->sector_pos)); if ((cdb[0] == GPCMD_READ_10) || (cdb[0] == GPCMD_READ_12)) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) - ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, cdb[9] & 0xc0); - else - ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, 0); + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: + ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, cdb[9] & 0xc0); + break; + default: + ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, 0); + break; + } } else ret = scsi_cdrom_read_blocks(dev, &alloc_length, 1, 0); @@ -2159,24 +2225,26 @@ begin: scsi_cdrom_buf_alloc(dev, 65536); } - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << (uint64_t) (cdb[2] & 0x3f)))) { - scsi_cdrom_invalid_field(dev); - scsi_cdrom_buf_free(dev); - return; - } - } else { - if (!(scsi_cdrom_mode_sense_page_flags & (1LL << (uint64_t) (cdb[2] & 0x3f)))) { - scsi_cdrom_invalid_field(dev); - scsi_cdrom_buf_free(dev); - return; - } + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << (uint64_t) (cdb[2] & 0x3f)))) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + break; + default: + if (!(scsi_cdrom_mode_sense_page_flags & (1LL << (uint64_t) (cdb[2] & 0x3f)))) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + break; } - memset(dev->buffer, 0, len); alloc_length = len; @@ -2469,114 +2537,175 @@ begin: scsi_cdrom_data_command_finish(dev, len, len, max_len, 0); break; - case 0xC0: /*GPCMD_SET_ADDRESS_FORMAT_SONY*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - dev->sony_vendor = 1; - dev->drv->sony_msf = cdb[8] & 1; - scsi_cdrom_command_complete(dev); - break; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_MAGAZINE_EJECT_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - cdrom_eject(dev->id); - scsi_cdrom_command_complete(dev); - break; - } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/ - case 0xD8: /*GPCMD_AUDIO_TRACK_SEARCH_NEC*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - cdrom_eject(dev->id); - scsi_cdrom_command_complete(dev); - } else { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); - break; - } - pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - ret = cdrom_audio_track_search(dev->drv, pos, cdb[9] & 0xc0, cdb[1] & 1); - dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; - - if (ret) + case 0xC0: + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_SET_ADDRESS_FORMAT_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + dev->sony_vendor = 1; + dev->drv->sony_msf = cdb[8] & 1; scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_MAGAZINE_EJECT_PIONEER*/ + case CDROM_TYPE_CHINON_CDS431_H42: /*GPCMD_EJECT_CHINON*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + cdrom_eject(dev->id); + scsi_cdrom_command_complete(dev); + break; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_track_search(dev->drv, pos, cdb[9] & 0xc0, cdb[1] & 1); + dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } break; - case 0xC1: /*GPCMD_READ_TOC_SONY*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - dev->sony_vendor = 1; + case 0xD8: + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_AUDIO_TRACK_SEARCH_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_track_search(dev->drv, pos, cdb[9] & 0xc0, cdb[1] & 1); + dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; - max_len = cdb[7]; - max_len <<= 8; - max_len |= cdb[8]; - - scsi_cdrom_buf_alloc(dev, 65536); - - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; - } - - len = cdrom_read_toc_sony(dev->drv, dev->buffer, cdb[5], msf || dev->drv->sony_msf, max_len); - if (len == -1) { - /* If the returned length is -1, this means cdrom_read_toc_sony() has encountered an error. */ - scsi_cdrom_invalid_field(dev); - scsi_cdrom_buf_free(dev); - return; - } - - scsi_cdrom_set_buf_len(dev, BufLen, &len); - - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - return; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_READ_TOC_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - scsi_cdrom_buf_alloc(dev, 4); - - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; - } - - ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); - len = 4; - if (!ret) { - scsi_cdrom_invalid_field(dev); - scsi_cdrom_buf_free(dev); - return; - } - - scsi_cdrom_set_buf_len(dev, BufLen, &len); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - return; - } /*GPCMD_PLAY_AUDIO_TOSHIBA*/ - case 0xD9: /*GPCMD_PLAY_AUDIO_NEC*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); - break; + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } - pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - ret = cdrom_audio_play_toshiba(dev->drv, pos, cdb[9] & 0xc0); + break; - if (ret) - scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); + case 0xC1: + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_READ_TOC_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; + dev->sony_vendor = 1; + + max_len = cdb[7]; + max_len <<= 8; + max_len |= cdb[8]; + + scsi_cdrom_buf_alloc(dev, 65536); + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + len = cdrom_read_toc_sony(dev->drv, dev->buffer, cdb[5], msf || dev->drv->sony_msf, max_len); + if (len == -1) { + /* If the returned length is -1, this means cdrom_read_toc_sony() has encountered an error. */ + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_READ_TOC_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + scsi_cdrom_buf_alloc(dev, 4); + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + ret = cdrom_read_disc_info_toc(dev->drv, dev->buffer, cdb[2], cdb[1] & 3); + len = 4; + if (!ret) { + scsi_cdrom_invalid_field(dev); + scsi_cdrom_buf_free(dev); + return; + } + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_PLAY_AUDIO_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_play_toshiba(dev->drv, pos, cdb[9] & 0xc0); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } + break; + + case 0xD9: + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_PLAY_AUDIO_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_play_toshiba(dev->drv, pos, cdb[9] & 0xc0); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } break; case GPCMD_PLAY_AUDIO_10: @@ -2701,13 +2830,13 @@ begin: dev->buffer[1] = 0x11; break; case CD_STATUS_PAUSED: - dev->buffer[1] = (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) ? 0x15 : 0x12; + dev->buffer[1] = (dev->drv->type == CDROM_TYPE_CHINON_CDS431_H42) ? 0x15 : 0x12; break; case CD_STATUS_DATA_ONLY: - dev->buffer[1] = (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) ? 0x00 : 0x15; + dev->buffer[1] = (dev->drv->type == CDROM_TYPE_CHINON_CDS431_H42) ? 0x00 : 0x15; break; default: - dev->buffer[1] = (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) ? 0x00 : 0x13; + dev->buffer[1] = (dev->drv->type == CDROM_TYPE_CHINON_CDS431_H42) ? 0x00 : 0x13; break; } @@ -2721,69 +2850,117 @@ begin: break; case 0xC6: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - dev->sony_vendor = 1; - - msf = 3; - if ((cdb[5] != 1) || (cdb[8] != 1)) { - scsi_cdrom_illegal_mode(dev); - break; - } - pos = cdb[4]; - - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); - break; - } - - /* In this case, len is unused so just pass a fixed value of 1 intead. */ - ret = cdrom_audio_play(dev->drv, pos, 1 /*len*/, msf); - - if (ret) - scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); - break; - } /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA and GPCMD_STOP_CHINON*/ - case 0xDD: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_NEC*/ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - scsi_cdrom_command_complete(dev); - } else { - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - - alloc_length = cdb[1] & 0x1f; - len = 10; - - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; - } - - if (!alloc_length) { + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PLAY_TRACK_SONY*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); - dev->packet_status = PHASE_COMPLETE; - dev->callback = 20.0 * CDROM_TIME; - scsi_cdrom_set_callback(dev); + dev->sony_vendor = 1; + + msf = 3; + if ((cdb[5] != 1) || (cdb[8] != 1)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = cdb[4]; + + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + + /* In this case, len is unused so just pass a fixed value of 1 intead. */ + ret = cdrom_audio_play(dev->drv, pos, 1 /*len*/, msf); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); break; - } + case CDROM_TYPE_CHINON_CDS431_H42: /*GPCMD_STOP_CHINON*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + break; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - scsi_cdrom_buf_alloc(dev, len); - len = MIN(len, alloc_length); + alloc_length = cdb[1] & 0x1f; + len = 10; - memset(dev->buffer, 0, len); - dev->buffer[0] = cdrom_get_current_subcodeq_playstatus(dev->drv, &dev->buffer[1]); - scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } - scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); + if (!alloc_length) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + break; + } + + scsi_cdrom_buf_alloc(dev, len); + len = MIN(len, alloc_length); + + memset(dev->buffer, 0, len); + dev->buffer[0] = cdrom_get_current_subcodeq_playstatus(dev->drv, &dev->buffer[1]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + + scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } + break; + + case 0xDD: + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + + alloc_length = cdb[1] & 0x1f; + len = 10; + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + if (!alloc_length) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + break; + } + + scsi_cdrom_buf_alloc(dev, len); + len = MIN(len, alloc_length); + + memset(dev->buffer, 0, len); + dev->buffer[0] = cdrom_get_current_subcodeq_playstatus(dev->drv, &dev->buffer[1]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + + scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } break; @@ -2823,10 +3000,14 @@ begin: } break; - case 0x26: /*GPCMD_UNKNOWN_CHINON*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - scsi_cdrom_command_complete(dev); + case 0x26: + if (dev->drv->type == CDROM_TYPE_CHINON_CDS431_H42) { /*GPCMD_UNKNOWN_CHINON*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + } else { + scsi_cdrom_illegal_opcode(dev); + } break; case GPCMD_START_STOP_UNIT: @@ -2856,48 +3037,74 @@ begin: break; case 0xC4: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_READ_HEADER_MATSUSHITA*/ - cdb[0] = GPCMD_READ_HEADER; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAYBACK_STATUS_SONY*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - dev->sony_vendor = 1; + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_READ_HEADER_MATSUSHITA*/ + cdb[0] = GPCMD_READ_HEADER; + dev->current_cdb[0] = cdb[0]; + goto begin; + break; + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PLAYBACK_STATUS_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + dev->sony_vendor = 1; - max_len = cdb[7]; - max_len <<= 8; - max_len |= cdb[8]; - msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; + max_len = cdb[7]; + max_len <<= 8; + max_len |= cdb[8]; + msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - scsi_cdrom_buf_alloc(dev, 18); + scsi_cdrom_buf_alloc(dev, 18); - len = 18; + len = 18; - memset(dev->buffer, 0, 18); - dev->buffer[0] = 0x00; /*Reserved*/ - dev->buffer[1] = 0x00; /*Reserved*/ - dev->buffer[2] = 0x00; /*Audio Status data length*/ - dev->buffer[3] = 0x00; /*Audio Status data length*/ - dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf || dev->drv->sony_msf); /*Audio status*/ - dev->buffer[5] = 0x00; + memset(dev->buffer, 0, 18); + dev->buffer[0] = 0x00; /*Reserved*/ + dev->buffer[1] = 0x00; /*Reserved*/ + dev->buffer[2] = 0x00; /*Audio Status data length*/ + dev->buffer[3] = 0x00; /*Audio Status data length*/ + dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf || dev->drv->sony_msf); /*Audio status*/ + dev->buffer[5] = 0x00; - scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[4]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[4]); - len = MIN(len, max_len); - scsi_cdrom_set_buf_len(dev, BufLen, &len); + len = MIN(len, max_len); + scsi_cdrom_set_buf_len(dev, BufLen, &len); + + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + break; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_CADDY_EJECT_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + cdrom_eject(dev->id); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } + break; - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - break; - } /*GPCMD_CADDY_EJECT_TOSHIBA and GPCMD_CADDY_EJECT_NEC*/ case 0xDC: - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - cdrom_eject(dev->id); - scsi_cdrom_command_complete(dev); + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_CADDY_EJECT_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + cdrom_eject(dev->id); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } break; case GPCMD_INQUIRY: @@ -2945,14 +3152,14 @@ begin: dev->buffer[idx++] = 0x00; dev->buffer[idx++] = 68; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) + if (dev->drv->type == CDROM_TYPE_86BOX_100) ide_padstr8(dev->buffer + idx, 8, EMU_NAME); /* Vendor */ else ide_padstr8(dev->buffer + idx, 8, cdrom_drive_types[dev->drv->type].vendor); /* Vendor */ idx += 8; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) + if (dev->drv->type == CDROM_TYPE_86BOX_100) ide_padstr8(dev->buffer + idx, 40, device_identify_ex); /* Product */ else ide_padstr8(dev->buffer + idx, 40, cdrom_drive_types[dev->drv->type].model); /* Product */ @@ -2978,37 +3185,27 @@ begin: if (dev->drv->bus_type == CDROM_BUS_SCSI) { dev->buffer[3] = 0x02; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) { - dev->buffer[2] = 0x05; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k")) { - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272")) { - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) { - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42")) { - dev->buffer[3] = 0x01; - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - dev->buffer[3] = 0x01; - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { - dev->buffer[3] = 0x01; - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { - dev->buffer[3] = 0x01; - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE38_1.03")) { - dev->buffer[3] = 0x01; - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05")) { - dev->buffer[2] = 0x02; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { - dev->buffer[2] = 0x02; + switch (dev->drv->type) { + case CDROM_TYPE_86BOX_100: + dev->buffer[2] = 0x05; /*SCSI-2 compliant*/ + break; + case CDROM_TYPE_CHINON_CDS431_H42: + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_MATSHITA_501_10b: + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEAC_CD50_100: + case CDROM_TYPE_TEAC_R55S_10R: + case CDROM_TYPE_TEXEL_DMXX24_100: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + dev->buffer[2] = 0x01; + dev->buffer[3] = 0x01; /*SCSI-1 compliant*/ + break; + default: + dev->buffer[2] = 0x02; /*SCSI-2 compliant*/ + break; } } else { dev->buffer[2] = 0x00; @@ -3017,32 +3214,25 @@ begin: dev->buffer[4] = 31; if (dev->drv->bus_type == CDROM_BUS_SCSI) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) { - dev->buffer[6] = 0x01; /* 16-bit transfers supported */ - dev->buffer[7] = 0x20; /* Wide bus supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PLEXTOR_CD-ROM_PX-32TS_1.03")) { - dev->buffer[6] = 0x01; /* 16-bit transfers supported */ - dev->buffer[7] = 0x20; /* Wide bus supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEAC_CD-ROM_R55S_1.0R") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEAC_CD_50_1.00")) { - dev->buffer[6] = 0x01; /* 16-bit transfers supported */ - dev->buffer[7] = 0x20; /* Wide bus supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232")) { - dev->buffer[4] = 91; /* Always 91 on Toshiba SCSI-2 CD-ROM drives from 1990*/ - dev->buffer[7] = 0x88; /* Linked Command and Relative Addressing supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272")) { - dev->buffer[4] = 91; /* Always 91 on Toshiba SCSI-2 CD-ROM drives from 1990*/ - dev->buffer[7] = 0x88; /* Linked Command and Relative Addressing supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) { - dev->buffer[4] = 91; /* Always 91 on Toshiba SCSI-2 CD-ROM drives from 1990*/ - dev->buffer[7] = 0x88; /* Linked Command and Relative Addressing supported */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { - dev->buffer[4] = 42; + switch (dev->drv->type) { + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + dev->buffer[4] = 91; /* Always 91 on Toshiba SCSI-1 (or SCSI-2) CD-ROM drives from 1989-1990*/ + dev->buffer[7] = 0x88; /* Linked Command and Relative Addressing supported */ + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: + dev->buffer[4] = 42; + break; + default: + dev->buffer[6] = 0x01; /* 16-bit transfers supported */ + dev->buffer[7] = 0x20; /* Wide bus supported */ + break; } } - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) { + if (dev->drv->type == CDROM_TYPE_86BOX_100) { ide_padstr8(dev->buffer + 8, 8, EMU_NAME); /* Vendor */ ide_padstr8(dev->buffer + 16, 16, device_identify); /* Product */ ide_padstr8(dev->buffer + 32, 4, EMU_VERSION_EX); /* Revision */ @@ -3050,24 +3240,29 @@ begin: ide_padstr8(dev->buffer + 8, 8, cdrom_drive_types[dev->drv->type].vendor); /* Vendor */ ide_padstr8(dev->buffer + 16, 16, cdrom_drive_types[dev->drv->type].model); /* Product */ ide_padstr8(dev->buffer + 32, 4, cdrom_drive_types[dev->drv->type].revision); /* Revision */ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) { dev->buffer[36] = 0x20; ide_padstr8(dev->buffer + 37, 10, "1991/01/01"); /* Date */ } } idx = 36; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136")) /*Toshiba only*/ - idx = 96; - else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) /*Pioneer only*/ + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) idx = 47; else { - if (max_len == 96) { - dev->buffer[4] = 91; - idx = 96; + switch (dev->drv->type) { + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + idx = 96; + break; + default: + if (max_len == 96) { + dev->buffer[4] = 91; + idx = 96; + } + break; } } } @@ -3102,114 +3297,148 @@ atapi_out: break; case 0xC3: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_READ_TOC_MATSUSHITA*/ - cdb[0] = GPCMD_READ_TOC_PMA_ATIP; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_READ_HEADER_SONY*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - dev->sony_vendor = 1; + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_READ_TOC_MATSUSHITA*/ + cdb[0] = GPCMD_READ_TOC_PMA_ATIP; + dev->current_cdb[0] = cdb[0]; + goto begin; + break; + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_READ_HEADER_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + dev->sony_vendor = 1; - alloc_length = ((cdb[7] << 8) | cdb[8]); - scsi_cdrom_buf_alloc(dev, 4); + alloc_length = ((cdb[7] << 8) | cdb[8]); + scsi_cdrom_buf_alloc(dev, 4); - dev->sector_len = 1; - dev->sector_pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - real_pos = cdrom_lba_to_msf_accurate(dev->sector_pos); - dev->buffer[0] = ((real_pos >> 16) & 0xff); - dev->buffer[1] = ((real_pos >> 8) & 0xff); - dev->buffer[2] = real_pos & 0xff; - dev->buffer[3] = 1; /*2048 bytes user data*/ + dev->sector_len = 1; + dev->sector_pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + real_pos = cdrom_lba_to_msf_accurate(dev->sector_pos); + dev->buffer[0] = ((real_pos >> 16) & 0xff); + dev->buffer[1] = ((real_pos >> 8) & 0xff); + dev->buffer[2] = real_pos & 0xff; + dev->buffer[3] = 1; /*2048 bytes user data*/ - len = 4; - len = MIN(len, alloc_length); + len = 4; + len = MIN(len, alloc_length); - scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_set_buf_len(dev, BufLen, &len); + + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + return; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_SET_STOP_TIME_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } + break; - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - return; - } /*GPCMD_SET_STOP_TIME_TOSHIBA and GPCMD_SET_STOP_TIME_NEC*/ case 0xDB: - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_command_complete(dev); + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: /*GPCMD_SET_STOP_TIME_NEC*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; + } break; case 0xC2: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_READ_SUBCHANNEL_MATSUSHITA*/ - cdb[0] = GPCMD_READ_SUBCHANNEL; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_READ_SUBCHANNEL_SONY*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - dev->sony_vendor = 1; - - max_len = cdb[7]; - max_len <<= 8; - max_len |= cdb[8]; - msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - - scsi_cdrom_log("CD-ROM %i: Getting sub-channel type (%s), code-q = %02x\n", dev->id, msf ? "MSF" : "LBA", cdb[2] & 0x40); - - if (cdb[2] & 0x40) { - scsi_cdrom_buf_alloc(dev, 9); - memset(dev->buffer, 0, 9); - len = 9; - cdrom_get_current_subchannel_sony(dev->drv, dev->buffer, msf || dev->drv->sony_msf); - len = MIN(len, max_len); - scsi_cdrom_set_buf_len(dev, BufLen, &len); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - } else { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_log("CD-ROM %i: Drive Status All done - callback set\n", dev->id); - dev->packet_status = PHASE_COMPLETE; - dev->callback = 20.0 * CDROM_TIME; - scsi_cdrom_set_callback(dev); - } - break; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_READ_SUBCODEQ_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - - alloc_length = cdb[1] & 0x1f; - len = 9; - - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; - } - - if (!alloc_length) { - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); - dev->packet_status = PHASE_COMPLETE; - dev->callback = 20.0 * CDROM_TIME; - scsi_cdrom_set_callback(dev); + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_READ_SUBCHANNEL_MATSUSHITA*/ + cdb[0] = GPCMD_READ_SUBCHANNEL; + dev->current_cdb[0] = cdb[0]; + goto begin; break; - } + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_READ_SUBCHANNEL_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + dev->sony_vendor = 1; - scsi_cdrom_buf_alloc(dev, len); - len = MIN(len, alloc_length); + max_len = cdb[7]; + max_len <<= 8; + max_len |= cdb[8]; + msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01; - memset(dev->buffer, 0, len); - cdrom_get_current_subcodeq(dev->drv, &dev->buffer[1]); - scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + scsi_cdrom_log("CD-ROM %i: Getting sub-channel type (%s), code-q = %02x\n", dev->id, msf ? "MSF" : "LBA", cdb[2] & 0x40); - scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); - break; + if (cdb[2] & 0x40) { + scsi_cdrom_buf_alloc(dev, 9); + memset(dev->buffer, 0, 9); + len = 9; + cdrom_get_current_subchannel_sony(dev->drv, dev->buffer, msf || dev->drv->sony_msf); + len = MIN(len, max_len); + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + } else { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Drive Status All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + } + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_READ_SUBCODEQ_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + + alloc_length = cdb[1] & 0x1f; + len = 9; + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + if (!alloc_length) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: Subcode Q All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + break; + } + + scsi_cdrom_buf_alloc(dev, len); + len = MIN(len, alloc_length); + + memset(dev->buffer, 0, len); + cdrom_get_current_subcodeq(dev->drv, &dev->buffer[1]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + + scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); + break; + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: /*GPCMD_STILL_TOSHIBA*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + cdrom_audio_pause_resume(dev->drv, 0x00); + dev->drv->audio_op = 0x01; + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } - /*GPCMD_STILL_TOSHIBA*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - cdrom_audio_pause_resume(dev->drv, 0x00); - dev->drv->audio_op = 0x01; - scsi_cdrom_command_complete(dev); break; case GPCMD_SEEK_6: @@ -3229,16 +3458,21 @@ atapi_out: } dev->drv->seek_diff = ABS((int) (pos - dev->drv->seek_pos)); if (cdb[0] == GPCMD_SEEK_10) { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE211_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE464_1.05") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_DRIVEXM_3433") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3201B_3232") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-3301TA_0272") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5701TA_3136") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_DVD-ROM_SD-M1401_1008")) - cdrom_seek(dev->drv, pos, cdb[9] & 0xc0); - else - cdrom_seek(dev->drv, pos, 0); + switch (dev->drv->type) { + case CDROM_TYPE_NEC_38_103: + case CDROM_TYPE_NEC_211_100: + case CDROM_TYPE_NEC_464_105: + case CDROM_TYPE_TOSHIBA_XM_3433: + case CDROM_TYPE_TOSHIBA_XM3201B_3232: + case CDROM_TYPE_TOSHIBA_XM3301TA_0272: + case CDROM_TYPE_TOSHIBA_XM5701TA_3136: + case CDROM_TYPE_TOSHIBA_SDM1401_1008: + cdrom_seek(dev->drv, pos, cdb[9] & 0xc0); + break; + default: + cdrom_seek(dev->drv, pos, 0); + break; + } } else cdrom_seek(dev->drv, pos, 0); @@ -3277,105 +3511,137 @@ atapi_out: break; case 0xC5: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_MATSUSHITA*/ - cdb[0] = GPCMD_PLAY_AUDIO_10; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PAUSE_SONY*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - dev->sony_vendor = 1; - cdrom_audio_pause_resume(dev->drv, !(cdb[1] & 0x10)); - scsi_cdrom_command_complete(dev); - break; + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_PLAY_AUDIO_MATSUSHITA*/ + cdb[0] = GPCMD_PLAY_AUDIO_10; + dev->current_cdb[0] = cdb[0]; + goto begin; + break; + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PAUSE_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + dev->sony_vendor = 1; + cdrom_audio_pause_resume(dev->drv, !(cdb[1] & 0x10)); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } + break; + case 0xC8: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA*/ - cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAY_AUDIO_SONY*/ - cdb[0] = GPCMD_PLAY_AUDIO_10; - dev->current_cdb[0] = cdb[0]; - dev->sony_vendor = 1; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_AUDIO_TRACK_SEARCH_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA*/ + cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX; + dev->current_cdb[0] = cdb[0]; + goto begin; break; - } - pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - ret = cdrom_audio_track_search_pioneer(dev->drv, pos, cdb[1] & 1); - dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PLAY_AUDIO_SONY*/ + cdb[0] = GPCMD_PLAY_AUDIO_10; + dev->current_cdb[0] = cdb[0]; + dev->sony_vendor = 1; + goto begin; + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_AUDIO_TRACK_SEARCH_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_track_search_pioneer(dev->drv, pos, cdb[1] & 1); + dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02; - if (ret) - scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); - break; + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } + break; + case 0xC9: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10_MATSUSHITA*/ - cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { /*GPCMD_PLAYBACK_CONTROL_SONY*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_OUT); - dev->sony_vendor = 1; - - len = (cdb[7] << 8) | cdb[8]; - scsi_cdrom_buf_alloc(dev, 65536); - - scsi_cdrom_set_buf_len(dev, BufLen, &len); - scsi_cdrom_data_command_finish(dev, len, len, len, 1); - break; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PLAY_AUDIO_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10_MATSUSHITA*/ + cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10; + dev->current_cdb[0] = cdb[0]; + goto begin; break; - } - pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - ret = cdrom_audio_play_pioneer(dev->drv, pos); + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: /*GPCMD_PLAYBACK_CONTROL_SONY*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_OUT); + dev->sony_vendor = 1; - if (ret) - scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); - break; + len = (cdb[7] << 8) | cdb[8]; + scsi_cdrom_buf_alloc(dev, 65536); + + scsi_cdrom_set_buf_len(dev, BufLen, &len); + scsi_cdrom_data_command_finish(dev, len, len, len, 1); + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_PLAY_AUDIO_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_play_pioneer(dev->drv, pos); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } + break; + case 0xCA: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PAUSE_PIONEER*/ + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) { /*GPCMD_PAUSE_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); cdrom_audio_pause_resume(dev->drv, !(cdb[1] & 0x10)); scsi_cdrom_command_complete(dev); - break; + } else { + scsi_cdrom_illegal_opcode(dev); } + break; + case 0xCB: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PAUSE_RESUME_MATSUSHITA*/ - cdb[0] = GPCMD_PAUSE_RESUME; - dev->current_cdb[0] = cdb[0]; - goto begin; - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_STOP_PIONEER*/ - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_stop(sc); - scsi_cdrom_command_complete(dev); - break; + switch (dev->drv->type) { + case CDROM_TYPE_MATSHITA_501_10b: /*GPCMD_PAUSE_RESUME_MATSUSHITA*/ + cdb[0] = GPCMD_PAUSE_RESUME; + dev->current_cdb[0] = cdb[0]; + goto begin; + break; + case CDROM_TYPE_PIONEER_DRM604X_2403: /*GPCMD_STOP_PIONEER*/ + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + break; + default: + scsi_cdrom_illegal_opcode(dev); + break; } + break; + case 0xCC: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_PLAYBACK_STATUS_PIONEER*/ + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) { /*GPCMD_PLAYBACK_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); max_len = cdb[7]; @@ -3395,10 +3661,13 @@ atapi_out: scsi_cdrom_set_buf_len(dev, BufLen, &len); scsi_cdrom_data_command_finish(dev, len, len, len, 0); - break; + } else { + scsi_cdrom_illegal_opcode(dev); } + break; + case 0xE0: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) { /*GPCMD_DRIVE_STATUS_PIONEER*/ + if (dev->drv->type == CDROM_TYPE_PIONEER_DRM604X_2403) { /*GPCMD_DRIVE_STATUS_PIONEER*/ scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); len = (cdb[9] | (cdb[8] << 8)); @@ -3431,15 +3700,23 @@ atapi_out: scsi_cdrom_data_command_finish(dev, len, len, alloc_length, 0); return; + } else { + scsi_cdrom_illegal_opcode(dev); } + break; + case 0xE5: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_12_MATSUSHITA*/ + if (dev->drv->type == CDROM_TYPE_MATSHITA_501_10b) { /*GPCMD_PLAY_AUDIO_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_12; dev->current_cdb[0] = cdb[0]; goto begin; + } else { + scsi_cdrom_illegal_opcode(dev); } + break; + case 0xE9: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b")) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12_MATSUSHITA*/ + if (dev->drv->type == CDROM_TYPE_MATSHITA_501_10b) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12_MATSUSHITA*/ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12; dev->current_cdb[0] = cdb[0]; goto begin; @@ -3522,63 +3799,70 @@ scsi_cdrom_phase_data_out(scsi_common_t *sc) pos += 2; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << ((uint64_t) page)))) { - scsi_cdrom_log("CD-ROM %i: Unimplemented page %02X\n", dev->id, page); - error |= 1; - } else { - for (i = 0; i < page_len; i++) { - ch = scsi_cdrom_mode_sense_pages_changeable_sony.pages[page][i + 2]; - val = dev->buffer[pos + i]; - old_val = dev->ms_pages_saved_sony.pages[page][i + 2]; - if (val != old_val) { - if (ch) - dev->ms_pages_saved_sony.pages[page][i + 2] = val; - else { - scsi_cdrom_log("CD-ROM %i: Unchangeable value on position %02X on page %02X\n", dev->id, i + 2, page); - error |= 1; + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + if (!(scsi_cdrom_mode_sense_page_flags_sony & (1LL << ((uint64_t) page)))) { + scsi_cdrom_log("CD-ROM %i: Unimplemented page %02X\n", dev->id, page); + error |= 1; + } else { + for (i = 0; i < page_len; i++) { + ch = scsi_cdrom_mode_sense_pages_changeable_sony.pages[page][i + 2]; + val = dev->buffer[pos + i]; + old_val = dev->ms_pages_saved_sony.pages[page][i + 2]; + if (val != old_val) { + if (ch) + dev->ms_pages_saved_sony.pages[page][i + 2] = val; + else { + scsi_cdrom_log("CD-ROM %i: Unchangeable value on position %02X on page %02X\n", dev->id, i + 2, page); + error |= 1; + } } } } - } - } else { - if (!(scsi_cdrom_mode_sense_page_flags & (1LL << ((uint64_t) page)))) { - scsi_cdrom_log("CD-ROM %i: Unimplemented page %02X\n", dev->id, page); - error |= 1; - } else { - for (i = 0; i < page_len; i++) { - ch = scsi_cdrom_mode_sense_pages_changeable.pages[page][i + 2]; - val = dev->buffer[pos + i]; - old_val = dev->ms_pages_saved.pages[page][i + 2]; - if (val != old_val) { - if (ch) - dev->ms_pages_saved.pages[page][i + 2] = val; - else { - scsi_cdrom_log("CD-ROM %i: Unchangeable value on position %02X on page %02X\n", dev->id, i + 2, page); - error |= 1; + break; + default: + if (!(scsi_cdrom_mode_sense_page_flags & (1LL << ((uint64_t) page)))) { + scsi_cdrom_log("CD-ROM %i: Unimplemented page %02X\n", dev->id, page); + error |= 1; + } else { + for (i = 0; i < page_len; i++) { + ch = scsi_cdrom_mode_sense_pages_changeable.pages[page][i + 2]; + val = dev->buffer[pos + i]; + old_val = dev->ms_pages_saved.pages[page][i + 2]; + if (val != old_val) { + if (ch) + dev->ms_pages_saved.pages[page][i + 2] = val; + else { + scsi_cdrom_log("CD-ROM %i: Unchangeable value on position %02X on page %02X\n", dev->id, i + 2, page); + error |= 1; + } } } } - } + break; } pos += page_len; - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) - val = scsi_cdrom_mode_sense_pages_default_sony_scsi.pages[page][0] & 0x80; - else if (dev->drv->bus_type == CDROM_BUS_SCSI) - val = scsi_cdrom_mode_sense_pages_default_scsi.pages[page][0] & 0x80; - else - val = scsi_cdrom_mode_sense_pages_default.pages[page][0] & 0x80; - + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + val = scsi_cdrom_mode_sense_pages_default_sony_scsi.pages[page][0] & 0x80; + break; + default: + if (dev->drv->bus_type == CDROM_BUS_SCSI) + val = scsi_cdrom_mode_sense_pages_default_scsi.pages[page][0] & 0x80; + else + val = scsi_cdrom_mode_sense_pages_default.pages[page][0] & 0x80; + break; + } if (dev->do_page_save && val) scsi_cdrom_mode_sense_save(dev); @@ -3593,14 +3877,18 @@ scsi_cdrom_phase_data_out(scsi_common_t *sc) } break; case 0xC9: - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-541_1.0i") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-561_1.8k") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TEXEL_CD-ROM_DM-XX24_1.00") || - !strcmp(cdrom_drive_types[dev->drv->type].internal_name, "DEC_RRD45_0436")) { - for (i = 0; i < 18; i++) { - dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY][i] = dev->buffer[i]; - } + switch (dev->drv->type) { + case CDROM_TYPE_DEC_RRD45_0436: + case CDROM_TYPE_SONY_CDU541_10i: + case CDROM_TYPE_SONY_CDU561_18k: + case CDROM_TYPE_SONY_CDU76S_100: + case CDROM_TYPE_TEXEL_DMXX24_100: + for (i = 0; i < 18; i++) { + dev->ms_pages_saved_sony.pages[GPMODE_CDROM_AUDIO_PAGE_SONY][i] = dev->buffer[i]; + } + break; + default: + break; } break; @@ -3684,76 +3972,97 @@ scsi_cdrom_identify(ide_t *ide, int ide_has_dma) device_identify[7] = dev->id + 0x30; scsi_cdrom_log("ATAPI Identify: %s\n", device_identify); - if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01")) || (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC only*/ - ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (1 << 5); /* ATAPI device, CD-ROM drive, removable media, interrupt DRQ */ + if ((dev->drv->type == CDROM_TYPE_NEC_260_100) || (dev->drv->type == CDROM_TYPE_NEC_260_101)) /*NEC only*/ + ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (1 << 5); /* ATAPI device, CD-ROM drive, removable media, interrupt DRQ */ else ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (2 << 5); /* ATAPI device, CD-ROM drive, removable media, accelerated DRQ */ ide_padstr((char *) (ide->buffer + 10), "", 20); /* Serial Number */ - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")) { + if (dev->drv->type == CDROM_TYPE_86BOX_100) { ide_padstr((char *) (ide->buffer + 23), EMU_VERSION_EX, 8); /* Firmware */ ide_padstr((char *) (ide->buffer + 27), device_identify, 40); /* Model */ } else { - if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01")) { - ide_padstr((char *) (ide->buffer + 23), ".110 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "EN C DCR-MOD IREV2:06 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00")) { - ide_padstr((char *) (ide->buffer + 23), ".100 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "EN C DCR-MOD IREV2:06 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "AZT_CDA46802I_1.15")) { - ide_padstr((char *) (ide->buffer + 23), "1.15 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "AZT CDA46802I ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "HITACHI_CDR-8130_0020")) { - ide_padstr((char *) (ide->buffer + 23), "0020 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "HITACHI CDR-8130 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU76_1.0i")) { - ide_padstr((char *) (ide->buffer + 23), "1.0i ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "SONY CD-ROM CDU76 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU311_3.0h")) { - ide_padstr((char *) (ide->buffer + 23), "3.0h ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "SONY CD-ROM CDU311 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE280_1.05")) { - ide_padstr((char *) (ide->buffer + 23), "1.05 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:280 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE280_3.08")) { - ide_padstr((char *) (ide->buffer + 23), "3.08 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:280 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE273_4.20")) { - ide_padstr((char *) (ide->buffer + 23), "4.20 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:273 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5302TA_0305")) { - ide_padstr((char *) (ide->buffer + 23), "0305 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "TOSHIBA CD-ROM XM-5302TA ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "TOSHIBA_CD-ROM_XM-5702B_TA70")) { - ide_padstr((char *) (ide->buffer + 23), "TA70 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "TOSHIBA CD-ROM XM-5702B ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "GOLDSTAR_CRD-8160B_3.14")) { - ide_padstr((char *) (ide->buffer + 23), "3.14 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "GOLDSTAR CRD-8160B ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CR-571_1.0e")) { - ide_padstr((char *) (ide->buffer + 23), "1.0e ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "MATSHITA CR-571 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CR-572_1.0j")) { - ide_padstr((char *) (ide->buffer + 23), "1.0j ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "MATSHITA CR-572 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-587_7S13")) { - ide_padstr((char *) (ide->buffer + 23), "7S13 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "MATSHITA CD-ROM CR-587 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-588_LS15")) { - ide_padstr((char *) (ide->buffer + 23), "LS15 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "MATSHITA CD-ROM CR-588 ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MITSUMI_CRMC-FX4820T_D02A")) { - ide_padstr((char *) (ide->buffer + 23), "D02A ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "MITSUMI CRMC-FX4820T ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PHILIPS_CD-ROM_PCA403CD_U31P")) { - ide_padstr((char *) (ide->buffer + 23), "U31P ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "PHILIPS CD-ROM PCA403CD ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "BTC_CD-ROM_BCD36XH_U1.0")) { - ide_padstr((char *) (ide->buffer + 23), "U1.0 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "BTC CD-ROM BCD36XH ", 40); /* Model */ - } else if (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "KENWOOD_CD-ROM_UCR-421_208E")) { - ide_padstr((char *) (ide->buffer + 23), "208E ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "KENWOOD CD-ROM UCR-421 ", 40); /* Model */ + switch (dev->drv->type) { + case CDROM_TYPE_AZT_CDA46802I_115: + ide_padstr((char *) (ide->buffer + 23), "1.15 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "AZT CDA46802I ", 40); /* Model */ + break; + case CDROM_TYPE_BTC_BCD36XH_U10: + ide_padstr((char *) (ide->buffer + 23), "U1.0 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "BTC CD-ROM BCD36XH ", 40); /* Model */ + break; + case CDROM_TYPE_GOLDSTAR_CRD_8160B_314: + ide_padstr((char *) (ide->buffer + 23), "3.14 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "GOLDSTAR CRD-8160B ", 40); /* Model */ + break; + case CDROM_TYPE_HITACHI_CDR_8130_0020: + ide_padstr((char *) (ide->buffer + 23), "0020 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "HITACHI CDR-8130 ", 40); /* Model */ + break; + case CDROM_TYPE_KENWOOD_UCR_421_208E: + ide_padstr((char *) (ide->buffer + 23), "208E ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "KENWOOD CD-ROM UCR-421 ", 40); /* Model */ + break; + case CDROM_TYPE_MATSHITA_587_7S13: + ide_padstr((char *) (ide->buffer + 23), "7S13 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "MATSHITA CD-ROM CR-587 ", 40); /* Model */ + break; + case CDROM_TYPE_MATSHITA_588_LS15: + ide_padstr((char *) (ide->buffer + 23), "LS15 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "MATSHITA CD-ROM CR-588 ", 40); /* Model */ + break; + case CDROM_TYPE_MATSHITA_571_10e: + ide_padstr((char *) (ide->buffer + 23), "1.0e ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "MATSHITA CR-571 ", 40); /* Model */ + break; + case CDROM_TYPE_MATSHITA_572_10j: + ide_padstr((char *) (ide->buffer + 23), "1.0j ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "MATSHITA CR-572 ", 40); /* Model */ + break; + case CDROM_TYPE_MITSUMI_FX4820T_D02A: + ide_padstr((char *) (ide->buffer + 23), "D02A ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "MITSUMI CRMC-FX4820T ", 40); /* Model */ + break; + case CDROM_TYPE_NEC_260_100: + ide_padstr((char *) (ide->buffer + 23), ".100 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "EN C DCR-MOD IREV2:06 ", 40); /* Model */ + break; + case CDROM_TYPE_NEC_260_101: + ide_padstr((char *) (ide->buffer + 23), ".110 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "EN C DCR-MOD IREV2:06 ", 40); /* Model */ + break; + case CDROM_TYPE_NEC_273_420: + ide_padstr((char *) (ide->buffer + 23), "4.20 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:273 ", 40); /* Model */ + break; + case CDROM_TYPE_NEC_280_105: + ide_padstr((char *) (ide->buffer + 23), "1.05 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:280 ", 40); /* Model */ + break; + case CDROM_TYPE_NEC_280_308: + ide_padstr((char *) (ide->buffer + 23), "3.08 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:280 ", 40); /* Model */ + break; + case CDROM_TYPE_PHILIPS_PCA403CD_U31P: + ide_padstr((char *) (ide->buffer + 23), "U31P ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "PHILIPS CD-ROM PCA403CD ", 40); /* Model */ + break; + case CDROM_TYPE_SONY_CDU76_10i: + ide_padstr((char *) (ide->buffer + 23), "1.0i ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "SONY CD-ROM CDU76 ", 40); /* Model */ + break; + case CDROM_TYPE_SONY_CDU311_30h: + ide_padstr((char *) (ide->buffer + 23), "3.0h ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "SONY CD-ROM CDU311 ", 40); /* Model */ + break; + case CDROM_TYPE_TOSHIBA_5302TA_0305: + ide_padstr((char *) (ide->buffer + 23), "0305 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "TOSHIBA CD-ROM XM-5302TA ", 40); /* Model */ + break; + case CDROM_TYPE_TOSHIBA_5702B_TA70: + ide_padstr((char *) (ide->buffer + 23), "TA70 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "TOSHIBA CD-ROM XM-5702B ", 40); /* Model */ + break; } } @@ -3841,8 +4150,8 @@ scsi_cdrom_drive_reset(int c) id->phase_data_out = scsi_cdrom_phase_data_out; id->command_stop = scsi_cdrom_command_stop; id->bus_master_error = scsi_cdrom_bus_master_error; - id->interrupt_drq = (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01") || - (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))); + id->interrupt_drq = ((dev->drv->type == CDROM_TYPE_NEC_260_100) || + (dev->drv->type == CDROM_TYPE_NEC_260_101)); ide_atapi_attach(id); } From b1099fab1dcd808da2e6bf10420dd357c436b99e Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sun, 24 Sep 2023 07:52:43 +0200 Subject: [PATCH 25/82] Fix max types of the cdrom models. --- src/include/86box/cdrom.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index ee8315d3c..5d43778fc 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -106,7 +106,7 @@ enum CDROM_TYPES_NUM }; -#define KNOWN_CDROM_DRIVE_TYPES 41 +#define KNOWN_CDROM_DRIVE_TYPES CDROM_TYPES_NUM #define BUS_TYPE_IDE CDROM_BUS_ATAPI #define BUS_TYPE_SCSI CDROM_BUS_SCSI #define BUS_TYPE_BOTH -2 From 07af166d2fe7ffb3994a64eacee14d674dbe6874 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 26 Sep 2023 04:51:59 -0400 Subject: [PATCH 26/82] Fix a build error on haiku in ini.c --- src/ini.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ini.c b/src/ini.c index 604c3d5eb..35c7504eb 100644 --- a/src/ini.c +++ b/src/ini.c @@ -348,7 +348,7 @@ ini_read(const char *fn) while (1) { memset(buff, 0x00, sizeof(buff)); #ifdef __HAIKU__ - ini_fgetws(buff, sizeof_w(buff), f); + ini_fgetws(buff, sizeof_w(buff), fp); #else (void) !fgetws(buff, sizeof_w(buff), fp); #endif From 9b9dc6cdccc439a61bbca1fc9864d5519d91d829 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 26 Sep 2023 05:00:30 -0400 Subject: [PATCH 27/82] Removed escaped whitespace at end of line. --- src/config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.c b/src/config.c index ea314997a..f0b48dc1a 100644 --- a/src/config.c +++ b/src/config.c @@ -1805,7 +1805,7 @@ load_other_removable_devices(void) if (p[0] != 0x00) { if (path_abs(p)) { if (strlen(p) > 511) - fatal("load_other_removable_devices(): strlen(p) > 511 (mo_drives[%i].image_path)\n", + fatal("load_other_removable_devices(): strlen(p) > 511 (mo_drives[%i].image_path)\n", c); else strncpy(mo_drives[c].image_path, p, 511); From 8bdecb1f59fd7f53359c77938d33af23684a18bf Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 28 Sep 2023 00:20:15 +0200 Subject: [PATCH 28/82] Some PIC and ACPI IRQ fixes. --- src/acpi.c | 4 ++-- src/pic.c | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/acpi.c b/src/acpi.c index 614deaa8c..fd38bae29 100644 --- a/src/acpi.c +++ b/src/acpi.c @@ -128,14 +128,14 @@ acpi_update_irq(acpi_t *dev) else if (dev->irq_mode == 2) pci_set_mirq(5, dev->mirq_is_level, &dev->irq_state); else - pci_set_mirq(PCI_DIRQ_BASE | dev->irq_line, 1, &dev->irq_state); + picintlevel(1 << dev->irq_line, &dev->irq_state); } else { if (dev->irq_mode == 1) pci_clear_irq(dev->slot, dev->irq_pin, &dev->irq_state); else if (dev->irq_mode == 2) pci_clear_mirq(5, dev->mirq_is_level, &dev->irq_state); else - pci_clear_mirq(PCI_DIRQ_BASE | dev->irq_line, 1, &dev->irq_state); + picintclevel(1 << dev->irq_line, &dev->irq_state); } acpi_timer_update(dev, (dev->regs.pmen & TMROF_EN) && !(dev->regs.pmsts & TMROF_STS)); diff --git a/src/pic.c b/src/pic.c index c01053268..83b5b785a 100644 --- a/src/pic.c +++ b/src/pic.c @@ -630,6 +630,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) int raise; uint8_t b; uint8_t slaves = 0; + uint16_t lines = 0x0000; /* Make sure to ignore all slave IRQ's, and in case of AT+, translate IRQ 2 to IRQ 9. */ @@ -659,7 +660,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (num & 0x0100) acpi_rtc_status = !!set; - if (set) { + if (set) { if (smi_irq_mask & num) { smi_raise(); smi_irq_status |= num; @@ -709,8 +710,12 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (level) { for (uint8_t i = 0; i < 8; i++) { b = (uint8_t) (1 << i); - if (((num >> 8) & b) && ((!!*irq_state) != !!set)) - pic2.lines[i]--; + if ((num >> 8) & b) { + if ((!!*irq_state) != !!set) + pic2.lines[i]--; + if (pic2.lines[i] == 0) + lines |= ((uint16_t) b << 8); + } } if ((!!*irq_state) != !!set) @@ -721,15 +726,20 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((num & 0x1000) && mouse_latch) latched_irqs &= 0xefff; - pic2.irr &= ~(num >> 8); + if (!level || lines) + pic2.irr &= ~(num >> 8); } if (num & 0x00ff) { if (level) { for (uint8_t i = 0; i < 8; i++) { b = (uint8_t) (1 << i); - if ((num & b) && ((!!*irq_state) != !!set)) - pic.lines[i]--; + if (num & b) { + if ((!!*irq_state) != !!set) + pic.lines[i]--; + if (pic.lines[i] == 0) + lines |= ((uint16_t) b << 8); + } } if ((!!*irq_state) != !!set) @@ -740,7 +750,8 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (kbd_latch && (num & 0x0002)) latched_irqs &= 0xfffd; - pic.irr &= ~(num & 0x00ff); + if (!level || lines) + pic.irr &= ~(num & 0x00ff); } } From d7bc7b302d62ffb5cde5b08fe8cb6d5ecbd5b8fb Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 28 Sep 2023 01:15:07 +0200 Subject: [PATCH 29/82] Always clear IRR on clear if the specified interrupt is not set to level-triggered on the PIC or ELCR. --- src/pic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pic.c b/src/pic.c index 83b5b785a..490468410 100644 --- a/src/pic.c +++ b/src/pic.c @@ -713,7 +713,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((num >> 8) & b) { if ((!!*irq_state) != !!set) pic2.lines[i]--; - if (pic2.lines[i] == 0) + if (!pic_level_triggered(&pic2, i) || (pic2.lines[i] == 0)) lines |= ((uint16_t) b << 8); } } @@ -737,7 +737,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (num & b) { if ((!!*irq_state) != !!set) pic.lines[i]--; - if (pic.lines[i] == 0) + if (!pic_level_triggered(&pic, i) || (pic.lines[i] == 0)) lines |= ((uint16_t) b << 8); } } From b1c7834476635f7227a584b5d9defe5f80f09aef Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 28 Sep 2023 07:34:20 +0200 Subject: [PATCH 30/82] Another small PIC fix. --- src/pic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pic.c b/src/pic.c index 490468410..9f7f2cc9b 100644 --- a/src/pic.c +++ b/src/pic.c @@ -630,7 +630,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) int raise; uint8_t b; uint8_t slaves = 0; - uint16_t lines = 0x0000; + uint16_t lines = level ? 0x0000 : num; /* Make sure to ignore all slave IRQ's, and in case of AT+, translate IRQ 2 to IRQ 9. */ @@ -727,7 +727,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) latched_irqs &= 0xefff; if (!level || lines) - pic2.irr &= ~(num >> 8); + pic2.irr &= ~(lines >> 8); } if (num & 0x00ff) { @@ -738,7 +738,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((!!*irq_state) != !!set) pic.lines[i]--; if (!pic_level_triggered(&pic, i) || (pic.lines[i] == 0)) - lines |= ((uint16_t) b << 8); + lines |= ((uint16_t) b); } } @@ -751,7 +751,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) latched_irqs &= 0xfffd; if (!level || lines) - pic.irr &= ~(num & 0x00ff); + pic.irr &= ~(lines & 0x00ff); } } From 6802c0593b10e090b21f7e70d72d5a63f3ac9251 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sat, 30 Sep 2023 22:08:08 +0200 Subject: [PATCH 31/82] Video, Storage and MCA changes/fixes. 1. Cirrus Logic GD54xx, Paradise/WD VGA now reset the interlace once a text mode is issued if not done automatically. 2. Paradise/WD's 15/16bpp modes using the 800x600 resolution now have the correct ma_latch, should fix most operating systems drivers using this combo. 3. More fixes (hopefully) to the accelerated pitch and rowoffset of the Trident TGUI cards (9440AGi and 96x0XGi), should fix issues with delayed displays mode changes under various operating systems (e.g.: Win3.1x). 4. Preliminary implementation of the Area Fill command of XGA, which is issued while using various painting and/or calc utilities on Win3.1x (IBM XGA updated drivers, e.g.: 2.12). 5. Preliminary (and incomplete) 4bpp XGA mode. 6. The XGA memory test for the 0xa5 using writes (used by various operating systems) no longer conflicts with DOS' XGAKIT's memory detection. 7. Small ROP fixes to both XGA and 8514/A. 8. Re-organized the mapping of the Mach32 chipset, especially when to enable the ATI mode or switching back to IBM mode, should fix LFB conflicts with various operating systems. 9. According to The OS/2 Museum, the Adaptec AHA-154xB series of SCSI cards fail the ASPI4DOS.SYS 3.36 signature check, so now make the changes accordingly. 10. Remove useless and crashy bios-less option of the Trantor T128. 11. The Image Manager 1024 card can also be used on a XT (although only if it has a V20/V30). 12. Re-organized the IBM PS/2 model 60 initialization as well as its right POS machine ID (though an update to sc.exe is still required for the POST memory amount to work normally). --- src/include/86box/scsi_x54x.h | 3 +- src/include/86box/vid_xga.h | 3 + src/machine/m_ps2_mca.c | 64 +++---- src/scsi/scsi_ncr5380.c | 29 ++- src/scsi/scsi_x54x.c | 42 ++-- src/video/vid_8514a.c | 122 +++++++----- src/video/vid_ati_mach8.c | 148 +++++++------- src/video/vid_cl54xx.c | 11 ++ src/video/vid_im1024.c | 2 +- src/video/vid_paradise.c | 25 ++- src/video/vid_svga.c | 12 +- src/video/vid_tgui9440.c | 52 ++++- src/video/vid_xga.c | 349 +++++++++++++++++++++++++++------- 13 files changed, 587 insertions(+), 275 deletions(-) diff --git a/src/include/86box/scsi_x54x.h b/src/include/86box/scsi_x54x.h index 22d4b35e4..0f1874302 100644 --- a/src/include/86box/scsi_x54x.h +++ b/src/include/86box/scsi_x54x.h @@ -366,6 +366,7 @@ typedef struct SGE_t { #define X54X_INT_GEOM_WRITABLE 8 #define X54X_MBX_24BIT 16 #define X54X_ISAPNP 32 +#define X54X_HAS_SIGNATURE 64 typedef struct x54x_t { /* 32 bytes */ @@ -404,7 +405,7 @@ typedef struct x54x_t { /* for multi-threading, keep these volatile */ volatile uint8_t Status; - volatile uint8_t Interrupt; + volatile uint8_t Interrupt; volatile uint8_t MailboxIsBIOS; volatile uint8_t ToRaise; volatile uint8_t flags; diff --git a/src/include/86box/vid_xga.h b/src/include/86box/vid_xga.h index 97eb1456f..739e30c5c 100644 --- a/src/include/86box/vid_xga.h +++ b/src/include/86box/vid_xga.h @@ -201,6 +201,8 @@ typedef struct xga_t { int dst_map; int bkgd_src; int fore_src; + int oldx; + int oldy; int x; int y; int sx; @@ -211,6 +213,7 @@ typedef struct xga_t { int py; int pattern; int command_len; + int filling; uint32_t short_stroke; uint32_t color_cmp; diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index b93f332db..a6fc30e1c 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -362,11 +362,6 @@ static void model_50_write(uint16_t port, uint8_t val) { switch (port) { - case 0x100: - ps2.io_id = val; - break; - case 0x101: - break; case 0x102: lpt1_remove(); serial_remove(ps2.uart); @@ -499,11 +494,6 @@ static void model_55sx_write(uint16_t port, uint8_t val) { switch (port) { - case 0x100: - ps2.io_id = val; - break; - case 0x101: - break; case 0x102: lpt1_remove(); serial_remove(ps2.uart); @@ -563,10 +553,6 @@ static void model_70_type3_write(uint16_t port, uint8_t val) { switch (port) { - case 0x100: - break; - case 0x101: - break; case 0x102: lpt1_remove(); serial_remove(ps2.uart); @@ -621,10 +607,6 @@ static void model_80_write(uint16_t port, uint8_t val) { switch (port) { - case 0x100: - break; - case 0x101: - break; case 0x102: lpt1_remove(); serial_remove(ps2.uart); @@ -985,12 +967,12 @@ ps2_mca_mem_d071_init(int start_mb) } static void -ps2_mca_board_model_50_init(int slots) +ps2_mca_board_model_50_init(void) { ps2_mca_board_common_init(); mem_remap_top(384); - mca_init(slots); + mca_init(4); device_add(&keyboard_ps2_mca_2_device); ps2.planar_read = model_50_read; @@ -1005,6 +987,29 @@ ps2_mca_board_model_50_init(int slots) device_add(&ps1vga_mca_device); } +static void +ps2_mca_board_model_60_init(void) +{ + ps2_mca_board_common_init(); + + mem_remap_top(384); + mca_init(8); + device_add(&keyboard_ps2_mca_2_device); + + ps2.planar_read = model_50_read; + ps2.planar_write = model_50_write; + + if (mem_size > 2048) { + /* Only 2 MB supported on planar, create a memory expansion card for the rest */ + ps2_mca_mem_fffc_init(2); + } + + device_add(&ps2_nvr_55ls_device); + + if (gfxcard[0] == VID_INTERNAL) + device_add(&ps1vga_mca_device); +} + static void ps2_mca_board_model_55sx_init(int has_sec_nvram, int slots) { @@ -1051,10 +1056,8 @@ ps2_mca_board_model_55sx_init(int has_sec_nvram, int slots) mca_init(slots); device_add(&keyboard_ps2_device); - if (has_sec_nvram == 1) + if (has_sec_nvram) device_add(&ps2_nvr_55ls_device); - else if (has_sec_nvram == 2) - device_add(&ps2_nvr_device); ps2.planar_read = model_55sx_read; ps2.planar_write = model_55sx_write; @@ -1312,7 +1315,7 @@ ps2_mca_board_model_70_type34_init(int is_type4, int slots) } static void -ps2_mca_board_model_80_type2_init(int is486ps2) +ps2_mca_board_model_80_type2_init(void) { ps2_mca_board_common_init(); @@ -1372,7 +1375,7 @@ ps2_mca_board_model_80_type2_init(int is486ps2) NULL); mem_mapping_disable(&ps2.split_mapping); - if ((mem_size > 4096) && !is486ps2) { + if (mem_size > 4096) { /* Only 4 MB supported on planar, create a memory expansion card for the rest */ if (mem_size > 12288) ps2_mca_mem_d071_init(4); @@ -1426,7 +1429,7 @@ machine_ps2_model_50_init(const machine_t *model) machine_ps2_common_init(model); ps2.planar_id = 0xfbff; - ps2_mca_board_model_50_init(4); + ps2_mca_board_model_50_init(); return ret; } @@ -1448,8 +1451,8 @@ machine_ps2_model_60_init(const machine_t *model) machine_ps2_common_init(model); - ps2.planar_id = 0xfbff; - ps2_mca_board_model_50_init(8); + ps2.planar_id = 0xf7ff; + ps2_mca_board_model_60_init(); return ret; } @@ -1509,7 +1512,6 @@ machine_ps2_model_70_type3_init(const machine_t *model) machine_ps2_common_init(model); ps2.planar_id = 0xf9ff; - ps2_mca_board_model_70_type34_init(0, 4); return ret; @@ -1530,7 +1532,7 @@ machine_ps2_model_80_init(const machine_t *model) machine_ps2_common_init(model); ps2.planar_id = 0xfdff; - ps2_mca_board_model_80_type2_init(0); + ps2_mca_board_model_80_type2_init(); return ret; } @@ -1550,7 +1552,6 @@ machine_ps2_model_80_axx_init(const machine_t *model) machine_ps2_common_init(model); ps2.planar_id = 0xfff9; - ps2_mca_board_model_70_type34_init(0, 8); return ret; @@ -1571,7 +1572,6 @@ machine_ps2_model_70_type4_init(const machine_t *model) machine_ps2_common_init(model); ps2.planar_id = 0xf9ff; - ps2_mca_board_model_70_type34_init(1, 4); return ret; diff --git a/src/scsi/scsi_ncr5380.c b/src/scsi/scsi_ncr5380.c index c4bec884d..656257849 100644 --- a/src/scsi/scsi_ncr5380.c +++ b/src/scsi/scsi_ncr5380.c @@ -1553,10 +1553,14 @@ ncr_init(const device_t *info) ncr_dev->bios_ver = 1; } - if (ncr_dev->bios_ver == 1) - fn = RT1000B_820R_ROM; - else - fn = RT1000B_810R_ROM; + switch (ncr_dev->bios_ver) { + case 0: + fn = RT1000B_810R_ROM; + break; + case 1: + fn = RT1000B_820R_ROM; + break; + } rom_init(&ncr_dev->bios_rom, fn, ncr_dev->rom_addr, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL); @@ -1601,9 +1605,8 @@ ncr_init(const device_t *info) ncr_dev->irq = device_get_config_int("irq"); ncr_dev->t128.bios_enabled = device_get_config_int("boot"); - if (ncr_dev->t128.bios_enabled) - rom_init(&ncr_dev->bios_rom, T128_ROM, - ncr_dev->rom_addr, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL); + rom_init(&ncr_dev->bios_rom, T128_ROM, + ncr_dev->rom_addr, 0x4000, 0x3fff, 0, MEM_MAPPING_EXTERNAL); mem_mapping_add(&ncr_dev->mapping, ncr_dev->rom_addr, 0x4000, t128_read, NULL, NULL, @@ -1635,15 +1638,12 @@ ncr_init(const device_t *info) ncr_log("%s\n", temp); ncr_reset(ncr_dev, &ncr_dev->ncr); - if (ncr_dev->type < 3 || ncr_dev->type == 4) { + if ((ncr_dev->type < 3) || (ncr_dev->type == 4)) { ncr_dev->status_ctrl = STATUS_BUFFER_NOT_READY; ncr_dev->buffer_host_pos = 128; } else { ncr_dev->t128.status = 0x04; ncr_dev->t128.host_pos = 512; - - if (!ncr_dev->t128.bios_enabled) - ncr_dev->t128.status |= 0x80; } timer_add(&ncr_dev->timer, ncr_callback, ncr_dev, 0); @@ -1894,13 +1894,6 @@ static const device_config_t t128_config[] = { { .description = "" } }, }, - { - .name = "boot", - .description = "Enable Boot ROM", - .type = CONFIG_BINARY, - .default_string = "", - .default_int = 1 - }, { .name = "", .description = "", .type = CONFIG_END } }; // clang-format on diff --git a/src/scsi/scsi_x54x.c b/src/scsi/scsi_x54x.c index 2c714e18a..6876e4385 100644 --- a/src/scsi/scsi_x54x.c +++ b/src/scsi/scsi_x54x.c @@ -103,7 +103,7 @@ x54x_irq(x54x_t *dev, int set) else picintc(1 << irq); } - } + } } static void @@ -466,6 +466,7 @@ x54x_bios_command(x54x_t *x54x, uint8_t max_id, BIOSCMD *cmd, int8_t islba) } return 0; + break; case 0x02: /* Read Desired Sectors to Memory */ case 0x03: /* Write Desired Sectors from Memory */ @@ -1341,24 +1342,27 @@ x54x_in(uint16_t port, void *priv) if (dev->flags & X54X_INT_GEOM_WRITABLE) ret = dev->Geometry; else { - switch (dev->Geometry) { - default: - case 0: - ret = 'A'; - break; - case 1: - ret = 'D'; - break; - case 2: - ret = 'A'; - break; - case 3: - ret = 'P'; - break; - } - ret ^= 1; - dev->Geometry++; - dev->Geometry &= 0x03; + if (dev->flags & X54X_HAS_SIGNATURE) { + switch (dev->Geometry) { + default: + case 0: + ret = 'A'; + break; + case 1: + ret = 'D'; + break; + case 2: + ret = 'A'; + break; + case 3: + ret = 'P'; + break; + } + ret ^= 1; + dev->Geometry++; + dev->Geometry &= 0x03; + } else + ret = 0xff; break; } break; diff --git a/src/video/vid_8514a.c b/src/video/vid_8514a.c index 8ee0daadd..ef735852c 100644 --- a/src/video/vid_8514a.c +++ b/src/video/vid_8514a.c @@ -144,13 +144,13 @@ ibm8514_log(const char *fmt, ...) dest_dat = MAX(src_dat, dest_dat); \ break; \ case 0x15: \ - dest_dat = (dest_dat - src_dat) / 2; \ + dest_dat = (dest_dat - src_dat) >> 1; \ break; \ case 0x16: \ - dest_dat = (src_dat - dest_dat) / 2; \ + dest_dat = (src_dat - dest_dat) >> 1; \ break; \ case 0x17: \ - dest_dat = (dest_dat + src_dat) / 2; \ + dest_dat = (dest_dat + src_dat) >> 1; \ break; \ case 0x18: \ dest_dat = MAX(0, (dest_dat - src_dat)); \ @@ -162,7 +162,7 @@ ibm8514_log(const char *fmt, ...) dest_dat = MAX(0, (src_dat - dest_dat)); \ break; \ case 0x1b: \ - dest_dat = MIN(0xff, (dest_dat + src_dat)); \ + dest_dat = MIN(~0, (dest_dat + src_dat)); \ break; \ case 0x1c: \ dest_dat = MAX(0, (dest_dat - src_dat)) / 2; \ @@ -174,7 +174,7 @@ ibm8514_log(const char *fmt, ...) dest_dat = MAX(0, (src_dat - dest_dat)) / 2; \ break; \ case 0x1f: \ - dest_dat = (0xff < (src_dat + dest_dat)) ? 0xff : ((src_dat + dest_dat) / 2); \ + dest_dat = (~0 < (src_dat + dest_dat)) ? ~0 : ((src_dat + dest_dat) >> 1); \ break; \ } \ } @@ -1297,7 +1297,7 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat /*Bit 4 of the Command register is the draw yes bit, which enables writing to memory/reading from memory when enabled. When this bit is disabled, no writing to memory/reading from memory is allowed. (This bit is almost meaningless on the NOP command)*/ - ibm8514_log("CMD8514: CMD=%d, full=%04x, pixcntl=%x, count=%d.\n", cmd, dev->accel.cmd, pixcntl, count); + ibm8514_log("CMD8514: CMD=%d, full=%04x, pixcntl=%x, count=%d, frgdmix = %02x, bkgdmix = %02x, polygon=%x.\n", cmd, dev->accel.cmd, pixcntl, count, frgd_mix, bkgd_mix, dev->accel.multifunc[0x0a] & 6); switch (cmd) { case 0: /*NOP (Short Stroke Vectors)*/ @@ -3057,13 +3057,39 @@ rect_fill: old_dest_dat = dest_dat; MIX(mix_dat & mix_mask, dest_dat, src_dat); dest_dat = (dest_dat & wrt_mask) | (old_dest_dat & ~wrt_mask); - if ((dev->accel.cmd & 4) && (dev->accel.sy < dev->accel.maj_axis_pcnt)) { - if (!dev->accel.sy) { - WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); - } else if ((dev->accel.cmd & 0x40) && dev->accel.sy && (dev->accel.cy == (dev->accel.oldcy + 1))) { - WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); - } else if (!(dev->accel.cmd & 0x40) && dev->accel.sy && (dev->accel.err_term >= 0) && (dev->accel.cy == (dev->accel.oldcy + 1))) { + if (dev->accel.cmd & 4) { + if (dev->accel.sy < dev->accel.maj_axis_pcnt) { + if (dev->accel.cmd & 0x40) { + WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } else { + if (dev->accel.cy == (dev->accel.oldcy + 1)) { + if (dev->accel.cmd & 0x20) { + if (dev->accel.err_term < (dev->accel.destx_distp + dev->accel.desty_axstp)) { + WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } + } else { + if (dev->accel.err_term >= 0) { + WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } + } + } + } + } + } else { + if (dev->accel.cmd & 0x40) { WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } else { + if (dev->accel.cy == (dev->accel.oldcy + 1)) { + if (dev->accel.cmd & 0x20) { + if (dev->accel.err_term < (dev->accel.destx_distp + dev->accel.desty_axstp)) { + WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } + } else { + if (dev->accel.err_term >= 0) { + WRITE((dev->accel.cy * dev->pitch) + (dev->accel.cx), dest_dat); + } + } + } } } } @@ -3080,7 +3106,42 @@ rect_fill: break; } - if (dev->accel.err_term >= dev->accel.maj_axis_pcnt) { + /*Step major axis*/ + switch (dev->accel.cmd & 0xe0) { + case 0x00: + dev->accel.cx--; + break; + case 0x20: + dev->accel.cx++; + break; + case 0x40: + dev->accel.oldcy = dev->accel.cy; + dev->accel.cy--; + break; + case 0x60: + dev->accel.oldcy = dev->accel.cy; + dev->accel.cy--; + break; + case 0x80: + dev->accel.cx--; + break; + case 0xa0: + dev->accel.cx++; + break; + case 0xc0: + dev->accel.oldcy = dev->accel.cy; + dev->accel.cy++; + break; + case 0xe0: + dev->accel.oldcy = dev->accel.cy; + dev->accel.cy++; + break; + + default: + break; + } + + if (dev->accel.err_term >= 0) { dev->accel.err_term += dev->accel.destx_distp; /*Step minor axis*/ switch (dev->accel.cmd & 0xe0) { @@ -3119,41 +3180,6 @@ rect_fill: } else dev->accel.err_term += dev->accel.desty_axstp; - /*Step major axis*/ - switch (dev->accel.cmd & 0xe0) { - case 0x00: - dev->accel.cx--; - break; - case 0x20: - dev->accel.cx++; - break; - case 0x40: - dev->accel.oldcy = dev->accel.cy; - dev->accel.cy--; - break; - case 0x60: - dev->accel.oldcy = dev->accel.cy; - dev->accel.cy--; - break; - case 0x80: - dev->accel.cx--; - break; - case 0xa0: - dev->accel.cx++; - break; - case 0xc0: - dev->accel.oldcy = dev->accel.cy; - dev->accel.cy++; - break; - case 0xe0: - dev->accel.oldcy = dev->accel.cy; - dev->accel.cy++; - break; - - default: - break; - } - dev->accel.sy++; } break; diff --git a/src/video/vid_ati_mach8.c b/src/video/vid_ati_mach8.c index 8df054060..1d3f6bbc8 100644 --- a/src/video/vid_ati_mach8.c +++ b/src/video/vid_ati_mach8.c @@ -99,6 +99,7 @@ typedef struct mach_t { uint8_t bank_w; uint8_t bank_r; uint16_t shadow_set; + int ext_on; struct { uint8_t line_idx; @@ -2599,7 +2600,6 @@ mach_recalctimings(svga_t *svga) if (dev->on) { mach_log("8514/A ON.\n"); - svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); if (dev->local >= 2) { dev->h_disp = (dev->hdisp + 1) << 3; dev->h_total = (dev->htotal + 1); @@ -2614,6 +2614,9 @@ mach_recalctimings(svga_t *svga) if (dev->dispend == 598) dev->dispend += 2; + if (dev->h_disp == 1024) + dev->accel.advfunc_cntl |= 4; /*Bit 2 means high resolution e.g.: 1024x768*/ + if (dev->accel.advfunc_cntl & 4) { if (mach->shadow_set & 2) { if (dev->h_disp == 8) { @@ -2622,14 +2625,20 @@ mach_recalctimings(svga_t *svga) dev->v_total = 1536; dev->v_syncstart = 1536; } - } + mach_log("Shadow set 2.\n"); + svga->clock = (cpuclock * (double) (1ULL << 32)) / 44900000.0; + } else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); } else { - if (mach->shadow_set & 1) { - if (dev->h_disp == 1024) { - dev->h_disp = 640; - dev->dispend = 480; - } + if (dev->h_disp == 1024) { + dev->h_disp = 640; + dev->dispend = 480; } + if (mach->shadow_set & 1) { + mach_log("Shadow set 1.\n"); + svga->clock = (cpuclock * (double) (1ULL << 32)) / 25175000.0; + } else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); } if (dev->interlace) { @@ -2721,14 +2730,18 @@ mach_recalctimings(svga_t *svga) dev->v_total = 1536; dev->v_syncstart = 1536; } - } + svga->clock = (cpuclock * (double) (1ULL << 32)) / 44900000.0; + } else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); } else { - if (mach->shadow_set & 1) { - if (dev->h_disp == 1024) { - dev->h_disp = 640; - dev->dispend = 480; - } + if (dev->h_disp == 1024) { + dev->h_disp = 640; + dev->dispend = 480; } + if (mach->shadow_set & 1) { + svga->clock = (cpuclock * (double) (1ULL << 32)) / 25175000.0; + } else + svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock((mach->accel.clock_sel >> 2) & 0x0f, svga->clock_gen); } if (dev->interlace) { dev->dispend >>= 1; @@ -2740,7 +2753,7 @@ mach_recalctimings(svga_t *svga) } dev->pitch = dev->ext_pitch; dev->rowoffset = dev->ext_crt_pitch; - mach_log("hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x.\n", dev->h_disp, dev->dispend, dev->pitch, dev->rowoffset, mach->accel.ext_ge_config & 0xcec0); + mach_log("cntl=%d, hv(%d,%d), pitch=%d, rowoffset=%d, gextconfig=%03x.\n", dev->accel.advfunc_cntl & 4, dev->h_disp, dev->dispend, dev->pitch, dev->rowoffset, mach->accel.ext_ge_config & 0xcec0); svga->map8 = dev->pallook; svga->render8514 = ibm8514_render_8bpp; if (mach->regs[0xb8] & 0x40) @@ -2750,6 +2763,7 @@ mach_recalctimings(svga_t *svga) if (!svga->scrblank && (svga->crtc[0x17] & 0x80) && svga->attr_palette_enable) { if (((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1))) { + mach_log("VGA clock=%02x.\n", mach->regs[0xa7] & 0x80); svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clock_sel, svga->clock_gen); if (mach->regs[0xa7] & 0x80) svga->clock *= 3; @@ -3688,7 +3702,9 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach) } else { dev->on = (dev->accel.advfunc_cntl & 0x01); vga_on = !dev->on; - mach_log("ATI 8514/A: (0x4ae8) val = %04x\n", val & 0x01); + mach->ext_on = dev->on; + mach_log("ATI 8514/A: (0x4ae9) val = %04x, ext = %d.\n", dev->accel.advfunc_cntl & 0x01, mach->ext_on); + mach32_updatemapping(mach); } svga_recalctimings(svga); break; @@ -3777,6 +3793,7 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach) case 0x36ee: case 0x36ef: + mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); WRITE8(port, mach->misc, val); mach->misc &= 0xfff0; break; @@ -3813,21 +3830,27 @@ mach_accel_out(uint16_t port, uint8_t val, mach_t *mach) case 0x4aef: WRITE8(port, mach->accel.clock_sel, val); if (port & 1) { - mach_log("ATI 8514/A: (0x4aee) val = %04x\n", mach->accel.clock_sel & 0x01); dev->on = mach->accel.clock_sel & 0x01; vga_on = !dev->on; + pclog("ATI 8514/A: (0x4aef) val = %04x, ext = %d.\n", mach->accel.clock_sel & 0x01, mach->ext_on); } svga_recalctimings(svga); break; case 0x52ee: case 0x52ef: + mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); WRITE8(port, mach->accel.scratch0, val); + if (port & 1) + mach->ext_on = 1; break; case 0x56ee: case 0x56ef: + mach_log("ATI 8514/A: (0x%04x) val = %04x.\n", port, val); WRITE8(port, mach->accel.scratch1, val); + if (port & 1) + mach->ext_on = 1; break; case 0x5aee: @@ -4744,13 +4767,8 @@ mach32_write_linear(uint32_t addr, uint8_t val, void *priv) static void mach32_write(uint32_t addr, uint8_t val, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; - - if (!dev->on) { - svga_write(addr, val, svga); - return; - } + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; addr = (addr & svga->banked_mask) + svga->write_bank; mach32_write_linear(addr, val, svga); @@ -4759,33 +4777,25 @@ mach32_write(uint32_t addr, uint8_t val, void *priv) static void mach32_writew(uint32_t addr, uint16_t val, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; - if (!dev->on) { - svga_writew(addr, val, svga); - return; - } - - mach32_write(addr, val & 0xff, svga); - mach32_write(addr + 1, val >> 8, svga); + addr = (addr & svga->banked_mask) + svga->write_bank; + mach32_write_linear(addr, val & 0xff, svga); + mach32_write_linear(addr + 1, val >> 8, svga); } static void mach32_writel(uint32_t addr, uint32_t val, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; - if (!dev->on) { - svga_writel(addr, val, svga); - return; - } - - mach32_write(addr, val & 0xff, svga); - mach32_write(addr + 1, val >> 8, svga); - mach32_write(addr + 2, val >> 16, svga); - mach32_write(addr + 3, val >> 24, svga); + addr = (addr & svga->banked_mask) + svga->write_bank; + mach32_write_linear(addr, val & 0xff, svga); + mach32_write_linear(addr + 1, val >> 8, svga); + mach32_write_linear(addr + 2, val >> 16, svga); + mach32_write_linear(addr + 3, val >> 24, svga); } static uint8_t @@ -4872,15 +4882,10 @@ mach32_read_linear(uint32_t addr, void *priv) static uint8_t mach32_read(uint32_t addr, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; uint8_t ret; - if (!dev->on) { - ret = svga_read(addr, svga); - return ret; - } - addr = (addr & svga->banked_mask) + svga->read_bank; ret = mach32_read_linear(addr, svga); return ret; @@ -4889,36 +4894,28 @@ mach32_read(uint32_t addr, void *priv) static uint16_t mach32_readw(uint32_t addr, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; uint16_t ret; - if (!dev->on) { - ret = svga_readw(addr, svga); - return ret; - } - - ret = mach32_read(addr, svga); - ret |= (mach32_read(addr + 1, svga) << 8); + addr = (addr & svga->banked_mask) + svga->read_bank; + ret = mach32_read_linear(addr, svga); + ret |= (mach32_read_linear(addr + 1, svga) << 8); return ret; } static uint32_t mach32_readl(uint32_t addr, void *priv) { - svga_t *svga = (svga_t *) priv; - const ibm8514_t *dev = &svga->dev8514; + mach_t *mach = (mach_t *) priv; + svga_t *svga = &mach->svga; uint32_t ret; - if (!dev->on) { - ret = svga_readl(addr, svga); - return ret; - } - - ret = mach32_read(addr, svga); - ret |= (mach32_read(addr + 1, svga) << 8); - ret |= (mach32_read(addr + 2, svga) << 16); - ret |= (mach32_read(addr + 3, svga) << 24); + addr = (addr & svga->banked_mask) + svga->read_bank; + ret = mach32_read_linear(addr, svga); + ret |= (mach32_read_linear(addr + 1, svga) << 8); + ret |= (mach32_read_linear(addr + 2, svga) << 16); + ret |= (mach32_read_linear(addr + 3, svga) << 24); return ret; } @@ -4986,7 +4983,7 @@ mach32_ap_writel(uint32_t addr, uint32_t val, void *priv) mach_accel_outw(0x02e8 + (port_dword << 8) + 4, val >> 16, mach); } } else { - mach_log("Linear WORDL Write=%08x, val=%08x, mode=%d, rop=%02x.\n", addr, val, mach->svga.writemode, mach->svga.gdcreg[3] & 0x18); + mach_log("Linear WORDL Write=%08x.\n", addr); mach32_write_linear(addr, val & 0xff, svga); mach32_write_linear(addr + 1, val >> 8, svga); mach32_write_linear(addr + 2, val >> 16, svga); @@ -5069,6 +5066,7 @@ static void mach32_updatemapping(mach_t *mach) { svga_t *svga = &mach->svga; + ibm8514_t *dev = &svga->dev8514; if (mach->pci_bus && (!(mach->pci_regs[PCI_REG_COMMAND] & PCI_COMMAND_MEM))) { mem_mapping_disable(&svga->mapping); @@ -5118,6 +5116,13 @@ mach32_updatemapping(mach_t *mach) mach->ap_size = 4; mem_mapping_disable(&mach->mmio_linear_mapping); } + if (mach->ext_on && (dev->local >= 2)) { + mem_mapping_set_handler(&svga->mapping, mach32_read, mach32_readw, mach32_readl, mach32_write, mach32_writew, mach32_writel); + mem_mapping_set_p(&svga->mapping, mach); + } else { + mem_mapping_set_handler(&svga->mapping, svga_read, svga_readw, svga_readl, svga_write, svga_writew, svga_writel); + mem_mapping_set_p(&svga->mapping, svga); + } } static void @@ -5692,7 +5697,6 @@ mach8_init(const device_t *info) mach->config1 |= 0x0400; svga->clock_gen = device_add(&ati18811_0_device); } - mem_mapping_set_handler(&svga->mapping, mach32_read, mach32_readw, mach32_readl, mach32_write, mach32_writew, mach32_writel); mem_mapping_add(&mach->mmio_linear_mapping, 0, 0, mach32_ap_readb, mach32_ap_readw, mach32_ap_readl, mach32_ap_writeb, mach32_ap_writew, mach32_ap_writel, NULL, MEM_MAPPING_EXTERNAL, mach); mem_mapping_disable(&mach->mmio_linear_mapping); } else { diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index f5742e6d0..41aadf6ba 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -1739,6 +1739,10 @@ gd54xx_recalctimings(svga_t *svga) svga->interlace = (svga->crtc[0x1a] & 0x01); + if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/ + svga->interlace = 0; + } + svga->map8 = svga->pallook; if (svga->seqregs[7] & CIRRUS_SR7_BPP_SVGA) { if (linedbl) @@ -1921,6 +1925,13 @@ gd54xx_recalctimings(svga_t *svga) } svga->vram_display_mask = (svga->crtc[0x1b] & 2) ? gd54xx->vram_mask : 0x3ffff; + + if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/ + if (svga->seqregs[1] & 8) { + svga->render = svga_render_text_40; + } else + svga->render = svga_render_text_80; + } } static void diff --git a/src/video/vid_im1024.c b/src/video/vid_im1024.c index 1e60a3258..c7602ffd0 100644 --- a/src/video/vid_im1024.c +++ b/src/video/vid_im1024.c @@ -1085,7 +1085,7 @@ im1024_speed_changed(void *priv) const device_t im1024_device = { .name = "ImageManager 1024", .internal_name = "im1024", - .flags = DEVICE_ISA | DEVICE_AT, + .flags = DEVICE_ISA, .local = 0, .init = im1024_init, .close = im1024_close, diff --git a/src/video/vid_paradise.c b/src/video/vid_paradise.c index a98753337..ad197f302 100644 --- a/src/video/vid_paradise.c +++ b/src/video/vid_paradise.c @@ -341,23 +341,44 @@ paradise_recalctimings(svga_t *svga) } } + if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/ + svga->interlace = 0; + } + if (paradise->type < WD90C30) { - if (svga->bpp >= 8 && !svga->lowres) { + if ((svga->bpp >= 8) && !svga->lowres) { svga->render = svga_render_8bpp_highres; } } else { - if (svga->bpp >= 8 && !svga->lowres) { + if ((svga->bpp >= 8) && !svga->lowres) { if (svga->bpp == 16) { svga->render = svga_render_16bpp_highres; svga->hdisp >>= 1; + if (svga->hdisp == 788) + svga->hdisp += 12; + if (svga->hdisp == 800) + svga->ma_latch -= 3; } else if (svga->bpp == 15) { svga->render = svga_render_15bpp_highres; svga->hdisp >>= 1; + if (svga->hdisp == 788) + svga->hdisp += 12; + if (svga->hdisp == 800) + svga->ma_latch -= 3; } else { svga->render = svga_render_8bpp_highres; } } } + + if (!(svga->gdcreg[6] & 1) && !(svga->attrregs[0x10] & 1)) { /*Text mode*/ + if (svga->hdisp == 360) + svga->hdisp <<= 1; + if (svga->seqregs[1] & 8) { + svga->render = svga_render_text_40; + } else + svga->render = svga_render_text_80; + } } static void diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 6a9f2099b..e32575db7 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -830,7 +830,7 @@ svga_poll(void *priv) return; } if (xga_active && xga->on) { - if ((xga->disp_cntl_2 & 7) >= 3) { + if ((xga->disp_cntl_2 & 7) >= 2) { xga_poll(xga, svga); return; } @@ -1247,11 +1247,12 @@ svga_write_common(uint32_t addr, uint8_t val, uint8_t linear, void *priv) if (((xga->op_mode & 7) >= 4) && (xga->aperture_cntl >= 1)) { if (val == 0xa5) { /*Memory size test of XGA*/ xga->test = val; - xga->a5_test = 1; + if (addr == 0xa0001) + xga->a5_test = 1; + xga->on = 0; vga_on = 1; xga->disp_cntl_2 = 0; - xga->clk_sel_1 = 0; svga_log("XGA test1 addr = %05x.\n", addr); return; } else if (val == 0x5a) { @@ -1259,7 +1260,7 @@ svga_write_common(uint32_t addr, uint8_t val, uint8_t linear, void *priv) xga->on = 0; vga_on = 1; xga->disp_cntl_2 = 0; - xga->clk_sel_1 = 0; + svga_log("XGA test2 addr = %05x.\n", addr); return; } else if ((addr == 0xa0000) || (addr == 0xa0010)) { addr += xga->write_bank; @@ -1469,6 +1470,7 @@ svga_read_common(uint32_t addr, uint8_t linear, void *priv) xga->on = 1; vga_on = 0; } else if ((addr == 0xa0000) && xga->a5_test) { /*This is required by XGAKIT to pass the memory test*/ + svga_log("A5 test bank = %x.\n", addr); addr += xga->read_bank; ret = xga->vram[addr & xga->vram_mask]; } else { @@ -1476,7 +1478,7 @@ svga_read_common(uint32_t addr, uint8_t linear, void *priv) xga->on = 1; vga_on = 0; } - svga_log("A5 read: XGA ON = %d, addr = %05x.\n", xga->on, addr); + svga_log("A5 read: XGA ON = %d, addr = %05x, ret = %02x, test1 = %x.\n", xga->on, addr, ret, xga->a5_test); return ret; } else if (xga->test == 0x5a) { ret = xga->test; diff --git a/src/video/vid_tgui9440.c b/src/video/vid_tgui9440.c index 9204e8644..0f9473d1a 100644 --- a/src/video/vid_tgui9440.c +++ b/src/video/vid_tgui9440.c @@ -1399,6 +1399,7 @@ tgui_accel_command(int count, uint32_t cpu_dat, tgui_t *tgui) uint32_t trans_col = (tgui->accel.flags & TGUI_TRANSREV) ? tgui->accel.fg_col : tgui->accel.bg_col; uint16_t *vram_w = (uint16_t *) svga->vram; uint32_t *vram_l = (uint32_t *) svga->vram; + uint8_t ger22upper = (tgui->accel.ger22 >> 8); if (tgui->accel.bpp == 0) { trans_col &= 0xff; @@ -1454,6 +1455,16 @@ tgui_accel_command(int count, uint32_t cpu_dat, tgui_t *tgui) } } + /*For delayed mode switches.*/ + if (tgui->type == TGUI_9440) { + if (tgui->accel.pitch == 800) + tgui->accel.pitch += 32; + + if (tgui->accel.bpp == 1) { + if (!ger22upper) + tgui->accel.pitch = svga->rowoffset << 2; + } + } #if 0 pclog("TGUI accel command = %x, ger22 = %04x, hdisp = %d, dispend = %d, vtotal = %d, rowoffset = %d, svgabpp = %d, interlace = %d, accelbpp = %d, pitch = %d.\n", tgui->accel.command, tgui->accel.ger22, svga->hdisp, svga->dispend, svga->vtotal, svga->rowoffset, svga->bpp, svga->interlace, tgui->accel.bpp, tgui->accel.pitch); #endif @@ -2066,6 +2077,19 @@ tgui_accel_out(uint16_t addr, uint8_t val, void *priv) case 0x2123: //pclog("Pitch IO23: val = %02x, rowoffset = %x, pitch = %d.\n", val, svga->rowoffset, tgui->accel.pitch); + switch (svga->bpp) { + case 8: + case 24: + tgui->accel.bpp = 0; + break; + case 15: + case 16: + tgui->accel.bpp = 1; + break; + case 32: + tgui->accel.bpp = 3; + break; + } tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8); if ((val & 0x80) || ((val & 0xc0) == 0x40)) tgui->accel.pitch = svga->rowoffset << 3; @@ -2075,15 +2099,14 @@ tgui_accel_out(uint16_t addr, uint8_t val, void *priv) tgui->accel.pitch = 1024; } + if (tgui->accel.pitch == 800) + tgui->accel.pitch += 32; + if (tgui->accel.bpp == 1) tgui->accel.pitch >>= 1; else if (tgui->accel.bpp == 3) tgui->accel.pitch >>= 2; - - if (tgui->accel.pitch == 800) - tgui->accel.pitch += 32; - svga_recalctimings(svga); break; @@ -2722,7 +2745,19 @@ tgui_accel_write(uint32_t addr, uint8_t val, void *priv) break; case 0x23: - //pclog("Pitch MM23: val = %02x, rowoffset = %x, pitch = %d.\n", val, svga->rowoffset, tgui->accel.pitch); + switch (svga->bpp) { + case 8: + case 24: + tgui->accel.bpp = 0; + break; + case 15: + case 16: + tgui->accel.bpp = 1; + break; + case 32: + tgui->accel.bpp = 3; + break; + } tgui->accel.ger22 = (tgui->accel.ger22 & 0xff) | (val << 8); if ((val & 0x80) || ((val & 0xc0) == 0x40)) tgui->accel.pitch = svga->rowoffset << 3; @@ -2732,14 +2767,15 @@ tgui_accel_write(uint32_t addr, uint8_t val, void *priv) tgui->accel.pitch = 1024; } + if (tgui->accel.pitch == 800) + tgui->accel.pitch += 32; + if (tgui->accel.bpp == 1) tgui->accel.pitch >>= 1; else if (tgui->accel.bpp == 3) tgui->accel.pitch >>= 2; - if (tgui->accel.pitch == 800) - tgui->accel.pitch += 32; - + //pclog("Pitch MM23: fullval = %04x, rowoffset = %x, pitch = %d.\n", tgui->accel.ger22, svga->rowoffset, tgui->accel.pitch); svga_recalctimings(svga); break; diff --git a/src/video/vid_xga.c b/src/video/vid_xga.c index 1747bb13c..2c1749402 100644 --- a/src/video/vid_xga.c +++ b/src/video/vid_xga.c @@ -49,6 +49,7 @@ static uint8_t xga_ext_inb(uint16_t addr, void *priv); static void xga_writew(uint32_t addr, uint16_t val, void *priv); static uint16_t xga_readw(uint32_t addr, void *priv); +static void xga_render_4bpp(svga_t *svga); static void xga_render_8bpp(svga_t *svga); static void xga_render_16bpp(svga_t *svga); @@ -376,7 +377,7 @@ xga_ext_out_reg(xga_t *xga, svga_t *svga, uint8_t idx, uint8_t val) case 0x51: xga_log("Reg51 write = %02x.\n", val); xga->disp_cntl_2 = val; - xga->on = ((val & 7) >= 3); + xga->on = ((val & 7) >= 2); vga_on = !xga->on; svga_recalctimings(svga); break; @@ -406,7 +407,7 @@ xga_ext_out_reg(xga_t *xga, svga_t *svga, uint8_t idx, uint8_t val) if ((xga->sprite_pos >= 0) && (xga->sprite_pos <= 16)) { if ((xga->op_mode & 7) >= 5) xga->cursor_data_on = 1; - else if ((xga->sprite_pos >= 1) || ((xga->disp_cntl_2 & 7) == 4)) + else if ((xga->sprite_pos >= 1) || (((xga->disp_cntl_2 & 7) == 2) || (xga->disp_cntl_2 & 7) == 4)) xga->cursor_data_on = 1; else if (xga->aperture_cntl == 0) { if (xga->linear_endian_reverse && !(xga->access_mode & 8)) @@ -888,7 +889,7 @@ xga_ext_inb(uint16_t addr, void *priv) d = MIN(s, d); \ break; \ case 0x12: \ - d = MIN(0xff, s + d); \ + d = MIN(~0, s + d); \ break; \ case 0x13: \ d = MAX(0, d - s); \ @@ -908,7 +909,7 @@ xga_accel_read_pattern_map_pixel(svga_t *svga, int x, int y, int map, uint32_t b const xga_t *xga = &svga->xga; uint32_t addr = base; int bits; - uint32_t byte; + uint8_t byte; uint8_t px; int skip = 0; @@ -978,6 +979,15 @@ xga_accel_read_map_pixel(svga_t *svga, int x, int y, int map, uint32_t base, int } px = (byte >> bits) & 1; return px; + case 2: /*4-bit*/ + addr += (y * (width >> 1)); + addr += (x >> 1); + if (!skip) { + READ(addr, byte); + } else { + byte = mem_readb_phys(addr); + } + return byte; case 3: /*8-bit*/ addr += (y * width); addr += x; @@ -1060,6 +1070,29 @@ xga_accel_write_map_pixel(svga_t *svga, int x, int y, int map, uint32_t base, ui } mem_writeb_phys(addr, byte); break; + case 2: /*4-bit*/ + addr += (y * (width >> 1)); + addr += (x >> 1); + if (!skip) { + READ(addr, byte); + } else { + byte = mem_readb_phys(addr); + } + if (xga->linear_endian_reverse) { + mask = 0x0f << ((1 - (x & 1)) << 2); + } else { + if ((xga->accel.px_map_format[map] & 8) && !(xga->access_mode & 8)) { + mask = 0x0f << ((x & 1) << 2); + } else { + mask = 0x0f << ((1 - (x & 1)) << 2); + } + } + byte = (byte & ~mask) | (pixel & mask); + if (!skip) { + WRITE(addr, byte); + } + mem_writeb_phys(addr, byte); + break; case 3: /*8-bit*/ addr += (y * width); addr += x; @@ -1076,14 +1109,12 @@ xga_accel_write_map_pixel(svga_t *svga, int x, int y, int map, uint32_t base, ui pixel = ((pixel & 0xff00) >> 8) | ((pixel & 0x00ff) << 8); else if (xga->access_mode & 8) pixel = ((pixel & 0xff00) >> 8) | ((pixel & 0x00ff) << 8); - - mem_writew_phys(addr, pixel); } else { if (!skip) { WRITEW(addr, pixel); } - mem_writew_phys(addr, pixel); } + mem_writew_phys(addr, pixel); break; default: @@ -1257,7 +1288,7 @@ xga_line_draw_write(svga_t *svga) err = (xga->accel.bres_err_term); if (xga->accel.bres_err_term & 0x2000) - destxtmp |= ~0x1fff; + err |= ~0x1fff; if (xga->accel.octant & 0x02) { ydir = -1; @@ -1279,6 +1310,9 @@ xga_line_draw_write(svga_t *svga) if (xga->accel.dst_map_y >= 0x1800) dy |= ~0x17ff; + if ((xga->accel.command & 0x30) == 0x30) + xga_log("Line Draw Write: BLTWIDTH=%d, BLTHEIGHT=%d, FRGDCOLOR=%04x, XDIR=%i, YDIR=%i, steep=%s, ERR=%04x.\n", xga->accel.blt_width, xga->accel.blt_height, xga->accel.frgd_color & 0xffff, xdir, ydir, (xga->accel.octant & 0x01) ? "0" : "1", err); + if (xga->accel.octant & 0x01) { steep = 0; SWAP(dx, dy); @@ -1287,6 +1321,7 @@ xga_line_draw_write(svga_t *svga) if (xga->accel.pat_src == 8) { while (y >= 0) { + draw_pixel = 1; if (xga->accel.command & 0xc0) { if (steep) { if ((dx >= xga->accel.mask_map_origin_x_off) && (dx <= ((xga->accel.px_map_width[0] & 0xfff) + xga->accel.mask_map_origin_x_off)) && (dy >= xga->accel.mask_map_origin_y_off) && (dy <= ((xga->accel.px_map_height[0] & 0xfff) + xga->accel.mask_map_origin_y_off))) { @@ -1303,6 +1338,21 @@ xga_line_draw_write(svga_t *svga) xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); else if (((xga->accel.command & 0x30) == 0x20) && y) xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + else if ((xga->accel.command & 0x30) == 0x30) { + if (err < 0) + draw_pixel = 0; + else { + if (ydir == -1) { /*Bottom-to-Top*/ + if (!x) + draw_pixel = 0; + } else { /*Top-to-Bottom*/ + if (!y) + draw_pixel = 0; + } + } + if (draw_pixel) + xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + } } } } else { @@ -1320,6 +1370,17 @@ xga_line_draw_write(svga_t *svga) xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); else if (((xga->accel.command & 0x30) == 0x20) && y) xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + else if ((xga->accel.command & 0x30) == 0x30) { + if (xdir == -1) { /*Bottom-to-Top*/ + if (!x) + draw_pixel = 0; + } else { /*Top-to-Bottom*/ + if (!y) + draw_pixel = 0; + } + if (draw_pixel) + xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + } } } } @@ -1338,6 +1399,21 @@ xga_line_draw_write(svga_t *svga) xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); else if (((xga->accel.command & 0x30) == 0x20) && y) xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + else if ((xga->accel.command & 0x30) == 0x30) { + if (err < 0) + draw_pixel = 0; + else { + if (ydir == -1) { /*Bottom-to-Top*/ + if (!x) + draw_pixel = 0; + } else { /*Top-to-Bottom*/ + if (!y) + draw_pixel = 0; + } + } + if (draw_pixel) + xga_accel_write_map_pixel(svga, dx, dy, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + } } } else { src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.src_map_x & 0xfff, xga->accel.src_map_y & 0xfff, xga->accel.src_map, srcbase, xga->accel.px_map_width[xga->accel.src_map] + 1, 1) : xga->accel.frgd_color; @@ -1353,6 +1429,17 @@ xga_line_draw_write(svga_t *svga) xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); else if (((xga->accel.command & 0x30) == 0x20) && y) xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + else if ((xga->accel.command & 0x30) == 0x30) { + if (xdir == -1) { /*Bottom-to-Top*/ + if (!x) + draw_pixel = 0; + } else { /*Top-to-Bottom*/ + if (!y) + draw_pixel = 0; + } + if (draw_pixel) + xga_accel_write_map_pixel(svga, dy, dx, xga->accel.dst_map, dstbase, dest_dat, xga->accel.px_map_width[xga->accel.dst_map] + 1); + } } } } @@ -1361,7 +1448,7 @@ xga_line_draw_write(svga_t *svga) break; } - while (err > 0) { + while (err >= 0) { dy += ydir; err -= (dmajor << 1); } @@ -1383,10 +1470,13 @@ xga_line_draw_write(svga_t *svga) } } +#undef SWAP + static void xga_bitblt(svga_t *svga) { xga_t *xga = &svga->xga; + uint8_t area_state = 0; uint32_t src_dat; uint32_t dest_dat; uint32_t old_dest_dat; @@ -1405,9 +1495,12 @@ xga_bitblt(svga_t *svga) #endif uint32_t frgdcol = xga->accel.frgd_color; uint32_t bkgdcol = xga->accel.bkgd_color; - int mix = 0; + int mix = 0; int xdir; int ydir; + int skip = 0; + int x = 0; + int y = 0; if (xga->accel.octant & 0x02) { ydir = -1; @@ -1556,17 +1649,105 @@ xga_bitblt(svga_t *svga) xga_log("Pattern Map = %d: CMD = %08x: PATBase = %08x, SRCBase = %08x, DSTBase = %08x\n", xga->accel.pat_src, xga->accel.command, patbase, srcbase, dstbase); xga_log("CMD = %08x: Y = %d, X = %d, patsrc = %02x, srcmap = %d, dstmap = %d, py = %d, " - "sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d\n", + "sy = %d, dy = %d, width0 = %d, width1 = %d, width2 = %d, width3 = %d, bkgdcol = %02x\n", xga->accel.command, xga->accel.y, xga->accel.x, xga->accel.pat_src, xga->accel.src_map, xga->accel.dst_map, xga->accel.py, xga->accel.sy, xga->accel.dy, xga->accel.px_map_width[0], xga->accel.px_map_width[1], - xga->accel.px_map_width[2], xga->accel.px_map_width[3]); + xga->accel.px_map_width[2], xga->accel.px_map_width[3], bkgdcol); - while (xga->accel.y >= 0) { - mix = xga_accel_read_pattern_map_pixel(svga, xga->accel.px, xga->accel.py, xga->accel.pat_src, patbase, patwidth + 1); + if (((xga->accel.command >> 24) & 0x0f) == 0x0a) { + while (xga->accel.y >= 0) { + mix = xga_accel_read_pattern_map_pixel(svga, xga->accel.px, xga->accel.py, xga->accel.pat_src, patbase, patwidth + 1); + if (mix) + area_state ^= 1; - if (xga->accel.command & 0xc0) { - if ((xga->accel.dx >= xga->accel.mask_map_origin_x_off) && (xga->accel.dx <= ((xga->accel.px_map_width[0] & 0xfff) + xga->accel.mask_map_origin_x_off)) && (xga->accel.dy >= xga->accel.mask_map_origin_y_off) && (xga->accel.dy <= ((xga->accel.px_map_height[0] & 0xfff) + xga->accel.mask_map_origin_y_off))) { + if (xga->accel.command & 0xc0) { + if ((xga->accel.dx >= xga->accel.mask_map_origin_x_off) && (xga->accel.dx <= ((xga->accel.px_map_width[0] & 0xfff) + xga->accel.mask_map_origin_x_off)) && (xga->accel.dy >= xga->accel.mask_map_origin_y_off) && (xga->accel.dy <= ((xga->accel.px_map_height[0] & 0xfff) + xga->accel.mask_map_origin_y_off))) { + if (area_state) + src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : frgdcol; + else + src_dat = (((xga->accel.command >> 30) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : bkgdcol; + + if ((xga->accel.px_map_format[xga->accel.dst_map] & 7) <= 3) + src_dat &= 0xff; + + dest_dat = xga_accel_read_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dstwidth + 1, 0); + if ((xga->accel.cc_cond == 4) || ((xga->accel.cc_cond == 1) && (dest_dat > color_cmp)) || ((xga->accel.cc_cond == 2) && (dest_dat == color_cmp)) || ((xga->accel.cc_cond == 3) && (dest_dat < color_cmp)) || ((xga->accel.cc_cond == 5) && (dest_dat >= color_cmp)) || ((xga->accel.cc_cond == 6) && (dest_dat != color_cmp)) || ((xga->accel.cc_cond == 7) && (dest_dat <= color_cmp))) { + old_dest_dat = dest_dat; + ROP(area_state, dest_dat, src_dat); + dest_dat = (dest_dat & plane_mask) | (old_dest_dat & ~plane_mask); + xga_log("1SRCDat=%02x, DSTDat=%02x, Old=%02x, MIX=%d.\n", src_dat, dest_dat, old_dest_dat, area_state); + xga_accel_write_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dest_dat, dstwidth + 1); + } + } + } else { + if (area_state) + src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : frgdcol; + else + src_dat = (((xga->accel.command >> 30) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : bkgdcol; + + if ((xga->accel.px_map_format[xga->accel.dst_map] & 7) <= 3) + src_dat &= 0xff; + + dest_dat = xga_accel_read_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dstwidth + 1, 0); + if ((xga->accel.cc_cond == 4) || ((xga->accel.cc_cond == 1) && (dest_dat > color_cmp)) || ((xga->accel.cc_cond == 2) && (dest_dat == color_cmp)) || ((xga->accel.cc_cond == 3) && (dest_dat < color_cmp)) || ((xga->accel.cc_cond == 5) && (dest_dat >= color_cmp)) || ((xga->accel.cc_cond == 6) && (dest_dat != color_cmp)) || ((xga->accel.cc_cond == 7) && (dest_dat <= color_cmp))) { + old_dest_dat = dest_dat; + ROP(area_state, dest_dat, src_dat); + dest_dat = (dest_dat & plane_mask) | (old_dest_dat & ~plane_mask); + xga_log("2Fill: NumXY(%d,%d): DXY(%d,%d): SRCDat=%02x, DSTDat=%02x, Old=%02x, frgdcol=%02x, bkgdcol=%02x, MIX=%d, frgdmix=%02x, bkgdmix=%02x, dstmapfmt=%02x, srcmapfmt=%02x, srcmapnum=%d.\n", x, y, xga->accel.dx, xga->accel.dy, src_dat, dest_dat, old_dest_dat, frgdcol, bkgdcol, area_state, xga->accel.frgd_mix & 0x1f, xga->accel.bkgd_mix & 0x1f, xga->accel.px_map_format[xga->accel.dst_map] & 0x0f, xga->accel.px_map_format[xga->accel.src_map] & 0x0f, xga->accel.src_map); + xga_accel_write_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dest_dat, dstwidth + 1); + } + } + + xga->accel.sx = ((xga->accel.sx + 1) & srcwidth) | (xga->accel.sx & ~srcwidth); + xga->accel.px = ((xga->accel.px + 1) & patwidth) | (xga->accel.px & ~patwidth); + xga->accel.dx++; + xga->accel.x--; + x++; + if (xga->accel.x < 0) { + area_state = 0; + x = 0; + xga->accel.y--; + xga->accel.x = xga->accel.blt_width & 0xfff; + + xga->accel.dx = xga->accel.dst_map_x & 0x1fff; + if (xga->accel.dst_map_x >= 0x1800) + xga->accel.dx |= ~0x17ff; + xga->accel.sx = xga->accel.src_map_x & 0xfff; + xga->accel.px = xga->accel.pat_map_x & 0xfff; + + xga->accel.sy = ((xga->accel.sy + ydir) & srcheight) | (xga->accel.sy & ~srcheight); + xga->accel.py += ydir; + xga->accel.dy += ydir; + y++; + + if (xga->accel.y < 0) { + xga->accel.dst_map_x = xga->accel.dx; + xga->accel.dst_map_y = xga->accel.dy; + return; + } + } + } + } else { + while (xga->accel.y >= 0) { + mix = xga_accel_read_pattern_map_pixel(svga, xga->accel.px, xga->accel.py, xga->accel.pat_src, patbase, patwidth + 1); + + if (xga->accel.command & 0xc0) { + if ((xga->accel.dx >= xga->accel.mask_map_origin_x_off) && (xga->accel.dx <= ((xga->accel.px_map_width[0] & 0xfff) + xga->accel.mask_map_origin_x_off)) && (xga->accel.dy >= xga->accel.mask_map_origin_y_off) && (xga->accel.dy <= ((xga->accel.px_map_height[0] & 0xfff) + xga->accel.mask_map_origin_y_off))) { + if (mix) { + src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : frgdcol; + } else { + src_dat = (((xga->accel.command >> 30) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : bkgdcol; + } + dest_dat = xga_accel_read_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dstwidth + 1, 0); + if ((xga->accel.cc_cond == 4) || ((xga->accel.cc_cond == 1) && (dest_dat > color_cmp)) || ((xga->accel.cc_cond == 2) && (dest_dat == color_cmp)) || ((xga->accel.cc_cond == 3) && (dest_dat < color_cmp)) || ((xga->accel.cc_cond == 5) && (dest_dat >= color_cmp)) || ((xga->accel.cc_cond == 6) && (dest_dat != color_cmp)) || ((xga->accel.cc_cond == 7) && (dest_dat <= color_cmp))) { + old_dest_dat = dest_dat; + ROP(mix, dest_dat, src_dat); + dest_dat = (dest_dat & plane_mask) | (old_dest_dat & ~plane_mask); + xga_accel_write_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dest_dat, dstwidth + 1); + } + } + } else { if (mix) { src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : frgdcol; } else { @@ -1580,49 +1761,36 @@ xga_bitblt(svga_t *svga) xga_accel_write_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dest_dat, dstwidth + 1); } } - } else { - if (mix) { - src_dat = (((xga->accel.command >> 28) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : frgdcol; - } else { - src_dat = (((xga->accel.command >> 30) & 3) == 2) ? xga_accel_read_map_pixel(svga, xga->accel.sx, xga->accel.sy, xga->accel.src_map, srcbase, srcwidth + 1, 1) : bkgdcol; - } - dest_dat = xga_accel_read_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dstwidth + 1, 0); - if ((xga->accel.cc_cond == 4) || ((xga->accel.cc_cond == 1) && (dest_dat > color_cmp)) || ((xga->accel.cc_cond == 2) && (dest_dat == color_cmp)) || ((xga->accel.cc_cond == 3) && (dest_dat < color_cmp)) || ((xga->accel.cc_cond == 5) && (dest_dat >= color_cmp)) || ((xga->accel.cc_cond == 6) && (dest_dat != color_cmp)) || ((xga->accel.cc_cond == 7) && (dest_dat <= color_cmp))) { - old_dest_dat = dest_dat; - ROP(mix, dest_dat, src_dat); - dest_dat = (dest_dat & plane_mask) | (old_dest_dat & ~plane_mask); - xga_accel_write_map_pixel(svga, xga->accel.dx, xga->accel.dy, xga->accel.dst_map, dstbase, dest_dat, dstwidth + 1); - } - } - xga->accel.sx += xdir; - if (xga->accel.pattern) - xga->accel.px = ((xga->accel.px + xdir) & patwidth) | (xga->accel.px & ~patwidth); - else - xga->accel.px += xdir; - xga->accel.dx += xdir; - xga->accel.x--; - if (xga->accel.x < 0) { - xga->accel.y--; - xga->accel.x = (xga->accel.blt_width & 0xfff); - - xga->accel.dx = xga->accel.dst_map_x & 0x1fff; - if (xga->accel.dst_map_x >= 0x1800) - xga->accel.dx |= ~0x17ff; - xga->accel.sx = xga->accel.src_map_x & 0xfff; - xga->accel.px = xga->accel.pat_map_x & 0xfff; - - xga->accel.sy += ydir; + xga->accel.sx += xdir; if (xga->accel.pattern) - xga->accel.py = ((xga->accel.py + ydir) & patheight) | (xga->accel.py & ~patheight); + xga->accel.px = ((xga->accel.px + xdir) & patwidth) | (xga->accel.px & ~patwidth); else - xga->accel.py += ydir; - xga->accel.dy += ydir; + xga->accel.px += xdir; + xga->accel.dx += xdir; + xga->accel.x--; + if (xga->accel.x < 0) { + xga->accel.y--; + xga->accel.x = (xga->accel.blt_width & 0xfff); - if (xga->accel.y < 0) { - xga->accel.dst_map_x = xga->accel.dx; - xga->accel.dst_map_y = xga->accel.dy; - return; + xga->accel.dx = xga->accel.dst_map_x & 0x1fff; + if (xga->accel.dst_map_x >= 0x1800) + xga->accel.dx |= ~0x17ff; + xga->accel.sx = xga->accel.src_map_x & 0xfff; + xga->accel.px = xga->accel.pat_map_x & 0xfff; + + xga->accel.sy += ydir; + if (xga->accel.pattern) + xga->accel.py = ((xga->accel.py + ydir) & patheight) | (xga->accel.py & ~patheight); + else + xga->accel.py += ydir; + xga->accel.dy += ydir; + + if (xga->accel.y < 0) { + xga->accel.dst_map_x = xga->accel.dx; + xga->accel.dst_map_y = xga->accel.dy; + return; + } } } } @@ -2054,24 +2222,29 @@ exec_command: #endif switch ((xga->accel.command >> 24) & 0x0f) { + case 2: /*Short Stroke Vectors Read */ + xga_log("Short Stroke Vectors Read.\n"); + break; case 3: /*Bresenham Line Draw Read*/ xga_log("Line Draw Read\n"); break; - case 4: /*Short Stroke Vectors*/ - xga_log("Short Stroke Vectors.\n"); + case 4: /*Short Stroke Vectors Write*/ + xga_log("Short Stroke Vectors Write.\n"); break; case 5: /*Bresenham Line Draw Write*/ xga_log("Line Draw Write.\n"); xga_line_draw_write(svga); break; case 8: /*BitBLT*/ + xga_log("BitBLT.\n"); xga_bitblt(svga); break; case 9: /*Inverting BitBLT*/ xga_log("Inverting BitBLT\n"); break; case 0x0a: /*Area Fill*/ - xga_log("Area Fill.\n"); + xga_log("Area Fill BitBLT.\n"); + xga_bitblt(svga); break; default: @@ -2355,6 +2528,47 @@ xga_render_overscan_right(xga_t *xga, svga_t *svga) *line_ptr++ = svga->overscan_color; } +static void +xga_render_4bpp(svga_t *svga) +{ + xga_t *xga = &svga->xga; + uint32_t *p; + uint32_t dat; + + if ((xga->displine + svga->y_add) < 0) + return; + + if (xga->changedvram[xga->ma >> 12] || xga->changedvram[(xga->ma >> 12) + 1] || svga->fullchange) { + p = &svga->monitor->target_buffer->line[xga->displine + svga->y_add][svga->x_add]; + + if (xga->firstline_draw == 2000) + xga->firstline_draw = xga->displine; + xga->lastline_draw = xga->displine; + + for (int x = 0; x <= xga->h_disp; x += 16) { + dat = *(uint32_t *) (&xga->vram[xga->ma & xga->vram_mask]); + p[0] = xga->pallook[(dat >> 4) & 0x0f]; + p[1] = xga->pallook[dat & 0x0f]; + p[2] = xga->pallook[(dat >> 12) & 0x0f]; + p[3] = xga->pallook[(dat >> 8) & 0x0f]; + p[4] = xga->pallook[(dat >> 20) & 0x0f]; + p[5] = xga->pallook[(dat >> 16) & 0x0f]; + p[6] = xga->pallook[(dat >> 28) & 0x0f]; + p[7] = xga->pallook[(dat >> 24) & 0x0f]; + + dat = *(uint32_t *) (&xga->vram[(xga->ma + 4) & xga->vram_mask]); + p[9] = xga->pallook[dat & 0x0f]; + p[11] = xga->pallook[(dat >> 8) & 0x0f]; + p[13] = xga->pallook[(dat >> 16) & 0x0f]; + p[15] = xga->pallook[(dat >> 24) & 0x0f]; + + xga->ma += 8; + p += 16; + } + xga->ma &= xga->vram_mask; + } +} + static void xga_render_8bpp(svga_t *svga) { @@ -2449,7 +2663,7 @@ xga_write(uint32_t addr, uint8_t val, void *priv) if (addr >= xga->vram_size) return; - cycles -= video_timing_write_b; + cycles -= svga->monitor->mon_video_timing_write_b; if (xga->access_mode & 8) { if ((xga->access_mode & 7) == 4) @@ -2510,7 +2724,7 @@ xga_read(uint32_t addr, void *priv) if (addr >= xga->vram_size) return ret; - cycles -= video_timing_read_b; + cycles -= svga->monitor->mon_video_timing_read_b; if (xga->access_mode & 8) { if ((xga->access_mode & 7) == 4) @@ -2695,6 +2909,9 @@ xga_do_render(svga_t *svga) xga_log("DISPCNTL = %d, vga = %d.\n", xga->disp_cntl_2 & 7, vga_on); switch (xga->disp_cntl_2 & 7) { + case 2: + xga_render_4bpp(svga); + break; case 3: xga_render_8bpp(svga); break; @@ -2773,15 +2990,9 @@ xga_poll(xga_t *xga, svga_t *svga) if (xga->sc == xga->rowcount) { xga->sc = 0; - if ((xga->disp_cntl_2 & 7) == 4) { - xga->maback += (xga->rowoffset << 4); - if (xga->interlace) - xga->maback += (xga->rowoffset << 4); - } else { - xga->maback += (xga->rowoffset << 3); - if (xga->interlace) - xga->maback += (xga->rowoffset << 3); - } + xga->maback += (xga->rowoffset << (xga->disp_cntl_2 & 7)); + if (xga->interlace) + xga->maback += (xga->rowoffset << (xga->disp_cntl_2 & 7)); xga->maback &= xga->vram_mask; xga->ma = xga->maback; } else { From f104653312dee9bc9ce0c856d99641d927d07ee0 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sat, 30 Sep 2023 22:14:30 +0200 Subject: [PATCH 32/82] Forgot one more change: Actually make the Adaptec AHA-154xC/CF/CP and possibly the 1640 one (TBD in real hardware) signature aware. --- src/scsi/scsi_aha154x.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/scsi/scsi_aha154x.c b/src/scsi/scsi_aha154x.c index 43fbf360f..5bfe854b3 100644 --- a/src/scsi/scsi_aha154x.c +++ b/src/scsi/scsi_aha154x.c @@ -1025,6 +1025,7 @@ aha_init(const device_t *info) dev->rom_shramsz = 128; /* size of shadow RAM */ dev->rom_ioaddr = 0x3F7E; /* [2:0] idx into addr table */ dev->rom_fwhigh = 0x0022; /* firmware version (hi/lo) */ + dev->flags |= X54X_HAS_SIGNATURE; dev->ven_get_host_id = aha_get_host_id; /* function to return host ID from EEPROM */ dev->ven_get_irq = aha_get_irq; /* function to return IRQ from EEPROM */ dev->ven_get_dma = aha_get_dma; /* function to return DMA channel from EEPROM */ @@ -1041,6 +1042,7 @@ aha_init(const device_t *info) dev->rom_ioaddr = 0x3F7E; /* [2:0] idx into addr table */ dev->rom_fwhigh = 0x0022; /* firmware version (hi/lo) */ dev->flags |= X54X_CDROM_BOOT; + dev->flags |= X54X_HAS_SIGNATURE; dev->ven_get_host_id = aha_get_host_id; /* function to return host ID from EEPROM */ dev->ven_get_irq = aha_get_irq; /* function to return IRQ from EEPROM */ dev->ven_get_dma = aha_get_dma; /* function to return DMA channel from EEPROM */ @@ -1061,6 +1063,7 @@ aha_init(const device_t *info) dev->rom_fwhigh = 0x0055; /* firmware version (hi/lo) */ dev->flags |= X54X_CDROM_BOOT; dev->flags |= X54X_ISAPNP; + dev->flags |= X54X_HAS_SIGNATURE; dev->ven_get_host_id = aha_get_host_id; /* function to return host ID from EEPROM */ dev->ven_get_irq = aha_get_irq; /* function to return IRQ from EEPROM */ dev->ven_get_dma = aha_get_dma; /* function to return DMA channel from EEPROM */ @@ -1085,6 +1088,7 @@ aha_init(const device_t *info) dev->fw_rev = "BB01"; dev->flags |= X54X_LBA_BIOS; + dev->flags |= X54X_HAS_SIGNATURE; /*To be confirmed*/ /* Enable MCA. */ dev->pos_regs[0] = 0x1F; /* MCA board ID */ From 097fa229bdd686b7122533ebf1a4e1dc9f4b3459 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sat, 30 Sep 2023 22:21:09 +0200 Subject: [PATCH 33/82] Fix compilation. --- src/video/vid_xga.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video/vid_xga.c b/src/video/vid_xga.c index 2c1749402..d27da0d36 100644 --- a/src/video/vid_xga.c +++ b/src/video/vid_xga.c @@ -1274,6 +1274,7 @@ xga_line_draw_write(svga_t *svga) int x = 0; int dx; int dy; + int draw_pixel; dminor = (xga->accel.bres_k1); if (xga->accel.bres_k1 & 0x2000) From b03df6bdd1ab3741220bc6b70287b12644928b9e Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 1 Oct 2023 17:26:44 +0200 Subject: [PATCH 34/82] Attempted PIC fix. --- src/pic.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/pic.c b/src/pic.c index 9f7f2cc9b..cb0e31641 100644 --- a/src/pic.c +++ b/src/pic.c @@ -223,25 +223,30 @@ find_best_interrupt(pic_t *dev) static __inline void pic_update_pending_xt(void) { - if (find_best_interrupt(&pic) != -1) { - latched++; - if (latched == 1) - timer_on_auto(&pic_timer, 0.35); - } else if (latched == 0) - pic.int_pending = 0; + if (!(pic.interrupt & 0x20)) { + if (find_best_interrupt(&pic) != -1) { + latched++; + if (latched == 1) + timer_on_auto(&pic_timer, 0.35); + } else if (latched == 0) + pic.int_pending = 0; + } } static __inline void pic_update_pending_at(void) { - pic2.int_pending = (find_best_interrupt(&pic2) != -1); + if (!(pic2.interrupt & 0x20)) { + pic2.int_pending = (find_best_interrupt(&pic2) != -1); - if (pic2.int_pending) - pic.irr |= (1 << pic2.icw3); - else - pic.irr &= ~(1 << pic2.icw3); + if (pic2.int_pending) + pic.irr |= (1 << pic2.icw3); + else + pic.irr &= ~(1 << pic2.icw3); + } - pic.int_pending = (find_best_interrupt(&pic) != -1); + if (!(pic.interrupt & 0x20)) + pic.int_pending = (find_best_interrupt(&pic) != -1); } static void @@ -755,8 +760,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) } } - if (!(pic.interrupt & 0x20) && !(pic2.interrupt & 0x20)) - update_pending(); + update_pending(); } static uint8_t From ed119ed1638430226d05c2f1605b87e27b4096b0 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 1 Oct 2023 17:33:53 +0200 Subject: [PATCH 35/82] And another. --- src/pic.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pic.c b/src/pic.c index cb0e31641..745774c9d 100644 --- a/src/pic.c +++ b/src/pic.c @@ -238,12 +238,12 @@ pic_update_pending_at(void) { if (!(pic2.interrupt & 0x20)) { pic2.int_pending = (find_best_interrupt(&pic2) != -1); - - if (pic2.int_pending) - pic.irr |= (1 << pic2.icw3); - else - pic.irr &= ~(1 << pic2.icw3); } + + if (pic2.int_pending) + pic.irr |= (1 << pic2.icw3); + else + pic.irr &= ~(1 << pic2.icw3); if (!(pic.interrupt & 0x20)) pic.int_pending = (find_best_interrupt(&pic) != -1); From 8634cffb98f7299cc65e8e42976abd207215d600 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 1 Oct 2023 17:55:31 +0200 Subject: [PATCH 36/82] Replaced the fatal for 286+ with an error correction mechanism (clear IRQ 2 and find best PIC 1 interrupt again). --- src/pic.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/pic.c b/src/pic.c index 745774c9d..a109be0fa 100644 --- a/src/pic.c +++ b/src/pic.c @@ -233,20 +233,21 @@ pic_update_pending_xt(void) } } +/* Only check if PIC 1 frozen, because it should not happen + that one is frozen but the other is not. */ static __inline void pic_update_pending_at(void) { - if (!(pic2.interrupt & 0x20)) { + if (!(pic.interrupt & 0x20)) { pic2.int_pending = (find_best_interrupt(&pic2) != -1); - } - if (pic2.int_pending) - pic.irr |= (1 << pic2.icw3); - else - pic.irr &= ~(1 << pic2.icw3); + if (pic2.int_pending) + pic.irr |= (1 << pic2.icw3); + else + pic.irr &= ~(1 << pic2.icw3); - if (!(pic.interrupt & 0x20)) pic.int_pending = (find_best_interrupt(&pic) != -1); + } } static void @@ -852,8 +853,12 @@ picinterrupt(void) if (pic_slave_on(&pic, pic.interrupt)) { if (!pic.slaves[pic.interrupt]->int_pending) { /* If we are on AT, IRQ 2 is pending, and we cannot find a pending IRQ on PIC 2, fatal out. */ - fatal("IRQ %i pending on AT without a pending IRQ on PIC %i (normal)\n", pic.interrupt, pic.interrupt); - exit(-1); + // fatal("IRQ %i pending on AT without a pending IRQ on PIC %i (normal)\n", pic.interrupt, pic.interrupt); + // exit(-1); + /* Error correction mechanism: Clear IRQ 2 and find best interrupt again. */ + pic.irr &= ~(1 << pic2.icw3); + pic.int_pending = (find_best_interrupt(&pic) != -1); + return ret; } pic.interrupt |= 0x40; /* Mark slave pending. */ From 76160c4d1d8aac6bbe24fc79e88ba8999ab5aab4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 1 Oct 2023 18:00:58 +0200 Subject: [PATCH 37/82] Do a spurious IRQ 7 or IRQ 15 instead, per the specification. --- src/pic.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/pic.c b/src/pic.c index a109be0fa..f9f2d719d 100644 --- a/src/pic.c +++ b/src/pic.c @@ -855,29 +855,32 @@ picinterrupt(void) /* If we are on AT, IRQ 2 is pending, and we cannot find a pending IRQ on PIC 2, fatal out. */ // fatal("IRQ %i pending on AT without a pending IRQ on PIC %i (normal)\n", pic.interrupt, pic.interrupt); // exit(-1); - /* Error correction mechanism: Clear IRQ 2 and find best interrupt again. */ - pic.irr &= ~(1 << pic2.icw3); - pic.int_pending = (find_best_interrupt(&pic) != -1); - return ret; - } - - pic.interrupt |= 0x40; /* Mark slave pending. */ + /* Error correction mechanism: Do a supurious IRQ 15 (spurious IRQ 7 on PIC 2). */ + pic.slaves[pic.interrupt]->int_pending = 1; + pic.slaves[pic.interrupt]->interrupt = 0x07; + } else + pic.interrupt |= 0x40; /* Mark slave pending. */ } + } else { + /* pic.int_pending was somehow cleared despite the fact we made it here, + do a spurious IRQ 7. */ + pic.int_pending = 1; + pic.interrupt = 0x07; + } - if ((pic.interrupt == 0) && (pit_devs[1].data != NULL)) - pit_devs[1].set_gate(pit_devs[1].data, 0, 0); + if ((pic.interrupt == 0) && (pit_devs[1].data != NULL)) + pit_devs[1].set_gate(pit_devs[1].data, 0, 0); - /* Two ACK's - do them in a loop to avoid potential compiler misoptimizations. */ - for (uint8_t i = 0; i < 2; i++) { - ret = pic_irq_ack_read(&pic, pic.ack_bytes); - pic.ack_bytes = (pic.ack_bytes + 1) % (pic_i86_mode(&pic) ? 2 : 3); + /* Two ACK's - do them in a loop to avoid potential compiler misoptimizations. */ + for (uint8_t i = 0; i < 2; i++) { + ret = pic_irq_ack_read(&pic, pic.ack_bytes); + pic.ack_bytes = (pic.ack_bytes + 1) % (pic_i86_mode(&pic) ? 2 : 3); - if (pic.ack_bytes == 0) { - if (pic.interrupt & 0x40) - pic2.interrupt = 0x17; - pic.interrupt = 0x17; - update_pending(); - } + if (pic.ack_bytes == 0) { + if (pic.interrupt & 0x40) + pic2.interrupt = 0x17; + pic.interrupt = 0x17; + update_pending(); } } From ebd5f950bc76b70a624e4c978f82e47822fa9b60 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 1 Oct 2023 20:37:30 +0200 Subject: [PATCH 38/82] A slight PIC rework. --- src/pic.c | 145 ++++++++++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 82 deletions(-) diff --git a/src/pic.c b/src/pic.c index f9f2d719d..872748f1d 100644 --- a/src/pic.c +++ b/src/pic.c @@ -634,9 +634,12 @@ void picint_common(uint16_t num, int level, int set, uint8_t *irq_state) { int raise; + int max = 16; uint8_t b; uint8_t slaves = 0; + uint16_t w; uint16_t lines = level ? 0x0000 : num; + pic_t *dev; /* Make sure to ignore all slave IRQ's, and in case of AT+, translate IRQ 2 to IRQ 9. */ @@ -656,112 +659,90 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) } if (!slaves) - num &= 0x00ff; + max = 8; if (!num) { pic_log("Attempting to %s null IRQ\n", set ? "raise" : "lower"); return; } - if (num & 0x0100) - acpi_rtc_status = !!set; + if (level) { + dev = &pic; - if (set) { - if (smi_irq_mask & num) { - smi_raise(); - smi_irq_status |= num; + for (uint16_t i = 0; i < max; i++) { + if (i == 8) + dev = &pic2; + + b = i & 7; + w = 1 << i; + + if (num & w) { + if ((!!*irq_state) != !!set) + set ? dev->lines[b]++ : dev->lines[b]--; + + if ((!pic_level_triggered(dev, b) || ((!!*irq_state) != !!set))) + lines |= w; + } } - if (num & 0xff00) { - if (level) { - for (uint8_t i = 0; i < 8; i++) { - b = (uint8_t) (1 << i); - if (((num >> 8) & b) && ((!!*irq_state) != !!set)) - pic2.lines[i]++; - } + if ((!!*irq_state) != !!set) + *irq_state = set; - if ((!!*irq_state) != !!set) - *irq_state = set; + num = lines; + } + + if (!slaves) + num &= 0x00ff; + + if (num & 0x0100) + acpi_rtc_status = !!set; + + if (num) { + if (set) { + if (smi_irq_mask & num) { + smi_raise(); + smi_irq_status |= num; } - /* Latch IRQ 12 if the mouse latch is enabled. */ - if ((num & 0x1000) && mouse_latch) - latched_irqs |= 0x1000; + if (num & 0xff00) { + /* Latch IRQ 12 if the mouse latch is enabled. */ + if ((num & 0x1000) && mouse_latch) + latched_irqs |= 0x1000; - pic2.irr |= (num >> 8); - } - - if (num & 0x00ff) { - if (level) { - for (uint8_t i = 0; i < 8; i++) { - b = (uint8_t) (1 << i); - if ((num & b) && ((!!*irq_state) != !!set)) - pic.lines[i]++; - } - - if ((!!*irq_state) != !!set) - *irq_state = set; + pic2.irr |= (num >> 8); } - /* Latch IRQ 1 if the keyboard latch is enabled. */ - if (kbd_latch && (num & 0x0002)) - latched_irqs |= 0x0002; + if (num & 0x00ff) { + /* Latch IRQ 1 if the keyboard latch is enabled. */ + if (kbd_latch && (num & 0x0002)) + latched_irqs |= 0x0002; - pic.irr |= (num & 0x00ff); - } - } else { - smi_irq_status &= ~num; + pic.irr |= (num & 0x00ff); + } + } else { + smi_irq_status &= ~num; - if (num & 0xff00) { - if (level) { - for (uint8_t i = 0; i < 8; i++) { - b = (uint8_t) (1 << i); - if ((num >> 8) & b) { - if ((!!*irq_state) != !!set) - pic2.lines[i]--; - if (!pic_level_triggered(&pic2, i) || (pic2.lines[i] == 0)) - lines |= ((uint16_t) b << 8); - } - } + if (num & 0xff00) { + /* Unlatch IRQ 12 if the mouse latch is enabled. */ + if ((num & 0x1000) && mouse_latch) + latched_irqs &= 0xefff; - if ((!!*irq_state) != !!set) - *irq_state = set; + if (!level || lines) + pic2.irr &= ~(num >> 8); } - /* Unlatch IRQ 12 if the mouse latch is enabled. */ - if ((num & 0x1000) && mouse_latch) - latched_irqs &= 0xefff; + if (num & 0x00ff) { + /* Unlatch IRQ 1 if the keyboard latch is enabled. */ + if (kbd_latch && (num & 0x0002)) + latched_irqs &= 0xfffd; - if (!level || lines) - pic2.irr &= ~(lines >> 8); - } - - if (num & 0x00ff) { - if (level) { - for (uint8_t i = 0; i < 8; i++) { - b = (uint8_t) (1 << i); - if (num & b) { - if ((!!*irq_state) != !!set) - pic.lines[i]--; - if (!pic_level_triggered(&pic, i) || (pic.lines[i] == 0)) - lines |= ((uint16_t) b); - } - } - - if ((!!*irq_state) != !!set) - *irq_state = set; + if (!level || lines) + pic.irr &= ~(num & 0x00ff); } - - /* Unlatch IRQ 1 if the keyboard latch is enabled. */ - if (kbd_latch && (num & 0x0002)) - latched_irqs &= 0xfffd; - - if (!level || lines) - pic.irr &= ~(lines & 0x00ff); } + + update_pending(); } - - update_pending(); } static uint8_t From 1c8ad0b7e8da6b59032775914a6785b736a2724f Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 3 Oct 2023 03:28:21 +0200 Subject: [PATCH 39/82] Another PIC fix. --- src/pic.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pic.c b/src/pic.c index 872748f1d..5d21e717b 100644 --- a/src/pic.c +++ b/src/pic.c @@ -727,8 +727,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((num & 0x1000) && mouse_latch) latched_irqs &= 0xefff; - if (!level || lines) - pic2.irr &= ~(num >> 8); + pic2.irr &= ~(num >> 8); } if (num & 0x00ff) { @@ -736,13 +735,12 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if (kbd_latch && (num & 0x0002)) latched_irqs &= 0xfffd; - if (!level || lines) - pic.irr &= ~(num & 0x00ff); + pic.irr &= ~(num & 0x00ff); } } - - update_pending(); } + + update_pending(); } static uint8_t From b363cbf8843dc81d04738235c16220d1bcdb9640 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 3 Oct 2023 06:28:22 +0200 Subject: [PATCH 40/82] Another PIC fix. --- src/pic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pic.c b/src/pic.c index 5d21e717b..56cd2d12e 100644 --- a/src/pic.c +++ b/src/pic.c @@ -680,7 +680,7 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((!!*irq_state) != !!set) set ? dev->lines[b]++ : dev->lines[b]--; - if ((!pic_level_triggered(dev, b) || ((!!*irq_state) != !!set))) + if (!pic_level_triggered(dev, b) || (dev->lines[b] == (!!set))) lines |= w; } } From 71d4c4837fff5210725c23f115fae80ad9d4f30c Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 3 Oct 2023 19:39:28 +0200 Subject: [PATCH 41/82] Revert to not updating pending IRQ's if the request results in no effective change. --- src/pic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pic.c b/src/pic.c index 56cd2d12e..069ebb01e 100644 --- a/src/pic.c +++ b/src/pic.c @@ -738,9 +738,9 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) pic.irr &= ~(num & 0x00ff); } } - } - update_pending(); + update_pending(); + } } static uint8_t From 7fed7c15106315402225cf12c3aa8a0d16bc54d1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 3 Oct 2023 20:03:13 +0200 Subject: [PATCH 42/82] Made the condition for asserting an IRQ stricter. --- src/pic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pic.c b/src/pic.c index 069ebb01e..f83d8fcb5 100644 --- a/src/pic.c +++ b/src/pic.c @@ -680,7 +680,8 @@ picint_common(uint16_t num, int level, int set, uint8_t *irq_state) if ((!!*irq_state) != !!set) set ? dev->lines[b]++ : dev->lines[b]--; - if (!pic_level_triggered(dev, b) || (dev->lines[b] == (!!set))) + if (!pic_level_triggered(dev, b) || + (((!!*irq_state) != !!set) && (dev->lines[b] == (!!set)))) lines |= w; } } From 209c8fbbda8e3fdada7dc6caffe14d5eae236988 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 4 Oct 2023 02:49:22 +0200 Subject: [PATCH 43/82] Assorted CD-ROM fixes (now cue sheets starting at a non-zero sector work correctly) and increased the maximum number of CD-ROM drives to 8. --- src/cdrom/cdrom_image_backend.c | 16 +++++++++++----- src/include/86box/cdrom.h | 2 +- src/include/86box/scsi_device.h | 4 ++-- src/scsi/scsi_cdrom.c | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/cdrom/cdrom_image_backend.c b/src/cdrom/cdrom_image_backend.c index 6aafe6ccb..151ddfe9f 100644 --- a/src/cdrom/cdrom_image_backend.c +++ b/src/cdrom/cdrom_image_backend.c @@ -73,7 +73,7 @@ bin_read(void *priv, uint8_t *buffer, uint64_t seek, size_t count) track_file_t *tf = (track_file_t *) priv; cdrom_image_backend_log("CDROM: binary_read(%08lx, pos=%" PRIu64 " count=%lu\n", - tf->file, seek, count); + tf->fp, seek, count); if (tf->fp == NULL) return 0; @@ -101,14 +101,14 @@ bin_get_length(void *priv) off64_t len; track_file_t *tf = (track_file_t *) priv; - cdrom_image_backend_log("CDROM: binary_length(%08lx)\n", tf->file); + cdrom_image_backend_log("CDROM: binary_length(%08lx)\n", tf->fp); if (tf->fp == NULL) return 0; fseeko64(tf->fp, 0, SEEK_END); len = ftello64(tf->fp); - cdrom_image_backend_log("CDROM: binary_length(%08lx) = %" PRIu64 "\n", tf->file, len); + cdrom_image_backend_log("CDROM: binary_length(%08lx) = %" PRIu64 "\n", tf->fp, len); return len; } @@ -145,7 +145,7 @@ bin_init(const char *filename, int *error) memset(tf->fn, 0x00, sizeof(tf->fn)); strncpy(tf->fn, filename, sizeof(tf->fn) - 1); tf->fp = plat_fopen64(tf->fn, "rb"); - cdrom_image_backend_log("CDROM: binary_open(%s) = %08lx\n", tf->fn, tf->file); + cdrom_image_backend_log("CDROM: binary_open(%s) = %08lx\n", tf->fn, tf->fp); if (stat(tf->fn, &stats) != 0) { /* Use a blank structure if stat failed. */ @@ -332,6 +332,11 @@ cdi_get_track(cd_img_t *cdi, uint32_t sector) for (int i = 0; i < (cdi->tracks_num - 1); i++) { cur = &cdi->tracks[i]; next = &cdi->tracks[i + 1]; + + /* Take into account cue sheets that do not start on sector 0. */ + if ((i == 0) && (sector < cur->start)) + return cur->number; + if ((cur->start <= sector) && (sector < next->start)) return cur->number; } @@ -425,8 +430,9 @@ cdi_read_sector(cd_img_t *cdi, uint8_t *buffer, int raw, uint32_t sector) return 1; } else if (!raw && track_is_raw) return trk->file->read(trk->file, buffer, seek + offset, length); - else + else { return trk->file->read(trk->file, buffer, seek, length); + } } int diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 5d43778fc..4f4508002 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -15,7 +15,7 @@ #ifndef EMU_CDROM_H #define EMU_CDROM_H -#define CDROM_NUM 4 +#define CDROM_NUM 8 #define CD_STATUS_EMPTY 0 #define CD_STATUS_DATA_ONLY 1 diff --git a/src/include/86box/scsi_device.h b/src/include/86box/scsi_device.h index 2b07e6354..e04cc058f 100644 --- a/src/include/86box/scsi_device.h +++ b/src/include/86box/scsi_device.h @@ -224,12 +224,12 @@ #define RW_DELAY (TIMER_USEC * 500) /* Some generally useful CD-ROM information */ -#define CD_MINS 75 /* max. minutes per CD */ +#define CD_MINS 90 /* max. minutes per CD */ #define CD_SECS 60 /* seconds per minute */ #define CD_FRAMES 75 /* frames per second */ #define CD_FRAMESIZE 2048 /* bytes per frame, "cooked" mode */ #define CD_MAX_BYTES (CD_MINS * CD_SECS * CD_FRAMES * CD_FRAMESIZE) -#define CD_MAX_SECTORS (CD_MAX_BYTES / 512) +#define CD_MAX_SECTORS (CD_MAX_BYTES / 2048) /* Event notification classes for GET EVENT STATUS NOTIFICATION */ #define GESN_NO_EVENTS 0 diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index 7cc685da4..df19f185a 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -2256,7 +2256,7 @@ begin: another variable. */ if (dev->drv->cd_status == CD_STATUS_EMPTY) max_len = 70; /* No media inserted. */ - else if (dev->drv->cdrom_capacity > 405000) + else if (dev->drv->cdrom_capacity > CD_MAX_SECTORS) max_len = 65; /* DVD. */ else if (dev->drv->cd_status == CD_STATUS_DATA_ONLY) max_len = 1; /* Data CD. */ From 488e066e8c84ba70091033ff7b81edec1c4b8e4f Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 4 Oct 2023 05:38:07 +0200 Subject: [PATCH 44/82] Reapplied the PCjr PIC fix from build 4785, fixes #3707. --- src/pic.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/pic.c b/src/pic.c index f83d8fcb5..43b2eee42 100644 --- a/src/pic.c +++ b/src/pic.c @@ -223,14 +223,8 @@ find_best_interrupt(pic_t *dev) static __inline void pic_update_pending_xt(void) { - if (!(pic.interrupt & 0x20)) { - if (find_best_interrupt(&pic) != -1) { - latched++; - if (latched == 1) - timer_on_auto(&pic_timer, 0.35); - } else if (latched == 0) - pic.int_pending = 0; - } + if (!(pic.interrupt & 0x20)) + pic.int_pending = (find_best_interrupt(&pic) != -1); } /* Only check if PIC 1 frozen, because it should not happen @@ -253,13 +247,7 @@ pic_update_pending_at(void) static void pic_callback(void *priv) { - pic_t *dev = (pic_t *) priv; - - dev->int_pending = 1; - - latched--; - if (latched > 0) - timer_on_auto(&pic_timer, 0.35); + update_pending(); } void @@ -500,7 +488,10 @@ pic_write(uint16_t addr, uint8_t val, void *priv) break; case STATE_NONE: dev->imr = val; - update_pending(); + if (is286) + update_pending(); + else + timer_on_auto(&pic_timer, .0 * ((10000000.0 * (double) xt_cpu_multi) / (double) cpu_s->rspeed)); break; default: From 54dfee24ed1a6fa5b0f9ac27b92708e85d071be0 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 14:39:06 -0400 Subject: [PATCH 45/82] Minor cleanups to third and fourth IDE controller --- src/disk/hdc_ide.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 0d169e885..e84a975ae 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -2979,7 +2979,7 @@ ide_ter_init(const device_t *info) if (irq == -1) isapnp_add_card(ide_ter_pnp_rom, sizeof(ide_ter_pnp_rom), ide_pnp_config_changed, NULL, NULL, NULL, (void *) 2); } else { - ide_board_init(2, irq, 0x168, 0x36e, 0); + ide_board_init(2, irq, HDC_TERTIARY_BASE, HDC_TERTIARY_SIDE, 0); } return (ide_boards[2]); @@ -3010,7 +3010,7 @@ ide_qua_init(const device_t *info) if (irq == -1) isapnp_add_card(ide_qua_pnp_rom, sizeof(ide_qua_pnp_rom), ide_pnp_config_changed, NULL, NULL, NULL, (void *) 3); } else { - ide_board_init(3, irq, 0x1e8, 0x3ee, 0); + ide_board_init(3, irq, HDC_QUATERNARY_BASE, HDC_QUATERNARY_SIDE, 0); } return (ide_boards[3]); @@ -3239,7 +3239,7 @@ static const device_config_t ide_ter_config[] = { .description = "IRQ", .type = CONFIG_SELECTION, .default_string = "", - .default_int = 10, + .default_int = HDC_TERTIARY_IRQ, .file_filter = "", .spinner = { 0 }, .selection = { @@ -3265,7 +3265,7 @@ static const device_config_t ide_qua_config[] = { .description = "IRQ", .type = CONFIG_SELECTION, .default_string = "", - .default_int = 11, + .default_int = HDC_QUATERNARY_IRQ, .file_filter = "", .spinner = { 0 }, .selection = { From a5a2bb12b879529f71929715719affb403d112b2 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 14:39:46 -0400 Subject: [PATCH 46/82] Swap addresses and IRQ's according to Linux Documentation --- src/disk/hdc_ide.c | 20 ++++++++++---------- src/include/86box/hdc_ide.h | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index e84a975ae..61b8728e1 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -140,13 +140,13 @@ static uint8_t ide_ter_pnp_rom[] = { 0x15, 0x09, 0xf8, 0x00, 0x01, 0x00, /* logical device BOX0001 */ 0x1c, 0x41, 0xd0, 0x06, 0x00, /* compatible device PNP0600 */ 0x31, 0x00, /* start dependent functions, preferred */ - 0x22, 0x00, 0x04, /* IRQ 10 */ - 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ + 0x22, 0x00, 0x08, /* IRQ 11 */ + 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ - 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ 0x47, 0x01, 0x00, 0x01, 0xf8, 0xff, 0x08, 0x08, /* I/O 0x100-0xFFF8, decodes 16-bit, 8-byte alignment, 8 addresses */ @@ -163,13 +163,13 @@ static uint8_t ide_qua_pnp_rom[] = { 0x15, 0x09, 0xf8, 0x00, 0x01, 0x00, /* logical device BOX0001 */ 0x1c, 0x41, 0xd0, 0x06, 0x00, /* compatible device PNP0600 */ 0x31, 0x00, /* start dependent functions, preferred */ - 0x22, 0x00, 0x08, /* IRQ 11 */ - 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ + 0x22, 0x00, 0x04, /* IRQ 10 */ + 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ - 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ 0x47, 0x01, 0x00, 0x01, 0xf8, 0xff, 0x08, 0x08, /* I/O 0x100-0xFFF8, decodes 16-bit, 8-byte alignment, 8 addresses */ diff --git a/src/include/86box/hdc_ide.h b/src/include/86box/hdc_ide.h index 8bac5cf8b..7ecb188e6 100644 --- a/src/include/86box/hdc_ide.h +++ b/src/include/86box/hdc_ide.h @@ -28,12 +28,12 @@ #define HDC_SECONDARY_BASE 0x0170 #define HDC_SECONDARY_SIDE 0x0376 #define HDC_SECONDARY_IRQ 15 -#define HDC_TERTIARY_BASE 0x0168 -#define HDC_TERTIARY_SIDE 0x036E -#define HDC_TERTIARY_IRQ 10 -#define HDC_QUATERNARY_BASE 0x01E8 -#define HDC_QUATERNARY_SIDE 0x03EE -#define HDC_QUATERNARY_IRQ 11 +#define HDC_TERTIARY_BASE 0x01E8 +#define HDC_TERTIARY_SIDE 0x03EE +#define HDC_TERTIARY_IRQ 11 +#define HDC_QUATERNARY_BASE 0x0168 +#define HDC_QUATERNARY_SIDE 0x036E +#define HDC_QUATERNARY_IRQ 10 enum { IDE_NONE = 0, From 1212ee24922996bdaf5ecd91b794c798e5ba0742 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 15:00:47 -0400 Subject: [PATCH 47/82] Fix some typos in the win ui --- src/win/win_new_floppy.c | 2 +- src/win/win_settings.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/win/win_new_floppy.c b/src/win/win_new_floppy.c index 495abfb27..d0a245a45 100644 --- a/src/win/win_new_floppy.c +++ b/src/win/win_new_floppy.c @@ -739,7 +739,7 @@ NewFloppyDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, UNUSED(LPARAM l new_floppy_msgbox_header(hdlg, MBX_ERROR, (wchar_t *) IDS_4108, (wchar_t *) IDS_4115); return TRUE; } - /*FALLTHROUGH*/ + fallthrough; case IDCANCEL: EndDialog(hdlg, 0); plat_pause(0); diff --git a/src/win/win_settings.c b/src/win/win_settings.c index b36a8a90b..adeefd8b4 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -4396,7 +4396,7 @@ win_settings_mo_drives_init_columns(HWND hdlg) static void win_settings_zip_drives_resize_columns(HWND hdlg) { - int width[C_COLUMNS_MO_DRIVES] = { + int width[C_COLUMNS_ZIP_DRIVES] = { C_COLUMNS_ZIP_DRIVES_BUS, C_COLUMNS_ZIP_DRIVES_TYPE }; @@ -4713,12 +4713,12 @@ cdrom_recalc_location_controls(HWND hdlg, int assign_id) settings_show_window(hdlg, IDC_COMBO_CD_SPEED, bus != CDROM_BUS_DISABLED); settings_show_window(hdlg, IDT_CD_SPEED, bus != CDROM_BUS_DISABLED); #if 0 - settings_show_window(hdlg, IDC_CHECKEARLY, bus != CDROM_BUS_DISABLED); + settings_show_window(hdlg, IDC_COMBO_CD_TYPE, bus != CDROM_BUS_DISABLED); #endif if (bus != CDROM_BUS_DISABLED) { settings_set_cur_sel(hdlg, IDC_COMBO_CD_SPEED, temp_cdrom[lv2_current_sel].speed - 1); #if 0 - settings_set_check(hdlg, IDC_CHECKEARLY, temp_cdrom[lv2_current_sel].early); + settings_set_check(hdlg, IDC_COMBO_CD_TYPE, temp_cdrom[lv2_current_sel].early); #endif } @@ -4924,7 +4924,7 @@ static void mo_track(uint8_t id) { if (temp_mo_drives[id].bus_type == MO_BUS_ATAPI) - ide_tracking |= (1 << (temp_zip_drives[id].ide_channel << 3)); + ide_tracking |= (1 << (temp_mo_drives[id].ide_channel << 3)); else if (temp_mo_drives[id].bus_type == MO_BUS_SCSI) scsi_tracking[temp_mo_drives[id].scsi_device_id >> 3] |= (1 << (temp_mo_drives[id].scsi_device_id & 0x07)); } @@ -4933,7 +4933,7 @@ static void mo_untrack(uint8_t id) { if (temp_mo_drives[id].bus_type == MO_BUS_ATAPI) - ide_tracking &= ~(1 << (temp_zip_drives[id].ide_channel << 3)); + ide_tracking &= ~(1 << (temp_mo_drives[id].ide_channel << 3)); else if (temp_mo_drives[id].bus_type == MO_BUS_SCSI) scsi_tracking[temp_mo_drives[id].scsi_device_id >> 3] &= ~(1 << (temp_mo_drives[id].scsi_device_id & 0x07)); } @@ -5110,8 +5110,8 @@ win_settings_floppy_and_cdrom_drives_proc(HWND hdlg, UINT message, WPARAM wParam break; #if 0 - case IDC_CHECKEARLY: - temp_cdrom[lv2_current_sel].early = settings_get_check(hdlg, IDC_CHECKEARLY); + case IDC_COMBO_CD_TYPE:: + temp_cdrom[lv2_current_sel].early = settings_get_check(hdlg, IDC_COMBO_CD_TYPE:); win_settings_cdrom_drives_update_item(hdlg, lv2_current_sel); break; #endif From 1c25963a8c4ccac2659080e1992ebed743700281 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 15:10:57 -0400 Subject: [PATCH 48/82] Links shouldn't be bare in markdown --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 20671420e..971f3c642 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Donations --------- We do not charge you for the emulator but donations are still welcome: -https://paypal.me/86Box. +. You can also support the project on Patreon: -https://www.patreon.com/86box. +. From 697213b99e8acc1563004a1b7f2790682e24e2a7 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 16:03:52 -0400 Subject: [PATCH 49/82] Remove unneeded/duplicate check re softfloat --- src/config.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config.c b/src/config.c index f0b48dc1a..957489a18 100644 --- a/src/config.c +++ b/src/config.c @@ -511,7 +511,6 @@ load_machine(void) cpu_use_dynarec = !!ini_section_get_int(cat, "cpu_use_dynarec", 0); fpu_softfloat = !!ini_section_get_int(cat, "fpu_softfloat", 0); if ((fpu_type != FPU_NONE) && machine_has_flags(machine, MACHINE_SOFTFLOAT_ONLY)) - if (machine_has_flags(machine, MACHINE_SOFTFLOAT_ONLY)) fpu_softfloat = 1; p = ini_section_get_string(cat, "time_sync", NULL); From cf33eaf462897afda8bcb517bf9efa4ebadf55c2 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 16:50:53 -0400 Subject: [PATCH 50/82] Stop packaging artifacts on windows needlessly --- .github/workflows/cmake.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 361d9c8be..15be4ff76 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -62,11 +62,12 @@ jobs: static: on - name: Qt GUI qt: on - static: off + static: on slug: -Qt packages: >- - qt5-base:p - qt5-tools:p + qt5-static:p +# qt5-base:p +# qt5-tools:p environment: # - msystem: MSYS # toolchain: ./cmake/flags-gcc-x86_64.cmake From ae1f397cdd2a31d609f618d2c98eca901265aceb Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 17:09:42 -0400 Subject: [PATCH 51/82] Don't try and make macos packages for now --- .github/workflows/cmake.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 15be4ff76..2e8a6c2fc 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -458,10 +458,12 @@ jobs: sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" - name: Generate package + if: 0 run: | cmake --install build - name: Upload artifact + if: 0 uses: actions/upload-artifact@v3 with: name: '86Box${{ matrix.ui.slug }}${{ matrix.dynarec.slug }}${{ matrix.build.slug }}-macOS-x86_64-gha${{ github.run_number }}' From e9bf3814f4252e5d2f37c83ddf17b99c24b1ecf1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 5 Oct 2023 00:55:25 +0200 Subject: [PATCH 52/82] Added a clobbering-mitigating mechanism to pci_relocate_slot(), fixes PCI graphics cards on PC Chips ALi ALADDiN V and Pro II machines. --- src/pci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pci.c b/src/pci.c index 61de21857..6c0a904bb 100644 --- a/src/pci.c +++ b/src/pci.c @@ -240,7 +240,6 @@ pci_relocate_slot(int type, int new_slot) { int card = -1; int old_slot; - uint8_t mapping; if ((new_slot < 0) || (new_slot > 31)) return; @@ -257,9 +256,12 @@ pci_relocate_slot(int type, int new_slot) old_slot = pci_cards[card].id; pci_cards[card].id = new_slot; - mapping = pci_card_to_slot_mapping[0][old_slot]; - pci_card_to_slot_mapping[0][old_slot] = PCI_CARD_INVALID; - pci_card_to_slot_mapping[0][new_slot] = mapping; + + if (pci_card_to_slot_mapping[0][old_slot] == card) + pci_card_to_slot_mapping[0][old_slot] = PCI_CARD_INVALID; + + if (pci_card_to_slot_mapping[0][new_slot] == PCI_CARD_INVALID) + pci_card_to_slot_mapping[0][new_slot] = card; } /* Write PCI enable/disable key, split for the ALi M1435. */ From 8a00ca4b5c31a9a08c282934f3171c8c005e2765 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 5 Oct 2023 03:37:28 +0200 Subject: [PATCH 53/82] Removed bus indicators from CD-ROM model names. --- src/include/86box/cdrom.h | 84 +++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 4f4508002..b536772b9 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -121,48 +121,48 @@ static const struct const char *internal_name; const int bus_type; } cdrom_drive_types[] = { - { "86BOX", "CD-ROM", "1.00", "(ATAPI/SCSI) 86BOX CD-ROM 1.00", "86BOX_CD-ROM_1.00", BUS_TYPE_BOTH }, /*1*/ - { "AZT", "CDA46802I", "1.15", "(ATAPI) AZT CDA46802I 1.15", "AZT_CDA46802I_1.15", BUS_TYPE_IDE }, /*2*/ - { "BTC", "CD-ROM BCD36XH", "U1.0", "(ATAPI) BTC CD-ROM BCD36XH U1.0", "BTC_CD-ROM_BCD36XH_U1.0", BUS_TYPE_IDE }, /*3*/ - { "GOLDSTAR", "CRD-8160B", "3.14", "(ATAPI) GOLDSTAR CRD-8160B 3.14", "GOLDSTAR_CRD-8160B_3.14", BUS_TYPE_IDE }, /*4*/ - { "HITACHI", "CDR-8130", "0020", "(ATAPI) HITACHI CDR-8130 0020", "HITACHI_CDR-8130_0020", BUS_TYPE_IDE }, /*5*/ - { "KENWOOD", "CD-ROM UCR-421", "208E", "(ATAPI) KENWOOD CD-ROM UCR-421 208E", "KENWOOD_CD-ROM_UCR-421_208E", BUS_TYPE_IDE }, /*6*/ - { "MATSHITA", "CD-ROM CR-587", "7S13", "(ATAPI) MATSHITA CD-ROM CR-587 7S13", "MATSHITA_CD-ROM_CR-587_7S13", BUS_TYPE_IDE }, /*7*/ - { "MATSHITA", "CD-ROM CR-588", "LS15", "(ATAPI) MATSHITA CD-ROM CR-588 LS15", "MATSHITA_CD-ROM_CR-588_LS15", BUS_TYPE_IDE }, /*8*/ - { "MATSHITA", "CR-571", "1.0e", "(ATAPI) MATSHITA CR-571 1.0e", "MATSHITA_CR-571_1.0e", BUS_TYPE_IDE }, /*9*/ - { "MATSHITA", "CR-572", "1.0j", "(ATAPI) MATSHITA CR-572 1.0j", "MATSHITA_CR-572_1.0j", BUS_TYPE_IDE }, /*10*/ - { "MITSUMI", "CRMC-FX4820T", "D02A", "(ATAPI) MITSUMI CRMC-FX4820T D02A", "MITSUMI_CRMC-FX4820T_D02A", BUS_TYPE_IDE }, /*11*/ - { "NEC", "CD-ROM DRIVE:260", "1.00", "(ATAPI) NEC CD-ROM DRIVE:260 1.00", "NEC_CD-ROM_DRIVE260_1.00", BUS_TYPE_IDE }, /*12*/ - { "NEC", "CD-ROM DRIVE:260", "1.01", "(ATAPI) NEC CD-ROM DRIVE:260 1.01", "NEC_CD-ROM_DRIVE260_1.01", BUS_TYPE_IDE }, /*13*/ - { "NEC", "CD-ROM DRIVE:273", "4.20", "(ATAPI) NEC CD-ROM DRIVE:273 4.20", "NEC_CD-ROM_DRIVE273_4.20", BUS_TYPE_IDE }, /*14*/ - { "NEC", "CD-ROM DRIVE:280", "1.05", "(ATAPI) NEC CD-ROM DRIVE:280 1.05", "NEC_CD-ROM_DRIVE280_1.05", BUS_TYPE_IDE }, /*15*/ - { "NEC", "CD-ROM DRIVE:280", "3.08", "(ATAPI) NEC CD-ROM DRIVE:280 3.08", "NEC_CD-ROM_DRIVE280_3.08", BUS_TYPE_IDE }, /*16*/ - { "PHILIPS", "CD-ROM PCA403CD", "U31P", "(ATAPI) PHILIPS CD-ROM PCA403CD U31P", "PHILIPS_CD-ROM_PCA403CD_U31P", BUS_TYPE_IDE }, /*17*/ - { "SONY", "CD-ROM CDU76", "1.0i", "(ATAPI) SONY CD-ROM CDU76 1.0i", "SONY_CD-ROM_CDU76_1.0i", BUS_TYPE_IDE }, /*18*/ - { "SONY", "CD-ROM CDU311", "3.0h", "(ATAPI) SONY CD-ROM CDU311 3.0h", "SONY_CD-ROM_CDU311_3.0h", BUS_TYPE_IDE }, /*19*/ - { "TOSHIBA", "CD-ROM XM-5302TA", "0305", "(ATAPI) TOSHIBA CD-ROM XM-5302TA 0305", "TOSHIBA_CD-ROM_XM-5302TA_0305", BUS_TYPE_IDE }, /*20*/ - { "TOSHIBA", "CD-ROM XM-5702B", "TA70", "(ATAPI) TOSHIBA CD-ROM XM-5702B TA70", "TOSHIBA_CD-ROM_XM-5702B_TA70", BUS_TYPE_IDE }, /*21*/ - { "CHINON", "CD-ROM CDS-431", "H42 ", "(SCSI) CHINON CD-ROM CDS-431 H42", "CHINON_CD-ROM_CDS-431_H42", BUS_TYPE_SCSI }, /*22*/ - { "DEC", "RRD45 (C) DEC", "0436", "(SCSI) DEC RRD45 0436", "DEC_RRD45_0436", BUS_TYPE_SCSI }, /*23*/ - { "MATSHITA", "CD-ROM CR-501", "1.0b", "(SCSI) MATSHITA CD-ROM CR-501 1.0b", "MATSHITA_CD-ROM_CR-501_1.0b", BUS_TYPE_SCSI }, /*24*/ - { "NEC", "CD-ROM DRIVE:38", "1.03", "(SCSI) NEC CD-ROM DRIVE:38 1.03", "NEC_CD-ROM_DRIVE38_1.03", BUS_TYPE_SCSI }, /*25*/ - { "NEC", "CD-ROM DRIVE:211", "1.00", "(SCSI) NEC CD-ROM DRIVE:211 1.00", "NEC_CD-ROM_DRIVE211_1.00", BUS_TYPE_SCSI }, /*26*/ - { "NEC", "CD-ROM DRIVE:464", "1.05", "(SCSI) NEC CD-ROM DRIVE:464 1.05", "NEC_CD-ROM_DRIVE464_1.05", BUS_TYPE_SCSI }, /*27*/ - { "SONY", "CD-ROM CDU-541", "1.0i", "(SCSI) SONY CD-ROM CDU-541 1.0i", "SONY_CD-ROM_CDU-541_1.0i", BUS_TYPE_SCSI }, /*28*/ - { "SONY", "CD-ROM CDU-561", "1.8k", "(SCSI) SONY CD-ROM CDU-561 1.8k", "SONY_CD-ROM_CDU-561_1.8k", BUS_TYPE_SCSI }, /*29*/ - { "SONY", "CD-ROM CDU-76S", "1.00", "(SCSI) SONY CD-ROM CDU-76S 1.00", "SONY_CD-ROM_CDU-76S_1.00", BUS_TYPE_SCSI }, /*30*/ - { "PHILIPS", "CDD2600", "1.07", "(SCSI) PHILIPS CDD2600 1.07", "PHILIPS_CDD2600_1.07", BUS_TYPE_SCSI }, /*31*/ - { "PIONEER", "CD-ROM DRM-604X", "2403", "(SCSI) PIONEER CD-ROM DRM-604X 2403", "PIONEER_CD-ROM_DRM-604X_2403", BUS_TYPE_SCSI }, /*32*/ - { "PLEXTOR", "CD-ROM PX-32TS", "1.03", "(SCSI) PLEXTOR CD-ROM PX-32TS 1.03", "PLEXTOR_CD-ROM_PX-32TS_1.03", BUS_TYPE_SCSI }, /*33*/ - { "TEAC", "CD 50", "1.00", "(SCSI) TEAC CD 50 1.00", "TEAC_CD_50_1.00", BUS_TYPE_SCSI }, /*34*/ - { "TEAC", "CD-ROM R55S", "1.0R", "(SCSI) TEAC CD-ROM R55S 1.0R", "TEAC_CD-ROM_R55S_1.0R", BUS_TYPE_SCSI }, /*35*/ - { "TEXEL", "CD-ROM DM-XX24", "1.00", "(SCSI) TEXEL CD-ROM DM-XX24 1.00", "TEXEL_CD-ROM_DM-XX24_1.00", BUS_TYPE_SCSI }, /*36*/ - { "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "(SCSI) TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI }, /*37*/ - { "TOSHIBA", "CD-ROM XM-3201B", "3232", "(SCSI) TOSHIBA CD-ROM XM-3201B 3232", "TOSHIBA_CD-ROM_XM-3201B_3232", BUS_TYPE_SCSI }, /*38*/ - { "TOSHIBA", "CD-ROM XM-3301TA", "0272", "(SCSI) TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI }, /*39*/ - { "TOSHIBA", "CD-ROM XM-5701TA", "3136", "(SCSI) TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI }, /*40*/ - { "TOSHIBA", "DVD-ROM SD-M1401", "1008", "(SCSI) TOSHIBA DVD-ROM SD-M1401 1008", "TOSHIBA_DVD-ROM_SD-M1401_1008", BUS_TYPE_SCSI }, /*41*/ - { "", "", "", "", "", BUS_TYPE_NONE }, + { "86BOX", "CD-ROM", "1.00", "86BOX CD-ROM 1.00", "86BOX_CD-ROM_1.00", BUS_TYPE_BOTH }, /*1*/ + { "AZT", "CDA46802I", "1.15", "AZT CDA46802I 1.15", "AZT_CDA46802I_1.15", BUS_TYPE_IDE }, /*2*/ + { "BTC", "CD-ROM BCD36XH", "U1.0", "BTC CD-ROM BCD36XH U1.0", "BTC_CD-ROM_BCD36XH_U1.0", BUS_TYPE_IDE }, /*3*/ + { "GOLDSTAR", "CRD-8160B", "3.14", "GOLDSTAR CRD-8160B 3.14", "GOLDSTAR_CRD-8160B_3.14", BUS_TYPE_IDE }, /*4*/ + { "HITACHI", "CDR-8130", "0020", "HITACHI CDR-8130 0020", "HITACHI_CDR-8130_0020", BUS_TYPE_IDE }, /*5*/ + { "KENWOOD", "CD-ROM UCR-421", "208E", "KENWOOD CD-ROM UCR-421 208E", "KENWOOD_CD-ROM_UCR-421_208E", BUS_TYPE_IDE }, /*6*/ + { "MATSHITA", "CD-ROM CR-587", "7S13", "MATSHITA CD-ROM CR-587 7S13", "MATSHITA_CD-ROM_CR-587_7S13", BUS_TYPE_IDE }, /*7*/ + { "MATSHITA", "CD-ROM CR-588", "LS15", "MATSHITA CD-ROM CR-588 LS15", "MATSHITA_CD-ROM_CR-588_LS15", BUS_TYPE_IDE }, /*8*/ + { "MATSHITA", "CR-571", "1.0e", "MATSHITA CR-571 1.0e", "MATSHITA_CR-571_1.0e", BUS_TYPE_IDE }, /*9*/ + { "MATSHITA", "CR-572", "1.0j", "MATSHITA CR-572 1.0j", "MATSHITA_CR-572_1.0j", BUS_TYPE_IDE }, /*10*/ + { "MITSUMI", "CRMC-FX4820T", "D02A", "MITSUMI CRMC-FX4820T D02A", "MITSUMI_CRMC-FX4820T_D02A", BUS_TYPE_IDE }, /*11*/ + { "NEC", "CD-ROM DRIVE:260", "1.00", "NEC CD-ROM DRIVE:260 1.00", "NEC_CD-ROM_DRIVE260_1.00", BUS_TYPE_IDE }, /*12*/ + { "NEC", "CD-ROM DRIVE:260", "1.01", "NEC CD-ROM DRIVE:260 1.01", "NEC_CD-ROM_DRIVE260_1.01", BUS_TYPE_IDE }, /*13*/ + { "NEC", "CD-ROM DRIVE:273", "4.20", "NEC CD-ROM DRIVE:273 4.20", "NEC_CD-ROM_DRIVE273_4.20", BUS_TYPE_IDE }, /*14*/ + { "NEC", "CD-ROM DRIVE:280", "1.05", "NEC CD-ROM DRIVE:280 1.05", "NEC_CD-ROM_DRIVE280_1.05", BUS_TYPE_IDE }, /*15*/ + { "NEC", "CD-ROM DRIVE:280", "3.08", "NEC CD-ROM DRIVE:280 3.08", "NEC_CD-ROM_DRIVE280_3.08", BUS_TYPE_IDE }, /*16*/ + { "PHILIPS", "CD-ROM PCA403CD", "U31P", "PHILIPS CD-ROM PCA403CD U31P", "PHILIPS_CD-ROM_PCA403CD_U31P", BUS_TYPE_IDE }, /*17*/ + { "SONY", "CD-ROM CDU76", "1.0i", "SONY CD-ROM CDU76 1.0i", "SONY_CD-ROM_CDU76_1.0i", BUS_TYPE_IDE }, /*18*/ + { "SONY", "CD-ROM CDU311", "3.0h", "SONY CD-ROM CDU311 3.0h", "SONY_CD-ROM_CDU311_3.0h", BUS_TYPE_IDE }, /*19*/ + { "TOSHIBA", "CD-ROM XM-5302TA", "0305", "TOSHIBA CD-ROM XM-5302TA 0305", "TOSHIBA_CD-ROM_XM-5302TA_0305", BUS_TYPE_IDE }, /*20*/ + { "TOSHIBA", "CD-ROM XM-5702B", "TA70", "TOSHIBA CD-ROM XM-5702B TA70", "TOSHIBA_CD-ROM_XM-5702B_TA70", BUS_TYPE_IDE }, /*21*/ + { "CHINON", "CD-ROM CDS-431", "H42 ", "CHINON CD-ROM CDS-431 H42", "CHINON_CD-ROM_CDS-431_H42", BUS_TYPE_SCSI }, /*22*/ + { "DEC", "RRD45 (C) DEC", "0436", "DEC RRD45 0436", "DEC_RRD45_0436", BUS_TYPE_SCSI }, /*23*/ + { "MATSHITA", "CD-ROM CR-501", "1.0b", "MATSHITA CD-ROM CR-501 1.0b", "MATSHITA_CD-ROM_CR-501_1.0b", BUS_TYPE_SCSI }, /*24*/ + { "NEC", "CD-ROM DRIVE:38", "1.03", "NEC CD-ROM DRIVE:38 1.03", "NEC_CD-ROM_DRIVE38_1.03", BUS_TYPE_SCSI }, /*25*/ + { "NEC", "CD-ROM DRIVE:211", "1.00", "NEC CD-ROM DRIVE:211 1.00", "NEC_CD-ROM_DRIVE211_1.00", BUS_TYPE_SCSI }, /*26*/ + { "NEC", "CD-ROM DRIVE:464", "1.05", "NEC CD-ROM DRIVE:464 1.05", "NEC_CD-ROM_DRIVE464_1.05", BUS_TYPE_SCSI }, /*27*/ + { "SONY", "CD-ROM CDU-541", "1.0i", "SONY CD-ROM CDU-541 1.0i", "SONY_CD-ROM_CDU-541_1.0i", BUS_TYPE_SCSI }, /*28*/ + { "SONY", "CD-ROM CDU-561", "1.8k", "SONY CD-ROM CDU-561 1.8k", "SONY_CD-ROM_CDU-561_1.8k", BUS_TYPE_SCSI }, /*29*/ + { "SONY", "CD-ROM CDU-76S", "1.00", "SONY CD-ROM CDU-76S 1.00", "SONY_CD-ROM_CDU-76S_1.00", BUS_TYPE_SCSI }, /*30*/ + { "PHILIPS", "CDD2600", "1.07", "PHILIPS CDD2600 1.07", "PHILIPS_CDD2600_1.07", BUS_TYPE_SCSI }, /*31*/ + { "PIONEER", "CD-ROM DRM-604X", "2403", "PIONEER CD-ROM DRM-604X 2403", "PIONEER_CD-ROM_DRM-604X_2403", BUS_TYPE_SCSI }, /*32*/ + { "PLEXTOR", "CD-ROM PX-32TS", "1.03", "PLEXTOR CD-ROM PX-32TS 1.03", "PLEXTOR_CD-ROM_PX-32TS_1.03", BUS_TYPE_SCSI }, /*33*/ + { "TEAC", "CD 50", "1.00", "TEAC CD 50 1.00", "TEAC_CD_50_1.00", BUS_TYPE_SCSI }, /*34*/ + { "TEAC", "CD-ROM R55S", "1.0R", "TEAC CD-ROM R55S 1.0R", "TEAC_CD-ROM_R55S_1.0R", BUS_TYPE_SCSI }, /*35*/ + { "TEXEL", "CD-ROM DM-XX24", "1.00", "TEXEL CD-ROM DM-XX24 1.00", "TEXEL_CD-ROM_DM-XX24_1.00", BUS_TYPE_SCSI }, /*36*/ + { "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI }, /*37*/ + { "TOSHIBA", "CD-ROM XM-3201B", "3232", "TOSHIBA CD-ROM XM-3201B 3232", "TOSHIBA_CD-ROM_XM-3201B_3232", BUS_TYPE_SCSI }, /*38*/ + { "TOSHIBA", "CD-ROM XM-3301TA", "0272", "TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI }, /*39*/ + { "TOSHIBA", "CD-ROM XM-5701TA", "3136", "TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI }, /*40*/ + { "TOSHIBA", "DVD-ROM SD-M1401", "1008", "TOSHIBA DVD-ROM SD-M1401 1008", "TOSHIBA_DVD-ROM_SD-M1401_1008", BUS_TYPE_SCSI }, /*41*/ + { "", "", "", "", "", BUS_TYPE_NONE }, }; /* To shut up the GCC compilers. */ From 3d49b3b036a2787bf7478e384a46d2c67da61368 Mon Sep 17 00:00:00 2001 From: OBattler Date: Thu, 5 Oct 2023 03:42:26 +0200 Subject: [PATCH 54/82] Switched Sound Blaster IDE from tertiary to quaternary. --- src/sound/snd_sb.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index 3b57a485f..92df0ec8b 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -1461,7 +1461,7 @@ sb_16_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv) break; case 1: /* IDE */ - ide_pnp_config_changed(0, config, (void *) 2); + ide_pnp_config_changed(0, config, (void *) 3); break; case 2: /* Reserved (16) / WaveTable (32+) */ @@ -2033,7 +2033,7 @@ sb_16_pnp_init(UNUSED(const device_t *info)) sb->gameport = gameport_add(&gameport_pnp_device); - device_add(&ide_ter_pnp_device); + device_add(&ide_qua_pnp_device); isapnp_add_card(sb_16_pnp_rom, sizeof(sb_16_pnp_rom), sb_16_pnp_config_changed, NULL, NULL, NULL, sb); @@ -2200,7 +2200,7 @@ sb_awe32_pnp_init(const device_t *info) sb->gameport = gameport_add(&gameport_pnp_device); if ((info->local != 2) && (info->local != 3) && (info->local != 4)) - device_add(&ide_ter_pnp_device); + device_add(&ide_qua_pnp_device); const char *pnp_rom_file = NULL; switch (info->local) { From 2590c4ab960ef8bf671c6ccd8a300fb3ec77c7a7 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 4 Oct 2023 21:12:50 -0400 Subject: [PATCH 55/82] Clean up mo.h a bit --- src/include/86box/mo.h | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/include/86box/mo.h b/src/include/86box/mo.h index 910c7eaed..8071b80b5 100644 --- a/src/include/86box/mo.h +++ b/src/include/86box/mo.h @@ -37,17 +37,17 @@ typedef struct mo_type_t { #define KNOWN_MO_TYPES 10 static const mo_type_t mo_types[KNOWN_MO_TYPES] = { // 3.5" standard M.O. disks - {248826, 512 }, - { 446325, 512 }, - { 1041500, 512 }, - { 310352, 2048}, - { 605846, 2048}, - { 1063146, 2048}, + { 248826, 512 }, + { 446325, 512 }, + { 1041500, 512 }, + { 310352, 2048 }, + { 605846, 2048 }, + { 1063146, 2048 }, // 5.25" M.O. disks - { 573624, 512 }, - { 314568, 1024}, - { 904995, 512 }, - { 637041, 1024}, + { 573624, 512 }, + { 314568, 1024 }, + { 904995, 512 }, + { 637041, 1024 }, }; typedef struct mo_drive_type_t { @@ -60,7 +60,7 @@ typedef struct mo_drive_type_t { #define KNOWN_MO_DRIVE_TYPES 22 static const mo_drive_type_t mo_drive_types[KNOWN_MO_DRIVE_TYPES] = { {"86BOX", "MAGNETO OPTICAL", "1.00", { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }}, - { "FUJITSU", "M2512A", "1314", { 1, 1, 0, 0, 0, 0, 0, 0, 0 } }, + { "FUJITSU", "M2512A", "1314", { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }}, { "FUJITSU", "M2513-MCC3064SS", "1.00", { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }}, { "FUJITSU", "MCE3130SS", "0070", { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }}, { "FUJITSU", "MCF3064SS", "0030", { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }}, @@ -165,8 +165,10 @@ typedef struct mo_t { extern mo_t *mo[MO_NUM]; extern mo_drive_t mo_drives[MO_NUM]; +#if 0 extern uint8_t atapi_mo_drives[8]; extern uint8_t scsi_mo_drives[16]; +#endif #define mo_sense_error dev->sense[0] #define mo_sense_key dev->sense[2] From 2c14630e7e110cad29d2dd23df606726c8818e79 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Thu, 5 Oct 2023 08:46:32 -0400 Subject: [PATCH 56/82] Fix offset of mitsumi cd info --- src/cdrom/cdrom_mitsumi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cdrom/cdrom_mitsumi.c b/src/cdrom/cdrom_mitsumi.c index 19e19a420..cfd3cd84b 100644 --- a/src/cdrom/cdrom_mitsumi.c +++ b/src/cdrom/cdrom_mitsumi.c @@ -394,9 +394,9 @@ mitsumi_cdrom_out(uint16_t port, uint8_t val, void *priv) } break; case CMD_GET_VER: - dev->cmdbuf[1] = 1; - dev->cmdbuf[2] = 'D'; - dev->cmdbuf[3] = 0; + dev->cmdbuf[0] = 1; + dev->cmdbuf[1] = 'D'; + dev->cmdbuf[2] = 0; dev->cmdbuf_count = 4; break; case CMD_EJECT: From 859c7b781b009464254b64a15757c33b83a03605 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Thu, 5 Oct 2023 11:35:22 -0400 Subject: [PATCH 57/82] Correct comments in hdc_ide.c --- src/disk/hdc_ide.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 61b8728e1..0abd4df89 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -141,12 +141,12 @@ static uint8_t ide_ter_pnp_rom[] = { 0x1c, 0x41, 0xd0, 0x06, 0x00, /* compatible device PNP0600 */ 0x31, 0x00, /* start dependent functions, preferred */ 0x22, 0x00, 0x08, /* IRQ 11 */ - 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ - 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0xee, 0x03, 0xee, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ 0x47, 0x01, 0x00, 0x01, 0xf8, 0xff, 0x08, 0x08, /* I/O 0x100-0xFFF8, decodes 16-bit, 8-byte alignment, 8 addresses */ @@ -164,12 +164,12 @@ static uint8_t ide_qua_pnp_rom[] = { 0x1c, 0x41, 0xd0, 0x06, 0x00, /* compatible device PNP0600 */ 0x31, 0x00, /* start dependent functions, preferred */ 0x22, 0x00, 0x04, /* IRQ 10 */ - 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ - 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x1E8, decodes 16-bit, 1-byte alignment, 8 addresses */ - 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x3EE, decodes 16-bit, 1-byte alignment, 1 address */ + 0x47, 0x01, 0x68, 0x01, 0x68, 0x01, 0x01, 0x08, /* I/O 0x168, decodes 16-bit, 1-byte alignment, 8 addresses */ + 0x47, 0x01, 0x6e, 0x03, 0x6e, 0x03, 0x01, 0x01, /* I/O 0x36E, decodes 16-bit, 1-byte alignment, 1 address */ 0x30, /* start dependent functions, acceptable */ 0x22, 0xb8, 0x1e, /* IRQ 3/4/5/7/9/10/11/12 */ 0x47, 0x01, 0x00, 0x01, 0xf8, 0xff, 0x08, 0x08, /* I/O 0x100-0xFFF8, decodes 16-bit, 8-byte alignment, 8 addresses */ From 032ce8ccf72d203c89d8f3e4adcf38b8305bcd7b Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Thu, 5 Oct 2023 11:46:25 -0400 Subject: [PATCH 58/82] Correct small oversight --- src/cdrom/cdrom_mitsumi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cdrom/cdrom_mitsumi.c b/src/cdrom/cdrom_mitsumi.c index cfd3cd84b..f1b292f42 100644 --- a/src/cdrom/cdrom_mitsumi.c +++ b/src/cdrom/cdrom_mitsumi.c @@ -397,7 +397,7 @@ mitsumi_cdrom_out(uint16_t port, uint8_t val, void *priv) dev->cmdbuf[0] = 1; dev->cmdbuf[1] = 'D'; dev->cmdbuf[2] = 0; - dev->cmdbuf_count = 4; + dev->cmdbuf_count = 3; break; case CMD_EJECT: cdrom_stop(&cdrom); From b7ae66b3931c5646789a21fa2fb9607c8f2921ee Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Thu, 5 Oct 2023 13:00:37 -0400 Subject: [PATCH 59/82] Avoid more magic numbers --- src/cdrom/cdrom_mitsumi.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cdrom/cdrom_mitsumi.c b/src/cdrom/cdrom_mitsumi.c index f1b292f42..d270ab0f3 100644 --- a/src/cdrom/cdrom_mitsumi.c +++ b/src/cdrom/cdrom_mitsumi.c @@ -33,6 +33,10 @@ #include <86box/plat.h> #include <86box/sound.h> +#define MCD_DEFAULT_IOPORT 0x310 +#define MCD_DEFAULT_IRQ 5 +#define MCD_DEFAULT_DMA 5 + #define RAW_SECTOR_SIZE 2352 #define COOKED_SECTOR_SIZE 2048 @@ -244,6 +248,8 @@ mitsumi_cdrom_in(uint16_t port, void *priv) ret |= FLAG_NOSTAT; pclog("Read port 1: ret = %02x\n", ret | FLAG_UNK); return ret | FLAG_UNK; + case 2: + break; default: break; } @@ -419,6 +425,8 @@ mitsumi_cdrom_out(uint16_t port, uint8_t val, void *priv) case 1: mitsumi_cdrom_reset(dev); break; + case 2: + break; default: break; } @@ -432,10 +440,10 @@ mitsumi_cdrom_init(UNUSED(const device_t *info)) dev = malloc(sizeof(mcd_t)); memset(dev, 0x00, sizeof(mcd_t)); - dev->irq = 5; - dev->dma = 5; + dev->irq = MCD_DEFAULT_IRQ; + dev->dma = MCD_DEFAULT_DMA; - io_sethandler(0x310, 2, + io_sethandler(MCD_DEFAULT_IOPORT, 3, mitsumi_cdrom_in, NULL, NULL, mitsumi_cdrom_out, NULL, NULL, dev); mitsumi_cdrom_reset(dev); From b0cb094590de6f8f7a2efdcdd252f35f09a626d3 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Thu, 5 Oct 2023 14:04:05 -0300 Subject: [PATCH 60/82] gdbstub: Small fixes to breakpoints and watches --- src/gdbstub.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gdbstub.c b/src/gdbstub.c index d2bb5364b..d41f4bbc5 100644 --- a/src/gdbstub.c +++ b/src/gdbstub.c @@ -1348,7 +1348,7 @@ unknown: /* Flag this watchpoint's corresponding pages as having a watchpoint. */ k = (breakpoint->end - 1) >> MEM_GRANULARITY_BITS; for (i = breakpoint->addr >> MEM_GRANULARITY_BITS; i <= k; i++) - gdbstub_watch_pages[i >> 6] |= (1 << (i & 63)); + gdbstub_watch_pages[i >> 6] |= (1ULL << (i & 63)); breakpoint = breakpoint->next; } else { @@ -1752,8 +1752,10 @@ gdbstub_mem_access(uint32_t *addrs, int access) if (watchpoint) { /* Check if any component of this address is within the breakpoint's range. */ for (i = 0; i < width; i++) { - if ((addrs[i] >= watchpoint->addr) && (addrs[i] < watchpoint->end)) + if ((addrs[i] >= watchpoint->addr) && (addrs[i] < watchpoint->end)) { + watch_addr = addrs[i]; break; + } } if (i < width) { gdbstub_log("GDB Stub: %s watchpoint at %08X\n", (access & GDBSTUB_MEM_AWATCH) ? "Access" : ((access & GDBSTUB_MEM_WRITE) ? "Write" : "Read"), watch_addr); From 78440c11ae83902976071e2943c9bf5212d52a4c Mon Sep 17 00:00:00 2001 From: richardg867 Date: Thu, 5 Oct 2023 14:08:09 -0300 Subject: [PATCH 61/82] gdbstub: More watchpoint fixes --- src/include/86box/gdbstub.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/include/86box/gdbstub.h b/src/include/86box/gdbstub.h index 5d55615b3..c58a58bf5 100644 --- a/src/include/86box/gdbstub.h +++ b/src/include/86box/gdbstub.h @@ -36,19 +36,19 @@ enum { #ifdef USE_GDBSTUB -# define GDBSTUB_MEM_ACCESS(addr, access, width) \ - uint32_t gdbstub_page = addr >> MEM_GRANULARITY_BITS; \ - if (gdbstub_watch_pages[gdbstub_page >> 6] & (1 << (gdbstub_page & 63))) { \ - uint32_t gdbstub_addrs[width]; \ - for (int gdbstub_i = 0; gdbstub_i < width; gdbstub_i++) \ - gdbstub_addrs[gdbstub_i] = addr + gdbstub_i; \ - gdbstub_mem_access(gdbstub_addrs, access | width); \ +# define GDBSTUB_MEM_ACCESS(addr, access, width) \ + uint32_t gdbstub_page = (addr) >> MEM_GRANULARITY_BITS; \ + if (gdbstub_watch_pages[gdbstub_page >> 6] & (1ULL << (gdbstub_page & 63))) { \ + uint32_t gdbstub_addrs[(width)]; \ + for (int gdbstub_i = 0; gdbstub_i < (width); gdbstub_i++) \ + gdbstub_addrs[gdbstub_i] = (addr) + gdbstub_i; \ + gdbstub_mem_access(gdbstub_addrs, (access) | (width)); \ } -# define GDBSTUB_MEM_ACCESS_FAST(addrs, access, width) \ - uint32_t gdbstub_page = addr >> MEM_GRANULARITY_BITS; \ - if (gdbstub_watch_pages[gdbstub_page >> 6] & (1 << (gdbstub_page & 63))) \ - gdbstub_mem_access(addrs, access | width); +# define GDBSTUB_MEM_ACCESS_FAST(addrs, access, width) \ + uint32_t gdbstub_page = (addrs)[0] >> MEM_GRANULARITY_BITS; \ + if (gdbstub_watch_pages[gdbstub_page >> 6] & (1ULL << (gdbstub_page & 63))) \ + gdbstub_mem_access((addrs), (access) | (width)); extern int gdbstub_step, gdbstub_next_asap; extern uint64_t gdbstub_watch_pages[(((uint32_t) -1) >> (MEM_GRANULARITY_BITS + 6)) + 1]; From e840a8337f872978855211e81a3d469cbc6adc02 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Thu, 5 Oct 2023 14:10:46 -0300 Subject: [PATCH 62/82] pci: Fix macro expansion mistake with MIRQs --- src/include/86box/pci.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/include/86box/pci.h b/src/include/86box/pci.h index 6ea53c51d..c5ddfe4df 100644 --- a/src/include/86box/pci.h +++ b/src/include/86box/pci.h @@ -146,11 +146,11 @@ pci_register_bus_slot(0, card, type, inta, intb, intc, intd) #define pci_set_mirq(mirq, level, irq_state) \ - pci_irq(PCI_MIRQ_BASE | mirq, 0, level, 1, irq_state) + pci_irq(PCI_MIRQ_BASE | (mirq), 0, level, 1, irq_state) #define pci_set_irq(slot, pci_int, irq_state) \ pci_irq(slot, pci_int, 0, 1, irq_state) #define pci_clear_mirq(mirq, level, irq_state) \ - pci_irq(PCI_MIRQ_BASE | mirq, 0, level, 0, irq_state) + pci_irq(PCI_MIRQ_BASE | (mirq), 0, level, 0, irq_state) #define pci_clear_irq(slot, pci_int, irq_state) \ pci_irq(slot, pci_int, 0, 0, irq_state) From 346d99f9b30bab3c2827e4c8b99d7310f88e0506 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Fri, 6 Oct 2023 01:18:16 +0500 Subject: [PATCH 63/82] qt: Add a warning when cpu_override is enabled --- src/qt/qt_main.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index 04fb01ffb..e3eeb3fc4 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -28,6 +28,8 @@ #include #include #include +#include +#include #ifdef QT_STATIC /* Static builds need plugin imports */ @@ -274,6 +276,21 @@ main(int argc, char *argv[]) main_window->installEventFilter(&socket); socket.connectToServer(qgetenv("86BOX_MANAGER_SOCKET")); } + + /* Warn the user about unsupported configs */ + if (cpu_override) { + QMessageBox warningbox(QMessageBox::Icon::Warning, QObject::tr("You are loading an unsupported configuration"), + QObject::tr("CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."), + QMessageBox::NoButton, main_window); + warningbox.addButton(QObject::tr("Continue"), QMessageBox::AcceptRole); + warningbox.addButton(QObject::tr("Exit"), QMessageBox::RejectRole); + warningbox.exec(); + if (warningbox.result() == QDialog::Accepted) { + confirm_exit_cmdl = 0; /* skip the confirmation prompt without touching the config */ + emit main_window->close(); + } + } + // pc_reset_hard_init(); /* Set the PAUSE mode depending on the renderer. */ From f72585e9f9ad04d630126cae403a5fd3187e60f5 Mon Sep 17 00:00:00 2001 From: Alexander Babikov <2708460+lemondrops@users.noreply.github.com> Date: Wed, 5 Oct 2022 11:42:00 +0500 Subject: [PATCH 64/82] Make cpu_override also ignore CPU dynarec requirement --- src/qt/qt_settingsmachine.cpp | 2 +- src/win/win_settings.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qt/qt_settingsmachine.cpp b/src/qt/qt_settingsmachine.cpp index 6b021b288..475730db9 100644 --- a/src/qt/qt_settingsmachine.cpp +++ b/src/qt/qt_settingsmachine.cpp @@ -278,7 +278,7 @@ SettingsMachine::on_comboBoxSpeed_currentIndexChanged(int index) if (!(flags & CPU_SUPPORTS_DYNAREC)) { ui->checkBoxDynamicRecompiler->setChecked(false); ui->checkBoxDynamicRecompiler->setEnabled(false); - } else if (flags & CPU_REQUIRES_DYNAREC) { + } else if ((flags & CPU_REQUIRES_DYNAREC) && !cpu_override) { ui->checkBoxDynamicRecompiler->setChecked(true); ui->checkBoxDynamicRecompiler->setEnabled(false); } else { diff --git a/src/win/win_settings.c b/src/win/win_settings.c index adeefd8b4..bd539a1a8 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -748,7 +748,7 @@ win_settings_machine_recalc_cpu(HWND hdlg) cpu_flags = temp_cpu_f->cpus[temp_cpu].cpu_flags; if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) && (cpu_flags & CPU_REQUIRES_DYNAREC)) fatal("Attempting to select a CPU that requires the recompiler and does not support it at the same time\n"); - if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) || (cpu_flags & CPU_REQUIRES_DYNAREC)) { + if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) || ((cpu_flags & CPU_REQUIRES_DYNAREC) && !cpu_override))) { if (!(cpu_flags & CPU_SUPPORTS_DYNAREC)) temp_dynarec = 0; if (cpu_flags & CPU_REQUIRES_DYNAREC) From 210f59f8abb917cff544c4e396e85b0c7de69cbb Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 6 Oct 2023 01:19:48 +0200 Subject: [PATCH 65/82] Moved on-board graphics and sound devices to vid_device and snd_device, respectively. --- src/machine/machine_table.c | 172 ++++++++++++++++++------------------ 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index aebbb70f2..724fb09f8 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -308,10 +308,10 @@ const machine_t machines[] = { .kbc_device = NULL, /* TODO: No specific kbd_device yet */ .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &pcjr_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &pcjr_device, .snd_device = NULL, .net_device = NULL }, @@ -1068,10 +1068,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_xt_olivetti_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &m19_vid_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &m19_vid_device, .snd_device = NULL, .net_device = NULL }, @@ -1410,10 +1410,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_tandy_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_device, .snd_device = NULL, .net_device = NULL }, @@ -1448,10 +1448,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_tandy_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_device_hx, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_device_hx, .snd_device = NULL, .net_device = NULL }, @@ -1486,10 +1486,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_xt_t1x00_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &t1000_video_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &t1000_video_device, .snd_device = NULL, .net_device = NULL }, @@ -1755,10 +1755,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_xt_zenith_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &cga_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &cga_device, .snd_device = NULL, .net_device = NULL }, @@ -1871,10 +1871,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_1512_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_1512_device, .snd_device = NULL, .net_device = NULL }, @@ -1909,10 +1909,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_1640_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_1640_device, .snd_device = NULL, .net_device = NULL }, @@ -1947,10 +1947,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_pc2086_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_pc2086_device, .snd_device = NULL, .net_device = NULL }, @@ -1985,10 +1985,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_pc3086_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_pc3086_device, .snd_device = NULL, .net_device = NULL }, @@ -2023,10 +2023,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_200_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_200_device, .snd_device = NULL, .net_device = NULL }, @@ -2061,10 +2061,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_ppc512_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_ppc512_device, .snd_device = NULL, .net_device = NULL }, @@ -2175,10 +2175,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &ogc_m24_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &ogc_m24_device, .snd_device = NULL, .net_device = NULL }, @@ -2290,10 +2290,10 @@ const machine_t machines[] = { .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &vid_device_sl, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &vid_device_sl, .snd_device = NULL, .net_device = NULL }, @@ -2328,10 +2328,10 @@ const machine_t machines[] = { .kbc_device = &keyboard_xt_t1x00_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, - .device = &t1200_video_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &t1200_video_device, .snd_device = NULL, .net_device = NULL }, @@ -2722,10 +2722,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &compaq_plasma_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &compaq_plasma_device, .snd_device = NULL, .net_device = NULL }, @@ -3864,10 +3864,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &tvga8900d_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &tvga8900d_device, .snd_device = NULL, .net_device = NULL }, @@ -4023,10 +4023,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &oti067_ama932j_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &oti067_ama932j_device, .snd_device = NULL, .net_device = NULL }, @@ -4262,10 +4262,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5402_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5402_onboard_device, .snd_device = NULL, .net_device = NULL }, @@ -4342,10 +4342,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &ati28800k_spc6033p_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &ati28800k_spc6033p_device, .snd_device = NULL, .net_device = NULL }, @@ -4776,10 +4776,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &compaq_plasma_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &compaq_plasma_device, .snd_device = NULL, .net_device = NULL }, @@ -5459,10 +5459,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5428_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5428_onboard_device, .snd_device = NULL, .net_device = NULL }, @@ -5498,10 +5498,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5428_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5428_onboard_device, .snd_device = NULL, .net_device = NULL }, @@ -5618,10 +5618,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5428_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5428_onboard_device, .snd_device = NULL, .net_device = NULL }, @@ -5696,10 +5696,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_86c805_onboard_vlb_device, - .vid_device = NULL, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, + .vid_device = &s3_86c805_onboard_vlb_device, .snd_device = NULL, .net_device = NULL }, @@ -6289,10 +6289,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &tgui9440_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &tgui9440_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -6493,10 +6493,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5430_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5430_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -7762,10 +7762,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &mach32_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &mach32_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -7879,10 +7879,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5434_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5434_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -8766,10 +8766,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_phoenix_trio64_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_phoenix_trio64_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -8807,10 +8807,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_phoenix_trio64vplus_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -8848,10 +8848,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_phoenix_trio64vplus_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_phoenix_trio64vplus_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -8889,10 +8889,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_phoenix_trio64_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_phoenix_trio64_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -8968,10 +8968,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &gd5440_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &gd5440_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -9891,10 +9891,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_trio64v2_dx_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_trio64v2_dx_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -9930,10 +9930,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &s3_trio64v2_dx_onboard_pci_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &s3_trio64v2_dx_onboard_pci_device, .snd_device = NULL, .net_device = NULL }, @@ -11902,11 +11902,11 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &es1371_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = NULL, + .snd_device = &es1371_onboard_device, .net_device = NULL }, /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC @@ -11984,10 +11984,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &voodoo_3_2000_agp_onboard_8m_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &voodoo_3_2000_agp_onboard_8m_device, .snd_device = NULL, .net_device = NULL }, @@ -12024,10 +12024,10 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &voodoo_3_2000_agp_onboard_8m_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, - .vid_device = NULL, + .vid_device = &voodoo_3_2000_agp_onboard_8m_device, .snd_device = NULL, .net_device = NULL }, @@ -12228,11 +12228,11 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &es1371_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = NULL, + .snd_device = &es1371_onboard_device, .net_device = NULL }, @@ -12314,11 +12314,11 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &es1371_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = NULL, + .snd_device = &es1371_onboard_device, .net_device = NULL }, /* VIA Apollo Pro */ @@ -12355,11 +12355,11 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &cmi8738_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = NULL, + .snd_device = &cmi8738_onboard_device, .net_device = NULL }, @@ -12849,11 +12849,11 @@ const machine_t machines[] = { .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, - .device = &cmi8738_onboard_device, + .device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = NULL, + .snd_device = &cmi8738_onboard_device, .net_device = NULL }, From 44e7fe589357b15e57e6b2a6718057664a786312 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Thu, 5 Oct 2023 20:10:20 -0400 Subject: [PATCH 66/82] Little bit I forgot in my last PR --- src/cdrom/cdrom_mitsumi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cdrom/cdrom_mitsumi.c b/src/cdrom/cdrom_mitsumi.c index d270ab0f3..7f4d2645b 100644 --- a/src/cdrom/cdrom_mitsumi.c +++ b/src/cdrom/cdrom_mitsumi.c @@ -90,8 +90,9 @@ enum { IRQ_ERROR = 4 }; -typedef struct { - int dma, irq; +typedef struct mcd_t { + int dma; + int irq; int change; int data; uint8_t stat; From 79e5a1dfbb8aeb618aff196cf0d6a36066727fab Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 6 Oct 2023 05:28:26 +0200 Subject: [PATCH 67/82] Proper UI support for internal devices, phase 1. --- src/include/86box/network.h | 8 ++------ src/network/network.c | 15 +++++++++++++++ src/qt/qt_settingsdisplay.cpp | 6 +++++- src/qt/qt_settingsnetwork.cpp | 7 ++++++- src/qt/qt_settingssound.cpp | 28 ++++++++++++++++++++++++---- 5 files changed, 52 insertions(+), 12 deletions(-) diff --git a/src/include/86box/network.h b/src/include/86box/network.h index 5899e80c3..e9b703ee0 100644 --- a/src/include/86box/network.h +++ b/src/include/86box/network.h @@ -78,13 +78,9 @@ enum { NET_LINK_1000_FD = (1 << 8), }; -/* Supported network cards. */ enum { - NONE = 0, - NE1000 = 1, - NE2000 = 2, - RTL8019AS = 3, - RTL8029AS = 4 + NET_NONE = 0, + NET_INTERNAL }; enum { diff --git a/src/network/network.c b/src/network/network.c index 4335c75f3..995d854cc 100644 --- a/src/network/network.c +++ b/src/network/network.c @@ -94,8 +94,23 @@ static const device_t net_none_device = { .config = NULL }; +static const device_t net_internal_device = { + .name = "Internal", + .internal_name = "internal", + .flags = 0, + .local = NET_TYPE_NONE, + .init = NULL, + .close = NULL, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + static const device_t *net_cards[] = { &net_none_device, + &net_internal_device, &threec501_device, &threec503_device, &pcnet_am79c960_device, diff --git a/src/qt/qt_settingsdisplay.cpp b/src/qt/qt_settingsdisplay.cpp index b19f6647e..d5e4a816a 100644 --- a/src/qt/qt_settingsdisplay.cpp +++ b/src/qt/qt_settingsdisplay.cpp @@ -138,7 +138,11 @@ SettingsDisplay::on_comboBoxVideo_currentIndexChanged(int index) } auto curVideoCard_2 = videoCard[1]; videoCard[0] = ui->comboBoxVideo->currentData().toInt(); - ui->pushButtonConfigure->setEnabled(video_card_has_config(videoCard[0]) > 0); + if (videoCard[0] == VID_INTERNAL) + ui->pushButtonConfigure->setEnabled(machine_has_flags(machineId, MACHINE_VIDEO) && + device_has_config(machine_get_vid_device(machineId))); + else + ui->pushButtonConfigure->setEnabled(video_card_has_config(videoCard[0]) > 0); bool machineHasPci = machine_has_bus(machineId, MACHINE_BUS_PCI) > 0; ui->checkBoxVoodoo->setEnabled(machineHasPci); if (machineHasPci) { diff --git a/src/qt/qt_settingsnetwork.cpp b/src/qt/qt_settingsnetwork.cpp index 5b5d1b1ee..d4d58de64 100644 --- a/src/qt/qt_settingsnetwork.cpp +++ b/src/qt/qt_settingsnetwork.cpp @@ -47,7 +47,12 @@ SettingsNetwork::enableElements(Ui::SettingsNetwork *ui) intf_cbox->setEnabled(net_type_cbox->currentData().toInt() == NET_TYPE_PCAP); nic_cbox->setEnabled(adaptersEnabled); - conf_btn->setEnabled(adaptersEnabled && network_card_has_config(nic_cbox->currentData().toInt())); + int netCard = nic_cbox->currentData().toInt(); + if (netCard == NET_INTERNAL) + conf_btn->setEnabled(adaptersEnabled && machine_has_flags(machineId, MACHINE_NIC) && + device_has_config(machine_get_net_device(machineId))); + else + conf_btn->setEnabled(adaptersEnabled && network_card_has_config(nic_cbox->currentData().toInt())); socket_line->setEnabled(net_type_cbox->currentData().toInt() == NET_TYPE_VDE); } } diff --git a/src/qt/qt_settingssound.cpp b/src/qt/qt_settingssound.cpp index f792791c1..8bb159881 100644 --- a/src/qt/qt_settingssound.cpp +++ b/src/qt/qt_settingssound.cpp @@ -192,7 +192,12 @@ SettingsSound::on_comboBoxSoundCard1_currentIndexChanged(int index) if (index < 0) { return; } - ui->pushButtonConfigureSoundCard1->setEnabled(sound_card_has_config(ui->comboBoxSoundCard1->currentData().toInt())); + int sndCard = ui->comboBoxSoundCard1->currentData().toInt(); + if (sndCard == SOUND_INTERNAL) + ui->pushButtonConfigureSoundCard1->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && + device_has_config(machine_get_snd_device(machineId))); + else + ui->pushButtonConfigureSoundCard1->setEnabled(sound_card_has_config(sndCard)); } void @@ -207,7 +212,12 @@ SettingsSound::on_comboBoxSoundCard2_currentIndexChanged(int index) if (index < 0) { return; } - ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(ui->comboBoxSoundCard2->currentData().toInt())); + int sndCard = ui->comboBoxSoundCard2->currentData().toInt(); + if (sndCard == SOUND_INTERNAL) + ui->pushButtonConfigureSoundCard2->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && + device_has_config(machine_get_snd_device(machineId))); + else + ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(ui->comboBoxSoundCard2->currentData().toInt())); } void @@ -222,7 +232,12 @@ SettingsSound::on_comboBoxSoundCard3_currentIndexChanged(int index) if (index < 0) { return; } - ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(ui->comboBoxSoundCard3->currentData().toInt())); + int sndCard = ui->comboBoxSoundCard3->currentData().toInt(); + if (sndCard == SOUND_INTERNAL) + ui->pushButtonConfigureSoundCard3->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && + device_has_config(machine_get_snd_device(machineId))); + else + ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(ui->comboBoxSoundCard3->currentData().toInt())); } void @@ -237,7 +252,12 @@ SettingsSound::on_comboBoxSoundCard4_currentIndexChanged(int index) if (index < 0) { return; } - ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(ui->comboBoxSoundCard4->currentData().toInt())); + int sndCard = ui->comboBoxSoundCard4->currentData().toInt(); + if (sndCard == SOUND_INTERNAL) + ui->pushButtonConfigureSoundCard4->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && + device_has_config(machine_get_snd_device(machineId))); + else + ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(ui->comboBoxSoundCard4->currentData().toInt())); } void From 72bd13a8ed385c019978432e692110e5960ba988 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 6 Oct 2023 05:30:32 +0200 Subject: [PATCH 68/82] Phase 2 (make qt_settingsnetwork.cpp filter out the Internal option for machines that do not have an internal NIC - currently that is all machines). --- src/qt/qt_settingsnetwork.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/qt/qt_settingsnetwork.cpp b/src/qt/qt_settingsnetwork.cpp index d4d58de64..9d0a2eabd 100644 --- a/src/qt/qt_settingsnetwork.cpp +++ b/src/qt/qt_settingsnetwork.cpp @@ -115,6 +115,12 @@ SettingsNetwork::onCurrentMachineChanged(int machineId) selectedRow = 0; while (true) { + /* Skip "internal" if machine doesn't have it. */ + if ((c == 1) && (machine_has_flags(machineId, MACHINE_NIC) == 0)) { + c++; + continue; + } + auto name = DeviceConfig::DeviceName(network_card_getdevice(c), network_card_get_internal_name(c), 1); if (name.isEmpty()) { break; From 6d05e8d3589bc34912997011dc8ee521ce6e8516 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 6 Oct 2023 05:41:15 +0200 Subject: [PATCH 69/82] Phase 3 (make the Configure buttons actually work). --- src/qt/qt_settingsdisplay.cpp | 5 ++++- src/qt/qt_settingsnetwork.cpp | 24 ++++++++++++++++++++---- src/qt/qt_settingssound.cpp | 24 ++++++++++++++++++++---- 3 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/qt/qt_settingsdisplay.cpp b/src/qt/qt_settingsdisplay.cpp index d5e4a816a..fcb70f8c5 100644 --- a/src/qt/qt_settingsdisplay.cpp +++ b/src/qt/qt_settingsdisplay.cpp @@ -110,7 +110,10 @@ SettingsDisplay::onCurrentMachineChanged(int machineId) void SettingsDisplay::on_pushButtonConfigure_clicked() { - auto *device = video_card_getdevice(ui->comboBoxVideo->currentData().toInt()); + int videoCard = ui->comboBoxVideo->currentData().toInt(); + auto *device = video_card_getdevice(videoCard); + if (videoCard == VID_INTERNAL) + device = machine_get_vid_device(machineId); DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } diff --git a/src/qt/qt_settingsnetwork.cpp b/src/qt/qt_settingsnetwork.cpp index 9d0a2eabd..5845149c9 100644 --- a/src/qt/qt_settingsnetwork.cpp +++ b/src/qt/qt_settingsnetwork.cpp @@ -193,23 +193,39 @@ SettingsNetwork::on_comboIndexChanged(int index) void SettingsNetwork::on_pushButtonConf1_clicked() { - DeviceConfig::ConfigureDevice(network_card_getdevice(ui->comboBoxNIC1->currentData().toInt()), 1, qobject_cast(Settings::settings)); + int netCard = ui->comboBoxNIC1->currentData().toInt(); + auto *device = network_card_getdevice(netCard); + if (netCard == NET_INTERNAL) + device = machine_get_net_device(machineId); + DeviceConfig::ConfigureDevice(device, 1, qobject_cast(Settings::settings)); } void SettingsNetwork::on_pushButtonConf2_clicked() { - DeviceConfig::ConfigureDevice(network_card_getdevice(ui->comboBoxNIC2->currentData().toInt()), 2, qobject_cast(Settings::settings)); + int netCard = ui->comboBoxNIC2->currentData().toInt(); + auto *device = network_card_getdevice(netCard); + if (netCard == NET_INTERNAL) + device = machine_get_net_device(machineId); + DeviceConfig::ConfigureDevice(device, 2, qobject_cast(Settings::settings)); } void SettingsNetwork::on_pushButtonConf3_clicked() { - DeviceConfig::ConfigureDevice(network_card_getdevice(ui->comboBoxNIC3->currentData().toInt()), 3, qobject_cast(Settings::settings)); + int netCard = ui->comboBoxNIC3->currentData().toInt(); + auto *device = network_card_getdevice(netCard); + if (netCard == NET_INTERNAL) + device = machine_get_net_device(machineId); + DeviceConfig::ConfigureDevice(device, 3, qobject_cast(Settings::settings)); } void SettingsNetwork::on_pushButtonConf4_clicked() { - DeviceConfig::ConfigureDevice(network_card_getdevice(ui->comboBoxNIC4->currentData().toInt()), 4, qobject_cast(Settings::settings)); + int netCard = ui->comboBoxNIC4->currentData().toInt(); + auto *device = network_card_getdevice(netCard); + if (netCard == NET_INTERNAL) + device = machine_get_net_device(machineId); + DeviceConfig::ConfigureDevice(device, 4, qobject_cast(Settings::settings)); } diff --git a/src/qt/qt_settingssound.cpp b/src/qt/qt_settingssound.cpp index 8bb159881..d51249d9c 100644 --- a/src/qt/qt_settingssound.cpp +++ b/src/qt/qt_settingssound.cpp @@ -203,7 +203,11 @@ SettingsSound::on_comboBoxSoundCard1_currentIndexChanged(int index) void SettingsSound::on_pushButtonConfigureSoundCard1_clicked() { - DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard1->currentData().toInt()), 0, qobject_cast(Settings::settings)); + int sndCard = ui->comboBoxSoundCard1->currentData().toInt(); + auto *device = sound_card_getdevice(sndCard); + if (sndCard == SOUND_INTERNAL) + device = machine_get_snd_device(machineId); + DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } void @@ -223,7 +227,11 @@ SettingsSound::on_comboBoxSoundCard2_currentIndexChanged(int index) void SettingsSound::on_pushButtonConfigureSoundCard2_clicked() { - DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard2->currentData().toInt()), 0, qobject_cast(Settings::settings)); + int sndCard = ui->comboBoxSoundCard2->currentData().toInt(); + auto *device = sound_card_getdevice(sndCard); + if (sndCard == SOUND_INTERNAL) + device = machine_get_snd_device(machineId); + DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } void @@ -243,7 +251,11 @@ SettingsSound::on_comboBoxSoundCard3_currentIndexChanged(int index) void SettingsSound::on_pushButtonConfigureSoundCard3_clicked() { - DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard3->currentData().toInt()), 0, qobject_cast(Settings::settings)); + int sndCard = ui->comboBoxSoundCard3->currentData().toInt(); + auto *device = sound_card_getdevice(sndCard); + if (sndCard == SOUND_INTERNAL) + device = machine_get_snd_device(machineId); + DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } void @@ -263,7 +275,11 @@ SettingsSound::on_comboBoxSoundCard4_currentIndexChanged(int index) void SettingsSound::on_pushButtonConfigureSoundCard4_clicked() { - DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard4->currentData().toInt()), 0, qobject_cast(Settings::settings)); + int sndCard = ui->comboBoxSoundCard4->currentData().toInt(); + auto *device = sound_card_getdevice(sndCard); + if (sndCard == SOUND_INTERNAL) + device = machine_get_snd_device(machineId); + DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } void From 4af09535c3a4515d9a067b90cf6f793fa1865919 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 6 Oct 2023 05:47:40 +0200 Subject: [PATCH 70/82] Phase 4 (list Internal as an option only for the first sound or network card). --- src/qt/qt_settingsnetwork.cpp | 12 +++--------- src/qt/qt_settingssound.cpp | 28 +++++----------------------- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/qt/qt_settingsnetwork.cpp b/src/qt/qt_settingsnetwork.cpp index 5845149c9..2aa3705fd 100644 --- a/src/qt/qt_settingsnetwork.cpp +++ b/src/qt/qt_settingsnetwork.cpp @@ -48,7 +48,7 @@ SettingsNetwork::enableElements(Ui::SettingsNetwork *ui) intf_cbox->setEnabled(net_type_cbox->currentData().toInt() == NET_TYPE_PCAP); nic_cbox->setEnabled(adaptersEnabled); int netCard = nic_cbox->currentData().toInt(); - if (netCard == NET_INTERNAL) + if ((i == 0) && (netCard == NET_INTERNAL)) conf_btn->setEnabled(adaptersEnabled && machine_has_flags(machineId, MACHINE_NIC) && device_has_config(machine_get_net_device(machineId))); else @@ -115,8 +115,8 @@ SettingsNetwork::onCurrentMachineChanged(int machineId) selectedRow = 0; while (true) { - /* Skip "internal" if machine doesn't have it. */ - if ((c == 1) && (machine_has_flags(machineId, MACHINE_NIC) == 0)) { + /* Skip "internal" if machine doesn't have it or this is not the primary card. */ + if ((c == 1) && ((i > 0) || (machine_has_flags(machineId, MACHINE_NIC) == 0))) { c++; continue; } @@ -205,8 +205,6 @@ SettingsNetwork::on_pushButtonConf2_clicked() { int netCard = ui->comboBoxNIC2->currentData().toInt(); auto *device = network_card_getdevice(netCard); - if (netCard == NET_INTERNAL) - device = machine_get_net_device(machineId); DeviceConfig::ConfigureDevice(device, 2, qobject_cast(Settings::settings)); } @@ -215,8 +213,6 @@ SettingsNetwork::on_pushButtonConf3_clicked() { int netCard = ui->comboBoxNIC3->currentData().toInt(); auto *device = network_card_getdevice(netCard); - if (netCard == NET_INTERNAL) - device = machine_get_net_device(machineId); DeviceConfig::ConfigureDevice(device, 3, qobject_cast(Settings::settings)); } @@ -225,7 +221,5 @@ SettingsNetwork::on_pushButtonConf4_clicked() { int netCard = ui->comboBoxNIC4->currentData().toInt(); auto *device = network_card_getdevice(netCard); - if (netCard == NET_INTERNAL) - device = machine_get_net_device(machineId); DeviceConfig::ConfigureDevice(device, 4, qobject_cast(Settings::settings)); } diff --git a/src/qt/qt_settingssound.cpp b/src/qt/qt_settingssound.cpp index d51249d9c..b4df4ff69 100644 --- a/src/qt/qt_settingssound.cpp +++ b/src/qt/qt_settingssound.cpp @@ -82,8 +82,8 @@ SettingsSound::onCurrentMachineChanged(int machineId) selectedRow = 0; while (true) { - /* Skip "internal" if machine doesn't have it. */ - if ((c == 1) && (machine_has_flags(machineId, MACHINE_SOUND) == 0)) { + /* Skip "internal" if machine doesn't have it or this is not the primary card. */ + if ((c == 1) && ((i > 0) || (machine_has_flags(machineId, MACHINE_SOUND) == 0))) { c++; continue; } @@ -217,11 +217,7 @@ SettingsSound::on_comboBoxSoundCard2_currentIndexChanged(int index) return; } int sndCard = ui->comboBoxSoundCard2->currentData().toInt(); - if (sndCard == SOUND_INTERNAL) - ui->pushButtonConfigureSoundCard2->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && - device_has_config(machine_get_snd_device(machineId))); - else - ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(ui->comboBoxSoundCard2->currentData().toInt())); + ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(sndCard)); } void @@ -229,8 +225,6 @@ SettingsSound::on_pushButtonConfigureSoundCard2_clicked() { int sndCard = ui->comboBoxSoundCard2->currentData().toInt(); auto *device = sound_card_getdevice(sndCard); - if (sndCard == SOUND_INTERNAL) - device = machine_get_snd_device(machineId); DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } @@ -241,11 +235,7 @@ SettingsSound::on_comboBoxSoundCard3_currentIndexChanged(int index) return; } int sndCard = ui->comboBoxSoundCard3->currentData().toInt(); - if (sndCard == SOUND_INTERNAL) - ui->pushButtonConfigureSoundCard3->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && - device_has_config(machine_get_snd_device(machineId))); - else - ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(ui->comboBoxSoundCard3->currentData().toInt())); + ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(sndCard)); } void @@ -253,8 +243,6 @@ SettingsSound::on_pushButtonConfigureSoundCard3_clicked() { int sndCard = ui->comboBoxSoundCard3->currentData().toInt(); auto *device = sound_card_getdevice(sndCard); - if (sndCard == SOUND_INTERNAL) - device = machine_get_snd_device(machineId); DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } @@ -265,11 +253,7 @@ SettingsSound::on_comboBoxSoundCard4_currentIndexChanged(int index) return; } int sndCard = ui->comboBoxSoundCard4->currentData().toInt(); - if (sndCard == SOUND_INTERNAL) - ui->pushButtonConfigureSoundCard4->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) && - device_has_config(machine_get_snd_device(machineId))); - else - ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(ui->comboBoxSoundCard4->currentData().toInt())); + ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(sndCard)); } void @@ -277,8 +261,6 @@ SettingsSound::on_pushButtonConfigureSoundCard4_clicked() { int sndCard = ui->comboBoxSoundCard4->currentData().toInt(); auto *device = sound_card_getdevice(sndCard); - if (sndCard == SOUND_INTERNAL) - device = machine_get_snd_device(machineId); DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } From 2e727ebcaecceacfc873c9620d005bdfb9fa4521 Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 16:07:21 +0800 Subject: [PATCH 71/82] Updated Simp. Chinese translation --- src/win/languages/zh-CN.rc | 136 ++++++++++++++++++------------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index a6d86b6c0..92afaf86d 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -34,7 +34,7 @@ BEGIN MENUITEM "隐藏状态栏(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM "隐藏工具栏(&T)", IDM_VID_HIDE_TOOLBAR MENUITEM SEPARATOR - MENUITEM "Show non-primary monitors(&S)", IDM_VID_MONITORS + MENUITEM "显示次要显示器(&S)", IDM_VID_MONITORS MENUITEM "窗口大小可调(&R)", IDM_VID_RESIZE MENUITEM "记住窗口大小和位置(&E)", IDM_VID_REMEMBER MENUITEM SEPARATOR @@ -137,10 +137,10 @@ CassetteSubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "新建镜像(&N)...", IDM_CASSETTE_IMAGE_NEW + MENUITEM "新建映像(&N)...", IDM_CASSETTE_IMAGE_NEW MENUITEM SEPARATOR - MENUITEM "打开已存在的镜像(&E)...", IDM_CASSETTE_IMAGE_EXISTING - MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP + MENUITEM "打开已存在的映像(&E)...", IDM_CASSETTE_IMAGE_EXISTING + MENUITEM "打开已存在的映像并写保护(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "录制(&R)", IDM_CASSETTE_RECORD MENUITEM "播放(&P)", IDM_CASSETTE_PLAY @@ -155,7 +155,7 @@ CartridgeSubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "镜像(&I)...", IDM_CARTRIDGE_IMAGE + MENUITEM "映像(&I)...", IDM_CARTRIDGE_IMAGE MENUITEM SEPARATOR MENUITEM "弹出(&J)", IDM_CARTRIDGE_EJECT END @@ -165,10 +165,10 @@ FloppySubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "新建镜像(&N)...", IDM_FLOPPY_IMAGE_NEW + MENUITEM "新建映像(&N)...", IDM_FLOPPY_IMAGE_NEW MENUITEM SEPARATOR - MENUITEM "打开已存在的镜像(&E)...", IDM_FLOPPY_IMAGE_EXISTING - MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP + MENUITEM "打开已存在的映像(&E)...", IDM_FLOPPY_IMAGE_EXISTING + MENUITEM "打开已存在的映像并写保护(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "导出为 86F 格式(&x)...", IDM_FLOPPY_EXPORT_TO_86F MENUITEM SEPARATOR @@ -183,9 +183,9 @@ BEGIN MENUITEM "静音(&M)", IDM_CDROM_MUTE MENUITEM SEPARATOR MENUITEM "空置驱动器(&M)", IDM_CDROM_EMPTY - MENUITEM "载入上一个镜像(&R)", IDM_CDROM_RELOAD + MENUITEM "载入上一个映像(&R)", IDM_CDROM_RELOAD MENUITEM SEPARATOR - MENUITEM "镜像(&I)...", IDM_CDROM_IMAGE + MENUITEM "映像(&I)...", IDM_CDROM_IMAGE MENUITEM "文件夹(&F)...", IDM_CDROM_DIR END END @@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "新建镜像(&N)...", IDM_ZIP_IMAGE_NEW + MENUITEM "新建映像(&N)...", IDM_ZIP_IMAGE_NEW MENUITEM SEPARATOR - MENUITEM "打开已存在的镜像(&E)...", IDM_ZIP_IMAGE_EXISTING - MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_ZIP_IMAGE_EXISTING_WP + MENUITEM "打开已存在的映像(&E)...", IDM_ZIP_IMAGE_EXISTING + MENUITEM "打开已存在的映像并写保护(&W)...", IDM_ZIP_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "弹出(&J)", IDM_ZIP_EJECT - MENUITEM "载入上一个镜像(&R)", IDM_ZIP_RELOAD + MENUITEM "载入上一个映像(&R)", IDM_ZIP_RELOAD END END @@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "新建镜像(&N)...", IDM_MO_IMAGE_NEW + MENUITEM "新建映像(&N)...", IDM_MO_IMAGE_NEW MENUITEM SEPARATOR - MENUITEM "打开已存在的镜像(&E)...", IDM_MO_IMAGE_EXISTING - MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_MO_IMAGE_EXISTING_WP + MENUITEM "打开已存在的映像(&E)...", IDM_MO_IMAGE_EXISTING + MENUITEM "打开已存在的映像并写保护(&W)...", IDM_MO_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "弹出(&J)", IDM_MO_EJECT - MENUITEM "载入上一个镜像(&R)", IDM_MO_RELOAD + MENUITEM "载入上一个映像(&R)", IDM_MO_RELOAD END END @@ -242,7 +242,7 @@ END #define STR_PREFERENCES "首选项" #define STR_SND_GAIN "音量增益" -#define STR_NEW_FLOPPY "新建镜像" +#define STR_NEW_FLOPPY "新建映像" #define STR_CONFIG "设置" #define STR_SPECIFY_DIM "指定主窗口大小" @@ -276,15 +276,15 @@ END #define STR_TIME_SYNC "时间同步" #define STR_DISABLED "禁用" #define STR_ENABLED_LOCAL "启用 (本地时间)" -#define STR_ENABLED_UTC "启用 (UTC)" +#define STR_ENABLED_UTC "启用 (协调世界时)" #define STR_DYNAREC "动态重编译器" -#define STR_SOFTFLOAT "Softfloat FPU" +#define STR_SOFTFLOAT "软浮点 FPU" #define STR_VIDEO "显卡:" #define STR_VIDEO_2 "显卡 2:" -#define STR_VOODOO "Voodoo Graphics" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_VOODOO "Voodoo 显卡" +#define STR_IBM8514 "IBM 8514/a 显卡" +#define STR_XGA "XGA 显卡" #define STR_MOUSE "鼠标:" #define STR_JOYSTICK "操纵杆:" @@ -308,10 +308,10 @@ END #define STR_NET_TYPE "网络类型:" #define STR_PCAP "PCap 设备:" #define STR_NET "网络适配器:" -#define STR_NET1 "Network card 1:" -#define STR_NET2 "Network card 2:" -#define STR_NET3 "Network card 3:" -#define STR_NET4 "Network card 4:" +#define STR_NET1 "网卡 1:" +#define STR_NET2 "网卡 2:" +#define STR_NET3 "网卡 3:" +#define STR_NET4 "网卡 4:" #define STR_COM1 "COM1 设备:" #define STR_COM2 "COM2 设备:" @@ -329,10 +329,10 @@ END #define STR_PARALLEL2 "并口 2" #define STR_PARALLEL3 "并口 3" #define STR_PARALLEL4 "并口 4" -#define STR_SERIAL_PASS1 "Serial port passthrough 1" -#define STR_SERIAL_PASS2 "Serial port passthrough 2" -#define STR_SERIAL_PASS3 "Serial port passthrough 3" -#define STR_SERIAL_PASS4 "Serial port passthrough 4" +#define STR_SERIAL_PASS1 "串口直通 1" +#define STR_SERIAL_PASS2 "串口直通 2" +#define STR_SERIAL_PASS3 "串口直通 3" +#define STR_SERIAL_PASS4 "串口直通 4" #define STR_HDC "硬盘控制器:" #define STR_FDC "软盘控制器:" @@ -347,12 +347,12 @@ END #define STR_HDD "硬盘:" #define STR_NEW "新建(&N)..." -#define STR_EXISTING "已有镜像(&E)..." +#define STR_EXISTING "已有映像(&E)..." #define STR_REMOVE "移除(&R)" #define STR_BUS "总线:" #define STR_CHANNEL "通道:" #define STR_ID "ID:" -#define STR_SPEED "Speed:" +#define STR_SPEED "速度:" #define STR_SPECIFY "指定(&S)..." #define STR_SECTORS "扇区(S):" @@ -360,7 +360,7 @@ END #define STR_CYLS "柱面(C):" #define STR_SIZE_MB "大小 (MB):" #define STR_TYPE "类型:" -#define STR_IMG_FORMAT "镜像格式:" +#define STR_IMG_FORMAT "映像格式:" #define STR_BLOCK_SIZE "块大小:" #define STR_FLOPPY_DRIVES "软盘驱动器:" @@ -401,14 +401,14 @@ BEGIN IDS_2052 "按下 Ctrl+Alt+PgDn 返回到窗口模式。" IDS_2053 "速度" IDS_2054 "ZIP %03i %i (%s): %ls" - IDS_2055 "ZIP 镜像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0" - IDS_2056 "86Box 找不到任何可用的 ROM 镜像。\n\n请下载ROM 包并将其解压到 ""roms"" 文件夹。" + IDS_2055 "ZIP 映像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0" + IDS_2056 "86Box 找不到任何可用的 ROM 映像。\n\n请下载ROM 包并将其解压到 ""roms"" 文件夹中。" IDS_2057 "(空)" - IDS_2058 "ZIP 镜像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0" + IDS_2058 "ZIP 映像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0" IDS_2059 "加速" IDS_2060 "开" IDS_2061 "关" - IDS_2062 "所有镜像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区镜像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面镜像 (*.86F)\0*.86F\0" + IDS_2062 "所有映像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区映像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面映像 (*.86F)\0*.86F\0" IDS_2063 "由于 roms/machines 文件夹中缺少合适的 ROM,机型 ""%hs"" 不可用。将切换到其他可用机型。" END @@ -426,7 +426,7 @@ BEGIN IDS_2073 "软盘/光盘驱动器" IDS_2074 "其他可移动设备" IDS_2075 "其他外围设备" - IDS_2076 "表面镜像 (*.86F)\0*.86F\0" + IDS_2076 "表面映像 (*.86F)\0*.86F\0" IDS_2077 "单击窗口捕捉鼠标" IDS_2078 "按下 F8+F12 释放鼠标" IDS_2079 "按下 F8+F12 或鼠标中键释放鼠标" @@ -440,7 +440,7 @@ BEGIN IDS_2084 "H" IDS_2085 "S" IDS_2086 "MB" - IDS_2087 "Speed" + IDS_2087 "速度" IDS_2088 "检查 BPB" IDS_2089 "KB" IDS_2090 "无法初始化视频渲染器。" @@ -463,13 +463,13 @@ BEGIN IDS_2107 "%u" IDS_2108 "%u MB (CHS: %i, %i, %i)" IDS_2109 "软盘 %i (%s): %ls" - IDS_2110 "所有镜像 (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0高级扇区镜像 (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本扇区镜像 (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux 镜像 (*.FDI)\0*.FDI\0表面镜像 (*.86F;*.MFM)\0*.86F;*.MFM\0所有文件 (*.*)\0*.*\0" + IDS_2110 "所有映像 (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0高级扇区映像 (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本扇区映像 (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux 映像 (*.FDI)\0*.FDI\0表面映像 (*.86F;*.MFM)\0*.86F;*.MFM\0所有文件 (*.*)\0*.*\0" IDS_2112 "无法初始化 SDL,需要 SDL2.dll" IDS_2113 "确定要硬重置模拟器吗?" IDS_2114 "确定要退出 86Box 吗?" IDS_2115 "无法初始化 Ghostscript" IDS_2116 "磁光盘 %i (%ls): %ls" - IDS_2117 "磁光盘镜像 (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0" + IDS_2117 "磁光盘映像 (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0" IDS_2118 "欢迎使用 86Box!" IDS_2119 "内部控制器" IDS_2120 "退出" @@ -497,12 +497,12 @@ BEGIN #endif IDS_2133 LIB_NAME_GS " 是将 PostScript 文件转换为 PDF 所需要的库。\n\n使用通用 PostScript 打印机打印的文档将被保存为 PostScript (.ps) 文件。" IDS_2135 "正在进入全屏模式" - IDS_2136 "不要再显示此消息" + IDS_2136 "不再显示此消息" IDS_2137 "不退出" IDS_2138 "重置" IDS_2139 "不重置" - IDS_2140 "磁光盘镜像 (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0" - IDS_2141 "光盘镜像 (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有文件 (*.*)\0*.*\0" + IDS_2140 "磁光盘映像 (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0" + IDS_2141 "光盘映像 (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有文件 (*.*)\0*.*\0" IDS_2142 "%hs 设备配置" IDS_2143 "显示器处在睡眠状态" IDS_2144 "OpenGL 着色器 (*.GLSL)\0*.GLSL\0所有文件 (*.*)\0*.*\0" @@ -511,9 +511,9 @@ BEGIN IDS_2147 "此模拟计算机禁用了基于选定计算机的 CPU 类型过滤。\n\n能够选中与所选机器本不兼容的 CPU,但是可能会遇到与机器 BIOS 或其他软件不兼容的问题。\n\n启用此设置不受官方支持,并且提交的任何错误报告可能会视为无效而关闭。" IDS_2148 "继续" IDS_2149 "磁带: %s" - IDS_2150 "磁带镜像 (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有文件 (*.*)\0*.*\0" + IDS_2150 "磁带映像 (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有文件 (*.*)\0*.*\0" IDS_2151 "卡带 %i: %ls" - IDS_2152 "卡带镜像 (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有文件 (*.*)\0*.*\0" + IDS_2152 "卡带映像 (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有文件 (*.*)\0*.*\0" IDS_2153 "初始化渲染器时出错" IDS_2154 "无法初始化 OpenGL (3.0 核心) 渲染器。请使用其他渲染器。" IDS_2155 "恢复执行" @@ -523,13 +523,13 @@ BEGIN IDS_2159 "硬重置" IDS_2160 "ACPI 关机" IDS_2161 "设置" - IDS_2162 "Type" - IDS_2163 "No Dynarec" - IDS_2164 "Old Dynarec" - IDS_2165 "New Dynarec" - IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." - IDS_2167 "Failed to initialize network driver" - IDS_2168 "The network configuration will be switched to the null driver" + IDS_2162 "类型" + IDS_2163 "无动态重编译" + IDS_2164 "旧式动态重编译" + IDS_2165 "新式动态重编译" + IDS_2166 "由于 roms/video 文件夹中缺少合适的 ROM,显卡 #2 ""%hs"" 不可用。将禁用第二张显卡。" + IDS_2167 "初始化网络驱动程序失败" + IDS_2168 "网络配置将切换为空驱动程序" END STRINGTABLE DISCARDABLE @@ -542,27 +542,27 @@ BEGIN IDS_4101 "自定义 (大容量)..." IDS_4102 "添加新硬盘" IDS_4103 "添加已存在的硬盘" - IDS_4104 "HDI 磁盘镜像不能超过 4 GB。" - IDS_4105 "磁盘镜像不能超过 127 GB。" - IDS_4106 "硬盘镜像 (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有文件 (*.*)\0*.*\0" + IDS_4104 "HDI 磁盘映像不能超过 4 GB。" + IDS_4105 "磁盘映像不能超过 127 GB。" + IDS_4106 "硬盘映像 (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有文件 (*.*)\0*.*\0" IDS_4107 "无法读取文件" IDS_4108 "无法写入文件" - IDS_4109 "不支持非 512 字节扇区大小的 HDI 或 HDX 镜像。" + IDS_4109 "不支持非 512 字节扇区大小的 HDI 或 HDX 映像。" IDS_4110 "尚未支持 USB" - IDS_4111 "磁盘镜像文件已存在" + IDS_4111 "磁盘映像文件已存在" IDS_4112 "请指定有效的文件名。" - IDS_4113 "已创建磁盘镜像" + IDS_4113 "已创建磁盘映像" IDS_4114 "请确定此文件已存在并可读取。" IDS_4115 "请确定此文件保存在可写目录中。" - IDS_4116 "磁盘镜像太大" - IDS_4117 "请记得为新创建的镜像分区并格式化。" + IDS_4116 "磁盘映像太大" + IDS_4117 "请记得为新创建的映像分区并格式化。" IDS_4118 "选定的文件将被覆盖。确定继续使用此文件吗?" - IDS_4119 "不支持的磁盘镜像" + IDS_4119 "不支持的磁盘映像" IDS_4120 "覆盖" IDS_4121 "不覆盖" - IDS_4122 "原始镜像 (.img)" - IDS_4123 "HDI 镜像 (.hdi)" - IDS_4124 "HDX 镜像 (.hdx)" + IDS_4122 "原始映像 (.img)" + IDS_4123 "HDI 映像 (.hdi)" + IDS_4124 "HDX 映像 (.hdx)" IDS_4125 "固定大小 VHD (.vhd)" IDS_4126 "动态大小 VHD (.vhd)" IDS_4127 "差分 VHD (.vhd)" @@ -570,7 +570,7 @@ BEGIN IDS_4129 "小块 (512 KB)" IDS_4130 "VHD 文件 (*.VHD)\0*.VHD\0所有文件 (*.*)\0*.*\0" IDS_4131 "选择父 VHD 文件" - IDS_4132 "父映像可能在创建差异镜像后被修改。\n\n如果镜像文件被移动或复制,或创建此磁盘的程序中存在错误,也可能发生这种情况。\n\n是否需要修复时间戳?" + IDS_4132 "父映像可能在创建差异映像后被修改。\n\n如果映像文件被移动或复制,或创建此磁盘的程序中存在错误,也可能发生这种情况。\n\n是否需要修复时间戳?" IDS_4133 "父盘与子盘的时间戳不匹配" IDS_4134 "无法修复 VHD 时间戳。" IDS_4135 "%01i:%02i" From 898290685ecb06faf1e2bdab838a1682a0e2bdbd Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 17:20:13 +0800 Subject: [PATCH 72/82] Updated Japanese translation --- src/win/languages/ja-JP.rc | 204 ++++++++++++++++++------------------- 1 file changed, 102 insertions(+), 102 deletions(-) diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index 961f5b508..644cd8ac1 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -18,9 +18,9 @@ BEGIN POPUP "動作(&A)" BEGIN MENUITEM "キーボードはキャプチャが必要(&K)", IDM_ACTION_KBD_REQ_CAPTURE - MENUITEM "右CTRLを左ALTへ(&R)", IDM_ACTION_RCTRL_IS_LALT + MENUITEM "右CTRLを左ALTへ変換(&R)", IDM_ACTION_RCTRL_IS_LALT MENUITEM SEPARATOR - MENUITEM "ハードリセット(&H)...", IDM_ACTION_HRESET + MENUITEM "ハード リセット(&H)...", IDM_ACTION_HRESET MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD MENUITEM SEPARATOR MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC @@ -34,9 +34,9 @@ BEGIN MENUITEM "ステータスバーを隠す(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM "ツールバーを隠す(&T)", IDM_VID_HIDE_TOOLBAR MENUITEM SEPARATOR - MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS - MENUITEM "ウィンドウのサイズをリサイズ可能(&R)", IDM_VID_RESIZE - MENUITEM "ウィンドウのサイズと位置を記憶(&E)", IDM_VID_REMEMBER + MENUITEM "プライマリ以外のモニターを表示(&S)", IDM_VID_MONITORS + MENUITEM "ウィンドウのサイズを変更可能(&R)", IDM_VID_RESIZE + MENUITEM "ウィンドウのサイズと位置を保存(&E)", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "レンダラー(&N)" BEGIN @@ -49,8 +49,8 @@ BEGIN #endif END MENUITEM SEPARATOR - MENUITEM "ウィンドウのサイズを指定...", IDM_VID_SPECIFY_DIM - MENUITEM "4:3アスペクト比を固定(&O)", IDM_VID_FORCE43 + MENUITEM "ディメンションを指定...", IDM_VID_SPECIFY_DIM + MENUITEM "4:3の縦横比を強制表示(&O)", IDM_VID_FORCE43 POPUP "ウィンドウの表示倍率(&W)" BEGIN MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X @@ -71,22 +71,22 @@ BEGIN END MENUITEM "HiDPIスケーリング(&D)", IDM_VID_HIDPI MENUITEM SEPARATOR - MENUITEM "フルスクリーン(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN - POPUP "フルスクリーンのスケール(&S)" + MENUITEM "全画面表示(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN + POPUP "全画面の拡大表示モード(&S)" BEGIN - MENUITEM "フルスクリーンに拡大(&F)", IDM_VID_FS_FULL + MENUITEM "ストレッチ モード(&F)", IDM_VID_FS_FULL MENUITEM "4:3(&4)", IDM_VID_FS_43 MENUITEM "正方形ピクセル(アスペクト比を維持)(&S)", IDM_VID_FS_KEEPRATIO MENUITEM "整数倍(&I)", IDM_VID_FS_INT END POPUP "E&GA/(S)VGAの設定" BEGIN - MENUITEM "色を反転(&I)", IDM_VID_INVERT + MENUITEM "色反転(&I)", IDM_VID_INVERT POPUP "画面タイプ(&T)" BEGIN MENUITEM "RGB(カラー)(&C)", IDM_VID_GRAY_RGB MENUITEM "RGB(グレースケール)(&R)", IDM_VID_GRAY_MONO - MENUITEM "モニター(琥珀色)(&A)", IDM_VID_GRAY_AMBER + MENUITEM "モニター(黄色)(&A)", IDM_VID_GRAY_AMBER MENUITEM "モニター(緑色)(&G)", IDM_VID_GRAY_GREEN MENUITEM "モニター(白色)(&W)", IDM_VID_GRAY_WHITE END @@ -111,10 +111,10 @@ BEGIN MENUITEM SEPARATOR MENUITEM "環境設定(&P)...", IDM_PREFERENCES #ifdef DISCORD - MENUITEM "Discordとの連携機能(&D)", IDM_DISCORD + MENUITEM "Discord連携機能(&D)", IDM_DISCORD #endif MENUITEM SEPARATOR - MENUITEM "音量を調節(&G)...", IDM_SND_GAIN + MENUITEM "音量調整(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED MENUITEM SEPARATOR MENUITEM "トレース開始\tCtrl+T", IDM_ACTION_BEGIN_TRACE @@ -123,7 +123,7 @@ BEGIN END POPUP "ヘルプ(&H)" BEGIN - MENUITEM "ドキュメント(&D)...", IDM_DOCS + MENUITEM "文書(&D)...", IDM_DOCS MENUITEM "86Boxのバージョン情報(&A)...", IDM_ABOUT END END @@ -142,9 +142,9 @@ BEGIN MENUITEM "既存のイメージを開く(&E)...", IDM_CASSETTE_IMAGE_EXISTING MENUITEM "既存のイメージを開く(書き込み保護)(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP MENUITEM SEPARATOR - MENUITEM "録音(&R)", IDM_CASSETTE_RECORD + MENUITEM "記録(&R)", IDM_CASSETTE_RECORD MENUITEM "再生(&P)", IDM_CASSETTE_PLAY - MENUITEM "冒頭に巻き戻す(&R)", IDM_CASSETTE_REWIND + MENUITEM "先頭まで巻き戻す(&R)", IDM_CASSETTE_REWIND MENUITEM "最後まで早送り(&F)", IDM_CASSETTE_FAST_FORWARD MENUITEM SEPARATOR MENUITEM "取り出す(&J)", IDM_CASSETTE_EJECT @@ -241,47 +241,47 @@ END // #define STR_PREFERENCES "環境設定" -#define STR_SND_GAIN "音量ゲイン" +#define STR_SND_GAIN "音量調整" #define STR_NEW_FLOPPY "新規のイメージ" #define STR_CONFIG "設定" -#define STR_SPECIFY_DIM "メインウィンドウのサイズ指定" +#define STR_SPECIFY_DIM "メイン ウィンドウのサイズ指定" #define STR_OK "OK" #define STR_CANCEL "キャンセル" -#define STR_GLOBAL "これらの設定をグローバル既定値として保存する(&G)" +#define STR_GLOBAL "これらの設定をグローバル既定値として保存(&G)" #define STR_DEFAULT "既定値(&D)" #define STR_LANGUAGE "言語:" -#define STR_ICONSET "アイコンセット:" +#define STR_ICONSET "アイコン セット:" #define STR_GAIN "ゲイン値" #define STR_FILE_NAME "ファイル名:" -#define STR_DISK_SIZE "ディスクサイズ:" -#define STR_RPM_MODE "回転数モード:" +#define STR_DISK_SIZE "ディスク サイズ:" +#define STR_RPM_MODE "RPMモード:" #define STR_PROGRESS "進行状況:" #define STR_WIDTH "幅:" #define STR_HEIGHT "高さ:" -#define STR_LOCK_TO_SIZE "このサイズをロックする" +#define STR_LOCK_TO_SIZE "このサイズを固定" -#define STR_MACHINE_TYPE "マシンタイプ:" +#define STR_MACHINE_TYPE "マシン タイプ:" #define STR_MACHINE "マシン:" #define STR_CONFIGURE "設定" #define STR_CPU_TYPE "CPUタイプ:" #define STR_CPU_SPEED "速度:" #define STR_FPU "FPU:" -#define STR_WAIT_STATES "待機状態:" +#define STR_WAIT_STATES "ウェイト ステート:" #define STR_MB "MB" #define STR_MEMORY "メモリ:" #define STR_TIME_SYNC "時刻同期機能" #define STR_DISABLED "無効にする" -#define STR_ENABLED_LOCAL "有効にする (現地時間)" -#define STR_ENABLED_UTC "有効にする (UTC)" +#define STR_ENABLED_LOCAL "有効にする(現地時間)" +#define STR_ENABLED_UTC "有効にする(UTC)" #define STR_DYNAREC "動的リコンパイラ" #define STR_SOFTFLOAT "Softfloat FPU" #define STR_VIDEO "ビデオカード:" -#define STR_VIDEO_2 "ビデオカード 2:" +#define STR_VIDEO_2 "ビデオカード2:" #define STR_VOODOO "Voodooグラフィック" #define STR_IBM8514 "IBM 8514/aグラフィック" #define STR_XGA "XGAグラフィック" @@ -293,25 +293,25 @@ END #define STR_JOY3 "ジョイスティック3..." #define STR_JOY4 "ジョイスティック4..." -#define STR_SOUND1 "サウンドカード 1:" -#define STR_SOUND2 "サウンドカード 2:" -#define STR_SOUND3 "サウンドカード 3:" -#define STR_SOUND4 "サウンドカード 4:" +#define STR_SOUND1 "サウンド カード1:" +#define STR_SOUND2 "サウンド カード2:" +#define STR_SOUND3 "サウンド カード3:" +#define STR_SOUND4 "サウンド カード4:" #define STR_MIDI_OUT "MIDI出力デバイス:" #define STR_MIDI_IN "MIDI入力デバイス:" #define STR_MPU401 "独立型MPU-401" -#define STR_FLOAT "FLOAT32サウンドを使用する" +#define STR_FLOAT "FLOAT32サウンドを使用" #define STR_FM_DRIVER "FMシンセドライバー" -#define STR_FM_DRV_NUKED "Nuked (高精度化)" -#define STR_FM_DRV_YMFM "YMFM (より速く)" +#define STR_FM_DRV_NUKED "Nuked(高精度化)" +#define STR_FM_DRV_YMFM "YMFM(より速く)" #define STR_NET_TYPE "ネットワークタイプ:" #define STR_PCAP "PCapデバイス:" #define STR_NET "ネットワークアダプター:" -#define STR_NET1 "Network card 1:" -#define STR_NET2 "Network card 2:" -#define STR_NET3 "Network card 3:" -#define STR_NET4 "Network card 4:" +#define STR_NET1 "ネットワーク カード1:" +#define STR_NET2 "ネットワーク カード2:" +#define STR_NET3 "ネットワーク カード3:" +#define STR_NET4 "ネットワーク カード4:" #define STR_COM1 "COM1デバイス:" #define STR_COM2 "COM2デバイス:" @@ -321,23 +321,23 @@ END #define STR_LPT2 "LPT2デバイス:" #define STR_LPT3 "LPT3デバイス:" #define STR_LPT4 "LPT4デバイス:" -#define STR_SERIAL1 "シリアルポート1" -#define STR_SERIAL2 "シリアルポート2" -#define STR_SERIAL3 "シリアルポート3" -#define STR_SERIAL4 "シリアルポート4" -#define STR_PARALLEL1 "パラレルポート1" -#define STR_PARALLEL2 "パラレルポート2" -#define STR_PARALLEL3 "パラレルポート3" -#define STR_PARALLEL4 "パラレルポート4" -#define STR_SERIAL_PASS1 "Serial port passthrough 1" -#define STR_SERIAL_PASS2 "Serial port passthrough 2" -#define STR_SERIAL_PASS3 "Serial port passthrough 3" -#define STR_SERIAL_PASS4 "Serial port passthrough 4" +#define STR_SERIAL1 "シリアル ポート1" +#define STR_SERIAL2 "シリアル ポート2" +#define STR_SERIAL3 "シリアル ポート3" +#define STR_SERIAL4 "シリアル ポート4" +#define STR_PARALLEL1 "パラレル ポート1" +#define STR_PARALLEL2 "パラレル ポート2" +#define STR_PARALLEL3 "パラレル ポート3" +#define STR_PARALLEL4 "パラレル ポート4" +#define STR_SERIAL_PASS1 "シリアル ポート パススルー対応1" +#define STR_SERIAL_PASS2 "シリアル ポート パススルー対応2" +#define STR_SERIAL_PASS3 "シリアル ポート パススルー対応3" +#define STR_SERIAL_PASS4 "シリアル ポート パススルー対応4" -#define STR_HDC "HDコントローラー:" -#define STR_FDC "FDコントローラー:" -#define STR_IDE_TER "第三のIDEコントローラー" -#define STR_IDE_QUA "第四のIDEコントローラー" +#define STR_HDC "HDDコントローラー:" +#define STR_FDC "FDDコントローラー:" +#define STR_IDE_TER "第三IDEコントローラー" +#define STR_IDE_QUA "第四IDEコントローラー" #define STR_SCSI "SCSI" #define STR_SCSI_1 "コントローラー1:" #define STR_SCSI_2 "コントローラー2:" @@ -345,14 +345,14 @@ END #define STR_SCSI_4 "コントローラー4:" #define STR_CASSETTE "カセット" -#define STR_HDD "ハードディスク:" +#define STR_HDD "ハード ディスク:" #define STR_NEW "新規(&N)..." #define STR_EXISTING "既定(&E)..." #define STR_REMOVE "除去(&R)" #define STR_BUS "バス:" #define STR_CHANNEL "チャンネル:" #define STR_ID "ID:" -#define STR_SPEED "Speed:" +#define STR_SPEED "速度:" #define STR_SPECIFY "参照(&S)..." #define STR_SECTORS "セクター:" @@ -361,9 +361,9 @@ END #define STR_SIZE_MB "サイズ(MB):" #define STR_TYPE "タイプ:" #define STR_IMG_FORMAT "イメージ形式:" -#define STR_BLOCK_SIZE "ブロックサイズ:" +#define STR_BLOCK_SIZE "ブロック サイズ:" -#define STR_FLOPPY_DRIVES "フロッピードライブ:" +#define STR_FLOPPY_DRIVES "フロッピー ドライブ:" #define STR_TURBO "高速タイミング" #define STR_CHECKBPB "BPBをチェック" #define STR_CDROM_DRIVES "CD-ROMドライブ:" @@ -374,7 +374,7 @@ END #define STR_250 "ZIP 250" #define STR_ISARTC "ISA RTCカード:" -#define STR_ISAMEM "ISAメモリー拡張カード" +#define STR_ISAMEM "ISAメモリ拡張カード" #define STR_ISAMEM_1 "カード1:" #define STR_ISAMEM_2 "カード2:" #define STR_ISAMEM_3 "カード3:" @@ -409,22 +409,22 @@ BEGIN IDS_2060 "オン" IDS_2061 "オフ" IDS_2062 "すべてのイメージ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本的なセクターイメージ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面イメージ (*.86F)\0*.86F\0" - IDS_2063 "roms/machinesディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" + IDS_2063 "「roms/machines」ディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" END STRINGTABLE DISCARDABLE BEGIN - IDS_2064 "roms/videoディレクトリにROMがないため、ビデオカード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" + IDS_2064 "「roms/video」ディレクトリにROMがないため、ビデオカード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" IDS_2065 "マシン" IDS_2066 "画面表示" IDS_2067 "入力デバイス" IDS_2068 "サウンド" IDS_2069 "ネットワーク" IDS_2070 "ポート (COM & LPT)" - IDS_2071 "ストレージコントローラ" - IDS_2072 "ハードディスク" + IDS_2071 "ストレージ コントローラ" + IDS_2072 "ハード ディスク" IDS_2073 "フロッピー/CD-ROMドライブ" - IDS_2074 "その他のリムーバブルデバイス" + IDS_2074 "その他のリムーバブル デバイス" IDS_2075 "その他の周辺装置" IDS_2076 "表面イメージ (*.86F)\0*.86F\0" IDS_2077 "クリックするとマウスをキャプチャします" @@ -455,17 +455,17 @@ BEGIN IDS_2099 "標準ジョイスティック(6ボタン)" IDS_2100 "標準ジョイスティック(8ボタン)" IDS_2101 "CH Flightstick Pro" - IDS_2102 "Microsoft SideWinder Pad" - IDS_2103 "Thrustmaster Flight Control System" + IDS_2102 "Microsoft SideWinderパッド" + IDS_2103 "Thrustmaster飛行制御システム" IDS_2104 "なし" - IDS_2105 "キーボードアクセラレータを読み込めません。" + IDS_2105 "キーボード アクセラレータを読み込めません。" IDS_2106 "生の入力が登録できません。" IDS_2107 "%u" IDS_2108 "%u MB (CHS: %i, %i, %i)" IDS_2109 "フロッピー %i (%s): %ls" IDS_2110 "すべてのイメージ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0アドバンスドセクターイメージ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本セクターイメージ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0フラックスイメージ (*.FDI)\0*.FDI\0表面イメージ (*.86F;*.MFM)\0*.86F;*.MFM\0すべてのファイル (*.*)\0*.*\0" IDS_2112 "SDLが初期化できません。SDL2.dllが必要です" - IDS_2113 "使用中のマシンをハードリセットしますか?" + IDS_2113 "使用中のマシンをハードリ セットしますか?" IDS_2114 "86Boxを終了しますか?" IDS_2115 "Ghostscriptが初期化できません" IDS_2116 "光磁気 %i (%ls): %ls" @@ -475,7 +475,7 @@ BEGIN IDS_2120 "終了" IDS_2121 "ROMが見つかりません" IDS_2122 "設定を保存しますか?" - IDS_2123 "保存すると使用中のマシンがハードリセットされます。" + IDS_2123 "使用中のマシンがハードリ セットされます。" IDS_2124 "保存" IDS_2125 "86Boxのバージョン情報" IDS_2126 "86Box v" EMU_VERSION @@ -489,14 +489,14 @@ BEGIN #define LIB_NAME_PCAP "libpcap" #endif IDS_2130 LIB_NAME_PCAP "がインストールされてるか、" LIB_NAME_PCAP "に対応したネットワークに接続されてるか確認してください。" - IDS_2131 "不正な設定です" + IDS_2131 "無効な設定" #ifdef _WIN32 #define LIB_NAME_GS "gsdll32.dll" #else #define LIB_NAME_GS "libgs" #endif - IDS_2133 "PostScriptファイルをPDFに自動変換するには" LIB_NAME_GS "が必要です。\n\n汎用PostScriptプリンターに送信されたドキュメントは、PostScript(.ps)ファイルとして保存されます。" - IDS_2135 "フルスクリーンに切り替えています" + IDS_2133 "PostScriptファイルをPDFに自動変換するには" LIB_NAME_GS "が必要です。\n\n汎用PostScriptプリンターに送信された文書は、PostScript (.ps) ファイルとして保存されます。" + IDS_2135 "全画面モードを入力" IDS_2136 "今後、このメッセージを表示しない" IDS_2137 "終了しない" IDS_2138 "リセット" @@ -504,16 +504,16 @@ BEGIN IDS_2140 "光磁気イメージ (*.IM?;*.MDI)\0*.IM?;*.MDI\0すべてのファイル (*.*)\0*.*\0" IDS_2141 "CD-ROMイメージ (*.ISO;*.CUE)\0*.ISO;*.CUE\0すべてのファイル (*.*)\0*.*\0" IDS_2142 "%hs デバイスの設定" - IDS_2143 "モニターのスリープモード" + IDS_2143 "モニターのスリープ モード" IDS_2144 "OpenGLシェーダー (*.GLSL)\0*.GLSL\0すべてのファイル (*.*)\0*.*\0" IDS_2145 "OpenGL設定" IDS_2146 "サポートされていない設定を読み込んでいます" - IDS_2147 "選択したマシンに基づくCPUタイプのフィルタリングは、このエミュレートされたマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。ただし、マシンのBIOSまたは他のソフトウェアとの互換性が失われる可能性があります。\n\nこの設定の有効化は公式サポートができません。また、バグレポートが無効として閉じられる場合があります。" + IDS_2147 "選択したマシンに基づくCPUタイプのフィルター機能は、使用中のマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。しかし、マシンのBIOSや他のソフトウェアと互換性がない場合があります。\n\nこの設定を有効にすることは公式にはサポートされておらず、バグレポートは無効として中止される可能性があります。" IDS_2148 "続行" IDS_2149 "カセット: %s" - IDS_2150 "カセットイメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0すべてのファイル (*.*)\0*.*\0" + IDS_2150 "カセット イメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0すべてのファイル (*.*)\0*.*\0" IDS_2151 "カートリッジ %i: %ls" - IDS_2152 "カートリッジイメージ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0すべてのファイル (*.*)\0*.*\0" + IDS_2152 "カートリッジ イメージ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0すべてのファイル (*.*)\0*.*\0" IDS_2153 "レンダラーの初期化エラー" IDS_2154 "OpenGL (3.0コア) レンダラーが初期化できませんでした。別のレンダラーを使用してください。" IDS_2155 "実行を再開" @@ -523,13 +523,13 @@ BEGIN IDS_2159 "ハードリセット" IDS_2160 "ACPIシャットダウン" IDS_2161 "設定" - IDS_2162 "Type" - IDS_2163 "No Dynarec" - IDS_2164 "Old Dynarec" - IDS_2165 "New Dynarec" - IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card." - IDS_2167 "Failed to initialize network driver" - IDS_2168 "The network configuration will be switched to the null driver" + IDS_2162 "タイプ" + IDS_2163 "Dynarecなし" + IDS_2164 "旧型Dynarec" + IDS_2165 "新型Dynarec" + IDS_2166 "「roms/video」ディレクトリにROMがないため、ビデオカード#2「%hs」は使用できません。2枚目のビデオカードを無効にします。" + IDS_2167 "ネットワーク ドライバの初期化に失敗しました。" + IDS_2168 "ネットワーク設定がヌル ドライバに切り替えられます" END STRINGTABLE DISCARDABLE @@ -544,34 +544,34 @@ BEGIN IDS_4103 "既定のディスクを追加" IDS_4104 "HDIディスクイメージは4GBを超えることはできません。" IDS_4105 "ディスクイメージは127GBを超えることはできません。" - IDS_4106 "ハードディスクイメージ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0すべてのファイル (*.*)\0*.*\0" + IDS_4106 "ハード ディスク イメージ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0すべてのファイル (*.*)\0*.*\0" IDS_4107 "ファイルの読み込みができません" IDS_4108 "ファイルの書き込みができません" - IDS_4109 "512以外のセクタサイズを持つHDIまたはHDXイメージはサポートされていません。" - IDS_4110 "USBはまだサポートされていません" - IDS_4111 "ディスクイメージファイルが既に存在します" + IDS_4109 "512以外のセクタ サイズを持つHDIまたはHDXイメージは対応していません。" + IDS_4110 "USBはまだ非対応です" + IDS_4111 "ディスク イメージ ファイルが既に存在します" IDS_4112 "有効なファイル名を指定してください。" - IDS_4113 "ディスクイメージが作成されました" + IDS_4113 "ディスク イメージが作成されました" IDS_4114 "ファイルが存在し、読み取り可能であることを確認してください。" IDS_4115 "ファイルが書き込み可能なディレクトリに保存されていることを確認してください。" - IDS_4116 "ディスクイメージのサイズが大きすぎます" + IDS_4116 "ディスク イメージのサイズが大きすぎます" IDS_4117 "新規ドライブをパーティション分割し、フォーマットを必ずしといてください。" - IDS_4118 "選択したファイルが上書きされます。使っていいですか?" - IDS_4119 "サポートされていないディスクイメージ" + IDS_4118 "選択したファイルは上書きされます。よろしいですか?" + IDS_4119 "非対応のディスク イメージ" IDS_4120 "上書き" IDS_4121 "上書きしない" IDS_4122 "Rawイメージ (.img)" IDS_4123 "HDIイメージ (.hdi)" IDS_4124 "HDXイメージ (.hdx)" - IDS_4125 "VHD(容量固定)(.vhd)" - IDS_4126 "VHD(容量可変)(.vhd)" - IDS_4127 "VHD(差分)(.vhd)" + IDS_4125 "VHD (容量固定) (.vhd)" + IDS_4126 "VHD (容量可変) (.vhd)" + IDS_4127 "VHD (差分) (.vhd)" IDS_4128 "大型ブロック (2 MB)" IDS_4129 "小型ブロック (512 KB)" IDS_4130 "VHDファイル (*.VHD)\0*.VHD\0すべてのファイル (*.*)\0*.*\0" IDS_4131 "親VHDの選択" - IDS_4132 "親イメージがディファレンシングイメージの作成の後に修正した可能性があります。\n\nイメージファイルの移動、コピーまたはこのディスクを作成したプログラムにバグが発生した可能性があります。\n\nタイムスタンプを修正しますか?" - IDS_4133 "親ディスクと子ディスクのタイムスタンプが一致しません" + IDS_4132 "親イメージが差分イメージの作成の後に変更される可能性があります。\n\nイメージ ファイルが移動またはコピーされたか、イメージ ファイルを作成したプログラムにバグが発生した可能性があります。\n\nタイムスタンプを修正しますか?" + IDS_4133 "親ディスクと子ディスクのタイム スタンプが一致しません" IDS_4134 "VHD のタイムスタンプを修正できませんでした。" IDS_4135 "%01i:%02i" @@ -624,10 +624,10 @@ BEGIN IDS_5910 "5.25"" 1 GB" IDS_5911 "5.25"" 1.3 GB" - IDS_6144 "規定の回転数" - IDS_6145 "1%低い回転数" - IDS_6146 "1.5%低い回転数" - IDS_6147 "2%低い回転数" + IDS_6144 "規定のRPM" + IDS_6145 "1%低いRPM" + IDS_6146 "1.5%低いRPM" + IDS_6147 "2%低いRPM" IDS_7168 "(システム既定値)" END From 7171194a92994bdc3329a1681f65bd72d622917c Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 17:21:17 +0800 Subject: [PATCH 73/82] Updated Japanese translation --- src/win/languages/ja-JP.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index 644cd8ac1..370464717 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -15,7 +15,7 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT MainMenu MENU DISCARDABLE BEGIN - POPUP "動作(&A)" + POPUP "操作(&A)" BEGIN MENUITEM "キーボードはキャプチャが必要(&K)", IDM_ACTION_KBD_REQ_CAPTURE MENUITEM "右CTRLを左ALTへ変換(&R)", IDM_ACTION_RCTRL_IS_LALT From 55936c71e3410abe5d09eede212d31fc0dd0dd73 Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 18:00:09 +0800 Subject: [PATCH 74/82] Updated Japanese translation --- src/win/languages/ja-JP.rc | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index 370464717..ab57fb495 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -274,9 +274,9 @@ END #define STR_MB "MB" #define STR_MEMORY "メモリ:" #define STR_TIME_SYNC "時刻同期機能" -#define STR_DISABLED "無効にする" -#define STR_ENABLED_LOCAL "有効にする(現地時間)" -#define STR_ENABLED_UTC "有効にする(UTC)" +#define STR_DISABLED "無効" +#define STR_ENABLED_LOCAL "有効(現地時間)" +#define STR_ENABLED_UTC "有効(UTC)" #define STR_DYNAREC "動的リコンパイラ" #define STR_SOFTFLOAT "Softfloat FPU" @@ -365,7 +365,7 @@ END #define STR_FLOPPY_DRIVES "フロッピー ドライブ:" #define STR_TURBO "高速タイミング" -#define STR_CHECKBPB "BPBをチェック" +#define STR_CHECKBPB "BPBチェック" #define STR_CDROM_DRIVES "CD-ROMドライブ:" #define STR_CD_SPEED "速度:" @@ -420,16 +420,16 @@ BEGIN IDS_2067 "入力デバイス" IDS_2068 "サウンド" IDS_2069 "ネットワーク" - IDS_2070 "ポート (COM & LPT)" + IDS_2070 "ポート (COM/LPT)" IDS_2071 "ストレージ コントローラ" IDS_2072 "ハード ディスク" IDS_2073 "フロッピー/CD-ROMドライブ" - IDS_2074 "その他のリムーバブル デバイス" - IDS_2075 "その他の周辺装置" + IDS_2074 "他のリムーバブル デバイス" + IDS_2075 "他の周辺デバイス" IDS_2076 "表面イメージ (*.86F)\0*.86F\0" IDS_2077 "クリックするとマウスをキャプチャします" - IDS_2078 "F8+F12キーでマウスを解放します" - IDS_2079 "F8+F12キーまたは中ボタンでマウスを解放します" + IDS_2078 "F8+F12キーを押してマウスを解放します" + IDS_2079 "F8+F12キーまたはマウスの中ボタンを押してマウスを解放します" END STRINGTABLE DISCARDABLE @@ -441,11 +441,11 @@ BEGIN IDS_2085 "S" IDS_2086 "MB" IDS_2087 "Speed" - IDS_2088 "BPBをチェック" + IDS_2088 "BPBチェック" IDS_2089 "KB" IDS_2090 "ビデオレンダラーが初期化できません。" IDS_2091 "既定値" - IDS_2092 "%iつの待機状態" + IDS_2092 "%iつのウェイト ステート" IDS_2093 "タイプ" IDS_2094 "PCapのセットアップに失敗しました" IDS_2095 "PCapデバイスがありません" @@ -459,9 +459,9 @@ BEGIN IDS_2103 "Thrustmaster飛行制御システム" IDS_2104 "なし" IDS_2105 "キーボード アクセラレータを読み込めません。" - IDS_2106 "生の入力が登録できません。" + IDS_2106 "生入力が登録できません。" IDS_2107 "%u" - IDS_2108 "%u MB (CHS: %i, %i, %i)" + IDS_2108 "%u MB (CHS値: %i、%i、%i)" IDS_2109 "フロッピー %i (%s): %ls" IDS_2110 "すべてのイメージ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0アドバンスドセクターイメージ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本セクターイメージ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0フラックスイメージ (*.FDI)\0*.FDI\0表面イメージ (*.86F;*.MFM)\0*.86F;*.MFM\0すべてのファイル (*.*)\0*.*\0" IDS_2112 "SDLが初期化できません。SDL2.dllが必要です" @@ -534,16 +534,16 @@ END STRINGTABLE DISCARDABLE BEGIN - IDS_4096 "ハードディスク (%s)" + IDS_4096 "ハード ディスク (%s)" IDS_4097 "%01i:%01i" IDS_4098 "%01i" IDS_4099 "MFM/RLLまたはESDIのCD-ROMドライブが存在しません" IDS_4100 "カスタム..." - IDS_4101 "カスタム (大型)..." + IDS_4101 "カスタム (大容量)..." IDS_4102 "新規のディスクを追加" IDS_4103 "既定のディスクを追加" - IDS_4104 "HDIディスクイメージは4GBを超えることはできません。" - IDS_4105 "ディスクイメージは127GBを超えることはできません。" + IDS_4104 "HDIディスク イメージは4GBを超えることはできません。" + IDS_4105 "ディスク イメージは127GBを超えることはできません。" IDS_4106 "ハード ディスク イメージ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0すべてのファイル (*.*)\0*.*\0" IDS_4107 "ファイルの読み込みができません" IDS_4108 "ファイルの書き込みができません" @@ -570,9 +570,9 @@ BEGIN IDS_4129 "小型ブロック (512 KB)" IDS_4130 "VHDファイル (*.VHD)\0*.VHD\0すべてのファイル (*.*)\0*.*\0" IDS_4131 "親VHDの選択" - IDS_4132 "親イメージが差分イメージの作成の後に変更される可能性があります。\n\nイメージ ファイルが移動またはコピーされたか、イメージ ファイルを作成したプログラムにバグが発生した可能性があります。\n\nタイムスタンプを修正しますか?" + IDS_4132 "親イメージが差分イメージの作成の後に変更される可能性があります。\n\nイメージ ファイルが移動またはコピーされたか、イメージ ファイルを作成したプログラムにバグが発生した可能性があります。\n\nタイム スタンプを修正しますか?" IDS_4133 "親ディスクと子ディスクのタイム スタンプが一致しません" - IDS_4134 "VHD のタイムスタンプを修正できませんでした。" + IDS_4134 "VHD のタイム スタンプを修正できませんでした。" IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" From 86be9da27693038af56a2b939823771b8f63a016 Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 20:35:41 +0800 Subject: [PATCH 75/82] Updated Japanese translation (Qt) --- src/qt/languages/ja-JP.po | 208 +++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index e87f05f02..bbde070da 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -1,14 +1,14 @@ msgid "&Action" -msgstr "動作(&A)" +msgstr "操作(&A)" msgid "&Keyboard requires capture" msgstr "キーボードはキャプチャが必要(&K)" msgid "&Right CTRL is left ALT" -msgstr "右CTRLを左ALTへ(&R)" +msgstr "右CTRLを左ALTへ変換(&R)" msgid "&Hard Reset..." -msgstr "ハードリセット(&H)..." +msgstr "ハード リセット(&H)..." msgid "&Ctrl+Alt+Del\tCtrl+F12" msgstr "Ctrl+Alt+Del(&C)\tCtrl+F12" @@ -26,16 +26,16 @@ msgid "&View" msgstr "表示(&V)" msgid "&Hide status bar" -msgstr "ステータスバーを隠す(&H)" +msgstr "ステータス バーを隠す(&H)" msgid "Hide &toolbar" -msgstr "ツールバーを隠す(&T)" +msgstr "ツール バーを隠す(&T)" msgid "&Resizeable window" -msgstr "ウィンドウのサイズをリサイズ可能(&R)" +msgstr "ウィンドウのサイズを変更可能(&R)" msgid "R&emember size && position" -msgstr "ウィンドウのサイズと位置を記憶(&E)" +msgstr "ウィンドウのサイズと位置を保存(&E)" msgid "Re&nderer" msgstr "レンダラー(&N)" @@ -56,10 +56,10 @@ msgid "&VNC" msgstr "VNC(&V)" msgid "Specify dimensions..." -msgstr "ウィンドウのサイズを指定..." +msgstr "ディメンションを指定..." msgid "F&orce 4:3 display ratio" -msgstr "4:3アスペクト比を固定(&O)" +msgstr "4:3の縦横比を強制表示(&O)" msgid "&Window scale factor" msgstr "ウィンドウの表示倍率(&W)" @@ -107,13 +107,13 @@ msgid "Hi&DPI scaling" msgstr "HiDPIスケーリング(&D)" msgid "&Fullscreen\tCtrl+Alt+PgUp" -msgstr "フルスクリーン(&F)\tCtrl+Alt+PgUp" +msgstr 全画面表示(&F)\tCtrl+Alt+PgUp" msgid "Fullscreen &stretch mode" -msgstr "フルスクリーンのスケール(&S)" +msgstr "全画面の拡大表示モード(&S)" msgid "&Full screen stretch" -msgstr "フルスクリーンに拡大(&F)" +msgstr ""ストレッチ モード(&F)" msgid "&4:3" msgstr "4:3(&4)" @@ -128,7 +128,7 @@ msgid "E&GA/(S)VGA settings" msgstr "E&GA/(S)VGAの設定" msgid "&Inverted VGA monitor" -msgstr "色を反転(&I)" +msgstr "色反転(&I)" msgid "VGA screen &type" msgstr "画面タイプ(&T)" @@ -140,7 +140,7 @@ msgid "&RGB Grayscale" msgstr "RGB(グレースケール)(&R)" msgid "&Amber monitor" -msgstr "モニター(琥珀色)(&A)" +msgstr "モニター(黄色)(&A)" msgid "&Green monitor" msgstr "モニター(緑色)(&G)" @@ -185,10 +185,10 @@ msgid "&Preferences..." msgstr "環境設定(&P)..." msgid "Enable &Discord integration" -msgstr "Discordとの連携機能(&D)" +msgstr "Discord連携機能(&D)" msgid "Sound &gain..." -msgstr "音量を調節(&G)..." +msgstr "音量調整(&G)..." msgid "Begin trace\tCtrl+T" msgstr "トレース開始\tCtrl+T" @@ -200,7 +200,7 @@ msgid "&Help" msgstr "ヘルプ(&H)" msgid "&Documentation..." -msgstr "ドキュメント(&D)..." +msgstr "文書(&D)..." msgid "&About 86Box..." msgstr "86Boxのバージョン情報(&A)..." @@ -221,7 +221,7 @@ msgid "&Play" msgstr "再生(&P)" msgid "&Rewind to the beginning" -msgstr "冒頭に巻き戻す(&R)" +msgstr "先頭まで巻き戻す(&R)" msgid "&Fast forward to the end" msgstr "最後まで早送り(&F)" @@ -239,7 +239,7 @@ msgid "&Mute" msgstr "ミュート(&M)" msgid "E&mpty" -msgstr "空(&M)" +msgstr "なし(&M)" msgid "&Reload previous image" msgstr "前のイメージを再読み込み(&R)" @@ -299,7 +299,7 @@ msgid "Cancel" msgstr "キャンセル" msgid "Save these settings as &global defaults" -msgstr "これらの設定をグローバル既定値として保存する(&G)" +msgstr "これらの設定をグローバル既定値として保存(&G)" msgid "&Default" msgstr "既定値(&D)" @@ -320,7 +320,7 @@ msgid "Disk size:" msgstr "ディスクサイズ:" msgid "RPM mode:" -msgstr "回転数モード:" +msgstr "RPMモード:" msgid "Progress:" msgstr "進行状況:" @@ -332,10 +332,10 @@ msgid "Height:" msgstr "高さ:" msgid "Lock to this size" -msgstr "このサイズをロックする" +msgstr "サイズを固定" msgid "Machine type:" -msgstr "マシンタイプ:" +msgstr "マシン タイプ:" msgid "Machine:" msgstr "マシン:" @@ -353,7 +353,7 @@ msgid "FPU:" msgstr "FPU:" msgid "Wait states:" -msgstr "待機状態:" +msgstr "ウェイト ステート:" msgid "MB" msgstr "MB" @@ -365,13 +365,13 @@ msgid "Time synchronization" msgstr "時刻同期機能" msgid "Disabled" -msgstr "無効にする" +msgstr "無効" msgid "Enabled (local time)" -msgstr "有効にする (現地時間)" +msgstr "有効(現地時間)" msgid "Enabled (UTC)" -msgstr "有効にする (UTC)" +msgstr "有効(UTC)" msgid "Dynamic Recompiler" msgstr "動的リコンパイラ" @@ -407,16 +407,16 @@ msgid "Joystick 4..." msgstr "ジョイスティック4..." msgid "Sound card 1:" -msgstr "サウンドカード 1:" +msgstr "サウンドカード1:" msgid "Sound card 2:" -msgstr "サウンドカード 2:" +msgstr "サウンドカード2:" msgid "Sound card 3:" -msgstr "サウンドカード 3:" +msgstr "サウンドカード3:" msgid "Sound card 4:" -msgstr "サウンドカード 4:" +msgstr "サウンドカード4:" msgid "MIDI Out Device:" msgstr "MIDI出力デバイス:" @@ -431,22 +431,22 @@ msgid "Use FLOAT32 sound" msgstr "FLOAT32サウンドを使用する" msgid "FM synth driver" -msgstr "FMシンセドライバー" +msgstr "FMシンセ ドライバー" msgid "Nuked (more accurate)" -msgstr "Nuked (高精度化)" +msgstr "Nuked(高精度化)" msgid "YMFM (faster)" -msgstr "YMFM (より速く)" +msgstr "YMFM(より速く)" msgid "Network type:" -msgstr "ネットワークタイプ:" +msgstr "ネットワーク タイプ:" msgid "PCap device:" msgstr "PCapデバイス:" msgid "Network adapter:" -msgstr "ネットワークアダプター:" +msgstr "ネットワーク アダプター:" msgid "COM1 Device:" msgstr "COM1デバイス:" @@ -473,40 +473,40 @@ msgid "LPT4 Device:" msgstr "LPT4デバイス:" msgid "Serial port 1" -msgstr "シリアルポート1" +msgstr "シリアル ポート1" msgid "Serial port 2" -msgstr "シリアルポート2" +msgstr "シリアル ポート2" msgid "Serial port 3" -msgstr "シリアルポート3" +msgstr "シリアル ポート3" msgid "Serial port 4" -msgstr "シリアルポート4" +msgstr "シリアル ポート4" msgid "Parallel port 1" -msgstr "パラレルポート1" +msgstr "パラレル ポート1" msgid "Parallel port 2" -msgstr "パラレルポート2" +msgstr "パラレル ポート2" msgid "Parallel port 3" -msgstr "パラレルポート3" +msgstr "パラレル ポート3" msgid "Parallel port 4" -msgstr "パラレルポート4" +msgstr "パラレル ポート4" msgid "HD Controller:" -msgstr "HDコントローラー:" +msgstr "HDDコントローラー:" msgid "FD Controller:" -msgstr "FDコントローラー:" +msgstr "FDDコントローラー:" msgid "Tertiary IDE Controller" -msgstr "第三のIDEコントローラー" +msgstr "第三IDEコントローラー" msgid "Quaternary IDE Controller" -msgstr "第四のIDEコントローラー" +msgstr "第四IDEコントローラー" msgid "SCSI" msgstr "SCSI" @@ -527,7 +527,7 @@ msgid "Cassette" msgstr "カセット" msgid "Hard disks:" -msgstr "ハードディスク:" +msgstr "ハード ディスク:" msgid "&New..." msgstr "新規(&N)..." @@ -536,7 +536,7 @@ msgid "&Existing..." msgstr "既定(&E)..." msgid "&Remove" -msgstr "除去(&R)" +msgstr "削除(&R)" msgid "Bus:" msgstr "バス:" @@ -569,22 +569,22 @@ msgid "Image Format:" msgstr "イメージ形式:" msgid "Block Size:" -msgstr "ブロックサイズ:" +msgstr "ブロック サイズ:" msgid "Floppy drives:" -msgstr "フロッピードライブ:" +msgstr "フロッピー ドライブ:" msgid "Turbo timings" msgstr "高速タイミング" msgid "Check BPB" -msgstr "BPBをチェック" +msgstr "BPBチェック" msgid "CD-ROM drives:" msgstr "CD-ROMドライブ:" msgid "Earlier drive" -msgstr "アーリードライブ" +msgstr "先のドライブ" msgid "MO drives:" msgstr "光磁気ドライブ:" @@ -599,7 +599,7 @@ msgid "ISA RTC:" msgstr "ISA RTCカード:" msgid "ISA Memory Expansion" -msgstr "ISAメモリー拡張カード" +msgstr "ISAメモリ拡張カード" msgid "Card 1:" msgstr "カード1:" @@ -671,16 +671,16 @@ msgid "All images" msgstr "すべてのイメージ" msgid "Basic sector images" -msgstr "基本的なセクターイメージ" +msgstr "基本的なセクター イメージ" msgid "Surface images" msgstr "表面イメージ" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "roms/machinesディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" +msgstr "「roms/machines」ディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "roms/videoディレクトリにROMがないため、ビデオカード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" +msgstr "「roms/video」ディレクトリにROMがないため、ビデオ カード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" msgid "Machine" msgstr "マシン" @@ -698,22 +698,22 @@ msgid "Network" msgstr "ネットワーク" msgid "Ports (COM & LPT)" -msgstr "ポート (COM & LPT)" +msgstr "ポート (COM/LPT)" msgid "Storage controllers" -msgstr "ストレージコントローラ" +msgstr "ストレージ コントローラ" msgid "Hard disks" -msgstr "ハードディスク" +msgstr "ハード ディスク" msgid "Floppy & CD-ROM drives" msgstr "フロッピー/CD-ROMドライブ" msgid "Other removable devices" -msgstr "その他のリムーバブルデバイス" +msgstr "他のリムーバブル デバイス" msgid "Other peripherals" -msgstr "その他の周辺装置" +msgstr "他の周辺デバイス" msgid "Click to capture mouse" msgstr "クリックするとマウスをキャプチャします" @@ -722,7 +722,7 @@ msgid "Press F8+F12 to release mouse" msgstr "F8+F12キーでマウスを解放します" msgid "Press F8+F12 or middle button to release mouse" -msgstr "F8+F12キーまたは中ボタンでマウスを解放します" +msgstr "F8+F12キーまたはマウスの中ボタンを押してマウスを解放します" msgid "Bus" msgstr "バス" @@ -749,7 +749,7 @@ msgid "Default" msgstr "既定値" msgid "%i Wait state(s)" -msgstr "%iつの待機状態" +msgstr "%iつのウェイト ステート" msgid "Type" msgstr "タイプ" @@ -779,40 +779,40 @@ msgid "CH Flightstick Pro" msgstr "CH Flightstick Pro" msgid "Microsoft SideWinder Pad" -msgstr "Microsoft SideWinder Pad" +msgstr "Microsoft SideWinderパッド" msgid "Thrustmaster Flight Control System" -msgstr "Thrustmaster Flight Control System" +msgstr "Thrustmaster飛行制御システム" msgid "None" msgstr "なし" msgid "Unable to load keyboard accelerators." -msgstr "キーボードアクセラレータを読み込めません。" +msgstr "キーボード アクセラレータを読み込めません。" msgid "Unable to register raw input." -msgstr "生の入力が登録できません。" +msgstr "生入力が登録できません。" msgid "%u" msgstr "%u" msgid "%u MB (CHS: %i, %i, %i)" -msgstr "%u MB (CHS: %i, %i, %i)" +msgstr "%u MB (CHS値: %i、%i、%i)" msgid "Floppy %i (%s): %ls" msgstr "フロッピー %i (%s): %ls" msgid "Advanced sector images" -msgstr "アドバンスドセクターイメージ" +msgstr "アドバンスド セクター イメージ" msgid "Flux images" -msgstr "フラックスイメージ" +msgstr "Fluxイメージ" msgid "Unable to initialize SDL, SDL2.dll is required" msgstr "SDLが初期化できません。SDL2.dllが必要です" msgid "Are you sure you want to hard reset the emulated machine?" -msgstr "使用中のマシンをハードリセットしますか?" +msgstr "使用中のマシンをハード リセットしますか?" msgid "Are you sure you want to exit 86Box?" msgstr "86Boxを終了しますか?" @@ -842,7 +842,7 @@ msgid "Do you want to save the settings?" msgstr "設定を保存しますか?" msgid "This will hard reset the emulated machine." -msgstr "保存すると使用中のマシンがハードリセットされます。" +msgstr "使用中のマシンがハード リセットされます。" msgid "Save" msgstr "保存" @@ -878,10 +878,10 @@ msgid "libgs" msgstr "libgs" msgid " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files." -msgstr "PostScriptファイルをPDFに自動変換するにはlibgsが必要です。\n\n汎用PostScriptプリンターに送信されたドキュメントは、PostScript(.ps)ファイルとして保存されます。" +msgstr "PostScriptファイルをPDFに自動変換するにはlibgsが必要です。\n\n汎用PostScriptプリンターに送信された文書は、PostScript (.ps) ファイルとして保存されます。" msgid "Entering fullscreen mode" -msgstr "フルスクリーンに切り替えています" +msgstr "全画面モードを入力" msgid "Don't show this message again" msgstr "今後、このメッセージを表示しない" @@ -902,7 +902,7 @@ msgid "%hs Device Configuration" msgstr "%hs デバイスの設定" msgid "Monitor in sleep mode" -msgstr "モニターのスリープモード" +msgstr "モニターのスリー プモード" msgid "OpenGL Shaders" msgstr "OpenGLシェーダー" @@ -914,7 +914,7 @@ msgid "You are loading an unsupported configuration" msgstr "サポートされていない設定を読み込んでいます" msgid "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid." -msgstr "選択したマシンに基づくCPUタイプのフィルタリングは、このエミュレートされたマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。ただし、マシンのBIOSまたは他のソフトウェアとの互換性が失われる可能性があります。\n\nこの設定の有効化は公式サポートができません。また、バグレポートが無効として閉じられる場合があります。" +msgstr "選択したマシンに基づくCPUタイプのフィルター機能は、使用中のマシンでは無効になっています。\n\nこれにより、選択したマシンと互換性のないCPUが選択できます。しかし、マシンのBIOSや他のソフトウェアと互換性がない場合があります。\n\nこの設定を有効にすることは公式にはサポートされておらず、バグレポートは無効として中止される可能性があります。" msgid "Continue" msgstr "続行" @@ -923,13 +923,13 @@ msgid "Cassette: %s" msgstr "カセット: %s" msgid "Cassette images" -msgstr "カセットイメージ" +msgstr "カセット イメージ" msgid "Cartridge %i: %ls" msgstr "カートリッジ %i: %ls" msgid "Cartridge images" -msgstr "カートリッジイメージ" +msgstr "カートリッジ イメージ" msgid "Error initializing renderer" msgstr "レンダラーの初期化エラー" @@ -950,13 +950,13 @@ msgid "Press Ctrl+Alt+Esc" msgstr "Ctrl+Alt+Escを押し" msgid "Hard reset" -msgstr "ハードリセット" +msgstr "ハード リセット" msgid "ACPI shutdown" msgstr "ACPIシャットダウン" msgid "Hard disk (%s)" -msgstr "ハードディスク (%s)" +msgstr "ハード ディスク (%s)" msgid "%01i:%01i" msgstr "%01i:%01i" @@ -986,7 +986,7 @@ msgid "Disk images cannot be larger than 127 GB." msgstr "ディスクイメージは127GBを超えることはできません。" msgid "Hard disk images" -msgstr "ハードディスクイメージ" +msgstr "ハード ディスク イメージ" msgid "Unable to read file" msgstr "ファイルの読み込みができません" @@ -998,16 +998,16 @@ msgid "HDI or HDX images with a sector size other than 512 are not supported." msgstr "512以外のセクタサイズを持つHDIまたはHDXイメージはサポートされていません。" msgid "USB is not yet supported" -msgstr "USBはまだサポートされていません" +msgstr "USBはまだ非対応です" msgid "Disk image file already exists" -msgstr "ディスクイメージファイルが既に存在します" +msgstr "ディスク イメージ ファイルが既に存在します" msgid "Please specify a valid file name." msgstr "有効なファイル名を指定してください。" msgid "Disk image created" -msgstr "ディスクイメージが作成されました" +msgstr "ディスク イメージが作成されました" msgid "Make sure the file exists and is readable." msgstr "ファイルが存在し、読み取り可能であることを確認してください。" @@ -1016,16 +1016,16 @@ msgid "Make sure the file is being saved to a writable directory." msgstr "ファイルが書き込み可能なディレクトリに保存されていることを確認してください。" msgid "Disk image too large" -msgstr "ディスクイメージのサイズが大きすぎます" +msgstr "ディスク イメージのサイズが大きすぎます" msgid "Remember to partition and format the newly-created drive." msgstr "新規ドライブをパーティション分割し、フォーマットを必ずしといてください。" msgid "The selected file will be overwritten. Are you sure you want to use it?" -msgstr "選択したファイルが上書きされます。使っていいですか?" +msgstr "選択したファイルは上書きされます。よろしいですか?" msgid "Unsupported disk image" -msgstr "サポートされていないディスクイメージ" +msgstr "非対応のディスク イメージジ" msgid "Overwrite" msgstr "上書き" @@ -1043,19 +1043,19 @@ msgid "HDX image (.hdx)" msgstr "HDXイメージ (.hdx)" msgid "Fixed-size VHD (.vhd)" -msgstr "VHD(容量固定)(.vhd)" +msgstr "VHD (容量固定) (.vhd)" msgid "Dynamic-size VHD (.vhd)" -msgstr "VHD(容量可変)(.vhd)" +msgstr "VHD (容量可変) (.vhd)" msgid "Differencing VHD (.vhd)" -msgstr "VHD(差分)(.vhd)" +msgstr "VHD (差分) (.vhd)" msgid "Large blocks (2 MB)" -msgstr "大型ブロック (2 MB)" +msgstr "大きなブロック (2 MB)" msgid "Small blocks (512 KB)" -msgstr "小型ブロック (512 KB)" +msgstr "小さなブロック (512 KB)" msgid "VHD files" msgstr "VHDファイル" @@ -1064,13 +1064,13 @@ msgid "Select the parent VHD" msgstr "親VHDの選択" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "親イメージがディファレンシングイメージの作成の後に修正した可能性があります。\n\nイメージファイルの移動、コピーまたはこのディスクを作成したプログラムにバグが発生した可能性があります。\n\nタイムスタンプを修正しますか?" +msgstr "親イメージが差分イメージの作成の後に変更される可能性があります。\n\nイメージ ファイルが移動またはコピーされたか、イメージ ファイルを作成したプログラムにバグが発生した可能性があります。\n\nタイムスタンプを修正しますか?" msgid "Parent and child disk timestamps do not match" -msgstr "親ディスクと子ディスクのタイムスタンプが一致しません" +msgstr "親ディスクと子ディスクのタイムス タンプが一致しません" msgid "Could not fix VHD timestamp." -msgstr "VHD のタイムスタンプを修正できませんでした。" +msgstr "VHD のタイム スタンプを修正できません。" msgid "%01i:%02i" msgstr "%01i:%02i" @@ -1181,31 +1181,31 @@ msgid "5.25\" 1.3 GB" msgstr "5.25\" 1.3 GB" msgid "Perfect RPM" -msgstr "規定の回転数" +msgstr "規定のRPM" msgid "1% below perfect RPM" -msgstr "1%低い回転数" +msgstr "1%低いRPM" msgid "1.5% below perfect RPM" -msgstr "1.5%低い回転数" +msgstr "1.5%低いRPM" msgid "2% below perfect RPM" -msgstr "2%低い回転数" +msgstr "2%低いRPM" msgid "(System Default)" msgstr "(システム既定値)" msgid "Failed to initialize network driver" -msgstr "ネットワークドライバの初期化に失敗しました" +msgstr "ネットワーク ドライバの初期化に失敗しました" msgid "The network configuration will be switched to the null driver" -msgstr "ネットワーク設定がヌル・ドライバに切り替わる" +msgstr "ネットワーク設定がヌル ドライバに切り替えられます" msgid "Mouse sensitivity:" msgstr "マウスの感度:" msgid "Select media images from program working directory" -msgstr "プログラムの作業ディレクトリからメディアイメージを選択する" +msgstr "プログラムの作業ディレクトリからメディア イメージを選択してください" msgid "PIT mode:" msgstr "PITモード:" From ec6de3421c486a5ab83c3eaffa31659008961eee Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 6 Oct 2023 20:40:36 +0800 Subject: [PATCH 76/82] Updated Simp. Chinese translation (Qt) --- src/qt/languages/zh-CN.po | 68 +++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index 3598da0fc..b6d9e5c97 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -206,13 +206,13 @@ msgid "&About 86Box..." msgstr "关于 86Box(&A)..." msgid "&New image..." -msgstr "新建镜像(&N)..." +msgstr "新建映像(&N)..." msgid "&Existing image..." -msgstr "打开已存在的镜像(&E)..." +msgstr "打开已存在的映像(&E)..." msgid "Existing image (&Write-protected)..." -msgstr "打开已存在的镜像并写保护(&W)..." +msgstr "打开已存在的映像并写保护(&W)..." msgid "&Record" msgstr "录制(&R)" @@ -230,7 +230,7 @@ msgid "E&ject" msgstr "弹出(&J)" msgid "&Image..." -msgstr "镜像(&I)..." +msgstr "映像(&I)..." msgid "E&xport to 86F..." msgstr "导出为 86F 格式(&x)..." @@ -242,7 +242,7 @@ msgid "E&mpty" msgstr "空置驱动器(&M)" msgid "&Reload previous image" -msgstr "载入上一个镜像(&R)" +msgstr "载入上一个映像(&R)" msgid "&Folder..." msgstr "文件夹(&F)..." @@ -284,7 +284,7 @@ msgid "Sound Gain" msgstr "音量增益" msgid "New Image" -msgstr "新建镜像" +msgstr "新建映像" msgid "Settings" msgstr "设置" @@ -533,7 +533,7 @@ msgid "&New..." msgstr "新建(&N)..." msgid "&Existing..." -msgstr "已有镜像(&E)..." +msgstr "已有映像(&E)..." msgid "&Remove" msgstr "移除(&R)" @@ -566,7 +566,7 @@ msgid "Type:" msgstr "类型:" msgid "Image Format:" -msgstr "镜像格式:" +msgstr "映像格式:" msgid "Block Size:" msgstr "块大小:" @@ -599,7 +599,7 @@ msgid "ISA RTC:" msgstr "ISA 实时时钟:" msgid "ISA Memory Expansion" -msgstr "ISA 内存扩充" +msgstr "ISA 内存扩展" msgid "Card 1:" msgstr "扩展卡 1:" @@ -647,10 +647,10 @@ msgid "ZIP %03i %i (%s): %ls" msgstr "ZIP %03i %i (%s): %ls" msgid "ZIP images" -msgstr "ZIP 镜像" +msgstr "ZIP 映像" msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory." -msgstr "86Box 找不到任何可用的 ROM 镜像。\n\n请下载ROM 包并将其解压到 \"roms\" 文件夹。" +msgstr "86Box 找不到任何可用的 ROM 映像。\n\n请下载ROM 包并将其解压到 \"roms\" 文件夹中。" msgid "(empty)" msgstr "(空)" @@ -668,13 +668,13 @@ msgid "Off" msgstr "关" msgid "All images" -msgstr "所有镜像" +msgstr "所有映像" msgid "Basic sector images" -msgstr "基本扇区镜像" +msgstr "基本扇区映像" msgid "Surface images" -msgstr "表面镜像" +msgstr "表面映像" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." msgstr "由于 roms/machines 文件夹中缺少合适的 ROM,机型 \"%hs\" 不可用。将切换到其他可用机型。" @@ -803,10 +803,10 @@ msgid "Floppy %i (%s): %ls" msgstr "软盘 %i (%s): %ls" msgid "Advanced sector images" -msgstr "高级扇区镜像" +msgstr "高级扇区映像" msgid "Flux images" -msgstr "Flux 镜像" +msgstr "Flux 映像" msgid "Unable to initialize SDL, SDL2.dll is required" msgstr "无法初始化 SDL,需要 SDL2.dll" @@ -824,7 +824,7 @@ msgid "MO %i (%ls): %ls" msgstr "磁光盘 %i (%ls): %ls" msgid "MO images" -msgstr "磁光盘镜像" +msgstr "磁光盘映像" msgid "Welcome to 86Box!" msgstr "欢迎使用 86Box!" @@ -896,7 +896,7 @@ msgid "Don't reset" msgstr "不重置" msgid "CD-ROM images" -msgstr "光盘镜像" +msgstr "光盘映像" msgid "%hs Device Configuration" msgstr "%hs 设备配置" @@ -923,13 +923,13 @@ msgid "Cassette: %s" msgstr "磁带: %s" msgid "Cassette images" -msgstr "磁带镜像" +msgstr "磁带映像" msgid "Cartridge %i: %ls" msgstr "卡带 %i: %ls" msgid "Cartridge images" -msgstr "卡带镜像" +msgstr "卡带映像" msgid "Error initializing renderer" msgstr "初始化渲染器时出错" @@ -980,13 +980,13 @@ msgid "Add Existing Hard Disk" msgstr "添加已存在的硬盘" msgid "HDI disk images cannot be larger than 4 GB." -msgstr "HDI 磁盘镜像不能超过 4 GB。" +msgstr "HDI 磁盘映像不能超过 4 GB。" msgid "Disk images cannot be larger than 127 GB." -msgstr "磁盘镜像不能超过 127 GB。" +msgstr "磁盘映像不能超过 127 GB。" msgid "Hard disk images" -msgstr "硬盘镜像" +msgstr "硬盘映像" msgid "Unable to read file" msgstr "无法读取文件" @@ -995,19 +995,19 @@ msgid "Unable to write file" msgstr "无法写入文件" msgid "HDI or HDX images with a sector size other than 512 are not supported." -msgstr "不支持非 512 字节扇区大小的 HDI 或 HDX 镜像。" +msgstr "不支持非 512 字节扇区大小的 HDI 或 HDX 映像。" msgid "USB is not yet supported" msgstr "尚未支持 USB" msgid "Disk image file already exists" -msgstr "磁盘镜像文件已存在" +msgstr "磁盘映像文件已存在" msgid "Please specify a valid file name." msgstr "请指定有效的文件名。" msgid "Disk image created" -msgstr "已创建磁盘镜像" +msgstr "已创建磁盘映像" msgid "Make sure the file exists and is readable." msgstr "请确定此文件已存在并可读取。" @@ -1016,16 +1016,16 @@ msgid "Make sure the file is being saved to a writable directory." msgstr "请确定此文件保存在可写目录中。" msgid "Disk image too large" -msgstr "磁盘镜像太大" +msgstr "磁盘映像太大" msgid "Remember to partition and format the newly-created drive." -msgstr "请记得为新创建的镜像分区并格式化。" +msgstr "请记得为新创建的映像分区并格式化。" msgid "The selected file will be overwritten. Are you sure you want to use it?" msgstr "选定的文件将被覆盖。确定继续使用此文件吗?" msgid "Unsupported disk image" -msgstr "不支持的磁盘镜像" +msgstr "不支持的磁盘映像" msgid "Overwrite" msgstr "覆盖" @@ -1034,13 +1034,13 @@ msgid "Don't overwrite" msgstr "不覆盖" msgid "Raw image (.img)" -msgstr "原始镜像 (.img)" +msgstr "原始映像 (.img)" msgid "HDI image (.hdi)" -msgstr "HDI 镜像 (.hdi)" +msgstr "HDI 映像 (.hdi)" msgid "HDX image (.hdx)" -msgstr "HDX 镜像 (.hdx)" +msgstr "HDX 映像 (.hdx)" msgid "Fixed-size VHD (.vhd)" msgstr "固定大小 VHD (.vhd)" @@ -1064,7 +1064,7 @@ msgid "Select the parent VHD" msgstr "选择父 VHD 文件" msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?" -msgstr "父映像可能在创建差异镜像后被修改。\n\n如果镜像文件被移动或复制,或创建此磁盘的程序中存在错误,也可能发生这种情况。\n\n是否需要修复时间戳?" +msgstr "父映像可能在创建差异映像后被修改。\n\n如果映像文件被移动或复制,或创建此磁盘的程序中存在错误,也可能发生这种情况。\n\n是否需要修复时间戳?" msgid "Parent and child disk timestamps do not match" msgstr "父盘与子盘的时间戳不匹配" @@ -1205,7 +1205,7 @@ msgid "Mouse sensitivity:" msgstr "鼠标敏感度:" msgid "Select media images from program working directory" -msgstr "从程序工作目录中选择介质镜像" +msgstr "从程序工作目录中选择介质映像" msgid "PIT mode:" msgstr "PIT 模式:" From e45d7a88f6333c5751003bd22a33129f086634ab Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 6 Oct 2023 09:30:17 -0400 Subject: [PATCH 77/82] Remove additional ) --- src/win/win_settings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/win/win_settings.c b/src/win/win_settings.c index bd539a1a8..139c387a8 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -748,7 +748,7 @@ win_settings_machine_recalc_cpu(HWND hdlg) cpu_flags = temp_cpu_f->cpus[temp_cpu].cpu_flags; if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) && (cpu_flags & CPU_REQUIRES_DYNAREC)) fatal("Attempting to select a CPU that requires the recompiler and does not support it at the same time\n"); - if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) || ((cpu_flags & CPU_REQUIRES_DYNAREC) && !cpu_override))) { + if (!(cpu_flags & CPU_SUPPORTS_DYNAREC) || ((cpu_flags & CPU_REQUIRES_DYNAREC) && !cpu_override)) { if (!(cpu_flags & CPU_SUPPORTS_DYNAREC)) temp_dynarec = 0; if (cpu_flags & CPU_REQUIRES_DYNAREC) From 4f5c832f7c0de0ad7e3c9a10bc982b5fdc398903 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 7 Oct 2023 05:13:38 +0200 Subject: [PATCH 78/82] PC87306 GPIO handler fixes. --- src/sio/sio_pc87306.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/sio/sio_pc87306.c b/src/sio/sio_pc87306.c index f725e11fc..5b3e23f31 100644 --- a/src/sio/sio_pc87306.c +++ b/src/sio/sio_pc87306.c @@ -40,6 +40,7 @@ typedef struct pc87306_t { uint8_t tries; uint8_t regs[29]; uint8_t gpio[2]; + uint16_t gpioba; int cur_reg; fdc_t *fdc; serial_t *uart[2]; @@ -65,22 +66,35 @@ pc87306_gpio_read(uint16_t port, void *priv) static void pc87306_gpio_remove(pc87306_t *dev) { - io_removehandler(dev->regs[0x0f] << 2, 0x0001, - pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); - io_removehandler((dev->regs[0x0f] << 2) + 1, 0x0001, - pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + if (dev->gpioba != 0x0000) { + io_removehandler(dev->gpioba, 0x0001, + pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + io_removehandler(dev->gpioba + 1, 0x0001, + pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + } } static void pc87306_gpio_init(pc87306_t *dev) { - if ((dev->regs[0x12]) & 0x10) - io_sethandler(dev->regs[0x0f] << 2, 0x0001, - pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + dev->gpioba = ((uint16_t) dev->regs[0x0f]) << 2; - if ((dev->regs[0x12]) & 0x20) - io_sethandler((dev->regs[0x0f] << 2) + 1, 0x0001, - pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + if (dev->gpioba != 0x0000) { + if ((dev->regs[0x12]) & 0x10) + io_sethandler(dev->regs[0x0f] << 2, 0x0001, + pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + + if ((dev->regs[0x12]) & 0x20) + io_sethandler((dev->regs[0x0f] << 2) + 1, 0x0001, + pc87306_gpio_read, NULL, NULL, pc87306_gpio_write, NULL, NULL, dev); + } +} + +static void +pc87306_gpio_handler(pc87306_t *dev) +{ + pc87306_gpio_remove(dev); + pc87306_gpio_init(dev); } static void @@ -315,13 +329,13 @@ pc87306_write(uint16_t port, uint8_t val, void *priv) break; case 0xF: if (valxor) - pc87306_gpio_init(dev); + pc87306_gpio_handler(dev); break; case 0x12: if (valxor & 0x01) nvr_wp_set(!!(val & 0x01), 0, dev->nvr); if (valxor & 0x30) - pc87306_gpio_init(dev); + pc87306_gpio_handler(dev); break; case 0x19: if (valxor) { From 990073854aec1db43f8d78c8e48202c579bc7ea4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 7 Oct 2023 05:38:08 +0200 Subject: [PATCH 79/82] Each machine entry now has a GPIO handler function, in preparation for the moving of the GPIO handling of Intel boards to the PC87306 Super I/O chip where it should be. --- src/include/86box/machine.h | 11 +- src/machine/machine_table.c | 1936 ++++++++++++++++++----------------- 2 files changed, 977 insertions(+), 970 deletions(-) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 5cc83ef1c..fbd715e89 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -299,10 +299,10 @@ typedef struct _machine_ { uint32_t type; uintptr_t chipset; int (*init)(const struct _machine_ *); + uint32_t (*gpio_handler)(uint8_t write, uint32_t val); uintptr_t pad; uintptr_t pad0; uintptr_t pad1; - uintptr_t pad2; const machine_cpu_t cpu; uintptr_t bus_flags; uintptr_t flags; @@ -375,10 +375,11 @@ extern int machine_has_mouse(void); extern int machine_is_sony(void); extern uint8_t machine_get_p1(void); -extern void machine_load_p1(int m); -extern uint32_t machine_get_gpi(void); -extern void machine_load_gpi(int m); -extern void machine_set_gpi(uint32_t gpi); +extern void machine_load_p1(void); +extern uint32_t machine_get_gpio(void); +extern void machine_load_gpio(void); +extern void machine_set_gpio(uint32_t gpio); +extern uint32_t machine_handle_gpio(uint8_t write, uint32_t val); /* Initialization functions for boards and systems. */ extern void machine_common_init(const machine_t *); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 724fb09f8..460d1a748 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -207,10 +207,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -245,10 +245,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pc82_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -283,10 +283,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pcjr_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -321,10 +321,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -359,10 +359,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt86_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -397,10 +397,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_americxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -435,10 +435,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_amixt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -473,10 +473,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_bw230_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -511,10 +511,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_mpc1600_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -549,10 +549,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_compaq_portable_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -587,10 +587,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_dtk_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -625,10 +625,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pcspirit_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -663,10 +663,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_genxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -701,10 +701,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_top88_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -739,10 +739,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_super16t_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -777,10 +777,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_super16te_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -815,10 +815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_jukopc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -853,10 +853,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_kaypropc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -891,10 +891,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_micoms_xl7turbo_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -929,10 +929,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc500_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -967,10 +967,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc700_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1005,10 +1005,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc4i_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1043,10 +1043,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m19_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1081,10 +1081,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_openxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1119,10 +1119,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pb8810_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1157,10 +1157,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_p3105_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1195,10 +1195,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pxxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1233,10 +1233,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pravetz16_imko4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1271,10 +1271,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_sansx16_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1309,10 +1309,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_europc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1347,10 +1347,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pcxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1385,10 +1385,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1423,10 +1423,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy1000hx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1461,10 +1461,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_t1000_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1499,10 +1499,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_vendex_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1538,10 +1538,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_laserxt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1578,10 +1578,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_xi8088_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1616,10 +1616,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_znic_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1654,10 +1654,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z151_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1692,10 +1692,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z159_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1730,10 +1730,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z184_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1768,10 +1768,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_GC100A, .init = machine_xt_p3120_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1806,10 +1806,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_v20xt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK(CPU_8088), @@ -1846,10 +1846,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc1512_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1884,10 +1884,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc1640_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1922,10 +1922,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc2086_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1960,10 +1960,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc3086_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1998,10 +1998,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc200_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2036,10 +2036,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ppc512_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2074,10 +2074,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_compaq_deskpro_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2112,10 +2112,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_elt_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2150,10 +2150,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m24_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2189,10 +2189,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m240_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2227,10 +2227,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_iskra3104_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2265,10 +2265,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy1000sl2_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2303,10 +2303,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_t1200_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2341,10 +2341,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_v86p_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2381,10 +2381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_lxt3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2423,10 +2423,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibm_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2462,10 +2462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2011_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2501,10 +2501,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_m30_286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -2540,10 +2540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmxt286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2579,10 +2579,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatami_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2619,10 +2619,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_cmdpc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2658,10 +2658,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableii_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2697,10 +2697,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableiii_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2736,10 +2736,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_mr286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2775,10 +2775,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pc8_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2815,10 +2815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_m290_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2856,10 +2856,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_openat_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2896,10 +2896,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatpx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2935,10 +2935,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatquadtel_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2974,10 +2974,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_siemens_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3013,10 +3013,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_t3100e_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3052,10 +3052,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_quadt286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3091,10 +3091,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_tg286m_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3130,10 +3130,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_ami_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3169,10 +3169,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_3302_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3208,10 +3208,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_px286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3247,10 +3247,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gw286ct_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3286,10 +3286,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gdc212m_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3325,10 +3325,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_award286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3364,10 +3364,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_super286tr_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3403,10 +3403,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4200p_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3442,10 +3442,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4216p_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3481,10 +3481,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4620p_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3520,10 +3520,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_deskmaster286_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3561,10 +3561,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_50_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -3600,10 +3600,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_60_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -3642,10 +3642,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2121_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3681,10 +3681,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pc916sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3720,10 +3720,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_quadt386sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3759,10 +3759,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_arb1374_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3798,10 +3798,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_sbc350a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3839,10 +3839,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_flytech386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3879,10 +3879,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_mr1217_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3918,10 +3918,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_pja511m_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_M6117, .block = CPU_BLOCK_NONE, @@ -3957,10 +3957,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_prox1332_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_M6117, .block = CPU_BLOCK_NONE, @@ -3998,10 +3998,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_HT18, .init = machine_at_ama932j_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4039,10 +4039,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_adi386sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4077,10 +4077,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_shuttle386sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4118,10 +4118,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_cmdsl386sx16_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4157,10 +4157,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4196,10 +4196,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_OPTI_291, .init = machine_at_awardsx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4237,10 +4237,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_cmdsl386sx25_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4278,10 +4278,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_dataexpert386sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4317,10 +4317,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_spc6033p_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4357,10 +4357,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_kmxc02_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4396,10 +4396,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_WD76C10, .init = machine_at_wd76c10_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4437,10 +4437,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_55sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4476,10 +4476,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_65sx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4518,10 +4518,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486SLC, .chipset = MACHINE_CHIPSET_OPTI_283, .init = machine_at_rycleopardlx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -4558,10 +4558,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_acc386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4597,10 +4597,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_ecs386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4636,10 +4636,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_spc6000a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4675,10 +4675,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4713,10 +4713,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_05_1988_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4751,10 +4751,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_portableiii386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4790,10 +4790,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_micronics386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4829,10 +4829,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_SIS_310, .init = machine_at_asus386_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4870,10 +4870,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL, .block = CPU_BLOCK_NONE, @@ -4912,10 +4912,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -4951,10 +4951,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_ami_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -4990,10 +4990,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_mr_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5029,10 +5029,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5068,10 +5068,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_axx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5113,10 +5113,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_ALI_M1429, .init = machine_at_ali1429_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5154,10 +5154,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_CT_CS4031, .init = machine_at_cs4031_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5194,10 +5194,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_mvi486_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5233,10 +5233,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_isa486_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5272,10 +5272,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_sis401_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5312,10 +5312,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_460, .init = machine_at_av4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5351,10 +5351,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_px471_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5393,10 +5393,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VIA_VT82C495, .init = machine_at_486vchd_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5434,10 +5434,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C480, .init = machine_at_vect486vl_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5473,10 +5473,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C481, .init = machine_at_d824_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5512,10 +5512,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK(CPU_i486SX, CPU_i486SX_SLENH, CPU_Am486SX, CPU_Cx486S), @@ -5554,10 +5554,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_pb410a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5593,10 +5593,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_acera1g_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5632,10 +5632,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_winbios1429_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5671,10 +5671,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_decpclpv_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5710,10 +5710,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_acerv10_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5750,10 +5750,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_valuepoint433_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5791,10 +5791,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_win471_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5833,10 +5833,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_CONTAQ_82C597, .init = machine_at_greenb_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5872,10 +5872,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5911,10 +5911,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5950,10 +5950,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_mr_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5989,10 +5989,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vi15g_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6028,10 +6028,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vli486sv2g_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6067,10 +6067,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_dtk486_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6106,10 +6106,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_ami471_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6145,10 +6145,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_tg486g_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6186,10 +6186,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_ms4134_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6225,10 +6225,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_tg486gp_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6264,10 +6264,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_sbc490_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6304,10 +6304,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_abpb4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6347,10 +6347,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_win486pci_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6390,10 +6390,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_ms4145_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6429,10 +6429,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_tf486_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6468,10 +6468,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_pc330_6573_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3_PC330, .block = CPU_BLOCK_NONE, @@ -6507,10 +6507,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_486ap4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6546,10 +6546,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_ninja_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6585,10 +6585,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_486sp3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6624,10 +6624,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_alfredo_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6664,10 +6664,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420ZX, .init = machine_at_486sp3g_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6703,10 +6703,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_pci400cb_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6742,10 +6742,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_g486ip_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6781,10 +6781,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_486sp3c_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6820,10 +6820,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_ls486e_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6859,10 +6859,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_m4li_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6898,10 +6898,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_r418_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6938,10 +6938,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4saw2_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK(CPU_i486SX, CPU_i486DX, CPU_Am486SX, CPU_Am486DX), @@ -6978,10 +6978,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4dps_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7017,10 +7017,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_atc1415_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7056,10 +7056,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_ecs486_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7095,10 +7095,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_actionpc2600_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7135,10 +7135,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_m919_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7174,10 +7174,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_spc7700plw_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7213,10 +7213,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_hot433_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7252,10 +7252,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_g486vpa_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7291,10 +7291,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_486vipio2_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7334,10 +7334,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CLIENT, .init = machine_at_itoxstar_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7374,10 +7374,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1423c_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7414,10 +7414,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1479_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7454,10 +7454,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ELITE, .init = machine_at_pcm9340_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7494,10 +7494,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ATLAS, .init = machine_at_pcm5330_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7540,10 +7540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_excaliburpci_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7579,10 +7579,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_p5mp3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7618,10 +7618,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_dellxp60_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7657,10 +7657,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_opti560l_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7698,10 +7698,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_ambradp60_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7737,10 +7737,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_valuepointp60_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7776,10 +7776,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_revenge_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7815,10 +7815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_586mc1_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7854,10 +7854,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_pb520r_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7897,10 +7897,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_excalibur_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7938,10 +7938,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_p5vl_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7979,10 +7979,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_excaliburpci2_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -8018,10 +8018,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p5sp4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -8060,10 +8060,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_plato_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8100,10 +8100,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_ambradp90_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8139,10 +8139,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_430nx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8180,10 +8180,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_acerv30_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8219,10 +8219,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_apollo_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8260,10 +8260,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_zappa_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8299,10 +8299,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_powermatev_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8338,10 +8338,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_hawk_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8381,10 +8381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_pat54pv_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_K5, CPU_5K86), @@ -8421,10 +8421,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_hot543_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8462,10 +8462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p54sp4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_K5, CPU_5K86), @@ -8501,10 +8501,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_sq588_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_PENTIUMMMX), @@ -8540,10 +8540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p54sps_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_PENTIUMMMX), @@ -8582,10 +8582,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_p54tp4xe_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8621,10 +8621,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_p54tp4xe_mr_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8660,10 +8660,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_exp8551_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8701,10 +8701,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_gw2katx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8741,10 +8741,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_vectra54_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8782,10 +8782,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_thor_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8823,10 +8823,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_mrthor_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8864,10 +8864,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_endeavor_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8903,10 +8903,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_ms5119_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8943,10 +8943,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_pb640_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8982,10 +8982,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_mb500n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9021,10 +9021,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_fmb_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), @@ -9064,10 +9064,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_acerm3a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9103,10 +9103,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_ap53_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9142,10 +9142,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_8500tuc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9182,10 +9182,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p55t2s_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9223,10 +9223,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p5vxb_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9264,10 +9264,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_gw2kte_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9305,10 +9305,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_SIS_5511, .init = machine_at_ap5s_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9344,10 +9344,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_SIS_5511, .init = machine_at_ms5124_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9386,10 +9386,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_acerv35n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_Cx6x86MX), @@ -9425,10 +9425,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p55t2p4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9464,10 +9464,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_m7shi_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9505,10 +9505,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_tc430hx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9545,10 +9545,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_infinia7200_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9586,10 +9586,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_equium5200_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9628,10 +9628,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_pcv90_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9667,10 +9667,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p65up5_cp55t2d_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9708,10 +9708,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_ap5vm_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9747,10 +9747,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p55tvp4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9787,10 +9787,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_5ivg_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9826,10 +9826,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_8500tvxa_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9866,10 +9866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_presario2240_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9905,10 +9905,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_presario4500_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9944,10 +9944,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p55va_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9983,10 +9983,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_brio80xx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10024,10 +10024,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_pb680_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10063,10 +10063,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_pb810_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10103,10 +10103,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_mb520n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10143,10 +10143,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_i430vx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10184,10 +10184,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_nupro592_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10223,10 +10223,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_tx97_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10263,10 +10263,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_an430tx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10303,10 +10303,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_ym430tx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10342,10 +10342,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_mb540n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10381,10 +10381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_56a5_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10420,10 +10420,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_p5mms98_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10462,10 +10462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_VPX, .init = machine_at_ficva502_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10504,10 +10504,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, .init = machine_at_ficpa2012_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10545,10 +10545,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_SIS_5571, .init = machine_at_r534f_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10584,10 +10584,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_SIS_5571, .init = machine_at_ms5146_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10625,10 +10625,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, .init = machine_at_m560_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10664,10 +10664,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, .init = machine_at_ms5164_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10706,10 +10706,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_p5a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10746,10 +10746,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_m579_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10785,10 +10785,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_5aa_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10824,10 +10824,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_5ax_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10866,10 +10866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_ax59pro_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10906,10 +10906,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_mvp3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10946,10 +10946,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_ficva503a_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10986,10 +10986,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_5emapro_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -11028,10 +11028,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_450KX, .init = machine_at_p6rp4_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11069,10 +11069,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_acerv60n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11108,10 +11108,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_p65up5_cp6nd_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11148,10 +11148,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_8600ttc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11186,10 +11186,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_686nx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11227,10 +11227,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_ap440fx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11268,10 +11268,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_vs440fx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11307,10 +11307,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_m6mi_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11348,10 +11348,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_mb600n_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11390,10 +11390,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_PRO_II, .init = machine_at_m729_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11431,10 +11431,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_p65up5_cpknd_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11471,10 +11471,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_kn97_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11513,10 +11513,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_lx6_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11553,10 +11553,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_spitfire_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11595,10 +11595,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440EX, .init = machine_at_p6i440e2_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11637,10 +11637,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p2bls_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11677,10 +11677,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p3bf_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11717,10 +11717,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_bf6_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11757,10 +11757,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_ax6bc_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11797,10 +11797,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_686bx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11837,10 +11837,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_vei8_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11877,10 +11877,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_s1846_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11917,10 +11917,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p6sba_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11959,10 +11959,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_ms6168_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11999,10 +11999,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_borapro_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12041,10 +12041,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, .init = machine_at_atc6310bxii_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12083,10 +12083,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, .init = machine_at_ficka6130_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12123,10 +12123,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p3v133_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12163,10 +12163,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_p3v4x_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12203,10 +12203,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_gt694va_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12246,10 +12246,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_fw6400gx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12289,10 +12289,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_s1857_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12330,10 +12330,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p6bat_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12373,10 +12373,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_6gxu_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12413,10 +12413,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_s2dge_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12456,10 +12456,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_s370slm_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12498,10 +12498,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_awo671r_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12538,10 +12538,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_cubx_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12578,10 +12578,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_ambx133_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12620,10 +12620,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_63a1_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12662,10 +12662,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, .init = machine_at_atc7020bxii_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12704,10 +12704,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, .init = machine_at_apas3_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12744,10 +12744,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p6bap_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12784,10 +12784,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_6via90ap_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12824,10 +12824,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_cuv4xls_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12866,10 +12866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_MISC, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_vpc2007_init, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK(CPU_PENTIUM2, CPU_CYRIX3S), @@ -12905,10 +12905,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_NONE, .chipset = MACHINE_CHIPSET_NONE, .init = NULL, + .gpio_handler = NULL, .pad = 0, - .pad0 = 0, - .pad1 = MACHINE_AVAILABLE, - .pad2 = 0, + .pad0 = MACHINE_AVAILABLE, + .pad1 = 0, .cpu = { .package = 0, .block = CPU_BLOCK_NONE, @@ -12952,7 +12952,7 @@ machine_get_p1(void) } void -machine_load_p1(UNUSED(int m)) +machine_load_p1(void) { machine_p1 = machines[machine].kbc_p1; } @@ -12964,7 +12964,7 @@ machine_get_gpio(void) } void -machine_load_gpio(UNUSED(int m)) +machine_load_gpio(void) { machine_gpio = machines[machine].gpio; } @@ -12975,6 +12975,12 @@ machine_set_gpio(uint32_t gpio) machine_gpio = gpio; } +uint32_t +machine_handle_gpio(uint8_t write, uint32_t val) +{ + return machines[machine].gpio_handler(write, val); +} + int machine_count(void) { From 0438ed32a5c9168e22823ad84f83680a570699dd Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 7 Oct 2023 06:04:35 +0200 Subject: [PATCH 80/82] Missing functions and function pointers for P1, GPIO, and ACPI GPIO, also changed kbc_p1 to uint8_t because P1 (and P2) function like any other (GP) I/O port - open bus is 0xff with clear bits being those that are pulled down. --- src/include/86box/machine.h | 23 +- src/machine/machine_table.c | 2014 ++++++++++++++++++----------------- 2 files changed, 1053 insertions(+), 984 deletions(-) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index fbd715e89..6d893e8ac 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -299,10 +299,10 @@ typedef struct _machine_ { uint32_t type; uintptr_t chipset; int (*init)(const struct _machine_ *); + uint8_t (*p1_handler)(uint8_t write, uint8_t val); uint32_t (*gpio_handler)(uint8_t write, uint32_t val); - uintptr_t pad; - uintptr_t pad0; - uintptr_t pad1; + uintptr_t available_flag; + uint32_t (*gpio_acpi_handler)(uint8_t write, uint32_t val); const machine_cpu_t cpu; uintptr_t bus_flags; uintptr_t flags; @@ -314,10 +314,7 @@ typedef struct _machine_ { #else void *kbc_device; #endif /* EMU_DEVICE_H */ - /* Bits: - 7-0 Set bits are forced set on P1 (no forced set = 0x00); - 15-8 Clear bits are forced clear on P1 (no foced clear = 0xff). */ - uint16_t kbc_p1; + uint8_t kbc_p1; uint32_t gpio; uint32_t gpio_acpi; #ifdef EMU_DEVICE_H @@ -375,11 +372,17 @@ extern int machine_has_mouse(void); extern int machine_is_sony(void); extern uint8_t machine_get_p1(void); -extern void machine_load_p1(void); +extern void machine_set_p1(uint8_t val); +extern void machine_init_p1(void); +extern uint8_t machine_handle_p1(uint8_t write, uint8_t val); extern uint32_t machine_get_gpio(void); -extern void machine_load_gpio(void); -extern void machine_set_gpio(uint32_t gpio); +extern void machine_set_gpio(uint32_t val); +extern void machine_init_gpio(void); extern uint32_t machine_handle_gpio(uint8_t write, uint32_t val); +extern uint32_t machine_get_gpio_acpi(void); +extern void machine_set_gpio_acpi(uint32_t gpio_val); +extern void machine_init_gpio_acpi(void); +extern uint32_t machine_handle_gpio_acpi(uint8_t write, uint32_t val); /* Initialization functions for boards and systems. */ extern void machine_common_init(const machine_t *); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 460d1a748..256904d67 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -207,10 +207,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -245,10 +245,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pc82_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -283,10 +283,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_pcjr_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -321,10 +321,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -359,10 +359,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt86_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -397,10 +397,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_americxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -435,10 +435,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_amixt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -473,10 +473,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_bw230_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -511,10 +511,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_mpc1600_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -549,10 +549,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_compaq_portable_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -587,10 +587,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_dtk_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -625,10 +625,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pcspirit_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -663,10 +663,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_genxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -701,10 +701,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_top88_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -739,10 +739,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_super16t_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -777,10 +777,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_super16te_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -815,10 +815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_jukopc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -853,10 +853,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_kaypropc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -891,10 +891,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_micoms_xl7turbo_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -929,10 +929,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc500_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -967,10 +967,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc700_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1005,10 +1005,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pc4i_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1043,10 +1043,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m19_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1081,10 +1081,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_openxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1119,10 +1119,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pb8810_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1157,10 +1157,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_p3105_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1195,10 +1195,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pxxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1233,10 +1233,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pravetz16_imko4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1271,10 +1271,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_sansx16_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1309,10 +1309,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_europc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1347,10 +1347,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_pcxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1385,10 +1385,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1423,10 +1423,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy1000hx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088_EUROPC, .block = CPU_BLOCK_NONE, @@ -1461,10 +1461,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_t1000_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1499,10 +1499,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_vendex_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1538,10 +1538,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_laserxt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1578,10 +1578,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_xi8088_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1616,10 +1616,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_znic_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1654,10 +1654,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z151_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1692,10 +1692,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z159_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1730,10 +1730,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_z184_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1768,10 +1768,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_GC100A, .init = machine_xt_p3120_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK_NONE, @@ -1806,10 +1806,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_v20xt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8088, .block = CPU_BLOCK(CPU_8088), @@ -1846,10 +1846,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc1512_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1884,10 +1884,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc1640_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1922,10 +1922,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc2086_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1960,10 +1960,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc3086_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -1998,10 +1998,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_pc200_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2036,10 +2036,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ppc512_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2074,10 +2074,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_compaq_deskpro_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2112,10 +2112,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_elt_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2150,10 +2150,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m24_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2189,10 +2189,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_m240_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2227,10 +2227,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_iskra3104_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2265,10 +2265,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_tandy1000sl2_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2303,10 +2303,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_xt_t1200_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2341,10 +2341,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_v86p_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2381,10 +2381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8086, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_lxt3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_8086, .block = CPU_BLOCK_NONE, @@ -2423,10 +2423,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibm_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2462,10 +2462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2011_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2501,10 +2501,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_m30_286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -2540,10 +2540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmxt286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2579,10 +2579,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatami_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2619,10 +2619,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_cmdpc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2658,10 +2658,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableii_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2697,10 +2697,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableiii_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2736,10 +2736,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_mr286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2775,10 +2775,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pc8_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2815,10 +2815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_m290_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2856,10 +2856,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_openat_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2896,10 +2896,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatpx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2935,10 +2935,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatquadtel_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -2974,10 +2974,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_siemens_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3013,10 +3013,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_t3100e_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3052,10 +3052,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_quadt286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3091,10 +3091,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_tg286m_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3130,10 +3130,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_ami_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3169,10 +3169,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_3302_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3208,10 +3208,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_px286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3247,10 +3247,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gw286ct_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3286,10 +3286,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gdc212m_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3325,10 +3325,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_award286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3364,10 +3364,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_super286tr_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3403,10 +3403,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4200p_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3442,10 +3442,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4216p_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3481,10 +3481,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4620p_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3520,10 +3520,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_deskmaster286_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286, .block = CPU_BLOCK_NONE, @@ -3561,10 +3561,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_50_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -3600,10 +3600,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_60_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_286 | CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -3642,10 +3642,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2121_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3681,10 +3681,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pc916sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3720,10 +3720,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_quadt386sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3759,10 +3759,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_arb1374_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3798,10 +3798,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_sbc350a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3839,10 +3839,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_flytech386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3879,10 +3879,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_mr1217_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -3918,10 +3918,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_pja511m_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_M6117, .block = CPU_BLOCK_NONE, @@ -3957,10 +3957,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_prox1332_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_M6117, .block = CPU_BLOCK_NONE, @@ -3998,10 +3998,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_HT18, .init = machine_at_ama932j_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4039,10 +4039,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_adi386sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4077,10 +4077,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_shuttle386sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4118,10 +4118,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_cmdsl386sx16_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4157,10 +4157,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4196,10 +4196,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_OPTI_291, .init = machine_at_awardsx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4237,10 +4237,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_cmdsl386sx25_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4278,10 +4278,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_dataexpert386sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4317,10 +4317,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_spc6033p_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4357,10 +4357,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_kmxc02_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4396,10 +4396,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_WD76C10, .init = machine_at_wd76c10_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4437,10 +4437,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_55sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4476,10 +4476,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_65sx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386SX, .block = CPU_BLOCK_NONE, @@ -4518,10 +4518,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486SLC, .chipset = MACHINE_CHIPSET_OPTI_283, .init = machine_at_rycleopardlx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_486SLC_IBM, .block = CPU_BLOCK_NONE, @@ -4558,10 +4558,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_acc386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4597,10 +4597,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_ecs386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4636,10 +4636,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_spc6000a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4675,10 +4675,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4713,10 +4713,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_05_1988_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4751,10 +4751,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_portableiii386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4790,10 +4790,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_micronics386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4829,10 +4829,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_SIS_310, .init = machine_at_asus386_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX, .block = CPU_BLOCK_NONE, @@ -4870,10 +4870,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL, .block = CPU_BLOCK_NONE, @@ -4912,10 +4912,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -4951,10 +4951,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_ami_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -4990,10 +4990,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495, .init = machine_at_opti495_mr_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5029,10 +5029,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5068,10 +5068,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_axx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5113,10 +5113,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_ALI_M1429, .init = machine_at_ali1429_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5154,10 +5154,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_CT_CS4031, .init = machine_at_cs4031_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5194,10 +5194,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_mvi486_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5233,10 +5233,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_isa486_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5272,10 +5272,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_sis401_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5312,10 +5312,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_460, .init = machine_at_av4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5351,10 +5351,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_px471_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5393,10 +5393,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VIA_VT82C495, .init = machine_at_486vchd_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5434,10 +5434,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C480, .init = machine_at_vect486vl_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5473,10 +5473,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C481, .init = machine_at_d824_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK_NONE, @@ -5512,10 +5512,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET1, .block = CPU_BLOCK(CPU_i486SX, CPU_i486SX_SLENH, CPU_Am486SX, CPU_Cx486S), @@ -5554,10 +5554,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_pb410a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5593,10 +5593,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_acera1g_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5632,10 +5632,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_winbios1429_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5671,10 +5671,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_decpclpv_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5710,10 +5710,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_acerv10_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5750,10 +5750,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_valuepoint433_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5791,10 +5791,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_win471_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5833,10 +5833,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_CONTAQ_82C597, .init = machine_at_greenb_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5872,10 +5872,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5911,10 +5911,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5950,10 +5950,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_mr_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -5989,10 +5989,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vi15g_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6028,10 +6028,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vli486sv2g_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6067,10 +6067,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_dtk486_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6106,10 +6106,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_ami471_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6145,10 +6145,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_tg486g_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6186,10 +6186,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_ms4134_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6225,10 +6225,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_tg486gp_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6264,10 +6264,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_sbc490_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6304,10 +6304,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_abpb4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6347,10 +6347,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_win486pci_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6390,10 +6390,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_ms4145_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6429,10 +6429,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_tf486_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6468,10 +6468,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_pc330_6573_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3_PC330, .block = CPU_BLOCK_NONE, @@ -6507,10 +6507,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_486ap4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6546,10 +6546,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_ninja_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6585,10 +6585,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_486sp3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6624,10 +6624,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_alfredo_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6664,10 +6664,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_INTEL_420ZX, .init = machine_at_486sp3g_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6703,10 +6703,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_pci400cb_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6742,10 +6742,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_g486ip_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6781,10 +6781,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_486sp3c_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6820,10 +6820,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_ls486e_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6859,10 +6859,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_m4li_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6898,10 +6898,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_r418_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -6938,10 +6938,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4saw2_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK(CPU_i486SX, CPU_i486DX, CPU_Am486SX, CPU_Am486DX), @@ -6978,10 +6978,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4dps_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7017,10 +7017,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_atc1415_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7056,10 +7056,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_ecs486_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7095,10 +7095,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_actionpc2600_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7135,10 +7135,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_m919_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7174,10 +7174,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_spc7700plw_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7213,10 +7213,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_hot433_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7252,10 +7252,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_g486vpa_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7291,10 +7291,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_486vipio2_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET3, .block = CPU_BLOCK_NONE, @@ -7334,10 +7334,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CLIENT, .init = machine_at_itoxstar_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7374,10 +7374,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1423c_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7414,10 +7414,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1479_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7454,10 +7454,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ELITE, .init = machine_at_pcm9340_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7494,10 +7494,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ATLAS, .init = machine_at_pcm5330_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_STPC, .block = CPU_BLOCK_NONE, @@ -7540,10 +7540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_excaliburpci_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7579,10 +7579,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_p5mp3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7618,10 +7618,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_dellxp60_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7657,10 +7657,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_opti560l_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7698,10 +7698,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_ambradp60_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7737,10 +7737,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_valuepointp60_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7776,10 +7776,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_revenge_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7815,10 +7815,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_586mc1_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7854,10 +7854,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_INTEL_430LX, .init = machine_at_pb520r_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7897,10 +7897,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_excalibur_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7938,10 +7938,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_p5vl_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -7979,10 +7979,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_excaliburpci2_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -8018,10 +8018,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET4, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p5sp4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET4, .block = CPU_BLOCK_NONE, @@ -8060,10 +8060,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_plato_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8100,10 +8100,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_ambradp90_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8139,10 +8139,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430NX, .init = machine_at_430nx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8180,10 +8180,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_acerv30_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8219,10 +8219,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_apollo_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8260,10 +8260,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_zappa_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8299,10 +8299,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_powermatev_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8338,10 +8338,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_hawk_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8381,10 +8381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_pat54pv_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_K5, CPU_5K86), @@ -8421,10 +8421,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_OPTI_547_597, .init = machine_at_hot543_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8462,10 +8462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p54sp4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_K5, CPU_5K86), @@ -8501,10 +8501,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_sq588_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_PENTIUMMMX), @@ -8540,10 +8540,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_SIS_501, .init = machine_at_p54sps_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, CPU_BLOCK(CPU_PENTIUMMMX), @@ -8582,10 +8582,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_p54tp4xe_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8621,10 +8621,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_p54tp4xe_mr_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8660,10 +8660,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_exp8551_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8701,10 +8701,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_gw2katx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8741,10 +8741,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_vectra54_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8782,10 +8782,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_thor_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8823,10 +8823,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_mrthor_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8864,10 +8864,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_endeavor_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8903,10 +8903,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_ms5119_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8943,10 +8943,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_pb640_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -8982,10 +8982,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_mb500n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9021,10 +9021,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_fmb_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_WINCHIP, CPU_WINCHIP2, CPU_Cx6x86, CPU_Cx6x86L, CPU_Cx6x86MX), @@ -9064,10 +9064,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_acerm3a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9103,10 +9103,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_ap53_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9142,10 +9142,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_8500tuc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9182,10 +9182,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p55t2s_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9223,10 +9223,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p5vxb_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9264,10 +9264,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_gw2kte_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9305,10 +9305,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_SIS_5511, .init = machine_at_ap5s_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9344,10 +9344,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_SIS_5511, .init = machine_at_ms5124_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9386,10 +9386,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_acerv35n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK(CPU_Cx6x86MX), @@ -9425,10 +9425,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p55t2p4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9464,10 +9464,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_m7shi_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9505,10 +9505,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_tc430hx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9545,10 +9545,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_infinia7200_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9586,10 +9586,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_equium5200_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9628,10 +9628,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_pcv90_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9667,10 +9667,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430HX, .init = machine_at_p65up5_cp55t2d_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9708,10 +9708,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_ap5vm_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9747,10 +9747,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p55tvp4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9787,10 +9787,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_5ivg_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9826,10 +9826,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_8500tvxa_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9866,10 +9866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_presario2240_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9905,10 +9905,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_presario4500_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9944,10 +9944,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_p55va_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -9983,10 +9983,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_brio80xx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10024,10 +10024,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_pb680_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10063,10 +10063,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_pb810_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10103,10 +10103,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_mb520n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10143,10 +10143,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_i430vx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10184,10 +10184,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_nupro592_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10223,10 +10223,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_tx97_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10263,10 +10263,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_an430tx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10303,10 +10303,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_ym430tx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10342,10 +10342,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_mb540n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10381,10 +10381,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_56a5_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10420,10 +10420,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_INTEL_430TX, .init = machine_at_p5mms98_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10462,10 +10462,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_VPX, .init = machine_at_ficva502_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10504,10 +10504,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_VP3, .init = machine_at_ficpa2012_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10545,10 +10545,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_SIS_5571, .init = machine_at_r534f_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10584,10 +10584,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_SIS_5571, .init = machine_at_ms5146_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10625,10 +10625,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, .init = machine_at_m560_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10664,10 +10664,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_IV_PLUS, .init = machine_at_ms5164_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10706,10 +10706,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_p5a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10746,10 +10746,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_m579_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10785,10 +10785,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_5aa_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10824,10 +10824,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_V, .init = machine_at_5ax_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10866,10 +10866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_ax59pro_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10906,10 +10906,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_mvp3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10946,10 +10946,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_ficva503a_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -10986,10 +10986,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKETS7, .chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3, .init = machine_at_5emapro_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, .block = CPU_BLOCK_NONE, @@ -11028,10 +11028,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_450KX, .init = machine_at_p6rp4_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11069,10 +11069,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_acerv60n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11108,10 +11108,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_p65up5_cp6nd_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11148,10 +11148,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_8600ttc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11186,10 +11186,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_686nx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11227,10 +11227,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_ap440fx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11268,10 +11268,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_vs440fx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11307,10 +11307,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_m6mi_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11348,10 +11348,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET8, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_mb600n_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET8, .block = CPU_BLOCK_NONE, @@ -11390,10 +11390,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_ALI_ALADDIN_PRO_II, .init = machine_at_m729_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11431,10 +11431,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_p65up5_cpknd_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11471,10 +11471,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440FX, .init = machine_at_kn97_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11513,10 +11513,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_lx6_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11553,10 +11553,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_spitfire_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11595,10 +11595,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440EX, .init = machine_at_p6i440e2_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11637,10 +11637,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p2bls_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11677,10 +11677,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p3bf_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11717,10 +11717,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_bf6_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11757,10 +11757,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_ax6bc_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11797,10 +11797,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_686bx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11837,10 +11837,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_vei8_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11877,10 +11877,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_s1846_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11917,10 +11917,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_p6sba_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11959,10 +11959,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_ms6168_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -11999,10 +11999,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_borapro_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12041,10 +12041,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, .init = machine_at_atc6310bxii_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12083,10 +12083,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, .init = machine_at_ficka6130_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12123,10 +12123,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p3v133_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12163,10 +12163,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_p3v4x_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12203,10 +12203,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_gt694va_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK_NONE, @@ -12246,10 +12246,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_fw6400gx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12289,10 +12289,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_s1857_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12330,10 +12330,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT1_370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p6bat_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12373,10 +12373,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_6gxu_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12413,10 +12413,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SLOT2, .chipset = MACHINE_CHIPSET_INTEL_440GX, .init = machine_at_s2dge_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT2, .block = CPU_BLOCK_NONE, @@ -12456,10 +12456,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440LX, .init = machine_at_s370slm_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12498,10 +12498,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_awo671r_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12538,10 +12538,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_cubx_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12578,10 +12578,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_ambx133_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12620,10 +12620,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_INTEL_440ZX, .init = machine_at_63a1_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12662,10 +12662,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_SMSC_VICTORYBX_66, .init = machine_at_atc7020bxii_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12704,10 +12704,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO, .init = machine_at_apas3_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12744,10 +12744,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133, .init = machine_at_p6bap_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12784,10 +12784,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_6via90ap_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12824,10 +12824,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_SOCKET370, .chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133A, .init = machine_at_cuv4xls_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET370, .block = CPU_BLOCK_NONE, @@ -12866,10 +12866,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_MISC, .chipset = MACHINE_CHIPSET_INTEL_440BX, .init = machine_at_vpc2007_init, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SLOT1, .block = CPU_BLOCK(CPU_PENTIUM2, CPU_CYRIX3S), @@ -12905,10 +12905,10 @@ const machine_t machines[] = { .type = MACHINE_TYPE_NONE, .chipset = MACHINE_CHIPSET_NONE, .init = NULL, + .p1_handler = NULL, .gpio_handler = NULL, - .pad = 0, - .pad0 = MACHINE_AVAILABLE, - .pad1 = 0, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, .cpu = { .package = 0, .block = CPU_BLOCK_NONE, @@ -12942,8 +12942,10 @@ const machine_t machines[] = { /* Saved copies - jumpers get applied to these. We use also machine_gpio to store IBM PC/XT jumpers as they need more than one byte. */ -static uint16_t machine_p1; +static uint8_t machine_p1; + static uint32_t machine_gpio; +static uint32_t machine_gpio_acpi; uint8_t machine_get_p1(void) @@ -12952,7 +12954,29 @@ machine_get_p1(void) } void -machine_load_p1(void) +machine_set_p1(uint8_t val) +{ + machine_p1 = machines[machine].kbc_p1 & val; +} + + +uint8_t +machine_handle_p1(uint8_t write, uint8_t val) +{ + uint8_t ret = 0xff; + + if (machines[machine].p1_handler) + ret = machines[machine].p1_handler(write, val); + else { + if (write) + machine_p1 = machines[machine].kbc_p1 & val; + else + ret = machine_p1; + } +} + +void +machine_init_p1(void) { machine_p1 = machines[machine].kbc_p1; } @@ -12964,21 +12988,63 @@ machine_get_gpio(void) } void -machine_load_gpio(void) +machine_set_gpio(uint32_t val) { - machine_gpio = machines[machine].gpio; -} - -void -machine_set_gpio(uint32_t gpio) -{ - machine_gpio = gpio; + machine_gpio = machines[machine].gpio & val; } uint32_t machine_handle_gpio(uint8_t write, uint32_t val) { - return machines[machine].gpio_handler(write, val); + uint32_t ret = 0xffffffff; + + if (machines[machine].gpio_handler) + ret = machines[machine].gpio_handler(write, val); + else { + if (write) + machine_gpio = machines[machine].gpio & val; + else + ret = machine_gpio; + } +} + +void +machine_init_gpio(void) +{ + machine_gpio = machines[machine].gpio; +} + +uint32_t +machine_get_gpio_acpi(void) +{ + return machine_gpio_acpi; +} + +void +machine_set_gpio_acpi(uint32_t val) +{ + machine_gpio_acpi = machines[machine].gpio_acpi & val; +} + +uint32_t +machine_handle_gpio_acpi(uint8_t write, uint32_t val) +{ + uint32_t ret = 0xffffffff; + + if (machines[machine].gpio_acpi_handler) + ret = machines[machine].gpio_acpi_handler(write, val); + else { + if (write) + machine_gpio_acpi = machines[machine].gpio_acpi & val; + else + ret = machine_gpio_acpi; + } +} + +void +machine_init_gpio_acpi(void) +{ + machine_gpio_acpi = machines[machine].gpio_acpi; } int From c5c10a995b1c646b9daef5679234f15b1a4ff72f Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 7 Oct 2023 17:34:28 +0200 Subject: [PATCH 81/82] Fixed some warnings and properly initialized .gpio_acpi for all machines. --- src/machine/machine_table.c | 1495 +++++++++++++++++++++-------------- 1 file changed, 911 insertions(+), 584 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 256904d67..6a30110b1 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -230,8 +230,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -268,8 +269,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc82_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -306,8 +308,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = NULL, /* TODO: No specific kbd_device yet */ - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -344,8 +347,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -382,8 +386,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt86_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -420,8 +425,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -458,8 +464,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -496,8 +503,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -534,8 +542,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc82_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -572,8 +581,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_compaq_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -610,8 +620,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -648,8 +659,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc82_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -686,8 +698,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -724,8 +737,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -762,8 +776,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -800,8 +815,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -838,8 +854,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -876,8 +893,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -914,8 +932,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -952,8 +971,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -990,8 +1010,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1028,8 +1049,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1066,8 +1088,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_olivetti_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1104,8 +1127,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1142,8 +1166,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1180,8 +1205,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1218,8 +1244,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1256,8 +1283,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pravetz_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1294,8 +1322,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1332,8 +1361,9 @@ const machine_t machines[] = { }, .nvrmask = 15, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1370,8 +1400,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1408,8 +1439,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_tandy_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1446,8 +1478,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_tandy_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1484,8 +1517,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = &keyboard_xt_t1x00_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1522,8 +1556,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1561,8 +1596,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1601,8 +1637,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = &keyboard_ps2_xi8088_device, - .kbc_p1 = 0xff04, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = &xi8088_device, .fdc_device = NULL, .sio_device = NULL, @@ -1639,8 +1676,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1677,8 +1715,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_zenith_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1715,8 +1754,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_zenith_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1753,8 +1793,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_zenith_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1791,8 +1832,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_pc_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1829,8 +1871,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1869,8 +1912,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1907,8 +1951,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1945,8 +1990,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -1983,8 +2029,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2021,8 +2068,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2059,8 +2107,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2097,8 +2146,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_compaq_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2135,8 +2185,9 @@ const machine_t machines[] = { }, .nvrmask = 0x3f, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2173,8 +2224,9 @@ const machine_t machines[] = { }, .nvrmask = 15, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2212,8 +2264,9 @@ const machine_t machines[] = { }, .nvrmask = 15, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff04, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2250,8 +2303,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xtclone_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2288,8 +2342,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = NULL /* TODO: No specific kbd_device yet */, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2326,8 +2381,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = &keyboard_xt_t1x00_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2364,8 +2420,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = &keyboard_xt_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2404,8 +2461,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = &keyboard_xt_lxt3_device, - .kbc_p1 = 0xff00, + .kbc_p1 = 0xff, .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2446,8 +2504,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2485,8 +2544,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2524,8 +2584,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2563,8 +2624,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2602,8 +2664,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2642,8 +2705,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2681,8 +2745,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2720,8 +2785,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2759,8 +2825,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2798,8 +2865,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2838,8 +2906,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2879,8 +2948,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2919,8 +2989,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2958,8 +3029,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -2997,8 +3069,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3036,8 +3109,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3075,8 +3149,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3114,8 +3189,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3153,8 +3229,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3192,8 +3269,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3231,8 +3309,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3270,8 +3349,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3309,8 +3389,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3348,8 +3429,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3387,8 +3469,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3426,8 +3509,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3465,8 +3549,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3504,8 +3589,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3543,8 +3629,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3584,8 +3671,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3623,8 +3711,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3665,8 +3754,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3704,8 +3794,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3743,8 +3834,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3782,8 +3874,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3821,8 +3914,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3862,8 +3956,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3902,8 +3997,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3941,8 +4037,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -3980,8 +4077,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4021,8 +4119,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4062,8 +4161,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4100,8 +4200,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4141,8 +4242,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4180,8 +4282,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4219,8 +4322,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4260,8 +4364,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4301,8 +4406,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4340,8 +4446,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4380,8 +4487,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4419,8 +4527,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4460,8 +4569,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4499,8 +4609,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4541,8 +4652,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4581,8 +4693,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4620,8 +4733,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4659,8 +4773,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4698,8 +4813,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4736,8 +4852,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4774,8 +4891,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4813,8 +4931,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4852,8 +4971,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4893,8 +5013,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4935,8 +5056,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -4974,8 +5096,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5013,8 +5136,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5052,8 +5176,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5091,8 +5216,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5136,8 +5262,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5177,8 +5304,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5217,8 +5345,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5256,8 +5385,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5295,8 +5425,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5335,8 +5466,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5374,8 +5506,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5416,8 +5549,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5457,8 +5591,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5496,8 +5631,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5535,8 +5671,9 @@ const machine_t machines[] = { }, .nvrmask = 63, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5577,8 +5714,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5616,8 +5754,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5655,8 +5794,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5694,8 +5834,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5733,8 +5874,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5773,8 +5915,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5814,8 +5957,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5856,8 +6000,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5895,8 +6040,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5934,8 +6080,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -5973,8 +6120,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6012,8 +6160,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6051,8 +6200,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6090,8 +6240,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6129,8 +6280,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6168,8 +6320,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6209,8 +6362,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6248,8 +6402,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6287,8 +6442,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6327,8 +6483,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6370,8 +6527,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6413,8 +6571,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6452,8 +6611,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6491,8 +6651,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6530,8 +6691,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6569,8 +6731,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6608,8 +6771,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6647,8 +6811,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6687,8 +6852,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6726,8 +6892,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6765,8 +6932,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6804,8 +6972,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6843,8 +7012,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6882,8 +7052,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6921,8 +7092,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -6961,8 +7133,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7001,8 +7174,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7040,8 +7214,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7079,8 +7254,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7118,8 +7294,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7158,8 +7335,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7197,8 +7375,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7236,8 +7415,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7275,8 +7455,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7314,8 +7495,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7357,8 +7539,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7397,8 +7580,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7437,8 +7621,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7477,8 +7662,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7517,8 +7703,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7563,8 +7750,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7602,8 +7790,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7641,8 +7830,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7680,8 +7870,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7721,8 +7912,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7760,8 +7952,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7799,8 +7992,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7838,8 +8032,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7877,8 +8072,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7920,8 +8116,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -7961,8 +8158,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8002,8 +8200,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8041,8 +8240,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8083,8 +8283,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8123,8 +8324,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8162,8 +8364,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8203,8 +8406,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8242,8 +8446,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8283,8 +8488,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8322,8 +8528,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8361,8 +8568,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8404,8 +8612,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8444,8 +8653,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8485,8 +8695,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8524,8 +8735,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8563,8 +8775,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = &keyboard_at_ami_device, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8605,8 +8818,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8644,8 +8858,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8683,8 +8898,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8724,8 +8940,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8764,8 +8981,9 @@ const machine_t machines[] = { }, .nvrmask = 511, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8805,8 +9023,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8846,8 +9065,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8887,8 +9107,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8926,8 +9147,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -8966,8 +9188,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9005,8 +9228,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9044,8 +9268,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9087,8 +9312,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9126,8 +9352,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9165,8 +9392,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9205,8 +9433,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9246,8 +9475,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9287,8 +9517,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9328,8 +9559,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9367,8 +9599,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9409,8 +9642,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9448,8 +9682,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9487,8 +9722,9 @@ const machine_t machines[] = { }, .nvrmask = 511, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9528,8 +9764,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9568,8 +9805,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9609,8 +9847,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9651,8 +9890,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9690,8 +9930,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9731,8 +9972,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9770,8 +10012,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9810,8 +10053,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9849,8 +10093,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9889,8 +10134,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9928,8 +10174,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -9967,8 +10214,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10006,8 +10254,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10047,8 +10296,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10086,8 +10336,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10126,8 +10377,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10166,8 +10418,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10207,8 +10460,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10246,8 +10500,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10286,8 +10541,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10326,8 +10582,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10365,8 +10622,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10404,8 +10662,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10443,8 +10702,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10485,8 +10745,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10527,8 +10788,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10568,8 +10830,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10607,8 +10870,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10648,8 +10912,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10687,8 +10952,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10729,8 +10995,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10769,8 +11036,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10808,8 +11076,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10847,8 +11116,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10889,8 +11159,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10929,8 +11200,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -10969,8 +11241,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11009,8 +11282,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11051,8 +11325,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11092,8 +11367,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11131,8 +11407,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11171,8 +11448,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11209,8 +11487,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11250,8 +11529,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11291,8 +11571,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11330,8 +11611,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11371,8 +11653,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11413,8 +11696,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11454,8 +11738,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11494,8 +11779,9 @@ const machine_t machines[] = { }, .nvrmask = 127, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11536,8 +11822,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11576,8 +11863,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11618,8 +11906,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11660,8 +11949,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11700,8 +11990,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11740,8 +12031,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11780,8 +12072,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11820,8 +12113,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11860,8 +12154,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11900,8 +12195,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11940,8 +12236,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -11982,8 +12279,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12022,8 +12320,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12064,8 +12363,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12106,8 +12406,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12146,8 +12447,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12186,8 +12488,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12226,8 +12529,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12269,8 +12573,9 @@ const machine_t machines[] = { }, .nvrmask = 511, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12312,8 +12617,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12353,8 +12659,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12396,8 +12703,9 @@ const machine_t machines[] = { }, .nvrmask = 511, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12436,8 +12744,9 @@ const machine_t machines[] = { }, .nvrmask = 511, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12479,8 +12788,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12521,8 +12831,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12561,8 +12872,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12601,8 +12913,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12643,8 +12956,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12685,8 +12999,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12727,8 +13042,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12767,8 +13083,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12807,8 +13124,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12847,8 +13165,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12889,8 +13208,9 @@ const machine_t machines[] = { }, .nvrmask = 255, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12928,8 +13248,9 @@ const machine_t machines[] = { }, .nvrmask = 0, .kbc_device = NULL, - .kbc_p1 = 0, - .gpio = 0, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, .device = NULL, .fdc_device = NULL, .sio_device = NULL, @@ -12973,6 +13294,8 @@ machine_handle_p1(uint8_t write, uint8_t val) else ret = machine_p1; } + + return ret; } void @@ -13006,6 +13329,8 @@ machine_handle_gpio(uint8_t write, uint32_t val) else ret = machine_gpio; } + + return ret; } void @@ -13039,6 +13364,8 @@ machine_handle_gpio_acpi(uint8_t write, uint32_t val) else ret = machine_gpio_acpi; } + + return ret; } void From 9d1d69394ba85fda2f7adac681c1fce5d04460a9 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 7 Oct 2023 17:54:08 +0200 Subject: [PATCH 82/82] Fixed mistakes (including two compile-breaking ones) in ja-JP.po. --- src/qt/languages/ja-JP.po | 70 +++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index bbde070da..f516a78ab 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -107,13 +107,13 @@ msgid "Hi&DPI scaling" msgstr "HiDPIスケーリング(&D)" msgid "&Fullscreen\tCtrl+Alt+PgUp" -msgstr 全画面表示(&F)\tCtrl+Alt+PgUp" +msgstr "全画面表示(&F)\tCtrl+Alt+PgUp" msgid "Fullscreen &stretch mode" msgstr "全画面の拡大表示モード(&S)" msgid "&Full screen stretch" -msgstr ""ストレッチ モード(&F)" +msgstr "全画面の拡大表示(&F)" msgid "&4:3" msgstr "4:3(&4)" @@ -353,7 +353,7 @@ msgid "FPU:" msgstr "FPU:" msgid "Wait states:" -msgstr "ウェイト ステート:" +msgstr "ウェイトステート:" msgid "MB" msgstr "MB" @@ -431,7 +431,7 @@ msgid "Use FLOAT32 sound" msgstr "FLOAT32サウンドを使用する" msgid "FM synth driver" -msgstr "FMシンセ ドライバー" +msgstr "FMシンセドライバー" msgid "Nuked (more accurate)" msgstr "Nuked(高精度化)" @@ -446,7 +446,7 @@ msgid "PCap device:" msgstr "PCapデバイス:" msgid "Network adapter:" -msgstr "ネットワーク アダプター:" +msgstr "ネットワークアダプター:" msgid "COM1 Device:" msgstr "COM1デバイス:" @@ -473,28 +473,28 @@ msgid "LPT4 Device:" msgstr "LPT4デバイス:" msgid "Serial port 1" -msgstr "シリアル ポート1" +msgstr "シリアルポート1" msgid "Serial port 2" -msgstr "シリアル ポート2" +msgstr "シリアルポート2" msgid "Serial port 3" -msgstr "シリアル ポート3" +msgstr "シリアルポート3" msgid "Serial port 4" -msgstr "シリアル ポート4" +msgstr "シリアルポート4" msgid "Parallel port 1" -msgstr "パラレル ポート1" +msgstr "パラレルポート1" msgid "Parallel port 2" -msgstr "パラレル ポート2" +msgstr "パラレルポート2" msgid "Parallel port 3" -msgstr "パラレル ポート3" +msgstr "パラレルポート3" msgid "Parallel port 4" -msgstr "パラレル ポート4" +msgstr "パラレルポート4" msgid "HD Controller:" msgstr "HDDコントローラー:" @@ -569,10 +569,10 @@ msgid "Image Format:" msgstr "イメージ形式:" msgid "Block Size:" -msgstr "ブロック サイズ:" +msgstr "ブロックサイズ:" msgid "Floppy drives:" -msgstr "フロッピー ドライブ:" +msgstr "フロッピードライブ:" msgid "Turbo timings" msgstr "高速タイミング" @@ -671,16 +671,16 @@ msgid "All images" msgstr "すべてのイメージ" msgid "Basic sector images" -msgstr "基本的なセクター イメージ" +msgstr "基本的なセクターイメージ" msgid "Surface images" msgstr "表面イメージ" msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine." -msgstr "「roms/machines」ディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" +msgstr "roms/machines ディレクトリにROMがないため、マシン「%hs」は使用できません。使用可能なマシンに切り替えます。" msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card." -msgstr "「roms/video」ディレクトリにROMがないため、ビデオ カード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" +msgstr "roms/video ディレクトリにROMがないため、ビデオ カード「%hs」は使用できません。使用可能なビデオカードに切り替えます。" msgid "Machine" msgstr "マシン" @@ -788,7 +788,7 @@ msgid "None" msgstr "なし" msgid "Unable to load keyboard accelerators." -msgstr "キーボード アクセラレータを読み込めません。" +msgstr "キーボードアクセラレータを読み込めません。" msgid "Unable to register raw input." msgstr "生入力が登録できません。" @@ -803,7 +803,7 @@ msgid "Floppy %i (%s): %ls" msgstr "フロッピー %i (%s): %ls" msgid "Advanced sector images" -msgstr "アドバンスド セクター イメージ" +msgstr "アドバンスドセクターイメージ" msgid "Flux images" msgstr "Fluxイメージ" @@ -842,7 +842,7 @@ msgid "Do you want to save the settings?" msgstr "設定を保存しますか?" msgid "This will hard reset the emulated machine." -msgstr "使用中のマシンがハード リセットされます。" +msgstr "使用中のマシンがハードリセットされます。" msgid "Save" msgstr "保存" @@ -902,7 +902,7 @@ msgid "%hs Device Configuration" msgstr "%hs デバイスの設定" msgid "Monitor in sleep mode" -msgstr "モニターのスリー プモード" +msgstr "モニターのスリープモード" msgid "OpenGL Shaders" msgstr "OpenGLシェーダー" @@ -923,13 +923,13 @@ msgid "Cassette: %s" msgstr "カセット: %s" msgid "Cassette images" -msgstr "カセット イメージ" +msgstr "カセットイメージ" msgid "Cartridge %i: %ls" msgstr "カートリッジ %i: %ls" msgid "Cartridge images" -msgstr "カートリッジ イメージ" +msgstr "カートリッジイメージ" msgid "Error initializing renderer" msgstr "レンダラーの初期化エラー" @@ -950,13 +950,13 @@ msgid "Press Ctrl+Alt+Esc" msgstr "Ctrl+Alt+Escを押し" msgid "Hard reset" -msgstr "ハード リセット" +msgstr "ハードリセット" msgid "ACPI shutdown" msgstr "ACPIシャットダウン" msgid "Hard disk (%s)" -msgstr "ハード ディスク (%s)" +msgstr "ハードディスク (%s)" msgid "%01i:%01i" msgstr "%01i:%01i" @@ -986,7 +986,7 @@ msgid "Disk images cannot be larger than 127 GB." msgstr "ディスクイメージは127GBを超えることはできません。" msgid "Hard disk images" -msgstr "ハード ディスク イメージ" +msgstr "ハードディスクイメージ" msgid "Unable to read file" msgstr "ファイルの読み込みができません" @@ -1001,13 +1001,13 @@ msgid "USB is not yet supported" msgstr "USBはまだ非対応です" msgid "Disk image file already exists" -msgstr "ディスク イメージ ファイルが既に存在します" +msgstr "ディスクイメージファイルが既に存在します" msgid "Please specify a valid file name." msgstr "有効なファイル名を指定してください。" msgid "Disk image created" -msgstr "ディスク イメージが作成されました" +msgstr "ディスクイメージが作成されました" msgid "Make sure the file exists and is readable." msgstr "ファイルが存在し、読み取り可能であることを確認してください。" @@ -1016,7 +1016,7 @@ msgid "Make sure the file is being saved to a writable directory." msgstr "ファイルが書き込み可能なディレクトリに保存されていることを確認してください。" msgid "Disk image too large" -msgstr "ディスク イメージのサイズが大きすぎます" +msgstr "ディスクイメージのサイズが大きすぎます" msgid "Remember to partition and format the newly-created drive." msgstr "新規ドライブをパーティション分割し、フォーマットを必ずしといてください。" @@ -1025,7 +1025,7 @@ msgid "The selected file will be overwritten. Are you sure you want to use it?" msgstr "選択したファイルは上書きされます。よろしいですか?" msgid "Unsupported disk image" -msgstr "非対応のディスク イメージジ" +msgstr "非対応のディスクイメージジ" msgid "Overwrite" msgstr "上書き" @@ -1070,7 +1070,7 @@ msgid "Parent and child disk timestamps do not match" msgstr "親ディスクと子ディスクのタイムス タンプが一致しません" msgid "Could not fix VHD timestamp." -msgstr "VHD のタイム スタンプを修正できません。" +msgstr "VHD のタイムスタンプを修正できません。" msgid "%01i:%02i" msgstr "%01i:%02i" @@ -1196,16 +1196,16 @@ msgid "(System Default)" msgstr "(システム既定値)" msgid "Failed to initialize network driver" -msgstr "ネットワーク ドライバの初期化に失敗しました" +msgstr "ネットワークドライバの初期化に失敗しました" msgid "The network configuration will be switched to the null driver" -msgstr "ネットワーク設定がヌル ドライバに切り替えられます" +msgstr "ネットワーク設定がヌルドライバに切り替えられます" msgid "Mouse sensitivity:" msgstr "マウスの感度:" msgid "Select media images from program working directory" -msgstr "プログラムの作業ディレクトリからメディア イメージを選択してください" +msgstr "プログラムの作業ディレクトリからメディアイメージを選択してください" msgid "PIT mode:" msgstr "PITモード:"