From 64ad9e5fbaea9b218c5c165397673dee18614a3c Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 7 Feb 2023 06:48:06 -0500 Subject: [PATCH 01/16] Some escaped standardization in machine table --- src/machine/machine_table.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index c65884b7e..587e854c9 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -8016,7 +8016,7 @@ const machine_t machines[] = { .pad2 = 0, .cpu = { .package = CPU_PKG_SOCKET5_7, - CPU_BLOCK(CPU_PENTIUMMMX), + .block = CPU_BLOCK(CPU_PENTIUMMMX), .min_bus = 50000000, .max_bus = 66666667, .min_voltage = 3520, @@ -9763,14 +9763,14 @@ const machine_t machines[] = { .pad1 = MACHINE_AVAILABLE, .pad2 = 0, .cpu = { - .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK_NONE, - .min_bus = 55000000, - .max_bus = 75000000, - .min_voltage = 2800, - .max_voltage = 3520, - .min_multi = 1.5, - .max_multi = 5.5 + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 55000000, + .max_bus = 75000000, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 5.5 }, .bus_flags = MACHINE_PS2_PCI, .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI, From 22c0fd29a360f8dde4180e744038e5989e2e29d2 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Tue, 7 Feb 2023 13:12:34 -0300 Subject: [PATCH 02/16] Jenkins: Overhaul MSYS2 package handling to remove the version pinning hack --- .ci/build.sh | 108 +++++++------------------------------- .ci/dependencies_msys.txt | 36 +++++-------- 2 files changed, 30 insertions(+), 114 deletions(-) diff --git a/.ci/build.sh b/.ci/build.sh index 85420a3c6..56199d3e6 100644 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -26,7 +26,6 @@ # - Packaging the Ghostscript DLL requires 32-bit and/or 64-bit Ghostscript on Program Files # - Packaging the FluidSynth DLL requires it to be at /home/86Box/dll32/libfluidsynth.dll # and/or /home/86Box/dll64/libfluidsynth64.dll (for 32-bit and 64-bit builds respectively) -# - Packaging the Discord DLL requires wget (MSYS should come with it) # - For Linux builds: # - Only Debian and derivatives are supported # - dpkg and apt-get are called through sudo to manage dependencies; make sure those @@ -284,7 +283,7 @@ then then # Update keyring as well, since the package signing keys sometimes change. echo [-] Updating package databases and keyring - yes | pacman -Sy --needed msys2-keyring + pacman -Sy --needed --noconfirm msys2-keyring # Save build tag to skip pacman sync/keyring later. save_buildtag pacmansync @@ -292,100 +291,29 @@ then echo [-] Not updating package databases and keyring again fi - # Query installed packages. - pacman -Qe > "$cache_dir/pacman.txt" - - # Download the specified versions of architecture-specific dependencies. - echo -n [-] Downloading dependencies: - pkg_dir="/var/cache/pacman/pkg" - repo_base="https://repo.msys2.org/mingw/$(echo $MSYSTEM | tr '[:upper:]' '[:lower:]')" - cat .ci/dependencies_msys.txt | tr -d '\r' > "$cache_dir/deps.txt" - pkgs="" - while IFS=" " read pkg version - do - prefixed_pkg="$MINGW_PACKAGE_PREFIX-$pkg" - installed_version=$(grep -E "^$prefixed_pkg " "$cache_dir/pacman.txt" | cut -d " " -f 2) - if [ "$installed_version" != "$version" ] # installed_version will be empty if not installed - then - echo -n " [$pkg" - - # Download package if not already present in the local cache. - pkg_tar="$prefixed_pkg-$version-any.pkg.tar" - if [ -s "$pkg_dir/$pkg_tar.xz" ] - then - pkg_fn="$pkg_tar.xz" - pkg_dest="$pkg_dir/$pkg_fn" - else - pkg_fn="$pkg_tar.zst" - pkg_dest="$pkg_dir/$pkg_fn" - if [ ! -s "$pkg_dest" ] - then - if ! wget -qO "$pkg_dest" "$repo_base/$pkg_fn" - then - rm -f "$pkg_dest" - pkg_fn="$pkg_tar.xz" - pkg_dest="$pkg_dir/$pkg_fn" - wget -qO "$pkg_dest" "$repo_base/$pkg_fn" || rm -f "$pkg_dest" - fi - if [ -s "$pkg_dest" ] - then - wget -qO "$pkg_dest.sig" "$repo_base/$pkg_fn.sig" || rm -f "$pkg_dest.sig" - [ ! -s "$pkg_dest.sig" ] && rm -f "$pkg_dest.sig" - fi - fi - fi - - # Check if the cached package is valid. - if [ -s "$pkg_dest" ] - then - # Add cached zst package. - pkgs="$pkgs $pkg_fn" - else - # Not valid, remove if it exists. - rm -f "$pkg_dest" "$pkg_dest.sig" - echo -n " FAIL" - fi - echo -n "]" - fi - done < "$cache_dir/deps.txt" - [ -z "$pkgs" ] && echo -n ' none required' - echo - - # Install the downloaded architecture-specific dependencies. - echo [-] Installing dependencies through pacman - if [ -n "$pkgs" ] - then - pushd "$pkg_dir" - yes | pacman -U --needed $pkgs - if [ $? -ne 0 ] - then - # Install packages individually if installing them all together failed. - for pkg in $pkgs - do - yes | pacman -U --needed "$pkg" - done - fi - popd - - # Query installed packages again. - pacman -Qe > "$cache_dir/pacman.txt" - fi - - # Install the latest versions for any missing packages (if the specified version couldn't be installed). + # Establish general dependencies. pkgs="git" - while IFS=" " read pkg version + + # Gather installed architecture-specific packages for updating. + # This prevents outdated shared libraries, unmet dependencies + # and potentially other issues caused by the fact pacman doesn't + # update a package's dependencies unless explicitly told to. + pkgs="$pkgs $(pacman -Quq | grep -E "^$MINGW_PACKAGE_PREFIX-")" + + # Establish architecture-specific dependencies. + while read pkg rest do - prefixed_pkg="$MINGW_PACKAGE_PREFIX-$pkg" - grep -qE "^$prefixed_pkg " "$cache_dir/pacman.txt" || pkgs="$pkgs $prefixed_pkg" - done < "$cache_dir/deps.txt" - rm -f "$cache_dir/pacman.txt" "$cache_dir/deps.txt" - yes | pacman -S --needed $pkgs - if [ $? -ne 0 ] + pkgs="$pkgs $MINGW_PACKAGE_PREFIX-$(echo "$pkg" | tr -d '\r')" # CR removal required + done < .ci/dependencies_msys.txt + + # Install or update dependencies. + echo [-] Installing dependencies through pacman + if ! pacman -S --needed --noconfirm $pkgs then # Install packages individually if installing them all together failed. for pkg in $pkgs do - yes | pacman -S --needed "$pkg" + pacman -S --needed --noconfirm "$pkg" done fi diff --git a/.ci/dependencies_msys.txt b/.ci/dependencies_msys.txt index 35e3506fd..df4932352 100644 --- a/.ci/dependencies_msys.txt +++ b/.ci/dependencies_msys.txt @@ -1,24 +1,12 @@ -zlib 1.2.11-9 -binutils 2.37-4 -headers-git 9.0.0.6357.eac8c38c1-1 -crt-git 9.0.0.6357.eac8c38c1-2 -libwinpthread-git 9.0.0.6357.eac8c38c1-1 -winpthreads-git 9.0.0.6357.eac8c38c1-1 -winstorecompat-git 9.0.0.6357.eac8c38c1-1 -gcc-libs 11.2.0-4 -gcc-ada 11.2.0-4 -gcc-fortran 11.2.0-4 -gcc-libgfortran 11.2.0-4 -gcc-objc 11.2.0-4 -gcc 11.2.0-4 -libgccjit 11.2.0-4 -tools-git 9.0.0.6357.eac8c38c1-1 -ninja 1.10.2-3 -pkgconf 1.8.0-2 -openal 1.21.1-3 -libpng 1.6.37-6 -freetype 2.11.1-1 -SDL2 2.0.18-2 -rtmidi 4.0.0-1 -cmake 3.22.1-1 -qt5-static 5.15.2-4 +ninja +cmake +gcc +pkgconf +openal +freetype +SDL2 +zlib +libpng +rtmidi +qt5-static +qt5-translations From 9ceec90d7926c8e5471c2db99b30c644673618b1 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Tue, 7 Feb 2023 21:17:14 +0100 Subject: [PATCH 03/16] Added more ATAPI CD-ROM types (including the NEC CDR-273 4.20 drive used to be there at some point) and removed some non-working types. --- src/include/86box/cdrom.h | 67 +++++++++++++++++++++------------------ src/scsi/scsi_cdrom.c | 19 +++++++++-- 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 28e9cf14b..d2f032280 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -60,7 +60,7 @@ enum { CDROM_BUS_USB }; -#define KNOWN_CDROM_DRIVE_TYPES 30 +#define KNOWN_CDROM_DRIVE_TYPES 35 #define BUS_TYPE_ALL 0 #define BUS_TYPE_IDE 1 #define BUS_TYPE_SCSI 2 @@ -75,36 +75,41 @@ static const struct 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_ALL}, - { "AZT", "CDA46802I", "1.15", "(ATAPI) AZT CDA46802I 1.15", "AZT_CDA46802I_1.15", BUS_TYPE_IDE}, - { "BTC", "CD-ROM BCD36XH", "U1.0", "(ATAPI) BTC CD-ROM BCD36XH U1.0", "BTC_CD-ROM_BCD36XH_U1.0", BUS_TYPE_IDE}, - { "GOLDSTAR", "CRD-8160B", "3.14", "(ATAPI) GOLDSTAR CRD-8160B 3.14", "GOLDSTAR_CRD-8160B_3.14", BUS_TYPE_IDE}, - { "HITACHI", "CDR-8130", "0020", "(ATAPI) HITACHI CDR-8130 0020", "HITACHI_CDR-8130_0020", BUS_TYPE_IDE}, - { "KENWOOD", "CD-ROM UCR-421", "208E", "(ATAPI) KENWOOD CD-ROM UCR-421 208E", "KENWOOD_CD-ROM_UCR-421_208E", BUS_TYPE_IDE}, - { "MATSHITA", "CD-ROM CR-587", "7S13", "(ATAPI) MATSHITA CD-ROM CR-587 7S13", "MATSHITA_CD-ROM_CR-587_7S13", BUS_TYPE_IDE}, - { "MATSHITA", "CD-ROM CR-588", "LS15", "(ATAPI) MATSHITA CD-ROM CR-588 LS15", "MATSHITA_CD-ROM_CR-588_LS15", BUS_TYPE_IDE}, - { "MITSUMI", "CRMC-FX4820T", "D02A", "(ATAPI) MITSUMI CRMC-FX4820T D02A", "MITSUMI_CRMC-FX4820T_D02A", BUS_TYPE_IDE}, - { "NEC", "CD-ROM DRIVE:260", "1.00", "(ATAPI) NEC CD-ROM DRIVE:260 1.00", "NEC_CD-ROM_DRIVE260_1.00", BUS_TYPE_IDE}, - { "NEC", "CD-ROM DRIVE:260", "1.01", "(ATAPI) NEC CD-ROM DRIVE:260 1.01", "NEC_CD-ROM_DRIVE260_1.01", BUS_TYPE_IDE}, - { "NEC", "CDR-1300A", "1.05", "(ATAPI) NEC CDR-1300A 1.05", "NEC_CDR-1300A_1.05", BUS_TYPE_IDE}, - { "PHILIPS", "CD-ROM PCA403CD", "U31P", "(ATAPI) PHILIPS CD-ROM PCA403CD U31P", "PHILIPS_CD-ROM_PCA403CD_U31P", BUS_TYPE_IDE}, - { "SONY", "CD-ROM CDU76", "1.0i", "(ATAPI) SONY CD-ROM CDU76 1.0i", "SONY_CD-ROM_CDU76_1.0i", BUS_TYPE_IDE}, - { "SONY", "CD-ROM CDU311", "3.0h", "(ATAPI) SONY CD-ROM CDU311 3.0h", "SONY_CD-ROM_CDU311_3.0h", BUS_TYPE_IDE}, - { "TOSHIBA", "CD-ROM XM-5702B", "TA70", "(ATAPI) TOSHIBA CD-ROM XM-5702B TA70", "TOSHIBA_CD-ROM_XM-5702B_TA70", BUS_TYPE_IDE}, - { "CHINON", "CD-ROM CDS-431", "H42 ", "(SCSI) CHINON CD-ROM CDS-431 H42", "CHINON_CD-ROM_CDS-431_H42", BUS_TYPE_SCSI}, - { "DEC", "RRD45 (C) DEC", "0436", "(SCSI) DEC RRD45 0436", "DEC_RRD45_0436", BUS_TYPE_SCSI}, - { "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}, - { "NEC", "CD-ROM DRIVE:74", "1.00", "(SCSI) NEC CD-ROM DRIVE:74 1.00", "NEC_CD-ROM_DRIVE74_1.00", BUS_TYPE_SCSI}, - { "NEC", "CD-ROM DRIVE:464", "1.05", "(SCSI) NEC CD-ROM DRIVE:464 1.05", "NEC_CD-ROM_DRIVE464_1.05", BUS_TYPE_SCSI}, - { "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}, - { "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}, - { "PHILIPS", "CDD2600", "1.07", "(SCSI) PHILIPS CDD2600 1.07", "PHILIPS_CDD2600_1.07", BUS_TYPE_SCSI}, - { "PIONEER", "CD-ROM DRM-604X", "2403", "(SCSI) PIONEER CD-ROM DRM-604X 2403", "PIONEER_CD-ROM_DRM-604X_2403", BUS_TYPE_SCSI}, - { "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}, - { "TEAC", "CD-R55S", "1.0R", "(SCSI) TEAC CD-R55S 1.0R", "TEAC_CD-R55S_1.0R", BUS_TYPE_SCSI}, - { "TOSHIBA", "CD-ROM DRIVE:XM", "3433", "(SCSI) TOSHIBA CD-ROM DRIVE:XM 3433", "TOSHIBA_CD-ROM_DRIVEXM_3433", BUS_TYPE_SCSI}, - { "TOSHIBA", "CD-ROM XM-3301TA", "0272", "(SCSI) TOSHIBA CD-ROM XM-3301TA 0272", "TOSHIBA_CD-ROM_XM-3301TA_0272", BUS_TYPE_SCSI}, - { "TOSHIBA", "CD-ROM XM-5701TA", "3136", "(SCSI) TOSHIBA CD-ROM XM-5701TA 3136", "TOSHIBA_CD-ROM_XM-5701TA_3136", BUS_TYPE_SCSI}, + { "86BOX", "CD-ROM", "1.00", "(ATAPI/SCSI) 86BOX CD-ROM 1.00", "86BOX_CD-ROM_1.00", BUS_TYPE_ALL}, /*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:74", "1.00", "(SCSI) NEC CD-ROM DRIVE:74 1.00", "NEC_CD-ROM_DRIVE74_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*/ { "", "", "", "", "", -1}, }; diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index 38693f590..25939f06e 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -3519,15 +3519,30 @@ scsi_cdrom_identify(ide_t *ide, int ide_has_dma) } 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_CDR-1300A_1.05"))) { + } 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 CDR-1300A ", 40); /* Model */ + 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 */ From fea5ac681b99705754e293e10a3c21cb5da3fdb2 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 7 Feb 2023 18:06:50 -0500 Subject: [PATCH 04/16] Handful of function renames --- src/device.c | 4 ++-- src/include/86box/machine.h | 8 ++++---- src/machine/machine.c | 2 +- src/machine/machine_table.c | 8 ++++---- src/qt/qt_settingsmachine.cpp | 4 ++-- src/win/win_settings.c | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/device.c b/src/device.c index 81e19e2dc..12d06580a 100644 --- a/src/device.c +++ b/src/device.c @@ -748,7 +748,7 @@ device_is_valid(const device_t *device, int m) int machine_get_config_int(char *s) { - const device_t *d = machine_getdevice(machine); + const device_t *d = machine_get_device(machine); const device_config_t *c; if (d == NULL) @@ -768,7 +768,7 @@ machine_get_config_int(char *s) char * machine_get_config_string(char *s) { - const device_t *d = machine_getdevice(machine); + const device_t *d = machine_get_device(machine); const device_config_t *c; if (d == NULL) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index a6571a1fd..a2417a1bc 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -324,10 +324,10 @@ extern char *machine_get_internal_name(void); extern int machine_get_machine_from_internal_name(char *s); extern void machine_init(void); #ifdef EMU_DEVICE_H -extern const device_t *machine_getdevice(int m); -extern const device_t *machine_getviddevice(int m); -extern const device_t *machine_getsnddevice(int m); -extern const device_t *machine_getnetdevice(int m); +extern const device_t *machine_get_device(int m); +extern const device_t *machine_get_vid_device(int m); +extern const device_t *machine_get_snd_device(int m); +extern const device_t *machine_get_net_device(int m); #endif extern char *machine_get_internal_name_ex(int m); extern int machine_get_nvrmask(int m); diff --git a/src/machine/machine.c b/src/machine/machine.c index 7a69f4879..893700c7e 100644 --- a/src/machine/machine.c +++ b/src/machine/machine.c @@ -138,7 +138,7 @@ int machine_available(int m) { int ret; - device_t *d = (device_t *) machine_getdevice(m); + device_t *d = (device_t *) machine_get_device(m); bios_only = 1; diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 587e854c9..c489889a3 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -12245,7 +12245,7 @@ machine_getname_ex(int m) } const device_t * -machine_getdevice(int m) +machine_get_device(int m) { if (machines[m].device) return (machines[m].device); @@ -12254,7 +12254,7 @@ machine_getdevice(int m) } const device_t * -machine_getviddevice(int m) +machine_get_vid_device(int m) { if (machines[m].vid_device) return (machines[m].vid_device); @@ -12263,7 +12263,7 @@ machine_getviddevice(int m) } const device_t * -machine_getsnddevice(int m) +machine_get_snd_device(int m) { if (machines[m].snd_device) return (machines[m].snd_device); @@ -12272,7 +12272,7 @@ machine_getsnddevice(int m) } const device_t * -machine_getnetdevice(int m) +machine_get_net_device(int m) { if (machines[m].net_device) return (machines[m].net_device); diff --git a/src/qt/qt_settingsmachine.cpp b/src/qt/qt_settingsmachine.cpp index b88397e30..e08b07997 100644 --- a/src/qt/qt_settingsmachine.cpp +++ b/src/qt/qt_settingsmachine.cpp @@ -169,7 +169,7 @@ SettingsMachine::on_comboBoxMachine_currentIndexChanged(int index) } int machineId = ui->comboBoxMachine->currentData().toInt(); - const auto *device = machine_getdevice(machineId); + const auto *device = machine_get_device(machineId); ui->pushButtonConfigure->setEnabled((device != nullptr) && (device->config != nullptr)); auto *modelCpu = ui->comboBoxCPU->model(); @@ -304,6 +304,6 @@ SettingsMachine::on_pushButtonConfigure_clicked() { // deviceconfig_inst_open int machineId = ui->comboBoxMachine->currentData().toInt(); - const auto *device = machine_getdevice(machineId); + const auto *device = machine_get_device(machineId); DeviceConfig::ConfigureDevice(device, 0, qobject_cast(Settings::settings)); } diff --git a/src/win/win_settings.c b/src/win/win_settings.c index 37a8aafb0..07822f28b 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -755,7 +755,7 @@ win_settings_machine_recalc_machine(HWND hdlg) lptsTemp = (LPTSTR) malloc(512 * sizeof(WCHAR)); - d = (device_t *) machine_getdevice(temp_machine); + d = (device_t *) machine_get_device(temp_machine); settings_enable_window(hdlg, IDC_CONFIGURE_MACHINE, d && d->config); settings_reset_content(hdlg, IDC_COMBO_CPU_TYPE); @@ -987,7 +987,7 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) break; case IDC_CONFIGURE_MACHINE: temp_machine = listtomachine[settings_get_cur_sel(hdlg, IDC_COMBO_MACHINE)]; - temp_deviceconfig |= deviceconfig_open(hdlg, (void *) machine_getdevice(temp_machine)); + temp_deviceconfig |= deviceconfig_open(hdlg, (void *) machine_get_device(temp_machine)); break; } From 118ab005f0a22a106b31dd73fbc582965c7eb354 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 7 Feb 2023 18:08:11 -0500 Subject: [PATCH 05/16] Switch kbc to device_t kbd_device --- src/include/86box/keyboard.h | 2 - src/include/86box/machine.h | 7 +- src/machine/machine_table.c | 662 ++++++++++++++++++----------------- 3 files changed, 342 insertions(+), 329 deletions(-) diff --git a/src/include/86box/keyboard.h b/src/include/86box/keyboard.h index db18ac789..1f7d8860c 100644 --- a/src/include/86box/keyboard.h +++ b/src/include/86box/keyboard.h @@ -39,8 +39,6 @@ typedef struct { #define RSHIFT_OFF 0x105 /* KBC #define's */ -#define KBC_UNKNOWN 0x0000 /* As yet unknown keyboard */ - /* IBM-style controllers */ #define KBC_IBM_PC_XT 0x0000 /* IBM PC/XT */ #define KBC_IBM_PCJR 0x0001 /* IBM PCjr */ diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index a2417a1bc..694552c50 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -288,7 +288,11 @@ typedef struct _machine_ { const machine_memory_t ram; int ram_granularity; int nvrmask; - uint16_t kbc; +#ifdef EMU_DEVICE_H + const device_t *kbc_device; +#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). */ @@ -324,6 +328,7 @@ extern char *machine_get_internal_name(void); extern int machine_get_machine_from_internal_name(char *s); extern void machine_init(void); #ifdef EMU_DEVICE_H +extern const device_t *machine_get_kbc_device(int m); extern const device_t *machine_get_device(int m); extern const device_t *machine_get_vid_device(int m); extern const device_t *machine_get_snd_device(int m); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index c489889a3..a8f8643c0 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -230,7 +230,7 @@ const machine_t machines[] = { .step = 16 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -266,7 +266,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc82_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -302,7 +302,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_IBM_PCJR, + .kbc_device = NULL, /* TODO: No specific kbd_device yet */ .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &pcjr_device, @@ -338,7 +338,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -374,7 +374,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt86_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -410,7 +410,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -446,7 +446,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -482,7 +482,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -518,7 +518,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc82_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -554,7 +554,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_compaq_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -590,7 +590,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -626,7 +626,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc82_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -662,7 +662,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -698,7 +698,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -734,7 +734,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -770,7 +770,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -806,7 +806,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -842,7 +842,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -878,7 +878,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -914,7 +914,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -950,7 +950,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -986,7 +986,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1022,7 +1022,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_OLIVETTI_XT, + .kbc_device = &keyboard_xt_olivetti_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &m19_vid_device, @@ -1058,7 +1058,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1094,7 +1094,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1130,7 +1130,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1166,7 +1166,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1202,7 +1202,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pravetz_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1238,7 +1238,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1274,7 +1274,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 15, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1310,7 +1310,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1346,7 +1346,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_TANDY, + .kbc_device = &keyboard_tandy_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device, @@ -1382,7 +1382,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_TANDY, + .kbc_device = &keyboard_tandy_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device_hx, @@ -1418,7 +1418,7 @@ const machine_t machines[] = { .step = 768 }, .nvrmask = 63, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_t1x00_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &t1000_video_device, @@ -1454,7 +1454,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1491,7 +1491,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1499,7 +1499,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_LASERXT) */ /* Has a standard PS/2 KBC (so, use IBM PS/2 Type 1). */ { .name = "[8088] Xi8088", @@ -1529,7 +1529,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_VIA_VT82C4XN_XI8088, + .kbc_device = &keyboard_ps2_xi8088_device, .kbc_p1 = 0xff04, .gpio = 0xffffffff, .device = &xi8088_device, @@ -1565,7 +1565,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1601,7 +1601,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_zenith_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1637,7 +1637,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_zenith_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1673,7 +1673,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_zenith_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &cga_device, @@ -1709,7 +1709,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_pc_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1745,7 +1745,7 @@ const machine_t machines[] = { .step = 64 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -1783,7 +1783,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_1512_device, @@ -1819,7 +1819,7 @@ const machine_t machines[] = { .step = 640 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_1640_device, @@ -1855,7 +1855,7 @@ const machine_t machines[] = { .step = 640 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_pc2086_device, @@ -1891,7 +1891,7 @@ const machine_t machines[] = { .step = 640 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_pc3086_device, @@ -1927,7 +1927,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_200_device, @@ -1963,7 +1963,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_AMSTRAD, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_ppc512_device, @@ -1999,7 +1999,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_compaq_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -2035,7 +2035,7 @@ const machine_t machines[] = { .step = 640 }, .nvrmask = 0x3f, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -2071,7 +2071,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 15, - .kbc = KBC_OLIVETTI_XT, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &ogc_m24_device, @@ -2108,7 +2108,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 15, - .kbc = KBC_OLIVETTI, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff04, .gpio = 0xffffffff, .device = NULL, @@ -2144,7 +2144,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xtclone_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -2180,7 +2180,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 0, - .kbc = KBC_TANDY_SL2, + .kbc_device = NULL /* TODO: No specific kbd_device yet */, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device_sl, @@ -2216,7 +2216,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_t1x00_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &t1200_video_device, @@ -2252,7 +2252,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -2290,7 +2290,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 0, - .kbc = KBC_IBM_PC_XT, + .kbc_device = &keyboard_xt_lxt3_device, .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, @@ -2298,7 +2298,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_LASERXT) */ /* 286 AT machines */ /* Has IBM AT KBC firmware. */ @@ -2330,7 +2330,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2367,7 +2367,7 @@ const machine_t machines[] = { .step = 512 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2404,7 +2404,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2441,7 +2441,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2478,7 +2478,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2516,7 +2516,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2553,7 +2553,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2590,7 +2590,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &compaq_plasma_device, @@ -2627,7 +2627,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2664,7 +2664,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2702,7 +2702,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2710,7 +2710,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_OLIVETTI) */ #if defined(DEV_BRANCH) && defined(USE_OPEN_AT) /* Has IBM AT KBC firmware. */ { @@ -2741,7 +2741,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2749,7 +2749,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_OPEN_AT) */ /* Has IBM AT KBC firmware. */ { .name = "[ISA] Phoenix IBM AT", @@ -2779,7 +2779,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2816,7 +2816,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2853,7 +2853,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2890,7 +2890,7 @@ const machine_t machines[] = { .step = 256 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2927,7 +2927,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -2964,7 +2964,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3001,7 +3001,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3038,7 +3038,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3075,7 +3075,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3112,7 +3112,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3149,7 +3149,7 @@ const machine_t machines[] = { .step = 512 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3186,7 +3186,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3223,7 +3223,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3260,7 +3260,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3297,7 +3297,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3334,7 +3334,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3371,7 +3371,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3410,7 +3410,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3447,7 +3447,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3487,7 +3487,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3524,7 +3524,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3561,7 +3561,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3598,7 +3598,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3635,7 +3635,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3674,7 +3674,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &tvga8900d_device, @@ -3712,7 +3712,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3749,7 +3749,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3786,7 +3786,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3825,7 +3825,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &oti067_ama932j_device, @@ -3864,7 +3864,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3900,7 +3900,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3939,7 +3939,7 @@ const machine_t machines[] = { .step = 512 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -3976,7 +3976,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4013,7 +4013,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4052,7 +4052,7 @@ const machine_t machines[] = { .step = 512 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5402_onboard_device, @@ -4091,7 +4091,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4128,7 +4128,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &ati28800k_spc6033p_device, @@ -4166,7 +4166,7 @@ const machine_t machines[] = { .step = 512 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4203,7 +4203,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4242,7 +4242,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4279,7 +4279,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4319,7 +4319,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4357,7 +4357,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4394,7 +4394,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4431,7 +4431,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4469,7 +4469,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4477,7 +4477,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_DESKPRO386) */ { .name = "[ISA] Compaq Portable III (386)", .internal_name = "portableiii386", @@ -4506,7 +4506,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &compaq_plasma_device, @@ -4543,7 +4543,7 @@ const machine_t machines[] = { .step = 128 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4580,7 +4580,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4619,7 +4619,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4659,7 +4659,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4696,7 +4696,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4733,7 +4733,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4770,7 +4770,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4807,7 +4807,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 63, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4850,7 +4850,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4889,7 +4889,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4927,7 +4927,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -4964,7 +4964,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5001,7 +5001,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5039,7 +5039,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5076,7 +5076,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5116,7 +5116,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5155,7 +5155,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, @@ -5192,7 +5192,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, @@ -5233,7 +5233,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5270,7 +5270,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, @@ -5307,7 +5307,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5344,7 +5344,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_86c805_onboard_vlb_device, @@ -5381,7 +5381,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5419,7 +5419,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5458,7 +5458,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5498,7 +5498,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5535,7 +5535,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5572,7 +5572,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5609,7 +5609,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5646,7 +5646,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5683,7 +5683,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5720,7 +5720,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5757,7 +5757,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5794,7 +5794,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5833,7 +5833,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5870,7 +5870,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5907,7 +5907,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &tgui9440_onboard_pci_device, @@ -5945,7 +5945,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -5986,7 +5986,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6027,7 +6027,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6064,7 +6064,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6101,7 +6101,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6138,7 +6138,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6175,7 +6175,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6212,7 +6212,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6249,7 +6249,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6287,7 +6287,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6324,7 +6324,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6361,7 +6361,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6398,7 +6398,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6435,7 +6435,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6472,7 +6472,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6509,7 +6509,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6547,7 +6547,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6585,7 +6585,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6622,7 +6622,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6659,7 +6659,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6696,7 +6696,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6734,7 +6734,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6771,7 +6771,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6808,7 +6808,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6845,7 +6845,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6882,7 +6882,7 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6923,7 +6923,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6961,7 +6961,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -6999,7 +6999,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7037,7 +7037,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7075,7 +7075,7 @@ const machine_t machines[] = { .step = 32768 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7119,7 +7119,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7156,7 +7156,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7193,7 +7193,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7230,7 +7230,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7269,7 +7269,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7306,7 +7306,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7343,7 +7343,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7380,7 +7380,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7417,7 +7417,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5434_onboard_pci_device, @@ -7458,7 +7458,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7497,7 +7497,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7536,7 +7536,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7573,7 +7573,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7613,7 +7613,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7651,7 +7651,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7688,7 +7688,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7727,7 +7727,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7764,7 +7764,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7803,7 +7803,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7840,7 +7840,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7877,7 +7877,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7918,7 +7918,7 @@ const machine_t machines[] = { .step = 2048 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7956,7 +7956,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -7995,7 +7995,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8032,7 +8032,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8069,7 +8069,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_JETKEY_5_W83C42, + .kbc_device = &keyboard_at_ami_device, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8109,7 +8109,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8146,7 +8146,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8158,7 +8158,7 @@ const machine_t machines[] = { { .name = "[i430FX] DataExpert EXP8551", .internal_name = "exp8551", - .type = MACHINE_TYPE_SOCKET7_3V, + .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_exp8551_init, .pad = 0, @@ -8183,7 +8183,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8222,7 +8222,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8260,7 +8260,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 511, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, @@ -8299,7 +8299,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, @@ -8338,7 +8338,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, @@ -8377,7 +8377,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, @@ -8414,7 +8414,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8452,7 +8452,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &gd5440_onboard_pci_device, @@ -8464,7 +8464,7 @@ const machine_t machines[] = { { .name = "[i430FX] PC Partner MB500N", .internal_name = "mb500n", - .type = MACHINE_TYPE_SOCKET7_3V, + .type = MACHINE_TYPE_SOCKET5, .chipset = MACHINE_CHIPSET_INTEL_430FX, .init = machine_at_mb500n_init, .pad = 0, @@ -8489,7 +8489,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8526,7 +8526,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8567,7 +8567,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8604,7 +8604,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8641,7 +8641,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8679,7 +8679,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8718,7 +8718,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8757,7 +8757,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8796,7 +8796,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8833,7 +8833,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8873,7 +8873,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8910,7 +8910,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8947,7 +8947,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 511, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -8986,7 +8986,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9025,7 +9025,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9065,7 +9065,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9102,7 +9102,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9141,7 +9141,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9178,7 +9178,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9216,7 +9216,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9253,7 +9253,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9291,7 +9291,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, @@ -9328,7 +9328,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, @@ -9365,7 +9365,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9402,7 +9402,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9441,7 +9441,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9478,7 +9478,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9516,7 +9516,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9554,7 +9554,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9593,7 +9593,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9630,7 +9630,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9668,7 +9668,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9676,7 +9676,7 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, -#endif +#endif /* defined(DEV_BRANCH) && defined(USE_AN430TX) */ /* This has the AMIKey KBC firmware, which is an updated 'F' type. */ { .name = "[i430TX] Intel YM430TX", @@ -9706,7 +9706,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9743,7 +9743,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9780,7 +9780,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9817,7 +9817,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9857,7 +9857,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9897,7 +9897,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9936,7 +9936,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -9973,7 +9973,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10012,7 +10012,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10049,7 +10049,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10089,7 +10089,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10127,7 +10127,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10164,7 +10164,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10201,7 +10201,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10241,7 +10241,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10279,7 +10279,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10317,7 +10317,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10355,7 +10355,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10395,7 +10395,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10434,7 +10434,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10471,7 +10471,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10509,7 +10509,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10545,7 +10545,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10584,7 +10584,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10623,7 +10623,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10660,7 +10660,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10699,7 +10699,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10739,7 +10739,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10778,7 +10778,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10816,7 +10816,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 127, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10856,7 +10856,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10894,7 +10894,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10934,7 +10934,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -10974,7 +10974,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11012,7 +11012,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11050,7 +11050,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11088,7 +11088,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11126,7 +11126,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11164,7 +11164,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11202,7 +11202,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, @@ -11240,7 +11240,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11280,7 +11280,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, @@ -11318,7 +11318,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, @@ -11358,7 +11358,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11398,7 +11398,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11436,7 +11436,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11474,7 +11474,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11512,7 +11512,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, @@ -11553,7 +11553,7 @@ const machine_t machines[] = { .step = 16384 }, .nvrmask = 511, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11594,7 +11594,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, @@ -11633,7 +11633,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &cmi8738_onboard_device, @@ -11674,7 +11674,7 @@ const machine_t machines[] = { .step = 16384 }, .nvrmask = 511, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11712,7 +11712,7 @@ const machine_t machines[] = { .step = 16384 }, .nvrmask = 511, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11753,7 +11753,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11793,7 +11793,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11831,7 +11831,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11869,7 +11869,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11909,7 +11909,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11949,7 +11949,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -11989,7 +11989,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -12027,7 +12027,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -12065,7 +12065,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -12103,7 +12103,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = &cmi8738_onboard_device, @@ -12143,7 +12143,7 @@ const machine_t machines[] = { .step = 8192 }, .nvrmask = 255, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -12180,7 +12180,7 @@ const machine_t machines[] = { .step = 0 }, .nvrmask = 0, - .kbc = KBC_UNKNOWN, + .kbc_device = NULL, .kbc_p1 = 0, .gpio = 0, .device = NULL, @@ -12244,6 +12244,16 @@ machine_getname_ex(int m) return ((char *) machines[m].name); } +const device_t * +machine_get_kbc_device(int m) +{ + if (machines[m].kbc_device) + return (machines[m].kbc_device); + + return (NULL); +} + + const device_t * machine_get_device(int m) { From 01749a6de65859d9fb85bce173ac260a5aa7d8ce Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 7 Feb 2023 18:08:42 -0500 Subject: [PATCH 06/16] Add fdc_device to machine table --- src/include/86box/machine.h | 3 + src/machine/machine_table.c | 326 ++++++++++++++++++++++++++++++++++++ 2 files changed, 329 insertions(+) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 694552c50..2d9dfbc96 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -301,11 +301,13 @@ typedef struct _machine_ { uint32_t gpio_acpi; #ifdef EMU_DEVICE_H const device_t *device; + const device_t *fdc_device; const device_t *vid_device; const device_t *snd_device; const device_t *net_device; #else void *device; + void *fdc_device; void *vid_device; void *snd_device; void *net_device; @@ -330,6 +332,7 @@ extern void machine_init(void); #ifdef EMU_DEVICE_H extern const device_t *machine_get_kbc_device(int m); extern const device_t *machine_get_device(int m); +extern const device_t *machine_get_fdc_device(int m); extern const device_t *machine_get_vid_device(int m); extern const device_t *machine_get_snd_device(int m); extern const device_t *machine_get_net_device(int m); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index a8f8643c0..eb31fc91c 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -234,6 +234,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -270,6 +271,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -306,6 +308,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &pcjr_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -342,6 +345,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -378,6 +382,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -414,6 +419,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -450,6 +456,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -486,6 +493,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -522,6 +530,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -558,6 +567,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -594,6 +604,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -630,6 +641,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -666,6 +678,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -702,6 +715,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -738,6 +752,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -774,6 +789,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -810,6 +826,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -846,6 +863,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -882,6 +900,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -918,6 +937,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -954,6 +974,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -990,6 +1011,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1026,6 +1048,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &m19_vid_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1062,6 +1085,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1098,6 +1122,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1134,6 +1159,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1170,6 +1196,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1206,6 +1233,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1242,6 +1270,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1278,6 +1307,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1314,6 +1344,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1350,6 +1381,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1386,6 +1418,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device_hx, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1422,6 +1455,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &t1000_video_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1458,6 +1492,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1495,6 +1530,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1533,6 +1569,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff04, .gpio = 0xffffffff, .device = &xi8088_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1569,6 +1606,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1605,6 +1643,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1641,6 +1680,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1677,6 +1717,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &cga_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1713,6 +1754,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1749,6 +1791,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1787,6 +1830,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_1512_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1823,6 +1867,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_1640_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1859,6 +1904,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_pc2086_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1895,6 +1941,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_pc3086_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1931,6 +1978,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_200_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1967,6 +2015,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_ppc512_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2003,6 +2052,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2039,6 +2089,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2075,6 +2126,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &ogc_m24_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2112,6 +2164,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff04, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2148,6 +2201,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2184,6 +2238,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &vid_device_sl, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2220,6 +2275,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = &t1200_video_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2256,6 +2312,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2294,6 +2351,7 @@ const machine_t machines[] = { .kbc_p1 = 0xff00, .gpio = 0xffffffff, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2334,6 +2392,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2371,6 +2430,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2408,6 +2468,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2445,6 +2506,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2482,6 +2544,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2520,6 +2583,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2557,6 +2621,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2594,6 +2659,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &compaq_plasma_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2631,6 +2697,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2668,6 +2735,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2706,6 +2774,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2745,6 +2814,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2783,6 +2853,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2820,6 +2891,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2857,6 +2929,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2894,6 +2967,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2931,6 +3005,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2968,6 +3043,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3005,6 +3081,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3042,6 +3119,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3079,6 +3157,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3116,6 +3195,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3153,6 +3233,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3190,6 +3271,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3227,6 +3309,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3264,6 +3347,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3301,6 +3385,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3338,6 +3423,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3375,6 +3461,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3414,6 +3501,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3451,6 +3539,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3491,6 +3580,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3528,6 +3618,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3565,6 +3656,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3602,6 +3694,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3639,6 +3732,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3678,6 +3772,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &tvga8900d_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3716,6 +3811,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3753,6 +3849,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3790,6 +3887,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3829,6 +3927,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &oti067_ama932j_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3868,6 +3967,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3904,6 +4004,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3943,6 +4044,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3980,6 +4082,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4017,6 +4120,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4056,6 +4160,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5402_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4095,6 +4200,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4132,6 +4238,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &ati28800k_spc6033p_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4170,6 +4277,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4207,6 +4315,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4246,6 +4355,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4283,6 +4393,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4323,6 +4434,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4361,6 +4473,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4398,6 +4511,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4435,6 +4549,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4473,6 +4588,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4510,6 +4626,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &compaq_plasma_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4547,6 +4664,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4584,6 +4702,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4623,6 +4742,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4663,6 +4783,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4700,6 +4821,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4737,6 +4859,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4774,6 +4897,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4811,6 +4935,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4854,6 +4979,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4893,6 +5019,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4931,6 +5058,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4968,6 +5096,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5005,6 +5134,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5043,6 +5173,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5080,6 +5211,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5120,6 +5252,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5159,6 +5292,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5196,6 +5330,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5237,6 +5372,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5274,6 +5410,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5428_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5311,6 +5448,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5349,6 +5487,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_86c805_onboard_vlb_device, .vid_device = NULL, + .fdc_device = NULL, .snd_device = NULL, .net_device = NULL }, @@ -5385,6 +5524,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5423,6 +5563,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5462,6 +5603,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5502,6 +5644,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5539,6 +5682,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5576,6 +5720,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5613,6 +5758,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5650,6 +5796,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5687,6 +5834,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5724,6 +5872,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5761,6 +5910,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5798,6 +5948,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5837,6 +5988,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5874,6 +6026,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5911,6 +6064,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &tgui9440_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5949,6 +6103,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5990,6 +6145,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6031,6 +6187,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6068,6 +6225,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6105,6 +6263,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6142,6 +6301,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6179,6 +6339,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6216,6 +6377,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6253,6 +6415,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6291,6 +6454,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6328,6 +6492,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6365,6 +6530,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6402,6 +6568,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6439,6 +6606,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6476,6 +6644,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6513,6 +6682,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6551,6 +6721,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6589,6 +6760,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6626,6 +6798,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6663,6 +6836,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6700,6 +6874,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6738,6 +6913,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6775,6 +6951,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6812,6 +6989,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6849,6 +7027,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6886,6 +7065,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6927,6 +7107,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6965,6 +7146,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7003,6 +7185,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7041,6 +7224,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7079,6 +7263,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7123,6 +7308,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7160,6 +7346,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7197,6 +7384,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7234,6 +7422,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7273,6 +7462,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7310,6 +7500,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7347,6 +7538,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7384,6 +7576,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7421,6 +7614,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5434_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7462,6 +7656,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7501,6 +7696,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7540,6 +7736,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7577,6 +7774,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7617,6 +7815,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7655,6 +7854,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7692,6 +7892,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7731,6 +7932,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7768,6 +7970,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7807,6 +8010,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7844,6 +8048,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7881,6 +8086,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7922,6 +8128,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7960,6 +8167,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7999,6 +8207,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8036,6 +8245,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8073,6 +8283,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8113,6 +8324,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8150,6 +8362,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8187,6 +8400,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8226,6 +8440,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8264,6 +8479,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8303,6 +8519,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8342,6 +8559,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8381,6 +8599,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8418,6 +8637,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8456,6 +8676,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &gd5440_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8493,6 +8714,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8530,6 +8752,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8571,6 +8794,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8608,6 +8832,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8645,6 +8870,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8683,6 +8909,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8722,6 +8949,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8761,6 +8989,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8800,6 +9029,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8837,6 +9067,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8877,6 +9108,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8914,6 +9146,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8951,6 +9184,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8990,6 +9224,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9029,6 +9264,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9069,6 +9305,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9106,6 +9343,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9145,6 +9383,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9182,6 +9421,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9220,6 +9460,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9257,6 +9498,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9295,6 +9537,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9332,6 +9575,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9369,6 +9613,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9406,6 +9651,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9445,6 +9691,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9482,6 +9729,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9520,6 +9768,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9558,6 +9807,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9597,6 +9847,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9634,6 +9885,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9672,6 +9924,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9710,6 +9963,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9747,6 +10001,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9784,6 +10039,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9821,6 +10077,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9861,6 +10118,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9901,6 +10159,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9940,6 +10199,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9977,6 +10237,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10016,6 +10277,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10053,6 +10315,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10093,6 +10356,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10131,6 +10395,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10168,6 +10433,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10205,6 +10471,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10245,6 +10512,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10283,6 +10551,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10321,6 +10590,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10359,6 +10629,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10399,6 +10670,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10438,6 +10710,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10475,6 +10748,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10513,6 +10787,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10549,6 +10824,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10588,6 +10864,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10627,6 +10904,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10664,6 +10942,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10703,6 +10982,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10743,6 +11023,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10782,6 +11063,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10820,6 +11102,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10860,6 +11143,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10898,6 +11182,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10938,6 +11223,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10978,6 +11264,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11016,6 +11303,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11054,6 +11342,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11092,6 +11381,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11130,6 +11420,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11168,6 +11459,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11206,6 +11498,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11244,6 +11537,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11284,6 +11578,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11322,6 +11617,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11362,6 +11658,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11402,6 +11699,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11440,6 +11738,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11478,6 +11777,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11516,6 +11816,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11557,6 +11858,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11598,6 +11900,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &es1371_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11637,6 +11940,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &cmi8738_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11678,6 +11982,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11716,6 +12021,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11757,6 +12063,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11797,6 +12104,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11835,6 +12143,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11873,6 +12182,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11913,6 +12223,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11953,6 +12264,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11993,6 +12305,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12031,6 +12344,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12069,6 +12383,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12107,6 +12422,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = &cmi8738_onboard_device, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12147,6 +12463,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12184,6 +12501,7 @@ const machine_t machines[] = { .kbc_p1 = 0, .gpio = 0, .device = NULL, + .fdc_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12263,6 +12581,14 @@ machine_get_device(int m) return (NULL); } +const device_t * +machine_get_fdc_device(int m) +{ + if (machines[m].fdc_device) + return (machines[m].fdc_device); + + return (NULL); +} const device_t * machine_get_vid_device(int m) { From fa9e05a3177484a2e736001120c0dd3360042d73 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Wed, 8 Feb 2023 22:11:22 +0100 Subject: [PATCH 07/16] add command 0xea - set stream mode --- src/device/mouse_ps2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/device/mouse_ps2.c b/src/device/mouse_ps2.c index 42e2211b9..c2f996b22 100644 --- a/src/device/mouse_ps2.c +++ b/src/device/mouse_ps2.c @@ -191,6 +191,12 @@ ps2_write(uint8_t val, void *priv) keyboard_at_adddata_mouse(dev->sample_rate); break; + case 0xea: /* set stream */ + dev->flags &= ~FLAG_CTRLDAT; + mouse_scan = 1; + keyboard_at_adddata_mouse(0xfa); /* ACK for command byte */ + break; + case 0xeb: /* Get mouse data */ keyboard_at_adddata_mouse(0xfa); From 947e511d72bd02723591be6b40965f6ca2473f52 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 7 Feb 2023 18:09:00 -0500 Subject: [PATCH 08/16] Add sio_device to machine table --- src/include/86box/machine.h | 3 + src/machine/machine_table.c | 328 ++++++++++++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 2d9dfbc96..165e37cb2 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -302,12 +302,14 @@ typedef struct _machine_ { #ifdef EMU_DEVICE_H const device_t *device; const device_t *fdc_device; + const device_t *sio_device; const device_t *vid_device; const device_t *snd_device; const device_t *net_device; #else void *device; void *fdc_device; + void *sio_device; void *vid_device; void *snd_device; void *net_device; @@ -333,6 +335,7 @@ extern void machine_init(void); extern const device_t *machine_get_kbc_device(int m); extern const device_t *machine_get_device(int m); extern const device_t *machine_get_fdc_device(int m); +extern const device_t *machine_get_sio_device(int m); extern const device_t *machine_get_vid_device(int m); extern const device_t *machine_get_snd_device(int m); extern const device_t *machine_get_net_device(int m); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index eb31fc91c..032975672 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -235,6 +235,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -272,6 +273,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -309,6 +311,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &pcjr_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -346,6 +349,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -383,6 +387,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -420,6 +425,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -457,6 +463,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -494,6 +501,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -531,6 +539,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -568,6 +577,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -605,6 +615,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -642,6 +653,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -679,6 +691,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -716,6 +729,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -753,6 +767,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -790,6 +805,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -827,6 +843,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -864,6 +881,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -901,6 +919,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -938,6 +957,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -975,6 +995,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1012,6 +1033,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1049,6 +1071,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &m19_vid_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1086,6 +1109,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1123,6 +1147,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1160,6 +1185,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1197,6 +1223,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1234,6 +1261,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1271,6 +1299,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1308,6 +1337,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1345,6 +1375,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1382,6 +1413,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1419,6 +1451,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_device_hx, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1456,6 +1489,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &t1000_video_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1493,6 +1527,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1531,6 +1566,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1570,6 +1606,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &xi8088_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1607,6 +1644,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1644,6 +1682,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1681,6 +1720,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1718,6 +1758,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &cga_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1755,6 +1796,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1792,6 +1834,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1831,6 +1874,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_1512_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1868,6 +1912,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_1640_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1905,6 +1950,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_pc2086_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1942,6 +1988,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_pc3086_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -1979,6 +2026,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_200_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2016,6 +2064,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_ppc512_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2053,6 +2102,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2090,6 +2140,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2127,6 +2178,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &ogc_m24_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2165,6 +2217,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2202,6 +2255,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2239,6 +2293,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &vid_device_sl, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2276,6 +2331,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = &t1200_video_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2313,6 +2369,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2352,6 +2409,7 @@ const machine_t machines[] = { .gpio = 0xffffffff, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2393,6 +2451,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2431,6 +2490,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2469,6 +2529,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2507,6 +2568,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2545,6 +2607,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2584,6 +2647,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2622,6 +2686,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2660,6 +2725,7 @@ const machine_t machines[] = { .gpio = 0, .device = &compaq_plasma_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2698,6 +2764,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2736,6 +2803,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2775,6 +2843,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2815,6 +2884,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2854,6 +2924,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2892,6 +2963,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2930,6 +3002,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -2968,6 +3041,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3006,6 +3080,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3044,6 +3119,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3082,6 +3158,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3120,6 +3197,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3158,6 +3236,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3196,6 +3275,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3234,6 +3314,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3272,6 +3353,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3310,6 +3392,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3348,6 +3431,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3386,6 +3470,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3424,6 +3509,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3462,6 +3548,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3502,6 +3589,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3540,6 +3628,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3581,6 +3670,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3619,6 +3709,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3657,6 +3748,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3695,6 +3787,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3733,6 +3826,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3773,6 +3867,7 @@ const machine_t machines[] = { .gpio = 0, .device = &tvga8900d_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3812,6 +3907,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3850,6 +3946,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3888,6 +3985,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3928,6 +4026,7 @@ const machine_t machines[] = { .gpio = 0, .device = &oti067_ama932j_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -3968,6 +4067,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4005,6 +4105,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4045,6 +4146,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4083,6 +4185,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4121,6 +4224,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4161,6 +4265,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5402_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4201,6 +4306,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4239,6 +4345,7 @@ const machine_t machines[] = { .gpio = 0, .device = &ati28800k_spc6033p_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4278,6 +4385,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4316,6 +4424,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4356,6 +4465,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4394,6 +4504,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4435,6 +4546,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4474,6 +4586,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4512,6 +4625,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4550,6 +4664,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4589,6 +4704,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4627,6 +4743,7 @@ const machine_t machines[] = { .gpio = 0, .device = &compaq_plasma_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4665,6 +4782,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4703,6 +4821,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4743,6 +4862,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4784,6 +4904,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4822,6 +4943,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4860,6 +4982,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4898,6 +5021,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4936,6 +5060,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -4980,6 +5105,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5020,6 +5146,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5059,6 +5186,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5097,6 +5225,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5135,6 +5264,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5174,6 +5304,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5212,6 +5343,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5253,6 +5385,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5293,6 +5426,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5428_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5331,6 +5465,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5428_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5373,6 +5508,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5411,6 +5547,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5428_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5449,6 +5586,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5488,6 +5626,7 @@ const machine_t machines[] = { .device = &s3_86c805_onboard_vlb_device, .vid_device = NULL, .fdc_device = NULL, + .sio_device = NULL, .snd_device = NULL, .net_device = NULL }, @@ -5525,6 +5664,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5564,6 +5704,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5604,6 +5745,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5645,6 +5787,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5683,6 +5826,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5721,6 +5865,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5759,6 +5904,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5797,6 +5943,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5835,6 +5982,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5873,6 +6021,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5911,6 +6060,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5949,6 +6099,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -5989,6 +6140,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6027,6 +6179,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6065,6 +6218,7 @@ const machine_t machines[] = { .gpio = 0, .device = &tgui9440_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6104,6 +6258,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6146,6 +6301,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6188,6 +6344,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6226,6 +6383,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6264,6 +6422,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6302,6 +6461,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6340,6 +6500,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6378,6 +6539,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6416,6 +6578,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6455,6 +6618,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6493,6 +6657,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6531,6 +6696,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6569,6 +6735,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6607,6 +6774,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6645,6 +6813,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6683,6 +6852,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6722,6 +6892,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6761,6 +6932,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6799,6 +6971,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6837,6 +7010,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6875,6 +7049,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6914,6 +7089,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6952,6 +7128,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -6990,6 +7167,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7028,6 +7206,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7066,6 +7245,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7108,6 +7288,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7147,6 +7328,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7186,6 +7368,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7225,6 +7408,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7264,6 +7448,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7309,6 +7494,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7347,6 +7533,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7385,6 +7572,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7423,6 +7611,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7463,6 +7652,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7501,6 +7691,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7539,6 +7730,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7577,6 +7769,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7615,6 +7808,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5434_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7657,6 +7851,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7697,6 +7892,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7737,6 +7933,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7775,6 +7972,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7816,6 +8014,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7855,6 +8054,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7893,6 +8093,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7933,6 +8134,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -7971,6 +8173,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8011,6 +8214,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8049,6 +8253,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8087,6 +8292,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8129,6 +8335,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8168,6 +8375,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8208,6 +8416,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8246,6 +8455,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8284,6 +8494,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8325,6 +8536,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8363,6 +8575,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8401,6 +8614,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8441,6 +8655,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8480,6 +8695,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8520,6 +8736,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8560,6 +8777,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_phoenix_trio64vplus_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8600,6 +8818,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_phoenix_trio64_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8638,6 +8857,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8677,6 +8897,7 @@ const machine_t machines[] = { .gpio = 0, .device = &gd5440_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8715,6 +8936,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8753,6 +8975,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8795,6 +9018,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8833,6 +9057,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8871,6 +9096,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8910,6 +9136,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8950,6 +9177,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -8990,6 +9218,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9030,6 +9259,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9068,6 +9298,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9109,6 +9340,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9147,6 +9379,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9185,6 +9418,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9225,6 +9459,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9265,6 +9500,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9306,6 +9542,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9344,6 +9581,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9384,6 +9622,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9422,6 +9661,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9461,6 +9701,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9499,6 +9740,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9538,6 +9780,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9576,6 +9819,7 @@ const machine_t machines[] = { .gpio = 0, .device = &s3_trio64v2_dx_onboard_pci_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9614,6 +9858,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9652,6 +9897,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9692,6 +9938,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9730,6 +9977,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9769,6 +10017,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9808,6 +10057,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9848,6 +10098,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9886,6 +10137,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9925,6 +10177,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -9964,6 +10217,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10002,6 +10256,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10040,6 +10295,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10078,6 +10334,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10119,6 +10376,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10160,6 +10418,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10200,6 +10459,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10238,6 +10498,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10278,6 +10539,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10316,6 +10578,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10357,6 +10620,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10396,6 +10660,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10434,6 +10699,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10472,6 +10738,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10513,6 +10780,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10552,6 +10820,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10591,6 +10860,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10630,6 +10900,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10671,6 +10942,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10711,6 +10983,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10749,6 +11022,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10788,6 +11062,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10825,6 +11100,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10865,6 +11141,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10905,6 +11182,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10943,6 +11221,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -10983,6 +11262,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11024,6 +11304,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11064,6 +11345,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11103,6 +11385,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11144,6 +11427,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11183,6 +11467,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11224,6 +11509,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11265,6 +11551,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11304,6 +11591,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11343,6 +11631,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11382,6 +11671,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11421,6 +11711,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11460,6 +11751,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11499,6 +11791,7 @@ const machine_t machines[] = { .gpio = 0, .device = &es1371_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11538,6 +11831,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11579,6 +11873,7 @@ const machine_t machines[] = { .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11618,6 +11913,7 @@ const machine_t machines[] = { .gpio = 0, .device = &voodoo_3_2000_agp_onboard_8m_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11659,6 +11955,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11700,6 +11997,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11739,6 +12037,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11778,6 +12077,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11817,6 +12117,7 @@ const machine_t machines[] = { .gpio = 0, .device = &es1371_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11859,6 +12160,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11901,6 +12203,7 @@ const machine_t machines[] = { .gpio = 0, .device = &es1371_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11941,6 +12244,7 @@ const machine_t machines[] = { .gpio = 0, .device = &cmi8738_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -11983,6 +12287,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12022,6 +12327,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12064,6 +12370,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12105,6 +12412,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12144,6 +12452,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12183,6 +12492,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12224,6 +12534,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12265,6 +12576,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12306,6 +12618,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12345,6 +12658,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12384,6 +12698,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12423,6 +12738,7 @@ const machine_t machines[] = { .gpio = 0, .device = &cmi8738_onboard_device, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12464,6 +12780,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12502,6 +12819,7 @@ const machine_t machines[] = { .gpio = 0, .device = NULL, .fdc_device = NULL, + .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL @@ -12589,6 +12907,16 @@ machine_get_fdc_device(int m) return (NULL); } + +const device_t * +machine_get_sio_device(int m) +{ + if (machines[m].sio_device) + return (machines[m].sio_device); + + return (NULL); +} + const device_t * machine_get_vid_device(int m) { From 3f62a95ca18a8f7550e0dd28114cadeb1c5a3d30 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sat, 11 Feb 2023 14:34:35 -0300 Subject: [PATCH 09/16] VIA PIPC: Poll legacy audio only if enabled, improves performance on 686A/B machines --- src/chipset/via_pipc.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/chipset/via_pipc.c b/src/chipset/via_pipc.c index 4f640920e..a568032b4 100644 --- a/src/chipset/via_pipc.c +++ b/src/chipset/via_pipc.c @@ -851,9 +851,28 @@ pipc_sb_handlers(pipc_t *dev, uint8_t modem) if (dev->ac97_regs[0][0x42] & 0x04) { io_sethandler(0x388, 4, pipc_fm_read, NULL, NULL, pipc_fm_write, NULL, NULL, dev); +#ifndef VIA_PIPC_FM_EMULATION + dev->sb->opl_enabled = 1; + } else { + dev->sb->opl_enabled = 0; +#endif } } +static void +pipc_sb_get_buffer(int32_t *buffer, int len, void *priv) +{ + pipc_t *dev = (pipc_t *) priv; + + /* Poll SB audio only if the legacy block is enabled. */ +#ifdef VIA_PIPC_FM_EMULATION + if (dev->ac97_regs[0][0x42] & 0x01) +#else + if (dev->ac97_regs[0][0x42] & 0x05) +#endif + sb_get_buffer_sbpro(buffer, len, dev->sb); +} + static uint8_t pipc_read(int func, int addr, void *priv) { @@ -1599,10 +1618,7 @@ pipc_init(const device_t *info) ac97_via_set_slot(dev->ac97, dev->slot, PCI_INTC); dev->sb = device_add_inst(&sb_pro_compat_device, 2); -#ifndef VIA_PIPC_FM_EMULATION - dev->sb->opl_enabled = 1; -#endif - sound_add_handler(sb_get_buffer_sbpro, dev->sb); + sound_add_handler(pipc_sb_get_buffer, dev); dev->gameport = gameport_add(&gameport_sio_device); From 476e8eeead02f7283d041039a1865db7c4050285 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 11 Feb 2023 21:39:21 +0100 Subject: [PATCH 10/16] Fixes to pci_dummy.c. --- src/pci_dummy.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/pci_dummy.c b/src/pci_dummy.c index 22ed1522d..03141fa2c 100644 --- a/src/pci_dummy.c +++ b/src/pci_dummy.c @@ -18,11 +18,10 @@ static uint8_t card = 0; static void pci_dummy_interrupt(int set) { - if (set) { + if (set) pci_set_irq(card, pci_regs[0x3D]); - } else { + else pci_clear_irq(card, pci_regs[0x3D]); - } } static uint8_t @@ -111,7 +110,7 @@ pci_dummy_pci_read(int func, int addr, void *priv) { pclog("AB0B:071A: PCI_Read(%d, %04x)\n", func, addr); - switch (addr) { + if (func == 0x00) switch (addr) { case 0x00: return 0x1A; case 0x01: @@ -168,7 +167,8 @@ pci_dummy_pci_read(int func, int addr, void *priv) default: return 0x00; - } + } else + return 0xff; } static void @@ -178,7 +178,7 @@ pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) pclog("AB0B:071A: PCI_Write(%d, %04x, %02x)\n", func, addr, val); - switch (addr) { + if (func == 0x00) switch (addr) { case 0x04: /* PCI_COMMAND_LO */ valxor = (val & 0x03) ^ pci_regs[addr]; if (valxor & PCI_COMMAND_IO) { @@ -212,9 +212,8 @@ pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) /* We're done, so get out of the here. */ if (pci_regs[4] & PCI_COMMAND_IO) { - if ((pci_bar[0].addr) != 0) { + if ((pci_bar[0].addr) != 0) pci_dummy_io_set(); - } } break; @@ -233,5 +232,5 @@ pci_dummy_init(void) pci_bar[0].addr_regs[0] = 0x01; pci_regs[0x04] = 0x03; - pci_regs[0x3D] = PCI_INTD; + pci_regs[0x3D] = PCI_INTA; } From c6359517c160ec11d4177b47cebec8cf5c22ae4f Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 11 Feb 2023 22:15:50 +0100 Subject: [PATCH 11/16] More pci_dummy.c fixes and it's now instantiable and the exposed init function initializes it for PCI slot brute force purposes. --- src/include/86box/pci_dummy.h | 2 +- src/pci_dummy.c | 243 ++++++++++++++++++++-------------- 2 files changed, 147 insertions(+), 98 deletions(-) diff --git a/src/include/86box/pci_dummy.h b/src/include/86box/pci_dummy.h index d221ddd2e..104437b6e 100644 --- a/src/include/86box/pci_dummy.h +++ b/src/include/86box/pci_dummy.h @@ -1,6 +1,6 @@ #ifndef EMU_PCI_DUMMY_H #define EMU_PCI_DUMMY_H -extern void pci_dummy_init(void); +extern void pci_dummy_init(int min_slot, int max_slot, int nb_slot, int sb_slot); #endif /*EMU_PCI_DUMMY_H*/ diff --git a/src/pci_dummy.c b/src/pci_dummy.c index 03141fa2c..a54b63260 100644 --- a/src/pci_dummy.c +++ b/src/pci_dummy.c @@ -1,57 +1,68 @@ /* This can also serve as a sample PCI device. */ #include #include +#include #include #include #include <86box/86box.h> +#include <86box/device.h> #include <86box/io.h> #include <86box/pci.h> #include <86box/pci_dummy.h> -static uint8_t pci_regs[256]; +typedef struct +{ + uint8_t pci_regs[256]; -static bar_t pci_bar[2]; + bar_t pci_bar[2]; -static uint8_t interrupt_on = 0x00; -static uint8_t card = 0; + uint8_t card, interrupt_on; +} pci_dummy_t; static void -pci_dummy_interrupt(int set) +pci_dummy_interrupt(int set, pci_dummy_t *dev) { if (set) - pci_set_irq(card, pci_regs[0x3D]); + pci_set_irq(dev->card, dev->pci_regs[0x3D]); else - pci_clear_irq(card, pci_regs[0x3D]); + pci_clear_irq(dev->card, dev->pci_regs[0x3D]); } static uint8_t pci_dummy_read(uint16_t Port, void *p) { - uint8_t ret = 0; + pci_dummy_t *dev = (pci_dummy_t *) p; + uint8_t ret = 0xff; switch (Port & 0x20) { case 0x00: - return 0x1A; + ret = 0x1a; + break; case 0x01: - return 0x07; + ret = 0x07; + break; case 0x02: - return 0x0B; + ret = 0x0b; + break; case 0x03: - return 0xAB; + ret = 0xab; + break; case 0x04: - return pci_regs[0x3C]; + ret = dev->pci_regs[0x3c]; + break; case 0x05: - return pci_regs[0x3D]; + ret = dev->pci_regs[0x3d]; + break; case 0x06: - ret = interrupt_on; - if (interrupt_on) { - pci_dummy_interrupt(0); - interrupt_on = 0; + ret = dev->interrupt_on; + if (dev->interrupt_on) { + pci_dummy_interrupt(0, dev); + dev->interrupt_on = 0; } - return ret; - default: - return 0x00; + break; } + + return ret; } static uint16_t @@ -69,11 +80,13 @@ pci_dummy_readl(uint16_t Port, void *p) static void pci_dummy_write(uint16_t Port, uint8_t Val, void *p) { + pci_dummy_t *dev = (pci_dummy_t *) p; + switch (Port & 0x20) { case 0x06: - if (!interrupt_on) { - interrupt_on = 1; - pci_dummy_interrupt(1); + if (!dev->interrupt_on) { + dev->interrupt_on = 1; + pci_dummy_interrupt(1, dev); } return; default: @@ -94,143 +107,179 @@ pci_dummy_writel(uint16_t Port, uint32_t Val, void *p) } static void -pci_dummy_io_remove(void) +pci_dummy_io_remove(pci_dummy_t *dev) { - io_removehandler(pci_bar[0].addr, 0x0020, pci_dummy_read, pci_dummy_readw, pci_dummy_readl, pci_dummy_write, pci_dummy_writew, pci_dummy_writel, NULL); + io_removehandler(dev->pci_bar[0].addr, 0x0020, pci_dummy_read, pci_dummy_readw, pci_dummy_readl, pci_dummy_write, pci_dummy_writew, pci_dummy_writel, dev); } static void -pci_dummy_io_set(void) +pci_dummy_io_set(pci_dummy_t *dev) { - io_sethandler(pci_bar[0].addr, 0x0020, pci_dummy_read, pci_dummy_readw, pci_dummy_readl, pci_dummy_write, pci_dummy_writew, pci_dummy_writel, NULL); + io_sethandler(dev->pci_bar[0].addr, 0x0020, pci_dummy_read, pci_dummy_readw, pci_dummy_readl, pci_dummy_write, pci_dummy_writew, pci_dummy_writel, dev); } static uint8_t pci_dummy_pci_read(int func, int addr, void *priv) { - pclog("AB0B:071A: PCI_Read(%d, %04x)\n", func, addr); + pci_dummy_t *dev = (pci_dummy_t *) priv; + uint8_t ret = 0xff; if (func == 0x00) switch (addr) { - case 0x00: - return 0x1A; - case 0x01: - return 0x07; + case 0x00: case 0x2c: + ret = 0x1a; + break; + case 0x01: case 0x2d: + ret = 0x07; break; - case 0x02: - return 0x0B; - case 0x03: - return 0xAB; + case 0x02: case 0x2e: + ret = 0x0b; + break; + case 0x03: case 0x2f: + ret = 0xab; + break; case 0x04: /* PCI_COMMAND_LO */ case 0x05: /* PCI_COMMAND_HI */ - return pci_regs[addr]; - case 0x06: /* PCI_STATUS_LO */ case 0x07: /* PCI_STATUS_HI */ - return pci_regs[addr]; + case 0x0a: case 0x0b: + case 0x3c: /* PCI_ILR */ + ret = dev->pci_regs[addr]; + break; - case 0x08: - case 0x09: - return 0x00; - - case 0x0A: - return pci_regs[addr]; - - case 0x0B: - return pci_regs[addr]; + case 0x08: /* Techncially, revision, but we return the card (slot) here. */ + ret = dev->card; + break; case 0x10: /* PCI_BAR 7:5 */ - return (pci_bar[0].addr_regs[0] & 0xe0) | 0x01; + ret = (dev->pci_bar[0].addr_regs[0] & 0xe0) | 0x01; + break; case 0x11: /* PCI_BAR 15:8 */ - return pci_bar[0].addr_regs[1]; - case 0x12: /* PCI_BAR 23:16 */ - return pci_bar[0].addr_regs[2]; - case 0x13: /* PCI_BAR 31:24 */ - return pci_bar[0].addr_regs[3]; + ret = dev->pci_bar[0].addr_regs[1]; + break; - case 0x2C: - return 0x1A; - case 0x2D: - return 0x07; - - case 0x2E: - return 0x0B; - case 0x2F: - return 0xAB; - - case 0x3C: /* PCI_ILR */ - return pci_regs[addr]; - - case 0x3D: /* PCI_IPR */ - return pci_regs[addr]; + case 0x3d: /* PCI_IPR */ + ret = PCI_INTA; + break; default: - return 0x00; - } else - return 0xff; + ret = 0x00; + break; + } + + pclog("AB0B:071A: PCI_Read(%d, %04X) = %02X\n", func, addr, ret); + + return ret; } static void pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) { + pci_dummy_t *dev = (pci_dummy_t *) priv; uint8_t valxor; pclog("AB0B:071A: PCI_Write(%d, %04x, %02x)\n", func, addr, val); if (func == 0x00) switch (addr) { case 0x04: /* PCI_COMMAND_LO */ - valxor = (val & 0x03) ^ pci_regs[addr]; + valxor = (val & 0x03) ^ dev->pci_regs[addr]; if (valxor & PCI_COMMAND_IO) { - pci_dummy_io_remove(); - if (((pci_bar[0].addr & 0xffe0) != 0) && (val & PCI_COMMAND_IO)) { - pci_dummy_io_set(); - } + pci_dummy_io_remove(dev); + if ((dev->pci_bar[0].addr != 0) && (val & PCI_COMMAND_IO)) + pci_dummy_io_set(dev); } - pci_regs[addr] = val & 0x03; + dev->pci_regs[addr] = val & 0x03; break; case 0x10: /* PCI_BAR */ val &= 0xe0; /* 0xe0 acc to RTL DS */ - val |= 0x01; /* re-enable IOIN bit */ /*FALLTHROUGH*/ case 0x11: /* PCI_BAR */ - case 0x12: /* PCI_BAR */ - case 0x13: /* PCI_BAR */ /* Remove old I/O. */ - pci_dummy_io_remove(); + pci_dummy_io_remove(dev); /* Set new I/O as per PCI request. */ - pci_bar[0].addr_regs[addr & 3] = val; + dev->pci_bar[0].addr_regs[addr & 3] = val; /* Then let's calculate the new I/O base. */ - pci_bar[0].addr &= 0xffe0; + dev->pci_bar[0].addr &= 0xffe0; /* Log the new base. */ - pclog("AB0B:071A: PCI: new I/O base is %04X\n", pci_bar[0].addr); + pclog("AB0B:071A: PCI: new I/O base is %04X\n", dev->pci_bar[0].addr); /* We're done, so get out of the here. */ - if (pci_regs[4] & PCI_COMMAND_IO) { - if ((pci_bar[0].addr) != 0) - pci_dummy_io_set(); + if (dev->pci_regs[4] & PCI_COMMAND_IO) { + if ((dev->pci_bar[0].addr) != 0) + pci_dummy_io_set(dev); } break; - case 0x3C: /* PCI_ILR */ + case 0x3c: /* PCI_ILR */ pclog("AB0B:071A: IRQ now: %i\n", val); - pci_regs[addr] = val; + dev->pci_regs[addr] = val; return; } } -void -pci_dummy_init(void) +static void +pci_dummy_reset(void *priv) { - card = pci_add_card(PCI_ADD_NORMAL, pci_dummy_pci_read, pci_dummy_pci_write, NULL); + pci_dummy_t *dev = (pci_dummy_t *) priv; - pci_bar[0].addr_regs[0] = 0x01; - pci_regs[0x04] = 0x03; + /* Lower the IRQ. */ + pci_dummy_interrupt(0, dev); - pci_regs[0x3D] = PCI_INTA; + /* Disable I/O and memory accesses. */ + pci_dummy_pci_write(0x00, 0x04, 0x00, dev); + + /* Zero all the registers. */ + memset(dev, 0x00, sizeof(pci_dummy_t)); +} + +static void +pci_dummy_close(void *priv) +{ + pci_dummy_t *dev = (pci_dummy_t *) priv; + + free(dev); +} + +static void * +pci_dummy_card_init(const device_t *info) +{ + pci_dummy_t *dev = (pci_dummy_t *) calloc(1, sizeof(pci_dummy_t)); + + dev->card = pci_add_card(PCI_ADD_NORMAL, pci_dummy_pci_read, pci_dummy_pci_write, dev); + + return dev; +} + +const device_t pci_dummy_device = { + .name = "Dummy Device (PCI)", + .internal_name = "pci_dummy", + .flags = DEVICE_PCI, + .local = 0, + .init = pci_dummy_card_init, + .close = pci_dummy_close, + .reset = pci_dummy_reset, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +void +pci_dummy_init(int min_slot, int max_slot, int nb_slot, int sb_slot) +{ + int i = 0, j = 1; + + for (i = min_slot; i <= max_slot; i++) { + if ((i != nb_slot) && (i != sb_slot)) { + pci_register_slot(j, PCI_CARD_NORMAL, 1, 3, 2, 4); + device_add_inst(&pci_dummy_device, j); + j++; + } + } } From 050c0c0e18d5d3df36996415e992863ec968d985 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 11 Feb 2023 22:17:41 +0100 Subject: [PATCH 12/16] Added PCI_DUMMY flag to the Mingw makefile. --- src/win/Makefile.mingw | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index 0c34aeaa4..9c32a77da 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -76,6 +76,9 @@ ifeq ($(DEV_BUILD), y) ifndef PAS16 PAS16 := y endif + ifndef PCI_DUMMY + PCI_DUMMY := y + endif ifndef SIO_DETECT SIO_DETECT := y endif @@ -137,6 +140,9 @@ else ifndef PAS16 PAS16 := n endif + ifndef PCI_DUMMY + PCI_DUMMY := n + endif ifndef SIO_DETECT SIO_DETECT := n endif @@ -476,6 +482,11 @@ ifeq ($(DEV_BRANCH), y) DEVBROBJ += snd_pas16.o endif + ifeq ($(PCI_DUMMY), y) + OPTS += -DUSE_PCI_DUMMY + DEVBROBJ += pci_dummy.o + endif + ifeq ($(SIO_DETECT), y) OPTS += -DUSE_SIO_DETECT DEVBROBJ += sio_detect.o From e395c59254c22fcdb0855020680098999467ef05 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 11 Feb 2023 22:51:00 +0100 Subject: [PATCH 13/16] Very small fix to pci_dummy.c. --- src/pci_dummy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pci_dummy.c b/src/pci_dummy.c index a54b63260..abc7639b4 100644 --- a/src/pci_dummy.c +++ b/src/pci_dummy.c @@ -277,7 +277,7 @@ pci_dummy_init(int min_slot, int max_slot, int nb_slot, int sb_slot) for (i = min_slot; i <= max_slot; i++) { if ((i != nb_slot) && (i != sb_slot)) { - pci_register_slot(j, PCI_CARD_NORMAL, 1, 3, 2, 4); + pci_register_slot(i, PCI_CARD_NORMAL, 1, 3, 2, 4); device_add_inst(&pci_dummy_device, j); j++; } From a76e9f9d7703ec49ce8c6da7810333857f7a98ef Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 11 Feb 2023 23:58:43 +0100 Subject: [PATCH 14/16] Removed excess pci_dummy.c logging and added LOG=y to the Mingw makefile to compile without -mwindows. --- src/pci_dummy.c | 16 +++++++--------- src/win/Makefile.mingw | 12 +++++++++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/pci_dummy.c b/src/pci_dummy.c index abc7639b4..b3a5c6eee 100644 --- a/src/pci_dummy.c +++ b/src/pci_dummy.c @@ -23,9 +23,9 @@ static void pci_dummy_interrupt(int set, pci_dummy_t *dev) { if (set) - pci_set_irq(dev->card, dev->pci_regs[0x3D]); + pci_set_irq(dev->card, PCI_INTA); else - pci_clear_irq(dev->card, dev->pci_regs[0x3D]); + pci_clear_irq(dev->card, PCI_INTA); } static uint8_t @@ -88,9 +88,7 @@ pci_dummy_write(uint16_t Port, uint8_t Val, void *p) dev->interrupt_on = 1; pci_dummy_interrupt(1, dev); } - return; - default: - return; + break; } } @@ -168,7 +166,7 @@ pci_dummy_pci_read(int func, int addr, void *priv) break; } - pclog("AB0B:071A: PCI_Read(%d, %04X) = %02X\n", func, addr, ret); + // pclog("AB0B:071A: PCI_Read(%d, %04X) = %02X\n", func, addr, ret); return ret; } @@ -179,7 +177,7 @@ pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) pci_dummy_t *dev = (pci_dummy_t *) priv; uint8_t valxor; - pclog("AB0B:071A: PCI_Write(%d, %04x, %02x)\n", func, addr, val); + // pclog("AB0B:071A: PCI_Write(%d, %04X, %02X)\n", func, addr, val); if (func == 0x00) switch (addr) { case 0x04: /* PCI_COMMAND_LO */ @@ -207,7 +205,7 @@ pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) dev->pci_bar[0].addr &= 0xffe0; /* Log the new base. */ - pclog("AB0B:071A: PCI: new I/O base is %04X\n", dev->pci_bar[0].addr); + // pclog("AB0B:071A: PCI: new I/O base is %04X\n", dev->pci_bar[0].addr); /* We're done, so get out of the here. */ if (dev->pci_regs[4] & PCI_COMMAND_IO) { @@ -217,7 +215,7 @@ pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv) break; case 0x3c: /* PCI_ILR */ - pclog("AB0B:071A: IRQ now: %i\n", val); + pclog("AB0B:071A Device %02X: IRQ now: %i\n", dev->card, val); dev->pci_regs[addr] = val; return; } diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index 9c32a77da..747bbda2d 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -782,13 +782,19 @@ ifdef EXOBJ OBJ += $(EXOBJ) endif +ifeq ($(LOG), y) + MWIN := -lcomdlg32 +else + MWIN := -mwindows +endif + ifeq ($(OPENAL), y) - LIBS := -mwindows -lopenal -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 + LIBS := $(MWIN) -lopenal -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 else ifeq ($(FAUDIO), y) - LIBS := -mwindows -lfaudio -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 + LIBS := $(MWIN) -lfaudio -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 else - LIBS := -mwindows -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 + LIBS := $(MWIN) -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32 endif endif From 16b9a5d3e04c1d6805ddea7ab1364dc3f9e8f212 Mon Sep 17 00:00:00 2001 From: "Joakim L. Gilje" Date: Mon, 13 Feb 2023 17:33:40 +0100 Subject: [PATCH 15/16] TigerVNC pointer needs the same workaround as previously added for another VNC server, (#3103) but it's pointer is named differently. In addition, it also publishes a pointer using the XTEST pointer name already added as a workaround. So, if a TigerVNC pointer is detected, it should be selected first. --- src/qt/xinput2_mouse.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/qt/xinput2_mouse.cpp b/src/qt/xinput2_mouse.cpp index e73f36869..0ce51c5ab 100644 --- a/src/qt/xinput2_mouse.cpp +++ b/src/qt/xinput2_mouse.cpp @@ -81,9 +81,17 @@ xinput2_get_xtest_pointer() { /* The XTEST pointer events injected by VNC servers to move the cursor always report absolute coordinates, despite XTEST declaring relative axes (related: SDL issue 1836). - This looks for the XTEST pointer so that we can assume it's absolute as a workaround. */ + This looks for the XTEST pointer so that we can assume it's absolute as a workaround. + + TigerVNC publishes both the XTEST pointer and a TigerVNC pointer, but actual + RawMotion events are published using the TigerVNC pointer */ int devs; XIDeviceInfo *info = XIQueryDevice(disp, XIAllDevices, &devs), *dev; + for (int i = 0; i < devs; i++) { + dev = &info[i]; + if ((dev->use == XISlavePointer) && !strcmp(dev->name, "TigerVNC pointer")) + return dev->deviceid; + } for (int i = 0; i < devs; i++) { dev = &info[i]; if ((dev->use == XISlavePointer) && !strcmp(dev->name, "Virtual core XTEST pointer")) From f643391975ca6a7ca166e08dc93f4759a906a645 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 14 Feb 2023 20:37:58 -0500 Subject: [PATCH 16/16] Serial Passthrough --- src/86box.c | 6 + src/config.c | 19 ++ src/device.c | 9 + src/device/CMakeLists.txt | 5 +- src/device/serial.c | 127 ++++++- src/device/serial_passthrough.c | 357 ++++++++++++++++++++ src/include/86box/device.h | 7 +- src/include/86box/plat_serial_passthrough.h | 38 +++ src/include/86box/resource.h | 8 + src/include/86box/serial.h | 15 +- src/include/86box/serial_passthrough.h | 61 ++++ src/include/86box/win_opengl.h | 2 +- src/include/discord_game_sdk.h | 2 +- src/qt/CMakeLists.txt | 6 + src/qt/qt_deviceconfig.cpp | 70 ++++ src/qt/qt_main.cpp | 2 +- src/qt/qt_settingsports.cpp | 63 ++++ src/qt/qt_settingsports.hpp | 24 ++ src/qt/qt_settingsports.ui | 166 ++++++--- src/qt/qt_winmanagerfilter.cpp | 2 +- src/qt/qt_winrawinputfilter.cpp | 2 +- src/qt/qt_winrawinputfilter.hpp | 2 +- src/unix/CMakeLists.txt | 4 +- src/unix/unix_serial_passthrough.c | 314 +++++++++++++++++ src/win/CMakeLists.txt | 5 +- src/win/Makefile.mingw | 4 +- src/win/languages/cs-CZ.rc | 4 + src/win/languages/de-DE.rc | 4 + src/win/languages/dialogs.rc | 56 ++- src/win/languages/en-GB.rc | 4 + src/win/languages/en-US.rc | 4 + src/win/languages/es-ES.rc | 4 + src/win/languages/fi-FI.rc | 4 + src/win/languages/fr-FR.rc | 4 + src/win/languages/hr-HR.rc | 4 + src/win/languages/hu-HU.rc | 4 + src/win/languages/it-IT.rc | 4 + src/win/languages/ja-JP.rc | 4 + src/win/languages/ko-KR.rc | 4 + src/win/languages/pl-PL.rc | 4 + src/win/languages/pt-BR.rc | 4 + src/win/languages/pt-PT.rc | 4 + src/win/languages/ru-RU.rc | 4 + src/win/languages/sl-SI.rc | 4 + src/win/languages/tr-TR.rc | 4 + src/win/languages/uk-UA.rc | 4 + src/win/languages/zh-CN.rc | 4 + src/win/languages/zh-TW.rc | 4 + src/win/win_opengl.c | 2 +- src/win/win_serial_passthrough.c | 223 ++++++++++++ src/win/win_settings.c | 28 +- src/win/win_toolbar.c | 4 +- 52 files changed, 1622 insertions(+), 95 deletions(-) create mode 100644 src/device/serial_passthrough.c create mode 100644 src/include/86box/plat_serial_passthrough.h create mode 100644 src/include/86box/serial_passthrough.h create mode 100644 src/unix/unix_serial_passthrough.c create mode 100644 src/win/win_serial_passthrough.c diff --git a/src/86box.c b/src/86box.c index fb96ed87e..11d5c1ff8 100644 --- a/src/86box.c +++ b/src/86box.c @@ -19,11 +19,14 @@ * Copyright 2017-2020 Fred N. van Kempen. * Copyright 2021 Laci bá' * Copyright 2021 dob205 + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. */ #include #include #include #include +#include #include #include #include @@ -68,6 +71,7 @@ #include <86box/isartc.h> #include <86box/lpt.h> #include <86box/serial.h> +#include <86box/serial_passthrough.h> #include <86box/keyboard.h> #include <86box/mouse.h> #include <86box/gameport.h> @@ -162,6 +166,7 @@ int video_filter_method = 1; /* (C) video */ int video_vsync = 0; /* (C) video */ int video_framerate = -1; /* (C) video */ char video_shader[512] = { '\0' }; /* (C) video */ +bool serial_passthrough_enabled[SERIAL_MAX] = { 0, 0, 0, 0 }; /* (C) activation and kind of pass-through for serial ports */ int bugger_enabled = 0; /* (C) enable ISAbugger */ int postcard_enabled = 0; /* (C) enable POST card */ int isamem_type[ISAMEM_MAX] = { 0, 0, 0, 0 }; /* (C) enable ISA mem cards */ @@ -1038,6 +1043,7 @@ pc_reset_hard_init(void) /* Reset and reconfigure the serial ports. */ serial_standalone_init(); + serial_passthrough_init(); /* Reset and reconfigure the Sound Card layer. */ sound_card_reset(); diff --git a/src/config.c b/src/config.c index a0f9a71f0..056a00887 100644 --- a/src/config.c +++ b/src/config.c @@ -20,6 +20,8 @@ * Copyright 2016-2019 Miran Grca. * Copyright 2017-2019 Fred N. van Kempen. * Copyright 2018-2019 David Hrdlička. + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. * * NOTE: Forcing config files to be in Unicode encoding breaks * it on Windows XP, and possibly also Vista. Use the @@ -54,6 +56,8 @@ #include <86box/fdc.h> #include <86box/fdc_ext.h> #include <86box/gameport.h> +#include <86box/serial.h> +#include <86box/serial_passthrough.h> #include <86box/machine.h> #include <86box/mouse.h> #include <86box/thread.h> @@ -81,6 +85,7 @@ static ini_t config; static int backwards_compat = 0; static int backwards_compat2 = 0; +#define ENABLE_CONFIG_LOG 1 #ifdef ENABLE_CONFIG_LOG int config_do_log = ENABLE_CONFIG_LOG; @@ -834,6 +839,8 @@ load_ports(void) char temp[512]; int c, d; + memset(temp, 0, sizeof(temp)); + for (c = 0; c < SERIAL_MAX; c++) { sprintf(temp, "serial%d_enabled", c + 1); com_ports[c].enabled = !!ini_section_get_int(cat, temp, (c >= 2) ? 0 : 1); @@ -843,6 +850,12 @@ load_ports(void) p = (char *) ini_section_get_string(cat, temp, "none"); com_ports[c].device = com_device_get_from_internal_name(p); */ + + sprintf(temp, "serial%d_passthrough_enabled", c + 1); + serial_passthrough_enabled[c] = !!ini_section_get_int(cat, temp, 0); + + if (serial_passthrough_enabled[c]) + config_log("Serial Port %d: passthrough enabled.\n\n", c+1); } for (c = 0; c < PARALLEL_MAX; c++) { @@ -2458,6 +2471,12 @@ save_ports(void) ini_section_set_string(cat, temp, (char *) com_device_get_internal_name(com_ports[c].device)); */ + + if (com_ports[c].enabled) + if (serial_passthrough_enabled[c]) { + sprintf(temp, "serial%d_passthrough_enabled", c + 1); + ini_section_set_int(cat, temp, 1); + } } for (c = 0; c < PARALLEL_MAX; c++) { diff --git a/src/device.c b/src/device.c index 12d06580a..52d2bb18e 100644 --- a/src/device.c +++ b/src/device.c @@ -18,6 +18,8 @@ * Copyright 2017-2019 Fred N. van Kempen. * Copyright 2016-2019 Miran Grca. * Copyright 2008-2019 Sarah Walker. + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -91,6 +93,7 @@ device_set_context(device_context_t *c, const device_t *d, int inst) memset(c, 0, sizeof(device_context_t)); c->dev = d; + c->instance = inst; if (inst) { sprintf(c->name, "%s #%i", d->name, inst); @@ -556,6 +559,12 @@ device_force_redraw(void) } } +const int +device_get_instance(void) +{ + return device_current.instance; +} + const char * device_get_config_string(const char *s) { diff --git a/src/device/CMakeLists.txt b/src/device/CMakeLists.txt index ed8464647..41b9930c6 100644 --- a/src/device/CMakeLists.txt +++ b/src/device/CMakeLists.txt @@ -11,13 +11,16 @@ # Authors: David Hrdlička, # # Copyright 2020-2021 David Hrdlička. +# Copyright 2021 Andreas J. Reichel. +# Copyright 2021-2022 Jasmine Iwanek. # add_library(dev OBJECT bugger.c cassette.c cartridge.c hasp.c hwm.c hwm_lm75.c hwm_lm78.c hwm_gl518sm.c hwm_vt82c686.c ibm_5161.c isamem.c isartc.c ../lpt.c pci_bridge.c postcard.c serial.c clock_ics9xxx.c isapnp.c i2c.c i2c_gpio.c smbus_piix4.c smbus_ali7101.c keyboard.c keyboard_xt.c keyboard_at.c - mouse.c mouse_bus.c mouse_serial.c mouse_ps2.c phoenix_486_jumper.c) + mouse.c mouse_bus.c mouse_serial.c mouse_ps2.c phoenix_486_jumper.c + serial_passthrough.c) if(ISAMEM_RAMPAGE) target_compile_definitions(dev PRIVATE USE_ISAMEM_RAMPAGE) diff --git a/src/device/serial.c b/src/device/serial.c index dad2ed7f5..7d90a0fe8 100644 --- a/src/device/serial.c +++ b/src/device/serial.c @@ -93,6 +93,8 @@ serial_transmit_period(serial_t *dev) /* Bit period based on DLAB. */ dev->transmit_period = (16000000.0 * ddlab) / dev->clock_src; + if (dev->sd && dev->sd->transmit_period_callback) + dev->sd->transmit_period_callback(dev, dev->sd->priv, dev->transmit_period); } void @@ -161,7 +163,7 @@ write_fifo(serial_t *dev, uint8_t dat) dev->lsr |= 0x01; dev->int_status |= SERIAL_INT_RECEIVE; } - if (dev->rcvr_fifo_pos < 15) + if (dev->rcvr_fifo_pos < (dev->rcvr_fifo_len - 1)) dev->rcvr_fifo_pos++; else dev->rcvr_fifo_full = 1; @@ -175,6 +177,8 @@ write_fifo(serial_t *dev, uint8_t dat) dev->dat = dat; dev->lsr |= 0x01; dev->int_status |= SERIAL_INT_RECEIVE; + if (dev->lsr & 0x02) + dev->int_status |= SERIAL_INT_LSR; serial_update_ints(dev); } } @@ -311,6 +315,22 @@ serial_timeout_timer(void *priv) serial_update_ints(dev); } +void +serial_device_timeout(void *priv) +{ + serial_t *dev = (serial_t *) priv; + +#ifdef ENABLE_SERIAL_LOG + serial_log("serial_device_timeout()\n"); +#endif + + if (!dev->fifo_enabled) { + dev->lsr |= 0x10; + dev->int_status |= SERIAL_INT_LSR; + serial_update_ints(dev); + } +} + static void serial_update_speed(serial_t *dev) { @@ -331,6 +351,63 @@ serial_reset_fifo(serial_t *dev) dev->rcvr_fifo_full = 0; } +void +serial_set_dsr(serial_t *dev, uint8_t enabled) +{ + if (dev->mctrl & 0x10) + return; + + dev->msr &= ~0x2; + dev->msr |= !!((dev->msr & 0x20) ^ (enabled << 5)) << 1; + dev->msr &= ~0x20; + dev->msr |= (!!enabled) << 5; + dev->msr_set &= ~0x20; + dev->msr_set |= (!!enabled) << 5; + + if (dev->msr & 0x2) { + dev->int_status |= SERIAL_INT_MSR; + serial_update_ints(dev); + } +} + +void +serial_set_cts(serial_t *dev, uint8_t enabled) +{ + if (dev->mctrl & 0x10) + return; + + dev->msr &= ~0x1; + dev->msr |= !!((dev->msr & 0x10) ^ (enabled << 4)); + dev->msr &= ~0x10; + dev->msr |= (!!enabled) << 4; + dev->msr_set &= ~0x10; + dev->msr_set |= (!!enabled) << 4; + + if (dev->msr & 0x1) { + dev->int_status |= SERIAL_INT_MSR; + serial_update_ints(dev); + } +} + +void +serial_set_dcd(serial_t *dev, uint8_t enabled) +{ + if (dev->mctrl & 0x10) + return; + + dev->msr &= ~0x8; + dev->msr |= !!((dev->msr & 0x80) ^ (enabled << 7)); + dev->msr &= ~0x80; + dev->msr |= (!!enabled) << 7; + dev->msr_set &= ~0x80; + dev->msr_set |= (!!enabled) << 7; + + if (dev->msr & 0x8) { + dev->int_status |= SERIAL_INT_MSR; + serial_update_ints(dev); + } +} + void serial_set_clock_src(serial_t *dev, double clock_src) { @@ -431,7 +508,7 @@ serial_write(uint16_t addr, uint8_t val, void *p) case 3: old = dev->lcr; dev->lcr = val; - if ((old ^ val) & 0x0f) { + if ((old ^ val) & 0x3f) { /* Data bits + start bit. */ dev->bits = ((dev->lcr & 0x03) + 5) + 1; /* Stop bits. */ @@ -444,11 +521,14 @@ serial_write(uint16_t addr, uint8_t val, void *p) serial_transmit_period(dev); serial_update_speed(dev); + + if (dev->sd && dev->sd->lcr_callback) + dev->sd->lcr_callback(dev, dev->sd->priv, dev->lcr); } break; case 4: if ((val & 2) && !(dev->mctrl & 2)) { - if (dev->sd->rcr_callback) + if (dev->sd && dev->sd->rcr_callback) dev->sd->rcr_callback(dev, dev->sd->priv); } if (!(val & 8) && (dev->mctrl & 8)) @@ -487,7 +567,7 @@ serial_write(uint16_t addr, uint8_t val, void *p) serial_update_ints(dev); break; case 6: - dev->msr = val; + dev->msr = (val & 0xF0) | (dev->msr & 0x0F); if (dev->msr & 0x0f) dev->int_status |= SERIAL_INT_MSR; serial_update_ints(dev); @@ -521,11 +601,15 @@ serial_read(uint16_t addr, void *p) ret = dev->rcvr_fifo[0]; dev->rcvr_fifo_full = 0; + + for (i = 1; i < 16; i++) + dev->rcvr_fifo[i - 1] = dev->rcvr_fifo[i]; + + dev->rcvr_fifo_pos--; + if (dev->rcvr_fifo_pos > 0) { - for (i = 1; i < 16; i++) - dev->rcvr_fifo[i - 1] = dev->rcvr_fifo[i]; serial_log("FIFO position %i: read %02X, next %02X\n", dev->rcvr_fifo_pos, ret, dev->rcvr_fifo[0]); - dev->rcvr_fifo_pos--; + /* At least one byte remains to be read, start the timeout timer so that a timeout is indicated in case of no read. */ timer_on_auto(&dev->timeout_timer, 4.0 * dev->bits * dev->transmit_period); @@ -571,7 +655,7 @@ serial_read(uint16_t addr, void *p) serial_update_ints(dev); break; case 6: - ret = dev->msr; + ret = dev->msr | dev->msr_set; dev->msr &= ~0x0f; dev->int_status &= ~SERIAL_INT_MSR; serial_update_ints(dev); @@ -630,9 +714,30 @@ serial_attach(int port, { serial_device_t *sd = &serial_devices[port]; - sd->rcr_callback = rcr_callback; - sd->dev_write = dev_write; - sd->priv = priv; + sd->rcr_callback = rcr_callback; + sd->dev_write = dev_write; + sd->transmit_period_callback = NULL; + sd->lcr_callback = NULL; + sd->priv = priv; + + return sd->serial; +} + +serial_t * +serial_attach_ex(int port, + void (*rcr_callback)(struct serial_s *serial, void *p), + void (*dev_write)(struct serial_s *serial, void *p, uint8_t data), + void (*transmit_period_callback)(struct serial_s *serial, void *p, double transmit_period), + void (*lcr_callback)(struct serial_s *serial, void *p, uint8_t data_bits), + void *priv) +{ + serial_device_t *sd = &serial_devices[port]; + + sd->rcr_callback = rcr_callback; + sd->dev_write = dev_write; + sd->transmit_period_callback = transmit_period_callback; + sd->lcr_callback = lcr_callback; + sd->priv = priv; return sd->serial; } diff --git a/src/device/serial_passthrough.c b/src/device/serial_passthrough.c new file mode 100644 index 000000000..6025f264a --- /dev/null +++ b/src/device/serial_passthrough.c @@ -0,0 +1,357 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * Implementation of Serial passthrough device. + * + * + * Authors: Andreas J. Reichel , + * Jasmine Iwanek + * + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. + */ + +#include +#include +#include +#include +#include +#include +#define HAVE_STDARG_H +#include <86box/86box.h> +#include <86box/device.h> +#include <86box/timer.h> +#include <86box/serial.h> +#include <86box/serial_passthrough.h> +#include <86box/plat_serial_passthrough.h> + +#define ENABLE_SERIAL_PASSTHROUGH_LOG 1 +#ifdef ENABLE_SERIAL_PASSTHROUGH_LOG +int serial_passthrough_do_log = ENABLE_SERIAL_PASSTHROUGH_LOG; + +static void +serial_passthrough_log(const char *fmt, ...) +{ + va_list ap; + + if (serial_passthrough_do_log) { + va_start(ap, fmt); + pclog_ex(fmt, ap); + va_end(ap); + } +} +#else +# define serial_passthrough_log(fmt, ...) +#endif + +void +serial_passthrough_init(void) +{ + int c; + + for (c = 0; c < SERIAL_MAX; c++) { + if (serial_passthrough_enabled[c]) { + /* Instance n for COM n */ + device_add_inst(&serial_passthrough_device, c + 1); + } + } +} + +static void +serial_passthrough_timers_off(serial_passthrough_t *dev) +{ + timer_stop(&dev->host_to_serial_timer); +} + +static void +serial_passthrough_write(serial_t *s, void *priv, uint8_t val) +{ + plat_serpt_write(priv, val); +} + +static void +host_to_serial_cb(void *priv) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) priv; + + uint8_t byte; + + /* write_fifo has no failure indication, but if we write to fast, the host + * can never fetch the bytes in time, so check if the fifo is full if in + * fifo mode or if lsr has bit 0 set if not in fifo mode */ + if ((dev->serial->type >= SERIAL_16550) && dev->serial->fifo_enabled) { + if (dev->serial->rcvr_fifo_full) { + goto no_write_to_machine; + } + } else { + if (dev->serial->lsr & 1) { + goto no_write_to_machine; + } + } + if (plat_serpt_read(dev, &byte)) { + // printf("got byte %02X\n", byte); + serial_write_fifo(dev->serial, byte); + // serial_set_dsr(dev->serial, 1); + } +no_write_to_machine: + // serial_device_timeout(dev->serial); + timer_on_auto(&dev->host_to_serial_timer, (1000000.0 / dev->baudrate) * (double) dev->bits); +} + +static void +serial_passthrough_rcr_cb(struct serial_s *serial, void *priv) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) priv; + + timer_stop(&dev->host_to_serial_timer); + /* FIXME: do something to dev->baudrate */ + timer_on_auto(&dev->host_to_serial_timer, (1000000.0 / dev->baudrate) * (double) dev->bits); + // serial_clear_fifo(dev->serial); +} + +static void +serial_passthrough_speed_changed(void *priv) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) priv; + + timer_stop(&dev->host_to_serial_timer); + /* FIXME: do something to dev->baudrate */ + timer_on_auto(&dev->host_to_serial_timer, (1000000.0 / dev->baudrate) * (double) dev->bits); + // serial_clear_fifo(dev->serial); +} + +static void +serial_passthrough_dev_close(void *priv) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) priv; + + /* Detach passthrough device from COM port */ + if (dev && dev->serial && dev->serial->sd) + memset(dev->serial->sd, 0, sizeof(serial_device_t)); + + plat_serpt_close(dev); + free(dev); +} + +void +serial_passthrough_transmit_period(serial_t *serial, void *p, double transmit_period) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + if (dev->mode != SERPT_MODE_HOSTSER) + return; + dev->baudrate = 1000000.0 / (transmit_period); + + serial_passthrough_speed_changed(p); + plat_serpt_set_params(dev); +} + +void +serial_passthrough_lcr_callback(serial_t *serial, void *p, uint8_t lcr) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + if (dev->mode != SERPT_MODE_HOSTSER) + return; + dev->bits = serial->bits; + dev->data_bits = ((lcr & 0x03) + 5); + serial_passthrough_speed_changed(p); + plat_serpt_set_params(dev); +} + +/* Initialize the device for use by the user. */ +static void * +serial_passthrough_dev_init(const device_t *info) +{ + serial_passthrough_t *dev; + + dev = (serial_passthrough_t *) malloc(sizeof(serial_passthrough_t)); + memset(dev, 0, sizeof(serial_passthrough_t)); + dev->mode = device_get_config_int("mode"); + + dev->port = device_get_instance() - 1; + dev->baudrate = device_get_config_int("baudrate"); + dev->data_bits = device_get_config_int("data_bits"); + + /* Attach passthrough device to a COM port */ + dev->serial = serial_attach_ex(dev->port, serial_passthrough_rcr_cb, + serial_passthrough_write, serial_passthrough_transmit_period, serial_passthrough_lcr_callback, dev); + + strncpy(dev->host_serial_path, device_get_config_string("host_serial_path"), 1024); + + serial_passthrough_log("%s: port=COM%d\n", info->name, dev->port + 1); + serial_passthrough_log("%s: baud=%f\n", info->name, dev->baudrate); + serial_passthrough_log("%s: mode=%s\n", info->name, serpt_mode_names[dev->mode]); + + if (plat_serpt_open_device(dev)) { + serial_passthrough_log("%s: not running\n", info->name); + return NULL; + } + serial_passthrough_log("%s: running\n", info->name); + + memset(&dev->host_to_serial_timer, 0, sizeof(pc_timer_t)); + timer_add(&dev->host_to_serial_timer, host_to_serial_cb, dev, 1); + serial_set_cts(dev->serial, 1); + serial_set_dsr(dev->serial, 1); + serial_set_dcd(dev->serial, 1); + + /* 1 start bit + data bits + stop bits (no parity assumed) */ + dev->bits = 1 + device_get_config_int("data_bits") + device_get_config_int("stop_bits"); + + /* Return our private data to the I/O layer. */ + return dev; +} + +const char *serpt_mode_names[SERPT_MODES_MAX] = { + [SERPT_MODE_VCON] = "vcon", + [SERPT_MODE_TCPSRV] = "tcpsrv", + [SERPT_MODE_TCPCLNT] = "tcpclnt", + [SERPT_MODE_HOSTSER] = "hostser", +}; + +// clang-format off +static const device_config_t serial_passthrough_config[] = { + { + .name = "mode", + .description = "Passthrough Mode", + .type = CONFIG_SELECTION, + .default_string = "", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .selection = { +#ifdef _WIN32 + { + .description = "Named Pipe (Server)", + .value = SERPT_MODE_VCON + }, +#if 0 /* TODO */ + { + .description = "Named Pipe (Client)", + .value = SERPT_MODE_VCON + }, +#endif +#else + { + .description = "Pseudo Terminal/Virtual Console", + .value = SERPT_MODE_VCON + }, +#endif +#if 0 /* TODO */ + { + .description = "TCP Server", + .value = SERPT_MODE_TCPSRV + }, + { + .description = "TCP Client", + .value = SERPT_MODE_TCPCLNT + }, +#endif + { + .description = "Host Serial Passthrough", + .value = SERPT_MODE_HOSTSER + }, + { + .description = "" + } + } + }, + { + .name = "host_serial_path", + .description = "Host Serial Device", + .type = CONFIG_SERPORT, + .default_string = "", + .file_filter = NULL, + .spinner = {}, + .selection = {} + }, + { + .name = "data_bits", + .description = "Data bits", + .type = CONFIG_SELECTION, + .default_string = "8", + .default_int = 8, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { +#if 0 /* Mentioned by WFW 3.1x, not supported, atleast on Linux */ + { .description = "4", .value = 4 }, +#endif + { .description = "5", .value = 5 }, + { .description = "6", .value = 6 }, + { .description = "7", .value = 7 }, + { .description = "8", .value = 8 } + } + }, + { + .name = "stop_bits", + .description = "Stop bits", + .type = CONFIG_SELECTION, + .default_string = "1", + .default_int = 1, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { + { .description = "1", .value = 1 }, +#if 0 + { .description = "1.5", .value = 1.5 }, +#endif + { .description = "2", .value = 2 } + } + }, + { + .name = "baudrate", + .description = "Baud Rate of Passthrough", + .type = CONFIG_SELECTION, + .default_string = "", + .default_int = 115200, + .file_filter = NULL, + .spinner = { 0 }, + .selection = { +#if 0 + { .description = "256000", .value = 256000 }, + { .description = "128000", .value = 128000 }, +#endif + { .description = "115200", .value = 115200 }, + { .description = "57600", .value = 57600 }, + { .description = "56000", .value = 56000 }, + { .description = "38400", .value = 38400 }, + { .description = "19200", .value = 19200 }, + { .description = "14400", .value = 14400 }, + { .description = "9600", .value = 9600 }, + { .description = "7200", .value = 7200 }, + { .description = "4800", .value = 4800 }, + { .description = "2400", .value = 2400 }, + { .description = "1800", .value = 1800 }, + { .description = "1200", .value = 1200 }, + { .description = "600", .value = 600 }, + { .description = "300", .value = 300 }, + { .description = "150", .value = 150 }, +#if 0 + { .description = "134.5", .value = 134.5 }, +#endif + { .description = "110", .value = 110 }, + { .description = "75", .value = 75 } + } + }, + { .name = "", .description = "", .type = CONFIG_END } +}; +// clang-format on + +const device_t serial_passthrough_device = { + .name = "Serial Passthrough Device", + .flags = 0, + .local = 0, + .init = serial_passthrough_dev_init, + .close = serial_passthrough_dev_close, + .reset = NULL, + { .poll = NULL }, + .speed_changed = serial_passthrough_speed_changed, + .force_redraw = NULL, + .config = serial_passthrough_config +}; diff --git a/src/include/86box/device.h b/src/include/86box/device.h index 79cbf4d2a..877ef660a 100644 --- a/src/include/86box/device.h +++ b/src/include/86box/device.h @@ -17,6 +17,8 @@ * Copyright 2017-2019 Fred N. van Kempen. * Copyright 2016-2019 Miran Grca. * Copyright 2008-2019 Sarah Walker. + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,6 +54,7 @@ #define CONFIG_MAC 9 #define CONFIG_MIDI_IN 10 #define CONFIG_BIOS 11 +#define CONFIG_SERPORT 12 enum { DEVICE_PCJR = 2, /* requires an IBM PCjr */ @@ -107,7 +110,7 @@ typedef struct { int default_int; const char *file_filter; const device_config_spinner_t spinner; - const device_config_selection_t selection[16]; + const device_config_selection_t selection[32]; const device_config_bios_t bios[32]; } device_config_t; @@ -134,6 +137,7 @@ typedef struct _device_ { typedef struct { const device_t *dev; char name[2048]; + int instance; } device_context_t; #ifdef __cplusplus @@ -178,6 +182,7 @@ extern void device_set_config_hex16(const char *s, int val); extern void device_set_config_hex20(const char *s, int val); extern void device_set_config_mac(const char *s, int val); extern const char *device_get_config_string(const char *name); +extern const int device_get_instance(void); #define device_get_config_bios device_get_config_string extern char *device_get_internal_name(const device_t *d); diff --git a/src/include/86box/plat_serial_passthrough.h b/src/include/86box/plat_serial_passthrough.h new file mode 100644 index 000000000..e9df0584e --- /dev/null +++ b/src/include/86box/plat_serial_passthrough.h @@ -0,0 +1,38 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * Definitions for platform specific serial to host passthrough. + * + * + * Authors: Andreas J. Reichel , + * Jasmine Iwanek + * + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. + */ + +#ifndef PLAT_SERIAL_PASSTHROUGH_H +#define PLAT_SERIAL_PASSTHROUGH_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void plat_serpt_write(void *p, uint8_t data); +extern int plat_serpt_read(void *p, uint8_t *data); +extern int plat_serpt_open_device(void *p); +extern void plat_serpt_close(void *p); +extern void plat_serpt_set_params(void *p); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/include/86box/resource.h b/src/include/86box/resource.h index 967430216..397443299 100644 --- a/src/include/86box/resource.h +++ b/src/include/86box/resource.h @@ -247,6 +247,10 @@ #define IDC_CHECK_PARALLEL2 1089 #define IDC_CHECK_PARALLEL3 1090 #define IDC_CHECK_PARALLEL4 1091 +#define IDC_CHECK_SERIAL_PASS1 1092 +#define IDC_CHECK_SERIAL_PASS2 1093 +#define IDC_CHECK_SERIAL_PASS3 1094 +#define IDC_CHECK_SERIAL_PASS4 1095 #define IDC_OTHER_PERIPH 1110 /* storage controllers config */ #define IDC_COMBO_HDC 1111 @@ -364,6 +368,10 @@ #define IDC_CONFIGURE_NET4 1321 #define IDC_CONFIGURE_MIDI_OUT 1322 #define IDC_CONFIGURE_MIDI_IN 1323 +#define IDC_CONFIGURE_SERIAL_PASS1 1324 +#define IDC_CONFIGURE_SERIAL_PASS2 1325 +#define IDC_CONFIGURE_SERIAL_PASS3 1326 +#define IDC_CONFIGURE_SERIAL_PASS4 1327 #define IDC_JOY1 1330 #define IDC_JOY2 1331 #define IDC_JOY3 1332 diff --git a/src/include/86box/serial.h b/src/include/86box/serial.h index ae48ee09f..62b4c9a5f 100644 --- a/src/include/86box/serial.h +++ b/src/include/86box/serial.h @@ -53,7 +53,7 @@ typedef struct serial_s { dat, int_status, scratch, fcr, irq, type, inst, transmit_enabled, fifo_enabled, rcvr_fifo_len, bits, data_bits, - baud_cycles, rcvr_fifo_full, txsr, pad; + baud_cycles, rcvr_fifo_full, txsr, pad, msr_set; uint16_t dlab, base_address; @@ -70,6 +70,8 @@ typedef struct serial_s { typedef struct serial_device_s { void (*rcr_callback)(struct serial_s *serial, void *p); void (*dev_write)(struct serial_s *serial, void *p, uint8_t data); + void (*lcr_callback)(struct serial_s *serial, void *p, uint8_t lcr); + void (*transmit_period_callback)(struct serial_s *serial, void *p, double transmit_period); void *priv; serial_t *serial; } serial_device_t; @@ -84,6 +86,12 @@ extern serial_t *serial_attach(int port, void (*rcr_callback)(struct serial_s *serial, void *p), void (*dev_write)(struct serial_s *serial, void *p, uint8_t data), void *priv); +extern serial_t *serial_attach_ex(int port, + void (*rcr_callback)(struct serial_s *serial, void *p), + void (*dev_write)(struct serial_s *serial, void *p, uint8_t data), + void (*transmit_period_callback)(struct serial_s *serial, void *p, double transmit_period), + void (*lcr_callback)(struct serial_s *serial, void *p, uint8_t data_bits), + void *priv); extern void serial_remove(serial_t *dev); extern void serial_set_type(serial_t *dev, int type); extern void serial_setup(serial_t *dev, uint16_t addr, uint8_t irq); @@ -93,6 +101,11 @@ extern void serial_set_next_inst(int ni); extern void serial_standalone_init(void); extern void serial_set_clock_src(serial_t *dev, double clock_src); extern void serial_reset_port(serial_t *dev); +extern void serial_device_timeout(void *priv); + +extern void serial_set_cts(serial_t *dev, uint8_t enabled); +extern void serial_set_dsr(serial_t *dev, uint8_t enabled); +extern void serial_set_dcd(serial_t *dev, uint8_t enabled); extern const device_t ns8250_device; extern const device_t ns8250_pcjr_device; diff --git a/src/include/86box/serial_passthrough.h b/src/include/86box/serial_passthrough.h new file mode 100644 index 000000000..20c97fa03 --- /dev/null +++ b/src/include/86box/serial_passthrough.h @@ -0,0 +1,61 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * Definition of Serial passthrough device. + * + * + * Authors: Andreas J. Reichel , + * Jasmine Iwanek + * + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. + */ + +#ifndef SERIAL_PASSTHROUGH_H +#define SERIAL_PASSTHROUGH_H + +#include +#include + +#include <86box/86box.h> +#include <86box/device.h> +#include <86box/timer.h> +#include <86box/serial.h> + +enum serial_passthrough_mode { + SERPT_MODE_VCON, /*Named Pipe (Server) / Pseudo Terminal/Virtual Console */ + SERPT_MODE_TCPSRV, /* TCP Server (TODO) */ + SERPT_MODE_TCPCLNT, /* TCP Client (TODO) */ + SERPT_MODE_HOSTSER, /* Host Serial Passthrough */ + SERPT_MODES_MAX, +}; + +extern const char *serpt_mode_names[SERPT_MODES_MAX]; + +typedef struct serial_passthrough_s { + enum serial_passthrough_mode mode; + pc_timer_t host_to_serial_timer; + pc_timer_t serial_to_host_timer; + serial_t *serial; + double baudrate; + uint8_t bits, data_bits; + uint8_t port; + uint8_t data; + char slave_pt[32]; /* used for pseudo term name of slave side */ + intptr_t master_fd; /* file desc for master pseudo terminal or + * socket or alike */ + char host_serial_path[1024]; /* Path to TTY/host serial port on the host */ + void *backend_priv; /* Private platform backend data */ +} serial_passthrough_t; + +extern bool serial_passthrough_enabled[SERIAL_MAX]; +extern const device_t serial_passthrough_device; + +extern void serial_passthrough_init(void); + +#endif diff --git a/src/include/86box/win_opengl.h b/src/include/86box/win_opengl.h index 80d3695ca..d354131ef 100644 --- a/src/include/86box/win_opengl.h +++ b/src/include/86box/win_opengl.h @@ -17,7 +17,7 @@ #define WIN_OPENGL_H #define UNICODE -#include +#include extern int opengl_init(HWND hwnd); extern int opengl_pause(void); diff --git a/src/include/discord_game_sdk.h b/src/include/discord_game_sdk.h index 62ea8418e..0d3da6dea 100644 --- a/src/include/discord_game_sdk.h +++ b/src/include/discord_game_sdk.h @@ -9,7 +9,7 @@ #define _DISCORD_GAME_SDK_H_ #ifdef _WIN32 -#include +#include #include #endif diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt index 7b3dfc929..1cb26a239 100644 --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -221,6 +221,12 @@ if(WIN32 AND NOT MINGW) target_sources(plat PRIVATE ../win/win_opendir.c) endif() +if(WIN32) + target_sources(plat PRIVATE ../win/win_serial_passthrough.c) +else() + target_sources(plat PRIVATE ../unix/unix_serial_passthrough.c) +endif() + if (APPLE) target_sources(ui PRIVATE macos_event_filter.mm) if(MOLTENVK) diff --git a/src/qt/qt_deviceconfig.cpp b/src/qt/qt_deviceconfig.cpp index 257238316..bf7d4bbb0 100644 --- a/src/qt/qt_deviceconfig.cpp +++ b/src/qt/qt_deviceconfig.cpp @@ -27,6 +27,8 @@ #include #include #include +#include +#include extern "C" { #include <86box/86box.h> @@ -40,6 +42,10 @@ extern "C" { #include "qt_filefield.hpp" #include "qt_models_common.hpp" +#ifdef Q_OS_LINUX +# include +# include +#endif DeviceConfig::DeviceConfig(QWidget *parent) : QDialog(parent) @@ -53,6 +59,40 @@ DeviceConfig::~DeviceConfig() delete ui; } +static QStringList +EnumerateSerialDevices() +{ + QStringList serialDevices, ttyEntries; + QByteArray devstr(1024, 0); +#ifdef Q_OS_LINUX + QDir class_dir("/sys/class/tty/"); + QDir dev_dir("/dev/"); + ttyEntries = class_dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::System, QDir::SortFlag::Name); + for (int i = 0; i < ttyEntries.size(); i++) { + if (class_dir.exists(ttyEntries[i] + "/device/driver/") && dev_dir.exists(ttyEntries[i]) + && QFileInfo(dev_dir.canonicalPath() + '/' + ttyEntries[i]).isReadable() + && QFileInfo(dev_dir.canonicalPath() + '/' + ttyEntries[i]).isWritable()) { + serialDevices.push_back("/dev/" + ttyEntries[i]); + } + } +#endif +#ifdef Q_OS_WINDOWS + QSettings comPorts("HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM", QSettings::NativeFormat, nullptr); + for (int i = 0; i < comPorts.childKeys().length(); i++) { + serialDevices.push_back(QString("\\\\.\\") + comPorts.value(comPorts.childKeys()[i]).toString()); + } +#endif +#ifdef Q_OS_MACOS + QDir dev_dir("/dev/"); + dev_dir.setNameFilters({ "tty.*", "cu.*" }); + QDir::Filters serial_dev_flags = QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::Writable | QDir::NoDotAndDotDot | QDir::System; + for (const auto &device : dev_dir.entryInfoList(serial_dev_flags, QDir::SortFlag::Name)) { + serialDevices.push_back(device.canonicalFilePath()); + } +#endif + return serialDevices; +} + void DeviceConfig::ConfigureDevice(const _device_ *device, int instance, Settings *settings) { @@ -205,6 +245,27 @@ DeviceConfig::ConfigureDevice(const _device_ *device, int instance, Settings *se dc.ui->formLayout->addRow(config->description, fileField); break; } + case CONFIG_SERPORT: + { + auto *cbox = new QComboBox(); + cbox->setObjectName(config->name); + auto *model = cbox->model(); + int currentIndex = 0; + auto serialDevices = EnumerateSerialDevices(); + char *selected = config_get_string(device_context.name, const_cast(config->name), const_cast(config->default_string)); + + Models::AddEntry(model, "None", -1); + for (int i = 0; i < serialDevices.size(); i++) { + int row = Models::AddEntry(model, serialDevices[i], i); + if (selected == serialDevices[i]) { + currentIndex = row; + } + } + + dc.ui->formLayout->addRow(config->description, cbox); + cbox->setCurrentIndex(currentIndex); + break; + } } ++config; } @@ -236,6 +297,15 @@ DeviceConfig::ConfigureDevice(const _device_ *device, int instance, Settings *se config_set_string(device_context.name, const_cast(config->name), const_cast(config->bios[idx].internal_name)); break; } + case CONFIG_SERPORT: + { + auto *cbox = dc.findChild(config->name); + auto path = cbox->currentText().toUtf8(); + if (path == "None") + path = ""; + config_set_string(device_context.name, const_cast(config->name), path); + break; + } case CONFIG_HEX16: { auto *cbox = dc.findChild(config->name); diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp index 5bd2d40d3..a003bf59c 100644 --- a/src/qt/qt_main.cpp +++ b/src/qt/qt_main.cpp @@ -43,7 +43,7 @@ Q_IMPORT_PLUGIN(QWindowsVistaStylePlugin) # include "qt_winrawinputfilter.hpp" # include "qt_winmanagerfilter.hpp" # include <86box/win.h> -# include +# include #endif extern "C" { diff --git a/src/qt/qt_settingsports.cpp b/src/qt/qt_settingsports.cpp index a4be440e5..9b19df68d 100644 --- a/src/qt/qt_settingsports.cpp +++ b/src/qt/qt_settingsports.cpp @@ -27,6 +27,7 @@ extern "C" { #include <86box/machine.h> #include <86box/lpt.h> #include <86box/serial.h> +#include <86box/serial_passthrough.h> } #include "qt_deviceconfig.hpp" @@ -66,6 +67,15 @@ SettingsPorts::SettingsPorts(QWidget *parent) auto *checkBox = findChild(QString("checkBoxSerial%1").arg(i + 1)); checkBox->setChecked(com_ports[i].enabled > 0); } + + ui->checkBoxSerialPassThru1->setChecked(serial_passthrough_enabled[0]); + ui->pushButtonSerialPassThru1->setEnabled(serial_passthrough_enabled[0]); + ui->checkBoxSerialPassThru2->setChecked(serial_passthrough_enabled[1]); + ui->pushButtonSerialPassThru2->setEnabled(serial_passthrough_enabled[1]); + ui->checkBoxSerialPassThru3->setChecked(serial_passthrough_enabled[2]); + ui->pushButtonSerialPassThru3->setEnabled(serial_passthrough_enabled[2]); + ui->checkBoxSerialPassThru4->setChecked(serial_passthrough_enabled[3]); + ui->pushButtonSerialPassThru4->setEnabled(serial_passthrough_enabled[3]); } SettingsPorts::~SettingsPorts() @@ -87,6 +97,11 @@ SettingsPorts::save() auto *checkBox = findChild(QString("checkBoxSerial%1").arg(i + 1)); com_ports[i].enabled = checkBox->isChecked() ? 1 : 0; } + + serial_passthrough_enabled[0] = ui->checkBoxSerialPassThru1->isChecked(); + serial_passthrough_enabled[1] = ui->checkBoxSerialPassThru2->isChecked(); + serial_passthrough_enabled[2] = ui->checkBoxSerialPassThru3->isChecked(); + serial_passthrough_enabled[3] = ui->checkBoxSerialPassThru4->isChecked(); } void @@ -112,3 +127,51 @@ SettingsPorts::on_checkBoxParallel4_stateChanged(int state) { ui->comboBoxLpt4->setEnabled(state == Qt::Checked); } + +void +SettingsPorts::on_pushButtonSerialPassThru1_clicked() +{ + DeviceConfig::ConfigureDevice(&serial_passthrough_device, 1, qobject_cast(Settings::settings)); +} + +void +SettingsPorts::on_pushButtonSerialPassThru2_clicked() +{ + DeviceConfig::ConfigureDevice(&serial_passthrough_device, 2, qobject_cast(Settings::settings)); +} + +void +SettingsPorts::on_pushButtonSerialPassThru3_clicked() +{ + DeviceConfig::ConfigureDevice(&serial_passthrough_device, 3, qobject_cast(Settings::settings)); +} + +void +SettingsPorts::on_pushButtonSerialPassThru4_clicked() +{ + DeviceConfig::ConfigureDevice(&serial_passthrough_device, 4, qobject_cast(Settings::settings)); +} + +void +SettingsPorts::on_checkBoxSerialPassThru1_clicked(bool checked) +{ + ui->pushButtonSerialPassThru1->setEnabled(checked); +} + +void +SettingsPorts::on_checkBoxSerialPassThru2_clicked(bool checked) +{ + ui->pushButtonSerialPassThru2->setEnabled(checked); +} + +void +SettingsPorts::on_checkBoxSerialPassThru3_clicked(bool checked) +{ + ui->pushButtonSerialPassThru3->setEnabled(checked); +} + +void +SettingsPorts::on_checkBoxSerialPassThru4_clicked(bool checked) +{ + ui->pushButtonSerialPassThru4->setEnabled(checked); +} diff --git a/src/qt/qt_settingsports.hpp b/src/qt/qt_settingsports.hpp index 5fa88e210..a5129d35f 100644 --- a/src/qt/qt_settingsports.hpp +++ b/src/qt/qt_settingsports.hpp @@ -15,6 +15,30 @@ public: ~SettingsPorts(); void save(); +private slots: + void on_checkBoxSerialPassThru4_clicked(bool checked); + +private slots: + void on_checkBoxSerialPassThru3_clicked(bool checked); + +private slots: + void on_checkBoxSerialPassThru2_clicked(bool checked); + +private slots: + void on_pushButtonSerialPassThru4_clicked(); + +private slots: + void on_pushButtonSerialPassThru3_clicked(); + +private slots: + void on_pushButtonSerialPassThru2_clicked(); + +private slots: + void on_pushButtonSerialPassThru1_clicked(); + +private slots: + void on_checkBoxSerialPassThru1_clicked(bool checked); + private slots: void on_checkBoxParallel3_stateChanged(int arg1); void on_checkBoxParallel2_stateChanged(int arg1); diff --git a/src/qt/qt_settingsports.ui b/src/qt/qt_settingsports.ui index a1fbb47e7..7a338aff5 100644 --- a/src/qt/qt_settingsports.ui +++ b/src/qt/qt_settingsports.ui @@ -13,7 +13,7 @@ Form - + 0 @@ -26,7 +26,7 @@ 0 - + @@ -70,29 +70,8 @@ - + - - - - Serial port 1 - - - - - - - Parallel port 1 - - - - - - - Serial port 2 - - - @@ -100,13 +79,6 @@ - - - - Serial port 3 - - - @@ -114,10 +86,17 @@ - - + + - Serial port 4 + Serial port 3 + + + + + + + Serial port 1 @@ -128,20 +107,117 @@ + + + + Serial port 2 + + + + + + + Parallel port 1 + + + + + + + Serial port 4 + + + - - - - Qt::Vertical + + + + QLayout::SetDefaultConstraint - - - 20 - 40 - - - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Serial port passthrough 3 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Configure + + + + + + + Serial port passthrough 1 + + + + + + + Serial port passthrough 2 + + + + + + + Serial port passthrough 4 + + + + + + + Configure + + + + + + + Configure + + + + + + + Configure + + + + diff --git a/src/qt/qt_winmanagerfilter.cpp b/src/qt/qt_winmanagerfilter.cpp index 0218ae5ba..cdb81fcd5 100644 --- a/src/qt/qt_winmanagerfilter.cpp +++ b/src/qt/qt_winmanagerfilter.cpp @@ -17,7 +17,7 @@ #include "qt_winmanagerfilter.hpp" -#include +#include #include <86box/win.h> bool diff --git a/src/qt/qt_winrawinputfilter.cpp b/src/qt/qt_winrawinputfilter.cpp index 88b723d4c..6690a08eb 100644 --- a/src/qt/qt_winrawinputfilter.cpp +++ b/src/qt/qt_winrawinputfilter.cpp @@ -35,7 +35,7 @@ #include -#include +#include #include <86box/keyboard.h> #include <86box/mouse.h> diff --git a/src/qt/qt_winrawinputfilter.hpp b/src/qt/qt_winrawinputfilter.hpp index 6d23b83b7..b03f6783e 100644 --- a/src/qt/qt_winrawinputfilter.hpp +++ b/src/qt/qt_winrawinputfilter.hpp @@ -37,7 +37,7 @@ #include #include -#include +#include #include diff --git a/src/unix/CMakeLists.txt b/src/unix/CMakeLists.txt index 5fbcf0329..43c730315 100644 --- a/src/unix/CMakeLists.txt +++ b/src/unix/CMakeLists.txt @@ -13,9 +13,11 @@ # # Copyright 2021 Cacodemon345. # Copyright 2021 David Hrdlička. +# Copyright 2021 Andreas J. Reichel. +# Copyright 2021-2022 Jasmine Iwanek. # -add_library(plat OBJECT unix.c) +add_library(plat OBJECT unix.c unix_serial_passthrough.c) if (NOT CPPTHREADS) target_sources(plat PRIVATE unix_thread.c) diff --git a/src/unix/unix_serial_passthrough.c b/src/unix/unix_serial_passthrough.c new file mode 100644 index 000000000..29e4b8317 --- /dev/null +++ b/src/unix/unix_serial_passthrough.c @@ -0,0 +1,314 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * Definitions for platform specific serial to host passthrough + * + * + * Authors: Andreas J. Reichel , + * Jasmine Iwanek + * + * Copyright 2021 Andreas J. Reichel. + * Copyright 2021-2022 Jasmine Iwanek. + */ + +#ifndef __APPLE__ +# define _XOPEN_SOURCE 500 +# define _DEFAULT_SOURCE 1 +# define _BSD_SOURCE 1 +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#include <86box/86box.h> +#include <86box/log.h> +#include <86box/plat.h> +#include <86box/device.h> +#include <86box/serial_passthrough.h> +#include <86box/plat_serial_passthrough.h> +#include +#include + +#define LOG_PREFIX "serial_passthrough: " + +int +plat_serpt_read(void *p, uint8_t *data) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + int res; + struct timeval tv; + fd_set rdfds; + + switch (dev->mode) { + case SERPT_MODE_VCON: + case SERPT_MODE_HOSTSER: + FD_ZERO(&rdfds); + FD_SET(dev->master_fd, &rdfds); + tv.tv_sec = 0; + tv.tv_usec = 0; + + res = select(dev->master_fd + 1, &rdfds, NULL, NULL, &tv); + if (res <= 0 || !FD_ISSET(dev->master_fd, &rdfds)) { + return 0; + } + + if (read(dev->master_fd, data, 1) > 0) { + return 1; + } + break; + default: + break; + } + return 0; +} + +void +plat_serpt_close(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + if (dev->mode == SERPT_MODE_HOSTSER) { + tcsetattr(dev->master_fd, TCSANOW, (struct termios *) dev->backend_priv); + free(dev->backend_priv); + } + close(dev->master_fd); +} + +static void +plat_serpt_write_vcon(serial_passthrough_t *dev, uint8_t data) +{ + /* fd_set wrfds; + * int res; + */ + + /* We cannot use select here, this would block the hypervisor! */ + /* FD_ZERO(&wrfds); + FD_SET(ctx->master_fd, &wrfds); + + res = select(ctx->master_fd + 1, NULL, &wrfds, NULL, NULL); + + if (res <= 0) { + return; + } + */ + + /* just write it out */ + if (dev->mode == SERPT_MODE_HOSTSER) { + int res = 0; + do { + res = write(dev->master_fd, &data, 1); + } while (res == 0 || (res == -1 && (errno == EAGAIN || res == EWOULDBLOCK))); + } else + write(dev->master_fd, &data, 1); +} + +void +plat_serpt_set_params(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + if (dev->mode == SERPT_MODE_HOSTSER) { + struct termios term_attr; + tcgetattr(dev->master_fd, &term_attr); +#define BAUDRATE_RANGE(baud_rate, min, max, val) \ + if (baud_rate >= min && baud_rate < max) { \ + cfsetispeed(&term_attr, val); \ + cfsetospeed(&term_attr, val); \ + } + + BAUDRATE_RANGE(dev->baudrate, 50, 75, B50); + BAUDRATE_RANGE(dev->baudrate, 75, 110, B75); + BAUDRATE_RANGE(dev->baudrate, 110, 134, B110); + BAUDRATE_RANGE(dev->baudrate, 134, 150, B134); + BAUDRATE_RANGE(dev->baudrate, 150, 200, B150); + BAUDRATE_RANGE(dev->baudrate, 200, 300, B200); + BAUDRATE_RANGE(dev->baudrate, 300, 600, B300); + BAUDRATE_RANGE(dev->baudrate, 600, 1200, B600); + BAUDRATE_RANGE(dev->baudrate, 1200, 1800, B1200); + BAUDRATE_RANGE(dev->baudrate, 1800, 2400, B1800); + BAUDRATE_RANGE(dev->baudrate, 2400, 4800, B2400); + BAUDRATE_RANGE(dev->baudrate, 4800, 9600, B4800); + BAUDRATE_RANGE(dev->baudrate, 9600, 19200, B9600); + BAUDRATE_RANGE(dev->baudrate, 19200, 38400, B19200); + BAUDRATE_RANGE(dev->baudrate, 38400, 57600, B38400); + BAUDRATE_RANGE(dev->baudrate, 57600, 115200, B57600); + BAUDRATE_RANGE(dev->baudrate, 115200, 0xFFFFFFFF, B115200); + + term_attr.c_cflag &= CSIZE; + switch (dev->data_bits) { + case 8: + default: + term_attr.c_cflag |= CS8; + break; + case 7: + term_attr.c_cflag |= CS7; + break; + case 6: + term_attr.c_cflag |= CS6; + break; + case 5: + term_attr.c_cflag |= CS5; + break; + } + term_attr.c_cflag &= CSTOPB; + if (dev->serial->lcr & 0x04) + term_attr.c_cflag |= CSTOPB; +#ifdef __APPLE__ + term_attr.c_cflag &= PARENB | PARODD; +#else + term_attr.c_cflag &= PARENB | PARODD | CMSPAR; +#endif + if (dev->serial->lcr & 0x08) { + term_attr.c_cflag |= PARENB; + if (!(dev->serial->lcr & 0x10)) + term_attr.c_cflag |= PARODD; +#ifndef __APPLE__ + if ((dev->serial->lcr & 0x20)) + term_attr.c_cflag |= CMSPAR; +#endif + } + tcsetattr(dev->master_fd, TCSANOW, &term_attr); +#undef BAUDRATE_RANGE + } +} + +void +plat_serpt_write(void *p, uint8_t data) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + switch (dev->mode) { + case SERPT_MODE_VCON: + case SERPT_MODE_HOSTSER: + plat_serpt_write_vcon(dev, data); + break; + default: + break; + } +} + +static int +open_pseudo_terminal(serial_passthrough_t *dev) +{ + int master_fd = open("/dev/ptmx", O_RDWR | O_NONBLOCK); + char *ptname; + struct termios term_attr_raw; + + if (!master_fd) { + return 0; + } + + /* get name of slave device */ + if (!(ptname = ptsname(master_fd))) { + pclog(LOG_PREFIX "could not get name of slave pseudo terminal"); + close(master_fd); + return 0; + } + memset(dev->slave_pt, 0, sizeof(dev->slave_pt)); + strncpy(dev->slave_pt, ptname, sizeof(dev->slave_pt) - 1); + + fprintf(stderr, LOG_PREFIX "Slave side is %s\n", dev->slave_pt); + + if (grantpt(master_fd)) { + pclog(LOG_PREFIX "error in grantpt()\n"); + close(master_fd); + return 0; + } + + if (unlockpt(master_fd)) { + pclog(LOG_PREFIX "error in unlockpt()\n"); + close(master_fd); + return 0; + } + + tcgetattr(master_fd, &term_attr_raw); + cfmakeraw(&term_attr_raw); + tcsetattr(master_fd, TCSANOW, &term_attr_raw); + + dev->master_fd = master_fd; + + return master_fd; +} + +static int +open_host_serial_port(serial_passthrough_t *dev) +{ + struct termios *term_attr = NULL; + struct termios term_attr_raw = {}; + int fd = open(dev->host_serial_path, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (fd == -1) { + return 0; + } + + if (!isatty(fd)) { + return 0; + } + + term_attr = calloc(1, sizeof(struct termios)); + if (!term_attr) { + close(fd); + return 0; + } + + if (tcgetattr(fd, term_attr) == -1) { + free(term_attr); + close(fd); + return 0; + } + term_attr_raw = *term_attr; + /* "Raw" mode. */ + cfmakeraw(&term_attr_raw); + term_attr_raw.c_cflag &= CSIZE; + switch (dev->data_bits) { + case 8: + default: + term_attr_raw.c_cflag |= CS8; + break; + case 7: + term_attr_raw.c_cflag |= CS7; + break; + case 6: + term_attr_raw.c_cflag |= CS6; + break; + case 5: + term_attr_raw.c_cflag |= CS5; + break; + } + tcsetattr(fd, TCSANOW, &term_attr_raw); + dev->backend_priv = term_attr; + dev->master_fd = fd; + pclog(LOG_PREFIX "Opened host TTY/serial port %s\n", dev->host_serial_path); + return 1; +} + +int +plat_serpt_open_device(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + switch (dev->mode) { + case SERPT_MODE_VCON: + if (!open_pseudo_terminal(dev)) { + return 1; + } + break; + case SERPT_MODE_HOSTSER: + if (!open_host_serial_port(dev)) { + return 1; + } + break; + default: + break; + } + return 0; +} diff --git a/src/win/CMakeLists.txt b/src/win/CMakeLists.txt index a0a4c8e14..604ba9bb0 100644 --- a/src/win/CMakeLists.txt +++ b/src/win/CMakeLists.txt @@ -10,13 +10,14 @@ # # Authors: David Hrdlička, # -# Copyright 2020-2021 David Hrdlička. +# Copyright 2020,2021 David Hrdlička. +# Copyright 2021-2022 Jasmine Iwanek. # enable_language(RC) add_library(plat OBJECT win.c win_dynld.c win_cdrom.c win_keyboard.c - win_mouse.c) + win_mouse.c win_serial_passthrough.c) add_library(ui OBJECT win_ui.c win_icon.c win_stbar.c win_sdl.c win_dialog.c win_about.c win_settings.c win_devconf.c win_snd_gain.c win_specify_dim.c win_new_floppy.c diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw index 747bbda2d..9dd6af728 100644 --- a/src/win/Makefile.mingw +++ b/src/win/Makefile.mingw @@ -596,7 +596,7 @@ DEVOBJ := bugger.o cartridge.o cassette.o hasp.o hwm.o hwm_lm75.o hwm_lm78.o hwm mouse.o \ mouse_bus.o \ mouse_serial.o mouse_ps2.o \ - phoenix_486_jumper.o + phoenix_486_jumper.o serial_passthrough.o SIOOBJ := sio_acc3221.o sio_ali5123.o \ sio_f82c710.o sio_82091aa.o sio_fdc37c6xx.o \ @@ -749,7 +749,7 @@ VOODOOOBJ := vid_voodoo.o vid_voodoo_banshee.o \ PLATOBJ := win.o \ win_dynld.o \ win_cdrom.o win_keyboard.o \ - win_mouse.o + win_mouse.o win_serial_passthrough.o UIOBJ := win_ui.o win_icon.o win_stbar.o discord.o \ win_sdl.o win_opengl.o win_opengl_glslp.o glad.o \ diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc index c888fe954..fe8a8a42b 100644 --- a/src/win/languages/cs-CZ.rc +++ b/src/win/languages/cs-CZ.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Povolit port LPT2" #define STR_PARALLEL3 "Povolit port LPT3" #define STR_PARALLEL4 "Povolit port LPT4" +#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_HDC "Řadič disku:" #define STR_FDC "Disketový řadič:" diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index 3768898a5..58d799539 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Parallelport 2" #define STR_PARALLEL3 "Parallelport 3" #define STR_PARALLEL4 "Parallelport 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_HDC "HDD-Controller:" #define STR_FDC "FD-Controller:" diff --git a/src/win/languages/dialogs.rc b/src/win/languages/dialogs.rc index 5a150324c..1facfb10d 100644 --- a/src/win/languages/dialogs.rc +++ b/src/win/languages/dialogs.rc @@ -453,54 +453,78 @@ BEGIN CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_LPT2, IDT_LPT2, - CFG_HMARGIN, 28, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT + CFG_HMARGIN, 24, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT COMBOBOX IDC_COMBO_LPT2, - CFG_COMBO_BOX_LEFT, 26, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, + CFG_COMBO_BOX_LEFT, 22, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_LPT3, IDT_LPT3, - CFG_HMARGIN, 47, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT + CFG_HMARGIN, 39, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT COMBOBOX IDC_COMBO_LPT3, - CFG_COMBO_BOX_LEFT, 45, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, + CFG_COMBO_BOX_LEFT, 37, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_LPT4, IDT_LPT4, - CFG_HMARGIN, 66, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT + CFG_HMARGIN, 54, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT COMBOBOX IDC_COMBO_LPT4, - CFG_COMBO_BOX_LEFT, 64, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, + CFG_COMBO_BOX_LEFT, 52, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL STR_SERIAL1, IDC_CHECK_SERIAL1, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - CFG_HMARGIN, 83, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + CFG_HMARGIN, 71, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_SERIAL2, IDC_CHECK_SERIAL2, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - CFG_HMARGIN, 102, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + CFG_HMARGIN, 86, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_SERIAL3, IDC_CHECK_SERIAL3, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - CFG_HMARGIN, 121, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + CFG_HMARGIN, 101, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_SERIAL4, IDC_CHECK_SERIAL4, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - CFG_HMARGIN, 140, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + CFG_HMARGIN, 116, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_PARALLEL1, IDC_CHECK_PARALLEL1, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - 167, 83, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + 167, 71, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_PARALLEL2, IDC_CHECK_PARALLEL2, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - 167, 102, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + 167, 86, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_PARALLEL3, IDC_CHECK_PARALLEL3, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - 167, 121, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + 167, 101, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT CONTROL STR_PARALLEL4, IDC_CHECK_PARALLEL4, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, - 167, 140, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + 167, 116, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + + CONTROL STR_SERIAL_PASS1, IDC_CHECK_SERIAL_PASS1, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + CFG_HMARGIN, 134, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SERIAL_PASS1, + CFG_COMBO_BTN_LEFT, 131, CFG_BTN_WIDTH, CFG_BTN_HEIGHT + + CONTROL STR_SERIAL_PASS2, IDC_CHECK_SERIAL_PASS2, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + CFG_HMARGIN, 150, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SERIAL_PASS2, + CFG_COMBO_BTN_LEFT, 147, CFG_BTN_WIDTH, CFG_BTN_HEIGHT + + CONTROL STR_SERIAL_PASS3, IDC_CHECK_SERIAL_PASS3, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + CFG_HMARGIN, 165, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SERIAL_PASS3, + CFG_COMBO_BTN_LEFT, 162, CFG_BTN_WIDTH, CFG_BTN_HEIGHT + + CONTROL STR_SERIAL_PASS4, IDC_CHECK_SERIAL_PASS4, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + CFG_HMARGIN, 180, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT + PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SERIAL_PASS4, + CFG_COMBO_BTN_LEFT, 177, CFG_BTN_WIDTH, CFG_BTN_HEIGHT END DLG_CFG_STORAGE DIALOG DISCARDABLE CFG_PANE_LEFT, CFG_PANE_TOP, CFG_PANE_WIDTH, CFG_PANE_HEIGHT @@ -996,6 +1020,10 @@ END #undef STR_PARALLEL2 #undef STR_PARALLEL3 #undef STR_PARALLEL4 +#undef STR_SERIAL_PASS1 +#undef STR_SERIAL_PASS2 +#undef STR_SERIAL_PASS3 +#undef STR_SERIAL_PASS4 #undef STR_HDC #undef STR_FDC diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc index a16c7977f..005a8fc9c 100644 --- a/src/win/languages/en-GB.rc +++ b/src/win/languages/en-GB.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Parallel port 2" #define STR_PARALLEL3 "Parallel port 3" #define STR_PARALLEL4 "Parallel port 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_HDC "HD Controller:" #define STR_FDC "FD Controller:" diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc index 42070879d..dcda2a1b4 100644 --- a/src/win/languages/en-US.rc +++ b/src/win/languages/en-US.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Parallel port 2" #define STR_PARALLEL3 "Parallel port 3" #define STR_PARALLEL4 "Parallel port 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_HDC "HD Controller:" #define STR_FDC "FD Controller:" diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc index 8be2db827..112d5d89e 100644 --- a/src/win/languages/es-ES.rc +++ b/src/win/languages/es-ES.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Puerto paralelo 2" #define STR_PARALLEL3 "Puerto paralelo 3" #define STR_PARALLEL4 "Puerto paralelo 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_HDC "Controladora HD:" #define STR_FDC "Controladora FD:" diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc index 9f2f14187..5494bffc5 100644 --- a/src/win/languages/fi-FI.rc +++ b/src/win/languages/fi-FI.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Rinnakkaisportti 2" #define STR_PARALLEL3 "Rinnakkaisportti 3" #define STR_PARALLEL4 "Rinnakkaisportti 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_HDC "Kiintolevyohjain:" #define STR_FDC "Levykeohjain:" diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index fcd4d480a..970b4db01 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Port parallèle 2" #define STR_PARALLEL3 "Port parallèle 3" #define STR_PARALLEL4 "Port parallèle 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_HDC "Contrôleur HD:" #define STR_FDC "Contrôleur FD:" diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index fe0f9dad5..7afb7b26d 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Paralelna vrata 2" #define STR_PARALLEL3 "Paralelna vrata 3" #define STR_PARALLEL4 "Paralelna vrata 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_HDC "Kontroler tvrdog diska:" #define STR_FDC "Kontroler diskete:" diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc index f23e3c35a..81fc034c4 100644 --- a/src/win/languages/hu-HU.rc +++ b/src/win/languages/hu-HU.rc @@ -333,6 +333,10 @@ END #define STR_PARALLEL2 "Párhuzamos port 2" #define STR_PARALLEL3 "Párhuzamos port 3" #define STR_PARALLEL4 "Párhuzamos port 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_HDC "Merevl.-vezérlő:" #define STR_FDC "Floppy-vezérlő:" diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc index 6335c690f..fd0441232 100644 --- a/src/win/languages/it-IT.rc +++ b/src/win/languages/it-IT.rc @@ -329,6 +329,10 @@ END #define STR_PARALLEL2 "Porta parallela 2" #define STR_PARALLEL3 "Porta parallela 3" #define STR_PARALLEL4 "Porta parallela 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_HDC "Controller HD:" #define STR_FDC "Controller FD:" diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index 1de5e1f42..c1e0ee463 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -328,6 +328,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_HDC "HDコントローラー:" #define STR_FDC "FDコントローラー:" diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index b96e21fa1..d43056478 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -328,6 +328,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_HDC "HD 컨트롤러:" #define STR_FDC "FD 컨트롤러:" diff --git a/src/win/languages/pl-PL.rc b/src/win/languages/pl-PL.rc index e4e6a4963..343ca929b 100644 --- a/src/win/languages/pl-PL.rc +++ b/src/win/languages/pl-PL.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Port równoległy 2" #define STR_PARALLEL3 "Port równoległy 3" #define STR_PARALLEL4 "Port równoległy 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_HDC "Kontroler dysku twardego:" #define STR_FDC "Kontroler dyskietek:" diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc index 7a08080bc..104c3648e 100644 --- a/src/win/languages/pt-BR.rc +++ b/src/win/languages/pt-BR.rc @@ -331,6 +331,10 @@ END #define STR_PARALLEL2 "Porta paralela 2" #define STR_PARALLEL3 "Porta paralela 3" #define STR_PARALLEL4 "Porta paralela 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_HDC "Controlador HD:" #define STR_FDC "Controlador FD:" diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc index 74968da02..31c68fbd0 100644 --- a/src/win/languages/pt-PT.rc +++ b/src/win/languages/pt-PT.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Porta paralela 2" #define STR_PARALLEL3 "Porta paralela 3" #define STR_PARALLEL4 "Porta paralela 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_HDC "Controlador HD:" #define STR_FDC "Controlador FD:" diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 790738148..8ae6b20b6 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Параллельный порт LPT2" #define STR_PARALLEL3 "Параллельный порт LPT3" #define STR_PARALLEL4 "Параллельный порт LPT4" +#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_HDC "Контроллер HD:" #define STR_FDC "Контроллер FD:" diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index 317cf51b8..f1badf570 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Paralelna vrata 2" #define STR_PARALLEL3 "Paralelna vrata 3" #define STR_PARALLEL4 "Paralelna vrata 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_HDC "Krmilnik trdega diska:" #define STR_FDC "Krmilnik disketnika:" diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc index 04a0f9abc..a168d2f30 100644 --- a/src/win/languages/tr-TR.rc +++ b/src/win/languages/tr-TR.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Paralel port 2" #define STR_PARALLEL3 "Paralel port 3" #define STR_PARALLEL4 "Paralel port 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_HDC "HD Kontrolcüsü:" #define STR_FDC "FD Kontrolcüsü:" diff --git a/src/win/languages/uk-UA.rc b/src/win/languages/uk-UA.rc index d8c5f1106..db2604860 100644 --- a/src/win/languages/uk-UA.rc +++ b/src/win/languages/uk-UA.rc @@ -328,6 +328,10 @@ END #define STR_PARALLEL2 "Паралельний порт LPT2" #define STR_PARALLEL3 "Паралельний порт LPT3" #define STR_PARALLEL4 "Паралельний порт LPT4" +#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_HDC "Контролер HD:" #define STR_FDC "Контролер FD:" diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 72d67e880..f72177a81 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -328,6 +328,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_HDC "硬盘控制器:" #define STR_FDC "软盘控制器:" diff --git a/src/win/languages/zh-TW.rc b/src/win/languages/zh-TW.rc index 9cbb7c70e..6c2d87545 100644 --- a/src/win/languages/zh-TW.rc +++ b/src/win/languages/zh-TW.rc @@ -328,6 +328,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_HDC "硬碟控制器:" #define STR_FDC "軟碟控制器:" diff --git a/src/win/win_opengl.c b/src/win/win_opengl.c index 586632aaa..1de065855 100644 --- a/src/win/win_opengl.c +++ b/src/win/win_opengl.c @@ -36,7 +36,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #define UNICODE -#include +#include #include #include #include diff --git a/src/win/win_serial_passthrough.c b/src/win/win_serial_passthrough.c new file mode 100644 index 000000000..bf7ce7f98 --- /dev/null +++ b/src/win/win_serial_passthrough.c @@ -0,0 +1,223 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * Definitions for platform specific serial to host passthrough + * + * + * Authors: Andreas J. Reichel , + * Jasmine Iwanek + * + * Copyright 2021 Andreas J. Reichel + * Copyright 2021-2022 Jasmine Iwanek + */ + +#define _XOPEN_SOURCE 500 +#include +#include +#include +#include +#include + +#include <86box/86box.h> +#include <86box/log.h> +#include <86box/timer.h> +#include <86box/plat.h> +#include <86box/device.h> +#include <86box/serial_passthrough.h> +#include <86box/plat_serial_passthrough.h> + +#include + +#define LOG_PREFIX "serial_passthrough: " + +void +plat_serpt_close(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + // fclose(dev->master_fd); + FlushFileBuffers((HANDLE) dev->master_fd); + if (dev->mode == SERPT_MODE_VCON) + DisconnectNamedPipe((HANDLE) dev->master_fd); + if (dev->mode == SERPT_MODE_HOSTSER) { + SetCommState((HANDLE)dev->master_fd, (DCB*)dev->backend_priv); + free(dev->backend_priv); + } + CloseHandle((HANDLE) dev->master_fd); +} + +static void +plat_serpt_write_vcon(serial_passthrough_t *dev, uint8_t data) +{ + /* fd_set wrfds; + * int res; + */ + + /* We cannot use select here, this would block the hypervisor! */ + /* FD_ZERO(&wrfds); + FD_SET(ctx->master_fd, &wrfds); + + res = select(ctx->master_fd + 1, NULL, &wrfds, NULL, NULL); + + if (res <= 0) { + return; + } + */ + + /* just write it out */ + // fwrite(dev->master_fd, &data, 1); + DWORD bytesWritten = 0; + WriteFile((HANDLE) dev->master_fd, &data, 1, &bytesWritten, NULL); + if (bytesWritten == 0) { + fatal("serial_passthrough: WriteFile pipe write-buffer full!"); + } +} + +void +plat_serpt_set_params(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *)p; + + if (dev->mode == SERPT_MODE_HOSTSER) { + DCB serialattr = {}; + GetCommState((HANDLE)dev->master_fd, &serialattr); +#define BAUDRATE_RANGE(baud_rate, min, max) if (baud_rate >= min && baud_rate < max) { serialattr.BaudRate = min; } + + BAUDRATE_RANGE(dev->baudrate, 110, 300); + BAUDRATE_RANGE(dev->baudrate, 300, 600); + BAUDRATE_RANGE(dev->baudrate, 600, 1200); + BAUDRATE_RANGE(dev->baudrate, 1200, 2400); + BAUDRATE_RANGE(dev->baudrate, 2400, 4800); + BAUDRATE_RANGE(dev->baudrate, 4800, 9600); + BAUDRATE_RANGE(dev->baudrate, 9600, 14400); + BAUDRATE_RANGE(dev->baudrate, 14400, 19200); + BAUDRATE_RANGE(dev->baudrate, 19200, 38400); + BAUDRATE_RANGE(dev->baudrate, 38400, 57600); + BAUDRATE_RANGE(dev->baudrate, 57600, 115200); + BAUDRATE_RANGE(dev->baudrate, 115200, 0xFFFFFFFF); + + serialattr.ByteSize = dev->data_bits; + serialattr.StopBits = (dev->serial->lcr & 0x04) ? TWOSTOPBITS : ONESTOPBIT; + if (!(dev->serial->lcr & 0x08)) { + serialattr.fParity = 0; + serialattr.Parity = NOPARITY; + } else { + serialattr.fParity = 1; + if (dev->serial->lcr & 0x20) { + serialattr.Parity = (MARKPARITY) + !!(dev->serial->lcr & 0x10); + } else { + serialattr.Parity = (ODDPARITY) + !!(dev->serial->lcr & 0x10); + } + } + + SetCommState((HANDLE)dev->master_fd, &serialattr); +#undef BAUDRATE_RANGE + } +} + +void +plat_serpt_write(void *p, uint8_t data) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + switch (dev->mode) { + case SERPT_MODE_VCON: + case SERPT_MODE_HOSTSER: + plat_serpt_write_vcon(dev, data); + break; + default: + break; + } +} + +uint8_t +plat_serpt_read_vcon(serial_passthrough_t *dev, uint8_t *data) +{ + DWORD bytesRead = 0; + ReadFile((HANDLE) dev->master_fd, data, 1, &bytesRead, NULL); + return !!bytesRead; +} + +int +plat_serpt_read(void *p, uint8_t *data) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + int res = 0; + + switch (dev->mode) { + case SERPT_MODE_VCON: + case SERPT_MODE_HOSTSER: + res = plat_serpt_read_vcon(dev, data); + break; + default: + break; + } + return res; +} + +static int +open_pseudo_terminal(serial_passthrough_t *dev) +{ + char ascii_pipe_name[1024] = { 0 }; + snprintf(ascii_pipe_name, sizeof(ascii_pipe_name), "\\\\.\\pipe\\86Box\\%s", vm_name); + dev->master_fd = (intptr_t) CreateNamedPipeA(ascii_pipe_name, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_NOWAIT, 32, 65536, 65536, NMPWAIT_USE_DEFAULT_WAIT, NULL); + if (dev->master_fd == (intptr_t) INVALID_HANDLE_VALUE) { + return 0; + } + pclog("Named Pipe @ %s\n", ascii_pipe_name); + return 1; +} + +static int +open_host_serial_port(serial_passthrough_t *dev) +{ + COMMTIMEOUTS timeouts = { + .ReadIntervalTimeout = MAXDWORD, + .ReadTotalTimeoutConstant = 0, + .ReadTotalTimeoutMultiplier = 0, + .WriteTotalTimeoutMultiplier = 0, + .WriteTotalTimeoutConstant = 1000 + }; + DCB* serialattr = calloc(1, sizeof(DCB)); + if (!serialattr) return 0; + dev->master_fd = (intptr_t) CreateFileA(dev->host_serial_path, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (dev->master_fd == (intptr_t) INVALID_HANDLE_VALUE) { + free(serialattr); + return 0; + } + if (!SetCommTimeouts((HANDLE) dev->master_fd, &timeouts)) { + pclog(LOG_PREFIX "error setting COM port timeouts.\n"); + CloseHandle((HANDLE) dev->master_fd); + free(serialattr); + return 0; + } + GetCommState((HANDLE)dev->master_fd, serialattr); + dev->backend_priv = serialattr; + return 1; +} + +int +plat_serpt_open_device(void *p) +{ + serial_passthrough_t *dev = (serial_passthrough_t *) p; + + switch (dev->mode) { + case SERPT_MODE_VCON: + if (open_pseudo_terminal(dev)) { + return 0; + } + break; + case SERPT_MODE_HOSTSER: + if (open_host_serial_port(dev)) { + return 0; + } + default: + break; + } + return 1; +} diff --git a/src/win/win_settings.c b/src/win/win_settings.c index 07822f28b..4901b283c 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -71,6 +71,7 @@ #include <86box/plat.h> #include <86box/ui.h> #include <86box/win.h> +#include <86box/serial_passthrough.h> #include "../disk/minivhd/minivhd.h" #include "../disk/minivhd/minivhd_util.h" @@ -111,6 +112,7 @@ static char temp_pcap_dev[NET_CARD_MAX][128]; /* Ports category */ static int temp_lpt_devices[PARALLEL_MAX]; static int temp_serial[SERIAL_MAX], temp_lpt[PARALLEL_MAX]; +static int temp_serial_passthrough_enabled[SERIAL_MAX]; /* Other peripherals category */ static int temp_fdc_card, temp_hdc, temp_ide_ter, temp_ide_qua, temp_cassette; @@ -358,11 +360,13 @@ win_settings_init(void) /* Ports category */ for (i = 0; i < PARALLEL_MAX; i++) { - temp_lpt_devices[i] = lpt_ports[i].device; - temp_lpt[i] = lpt_ports[i].enabled; + temp_lpt_devices[i] = lpt_ports[i].device; + temp_lpt[i] = lpt_ports[i].enabled; + } + for (i = 0; i < SERIAL_MAX; i++) { + temp_serial[i] = com_ports[i].enabled; + temp_serial_passthrough_enabled[i] = serial_passthrough_enabled[i]; } - for (i = 0; i < SERIAL_MAX; i++) - temp_serial[i] = com_ports[i].enabled; /* Storage devices category */ for (i = 0; i < SCSI_BUS_MAX; i++) @@ -484,8 +488,10 @@ win_settings_changed(void) i = i || (temp_lpt_devices[j] != lpt_ports[j].device); i = i || (temp_lpt[j] != lpt_ports[j].enabled); } - for (j = 0; j < SERIAL_MAX; j++) + for (j = 0; j < SERIAL_MAX; j++) { i = i || (temp_serial[j] != com_ports[j].enabled); + i = i || (temp_serial_passthrough_enabled[i] != serial_passthrough_enabled[i]); + } /* Storage devices category */ for (j = 0; j < SCSI_BUS_MAX; j++) @@ -578,8 +584,10 @@ win_settings_save(void) lpt_ports[i].device = temp_lpt_devices[i]; lpt_ports[i].enabled = temp_lpt[i]; } - for (i = 0; i < SERIAL_MAX; i++) + for (i = 0; i < SERIAL_MAX; i++) { com_ports[i].enabled = temp_serial[i]; + serial_passthrough_enabled[i] = temp_serial_passthrough_enabled[i]; + } /* Storage devices category */ for (i = 0; i < SCSI_BUS_MAX; i++) @@ -1764,8 +1772,10 @@ win_settings_ports_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) settings_enable_window(hdlg, IDC_COMBO_LPT1 + i, temp_lpt[i]); } - for (i = 0; i < SERIAL_MAX; i++) + for (i = 0; i < SERIAL_MAX; i++) { settings_set_check(hdlg, IDC_CHECK_SERIAL1 + i, temp_serial[i]); + settings_set_check(hdlg, IDC_CHECK_SERIAL_PASS1 + i, temp_serial_passthrough_enabled[i]); + } free(lptsTemp); @@ -1790,8 +1800,10 @@ win_settings_ports_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) temp_lpt[i] = settings_get_check(hdlg, IDC_CHECK_PARALLEL1 + i); } - for (i = 0; i < SERIAL_MAX; i++) + for (i = 0; i < SERIAL_MAX; i++) { temp_serial[i] = settings_get_check(hdlg, IDC_CHECK_SERIAL1 + i); + temp_serial_passthrough_enabled[i] = settings_get_check(hdlg, IDC_CHECK_SERIAL_PASS1 + i); + } default: return FALSE; diff --git a/src/win/win_toolbar.c b/src/win/win_toolbar.c index fade8d25e..6b1edefb2 100644 --- a/src/win/win_toolbar.c +++ b/src/win/win_toolbar.c @@ -2,8 +2,8 @@ #include #include #include -#include -#include +#include +#include #include <86box/86box.h> #include <86box/plat.h> #include <86box/resource.h>